From f1b00bdd3ef7a45f6fbdc0d5eb0c2622f164bfe5 Mon Sep 17 00:00:00 2001
From: Peter Tandler 
Date: Sat, 17 Aug 2019 22:06:25 +0200
Subject: [PATCH 1/2] Updated ImageMagick download URL for Windows
---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5778f0d..ee96e23 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ If you are using an older version of cordova (before 7.x):
 
 ### Requirements
 
-- ImageMagick installed (*Mac*: `brew install imagemagick`, *Debian/Ubuntu*: `sudo apt-get install imagemagick`, *Windows*: [See here, install "Legacy tools"](http://www.imagemagick.org/script/binary-releases.php#windows))
+- ImageMagick installed (*Mac*: `brew install imagemagick`, *Debian/Ubuntu*: `sudo apt-get install imagemagick`, *Windows*: [See here, install "Legacy tools"](https://www.imagemagick.org/script/download.php#windows))
 - At least one platform was added to your project ([cordova platforms docs](http://cordova.apache.org/docs/en/edge/guide_platforms_index.md.html#Platform%20Guides))
 - Cordova's config.xml file must exist in the root folder ([cordova config.xml docs](http://cordova.apache.org/docs/en/edge/config_ref_index.md.html#The%20config.xml%20File))
 
From 83ec976b9ffa7e7fd0f424b51fcd444adb3207bd Mon Sep 17 00:00:00 2001
From: Peter Tandler 
Date: Sun, 18 Aug 2019 22:50:50 +0200
Subject: [PATCH 2/2] Added support for projects using capacitor instead of
 cordova
---
 README.md            |  43 ++++++++----
 bin/c2-splash        |   2 +
 bin/capacitor-splash |   2 +
 index.js             | 106 +++++++++++++++++++++--------
 sample.png           | Bin 0 -> 28081 bytes
 sample.svg           | 101 ++++++++++++++++++++++++++++
 yarn.lock            | 155 +++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 369 insertions(+), 40 deletions(-)
 create mode 100644 bin/c2-splash
 create mode 100644 bin/capacitor-splash
 create mode 100644 sample.png
 create mode 100644 sample.svg
 create mode 100644 yarn.lock
diff --git a/README.md b/README.md
index ee96e23..cad2c63 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-# cordova-splash
+# cordova-splash + capacitor-splash = c2-splash
 
-Automatic splash screen generator for Cordova. Create a splash screen once in the root folder of your Cordova project and use cordova-splash to automatically crop and copy it for all the platforms your project supports (currenty works with iOS, Android and Windows 10).
+Automatic splash screen generator for *both* [Cordova](https://cordova.apache.org) and [capacitor](https://capacitor.ionicframework.com/); that's why I renamed it to *c2-splash*. :-P
 
-The splash screen image should be 2208x2208 px with a center square of about 1200x1200 px. The image may be cropped around the center square. You can also use larger images with similar proportions.
+Create a splash screen once in the root folder of your Cordova / capacitor project and use c2-splash to automatically crop and copy it for all the platforms your project supports (currently works with iOS, Android and Windows 10 (Cordova only)).
 
 ### Installation
 
@@ -14,29 +14,48 @@ If you are using an older version of cordova (before 7.x):
 
 ### Requirements
 
-- ImageMagick installed (*Mac*: `brew install imagemagick`, *Debian/Ubuntu*: `sudo apt-get install imagemagick`, *Windows*: [See here, install "Legacy tools"](https://www.imagemagick.org/script/download.php#windows))
-- At least one platform was added to your project ([cordova platforms docs](http://cordova.apache.org/docs/en/edge/guide_platforms_index.md.html#Platform%20Guides))
-- Cordova's config.xml file must exist in the root folder ([cordova config.xml docs](http://cordova.apache.org/docs/en/edge/config_ref_index.md.html#The%20config.xml%20File))
+- ImageMagick installed (*Mac*: `brew install imagemagick`, *Debian/Ubuntu*: `sudo apt-get install imagemagick`, *Windows*: [See here](https://www.imagemagick.org/script/download.php#windows), when installing choose the "Legacy tools" option!)
+- At least one platform was added to your project ([cordova platforms docs](http://cordova.apache.org/docs/en/edge/guide_platforms_index.md.html#Platform%20Guides) or (`npx cap add`)[https://capacitor.ionicframework.com/docs/getting-started/])
+- Cordova's config.xml file must exist in the root folder ([cordova config.xml docs](http://cordova.apache.org/docs/en/edge/config_ref_index.md.html#The%20config.xml%20File)), or, when using capacitor, it looks for `capacitor.config.json`
 
 ### Usage
 
-Create a `splash.png` file in the root folder of your cordova project and run:
+Create a `splash.png` file with in the root folder of your cordova project. The splash screen image should be **2208x2208 px** with a center square of about **1200x1200 px**. The image may be **cropped** around the center square. You can also use larger images with similar proportions. As ImageMagick is used for image generation, you can also use SVG graphics.
 
-    $ cordova-splash
+Then run:
 
-You also can specify manually a location for your `config.xml` or `splash.png`:
+    $ c2-splash
 
-    $ cordova-splash --config=config.xml --splash=splash.png
+c2-splash automatically detects whether you have a cordova or a capacitor project by looking for the `capacitor.config.json` config file.
+
+You also can specify manually a location for your `config.xml` / `capacitor.config.json` or `splash.png`:
+
+    $ c2-splash --config=config.xml --splash=splash.png
+
+You can use the `--capacitor` option to manually choose "capacitor" mode and use `--config` to set the file name.
 
 If you run a old version of Cordova for iOS and you need your files in `/Resources/icons/`, use this option:
 
-    $ cordova-splash --xcode-old
+    $ c2-splash --xcode-old
+
+To change the output filename for android, use:
+
+    $ c2-splash --android_filename=screen.png
 
 #### Notes:
 
-- Your `config.ml` file will not be updated by the tool (because images are automatically created in the good folders)
+- The error message `Error: spawn identify ENOENT` is printed, when the script cannot find the `identify` tool, i.e. the ImageMagick tools are not found in `PATH`.
+- There are sample splash images to help you see which parts are visible in which resolution: sample.svg / sample.png
+
+**Cordova:**
+
+- Your `config.xml` file will not be updated by the tool (because images are automatically created in the good folders)
 - Therefore, in your `config.xml`, be sure to remove all lines looking like ``
 
+**capacitor:**
+
+- For android and ios the splash images are generated in the platform directory where they are expected for building the app. *However, as I don't have a Mac at hand right now, I didn't test the paths for ios.*
+
 ### Icons
 
 Check out [cordova-icon](https://github.com/AlexDisler/cordova-icon)
diff --git a/bin/c2-splash b/bin/c2-splash
new file mode 100644
index 0000000..a21be8d
--- /dev/null
+++ b/bin/c2-splash
@@ -0,0 +1,2 @@
+#!/usr/bin/env node
+require('./../index.js');
diff --git a/bin/capacitor-splash b/bin/capacitor-splash
new file mode 100644
index 0000000..a21be8d
--- /dev/null
+++ b/bin/capacitor-splash
@@ -0,0 +1,2 @@
+#!/usr/bin/env node
+require('./../index.js');
diff --git a/index.js b/index.js
index 1868309..456771b 100644
--- a/index.js
+++ b/index.js
@@ -6,14 +6,37 @@ var colors = require('colors');
 var _      = require('underscore');
 var Q      = require('q');
 var argv   = require('minimist')(process.argv.slice(2));
+const CAPACITOR_CONFIG_FILE = 'capacitor.config.json';
+const CORDOVA_CONFIG_FILE = 'config.xml';
 
 /**
  * @var {Object} settings - names of the config file and of the splash image
  */
 var settings = {};
-settings.CONFIG_FILE = argv.config || 'config.xml';
+settings.CAPACITOR = argv.capacitor || fs.existsSync(CAPACITOR_CONFIG_FILE);
+settings.CONFIG_FILE = argv.config || (settings.CAPACITOR ? CAPACITOR_CONFIG_FILE : CORDOVA_CONFIG_FILE);
 settings.SPLASH_FILE = argv.splash || 'splash.png';
 settings.OLD_XCODE_PATH = argv['xcode-old'] || false;
+settings.ANDROID_SPLASH_FILENAME = argv.android_filename || 'splash.png';
+// console.log("settings=",settings);
+
+const platform_paths = settings.CAPACITOR ? {
+  ios: 'ios',
+  android: 'android'
+} : {
+  ios: 'platforms/ios',
+  android: 'platforms/android'
+};
+
+const platform_splash_paths = settings.CAPACITOR ? {
+  // todo check if this path is correct for capacitor ios
+  ios: settings.OLD_XCODE_PATH ? '/Resources/splash/' : '/Images.xcassets/LaunchImage.launchimage/',
+  android: '/app/src/main/res/'
+} : {
+  ios: settings.OLD_XCODE_PATH ? '/Resources/splash/' : '/Images.xcassets/LaunchImage.launchimage/',
+  android: '/res/'
+};
+
 
 /**
  * Check which platforms are added to the project and return their splash screen names and sizes
@@ -24,17 +47,12 @@ settings.OLD_XCODE_PATH = argv['xcode-old'] || false;
 var getPlatforms = function (projectName) {
   var deferred = Q.defer();
   var platforms = [];
-  var xcodeFolder = '/Images.xcassets/LaunchImage.launchimage/';
-
-  if (settings.OLD_XCODE_PATH) {
-    xcodeFolder = '/Resources/splash/';
-  }
 
   platforms.push({
     name : 'ios',
     // TODO: use async fs.exists
-    isAdded : fs.existsSync('platforms/ios'),
-    splashPath : 'platforms/ios/' + projectName + xcodeFolder,
+    isAdded : fs.existsSync(platform_paths.ios),
+    splashPath : platform_paths.ios + projectName + platform_splash_paths.ios,
     splash : [
       // iPhone
       { name: 'Default~iphone.png',            width: 320,  height: 480  },
@@ -58,23 +76,23 @@ var getPlatforms = function (projectName) {
   });
   platforms.push({
     name : 'android',
-    isAdded : fs.existsSync('platforms/android'),
-    splashPath : 'platforms/android/res/',
+    isAdded : fs.existsSync(platform_paths.android),
+    splashPath : platform_paths.android + platform_splash_paths.android,
     splash : [
       // Landscape
-      { name: 'drawable-land-ldpi/screen.png',  width: 320,  height: 200  },
-      { name: 'drawable-land-mdpi/screen.png',  width: 480,  height: 320  },
-      { name: 'drawable-land-hdpi/screen.png',  width: 800,  height: 480  },
-      { name: 'drawable-land-xhdpi/screen.png', width: 1280, height: 720  },
-      { name: 'drawable-land-xxhdpi/screen.png', width: 1600, height: 960  },
-      { name: 'drawable-land-xxxhdpi/screen.png', width: 1920, height: 1280  },
+      { name: 'drawable-land-ldpi/' + settings.ANDROID_SPLASH_FILENAME,  width: 320,  height: 200  },
+      { name: 'drawable-land-mdpi/' + settings.ANDROID_SPLASH_FILENAME,  width: 480,  height: 320  },
+      { name: 'drawable-land-hdpi/' + settings.ANDROID_SPLASH_FILENAME,  width: 800,  height: 480  },
+      { name: 'drawable-land-xhdpi/' + settings.ANDROID_SPLASH_FILENAME, width: 1280, height: 720  },
+      { name: 'drawable-land-xxhdpi/' + settings.ANDROID_SPLASH_FILENAME, width: 1600, height: 960  },
+      { name: 'drawable-land-xxxhdpi/' + settings.ANDROID_SPLASH_FILENAME, width: 1920, height: 1280  },
       // Portrait
-      { name: 'drawable-port-ldpi/screen.png',  width: 200,  height: 320  },
-      { name: 'drawable-port-mdpi/screen.png',  width: 320,  height: 480  },
-      { name: 'drawable-port-hdpi/screen.png',  width: 480,  height: 800  },
-      { name: 'drawable-port-xhdpi/screen.png', width: 720,  height: 1280 },
-      { name: 'drawable-port-xxhdpi/screen.png', width: 960, height: 1600  },
-      { name: 'drawable-port-xxxhdpi/screen.png', width: 1280, height: 1920  }
+      { name: 'drawable-port-ldpi/' + settings.ANDROID_SPLASH_FILENAME,  width: 200,  height: 320  },
+      { name: 'drawable-port-mdpi/' + settings.ANDROID_SPLASH_FILENAME,  width: 320,  height: 480  },
+      { name: 'drawable-port-hdpi/' + settings.ANDROID_SPLASH_FILENAME,  width: 480,  height: 800  },
+      { name: 'drawable-port-xhdpi/' + settings.ANDROID_SPLASH_FILENAME, width: 720,  height: 1280 },
+      { name: 'drawable-port-xxhdpi/' + settings.ANDROID_SPLASH_FILENAME, width: 960, height: 1600  },
+      { name: 'drawable-port-xxxhdpi/' + settings.ANDROID_SPLASH_FILENAME, width: 1280, height: 1920  }
     ]
   });
   platforms.push({
@@ -96,6 +114,7 @@ var getPlatforms = function (projectName) {
       { name: 'SplashScreenPhone.scale-100.png', width: 480,  height: 800  }
     ]
   });
+  // console.info(platforms);
   deferred.resolve(platforms);
   return deferred.promise;
 };
@@ -172,7 +191,7 @@ var generateSplash = function (platform, splash) {
       deferred.reject(err);
     } else {
       deferred.resolve();
-      display.success(splash.name + ' created');
+      display.success(dstPath + ' created');
     }
   });
   return deferred.promise;
@@ -192,11 +211,7 @@ var generateSplashForPlatform = function (platform) {
   splashes.forEach(function (splash) {
     all.push(generateSplash(platform, splash));
   });
-  Q.all(all).then(function () {
-    deferred.resolve();
-  }).catch(function (err) {
-    console.log(err);
-  });
+  Q.all(all).then(deferred.resolve).catch(console.log);
   return deferred.promise;
 };
 
@@ -284,8 +299,43 @@ var configFileExists = function () {
   return deferred.promise;
 };
 
+if (settings.CAPACITOR) {
+  configFileExists = function () {
+    var deferred = Q.defer();
+    fs.exists(settings.CONFIG_FILE, function (exists) {
+      if (exists) {
+        display.success(settings.CONFIG_FILE + ' exists');
+        deferred.resolve();
+      } else {
+        display.error('capacitor\'s ' + settings.CONFIG_FILE + ' does not exist');
+        deferred.reject();
+      }
+    });
+    return deferred.promise;
+  };
+
+  getProjectName = function() {
+    var deferred = Q.defer();
+    fs.readFile(settings.CONFIG_FILE, function (err, data) {
+      if (err) {
+        deferred.reject(err);
+      }
+      try {
+        var config = JSON.parse(data);
+        var projectName = config.appName;
+        deferred.resolve(projectName);
+      } catch (err) {
+        deferred.reject(err);
+      }
+    });
+    return deferred.promise;
+  };
+}
+
 display.header('Checking Project & Splash');
 
+display.success('Mode: ' + settings.CAPACITOR ? 'capacitor' : 'cordova');
+
 atLeastOnePlatformFound()
 .then(validSplashExists)
 .then(configFileExists)
diff --git a/sample.png b/sample.png
new file mode 100644
index 0000000000000000000000000000000000000000..c919f999131922284845858550316949bb722b1c
GIT binary patch
literal 28081
zcmeHQdr(tX8ovk>)>RN6ZB;^~+EEvk?(S55ws*BdR+7gitXh_&V_?ReT6&E*@fykVia+~IIbbA?>9eH**<
zwc3MS?&8?Q@N%kp-3v*B5}G}!lwVxO+E0lt4!=qWknqDAUVPrI$#g=h0ly2UKLI`#
zL3Yj82z?$b;ne6(%d;NmN5?YwSbJ>eNM1qhO528qrr%z(CycWQ{EPdQ-5
zN^!;Ca2-x%M}o&QL}de&CBh@~&I)yb#V_vPO_{J*>MYfO_AzAg3m^Lwq_aodSmN)q
zFlcorPvUO4zVRCA-z1a{K
zn4fBeVN1}2zu};?^(@hE$=1}bC7S55t3cYCE}_~S`X=Jc%iio)!zQBsd;KyY&Dwc`
z%~1y%=QLX+^4lYi-~2lF%6C7s-IkpdlH3FjA6-H97cTh!hmsu2N$&6u9#74Q(`AnJNW%D(4WyIZ8W@qzwCk@~Z?cR6UTz#$b%en~gCAiQF*P39)7VW;|pfrbxZ3F`|lmz_n*W2j{eT#
zTYI+kgVC>9AIa#R<5N|imZMLbH&@nF!trWQ&nxb>jC}`^s@nNPRusd{b7~#hEBD4z&*Fxyrv2(_H7{%qMZ)Lr%l-ikOBp?q
zo3;pvPz^#ulqa2J66g^k%aFwei4YPYwm#8hqX8sBNQCMZ04Mcm@Xza!&bqk(Mh-zj
zQiP-kNfBVcch%~J(;3tvxtKl$$;WWKq$RcWht`l5Gg*ce)nC{WlUA=?|iPa^n5V=bsD%|W+f-ff`|?nKfqIQoeaJ#yumH7(LhX8;ZXEv9ASA2w@j
z-`(W|;(bvaL=f-8hTNu;(h1p!s;Jol7dcu*3Gs4x0U*nZE_^z4qsH$18sv-%3gq
zq8%R`EBWMisLd}uj(d|f(+f|fD3myK%r$0)vU{#-Q^V^h&p?8lZ{Y!SCr0atv)9^
zG=S!gY%_G1gDr5E17It2keM43o67}YEu`kiH$vTAFTcvFX=z4voYzD%tJTn54%l#)
u1JqXLut>d-+^ibVZYdSGoLfruy%b1(?SVJ*ToKwDC%oS}UU)3z%Krho?;^nf
literal 0
HcmV?d00001
diff --git a/sample.svg b/sample.svg
new file mode 100644
index 0000000..3cdfe8f
--- /dev/null
+++ b/sample.svg
@@ -0,0 +1,101 @@
+
+
+
+
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..81be999
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,155 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+balanced-match@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+brace-expansion@^1.1.7:
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+  dependencies:
+    balanced-match "^1.0.0"
+    concat-map "0.0.1"
+
+colors@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
+  integrity sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=
+
+concat-map@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+fs-extra@^0.30.0:
+  version "0.30.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
+  integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^2.1.0"
+    klaw "^1.0.0"
+    path-is-absolute "^1.0.0"
+    rimraf "^2.2.8"
+
+fs.realpath@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+glob@^7.1.3:
+  version "7.1.4"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+  integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.4"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
+  version "4.2.2"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
+  integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
+
+imagemagick@^0.1.3:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/imagemagick/-/imagemagick-0.1.3.tgz#7483cea093b4d9f2e2f396857adc8821b537c56a"
+  integrity sha1-dIPOoJO02fLi85aFetyIIbU3xWo=
+
+inflight@^1.0.4:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+  dependencies:
+    once "^1.3.0"
+    wrappy "1"
+
+inherits@2:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+jsonfile@^2.1.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+  integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug=
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
+klaw@^1.0.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+  integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk=
+  optionalDependencies:
+    graceful-fs "^4.1.9"
+
+minimatch@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+  dependencies:
+    brace-expansion "^1.1.7"
+
+minimist@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+  integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+once@^1.3.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+  dependencies:
+    wrappy "1"
+
+path-is-absolute@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+q@^1.0.1:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+  integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+rimraf@^2.2.8:
+  version "2.7.1"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+  integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+  dependencies:
+    glob "^7.1.3"
+
+sax@>=0.6.0:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+underscore@^1.6.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
+  integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
+
+wrappy@1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xml2js@^0.4.3:
+  version "0.4.19"
+  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
+  integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==
+  dependencies:
+    sax ">=0.6.0"
+    xmlbuilder "~9.0.1"
+
+xmlbuilder@~9.0.1:
+  version "9.0.7"
+  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
+  integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=