summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2017-09-22 06:07:40 -0500
committerPliable Pixels <pliablepixels@gmail.com>2017-09-22 06:07:40 -0500
commitab96cb8fcf328d095d8b8e65d40e02c68d6d8d11 (patch)
tree288ec93a2145c52836bba28857ed5ef1ede48325
parentfabf64411bbdf1f6aa81f3eae31d04bda1dfa3ee (diff)
added new config key for photos in iOS
-rw-r--r--.DS_Storebin12292 -> 12292 bytes
-rw-r--r--CDVStatusBar.m.remove516
-rw-r--r--config.xml6
-rw-r--r--package-lock.json220
-rw-r--r--package.json8
5 files changed, 695 insertions, 55 deletions
diff --git a/.DS_Store b/.DS_Store
index 2e8cd8cc..2dedff73 100644
--- a/.DS_Store
+++ b/.DS_Store
Binary files differ
diff --git a/CDVStatusBar.m.remove b/CDVStatusBar.m.remove
new file mode 100644
index 00000000..f6b672ef
--- /dev/null
+++ b/CDVStatusBar.m.remove
@@ -0,0 +1,516 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+/*
+ NOTE: plugman/cordova cli should have already installed this,
+ but you need the value UIViewControllerBasedStatusBarAppearance
+ in your Info.plist as well to set the styles in iOS 7
+ */
+
+#import "CDVStatusBar.h"
+#import <objc/runtime.h>
+#import <Cordova/CDVViewController.h>
+
+static const void *kHideStatusBar = &kHideStatusBar;
+static const void *kStatusBarStyle = &kStatusBarStyle;
+
+@interface CDVViewController (StatusBar)
+
+@property (nonatomic, retain) id sb_hideStatusBar;
+@property (nonatomic, retain) id sb_statusBarStyle;
+
+@end
+
+@implementation CDVViewController (StatusBar)
+
+@dynamic sb_hideStatusBar;
+@dynamic sb_statusBarStyle;
+
+- (id)sb_hideStatusBar {
+ return objc_getAssociatedObject(self, kHideStatusBar);
+}
+
+- (void)setSb_hideStatusBar:(id)newHideStatusBar {
+ objc_setAssociatedObject(self, kHideStatusBar, newHideStatusBar, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+}
+
+- (id)sb_statusBarStyle {
+ return objc_getAssociatedObject(self, kStatusBarStyle);
+}
+
+- (void)setSb_statusBarStyle:(id)newStatusBarStyle {
+ objc_setAssociatedObject(self, kStatusBarStyle, newStatusBarStyle, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+}
+
+- (BOOL) prefersStatusBarHidden {
+ return [self.sb_hideStatusBar boolValue];
+}
+
+- (UIStatusBarStyle)preferredStatusBarStyle
+{
+ return (UIStatusBarStyle)[self.sb_statusBarStyle intValue];
+}
+
+@end
+
+
+@interface CDVStatusBar () <UIScrollViewDelegate>
+- (void)fireTappedEvent;
+- (void)updateIsVisible:(BOOL)visible;
+@end
+
+@implementation CDVStatusBar
+
+- (id)settingForKey:(NSString*)key
+{
+ return [self.commandDelegate.settings objectForKey:[key lowercaseString]];
+}
+
+- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context
+{
+ if ([keyPath isEqual:@"statusBarHidden"]) {
+ NSNumber* newValue = [change objectForKey:NSKeyValueChangeNewKey];
+ [self updateIsVisible:![newValue boolValue]];
+ }
+}
+
+-(void)cordovaViewWillAppear:(NSNotification*)notification
+{
+ [self resizeWebView];
+}
+
+-(void)statusBarDidChangeFrame:(NSNotification*)notification
+{
+ //add a small delay for iOS 7 ( 0.1 seconds )
+ __weak CDVStatusBar* weakSelf = self;
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
+ [weakSelf resizeWebView];
+ });
+}
+
+- (void)pluginInitialize
+{
+ BOOL isiOS7 = (IsAtLeastiOSVersion(@"7.0"));
+
+ // init
+ NSNumber* uiviewControllerBasedStatusBarAppearance = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIViewControllerBasedStatusBarAppearance"];
+ _uiviewControllerBasedStatusBarAppearance = (uiviewControllerBasedStatusBarAppearance == nil || [uiviewControllerBasedStatusBarAppearance boolValue]) && isiOS7;
+
+ // observe the statusBarHidden property
+ [[UIApplication sharedApplication] addObserver:self forKeyPath:@"statusBarHidden" options:NSKeyValueObservingOptionNew context:NULL];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarDidChangeFrame:) name: UIApplicationDidChangeStatusBarFrameNotification object:nil];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cordovaViewWillAppear:) name: @"CDVViewWillAppearNotification" object:nil];
+
+ _statusBarOverlaysWebView = YES; // default
+
+ [self initializeStatusBarBackgroundView];
+
+ self.viewController.view.autoresizesSubviews = YES;
+
+ NSString* setting;
+
+ setting = @"StatusBarBackgroundColor";
+ if ([self settingForKey:setting]) {
+ [self _backgroundColorByHexString:[self settingForKey:setting]];
+ }
+
+ setting = @"StatusBarStyle";
+ if ([self settingForKey:setting]) {
+ [self setStatusBarStyle:[self settingForKey:setting]];
+ }
+
+ // blank scroll view to intercept status bar taps
+ self.webView.scrollView.scrollsToTop = NO;
+ UIScrollView *fakeScrollView = [[UIScrollView alloc] initWithFrame:UIScreen.mainScreen.bounds];
+ fakeScrollView.delegate = self;
+ fakeScrollView.scrollsToTop = YES;
+ [self.viewController.view addSubview:fakeScrollView]; // Add scrollview to the view heirarchy so that it will begin accepting status bar taps
+ [self.viewController.view sendSubviewToBack:fakeScrollView]; // Send it to the very back of the view heirarchy
+ fakeScrollView.contentSize = CGSizeMake(UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height * 2.0f); // Make the scroll view longer than the screen itself
+ fakeScrollView.contentOffset = CGPointMake(0.0f, UIScreen.mainScreen.bounds.size.height); // Scroll down so a tap will take scroll view back to the top
+
+ _statusBarVisible = ![UIApplication sharedApplication].isStatusBarHidden;
+}
+
+- (void)onReset {
+ _eventsCallbackId = nil;
+}
+
+- (void)fireTappedEvent {
+ if (_eventsCallbackId == nil) {
+ return;
+ }
+ NSDictionary* payload = @{@"type": @"tap"};
+ CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:payload];
+ [result setKeepCallbackAsBool:YES];
+ [self.commandDelegate sendPluginResult:result callbackId:_eventsCallbackId];
+}
+
+- (void)updateIsVisible:(BOOL)visible {
+ if (_eventsCallbackId == nil) {
+ return;
+ }
+ CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsBool:visible];
+ [result setKeepCallbackAsBool:YES];
+ [self.commandDelegate sendPluginResult:result callbackId:_eventsCallbackId];
+}
+
+- (void) _ready:(CDVInvokedUrlCommand*)command
+{
+ _eventsCallbackId = command.callbackId;
+ [self updateIsVisible:![UIApplication sharedApplication].statusBarHidden];
+ NSString* setting = @"StatusBarOverlaysWebView";
+ if ([self settingForKey:setting]) {
+ self.statusBarOverlaysWebView = [(NSNumber*)[self settingForKey:setting] boolValue];
+ if (self.statusBarOverlaysWebView) {
+ [self resizeWebView];
+ }
+ }
+}
+
+- (void) initializeStatusBarBackgroundView
+{
+ CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
+
+ if ([[UIApplication sharedApplication]statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown &&
+ statusBarFrame.size.height + statusBarFrame.origin.y == [self.viewController.view.window bounds].size.height) {
+
+ // When started in upside-down orientation on iOS 7, status bar will be bound to lower edge of the
+ // screen (statusBarFrame.origin.y will be somewhere around screen height). In this case we need to
+ // correct frame's coordinates
+ statusBarFrame.origin.y = 0;
+ }
+
+ statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
+
+ _statusBarBackgroundView = [[UIView alloc] initWithFrame:statusBarFrame];
+ _statusBarBackgroundView.backgroundColor = _statusBarBackgroundColor;
+ _statusBarBackgroundView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin);
+ _statusBarBackgroundView.autoresizesSubviews = YES;
+}
+
+- (CGRect) invertFrameIfNeeded:(CGRect)rect {
+ // landscape is where (width > height). On iOS < 8, we need to invert since frames are
+ // always in Portrait context. Do not run this on ios 8 or above to avoid breaking ipad pro multitask layout
+ if (!IsAtLeastiOSVersion(@"8.0") && UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) {
+ CGFloat temp = rect.size.width;
+ rect.size.width = rect.size.height;
+ rect.size.height = temp;
+ rect.origin = CGPointZero;
+ }
+
+ return rect;
+}
+
+- (void) setStatusBarOverlaysWebView:(BOOL)statusBarOverlaysWebView
+{
+ // we only care about the latest iOS version or a change in setting
+ if (!IsAtLeastiOSVersion(@"7.0") || statusBarOverlaysWebView == _statusBarOverlaysWebView) {
+ return;
+ }
+
+ _statusBarOverlaysWebView = statusBarOverlaysWebView;
+
+ [self resizeWebView];
+
+ if (statusBarOverlaysWebView) {
+
+ [_statusBarBackgroundView removeFromSuperview];
+
+ } else {
+
+ [self initializeStatusBarBackgroundView];
+ [self.webView.superview addSubview:_statusBarBackgroundView];
+
+ }
+
+}
+
+- (BOOL) statusBarOverlaysWebView
+{
+ return _statusBarOverlaysWebView;
+}
+
+- (void) overlaysWebView:(CDVInvokedUrlCommand*)command
+{
+ id value = [command argumentAtIndex:0];
+ if (!([value isKindOfClass:[NSNumber class]])) {
+ value = [NSNumber numberWithBool:YES];
+ }
+
+ self.statusBarOverlaysWebView = [value boolValue];
+}
+
+- (void) refreshStatusBarAppearance
+{
+ SEL sel = NSSelectorFromString(@"setNeedsStatusBarAppearanceUpdate");
+ if ([self.viewController respondsToSelector:sel]) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
+ [self.viewController performSelector:sel withObject:nil];
+#pragma clang diagnostic pop
+ }
+}
+
+- (void) setStyleForStatusBar:(UIStatusBarStyle)style
+{
+ if (_uiviewControllerBasedStatusBarAppearance) {
+ CDVViewController* vc = (CDVViewController*)self.viewController;
+ vc.sb_statusBarStyle = [NSNumber numberWithInt:style];
+ [self refreshStatusBarAppearance];
+
+ } else {
+ [[UIApplication sharedApplication] setStatusBarStyle:style];
+ }
+}
+
+- (void) setStatusBarStyle:(NSString*)statusBarStyle
+{
+ // default, lightContent, blackTranslucent, blackOpaque
+ NSString* lcStatusBarStyle = [statusBarStyle lowercaseString];
+
+ if ([lcStatusBarStyle isEqualToString:@"default"]) {
+ [self styleDefault:nil];
+ } else if ([lcStatusBarStyle isEqualToString:@"lightcontent"]) {
+ [self styleLightContent:nil];
+ } else if ([lcStatusBarStyle isEqualToString:@"blacktranslucent"]) {
+ [self styleBlackTranslucent:nil];
+ } else if ([lcStatusBarStyle isEqualToString:@"blackopaque"]) {
+ [self styleBlackOpaque:nil];
+ }
+}
+
+- (void) styleDefault:(CDVInvokedUrlCommand*)command
+{
+ [self setStyleForStatusBar:UIStatusBarStyleDefault];
+}
+
+- (void) styleLightContent:(CDVInvokedUrlCommand*)command
+{
+ [self setStyleForStatusBar:UIStatusBarStyleLightContent];
+}
+
+- (void) styleBlackTranslucent:(CDVInvokedUrlCommand*)command
+{
+ #if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000
+ # define TRANSLUCENT_STYLE UIStatusBarStyleBlackTranslucent
+ #else
+ # define TRANSLUCENT_STYLE UIStatusBarStyleLightContent
+ #endif
+ [self setStyleForStatusBar:TRANSLUCENT_STYLE];
+}
+
+- (void) styleBlackOpaque:(CDVInvokedUrlCommand*)command
+{
+ #if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000
+ # define OPAQUE_STYLE UIStatusBarStyleBlackOpaque
+ #else
+ # define OPAQUE_STYLE UIStatusBarStyleLightContent
+ #endif
+ [self setStyleForStatusBar:OPAQUE_STYLE];
+}
+
+- (void) backgroundColorByName:(CDVInvokedUrlCommand*)command
+{
+ id value = [command argumentAtIndex:0];
+ if (!([value isKindOfClass:[NSString class]])) {
+ value = @"black";
+ }
+
+ SEL selector = NSSelectorFromString([value stringByAppendingString:@"Color"]);
+ if ([UIColor respondsToSelector:selector]) {
+ _statusBarBackgroundView.backgroundColor = [UIColor performSelector:selector];
+ }
+}
+
+- (void) _backgroundColorByHexString:(NSString*)hexString
+{
+ unsigned int rgbValue = 0;
+ NSScanner* scanner = [NSScanner scannerWithString:hexString];
+ [scanner setScanLocation:1];
+ [scanner scanHexInt:&rgbValue];
+
+ _statusBarBackgroundColor = [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
+ _statusBarBackgroundView.backgroundColor = _statusBarBackgroundColor;
+}
+
+- (void) backgroundColorByHexString:(CDVInvokedUrlCommand*)command
+{
+ NSString* value = [command argumentAtIndex:0];
+ if (!([value isKindOfClass:[NSString class]])) {
+ value = @"#000000";
+ }
+
+ if (![value hasPrefix:@"#"] || [value length] < 7) {
+ return;
+ }
+
+ [self _backgroundColorByHexString:value];
+}
+
+- (void) hideStatusBar
+{
+ if (_uiviewControllerBasedStatusBarAppearance) {
+ CDVViewController* vc = (CDVViewController*)self.viewController;
+ vc.sb_hideStatusBar = [NSNumber numberWithBool:YES];
+ [self refreshStatusBarAppearance];
+
+ } else {
+ UIApplication* app = [UIApplication sharedApplication];
+ [app setStatusBarHidden:YES];
+ }
+}
+
+- (void) hide:(CDVInvokedUrlCommand*)command
+{
+ _statusBarVisible = NO;
+ UIApplication* app = [UIApplication sharedApplication];
+
+ if (!app.isStatusBarHidden)
+ {
+
+ [self hideStatusBar];
+
+ if (IsAtLeastiOSVersion(@"7.0")) {
+ [_statusBarBackgroundView removeFromSuperview];
+ }
+
+ [self resizeWebView];
+
+ _statusBarBackgroundView.hidden = YES;
+ }
+}
+
+- (void) showStatusBar
+{
+ if (_uiviewControllerBasedStatusBarAppearance) {
+ CDVViewController* vc = (CDVViewController*)self.viewController;
+ vc.sb_hideStatusBar = [NSNumber numberWithBool:NO];
+ [self refreshStatusBarAppearance];
+
+ } else {
+ UIApplication* app = [UIApplication sharedApplication];
+ [app setStatusBarHidden:NO];
+ }
+}
+
+- (void) show:(CDVInvokedUrlCommand*)command
+{
+ _statusBarVisible = YES;
+ UIApplication* app = [UIApplication sharedApplication];
+
+ if (app.isStatusBarHidden)
+ {
+ BOOL isIOS7 = (IsAtLeastiOSVersion(@"7.0"));
+
+ [self showStatusBar];
+ [self resizeWebView];
+
+ if (isIOS7) {
+
+ if (!self.statusBarOverlaysWebView) {
+
+ // there is a possibility that when the statusbar was hidden, it was in a different orientation
+ // from the current one. Therefore we need to expand the statusBarBackgroundView as well to the
+ // statusBar's current size
+ CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
+ statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
+ CGRect sbBgFrame = _statusBarBackgroundView.frame;
+ sbBgFrame.size = statusBarFrame.size;
+ _statusBarBackgroundView.frame = sbBgFrame;
+ [self.webView.superview addSubview:_statusBarBackgroundView];
+
+ }
+
+ }
+
+ _statusBarBackgroundView.hidden = NO;
+ }
+}
+
+-(void)resizeWebView
+{
+ BOOL isIOS7 = (IsAtLeastiOSVersion(@"7.0"));
+ BOOL isIOS11 = (IsAtLeastiOSVersion(@"11.0"));
+
+ if (isIOS7) {
+ CGRect bounds = [self.viewController.view.window bounds];
+ if (CGRectEqualToRect(bounds, CGRectZero)) {
+ bounds = [[UIScreen mainScreen] bounds];
+ }
+ bounds = [self invertFrameIfNeeded:bounds];
+
+ self.viewController.view.frame = bounds;
+
+ self.webView.frame = bounds;
+
+ CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
+ statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
+ CGRect frame = self.webView.frame;
+ CGFloat height = statusBarFrame.size.height;
+
+ if (!self.statusBarOverlaysWebView) {
+ if (_statusBarVisible) {
+ // CB-10158 If a full screen video is playing the status bar height will be 0, set it to 20 if _statusBarVisible
+ frame.origin.y = height > 0 ? height: 20;
+ }
+ } else {
+ if (isIOS11) {
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000
+ if (@available(iOS 11.0, *)) {
+ float safeAreaTop = self.webView.safeAreaInsets.top;
+ if (height >= safeAreaTop && safeAreaTop >0) {
+ // Sometimes when in-call/recording/hotspot larger status bar is present, the safeAreaTop is 40 but we want frame.origin.y to be 20
+ frame.origin.y = safeAreaTop == 40 ? 20 : height - safeAreaTop;
+ } else {
+ frame.origin.y = 0;
+ }
+ }
+#endif
+ } else {
+ // Even if overlay is used, we want to handle in-call/recording/hotspot larger status bar
+ frame.origin.y = height >= 20 ? height - 20 : 0;
+ }
+ }
+ frame.size.height -= frame.origin.y;
+ self.webView.frame = frame;
+ } else {
+ CGRect bounds = [[UIScreen mainScreen] applicationFrame];
+ self.viewController.view.frame = bounds;
+ }
+}
+
+- (void) dealloc
+{
+ [[UIApplication sharedApplication] removeObserver:self forKeyPath:@"statusBarHidden"];
+ [[NSNotificationCenter defaultCenter]removeObserver:self name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
+}
+
+
+#pragma mark - UIScrollViewDelegate
+
+- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
+{
+ [self fireTappedEvent];
+ return NO;
+}
+
+@end
diff --git a/config.xml b/config.xml
index 0a2fa945..3b06d756 100644
--- a/config.xml
+++ b/config.xml
@@ -32,6 +32,9 @@
<param name="ios-package" onload="true" value="CDVStatusBar" />
</feature>
<platform name="ios">
+ <config-file parent="NSPhotoLibraryAddUsageDescription" platform="ios" target="*-Info.plist">
+ <string>Store photos of events and live feeds</string>
+ </config-file>
<config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist">
<string>Store photos of events and live feeds</string>
</config-file>
@@ -123,6 +126,9 @@
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-sqlite-storage" spec="^1.5.3" />
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
+ <plugin name="org.devgeeks.Canvas2ImagePlugin" spec="https://github.com/flache/Canvas2ImagePlugin">
+ <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value=" " />
+ </plugin>
<plugin name="phonegap-plugin-mobile-accessibility" spec="^1.0.5" />
<plugin name="phonegap-plugin-push" spec="^1.9.0">
<variable name="SENDER_ID" value="710936220256" />
diff --git a/package-lock.json b/package-lock.json
index eed5651a..bea4aa8d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -621,9 +621,10 @@
}
},
"@ionic/cli-utils": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.10.2.tgz",
- "integrity": "sha512-3UQIXlceD77tLon0/e3Pd1R8gEVm3+EEhKHVrwBSBLX446nG6+Jpd75Hvi5b9aJIQ+CUSvxKbHBciB1btytl7Q==",
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.12.0.tgz",
+ "integrity": "sha512-N7/pKa+kiOjtfdc//Gv8vCbsRftenHjs4tIcz5VTW8VM7B9QIu8Ylcuq2JTsKJJoXiFreShku9KPqPm4bpbpSg==",
+ "dev": true,
"requires": {
"archiver": "2.0.3",
"basic-auth": "1.1.0",
@@ -660,17 +661,20 @@
"ansi-escapes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
- "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ=="
+ "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==",
+ "dev": true
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
},
"ansi-styles": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
"integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
"requires": {
"color-convert": "1.9.0"
}
@@ -679,6 +683,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
"integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
"requires": {
"ansi-styles": "3.2.0",
"escape-string-regexp": "1.0.5",
@@ -689,6 +694,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
"requires": {
"restore-cursor": "2.0.0"
}
@@ -697,6 +703,7 @@
"version": "4.15.4",
"resolved": "https://registry.npmjs.org/express/-/express-4.15.4.tgz",
"integrity": "sha1-Ay4iU0ic+PzgJma+yj0R7XotrtE=",
+ "dev": true,
"requires": {
"accepts": "1.3.4",
"array-flatten": "1.1.1",
@@ -732,6 +739,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
"requires": {
"escape-string-regexp": "1.0.5"
}
@@ -740,6 +748,7 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
"integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "dev": true,
"requires": {
"ansi-escapes": "3.0.0",
"chalk": "2.1.0",
@@ -760,27 +769,32 @@
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
},
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
},
"mute-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
},
"onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
"requires": {
"mimic-fn": "1.1.0"
}
@@ -789,6 +803,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz",
"integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==",
+ "dev": true,
"requires": {
"is-wsl": "1.1.0"
}
@@ -796,12 +811,14 @@
"qs": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz",
- "integrity": "sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg=="
+ "integrity": "sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==",
+ "dev": true
},
"restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
"requires": {
"onetime": "2.0.1",
"signal-exit": "3.0.2"
@@ -811,6 +828,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
"requires": {
"is-promise": "2.1.0"
}
@@ -818,17 +836,20 @@
"rx-lite": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
- "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ="
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
},
"semver": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
},
"send": {
"version": "0.15.4",
"resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz",
"integrity": "sha1-mF+qPihLAnPHkzZKNcZze9k5Bbk=",
+ "dev": true,
"requires": {
"debug": "2.6.8",
"depd": "1.1.1",
@@ -849,6 +870,7 @@
"version": "1.12.4",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.4.tgz",
"integrity": "sha1-m2qpjutyU8Tu3Ewfb9vKYJkBqWE=",
+ "dev": true,
"requires": {
"encodeurl": "1.0.1",
"escape-html": "1.0.3",
@@ -860,6 +882,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
@@ -869,6 +892,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
"requires": {
"ansi-regex": "3.0.0"
}
@@ -877,6 +901,7 @@
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
"requires": {
"has-flag": "2.0.0"
}
@@ -885,6 +910,7 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.0.5.tgz",
"integrity": "sha512-YrxUSiMgOVh3PnAqtdAUQuUVEVRnqcRCxJ3BHrl/aaWV2fplKKB60oClM0GH2Gio2hcXvkxMUxsC/vXZrQePlg==",
+ "dev": true,
"requires": {
"body": "5.1.0",
"debug": "2.6.8",
@@ -897,12 +923,14 @@
"ultron": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz",
- "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ="
+ "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=",
+ "dev": true
},
"wrap-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
"integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
+ "dev": true,
"requires": {
"string-width": "2.1.1",
"strip-ansi": "4.0.0"
@@ -912,6 +940,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-3.2.0.tgz",
"integrity": "sha512-hTS3mkXm/j85jTQOIcwVz3yK3up9xHgPtgEhDBOH3G18LDOZmSAG1omJeXejLKJakx+okv8vS1sopgs7rw0kVw==",
+ "dev": true,
"requires": {
"async-limiter": "1.0.0",
"safe-buffer": "5.1.1",
@@ -924,6 +953,7 @@
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/@ionic/discover/-/discover-0.3.1.tgz",
"integrity": "sha512-IM2nju07Ip+5j9BbCh+AFvi2BRR6Lanvvzj/VJn2DGXXaK7znmlLrlSpzOp+R+GH4FijAmFpyWXn1sF5Uhkiyg==",
+ "dev": true,
"requires": {
"netmask": "1.0.6"
}
@@ -1381,6 +1411,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-2.0.3.tgz",
"integrity": "sha1-tDYLtYSvFDeZGUJxbyHXxSPR270=",
+ "dev": true,
"requires": {
"archiver-utils": "1.3.0",
"async": "2.5.0",
@@ -1397,6 +1428,7 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
"integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==",
+ "dev": true,
"requires": {
"lodash": "4.17.4"
}
@@ -1405,6 +1437,7 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
@@ -1417,17 +1450,20 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
"requires": {
"brace-expansion": "1.1.8"
}
@@ -1436,6 +1472,7 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -1450,6 +1487,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
@@ -1460,6 +1498,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
"integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
+ "dev": true,
"requires": {
"glob": "7.1.2",
"graceful-fs": "4.1.11",
@@ -1473,6 +1512,7 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
@@ -1485,22 +1525,26 @@
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
"requires": {
"brace-expansion": "1.1.8"
}
@@ -1509,6 +1553,7 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -1523,6 +1568,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
@@ -1690,7 +1736,8 @@
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
- "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
+ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
+ "dev": true
},
"async-some": {
"version": "1.0.2",
@@ -2251,7 +2298,8 @@
"basic-auth": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
- "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ="
+ "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=",
+ "dev": true
},
"batch": {
"version": "0.6.1",
@@ -2345,6 +2393,7 @@
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.1.tgz",
"integrity": "sha512-KL2pZpGvy6xuZHgYUznB1Zfw4AoGMApfRanT5NafeLvglbaSM+4CCtmlyYOv66oYXqvKL1xpaFb94V/AZVUnYg==",
+ "dev": true,
"requires": {
"bytes": "3.0.0",
"content-type": "1.0.4",
@@ -2361,17 +2410,20 @@
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
},
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
},
"raw-body": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "dev": true,
"requires": {
"bytes": "3.0.0",
"http-errors": "1.6.2",
@@ -2756,7 +2808,8 @@
"buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
},
"buffer-es6": {
"version": "4.9.3",
@@ -2988,7 +3041,8 @@
"ci-info": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz",
- "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ=="
+ "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==",
+ "dev": true
},
"cipher-base": {
"version": "1.0.4",
@@ -3248,12 +3302,14 @@
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
},
"compress-commons": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz",
"integrity": "sha1-WFhwku8g03y1i68AARLJJ4/3O58=",
+ "dev": true,
"requires": {
"buffer-crc32": "0.2.13",
"crc32-stream": "2.0.0",
@@ -3264,12 +3320,14 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -3284,6 +3342,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
@@ -3486,7 +3545,8 @@
"cookiejar": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz",
- "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o="
+ "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=",
+ "dev": true
},
"cordova-android": {
"version": "6.2.3",
@@ -4412,12 +4472,14 @@
"crc": {
"version": "3.4.4",
"resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
- "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms="
+ "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=",
+ "dev": true
},
"crc32-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
"integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
+ "dev": true,
"requires": {
"crc": "3.4.4",
"readable-stream": "2.3.3"
@@ -4426,12 +4488,14 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -4446,6 +4510,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
@@ -4747,7 +4812,8 @@
"dargs": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz",
- "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk="
+ "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=",
+ "dev": true
},
"dashdash": {
"version": "1.14.1",
@@ -5146,6 +5212,7 @@
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
"integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=",
+ "dev": true,
"requires": {
"sax": "1.1.4"
},
@@ -5153,7 +5220,8 @@
"sax": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
- "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk="
+ "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=",
+ "dev": true
}
}
},
@@ -5574,6 +5642,7 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz",
"integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==",
+ "dev": true,
"requires": {
"iconv-lite": "0.4.19",
"jschardet": "1.5.1",
@@ -5956,7 +6025,8 @@
"formidable": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz",
- "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak="
+ "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=",
+ "dev": true
},
"forwarded": {
"version": "0.1.2",
@@ -8295,7 +8365,8 @@
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
},
"icss-replace-symbols": {
"version": "1.1.0",
@@ -8545,11 +8616,12 @@
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
},
"ionic": {
- "version": "3.10.3",
- "resolved": "https://registry.npmjs.org/ionic/-/ionic-3.10.3.tgz",
- "integrity": "sha512-JbBPMwii5Zx4otGExVAc/slbRE5MbyXwh79l+QHAmvh0gYz2PBzGu+4cSSvd/ijYtRKt9Gn1q09e468rqkiTrA==",
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/ionic/-/ionic-3.12.0.tgz",
+ "integrity": "sha512-a2W91OzjrShfxQ1DLe79TG5uNEdVyFjT2y6aHj6aE43vaP4N1+xg64TH26W7APUPqz9CvGURd6JzNnGh+5wQOg==",
+ "dev": true,
"requires": {
- "@ionic/cli-utils": "1.10.2",
+ "@ionic/cli-utils": "1.12.0",
"@ionic/discover": "0.3.1",
"chalk": "2.1.0",
"opn": "5.1.0",
@@ -8563,6 +8635,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
"integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
"requires": {
"color-convert": "1.9.0"
}
@@ -8571,6 +8644,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
"integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
+ "dev": true,
"requires": {
"ansi-styles": "3.2.0",
"escape-string-regexp": "1.0.5",
@@ -8581,6 +8655,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz",
"integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==",
+ "dev": true,
"requires": {
"is-wsl": "1.1.0"
}
@@ -8588,12 +8663,14 @@
"semver": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
},
"supports-color": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "dev": true,
"requires": {
"has-flag": "2.0.0"
}
@@ -9823,7 +9900,8 @@
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
- "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
},
"is-relative": {
"version": "0.2.1",
@@ -9875,7 +9953,8 @@
"is-wsl": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
},
"isarray": {
"version": "0.0.1",
@@ -10002,7 +10081,8 @@
"jschardet": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz",
- "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A=="
+ "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==",
+ "dev": true
},
"jsesc": {
"version": "1.3.0",
@@ -10271,6 +10351,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
"integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
"requires": {
"readable-stream": "2.3.3"
},
@@ -10278,12 +10359,14 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -10298,6 +10381,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
@@ -10316,6 +10400,7 @@
"version": "0.0.24",
"resolved": "https://registry.npmjs.org/leek/-/leek-0.0.24.tgz",
"integrity": "sha1-5ADlfw5g2O8r1NBo3EKKVDRdvNo=",
+ "dev": true,
"requires": {
"debug": "2.6.8",
"lodash.assign": "3.2.0",
@@ -10326,6 +10411,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz",
"integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=",
+ "dev": true,
"requires": {
"lodash._baseassign": "3.2.0",
"lodash._createassigner": "3.1.1",
@@ -10649,6 +10735,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
"integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
+ "dev": true,
"requires": {
"lodash._basecopy": "3.0.1",
"lodash.keys": "3.1.2"
@@ -10672,12 +10759,14 @@
"lodash._bindcallback": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
- "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4="
+ "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=",
+ "dev": true
},
"lodash._createassigner": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz",
"integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=",
+ "dev": true,
"requires": {
"lodash._bindcallback": "3.0.1",
"lodash._isiterateecall": "3.0.9",
@@ -11369,7 +11458,8 @@
"ncp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
- "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M="
+ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+ "dev": true
},
"negotiator": {
"version": "0.6.1",
@@ -11379,7 +11469,8 @@
"netmask": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz",
- "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU="
+ "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=",
+ "dev": true
},
"ng-annotate": {
"version": "1.2.2",
@@ -15377,6 +15468,7 @@
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
"integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
"requires": {
"rx-lite": "3.1.2"
}
@@ -15704,6 +15796,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
"integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0"
},
@@ -15711,7 +15804,8 @@
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
}
}
},
@@ -15987,7 +16081,8 @@
"ssh-config": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ssh-config/-/ssh-config-1.1.1.tgz",
- "integrity": "sha512-ZKqLWbqUrMRFZPL6TAXWbRhY6yG64xh18OzfhOyOpJYrMVq4S0WTxGcer4KRf1c1vFKOc+4kO0bXzgpZsS6kyA=="
+ "integrity": "sha512-ZKqLWbqUrMRFZPL6TAXWbRhY6yG64xh18OzfhOyOpJYrMVq4S0WTxGcer4KRf1c1vFKOc+4kO0bXzgpZsS6kyA==",
+ "dev": true
},
"sshpk": {
"version": "1.13.1",
@@ -16408,6 +16503,7 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.6.0.tgz",
"integrity": "sha512-oWsu4mboo8sVxagp4bNwZIR1rUmypeAJDmNIwT9mF4k06hSu6P92aOjEWLaIj7vsX3fOUp+cRH/04tao+q5Q7A==",
+ "dev": true,
"requires": {
"component-emitter": "1.2.1",
"cookiejar": "2.1.1",
@@ -16424,17 +16520,20 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"mime": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.0.tgz",
- "integrity": "sha512-n9ChLv77+QQEapYz8lV+rIZAW3HhAPW2CXnzb1GN5uMkuczshwvkW7XPsbzU0ZQN3sP47Er2KVkp2p3KyqZKSQ=="
+ "integrity": "sha512-n9ChLv77+QQEapYz8lV+rIZAW3HhAPW2CXnzb1GN5uMkuczshwvkW7XPsbzU0ZQN3sP47Er2KVkp2p3KyqZKSQ==",
+ "dev": true
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -16449,6 +16548,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
@@ -16506,6 +16606,7 @@
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz",
"integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=",
+ "dev": true,
"requires": {
"bl": "1.2.1",
"end-of-stream": "1.4.0",
@@ -16517,6 +16618,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
"integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
+ "dev": true,
"requires": {
"readable-stream": "2.3.3"
}
@@ -16525,6 +16627,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
"integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
+ "dev": true,
"requires": {
"once": "1.4.0"
}
@@ -16532,12 +16635,14 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
"requires": {
"wrappy": "1.0.2"
}
@@ -16546,6 +16651,7 @@
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -16560,6 +16666,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
@@ -16731,6 +16838,7 @@
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
"requires": {
"os-tmpdir": "1.0.2"
}
@@ -17390,7 +17498,8 @@
"walkdir": {
"version": "0.0.11",
"resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
- "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI="
+ "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
+ "dev": true
},
"watchpack": {
"version": "1.4.0",
@@ -17981,6 +18090,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
"integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
+ "dev": true,
"requires": {
"archiver-utils": "1.3.0",
"compress-commons": "1.2.0",
@@ -17991,17 +18101,20 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
@@ -18016,6 +18129,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
diff --git a/package.json b/package.json
index c1995dff..5a61b8a3 100644
--- a/package.json
+++ b/package.json
@@ -51,14 +51,14 @@
"gulp-minify-css": "^0.3.0",
"gulp-rename": "^1.2.0",
"gulp-sass": "^2.0.0",
- "ionic": "^3.10.3",
"ionic-angular": "^2.0.0-beta.10",
"ionic-app-lib": "^0.7.0",
"ionic-plugin-keyboard": "^2.2.1",
"phonegap-plugin-mobile-accessibility": "^1.0.5",
"phonegap-plugin-push": "^1.9.0",
"rxjs": "^5.4.3",
- "typescript": "^2.4.1"
+ "typescript": "^2.4.1",
+ "org.devgeeks.Canvas2ImagePlugin": "https://github.com/flache/Canvas2ImagePlugin"
},
"devDependencies": {
"@ionic/cli-plugin-gulp": "1.0.2",
@@ -68,6 +68,7 @@
"gulp": "^3.9.1",
"gulp-angular-templatecache": "^1.6.0",
"gulp-util": "^2.2.14",
+ "ionic": "3.12.0",
"jshint": "^2.8.0",
"ng-annotate": "^1.0.2",
"shelljs": "^0.3.0",
@@ -213,6 +214,9 @@
"XWALK_LITEVERSION": "xwalk_core_library_canary:17+",
"XWALK_COMMANDLINE": "--disable-pull-to-refresh-effect",
"XWALK_MULTIPLEAPK": "true"
+ },
+ "org.devgeeks.Canvas2ImagePlugin": {
+ "PHOTOLIBRARY_USAGE_DESCRIPTION": " "
}
}
}