diff --git a/.circleci/Dockerfile b/.circleci/Dockerfile
index 185dd45135..d4dd9a30ab 100644
--- a/.circleci/Dockerfile
+++ b/.circleci/Dockerfile
@@ -1,10 +1,10 @@
-FROM mono:5.8
+FROM mono:5.18
RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y git ssh tar gzip ca-certificates wget zip wine wine32 wine64 libwine libwine:i386
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -E -
RUN apt-get install -y nodejs
-RUN wget https://mediaarea.net/repo/deb/repo-mediaarea_1.0-5_all.deb && dpkg -i repo-mediaarea_1.0-5_all.deb && apt-get update
-RUN apt-get install -y libmediainfo-dev libmediainfo0 mediainfo
+RUN wget https://mediaarea.net/repo/deb/repo-mediaarea_1.0-7_all.deb && dpkg -i repo-mediaarea_1.0-7_all.deb && apt-get update
+RUN apt-get install -y libmediainfo-dev libmediainfo0v5 mediainfo
RUN npm i -g npm
RUN apt-get install -y python3-pip && pip3 install gitchangelog pystache
RUN curl -O https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz && tar xvf go*.tar.gz && chown -R root:root ./go && mv go /usr/local
diff --git a/.circleci/config.yml b/.circleci/config.yml
index cf59704235..784ffe3293 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -2,7 +2,7 @@ version: 2
defaults: &defaults
docker:
- - image: gallileo/radarr-cci-primary:5.8.8
+ - image: gallileo/radarr-cci-primary:5.8.9
environment:
BUILD_VERSION: 0.2.0
@@ -119,9 +119,9 @@ jobs:
- store_artifacts:
path: _packages
destination: artifacts
- - run:
- name: "Deploying"
- command: chmod +x deploy.sh && ./deploy.sh
+ #- run:
+ # name: "Deploying"
+ # command: chmod +x deploy.sh && ./deploy.sh
- persist_to_workspace:
root: .
# Must be relative path from root
diff --git a/.gitignore b/.gitignore
index a206d436a2..8530d0a585 100644
--- a/.gitignore
+++ b/.gitignore
@@ -104,7 +104,7 @@ _TeamCity*
# Radarr
Backups/
logs/
-MediaCover/
+#MediaCover/
UpdateLogs/
xdg/
config.xml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0f8bfa4116..ffe2ef5cfd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,37 @@
## (unreleased)
+### **New features**
+-  Use APIKey & APIUser for authenticating to PassThePopcorn. ([#3264](https://github.com/Radarr/Radarr/issues/3264)) [Leonardo Galli]
+-  Support for forcedUP status ([#3277](https://github.com/Radarr/Radarr/issues/3277)) [Swizzy]
+-  rTorrent - Don't start download automatically ([#3222](https://github.com/Radarr/Radarr/issues/3222)) [lps-rocks]
+-  Remove Pre, postbot, xpost suffixes from release groups ([#3220](https://github.com/Radarr/Radarr/issues/3220)) [Qstick]
+-  Secure URLs for Links and Services ([#3219](https://github.com/Radarr/Radarr/issues/3219)) [Qstick]
+
+### **Fixes**
+-  Another IDisposable leak when lazy loading properties. [Taloth Saldono]
+-  MediaCoverService tests and stupidly forgetting to open the database connection for logging. [Leonardo Galli]
+-  MediaCovers resizing potentially leaking memory when concurrently executing. [Leonardo Galli]
+-  Stream leakage inside CurlHttpDispatcher. [Leonardo Galli]
+-  Apparently Microsoft thinks that you should cast to IDisposable first. [Leonardo Galli]
+-  Invalid SQLite cache size. [Leonardo Galli]
+-  Resource leakage inside HttpClient. [Leonardo Galli]
+-  Typo that could probably lead to an infinite loop. [Leonardo Galli]
+-  Resource leakage inside ManagedHttpDispatcher. [Leonardo Galli]
+-  Leaking of objects when logging something to the database. [Leonardo Galli]
+-  DataMapper potentially leaking stuff when being disposed. [Leonardo Galli]
+-  DataMapper not being disposed, leading to resource leakage. [Leonardo Galli]
+-  Memory leak due to unmanaged Bitmaps leaking. [Leonardo Galli]
+-  Unable to parse movies from 1800s. [Leonardo Galli]
+-  OSX Packages not getting correct version info. [Leonardo Galli]
+-  npm start not working with node 10. [Leonardo Galli]
+-  Hopefully fixed issue where a null downloadId or title would cause no downloads to be tracked. [Leonardo Galli]
+-  Bump default version to prevent update running from source ([#3199](https://github.com/Radarr/Radarr/issues/3199)) [Qstick]
+-  MediaInfo Unit Test Failing due to AudioAdditionalFeatures ([#3221](https://github.com/Radarr/Radarr/issues/3221)) [Qstick]
+
+
+## v0.2.0.1216 (2018-11-07)
+
### **New features**
-  64bit mediainfo.dll to 32bit to resolve issue: https://github.com/Radarr/Radarr/issues/3138. [geogolem]
-  Refactor MediaInfo tokens (fixes old tokens adds new stuff) ([#3058](https://github.com/Radarr/Radarr/issues/3058)) [Ricardo Amaral]
diff --git a/README.md b/README.md
index 996e0d98d5..185654a0bf 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,8 @@ Radarr is an __independent__ fork of [Sonarr](https://github.com/Sonarr/Sonarr)
The project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.
+See the [Roadmap blogpost](https://blog.radarr.video/development/update/2018/11/11/roadmap-update.html) for an overview of planned features.
+
## Getting Started
[](https://github.com/Radarr/Radarr/wiki/Installation)
@@ -20,13 +22,12 @@ The project was inspired by other Usenet/BitTorrent movie downloaders such as Co
## Downloads
-[](https://github.com/Radarr/Radarr/releases)
-[](https://ci.appveyor.com/project/galli-leo/radarr-usby1/branch/develop/artifacts)
+Branch | develop (stable) | nightly (semi-unstable) |
+---|---|---
+Binary Releases | [](https://github.com/Radarr/Radarr/releases) | [](https://ci.appveyor.com/project/galli-leo/radarr-usby1/branch/develop/artifacts)
+Docker (linuxserver.io, x86_64, arm64, armhf) | [](https://store.docker.com/community/images/linuxserver/radarr) | [](https://store.docker.com/community/images/linuxserver/radarr)
+Docker (hotio, see [here](https://github.com/hotio/docker-radarr) for more information) | [](https://hub.docker.com/r/hotio/radarr) | [](https://hub.docker.com/r/hotio/radarr)
-[](https://store.docker.com/community/images/linuxserver/radarr)
-[](https://store.docker.com/community/images/hotio/suitarr)
-[](https://store.docker.com/community/images/lsioarmhf/radarr)
-[](https://store.docker.com/community/images/lsioarmhf/radarr-aarch64)
## Support
@@ -93,12 +94,7 @@ Radarr is currently undergoing rapid development and pull requests are actively
### Planned Features
-* Dynamically renaming folders with quality info, etc. (Currently working partially.) (\*)
-* Supporting custom folder structures, such as all movie files in one folder (\*)
-* Supporting multiple editions per movies (\*)
-* Supporting collections of movies, such as James Bond (\*)
-
-**Note:** All features marked with (\*) are set to be in the first release of Radarr.
+See the [Roadmap blogpost](https://blog.radarr.video/development/update/2018/11/11/roadmap-update.html) for an overview of planned features.
#### [Feature Requests](http://feathub.com/Radarr/Radarr)
diff --git a/build-appveyor.cake b/build-appveyor.cake
index 294c425abc..3256b5e149 100644
--- a/build-appveyor.cake
+++ b/build-appveyor.cake
@@ -1,6 +1,7 @@
#addin nuget:?package=Cake.Npm
#addin nuget:?package=SharpZipLib
#addin nuget:?package=Cake.Compression
+#addin "Cake.FileHelpers"
// Build variables
var outputFolder = "./_output";
@@ -178,7 +179,7 @@ Task("PackageOsx").Does(() => {
CopyFile("./osx/Radarr", outputFolderOsx + "/Radarr");
});
-Task("PackageOsxApp").Does(() => {
+Task("PackageOsxApp").Does((ctx) => {
// Start osx app package
if (DirectoryExists(outputFolderOsxApp)) {
DeleteDirectory(outputFolderOsxApp, true);
@@ -189,6 +190,9 @@ Task("PackageOsxApp").Does(() => {
// Copy osx package files
CopyDirectory("./osx/Radarr.app", outputFolderOsxApp + "/Radarr.app");
CopyDirectory(outputFolderOsx, outputFolderOsxApp + "/Radarr.app/Contents/MacOS");
+
+ // Edit version of osx app
+ ctx.ReplaceTextInFiles(outputFolderOsxApp + "/Radarr.app/Contents/Info.plist", "2.0", ctx.EnvironmentVariable("APPVEYOR_BUILD_VERSION") ?? "unknown");
});
Task("PackageTests").Does(() => {
diff --git a/build.sh b/build.sh
index 6444ce08bb..89d32e3bea 100755
--- a/build.sh
+++ b/build.sh
@@ -221,9 +221,9 @@ PackageTests()
find $sourceFolder -path $testSearchPattern -exec cp -r -u -T "{}" $testPackageFolder \;
if [ $runtime = "dotnet" ] ; then
- $nuget install NUnit.Runners -Version 3.2.1 -Output $testPackageFolder
+ $nuget install NUnit.Runners -Version 3.9.0 -Output $testPackageFolder
else
- mono $nuget install NUnit.Runners -Version 3.2.1 -Output $testPackageFolder
+ mono $nuget install NUnit.Runners -Version 3.9.0 -Output $testPackageFolder
fi
cp $outputFolder/*.dll $testPackageFolder
diff --git a/debian/rules b/debian/rules
old mode 100755
new mode 100644
diff --git a/package-lock.json b/package-lock.json
index 73c6c57d2f..b15d259376 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,14 +14,14 @@
"resolved": "https://registry.npmjs.org/accord/-/accord-0.15.2.tgz",
"integrity": "sha1-NwB1nlw4Doge2vTknhLFOfswXT4=",
"requires": {
- "convert-source-map": "0.4.1",
- "fobject": "0.0.4",
- "glob": "4.5.3",
- "indx": "0.2.3",
- "lodash": "3.10.1",
- "resolve": "1.4.0",
- "uglify-js": "2.3.6",
- "when": "3.7.8"
+ "convert-source-map": "^0.4.1",
+ "fobject": "0.x",
+ "glob": "4.x",
+ "indx": "0.2.x",
+ "lodash": "3.x",
+ "resolve": "1.x",
+ "uglify-js": "2.x",
+ "when": "3.x"
},
"dependencies": {
"glob": {
@@ -29,10 +29,10 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
"integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
"requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "2.0.10",
- "once": "1.4.0"
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^2.0.1",
+ "once": "^1.3.0"
}
},
"lodash": {
@@ -45,7 +45,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
"integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
"requires": {
- "brace-expansion": "1.1.8"
+ "brace-expansion": "^1.0.0"
}
}
}
@@ -56,8 +56,8 @@
"integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"optional": true,
"requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
}
},
"amdefine": {
@@ -80,8 +80,8 @@
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
"integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
"requires": {
- "micromatch": "2.3.11",
- "normalize-path": "2.1.1"
+ "micromatch": "^2.1.5",
+ "normalize-path": "^2.0.0"
}
},
"archy": {
@@ -94,7 +94,7 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
"integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
"requires": {
- "sprintf-js": "1.0.3"
+ "sprintf-js": "~1.0.2"
}
},
"arr-diff": {
@@ -102,7 +102,7 @@
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"requires": {
- "arr-flatten": "1.1.0"
+ "arr-flatten": "^1.0.1"
}
},
"arr-flatten": {
@@ -130,7 +130,7 @@
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"requires": {
- "array-uniq": "1.0.3"
+ "array-uniq": "^1.0.1"
}
},
"array-uniq": {
@@ -190,10 +190,10 @@
"resolved": "https://registry.npmjs.org/autoprefixer-core/-/autoprefixer-core-5.2.1.tgz",
"integrity": "sha1-5kDEFK5Bmq4hwa1DyOoPPbgqVm0=",
"requires": {
- "browserslist": "0.4.0",
- "caniuse-db": "1.0.30000710",
- "num2fraction": "1.2.2",
- "postcss": "4.1.16"
+ "browserslist": "~0.4.0",
+ "caniuse-db": "^1.0.30000214",
+ "num2fraction": "^1.1.0",
+ "postcss": "~4.1.12"
}
},
"aws-sign2": {
@@ -224,7 +224,7 @@
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
"optional": true,
"requires": {
- "tweetnacl": "0.14.5"
+ "tweetnacl": "^0.14.3"
}
},
"beeper": {
@@ -252,7 +252,7 @@
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
"integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
"requires": {
- "readable-stream": "2.3.3"
+ "readable-stream": "^2.0.5"
},
"dependencies": {
"isarray": {
@@ -265,13 +265,13 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
+ "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"
}
},
"string_decoder": {
@@ -279,7 +279,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
- "safe-buffer": "5.1.1"
+ "safe-buffer": "~5.1.0"
}
}
}
@@ -289,7 +289,7 @@
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
"requires": {
- "inherits": "2.0.3"
+ "inherits": "~2.0.0"
}
},
"body-parser": {
@@ -304,7 +304,7 @@
"on-finished": "2.1.0",
"qs": "2.2.4",
"raw-body": "1.3.0",
- "type-is": "1.5.7"
+ "type-is": "~1.5.1"
},
"dependencies": {
"qs": {
@@ -319,7 +319,7 @@
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"requires": {
- "hoek": "2.16.3"
+ "hoek": "2.x.x"
}
},
"brace-expansion": {
@@ -327,7 +327,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
"integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
@@ -336,9 +336,9 @@
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"requires": {
- "expand-range": "1.8.2",
- "preserve": "0.2.0",
- "repeat-element": "1.1.2"
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
}
},
"browserify-zlib": {
@@ -346,7 +346,7 @@
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
"integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
"requires": {
- "pako": "0.2.9"
+ "pako": "~0.2.0"
}
},
"browserslist": {
@@ -354,7 +354,7 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-0.4.0.tgz",
"integrity": "sha1-O9SrkZncG5FQ1NbbpNnTqrvIbdQ=",
"requires": {
- "caniuse-db": "1.0.30000710"
+ "caniuse-db": "^1.0.30000153"
}
},
"buffer": {
@@ -362,9 +362,9 @@
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"requires": {
- "base64-js": "1.2.1",
- "ieee754": "1.1.8",
- "isarray": "1.0.0"
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
},
"dependencies": {
"isarray": {
@@ -379,7 +379,7 @@
"resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.0.1.tgz",
"integrity": "sha1-z7GtlWjTujz+k1upq92VLeiKqyo=",
"requires": {
- "readable-stream": "1.1.14"
+ "readable-stream": "^1.0.33"
}
},
"bytes": {
@@ -408,11 +408,11 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
}
},
"chokidar": {
@@ -420,15 +420,15 @@
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
"integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
"requires": {
- "anymatch": "1.3.2",
- "async-each": "1.0.1",
- "fsevents": "1.1.3",
- "glob-parent": "2.0.0",
- "inherits": "2.0.3",
- "is-binary-path": "1.0.1",
- "is-glob": "2.0.1",
- "path-is-absolute": "1.0.1",
- "readdirp": "2.1.0"
+ "anymatch": "^1.3.0",
+ "async-each": "^1.0.0",
+ "fsevents": "^1.0.0",
+ "glob-parent": "^2.0.0",
+ "inherits": "^2.0.1",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^2.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.0.0"
}
},
"clean-css": {
@@ -436,7 +436,7 @@
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.7.tgz",
"integrity": "sha1-ua6k+FZ5iJzz6ui0A0nsTr390DI=",
"requires": {
- "source-map": "0.5.6"
+ "source-map": "0.5.x"
},
"dependencies": {
"source-map": {
@@ -452,7 +452,7 @@
"integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
"requires": {
"exit": "0.1.2",
- "glob": "7.1.2"
+ "glob": "^7.1.1"
},
"dependencies": {
"glob": {
@@ -460,12 +460,12 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "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"
}
}
}
@@ -496,7 +496,7 @@
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
"requires": {
- "delayed-stream": "1.0.0"
+ "delayed-stream": "~1.0.0"
}
},
"commander": {
@@ -504,7 +504,7 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz",
"integrity": "sha1-UNFlGGiuYOzP8KLZ80WVN2vGsEE=",
"requires": {
- "keypress": "0.1.0"
+ "keypress": "0.1.x"
}
},
"concat-map": {
@@ -517,7 +517,7 @@
"resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz",
"integrity": "sha1-9Vs74q60dgGxCi1SWcz7cP0vHdY=",
"requires": {
- "source-map": "0.5.6"
+ "source-map": "^0.5.1"
},
"dependencies": {
"source-map": {
@@ -532,7 +532,7 @@
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
"integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
"requires": {
- "date-now": "0.1.4"
+ "date-now": "^0.1.4"
}
},
"consolidate": {
@@ -561,7 +561,7 @@
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"optional": true,
"requires": {
- "boom": "2.10.1"
+ "boom": "2.x.x"
}
},
"crypto-browserify": {
@@ -580,7 +580,7 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"optional": true,
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -619,7 +619,7 @@
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
"requires": {
- "clone": "1.0.2"
+ "clone": "^1.0.2"
}
},
"del": {
@@ -627,12 +627,12 @@
"resolved": "https://registry.npmjs.org/del/-/del-1.2.0.tgz",
"integrity": "sha1-MkEzbq1FpmyPlyFa4iPH55R0Acg=",
"requires": {
- "each-async": "1.1.1",
- "globby": "2.1.0",
- "is-path-cwd": "1.0.0",
- "is-path-in-cwd": "1.0.0",
- "object-assign": "2.1.1",
- "rimraf": "2.6.1"
+ "each-async": "^1.0.0",
+ "globby": "^2.0.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "object-assign": "^2.0.0",
+ "rimraf": "^2.2.8"
}
},
"delayed-stream": {
@@ -655,7 +655,7 @@
"resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz",
"integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=",
"requires": {
- "fs-exists-sync": "0.1.0"
+ "fs-exists-sync": "^0.1.0"
}
},
"dom-serializer": {
@@ -663,8 +663,8 @@
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
"requires": {
- "domelementtype": "1.1.3",
- "entities": "1.1.1"
+ "domelementtype": "~1.1.1",
+ "entities": "~1.1.1"
},
"dependencies": {
"domelementtype": {
@@ -694,7 +694,7 @@
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
"integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
"requires": {
- "domelementtype": "1.3.0"
+ "domelementtype": "1"
}
},
"domutils": {
@@ -702,8 +702,8 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"requires": {
- "dom-serializer": "0.1.0",
- "domelementtype": "1.3.0"
+ "dom-serializer": "0",
+ "domelementtype": "1"
}
},
"duplexer": {
@@ -716,7 +716,7 @@
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
"integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
"requires": {
- "readable-stream": "1.1.14"
+ "readable-stream": "~1.1.9"
}
},
"each-async": {
@@ -724,8 +724,8 @@
"resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz",
"integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=",
"requires": {
- "onetime": "1.1.0",
- "set-immediate-shim": "1.0.1"
+ "onetime": "^1.0.0",
+ "set-immediate-shim": "^1.0.0"
}
},
"ecc-jsbn": {
@@ -734,7 +734,7 @@
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"optional": true,
"requires": {
- "jsbn": "0.1.1"
+ "jsbn": "~0.1.0"
}
},
"ee-first": {
@@ -752,7 +752,7 @@
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
"integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
"requires": {
- "once": "1.3.3"
+ "once": "~1.3.0"
},
"dependencies": {
"once": {
@@ -760,7 +760,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
"integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
}
}
@@ -770,9 +770,9 @@
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
"integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
"requires": {
- "graceful-fs": "4.1.11",
- "memory-fs": "0.2.0",
- "tapable": "0.1.10"
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.2.0",
+ "tapable": "^0.1.8"
},
"dependencies": {
"graceful-fs": {
@@ -793,7 +793,7 @@
"integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
"optional": true,
"requires": {
- "prr": "0.0.0"
+ "prr": "~0.0.0"
}
},
"es6-promise": {
@@ -816,13 +816,13 @@
"resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
"integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
"requires": {
- "duplexer": "0.1.1",
- "from": "0.1.7",
- "map-stream": "0.1.0",
+ "duplexer": "~0.1.1",
+ "from": "~0",
+ "map-stream": "~0.1.0",
"pause-stream": "0.0.11",
- "split": "0.3.3",
- "stream-combiner": "0.0.4",
- "through": "2.3.8"
+ "split": "0.3",
+ "stream-combiner": "~0.0.4",
+ "through": "~2.3.1"
}
},
"events": {
@@ -840,7 +840,7 @@
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"requires": {
- "is-posix-bracket": "0.1.1"
+ "is-posix-bracket": "^0.1.0"
}
},
"expand-range": {
@@ -848,7 +848,7 @@
"resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"requires": {
- "fill-range": "2.2.3"
+ "fill-range": "^2.1.0"
}
},
"expand-tilde": {
@@ -856,7 +856,7 @@
"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
"integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
"requires": {
- "os-homedir": "1.0.2"
+ "os-homedir": "^1.0.1"
}
},
"extend": {
@@ -869,7 +869,7 @@
"resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"requires": {
- "is-extglob": "1.0.0"
+ "is-extglob": "^1.0.0"
}
},
"extsprintf": {
@@ -882,8 +882,8 @@
"resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz",
"integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
"requires": {
- "chalk": "1.1.3",
- "time-stamp": "1.1.0"
+ "chalk": "^1.1.1",
+ "time-stamp": "^1.0.0"
}
},
"faye-websocket": {
@@ -891,7 +891,7 @@
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.3.tgz",
"integrity": "sha1-zEB0x/Sk39A69U3WXDVLE1EyzhE=",
"requires": {
- "websocket-driver": "0.6.5"
+ "websocket-driver": ">=0.3.6"
}
},
"filename-regex": {
@@ -904,11 +904,11 @@
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
"integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
"requires": {
- "is-number": "2.1.0",
- "isobject": "2.1.0",
- "randomatic": "1.1.7",
- "repeat-element": "1.1.2",
- "repeat-string": "1.6.1"
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^1.1.3",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
}
},
"find-index": {
@@ -921,10 +921,10 @@
"resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz",
"integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=",
"requires": {
- "detect-file": "0.1.0",
- "is-glob": "2.0.1",
- "micromatch": "2.3.11",
- "resolve-dir": "0.1.1"
+ "detect-file": "^0.1.0",
+ "is-glob": "^2.0.1",
+ "micromatch": "^2.3.7",
+ "resolve-dir": "^0.1.0"
}
},
"fined": {
@@ -932,11 +932,11 @@
"resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz",
"integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=",
"requires": {
- "expand-tilde": "2.0.2",
- "is-plain-object": "2.0.4",
- "object.defaults": "1.1.0",
- "object.pick": "1.2.0",
- "parse-filepath": "1.0.1"
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
},
"dependencies": {
"expand-tilde": {
@@ -944,7 +944,7 @@
"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
"integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
"requires": {
- "homedir-polyfill": "1.0.1"
+ "homedir-polyfill": "^1.0.1"
}
}
}
@@ -964,9 +964,9 @@
"resolved": "https://registry.npmjs.org/fobject/-/fobject-0.0.4.tgz",
"integrity": "sha1-g5nmuRBdLrjm353MQRI6FxaIrf4=",
"requires": {
- "graceful-fs": "4.1.11",
- "semver": "5.4.1",
- "when": "3.7.8"
+ "graceful-fs": "^4.1.3",
+ "semver": "^5.1.0",
+ "when": "^3.7.7"
},
"dependencies": {
"graceful-fs": {
@@ -991,7 +991,7 @@
"resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
"integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"requires": {
- "for-in": "1.0.2"
+ "for-in": "^1.0.1"
}
},
"forever-agent": {
@@ -1006,9 +1006,9 @@
"integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"optional": true,
"requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.16"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.5",
+ "mime-types": "^2.1.12"
}
},
"from": {
@@ -1026,8 +1026,8 @@
"resolved": "https://registry.npmjs.org/fs-readfile-promise/-/fs-readfile-promise-1.1.0.tgz",
"integrity": "sha1-UVT4/4hydwfWcwpVjSUYfXupD88=",
"requires": {
- "es6-promise": "2.3.0",
- "graceful-fs": "3.0.11"
+ "es6-promise": "^2.0.0",
+ "graceful-fs": "^3.0.5"
}
},
"fs.realpath": {
@@ -1041,8 +1041,8 @@
"integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==",
"optional": true,
"requires": {
- "nan": "2.10.0",
- "node-pre-gyp": "0.6.39"
+ "nan": "^2.3.0",
+ "node-pre-gyp": "^0.6.39"
},
"dependencies": {
"abbrev": {
@@ -1055,8 +1055,8 @@
"bundled": true,
"optional": true,
"requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
}
},
"ansi-regex": {
@@ -1073,8 +1073,8 @@
"bundled": true,
"optional": true,
"requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.2.9"
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
}
},
"asn1": {
@@ -1111,28 +1111,28 @@
"bundled": true,
"optional": true,
"requires": {
- "tweetnacl": "0.14.5"
+ "tweetnacl": "^0.14.3"
}
},
"block-stream": {
"version": "0.0.9",
"bundled": true,
"requires": {
- "inherits": "2.0.3"
+ "inherits": "~2.0.0"
}
},
"boom": {
"version": "2.10.1",
"bundled": true,
"requires": {
- "hoek": "2.16.3"
+ "hoek": "2.x.x"
}
},
"brace-expansion": {
"version": "1.1.7",
"bundled": true,
"requires": {
- "balanced-match": "0.4.2",
+ "balanced-match": "^0.4.1",
"concat-map": "0.0.1"
}
},
@@ -1158,7 +1158,7 @@
"version": "1.0.5",
"bundled": true,
"requires": {
- "delayed-stream": "1.0.0"
+ "delayed-stream": "~1.0.0"
}
},
"concat-map": {
@@ -1177,7 +1177,7 @@
"version": "2.0.5",
"bundled": true,
"requires": {
- "boom": "2.10.1"
+ "boom": "2.x.x"
}
},
"dashdash": {
@@ -1185,7 +1185,7 @@
"bundled": true,
"optional": true,
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -1227,7 +1227,7 @@
"bundled": true,
"optional": true,
"requires": {
- "jsbn": "0.1.1"
+ "jsbn": "~0.1.0"
}
},
"extend": {
@@ -1249,9 +1249,9 @@
"bundled": true,
"optional": true,
"requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.15"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.5",
+ "mime-types": "^2.1.12"
}
},
"fs.realpath": {
@@ -1262,10 +1262,10 @@
"version": "1.0.11",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.1"
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
}
},
"fstream-ignore": {
@@ -1273,9 +1273,9 @@
"bundled": true,
"optional": true,
"requires": {
- "fstream": "1.0.11",
- "inherits": "2.0.3",
- "minimatch": "3.0.4"
+ "fstream": "^1.0.0",
+ "inherits": "2",
+ "minimatch": "^3.0.0"
}
},
"gauge": {
@@ -1283,14 +1283,14 @@
"bundled": true,
"optional": true,
"requires": {
- "aproba": "1.1.1",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
}
},
"getpass": {
@@ -1298,7 +1298,7 @@
"bundled": true,
"optional": true,
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -1312,12 +1312,12 @@
"version": "7.1.2",
"bundled": true,
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "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"
}
},
"graceful-fs": {
@@ -1334,8 +1334,8 @@
"bundled": true,
"optional": true,
"requires": {
- "ajv": "4.11.8",
- "har-schema": "1.0.5"
+ "ajv": "^4.9.1",
+ "har-schema": "^1.0.5"
}
},
"has-unicode": {
@@ -1347,10 +1347,10 @@
"version": "3.1.3",
"bundled": true,
"requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
+ "boom": "2.x.x",
+ "cryptiles": "2.x.x",
+ "hoek": "2.x.x",
+ "sntp": "1.x.x"
}
},
"hoek": {
@@ -1362,17 +1362,17 @@
"bundled": true,
"optional": true,
"requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.0",
- "sshpk": "1.13.0"
+ "assert-plus": "^0.2.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
"inherits": {
@@ -1388,7 +1388,7 @@
"version": "1.0.0",
"bundled": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
}
},
"is-typedarray": {
@@ -1410,7 +1410,7 @@
"bundled": true,
"optional": true,
"requires": {
- "jsbn": "0.1.1"
+ "jsbn": "~0.1.0"
}
},
"jsbn": {
@@ -1428,7 +1428,7 @@
"bundled": true,
"optional": true,
"requires": {
- "jsonify": "0.0.0"
+ "jsonify": "~0.0.0"
}
},
"json-stringify-safe": {
@@ -1467,14 +1467,14 @@
"version": "2.1.15",
"bundled": true,
"requires": {
- "mime-db": "1.27.0"
+ "mime-db": "~1.27.0"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
- "brace-expansion": "1.1.7"
+ "brace-expansion": "^1.1.7"
}
},
"minimist": {
@@ -1498,17 +1498,17 @@
"bundled": true,
"optional": true,
"requires": {
- "detect-libc": "1.0.2",
+ "detect-libc": "^1.0.2",
"hawk": "3.1.3",
- "mkdirp": "0.5.1",
- "nopt": "4.0.1",
- "npmlog": "4.1.0",
- "rc": "1.2.1",
+ "mkdirp": "^0.5.1",
+ "nopt": "^4.0.1",
+ "npmlog": "^4.0.2",
+ "rc": "^1.1.7",
"request": "2.81.0",
- "rimraf": "2.6.1",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "tar-pack": "3.4.0"
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^2.2.1",
+ "tar-pack": "^3.4.0"
}
},
"nopt": {
@@ -1516,8 +1516,8 @@
"bundled": true,
"optional": true,
"requires": {
- "abbrev": "1.1.0",
- "osenv": "0.1.4"
+ "abbrev": "1",
+ "osenv": "^0.1.4"
}
},
"npmlog": {
@@ -1525,10 +1525,10 @@
"bundled": true,
"optional": true,
"requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
}
},
"number-is-nan": {
@@ -1549,7 +1549,7 @@
"version": "1.4.0",
"bundled": true,
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
},
"os-homedir": {
@@ -1567,8 +1567,8 @@
"bundled": true,
"optional": true,
"requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
@@ -1599,10 +1599,10 @@
"bundled": true,
"optional": true,
"requires": {
- "deep-extend": "0.4.2",
- "ini": "1.3.4",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
+ "deep-extend": "~0.4.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
@@ -1616,13 +1616,13 @@
"version": "2.2.9",
"bundled": true,
"requires": {
- "buffer-shims": "1.0.0",
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "1.0.1",
- "util-deprecate": "1.0.2"
+ "buffer-shims": "~1.0.0",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~1.0.0",
+ "util-deprecate": "~1.0.1"
}
},
"request": {
@@ -1630,35 +1630,35 @@
"bundled": true,
"optional": true,
"requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "4.2.1",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.15",
- "oauth-sign": "0.8.2",
- "performance-now": "0.2.0",
- "qs": "6.4.0",
- "safe-buffer": "5.0.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.2",
- "tunnel-agent": "0.6.0",
- "uuid": "3.0.1"
+ "aws-sign2": "~0.6.0",
+ "aws4": "^1.2.1",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.0",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.1.1",
+ "har-validator": "~4.2.1",
+ "hawk": "~3.1.3",
+ "http-signature": "~1.1.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.7",
+ "oauth-sign": "~0.8.1",
+ "performance-now": "^0.2.0",
+ "qs": "~6.4.0",
+ "safe-buffer": "^5.0.1",
+ "stringstream": "~0.0.4",
+ "tough-cookie": "~2.3.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.0.0"
}
},
"rimraf": {
"version": "2.6.1",
"bundled": true,
"requires": {
- "glob": "7.1.2"
+ "glob": "^7.0.5"
}
},
"safe-buffer": {
@@ -1684,7 +1684,7 @@
"version": "1.0.9",
"bundled": true,
"requires": {
- "hoek": "2.16.3"
+ "hoek": "2.x.x"
}
},
"sshpk": {
@@ -1692,15 +1692,15 @@
"bundled": true,
"optional": true,
"requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jodid25519": "1.0.2",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jodid25519": "^1.0.0",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.14.0"
},
"dependencies": {
"assert-plus": {
@@ -1714,16 +1714,16 @@
"version": "1.0.2",
"bundled": true,
"requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
}
},
"string_decoder": {
"version": "1.0.1",
"bundled": true,
"requires": {
- "safe-buffer": "5.0.1"
+ "safe-buffer": "^5.0.1"
}
},
"stringstream": {
@@ -1735,7 +1735,7 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
@@ -1747,9 +1747,9 @@
"version": "2.2.1",
"bundled": true,
"requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
+ "block-stream": "*",
+ "fstream": "^1.0.2",
+ "inherits": "2"
}
},
"tar-pack": {
@@ -1757,14 +1757,14 @@
"bundled": true,
"optional": true,
"requires": {
- "debug": "2.6.8",
- "fstream": "1.0.11",
- "fstream-ignore": "1.0.5",
- "once": "1.4.0",
- "readable-stream": "2.2.9",
- "rimraf": "2.6.1",
- "tar": "2.2.1",
- "uid-number": "0.0.6"
+ "debug": "^2.2.0",
+ "fstream": "^1.0.10",
+ "fstream-ignore": "^1.0.5",
+ "once": "^1.3.3",
+ "readable-stream": "^2.1.4",
+ "rimraf": "^2.5.1",
+ "tar": "^2.2.1",
+ "uid-number": "^0.0.6"
}
},
"tough-cookie": {
@@ -1772,7 +1772,7 @@
"bundled": true,
"optional": true,
"requires": {
- "punycode": "1.4.1"
+ "punycode": "^1.4.1"
}
},
"tunnel-agent": {
@@ -1780,7 +1780,7 @@
"bundled": true,
"optional": true,
"requires": {
- "safe-buffer": "5.0.1"
+ "safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
@@ -1815,7 +1815,7 @@
"bundled": true,
"optional": true,
"requires": {
- "string-width": "1.0.2"
+ "string-width": "^1.0.2"
}
},
"wrappy": {
@@ -1829,10 +1829,10 @@
"resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz",
"integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=",
"requires": {
- "graceful-fs": "3.0.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.1"
+ "graceful-fs": "~3.0.2",
+ "inherits": "~2.0.0",
+ "mkdirp": "0.5",
+ "rimraf": "2"
}
},
"gaze": {
@@ -1840,7 +1840,7 @@
"resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
"integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
"requires": {
- "globule": "0.1.0"
+ "globule": "~0.1.0"
}
},
"getpass": {
@@ -1849,7 +1849,7 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"optional": true,
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -1865,11 +1865,11 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
},
"glob-base": {
@@ -1877,8 +1877,8 @@
"resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"requires": {
- "glob-parent": "2.0.0",
- "is-glob": "2.0.1"
+ "glob-parent": "^2.0.0",
+ "is-glob": "^2.0.0"
}
},
"glob-parent": {
@@ -1886,7 +1886,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"requires": {
- "is-glob": "2.0.1"
+ "is-glob": "^2.0.0"
}
},
"glob-stream": {
@@ -1894,12 +1894,12 @@
"resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
"integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
"requires": {
- "glob": "4.5.3",
- "glob2base": "0.0.12",
- "minimatch": "2.0.10",
- "ordered-read-streams": "0.1.0",
- "through2": "0.6.5",
- "unique-stream": "1.0.0"
+ "glob": "^4.3.1",
+ "glob2base": "^0.0.12",
+ "minimatch": "^2.0.1",
+ "ordered-read-streams": "^0.1.0",
+ "through2": "^0.6.1",
+ "unique-stream": "^1.0.0"
},
"dependencies": {
"glob": {
@@ -1907,10 +1907,10 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
"integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
"requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "2.0.10",
- "once": "1.4.0"
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^2.0.1",
+ "once": "^1.3.0"
}
},
"minimatch": {
@@ -1918,7 +1918,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
"integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
"requires": {
- "brace-expansion": "1.1.8"
+ "brace-expansion": "^1.0.0"
}
},
"readable-stream": {
@@ -1926,10 +1926,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -1937,8 +1937,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
}
}
@@ -1948,7 +1948,7 @@
"resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
"integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
"requires": {
- "gaze": "0.5.2"
+ "gaze": "^0.5.1"
}
},
"glob2base": {
@@ -1956,7 +1956,7 @@
"resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
"integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
"requires": {
- "find-index": "0.1.1"
+ "find-index": "^0.1.1"
}
},
"global-modules": {
@@ -1964,8 +1964,8 @@
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
"integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
"requires": {
- "global-prefix": "0.1.5",
- "is-windows": "0.2.0"
+ "global-prefix": "^0.1.4",
+ "is-windows": "^0.2.0"
}
},
"global-prefix": {
@@ -1973,10 +1973,10 @@
"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
"integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
"requires": {
- "homedir-polyfill": "1.0.1",
- "ini": "1.3.4",
- "is-windows": "0.2.0",
- "which": "1.3.0"
+ "homedir-polyfill": "^1.0.0",
+ "ini": "^1.3.4",
+ "is-windows": "^0.2.0",
+ "which": "^1.2.12"
}
},
"globby": {
@@ -1984,10 +1984,10 @@
"resolved": "https://registry.npmjs.org/globby/-/globby-2.1.0.tgz",
"integrity": "sha1-npGSvNM/Srak+JTl5+qLcTITxII=",
"requires": {
- "array-union": "1.0.2",
- "async": "1.5.2",
- "glob": "5.0.15",
- "object-assign": "3.0.0"
+ "array-union": "^1.0.1",
+ "async": "^1.2.1",
+ "glob": "^5.0.3",
+ "object-assign": "^3.0.0"
},
"dependencies": {
"object-assign": {
@@ -2002,9 +2002,9 @@
"resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
"integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
"requires": {
- "glob": "3.1.21",
- "lodash": "1.0.2",
- "minimatch": "0.2.14"
+ "glob": "~3.1.21",
+ "lodash": "~1.0.1",
+ "minimatch": "~0.2.11"
},
"dependencies": {
"glob": {
@@ -2012,9 +2012,9 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
"integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
"requires": {
- "graceful-fs": "1.2.3",
- "inherits": "1.0.2",
- "minimatch": "0.2.14"
+ "graceful-fs": "~1.2.0",
+ "inherits": "1",
+ "minimatch": "~0.2.11"
}
},
"graceful-fs": {
@@ -2032,8 +2032,8 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
"integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
"requires": {
- "lru-cache": "2.7.3",
- "sigmund": "1.0.1"
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
}
}
}
@@ -2043,7 +2043,7 @@
"resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
"integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
"requires": {
- "sparkles": "1.0.0"
+ "sparkles": "^1.0.0"
}
},
"graceful-fs": {
@@ -2051,7 +2051,7 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
"integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
"requires": {
- "natives": "1.1.0"
+ "natives": "^1.1.0"
}
},
"gulp": {
@@ -2059,19 +2059,19 @@
"resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.0.tgz",
"integrity": "sha1-zx+6TLVYu4xq5slhP1g64mINIUo=",
"requires": {
- "archy": "1.0.0",
- "chalk": "1.1.3",
- "deprecated": "0.0.1",
- "gulp-util": "3.0.8",
- "interpret": "0.6.6",
- "liftoff": "2.3.0",
- "minimist": "1.2.0",
- "orchestrator": "0.3.8",
- "pretty-hrtime": "1.0.3",
- "semver": "4.3.6",
- "tildify": "1.2.0",
- "v8flags": "2.1.1",
- "vinyl-fs": "0.3.14"
+ "archy": "^1.0.0",
+ "chalk": "^1.0.0",
+ "deprecated": "^0.0.1",
+ "gulp-util": "^3.0.0",
+ "interpret": "^0.6.2",
+ "liftoff": "^2.1.0",
+ "minimist": "^1.1.0",
+ "orchestrator": "^0.3.0",
+ "pretty-hrtime": "^1.0.0",
+ "semver": "^4.1.0",
+ "tildify": "^1.0.0",
+ "v8flags": "^2.0.2",
+ "vinyl-fs": "^0.3.0"
}
},
"gulp-cached": {
@@ -2079,8 +2079,8 @@
"resolved": "https://registry.npmjs.org/gulp-cached/-/gulp-cached-1.1.0.tgz",
"integrity": "sha1-1VmdvZIGIgGp0qutOmSl68JzknA=",
"requires": {
- "lodash.defaults": "2.4.1",
- "through2": "0.5.1"
+ "lodash.defaults": "^2.4.1",
+ "through2": "^0.5.1"
},
"dependencies": {
"readable-stream": {
@@ -2088,10 +2088,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2099,8 +2099,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz",
"integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "3.0.0"
+ "readable-stream": "~1.0.17",
+ "xtend": "~3.0.0"
}
},
"xtend": {
@@ -2126,9 +2126,9 @@
"resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.0.tgz",
"integrity": "sha1-WFz7EVQR80h3MTEUBWa2qBxpy5E=",
"requires": {
- "concat-with-sourcemaps": "1.0.4",
- "gulp-util": "3.0.8",
- "through2": "0.6.5"
+ "concat-with-sourcemaps": "^1.0.0",
+ "gulp-util": "^3.0.1",
+ "through2": "^0.6.3"
},
"dependencies": {
"readable-stream": {
@@ -2136,10 +2136,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2147,8 +2147,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
}
}
@@ -2158,9 +2158,9 @@
"resolved": "https://registry.npmjs.org/gulp-declare/-/gulp-declare-0.3.0.tgz",
"integrity": "sha1-hoMPxvqojgY4IWLIZkuOlJV6/Nk=",
"requires": {
- "nsdeclare": "0.1.0",
- "vinyl-map": "1.0.2",
- "xtend": "4.0.1"
+ "nsdeclare": "^0.1.0",
+ "vinyl-map": "^1.0.1",
+ "xtend": "^4.0.0"
}
},
"gulp-handlebars": {
@@ -2168,9 +2168,9 @@
"resolved": "https://registry.npmjs.org/gulp-handlebars/-/gulp-handlebars-3.0.1.tgz",
"integrity": "sha1-5M9xQ2GdvE3aK+DeVo4M5s+DTZM=",
"requires": {
- "gulp-util": "3.0.8",
- "handlebars": "2.0.0",
- "through2": "0.6.5"
+ "gulp-util": "^3.0.0",
+ "handlebars": "^2.0.0",
+ "through2": "^0.6.1"
},
"dependencies": {
"handlebars": {
@@ -2178,8 +2178,8 @@
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-2.0.0.tgz",
"integrity": "sha1-bp1/hRSjRn+l6fgswVjs/B1ax28=",
"requires": {
- "optimist": "0.3.7",
- "uglify-js": "2.3.6"
+ "optimist": "~0.3",
+ "uglify-js": "~2.3"
}
},
"readable-stream": {
@@ -2187,10 +2187,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2198,8 +2198,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
}
}
@@ -2209,12 +2209,12 @@
"resolved": "https://registry.npmjs.org/gulp-jshint/-/gulp-jshint-1.11.2.tgz",
"integrity": "sha1-1DDQDeQs5ue6DfMEGMnR0xU4IrU=",
"requires": {
- "gulp-util": "3.0.8",
- "jshint": "2.9.5",
- "lodash": "3.10.1",
- "minimatch": "2.0.10",
+ "gulp-util": "^3.0.0",
+ "jshint": "^2.7.0",
+ "lodash": "^3.0.1",
+ "minimatch": "^2.0.1",
"rcloader": "0.1.2",
- "through2": "0.6.5"
+ "through2": "~0.6.1"
},
"dependencies": {
"lodash": {
@@ -2227,7 +2227,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
"integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
"requires": {
- "brace-expansion": "1.1.8"
+ "brace-expansion": "^1.0.0"
}
},
"readable-stream": {
@@ -2235,10 +2235,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2246,8 +2246,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
}
}
@@ -2257,12 +2257,12 @@
"resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-3.0.3.tgz",
"integrity": "sha1-FexsSdx6QtdVjcDpW2ItNt/JTp8=",
"requires": {
- "accord": "0.15.2",
- "gulp-util": "3.0.8",
- "less": "2.7.2",
- "object-assign": "2.1.1",
- "through2": "0.6.5",
- "vinyl-sourcemaps-apply": "0.1.4"
+ "accord": "^0.15.2",
+ "gulp-util": "^3.0.4",
+ "less": "^2.4.0",
+ "object-assign": "^2.0.0",
+ "through2": "^0.6.3",
+ "vinyl-sourcemaps-apply": "^0.1.4"
},
"dependencies": {
"readable-stream": {
@@ -2270,10 +2270,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"source-map": {
@@ -2281,7 +2281,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
},
"through2": {
@@ -2289,8 +2289,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
},
"vinyl-sourcemaps-apply": {
@@ -2298,7 +2298,7 @@
"resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz",
"integrity": "sha1-xfy9Q+LyOEI8LcmL3db3m3K8NFs=",
"requires": {
- "source-map": "0.1.43"
+ "source-map": "^0.1.39"
}
}
}
@@ -2308,12 +2308,12 @@
"resolved": "https://registry.npmjs.org/gulp-livereload/-/gulp-livereload-3.8.0.tgz",
"integrity": "sha1-WZKxB5bnJAwb/r1ZInCzrG3Pw5s=",
"requires": {
- "chalk": "0.5.1",
- "debug": "2.6.8",
- "event-stream": "3.3.4",
- "gulp-util": "3.0.8",
- "lodash.assign": "3.2.0",
- "tiny-lr": "0.1.7"
+ "chalk": "^0.5.1",
+ "debug": "^2.1.0",
+ "event-stream": "^3.1.7",
+ "gulp-util": "^3.0.2",
+ "lodash.assign": "^3.0.0",
+ "tiny-lr": "^0.1.5"
},
"dependencies": {
"ansi-regex": {
@@ -2331,11 +2331,11 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=",
"requires": {
- "ansi-styles": "1.1.0",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "0.1.0",
- "strip-ansi": "0.3.0",
- "supports-color": "0.2.0"
+ "ansi-styles": "^1.1.0",
+ "escape-string-regexp": "^1.0.0",
+ "has-ansi": "^0.1.0",
+ "strip-ansi": "^0.3.0",
+ "supports-color": "^0.2.0"
}
},
"has-ansi": {
@@ -2343,7 +2343,7 @@
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=",
"requires": {
- "ansi-regex": "0.2.1"
+ "ansi-regex": "^0.2.0"
}
},
"strip-ansi": {
@@ -2351,7 +2351,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=",
"requires": {
- "ansi-regex": "0.2.1"
+ "ansi-regex": "^0.2.1"
}
},
"supports-color": {
@@ -2366,9 +2366,9 @@
"resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-6.0.0.tgz",
"integrity": "sha1-Bks4Cwjm9xmWB+DhlLYrmTQtRt4=",
"requires": {
- "gulp-util": "3.0.8",
- "postcss": "5.2.17",
- "vinyl-sourcemaps-apply": "0.1.4"
+ "gulp-util": "^3.0.4",
+ "postcss": "^5.0.0",
+ "vinyl-sourcemaps-apply": "^0.1.4"
},
"dependencies": {
"postcss": {
@@ -2376,10 +2376,10 @@
"resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz",
"integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=",
"requires": {
- "chalk": "1.1.3",
- "js-base64": "2.1.9",
- "source-map": "0.5.6",
- "supports-color": "3.2.3"
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
}
},
"source-map": {
@@ -2392,7 +2392,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"requires": {
- "has-flag": "1.0.0"
+ "has-flag": "^1.0.0"
}
},
"vinyl-sourcemaps-apply": {
@@ -2400,7 +2400,7 @@
"resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz",
"integrity": "sha1-xfy9Q+LyOEI8LcmL3db3m3K8NFs=",
"requires": {
- "source-map": "0.1.43"
+ "source-map": "^0.1.39"
},
"dependencies": {
"source-map": {
@@ -2408,7 +2408,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
}
}
@@ -2420,8 +2420,8 @@
"resolved": "https://registry.npmjs.org/gulp-print/-/gulp-print-1.1.0.tgz",
"integrity": "sha1-TkbajhAzjLDMRq7J/wVkxl61MLc=",
"requires": {
- "colors": "0.6.2",
- "map-stream": "0.1.0"
+ "colors": "~0.x",
+ "map-stream": "~0.1.0"
}
},
"gulp-replace": {
@@ -2439,10 +2439,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2450,8 +2450,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.3.tgz",
"integrity": "sha1-eVKS/enyVMKjaLOPnMXRvUZjr7Y=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
}
}
@@ -2461,9 +2461,9 @@
"resolved": "https://registry.npmjs.org/gulp-run/-/gulp-run-1.6.8.tgz",
"integrity": "sha1-Qd4yJuNwuH012iQbqRf5a0LG3KU=",
"requires": {
- "gulp-util": "3.0.8",
- "lodash": "3.10.1",
- "vinyl": "0.4.6"
+ "gulp-util": "^3.0.0",
+ "lodash": "^3.7.0",
+ "vinyl": "^0.4.6"
},
"dependencies": {
"clone": {
@@ -2481,8 +2481,8 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"requires": {
- "clone": "0.2.0",
- "clone-stats": "0.0.1"
+ "clone": "^0.2.0",
+ "clone-stats": "^0.0.1"
}
}
}
@@ -2492,11 +2492,11 @@
"resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.5.2.tgz",
"integrity": "sha1-eW9v9pWklCFfPT1mqnrIU9fnNRE=",
"requires": {
- "convert-source-map": "1.5.0",
- "graceful-fs": "3.0.11",
- "strip-bom": "1.0.0",
- "through2": "0.6.5",
- "vinyl": "0.4.6"
+ "convert-source-map": "^1.0.0",
+ "graceful-fs": "^3.0.5",
+ "strip-bom": "^1.0.0",
+ "through2": "^0.6.3",
+ "vinyl": "^0.4.6"
},
"dependencies": {
"clone": {
@@ -2514,10 +2514,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2525,8 +2525,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
},
"vinyl": {
@@ -2534,8 +2534,8 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"requires": {
- "clone": "0.2.0",
- "clone-stats": "0.0.1"
+ "clone": "^0.2.0",
+ "clone-stats": "^0.0.1"
}
}
}
@@ -2545,10 +2545,10 @@
"resolved": "https://registry.npmjs.org/gulp-stripbom/-/gulp-stripbom-1.0.4.tgz",
"integrity": "sha1-WMHQPoXgCKeqtH2BsSl8jBvIKOs=",
"requires": {
- "gulp-util": "3.0.8",
- "log-symbols": "1.0.2",
- "strip-bom": "1.0.0",
- "through2": "0.5.1"
+ "gulp-util": "^3.0.0",
+ "log-symbols": "^1.0.0",
+ "strip-bom": "^1.0.0",
+ "through2": "^0.5.1"
},
"dependencies": {
"readable-stream": {
@@ -2556,10 +2556,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2567,8 +2567,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz",
"integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "3.0.0"
+ "readable-stream": "~1.0.17",
+ "xtend": "~3.0.0"
}
},
"xtend": {
@@ -2583,24 +2583,24 @@
"resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
"integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
"requires": {
- "array-differ": "1.0.0",
- "array-uniq": "1.0.3",
- "beeper": "1.1.1",
- "chalk": "1.1.3",
- "dateformat": "2.0.0",
- "fancy-log": "1.3.0",
- "gulplog": "1.0.0",
- "has-gulplog": "0.1.0",
- "lodash._reescape": "3.0.0",
- "lodash._reevaluate": "3.0.0",
- "lodash._reinterpolate": "3.0.0",
- "lodash.template": "3.6.2",
- "minimist": "1.2.0",
- "multipipe": "0.1.2",
- "object-assign": "3.0.0",
+ "array-differ": "^1.0.0",
+ "array-uniq": "^1.0.2",
+ "beeper": "^1.0.0",
+ "chalk": "^1.0.0",
+ "dateformat": "^2.0.0",
+ "fancy-log": "^1.1.0",
+ "gulplog": "^1.0.0",
+ "has-gulplog": "^0.1.0",
+ "lodash._reescape": "^3.0.0",
+ "lodash._reevaluate": "^3.0.0",
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.template": "^3.0.0",
+ "minimist": "^1.1.0",
+ "multipipe": "^0.1.2",
+ "object-assign": "^3.0.0",
"replace-ext": "0.0.1",
- "through2": "2.0.3",
- "vinyl": "0.5.3"
+ "through2": "^2.0.0",
+ "vinyl": "^0.5.0"
},
"dependencies": {
"object-assign": {
@@ -2615,11 +2615,11 @@
"resolved": "https://registry.npmjs.org/gulp-webpack/-/gulp-webpack-1.5.0.tgz",
"integrity": "sha1-eqaD/ojALSRhSOJ8cinLa2KJLbo=",
"requires": {
- "gulp-util": "3.0.8",
- "memory-fs": "0.2.0",
- "through": "2.3.8",
- "vinyl": "0.5.3",
- "webpack": "1.12.0"
+ "gulp-util": ">=3.0.0 <3.1.0-0",
+ "memory-fs": ">=0.2.0 <0.3.0-0",
+ "through": ">=2.3.4 <2.4.0-0",
+ "vinyl": ">=0.5.0 <0.6.0-0",
+ "webpack": ">=1.9.0 <2.0.0-0"
}
},
"gulp-wrap": {
@@ -2627,16 +2627,16 @@
"resolved": "https://registry.npmjs.org/gulp-wrap/-/gulp-wrap-0.11.0.tgz",
"integrity": "sha1-a0nz9r8cmWT8Twxgwu5Gd61JtcE=",
"requires": {
- "consolidate": "0.11.0",
- "es6-promise": "2.3.0",
- "fs-readfile-promise": "1.1.0",
- "gulp-util": "3.0.8",
- "js-yaml": "3.9.1",
- "lodash": "3.10.1",
- "node.extend": "1.1.6",
- "through2": "0.6.5",
- "tryit": "1.0.3",
- "vinyl-bufferstream": "1.0.1"
+ "consolidate": "^0.11.0",
+ "es6-promise": "^2.0.1",
+ "fs-readfile-promise": "^1.1.0",
+ "gulp-util": "^3.0.3",
+ "js-yaml": "^3.2.6",
+ "lodash": "^3.1.0",
+ "node.extend": "^1.1.2",
+ "through2": "^0.6.3",
+ "tryit": "^1.0.1",
+ "vinyl-bufferstream": "^1.0.1"
},
"dependencies": {
"lodash": {
@@ -2649,10 +2649,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -2660,8 +2660,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
}
}
@@ -2671,7 +2671,7 @@
"resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
"integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
"requires": {
- "glogg": "1.0.0"
+ "glogg": "^1.0.0"
}
},
"handlebars": {
@@ -2679,9 +2679,9 @@
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-3.0.3.tgz",
"integrity": "sha1-DgllGi8Ps8lJFgWDcQ1VH5Lm0q0=",
"requires": {
- "optimist": "0.6.1",
- "source-map": "0.1.43",
- "uglify-js": "2.3.6"
+ "optimist": "^0.6.1",
+ "source-map": "^0.1.40",
+ "uglify-js": "~2.3"
},
"dependencies": {
"minimist": {
@@ -2694,8 +2694,8 @@
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"requires": {
- "minimist": "0.0.10",
- "wordwrap": "0.0.3"
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
}
},
"source-map": {
@@ -2703,7 +2703,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
}
}
@@ -2720,8 +2720,8 @@
"integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
"optional": true,
"requires": {
- "ajv": "4.11.8",
- "har-schema": "1.0.5"
+ "ajv": "^4.9.1",
+ "har-schema": "^1.0.5"
}
},
"has-ansi": {
@@ -2729,7 +2729,7 @@
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
},
"has-flag": {
@@ -2742,7 +2742,7 @@
"resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
"integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
"requires": {
- "sparkles": "1.0.0"
+ "sparkles": "^1.0.0"
}
},
"hawk": {
@@ -2751,10 +2751,10 @@
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"optional": true,
"requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
+ "boom": "2.x.x",
+ "cryptiles": "2.x.x",
+ "hoek": "2.x.x",
+ "sntp": "1.x.x"
}
},
"hoek": {
@@ -2767,7 +2767,7 @@
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
"integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
"requires": {
- "parse-passwd": "1.0.0"
+ "parse-passwd": "^1.0.0"
}
},
"htmlparser2": {
@@ -2775,11 +2775,11 @@
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"requires": {
- "domelementtype": "1.3.0",
- "domhandler": "2.3.0",
- "domutils": "1.5.1",
- "entities": "1.0.0",
- "readable-stream": "1.1.14"
+ "domelementtype": "1",
+ "domhandler": "2.3",
+ "domutils": "1.5",
+ "entities": "1.0",
+ "readable-stream": "1.1"
}
},
"http-browserify": {
@@ -2787,8 +2787,8 @@
"resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz",
"integrity": "sha1-M3la3nLfiKz7/TZ3PO/tp2RzWyA=",
"requires": {
- "Base64": "0.2.1",
- "inherits": "2.0.3"
+ "Base64": "~0.2.0",
+ "inherits": "~2.0.1"
}
},
"http-signature": {
@@ -2797,9 +2797,9 @@
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"optional": true,
"requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.1",
- "sshpk": "1.13.1"
+ "assert-plus": "^0.2.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
}
},
"https-browserify": {
@@ -2838,8 +2838,8 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
"inherits": {
@@ -2867,8 +2867,8 @@
"resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz",
"integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=",
"requires": {
- "is-relative": "0.2.1",
- "is-windows": "0.2.0"
+ "is-relative": "^0.2.1",
+ "is-windows": "^0.2.0"
}
},
"is-binary-path": {
@@ -2876,7 +2876,7 @@
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"requires": {
- "binary-extensions": "1.9.0"
+ "binary-extensions": "^1.0.0"
}
},
"is-buffer": {
@@ -2894,7 +2894,7 @@
"resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
"integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"requires": {
- "is-primitive": "2.0.0"
+ "is-primitive": "^2.0.0"
}
},
"is-extendable": {
@@ -2912,7 +2912,7 @@
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"requires": {
- "is-extglob": "1.0.0"
+ "is-extglob": "^1.0.0"
}
},
"is-number": {
@@ -2920,7 +2920,7 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"requires": {
- "kind-of": "3.2.2"
+ "kind-of": "^3.0.2"
}
},
"is-path-cwd": {
@@ -2933,7 +2933,7 @@
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
"integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
"requires": {
- "is-path-inside": "1.0.0"
+ "is-path-inside": "^1.0.0"
}
},
"is-path-inside": {
@@ -2941,7 +2941,7 @@
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
"integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
"requires": {
- "path-is-inside": "1.0.2"
+ "path-is-inside": "^1.0.1"
}
},
"is-plain-object": {
@@ -2949,7 +2949,7 @@
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"requires": {
- "isobject": "3.0.1"
+ "isobject": "^3.0.1"
},
"dependencies": {
"isobject": {
@@ -2974,7 +2974,7 @@
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz",
"integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=",
"requires": {
- "is-unc-path": "0.1.2"
+ "is-unc-path": "^0.1.1"
}
},
"is-typedarray": {
@@ -2988,7 +2988,7 @@
"resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz",
"integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=",
"requires": {
- "unc-path-regex": "0.1.2"
+ "unc-path-regex": "^0.1.0"
}
},
"is-utf8": {
@@ -3036,8 +3036,8 @@
"resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-1.0.2.tgz",
"integrity": "sha1-rOGTVNGpoBc+/rEITOD4ewrX3s8=",
"requires": {
- "binaryextensions": "1.0.1",
- "textextensions": "1.0.2"
+ "binaryextensions": "~1.0.0",
+ "textextensions": "~1.0.0"
}
},
"js-base64": {
@@ -3050,8 +3050,8 @@
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz",
"integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==",
"requires": {
- "argparse": "1.0.9",
- "esprima": "4.0.0"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
},
"dependencies": {
"esprima": {
@@ -3072,14 +3072,14 @@
"resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz",
"integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=",
"requires": {
- "cli": "1.0.1",
- "console-browserify": "1.1.0",
- "exit": "0.1.2",
- "htmlparser2": "3.8.3",
- "lodash": "3.7.0",
- "minimatch": "3.0.4",
- "shelljs": "0.3.0",
- "strip-json-comments": "1.0.4"
+ "cli": "~1.0.0",
+ "console-browserify": "1.1.x",
+ "exit": "0.1.x",
+ "htmlparser2": "3.8.x",
+ "lodash": "3.7.x",
+ "minimatch": "~3.0.2",
+ "shelljs": "0.3.x",
+ "strip-json-comments": "1.0.x"
},
"dependencies": {
"lodash": {
@@ -3094,9 +3094,9 @@
"resolved": "https://registry.npmjs.org/jshint-loader/-/jshint-loader-0.8.3.tgz",
"integrity": "sha1-ahbOiH5NLxuvveBXXjwQ970uaUs=",
"requires": {
- "loader-utils": "0.2.17",
- "rcloader": "0.1.2",
- "strip-json-comments": "0.1.3"
+ "loader-utils": "0.2.x",
+ "rcloader": "=0.1.2",
+ "strip-json-comments": "0.1.x"
},
"dependencies": {
"strip-json-comments": {
@@ -3111,11 +3111,11 @@
"resolved": "https://registry.npmjs.org/jshint-stylish/-/jshint-stylish-2.0.1.tgz",
"integrity": "sha1-hFvzg4blVVH/n4QMx3Jfeoi1stQ=",
"requires": {
- "chalk": "1.1.3",
- "log-symbols": "1.0.2",
- "plur": "1.0.0",
- "string-length": "1.0.1",
- "text-table": "0.2.0"
+ "chalk": "^1.0.0",
+ "log-symbols": "^1.0.0",
+ "plur": "^1.0.0",
+ "string-length": "^1.0.0",
+ "text-table": "^0.2.0"
}
},
"json-schema": {
@@ -3130,7 +3130,7 @@
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"optional": true,
"requires": {
- "jsonify": "0.0.0"
+ "jsonify": "~0.0.0"
}
},
"json-stringify-safe": {
@@ -3180,7 +3180,7 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
- "is-buffer": "1.1.5"
+ "is-buffer": "^1.1.5"
}
},
"less": {
@@ -3188,14 +3188,14 @@
"resolved": "https://registry.npmjs.org/less/-/less-2.7.2.tgz",
"integrity": "sha1-No1sxz4fsDmBGDKAkYdDxdz5s98=",
"requires": {
- "errno": "0.1.4",
- "graceful-fs": "4.1.11",
- "image-size": "0.5.5",
- "mime": "1.3.6",
- "mkdirp": "0.5.1",
- "promise": "7.3.1",
- "request": "2.81.0",
- "source-map": "0.5.6"
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "mime": "^1.2.11",
+ "mkdirp": "^0.5.0",
+ "promise": "^7.1.1",
+ "request": "^2.72.0",
+ "source-map": "^0.5.3"
},
"dependencies": {
"graceful-fs": {
@@ -3217,15 +3217,15 @@
"resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz",
"integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=",
"requires": {
- "extend": "3.0.1",
- "findup-sync": "0.4.3",
- "fined": "1.1.0",
- "flagged-respawn": "0.3.2",
- "lodash.isplainobject": "4.0.6",
- "lodash.isstring": "4.0.1",
- "lodash.mapvalues": "4.6.0",
- "rechoir": "0.6.2",
- "resolve": "1.4.0"
+ "extend": "^3.0.0",
+ "findup-sync": "^0.4.2",
+ "fined": "^1.0.1",
+ "flagged-respawn": "^0.3.2",
+ "lodash.isplainobject": "^4.0.4",
+ "lodash.isstring": "^4.0.1",
+ "lodash.mapvalues": "^4.4.0",
+ "rechoir": "^0.6.2",
+ "resolve": "^1.1.7"
}
},
"livereload-js": {
@@ -3238,10 +3238,10 @@
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
"integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
"requires": {
- "big.js": "3.1.3",
- "emojis-list": "2.1.0",
- "json5": "0.5.1",
- "object-assign": "4.1.1"
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
},
"dependencies": {
"object-assign": {
@@ -3261,8 +3261,8 @@
"resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
"integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
"requires": {
- "lodash._basecopy": "3.0.1",
- "lodash.keys": "3.1.2"
+ "lodash._basecopy": "^3.0.0",
+ "lodash.keys": "^3.0.0"
}
},
"lodash._basecopy": {
@@ -3290,9 +3290,9 @@
"resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz",
"integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=",
"requires": {
- "lodash._bindcallback": "3.0.1",
- "lodash._isiterateecall": "3.0.9",
- "lodash.restparam": "3.6.1"
+ "lodash._bindcallback": "^3.0.0",
+ "lodash._isiterateecall": "^3.0.0",
+ "lodash.restparam": "^3.0.0"
}
},
"lodash._getnative": {
@@ -3340,7 +3340,7 @@
"resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz",
"integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=",
"requires": {
- "lodash._objecttypes": "2.4.1"
+ "lodash._objecttypes": "~2.4.1"
}
},
"lodash.assign": {
@@ -3348,9 +3348,9 @@
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz",
"integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=",
"requires": {
- "lodash._baseassign": "3.2.0",
- "lodash._createassigner": "3.1.1",
- "lodash.keys": "3.1.2"
+ "lodash._baseassign": "^3.0.0",
+ "lodash._createassigner": "^3.0.0",
+ "lodash.keys": "^3.0.0"
}
},
"lodash.clonedeep": {
@@ -3363,8 +3363,8 @@
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz",
"integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=",
"requires": {
- "lodash._objecttypes": "2.4.1",
- "lodash.keys": "2.4.1"
+ "lodash._objecttypes": "~2.4.1",
+ "lodash.keys": "~2.4.1"
},
"dependencies": {
"lodash.keys": {
@@ -3372,9 +3372,9 @@
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz",
"integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
"requires": {
- "lodash._isnative": "2.4.1",
- "lodash._shimkeys": "2.4.1",
- "lodash.isobject": "2.4.1"
+ "lodash._isnative": "~2.4.1",
+ "lodash._shimkeys": "~2.4.1",
+ "lodash.isobject": "~2.4.1"
}
}
}
@@ -3384,7 +3384,7 @@
"resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
"integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
"requires": {
- "lodash._root": "3.0.1"
+ "lodash._root": "^3.0.0"
}
},
"lodash.isarguments": {
@@ -3402,7 +3402,7 @@
"resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz",
"integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
"requires": {
- "lodash._objecttypes": "2.4.1"
+ "lodash._objecttypes": "~2.4.1"
}
},
"lodash.isplainobject": {
@@ -3420,9 +3420,9 @@
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
"integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
"requires": {
- "lodash._getnative": "3.9.1",
- "lodash.isarguments": "3.1.0",
- "lodash.isarray": "3.0.4"
+ "lodash._getnative": "^3.0.0",
+ "lodash.isarguments": "^3.0.0",
+ "lodash.isarray": "^3.0.0"
}
},
"lodash.mapvalues": {
@@ -3440,15 +3440,15 @@
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
"integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
"requires": {
- "lodash._basecopy": "3.0.1",
- "lodash._basetostring": "3.0.1",
- "lodash._basevalues": "3.0.0",
- "lodash._isiterateecall": "3.0.9",
- "lodash._reinterpolate": "3.0.0",
- "lodash.escape": "3.2.0",
- "lodash.keys": "3.1.2",
- "lodash.restparam": "3.6.1",
- "lodash.templatesettings": "3.1.1"
+ "lodash._basecopy": "^3.0.0",
+ "lodash._basetostring": "^3.0.0",
+ "lodash._basevalues": "^3.0.0",
+ "lodash._isiterateecall": "^3.0.0",
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.escape": "^3.0.0",
+ "lodash.keys": "^3.0.0",
+ "lodash.restparam": "^3.0.0",
+ "lodash.templatesettings": "^3.0.0"
}
},
"lodash.templatesettings": {
@@ -3456,8 +3456,8 @@
"resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
"integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
"requires": {
- "lodash._reinterpolate": "3.0.0",
- "lodash.escape": "3.2.0"
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.escape": "^3.0.0"
}
},
"log-symbols": {
@@ -3465,7 +3465,7 @@
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
"requires": {
- "chalk": "1.1.3"
+ "chalk": "^1.0.0"
}
},
"lru-cache": {
@@ -3498,19 +3498,19 @@
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"requires": {
- "arr-diff": "2.0.0",
- "array-unique": "0.2.1",
- "braces": "1.8.5",
- "expand-brackets": "0.1.5",
- "extglob": "0.3.2",
- "filename-regex": "2.0.1",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1",
- "kind-of": "3.2.2",
- "normalize-path": "2.1.1",
- "object.omit": "2.0.1",
- "parse-glob": "3.0.4",
- "regex-cache": "0.4.3"
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
}
},
"mime": {
@@ -3529,7 +3529,7 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz",
"integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=",
"requires": {
- "mime-db": "1.29.0"
+ "mime-db": "~1.29.0"
}
},
"minimatch": {
@@ -3537,7 +3537,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
- "brace-expansion": "1.1.8"
+ "brace-expansion": "^1.1.7"
}
},
"minimist": {
@@ -3580,16 +3580,16 @@
"optional": true
},
"natives": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz",
- "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE="
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
+ "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA=="
},
"new-from": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/new-from/-/new-from-0.0.3.tgz",
"integrity": "sha1-HErRNhPePhXWMhtw7Vwjk36iXmc=",
"requires": {
- "readable-stream": "1.1.14"
+ "readable-stream": "~1.1.8"
}
},
"node-libs-browser": {
@@ -3597,28 +3597,28 @@
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.6.0.tgz",
"integrity": "sha1-JEgG1E0xngSLyGB7XMTq+aKdLjw=",
"requires": {
- "assert": "1.4.1",
- "browserify-zlib": "0.1.4",
- "buffer": "4.9.1",
- "console-browserify": "1.1.0",
+ "assert": "^1.1.1",
+ "browserify-zlib": "~0.1.4",
+ "buffer": "^4.9.0",
+ "console-browserify": "^1.1.0",
"constants-browserify": "0.0.1",
- "crypto-browserify": "3.2.8",
- "domain-browser": "1.1.7",
- "events": "1.1.1",
- "http-browserify": "1.7.0",
+ "crypto-browserify": "~3.2.6",
+ "domain-browser": "^1.1.1",
+ "events": "^1.0.0",
+ "http-browserify": "^1.3.2",
"https-browserify": "0.0.0",
- "os-browserify": "0.1.2",
+ "os-browserify": "~0.1.2",
"path-browserify": "0.0.0",
- "process": "0.11.10",
- "punycode": "1.4.1",
- "querystring-es3": "0.2.1",
- "readable-stream": "1.1.14",
- "stream-browserify": "1.0.0",
- "string_decoder": "0.10.31",
- "timers-browserify": "1.4.2",
+ "process": "^0.11.0",
+ "punycode": "^1.2.4",
+ "querystring-es3": "~0.2.0",
+ "readable-stream": "^1.1.13",
+ "stream-browserify": "^1.0.0",
+ "string_decoder": "~0.10.25",
+ "timers-browserify": "^1.0.1",
"tty-browserify": "0.0.0",
- "url": "0.10.3",
- "util": "0.10.3",
+ "url": "~0.10.1",
+ "util": "~0.10.3",
"vm-browserify": "0.0.4"
}
},
@@ -3627,7 +3627,7 @@
"resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz",
"integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=",
"requires": {
- "is": "3.2.1"
+ "is": "^3.1.0"
}
},
"normalize-path": {
@@ -3635,7 +3635,7 @@
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"requires": {
- "remove-trailing-separator": "1.0.2"
+ "remove-trailing-separator": "^1.0.1"
}
},
"npm": {
@@ -3643,133 +3643,133 @@
"resolved": "https://registry.npmjs.org/npm/-/npm-6.0.1.tgz",
"integrity": "sha512-N3uW8jeIXIBp5G3Q6Yu3TTN1ss6BUWuDTHk2JkdTUGaUf0AwKdtVs63O5B75C9NNn7y/7tMpkMCE++xpRhjUBw==",
"requires": {
- "JSONStream": "1.3.2",
- "abbrev": "1.1.1",
- "ansi-regex": "3.0.0",
- "ansicolors": "0.3.2",
- "ansistyles": "0.1.3",
- "aproba": "1.2.0",
- "archy": "1.0.0",
- "bin-links": "1.1.2",
- "bluebird": "3.5.1",
- "byte-size": "4.0.2",
- "cacache": "11.0.1",
- "call-limit": "1.1.0",
- "chownr": "1.0.1",
- "cli-columns": "3.1.2",
- "cli-table2": "0.2.0",
- "cmd-shim": "2.0.2",
- "columnify": "1.5.4",
- "config-chain": "1.1.11",
- "debuglog": "1.0.1",
- "detect-indent": "5.0.0",
- "detect-newline": "2.1.0",
- "dezalgo": "1.0.3",
- "editor": "1.0.0",
- "figgy-pudding": "3.1.0",
- "find-npm-prefix": "1.0.2",
- "fs-vacuum": "1.2.10",
- "fs-write-stream-atomic": "1.0.10",
- "gentle-fs": "2.0.1",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "has-unicode": "2.0.1",
- "hosted-git-info": "2.6.0",
- "iferr": "1.0.0",
- "imurmurhash": "0.1.4",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "ini": "1.3.5",
- "init-package-json": "1.10.3",
- "is-cidr": "2.0.5",
- "json-parse-better-errors": "1.0.2",
- "lazy-property": "1.0.0",
- "libcipm": "1.6.2",
- "libnpmhook": "4.0.1",
- "libnpx": "10.2.0",
- "lock-verify": "2.0.2",
- "lockfile": "1.0.4",
- "lodash._baseindexof": "3.1.0",
- "lodash._baseuniq": "4.6.0",
- "lodash._bindcallback": "3.0.1",
- "lodash._cacheindexof": "3.0.2",
- "lodash._createcache": "3.1.2",
- "lodash._getnative": "3.9.1",
- "lodash.clonedeep": "4.5.0",
- "lodash.restparam": "3.6.1",
- "lodash.union": "4.6.0",
- "lodash.uniq": "4.5.0",
- "lodash.without": "4.4.0",
- "lru-cache": "4.1.2",
- "meant": "1.0.1",
- "mississippi": "3.0.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "node-gyp": "3.6.2",
- "nopt": "4.0.1",
- "normalize-package-data": "2.4.0",
- "npm-audit-report": "1.0.8",
- "npm-cache-filename": "1.0.2",
- "npm-install-checks": "3.0.0",
- "npm-lifecycle": "2.0.1",
- "npm-package-arg": "6.1.0",
- "npm-packlist": "1.1.10",
- "npm-pick-manifest": "2.1.0",
- "npm-profile": "3.0.1",
- "npm-registry-client": "8.5.1",
- "npm-registry-fetch": "1.1.0",
- "npm-user-validate": "1.0.0",
- "npmlog": "4.1.2",
- "once": "1.4.0",
- "opener": "1.4.3",
- "osenv": "0.1.5",
- "pacote": "8.1.1",
- "path-is-inside": "1.0.2",
- "promise-inflight": "1.0.1",
- "qrcode-terminal": "0.12.0",
- "query-string": "6.1.0",
- "qw": "1.0.1",
- "read": "1.0.7",
- "read-cmd-shim": "1.0.1",
- "read-installed": "4.0.3",
- "read-package-json": "2.0.13",
- "read-package-tree": "5.2.1",
- "readable-stream": "2.3.6",
- "readdir-scoped-modules": "1.0.2",
- "request": "2.85.0",
- "retry": "0.12.0",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.2",
- "semver": "5.5.0",
- "sha": "2.0.1",
- "slide": "1.1.6",
- "sorted-object": "2.0.1",
- "sorted-union-stream": "2.1.3",
- "ssri": "6.0.0",
- "strip-ansi": "4.0.0",
- "tar": "4.4.2",
- "text-table": "0.2.0",
- "tiny-relative-date": "1.3.0",
+ "JSONStream": "^1.3.2",
+ "abbrev": "~1.1.1",
+ "ansi-regex": "~3.0.0",
+ "ansicolors": "~0.3.2",
+ "ansistyles": "~0.1.3",
+ "aproba": "~1.2.0",
+ "archy": "~1.0.0",
+ "bin-links": "^1.1.2",
+ "bluebird": "~3.5.1",
+ "byte-size": "^4.0.2",
+ "cacache": "^11.0.1",
+ "call-limit": "~1.1.0",
+ "chownr": "~1.0.1",
+ "cli-columns": "^3.1.2",
+ "cli-table2": "~0.2.0",
+ "cmd-shim": "~2.0.2",
+ "columnify": "~1.5.4",
+ "config-chain": "~1.1.11",
+ "debuglog": "*",
+ "detect-indent": "~5.0.0",
+ "detect-newline": "^2.1.0",
+ "dezalgo": "~1.0.3",
+ "editor": "~1.0.0",
+ "figgy-pudding": "^3.1.0",
+ "find-npm-prefix": "^1.0.2",
+ "fs-vacuum": "~1.2.10",
+ "fs-write-stream-atomic": "~1.0.10",
+ "gentle-fs": "^2.0.1",
+ "glob": "~7.1.2",
+ "graceful-fs": "~4.1.11",
+ "has-unicode": "~2.0.1",
+ "hosted-git-info": "^2.6.0",
+ "iferr": "^1.0.0",
+ "imurmurhash": "*",
+ "inflight": "~1.0.6",
+ "inherits": "~2.0.3",
+ "ini": "^1.3.5",
+ "init-package-json": "^1.10.3",
+ "is-cidr": "^2.0.5",
+ "json-parse-better-errors": "^1.0.2",
+ "lazy-property": "~1.0.0",
+ "libcipm": "^1.6.2",
+ "libnpmhook": "^4.0.1",
+ "libnpx": "^10.2.0",
+ "lock-verify": "^2.0.2",
+ "lockfile": "^1.0.4",
+ "lodash._baseindexof": "*",
+ "lodash._baseuniq": "~4.6.0",
+ "lodash._bindcallback": "*",
+ "lodash._cacheindexof": "*",
+ "lodash._createcache": "*",
+ "lodash._getnative": "*",
+ "lodash.clonedeep": "~4.5.0",
+ "lodash.restparam": "*",
+ "lodash.union": "~4.6.0",
+ "lodash.uniq": "~4.5.0",
+ "lodash.without": "~4.4.0",
+ "lru-cache": "^4.1.2",
+ "meant": "~1.0.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "~0.5.1",
+ "move-concurrently": "^1.0.1",
+ "node-gyp": "^3.6.2",
+ "nopt": "~4.0.1",
+ "normalize-package-data": "~2.4.0",
+ "npm-audit-report": "^1.0.8",
+ "npm-cache-filename": "~1.0.2",
+ "npm-install-checks": "~3.0.0",
+ "npm-lifecycle": "^2.0.1",
+ "npm-package-arg": "^6.1.0",
+ "npm-packlist": "~1.1.10",
+ "npm-pick-manifest": "^2.1.0",
+ "npm-profile": "^3.0.1",
+ "npm-registry-client": "^8.5.1",
+ "npm-registry-fetch": "^1.1.0",
+ "npm-user-validate": "~1.0.0",
+ "npmlog": "~4.1.2",
+ "once": "~1.4.0",
+ "opener": "~1.4.3",
+ "osenv": "^0.1.5",
+ "pacote": "^8.1.1",
+ "path-is-inside": "~1.0.2",
+ "promise-inflight": "~1.0.1",
+ "qrcode-terminal": "^0.12.0",
+ "query-string": "^6.1.0",
+ "qw": "~1.0.1",
+ "read": "~1.0.7",
+ "read-cmd-shim": "~1.0.1",
+ "read-installed": "~4.0.3",
+ "read-package-json": "^2.0.13",
+ "read-package-tree": "^5.2.1",
+ "readable-stream": "^2.3.6",
+ "readdir-scoped-modules": "*",
+ "request": "^2.85.0",
+ "retry": "^0.12.0",
+ "rimraf": "~2.6.2",
+ "safe-buffer": "^5.1.2",
+ "semver": "^5.5.0",
+ "sha": "~2.0.1",
+ "slide": "~1.1.6",
+ "sorted-object": "~2.0.1",
+ "sorted-union-stream": "~2.1.3",
+ "ssri": "^6.0.0",
+ "strip-ansi": "~4.0.0",
+ "tar": "^4.4.2",
+ "text-table": "~0.2.0",
+ "tiny-relative-date": "^1.3.0",
"uid-number": "0.0.6",
- "umask": "1.1.0",
- "unique-filename": "1.1.0",
- "unpipe": "1.0.0",
- "update-notifier": "2.5.0",
- "uuid": "3.2.1",
- "validate-npm-package-license": "3.0.3",
- "validate-npm-package-name": "3.0.0",
- "which": "1.3.0",
- "worker-farm": "1.6.0",
- "wrappy": "1.0.2",
- "write-file-atomic": "2.3.0"
+ "umask": "~1.1.0",
+ "unique-filename": "~1.1.0",
+ "unpipe": "~1.0.0",
+ "update-notifier": "^2.5.0",
+ "uuid": "^3.2.1",
+ "validate-npm-package-license": "^3.0.3",
+ "validate-npm-package-name": "~3.0.0",
+ "which": "~1.3.0",
+ "worker-farm": "^1.6.0",
+ "wrappy": "~1.0.2",
+ "write-file-atomic": "^2.3.0"
},
"dependencies": {
"JSONStream": {
"version": "1.3.2",
"bundled": true,
"requires": {
- "jsonparse": "1.3.1",
- "through": "2.3.8"
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
},
"dependencies": {
"jsonparse": {
@@ -3810,11 +3810,11 @@
"version": "1.1.2",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "cmd-shim": "2.0.2",
- "gentle-fs": "2.0.1",
- "graceful-fs": "4.1.11",
- "write-file-atomic": "2.3.0"
+ "bluebird": "^3.5.0",
+ "cmd-shim": "^2.0.2",
+ "gentle-fs": "^2.0.0",
+ "graceful-fs": "^4.1.11",
+ "write-file-atomic": "^2.3.0"
}
},
"bluebird": {
@@ -3829,20 +3829,20 @@
"version": "11.0.1",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "chownr": "1.0.1",
- "figgy-pudding": "3.1.0",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "lru-cache": "4.1.2",
- "mississippi": "3.0.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "promise-inflight": "1.0.1",
- "rimraf": "2.6.2",
- "ssri": "6.0.0",
- "unique-filename": "1.1.0",
- "y18n": "4.0.0"
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "figgy-pudding": "^3.1.0",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.2",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^6.0.0",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
},
"dependencies": {
"y18n": {
@@ -3863,16 +3863,16 @@
"version": "3.1.2",
"bundled": true,
"requires": {
- "string-width": "2.1.1",
- "strip-ansi": "3.0.1"
+ "string-width": "^2.0.0",
+ "strip-ansi": "^3.0.1"
},
"dependencies": {
"string-width": {
"version": "2.1.1",
"bundled": true,
"requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
},
"dependencies": {
"is-fullwidth-code-point": {
@@ -3883,7 +3883,7 @@
"version": "4.0.0",
"bundled": true,
"requires": {
- "ansi-regex": "3.0.0"
+ "ansi-regex": "^3.0.0"
}
}
}
@@ -3892,7 +3892,7 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -3907,9 +3907,9 @@
"version": "0.2.0",
"bundled": true,
"requires": {
- "colors": "1.1.2",
- "lodash": "3.10.1",
- "string-width": "1.0.2"
+ "colors": "^1.1.2",
+ "lodash": "^3.10.1",
+ "string-width": "^1.0.1"
},
"dependencies": {
"colors": {
@@ -3925,9 +3925,9 @@
"version": "1.0.2",
"bundled": true,
"requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
},
"dependencies": {
"code-point-at": {
@@ -3938,7 +3938,7 @@
"version": "1.0.0",
"bundled": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
},
"dependencies": {
"number-is-nan": {
@@ -3951,7 +3951,7 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -3968,23 +3968,23 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11",
- "mkdirp": "0.5.1"
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "~0.5.0"
}
},
"columnify": {
"version": "1.5.4",
"bundled": true,
"requires": {
- "strip-ansi": "3.0.1",
- "wcwidth": "1.0.1"
+ "strip-ansi": "^3.0.0",
+ "wcwidth": "^1.0.0"
},
"dependencies": {
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -3997,14 +3997,14 @@
"version": "1.0.1",
"bundled": true,
"requires": {
- "defaults": "1.0.3"
+ "defaults": "^1.0.3"
},
"dependencies": {
"defaults": {
"version": "1.0.3",
"bundled": true,
"requires": {
- "clone": "1.0.2"
+ "clone": "^1.0.2"
},
"dependencies": {
"clone": {
@@ -4021,8 +4021,8 @@
"version": "1.1.11",
"bundled": true,
"requires": {
- "ini": "1.3.5",
- "proto-list": "1.2.4"
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
},
"dependencies": {
"proto-list": {
@@ -4047,8 +4047,8 @@
"version": "1.0.3",
"bundled": true,
"requires": {
- "asap": "2.0.5",
- "wrappy": "1.0.2"
+ "asap": "^2.0.0",
+ "wrappy": "1"
},
"dependencies": {
"asap": {
@@ -4073,19 +4073,19 @@
"version": "1.2.10",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11",
- "path-is-inside": "1.0.2",
- "rimraf": "2.6.2"
+ "graceful-fs": "^4.1.2",
+ "path-is-inside": "^1.0.1",
+ "rimraf": "^2.5.2"
}
},
"fs-write-stream-atomic": {
"version": "1.0.10",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11",
- "iferr": "0.1.5",
- "imurmurhash": "0.1.4",
- "readable-stream": "2.3.6"
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
},
"dependencies": {
"iferr": {
@@ -4098,14 +4098,14 @@
"version": "2.0.1",
"bundled": true,
"requires": {
- "aproba": "1.2.0",
- "fs-vacuum": "1.2.10",
- "graceful-fs": "4.1.11",
- "iferr": "0.1.5",
- "mkdirp": "0.5.1",
- "path-is-inside": "1.0.2",
- "read-cmd-shim": "1.0.1",
- "slide": "1.1.6"
+ "aproba": "^1.1.2",
+ "fs-vacuum": "^1.2.10",
+ "graceful-fs": "^4.1.11",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "path-is-inside": "^1.0.2",
+ "read-cmd-shim": "^1.0.1",
+ "slide": "^1.1.6"
},
"dependencies": {
"iferr": {
@@ -4118,12 +4118,12 @@
"version": "7.1.2",
"bundled": true,
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "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"
},
"dependencies": {
"fs.realpath": {
@@ -4134,14 +4134,14 @@
"version": "3.0.4",
"bundled": true,
"requires": {
- "brace-expansion": "1.1.8"
+ "brace-expansion": "^1.1.7"
},
"dependencies": {
"brace-expansion": {
"version": "1.1.8",
"bundled": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
},
"dependencies": {
@@ -4187,8 +4187,8 @@
"version": "1.0.6",
"bundled": true,
"requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
"inherits": {
@@ -4203,21 +4203,21 @@
"version": "1.10.3",
"bundled": true,
"requires": {
- "glob": "7.1.2",
- "npm-package-arg": "6.1.0",
- "promzard": "0.3.0",
- "read": "1.0.7",
- "read-package-json": "2.0.13",
- "semver": "5.5.0",
- "validate-npm-package-license": "3.0.3",
- "validate-npm-package-name": "3.0.0"
+ "glob": "^7.1.1",
+ "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
+ "promzard": "^0.3.0",
+ "read": "~1.0.1",
+ "read-package-json": "1 || 2",
+ "semver": "2.x || 3.x || 4 || 5",
+ "validate-npm-package-license": "^3.0.1",
+ "validate-npm-package-name": "^3.0.0"
},
"dependencies": {
"promzard": {
"version": "0.3.0",
"bundled": true,
"requires": {
- "read": "1.0.7"
+ "read": "1"
}
}
}
@@ -4226,14 +4226,14 @@
"version": "2.0.5",
"bundled": true,
"requires": {
- "cidr-regex": "2.0.8"
+ "cidr-regex": "^2.0.8"
},
"dependencies": {
"cidr-regex": {
"version": "2.0.8",
"bundled": true,
"requires": {
- "ip-regex": "2.1.0"
+ "ip-regex": "^2.1.0"
},
"dependencies": {
"ip-regex": {
@@ -4256,19 +4256,19 @@
"version": "1.6.2",
"bundled": true,
"requires": {
- "bin-links": "1.1.2",
- "bluebird": "3.5.1",
- "find-npm-prefix": "1.0.2",
- "graceful-fs": "4.1.11",
- "lock-verify": "2.0.2",
- "npm-lifecycle": "2.0.1",
- "npm-logical-tree": "1.2.1",
- "npm-package-arg": "6.1.0",
- "pacote": "7.6.1",
- "protoduck": "5.0.0",
- "read-package-json": "2.0.13",
- "rimraf": "2.6.2",
- "worker-farm": "1.6.0"
+ "bin-links": "^1.1.0",
+ "bluebird": "^3.5.1",
+ "find-npm-prefix": "^1.0.2",
+ "graceful-fs": "^4.1.11",
+ "lock-verify": "^2.0.0",
+ "npm-lifecycle": "^2.0.0",
+ "npm-logical-tree": "^1.2.1",
+ "npm-package-arg": "^6.0.0",
+ "pacote": "^7.5.1",
+ "protoduck": "^5.0.0",
+ "read-package-json": "^2.0.12",
+ "rimraf": "^2.6.2",
+ "worker-farm": "^1.5.4"
},
"dependencies": {
"npm-logical-tree": {
@@ -4279,75 +4279,75 @@
"version": "7.6.1",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "cacache": "10.0.4",
- "get-stream": "3.0.0",
- "glob": "7.1.2",
- "lru-cache": "4.1.2",
- "make-fetch-happen": "2.6.0",
- "minimatch": "3.0.4",
- "mississippi": "3.0.0",
- "mkdirp": "0.5.1",
- "normalize-package-data": "2.4.0",
- "npm-package-arg": "6.1.0",
- "npm-packlist": "1.1.10",
- "npm-pick-manifest": "2.1.0",
- "osenv": "0.1.5",
- "promise-inflight": "1.0.1",
- "promise-retry": "1.1.1",
- "protoduck": "5.0.0",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.2",
- "semver": "5.5.0",
- "ssri": "5.3.0",
- "tar": "4.4.2",
- "unique-filename": "1.1.0",
- "which": "1.3.0"
+ "bluebird": "^3.5.1",
+ "cacache": "^10.0.4",
+ "get-stream": "^3.0.0",
+ "glob": "^7.1.2",
+ "lru-cache": "^4.1.1",
+ "make-fetch-happen": "^2.6.0",
+ "minimatch": "^3.0.4",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "normalize-package-data": "^2.4.0",
+ "npm-package-arg": "^6.0.0",
+ "npm-packlist": "^1.1.10",
+ "npm-pick-manifest": "^2.1.0",
+ "osenv": "^0.1.5",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^1.1.1",
+ "protoduck": "^5.0.0",
+ "rimraf": "^2.6.2",
+ "safe-buffer": "^5.1.1",
+ "semver": "^5.5.0",
+ "ssri": "^5.2.4",
+ "tar": "^4.4.0",
+ "unique-filename": "^1.1.0",
+ "which": "^1.3.0"
},
"dependencies": {
"cacache": {
"version": "10.0.4",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "chownr": "1.0.1",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "lru-cache": "4.1.2",
- "mississippi": "2.0.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "promise-inflight": "1.0.1",
- "rimraf": "2.6.2",
- "ssri": "5.3.0",
- "unique-filename": "1.1.0",
- "y18n": "4.0.0"
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^5.2.4",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
},
"dependencies": {
"mississippi": {
"version": "2.0.0",
"bundled": true,
"requires": {
- "concat-stream": "1.6.2",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.3",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "2.0.1",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^2.0.1",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
},
"dependencies": {
"concat-stream": {
"version": "1.6.2",
"bundled": true,
"requires": {
- "buffer-from": "1.0.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
},
"dependencies": {
"buffer-from": {
@@ -4364,10 +4364,10 @@
"version": "3.5.4",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -4380,32 +4380,32 @@
"version": "1.4.1",
"bundled": true,
"requires": {
- "once": "1.4.0"
+ "once": "^1.4.0"
}
},
"flush-write-stream": {
"version": "1.0.3",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
}
},
"from2": {
"version": "2.3.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
"parallel-transform": {
"version": "1.1.0",
"bundled": true,
"requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
},
"dependencies": {
"cyclist": {
@@ -4418,25 +4418,25 @@
"version": "2.0.1",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
"pumpify": {
"version": "1.4.0",
"bundled": true,
"requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
+ "duplexify": "^3.5.3",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
}
},
"stream-each": {
"version": "1.2.2",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -4449,8 +4449,8 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
},
"dependencies": {
"xtend": {
@@ -4475,31 +4475,31 @@
"version": "2.6.0",
"bundled": true,
"requires": {
- "agentkeepalive": "3.4.1",
- "cacache": "10.0.4",
- "http-cache-semantics": "3.8.1",
- "http-proxy-agent": "2.1.0",
- "https-proxy-agent": "2.2.1",
- "lru-cache": "4.1.2",
- "mississippi": "1.3.1",
- "node-fetch-npm": "2.0.2",
- "promise-retry": "1.1.1",
- "socks-proxy-agent": "3.0.1",
- "ssri": "5.3.0"
+ "agentkeepalive": "^3.3.0",
+ "cacache": "^10.0.0",
+ "http-cache-semantics": "^3.8.0",
+ "http-proxy-agent": "^2.0.0",
+ "https-proxy-agent": "^2.1.0",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^1.2.0",
+ "node-fetch-npm": "^2.0.2",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^3.0.1",
+ "ssri": "^5.0.0"
},
"dependencies": {
"agentkeepalive": {
"version": "3.4.1",
"bundled": true,
"requires": {
- "humanize-ms": "1.2.1"
+ "humanize-ms": "^1.2.1"
},
"dependencies": {
"humanize-ms": {
"version": "1.2.1",
"bundled": true,
"requires": {
- "ms": "2.1.1"
+ "ms": "^2.0.0"
},
"dependencies": {
"ms": {
@@ -4518,7 +4518,7 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
+ "agent-base": "4",
"debug": "3.1.0"
},
"dependencies": {
@@ -4526,14 +4526,14 @@
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -4563,22 +4563,22 @@
"version": "2.2.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
+ "agent-base": "^4.1.0",
+ "debug": "^3.1.0"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -4608,26 +4608,26 @@
"version": "1.3.1",
"bundled": true,
"requires": {
- "concat-stream": "1.6.2",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.3",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "1.0.3",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^1.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
},
"dependencies": {
"concat-stream": {
"version": "1.6.2",
"bundled": true,
"requires": {
- "buffer-from": "1.0.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
},
"dependencies": {
"buffer-from": {
@@ -4644,10 +4644,10 @@
"version": "3.5.4",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -4660,32 +4660,32 @@
"version": "1.4.1",
"bundled": true,
"requires": {
- "once": "1.4.0"
+ "once": "^1.4.0"
}
},
"flush-write-stream": {
"version": "1.0.3",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
}
},
"from2": {
"version": "2.3.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
"parallel-transform": {
"version": "1.1.0",
"bundled": true,
"requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
},
"dependencies": {
"cyclist": {
@@ -4698,25 +4698,25 @@
"version": "1.0.3",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
"pumpify": {
"version": "1.4.0",
"bundled": true,
"requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
+ "duplexify": "^3.5.3",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
},
"dependencies": {
"pump": {
"version": "2.0.1",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
}
}
@@ -4725,8 +4725,8 @@
"version": "1.2.2",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -4739,8 +4739,8 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
},
"dependencies": {
"xtend": {
@@ -4755,23 +4755,23 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "encoding": "0.1.12",
- "json-parse-better-errors": "1.0.2",
- "safe-buffer": "5.1.2"
+ "encoding": "^0.1.11",
+ "json-parse-better-errors": "^1.0.0",
+ "safe-buffer": "^5.1.1"
},
"dependencies": {
"encoding": {
"version": "0.1.12",
"bundled": true,
"requires": {
- "iconv-lite": "0.4.21"
+ "iconv-lite": "~0.4.13"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.21",
"bundled": true,
"requires": {
- "safer-buffer": "2.1.2"
+ "safer-buffer": "^2.1.0"
},
"dependencies": {
"safer-buffer": {
@@ -4788,22 +4788,22 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "socks": "1.1.10"
+ "agent-base": "^4.1.0",
+ "socks": "^1.1.10"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -4818,8 +4818,8 @@
"version": "1.1.10",
"bundled": true,
"requires": {
- "ip": "1.1.5",
- "smart-buffer": "1.1.15"
+ "ip": "^1.1.4",
+ "smart-buffer": "^1.0.13"
},
"dependencies": {
"ip": {
@@ -4840,14 +4840,14 @@
"version": "3.0.4",
"bundled": true,
"requires": {
- "brace-expansion": "1.1.11"
+ "brace-expansion": "^1.1.7"
},
"dependencies": {
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
},
"dependencies": {
@@ -4867,8 +4867,8 @@
"version": "1.1.1",
"bundled": true,
"requires": {
- "err-code": "1.1.2",
- "retry": "0.10.1"
+ "err-code": "^1.0.0",
+ "retry": "^0.10.0"
},
"dependencies": {
"err-code": {
@@ -4885,7 +4885,7 @@
"version": "5.3.0",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "^5.1.1"
}
}
}
@@ -4894,7 +4894,7 @@
"version": "5.0.0",
"bundled": true,
"requires": {
- "genfun": "4.0.1"
+ "genfun": "^4.0.1"
},
"dependencies": {
"genfun": {
@@ -4909,50 +4909,50 @@
"version": "4.0.1",
"bundled": true,
"requires": {
- "figgy-pudding": "3.1.0",
- "npm-registry-fetch": "3.1.1"
+ "figgy-pudding": "^3.1.0",
+ "npm-registry-fetch": "^3.0.0"
},
"dependencies": {
"npm-registry-fetch": {
"version": "3.1.1",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "figgy-pudding": "3.1.0",
- "lru-cache": "4.1.2",
- "make-fetch-happen": "4.0.1",
- "npm-package-arg": "6.1.0"
+ "bluebird": "^3.5.1",
+ "figgy-pudding": "^3.1.0",
+ "lru-cache": "^4.1.2",
+ "make-fetch-happen": "^4.0.0",
+ "npm-package-arg": "^6.0.0"
},
"dependencies": {
"make-fetch-happen": {
"version": "4.0.1",
"bundled": true,
"requires": {
- "agentkeepalive": "3.4.1",
- "cacache": "11.0.1",
- "http-cache-semantics": "3.8.1",
- "http-proxy-agent": "2.1.0",
- "https-proxy-agent": "2.2.1",
- "lru-cache": "4.1.2",
- "mississippi": "3.0.0",
- "node-fetch-npm": "2.0.2",
- "promise-retry": "1.1.1",
- "socks-proxy-agent": "4.0.0",
- "ssri": "6.0.0"
+ "agentkeepalive": "^3.4.1",
+ "cacache": "^11.0.1",
+ "http-cache-semantics": "^3.8.1",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^2.2.1",
+ "lru-cache": "^4.1.2",
+ "mississippi": "^3.0.0",
+ "node-fetch-npm": "^2.0.2",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^4.0.0",
+ "ssri": "^6.0.0"
},
"dependencies": {
"agentkeepalive": {
"version": "3.4.1",
"bundled": true,
"requires": {
- "humanize-ms": "1.2.1"
+ "humanize-ms": "^1.2.1"
},
"dependencies": {
"humanize-ms": {
"version": "1.2.1",
"bundled": true,
"requires": {
- "ms": "2.1.1"
+ "ms": "^2.0.0"
},
"dependencies": {
"ms": {
@@ -4971,7 +4971,7 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
+ "agent-base": "4",
"debug": "3.1.0"
},
"dependencies": {
@@ -4979,14 +4979,14 @@
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -5016,22 +5016,22 @@
"version": "2.2.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
+ "agent-base": "^4.1.0",
+ "debug": "^3.1.0"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -5061,23 +5061,23 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "encoding": "0.1.12",
- "json-parse-better-errors": "1.0.2",
- "safe-buffer": "5.1.2"
+ "encoding": "^0.1.11",
+ "json-parse-better-errors": "^1.0.0",
+ "safe-buffer": "^5.1.1"
},
"dependencies": {
"encoding": {
"version": "0.1.12",
"bundled": true,
"requires": {
- "iconv-lite": "0.4.21"
+ "iconv-lite": "~0.4.13"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.21",
"bundled": true,
"requires": {
- "safer-buffer": "2.1.2"
+ "safer-buffer": "^2.1.0"
},
"dependencies": {
"safer-buffer": {
@@ -5094,8 +5094,8 @@
"version": "1.1.1",
"bundled": true,
"requires": {
- "err-code": "1.1.2",
- "retry": "0.10.1"
+ "err-code": "^1.0.0",
+ "retry": "^0.10.0"
},
"dependencies": {
"err-code": {
@@ -5112,22 +5112,22 @@
"version": "4.0.0",
"bundled": true,
"requires": {
- "agent-base": "4.1.2",
- "socks": "2.1.6"
+ "agent-base": "~4.1.0",
+ "socks": "~2.1.6"
},
"dependencies": {
"agent-base": {
"version": "4.1.2",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -5142,8 +5142,8 @@
"version": "2.1.6",
"bundled": true,
"requires": {
- "ip": "1.1.5",
- "smart-buffer": "4.0.1"
+ "ip": "^1.1.5",
+ "smart-buffer": "^4.0.1"
},
"dependencies": {
"ip": {
@@ -5168,14 +5168,14 @@
"version": "10.2.0",
"bundled": true,
"requires": {
- "dotenv": "5.0.1",
- "npm-package-arg": "6.1.0",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.2",
- "update-notifier": "2.5.0",
- "which": "1.3.0",
- "y18n": "4.0.0",
- "yargs": "11.0.0"
+ "dotenv": "^5.0.1",
+ "npm-package-arg": "^6.0.0",
+ "rimraf": "^2.6.2",
+ "safe-buffer": "^5.1.0",
+ "update-notifier": "^2.3.0",
+ "which": "^1.3.0",
+ "y18n": "^4.0.0",
+ "yargs": "^11.0.0"
},
"dependencies": {
"dotenv": {
@@ -5190,44 +5190,44 @@
"version": "11.0.0",
"bundled": true,
"requires": {
- "cliui": "4.0.0",
- "decamelize": "1.2.0",
- "find-up": "2.1.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "9.0.2"
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
},
"dependencies": {
"cliui": {
"version": "4.0.0",
"bundled": true,
"requires": {
- "string-width": "2.1.1",
- "strip-ansi": "4.0.0",
- "wrap-ansi": "2.1.0"
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
},
"dependencies": {
"wrap-ansi": {
"version": "2.1.0",
"bundled": true,
"requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
},
"dependencies": {
"string-width": {
"version": "1.0.2",
"bundled": true,
"requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
},
"dependencies": {
"code-point-at": {
@@ -5238,7 +5238,7 @@
"version": "1.0.0",
"bundled": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
},
"dependencies": {
"number-is-nan": {
@@ -5253,7 +5253,7 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -5274,29 +5274,29 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "locate-path": "2.0.0"
+ "locate-path": "^2.0.0"
},
"dependencies": {
"locate-path": {
"version": "2.0.0",
"bundled": true,
"requires": {
- "p-locate": "2.0.0",
- "path-exists": "3.0.0"
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
},
"dependencies": {
"p-locate": {
"version": "2.0.0",
"bundled": true,
"requires": {
- "p-limit": "1.2.0"
+ "p-limit": "^1.1.0"
},
"dependencies": {
"p-limit": {
"version": "1.2.0",
"bundled": true,
"requires": {
- "p-try": "1.0.0"
+ "p-try": "^1.0.0"
},
"dependencies": {
"p-try": {
@@ -5323,38 +5323,38 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "execa": "0.7.0",
- "lcid": "1.0.0",
- "mem": "1.1.0"
+ "execa": "^0.7.0",
+ "lcid": "^1.0.0",
+ "mem": "^1.1.0"
},
"dependencies": {
"execa": {
"version": "0.7.0",
"bundled": true,
"requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
},
"dependencies": {
"cross-spawn": {
"version": "5.1.0",
"bundled": true,
"requires": {
- "lru-cache": "4.1.2",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
},
"dependencies": {
"shebang-command": {
"version": "1.2.0",
"bundled": true,
"requires": {
- "shebang-regex": "1.0.0"
+ "shebang-regex": "^1.0.0"
},
"dependencies": {
"shebang-regex": {
@@ -5377,7 +5377,7 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "path-key": "2.0.1"
+ "path-key": "^2.0.0"
},
"dependencies": {
"path-key": {
@@ -5404,7 +5404,7 @@
"version": "1.0.0",
"bundled": true,
"requires": {
- "invert-kv": "1.0.0"
+ "invert-kv": "^1.0.0"
},
"dependencies": {
"invert-kv": {
@@ -5417,7 +5417,7 @@
"version": "1.1.0",
"bundled": true,
"requires": {
- "mimic-fn": "1.2.0"
+ "mimic-fn": "^1.0.0"
},
"dependencies": {
"mimic-fn": {
@@ -5444,8 +5444,8 @@
"version": "2.1.1",
"bundled": true,
"requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
},
"dependencies": {
"is-fullwidth-code-point": {
@@ -5466,7 +5466,7 @@
"version": "9.0.2",
"bundled": true,
"requires": {
- "camelcase": "4.1.0"
+ "camelcase": "^4.1.0"
},
"dependencies": {
"camelcase": {
@@ -5483,15 +5483,15 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "npm-package-arg": "6.1.0",
- "semver": "5.5.0"
+ "npm-package-arg": "^5.1.2 || 6",
+ "semver": "^5.4.1"
}
},
"lockfile": {
"version": "1.0.4",
"bundled": true,
"requires": {
- "signal-exit": "3.0.2"
+ "signal-exit": "^3.0.2"
},
"dependencies": {
"signal-exit": {
@@ -5508,8 +5508,8 @@
"version": "4.6.0",
"bundled": true,
"requires": {
- "lodash._createset": "4.0.3",
- "lodash._root": "3.0.1"
+ "lodash._createset": "~4.0.0",
+ "lodash._root": "~3.0.0"
},
"dependencies": {
"lodash._createset": {
@@ -5534,7 +5534,7 @@
"version": "3.1.2",
"bundled": true,
"requires": {
- "lodash._getnative": "3.9.1"
+ "lodash._getnative": "^3.0.0"
}
},
"lodash._getnative": {
@@ -5565,8 +5565,8 @@
"version": "4.1.2",
"bundled": true,
"requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
},
"dependencies": {
"pseudomap": {
@@ -5587,25 +5587,25 @@
"version": "3.0.0",
"bundled": true,
"requires": {
- "concat-stream": "1.6.1",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.2",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "3.0.0",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
},
"dependencies": {
"concat-stream": {
"version": "1.6.1",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
},
"dependencies": {
"typedarray": {
@@ -5618,10 +5618,10 @@
"version": "3.5.4",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -5634,32 +5634,32 @@
"version": "1.4.1",
"bundled": true,
"requires": {
- "once": "1.4.0"
+ "once": "^1.4.0"
}
},
"flush-write-stream": {
"version": "1.0.2",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
}
},
"from2": {
"version": "2.3.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
"parallel-transform": {
"version": "1.1.0",
"bundled": true,
"requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
},
"dependencies": {
"cyclist": {
@@ -5672,25 +5672,25 @@
"version": "3.0.0",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
"pumpify": {
"version": "1.4.0",
"bundled": true,
"requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
+ "duplexify": "^3.5.3",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
},
"dependencies": {
"pump": {
"version": "2.0.1",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
}
}
@@ -5699,8 +5699,8 @@
"version": "1.2.2",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -5713,8 +5713,8 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
},
"dependencies": {
"xtend": {
@@ -5742,24 +5742,24 @@
"version": "1.0.1",
"bundled": true,
"requires": {
- "aproba": "1.2.0",
- "copy-concurrently": "1.0.5",
- "fs-write-stream-atomic": "1.0.10",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2",
- "run-queue": "1.0.3"
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
},
"dependencies": {
"copy-concurrently": {
"version": "1.0.5",
"bundled": true,
"requires": {
- "aproba": "1.2.0",
- "fs-write-stream-atomic": "1.0.10",
- "iferr": "0.1.5",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2",
- "run-queue": "1.0.3"
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
},
"dependencies": {
"iferr": {
@@ -5772,7 +5772,7 @@
"version": "1.0.3",
"bundled": true,
"requires": {
- "aproba": "1.2.0"
+ "aproba": "^1.1.1"
}
}
}
@@ -5781,43 +5781,43 @@
"version": "3.6.2",
"bundled": true,
"requires": {
- "fstream": "1.0.11",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "npmlog": "4.1.2",
- "osenv": "0.1.5",
- "request": "2.85.0",
- "rimraf": "2.6.2",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "which": "1.3.0"
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "minimatch": "^3.0.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "2",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
},
"dependencies": {
"fstream": {
"version": "1.0.11",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2"
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
- "brace-expansion": "1.1.11"
+ "brace-expansion": "^1.1.7"
},
"dependencies": {
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
},
"dependencies": {
@@ -5837,7 +5837,7 @@
"version": "3.0.6",
"bundled": true,
"requires": {
- "abbrev": "1.1.1"
+ "abbrev": "1"
}
},
"semver": {
@@ -5848,16 +5848,16 @@
"version": "2.2.1",
"bundled": true,
"requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
+ "block-stream": "*",
+ "fstream": "^1.0.2",
+ "inherits": "2"
},
"dependencies": {
"block-stream": {
"version": "0.0.9",
"bundled": true,
"requires": {
- "inherits": "2.0.3"
+ "inherits": "~2.0.0"
}
}
}
@@ -5868,25 +5868,25 @@
"version": "4.0.1",
"bundled": true,
"requires": {
- "abbrev": "1.1.1",
- "osenv": "0.1.5"
+ "abbrev": "1",
+ "osenv": "^0.1.4"
}
},
"normalize-package-data": {
"version": "2.4.0",
"bundled": true,
"requires": {
- "hosted-git-info": "2.6.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.5.0",
- "validate-npm-package-license": "3.0.3"
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
},
"dependencies": {
"is-builtin-module": {
"version": "1.0.0",
"bundled": true,
"requires": {
- "builtin-modules": "1.1.1"
+ "builtin-modules": "^1.0.0"
},
"dependencies": {
"builtin-modules": {
@@ -5901,8 +5901,8 @@
"version": "1.0.8",
"bundled": true,
"requires": {
- "cli-table2": "0.2.0",
- "console-control-strings": "1.1.0"
+ "cli-table2": "^0.2.0",
+ "console-control-strings": "^1.1.0"
},
"dependencies": {
"console-control-strings": {
@@ -5919,21 +5919,21 @@
"version": "3.0.0",
"bundled": true,
"requires": {
- "semver": "5.5.0"
+ "semver": "^2.3.0 || 3.x || 4 || 5"
}
},
"npm-lifecycle": {
"version": "2.0.1",
"bundled": true,
"requires": {
- "byline": "5.0.0",
- "graceful-fs": "4.1.11",
- "node-gyp": "3.6.2",
- "resolve-from": "4.0.0",
- "slide": "1.1.6",
+ "byline": "^5.0.0",
+ "graceful-fs": "^4.1.11",
+ "node-gyp": "^3.6.2",
+ "resolve-from": "^4.0.0",
+ "slide": "^1.1.6",
"uid-number": "0.0.6",
- "umask": "1.1.0",
- "which": "1.3.0"
+ "umask": "^1.1.0",
+ "which": "^1.3.0"
},
"dependencies": {
"byline": {
@@ -5950,39 +5950,39 @@
"version": "6.1.0",
"bundled": true,
"requires": {
- "hosted-git-info": "2.6.0",
- "osenv": "0.1.5",
- "semver": "5.5.0",
- "validate-npm-package-name": "3.0.0"
+ "hosted-git-info": "^2.6.0",
+ "osenv": "^0.1.5",
+ "semver": "^5.5.0",
+ "validate-npm-package-name": "^3.0.0"
}
},
"npm-packlist": {
"version": "1.1.10",
"bundled": true,
"requires": {
- "ignore-walk": "3.0.1",
- "npm-bundled": "1.0.3"
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
},
"dependencies": {
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
"requires": {
- "minimatch": "3.0.4"
+ "minimatch": "^3.0.4"
},
"dependencies": {
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
- "brace-expansion": "1.1.8"
+ "brace-expansion": "^1.1.7"
},
"dependencies": {
"brace-expansion": {
"version": "1.1.8",
"bundled": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
},
"dependencies": {
@@ -6010,47 +6010,47 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "npm-package-arg": "6.1.0",
- "semver": "5.5.0"
+ "npm-package-arg": "^6.0.0",
+ "semver": "^5.4.1"
}
},
"npm-profile": {
"version": "3.0.1",
"bundled": true,
"requires": {
- "aproba": "1.2.0",
- "make-fetch-happen": "2.6.0"
+ "aproba": "^1.1.2",
+ "make-fetch-happen": "^2.5.0"
},
"dependencies": {
"make-fetch-happen": {
"version": "2.6.0",
"bundled": true,
"requires": {
- "agentkeepalive": "3.3.0",
- "cacache": "10.0.4",
- "http-cache-semantics": "3.8.1",
- "http-proxy-agent": "2.0.0",
- "https-proxy-agent": "2.1.1",
- "lru-cache": "4.1.2",
- "mississippi": "1.3.1",
- "node-fetch-npm": "2.0.2",
- "promise-retry": "1.1.1",
- "socks-proxy-agent": "3.0.1",
- "ssri": "5.3.0"
+ "agentkeepalive": "^3.3.0",
+ "cacache": "^10.0.0",
+ "http-cache-semantics": "^3.8.0",
+ "http-proxy-agent": "^2.0.0",
+ "https-proxy-agent": "^2.1.0",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^1.2.0",
+ "node-fetch-npm": "^2.0.2",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^3.0.1",
+ "ssri": "^5.0.0"
},
"dependencies": {
"agentkeepalive": {
"version": "3.3.0",
"bundled": true,
"requires": {
- "humanize-ms": "1.2.1"
+ "humanize-ms": "^1.2.1"
},
"dependencies": {
"humanize-ms": {
"version": "1.2.1",
"bundled": true,
"requires": {
- "ms": "2.1.1"
+ "ms": "^2.0.0"
},
"dependencies": {
"ms": {
@@ -6065,45 +6065,45 @@
"version": "10.0.4",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "chownr": "1.0.1",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "lru-cache": "4.1.2",
- "mississippi": "2.0.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "promise-inflight": "1.0.1",
- "rimraf": "2.6.2",
- "ssri": "5.3.0",
- "unique-filename": "1.1.0",
- "y18n": "4.0.0"
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^5.2.4",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
},
"dependencies": {
"mississippi": {
"version": "2.0.0",
"bundled": true,
"requires": {
- "concat-stream": "1.6.2",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.3",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "2.0.1",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^2.0.1",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
},
"dependencies": {
"concat-stream": {
"version": "1.6.2",
"bundled": true,
"requires": {
- "buffer-from": "1.0.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
},
"dependencies": {
"buffer-from": {
@@ -6120,10 +6120,10 @@
"version": "3.5.4",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -6136,32 +6136,32 @@
"version": "1.4.1",
"bundled": true,
"requires": {
- "once": "1.4.0"
+ "once": "^1.4.0"
}
},
"flush-write-stream": {
"version": "1.0.3",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
}
},
"from2": {
"version": "2.3.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
"parallel-transform": {
"version": "1.1.0",
"bundled": true,
"requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
},
"dependencies": {
"cyclist": {
@@ -6174,25 +6174,25 @@
"version": "2.0.1",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
"pumpify": {
"version": "1.4.0",
"bundled": true,
"requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
+ "duplexify": "^3.5.3",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
}
},
"stream-each": {
"version": "1.2.2",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -6205,8 +6205,8 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
},
"dependencies": {
"xtend": {
@@ -6231,22 +6231,22 @@
"version": "2.0.0",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "debug": "2.6.9"
+ "agent-base": "4",
+ "debug": "2"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -6276,22 +6276,22 @@
"version": "2.1.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
+ "agent-base": "^4.1.0",
+ "debug": "^3.1.0"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -6321,25 +6321,25 @@
"version": "1.3.1",
"bundled": true,
"requires": {
- "concat-stream": "1.6.0",
- "duplexify": "3.5.3",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.2",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "1.0.3",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^1.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
},
"dependencies": {
"concat-stream": {
"version": "1.6.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
},
"dependencies": {
"typedarray": {
@@ -6352,10 +6352,10 @@
"version": "3.5.3",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -6368,32 +6368,32 @@
"version": "1.4.1",
"bundled": true,
"requires": {
- "once": "1.4.0"
+ "once": "^1.4.0"
}
},
"flush-write-stream": {
"version": "1.0.2",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
}
},
"from2": {
"version": "2.3.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
"parallel-transform": {
"version": "1.1.0",
"bundled": true,
"requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
},
"dependencies": {
"cyclist": {
@@ -6406,25 +6406,25 @@
"version": "1.0.3",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
"pumpify": {
"version": "1.4.0",
"bundled": true,
"requires": {
- "duplexify": "3.5.3",
- "inherits": "2.0.3",
- "pump": "2.0.1"
+ "duplexify": "^3.5.3",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
},
"dependencies": {
"pump": {
"version": "2.0.1",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
}
}
@@ -6433,8 +6433,8 @@
"version": "1.2.2",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -6447,8 +6447,8 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
},
"dependencies": {
"xtend": {
@@ -6463,16 +6463,16 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "encoding": "0.1.12",
- "json-parse-better-errors": "1.0.1",
- "safe-buffer": "5.1.2"
+ "encoding": "^0.1.11",
+ "json-parse-better-errors": "^1.0.0",
+ "safe-buffer": "^5.1.1"
},
"dependencies": {
"encoding": {
"version": "0.1.12",
"bundled": true,
"requires": {
- "iconv-lite": "0.4.19"
+ "iconv-lite": "~0.4.13"
},
"dependencies": {
"iconv-lite": {
@@ -6491,8 +6491,8 @@
"version": "1.1.1",
"bundled": true,
"requires": {
- "err-code": "1.1.2",
- "retry": "0.10.1"
+ "err-code": "^1.0.0",
+ "retry": "^0.10.0"
},
"dependencies": {
"err-code": {
@@ -6509,22 +6509,22 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "socks": "1.1.10"
+ "agent-base": "^4.1.0",
+ "socks": "^1.1.10"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -6539,8 +6539,8 @@
"version": "1.1.10",
"bundled": true,
"requires": {
- "ip": "1.1.5",
- "smart-buffer": "1.1.15"
+ "ip": "^1.1.4",
+ "smart-buffer": "^1.0.13"
},
"dependencies": {
"ip": {
@@ -6559,7 +6559,7 @@
"version": "5.3.0",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "^5.1.1"
}
}
}
@@ -6570,27 +6570,27 @@
"version": "8.5.1",
"bundled": true,
"requires": {
- "concat-stream": "1.6.1",
- "graceful-fs": "4.1.11",
- "normalize-package-data": "2.4.0",
- "npm-package-arg": "6.1.0",
- "npmlog": "4.1.2",
- "once": "1.4.0",
- "request": "2.85.0",
- "retry": "0.10.1",
- "safe-buffer": "5.1.2",
- "semver": "5.5.0",
- "slide": "1.1.6",
- "ssri": "5.3.0"
+ "concat-stream": "^1.5.2",
+ "graceful-fs": "^4.1.6",
+ "normalize-package-data": "~1.0.1 || ^2.0.0",
+ "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
+ "npmlog": "2 || ^3.1.0 || ^4.0.0",
+ "once": "^1.3.3",
+ "request": "^2.74.0",
+ "retry": "^0.10.0",
+ "safe-buffer": "^5.1.1",
+ "semver": "2 >=2.2.1 || 3.x || 4 || 5",
+ "slide": "^1.1.3",
+ "ssri": "^5.2.4"
},
"dependencies": {
"concat-stream": {
"version": "1.6.1",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
},
"dependencies": {
"typedarray": {
@@ -6607,7 +6607,7 @@
"version": "5.3.0",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "^5.1.1"
}
}
}
@@ -6616,12 +6616,12 @@
"version": "1.1.0",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "figgy-pudding": "2.0.1",
- "lru-cache": "4.1.2",
- "make-fetch-happen": "3.0.0",
- "npm-package-arg": "6.1.0",
- "safe-buffer": "5.1.2"
+ "bluebird": "^3.5.1",
+ "figgy-pudding": "^2.0.1",
+ "lru-cache": "^4.1.2",
+ "make-fetch-happen": "^3.0.0",
+ "npm-package-arg": "^6.0.0",
+ "safe-buffer": "^5.1.1"
},
"dependencies": {
"figgy-pudding": {
@@ -6632,31 +6632,31 @@
"version": "3.0.0",
"bundled": true,
"requires": {
- "agentkeepalive": "3.4.1",
- "cacache": "10.0.4",
- "http-cache-semantics": "3.8.1",
- "http-proxy-agent": "2.1.0",
- "https-proxy-agent": "2.2.1",
- "lru-cache": "4.1.2",
- "mississippi": "3.0.0",
- "node-fetch-npm": "2.0.2",
- "promise-retry": "1.1.1",
- "socks-proxy-agent": "3.0.1",
- "ssri": "5.3.0"
+ "agentkeepalive": "^3.4.1",
+ "cacache": "^10.0.4",
+ "http-cache-semantics": "^3.8.1",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^2.2.0",
+ "lru-cache": "^4.1.2",
+ "mississippi": "^3.0.0",
+ "node-fetch-npm": "^2.0.2",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^3.0.1",
+ "ssri": "^5.2.4"
},
"dependencies": {
"agentkeepalive": {
"version": "3.4.1",
"bundled": true,
"requires": {
- "humanize-ms": "1.2.1"
+ "humanize-ms": "^1.2.1"
},
"dependencies": {
"humanize-ms": {
"version": "1.2.1",
"bundled": true,
"requires": {
- "ms": "2.1.1"
+ "ms": "^2.0.0"
},
"dependencies": {
"ms": {
@@ -6671,45 +6671,45 @@
"version": "10.0.4",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "chownr": "1.0.1",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "lru-cache": "4.1.2",
- "mississippi": "2.0.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "promise-inflight": "1.0.1",
- "rimraf": "2.6.2",
- "ssri": "5.3.0",
- "unique-filename": "1.1.0",
- "y18n": "4.0.0"
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^5.2.4",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
},
"dependencies": {
"mississippi": {
"version": "2.0.0",
"bundled": true,
"requires": {
- "concat-stream": "1.6.2",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.3",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "2.0.1",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^2.0.1",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
},
"dependencies": {
"concat-stream": {
"version": "1.6.2",
"bundled": true,
"requires": {
- "buffer-from": "1.0.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
},
"dependencies": {
"buffer-from": {
@@ -6726,10 +6726,10 @@
"version": "3.5.4",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -6742,32 +6742,32 @@
"version": "1.4.1",
"bundled": true,
"requires": {
- "once": "1.4.0"
+ "once": "^1.4.0"
}
},
"flush-write-stream": {
"version": "1.0.3",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
}
},
"from2": {
"version": "2.3.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
}
},
"parallel-transform": {
"version": "1.1.0",
"bundled": true,
"requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6"
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
},
"dependencies": {
"cyclist": {
@@ -6780,25 +6780,25 @@
"version": "2.0.1",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
"pumpify": {
"version": "1.4.0",
"bundled": true,
"requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
+ "duplexify": "^3.5.3",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
}
},
"stream-each": {
"version": "1.2.2",
"bundled": true,
"requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -6811,8 +6811,8 @@
"version": "2.0.3",
"bundled": true,
"requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
},
"dependencies": {
"xtend": {
@@ -6837,7 +6837,7 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
+ "agent-base": "4",
"debug": "3.1.0"
},
"dependencies": {
@@ -6845,14 +6845,14 @@
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -6882,22 +6882,22 @@
"version": "2.2.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
+ "agent-base": "^4.1.0",
+ "debug": "^3.1.0"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -6927,23 +6927,23 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "encoding": "0.1.12",
- "json-parse-better-errors": "1.0.2",
- "safe-buffer": "5.1.2"
+ "encoding": "^0.1.11",
+ "json-parse-better-errors": "^1.0.0",
+ "safe-buffer": "^5.1.1"
},
"dependencies": {
"encoding": {
"version": "0.1.12",
"bundled": true,
"requires": {
- "iconv-lite": "0.4.21"
+ "iconv-lite": "~0.4.13"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.21",
"bundled": true,
"requires": {
- "safer-buffer": "2.1.2"
+ "safer-buffer": "^2.1.0"
},
"dependencies": {
"safer-buffer": {
@@ -6960,8 +6960,8 @@
"version": "1.1.1",
"bundled": true,
"requires": {
- "err-code": "1.1.2",
- "retry": "0.10.1"
+ "err-code": "^1.0.0",
+ "retry": "^0.10.0"
},
"dependencies": {
"err-code": {
@@ -6978,22 +6978,22 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "socks": "1.1.10"
+ "agent-base": "^4.1.0",
+ "socks": "^1.1.10"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -7008,8 +7008,8 @@
"version": "1.1.10",
"bundled": true,
"requires": {
- "ip": "1.1.5",
- "smart-buffer": "1.1.15"
+ "ip": "^1.1.4",
+ "smart-buffer": "^1.0.13"
},
"dependencies": {
"ip": {
@@ -7028,7 +7028,7 @@
"version": "5.3.0",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "^5.1.1"
}
}
}
@@ -7043,18 +7043,18 @@
"version": "4.1.2",
"bundled": true,
"requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
},
"dependencies": {
"are-we-there-yet": {
"version": "1.1.4",
"bundled": true,
"requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.3.6"
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
},
"dependencies": {
"delegates": {
@@ -7071,14 +7071,14 @@
"version": "2.7.4",
"bundled": true,
"requires": {
- "aproba": "1.2.0",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
},
"dependencies": {
"object-assign": {
@@ -7093,9 +7093,9 @@
"version": "1.0.2",
"bundled": true,
"requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
},
"dependencies": {
"code-point-at": {
@@ -7106,7 +7106,7 @@
"version": "1.0.0",
"bundled": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
},
"dependencies": {
"number-is-nan": {
@@ -7121,7 +7121,7 @@
"version": "3.0.1",
"bundled": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -7134,7 +7134,7 @@
"version": "1.1.2",
"bundled": true,
"requires": {
- "string-width": "1.0.2"
+ "string-width": "^1.0.2"
}
}
}
@@ -7149,7 +7149,7 @@
"version": "1.4.0",
"bundled": true,
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
},
"opener": {
@@ -7160,8 +7160,8 @@
"version": "0.1.5",
"bundled": true,
"requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
},
"dependencies": {
"os-homedir": {
@@ -7178,30 +7178,30 @@
"version": "8.1.1",
"bundled": true,
"requires": {
- "bluebird": "3.5.1",
- "cacache": "11.0.1",
- "get-stream": "3.0.0",
- "glob": "7.1.2",
- "lru-cache": "4.1.2",
- "make-fetch-happen": "4.0.1",
- "minimatch": "3.0.4",
- "mississippi": "3.0.0",
- "mkdirp": "0.5.1",
- "normalize-package-data": "2.4.0",
- "npm-package-arg": "6.1.0",
- "npm-packlist": "1.1.10",
- "npm-pick-manifest": "2.1.0",
- "osenv": "0.1.5",
- "promise-inflight": "1.0.1",
- "promise-retry": "1.1.1",
- "protoduck": "5.0.0",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.2",
- "semver": "5.5.0",
- "ssri": "6.0.0",
- "tar": "4.4.2",
- "unique-filename": "1.1.0",
- "which": "1.3.0"
+ "bluebird": "^3.5.1",
+ "cacache": "^11.0.1",
+ "get-stream": "^3.0.0",
+ "glob": "^7.1.2",
+ "lru-cache": "^4.1.2",
+ "make-fetch-happen": "^4.0.1",
+ "minimatch": "^3.0.4",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "normalize-package-data": "^2.4.0",
+ "npm-package-arg": "^6.1.0",
+ "npm-packlist": "^1.1.10",
+ "npm-pick-manifest": "^2.1.0",
+ "osenv": "^0.1.5",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^1.1.1",
+ "protoduck": "^5.0.0",
+ "rimraf": "^2.6.2",
+ "safe-buffer": "^5.1.1",
+ "semver": "^5.5.0",
+ "ssri": "^6.0.0",
+ "tar": "^4.4.1",
+ "unique-filename": "^1.1.0",
+ "which": "^1.3.0"
},
"dependencies": {
"get-stream": {
@@ -7212,31 +7212,31 @@
"version": "4.0.1",
"bundled": true,
"requires": {
- "agentkeepalive": "3.4.1",
- "cacache": "11.0.1",
- "http-cache-semantics": "3.8.1",
- "http-proxy-agent": "2.1.0",
- "https-proxy-agent": "2.2.1",
- "lru-cache": "4.1.2",
- "mississippi": "3.0.0",
- "node-fetch-npm": "2.0.2",
- "promise-retry": "1.1.1",
- "socks-proxy-agent": "4.0.1",
- "ssri": "6.0.0"
+ "agentkeepalive": "^3.4.1",
+ "cacache": "^11.0.1",
+ "http-cache-semantics": "^3.8.1",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^2.2.1",
+ "lru-cache": "^4.1.2",
+ "mississippi": "^3.0.0",
+ "node-fetch-npm": "^2.0.2",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^4.0.0",
+ "ssri": "^6.0.0"
},
"dependencies": {
"agentkeepalive": {
"version": "3.4.1",
"bundled": true,
"requires": {
- "humanize-ms": "1.2.1"
+ "humanize-ms": "^1.2.1"
},
"dependencies": {
"humanize-ms": {
"version": "1.2.1",
"bundled": true,
"requires": {
- "ms": "2.1.1"
+ "ms": "^2.0.0"
},
"dependencies": {
"ms": {
@@ -7255,7 +7255,7 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
+ "agent-base": "4",
"debug": "3.1.0"
},
"dependencies": {
@@ -7263,14 +7263,14 @@
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -7300,22 +7300,22 @@
"version": "2.2.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
+ "agent-base": "^4.1.0",
+ "debug": "^3.1.0"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -7345,23 +7345,23 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "encoding": "0.1.12",
- "json-parse-better-errors": "1.0.2",
- "safe-buffer": "5.1.2"
+ "encoding": "^0.1.11",
+ "json-parse-better-errors": "^1.0.0",
+ "safe-buffer": "^5.1.1"
},
"dependencies": {
"encoding": {
"version": "0.1.12",
"bundled": true,
"requires": {
- "iconv-lite": "0.4.21"
+ "iconv-lite": "~0.4.13"
},
"dependencies": {
"iconv-lite": {
"version": "0.4.21",
"bundled": true,
"requires": {
- "safer-buffer": "2.1.2"
+ "safer-buffer": "^2.1.0"
},
"dependencies": {
"safer-buffer": {
@@ -7378,22 +7378,22 @@
"version": "4.0.1",
"bundled": true,
"requires": {
- "agent-base": "4.2.0",
- "socks": "2.2.0"
+ "agent-base": "~4.2.0",
+ "socks": "~2.2.0"
},
"dependencies": {
"agent-base": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "es6-promisify": "5.0.0"
+ "es6-promisify": "^5.0.0"
},
"dependencies": {
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
- "es6-promise": "4.2.4"
+ "es6-promise": "^4.0.3"
},
"dependencies": {
"es6-promise": {
@@ -7408,8 +7408,8 @@
"version": "2.2.0",
"bundled": true,
"requires": {
- "ip": "1.1.5",
- "smart-buffer": "4.0.1"
+ "ip": "^1.1.5",
+ "smart-buffer": "^4.0.1"
},
"dependencies": {
"ip": {
@@ -7430,14 +7430,14 @@
"version": "3.0.4",
"bundled": true,
"requires": {
- "brace-expansion": "1.1.11"
+ "brace-expansion": "^1.1.7"
},
"dependencies": {
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
},
"dependencies": {
@@ -7457,8 +7457,8 @@
"version": "1.1.1",
"bundled": true,
"requires": {
- "err-code": "1.1.2",
- "retry": "0.10.1"
+ "err-code": "^1.0.0",
+ "retry": "^0.10.0"
},
"dependencies": {
"err-code": {
@@ -7475,7 +7475,7 @@
"version": "5.0.0",
"bundled": true,
"requires": {
- "genfun": "4.0.1"
+ "genfun": "^4.0.1"
},
"dependencies": {
"genfun": {
@@ -7502,8 +7502,8 @@
"version": "6.1.0",
"bundled": true,
"requires": {
- "decode-uri-component": "0.2.0",
- "strict-uri-encode": "2.0.0"
+ "decode-uri-component": "^0.2.0",
+ "strict-uri-encode": "^2.0.0"
},
"dependencies": {
"decode-uri-component": {
@@ -7524,7 +7524,7 @@
"version": "1.0.7",
"bundled": true,
"requires": {
- "mute-stream": "0.0.7"
+ "mute-stream": "~0.0.4"
},
"dependencies": {
"mute-stream": {
@@ -7537,20 +7537,20 @@
"version": "1.0.1",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11"
+ "graceful-fs": "^4.1.2"
}
},
"read-installed": {
"version": "4.0.3",
"bundled": true,
"requires": {
- "debuglog": "1.0.1",
- "graceful-fs": "4.1.11",
- "read-package-json": "2.0.13",
- "readdir-scoped-modules": "1.0.2",
- "semver": "5.5.0",
- "slide": "1.1.6",
- "util-extend": "1.0.3"
+ "debuglog": "^1.0.1",
+ "graceful-fs": "^4.1.2",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "slide": "~1.1.3",
+ "util-extend": "^1.0.1"
},
"dependencies": {
"util-extend": {
@@ -7563,11 +7563,11 @@
"version": "2.0.13",
"bundled": true,
"requires": {
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "json-parse-better-errors": "1.0.1",
- "normalize-package-data": "2.4.0",
- "slash": "1.0.0"
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.1.2",
+ "json-parse-better-errors": "^1.0.1",
+ "normalize-package-data": "^2.0.0",
+ "slash": "^1.0.0"
},
"dependencies": {
"json-parse-better-errors": {
@@ -7584,24 +7584,24 @@
"version": "5.2.1",
"bundled": true,
"requires": {
- "debuglog": "1.0.1",
- "dezalgo": "1.0.3",
- "once": "1.4.0",
- "read-package-json": "2.0.13",
- "readdir-scoped-modules": "1.0.2"
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "once": "^1.3.0",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0"
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.2",
- "string_decoder": "1.1.1",
- "util-deprecate": "1.0.2"
+ "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"
},
"dependencies": {
"core-util-is": {
@@ -7620,7 +7620,7 @@
"version": "1.1.1",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "~5.1.0"
}
},
"util-deprecate": {
@@ -7633,38 +7633,38 @@
"version": "1.0.2",
"bundled": true,
"requires": {
- "debuglog": "1.0.1",
- "dezalgo": "1.0.3",
- "graceful-fs": "4.1.11",
- "once": "1.4.0"
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "graceful-fs": "^4.1.2",
+ "once": "^1.3.0"
}
},
"request": {
"version": "2.85.0",
"bundled": true,
"requires": {
- "aws-sign2": "0.7.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.6",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.3.2",
- "har-validator": "5.0.3",
- "hawk": "6.0.2",
- "http-signature": "1.2.0",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.18",
- "oauth-sign": "0.8.2",
- "performance-now": "2.1.0",
- "qs": "6.5.1",
- "safe-buffer": "5.1.2",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.4",
- "tunnel-agent": "0.6.0",
- "uuid": "3.2.1"
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "hawk": "~6.0.2",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "stringstream": "~0.0.5",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
},
"dependencies": {
"aws-sign2": {
@@ -7683,7 +7683,7 @@
"version": "1.0.6",
"bundled": true,
"requires": {
- "delayed-stream": "1.0.0"
+ "delayed-stream": "~1.0.0"
},
"dependencies": {
"delayed-stream": {
@@ -7704,9 +7704,9 @@
"version": "2.3.2",
"bundled": true,
"requires": {
- "asynckit": "0.4.0",
+ "asynckit": "^0.4.0",
"combined-stream": "1.0.6",
- "mime-types": "2.1.18"
+ "mime-types": "^2.1.12"
},
"dependencies": {
"asynckit": {
@@ -7719,18 +7719,18 @@
"version": "5.0.3",
"bundled": true,
"requires": {
- "ajv": "5.5.2",
- "har-schema": "2.0.0"
+ "ajv": "^5.1.0",
+ "har-schema": "^2.0.0"
},
"dependencies": {
"ajv": {
"version": "5.5.2",
"bundled": true,
"requires": {
- "co": "4.6.0",
- "fast-deep-equal": "1.1.0",
- "fast-json-stable-stringify": "2.0.0",
- "json-schema-traverse": "0.3.1"
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
},
"dependencies": {
"co": {
@@ -7761,31 +7761,31 @@
"version": "6.0.2",
"bundled": true,
"requires": {
- "boom": "4.3.1",
- "cryptiles": "3.1.2",
- "hoek": "4.2.1",
- "sntp": "2.1.0"
+ "boom": "4.x.x",
+ "cryptiles": "3.x.x",
+ "hoek": "4.x.x",
+ "sntp": "2.x.x"
},
"dependencies": {
"boom": {
"version": "4.3.1",
"bundled": true,
"requires": {
- "hoek": "4.2.1"
+ "hoek": "4.x.x"
}
},
"cryptiles": {
"version": "3.1.2",
"bundled": true,
"requires": {
- "boom": "5.2.0"
+ "boom": "5.x.x"
},
"dependencies": {
"boom": {
"version": "5.2.0",
"bundled": true,
"requires": {
- "hoek": "4.2.1"
+ "hoek": "4.x.x"
}
}
}
@@ -7798,7 +7798,7 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "hoek": "4.2.1"
+ "hoek": "4.x.x"
}
}
}
@@ -7807,9 +7807,9 @@
"version": "1.2.0",
"bundled": true,
"requires": {
- "assert-plus": "1.0.0",
- "jsprim": "1.4.1",
- "sshpk": "1.14.1"
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
},
"dependencies": {
"assert-plus": {
@@ -7838,9 +7838,9 @@
"version": "1.10.0",
"bundled": true,
"requires": {
- "assert-plus": "1.0.0",
+ "assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
+ "extsprintf": "^1.2.0"
},
"dependencies": {
"core-util-is": {
@@ -7855,14 +7855,14 @@
"version": "1.14.1",
"bundled": true,
"requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.14.0"
},
"dependencies": {
"asn1": {
@@ -7874,14 +7874,14 @@
"bundled": true,
"optional": true,
"requires": {
- "tweetnacl": "0.14.5"
+ "tweetnacl": "^0.14.3"
}
},
"dashdash": {
"version": "1.14.1",
"bundled": true,
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
}
},
"ecc-jsbn": {
@@ -7889,14 +7889,14 @@
"bundled": true,
"optional": true,
"requires": {
- "jsbn": "0.1.1"
+ "jsbn": "~0.1.0"
}
},
"getpass": {
"version": "0.1.7",
"bundled": true,
"requires": {
- "assert-plus": "1.0.0"
+ "assert-plus": "^1.0.0"
}
},
"jsbn": {
@@ -7929,7 +7929,7 @@
"version": "2.1.18",
"bundled": true,
"requires": {
- "mime-db": "1.33.0"
+ "mime-db": "~1.33.0"
},
"dependencies": {
"mime-db": {
@@ -7958,7 +7958,7 @@
"version": "2.3.4",
"bundled": true,
"requires": {
- "punycode": "1.4.1"
+ "punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
@@ -7971,7 +7971,7 @@
"version": "0.6.0",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "^5.0.1"
}
}
}
@@ -7984,7 +7984,7 @@
"version": "2.6.2",
"bundled": true,
"requires": {
- "glob": "7.1.2"
+ "glob": "^7.0.5"
}
},
"safe-buffer": {
@@ -7999,8 +7999,8 @@
"version": "2.0.1",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11",
- "readable-stream": "2.3.6"
+ "graceful-fs": "^4.1.2",
+ "readable-stream": "^2.0.2"
}
},
"slide": {
@@ -8015,26 +8015,26 @@
"version": "2.1.3",
"bundled": true,
"requires": {
- "from2": "1.3.0",
- "stream-iterate": "1.2.0"
+ "from2": "^1.3.0",
+ "stream-iterate": "^1.1.0"
},
"dependencies": {
"from2": {
"version": "1.3.0",
"bundled": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "1.1.14"
+ "inherits": "~2.0.1",
+ "readable-stream": "~1.1.10"
},
"dependencies": {
"readable-stream": {
"version": "1.1.14",
"bundled": true,
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
},
"dependencies": {
"core-util-is": {
@@ -8057,8 +8057,8 @@
"version": "1.2.0",
"bundled": true,
"requires": {
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
+ "readable-stream": "^2.1.5",
+ "stream-shift": "^1.0.0"
},
"dependencies": {
"stream-shift": {
@@ -8077,7 +8077,7 @@
"version": "4.0.0",
"bundled": true,
"requires": {
- "ansi-regex": "3.0.0"
+ "ansi-regex": "^3.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -8090,35 +8090,35 @@
"version": "4.4.2",
"bundled": true,
"requires": {
- "chownr": "1.0.1",
- "fs-minipass": "1.2.5",
- "minipass": "2.2.4",
- "minizlib": "1.1.0",
- "mkdirp": "0.5.1",
- "safe-buffer": "5.1.2",
- "yallist": "3.0.2"
+ "chownr": "^1.0.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.2.4",
+ "minizlib": "^1.1.0",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
},
"dependencies": {
"fs-minipass": {
"version": "1.2.5",
"bundled": true,
"requires": {
- "minipass": "2.2.4"
+ "minipass": "^2.2.1"
}
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"requires": {
- "safe-buffer": "5.1.2",
- "yallist": "3.0.2"
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.1.0",
"bundled": true,
"requires": {
- "minipass": "2.2.4"
+ "minipass": "^2.2.1"
}
},
"safe-buffer": {
@@ -8151,14 +8151,14 @@
"version": "1.1.0",
"bundled": true,
"requires": {
- "unique-slug": "2.0.0"
+ "unique-slug": "^2.0.0"
},
"dependencies": {
"unique-slug": {
"version": "2.0.0",
"bundled": true,
"requires": {
- "imurmurhash": "0.1.4"
+ "imurmurhash": "^0.1.4"
}
}
}
@@ -8171,36 +8171,36 @@
"version": "2.5.0",
"bundled": true,
"requires": {
- "boxen": "1.3.0",
- "chalk": "2.4.1",
- "configstore": "3.1.2",
- "import-lazy": "2.1.0",
- "is-ci": "1.1.0",
- "is-installed-globally": "0.1.0",
- "is-npm": "1.0.0",
- "latest-version": "3.1.0",
- "semver-diff": "2.1.0",
- "xdg-basedir": "3.0.0"
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
},
"dependencies": {
"boxen": {
"version": "1.3.0",
"bundled": true,
"requires": {
- "ansi-align": "2.0.0",
- "camelcase": "4.1.0",
- "chalk": "2.4.1",
- "cli-boxes": "1.0.0",
- "string-width": "2.1.1",
- "term-size": "1.2.0",
- "widest-line": "2.0.0"
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
},
"dependencies": {
"ansi-align": {
"version": "2.0.0",
"bundled": true,
"requires": {
- "string-width": "2.1.1"
+ "string-width": "^2.0.0"
}
},
"camelcase": {
@@ -8215,8 +8215,8 @@
"version": "2.1.1",
"bundled": true,
"requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
},
"dependencies": {
"is-fullwidth-code-point": {
@@ -8229,36 +8229,36 @@
"version": "1.2.0",
"bundled": true,
"requires": {
- "execa": "0.7.0"
+ "execa": "^0.7.0"
},
"dependencies": {
"execa": {
"version": "0.7.0",
"bundled": true,
"requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
},
"dependencies": {
"cross-spawn": {
"version": "5.1.0",
"bundled": true,
"requires": {
- "lru-cache": "4.1.2",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
},
"dependencies": {
"shebang-command": {
"version": "1.2.0",
"bundled": true,
"requires": {
- "shebang-regex": "1.0.0"
+ "shebang-regex": "^1.0.0"
},
"dependencies": {
"shebang-regex": {
@@ -8281,7 +8281,7 @@
"version": "2.0.2",
"bundled": true,
"requires": {
- "path-key": "2.0.1"
+ "path-key": "^2.0.0"
},
"dependencies": {
"path-key": {
@@ -8310,7 +8310,7 @@
"version": "2.0.0",
"bundled": true,
"requires": {
- "string-width": "2.1.1"
+ "string-width": "^2.1.1"
}
}
}
@@ -8319,23 +8319,23 @@
"version": "2.4.1",
"bundled": true,
"requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
},
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
"bundled": true,
"requires": {
- "color-convert": "1.9.1"
+ "color-convert": "^1.9.0"
},
"dependencies": {
"color-convert": {
"version": "1.9.1",
"bundled": true,
"requires": {
- "color-name": "1.1.3"
+ "color-name": "^1.1.1"
},
"dependencies": {
"color-name": {
@@ -8354,7 +8354,7 @@
"version": "5.4.0",
"bundled": true,
"requires": {
- "has-flag": "3.0.0"
+ "has-flag": "^3.0.0"
},
"dependencies": {
"has-flag": {
@@ -8369,19 +8369,19 @@
"version": "3.1.2",
"bundled": true,
"requires": {
- "dot-prop": "4.2.0",
- "graceful-fs": "4.1.11",
- "make-dir": "1.2.0",
- "unique-string": "1.0.0",
- "write-file-atomic": "2.3.0",
- "xdg-basedir": "3.0.0"
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
},
"dependencies": {
"dot-prop": {
"version": "4.2.0",
"bundled": true,
"requires": {
- "is-obj": "1.0.1"
+ "is-obj": "^1.0.0"
},
"dependencies": {
"is-obj": {
@@ -8394,7 +8394,7 @@
"version": "1.2.0",
"bundled": true,
"requires": {
- "pify": "3.0.0"
+ "pify": "^3.0.0"
},
"dependencies": {
"pify": {
@@ -8407,7 +8407,7 @@
"version": "1.0.0",
"bundled": true,
"requires": {
- "crypto-random-string": "1.0.0"
+ "crypto-random-string": "^1.0.0"
},
"dependencies": {
"crypto-random-string": {
@@ -8426,7 +8426,7 @@
"version": "1.1.0",
"bundled": true,
"requires": {
- "ci-info": "1.1.3"
+ "ci-info": "^1.0.0"
},
"dependencies": {
"ci-info": {
@@ -8439,22 +8439,22 @@
"version": "0.1.0",
"bundled": true,
"requires": {
- "global-dirs": "0.1.1",
- "is-path-inside": "1.0.1"
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
},
"dependencies": {
"global-dirs": {
"version": "0.1.1",
"bundled": true,
"requires": {
- "ini": "1.3.5"
+ "ini": "^1.3.4"
}
},
"is-path-inside": {
"version": "1.0.1",
"bundled": true,
"requires": {
- "path-is-inside": "1.0.2"
+ "path-is-inside": "^1.0.1"
}
}
}
@@ -8467,41 +8467,41 @@
"version": "3.1.0",
"bundled": true,
"requires": {
- "package-json": "4.0.1"
+ "package-json": "^4.0.0"
},
"dependencies": {
"package-json": {
"version": "4.0.1",
"bundled": true,
"requires": {
- "got": "6.7.1",
- "registry-auth-token": "3.3.2",
- "registry-url": "3.1.0",
- "semver": "5.5.0"
+ "got": "^6.7.1",
+ "registry-auth-token": "^3.0.1",
+ "registry-url": "^3.0.3",
+ "semver": "^5.1.0"
},
"dependencies": {
"got": {
"version": "6.7.1",
"bundled": true,
"requires": {
- "create-error-class": "3.0.2",
- "duplexer3": "0.1.4",
- "get-stream": "3.0.0",
- "is-redirect": "1.0.0",
- "is-retry-allowed": "1.1.0",
- "is-stream": "1.1.0",
- "lowercase-keys": "1.0.1",
- "safe-buffer": "5.1.2",
- "timed-out": "4.0.1",
- "unzip-response": "2.0.1",
- "url-parse-lax": "1.0.0"
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
+ "url-parse-lax": "^1.0.0"
},
"dependencies": {
"create-error-class": {
"version": "3.0.2",
"bundled": true,
"requires": {
- "capture-stack-trace": "1.0.0"
+ "capture-stack-trace": "^1.0.0"
},
"dependencies": {
"capture-stack-trace": {
@@ -8546,7 +8546,7 @@
"version": "1.0.0",
"bundled": true,
"requires": {
- "prepend-http": "1.0.4"
+ "prepend-http": "^1.0.1"
},
"dependencies": {
"prepend-http": {
@@ -8561,18 +8561,18 @@
"version": "3.3.2",
"bundled": true,
"requires": {
- "rc": "1.2.7",
- "safe-buffer": "5.1.2"
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
},
"dependencies": {
"rc": {
"version": "1.2.7",
"bundled": true,
"requires": {
- "deep-extend": "0.5.1",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
},
"dependencies": {
"deep-extend": {
@@ -8595,17 +8595,17 @@
"version": "3.1.0",
"bundled": true,
"requires": {
- "rc": "1.2.7"
+ "rc": "^1.0.1"
},
"dependencies": {
"rc": {
"version": "1.2.7",
"bundled": true,
"requires": {
- "deep-extend": "0.5.1",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
},
"dependencies": {
"deep-extend": {
@@ -8632,7 +8632,7 @@
"version": "2.1.0",
"bundled": true,
"requires": {
- "semver": "5.5.0"
+ "semver": "^5.0.3"
}
},
"xdg-basedir": {
@@ -8649,16 +8649,16 @@
"version": "3.0.3",
"bundled": true,
"requires": {
- "spdx-correct": "3.0.0",
- "spdx-expression-parse": "3.0.0"
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
},
"dependencies": {
"spdx-correct": {
"version": "3.0.0",
"bundled": true,
"requires": {
- "spdx-expression-parse": "3.0.0",
- "spdx-license-ids": "3.0.0"
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
},
"dependencies": {
"spdx-license-ids": {
@@ -8671,8 +8671,8 @@
"version": "3.0.0",
"bundled": true,
"requires": {
- "spdx-exceptions": "2.1.0",
- "spdx-license-ids": "3.0.0"
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
},
"dependencies": {
"spdx-exceptions": {
@@ -8691,7 +8691,7 @@
"version": "3.0.0",
"bundled": true,
"requires": {
- "builtins": "1.0.3"
+ "builtins": "^1.0.3"
},
"dependencies": {
"builtins": {
@@ -8704,7 +8704,7 @@
"version": "1.3.0",
"bundled": true,
"requires": {
- "isexe": "2.0.0"
+ "isexe": "^2.0.0"
},
"dependencies": {
"isexe": {
@@ -8717,14 +8717,14 @@
"version": "1.6.0",
"bundled": true,
"requires": {
- "errno": "0.1.7"
+ "errno": "~0.1.7"
},
"dependencies": {
"errno": {
"version": "0.1.7",
"bundled": true,
"requires": {
- "prr": "1.0.1"
+ "prr": "~1.0.1"
},
"dependencies": {
"prr": {
@@ -8743,9 +8743,9 @@
"version": "2.3.0",
"bundled": true,
"requires": {
- "graceful-fs": "4.1.11",
- "imurmurhash": "0.1.4",
- "signal-exit": "3.0.2"
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
},
"dependencies": {
"signal-exit": {
@@ -8787,10 +8787,10 @@
"resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
"integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
"requires": {
- "array-each": "1.0.1",
- "array-slice": "1.0.0",
- "for-own": "1.0.0",
- "isobject": "3.0.1"
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
},
"dependencies": {
"for-own": {
@@ -8798,7 +8798,7 @@
"resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
"integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
"requires": {
- "for-in": "1.0.2"
+ "for-in": "^1.0.1"
}
},
"isobject": {
@@ -8813,8 +8813,8 @@
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
"requires": {
- "for-own": "0.1.5",
- "is-extendable": "0.1.1"
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
}
},
"object.pick": {
@@ -8822,7 +8822,7 @@
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz",
"integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=",
"requires": {
- "isobject": "2.1.0"
+ "isobject": "^2.1.0"
}
},
"on-finished": {
@@ -8838,7 +8838,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
},
"onetime": {
@@ -8851,7 +8851,7 @@
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
"integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
"requires": {
- "wordwrap": "0.0.3"
+ "wordwrap": "~0.0.2"
}
},
"orchestrator": {
@@ -8859,9 +8859,9 @@
"resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
"integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
"requires": {
- "end-of-stream": "0.1.5",
- "sequencify": "0.0.7",
- "stream-consume": "0.1.0"
+ "end-of-stream": "~0.1.5",
+ "sequencify": "~0.0.7",
+ "stream-consume": "~0.1.0"
}
},
"ordered-read-streams": {
@@ -8889,9 +8889,9 @@
"resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz",
"integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=",
"requires": {
- "is-absolute": "0.2.6",
- "map-cache": "0.2.2",
- "path-root": "0.1.1"
+ "is-absolute": "^0.2.3",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
}
},
"parse-glob": {
@@ -8899,10 +8899,10 @@
"resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"requires": {
- "glob-base": "0.3.0",
- "is-dotfile": "1.0.3",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1"
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
}
},
"parse-passwd": {
@@ -8940,7 +8940,7 @@
"resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
"integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
"requires": {
- "path-root-regex": "0.1.2"
+ "path-root-regex": "^0.1.0"
}
},
"path-root-regex": {
@@ -8953,7 +8953,7 @@
"resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
"integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
"requires": {
- "through": "2.3.8"
+ "through": "~2.3"
}
},
"pbkdf2-compat": {
@@ -8977,9 +8977,9 @@
"resolved": "https://registry.npmjs.org/postcss/-/postcss-4.1.16.tgz",
"integrity": "sha1-TESbTIr53zyvbTf44eV10DYXWNw=",
"requires": {
- "es6-promise": "2.3.0",
- "js-base64": "2.1.9",
- "source-map": "0.4.4"
+ "es6-promise": "~2.3.0",
+ "js-base64": "~2.1.8",
+ "source-map": "~0.4.2"
}
},
"preserve": {
@@ -9008,7 +9008,7 @@
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"optional": true,
"requires": {
- "asap": "2.0.6"
+ "asap": "~2.0.3"
}
},
"prr": {
@@ -9043,8 +9043,8 @@
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
"integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
"requires": {
- "is-number": "3.0.0",
- "kind-of": "4.0.0"
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
},
"dependencies": {
"is-number": {
@@ -9052,7 +9052,7 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"requires": {
- "kind-of": "3.2.2"
+ "kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
@@ -9060,7 +9060,7 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
- "is-buffer": "1.1.5"
+ "is-buffer": "^1.1.5"
}
}
}
@@ -9070,7 +9070,7 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"requires": {
- "is-buffer": "1.1.5"
+ "is-buffer": "^1.1.5"
}
}
}
@@ -9080,7 +9080,7 @@
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz",
"integrity": "sha1-l4IwoValVI9C7vFN4i0PT2EAg9E=",
"requires": {
- "bytes": "1.0.0",
+ "bytes": "1",
"iconv-lite": "0.4.4"
}
},
@@ -9089,7 +9089,7 @@
"resolved": "https://registry.npmjs.org/rcfinder/-/rcfinder-0.1.9.tgz",
"integrity": "sha1-8+gPOH3fmugK4wpBADKWQuroERU=",
"requires": {
- "lodash.clonedeep": "4.5.0"
+ "lodash.clonedeep": "^4.3.2"
}
},
"rcloader": {
@@ -9097,8 +9097,8 @@
"resolved": "https://registry.npmjs.org/rcloader/-/rcloader-0.1.2.tgz",
"integrity": "sha1-oJY6ZDfQnvjLktky0trUl7DRc2w=",
"requires": {
- "lodash": "2.4.2",
- "rcfinder": "0.1.9"
+ "lodash": "~2.4.1",
+ "rcfinder": "~0.1.6"
},
"dependencies": {
"lodash": {
@@ -9113,10 +9113,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"readdirp": {
@@ -9124,10 +9124,10 @@
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
"integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
"requires": {
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "readable-stream": "2.3.3",
- "set-immediate-shim": "1.0.1"
+ "graceful-fs": "^4.1.2",
+ "minimatch": "^3.0.2",
+ "readable-stream": "^2.0.2",
+ "set-immediate-shim": "^1.0.1"
},
"dependencies": {
"graceful-fs": {
@@ -9145,13 +9145,13 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
+ "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"
}
},
"string_decoder": {
@@ -9159,7 +9159,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
- "safe-buffer": "5.1.1"
+ "safe-buffer": "~5.1.0"
}
}
}
@@ -9169,7 +9169,7 @@
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
"integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"requires": {
- "resolve": "1.4.0"
+ "resolve": "^1.1.6"
}
},
"regex-cache": {
@@ -9177,8 +9177,8 @@
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz",
"integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
"requires": {
- "is-equal-shallow": "0.1.3",
- "is-primitive": "2.0.0"
+ "is-equal-shallow": "^0.1.3",
+ "is-primitive": "^2.0.0"
}
},
"remove-trailing-separator": {
@@ -9206,7 +9206,7 @@
"resolved": "https://registry.npmjs.org/replacestream/-/replacestream-2.0.0.tgz",
"integrity": "sha1-IuPwhh3A0R0zB067v83MZtRTK24=",
"requires": {
- "through": "2.3.8"
+ "through": "~2.3.4"
}
},
"request": {
@@ -9215,28 +9215,28 @@
"integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"optional": true,
"requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "4.2.1",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.16",
- "oauth-sign": "0.8.2",
- "performance-now": "0.2.0",
- "qs": "6.4.0",
- "safe-buffer": "5.1.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.2",
- "tunnel-agent": "0.6.0",
- "uuid": "3.1.0"
+ "aws-sign2": "~0.6.0",
+ "aws4": "^1.2.1",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.0",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.1.1",
+ "har-validator": "~4.2.1",
+ "hawk": "~3.1.3",
+ "http-signature": "~1.1.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.7",
+ "oauth-sign": "~0.8.1",
+ "performance-now": "^0.2.0",
+ "qs": "~6.4.0",
+ "safe-buffer": "^5.0.1",
+ "stringstream": "~0.0.4",
+ "tough-cookie": "~2.3.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.0.0"
}
},
"resolve": {
@@ -9244,7 +9244,7 @@
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
"integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
"requires": {
- "path-parse": "1.0.5"
+ "path-parse": "^1.0.5"
}
},
"resolve-dir": {
@@ -9252,8 +9252,8 @@
"resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz",
"integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=",
"requires": {
- "expand-tilde": "1.2.2",
- "global-modules": "0.2.3"
+ "expand-tilde": "^1.2.2",
+ "global-modules": "^0.2.3"
}
},
"rimraf": {
@@ -9261,7 +9261,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
"integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
"requires": {
- "glob": "7.1.2"
+ "glob": "^7.0.5"
},
"dependencies": {
"glob": {
@@ -9269,12 +9269,12 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "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"
}
}
}
@@ -9289,7 +9289,7 @@
"resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.1.1.tgz",
"integrity": "sha1-khW1zOGmD1uXAUIgEcVzxwKuUic=",
"requires": {
- "chalk": "1.1.3"
+ "chalk": "*"
}
},
"safe-buffer": {
@@ -9333,7 +9333,7 @@
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"optional": true,
"requires": {
- "hoek": "2.16.3"
+ "hoek": "2.x.x"
}
},
"source-list-map": {
@@ -9346,7 +9346,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
},
"sparkles": {
@@ -9359,7 +9359,7 @@
"resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
"integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
"requires": {
- "through": "2.3.8"
+ "through": "2"
}
},
"sprintf-js": {
@@ -9373,14 +9373,14 @@
"integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
"optional": true,
"requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.14.0"
},
"dependencies": {
"assert-plus": {
@@ -9396,8 +9396,8 @@
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz",
"integrity": "sha1-v5tKv7QrJ011FHnkTg/yZWtvEZM=",
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "1.1.14"
+ "inherits": "~2.0.1",
+ "readable-stream": "^1.0.27-1"
}
},
"stream-combiner": {
@@ -9405,7 +9405,7 @@
"resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
"integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
"requires": {
- "duplexer": "0.1.1"
+ "duplexer": "~0.1.1"
}
},
"stream-consume": {
@@ -9418,8 +9418,8 @@
"resolved": "https://registry.npmjs.org/streamqueue/-/streamqueue-1.1.0.tgz",
"integrity": "sha1-Ss1/1sR4B/YDrvD8RXlR/EUJ93o=",
"requires": {
- "isstream": "0.1.2",
- "readable-stream": "1.0.34"
+ "isstream": "~0.1.2",
+ "readable-stream": "~1.0.33"
},
"dependencies": {
"readable-stream": {
@@ -9427,10 +9427,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
}
}
@@ -9440,7 +9440,7 @@
"resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
"integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
"requires": {
- "strip-ansi": "3.0.1"
+ "strip-ansi": "^3.0.0"
}
},
"string_decoder": {
@@ -9459,7 +9459,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
},
"strip-bom": {
@@ -9467,8 +9467,8 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
"integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
"requires": {
- "first-chunk-stream": "1.0.0",
- "is-utf8": "0.2.1"
+ "first-chunk-stream": "^1.0.0",
+ "is-utf8": "^0.2.0"
}
},
"strip-json-comments": {
@@ -9491,9 +9491,9 @@
"resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz",
"integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=",
"requires": {
- "block-stream": "0.0.9",
- "fstream": "0.1.31",
- "inherits": "2.0.3"
+ "block-stream": "*",
+ "fstream": "~0.1.28",
+ "inherits": "2"
}
},
"tar.gz": {
@@ -9501,9 +9501,9 @@
"resolved": "https://registry.npmjs.org/tar.gz/-/tar.gz-0.1.1.tgz",
"integrity": "sha1-6RTOI7L9xidXX72zSFpbIo7VmUc=",
"requires": {
- "commander": "1.1.1",
- "fstream": "0.1.31",
- "tar": "0.1.20"
+ "commander": "1.1.x",
+ "fstream": "0.1.x",
+ "tar": "0.1.x"
}
},
"text-table": {
@@ -9526,8 +9526,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"requires": {
- "readable-stream": "2.3.3",
- "xtend": "4.0.1"
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
},
"dependencies": {
"isarray": {
@@ -9540,13 +9540,13 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
+ "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"
}
},
"string_decoder": {
@@ -9554,7 +9554,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
- "safe-buffer": "5.1.1"
+ "safe-buffer": "~5.1.0"
}
}
}
@@ -9564,7 +9564,7 @@
"resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
"integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
"requires": {
- "os-homedir": "1.0.2"
+ "os-homedir": "^1.0.0"
}
},
"time-stamp": {
@@ -9577,7 +9577,7 @@
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
"integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
"requires": {
- "process": "0.11.10"
+ "process": "~0.11.0"
}
},
"tiny-lr": {
@@ -9585,12 +9585,12 @@
"resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.1.7.tgz",
"integrity": "sha1-vgJNCfHrsi4nSYNMYOoXs4UjQXU=",
"requires": {
- "body-parser": "1.8.4",
- "debug": "2.0.0",
- "faye-websocket": "0.7.3",
- "livereload-js": "2.2.2",
- "parseurl": "1.3.1",
- "qs": "2.2.5"
+ "body-parser": "~1.8.0",
+ "debug": "~2.0.0",
+ "faye-websocket": "~0.7.2",
+ "livereload-js": "^2.2.0",
+ "parseurl": "~1.3.0",
+ "qs": "~2.2.3"
},
"dependencies": {
"debug": {
@@ -9619,7 +9619,7 @@
"integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
"optional": true,
"requires": {
- "punycode": "1.4.1"
+ "punycode": "^1.4.1"
}
},
"tryit": {
@@ -9638,7 +9638,7 @@
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"optional": true,
"requires": {
- "safe-buffer": "5.1.1"
+ "safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
@@ -9653,7 +9653,7 @@
"integrity": "sha1-uTaKWTzG730GReeLL0xky+zQXpA=",
"requires": {
"media-typer": "0.3.0",
- "mime-types": "2.0.14"
+ "mime-types": "~2.0.9"
},
"dependencies": {
"mime-db": {
@@ -9666,7 +9666,7 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz",
"integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=",
"requires": {
- "mime-db": "1.12.0"
+ "mime-db": "~1.12.0"
}
}
}
@@ -9676,9 +9676,9 @@
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz",
"integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=",
"requires": {
- "async": "0.2.10",
- "optimist": "0.3.7",
- "source-map": "0.1.43"
+ "async": "~0.2.6",
+ "optimist": "~0.3.5",
+ "source-map": "~0.1.7"
},
"dependencies": {
"async": {
@@ -9691,7 +9691,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
}
}
@@ -9768,7 +9768,7 @@
"resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
"integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
"requires": {
- "user-home": "1.1.1"
+ "user-home": "^1.1.1"
}
},
"verror": {
@@ -9777,9 +9777,9 @@
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"optional": true,
"requires": {
- "assert-plus": "1.0.0",
+ "assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
+ "extsprintf": "^1.2.0"
},
"dependencies": {
"assert-plus": {
@@ -9795,8 +9795,8 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
"integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
"requires": {
- "clone": "1.0.2",
- "clone-stats": "0.0.1",
+ "clone": "^1.0.0",
+ "clone-stats": "^0.0.1",
"replace-ext": "0.0.1"
}
},
@@ -9813,14 +9813,14 @@
"resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
"integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
"requires": {
- "defaults": "1.0.3",
- "glob-stream": "3.1.18",
- "glob-watcher": "0.0.6",
- "graceful-fs": "3.0.11",
- "mkdirp": "0.5.1",
- "strip-bom": "1.0.0",
- "through2": "0.6.5",
- "vinyl": "0.4.6"
+ "defaults": "^1.0.0",
+ "glob-stream": "^3.1.5",
+ "glob-watcher": "^0.0.6",
+ "graceful-fs": "^3.0.0",
+ "mkdirp": "^0.5.0",
+ "strip-bom": "^1.0.0",
+ "through2": "^0.6.1",
+ "vinyl": "^0.4.0"
},
"dependencies": {
"clone": {
@@ -9833,10 +9833,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -9844,8 +9844,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
}
},
"vinyl": {
@@ -9853,8 +9853,8 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"requires": {
- "clone": "0.2.0",
- "clone-stats": "0.0.1"
+ "clone": "^0.2.0",
+ "clone-stats": "^0.0.1"
}
}
}
@@ -9864,9 +9864,9 @@
"resolved": "https://registry.npmjs.org/vinyl-map/-/vinyl-map-1.0.2.tgz",
"integrity": "sha1-qLKWAl+XP6fK1igXlnpI8dF2v3w=",
"requires": {
- "bl": "1.2.1",
+ "bl": "^1.1.2",
"new-from": "0.0.3",
- "through2": "0.4.2"
+ "through2": "^0.4.1"
},
"dependencies": {
"readable-stream": {
@@ -9874,10 +9874,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"through2": {
@@ -9885,8 +9885,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
"integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=",
"requires": {
- "readable-stream": "1.0.34",
- "xtend": "2.1.2"
+ "readable-stream": "~1.0.17",
+ "xtend": "~2.1.1"
}
},
"xtend": {
@@ -9894,7 +9894,7 @@
"resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
"integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
"requires": {
- "object-keys": "0.4.0"
+ "object-keys": "~0.4.0"
}
}
}
@@ -9904,7 +9904,7 @@
"resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
"integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=",
"requires": {
- "source-map": "0.5.6"
+ "source-map": "^0.5.1"
},
"dependencies": {
"source-map": {
@@ -9927,9 +9927,9 @@
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz",
"integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
"requires": {
- "async": "0.9.2",
- "chokidar": "1.7.0",
- "graceful-fs": "4.1.11"
+ "async": "^0.9.0",
+ "chokidar": "^1.0.0",
+ "graceful-fs": "^4.1.2"
},
"dependencies": {
"async": {
@@ -9949,20 +9949,20 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.0.tgz",
"integrity": "sha1-AorEZwU1yxqDgVxHJrVjU9Asuzg=",
"requires": {
- "async": "1.5.2",
- "clone": "1.0.2",
- "enhanced-resolve": "0.9.1",
- "esprima": "2.7.3",
- "interpret": "0.6.6",
- "memory-fs": "0.2.0",
- "mkdirp": "0.5.1",
- "node-libs-browser": "0.6.0",
- "optimist": "0.6.1",
- "supports-color": "3.2.3",
- "tapable": "0.1.10",
- "uglify-js": "2.4.24",
- "watchpack": "0.2.9",
- "webpack-core": "0.6.9"
+ "async": "^1.3.0",
+ "clone": "^1.0.2",
+ "enhanced-resolve": "~0.9.0",
+ "esprima": "^2.5.0",
+ "interpret": "^0.6.4",
+ "memory-fs": "~0.2.0",
+ "mkdirp": "~0.5.0",
+ "node-libs-browser": ">= 0.4.0 <=0.6.0",
+ "optimist": "~0.6.0",
+ "supports-color": "^3.1.0",
+ "tapable": "~0.1.8",
+ "uglify-js": "~2.4.13",
+ "watchpack": "^0.2.1",
+ "webpack-core": "~0.6.0"
},
"dependencies": {
"minimist": {
@@ -9975,8 +9975,8 @@
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"requires": {
- "minimist": "0.0.10",
- "wordwrap": "0.0.3"
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
}
},
"source-map": {
@@ -9984,7 +9984,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
"integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
},
"supports-color": {
@@ -9992,7 +9992,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"requires": {
- "has-flag": "1.0.0"
+ "has-flag": "^1.0.0"
}
},
"uglify-js": {
@@ -10000,10 +10000,10 @@
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz",
"integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=",
"requires": {
- "async": "0.2.10",
+ "async": "~0.2.6",
"source-map": "0.1.34",
- "uglify-to-browserify": "1.0.2",
- "yargs": "3.5.4"
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.5.4"
},
"dependencies": {
"async": {
@@ -10020,8 +10020,8 @@
"resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
"integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
"requires": {
- "source-list-map": "0.1.8",
- "source-map": "0.4.4"
+ "source-list-map": "~0.1.7",
+ "source-map": "~0.4.1"
}
},
"webpack-stream": {
@@ -10029,11 +10029,11 @@
"resolved": "https://registry.npmjs.org/webpack-stream/-/webpack-stream-2.1.0.tgz",
"integrity": "sha1-IJAWr1xaVUFUS3b9PwOMgGPhIg4=",
"requires": {
- "gulp-util": "3.0.8",
- "memory-fs": "0.2.0",
- "through": "2.3.8",
- "vinyl": "0.5.3",
- "webpack": "1.12.0"
+ "gulp-util": ">=3.0.0 <3.1.0-0",
+ "memory-fs": ">=0.2.0 <0.3.0-0",
+ "through": ">=2.3.4 <2.4.0-0",
+ "vinyl": ">=0.5.0 <0.6.0-0",
+ "webpack": ">=1.9.0 <2.0.0-0"
}
},
"websocket-driver": {
@@ -10041,7 +10041,7 @@
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
"integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
"requires": {
- "websocket-extensions": "0.1.1"
+ "websocket-extensions": ">=0.1.1"
}
},
"websocket-extensions": {
@@ -10059,7 +10059,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
"integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
"requires": {
- "isexe": "2.0.0"
+ "isexe": "^2.0.0"
}
},
"window-size": {
@@ -10087,8 +10087,8 @@
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz",
"integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=",
"requires": {
- "camelcase": "1.2.1",
- "decamelize": "1.2.0",
+ "camelcase": "^1.0.2",
+ "decamelize": "^1.0.0",
"window-size": "0.1.0",
"wordwrap": "0.0.2"
},
diff --git a/package.json b/package.json
index 53f8d6017f..a0565acc47 100644
--- a/package.json
+++ b/package.json
@@ -44,6 +44,7 @@
"tar.gz": "0.1.1",
"url-search-params": "^0.6.1",
"webpack": "1.12.0",
- "webpack-stream": "2.1.0"
+ "webpack-stream": "2.1.0",
+ "natives": "^1.1.3"
}
}
diff --git a/src/.idea/.idea.NzbDrone/.idea/encodings.xml b/src/.idea/.idea.NzbDrone/.idea/encodings.xml
new file mode 100644
index 0000000000..15a15b218a
--- /dev/null
+++ b/src/.idea/.idea.NzbDrone/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.NzbDrone/.idea/misc.xml b/src/.idea/.idea.NzbDrone/.idea/misc.xml
new file mode 100644
index 0000000000..1d8c84d0af
--- /dev/null
+++ b/src/.idea/.idea.NzbDrone/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Common/CommonVersionInfo.cs b/src/Common/CommonVersionInfo.cs
index f7e96bcb80..d674c376fc 100644
--- a/src/Common/CommonVersionInfo.cs
+++ b/src/Common/CommonVersionInfo.cs
@@ -2,4 +2,4 @@
using System.Reflection;
-[assembly: AssemblyVersion("0.1.0.*")]
+[assembly: AssemblyVersion("10.0.0.*")]
diff --git a/src/Marr.Data/DataMapper.cs b/src/Marr.Data/DataMapper.cs
index 51423b9880..c632471cf6 100644
--- a/src/Marr.Data/DataMapper.cs
+++ b/src/Marr.Data/DataMapper.cs
@@ -941,21 +941,21 @@ protected virtual void Dispose(bool disposing)
{
if (disposing)
{
- if (Command.Transaction != null)
+ if (_command != null)
{
- Command.Transaction.Dispose();
- Command.Transaction = null;
- }
+ if (_command.Transaction != null)
+ {
+ _command.Transaction.Dispose();
+ _command.Transaction = null;
+ }
- if (Command.Connection != null)
- {
- Command.Connection.Dispose();
- Command.Connection = null;
- }
+ if (_command.Connection != null)
+ {
+ _command.Connection.Dispose();
+ _command.Connection = null;
+ }
- if (Command != null)
- {
- Command.Dispose();
+ _command.Dispose();
_command = null;
}
}
diff --git a/src/Marr.Data/Mapping/MappingHelper.cs b/src/Marr.Data/Mapping/MappingHelper.cs
index c1fbd42b42..80e2acb477 100644
--- a/src/Marr.Data/Mapping/MappingHelper.cs
+++ b/src/Marr.Data/Mapping/MappingHelper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Common;
@@ -91,9 +91,11 @@ private void PrepareLazyLoadedProperties(object ent)
Type entType = ent.GetType();
if (_repos.Relationships.ContainsKey(entType))
{
+ var provider = _db.ProviderFactory;
+ var connectionString = _db.ConnectionString;
Func dbCreate = () =>
{
- var db = new DataMapper(_db.ProviderFactory, _db.ConnectionString);
+ var db = new DataMapper(provider, connectionString);
db.SqlMode = SqlModes.Text;
return db;
};
diff --git a/src/NzbDrone.Api/Extensions/Pipelines/GZipPipeline.cs b/src/NzbDrone.Api/Extensions/Pipelines/GZipPipeline.cs
index 8aa9f4ad2b..26278c0543 100644
--- a/src/NzbDrone.Api/Extensions/Pipelines/GZipPipeline.cs
+++ b/src/NzbDrone.Api/Extensions/Pipelines/GZipPipeline.cs
@@ -5,6 +5,7 @@
using Nancy;
using Nancy.Bootstrapper;
using NLog;
+using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
namespace NzbDrone.Api.Extensions.Pipelines
@@ -15,9 +16,14 @@ public class GzipCompressionPipeline : IRegisterNancyPipeline
public int Order => 0;
+ private readonly Action, Stream> _writeGZipStream;
+
public GzipCompressionPipeline(Logger logger)
{
_logger = logger;
+
+ // On Mono GZipStream/DeflateStream leaks memory if an exception is thrown, use an intermediate buffer in that case.
+ _writeGZipStream = OsInfo.IsMonoRuntime ? WriteGZipStreamMono : (Action, Stream>)WriteGZipStream;
}
public void Register(IPipelines pipelines)
@@ -43,14 +49,7 @@ private void CompressResponse(NancyContext context)
var contents = response.Contents;
response.Headers["Content-Encoding"] = "gzip";
- response.Contents = responseStream =>
- {
- using (var gzip = new GZipStream(responseStream, CompressionMode.Compress, true))
- using (var buffered = new BufferedStream(gzip, 8192))
- {
- contents.Invoke(buffered);
- }
- };
+ response.Contents = responseStream => _writeGZipStream(contents, responseStream);
}
}
@@ -61,6 +60,25 @@ private void CompressResponse(NancyContext context)
}
}
+ private static void WriteGZipStreamMono(Action innerContent, Stream targetStream)
+ {
+ using (var membuffer = new MemoryStream())
+ {
+ WriteGZipStream(innerContent, membuffer);
+ membuffer.Position = 0;
+ membuffer.CopyTo(targetStream);
+ }
+ }
+
+ private static void WriteGZipStream(Action innerContent, Stream targetStream)
+ {
+ using (var gzip = new GZipStream(targetStream, CompressionMode.Compress, true))
+ using (var buffered = new BufferedStream(gzip, 8192))
+ {
+ innerContent.Invoke(buffered);
+ }
+ }
+
private static bool ContentLengthIsTooSmall(Response response)
{
var contentLength = response.Headers.GetValueOrDefault("Content-Length");
diff --git a/src/NzbDrone.Common/Cloud/SonarrCloudRequestBuilder.cs b/src/NzbDrone.Common/Cloud/RadarrCloudRequestBuilder.cs
similarity index 63%
rename from src/NzbDrone.Common/Cloud/SonarrCloudRequestBuilder.cs
rename to src/NzbDrone.Common/Cloud/RadarrCloudRequestBuilder.cs
index 8e6b55e111..da368e0e02 100644
--- a/src/NzbDrone.Common/Cloud/SonarrCloudRequestBuilder.cs
+++ b/src/NzbDrone.Common/Cloud/RadarrCloudRequestBuilder.cs
@@ -2,23 +2,18 @@
namespace NzbDrone.Common.Cloud
{
- public interface ISonarrCloudRequestBuilder
+ public interface IRadarrCloudRequestBuilder
{
IHttpRequestBuilderFactory Services { get; }
- IHttpRequestBuilderFactory SkyHookTvdb { get; }
IHttpRequestBuilderFactory TMDB { get; }
IHttpRequestBuilderFactory TMDBSingle { get; }
}
- public class SonarrCloudRequestBuilder : ISonarrCloudRequestBuilder
+ public class RadarrCloudRequestBuilder : IRadarrCloudRequestBuilder
{
- public SonarrCloudRequestBuilder()
+ public RadarrCloudRequestBuilder()
{
- Services = new HttpRequestBuilder("http://radarr.aeonlucid.com/v1/")
- .CreateFactory();
-
- SkyHookTvdb = new HttpRequestBuilder("http://skyhook.sonarr.tv/v1/tvdb/{route}/{language}/")
- .SetSegment("language", "en")
+ Services = new HttpRequestBuilder("https://radarr.aeonlucid.com/v1/")
.CreateFactory();
TMDB = new HttpRequestBuilder("https://api.themoviedb.org/3/{route}/{id}{secondaryRoute}")
@@ -31,7 +26,6 @@ public SonarrCloudRequestBuilder()
}
public IHttpRequestBuilderFactory Services { get; private set; }
- public IHttpRequestBuilderFactory SkyHookTvdb { get; private set; }
public IHttpRequestBuilderFactory TMDB { get; private set; }
public IHttpRequestBuilderFactory TMDBSingle { get; private set; }
}
diff --git a/src/NzbDrone.Common/Disk/DiskProviderBase.cs b/src/NzbDrone.Common/Disk/DiskProviderBase.cs
index 8b888e1ce6..aaae3f0328 100644
--- a/src/NzbDrone.Common/Disk/DiskProviderBase.cs
+++ b/src/NzbDrone.Common/Disk/DiskProviderBase.cs
@@ -123,27 +123,6 @@ public bool CanUseGDIPlus()
}
}
- public bool IsValidGDIPlusImage(string filename)
- {
- if (!CanUseGDIPlus())
- {
- return true;
- }
-
- try
- {
- using (var bmp = new Bitmap(filename))
- {
- }
- return true;
- }
- catch (Exception ex)
- {
- Logger.Debug(ex, "Corrupted image found at: {0}.", filename);
- return false;
- }
- }
-
public bool FolderWritable(string path)
{
Ensure.That(path, () => path).IsValidPath();
diff --git a/src/NzbDrone.Common/Disk/IDiskProvider.cs b/src/NzbDrone.Common/Disk/IDiskProvider.cs
index 33e8d02280..52b1fa4f06 100644
--- a/src/NzbDrone.Common/Disk/IDiskProvider.cs
+++ b/src/NzbDrone.Common/Disk/IDiskProvider.cs
@@ -20,7 +20,6 @@ public interface IDiskProvider
bool FileExists(string path);
bool FileExists(string path, StringComparison stringComparison);
bool CanUseGDIPlus();
- bool IsValidGDIPlusImage(string path);
bool FolderWritable(string path);
string[] GetDirectories(string path);
string[] GetFiles(string path, SearchOption searchOption);
diff --git a/src/NzbDrone.Common/Http/Dispatchers/CurlHttpDispatcher.cs b/src/NzbDrone.Common/Http/Dispatchers/CurlHttpDispatcher.cs
index 43414836dc..233e9a81f5 100644
--- a/src/NzbDrone.Common/Http/Dispatchers/CurlHttpDispatcher.cs
+++ b/src/NzbDrone.Common/Http/Dispatchers/CurlHttpDispatcher.cs
@@ -66,95 +66,96 @@ public HttpResponse GetResponse(HttpRequest request, CookieContainer cookies)
lock (CurlGlobalHandle.Instance)
{
- Stream responseStream = new MemoryStream();
- Stream headerStream = new MemoryStream();
-
- using (var curlEasy = new CurlEasy())
+ using (Stream responseStream = new MemoryStream())
+ using (Stream headerStream = new MemoryStream())
{
- curlEasy.AutoReferer = false;
- curlEasy.WriteFunction = (b, s, n, o) =>
+ using (var curlEasy = new CurlEasy())
{
- responseStream.Write(b, 0, s * n);
- return s * n;
- };
- curlEasy.HeaderFunction = (b, s, n, o) =>
- {
- headerStream.Write(b, 0, s * n);
- return s * n;
- };
-
- AddProxy(curlEasy, request);
-
- curlEasy.Url = request.Url.FullUri;
-
- switch (request.Method)
- {
- case HttpMethod.GET:
- curlEasy.HttpGet = true;
- break;
-
- case HttpMethod.POST:
- curlEasy.Post = true;
- break;
-
- case HttpMethod.PUT:
- curlEasy.Put = true;
- break;
-
- default:
- throw new NotSupportedException(string.Format("HttpCurl method {0} not supported", request.Method));
- }
- curlEasy.FollowLocation = false;
- curlEasy.UserAgent = request.UseSimplifiedUserAgent ? UserAgentBuilder.UserAgentSimplified : UserAgentBuilder.UserAgent; ;
-
- if (request.RequestTimeout != TimeSpan.Zero)
- {
- curlEasy.Timeout = (int)Math.Ceiling(request.RequestTimeout.TotalSeconds);
- }
-
- if (OsInfo.IsWindows)
- {
- curlEasy.CaInfo = _caBundleFilePath;
- }
-
- if (cookies != null)
- {
- curlEasy.Cookie = cookies.GetCookieHeader((Uri)request.Url);
- }
-
- if (request.ContentData != null)
- {
- curlEasy.PostFieldSize = request.ContentData.Length;
- curlEasy.SetOpt(CurlOption.CopyPostFields, new string(Array.ConvertAll(request.ContentData, v => (char)v)));
- }
-
- // Yes, we have to keep a ref to the object to prevent corrupting the unmanaged state
- using (var httpRequestHeaders = SerializeHeaders(request))
- {
- curlEasy.HttpHeader = httpRequestHeaders;
-
- var result = curlEasy.Perform();
-
- if (result != CurlCode.Ok)
+ curlEasy.AutoReferer = false;
+ curlEasy.WriteFunction = (b, s, n, o) =>
{
- switch (result)
+ responseStream.Write(b, 0, s * n);
+ return s * n;
+ };
+ curlEasy.HeaderFunction = (b, s, n, o) =>
+ {
+ headerStream.Write(b, 0, s * n);
+ return s * n;
+ };
+
+ AddProxy(curlEasy, request);
+
+ curlEasy.Url = request.Url.FullUri;
+
+ switch (request.Method)
+ {
+ case HttpMethod.GET:
+ curlEasy.HttpGet = true;
+ break;
+
+ case HttpMethod.POST:
+ curlEasy.Post = true;
+ break;
+
+ case HttpMethod.PUT:
+ curlEasy.Put = true;
+ break;
+
+ default:
+ throw new NotSupportedException(string.Format("HttpCurl method {0} not supported", request.Method));
+ }
+ curlEasy.FollowLocation = false;
+ curlEasy.UserAgent = request.UseSimplifiedUserAgent ? UserAgentBuilder.UserAgentSimplified : UserAgentBuilder.UserAgent; ;
+
+ if (request.RequestTimeout != TimeSpan.Zero)
+ {
+ curlEasy.Timeout = (int)Math.Ceiling(request.RequestTimeout.TotalSeconds);
+ }
+
+ if (OsInfo.IsWindows)
+ {
+ curlEasy.CaInfo = _caBundleFilePath;
+ }
+
+ if (cookies != null)
+ {
+ curlEasy.Cookie = cookies.GetCookieHeader((Uri)request.Url);
+ }
+
+ if (request.ContentData != null)
+ {
+ curlEasy.PostFieldSize = request.ContentData.Length;
+ curlEasy.SetOpt(CurlOption.CopyPostFields, new string(Array.ConvertAll(request.ContentData, v => (char)v)));
+ }
+
+ // Yes, we have to keep a ref to the object to prevent corrupting the unmanaged state
+ using (var httpRequestHeaders = SerializeHeaders(request))
+ {
+ curlEasy.HttpHeader = httpRequestHeaders;
+
+ var result = curlEasy.Perform();
+
+ if (result != CurlCode.Ok)
{
- case CurlCode.SslCaCert:
- case (CurlCode)77:
- throw new WebException(string.Format("Curl Error {0} for Url {1}, issues with your operating system SSL Root Certificate Bundle (ca-bundle).", result, curlEasy.Url));
- default:
- throw new WebException(string.Format("Curl Error {0} for Url {1}", result, curlEasy.Url));
-
+ switch (result)
+ {
+ case CurlCode.SslCaCert:
+ case (CurlCode)77:
+ throw new WebException(string.Format("Curl Error {0} for Url {1}, issues with your operating system SSL Root Certificate Bundle (ca-bundle).", result, curlEasy.Url));
+ default:
+ throw new WebException(string.Format("Curl Error {0} for Url {1}", result, curlEasy.Url));
+
+ }
}
}
+
+ var webHeaderCollection = ProcessHeaderStream(request, cookies, headerStream);
+ var responseData = ProcessResponseStream(request, responseStream, webHeaderCollection);
+
+ var httpHeader = new HttpHeader(webHeaderCollection);
+
+ return new HttpResponse(request, httpHeader, responseData, (HttpStatusCode)curlEasy.ResponseCode);
}
-
- var webHeaderCollection = ProcessHeaderStream(request, cookies, headerStream);
- var responseData = ProcessResponseStream(request, responseStream, webHeaderCollection);
-
- var httpHeader = new HttpHeader(webHeaderCollection);
-
- return new HttpResponse(request, httpHeader, responseData, (HttpStatusCode)curlEasy.ResponseCode);
}
}
}
@@ -259,6 +260,7 @@ private string FixSetCookieHeader(string setCookie)
private byte[] ProcessResponseStream(HttpRequest request, Stream responseStream, WebHeaderCollection webHeaderCollection)
{
+ byte[] bytes = null;
responseStream.Position = 0;
if (responseStream.Length != 0)
@@ -268,21 +270,27 @@ private byte[] ProcessResponseStream(HttpRequest request, Stream responseStream,
{
if (encoding.IndexOf("gzip") != -1)
{
- responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
+ using (var zipStream = new GZipStream(responseStream, CompressionMode.Decompress))
+ {
+ bytes = zipStream.ToBytes();
+ }
webHeaderCollection.Remove("Content-Encoding");
}
else if (encoding.IndexOf("deflate") != -1)
{
- responseStream = new DeflateStream(responseStream, CompressionMode.Decompress);
+ using (var deflateStream = new DeflateStream(responseStream, CompressionMode.Decompress))
+ {
+ bytes = deflateStream.ToBytes();
+ }
webHeaderCollection.Remove("Content-Encoding");
}
}
}
- return responseStream.ToBytes();
-
+ if (bytes == null) bytes = responseStream.ToBytes();
+ return bytes;
}
}
diff --git a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs
index 6d4e6b6b30..660daad5a2 100644
--- a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs
+++ b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs
@@ -1,4 +1,6 @@
using System;
+using System.IO;
+using System.IO.Compression;
using System.Net;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
@@ -20,72 +22,106 @@ public ManagedHttpDispatcher(IHttpProxySettingsProvider proxySettingsProvider, I
public HttpResponse GetResponse(HttpRequest request, CookieContainer cookies)
{
- var webRequest = (HttpWebRequest)WebRequest.Create((Uri)request.Url);
-
- // Deflate is not a standard and could break depending on implementation.
- // we should just stick with the more compatible Gzip
- //http://stackoverflow.com/questions/8490718/how-to-decompress-stream-deflated-with-java-util-zip-deflater-in-net
- webRequest.AutomaticDecompression = DecompressionMethods.GZip;
-
- webRequest.Method = request.Method.ToString();
- webRequest.UserAgent = request.UseSimplifiedUserAgent ? UserAgentBuilder.UserAgentSimplified : UserAgentBuilder.UserAgent;
- webRequest.KeepAlive = request.ConnectionKeepAlive;
- webRequest.AllowAutoRedirect = false;
- webRequest.CookieContainer = cookies;
-
- if (request.RequestTimeout != TimeSpan.Zero)
- {
- webRequest.Timeout = (int)Math.Ceiling(request.RequestTimeout.TotalMilliseconds);
- }
-
- AddProxy(webRequest, request);
-
- if (request.Headers != null)
- {
- AddRequestHeaders(webRequest, request.Headers);
- }
-
- if (request.ContentData != null)
- {
- webRequest.ContentLength = request.ContentData.Length;
- using (var writeStream = webRequest.GetRequestStream())
- {
- writeStream.Write(request.ContentData, 0, request.ContentData.Length);
- }
- }
-
- HttpWebResponse httpWebResponse;
-
+ HttpWebResponse httpWebResponse = null;
+ HttpWebRequest webRequest = null;
try
{
- httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
+ webRequest = (HttpWebRequest) WebRequest.Create((Uri) request.Url);
+
+ if (OsInfo.IsMonoRuntime)
+ {
+ // On Mono GZipStream/DeflateStream leaks memory if an exception is thrown, use an intermediate buffer in that case.
+ webRequest.AutomaticDecompression = DecompressionMethods.None;
+ webRequest.Headers.Add("Accept-Encoding", "gzip");
+ }
+ else
+ {
+ // Deflate is not a standard and could break depending on implementation.
+ // we should just stick with the more compatible Gzip
+ //http://stackoverflow.com/questions/8490718/how-to-decompress-stream-deflated-with-java-util-zip-deflater-in-net
+ webRequest.AutomaticDecompression = DecompressionMethods.GZip;
+ }
+
+ webRequest.Method = request.Method.ToString();
+ webRequest.UserAgent = request.UseSimplifiedUserAgent
+ ? UserAgentBuilder.UserAgentSimplified
+ : UserAgentBuilder.UserAgent;
+ webRequest.KeepAlive = request.ConnectionKeepAlive;
+ webRequest.AllowAutoRedirect = false;
+ webRequest.CookieContainer = cookies;
+
+ if (request.RequestTimeout != TimeSpan.Zero)
+ {
+ webRequest.Timeout = (int) Math.Ceiling(request.RequestTimeout.TotalMilliseconds);
+ }
+
+ AddProxy(webRequest, request);
+
+ if (request.Headers != null)
+ {
+ AddRequestHeaders(webRequest, request.Headers);
+ }
+
+ if (request.ContentData != null)
+ {
+ webRequest.ContentLength = request.ContentData.Length;
+ using (var writeStream = webRequest.GetRequestStream())
+ {
+ writeStream.Write(request.ContentData, 0, request.ContentData.Length);
+ }
+ }
+
+ try
+ {
+ httpWebResponse = (HttpWebResponse) webRequest.GetResponse();
+ }
+ catch (WebException e)
+ {
+ if (e.Status == WebExceptionStatus.SecureChannelFailure && OsInfo.IsWindows)
+ {
+ SecurityProtocolPolicy.DisableTls12();
+ }
+
+ httpWebResponse = (HttpWebResponse) e.Response;
+
+ if (httpWebResponse == null)
+ {
+ throw;
+ }
+ }
+
+ byte[] data = null;
+
+ using (var responseStream = httpWebResponse.GetResponseStream())
+ {
+ if (responseStream != null)
+ {
+ data = responseStream.ToBytes();
+
+ if (OsInfo.IsMonoRuntime && httpWebResponse.ContentEncoding == "gzip")
+ {
+ using (var compressedStream = new MemoryStream(data))
+ using (var gzip = new GZipStream(compressedStream, CompressionMode.Decompress))
+ using (var decompressedStream = new MemoryStream())
+ {
+ gzip.CopyTo(decompressedStream);
+ data = decompressedStream.ToArray();
+ }
+
+ httpWebResponse.Headers.Remove("Content-Encoding");
+ }
+ }
+ }
+
+ return new HttpResponse(request, new HttpHeader(httpWebResponse.Headers), data,
+ httpWebResponse.StatusCode);
}
- catch (WebException e)
+ finally
{
- if (e.Status == WebExceptionStatus.SecureChannelFailure && OsInfo.IsWindows)
- {
- SecurityProtocolPolicy.DisableTls12();
- }
-
- httpWebResponse = (HttpWebResponse)e.Response;
-
- if (httpWebResponse == null)
- {
- throw;
- }
+ webRequest = null;
+ (httpWebResponse as IDisposable)?.Dispose();
+ httpWebResponse = null;
}
-
- byte[] data = null;
-
- using (var responseStream = httpWebResponse.GetResponseStream())
- {
- if (responseStream != null)
- {
- data = responseStream.ToBytes();
- }
- }
-
- return new HttpResponse(request, new HttpHeader(httpWebResponse.Headers), data, httpWebResponse.StatusCode);
}
protected virtual void AddProxy(HttpWebRequest webRequest, HttpRequest request)
diff --git a/src/NzbDrone.Common/Http/HttpClient.cs b/src/NzbDrone.Common/Http/HttpClient.cs
index 2f985d5524..1c234c4275 100644
--- a/src/NzbDrone.Common/Http/HttpClient.cs
+++ b/src/NzbDrone.Common/Http/HttpClient.cs
@@ -226,11 +226,13 @@ public void DownloadFile(string url, string fileName)
_logger.Debug("Downloading [{0}] to [{1}]", url, fileName);
var stopWatch = Stopwatch.StartNew();
- var webClient = new GZipWebClient();
- webClient.Headers.Add(HttpRequestHeader.UserAgent, UserAgentBuilder.UserAgent);
- webClient.DownloadFile(url, fileName);
- stopWatch.Stop();
- _logger.Debug("Downloading Completed. took {0:0}s", stopWatch.Elapsed.Seconds);
+ using (var webClient = new GZipWebClient())
+ {
+ webClient.Headers.Add(HttpRequestHeader.UserAgent, UserAgentBuilder.UserAgent);
+ webClient.DownloadFile(url, fileName);
+ stopWatch.Stop();
+ _logger.Debug("Downloading Completed. took {0:0}s", stopWatch.Elapsed.Seconds);
+ }
}
catch (WebException e)
{
diff --git a/src/NzbDrone.Common/Http/HttpUri.cs b/src/NzbDrone.Common/Http/HttpUri.cs
index e630e6e141..a62933e82c 100644
--- a/src/NzbDrone.Common/Http/HttpUri.cs
+++ b/src/NzbDrone.Common/Http/HttpUri.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
@@ -135,7 +135,7 @@ public HttpUri CombinePath(string path)
return new HttpUri(Scheme, Host, Port, CombinePath(Path, path), Query, Fragment);
}
- private static string CombinePath(string basePath, string relativePath)
+ public static string CombinePath(string basePath, string relativePath)
{
if (relativePath.IsNullOrWhiteSpace())
{
diff --git a/src/NzbDrone.Common/Instrumentation/GlobalExceptionHandlers.cs b/src/NzbDrone.Common/Instrumentation/GlobalExceptionHandlers.cs
index 93f66ca6d0..2fee91f562 100644
--- a/src/NzbDrone.Common/Instrumentation/GlobalExceptionHandlers.cs
+++ b/src/NzbDrone.Common/Instrumentation/GlobalExceptionHandlers.cs
@@ -44,6 +44,8 @@ private static void HandleAppDomainException(object sender, UnhandledExceptionEv
return;
}
}
+
+ Console.WriteLine(exception.StackTrace);
Console.WriteLine("EPIC FAIL: {0}", exception);
Logger.Fatal(exception, "EPIC FAIL: " + exception.Message);
diff --git a/src/NzbDrone.Common/NzbDrone.Common.csproj b/src/NzbDrone.Common/NzbDrone.Common.csproj
index a3897d3935..3e72040075 100644
--- a/src/NzbDrone.Common/NzbDrone.Common.csproj
+++ b/src/NzbDrone.Common/NzbDrone.Common.csproj
@@ -81,7 +81,7 @@
-
+
diff --git a/src/NzbDrone.Common/Properties/SharedAssemblyInfo.cs b/src/NzbDrone.Common/Properties/SharedAssemblyInfo.cs
index 09379201a5..cdb59506a9 100644
--- a/src/NzbDrone.Common/Properties/SharedAssemblyInfo.cs
+++ b/src/NzbDrone.Common/Properties/SharedAssemblyInfo.cs
@@ -1,10 +1,10 @@
-using System.Reflection;
+using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("radarr.tv")]
-[assembly: AssemblyProduct("NzbDrone")]
-[assembly: AssemblyVersion("0.1.0.*")]
+[assembly: AssemblyCompany("radarr.video")]
+[assembly: AssemblyProduct("Radarr")]
+[assembly: AssemblyVersion("10.0.0.*")]
[assembly: AssemblyCopyright("GNU General Public v3")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
diff --git a/src/NzbDrone.Core.Test/CustomFormat/QualityTagFixture.cs b/src/NzbDrone.Core.Test/CustomFormat/QualityTagFixture.cs
index 1e07a82308..4d8c965d3b 100644
--- a/src/NzbDrone.Core.Test/CustomFormat/QualityTagFixture.cs
+++ b/src/NzbDrone.Core.Test/CustomFormat/QualityTagFixture.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Text.RegularExpressions;
using FluentAssertions;
using NUnit.Framework;
@@ -23,6 +23,8 @@ public class QualityTagFixture : CoreTest
[TestCase("S_WEBdL", TagType.Source, Source.WEBDL)]
[TestCase("S_CAM", TagType.Source, Source.CAM)]
[TestCase("L_English", TagType.Language, Language.English)]
+ [TestCase("L_Italian", TagType.Language, Language.Italian)]
+ [TestCase("L_iTa", TagType.Language, Language.Italian)]
[TestCase("L_germaN", TagType.Language, Language.German)]
[TestCase("E_Director", TagType.Edition, "director")]
[TestCase("E_RX_Director('?s)?", TagType.Edition, "director('?s)?", TagModifier.Regex)]
diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs
index d5bc1eda3b..4be3a54a63 100644
--- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs
+++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/NzbgetTests/NzbgetFixture.cs
@@ -19,6 +19,7 @@ public class NzbgetFixture : DownloadClientFixtureBase
private NzbgetQueueItem _queued;
private NzbgetHistoryItem _failed;
private NzbgetHistoryItem _completed;
+ private Dictionary _configItems;
[SetUp]
public void Setup()
@@ -80,13 +81,17 @@ public void Setup()
DownloadRate = 7000000
});
- var configItems = new Dictionary();
- configItems.Add("Category1.Name", "movie");
- configItems.Add("Category1.DestDir", @"/remote/mount/movie");
+ Mocker.GetMock()
+ .Setup(v => v.GetVersion(It.IsAny()))
+ .Returns("14.0");
+
+ _configItems = new Dictionary();
+ _configItems.Add("Category1.Name", "movie");
+ _configItems.Add("Category1.DestDir", @"/remote/mount/movie");
Mocker.GetMock()
.Setup(v => v.GetConfig(It.IsAny()))
- .Returns(configItems);
+ .Returns(_configItems);
}
protected void GivenFailedDownload()
@@ -386,5 +391,18 @@ public void should_test_version(string version, bool expected)
error.IsValid.Should().Be(expected);
}
+
+ [TestCase("0", false)]
+ [TestCase("1", true)]
+ [TestCase(" 7", false)]
+ [TestCase("5000000", false)]
+ public void should_test_keephistory(string keephistory, bool expected)
+ {
+ _configItems["KeepHistory"] = keephistory;
+
+ var error = Subject.Test();
+
+ error.IsValid.Should().Be(expected);
+ }
}
}
diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/RTorrentTests/RTorrentFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/RTorrentTests/RTorrentFixture.cs
index 91fc1f0a0e..89e6ff3df5 100644
--- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/RTorrentTests/RTorrentFixture.cs
+++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/RTorrentTests/RTorrentFixture.cs
@@ -54,11 +54,11 @@ public void Setup()
protected void GivenSuccessfulDownload()
{
Mocker.GetMock()
- .Setup(s => s.AddTorrentFromUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(s => s.AddTorrentFromUrl(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Callback(PrepareClientToReturnCompletedItem);
Mocker.GetMock()
- .Setup(s => s.AddTorrentFromFile(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
+ .Setup(s => s.AddTorrentFromFile(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Callback(PrepareClientToReturnCompletedItem);
@@ -123,4 +123,4 @@ public void Download_should_return_unique_id()
id.Should().NotBeNullOrEmpty();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NzbDrone.Core.Test/Download/NzbValidationServiceFixture.cs b/src/NzbDrone.Core.Test/Download/NzbValidationServiceFixture.cs
new file mode 100644
index 0000000000..557a28ae0b
--- /dev/null
+++ b/src/NzbDrone.Core.Test/Download/NzbValidationServiceFixture.cs
@@ -0,0 +1,43 @@
+using System.IO;
+using NUnit.Framework;
+using NzbDrone.Core.Download;
+using NzbDrone.Core.Test.Framework;
+
+namespace NzbDrone.Core.Test.Download
+{
+ [TestFixture]
+ public class NzbValidationServiceFixture : CoreTest
+ {
+ private byte[] GivenNzbFile(string name)
+ {
+ return File.ReadAllBytes(GetTestPath("Files/Nzbs/" + name + ".nzb"));
+ }
+
+ [Test]
+ public void should_throw_on_invalid_nzb()
+ {
+ var filename = "NotNzb";
+ var fileContent = GivenNzbFile(filename);
+
+ Assert.Throws(() => Subject.Validate(filename, fileContent));
+ }
+
+ [Test]
+ public void should_throw_when_no_files()
+ {
+ var filename = "NoFiles";
+ var fileContent = GivenNzbFile(filename);
+
+ Assert.Throws(() => Subject.Validate(filename, fileContent));
+ }
+
+ [Test]
+ public void should_validate_nzb()
+ {
+ var filename = "ValidNzb";
+ var fileContent = GivenNzbFile(filename);
+
+ Subject.Validate(filename, fileContent);
+ }
+ }
+}
diff --git a/src/NzbDrone.Core.Test/Files/Nzbs/NoFiles.nzb b/src/NzbDrone.Core.Test/Files/Nzbs/NoFiles.nzb
new file mode 100644
index 0000000000..8a38bcf83d
--- /dev/null
+++ b/src/NzbDrone.Core.Test/Files/Nzbs/NoFiles.nzb
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/NzbDrone.Core.Test/Files/Nzbs/NotNzb.nzb b/src/NzbDrone.Core.Test/Files/Nzbs/NotNzb.nzb
new file mode 100644
index 0000000000..8ad4642189
--- /dev/null
+++ b/src/NzbDrone.Core.Test/Files/Nzbs/NotNzb.nzb
@@ -0,0 +1,102 @@
+
+
+
+
+ alt.binaries.teevee
+
+
+ ZQ9h749E781168561i4J0Q6-01m6Q3185@2894t-767038L.Pg7769
+
+
+
+
+ alt.binaries.teevee
+
+
+ 405Z5Y4066010l377VP1k6$U4873W933@f32Bs90575538201.pj54
+
+
+
+
+ alt.binaries.teevee
+
+
+ 1x9894417$M.1s25279485O1s1Fi95Z1_18Z554u440@D1k0854_134551.0794144
+ 48JYp$W18B2R1s2rI24EG7$907$r89875n60@8xK3374080716.115545M
+ 0U93471uI59Y781x77Q8-4286308-4aU35$07-179z@u90567568251.4zgUW968
+ 5119x6417a.s06F$1k46$2q89298-C0@G7C-7811268.bK9x00B
+ B8$1_h0b64Z14-16_O6$ESw481L421n9agj7731k@414.473581-K$4.0Zd5A
+ O-4731$tn71v05623J9GT.yc22O975111dR01r58065p@Da1G9L33q74h3095.5X240
+ d9R03J$07w75945Z556197z50F0w.0-5.x9$58311S@J0-v50033110.4a440EYJ
+ 05e650149.5r1Hk$E0Bko7G5B.1107mz8l17PS8F@vr816$S6T19245w.042B9
+ 245Xy0w4o$tN6428321b.n1816Q1n95bE0816Y@q-qv7E12k.F3672H.16E19
+ H681i185g64H23101kP125z41101O91P384l@E9n597k05j798D94X.2ezz1K
+ T18.6136787.HLJ806.8$Si49m0459445101Z15-5@b80M7.788598D.gXu201cR
+ Vdl8H243Go28j1o865772039416v2@090a20-v365N5S7qf.G225s6
+ S9769892v956069345.0TN.i05R@I04825Gt2706N.BAj1DT1T
+ 041800q6F28q44365799m5CQ4D43895@1Bf6268z_Q20F.045JXl
+ 1c-e034z4l$9K45i44218ss25$X5_5R-1i76$40-71P@Xt691t8B686Fgv.VBSl
+ 76l441W.R146a5368ed02cp_44171410hT.l@Z98.k.70X9c.5mZ1w49
+ 12D035G5745-KO43wZ9920ttr1338@V7d871S2-t04t8520.uQ18
+ 59V4O77211HA1f5T8h1-53952zV-55294K4M04v@kS878H3g4z.B5561.L330519
+ 44-yi1-79$751944J7094$y7-y49994440d86cSn@5C82v-1O9N.wk8wMb6
+ oF7Wj3$Ydh7e030oD4.e81JM464O791495lJ@Pm058Qt4-G8Wv.T1i1a6O1
+ 1T7_71M9d10F2.5953VP.11.4h75L@5049bBn384.14Ms
+ u8601765028G662749SD41j0m57651Zq70u1@J5281423406375.z.6PDSx57
+ XY0476$R87Y16g2n45OO335541589V140R026j@y2q9296x7f23C.sqK71b9
+ X7N3440l08B9T5940na4Ls397-T2.P5M12241525J57@r44O419p594M6G4I.d66RQ1
+ p4148978k45.t88w2K9886H4223y5553T7$7p287TN@N8e1T98b_0.mo55a14G
+ 50U0a9iP07$A66010-51h55w386f@c$42$S96V57F5u0Y.6UDV35D
+ FnKN4n2749v958xa36J2570506414D293S@8H1A1X490$z3bv.ut6KQ4N
+ q4$d0$X8x6rm85m0Ewh307m255N@t2C7484zq870u.1RLndQ
+ 364U4342$5I242404oH90-1W3c0t16705057m650Cq9f@K32rE5297347130W.UNs8evbH
+ M3081U097-r06Y.yy9-1A538001B27f@L2834Y80c7b1075.Dy150
+ 189585554.NS66E5D840N4Yq5m07NC1n@51L0393057L528n.k1Mc3j0S
+ 189048V505q89216C149I5f$53x-T@0V9i8n7o95.I.Z1lBJ5
+ 5-L.555$139r45100-S23-59859@54844694q2.3EY9b
+ 641655313y0.Z002L0g39AZ11716U-uX015PI5.v6y@veS44H89Js91903K8.P3MAvk4k
+ 1C8f-yz-U-b20.610.0P1M-6Z5418i229160865010s1@M7l210D48Nc.nB0sPmi
+ 0653$L0.58749-1U_1PS95-1h9gQ145@0117y0-1x1p-h94.za18yc5
+ 77-Mo3-a6514904987865.K0W710G4HB9237@501F7910J6j50-Bh.6cHx1
+ m4I47082655rz$b7P751u9W679475F.89p@f.o.XZv5O7y.855rgXX
+ f075$y56E57d.t11787.0$6D155735M_w89-Y57q2@x0t5H91021wZ52Vh.1h7vabU
+ H7U1331Ad7718$Y69T-q3w4$l247HV49s985J@vi800i0004p.YD5oK
+ 9nr786955Ker.M583315CoJ1-W65a817-704@IN-wU12$M1E0g466.5sMJ3
+ 0.3R9mN.n2_V086N0-4.Z5gAgZo@ey3G316U382o537.f51Ed5B
+ l106Z1-N411r7j44197l628r.b5Uwc55@k4-Cl_n5xc.1B.xZbNm
+ A91LT1X591x81.TI4130N$555A57q0@L70-p5qa50.40GB
+ V5$765JR6503w0-K63099R615736843G$Qj0ev@mz776wM86445N0.4I56ne
+ A86H2P415S689$568152-025O45V@s079644915.Dd57p0
+ 31x5o36q14y9554L42882X0Q10e360Z64W4K9Onx38D@5g1509788414q.Y8wib
+ b$6795157EX1044V964e14-Y9E68614O94C@4061937876$f5.6.19tV
+ D00v8X$b80m93181273J-g076Qj2p79867v5d9689Rb2@r0592.v900.j43E050E
+ Tf78L4e535.o86PK0S.M2R3-66012814z@q-5j89Y29J214Y902.53Ra0f
+ 7i01.23411-lQW0212-Er260e9.N5e256jx243EX@91-T.15v40K5Hj.Fo1f
+ 3A$H7m63$i595.4713vv0A4$A7Lk7Jsq@0cM0Tw4107f.B520.q5Z91
+ j572m$3h87LS$37167Wp10k41541.T779-Fn@V53C11045619xJ.52.0PnnX4v5
+ A.2d4599a720rk2IB32h0X523MjTL415v89706-7Z45y@R4746-B106358.t3g62r4
+ 5q6100961jM-G9F7t755x366zxc102M1SdMF@7394521p651X1I.AL05545a
+ 04e851111$12u2213-80VR133125B@7x8865M4hQ9$5.1N345x
+ K2476D3600-73B4W363$008s888980421f27125V$q0@0Zc0a56-m7550.1637vAr1
+ 0306u425024v448ZeCE3Q9825m9th1858@5648018-H0.2k7J4.12k0B
+ 220u4SK433564Cr2l004t0wP888545779g@19j360863S$55559m.70V7Ndr
+ 5u1q051C5Qq8Z9Iy$Z.5.1510NY.S2565n@7m.5-09$z235p74.8kW5
+ 6F472C8nh2621_X0C1093P7n39643b5p2f76s60r@1T55203qQY6.wZml1Vb
+ 5qC4568844767324-o8i05983-0f.n4.y.OBZ41f@q36B50684KU66.0R1784
+ 4P0g470-F59307aDf.JF070Xx959648dO3y00463J6s@71P$D961$C0.11.I096sQ
+ z5kod75077z01w11-A5h.wiG550.J5-p756$81.Db@5l01K49h3K.Ok4R5512
+ F3JX28.B8h90T0075-08001X5w611V071@D75X9263$6$9f.OT050p5Z
+ 2B8sT.A650z101514671183y47977219.M4211xYp@0b0021p736BX92.B0lSm4J3
+
+
+
+
+ alt.binaries.teevee
+
+
+ 16ND-8I545Pq-s107t0h07g8908870711@K401476783.5.0mFs1
+ iYdZ2D11089F310711.ci-O7O4KG03@260c03388O84Kd.GCEgv
+ r63cDD59Mg1c95738Sn75085O4X7823V1@16V6-b87O21S1937O.lw17o1VS
+
+
+
\ No newline at end of file
diff --git a/src/NzbDrone.Core.Test/Files/Nzbs/ValidNzb.nzb b/src/NzbDrone.Core.Test/Files/Nzbs/ValidNzb.nzb
new file mode 100644
index 0000000000..138b0cd555
--- /dev/null
+++ b/src/NzbDrone.Core.Test/Files/Nzbs/ValidNzb.nzb
@@ -0,0 +1,105 @@
+
+
+
+
+
+ alt.binaries.teevee
+
+
+ ZQ9h749E781168561i4J0Q6-01m6Q3185@2894t-767038L.Pg7769
+
+
+
+
+ alt.binaries.teevee
+
+
+ 405Z5Y4066010l377VP1k6$U4873W933@f32Bs90575538201.pj54
+
+
+
+
+ alt.binaries.teevee
+
+
+ 1x9894417$M.1s25279485O1s1Fi95Z1_18Z554u440@D1k0854_134551.0794144
+ 48JYp$W18B2R1s2rI24EG7$907$r89875n60@8xK3374080716.115545M
+ 0U93471uI59Y781x77Q8-4286308-4aU35$07-179z@u90567568251.4zgUW968
+ 5119x6417a.s06F$1k46$2q89298-C0@G7C-7811268.bK9x00B
+ B8$1_h0b64Z14-16_O6$ESw481L421n9agj7731k@414.473581-K$4.0Zd5A
+ O-4731$tn71v05623J9GT.yc22O975111dR01r58065p@Da1G9L33q74h3095.5X240
+ d9R03J$07w75945Z556197z50F0w.0-5.x9$58311S@J0-v50033110.4a440EYJ
+ 05e650149.5r1Hk$E0Bko7G5B.1107mz8l17PS8F@vr816$S6T19245w.042B9
+ 245Xy0w4o$tN6428321b.n1816Q1n95bE0816Y@q-qv7E12k.F3672H.16E19
+ H681i185g64H23101kP125z41101O91P384l@E9n597k05j798D94X.2ezz1K
+ T18.6136787.HLJ806.8$Si49m0459445101Z15-5@b80M7.788598D.gXu201cR
+ Vdl8H243Go28j1o865772039416v2@090a20-v365N5S7qf.G225s6
+ S9769892v956069345.0TN.i05R@I04825Gt2706N.BAj1DT1T
+ 041800q6F28q44365799m5CQ4D43895@1Bf6268z_Q20F.045JXl
+ 1c-e034z4l$9K45i44218ss25$X5_5R-1i76$40-71P@Xt691t8B686Fgv.VBSl
+ 76l441W.R146a5368ed02cp_44171410hT.l@Z98.k.70X9c.5mZ1w49
+ 12D035G5745-KO43wZ9920ttr1338@V7d871S2-t04t8520.uQ18
+ 59V4O77211HA1f5T8h1-53952zV-55294K4M04v@kS878H3g4z.B5561.L330519
+ 44-yi1-79$751944J7094$y7-y49994440d86cSn@5C82v-1O9N.wk8wMb6
+ oF7Wj3$Ydh7e030oD4.e81JM464O791495lJ@Pm058Qt4-G8Wv.T1i1a6O1
+ 1T7_71M9d10F2.5953VP.11.4h75L@5049bBn384.14Ms
+ u8601765028G662749SD41j0m57651Zq70u1@J5281423406375.z.6PDSx57
+ XY0476$R87Y16g2n45OO335541589V140R026j@y2q9296x7f23C.sqK71b9
+ X7N3440l08B9T5940na4Ls397-T2.P5M12241525J57@r44O419p594M6G4I.d66RQ1
+ p4148978k45.t88w2K9886H4223y5553T7$7p287TN@N8e1T98b_0.mo55a14G
+ 50U0a9iP07$A66010-51h55w386f@c$42$S96V57F5u0Y.6UDV35D
+ FnKN4n2749v958xa36J2570506414D293S@8H1A1X490$z3bv.ut6KQ4N
+ q4$d0$X8x6rm85m0Ewh307m255N@t2C7484zq870u.1RLndQ
+ 364U4342$5I242404oH90-1W3c0t16705057m650Cq9f@K32rE5297347130W.UNs8evbH
+ M3081U097-r06Y.yy9-1A538001B27f@L2834Y80c7b1075.Dy150
+ 189585554.NS66E5D840N4Yq5m07NC1n@51L0393057L528n.k1Mc3j0S
+ 189048V505q89216C149I5f$53x-T@0V9i8n7o95.I.Z1lBJ5
+ 5-L.555$139r45100-S23-59859@54844694q2.3EY9b
+ 641655313y0.Z002L0g39AZ11716U-uX015PI5.v6y@veS44H89Js91903K8.P3MAvk4k
+ 1C8f-yz-U-b20.610.0P1M-6Z5418i229160865010s1@M7l210D48Nc.nB0sPmi
+ 0653$L0.58749-1U_1PS95-1h9gQ145@0117y0-1x1p-h94.za18yc5
+ 77-Mo3-a6514904987865.K0W710G4HB9237@501F7910J6j50-Bh.6cHx1
+ m4I47082655rz$b7P751u9W679475F.89p@f.o.XZv5O7y.855rgXX
+ f075$y56E57d.t11787.0$6D155735M_w89-Y57q2@x0t5H91021wZ52Vh.1h7vabU
+ H7U1331Ad7718$Y69T-q3w4$l247HV49s985J@vi800i0004p.YD5oK
+ 9nr786955Ker.M583315CoJ1-W65a817-704@IN-wU12$M1E0g466.5sMJ3
+ 0.3R9mN.n2_V086N0-4.Z5gAgZo@ey3G316U382o537.f51Ed5B
+ l106Z1-N411r7j44197l628r.b5Uwc55@k4-Cl_n5xc.1B.xZbNm
+ A91LT1X591x81.TI4130N$555A57q0@L70-p5qa50.40GB
+ V5$765JR6503w0-K63099R615736843G$Qj0ev@mz776wM86445N0.4I56ne
+ A86H2P415S689$568152-025O45V@s079644915.Dd57p0
+ 31x5o36q14y9554L42882X0Q10e360Z64W4K9Onx38D@5g1509788414q.Y8wib
+ b$6795157EX1044V964e14-Y9E68614O94C@4061937876$f5.6.19tV
+ D00v8X$b80m93181273J-g076Qj2p79867v5d9689Rb2@r0592.v900.j43E050E
+ Tf78L4e535.o86PK0S.M2R3-66012814z@q-5j89Y29J214Y902.53Ra0f
+ 7i01.23411-lQW0212-Er260e9.N5e256jx243EX@91-T.15v40K5Hj.Fo1f
+ 3A$H7m63$i595.4713vv0A4$A7Lk7Jsq@0cM0Tw4107f.B520.q5Z91
+ j572m$3h87LS$37167Wp10k41541.T779-Fn@V53C11045619xJ.52.0PnnX4v5
+ A.2d4599a720rk2IB32h0X523MjTL415v89706-7Z45y@R4746-B106358.t3g62r4
+ 5q6100961jM-G9F7t755x366zxc102M1SdMF@7394521p651X1I.AL05545a
+ 04e851111$12u2213-80VR133125B@7x8865M4hQ9$5.1N345x
+ K2476D3600-73B4W363$008s888980421f27125V$q0@0Zc0a56-m7550.1637vAr1
+ 0306u425024v448ZeCE3Q9825m9th1858@5648018-H0.2k7J4.12k0B
+ 220u4SK433564Cr2l004t0wP888545779g@19j360863S$55559m.70V7Ndr
+ 5u1q051C5Qq8Z9Iy$Z.5.1510NY.S2565n@7m.5-09$z235p74.8kW5
+ 6F472C8nh2621_X0C1093P7n39643b5p2f76s60r@1T55203qQY6.wZml1Vb
+ 5qC4568844767324-o8i05983-0f.n4.y.OBZ41f@q36B50684KU66.0R1784
+ 4P0g470-F59307aDf.JF070Xx959648dO3y00463J6s@71P$D961$C0.11.I096sQ
+ z5kod75077z01w11-A5h.wiG550.J5-p756$81.Db@5l01K49h3K.Ok4R5512
+ F3JX28.B8h90T0075-08001X5w611V071@D75X9263$6$9f.OT050p5Z
+ 2B8sT.A650z101514671183y47977219.M4211xYp@0b0021p736BX92.B0lSm4J3
+
+
+
+
+ alt.binaries.teevee
+
+
+ 16ND-8I545Pq-s107t0h07g8908870711@K401476783.5.0mFs1
+ iYdZ2D11089F310711.ci-O7O4KG03@260c03388O84Kd.GCEgv
+ r63cDD59Mg1c95738Sn75085O4X7823V1@16V6-b87O21S1937O.lw17o1VS
+
+
+
\ No newline at end of file
diff --git a/src/NzbDrone.Core.Test/Framework/CoreTest.cs b/src/NzbDrone.Core.Test/Framework/CoreTest.cs
index 144e519fc8..dd9221b023 100644
--- a/src/NzbDrone.Core.Test/Framework/CoreTest.cs
+++ b/src/NzbDrone.Core.Test/Framework/CoreTest.cs
@@ -30,7 +30,7 @@ protected void UseRealHttp()
Mocker.SetConstant(new CurlHttpDispatcher(Mocker.Resolve(), Mocker.Resolve()));
Mocker.SetConstant(new HttpProvider(TestLogger));
Mocker.SetConstant(new HttpClient(new IHttpRequestInterceptor[0], Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve(), TestLogger));
- Mocker.SetConstant(new SonarrCloudRequestBuilder());
+ Mocker.SetConstant(new RadarrCloudRequestBuilder());
}
//Used for tests that rely on parsing working correctly.
diff --git a/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs
index 7b5b4fc1a1..08204e6a74 100644
--- a/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs
+++ b/src/NzbDrone.Core.Test/IndexerTests/IPTorrentsTests/IPTorrentsFixture.cs
@@ -1,4 +1,4 @@
-using Moq;
+using Moq;
using NUnit.Framework;
using NzbDrone.Common.Http;
using NzbDrone.Core.Indexers;
@@ -24,6 +24,64 @@ public void Setup()
};
}
+ private void GivenOldFeedFormat()
+ {
+ Subject.Definition = new IndexerDefinition()
+ {
+ Name = "IPTorrents",
+ Settings = new IPTorrentsSettings() { BaseUrl = "https://iptorrents.com/torrents/rss?u=snip;tp=snip;3;80;93;37;download" }
+ };
+ }
+
+ private void GivenNewFeedFormat()
+ {
+ Subject.Definition = new IndexerDefinition()
+ {
+ Name = "IPTorrents",
+ Settings = new IPTorrentsSettings() { BaseUrl = "https://iptorrents.com/t.rss?u=USERID;tp=APIKEY;3;80;93;37;download" }
+ };
+ }
+
+ private void GivenFeedNoDownloadFormat()
+ {
+ Subject.Definition = new IndexerDefinition()
+ {
+ Name = "IPTorrents",
+ Settings = new IPTorrentsSettings() { BaseUrl = "https://iptorrents.com/t.rss?u=USERID;tp=APIKEY;3;80;93;37" }
+ };
+ }
+
+ [Test]
+ public void should_validate_old_feed_format()
+ {
+ GivenOldFeedFormat();
+ var validationResult = Subject.Definition.Settings.Validate();
+ validationResult.IsValid.Should().BeTrue();
+ }
+
+ [Test]
+ public void should_validate_new_feed_format()
+ {
+ GivenNewFeedFormat();
+ var validationResult = Subject.Definition.Settings.Validate();
+ validationResult.IsValid.Should().BeTrue();
+ }
+
+ [Test]
+ public void should_not_validate_bad_format()
+ {
+ var validationResult = Subject.Definition.Settings.Validate();
+ validationResult.IsValid.Should().BeFalse();
+ }
+
+ [Test]
+ public void should_not_validate_no_download_format()
+ {
+ GivenFeedNoDownloadFormat();
+ var validationResult = Subject.Definition.Settings.Validate();
+ validationResult.IsValid.Should().BeFalse();
+ }
+
[Test]
public void should_parse_recent_feed_from_IPTorrents()
{
diff --git a/src/NzbDrone.Core.Test/MediaCoverTests/CoverExistsSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaCoverTests/CoverExistsSpecificationFixture.cs
index 9b6add7bac..26d427d61a 100644
--- a/src/NzbDrone.Core.Test/MediaCoverTests/CoverExistsSpecificationFixture.cs
+++ b/src/NzbDrone.Core.Test/MediaCoverTests/CoverExistsSpecificationFixture.cs
@@ -37,15 +37,6 @@ private void GivenExistingFileSize(long bytes)
}
- private void GivenImageFileCorrupt(bool corrupt)
- {
- GivenFileExistsOnDisk();
- Mocker.GetMock()
- .Setup(c => c.IsValidGDIPlusImage(It.IsAny()))
- .Returns(!corrupt);
- }
-
-
[Test]
public void should_return_false_if_file_not_exists()
{
@@ -61,21 +52,11 @@ public void should_return_false_if_file_exists_but_diffrent_size()
Subject.AlreadyExists("http://url", "c:\\file.exe").Should().BeFalse();
}
- [Test]
- public void should_return_false_if_file_exists_and_same_size_and_corrupt()
- {
- GivenExistingFileSize(100);
- GivenImageFileCorrupt(true);
- _httpResponse.Headers.ContentLength = 100;
- Subject.AlreadyExists("http://url", "c:\\file.exe").Should().BeFalse();
- }
-
[Test]
public void should_return_true_if_file_exists_and_same_size_and_not_corrupt()
{
GivenExistingFileSize(100);
- GivenImageFileCorrupt(false);
_httpResponse.Headers.ContentLength = 100;
Subject.AlreadyExists("http://url", "c:\\file.exe").Should().BeTrue();
}
diff --git a/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs b/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs
index bc559d5487..99d0a210e7 100644
--- a/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs
+++ b/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs
@@ -8,6 +8,7 @@
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Core.MediaCover;
+using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Movies.Events;
@@ -28,6 +29,18 @@ public void Setup()
.With(v => v.Id = 2)
.With(v => v.Images = new List { new MediaCover.MediaCover(MediaCoverTypes.Poster, "") })
.Build();
+
+ Mocker.GetMock().Setup(m => m.GetMovie(It.Is(id => id == _movie.Id))).Returns(_movie);
+ }
+
+ private void ExecuteAndVerifyCommand(Movie movie)
+ {
+ Subject.HandleAsync(new MovieUpdatedEvent(movie));
+
+ Mocker.GetMock()
+ .Verify(v => v.Push(It.Is(c => c.MovieId == movie.Id), It.IsAny(), It.IsAny()), Times.Once());
+
+ Subject.Execute(new EnsureMediaCoversCommand(movie.Id));
}
[Test]
@@ -76,7 +89,7 @@ public void should_resize_covers_if_main_downloaded()
.Setup(v => v.FileExists(It.IsAny()))
.Returns(true);
- Subject.HandleAsync(new MovieUpdatedEvent(_movie));
+ ExecuteAndVerifyCommand(_movie);
Mocker.GetMock()
.Verify(v => v.Resize(It.IsAny(), It.IsAny(), It.IsAny()), Times.Exactly(2));
@@ -93,7 +106,7 @@ public void should_resize_covers_if_missing()
.Setup(v => v.FileExists(It.IsAny()))
.Returns(false);
- Subject.HandleAsync(new MovieUpdatedEvent(_movie));
+ ExecuteAndVerifyCommand(_movie);
Mocker.GetMock()
.Verify(v => v.Resize(It.IsAny(), It.IsAny(), It.IsAny()), Times.Exactly(2));
@@ -114,7 +127,7 @@ public void should_not_resize_covers_if_exists()
.Setup(v => v.GetFileSize(It.IsAny()))
.Returns(1000);
- Subject.HandleAsync(new MovieUpdatedEvent(_movie));
+ ExecuteAndVerifyCommand(_movie);
Mocker.GetMock()
.Verify(v => v.Resize(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never());
@@ -135,7 +148,7 @@ public void should_resize_covers_if_existing_is_empty()
.Setup(v => v.GetFileSize(It.IsAny()))
.Returns(0);
- Subject.HandleAsync(new MovieUpdatedEvent(_movie));
+ ExecuteAndVerifyCommand(_movie);
Mocker.GetMock()
.Verify(v => v.Resize(It.IsAny(), It.IsAny(), It.IsAny()), Times.Exactly(2));
@@ -156,7 +169,7 @@ public void should_log_error_if_resize_failed()
.Setup(v => v.Resize(It.IsAny(), It.IsAny(), It.IsAny()))
.Throws();
- Subject.HandleAsync(new MovieUpdatedEvent(_movie));
+ ExecuteAndVerifyCommand(_movie);
Mocker.GetMock()
.Verify(v => v.Resize(It.IsAny(), It.IsAny(), It.IsAny()), Times.Exactly(2));
diff --git a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs
index 42ad53e72b..aef8580d5c 100644
--- a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs
+++ b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs
@@ -53,7 +53,7 @@ public void get_info()
info.AudioBitrate.Should().Be(128000);
info.AudioChannels.Should().Be(2);
info.AudioLanguages.Should().Be("English");
- info.AudioAdditionalFeatures.Should().Be("");
+ info.AudioAdditionalFeatures.Should().Be("LC");
info.Height.Should().Be(320);
info.RunTime.Seconds.Should().Be(10);
info.ScanType.Should().Be("Progressive");
@@ -90,7 +90,7 @@ public void get_info_unicode()
info.AudioBitrate.Should().Be(128000);
info.AudioChannels.Should().Be(2);
info.AudioLanguages.Should().Be("English");
- info.AudioAdditionalFeatures.Should().Be("");
+ info.AudioAdditionalFeatures.Should().Be("LC");
info.Height.Should().Be(320);
info.RunTime.Seconds.Should().Be(10);
info.ScanType.Should().Be("Progressive");
diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index 695786ddbb..7090bbbb02 100644
--- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -195,6 +195,7 @@
+
@@ -553,6 +554,15 @@
+
+ Always
+
+
+ Always
+
+
+ Always
+
Always
@@ -584,4 +594,4 @@
-->
-
+
\ No newline at end of file
diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs
index ab5e0a79d6..e33b7015da 100644
--- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs
+++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs
@@ -49,6 +49,7 @@ public class LanguageParserFixture : CoreTest
[TestCase("The Danish Girl 2015", Language.English)]
[TestCase("Nocturnal Animals (2016) MULTi VFQ English [1080p] BluRay x264-PopHD", Language.English, Language.French)]
[TestCase("Wonder.Woman.2017.720p.BluRay.DD5.1.x264-TayTO.CZ-FTU", Language.Czech)]
+ [TestCase("Fantastic.Beasts.The.Crimes.Of.Grindelwald.2018.2160p.WEBRip.x265.10bit.HDR.DD5.1-GASMASK", Language.English)]
public void should_parse_language(string postTitle, params Language[] languages)
{
var movieInfo = Parser.Parser.ParseMovieTitle(postTitle, true);
@@ -65,6 +66,8 @@ public void should_parse_language(string postTitle, params Language[] languages)
[TestCase("2 Broke Girls - S01E01 - Pilot.en.sub", Language.English)]
[TestCase("2 Broke Girls - S01E01 - Pilot.eng.sub", Language.English)]
[TestCase("2 Broke Girls - S01E01 - Pilot.sub", Language.Unknown)]
+ [TestCase("2 Broke Girls - S01E01 - Pilot.eng.forced.sub", Language.English)]
+ [TestCase("2 Broke Girls - S01E01 - Pilot-eng-forced.sub", Language.English)]
public void should_parse_subtitle_language(string fileName, Language language)
{
var result = LanguageParser.ParseSubtitleLanguage(fileName);
diff --git a/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs
index 71e1b1d39b..97cd784ecb 100644
--- a/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs
+++ b/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs
@@ -43,7 +43,8 @@ public void should_remove_accents_from_title()
[TestCase("To.Live.and.Die.in.L.A.1985.1080p.BluRay", "To Live and Die in L.A.")]
[TestCase("A.I.Artificial.Intelligence.(2001)", "A.I. Artificial Intelligence")]
[TestCase("A.Movie.Name.(1998)", "A Movie Name")]
- [TestCase("Thor: The Dark World 2013", "Thor The Dark World")]
+ [TestCase("www.Torrenting.com - Revenge.2008.720p.X264-DIMENSION", "Revenge")]
+ [TestCase("Thor: The Dark World 2013", "Thor The Dark World")]
[TestCase("Resident.Evil.The.Final.Chapter.2016", "Resident Evil The Final Chapter")]
[TestCase("Der.Soldat.James.German.Bluray.FuckYou.Pso.Why.cant.you.follow.scene.rules.1998", "Der Soldat James")]
[TestCase("Passengers.German.DL.AC3.Dubbed..BluRay.x264-PsO", "Passengers")]
@@ -52,7 +53,10 @@ public void should_remove_accents_from_title()
[TestCase("Mission Impossible: Rogue Nation (2015)�[XviD - Ita Ac3 - SoftSub Ita]azione, spionaggio, thriller *Prima Visione* Team mulnic Tom Cruise", "Mission Impossible Rogue Nation")]
[TestCase("Scary.Movie.2000.FRENCH..BluRay.-AiRLiNE", "Scary Movie")]
[TestCase("My Movie 1999 German Bluray", "My Movie")]
- public void should_parse_movie_title(string postTitle, string title)
+ [TestCase("Leaving Jeruselem by Railway (1897) [DVD].mp4", "Leaving Jeruselem by Railway")]
+ [TestCase("Climax.2018.1080p.AMZN.WEB-DL.DD5.1.H.264-NTG", "Climax")]
+ [TestCase("Movie.Title.Imax.2018.1080p.AMZN.WEB-DL.DD5.1.H.264-NTG", "Movie Title")]
+ public void should_parse_movie_title(string postTitle, string title)
{
Parser.Parser.ParseMovieTitle(postTitle, true).MovieTitle.Should().Be(title);
}
@@ -66,6 +70,7 @@ public void should_parse_movie_folder_name(string postTitle, string title)
[TestCase("1941.1979.EXTENDED.720p.BluRay.X264-AMIABLE", 1979)]
[TestCase("Valana la Legende FRENCH BluRay 720p 2016 kjhlj", 2016)]
[TestCase("Der.Soldat.James.German.Bluray.FuckYou.Pso.Why.cant.you.follow.scene.rules.1998", 1998)]
+ [TestCase("Leaving Jeruselem by Railway (1897) [DVD].mp4", 1897)]
public void should_parse_movie_year(string postTitle, int year)
{
Parser.Parser.ParseMovieTitle(postTitle, false).Year.Should().Be(year);
@@ -108,6 +113,7 @@ public void should_parse_movie_year(string postTitle, int year)
[TestCase("My.Movie.GERMAN.Extended.Cut.2016", "Extended Cut")]
[TestCase("My.Movie.GERMAN.Extended.Cut", "Extended Cut")]
[TestCase("Mission Impossible: Rogue Nation 2012 Bluray", "")]
+ [TestCase("Loving.Pablo.2018.TS.FRENCH.MD.x264-DROGUERiE","")]
public void should_parse_edition(string postTitle, string edition)
{
var parsed = Parser.Parser.ParseMovieTitle(postTitle, true);
diff --git a/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs
index 97772a131f..2ecd373b3a 100644
--- a/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs
+++ b/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs
@@ -207,6 +207,9 @@ public void should_parse_webdl2160p_quality(string title, bool proper)
[TestCase("[Elysium]Lucky.Star.01(BD.720p.AAC.DA)[0BB96AD8].mkv", false)]
[TestCase("Battlestar.Galactica.S01E01.33.720p.HDDVD.x264-SiNNERS.mkv", false)]
[TestCase("The.Expanse.S01E07.RERIP.720p.BluRay.x264-DEMAND", true)]
+ [TestCase("John.Carpenter.Live.Retrospective.2016.2018.720p.MBluRay.x264-CRUELTY.mkv", false)]
+ [TestCase("Heart.Live.In.Atlantic.City.2019.720p.MBLURAY.x264-MBLURAYFANS.mkv", false)]
+ [TestCase("Opeth.Garden.Of.The.Titans.Live.At.Red.Rocks.Amphitheatre.2017.720p.MBluRay.x264-TREBLE.mkv", false)]
public void should_parse_bluray720p_quality(string title, bool proper)
{
ParseAndVerifyQuality(title, Source.BLURAY, proper, Resolution.R720P);
@@ -221,6 +224,9 @@ public void should_parse_bluray720p_quality(string title, bool proper)
[TestCase("[Zurako] Log Horizon - 01 - The Apocalypse (BD 1080p AAC) [7AE12174].mkv", false)]
[TestCase("WEEDS.S03E01-06.DUAL.1080p.Blu-ray.AC3.-HELLYWOOD.avi", false)]
[TestCase("[Coalgirls]_Durarara!!_01_(1920x1080_Blu-ray_FLAC)_[8370CB8F].mkv", false)]
+ [TestCase("John.Carpenter.Live.Retrospective.2016.2018.1080p.MBluRay.x264-CRUELTY.mkv", false)]
+ [TestCase("Heart.Live.In.Atlantic.City.2019.1080p.MBLURAY.x264-MBLURAYFANS.mkv", false)]
+ [TestCase("Opeth.Garden.Of.The.Titans.Live.At.Red.Rocks.Amphitheatre.2017.1080p.MBluRay.x264-TREBLE.mkv", false)]
public void should_parse_bluray1080p_quality(string title, bool proper)
{
ParseAndVerifyQuality(title, Source.BLURAY, proper, Resolution.R1080P);
diff --git a/src/NzbDrone.Core.Test/ParserTests/ReleaseGroupParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/ReleaseGroupParserFixture.cs
index 0645464919..0690e4d6e6 100644
--- a/src/NzbDrone.Core.Test/ParserTests/ReleaseGroupParserFixture.cs
+++ b/src/NzbDrone.Core.Test/ParserTests/ReleaseGroupParserFixture.cs
@@ -26,6 +26,9 @@ public class ReleaseGroupParserFixture : CoreTest
[TestCase("[ www.Torrenting.com ] - Revenge.S03E14.720p.HDTV.X264-DIMENSION", "DIMENSION")]
[TestCase("Seed S02E09 HDTV x264-2HD [eztv]-[rarbg.com]", "2HD")]
[TestCase("7s-atlantis-s02e01-720p.mkv", null)]
+ [TestCase("The.Middle.720p.HEVC.x265-MeGusta-Pre", "MeGusta")]
+ [TestCase("Haunted.Hayride.2018.720p.WEBRip.DDP5.1.x264-NTb-postbot", "NTb")]
+ [TestCase("Haunted.Hayride.2018.720p.WEBRip.DDP5.1.x264-NTb-xpost", "NTb")]
//[TestCase("", "")]
public void should_parse_release_group(string title, string expected)
{
diff --git a/src/NzbDrone.Core/Authentication/UserRepository.cs b/src/NzbDrone.Core/Authentication/UserRepository.cs
index 0c6539dd7c..bb3ffa7c93 100644
--- a/src/NzbDrone.Core/Authentication/UserRepository.cs
+++ b/src/NzbDrone.Core/Authentication/UserRepository.cs
@@ -20,12 +20,12 @@ public UserRepository(IMainDatabase database, IEventAggregator eventAggregator)
public User FindUser(string username)
{
- return Query.Where(u => u.Username == username).SingleOrDefault();
+ return Query(q => q.Where(u => u.Username == username).SingleOrDefault());
}
public User FindUser(Guid identifier)
{
- return Query.Where(u => u.Identifier == identifier).SingleOrDefault();
+ return Query(q => q.Where(u => u.Identifier == identifier).SingleOrDefault());
}
}
}
diff --git a/src/NzbDrone.Core/Backup/MakeDatabaseBackup.cs b/src/NzbDrone.Core/Backup/MakeDatabaseBackup.cs
index bafcd8232e..2b82e4bc38 100644
--- a/src/NzbDrone.Core/Backup/MakeDatabaseBackup.cs
+++ b/src/NzbDrone.Core/Backup/MakeDatabaseBackup.cs
@@ -26,7 +26,11 @@ public MakeDatabaseBackup(Logger logger)
public void BackupDatabase(IDatabase database, string targetDirectory)
{
- var sourceConnectionString = database.GetDataMapper().ConnectionString;
+ var sourceConnectionString = "";
+ using (var db = database.GetDataMapper())
+ {
+ sourceConnectionString = db.ConnectionString;
+ }
var backupConnectionStringBuilder = new SQLiteConnectionStringBuilder(sourceConnectionString);
backupConnectionStringBuilder.DataSource = Path.Combine(targetDirectory, Path.GetFileName(backupConnectionStringBuilder.DataSource));
diff --git a/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs b/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs
index 168e495c51..a3678910c2 100644
--- a/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs
+++ b/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs
@@ -22,19 +22,19 @@ public BlacklistRepository(IMainDatabase database, IEventAggregator eventAggrega
public List BlacklistedByTitle(int movieId, string sourceTitle)
{
- return Query.Where(e => e.MovieId == movieId)
- .AndWhere(e => e.SourceTitle.Contains(sourceTitle));
+ return Query(q => q.Where(e => e.MovieId == movieId)
+ .AndWhere(e => e.SourceTitle.Contains(sourceTitle)).ToList());
}
public List BlacklistedByTorrentInfoHash(int movieId, string torrentInfoHash)
{
- return Query.Where(e => e.MovieId == movieId)
- .AndWhere(e => e.TorrentInfoHash.Contains(torrentInfoHash));
+ return Query(q => q.Where(e => e.MovieId == movieId)
+ .AndWhere(e => e.TorrentInfoHash.Contains(torrentInfoHash)).ToList());
}
public List BlacklistedByMovie(int movieId)
{
- return Query.Where(b => b.MovieId == movieId);
+ return Query(q => q.Where(b => b.MovieId == movieId).ToList());
}
protected override SortBuilder GetPagedQuery(QueryBuilder query, PagingSpec pagingSpec)
diff --git a/src/NzbDrone.Core/Configuration/ConfigRepository.cs b/src/NzbDrone.Core/Configuration/ConfigRepository.cs
index c9092c7e5d..375980f9bf 100644
--- a/src/NzbDrone.Core/Configuration/ConfigRepository.cs
+++ b/src/NzbDrone.Core/Configuration/ConfigRepository.cs
@@ -21,7 +21,7 @@ public ConfigRepository(IMainDatabase database, IEventAggregator eventAggregator
public Config Get(string key)
{
- return Query.Where(c => c.Key == key).SingleOrDefault();
+ return Query(q => q.Where(c => c.Key == key).SingleOrDefault());
}
public Config Upsert(string key, string value)
diff --git a/src/NzbDrone.Core/CustomFormats/FormatTag.cs b/src/NzbDrone.Core/CustomFormats/FormatTag.cs
index 0297231b17..083a4fc717 100644
--- a/src/NzbDrone.Core/CustomFormats/FormatTag.cs
+++ b/src/NzbDrone.Core/CustomFormats/FormatTag.cs
@@ -83,7 +83,9 @@ private bool DoesItMatchWithoutMods(ParsedMovieInfo movieInfo)
var tuple = Value as (long, long)? ?? (0, 0);
return size > tuple.Item1 && size < tuple.Item2;
case TagType.Indexer:
+#if !LIBRARY
return (movieInfo.ExtraInfo.GetValueOrDefault("IndexerFlags") as IndexerFlags?)?.HasFlag((IndexerFlags) Value) == true;
+#endif
default:
return false;
}
@@ -188,6 +190,7 @@ private void ParseRawMatch(Match match)
Value = Parser.LanguageParser.ParseLanguages(value).First();
break;
case "i":
+#if !LIBRARY
TagType = TagType.Indexer;
var flagValues = Enum.GetValues(typeof(IndexerFlags));
@@ -198,7 +201,7 @@ private void ParseRawMatch(Match match)
Value = flagValue;
break;
}
-
+#endif
break;
case "g":
TagType = TagType.Size;
diff --git a/src/NzbDrone.Core/Datastore/BasicRepository.cs b/src/NzbDrone.Core/Datastore/BasicRepository.cs
index 2a073556a2..dd102a6db3 100644
--- a/src/NzbDrone.Core/Datastore/BasicRepository.cs
+++ b/src/NzbDrone.Core/Datastore/BasicRepository.cs
@@ -42,7 +42,10 @@ namespace NzbDrone.Core.Datastore
private readonly IDatabase _database;
private readonly IEventAggregator _eventAggregator;
- protected IDataMapper DataMapper => _database.GetDataMapper();
+ protected IDataMapper DataMapper()
+ {
+ return _database.GetDataMapper();
+ }
public BasicRepository(IDatabase database, IEventAggregator eventAggregator)
{
@@ -50,26 +53,40 @@ public BasicRepository(IDatabase database, IEventAggregator eventAggregator)
_eventAggregator = eventAggregator;
}
- protected QueryBuilder Query => AddJoinQueries(DataMapper.Query());
+
+ protected T Query(Func, T> finalizeQuery)
+ {
+ using (var mapper = DataMapper())
+ {
+ var query = AddJoinQueries(mapper.Query());
+ return finalizeQuery(query);
+ }
+ }
protected void Delete(Expression> filter)
{
- DataMapper.Delete(filter);
+ using (var db = DataMapper())
+ {
+ db.Delete(filter);
+ }
}
public IEnumerable All()
{
- return Query.ToList();
+ return Query((q => q.ToList()));
}
public int Count()
{
- return DataMapper.Query().GetRowCount();
+ using (var db = DataMapper())
+ {
+ return db.Query().GetRowCount();
+ }
}
public TModel Get(int id)
{
- var model = Query.Where(c => c.Id == id).SingleOrDefault();
+ TModel model = Query(q => q.Where(c => c.Id == id).SingleOrDefault());
if (model == null)
{
@@ -83,7 +100,7 @@ public IEnumerable Get(IEnumerable ids)
{
var idList = ids.ToList();
var query = string.Format("Id IN ({0})", string.Join(",", idList));
- var result = Query.Where(m => m.Id.In(idList)).ToList();
+ var result = Query(q => q.Where(m => m.Id.In(idList)).ToList());
//var result = Query.Where(query).ToList();
if (result.Count != idList.Count())
@@ -111,7 +128,10 @@ public TModel Insert(TModel model)
throw new InvalidOperationException("Can't insert model with existing ID " + model.Id);
}
- DataMapper.Insert(model);
+ using (var db = DataMapper())
+ {
+ db.Insert(model);
+ }
ModelCreated(model);
@@ -125,7 +145,10 @@ public TModel Update(TModel model)
throw new InvalidOperationException("Can't update model with ID 0");
}
- DataMapper.Update(model, c => c.Id == model.Id);
+ using (var db = DataMapper())
+ {
+ db.Update(model, c => c.Id == model.Id);
+ }
ModelUpdated(model);
@@ -139,7 +162,7 @@ public void Delete(TModel model)
public void InsertMany(IList models)
{
- using (var unitOfWork = new UnitOfWork(() => DataMapper))
+ using (var unitOfWork = new UnitOfWork(() => DataMapper()))
{
unitOfWork.BeginTransaction(IsolationLevel.ReadCommitted);
@@ -154,7 +177,7 @@ public void InsertMany(IList models)
public void UpdateMany(IList models)
{
- using (var unitOfWork = new UnitOfWork(() => DataMapper))
+ using (var unitOfWork = new UnitOfWork(() => DataMapper()))
{
unitOfWork.BeginTransaction(IsolationLevel.ReadCommitted);
@@ -192,12 +215,15 @@ public TModel Upsert(TModel model)
public void Delete(int id)
{
- DataMapper.Delete(c => c.Id == id);
+ using (var db = DataMapper())
+ {
+ db.Delete(c => c.Id == id);
+ }
}
public void DeleteMany(IEnumerable ids)
{
- using (var unitOfWork = new UnitOfWork(() => DataMapper))
+ using (var unitOfWork = new UnitOfWork(() => DataMapper()))
{
unitOfWork.BeginTransaction(IsolationLevel.ReadCommitted);
@@ -214,7 +240,10 @@ public void DeleteMany(IEnumerable ids)
public void Purge(bool vacuum = false)
{
- DataMapper.Delete(c => c.Id > -1);
+ using (var db = DataMapper())
+ {
+ db.Delete(c => c.Id > -1);
+ }
if (vacuum)
{
Vacuum();
@@ -238,20 +267,23 @@ public void SetFields(TModel model, params Expression>[] pr
throw new InvalidOperationException("Attempted to updated model without ID");
}
- DataMapper.Update()
- .Where(c => c.Id == model.Id)
- .ColumnsIncluding(properties)
- .Entity(model)
- .Execute();
+ using (var db = DataMapper())
+ {
+ db.Update()
+ .Where(c => c.Id == model.Id)
+ .ColumnsIncluding(properties)
+ .Entity(model)
+ .Execute();
+ }
ModelUpdated(model);
}
public virtual PagingSpec GetPaged(PagingSpec pagingSpec)
{
- pagingSpec.Records = GetPagedQuery(Query, pagingSpec).Skip(pagingSpec.PagingOffset())
- .Take(pagingSpec.PageSize).ToList();
- pagingSpec.TotalRecords = GetPagedQuery(Query, pagingSpec).GetRowCount();
+ pagingSpec.Records = Query(q => GetPagedQuery(q, pagingSpec).Skip(pagingSpec.PagingOffset())
+ .Take(pagingSpec.PageSize).ToList());
+ pagingSpec.TotalRecords = Query(q => GetPagedQuery(q, pagingSpec).GetRowCount());
return pagingSpec;
}
@@ -285,7 +317,7 @@ private void PublishModelEvent(TModel model, ModelAction action)
}
}
- protected virtual QueryBuilder AddJoinQueries(QueryBuilder baseQuery)
+ protected virtual QueryBuilder AddJoinQueries(QueryBuilder baseQuery)
{
return baseQuery;
}
diff --git a/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs b/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs
index 522b72e943..366b084a3d 100644
--- a/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs
+++ b/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs
@@ -35,7 +35,7 @@ private static string GetConnectionString(string dbPath)
var connectionBuilder = new SQLiteConnectionStringBuilder();
connectionBuilder.DataSource = dbPath;
- connectionBuilder.CacheSize = (int)-10.Megabytes();
+ connectionBuilder.CacheSize = (int)-20000;
connectionBuilder.DateTimeKind = DateTimeKind.Utc;
connectionBuilder.JournalMode = OsInfo.IsOsx ? SQLiteJournalModeEnum.Truncate : SQLiteJournalModeEnum.Wal;
connectionBuilder.Pooling = true;
diff --git a/src/NzbDrone.Core/Datastore/Database.cs b/src/NzbDrone.Core/Datastore/Database.cs
index 991cd9b0ea..2a8417ed65 100644
--- a/src/NzbDrone.Core/Datastore/Database.cs
+++ b/src/NzbDrone.Core/Datastore/Database.cs
@@ -34,8 +34,11 @@ public Version Version
{
get
{
- var version = _datamapperFactory().ExecuteScalar("SELECT sqlite_version()").ToString();
- return new Version(version);
+ using (var db = _datamapperFactory())
+ {
+ var version = db.ExecuteScalar("SELECT sqlite_version()").ToString();
+ return new Version(version);
+ }
}
}
@@ -44,7 +47,10 @@ public void Vacuum()
try
{
_logger.Info("Vacuuming {0} database", _databaseName);
- _datamapperFactory().ExecuteNonQuery("Vacuum;");
+ using (var db = _datamapperFactory())
+ {
+ db.ExecuteNonQuery("Vacuum;");
+ }
_logger.Info("{0} database compressed", _databaseName);
}
catch (Exception e)
diff --git a/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs b/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs
index ac71563f0f..29f6b14c22 100644
--- a/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs
+++ b/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs
@@ -25,8 +25,9 @@ public UsenetBlackhole(IScanWatchFolder scanWatchFolder,
INamingConfigService namingConfigService,
IDiskProvider diskProvider,
IRemotePathMappingService remotePathMappingService,
+ IValidateNzbs nzbValidationService,
Logger logger)
- : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, logger)
+ : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, nzbValidationService, logger)
{
_scanWatchFolder = scanWatchFolder;
diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs
index e8113a9085..04b041986a 100644
--- a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs
+++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs
@@ -34,9 +34,10 @@ public UsenetDownloadStation(ISharedFolderResolver sharedFolderResolver,
INamingConfigService namingConfigService,
IDiskProvider diskProvider,
IRemotePathMappingService remotePathMappingService,
+ IValidateNzbs nzbValidationService,
Logger logger
)
- : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, logger)
+ : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, nzbValidationService, logger)
{
_dsInfoProxy = dsInfoProxy;
_dsTaskProxy = dsTaskProxy;
diff --git a/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs b/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs
index 330706b6b1..b2e7dec4b4 100644
--- a/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs
+++ b/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs
@@ -25,8 +25,9 @@ public NzbVortex(INzbVortexProxy proxy,
INamingConfigService namingConfigService,
IDiskProvider diskProvider,
IRemotePathMappingService remotePathMappingService,
+ IValidateNzbs nzbValidationService,
Logger logger)
- : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, logger)
+ : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, nzbValidationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs
index beaabf2415..ca6ea4a771 100644
--- a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs
+++ b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs
@@ -12,6 +12,7 @@
using NzbDrone.Core.Validation;
using NzbDrone.Core.RemotePathMappings;
using NzbDrone.Core.Organizer;
+using System.Globalization;
namespace NzbDrone.Core.Download.Clients.Nzbget
{
@@ -27,8 +28,9 @@ public Nzbget(INzbgetProxy proxy,
INamingConfigService namingConfigService,
IDiskProvider diskProvider,
IRemotePathMappingService remotePathMappingService,
+ IValidateNzbs nzbValidationService,
Logger logger)
- : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, logger)
+ : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, nzbValidationService, logger)
{
_proxy = proxy;
}
@@ -53,19 +55,8 @@ protected override string AddFromNzbFile(RemoteMovie remoteMovie, string filenam
private IEnumerable GetQueue()
{
- NzbgetGlobalStatus globalStatus;
- List queue;
-
- try
- {
- globalStatus = _proxy.GetGlobalStatus(Settings);
- queue = _proxy.GetQueue(Settings);
- }
- catch (DownloadClientException ex)
- {
- _logger.Error(ex, ex.Message);
- return Enumerable.Empty();
- }
+ var globalStatus = _proxy.GetGlobalStatus(Settings);
+ var queue = _proxy.GetQueue(Settings);
var queueItems = new List();
@@ -121,17 +112,7 @@ private IEnumerable GetQueue()
private IEnumerable GetHistory()
{
- List history;
-
- try
- {
- history = _proxy.GetHistory(Settings).Take(_configService.DownloadClientHistoryLimit).ToList();
- }
- catch (DownloadClientException ex)
- {
- _logger.Error(ex, ex.Message);
- return Enumerable.Empty();
- }
+ var history = _proxy.GetHistory(Settings).Take(_configService.DownloadClientHistoryLimit).ToList();
var historyItems = new List();
@@ -307,7 +288,7 @@ private ValidationFailure TestCategory()
{
return new NzbDroneValidationFailure("MovieCategory", "Category does not exist")
{
- InfoLink = string.Format("http://{0}:{1}/", Settings.Host, Settings.Port),
+ InfoLink = _proxy.GetBaseUrl(Settings),
DetailedDescription = "The category you entered doesn't exist in NZBGet. Go to NZBGet to create it."
};
}
@@ -319,13 +300,22 @@ private ValidationFailure TestSettings()
{
var config = _proxy.GetConfig(Settings);
- var keepHistory = config.GetValueOrDefault("KeepHistory");
- if (keepHistory == "0")
+ var keepHistory = config.GetValueOrDefault("KeepHistory", "7");
+ int value;
+ if (!int.TryParse(keepHistory, NumberStyles.None, CultureInfo.InvariantCulture, out value) || value == 0)
{
- return new NzbDroneValidationFailure(string.Empty, "NZBGet setting KeepHistory should be greater than 0")
+ return new NzbDroneValidationFailure(string.Empty, "NzbGet setting KeepHistory should be greater than 0")
{
- InfoLink = string.Format("http://{0}:{1}/", Settings.Host, Settings.Port),
- DetailedDescription = "NZBGet setting KeepHistory is set to 0. Which prevents Radarr from seeing completed downloads."
+ InfoLink = _proxy.GetBaseUrl(Settings),
+ DetailedDescription = "NzbGet setting KeepHistory is set to 0. Which prevents Radarr from seeing completed downloads."
+ };
+ }
+ else if (value > 25000)
+ {
+ return new NzbDroneValidationFailure(string.Empty, "NzbGet setting KeepHistory should be less than 25000")
+ {
+ InfoLink = _proxy.GetBaseUrl(Settings),
+ DetailedDescription = "NzbGet setting KeepHistory is set too high."
};
}
diff --git a/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs b/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs
index aece0a6158..2e2fe5c11b 100644
--- a/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs
+++ b/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetProxy.cs
@@ -11,6 +11,7 @@ namespace NzbDrone.Core.Download.Clients.Nzbget
{
public interface INzbgetProxy
{
+ string GetBaseUrl(NzbgetSettings settings, string relativePath = null);
string DownloadNzb(byte[] nzbData, string title, string category, int priority, bool addpaused, NzbgetSettings settings);
NzbgetGlobalStatus GetGlobalStatus(NzbgetSettings settings);
List GetQueue(NzbgetSettings settings);
@@ -36,9 +37,17 @@ public NzbgetProxy(IHttpClient httpClient, ICacheManager cacheManager, Logger lo
_versionCache = cacheManager.GetCache(GetType(), "versions");
}
+ public string GetBaseUrl(NzbgetSettings settings, string relativePath = null)
+ {
+ var baseUrl = HttpRequestBuilder.BuildBaseUrl(settings.UseSsl, settings.Host, settings.Port, settings.UrlBase);
+ baseUrl = HttpUri.CombinePath(baseUrl, relativePath);
+
+ return baseUrl;
+ }
+
private bool HasVersion(int minimumVersion, NzbgetSettings settings)
{
- var versionString = _versionCache.Find(settings.Host + ":" + settings.Port) ?? GetVersion(settings);
+ var versionString = _versionCache.Find(GetBaseUrl(settings)) ?? GetVersion(settings);
var version = int.Parse(versionString.Split(new[] { '.', '-' })[0]);
@@ -139,7 +148,7 @@ public string GetVersion(NzbgetSettings settings)
{
var response = ProcessRequest(settings, "version");
- _versionCache.Set(settings.Host + ":" + settings.Port, response, TimeSpan.FromDays(1));
+ _versionCache.Set(GetBaseUrl(settings), response, TimeSpan.FromDays(1));
return response;
}
@@ -170,7 +179,7 @@ public void RemoveItem(string id, NzbgetSettings settings)
queueItem = queue.SingleOrDefault(h => h.Parameters.Any(p => p.Name == "drone" && id == (p.Value as string)));
historyItem = history.SingleOrDefault(h => h.Parameters.Any(p => p.Name == "drone" && id == (p.Value as string)));
}
-
+
if (queueItem != null)
{
if (!EditQueue("GroupFinalDelete", 0, "", queueItem.NzbId, settings))
@@ -218,7 +227,7 @@ private bool EditQueue(string command, int offset, string editText, int id, Nzbg
private T ProcessRequest(NzbgetSettings settings, string method, params object[] parameters)
{
- var baseUrl = HttpRequestBuilder.BuildBaseUrl(settings.UseSsl, settings.Host, settings.Port, "jsonrpc");
+ var baseUrl = GetBaseUrl(settings, "jsonrpc");
var requestBuilder = new JsonRpcRequestBuilder(baseUrl, method, parameters);
requestBuilder.LogResponseContent = true;
diff --git a/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetSettings.cs b/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetSettings.cs
index a377e72cf9..507c030d64 100644
--- a/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetSettings.cs
+++ b/src/NzbDrone.Core/Download/Clients/Nzbget/NzbgetSettings.cs
@@ -1,4 +1,5 @@
using FluentValidation;
+using NzbDrone.Common.Extensions;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -11,6 +12,8 @@ public NzbgetSettingsValidator()
{
RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).InclusiveBetween(1, 65535);
+ RuleFor(c => c.UrlBase).ValidUrlBase().When(c => c.UrlBase.IsNotNullOrWhiteSpace());
+
RuleFor(c => c.Username).NotEmpty().When(c => !string.IsNullOrWhiteSpace(c.Password));
RuleFor(c => c.Password).NotEmpty().When(c => !string.IsNullOrWhiteSpace(c.Username));
@@ -39,25 +42,28 @@ public NzbgetSettings()
[FieldDefinition(1, Label = "Port", Type = FieldType.Textbox)]
public int Port { get; set; }
- [FieldDefinition(2, Label = "Username", Type = FieldType.Textbox)]
+ [FieldDefinition(2, Label = "Url Base", Type = FieldType.Textbox, Advanced = true, HelpText = "Adds a prefix to the nzbget url, e.g. http://[host]:[port]/[urlBase]/jsonrpc")]
+ public string UrlBase { get; set; }
+
+ [FieldDefinition(3, Label = "Username", Type = FieldType.Textbox)]
public string Username { get; set; }
- [FieldDefinition(3, Label = "Password", Type = FieldType.Password)]
+ [FieldDefinition(4, Label = "Password", Type = FieldType.Password)]
public string Password { get; set; }
- [FieldDefinition(4, Label = "Category", Type = FieldType.Textbox, HelpText = "Adding a category specific to Radarr avoids conflicts with unrelated downloads, but it's optional")]
+ [FieldDefinition(5, Label = "Category", Type = FieldType.Textbox, HelpText = "Adding a category specific to Radarr avoids conflicts with unrelated downloads, but it's optional")]
public string MovieCategory { get; set; }
- [FieldDefinition(5, Label = "Recent Priority", Type = FieldType.Select, SelectOptions = typeof(NzbgetPriority), HelpText = "Priority to use when grabbing movies that released within the last 21 days")]
+ [FieldDefinition(6, Label = "Recent Priority", Type = FieldType.Select, SelectOptions = typeof(NzbgetPriority), HelpText = "Priority to use when grabbing movies that released within the last 21 days")]
public int RecentMoviePriority { get; set; }
- [FieldDefinition(6, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(NzbgetPriority), HelpText = "Priority to use when grabbing movies that released over 21 days ago")]
+ [FieldDefinition(7, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(NzbgetPriority), HelpText = "Priority to use when grabbing movies that released over 21 days ago")]
public int OlderMoviePriority { get; set; }
- [FieldDefinition(7, Label = "Use SSL", Type = FieldType.Checkbox)]
+ [FieldDefinition(8, Label = "Use SSL", Type = FieldType.Checkbox)]
public bool UseSsl { get; set; }
- [FieldDefinition(8, Label = "Add Paused", Type = FieldType.Checkbox, HelpText = "This option requires at least NZBGet version 16.0")]
+ [FieldDefinition(9, Label = "Add Paused", Type = FieldType.Checkbox, HelpText = "This option requires at least NZBGet version 16.0")]
public bool AddPaused { get; set; }
public NzbDroneValidationResult Validate()
diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
index dd8f70ae3e..ec9c77e425 100644
--- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
+++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
@@ -154,6 +154,7 @@ public override IEnumerable GetItems()
case "stalledUP": // torrent is being seeded, but no connection were made
case "queuedUP": // queuing is enabled and torrent is queued for upload
case "checkingUP": // torrent has finished downloading and is being checked
+ case "forcedUP": // torrent is beeing seeded by force
item.Status = DownloadItemStatus.Completed;
item.RemainingTime = TimeSpan.Zero; // qBittorrent sends eta=8640000 for completed torrents
break;
@@ -164,7 +165,12 @@ public override IEnumerable GetItems()
break;
case "downloading": // torrent is being downloaded and data is being transfered
+ item.Status = DownloadItemStatus.Downloading;
+ break;
+
default: // new status in API? default to downloading
+ item.Message = "Unknown download state: " + torrent.State;
+ _logger.Warn(item.Message);
item.Status = DownloadItemStatus.Downloading;
break;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
index f1fee1c68c..84eeb4adce 100644
--- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
+++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
@@ -25,8 +25,9 @@ public Sabnzbd(ISabnzbdProxy proxy,
INamingConfigService namingConfigService,
IDiskProvider diskProvider,
IRemotePathMappingService remotePathMappingService,
+ IValidateNzbs nzbValidationService,
Logger logger)
- : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, logger)
+ : base(httpClient, configService, namingConfigService, diskProvider, remotePathMappingService, nzbValidationService, logger)
{
_proxy = proxy;
}
@@ -115,17 +116,7 @@ private IEnumerable GetQueue()
private IEnumerable GetHistory()
{
- SabnzbdHistory sabHistory;
-
- try
- {
- sabHistory = _proxy.GetHistory(0, _configService.DownloadClientHistoryLimit, Settings.MovieCategory, Settings);
- }
- catch (DownloadClientException ex)
- {
- _logger.Error(ex, ex.Message);
- return Enumerable.Empty();
- }
+ var sabHistory = _proxy.GetHistory(0, _configService.DownloadClientHistoryLimit, Settings.MovieCategory, Settings);
var historyItems = new List();
@@ -191,6 +182,7 @@ private IEnumerable GetHistory()
}
}
+
historyItems.Add(historyItem);
}
@@ -327,6 +319,11 @@ private bool HasVersion(int major, int minor, int patch = 0)
private Version ParseVersion(string version)
{
+ if (version.IsNullOrWhiteSpace())
+ {
+ return null;
+ }
+
var parsed = VersionRegex.Match(version);
int major;
@@ -364,7 +361,7 @@ private ValidationFailure TestConnectionAndVersion()
if (version == null)
{
- return new ValidationFailure("Version", "Unknown Version: " + version);
+ return new ValidationFailure("Version", "Unknown Version: " + rawVersion);
}
if (rawVersion.Equals("develop", StringComparison.InvariantCultureIgnoreCase))
@@ -424,7 +421,7 @@ private ValidationFailure TestGlobalConfig()
{
return new NzbDroneValidationFailure("", "Disable 'Check before download' option in SABnzbd")
{
- InfoLink = string.Format("http://{0}:{1}/sabnzbd/config/switches/", Settings.Host, Settings.Port),
+ InfoLink = _proxy.GetBaseUrl(Settings, "config/switches/"),
DetailedDescription = "Using Check before download affects Radarr ability to track new downloads. Also SABnzbd recommends 'Abort jobs that cannot be completed' instead since it's more effective."
};
}
@@ -443,7 +440,7 @@ private ValidationFailure TestCategory()
{
return new NzbDroneValidationFailure("MovieCategory", "Enable Job folders")
{
- InfoLink = string.Format("http://{0}:{1}/sabnzbd/config/categories/", Settings.Host, Settings.Port),
+ InfoLink = _proxy.GetBaseUrl(Settings, "config/categories/"),
DetailedDescription = "Radarr prefers each download to have a separate folder. With * appended to the Folder/Path SABnzbd will not create these job folders. Go to SABnzbd to fix it."
};
}
@@ -454,7 +451,7 @@ private ValidationFailure TestCategory()
{
return new NzbDroneValidationFailure("MovieCategory", "Category does not exist")
{
- InfoLink = string.Format("http://{0}:{1}/sabnzbd/config/categories/", Settings.Host, Settings.Port),
+ InfoLink = _proxy.GetBaseUrl(Settings, "config/categories/"),
DetailedDescription = "The category you entered doesn't exist in SABnzbd. Go to SABnzbd to create it."
};
}
@@ -463,7 +460,7 @@ private ValidationFailure TestCategory()
{
return new NzbDroneValidationFailure("MovieCategory", "Disable TV Sorting")
{
- InfoLink = string.Format("http://{0}:{1}/sabnzbd/config/sorting/", Settings.Host, Settings.Port),
+ InfoLink = _proxy.GetBaseUrl(Settings, "config/sorting/"),
DetailedDescription = "You must disable SABnzbd TV Sorting for the category Radarr uses to prevent import issues. Go to SABnzbd to fix it."
};
}
@@ -471,7 +468,7 @@ private ValidationFailure TestCategory()
{
return new NzbDroneValidationFailure("MovieCategory", "Disable Movie Sorting")
{
- InfoLink = string.Format("http://{0}:{1}/sabnzbd/config/sorting/", Settings.Host, Settings.Port),
+ InfoLink = _proxy.GetBaseUrl(Settings, "config/sorting/"),
DetailedDescription = "You must disable SABnzbd Movie Sorting for the category Radarr uses to prevent import issues. Go to SABnzbd to fix it."
};
}
@@ -479,7 +476,7 @@ private ValidationFailure TestCategory()
{
return new NzbDroneValidationFailure("MovieCategory", "Disable Date Sorting")
{
- InfoLink = string.Format("http://{0}:{1}/sabnzbd/config/sorting/", Settings.Host, Settings.Port),
+ InfoLink = _proxy.GetBaseUrl(Settings, "config/sorting/"),
DetailedDescription = "You must disable SABnzbd Date Sorting for the category Radarr uses to prevent import issues. Go to SABnzbd to fix it."
};
}
diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs
index 397771ff23..8b5e3b1853 100644
--- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs
+++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs
@@ -11,6 +11,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
{
public interface ISabnzbdProxy
{
+ string GetBaseUrl(SabnzbdSettings settings, string relativePath = null);
SabnzbdAddResponse DownloadNzb(byte[] nzbData, string filename, string category, int priority, SabnzbdSettings settings);
void RemoveFrom(string source, string id,bool deleteData, SabnzbdSettings settings);
string GetVersion(SabnzbdSettings settings);
@@ -32,6 +33,14 @@ public SabnzbdProxy(IHttpClient httpClient, Logger logger)
_logger = logger;
}
+ public string GetBaseUrl(SabnzbdSettings settings, string relativePath = null)
+ {
+ var baseUrl = HttpRequestBuilder.BuildBaseUrl(settings.UseSsl, settings.Host, settings.Port, settings.UrlBase);
+ baseUrl = HttpUri.CombinePath(baseUrl, relativePath);
+
+ return baseUrl;
+ }
+
public SabnzbdAddResponse DownloadNzb(byte[] nzbData, string filename, string category, int priority, SabnzbdSettings settings)
{
var request = BuildRequest("addfile", settings).Post();
@@ -140,10 +149,7 @@ public string RetryDownload(string id, SabnzbdSettings settings)
private HttpRequestBuilder BuildRequest(string mode, SabnzbdSettings settings)
{
- var baseUrl = string.Format(@"{0}://{1}:{2}/api",
- settings.UseSsl ? "https" : "http",
- settings.Host,
- settings.Port);
+ var baseUrl = GetBaseUrl(settings, "api");
var requestBuilder = new HttpRequestBuilder(baseUrl)
.Accept(HttpAccept.Json)
diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdSettings.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdSettings.cs
index 64ab3d3df3..13bffbaec7 100644
--- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdSettings.cs
+++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdSettings.cs
@@ -1,4 +1,5 @@
using FluentValidation;
+using NzbDrone.Common.Extensions;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -11,6 +12,7 @@ public SabnzbdSettingsValidator()
{
RuleFor(c => c.Host).ValidHost();
RuleFor(c => c.Port).InclusiveBetween(1, 65535);
+ RuleFor(c => c.UrlBase).ValidUrlBase().When(c => c.UrlBase.IsNotNullOrWhiteSpace());
RuleFor(c => c.ApiKey).NotEmpty()
.WithMessage("API Key is required when username/password are not configured")
@@ -49,25 +51,28 @@ public SabnzbdSettings()
[FieldDefinition(1, Label = "Port", Type = FieldType.Textbox)]
public int Port { get; set; }
- [FieldDefinition(2, Label = "API Key", Type = FieldType.Textbox)]
+ [FieldDefinition(2, Label = "Url Base", Type = FieldType.Textbox, Advanced = true, HelpText = "Adds a prefix to the Sabnzbd url, e.g. http://[host]:[port]/[urlBase]/api")]
+ public string UrlBase { get; set; }
+
+ [FieldDefinition(3, Label = "API Key", Type = FieldType.Textbox)]
public string ApiKey { get; set; }
- [FieldDefinition(3, Label = "Username", Type = FieldType.Textbox)]
+ [FieldDefinition(4, Label = "Username", Type = FieldType.Textbox)]
public string Username { get; set; }
- [FieldDefinition(4, Label = "Password", Type = FieldType.Password)]
+ [FieldDefinition(5, Label = "Password", Type = FieldType.Password)]
public string Password { get; set; }
- [FieldDefinition(5, Label = "Category", Type = FieldType.Textbox, HelpText = "Adding a category specific to Radarr avoids conflicts with unrelated downloads, but it's optional")]
+ [FieldDefinition(6, Label = "Category", Type = FieldType.Textbox, HelpText = "Adding a category specific to Radarr avoids conflicts with unrelated downloads, but it's optional")]
public string MovieCategory { get; set; }
- [FieldDefinition(6, Label = "Recent Priority", Type = FieldType.Select, SelectOptions = typeof(SabnzbdPriority), HelpText = "Priority to use when grabbing movies that released within the last 21 days")]
+ [FieldDefinition(7, Label = "Recent Priority", Type = FieldType.Select, SelectOptions = typeof(SabnzbdPriority), HelpText = "Priority to use when grabbing movies that released within the last 21 days")]
public int RecentMoviePriority { get; set; }
- [FieldDefinition(7, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(SabnzbdPriority), HelpText = "Priority to use when grabbing movies that released over 21 days ago")]
+ [FieldDefinition(8, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(SabnzbdPriority), HelpText = "Priority to use when grabbing movies that released over 21 days ago")]
public int OlderMoviePriority { get; set; }
- [FieldDefinition(8, Label = "Use SSL", Type = FieldType.Checkbox)]
+ [FieldDefinition(9, Label = "Use SSL", Type = FieldType.Checkbox)]
public bool UseSsl { get; set; }
public NzbDroneValidationResult Validate()
diff --git a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs
index 3ea705dd2b..114e72ed20 100644
--- a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs
+++ b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs
@@ -43,7 +43,7 @@ protected override string AddFromMagnetLink(RemoteMovie remoteMovie, string hash
{
var priority = (RTorrentPriority)(remoteMovie.Movie.IsRecentMovie ? Settings.RecentMoviePriority : Settings.OlderMoviePriority);
- _proxy.AddTorrentFromUrl(magnetLink, Settings.MovieCategory, priority, Settings.MovieDirectory, Settings);
+ _proxy.AddTorrentFromUrl(magnetLink, Settings.MovieCategory, priority, Settings.MovieDirectory, Settings.DontStartAutomatically, Settings);
var tries = 10;
var retryDelay = 500;
@@ -63,7 +63,7 @@ protected override string AddFromTorrentFile(RemoteMovie remoteMovie, string has
{
var priority = (RTorrentPriority)(remoteMovie.Movie.IsRecentMovie ? Settings.RecentMoviePriority : Settings.OlderMoviePriority);
- _proxy.AddTorrentFromFile(filename, fileContent, Settings.MovieCategory, priority, Settings.MovieDirectory, Settings);
+ _proxy.AddTorrentFromFile(filename, fileContent, Settings.MovieCategory, priority, Settings.MovieDirectory, Settings.DontStartAutomatically, Settings);
var tries = 10;
var retryDelay = 500;
diff --git a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentProxy.cs b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentProxy.cs
index dabe175a4e..500715b461 100644
--- a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentProxy.cs
+++ b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentProxy.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
@@ -13,8 +13,8 @@ public interface IRTorrentProxy
string GetVersion(RTorrentSettings settings);
List GetTorrents(RTorrentSettings settings);
- void AddTorrentFromUrl(string torrentUrl, string label, RTorrentPriority priority, string directory, RTorrentSettings settings);
- void AddTorrentFromFile(string fileName, byte[] fileContent, string label, RTorrentPriority priority, string directory, RTorrentSettings settings);
+ void AddTorrentFromUrl(string torrentUrl, string label, RTorrentPriority priority, string directory, bool doNotStart, RTorrentSettings settings);
+ void AddTorrentFromFile(string fileName, byte[] fileContent, string label, RTorrentPriority priority, string directory, bool doNotStart, RTorrentSettings settings);
void RemoveTorrent(string hash, RTorrentSettings settings);
bool HasHashTorrent(string hash, RTorrentSettings settings);
}
@@ -24,9 +24,15 @@ public interface IRTorrent : IXmlRpcProxy
[XmlRpcMethod("d.multicall2")]
object[] TorrentMulticall(params string[] parameters);
+ [XmlRpcMethod("load.normal")]
+ int Load(string target, string data, params string[] commands);
+
[XmlRpcMethod("load.start")]
int LoadStart(string target, string data, params string[] commands);
+ [XmlRpcMethod("load.raw")]
+ int LoadRaw(string target, byte[] data, params string[] commands);
+
[XmlRpcMethod("load.raw_start")]
int LoadRawStart(string target, byte[] data, params string[] commands);
@@ -102,26 +108,50 @@ public List GetTorrents(RTorrentSettings settings)
return items;
}
- public void AddTorrentFromUrl(string torrentUrl, string label, RTorrentPriority priority, string directory, RTorrentSettings settings)
+ public void AddTorrentFromUrl(string torrentUrl, string label, RTorrentPriority priority, string directory, bool doNotStart, RTorrentSettings settings)
{
- _logger.Debug("Executing remote method: load.normal");
+ _logger.Debug("Adding Torrent From URL");
var client = BuildClient(settings);
- var response = client.LoadStart("", torrentUrl, GetCommands(label, priority, directory));
+ var response = -1;
+
+ if (doNotStart)
+ {
+ _logger.Debug("Executing remote method load.normal");
+ response = client.Load("", torrentUrl, GetCommands(label, priority, directory));
+ }
+ else
+ {
+ _logger.Debug("Executing remote method load.start");
+ response = client.LoadStart("", torrentUrl, GetCommands(label, priority, directory));
+ }
+
if (response != 0)
{
throw new DownloadClientException("Could not add torrent: {0}.", torrentUrl);
}
}
- public void AddTorrentFromFile(string fileName, byte[] fileContent, string label, RTorrentPriority priority, string directory, RTorrentSettings settings)
+ public void AddTorrentFromFile(string fileName, byte[] fileContent, string label, RTorrentPriority priority, string directory, bool doNotStart, RTorrentSettings settings)
{
- _logger.Debug("Executing remote method: load.raw");
+ _logger.Debug("Loading Torrent from File");
var client = BuildClient(settings);
- var response = client.LoadRawStart("", fileContent, GetCommands(label, priority, directory));
+ var response = -1;
+
+ if (doNotStart)
+ {
+ _logger.Debug("Executing remote method load.raw");
+ response = client.LoadRaw("", fileContent, GetCommands(label, priority, directory));
+ }
+ else
+ {
+ _logger.Debug("Executing remote method load.raw_start");
+ response = client.LoadRawStart("", fileContent, GetCommands(label, priority, directory));
+ }
+
if (response != 0)
{
throw new DownloadClientException("Could not add torrent: {0}.", fileName);
@@ -202,4 +232,4 @@ private IRTorrent BuildClient(RTorrentSettings settings)
return client;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentSettings.cs b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentSettings.cs
index 8dd886a099..7718c77f33 100644
--- a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentSettings.cs
+++ b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrentSettings.cs
@@ -59,6 +59,9 @@ public RTorrentSettings()
[FieldDefinition(9, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(RTorrentPriority), HelpText = "Priority to use when grabbing movies that released over 21 days ago")]
public int OlderMoviePriority { get; set; }
+ [FieldDefinition(10, Label = "Don't start download automatically", Type = FieldType.Checkbox, Advanced = true, HelpText = "Add Download in a stopped state. This is useful for letting a Queue manager like pyrotorque automatically start the download.")]
+ public bool DontStartAutomatically { get; set; }
+
public NzbDroneValidationResult Validate()
{
return new NzbDroneValidationResult(Validator.Validate(this));
diff --git a/src/NzbDrone.Core/Download/InvalidNzbException.cs b/src/NzbDrone.Core/Download/InvalidNzbException.cs
new file mode 100644
index 0000000000..5607590d96
--- /dev/null
+++ b/src/NzbDrone.Core/Download/InvalidNzbException.cs
@@ -0,0 +1,24 @@
+using System;
+using NzbDrone.Common.Exceptions;
+
+namespace NzbDrone.Core.Download
+{
+ public class InvalidNzbException : NzbDroneException
+ {
+ public InvalidNzbException(string message, params object[] args) : base(message, args)
+ {
+ }
+
+ public InvalidNzbException(string message) : base(message)
+ {
+ }
+
+ public InvalidNzbException(string message, Exception innerException, params object[] args) : base(message, innerException, args)
+ {
+ }
+
+ public InvalidNzbException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/Download/NzbValidationService.cs b/src/NzbDrone.Core/Download/NzbValidationService.cs
new file mode 100644
index 0000000000..5385a06a86
--- /dev/null
+++ b/src/NzbDrone.Core/Download/NzbValidationService.cs
@@ -0,0 +1,45 @@
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Xml.Linq;
+using NzbDrone.Common.Extensions;
+
+namespace NzbDrone.Core.Download
+{
+ public interface IValidateNzbs
+ {
+ void Validate(string filename, byte[] fileContent);
+ }
+
+ public class NzbValidationService : IValidateNzbs
+ {
+ public void Validate(string filename, byte[] fileContent)
+ {
+ var reader = new StreamReader(new MemoryStream(fileContent));
+
+ using (var xmlTextReader = XmlReader.Create(reader, new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore, IgnoreComments = true }))
+ {
+ var xDoc = XDocument.Load(xmlTextReader);
+ var nzb = xDoc.Root;
+
+ if (nzb == null)
+ {
+ throw new InvalidNzbException("Invalid NZB: No Root element [{0}]", filename);
+ }
+
+ if (!nzb.Name.LocalName.Equals("nzb"))
+ {
+ throw new InvalidNzbException("Invalid NZB: Unexpected root element. Expected 'nzb' found '{0}' [{1}]", nzb.Name.LocalName, filename);
+ }
+
+ var ns = nzb.Name.Namespace;
+ var files = nzb.Elements(ns + "file").ToList();
+
+ if (files.Empty())
+ {
+ throw new InvalidNzbException("Invalid NZB: No files [{0}]", filename);
+ }
+ }
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs b/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs
index ddcf417691..8d9d21d580 100644
--- a/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs
+++ b/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs
@@ -24,7 +24,7 @@ public void DeleteByMovieId(int movieId)
public List AllByMovieId(int movieId)
{
- return Query.Where(p => p.MovieId == movieId);
+ return Query(q => q.Where(p => p.MovieId == movieId).ToList());
}
}
}
diff --git a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs
index b5bfa9fc07..bb061c91de 100644
--- a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs
+++ b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs
@@ -44,6 +44,20 @@ public TrackedDownload Find(string downloadId)
public TrackedDownload TrackDownload(DownloadClientDefinition downloadClient, DownloadClientItem downloadItem)
{
+ if (downloadItem.DownloadId.IsNullOrWhiteSpace())
+ {
+ _logger.Warn("The following download client item ({0}) has no download hash (id), so it cannot be tracked: {1}",
+ downloadClient.Name, downloadItem.Title);
+ return null;
+ }
+
+ if (downloadItem.Title.IsNullOrWhiteSpace())
+ {
+ _logger.Warn("The following download client item ({0}) has no title so it cannot be tracked: {1}",
+ downloadClient.Name, downloadItem.Title);
+ return null;
+ }
+
var existingItem = Find(downloadItem.DownloadId);
if (existingItem != null && existingItem.State != TrackedDownloadStage.Downloading)
diff --git a/src/NzbDrone.Core/Download/UsenetClientBase.cs b/src/NzbDrone.Core/Download/UsenetClientBase.cs
index cdcce3b68b..059f161345 100644
--- a/src/NzbDrone.Core/Download/UsenetClientBase.cs
+++ b/src/NzbDrone.Core/Download/UsenetClientBase.cs
@@ -17,16 +17,19 @@ public abstract class UsenetClientBase : DownloadClientBase DownloadProtocol.Usenet;
@@ -66,6 +69,8 @@ public override string Download(RemoteMovie remoteMovie)
throw new ReleaseDownloadException(remoteMovie.Release, "Downloading nzb failed", ex);
}
+ _nzbValidationService.Validate(filename, nzbData);
+
_logger.Info("Adding report [{0}] to the queue.", remoteMovie.Release.Title);
return AddFromNzbFile(remoteMovie, filename, nzbData);
}
diff --git a/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs b/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs
index 57a66e0163..c3370c1ef3 100644
--- a/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs
+++ b/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs
@@ -34,17 +34,17 @@ public void DeleteForMovieFile(int movieFileId)
public List GetFilesByMovie(int movieId)
{
- return Query.Where(c => c.MovieId == movieId);
+ return Query(q => q.Where(c => c.MovieId == movieId).ToList());
}
public List GetFilesByMovieFile(int movieFileId)
{
- return Query.Where(c => c.MovieFileId == movieFileId);
+ return Query(q => q.Where(c => c.MovieFileId == movieFileId).ToList());
}
public TExtraFile FindByPath(string path)
{
- return Query.Where(c => c.RelativePath == path).SingleOrDefault();
+ return Query(q => q.Where(c => c.RelativePath == path).SingleOrDefault());
}
}
}
diff --git a/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs b/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs
index 6b3c6980c0..7ea0d4f510 100644
--- a/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs
+++ b/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs
@@ -127,11 +127,24 @@ public override MetadataFileResult MovieMetadata(Movie movie, MovieFile movieFil
{
details.Add(new XElement("rating", movie.Ratings.Value));
}
-
+
details.Add(new XElement("plot", movie.Overview));
details.Add(new XElement("id", movie.ImdbId));
- details.Add(new XElement("year", movie.Year));
+ if (movie.ImdbId.IsNotNullOrWhiteSpace())
+ {
+ var imdbId = new XElement("uniqueid", movie.ImdbId);
+ imdbId.SetAttributeValue("type", "imdb");
+ imdbId.SetAttributeValue("default", true);
+ details.Add(imdbId);
+ }
+
+ var uniqueId = new XElement("uniqueid", movie.TmdbId);
+ uniqueId.SetAttributeValue("type", "tmdb");
+ details.Add(uniqueId);
+
+ details.Add(new XElement("year", movie.Year));
+
if (movie.InCinemas.HasValue)
{
details.Add(new XElement("premiered", movie.InCinemas.Value.ToString("yyyy-MM-dd")));
diff --git a/src/NzbDrone.Core/Fluent.cs b/src/NzbDrone.Core/Fluent.cs
index 6e2e3d2b27..dd63c1de94 100644
--- a/src/NzbDrone.Core/Fluent.cs
+++ b/src/NzbDrone.Core/Fluent.cs
@@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+#if !LIBRARY
using NzbDrone.Common.EnsureThat;
+#endif
namespace NzbDrone.Core
{
@@ -10,8 +12,9 @@ public static class Fluent
{
public static string WithDefault(this string actual, object defaultValue)
{
+#if !LIBRARY
Ensure.That(defaultValue, () => defaultValue).IsNotNull();
-
+#endif
if (string.IsNullOrWhiteSpace(actual))
{
return defaultValue.ToString();
diff --git a/src/NzbDrone.Core/HealthCheck/Checks/PTPOldSettingsCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/PTPOldSettingsCheck.cs
new file mode 100644
index 0000000000..d908f32aec
--- /dev/null
+++ b/src/NzbDrone.Core/HealthCheck/Checks/PTPOldSettingsCheck.cs
@@ -0,0 +1,32 @@
+using System.Linq;
+using NzbDrone.Common.Extensions;
+using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Indexers.PassThePopcorn;
+
+namespace NzbDrone.Core.HealthCheck.Checks
+{
+ public class PTPOldSettingsCheck : HealthCheckBase
+ {
+ private readonly IIndexerFactory _indexerFactory;
+
+ public PTPOldSettingsCheck(IIndexerFactory indexerFactory)
+ {
+ _indexerFactory = indexerFactory;
+ }
+
+ public override HealthCheck Check()
+ {
+ var ptpIndexers = _indexerFactory.All().Where(i => i.Settings.GetType() == typeof(PassThePopcornSettings));
+
+ var ptpIndexerOldSettings = ptpIndexers
+ .Where(i => (i.Settings as PassThePopcornSettings).APIUser.IsNullOrWhiteSpace()).Select(i => i.Name);
+
+ if (ptpIndexerOldSettings.Count() > 0)
+ {
+ return new HealthCheck(GetType(), HealthCheckResult.Warning, $"The following PassThePopcorn indexers have deprecated settings and should be updated: {string.Join(",", ptpIndexerOldSettings)}");
+ }
+
+ return new HealthCheck(GetType());
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/HealthCheck/Checks/ProxyCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/ProxyCheck.cs
index 1732c549e5..bca6c7aa6a 100644
--- a/src/NzbDrone.Core/HealthCheck/Checks/ProxyCheck.cs
+++ b/src/NzbDrone.Core/HealthCheck/Checks/ProxyCheck.cs
@@ -16,7 +16,7 @@ public class ProxyCheck : HealthCheckBase
private readonly IHttpRequestBuilderFactory _cloudRequestBuilder;
- public ProxyCheck(ISonarrCloudRequestBuilder cloudRequestBuilder, IConfigService configService, IHttpClient client, Logger logger)
+ public ProxyCheck(IRadarrCloudRequestBuilder cloudRequestBuilder, IConfigService configService, IHttpClient client, Logger logger)
{
_configService = configService;
_client = client;
diff --git a/src/NzbDrone.Core/History/HistoryRepository.cs b/src/NzbDrone.Core/History/HistoryRepository.cs
index 1ff9653e15..819f3c9af5 100644
--- a/src/NzbDrone.Core/History/HistoryRepository.cs
+++ b/src/NzbDrone.Core/History/HistoryRepository.cs
@@ -30,37 +30,37 @@ public HistoryRepository(IMainDatabase database, IEventAggregator eventAggregato
public List GetBestQualityInHistory(int movieId)
{
- var history = Query.Where(c => c.MovieId == movieId);
+ var history = Query(q => q.Where(c => c.MovieId == movieId).ToList());
return history.Select(h => h.Quality).ToList();
}
public History MostRecentForDownloadId(string downloadId)
{
- return Query.Where(h => h.DownloadId == downloadId)
+ return Query(q => q.Where(h => h.DownloadId == downloadId)
.OrderByDescending(h => h.Date)
- .FirstOrDefault();
+ .FirstOrDefault());
}
public List FindByDownloadId(string downloadId)
{
- return Query.Where(h => h.DownloadId == downloadId);
+ return Query(q => q.Where(h => h.DownloadId == downloadId).ToList());
}
public List FindDownloadHistory(int idMovieId, QualityModel quality)
{
- return Query.Where(h =>
+ return Query(q => q.Where(h =>
h.MovieId == idMovieId &&
h.Quality == quality &&
(h.EventType == HistoryEventType.Grabbed ||
h.EventType == HistoryEventType.DownloadFailed ||
h.EventType == HistoryEventType.DownloadFolderImported)
- ).ToList();
+ ).ToList());
}
public List FindByMovieId(int movieId)
{
- return Query.Where(h => h.MovieId == movieId);
+ return Query(q => q.Where(h => h.MovieId == movieId).ToList());
}
public void DeleteForMovie(int movieId)
@@ -77,9 +77,9 @@ protected override SortBuilder GetPagedQuery(QueryBuilder quer
public History MostRecentForMovie(int movieId)
{
- return Query.Where(h => h.MovieId == movieId)
+ return Query(q => q.Where(h => h.MovieId == movieId)
.OrderByDescending(h => h.Date)
- .FirstOrDefault();
+ .FirstOrDefault());
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAbsolutePathMetadataFiles.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAbsolutePathMetadataFiles.cs
index 099180b3bc..de6dcc0de1 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAbsolutePathMetadataFiles.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAbsolutePathMetadataFiles.cs
@@ -13,9 +13,9 @@ public CleanupAbsolutePathMetadataFiles(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
-
- mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
+ using (var mapper = _database.GetDataMapper())
+ {
+ mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
WHERE Id IN (
SELECT Id FROM MetadataFiles
WHERE RelativePath
@@ -25,6 +25,7 @@ OR RelativePath
OR RelativePath
LIKE '/%'
)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalNamingSpecs.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalNamingSpecs.cs
index a86b209e0c..e63fd2dfa7 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalNamingSpecs.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalNamingSpecs.cs
@@ -13,12 +13,14 @@ public CleanupAdditionalNamingSpecs(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM NamingConfig
+ mapper.ExecuteNonQuery(@"DELETE FROM NamingConfig
WHERE ID NOT IN (
SELECT ID FROM NamingConfig
LIMIT 1)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalUsers.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalUsers.cs
index b533d5960d..9103dc4c18 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalUsers.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupAdditionalUsers.cs
@@ -13,13 +13,15 @@ public CleanupAdditionalUsers(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM Users
+ mapper.ExecuteNonQuery(@"DELETE FROM Users
WHERE ID NOT IN (
SELECT ID FROM Users
LIMIT 1)");
- }
+ }
+ }
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupDuplicateMetadataFiles.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupDuplicateMetadataFiles.cs
index 3373fb4b7a..5a405de77a 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupDuplicateMetadataFiles.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupDuplicateMetadataFiles.cs
@@ -19,28 +19,32 @@ public void Clean()
private void DeleteDuplicateMovieMetadata()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
+ mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
WHERE Id IN (
SELECT Id FROM MetadataFiles
WHERE Type = 1
GROUP BY MovieId, Consumer
HAVING COUNT(MovieId) > 1
)");
+ }
}
private void DeleteDuplicateMovieFileMetadata()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
+ mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
WHERE Id IN (
SELECT Id FROM MetadataFiles
WHERE Type = 1
GROUP BY MovieFileId, Consumer
HAVING COUNT(MovieFileId) > 1
)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedAlternativeTitles.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedAlternativeTitles.cs
index 1f1ad20203..6ef15ac2f6 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedAlternativeTitles.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedAlternativeTitles.cs
@@ -13,14 +13,16 @@ public CleanupOrphanedAlternativeTitles(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM AlternativeTitles
+ mapper.ExecuteNonQuery(@"DELETE FROM AlternativeTitles
WHERE Id IN (
SELECT AlternativeTitles.Id FROM AlternativeTitles
LEFT OUTER JOIN Movies
ON AlternativeTitles.MovieId = Movies.Id
WHERE Movies.Id IS NULL)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedBlacklist.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedBlacklist.cs
index 280765819b..7816c5ab95 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedBlacklist.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedBlacklist.cs
@@ -13,14 +13,16 @@ public CleanupOrphanedBlacklist(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM Blacklist
+ mapper.ExecuteNonQuery(@"DELETE FROM Blacklist
WHERE Id IN (
SELECT Blacklist.Id FROM Blacklist
LEFT OUTER JOIN Movies
ON Blacklist.MovieId = Movies.Id
WHERE Movies.Id IS NULL)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedHistoryItems.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedHistoryItems.cs
index 617bb2abc4..d69112d97f 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedHistoryItems.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedHistoryItems.cs
@@ -18,14 +18,16 @@ public void Clean()
private void CleanupOrphanedByMovie()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM History
+ mapper.ExecuteNonQuery(@"DELETE FROM History
WHERE Id IN (
SELECT History.Id FROM History
LEFT OUTER JOIN Movies
ON History.MovieId = Movies.Id
WHERE Movies.Id IS NULL)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedIndexerStatus.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedIndexerStatus.cs
index b3cf470274..ac021bb3ce 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedIndexerStatus.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedIndexerStatus.cs
@@ -13,14 +13,16 @@ public CleanupOrphanedIndexerStatus(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM IndexerStatus
+ mapper.ExecuteNonQuery(@"DELETE FROM IndexerStatus
WHERE Id IN (
SELECT IndexerStatus.Id FROM IndexerStatus
LEFT OUTER JOIN Indexers
ON IndexerStatus.IndexerId = Indexers.Id
WHERE Indexers.Id IS NULL)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMetadataFiles.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMetadataFiles.cs
index ae6b484951..1c89b1c464 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMetadataFiles.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMetadataFiles.cs
@@ -20,38 +20,44 @@ public void Clean()
private void DeleteOrphanedByMovie()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
+ mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
WHERE Id IN (
SELECT MetadataFiles.Id FROM MetadataFiles
LEFT OUTER JOIN Movies
ON MetadataFiles.MovieId = Movies.Id
WHERE Movies.Id IS NULL)");
+ }
}
private void DeleteOrphanedByMovieFile()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
+ mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
WHERE Id IN (
SELECT MetadataFiles.Id FROM MetadataFiles
LEFT OUTER JOIN MovieFiles
ON MetadataFiles.MovieFileId = MovieFiles.Id
WHERE MetadataFiles.MovieFileId > 0
AND MovieFiles.Id IS NULL)");
+ }
}
private void DeleteWhereMovieFileIsZero()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
+ mapper.ExecuteNonQuery(@"DELETE FROM MetadataFiles
WHERE Id IN (
SELECT Id FROM MetadataFiles
WHERE Type IN (1, 2)
AND MovieFileId = 0)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMovieFiles.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMovieFiles.cs
index d62c5988da..d36d1da66b 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMovieFiles.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedMovieFiles.cs
@@ -13,14 +13,15 @@ public CleanupOrphanedMovieFiles(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
-
- mapper.ExecuteNonQuery(@"DELETE FROM MovieFiles
+ using (var mapper = _database.GetDataMapper())
+ {
+ mapper.ExecuteNonQuery(@"DELETE FROM MovieFiles
WHERE Id IN (
SELECT MovieFiles.Id FROM MovieFiles
LEFT OUTER JOIN Movies
ON MovieFiles.Id = Movies.MovieFileId
WHERE Movies.Id IS NULL)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedPendingReleases.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedPendingReleases.cs
index e993c96869..bed514b93f 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedPendingReleases.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupOrphanedPendingReleases.cs
@@ -13,14 +13,16 @@ public CleanupOrphanedPendingReleases(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.ExecuteNonQuery(@"DELETE FROM PendingReleases
+ mapper.ExecuteNonQuery(@"DELETE FROM PendingReleases
WHERE Id IN (
SELECT PendingReleases.Id FROM PendingReleases
LEFT OUTER JOIN Movies
ON PendingReleases.MovieId = Movies.Id
WHERE Movies.Id IS NULL)");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupUnusedTags.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupUnusedTags.cs
index a9a0bea0ef..9b07f83192 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupUnusedTags.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/CleanupUnusedTags.cs
@@ -17,16 +17,18 @@ public CleanupUnusedTags(IMainDatabase database)
public void Clean()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- var usedTags = new[] { "Movies", "Notifications", "DelayProfiles", "Restrictions" }
- .SelectMany(v => GetUsedTags(v, mapper))
- .Distinct()
- .ToArray();
+ var usedTags = new[] {"Movies", "Notifications", "DelayProfiles", "Restrictions"}
+ .SelectMany(v => GetUsedTags(v, mapper))
+ .Distinct()
+ .ToArray();
- var usedTagsList = string.Join(",", usedTags.Select(d => d.ToString()).ToArray());
+ var usedTagsList = string.Join(",", usedTags.Select(d => d.ToString()).ToArray());
- mapper.ExecuteNonQuery($"DELETE FROM Tags WHERE NOT Id IN ({usedTagsList})");
+ mapper.ExecuteNonQuery($"DELETE FROM Tags WHERE NOT Id IN ({usedTagsList})");
+ }
}
private int[] GetUsedTags(string table, IDataMapper mapper)
diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/FixFutureRunScheduledTasks.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/FixFutureRunScheduledTasks.cs
index 1d5cdef35d..c4ed9f5019 100644
--- a/src/NzbDrone.Core/Housekeeping/Housekeepers/FixFutureRunScheduledTasks.cs
+++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/FixFutureRunScheduledTasks.cs
@@ -23,12 +23,14 @@ public void Clean()
_logger.Debug("Not running scheduled task last execution cleanup during debug");
}
- var mapper = _database.GetDataMapper();
- mapper.AddParameter("time", DateTime.UtcNow);
+ using (var mapper = _database.GetDataMapper())
+ {
+ mapper.AddParameter("time", DateTime.UtcNow);
- mapper.ExecuteNonQuery(@"UPDATE ScheduledTasks
+ mapper.ExecuteNonQuery(@"UPDATE ScheduledTasks
SET LastExecution = @time
WHERE LastExecution > @time");
+ }
}
}
}
diff --git a/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs b/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs
index 6d3023bbfc..67a31bb016 100644
--- a/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs
+++ b/src/NzbDrone.Core/Indexers/IPTorrents/IPTorrentsSettings.cs
@@ -16,11 +16,11 @@ public IPTorrentsSettingsValidator()
{
RuleFor(c => c.BaseUrl).ValidRootUrl();
- RuleFor(c => c.BaseUrl).Matches(@"/rss\?.+$");
+ RuleFor(c => c.BaseUrl).Matches(@"(?:/|t\.)rss\?.+$");
- RuleFor(c => c.BaseUrl).Matches(@"/rss\?.+;download(?:;|$)")
+ RuleFor(c => c.BaseUrl).Matches(@"(?:/|t\.)rss\?.+;download(?:;|$)")
.WithMessage("Use Direct Download Url (;download)")
- .When(v => v.BaseUrl.IsNotNullOrWhiteSpace() && Regex.IsMatch(v.BaseUrl, @"/rss\?.+$"));
+ .When(v => v.BaseUrl.IsNotNullOrWhiteSpace() && Regex.IsMatch(v.BaseUrl, @"(?:/|t\.)rss\?.+$"));
}
}
diff --git a/src/NzbDrone.Core/Indexers/IndexerStatusRepository.cs b/src/NzbDrone.Core/Indexers/IndexerStatusRepository.cs
index 8a70b790ad..3a403a8217 100644
--- a/src/NzbDrone.Core/Indexers/IndexerStatusRepository.cs
+++ b/src/NzbDrone.Core/Indexers/IndexerStatusRepository.cs
@@ -20,7 +20,7 @@ public IndexerStatusRepository(IMainDatabase database, IEventAggregator eventAgg
public IndexerStatus FindByIndexerId(int indexerId)
{
- return Query.Where(c => c.IndexerId == indexerId).SingleOrDefault();
+ return Query(q => q.Where(c => c.IndexerId == indexerId).SingleOrDefault());
}
}
}
diff --git a/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornRequestGenerator.cs b/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornRequestGenerator.cs
index e2099dbc5a..eb966252df 100644
--- a/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornRequestGenerator.cs
+++ b/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornRequestGenerator.cs
@@ -4,6 +4,7 @@
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Common.Cache;
using NLog;
+using NzbDrone.Common.Extensions;
using NzbDrone.Common.Serializer;
namespace NzbDrone.Core.Indexers.PassThePopcorn
@@ -39,21 +40,34 @@ public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchC
private IEnumerable GetRequest(string searchParameters)
{
- Cookies = GetCookies();
-
- Authenticate();
-
var request =
new IndexerRequest(
$"{Settings.BaseUrl.Trim().TrimEnd('/')}/torrents.php?action=advanced&json=noredirect&searchstr={searchParameters}",
HttpAccept.Json);
-
- foreach (var cookie in Cookies)
+
+ if (Settings.APIKey.IsNullOrWhiteSpace())
{
- request.HttpRequest.Cookies[cookie.Key] = cookie.Value;
+ Cookies = GetCookies();
+
+ Authenticate();
+
+ Logger.Warn("You are using the old method of logging into PassThePopcorn. Please switch to the new method using APIUser & APIKey.");
+ }
+ else
+ {
+ request.HttpRequest.Headers["ApiUser"] = Settings.APIUser;
+ request.HttpRequest.Headers["ApiKey"] = Settings.APIKey;
}
- CookiesUpdater(Cookies, DateTime.Now + TimeSpan.FromDays(30));
+ if (Settings.APIKey.IsNullOrWhiteSpace())
+ {
+ foreach (var cookie in Cookies)
+ {
+ request.HttpRequest.Cookies[cookie.Key] = cookie.Value;
+ }
+
+ CookiesUpdater(Cookies, DateTime.Now + TimeSpan.FromDays(30));
+ }
yield return request;
}
diff --git a/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornSettings.cs b/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornSettings.cs
index 3e998299f8..04501f809c 100644
--- a/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornSettings.cs
+++ b/src/NzbDrone.Core/Indexers/PassThePopcorn/PassThePopcornSettings.cs
@@ -14,9 +14,11 @@ public class PassThePopcornSettingsValidator : AbstractValidator c.BaseUrl).ValidRootUrl();
- RuleFor(c => c.Username).NotEmpty();
- RuleFor(c => c.Password).NotEmpty();
- RuleFor(c => c.Passkey).NotEmpty();
+ RuleFor(c => c.Username).Empty();
+ RuleFor(c => c.Password).Empty();
+ RuleFor(c => c.Passkey).Empty();
+ RuleFor(c => c.APIUser).NotEmpty();
+ RuleFor(c => c.APIKey).NotEmpty();
}
}
@@ -33,22 +35,28 @@ public PassThePopcornSettings()
[FieldDefinition(0, Label = "URL", Advanced = true, HelpText = "Do not change this unless you know what you're doing. Since your cookie will be sent to that host.")]
public string BaseUrl { get; set; }
- [FieldDefinition(1, Label = "Username", HelpText = "PTP Username")]
+ [FieldDefinition(1, Label = "APIUser", HelpText = "These settings are found in your PassThePopcorn security settings (Edit Profile > Security).")]
+ public string APIUser { get; set; }
+
+ [FieldDefinition(2, Label = "APIKey", Type = FieldType.Password)]
+ public string APIKey { get; set; }
+
+ [FieldDefinition(3, Label = "DEPRECATED: User", HelpText = "Please use APIKey & APIUser instead. PTP Username")]
public string Username { get; set; }
- [FieldDefinition(2, Label = "Password", Type = FieldType.Password, HelpText = "PTP Password")]
+ [FieldDefinition(4, Label = "DEPRECATED: Pass", Type = FieldType.Password, HelpText = "Please use APIKey & APIUser instead. PTP Password")]
public string Password { get; set; }
- [FieldDefinition(3, Label = "Passkey", HelpText = "PTP Passkey")]
+ [FieldDefinition(5, Label = "DEPRECATED: Passkey", HelpText = "Please use APIKey & APIUser instead. PTP Passkey")]
public string Passkey { get; set; }
- [FieldDefinition(4, Type = FieldType.Tag, SelectOptions = typeof(Language), Label = "Multi Languages", HelpText = "What languages are normally in a multi release on this indexer?", Advanced = true)]
+ [FieldDefinition(6, Type = FieldType.Tag, SelectOptions = typeof(Language), Label = "Multi Languages", HelpText = "What languages are normally in a multi release on this indexer?", Advanced = true)]
public IEnumerable MultiLanguages { get; set; }
- [FieldDefinition(5, Type = FieldType.Textbox, Label = "Minimum Seeders", HelpText = "Minimum number of seeders required.", Advanced = true)]
+ [FieldDefinition(7, Type = FieldType.Textbox, Label = "Minimum Seeders", HelpText = "Minimum number of seeders required.", Advanced = true)]
public int MinimumSeeders { get; set; }
- [FieldDefinition(6, Type = FieldType.Tag, SelectOptions = typeof(IndexerFlags), Label = "Required Flags", HelpText = "What indexer flags are required?", HelpLink = "https://github.com/Radarr/Radarr/wiki/Indexer-Flags#1-required-flags", Advanced = true)]
+ [FieldDefinition(8, Type = FieldType.Tag, SelectOptions = typeof(IndexerFlags), Label = "Required Flags", HelpText = "What indexer flags are required?", HelpLink = "https://github.com/Radarr/Radarr/wiki/Indexer-Flags#1-required-flags", Advanced = true)]
public IEnumerable RequiredFlags { get; set; }
public NzbDroneValidationResult Validate()
diff --git a/src/NzbDrone.Core/Indexers/XmlCleaner.cs b/src/NzbDrone.Core/Indexers/XmlCleaner.cs
index 49a462eec2..91d0ea3b13 100644
--- a/src/NzbDrone.Core/Indexers/XmlCleaner.cs
+++ b/src/NzbDrone.Core/Indexers/XmlCleaner.cs
@@ -8,7 +8,7 @@ public static class XmlCleaner
{
private static readonly Regex ReplaceEntitiesRegex = new Regex("&[a-z]+;", RegexOptions.Compiled | RegexOptions.IgnoreCase);
- private static readonly Regex ReplaceUnicodeRegex = new Regex(@"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
+ private static readonly Regex ReplaceUnicodeRegex = new Regex(@"[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public static string ReplaceEntities(string content)
{
diff --git a/src/NzbDrone.Core/Instrumentation/DatabaseTarget.cs b/src/NzbDrone.Core/Instrumentation/DatabaseTarget.cs
index f69de82247..96013e8450 100644
--- a/src/NzbDrone.Core/Instrumentation/DatabaseTarget.cs
+++ b/src/NzbDrone.Core/Instrumentation/DatabaseTarget.cs
@@ -15,13 +15,14 @@ public class DatabaseTarget : TargetWithLayout, IHandle c.TypeName == type.FullName).Single();
+ return Query(q => q.Where(c => c.TypeName == type.FullName).Single());
}
public void SetLastExecutionTime(int id, DateTime executionTime)
diff --git a/src/NzbDrone.Core/MediaCover/CoverAlreadyExistsSpecification.cs b/src/NzbDrone.Core/MediaCover/CoverAlreadyExistsSpecification.cs
index bb5b148a94..49e4f60dee 100644
--- a/src/NzbDrone.Core/MediaCover/CoverAlreadyExistsSpecification.cs
+++ b/src/NzbDrone.Core/MediaCover/CoverAlreadyExistsSpecification.cs
@@ -31,12 +31,6 @@ public bool AlreadyExists(string url, string path)
return false;
}
- if (!_diskProvider.IsValidGDIPlusImage(path))
- {
- _diskProvider.DeleteFile(path);
- return false;
- }
-
var headers = _httpClient.Head(new HttpRequest(url)).Headers;
var fileSize = _diskProvider.GetFileSize(path);
return fileSize == headers.ContentLength;
diff --git a/src/NzbDrone.Core/MediaCover/EnsureMediaCoversCommand.cs b/src/NzbDrone.Core/MediaCover/EnsureMediaCoversCommand.cs
new file mode 100644
index 0000000000..0cb4b02ddb
--- /dev/null
+++ b/src/NzbDrone.Core/MediaCover/EnsureMediaCoversCommand.cs
@@ -0,0 +1,19 @@
+using NzbDrone.Core.Messaging.Commands;
+
+namespace NzbDrone.Core.MediaCover
+{
+ public class EnsureMediaCoversCommand : Command
+ {
+ public int MovieId { get; set; }
+
+ public EnsureMediaCoversCommand()
+ {
+
+ }
+
+ public EnsureMediaCoversCommand(int movieId)
+ {
+ MovieId = movieId;
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/MediaCover/MediaCoverService.cs b/src/NzbDrone.Core/MediaCover/MediaCoverService.cs
index b4bc2aed20..3a65b7d1a2 100644
--- a/src/NzbDrone.Core/MediaCover/MediaCoverService.cs
+++ b/src/NzbDrone.Core/MediaCover/MediaCoverService.cs
@@ -8,6 +8,7 @@
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
+using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Movies.Events;
@@ -22,8 +23,9 @@ public interface IMapCoversToLocal
public class MediaCoverService :
IHandleAsync,
- IHandleAsync,
+ //IHandleAsync,
IHandleAsync,
+ IExecute,
IMapCoversToLocal
{
private readonly IImageResizer _resizer;
@@ -32,6 +34,8 @@ public class MediaCoverService :
private readonly ICoverExistsSpecification _coverExistsSpecification;
private readonly IConfigFileProvider _configFileProvider;
private readonly IEventAggregator _eventAggregator;
+ private readonly IManageCommandQueue _commandQueue;
+ private readonly IMovieService _movieService;
private readonly Logger _logger;
private readonly string _coverRootFolder;
@@ -43,6 +47,8 @@ public MediaCoverService(IImageResizer resizer,
ICoverExistsSpecification coverExistsSpecification,
IConfigFileProvider configFileProvider,
IEventAggregator eventAggregator,
+ IManageCommandQueue commandQueue,
+ IMovieService movieService,
Logger logger)
{
_resizer = resizer;
@@ -51,6 +57,8 @@ public MediaCoverService(IImageResizer resizer,
_coverExistsSpecification = coverExistsSpecification;
_configFileProvider = configFileProvider;
_eventAggregator = eventAggregator;
+ _commandQueue = commandQueue;
+ _movieService = movieService;
_logger = logger;
_coverRootFolder = appFolderInfo.GetMediaCoverPath();
@@ -109,7 +117,7 @@ private void EnsureCovers(Movie movie, int retried = 0)
_logger.Warn(e, string.Format("Couldn't download media cover for {0}. {1}", movie, e.Message));
if (retried < 3)
{
- retried = +1;
+ retried += 1;
_logger.Warn("Retrying for the {0}. time in ten seconds.", retried);
System.Threading.Thread.Sleep(10 * 1000);
EnsureCovers(movie, retried);
@@ -182,16 +190,26 @@ private void EnsureResizedCovers(Movie movie, MediaCover cover, bool forceResize
}
}
+ public void Execute(EnsureMediaCoversCommand command)
+ {
+ var movie = _movieService.GetMovie(command.MovieId);
+ EnsureCovers(movie);
+ _eventAggregator.PublishEvent(new MediaCoversUpdatedEvent(movie));
+ }
+
public void HandleAsync(MovieUpdatedEvent message)
{
- EnsureCovers(message.Movie);
- _eventAggregator.PublishEvent(new MediaCoversUpdatedEvent(message.Movie));
+ //EnsureCovers(message.Movie);
+ _logger.Info("Testing: {0}, {1}", _commandQueue, message.Movie.Id);
+ _commandQueue.Push(new EnsureMediaCoversCommand(message.Movie.Id));
+ //_eventAggregator.PublishEvent(new MediaCoversUpdatedEvent(message.Movie));
}
public void HandleAsync(MovieAddedEvent message)
{
- EnsureCovers(message.Movie);
- _eventAggregator.PublishEvent(new MediaCoversUpdatedEvent(message.Movie));
+ //EnsureCovers(message.Movie);
+ //_commandQueue.Push(new EnsureMediaCoversCommand(message.Movie.Id));
+ //_eventAggregator.PublishEvent(new MediaCoversUpdatedEvent(message.Movie));
}
public void HandleAsync(MovieDeletedEvent message)
diff --git a/src/NzbDrone.Core/MediaFiles/MediaFileRepository.cs b/src/NzbDrone.Core/MediaFiles/MediaFileRepository.cs
index 6ef40f4090..3e4344bf74 100644
--- a/src/NzbDrone.Core/MediaFiles/MediaFileRepository.cs
+++ b/src/NzbDrone.Core/MediaFiles/MediaFileRepository.cs
@@ -21,12 +21,12 @@ public MediaFileRepository(IMainDatabase database, IEventAggregator eventAggrega
public List GetFilesByMovie(int movieId)
{
- return Query.Where(c => c.MovieId == movieId).ToList();
+ return Query(q => q.Where(c => c.MovieId == movieId).ToList());
}
public List GetFilesWithoutMediaInfo()
{
- return Query.Where(c => c.MediaInfo == null).ToList();
+ return Query(q => q.Where(c => c.MediaInfo == null).ToList());
}
}
}
diff --git a/src/NzbDrone.Core/Messaging/Commands/CommandRepository.cs b/src/NzbDrone.Core/Messaging/Commands/CommandRepository.cs
index b873d28aaa..da21c788a4 100644
--- a/src/NzbDrone.Core/Messaging/Commands/CommandRepository.cs
+++ b/src/NzbDrone.Core/Messaging/Commands/CommandRepository.cs
@@ -37,37 +37,39 @@ public void Trim()
public void OrphanStarted()
{
- var mapper = _database.GetDataMapper();
+ using (var mapper = _database.GetDataMapper())
+ {
- mapper.Parameters.Add(new SQLiteParameter("@orphaned", (int)CommandStatus.Orphaned));
- mapper.Parameters.Add(new SQLiteParameter("@started", (int)CommandStatus.Started));
- mapper.Parameters.Add(new SQLiteParameter("@ended", DateTime.UtcNow));
+ mapper.Parameters.Add(new SQLiteParameter("@orphaned", (int) CommandStatus.Orphaned));
+ mapper.Parameters.Add(new SQLiteParameter("@started", (int) CommandStatus.Started));
+ mapper.Parameters.Add(new SQLiteParameter("@ended", DateTime.UtcNow));
- mapper.ExecuteNonQuery(@"UPDATE Commands
+ mapper.ExecuteNonQuery(@"UPDATE Commands
SET Status = @orphaned, EndedAt = @ended
WHERE Status = @started");
+ }
}
public List FindCommands(string name)
{
- return Query.Where(c => c.Name == name).ToList();
+ return Query(q => q.Where(c => c.Name == name).ToList());
}
public List FindQueuedOrStarted(string name)
{
- return Query.Where(c => c.Name == name)
+ return Query(q => q.Where(c => c.Name == name)
.AndWhere("[Status] IN (0,1)")
- .ToList();
+ .ToList());
}
public List Queued()
{
- return Query.Where(c => c.Status == CommandStatus.Queued);
+ return Query(q => q.Where(c => c.Status == CommandStatus.Queued).ToList());
}
public List Started()
{
- return Query.Where(c => c.Status == CommandStatus.Started);
+ return Query(q => q.Where(c => c.Status == CommandStatus.Started).ToList());
}
public void Start(CommandModel command)
diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs
index a7f78458ad..89df9fc5cc 100644
--- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs
+++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs
@@ -28,8 +28,7 @@ public class SkyHookProxy : IProvideMovieInfo, ISearchForNewMovie, IDiscoverNewM
{
private readonly IHttpClient _httpClient;
private readonly Logger _logger;
-
- private readonly IHttpRequestBuilderFactory _requestBuilder;
+
private readonly IHttpRequestBuilderFactory _movieBuilder;
private readonly ITmdbConfigService _configService;
private readonly IMovieService _movieService;
@@ -38,13 +37,10 @@ public class SkyHookProxy : IProvideMovieInfo, ISearchForNewMovie, IDiscoverNewM
private readonly IAlternativeTitleService _altTitleService;
private readonly IRadarrAPIClient _radarrAPI;
- private readonly IHttpRequestBuilderFactory _apiBuilder;
-
- public SkyHookProxy(IHttpClient httpClient, ISonarrCloudRequestBuilder requestBuilder, ITmdbConfigService configService, IMovieService movieService,
+ public SkyHookProxy(IHttpClient httpClient, IRadarrCloudRequestBuilder requestBuilder, ITmdbConfigService configService, IMovieService movieService,
IPreDBService predbService, IImportExclusionsService exclusionService, IAlternativeTitleService altTitleService, IRadarrAPIClient radarrAPI, Logger logger)
{
_httpClient = httpClient;
- _requestBuilder = requestBuilder.SkyHookTvdb;
_movieBuilder = requestBuilder.TMDB;
_configService = configService;
_movieService = movieService;
diff --git a/src/NzbDrone.Core/MetadataSource/TmdbConfigurationService.cs b/src/NzbDrone.Core/MetadataSource/TmdbConfigurationService.cs
index 7c0d39cb5e..2f5185d420 100644
--- a/src/NzbDrone.Core/MetadataSource/TmdbConfigurationService.cs
+++ b/src/NzbDrone.Core/MetadataSource/TmdbConfigurationService.cs
@@ -21,7 +21,7 @@ class TmdbConfigService : ITmdbConfigService
private readonly IHttpClient _httpClient;
private readonly IHttpRequestBuilderFactory _tmdbBuilder;
- public TmdbConfigService(ICacheManager cacheManager, IHttpClient httpClient, ISonarrCloudRequestBuilder requestBuilder)
+ public TmdbConfigService(ICacheManager cacheManager, IHttpClient httpClient, IRadarrCloudRequestBuilder requestBuilder)
{
_configurationCache = cacheManager.GetCache(GetType(), "configuration_cache");
_httpClient = httpClient;
diff --git a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs
index 1759adcedd..63c8b53b18 100644
--- a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs
+++ b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs
@@ -25,17 +25,17 @@ public AlternativeTitleRepository(IMainDatabase database, IEventAggregator event
public AlternativeTitle FindBySourceId(int sourceId)
{
- return Query.Where(t => t.SourceId == sourceId).FirstOrDefault();
+ return Query(q => q.Where(t => t.SourceId == sourceId).FirstOrDefault());
}
public List FindBySourceIds(List sourceIds)
{
- return Query.Where(t => t.SourceId.In(sourceIds)).ToList();
+ return Query(q => q.Where(t => t.SourceId.In(sourceIds)).ToList());
}
public List FindByMovieId(int movieId)
{
- return Query.Where(t => t.MovieId == movieId).ToList();
+ return Query(q => q.Where(t => t.MovieId == movieId).ToList());
}
}
}
diff --git a/src/NzbDrone.Core/Movies/MovieRepository.cs b/src/NzbDrone.Core/Movies/MovieRepository.cs
index 21d0d9cc37..fccc815b58 100644
--- a/src/NzbDrone.Core/Movies/MovieRepository.cs
+++ b/src/NzbDrone.Core/Movies/MovieRepository.cs
@@ -41,7 +41,7 @@ public MovieRepository(IMainDatabase database, IEventAggregator eventAggregator)
public bool MoviePathExists(string path)
{
- return Query.Where(c => c.Path == path).Any();
+ return Query(q => q.Where(c => c.Path == path).Any());
}
public Movie FindByTitle(string cleanTitle)
@@ -57,12 +57,12 @@ public Movie FindByTitle(string cleanTitle, int year)
public Movie FindByImdbId(string imdbid)
{
var imdbIdWithPrefix = Parser.Parser.NormalizeImdbId(imdbid);
- return Query.Where(s => s.ImdbId == imdbIdWithPrefix).SingleOrDefault();
+ return Query(q => q.Where(s => s.ImdbId == imdbIdWithPrefix).SingleOrDefault());
}
public List GetMoviesByFileId(int fileId)
{
- return Query.Where(m => m.MovieFileId == fileId).ToList();
+ return Query(q => q.Where(m => m.MovieFileId == fileId).ToList());
}
public void SetFileId(int fileId, int movieId)
@@ -72,32 +72,37 @@ public void SetFileId(int fileId, int movieId)
public Movie FindByTitleSlug(string slug)
{
- return Query.FirstOrDefault(m => m.TitleSlug == slug);
+ return Query(q => q.Where(m => m.TitleSlug == slug).FirstOrDefault());
}
public List MoviesBetweenDates(DateTime start, DateTime end, bool includeUnmonitored)
{
- var query = Query.Where(m => (m.InCinemas >= start && m.InCinemas <= end) || (m.PhysicalRelease >= start && m.PhysicalRelease <= end));
-
- if (!includeUnmonitored)
+ return Query(q =>
{
- query.AndWhere(e => e.Monitored == true);
- }
+ var query = q.Where(m =>
+ (m.InCinemas >= start && m.InCinemas <= end) ||
+ (m.PhysicalRelease >= start && m.PhysicalRelease <= end));
+
+ if (!includeUnmonitored)
+ {
+ query.AndWhere(e => e.Monitored == true);
+ }
- return query.ToList();
+ return query.ToList();
+ });
}
public List MoviesWithFiles(int movieId)
{
- return Query.Join(JoinType.Inner, m => m.MovieFile, (m, mf) => m.MovieFileId == mf.Id)
- .Where(m => m.Id == movieId);
+ return Query(q => q.Join(JoinType.Inner, m => m.MovieFile, (m, mf) => m.MovieFileId == mf.Id)
+ .Where(m => m.Id == movieId).ToList());
}
public PagingSpec MoviesWithoutFiles(PagingSpec pagingSpec)
{
- pagingSpec.TotalRecords = GetMoviesWithoutFilesQuery(pagingSpec).GetRowCount();
- pagingSpec.Records = GetMoviesWithoutFilesQuery(pagingSpec).ToList();
+ pagingSpec.TotalRecords = Query(q => GetMoviesWithoutFilesQuery(q, pagingSpec).GetRowCount());
+ pagingSpec.Records = Query(q => GetMoviesWithoutFilesQuery(q, pagingSpec).ToList());
return pagingSpec;
}
@@ -157,7 +162,7 @@ public PagingSpec MoviesWithoutFiles(PagingSpec pagingSpec)
return newQuery;
}*/
- public SortBuilder GetMoviesWithoutFilesQuery(PagingSpec pagingSpec)
+ public SortBuilder GetMoviesWithoutFilesQuery(QueryBuilder Query, PagingSpec pagingSpec)
{
return Query.Where(pagingSpec.FilterExpression)
.AndWhere(m => m.MovieFileId == 0)
@@ -168,13 +173,13 @@ public SortBuilder GetMoviesWithoutFilesQuery(PagingSpec pagingSpe
public PagingSpec MoviesWhereCutoffUnmet(PagingSpec pagingSpec, List qualitiesBelowCutoff)
{
- pagingSpec.TotalRecords = MoviesWhereCutoffUnmetQuery(pagingSpec, qualitiesBelowCutoff).GetRowCount();
- pagingSpec.Records = MoviesWhereCutoffUnmetQuery(pagingSpec, qualitiesBelowCutoff).ToList();
+ pagingSpec.TotalRecords = Query(q => MoviesWhereCutoffUnmetQuery(q, pagingSpec, qualitiesBelowCutoff).GetRowCount());
+ pagingSpec.Records = Query(q => MoviesWhereCutoffUnmetQuery(q, pagingSpec, qualitiesBelowCutoff).ToList());
return pagingSpec;
}
- private SortBuilder MoviesWhereCutoffUnmetQuery(PagingSpec pagingSpec, List qualitiesBelowCutoff)
+ private SortBuilder MoviesWhereCutoffUnmetQuery(QueryBuilder Query, PagingSpec pagingSpec, List qualitiesBelowCutoff)
{
return Query.Where(pagingSpec.FilterExpression)
.AndWhere(m => m.MovieFileId != 0)
@@ -229,12 +234,16 @@ private Movie FindByTitle(string cleanTitle, int? year)
cleanTitleWithArabicNumbers = cleanTitleWithArabicNumbers.Replace(romanNumber, arabicNumber);
}
- Movie result = Query.Where(s => s.CleanTitle == cleanTitle).FirstWithYear(year);
-
+ Movie result = Query(q =>
+ {
+ return q.Where(s => s.CleanTitle == cleanTitle).FirstWithYear(year);
+ });
+
if (result == null)
{
- result = Query.Where(movie => movie.CleanTitle == cleanTitleWithArabicNumbers).FirstWithYear(year) ??
- Query.Where(movie => movie.CleanTitle == cleanTitleWithRomanNumbers).FirstWithYear(year);
+ result =
+ Query(q => q.Where(movie => movie.CleanTitle == cleanTitleWithArabicNumbers).FirstWithYear(year)) ??
+ Query(q => q.Where(movie => movie.CleanTitle == cleanTitleWithRomanNumbers).FirstWithYear(year));
if (result == null)
{
@@ -249,14 +258,17 @@ private Movie FindByTitle(string cleanTitle, int? year)
altTitleComparer(m.AlternativeTitles, cleanTitleWithArabicNumbers)).FirstWithYear(year);*/
//result = Query.Join(JoinType.Inner, m => m._newAltTitles,
- //(m, t) => m.Id == t.MovieId && (t.CleanTitle == cleanTitle)).FirstWithYear(year);
- result = Query.Where(t =>
- t.CleanTitle == cleanTitle || t.CleanTitle == cleanTitleWithArabicNumbers
- || t.CleanTitle == cleanTitleWithRomanNumbers).FirstWithYear(year);
+ //(m, t) => m.Id == t.MovieId && (t.CleanTitle == cleanTitle)).FirstWithYear(year);
+ result = Query(q => q.Where(t =>
+ t.CleanTitle == cleanTitle || t.CleanTitle == cleanTitleWithArabicNumbers
+ || t.CleanTitle == cleanTitleWithRomanNumbers)
+ .FirstWithYear(year));
}
}
+
return result;
+
/*return year.HasValue
? results?.FirstOrDefault(movie => movie.Year == year.Value)
@@ -264,7 +276,7 @@ private Movie FindByTitle(string cleanTitle, int? year)
: results?.FirstOrDefault();*/
}
- protected override QueryBuilder AddJoinQueries(QueryBuilder baseQuery)
+ protected override QueryBuilder AddJoinQueries(QueryBuilder baseQuery)
{
baseQuery = base.AddJoinQueries(baseQuery);
baseQuery = baseQuery.Join(JoinType.Left, m => m.AlternativeTitles,
@@ -276,7 +288,7 @@ protected override QueryBuilder AddJoinQueries(QueryBuilder baseQu
public Movie FindByTmdbId(int tmdbid)
{
- return Query.Where(m => m.TmdbId == tmdbid).FirstOrDefault();
+ return Query(q => q.Where(m => m.TmdbId == tmdbid).FirstOrDefault());
}
}
}
diff --git a/src/NzbDrone.Core/Movies/QueryExtensions.cs b/src/NzbDrone.Core/Movies/QueryExtensions.cs
index b0c5d36043..17847d50a8 100644
--- a/src/NzbDrone.Core/Movies/QueryExtensions.cs
+++ b/src/NzbDrone.Core/Movies/QueryExtensions.cs
@@ -8,7 +8,7 @@ public static class QueryExtensions
{
public static Movie FirstWithYear(this SortBuilder query, int? year)
{
- return year.HasValue ? query.FirstOrDefault(movie => movie.Year == year || movie.SecondaryYear == year) : query.FirstOrDefault();
+ return year.HasValue ? query.AndWhere(movie => movie.Year == year || movie.SecondaryYear == year).FirstOrDefault() : query.FirstOrDefault();
}
}
diff --git a/src/NzbDrone.Core/NetImport/ImportExclusions/ImportExclusionsRepository.cs b/src/NzbDrone.Core/NetImport/ImportExclusions/ImportExclusionsRepository.cs
index 7846cb0f34..ca9db18887 100644
--- a/src/NzbDrone.Core/NetImport/ImportExclusions/ImportExclusionsRepository.cs
+++ b/src/NzbDrone.Core/NetImport/ImportExclusions/ImportExclusionsRepository.cs
@@ -30,12 +30,12 @@ public ImportExclusionsRepository(IMainDatabase database, IEventAggregator event
public bool IsMovieExcluded(int tmdbid)
{
- return Query.Where(ex => ex.TmdbId == tmdbid).Any();
+ return Query(q => q.Where(ex => ex.TmdbId == tmdbid).Any());
}
public ImportExclusion GetByTmdbid(int tmdbid)
{
- return Query.Where(ex => ex.TmdbId == tmdbid).First();
+ return Query(q => q.Where(ex => ex.TmdbId == tmdbid).First());
}
}
}
diff --git a/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs b/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs
index f64a8c5fac..3b0bf96823 100644
--- a/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs
+++ b/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using NLog;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
@@ -30,7 +30,7 @@ public override IEnumerable GetDefaultDefinitions()
EnableAuto = true,
ProfileId = 1,
Implementation = GetType().Name,
- Settings = new RSSImportSettings { Link = "http://rss.imdb.com/list/YOURLISTID" },
+ Settings = new RSSImportSettings { Link = "https://rss.imdb.com/list/YOURLISTID" },
};
yield return new NetImportDefinition
{
@@ -39,7 +39,7 @@ public override IEnumerable GetDefaultDefinitions()
EnableAuto = true,
ProfileId = 1,
Implementation = GetType().Name,
- Settings = new RSSImportSettings { Link = "http://rss.imdb.com/user/IMDBUSERID/watchlist" },
+ Settings = new RSSImportSettings { Link = "https://rss.imdb.com/user/IMDBUSERID/watchlist" },
};
}
diff --git a/src/NzbDrone.Core/NetImport/RSSImport/RSSImportSettings.cs b/src/NzbDrone.Core/NetImport/RSSImport/RSSImportSettings.cs
index 254b144fc3..f02b553442 100644
--- a/src/NzbDrone.Core/NetImport/RSSImport/RSSImportSettings.cs
+++ b/src/NzbDrone.Core/NetImport/RSSImport/RSSImportSettings.cs
@@ -1,4 +1,4 @@
-using FluentValidation;
+using FluentValidation;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -19,7 +19,7 @@ public class RSSImportSettings : IProviderConfig
public RSSImportSettings()
{
- Link = "http://rss.yoursite.com";
+ Link = "https://rss.yoursite.com";
}
[FieldDefinition(0, Label = "RSS Link", HelpText = "Link to the rss feed of movies.")]
diff --git a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
index 681f145d8a..9305c87eab 100755
--- a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
+++ b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
@@ -40,7 +40,7 @@ public override void OnGrab(GrabMessage message)
environmentVariables.Add("Radarr_Movie_ImdbId", movie.ImdbId ?? string.Empty);
environmentVariables.Add("Radarr_Movie_TmdbId", movie.TmdbId.ToString());
environmentVariables.Add("Radarr_Release_Title", remoteMovie.Release.Title);
- environmentVariables.Add("Radarr_Release_Indexer", remoteMovie.Release.Indexer);
+ environmentVariables.Add("Radarr_Release_Indexer", remoteMovie.Release.Indexer ?? string.Empty);
environmentVariables.Add("Radarr_Release_Size", remoteMovie.Release.Size.ToString());
environmentVariables.Add("Radarr_Release_ReleaseGroup", remoteMovie.ParsedMovieInfo.ReleaseGroup ?? string.Empty);
environmentVariables.Add("Radarr_Release_Quality", quality.Quality.Name);
diff --git a/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowser.cs b/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowser.cs
index 19a023d412..5e5b92a6c9 100644
--- a/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowser.cs
+++ b/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowser.cs
@@ -37,7 +37,7 @@ public override void OnDownload(DownloadMessage message)
if (Settings.UpdateLibrary)
{
- _mediaBrowserService.UpdateMovies(Settings, message.Movie);
+ _mediaBrowserService.UpdateMovies(Settings, message.Movie, "Created");
}
}
@@ -45,7 +45,7 @@ public override void OnMovieRename(Movie movie)
{
if (Settings.UpdateLibrary)
{
- _mediaBrowserService.UpdateMovies(Settings, movie);
+ _mediaBrowserService.UpdateMovies(Settings, movie, "Modified");
}
}
diff --git a/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserProxy.cs b/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserProxy.cs
index 79e8e8c9c9..88002ea336 100644
--- a/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserProxy.cs
+++ b/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserProxy.cs
@@ -31,11 +31,23 @@ public void Notify(MediaBrowserSettings settings, string title, string message)
ProcessRequest(request, settings);
}
- public void UpdateMovies(MediaBrowserSettings settings, string imdbid)
+ public void UpdateMovies(MediaBrowserSettings settings, string moviePath, string updateType)
{
- var path = string.Format("/Library/Movies/Updated?ImdbId={0}", imdbid);
+ var path = "/Library/Media/Updated";
var request = BuildRequest(path, settings);
- request.Headers.Add("Content-Length", "0");
+ request.Headers.ContentType = "application/json";
+
+ request.SetContent(new
+ {
+ Updates = new[]
+ {
+ new
+ {
+ Path = moviePath,
+ UpdateType = updateType
+ }
+ }
+ }.ToJson());
ProcessRequest(request, settings);
}
diff --git a/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserService.cs b/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserService.cs
index 9d39ff57f6..d1fc67ca9e 100644
--- a/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserService.cs
+++ b/src/NzbDrone.Core/Notifications/MediaBrowser/MediaBrowserService.cs
@@ -10,7 +10,7 @@ namespace NzbDrone.Core.Notifications.MediaBrowser
public interface IMediaBrowserService
{
void Notify(MediaBrowserSettings settings, string title, string message);
- void UpdateMovies(MediaBrowserSettings settings, Movie movie);
+ void UpdateMovies(MediaBrowserSettings settings, Movie movie, string updateType);
ValidationFailure Test(MediaBrowserSettings settings);
}
@@ -30,9 +30,9 @@ public void Notify(MediaBrowserSettings settings, string title, string message)
_proxy.Notify(settings, title, message);
}
- public void UpdateMovies(MediaBrowserSettings settings, Movie movie)
+ public void UpdateMovies(MediaBrowserSettings settings, Movie movie, string updateType)
{
- _proxy.UpdateMovies(settings, movie.ImdbId);
+ _proxy.UpdateMovies(settings, movie.Path, updateType);
}
diff --git a/src/NzbDrone.Core/Notifications/NotificationService.cs b/src/NzbDrone.Core/Notifications/NotificationService.cs
index 1a36e375f3..91b323715f 100644
--- a/src/NzbDrone.Core/Notifications/NotificationService.cs
+++ b/src/NzbDrone.Core/Notifications/NotificationService.cs
@@ -30,7 +30,7 @@ public NotificationService(INotificationFactory notificationFactory, Logger logg
private string GetMessage(Movie movie, QualityModel quality)
{
var qualityString = quality.Quality.ToString();
- var ImdbUrl = "http://www.imdb.com/title/" + movie.ImdbId + "/";
+ var ImdbUrl = "https://www.imdb.com/title/" + movie.ImdbId + "/";
if (quality.Revision.Version > 1)
{
diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj
index 691004d60d..bf24d10b24 100644
--- a/src/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/src/NzbDrone.Core/NzbDrone.Core.csproj
@@ -149,9 +149,13 @@
+
+
+
+
@@ -1326,4 +1330,4 @@
-->
-
+
\ No newline at end of file
diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs
index d139dbe79e..128db51c9a 100644
--- a/src/NzbDrone.Core/Parser/LanguageParser.cs
+++ b/src/NzbDrone.Core/Parser/LanguageParser.cs
@@ -13,10 +13,10 @@ public static class LanguageParser
{
private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(LanguageParser));
- private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?\b(?:ita|italian)\b)|(?german\b|videomann)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VOSTFR|VO|VFF|VFQ|VF2|TRUEFRENCH)(?:\W|_))|(?\brus\b)|(?nl\W?subs?)|(?\b(?:HUNDUB|HUN)\b)|(?\bHebDub\b)|(?\bCZ|SK\b)",
+ private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_|^)(?\b(?:ita|italian)\b)|(?german\b|videomann)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VOSTFR|VO|VFF|VFQ|VF2|TRUEFRENCH)(?:\W|_))|(?\brus\b)|(?nl\W?subs?)|(?\b(?:HUNDUB|HUN)\b)|(?\bHebDub\b)|(?\b(?:CZ|SK)\b)",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
- private static readonly Regex SubtitleLanguageRegex = new Regex(".+?[-_. ](?[a-z]{2,3})$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
+ private static readonly Regex SubtitleLanguageRegex = new Regex(".+?[-_. ](?[a-z]{2,3})(?:[-_. ]forced)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public static List ParseLanguages(string title)
{
@@ -142,7 +142,9 @@ public static Language ParseSubtitleLanguage(string fileName)
{
try
{
+#if !LIBRARY
Logger.Debug("Parsing language from subtitle file: {0}", fileName);
+#endif
var simpleFilename = Path.GetFileNameWithoutExtension(fileName);
var languageMatch = SubtitleLanguageRegex.Match(simpleFilename);
@@ -154,12 +156,15 @@ public static Language ParseSubtitleLanguage(string fileName)
return isoLanguage?.Language ?? Language.Unknown;
}
-
+#if !LIBRARY
Logger.Debug("Unable to parse langauge from subtitle file: {0}", fileName);
+#endif
}
catch (Exception ex)
{
+#if !LIBRARY
Logger.Debug("Failed parsing langauge from subtitle file: {0}", fileName);
+#endif
}
return Language.Unknown;
diff --git a/src/NzbDrone.Core/Parser/Model/ParsedMovieInfo.cs b/src/NzbDrone.Core/Parser/Model/ParsedMovieInfo.cs
index e7868c4b44..e3a930f7fe 100644
--- a/src/NzbDrone.Core/Parser/Model/ParsedMovieInfo.cs
+++ b/src/NzbDrone.Core/Parser/Model/ParsedMovieInfo.cs
@@ -1,8 +1,7 @@
-using System.Collections.Generic;
-using System.Linq;
+using System;
+using System.Collections.Generic;
using Newtonsoft.Json;
using NzbDrone.Common.Extensions;
-using NzbDrone.Core.CustomFormats;
using NzbDrone.Core.Qualities;
namespace NzbDrone.Core.Parser.Model
@@ -39,14 +38,39 @@ public class ParsedMovieInfo
public int Year { get; set; }
public string ImdbId { get; set; }
- public ParsedMovieInfo()
- {
-
- }
-
public override string ToString()
{
- return string.Format("{0} - {1} {2}", MovieTitle, Year, Quality);
+ return String.Format("{0} - {1} {2}", MovieTitle, Year, Quality);
}
+
+#if LIBRARY
+ public static ParsedMovieInfo ParseMovieInfo(string title)
+ {
+ var parsedMovie = Parser.ParseMovieTitle(title, false);
+
+ if (parsedMovie == null) return null;
+
+ parsedMovie.Languages = LanguageParser.ParseLanguages(parsedMovie.SimpleReleaseTitle);
+
+ parsedMovie.Quality = QualityParser.ParseQuality(parsedMovie.SimpleReleaseTitle);
+
+ if (parsedMovie.Edition.IsNullOrWhiteSpace())
+ {
+ parsedMovie.Edition = Parser.ParseEdition(parsedMovie.SimpleReleaseTitle);
+ }
+
+ parsedMovie.ReleaseGroup = Parser.ParseReleaseGroup(parsedMovie.SimpleReleaseTitle);
+
+ parsedMovie.ImdbId = Parser.ParseImdbId(parsedMovie.SimpleReleaseTitle);
+
+ parsedMovie.Languages =
+ LanguageParser.EnhanceLanguages(parsedMovie.SimpleReleaseTitle, parsedMovie.Languages);
+
+ parsedMovie.Quality.Quality = Qualities.Quality.FindByInfo(parsedMovie.Quality.Source, parsedMovie.Quality.Resolution,
+ parsedMovie.Quality.Modifier);
+
+ return parsedMovie;
+ }
+#endif
}
}
diff --git a/src/NzbDrone.Core/Parser/Parser.cs b/src/NzbDrone.Core/Parser/Parser.cs
index b296c29186..c6b2695fca 100644
--- a/src/NzbDrone.Core/Parser/Parser.cs
+++ b/src/NzbDrone.Core/Parser/Parser.cs
@@ -4,13 +4,15 @@
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
-using NLog;
using NzbDrone.Common.Extensions;
-using NzbDrone.Common.Instrumentation;
-using NzbDrone.Core.Configuration;
using NzbDrone.Core.Parser.Model;
+using NLog;
+using NzbDrone.Common.Instrumentation;
+#if !LIBRARY
+using NzbDrone.Core.Configuration;
using NzbDrone.Core.Movies;
using TinyIoC;
+#endif
namespace NzbDrone.Core.Parser
{
@@ -21,7 +23,7 @@ public static class Parser
private static readonly Regex[] ReportMovieTitleRegex = new[]
{
//Special, Despecialized, etc. Edition Movies, e.g: Mission.Impossible.3.Special.Edition.2011
- new Regex(@"^(?(?![(\[]).+?)?(?:(?:[-_\W](?(((Extended.|Ultimate.)?(Director.?s|Collector.?s|Theatrical|Ultimate|Final(?=(.(Cut|Edition|Version)))|Extended|Rogue|Special|Despecialized|\d{2,3}(th)?.Anniversary)(.(Cut|Edition|Version))?(.(Extended|Uncensored|Remastered|Unrated|Uncut|IMAX|Fan.?Edit))?|((Uncensored|Remastered|Unrated|Uncut|IMAX|Fan.?Edit|Edition|Restored|((2|3|4)in1))))))\)?.{1,3}(?(19|20)\d{2}(?!p|i|\d+|\]|\W\d+)))+(\W+|_|$)(?!\\)",
+ new Regex(@"^(?(?![(\[]).+?)?(?:(?:[-_\W](?(((Extended.|Ultimate.)?(Director.?s|Collector.?s|Theatrical|Ultimate|Final(?=(.(Cut|Edition|Version)))|Extended|Rogue|Special|Despecialized|\d{2,3}(th)?.Anniversary)(.(Cut|Edition|Version))?(.(Extended|Uncensored|Remastered|Unrated|Uncut|IMAX|Fan.?Edit))?|((Uncensored|Remastered|Unrated|Uncut|IMAX|Fan.?Edit|Edition|Restored|((2|3|4)in1))))))\b\)?.{1,3}(?(1(8|9)|20)\d{2}(?!p|i|\d+|\]|\W\d+)))+(\W+|_|$)(?!\\)",
RegexOptions.IgnoreCase | RegexOptions.Compiled),
//Special, Despecialized, etc. Edition Movies, e.g: Mission.Impossible.3.2011.Special.Edition //TODO: Seems to slow down parsing heavily!
@@ -29,16 +31,16 @@ public static class Parser
RegexOptions.IgnoreCase | RegexOptions.Compiled),*/
//Normal movie format, e.g: Mission.Impossible.3.2011
- new Regex(@"^(?(?![(\[]).+?)?(?:(?:[-_\W](?(19|20)\d{2}(?!p|i|(19|20)\d{2}|\]|\W(19|20)\d{2})))+(\W+|_|$)(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
+ new Regex(@"^(?(?![(\[]).+?)?(?:(?:[-_\W](?(1(8|9)|20)\d{2}(?!p|i|(1(8|9)|20)\d{2}|\]|\W(1(8|9)|20)\d{2})))+(\W+|_|$)(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
//PassThePopcorn Torrent names: Star.Wars[PassThePopcorn]
new Regex(@"^(?.+?)?(?:(?:[-_\W](?(\[\w *\])))+(\W+|_|$)(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
//That did not work? Maybe some tool uses [] for years. Who would do that?
- new Regex(@"^(?(?![(\[]).+?)?(?:(?:[-_\W](?(19|20)\d{2}(?!p|i|\d+|\W\d+)))+(\W+|_|$)(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
+ new Regex(@"^(?(?![(\[]).+?)?(?:(?:[-_\W](?(1(8|9)|20)\d{2}(?!p|i|\d+|\W\d+)))+(\W+|_|$)(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
//As a last resort for movies that have ( or [ in their title.
- new Regex(@"^(?.+?)?(?:(?:[-_\W](?(19|20)\d{2}(?!p|i|\d+|\]|\W\d+)))+(\W+|_|$)(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
+ new Regex(@"^(?.+?)?(?:(?:[-_\W](?(1(8|9)|20)\d{2}(?!p|i|\d+|\]|\W\d+)))+(\W+|_|$)(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled),
};
@@ -86,7 +88,7 @@ public static class Parser
};
//Regex to detect whether the title was reversed.
- private static readonly Regex ReversedTitleRegex = new Regex(@"[-._ ](p027|p0801|\d{2}E\d{2}S)[-._ ]", RegexOptions.Compiled);
+ private static readonly Regex ReversedTitleRegex = new Regex(@"(?:^|[-._ ])(p027|p0801)[-._ ]", RegexOptions.Compiled);
private static readonly Regex NormalizeRegex = new Regex(@"((?:\b|_)(??*:|])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
- private static readonly Regex WebsitePrefixRegex = new Regex(@"^\[\s*[a-z]+(\.[a-z]+)+\s*\][- ]*",
+ private static readonly Regex WebsitePrefixRegex = new Regex(@"^\[\s*[a-z]+(\.[a-z]+)+\s*\][- ]*|^www\.[a-z]+\.(?:com|net)[ -]*",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly Regex AirDateRegex = new Regex(@"^(.*?)(?\d{4})[_.-](?[0-1][0-9])[_.-](?