From dcf97a1008b850b4487aab9fef362c82454e97b1 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Wed, 21 Jun 2017 17:02:29 +0100 Subject: [PATCH] Lots of fixes. Becoming more stable now. #865 --- src/Ombi.Api.Discord/DiscordApi.cs | 6 +- src/Ombi.Api.Emby/EmbyApi.cs | 6 +- src/Ombi.Api.Plex/PlexApi.cs | 10 +- src/Ombi.Api.Radarr/RadarrApi.cs | 18 +- src/Ombi.Api.Sonarr/SonarrApi.cs | 10 +- src/Ombi.Api.TvMaze/TvMazeApi.cs | 6 +- src/Ombi.Api/Api.cs | 19 +- src/Ombi.Api/IApi.cs | 11 + src/Ombi.Api/Ombi.Api.csproj | 5 + src/Ombi.DependencyInjection/IocExtensions.cs | 6 +- .../Models/External/RadarrSettings.cs | 1 - .../Models/External/SonarrSettings.cs | 2 - src/Ombi.Settings/Settings/SettingsService.cs | 11 +- src/Ombi.TheMovieDbApi/TheMovieDbApi.cs | 6 +- src/Ombi.Updater/Installer.cs | 20 + src/Ombi.Updater/Ombi.Updater.csproj | 8 + src/Ombi.Updater/ProcessProvider.cs | 203 +++++ src/Ombi.Updater/Program.cs | 44 ++ src/Ombi.sln | 9 + .../ClientApp/app/interfaces/ISettings.ts | 3 +- .../notifications/discord.component.html | 4 +- .../app/settings/radarr/radarr.component.html | 68 +- .../app/settings/radarr/radarr.component.ts | 54 +- .../ClientApp/app/settings/settings.module.ts | 5 +- .../app/settings/settingsmenu.component.html | 1 + .../app/settings/sonarr/sonarr.component.html | 61 +- .../app/settings/sonarr/sonarr.component.ts | 55 +- .../Controllers/External/TesterController.cs | 3 +- src/Ombi/Controllers/SettingsController.cs | 6 +- src/Ombi/gulpfile.js | 2 +- src/Ombi/package-lock.json | 739 ++++++++++++------ 31 files changed, 1021 insertions(+), 381 deletions(-) create mode 100644 src/Ombi.Api/IApi.cs create mode 100644 src/Ombi.Updater/Installer.cs create mode 100644 src/Ombi.Updater/Ombi.Updater.csproj create mode 100644 src/Ombi.Updater/ProcessProvider.cs create mode 100644 src/Ombi.Updater/Program.cs diff --git a/src/Ombi.Api.Discord/DiscordApi.cs b/src/Ombi.Api.Discord/DiscordApi.cs index 3acd717ad..f2b0cc8be 100644 --- a/src/Ombi.Api.Discord/DiscordApi.cs +++ b/src/Ombi.Api.Discord/DiscordApi.cs @@ -6,13 +6,13 @@ namespace Ombi.Api.Discord { public class DiscordApi : IDiscordApi { - public DiscordApi() + public DiscordApi(IApi api) { - Api = new Api(); + Api = api; } private string Endpoint => "https://discordapp.com/api/"; //webhooks/270828242636636161/lLysOMhJ96AFO1kvev0bSqP-WCZxKUh1UwfubhIcLkpS0DtM3cg4Pgeraw3waoTXbZii - private Api Api { get; } + private IApi Api { get; } public async Task SendMessage(DiscordWebhookBody body, string webhookId, string webhookToken) { diff --git a/src/Ombi.Api.Emby/EmbyApi.cs b/src/Ombi.Api.Emby/EmbyApi.cs index 64a570322..aaab3a5a8 100644 --- a/src/Ombi.Api.Emby/EmbyApi.cs +++ b/src/Ombi.Api.Emby/EmbyApi.cs @@ -9,12 +9,12 @@ namespace Ombi.Api.Emby { public class EmbyApi : IEmbyApi { - public EmbyApi() + public EmbyApi(IApi api) { - Api = new Api(); + Api = api; } - private Api Api { get; } + private IApi Api { get; } /// /// Returns all users from the Emby Instance diff --git a/src/Ombi.Api.Plex/PlexApi.cs b/src/Ombi.Api.Plex/PlexApi.cs index bf6b1d4dd..43ee1a31b 100644 --- a/src/Ombi.Api.Plex/PlexApi.cs +++ b/src/Ombi.Api.Plex/PlexApi.cs @@ -1,7 +1,5 @@ -using System; -using System.Net.Http; +using System.Net.Http; using System.Threading.Tasks; -using Newtonsoft.Json; using Ombi.Api.Plex.Models; using Ombi.Api.Plex.Models.Server; using Ombi.Api.Plex.Models.Status; @@ -10,12 +8,12 @@ namespace Ombi.Api.Plex { public class PlexApi : IPlexApi { - public PlexApi() + public PlexApi(IApi api) { - Api = new Api(); + Api = api; } - private Api Api { get; } + private IApi Api { get; } private const string SignInUri = "https://plex.tv/users/sign_in.json"; private const string FriendsUri = "https://plex.tv/pms/friends/all"; diff --git a/src/Ombi.Api.Radarr/RadarrApi.cs b/src/Ombi.Api.Radarr/RadarrApi.cs index 9ea5490cb..2a5c92bec 100644 --- a/src/Ombi.Api.Radarr/RadarrApi.cs +++ b/src/Ombi.Api.Radarr/RadarrApi.cs @@ -12,18 +12,18 @@ namespace Ombi.Api.Radarr { public class RadarrApi : IRadarrApi { - public RadarrApi(ILogger logger) + public RadarrApi(ILogger logger, IApi api) { - Api = new Api(); + Api = api; Logger = logger; } - private Api Api { get; } + private IApi Api { get; } private ILogger Logger { get; } public async Task> GetProfiles(string apiKey, string baseUrl) { - var request = new Request(baseUrl, "/api/profile", HttpMethod.Get); + var request = new Request("/api/profile", baseUrl, HttpMethod.Get); AddHeaders(request, apiKey); return await Api.Request>(request); @@ -31,7 +31,7 @@ namespace Ombi.Api.Radarr public async Task> GetRootFolders(string apiKey, string baseUrl) { - var request = new Request(baseUrl, "/api/rootfolder", HttpMethod.Get); + var request = new Request("/api/rootfolder", baseUrl, HttpMethod.Get); AddHeaders(request, apiKey); return await Api.Request>(request); @@ -39,7 +39,7 @@ namespace Ombi.Api.Radarr public async Task SystemStatus(string apiKey, string baseUrl) { - var request = new Request(baseUrl, "/api/system/status", HttpMethod.Get); + var request = new Request("/api/system/status", baseUrl, HttpMethod.Get); AddHeaders(request, apiKey); return await Api.Request(request); @@ -47,7 +47,7 @@ namespace Ombi.Api.Radarr public async Task> GetMovies(string apiKey, string baseUrl) { - var request = new Request(baseUrl, "/api/movie", HttpMethod.Get); + var request = new Request("/api/movie", baseUrl, HttpMethod.Get); AddHeaders(request, apiKey); return await Api.Request>(request); @@ -55,7 +55,7 @@ namespace Ombi.Api.Radarr public async Task AddMovie(int tmdbId, string title, int year, int qualityId, string rootPath, string apiKey, string baseUrl, bool searchNow = false) { - var request = new Request(baseUrl, "/api/movie", HttpMethod.Post); + var request = new Request("/api/movie", baseUrl, HttpMethod.Post); var options = new RadarrAddMovieResponse { @@ -97,7 +97,7 @@ namespace Ombi.Api.Radarr } catch (JsonSerializationException jse) { - Logger.LogError(LoggingEvents.RadarrApiException,jse, "Error When adding movie to Radarr"); + Logger.LogError(LoggingEvents.RadarrApiException, jse, "Error When adding movie to Radarr"); } return null; } diff --git a/src/Ombi.Api.Sonarr/SonarrApi.cs b/src/Ombi.Api.Sonarr/SonarrApi.cs index e05f9eec8..5fbef3874 100644 --- a/src/Ombi.Api.Sonarr/SonarrApi.cs +++ b/src/Ombi.Api.Sonarr/SonarrApi.cs @@ -9,16 +9,16 @@ namespace Ombi.Api.Sonarr public class SonarrApi : ISonarrApi { - public SonarrApi() + public SonarrApi(IApi api) { - Api = new Api(); + Api = api; } - private Api Api { get; } + private IApi Api { get; } public async Task> GetProfiles(string apiKey, string baseUrl) { - var request = new Request(baseUrl, "/api/profile", HttpMethod.Get); + var request = new Request("/api/profile", baseUrl, HttpMethod.Get); request.AddHeader("X-Api-Key", apiKey); @@ -27,7 +27,7 @@ namespace Ombi.Api.Sonarr public async Task> GetRootFolders(string apiKey, string baseUrl) { - var request = new Request(baseUrl, "/api/rootfolder", HttpMethod.Get); + var request = new Request("/api/rootfolder", baseUrl, HttpMethod.Get); request.AddHeader("X-Api-Key", apiKey); diff --git a/src/Ombi.Api.TvMaze/TvMazeApi.cs b/src/Ombi.Api.TvMaze/TvMazeApi.cs index 4be0f2658..401c3f801 100644 --- a/src/Ombi.Api.TvMaze/TvMazeApi.cs +++ b/src/Ombi.Api.TvMaze/TvMazeApi.cs @@ -11,14 +11,14 @@ namespace Ombi.Api.TvMaze { public class TvMazeApi : ITvMazeApi { - public TvMazeApi(ILogger logger) + public TvMazeApi(ILogger logger, IApi api) { - Api = new Ombi.Api.Api(); + Api = api; Logger = logger; //Mapper = mapper; } private string Uri = "http://api.tvmaze.com"; - private Api Api { get; } + private IApi Api { get; } private ILogger Logger { get; } public async Task> Search(string searchTerm) diff --git a/src/Ombi.Api/Api.cs b/src/Ombi.Api/Api.cs index fcf688c26..6e168d63f 100644 --- a/src/Ombi.Api/Api.cs +++ b/src/Ombi.Api/Api.cs @@ -4,11 +4,20 @@ using System.Net.Http; using System.Threading.Tasks; using System.Xml.Serialization; using Newtonsoft.Json; +using Microsoft.Extensions.Logging; +using Ombi.Helpers; namespace Ombi.Api { - public class Api + public class Api : IApi { + public Api(ILogger log) + { + Logger = log; + } + + private ILogger Logger { get; } + private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore @@ -36,12 +45,10 @@ namespace Ombi.Api { if (!httpResponseMessage.IsSuccessStatusCode) { - // Logging + Logger.LogError(LoggingEvents.ApiException, $"StatusCode: {httpResponseMessage.StatusCode}, Reason: {httpResponseMessage.ReasonPhrase}"); } // do something with the response var data = httpResponseMessage.Content; - - var receivedString = await data.ReadAsStringAsync(); if (request.ContentType == ContentType.Json) { @@ -82,7 +89,7 @@ namespace Ombi.Api { if (!httpResponseMessage.IsSuccessStatusCode) { - // Logging + Logger.LogError(LoggingEvents.ApiException, $"StatusCode: {httpResponseMessage.StatusCode}, Reason: {httpResponseMessage.ReasonPhrase}"); } // do something with the response var data = httpResponseMessage.Content; @@ -116,7 +123,7 @@ namespace Ombi.Api { if (!httpResponseMessage.IsSuccessStatusCode) { - // Logging + Logger.LogError(LoggingEvents.ApiException, $"StatusCode: {httpResponseMessage.StatusCode}, Reason: {httpResponseMessage.ReasonPhrase}"); } } } diff --git a/src/Ombi.Api/IApi.cs b/src/Ombi.Api/IApi.cs new file mode 100644 index 000000000..2b7f71bb8 --- /dev/null +++ b/src/Ombi.Api/IApi.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; + +namespace Ombi.Api +{ + public interface IApi + { + Task Request(Request request); + Task Request(Request request); + Task RequestContent(Request request); + } +} \ No newline at end of file diff --git a/src/Ombi.Api/Ombi.Api.csproj b/src/Ombi.Api/Ombi.Api.csproj index 2fbb9976a..1b3929ced 100644 --- a/src/Ombi.Api/Ombi.Api.csproj +++ b/src/Ombi.Api/Ombi.Api.csproj @@ -6,8 +6,13 @@ + + + + + \ No newline at end of file diff --git a/src/Ombi.DependencyInjection/IocExtensions.cs b/src/Ombi.DependencyInjection/IocExtensions.cs index 54130b57c..f9c546723 100644 --- a/src/Ombi.DependencyInjection/IocExtensions.cs +++ b/src/Ombi.DependencyInjection/IocExtensions.cs @@ -29,6 +29,7 @@ using Ombi.Store.Repository; using Ombi.Core.Rules; using Ombi.Notifications.Agents; using Ombi.Schedule.Jobs.Radarr; +using Ombi.Api; namespace Ombi.DependencyInjection { @@ -52,11 +53,12 @@ namespace Ombi.DependencyInjection services.AddTransient(); services.AddTransient(); services.AddSingleton(); - services.AddSingleton(); + services.AddTransient(); } public static void RegisterApi(this IServiceCollection services) { + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -78,7 +80,7 @@ namespace Ombi.DependencyInjection services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(typeof(ISettingsService<>), typeof(SettingsServiceV2<>)); + services.AddTransient(typeof(ISettingsService<>), typeof(SettingsService<>)); } public static void RegisterServices(this IServiceCollection services) { diff --git a/src/Ombi.Settings/Settings/Models/External/RadarrSettings.cs b/src/Ombi.Settings/Settings/Models/External/RadarrSettings.cs index 919ea0377..b7ef0632e 100644 --- a/src/Ombi.Settings/Settings/Models/External/RadarrSettings.cs +++ b/src/Ombi.Settings/Settings/Models/External/RadarrSettings.cs @@ -8,7 +8,6 @@ namespace Ombi.Settings.Settings.Models.External public string ApiKey { get; set; } public string DefaultQualityProfile { get; set; } public string DefaultRootPath { get; set; } - public string FullRootPath { get; set; } public bool AddOnly { get; set; } } } \ No newline at end of file diff --git a/src/Ombi.Settings/Settings/Models/External/SonarrSettings.cs b/src/Ombi.Settings/Settings/Models/External/SonarrSettings.cs index 0438f111d..78f68aa21 100644 --- a/src/Ombi.Settings/Settings/Models/External/SonarrSettings.cs +++ b/src/Ombi.Settings/Settings/Models/External/SonarrSettings.cs @@ -13,7 +13,5 @@ /// The root path. /// public string RootPath { get; set; } - public string FullRootPath { get; set; } - } } \ No newline at end of file diff --git a/src/Ombi.Settings/Settings/SettingsService.cs b/src/Ombi.Settings/Settings/SettingsService.cs index 3343dff4e..a6777fdfc 100644 --- a/src/Ombi.Settings/Settings/SettingsService.cs +++ b/src/Ombi.Settings/Settings/SettingsService.cs @@ -4,21 +4,24 @@ using Ombi.Core.Settings; using Ombi.Helpers; using Ombi.Store.Entities; using Ombi.Store.Repository; +using Microsoft.AspNetCore.DataProtection; namespace Ombi.Settings.Settings { - public class SettingsServiceV2 : ISettingsService + public class SettingsService : ISettingsService where T : Ombi.Settings.Settings.Models.Settings, new() { - public SettingsServiceV2(ISettingsRepository repo) + public SettingsService(ISettingsRepository repo, IDataProtectionProvider provider) { Repo = repo; EntityName = typeof(T).Name; + _protector = provider.CreateProtector(GetType().FullName); } private ISettingsRepository Repo { get; } private string EntityName { get; } + private readonly IDataProtector _protector; public T GetSettings() { @@ -119,12 +122,12 @@ namespace Ombi.Settings.Settings private string EncryptSettings(GlobalSettings settings) { - return StringCipher.EncryptString(settings.Content, $"Ombiv3SettingsEncryptionPassword"); + return _protector.Protect(settings.Content); } private string DecryptSettings(GlobalSettings settings) { - return StringCipher.DecryptString(settings.Content, $"Ombiv3SettingsEncryptionPassword"); + return _protector.Unprotect(settings.Content); } } } \ No newline at end of file diff --git a/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs b/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs index d48c65e4f..df3de6d4e 100644 --- a/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs +++ b/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs @@ -10,16 +10,16 @@ namespace Ombi.Api.TheMovieDb { public class TheMovieDbApi : IMovieDbApi { - public TheMovieDbApi(IMapper mapper) + public TheMovieDbApi(IMapper mapper, IApi api) { - Api = new Api(); + Api = api; Mapper = mapper; } private IMapper Mapper { get; } private readonly string ApiToken = "b8eabaf5608b88d0298aa189dd90bf00"; private static readonly string BaseUri ="http://api.themoviedb.org/3/"; - private Api Api { get; } + private IApi Api { get; } public async Task GetMovieInformation(int movieId) { diff --git a/src/Ombi.Updater/Installer.cs b/src/Ombi.Updater/Installer.cs new file mode 100644 index 000000000..a667e3117 --- /dev/null +++ b/src/Ombi.Updater/Installer.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Ombi.Updater +{ + public class Installer + { + public void Start(StartupOptions options) + { + // Kill Ombi Process + var p = new ProcessProvider(); + + p.Kill(options.OmbiProcessId); + + } + + + } +} diff --git a/src/Ombi.Updater/Ombi.Updater.csproj b/src/Ombi.Updater/Ombi.Updater.csproj new file mode 100644 index 000000000..6d25f413b --- /dev/null +++ b/src/Ombi.Updater/Ombi.Updater.csproj @@ -0,0 +1,8 @@ + + + + Exe + netcoreapp1.1 + + + \ No newline at end of file diff --git a/src/Ombi.Updater/ProcessProvider.cs b/src/Ombi.Updater/ProcessProvider.cs new file mode 100644 index 000000000..8ba33b952 --- /dev/null +++ b/src/Ombi.Updater/ProcessProvider.cs @@ -0,0 +1,203 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace Ombi.Updater +{ + public class ProcessProvider + { + public const string OmbiProcessName = "Ombi"; + + public int GetCurrentProcessId() + { + return Process.GetCurrentProcess().Id; + } + + public ProcessInfo GetCurrentProcess() + { + return ConvertToProcessInfo(Process.GetCurrentProcess()); + } + public bool Exists(int processId) + { + return GetProcessById(processId) != null; + } + + public bool Exists(string processName) + { + return GetProcessesByName(processName).Any(); + } + public ProcessInfo GetProcessById(int id) + { + Console.WriteLine("Finding process with Id:{0}", id); + + var processInfo = ConvertToProcessInfo(Process.GetProcesses().FirstOrDefault(p => p.Id == id)); + + if (processInfo == null) + { + Console.WriteLine("Unable to find process with ID {0}", id); + } + else + { + Console.WriteLine("Found process {0}", processInfo.ToString()); + } + + return processInfo; + } + + public List FindProcessByName(string name) + { + return GetProcessesByName(name).Select(ConvertToProcessInfo).Where(c => c != null).ToList(); + } + + + public void WaitForExit(Process process) + { + Console.WriteLine("Waiting for process {0} to exit.", process.ProcessName); + + process.WaitForExit(); + } + + public void SetPriority(int processId, ProcessPriorityClass priority) + { + var process = Process.GetProcessById(processId); + + Console.WriteLine("Updating [{0}] process priority from {1} to {2}", + process.ProcessName, + process.PriorityClass, + priority); + + process.PriorityClass = priority; + } + + public void Kill(int processId) + { + var process = Process.GetProcesses().FirstOrDefault(p => p.Id == processId); + + if (process == null) + { + Console.WriteLine("Cannot find process with id: {0}", processId); + return; + } + + process.Refresh(); + + if (process.Id != Process.GetCurrentProcess().Id && process.HasExited) + { + Console.WriteLine("Process has already exited"); + return; + } + + Console.WriteLine("[{0}]: Killing process", process.Id); + process.Kill(); + Console.WriteLine("[{0}]: Waiting for exit", process.Id); + process.WaitForExit(); + Console.WriteLine("[{0}]: Process terminated successfully", process.Id); + } + + public void KillAll(string processName) + { + var processes = GetProcessesByName(processName); + + Console.WriteLine("Found {0} processes to kill", processes.Count); + + foreach (var processInfo in processes) + { + if (processInfo.Id == Process.GetCurrentProcess().Id) + { + Console.WriteLine("Tried killing own process, skipping: {0} [{1}]", processInfo.Id, processInfo.ProcessName); + continue; + } + + Console.WriteLine("Killing process: {0} [{1}]", processInfo.Id, processInfo.ProcessName); + Kill(processInfo.Id); + } + } + + + private ProcessInfo ConvertToProcessInfo(Process process) + { + if (process == null) return null; + + process.Refresh(); + + ProcessInfo processInfo = null; + + try + { + if (process.Id <= 0) return null; + + processInfo = new ProcessInfo + { + Id = process.Id, + Name = process.ProcessName, + StartPath = GetExeFileName(process) + }; + + if (process.Id != Process.GetCurrentProcess().Id && process.HasExited) + { + processInfo = null; + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + + return processInfo; + + } + + private static string GetExeFileName(Process process) + { + return process.MainModule.FileName; + } + + private List GetProcessesByName(string name) + { + //TODO: move this to an OS specific class + + var monoProcesses = Process.GetProcessesByName("mono") + .Union(Process.GetProcessesByName("mono-sgen")) + .Where(process => + process.Modules.Cast() + .Any(module => + module.ModuleName.ToLower() == name.ToLower() + ".exe")); + + var processes = Process.GetProcessesByName(name) + .Union(monoProcesses).ToList(); + + Console.WriteLine("Found {0} processes with the name: {1}", processes.Count, name); + + try + { + foreach (var process in processes) + { + Console.WriteLine(" - [{0}] {1}", process.Id, process.ProcessName); + } + } + catch + { + // Don't crash on gettings some log data. + } + + return processes; + } + } + + + public class ProcessInfo + { + public int Id { get; set; } + public string Name { get; set; } + public string StartPath { get; set; } + + public override string ToString() + { + return string.Format("{0}:{1} [{2}]", Id, Name ?? "Unknown", StartPath ?? "Unknown"); + } + } +} diff --git a/src/Ombi.Updater/Program.cs b/src/Ombi.Updater/Program.cs new file mode 100644 index 000000000..0893ea635 --- /dev/null +++ b/src/Ombi.Updater/Program.cs @@ -0,0 +1,44 @@ +using System; +using System.Diagnostics; +using System.Linq; + +namespace Ombi.Updater +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("======================================="); + Console.WriteLine(" Starting the Ombi Updater"); + Console.WriteLine("======================================="); + + + var options = CheckArgs(args); + + } + + private static StartupOptions CheckArgs(string[] args) + { + if(args.Length <= 0) + { + Console.WriteLine("No Args Provided... Exiting"); + Environment.Exit(1); + } + + var p = new ProcessProvider(); + var ombiProc = p.FindProcessByName("Ombi").FirstOrDefault().Id; + + return new StartupOptions + { + ApplicationPath = args[0], + OmbiProcessId = ombiProc + }; + } + } + + public class StartupOptions + { + public string ApplicationPath { get; set; } + public int OmbiProcessId { get; set; } + } +} \ No newline at end of file diff --git a/src/Ombi.sln b/src/Ombi.sln index 146b3ea8d..f59909602 100644 --- a/src/Ombi.sln +++ b/src/Ombi.sln @@ -61,6 +61,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ombi.Api.Radarr", "Ombi.Api EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ombi.Api.Discord", "Ombi.Api.Discord\Ombi.Api.Discord.csproj", "{5AF2B6D2-5CC6-49FE-928A-BA27AF52B194}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ombi.Updater", "Ombi.Updater\Ombi.Updater.csproj", "{6294A82D-4915-4FC3-B301-8F985716F34C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Update", "Update", "{D11FE57E-1E57-491D-A1D4-01AEF4BE5CB6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -147,6 +151,10 @@ Global {5AF2B6D2-5CC6-49FE-928A-BA27AF52B194}.Debug|Any CPU.Build.0 = Debug|Any CPU {5AF2B6D2-5CC6-49FE-928A-BA27AF52B194}.Release|Any CPU.ActiveCfg = Release|Any CPU {5AF2B6D2-5CC6-49FE-928A-BA27AF52B194}.Release|Any CPU.Build.0 = Release|Any CPU + {6294A82D-4915-4FC3-B301-8F985716F34C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6294A82D-4915-4FC3-B301-8F985716F34C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6294A82D-4915-4FC3-B301-8F985716F34C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6294A82D-4915-4FC3-B301-8F985716F34C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -166,5 +174,6 @@ Global {FC6A8F7C-9722-4AE4-960D-277ACB0E81CB} = {6F42AB98-9196-44C4-B888-D5E409F415A1} {94D04C1F-E35A-499C-B0A0-9FADEBDF8336} = {9293CA11-360A-4C20-A674-B9E794431BF5} {5AF2B6D2-5CC6-49FE-928A-BA27AF52B194} = {9293CA11-360A-4C20-A674-B9E794431BF5} + {6294A82D-4915-4FC3-B301-8F985716F34C} = {D11FE57E-1E57-491D-A1D4-01AEF4BE5CB6} EndGlobalSection EndGlobal diff --git a/src/Ombi/ClientApp/app/interfaces/ISettings.ts b/src/Ombi/ClientApp/app/interfaces/ISettings.ts index d503e6c3d..553d68011 100644 --- a/src/Ombi/ClientApp/app/interfaces/ISettings.ts +++ b/src/Ombi/ClientApp/app/interfaces/ISettings.ts @@ -46,11 +46,12 @@ export interface IPlexLibraries { export interface ISonarrSettings extends IExternalSettings { apiKey: string, - enable: boolean, + enabled: boolean, qualityProfile: string, seasonFolders: boolean, rootPath: string, fullRootPath: string, + addOnly:boolean, } export interface IRadarrSettings extends IExternalSettings { diff --git a/src/Ombi/ClientApp/app/settings/notifications/discord.component.html b/src/Ombi/ClientApp/app/settings/notifications/discord.component.html index 9b646e1eb..b9822608e 100644 --- a/src/Ombi/ClientApp/app/settings/notifications/discord.component.html +++ b/src/Ombi/ClientApp/app/settings/notifications/discord.component.html @@ -35,8 +35,8 @@
-
diff --git a/src/Ombi/ClientApp/app/settings/radarr/radarr.component.html b/src/Ombi/ClientApp/app/settings/radarr/radarr.component.html index b07d6eb83..12c50225a 100644 --- a/src/Ombi/ClientApp/app/settings/radarr/radarr.component.html +++ b/src/Ombi/ClientApp/app/settings/radarr/radarr.component.html @@ -1,26 +1,38 @@  -
-
- Radarr Settings -
+
+
+ Radarr Settings +
Advanced
- +
+
+
+
The IP/Hostname is required
+
The Port is required
+
The Api Key is required
+
+
+
A Default Quality Profile is required
+
A Default Root Path is required
+
+
+
- +
- +
- +
@@ -28,7 +40,7 @@
- +
@@ -36,39 +48,39 @@
- +
- +
- +
- +
- +
- +
@@ -76,38 +88,30 @@
- +
- +
- +
- - -
-
- - -
- -
- +
- +
-
+ +
diff --git a/src/Ombi/ClientApp/app/settings/radarr/radarr.component.ts b/src/Ombi/ClientApp/app/settings/radarr/radarr.component.ts index e74ef1b84..0d79291ec 100644 --- a/src/Ombi/ClientApp/app/settings/radarr/radarr.component.ts +++ b/src/Ombi/ClientApp/app/settings/radarr/radarr.component.ts @@ -1,6 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { Subject } from 'rxjs/Subject'; import "rxjs/add/operator/takeUntil"; +import { FormGroup, Validators, FormBuilder } from '@angular/forms'; import { IRadarrSettings } from '../../interfaces/ISettings'; import { IRadarrProfile, IRadarrRootFolder } from '../../interfaces/IRadarr'; @@ -14,35 +15,53 @@ import { NotificationService } from "../../services/notification.service"; }) export class RadarrComponent implements OnInit { - constructor(private settingsService: SettingsService, private radarrService: RadarrService, private notificationService: NotificationService) { } - - settings: IRadarrSettings; - + constructor(private settingsService: SettingsService, private radarrService: RadarrService, private notificationService: NotificationService, + private fb: FormBuilder) { } qualities: IRadarrProfile[]; rootFolders: IRadarrRootFolder[]; - selectedRootFolder: IRadarrRootFolder; - selectedQuality: IRadarrProfile; - profilesRunning: boolean; rootFoldersRunning: boolean; advanced = false; private subscriptions = new Subject(); + form : FormGroup; ngOnInit(): void { this.settingsService.getRadarr() .takeUntil(this.subscriptions) .subscribe(x => { - this.settings = x; + + this.form = this.fb.group({ + enabled: [x.enabled], + apiKey: [x.apiKey, [Validators.required]], + defaultQualityProfile: [x.defaultQualityProfile, [Validators.required]], + defaultRootPath: [x.defaultRootPath, [Validators.required]], + ssl: [x.ssl], + subDir: [x.subDir], + ip: [x.ip, [Validators.required]], + port: [x.port, [Validators.required]], + addOnly: [x.addOnly], + }); + + if (x.defaultQualityProfile) + { + this.getProfiles(this.form); + } + if (x.defaultRootPath) + { + this.getRootFolders(this.form); + } }); + + } - getProfiles() { + getProfiles(form: FormGroup) { this.profilesRunning = true; - this.radarrService.getQualityProfiles(this.settings).subscribe(x => { + this.radarrService.getQualityProfiles(form.value).subscribe(x => { this.qualities = x; this.profilesRunning = false; @@ -50,9 +69,9 @@ export class RadarrComponent implements OnInit { }); } - getRootFolders() { + getRootFolders(form: FormGroup) { this.rootFoldersRunning = true; - this.radarrService.getRootFolders(this.settings).subscribe(x => { + this.radarrService.getRootFolders(form.value).subscribe(x => { this.rootFolders = x; this.rootFoldersRunning = false; @@ -64,14 +83,21 @@ export class RadarrComponent implements OnInit { // TODO } - save() { - this.settingsService.saveRadarr(this.settings).subscribe(x => { +onSubmit(form: FormGroup) { + if (form.invalid) { + this.notificationService.error("Validation", "Please check your entered values"); + return + } + + var settings = form.value; + this.settingsService.saveRadarr(settings).subscribe(x => { if (x) { this.notificationService.success("Settings Saved", "Successfully saved Radarr settings"); } else { this.notificationService.success("Settings Saved", "There was an error when saving the Radarr settings"); } }); + } ngOnDestroy(): void { diff --git a/src/Ombi/ClientApp/app/settings/settings.module.ts b/src/Ombi/ClientApp/app/settings/settings.module.ts index 3e4970943..7502ff19a 100644 --- a/src/Ombi/ClientApp/app/settings/settings.module.ts +++ b/src/Ombi/ClientApp/app/settings/settings.module.ts @@ -20,6 +20,7 @@ import { RadarrComponent } from './radarr/radarr.component'; import { LandingPageComponent } from './landingpage/landingpage.component'; import { CustomizationComponent } from './customization/customization.component'; import { EmailNotificationComponent } from './notifications/emailnotification.component'; +import { DiscordComponent } from './notifications/discord.component'; import { NotificationTemplate } from './notifications/notificationtemplate.component'; import { SettingsMenuComponent } from './settingsmenu.component'; @@ -36,6 +37,7 @@ const routes: Routes = [ { path: 'Settings/LandingPage', component: LandingPageComponent, canActivate: [AuthGuard] }, { path: 'Settings/Customization', component: CustomizationComponent, canActivate: [AuthGuard] }, { path: 'Settings/Email', component: EmailNotificationComponent, canActivate: [AuthGuard] }, + { path: 'Settings/Discord', component: DiscordComponent, canActivate: [AuthGuard] }, ]; @NgModule({ @@ -60,11 +62,12 @@ const routes: Routes = [ EmbyComponent, LandingPageComponent, CustomizationComponent, + DiscordComponent, SonarrComponent, RadarrComponent, EmailNotificationComponent, HumanizePipe, - NotificationTemplate + NotificationTemplate, ], exports: [ RouterModule diff --git a/src/Ombi/ClientApp/app/settings/settingsmenu.component.html b/src/Ombi/ClientApp/app/settings/settingsmenu.component.html index c124b40d6..d64c9e7d1 100644 --- a/src/Ombi/ClientApp/app/settings/settingsmenu.component.html +++ b/src/Ombi/ClientApp/app/settings/settingsmenu.component.html @@ -42,6 +42,7 @@ diff --git a/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.html b/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.html index e5a9febac..d55cffdc1 100644 --- a/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.html +++ b/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.html @@ -1,22 +1,36 @@  -
+
Sonarr Settings - +
+ Advanced + +
+
+
+
+
The IP/Hostname is required
+
The Port is required
+
The Api Key is required
+
+
+
A Default Quality Profile is required
+
A Default Root Path is required
+
+
+
- +
- -
- +
@@ -24,7 +38,7 @@
- +
@@ -32,39 +46,39 @@
- +
- +
- +
- +
- +
- +
@@ -72,8 +86,8 @@
- +
@@ -81,22 +95,31 @@
- +
+ +
+
+ + +
+
+
- +
- +
+
diff --git a/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.ts b/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.ts index 200eefe44..23553373c 100644 --- a/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.ts +++ b/src/Ombi/ClientApp/app/settings/sonarr/sonarr.component.ts @@ -1,8 +1,8 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; import { Subject } from 'rxjs/Subject'; import "rxjs/add/operator/takeUntil"; +import { FormGroup, Validators, FormBuilder } from '@angular/forms'; -import { ISonarrSettings } from '../../interfaces/ISettings' import { ISonarrProfile, ISonarrRootFolder } from '../../interfaces/ISonarr' import { SettingsService } from '../../services/settings.service'; import { SonarrService } from '../../services/applications/sonarr.service'; @@ -14,9 +14,8 @@ import { NotificationService } from "../../services/notification.service"; }) export class SonarrComponent implements OnInit, OnDestroy { - constructor(private settingsService: SettingsService, private sonarrService: SonarrService, private notificationService: NotificationService) { } - - settings: ISonarrSettings; + constructor(private settingsService: SettingsService, private sonarrService: SonarrService, private notificationService: NotificationService, + private fb : FormBuilder) { } qualities: ISonarrProfile[]; rootFolders: ISonarrRootFolder[]; @@ -27,20 +26,43 @@ export class SonarrComponent implements OnInit, OnDestroy { profilesRunning: boolean; rootFoldersRunning: boolean; private subscriptions = new Subject(); + form : FormGroup; + advanced = false; ngOnInit(): void { this.settingsService.getSonarr() .takeUntil(this.subscriptions) .subscribe(x => { - this.settings = x; + + this.form = this.fb.group({ + enabled: [x.enabled], + apiKey: [x.apiKey, [Validators.required]], + qualityProfile: [x.qualityProfile, [Validators.required]], + rootPath: [x.rootPath, [Validators.required]], + ssl: [x.ssl], + subDir: [x.subDir], + ip: [x.ip, [Validators.required]], + port: [x.port, [Validators.required]], + addOnly: [x.addOnly], + seasonFolders: [x.seasonFolders], + }); + + if (x.qualityProfile) + { + this.getProfiles(this.form); + } + if (x.rootPath) + { + this.getRootFolders(this.form); + } }); } - getProfiles() { + getProfiles(form:FormGroup) { this.profilesRunning = true; - this.sonarrService.getQualityProfiles(this.settings) + this.sonarrService.getQualityProfiles(form.value) .takeUntil(this.subscriptions) .subscribe(x => { this.qualities = x; @@ -50,9 +72,9 @@ export class SonarrComponent implements OnInit, OnDestroy { }); } - getRootFolders() { + getRootFolders(form:FormGroup) { this.rootFoldersRunning = true; - this.sonarrService.getRootFolders(this.settings) + this.sonarrService.getRootFolders(form.value) .takeUntil(this.subscriptions) .subscribe(x => { this.rootFolders = x; @@ -66,17 +88,12 @@ export class SonarrComponent implements OnInit, OnDestroy { // TODO } - save() { - - if (!this.qualities || !this.rootFolders) { - - this.notificationService.error("Settings Saved", "Please make sure we have selected a quality profile"); - } - if (!this.rootFolders) { - - this.notificationService.error("Settings Saved", "Please make sure we have a root folder"); + onSubmit(form:FormGroup) { + if (form.invalid) { + this.notificationService.error("Validation", "Please check your entered values"); + return } - this.settingsService.saveSonarr(this.settings) + this.settingsService.saveSonarr(form.value) .takeUntil(this.subscriptions) .subscribe(x => { if (x) { diff --git a/src/Ombi/Controllers/External/TesterController.cs b/src/Ombi/Controllers/External/TesterController.cs index b61c1fb4d..cb4c0c6d4 100644 --- a/src/Ombi/Controllers/External/TesterController.cs +++ b/src/Ombi/Controllers/External/TesterController.cs @@ -22,6 +22,7 @@ namespace Ombi.Controllers.External ///
/// The service. /// The notification. + /// The notification. public TesterController(INotificationService service, IDiscordNotification notification, IEmailNotification emailN) { Service = service; @@ -42,7 +43,7 @@ namespace Ombi.Controllers.External public bool Discord([FromBody] DiscordNotificationSettings settings) { settings.Enabled = true; - BackgroundJob.Enqueue(() => Service.PublishTest(new NotificationOptions{NotificationType = NotificationType.Test}, settings, DiscordNotification)); + BackgroundJob.Enqueue(() => Service.PublishTest(new NotificationOptions{NotificationType = NotificationType.Test}, settings, (DiscordNotification)DiscordNotification)); return true; } diff --git a/src/Ombi/Controllers/SettingsController.cs b/src/Ombi/Controllers/SettingsController.cs index 03732a78d..1926fcf4c 100644 --- a/src/Ombi/Controllers/SettingsController.cs +++ b/src/Ombi/Controllers/SettingsController.cs @@ -230,7 +230,7 @@ namespace Ombi.Controllers /// /// The model. /// - [HttpPost("notifications/email")] + [HttpPost("notifications/discord")] public async Task DiscordNotificationSettings([FromBody] DiscordNotificationsViewModel model) { // Save the email settings @@ -247,7 +247,7 @@ namespace Ombi.Controllers /// Gets the discord Notification Settings. /// /// - [HttpGet("notifications/email")] + [HttpGet("notifications/discord")] public async Task DiscordNotificationSettings() { var emailSettings = await Get(); @@ -262,7 +262,7 @@ namespace Ombi.Controllers private async Task> BuildTemplates(NotificationAgent agent) { var templates = await TemplateRepository.GetAllTemplates(agent); - return templates.ToList(); + return templates.OrderBy(x => x.NotificationType.ToString()).ToList(); } diff --git a/src/Ombi/gulpfile.js b/src/Ombi/gulpfile.js index fb113c381..400aaf897 100644 --- a/src/Ombi/gulpfile.js +++ b/src/Ombi/gulpfile.js @@ -56,4 +56,4 @@ gulp.task('test', callback => runSequence('test_compile', 'test_run')); gulp.task('build', callback => runSequence('vendor', 'main', callback)); gulp.task('analyse', callback => runSequence('analyse_var', 'build')); gulp.task('full', callback => runSequence('clean', 'build')); -gulp.task('publish', callback => runSequence('prod_var', 'build')); \ No newline at end of file +gulp.task('publish', callback => runSequence('prod_var', 'build')); \ No newline at end of file diff --git a/src/Ombi/package-lock.json b/src/Ombi/package-lock.json index 7ba2c14e3..b106236c7 100644 --- a/src/Ombi/package-lock.json +++ b/src/Ombi/package-lock.json @@ -162,11 +162,13 @@ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" }, "ansi-regex": { - "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { - "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "anymatch": { @@ -180,7 +182,8 @@ "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==" }, "archy": { - "version": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" }, "are-we-there-yet": { @@ -211,17 +214,25 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=" }, "arr-diff": { - "version": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=" }, "arr-flatten": { - "version": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", - "integrity": "sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" }, "array-differ": { - "version": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -239,15 +250,18 @@ "dev": true }, "array-union": { - "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" }, "array-uniq": { - "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { - "version": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, "arraybuffer.slice": { @@ -257,7 +271,8 @@ "dev": true }, "arrify": { - "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asn1": { @@ -377,7 +392,8 @@ "dev": true }, "balanced-match": { - "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" }, "base64-arraybuffer": { @@ -404,7 +420,8 @@ "optional": true }, "beeper": { - "version": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" }, "better-assert": { @@ -475,11 +492,20 @@ "integrity": "sha1-62+amoUjuHpwbqkd7sPg1+qoqx8=" }, "brace-expansion": { - "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=" + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + } + } }, "braces": { - "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=" }, "brorand": { @@ -603,7 +629,8 @@ "dev": true }, "chalk": { - "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" }, "check-error": { @@ -638,7 +665,8 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=" }, "clone": { - "version": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" }, "clone-deep": { @@ -647,7 +675,8 @@ "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=" }, "clone-stats": { - "version": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" }, "co": { @@ -738,7 +767,8 @@ "dev": true }, "concat-map": { - "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "connect": { @@ -794,11 +824,13 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "core-js": { - "version": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" }, "core-util-is": { - "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-ecdh": { @@ -898,7 +930,8 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=" }, "custom-event": { - "version": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.0.tgz", "integrity": "sha1-LkYovhncSyFLXAJjDFlx6BFhgGI=" }, "dashdash": { @@ -919,7 +952,8 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" }, "dateformat": { - "version": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=" }, "debug": { @@ -954,7 +988,8 @@ "optional": true }, "defaults": { - "version": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=" }, "defined": { @@ -963,7 +998,8 @@ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, "del": { - "version": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=" }, "delayed-stream": { @@ -982,7 +1018,8 @@ "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" }, "deprecated": { - "version": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=" }, "des.js": { @@ -996,7 +1033,8 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-file": { - "version": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=" }, "di": { @@ -1032,7 +1070,8 @@ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexer2": { - "version": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=" }, "ecc-jsbn": { @@ -1072,7 +1111,8 @@ "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" }, "end-of-stream": { - "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", "dependencies": { "once": { @@ -1227,7 +1267,8 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { - "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { @@ -1299,15 +1340,18 @@ } }, "expand-brackets": { - "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=" }, "expand-range": { - "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=" }, "expand-tilde": { - "version": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=" }, "expose-loader": { @@ -1328,11 +1372,13 @@ } }, "extend": { - "version": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "extglob": { - "version": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=" }, "extract-text-webpack-plugin": { @@ -1353,7 +1399,8 @@ "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" }, "fancy-log": { - "version": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=" }, "fastparse": { @@ -1374,8 +1421,9 @@ } }, "filename-regex": { - "version": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", - "integrity": "sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, "filesize": { "version": "3.5.10", @@ -1383,7 +1431,8 @@ "integrity": "sha1-/I+iPdtO+eXgq24eZPZ5okpWdh8=" }, "fill-range": { - "version": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=" }, "finalhandler": { @@ -1399,7 +1448,8 @@ } }, "find-index": { - "version": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" }, "find-up": { @@ -1408,19 +1458,30 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" }, "findup-sync": { - "version": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=" }, "fined": { - "version": "https://registry.npmjs.org/fined/-/fined-1.0.2.tgz", - "integrity": "sha1-WyhCS3YNdZiWC374SA3/itNmDpc=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=" + } + } }, "first-chunk-stream": { - "version": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" }, "flagged-respawn": { - "version": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=" }, "flatten": { @@ -1434,11 +1495,13 @@ "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" }, "for-in": { - "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "for-own": { - "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=" }, "forever-agent": { @@ -1468,11 +1531,13 @@ "dev": true }, "fs-exists-sync": { - "version": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=" }, "fs.realpath": { - "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { @@ -1510,7 +1575,8 @@ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=" }, "gaze": { - "version": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=" }, "get-caller-file": { @@ -1542,19 +1608,23 @@ } }, "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" }, "glob-base": { - "version": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=" }, "glob-parent": { - "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=" }, "glob-stream": { - "version": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", "dependencies": { "glob": { @@ -1580,27 +1650,33 @@ } }, "glob-watcher": { - "version": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=" }, "glob2base": { - "version": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=" }, "global-modules": { - "version": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=" }, "global-prefix": { - "version": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=" }, "globby": { - "version": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=" }, "globule": { - "version": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", "dependencies": { "glob": { @@ -1626,11 +1702,13 @@ } }, "glogg": { - "version": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=" }, "graceful-fs": { - "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=" }, "graceful-readlink": { @@ -1639,11 +1717,20 @@ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, "gulp": { - "version": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } }, "gulp-run": { - "version": "https://registry.npmjs.org/gulp-run/-/gulp-run-1.7.1.tgz", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/gulp-run/-/gulp-run-1.7.1.tgz", "integrity": "sha1-4XwKy3wwtuKu7iPAREKpbAys7/o=", "dependencies": { "clone": { @@ -1669,9 +1756,15 @@ } }, "gulp-util": { - "version": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, "object-assign": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", @@ -1680,7 +1773,8 @@ } }, "gulplog": { - "version": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=" }, "gzip-size": { @@ -1709,7 +1803,8 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=" }, "has-ansi": { - "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" }, "has-binary": { @@ -1730,7 +1825,8 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, "has-gulplog": { - "version": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=" }, "has-unicode": { @@ -1769,7 +1865,8 @@ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, "homedir-polyfill": { - "version": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=" }, "hosted-git-info": { @@ -1879,20 +1976,24 @@ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, "inflight": { - "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" }, "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" }, "interpret": { - "version": "https://registry.npmjs.org/interpret/-/interpret-1.0.2.tgz", - "integrity": "sha1-9PYj8LtxIvFfVxfI4lS4FhtcWy0=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=" }, "invert-kv": { "version": "1.0.0", @@ -1905,7 +2006,8 @@ "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=" }, "is-absolute": { - "version": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=" }, "is-absolute-url": { @@ -1924,7 +2026,8 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=" }, "is-buffer": { - "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" }, "is-builtin-module": { @@ -1933,19 +2036,23 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" }, "is-dotfile": { - "version": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", - "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" }, "is-equal-shallow": { - "version": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=" }, "is-extendable": { - "version": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { - "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-finite": { @@ -1959,23 +2066,28 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" }, "is-glob": { - "version": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=" }, "is-number": { - "version": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=" }, "is-path-cwd": { - "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" }, "is-path-in-cwd": { - "version": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=" }, "is-path-inside": { - "version": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=" }, "is-plain-obj": { @@ -1996,15 +2108,18 @@ } }, "is-posix-bracket": { - "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" }, "is-primitive": { - "version": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, "is-relative": { - "version": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=" }, "is-svg": { @@ -2018,19 +2133,23 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-unc-path": { - "version": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=" }, "is-utf8": { - "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, "is-windows": { - "version": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" }, "isarray": { - "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isbinaryfile": { @@ -2040,11 +2159,13 @@ "dev": true }, "isexe": { - "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { - "version": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dependencies": { "isarray": { @@ -2221,8 +2342,9 @@ } }, "kind-of": { - "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz", - "integrity": "sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" }, "lazy-cache": { "version": "1.0.4", @@ -2235,7 +2357,8 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" }, "liftoff": { - "version": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=" }, "load-json-file": { @@ -2266,43 +2389,53 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=" }, "lodash": { - "version": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=" }, "lodash._basecopy": { - "version": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" }, "lodash._basetostring": { - "version": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=" }, "lodash._basevalues": { - "version": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=" }, "lodash._getnative": { - "version": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" }, "lodash._isiterateecall": { - "version": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" }, "lodash._reescape": { - "version": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=" }, "lodash._reevaluate": { - "version": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=" }, "lodash._reinterpolate": { - "version": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, "lodash._root": { - "version": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" }, "lodash.assign": { @@ -2310,10 +2443,6 @@ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" }, - "lodash.assignwith": { - "version": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", - "integrity": "sha1-EnqX8CrcQXUalU0ksN4X4QDgOOs=" - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -2325,39 +2454,43 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, "lodash.defaults": { - "version": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, "lodash.escape": { - "version": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=" }, "lodash.isarguments": { - "version": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" }, "lodash.isarray": { - "version": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, - "lodash.isempty": { - "version": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", - "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" - }, "lodash.isplainobject": { - "version": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, "lodash.isstring": { - "version": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "lodash.keys": { - "version": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=" }, "lodash.mapvalues": { - "version": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=" }, "lodash.memoize": { @@ -2370,12 +2503,9 @@ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=" }, - "lodash.pick": { - "version": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" - }, "lodash.restparam": { - "version": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, "lodash.tail": { @@ -2384,11 +2514,13 @@ "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" }, "lodash.template": { - "version": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=" }, "lodash.templatesettings": { - "version": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=" }, "lodash.uniq": { @@ -2436,7 +2568,8 @@ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" }, "map-cache": { - "version": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-obj": { @@ -2484,7 +2617,14 @@ "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=" + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } }, "merge-descriptors": { "version": "1.0.1", @@ -2497,7 +2637,8 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { - "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=" }, "miller-rabin": { @@ -2531,12 +2672,14 @@ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" }, "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mixin-object": { "version": "2.0.1", @@ -2551,15 +2694,9 @@ } }, "mkdirp": { - "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" }, "moment": { "version": "2.18.1", @@ -2572,7 +2709,8 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multipipe": { - "version": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=" }, "nan": { @@ -2581,7 +2719,8 @@ "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" }, "natives": { - "version": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=" }, "ncname": { @@ -2686,14 +2825,14 @@ "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=" }, "globule": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.1.0.tgz", - "integrity": "sha1-xJNS5NwYPYWJPuglOF65lLtt9F8=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=" }, "lodash": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.6.tgz", - "integrity": "sha1-0iyaxmAojzhD4Wun0rXQbMon13c=" + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, @@ -2708,7 +2847,8 @@ "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=" }, "normalize-path": { - "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" }, "normalize-range": { @@ -2748,7 +2888,8 @@ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" }, "object-assign": { - "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-component": { @@ -2757,17 +2898,46 @@ "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", "dev": true }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dependencies": { + "array-slice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", + "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=" + }, + "isobject": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.0.tgz", + "integrity": "sha1-OVZSF/NmF4nooKDAgNX35rxG4aA=" + } + } + }, "object.omit": { - "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=" }, + "object.pick": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", + "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" }, "once": { - "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" }, "opener": { @@ -2796,11 +2966,13 @@ "dev": true }, "orchestrator": { - "version": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=" }, "ordered-read-streams": { - "version": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=" }, "os-browserify": { @@ -2809,7 +2981,8 @@ "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" }, "os-homedir": { - "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-locale": { @@ -2848,11 +3021,13 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=" }, "parse-filepath": { - "version": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=" }, "parse-glob": { - "version": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=" }, "parse-json": { @@ -2861,17 +3036,19 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" }, "parse-passwd": { - "version": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parse5": { - "version": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", "dependencies": { "@types/node": { - "version": "6.0.75", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.75.tgz", - "integrity": "sha512-x2G4SVbeToUQISZch/eLhQ0L2zp1LbFgWihmfCP7wPs+7cM5Ic8oackjk3pLpX5UOXguT2PCTOrN6glP8ofzOQ==" + "version": "6.0.78", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.78.tgz", + "integrity": "sha512-+vD6E8ixntRzzZukoF3uP1iV+ZjVN3koTcaeK+BEoc/kSfGbLDIGC7RmCaUgVpUfN6cWvfczFRERCyKM9mkvXg==" } } }, @@ -2909,23 +3086,28 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" }, "path-is-absolute": { - "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { - "version": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-parse": { - "version": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" }, "path-root": { - "version": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=" }, "path-root-regex": { - "version": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" }, "path-to-regexp": { @@ -2962,15 +3144,18 @@ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" }, "pify": { - "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { - "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "pinkie-promise": { - "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" }, "postcss": { @@ -3199,11 +3384,13 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, "preserve": { - "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "pretty-hrtime": { - "version": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" }, "primeng": { @@ -3283,8 +3470,28 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "randomatic": { - "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", - "integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=" + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" + } + } }, "randombytes": { "version": "2.0.5", @@ -3306,7 +3513,15 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "optional": true + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } }, "read-pkg": { "version": "1.1.0", @@ -3319,7 +3534,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" }, "readable-stream": { - "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=" }, "readdirp": { @@ -3367,7 +3583,8 @@ } }, "rechoir": { - "version": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" }, "redent": { @@ -3396,7 +3613,8 @@ "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=" }, "regex-cache": { - "version": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=" }, "regexpu-core": { @@ -3420,15 +3638,18 @@ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" }, "remove-trailing-separator": { - "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz", - "integrity": "sha1-YV67lq9VlVLUv0BXyENtSGq2PMQ=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" }, "repeat-element": { - "version": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" }, "repeat-string": { - "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { @@ -3437,7 +3658,8 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" }, "replace-ext": { - "version": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" }, "request": { @@ -3467,11 +3689,13 @@ "dev": true }, "resolve": { - "version": "https://registry.npmjs.org/resolve/-/resolve-1.3.2.tgz", - "integrity": "sha1-HwRCyeDLuBNuh7kwX5MvRsfygjU=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=" }, "resolve-dir": { - "version": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=" }, "resolve-url": { @@ -3485,7 +3709,8 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=" }, "rimraf": { - "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=" }, "ripemd160": { @@ -3494,7 +3719,8 @@ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=" }, "run-sequence": { - "version": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz", "integrity": "sha1-UJWgvr6YczsBQL0I3YDsAw3azes=" }, "rxjs": { @@ -3561,7 +3787,8 @@ } }, "semver": { - "version": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" }, "send": { @@ -3582,7 +3809,8 @@ } }, "sequencify": { - "version": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=" }, "serve-static": { @@ -3770,7 +3998,8 @@ "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=" }, "sparkles": { - "version": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" }, "spdx-correct": { @@ -3865,7 +4094,8 @@ } }, "stream-consume": { - "version": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=" }, "stream-http": { @@ -3901,7 +4131,8 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string_decoder": { - "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "string-width": { @@ -3915,11 +4146,13 @@ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" }, "strip-ansi": { - "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" }, "strip-bom": { - "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=" }, "strip-indent": { @@ -3934,7 +4167,8 @@ "optional": true }, "supports-color": { - "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "svgo": { @@ -3943,7 +4177,8 @@ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=" }, "symbol-observable": { - "version": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" }, "tapable": { @@ -3993,7 +4228,8 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { - "version": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dependencies": { "isarray": { @@ -4002,14 +4238,21 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "readable-stream": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", - "integrity": "sha512-HQEnnoV404e0EtwB9yNiuk2tJ+egeVC8Y9QBAxzDg8DBJt4BzRp+yQuIb/t3FIWkSTmIi+sgx7yVv/ZM0GNoqw==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", + "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==" }, "string_decoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", + "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", + "dependencies": { + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + } + } } } }, @@ -4019,12 +4262,14 @@ "integrity": "sha1-t8+nHnaPHJAAxJe5FRswlHxQ5G0=" }, "tildify": { - "version": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=" }, "time-stamp": { - "version": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz", - "integrity": "sha1-n0vSNVnJNllm8zAtu6KwfGuZsVE=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" }, "timers-browserify": { "version": "2.0.2", @@ -4118,7 +4363,8 @@ "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=" }, "unc-path-regex": { - "version": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" }, "uniq": { @@ -4137,7 +4383,8 @@ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, "unique-stream": { - "version": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=" }, "unpipe": { @@ -4180,7 +4427,8 @@ } }, "user-home": { - "version": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" }, "useragent": { @@ -4225,8 +4473,9 @@ "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" }, "v8flags": { - "version": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.12.tgz", - "integrity": "sha1-cyNdn3F2+OiDP7KGeVRF95ONhOU=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=" }, "validate-npm-package-license": { "version": "3.0.1", @@ -4249,11 +4498,13 @@ "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=" }, "vinyl": { - "version": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=" }, "vinyl-fs": { - "version": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", "dependencies": { "clone": { @@ -4332,14 +4583,9 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=" }, "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==" - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", + "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==" }, "source-list-map": { "version": "1.1.2", @@ -4349,7 +4595,14 @@ "string_decoder": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=" + "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", + "dependencies": { + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + } + } }, "supports-color": { "version": "3.2.3", @@ -4357,9 +4610,9 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" }, "uglify-js": { - "version": "2.8.28", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.28.tgz", - "integrity": "sha512-WqKNbmNJKzIdIEQu/U2ytgGBbhCy2PVks94GoetczOAJ/zCgVu2CuO7gguI5KPFGPtUtI1dmPQl6h0D4cPzypA==", + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dependencies": { "yargs": { "version": "3.10.0", @@ -4481,7 +4734,8 @@ "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" }, "which": { - "version": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" }, "which-module": { @@ -4510,7 +4764,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=" }, "wrappy": { - "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { @@ -4532,7 +4787,8 @@ "dev": true }, "xhr2": { - "version": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz", "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=" }, "xml-char-classes": { @@ -4547,7 +4803,8 @@ "dev": true }, "xtend": { - "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": {