diff --git a/.editorconfig b/.editorconfig
index 82da0b16e7..8ad8c6338d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,15 +1,15 @@
-# http://editorconfig.org
-
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-insert_final_newline = false
+# http://editorconfig.org
+
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = false
trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 9d0d615983..3d3e7740b9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,6 @@ node_modules/
aot/
scripts/ionic-native-bower
dist/
+src/plugins/**/ngx
+*.d.ts
+injectable-classes.json
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 625cada628..aab538743b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,48 @@
+
+# [4.5.0](https://github.com/ionic-team/ionic-native/compare/v4.4.2...v4.5.0) (2017-12-08)
+
+
+### Bug Fixes
+
+* **alipay:** add 'string' as an alternative type for 'pay()' input parameter; ([#2172](https://github.com/ionic-team/ionic-native/issues/2172)) ([d43fe72](https://github.com/ionic-team/ionic-native/commit/d43fe72))
+* **app-rate:** add simpleMode ([#2155](https://github.com/ionic-team/ionic-native/issues/2155)) ([9844274](https://github.com/ionic-team/ionic-native/commit/9844274))
+* **app-rate:** change openStoreInApp to inAppReview ([#2097](https://github.com/ionic-team/ionic-native/issues/2097)) ([d95ae68](https://github.com/ionic-team/ionic-native/commit/d95ae68))
+* **camera-preview:** add missing `tapToFocus` camera option ([#2046](https://github.com/ionic-team/ionic-native/issues/2046)) ([b9b781d](https://github.com/ionic-team/ionic-native/commit/b9b781d))
+* **deeplinks:** add options parameter([#1601](https://github.com/ionic-team/ionic-native/issues/1601)) ([#2141](https://github.com/ionic-team/ionic-native/issues/2141)) ([bb2291c](https://github.com/ionic-team/ionic-native/commit/bb2291c))
+* **ftp:** return observable (not promise) for upload and download method ([#2174](https://github.com/ionic-team/ionic-native/issues/2174)) ([5159367](https://github.com/ionic-team/ionic-native/commit/5159367))
+* **indexappcontent:** Return observable for onItemPressed ([#2006](https://github.com/ionic-team/ionic-native/issues/2006)) ([9a52110](https://github.com/ionic-team/ionic-native/commit/9a52110))
+* **mobile-accessibility:** change signature references to the correct names ([#2139](https://github.com/ionic-team/ionic-native/issues/2139)) ([b2c873c](https://github.com/ionic-team/ionic-native/commit/b2c873c))
+* **ms-adal:** add userInfo in the AuthenticationResult ([#2160](https://github.com/ionic-team/ionic-native/issues/2160)) ([c038c63](https://github.com/ionic-team/ionic-native/commit/c038c63))
+* **music-controls:** various fixes ([#2094](https://github.com/ionic-team/ionic-native/issues/2094)) ([afca876](https://github.com/ionic-team/ionic-native/commit/afca876))
+* **push:** add senderID to AndroidPushOptions ([#2060](https://github.com/ionic-team/ionic-native/issues/2060)) ([4694c42](https://github.com/ionic-team/ionic-native/commit/4694c42))
+* **web-intent:** fix false negative of plugin installation ([#2062](https://github.com/ionic-team/ionic-native/issues/2062)) ([ae94c71](https://github.com/ionic-team/ionic-native/commit/ae94c71))
+
+
+### Features
+
+* **android exoplayer:** add cordova-plugin-exoplayer ([#2180](https://github.com/ionic-team/ionic-native/issues/2180)) ([d06fa48](https://github.com/ionic-team/ionic-native/commit/d06fa48))
+* **android-fingerprint:** add getSigningCertificateFingerprint() method ([#2076](https://github.com/ionic-team/ionic-native/issues/2076)) ([bd5bcdc](https://github.com/ionic-team/ionic-native/commit/bd5bcdc))
+* **apple-pay:** add cordova-plugin-applepay ([#2081](https://github.com/ionic-team/ionic-native/issues/2081)) ([784f948](https://github.com/ionic-team/ionic-native/commit/784f948))
+* **apple-pay:** update for version 3 of the Apple Pay plugin. ([#2177](https://github.com/ionic-team/ionic-native/issues/2177)) ([bf41506](https://github.com/ionic-team/ionic-native/commit/bf41506))
+* **ble:** support startStateNotifications & stopStateNotifications ([#2085](https://github.com/ionic-team/ionic-native/issues/2085)) ([2a4bcee](https://github.com/ionic-team/ionic-native/commit/2a4bcee))
+* **braintree:** add support for cordova-plugin-braintree to [@ionic-native](https://github.com/ionic-native) ([#2073](https://github.com/ionic-team/ionic-native/issues/2073)) ([091ac7a](https://github.com/ionic-team/ionic-native/commit/091ac7a))
+* **call-number:** add isCallSupported method ([#2051](https://github.com/ionic-team/ionic-native/issues/2051)) ([6053296](https://github.com/ionic-team/ionic-native/commit/6053296))
+* **dns:** add cordova-plugin-dns plugin ([#2083](https://github.com/ionic-team/ionic-native/issues/2083)) ([212bd63](https://github.com/ionic-team/ionic-native/commit/212bd63))
+* **firebase:** add new Firebase phone verification methods ([#2157](https://github.com/ionic-team/ionic-native/issues/2157)) ([86181af](https://github.com/ionic-team/ionic-native/commit/86181af))
+* **GooglePlayGamesServices:** add plugin ([#1904](https://github.com/ionic-team/ionic-native/issues/1904)) ([03f5789](https://github.com/ionic-team/ionic-native/commit/03f5789))
+* **network-interface:** add plugin support ([#2063](https://github.com/ionic-team/ionic-native/issues/2063)) ([86b2a2c](https://github.com/ionic-team/ionic-native/commit/86b2a2c))
+* **nfc:** add interfaces and missing references to UriHelper and TextHelper ([#2104](https://github.com/ionic-team/ionic-native/issues/2104)) ([8b78644](https://github.com/ionic-team/ionic-native/commit/8b78644))
+* **nfc:** add support for iOS ([#2050](https://github.com/ionic-team/ionic-native/issues/2050)) ([9f72592](https://github.com/ionic-team/ionic-native/commit/9f72592))
+* **push:** add support for version 2.1.0 ([#2064](https://github.com/ionic-team/ionic-native/issues/2064)) ([c1ce5da](https://github.com/ionic-team/ionic-native/commit/c1ce5da))
+* **zeroconf:** add reInit() method ([#2144](https://github.com/ionic-team/ionic-native/issues/2144)) ([7255795](https://github.com/ionic-team/ionic-native/commit/7255795))
+
+
+
+
+## [4.4.2](https://github.com/ionic-team/ionic-native/compare/v4.4.1...v4.4.2) (2017-11-15)
+
+
+
## [4.4.1](https://github.com/ionic-team/ionic-native/compare/v4.4.0...v4.4.1) (2017-11-13)
diff --git a/LICENSE b/LICENSE
index 623c70a833..bb777e9299 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,23 +1,23 @@
-Copyright 2015-present Drifty Co.
-http://drifty.com/
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+Copyright 2015-present Drifty Co.
+http://drifty.com/
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/circle.yml b/circle.yml
index c5046f0b6c..c8ddf5b50f 100644
--- a/circle.yml
+++ b/circle.yml
@@ -3,7 +3,7 @@ jobs:
build:
working_directory: ~/ionic-native/
docker:
- - image: node:7
+ - image: node:8
steps:
- checkout
- restore_cache:
@@ -33,7 +33,7 @@ jobs:
- run: bash ./scripts/git/config.sh
- run:
name: Build Ionic Native
- command: npm run build:core && ./node_modules/.bin/tsc
+ command: npm run build
- run:
name: Generate README files to ensure docs are valid
command: npm run readmes
diff --git a/karma.conf.js b/karma.conf.js
deleted file mode 100644
index eb10d4d9cc..0000000000
--- a/karma.conf.js
+++ /dev/null
@@ -1,55 +0,0 @@
-"use strict";
-
-module.exports = config => {
-
- const conf = {
- frameworks: [
- 'jasmine',
- 'karma-typescript'
- ],
-
- plugins: [
- 'karma-typescript',
- 'karma-jasmine',
- 'karma-phantomjs-launcher'
- ],
-
- preprocessors: {
- 'src/**/*.ts': ['karma-typescript']
- },
-
- karmaTypescriptConfig: {
- bundlerOptions: {
- entrypoints: /\.spec\.ts$/,
- transforms: [
- require("karma-typescript-es6-transform")()
- ]
- },
- compilerOptions: {
- lib: ['es2015', 'dom'],
- paths: {
- "@ionic-native/core": ["./src/@ionic-native/core"]
- },
- baseUrl: '.'
- }
- },
-
- files: [
- { pattern: 'src/**/*.ts', included: true, watched: true }
- ],
-
- reporters: ['progress'],
-
- port: 9876,
- colors: true,
- logLevel: config.INFO,
- autoWatch: true,
- browsers: [
- 'PhantomJS'
- ],
- singleRun: false
- };
-
- config.set(conf);
-
-};
diff --git a/package-lock.json b/package-lock.json
index 845634b1e3..6c46f82000 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,45 +1,46 @@
{
"name": "ionic-native",
- "version": "4.4.2",
+ "version": "5.0.0-beta.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
- "@angular/compiler": {
- "version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.4.tgz",
- "integrity": "sha1-Mm6wAp2aNUGqyhJN75rcUcNvK0E=",
+ "@angular/common": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.1.0.tgz",
+ "integrity": "sha512-J6E0OfTJJGcyoKU51ZucsDFV40YEAPgP6VCIPYECgOFHxrqg6O1ZFZSD1fdviMXMLVEFCi6Fy6IB7GJyiWgDIA==",
"dev": true,
"requires": {
- "tslib": "1.8.0"
+ "tslib": "1.8.1"
}
},
- "@angular/compiler-cli": {
- "version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.4.tgz",
- "integrity": "sha1-BjCApJfZF1OWglBQIixxfaGE9s8=",
+ "@angular/compiler": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.1.0.tgz",
+ "integrity": "sha512-iyFQqmhKNRSc9JRx7ty6z/wCsypjpbRu0QR6q2LMa6imuCt9qLHOvTajBQExRB8guqd/LTVDG4WiYY1lf8iO2w==",
"dev": true,
"requires": {
- "@angular/tsc-wrapped": "4.4.4",
- "minimist": "1.2.0",
- "reflect-metadata": "0.1.10"
+ "tslib": "1.8.1"
}
},
- "@angular/core": {
- "version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.4.tgz",
- "integrity": "sha1-vTfs9UFY+XSJmWyThr0iL4CjL1w=",
+ "@angular/compiler-cli": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.1.0.tgz",
+ "integrity": "sha512-M1//TjgcckkwTMeGTRe7mvFY+00NxaLqlsObnGA9+R3T9cpWeLpy5iVD444Wdxl5MA/Bo3TgGNmeXZsJvh466w==",
"dev": true,
"requires": {
- "tslib": "1.8.0"
+ "chokidar": "1.7.0",
+ "minimist": "1.2.0",
+ "reflect-metadata": "0.1.10",
+ "tsickle": "0.25.5"
}
},
- "@angular/tsc-wrapped": {
- "version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.4.tgz",
- "integrity": "sha1-mEGCHlVha4JsoWAlD+heFfx0/8M=",
+ "@angular/core": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.1.0.tgz",
+ "integrity": "sha512-duObjve+INoz4wWuqcaJzl1isUyI37RtRblTFXgZBp2n2n0nXJq1CubcfgxQhMMR2d64xWLKg9+d34PvnzaMmg==",
"dev": true,
"requires": {
- "tsickle": "0.21.6"
+ "tslib": "1.8.1"
}
},
"@types/cordova": {
@@ -48,56 +49,147 @@
"integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=",
"dev": true
},
- "@types/jasmine": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.6.3.tgz",
- "integrity": "sha512-2dJf9//QxTnFBXHsCqLbB55jlMreJQie9HhgsZrSgHveOKCWVmgcXgRyvIi22Ndk/dJ/e2srLOstk2NgVbb7XA==",
+ "@types/fs-extra": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-4.0.5.tgz",
+ "integrity": "sha512-tIG0GpHum5IFb8Qze/cSv0w/0gNzHB+MUDftTQaxenx46z50g51/MPkNLssLz9+uZLzCDd35bT9qtWOTXZ21Gw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.0.47"
+ }
+ },
+ "@types/glob": {
+ "version": "5.0.33",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz",
+ "integrity": "sha512-BcD4yyWz+qmCggaYMSFF0Xn7GkO6tgwm3Fh9Gxk/kQmEU3Z7flQTnVlMyKBUNvXXNTCCyjqK4XT4/2hLd1gQ2A==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "3.0.1",
+ "@types/node": "8.0.47"
+ }
+ },
+ "@types/jest": {
+ "version": "21.1.5",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-21.1.5.tgz",
+ "integrity": "sha512-HwBIPK96DROvcB4EX5mA7L2nzhZ3sh8AcDSFODB4eG43S3q3d0+oo356J51qCxw9Bbn7G1DOmBmrw6vf+WiGTg==",
+ "dev": true
+ },
+ "@types/lodash": {
+ "version": "4.14.85",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.85.tgz",
+ "integrity": "sha512-HrZiwDl62if0z31+rB99CLlg7WzS7b+KmyW75XAHEl/ZG0De2ACo6skZ89Zh3jOWkjKObN0Apq3MUezg7u9NKQ==",
+ "dev": true
+ },
+ "@types/minimatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.1.tgz",
+ "integrity": "sha512-rUO/jz10KRSyA9SHoCWQ8WX9BICyj5jZYu1/ucKEJKb4KzLZCKMURdYbadP157Q6Zl1x0vHsrU+Z/O0XlhYQDw==",
"dev": true
},
"@types/node": {
- "version": "8.0.51",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.51.tgz",
- "integrity": "sha512-El3+WJk2D/ppWNd2X05aiP5l2k4EwF7KwheknQZls+I26eSICoWRhRIJ56jGgw2dqNGQ5LtNajmBU2ajS28EvQ==",
+ "version": "8.0.47",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.47.tgz",
+ "integrity": "sha512-kOwL746WVvt/9Phf6/JgX/bsGQvbrK5iUgzyfwZNcKVFcjAUVSpF9HxevLTld2SG9aywYHOILj38arDdY1r/iQ==",
"dev": true
},
- "abbrev": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
- "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+ "@types/rimraf": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.2.tgz",
+ "integrity": "sha512-Hm/bnWq0TCy7jmjeN5bKYij9vw5GrDFWME4IuxV08278NtU/VdGbzsBohcCUJ7+QMqmUq5hpRKB39HeQWJjztQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "5.0.33",
+ "@types/node": "8.0.47"
+ }
+ },
+ "@types/source-map": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@types/source-map/-/source-map-0.5.2.tgz",
+ "integrity": "sha512-++w4WmMbk3dS3UeHGzAG+xJOSz5Xqtjys/TBkqG3qp3SeWE7Wwezqe5eB7B51cxUyh4PW7bwVotpsLdBK0D8cw==",
"dev": true
},
- "accepts": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
- "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
+ "@types/tapable": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-0.2.4.tgz",
+ "integrity": "sha512-pclMAvhPnXJcJu1ZZ8bQthuUcdDWzDuxDdbSf6l1U6s4fP6EBiZpPsOZYqFOrbqDV97sXGFSsb6AUpiLfv4xIA==",
+ "dev": true
+ },
+ "@types/uglify-js": {
+ "version": "2.6.29",
+ "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-2.6.29.tgz",
+ "integrity": "sha512-BdFLCZW0GTl31AbqXSak8ss/MqEZ3DN2MH9rkAyGoTuzK7ifGUlX+u0nfbWeTsa7IPcZhtn8BlpYBXSV+vqGhQ==",
"dev": true,
"requires": {
- "mime-types": "2.1.17",
- "negotiator": "0.6.1"
+ "@types/source-map": "0.5.2"
+ }
+ },
+ "@types/webpack": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-3.8.1.tgz",
+ "integrity": "sha512-121nghW8XJ0tFNGuQh5k+VoSMLm71c7bEmNI0MMNDtKiNUcij3nWwypQccfEQrGcmJCAMkoC5vZLtdT4fbbCzw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.0.47",
+ "@types/tapable": "0.2.4",
+ "@types/uglify-js": "2.6.29"
+ }
+ },
+ "JSONStream": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
+ "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
+ "dev": true,
+ "requires": {
+ "jsonparse": "1.3.1",
+ "through": "2.3.8"
}
},
+ "abab": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "dev": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
"acorn": {
"version": "4.0.13",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
"integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
"dev": true
},
+ "acorn-dynamic-import": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
+ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
+ "dev": true,
+ "requires": {
+ "acorn": "4.0.13"
+ }
+ },
+ "acorn-globals": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
+ "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=",
+ "dev": true,
+ "requires": {
+ "acorn": "4.0.13"
+ }
+ },
"add-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
"integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
"dev": true
},
- "after": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
- "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
- "dev": true
- },
"ajv": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz",
- "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=",
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz",
+ "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=",
"dev": true,
"requires": {
"co": "4.6.0",
@@ -106,6 +198,12 @@
"json-schema-traverse": "0.3.1"
}
},
+ "ajv-keywords": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
+ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
+ "dev": true
+ },
"align-text": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
@@ -123,6 +221,21 @@
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
},
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
+ "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==",
+ "dev": true
+ },
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -145,6 +258,21 @@
"normalize-path": "2.1.1"
}
},
+ "append-transform": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
+ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
+ "dev": true,
+ "requires": {
+ "default-require-extensions": "1.0.0"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
"archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
@@ -187,6 +315,18 @@
"integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
"dev": true
},
+ "array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
"array-find-index": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
@@ -199,10 +339,22 @@
"integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
"dev": true
},
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
"array-slice": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz",
- "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
"dev": true
},
"array-uniq": {
@@ -217,10 +369,10 @@
"integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
"dev": true
},
- "arraybuffer.slice": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
- "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
"asap": {
@@ -261,12 +413,30 @@
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
"dev": true
},
+ "astw": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz",
+ "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=",
+ "dev": true,
+ "requires": {
+ "acorn": "4.0.13"
+ }
+ },
+ "async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.4"
+ }
+ },
"async-each": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
@@ -318,7 +488,7 @@
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
- "convert-source-map": "1.5.0",
+ "convert-source-map": "1.5.1",
"debug": "2.6.9",
"json5": "0.5.1",
"lodash": "4.17.4",
@@ -345,6 +515,17 @@
"trim-right": "1.0.1"
}
},
+ "babel-helper-builder-binary-assignment-operator-visitor": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
+ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
+ "dev": true,
+ "requires": {
+ "babel-helper-explode-assignable-expression": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
"babel-helper-call-delegate": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
@@ -369,6 +550,17 @@
"lodash": "4.17.4"
}
},
+ "babel-helper-explode-assignable-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
+ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
"babel-helper-function-name": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
@@ -423,6 +615,19 @@
"lodash": "4.17.4"
}
},
+ "babel-helper-remap-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
"babel-helper-replace-supers": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
@@ -447,6 +652,16 @@
"babel-template": "6.26.0"
}
},
+ "babel-jest": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz",
+ "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-istanbul": "4.1.5",
+ "babel-preset-jest": "21.2.0"
+ }
+ },
"babel-messages": {
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
@@ -465,6 +680,58 @@
"babel-runtime": "6.26.0"
}
},
+ "babel-plugin-istanbul": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz",
+ "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0",
+ "istanbul-lib-instrument": "1.9.1",
+ "test-exclude": "4.1.1"
+ }
+ },
+ "babel-plugin-jest-hoist": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz",
+ "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==",
+ "dev": true
+ },
+ "babel-plugin-syntax-async-functions": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
+ "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
+ "dev": true
+ },
+ "babel-plugin-syntax-exponentiation-operator": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+ "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
+ "dev": true
+ },
+ "babel-plugin-syntax-object-rest-spread": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
+ "dev": true
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
+ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
+ "dev": true
+ },
+ "babel-plugin-transform-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
+ "dev": true,
+ "requires": {
+ "babel-helper-remap-async-to-generator": "6.24.1",
+ "babel-plugin-syntax-async-functions": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
"babel-plugin-transform-es2015-arrow-functions": {
"version": "6.22.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
@@ -699,6 +966,17 @@
"regexpu-core": "2.0.0"
}
},
+ "babel-plugin-transform-exponentiation-operator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
+ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
+ "dev": true,
+ "requires": {
+ "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
+ "babel-plugin-syntax-exponentiation-operator": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
"babel-plugin-transform-regenerator": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
@@ -718,13 +996,15 @@
"babel-types": "6.26.0"
}
},
- "babel-preset-es2015": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz",
- "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=",
+ "babel-preset-env": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz",
+ "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==",
"dev": true,
"requires": {
"babel-plugin-check-es2015-constants": "6.22.0",
+ "babel-plugin-syntax-trailing-function-commas": "6.22.0",
+ "babel-plugin-transform-async-to-generator": "6.24.1",
"babel-plugin-transform-es2015-arrow-functions": "6.22.0",
"babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
"babel-plugin-transform-es2015-block-scoping": "6.26.0",
@@ -747,7 +1027,21 @@
"babel-plugin-transform-es2015-template-literals": "6.22.0",
"babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
"babel-plugin-transform-es2015-unicode-regex": "6.24.1",
- "babel-plugin-transform-regenerator": "6.26.0"
+ "babel-plugin-transform-exponentiation-operator": "6.24.1",
+ "babel-plugin-transform-regenerator": "6.26.0",
+ "browserslist": "2.10.0",
+ "invariant": "2.2.2",
+ "semver": "5.4.1"
+ }
+ },
+ "babel-preset-jest": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz",
+ "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-jest-hoist": "21.2.0",
+ "babel-plugin-syntax-object-rest-spread": "6.13.0"
}
},
"babel-register": {
@@ -772,7 +1066,7 @@
"dev": true,
"requires": {
"core-js": "2.5.1",
- "regenerator-runtime": "0.11.0"
+ "regenerator-runtime": "0.11.1"
}
},
"babel-template": {
@@ -817,42 +1111,30 @@
"to-fast-properties": "1.0.3"
}
},
+ "babelify": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/babelify/-/babelify-8.0.0.tgz",
+ "integrity": "sha512-xVr63fKEvMWUrrIbqlHYsMcc5Zdw4FSVesAHgkgajyCE1W8gbm9rbMakqavhxKvikGYMhEcqxTwB/gQmQ6lBtw==",
+ "dev": true
+ },
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
"dev": true
},
- "backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
- "dev": true
- },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
- "base64-arraybuffer": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
- "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
- "dev": true
- },
"base64-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
"integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
"dev": true
},
- "base64id": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
- "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
- "dev": true
- },
"bcrypt-pbkdf": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
@@ -869,19 +1151,16 @@
"integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
"dev": true
},
- "better-assert": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
- "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
- "dev": true,
- "requires": {
- "callsite": "1.0.0"
- }
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
},
"binary-extensions": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz",
- "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
"dev": true
},
"binaryextensions": {
@@ -890,12 +1169,6 @@
"integrity": "sha1-HmN0iLNbWL2l9HdL+WpSEqjJB1U=",
"dev": true
},
- "blob": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
- "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
- "dev": true
- },
"bluebird": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
@@ -908,24 +1181,6 @@
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
"dev": true
},
- "body-parser": {
- "version": "1.18.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
- "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
- "dev": true,
- "requires": {
- "bytes": "3.0.0",
- "content-type": "1.0.4",
- "debug": "2.6.9",
- "depd": "1.1.1",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "on-finished": "2.3.0",
- "qs": "6.5.1",
- "raw-body": "2.3.2",
- "type-is": "1.6.15"
- }
- },
"boom": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
@@ -935,6 +1190,58 @@
"hoek": "4.2.0"
}
},
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "2.0.0",
+ "camelcase": "4.1.0",
+ "chalk": "2.3.0",
+ "cli-boxes": "1.0.0",
+ "string-width": "2.1.1",
+ "term-size": "1.2.0",
+ "widest-line": "2.0.0"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
"brace-expansion": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
@@ -962,6 +1269,19 @@
"integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
"dev": true
},
+ "browser-pack": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz",
+ "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "1.3.1",
+ "combine-source-map": "0.7.2",
+ "defined": "1.0.0",
+ "through2": "2.0.3",
+ "umd": "3.0.1"
+ }
+ },
"browser-resolve": {
"version": "1.11.2",
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
@@ -979,21 +1299,76 @@
}
}
},
- "browserify-aes": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
- "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
+ "browserify": {
+ "version": "14.5.0",
+ "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz",
+ "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==",
"dev": true,
"requires": {
- "buffer-xor": "1.0.3",
- "cipher-base": "1.0.4",
- "create-hash": "1.1.3",
- "evp_bytestokey": "1.0.3",
- "inherits": "2.0.3",
- "safe-buffer": "5.1.1"
- }
- },
- "browserify-cipher": {
+ "JSONStream": "1.3.1",
+ "assert": "1.4.1",
+ "browser-pack": "6.0.2",
+ "browser-resolve": "1.11.2",
+ "browserify-zlib": "0.2.0",
+ "buffer": "5.0.8",
+ "cached-path-relative": "1.0.1",
+ "concat-stream": "1.5.2",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
+ "crypto-browserify": "3.12.0",
+ "defined": "1.0.0",
+ "deps-sort": "2.0.0",
+ "domain-browser": "1.1.7",
+ "duplexer2": "0.1.4",
+ "events": "1.1.1",
+ "glob": "7.1.2",
+ "has": "1.0.1",
+ "htmlescape": "1.1.1",
+ "https-browserify": "1.0.0",
+ "inherits": "2.0.3",
+ "insert-module-globals": "7.0.1",
+ "labeled-stream-splicer": "2.0.0",
+ "module-deps": "4.1.1",
+ "os-browserify": "0.3.0",
+ "parents": "1.0.1",
+ "path-browserify": "0.0.0",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "read-only-stream": "2.0.0",
+ "readable-stream": "2.3.3",
+ "resolve": "1.5.0",
+ "shasum": "1.0.2",
+ "shell-quote": "1.6.1",
+ "stream-browserify": "2.0.1",
+ "stream-http": "2.7.2",
+ "string_decoder": "1.0.3",
+ "subarg": "1.0.0",
+ "syntax-error": "1.3.0",
+ "through2": "2.0.3",
+ "timers-browserify": "1.4.2",
+ "tty-browserify": "0.0.0",
+ "url": "0.11.0",
+ "util": "0.10.3",
+ "vm-browserify": "0.0.4",
+ "xtend": "4.0.1"
+ }
+ },
+ "browserify-aes": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
+ "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "1.0.3",
+ "cipher-base": "1.0.4",
+ "create-hash": "1.1.3",
+ "evp_bytestokey": "1.0.3",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "browserify-cipher": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
"integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
@@ -1049,6 +1424,25 @@
"pako": "1.0.6"
}
},
+ "browserslist": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz",
+ "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "1.0.30000780",
+ "electron-to-chromium": "1.3.28"
+ }
+ },
+ "bser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz",
+ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=",
+ "dev": true,
+ "requires": {
+ "node-int64": "0.4.0"
+ }
+ },
"buffer": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz",
@@ -1077,16 +1471,37 @@
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
"dev": true
},
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "cacache": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz",
+ "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.5.1",
+ "chownr": "1.0.1",
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "lru-cache": "4.1.1",
+ "mississippi": "1.3.0",
+ "mkdirp": "0.5.1",
+ "move-concurrently": "1.0.1",
+ "promise-inflight": "1.0.1",
+ "rimraf": "2.6.2",
+ "ssri": "5.0.0",
+ "unique-filename": "1.1.0",
+ "y18n": "3.2.1"
+ }
+ },
+ "cached-path-relative": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz",
+ "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=",
"dev": true
},
- "callsite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
- "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
"dev": true
},
"camel-case": {
@@ -1100,9 +1515,9 @@
}
},
"camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
"dev": true
},
"camelcase-keys": {
@@ -1113,14 +1528,34 @@
"requires": {
"camelcase": "2.1.1",
"map-obj": "1.0.1"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
}
},
+ "caniuse-lite": {
+ "version": "1.0.30000780",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000780.tgz",
+ "integrity": "sha1-H5CV8u/UlA4LpsWZKreptkzDW6Q=",
+ "dev": true
+ },
"canonical-path": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-0.0.2.tgz",
"integrity": "sha1-4x65N6jJPuKgHfGDl5RyGQKHRXQ=",
"dev": true
},
+ "capture-stack-trace": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
+ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=",
+ "dev": true
+ },
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -1141,7 +1576,6 @@
"resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
"integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
"dev": true,
- "optional": true,
"requires": {
"align-text": "0.1.4",
"lazy-cache": "1.0.4"
@@ -1186,17 +1620,6 @@
"upper-case-first": "1.1.2"
}
},
- "child-process-promise": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz",
- "integrity": "sha1-RzChHvYQ+tRQuPIjx50x172tgHQ=",
- "dev": true,
- "requires": {
- "cross-spawn": "4.0.2",
- "node-version": "1.1.0",
- "promise-polyfill": "6.0.2"
- }
- },
"chokidar": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
@@ -1213,6 +1636,18 @@
"readdirp": "2.1.0"
}
},
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+ "dev": true
+ },
+ "ci-info": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz",
+ "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==",
+ "dev": true
+ },
"cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
@@ -1223,12 +1658,17 @@
"safe-buffer": "5.1.1"
}
},
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
"cliui": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
"integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
"dev": true,
- "optional": true,
"requires": {
"center-align": "0.1.3",
"right-align": "0.1.3",
@@ -1239,8 +1679,7 @@
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -1268,10 +1707,19 @@
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
- "coffee-script": {
- "version": "1.12.7",
- "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
- "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
+ "color-convert": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"colors": {
@@ -1280,19 +1728,10 @@
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
"dev": true
},
- "combine-lists": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz",
- "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
- "dev": true,
- "requires": {
- "lodash": "4.17.4"
- }
- },
"combine-source-map": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
- "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz",
+ "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=",
"dev": true,
"requires": {
"convert-source-map": "1.1.3",
@@ -1318,6 +1757,18 @@
"delayed-stream": "1.0.0"
}
},
+ "commander": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
+ "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
"compare-func": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
@@ -1326,26 +1777,19 @@
"requires": {
"array-ify": "1.0.0",
"dot-prop": "3.0.0"
+ },
+ "dependencies": {
+ "dot-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
+ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "dev": true,
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ }
}
},
- "component-bind": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
- "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
- "dev": true
- },
- "component-emitter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
- "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
- "dev": true
- },
- "component-inherit": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
- "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
- "dev": true
- },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1353,26 +1797,50 @@
"dev": true
},
"concat-stream": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
- "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
+ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
"dev": true,
"requires": {
"inherits": "2.0.3",
- "readable-stream": "2.3.3",
+ "readable-stream": "2.0.6",
"typedarray": "0.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
}
},
- "connect": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz",
- "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=",
+ "configstore": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz",
+ "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==",
"dev": true,
"requires": {
- "debug": "2.6.9",
- "finalhandler": "1.0.6",
- "parseurl": "1.3.2",
- "utils-merge": "1.0.1"
+ "dot-prop": "4.2.0",
+ "graceful-fs": "4.1.11",
+ "make-dir": "1.1.0",
+ "unique-string": "1.0.0",
+ "write-file-atomic": "2.3.0",
+ "xdg-basedir": "3.0.0"
}
},
"console-browserify": {
@@ -1400,10 +1868,10 @@
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
"dev": true
},
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "content-type-parser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz",
+ "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==",
"dev": true
},
"conventional-changelog": {
@@ -1412,11 +1880,11 @@
"integrity": "sha1-kVGmKx2O2y2CcR2r9bfPcQQfgrE=",
"dev": true,
"requires": {
- "conventional-changelog-angular": "1.5.2",
+ "conventional-changelog-angular": "1.5.3",
"conventional-changelog-atom": "0.1.2",
"conventional-changelog-codemirror": "0.2.1",
- "conventional-changelog-core": "1.9.3",
- "conventional-changelog-ember": "0.2.9",
+ "conventional-changelog-core": "1.9.4",
+ "conventional-changelog-ember": "0.2.10",
"conventional-changelog-eslint": "0.2.1",
"conventional-changelog-express": "0.2.1",
"conventional-changelog-jquery": "0.1.0",
@@ -1425,13 +1893,13 @@
}
},
"conventional-changelog-angular": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.5.2.tgz",
- "integrity": "sha1-Kzj2Zf6cWSCvGi+C9Uf0ur5t5Xw=",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.5.3.tgz",
+ "integrity": "sha512-J+3g7H7O9QTxBFMmdlHSLzqTdxO8lhOKGXLAcewtKPGaVVV/JnaPOokuj85mP3tghP5gXi527HWoJlD3VBlX6g==",
"dev": true,
"requires": {
"compare-func": "1.3.2",
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-atom": {
@@ -1440,7 +1908,7 @@
"integrity": "sha1-Ella1SZ6aTfDTPkAKBscZRmKTGM=",
"dev": true,
"requires": {
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-cli": {
@@ -1462,17 +1930,17 @@
"integrity": "sha1-KZpPcUe681DmyBWPxUlUopHFzAk=",
"dev": true,
"requires": {
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-core": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-1.9.3.tgz",
- "integrity": "sha1-KJn+d5OJoynw7EsnRsNt3vuY2i0=",
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-1.9.4.tgz",
+ "integrity": "sha512-C8R8Bb706P10hYaGzllvH92O8Ck7xCGPB7t2Y+S1O2yf13BDvDW5BPdjyBwY2VgVNuFyNqi6qA458N+W9txpHg==",
"dev": true,
"requires": {
- "conventional-changelog-writer": "2.0.2",
- "conventional-commits-parser": "2.0.1",
+ "conventional-changelog-writer": "2.0.3",
+ "conventional-commits-parser": "2.1.0",
"dateformat": "1.0.12",
"get-pkg-repo": "1.4.0",
"git-raw-commits": "1.3.0",
@@ -1480,19 +1948,19 @@
"git-semver-tags": "1.2.3",
"lodash": "4.17.4",
"normalize-package-data": "2.4.0",
- "q": "1.5.0",
+ "q": "1.5.1",
"read-pkg": "1.1.0",
"read-pkg-up": "1.0.1",
"through2": "2.0.3"
}
},
"conventional-changelog-ember": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.2.9.tgz",
- "integrity": "sha1-jsc8wFTjqwZGZ/sf61L+jvGxZDg=",
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.2.10.tgz",
+ "integrity": "sha512-LBBBZO6Q7ib4HhSdyCNVR25OtaXl710UJg1aSHCLmR8AjuXKs3BO8tnbY1MH+D1C+z5IFoEDkpjOddefNTyhCQ==",
"dev": true,
"requires": {
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-eslint": {
@@ -1501,7 +1969,7 @@
"integrity": "sha1-LCoRvrIW+AZJunKDQYApO2h8BmI=",
"dev": true,
"requires": {
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-express": {
@@ -1510,7 +1978,7 @@
"integrity": "sha1-g42eHmyQmXA7FQucGaoteBdCvWw=",
"dev": true,
"requires": {
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-jquery": {
@@ -1519,7 +1987,7 @@
"integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=",
"dev": true,
"requires": {
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-jscs": {
@@ -1528,7 +1996,7 @@
"integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=",
"dev": true,
"requires": {
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-jshint": {
@@ -1538,25 +2006,36 @@
"dev": true,
"requires": {
"compare-func": "1.3.2",
- "q": "1.5.0"
+ "q": "1.5.1"
}
},
"conventional-changelog-writer": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-2.0.2.tgz",
- "integrity": "sha1-tYV97RsAHa+aeLnNQJJvRcE0lJs=",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-2.0.3.tgz",
+ "integrity": "sha512-2E1h7UXL0fhRO5h0CxDZ5EBc5sfBZEQePvuZ+gPvApiRrICUyNDy/NQIP+2TBd4wKZQf2Zm7TxbzXHG5HkPIbA==",
"dev": true,
"requires": {
"compare-func": "1.3.2",
- "conventional-commits-filter": "1.1.0",
+ "conventional-commits-filter": "1.1.1",
"dateformat": "1.0.12",
"handlebars": "4.0.11",
"json-stringify-safe": "5.0.1",
"lodash": "4.17.4",
"meow": "3.7.0",
- "semver": "5.3.0",
+ "semver": "5.4.1",
"split": "1.0.1",
"through2": "2.0.3"
+ },
+ "dependencies": {
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ }
}
},
"conventional-commit-types": {
@@ -1566,9 +2045,9 @@
"dev": true
},
"conventional-commits-filter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.0.tgz",
- "integrity": "sha1-H8Ka8wte2rdvVOIpxBGwxmPQ+es=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.1.tgz",
+ "integrity": "sha512-bQyatySNKHhcaeKVr9vFxYWA1W1Tdz6ybVMYDmv4/FhOXY1+fchiW07TzRbIQZhVa4cvBwrEaEUQBbCncFSdJQ==",
"dev": true,
"requires": {
"is-subset": "0.1.1",
@@ -1576,13 +2055,13 @@
}
},
"conventional-commits-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.0.1.tgz",
- "integrity": "sha1-HxXOa4RPfKQUlcgZDAgzwwuLFpM=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.0.tgz",
+ "integrity": "sha512-8MD05yN0Zb6aRsZnFX1ET+8rHWfWJk+my7ANCJZBU2mhz7TSB1fk2vZhkrwVy/PCllcTYAP/1T1NiWQ7Z01mKw==",
"dev": true,
"requires": {
- "is-text-path": "1.0.1",
"JSONStream": "1.3.1",
+ "is-text-path": "1.0.1",
"lodash": "4.17.4",
"meow": "3.7.0",
"split2": "2.2.0",
@@ -1591,16 +2070,24 @@
}
},
"convert-source-map": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
- "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+ "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
"dev": true
},
- "cookie": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
- "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
- "dev": true
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "fs-write-stream-atomic": "1.0.10",
+ "iferr": "0.1.5",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "run-queue": "1.0.3"
+ }
},
"core-js": {
"version": "2.5.1",
@@ -1623,7 +2110,7 @@
"graceful-fs": "4.1.11",
"minimist": "1.2.0",
"mkdirp": "0.5.1",
- "rimraf": "2.6.1"
+ "rimraf": "2.6.2"
}
},
"create-ecdh": {
@@ -1636,6 +2123,15 @@
"elliptic": "6.4.0"
}
},
+ "create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
+ "dev": true,
+ "requires": {
+ "capture-stack-trace": "1.0.0"
+ }
+ },
"create-hash": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
@@ -1663,12 +2159,13 @@
}
},
"cross-spawn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
- "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
"which": "1.3.0"
}
},
@@ -1711,6 +2208,58 @@
"randomfill": "1.0.3"
}
},
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "css-loader": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.9.1.tgz",
+ "integrity": "sha1-LhqgDOfjDvLGp6SzAKCAp8l54Nw=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "csso": "1.3.12",
+ "loader-utils": "0.2.17",
+ "source-map": "0.1.43"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
+ "csso": {
+ "version": "1.3.12",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-1.3.12.tgz",
+ "integrity": "sha1-/GKGlKLTiTiqrEmWdTIY/TEc254=",
+ "dev": true,
+ "optional": true
+ },
+ "cssom": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
+ "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
+ "dev": true
+ },
+ "cssstyle": {
+ "version": "0.2.37",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
+ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+ "dev": true,
+ "requires": {
+ "cssom": "0.3.2"
+ }
+ },
"currently-unhandled": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -1720,18 +2269,18 @@
"array-find-index": "1.0.2"
}
},
- "custom-event": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
- "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
- "dev": true
- },
"cycle": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
"integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
"dev": true
},
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
"cz-conventional-changelog": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.0.0.tgz",
@@ -1746,6 +2295,15 @@
"word-wrap": "1.2.3"
}
},
+ "d": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+ "dev": true,
+ "requires": {
+ "es5-ext": "0.10.37"
+ }
+ },
"dargs": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
@@ -1764,12 +2322,6 @@
"assert-plus": "1.0.0"
}
},
- "date-format": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-0.0.0.tgz",
- "integrity": "sha1-CSBoY6sHDrRZrOpVQsvYVrEZZrM=",
- "dev": true
- },
"date-now": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
@@ -1801,12 +2353,27 @@
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
+ "deep-extend": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
+ "dev": true
+ },
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
+ "default-require-extensions": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",
+ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
+ "dev": true,
+ "requires": {
+ "strip-bom": "2.0.0"
+ }
+ },
"defaults": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
@@ -1816,18 +2383,18 @@
"clone": "1.0.3"
}
},
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
- "depd": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
- "dev": true
- },
"dependency-graph": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.4.1.tgz",
@@ -1840,6 +2407,18 @@
"integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=",
"dev": true
},
+ "deps-sort": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
+ "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "1.3.1",
+ "shasum": "1.0.2",
+ "subarg": "1.0.0",
+ "through2": "2.0.3"
+ }
+ },
"des.js": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
@@ -1868,10 +2447,28 @@
"repeating": "2.0.1"
}
},
- "dgeni": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/dgeni/-/dgeni-0.4.7.tgz",
- "integrity": "sha1-UHBifdKPiNSABuIfVa+xipy4vmg=",
+ "detective": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.0.tgz",
+ "integrity": "sha512-4mBqSEdMfBpRAo/DQZnTcAXenpiSIJmVKbCMSotS+SFWWcrP/CKM6iBRPdTiEO+wZhlfEsoZlGqpG6ycl5vTqw==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.2.1",
+ "defined": "1.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ }
+ }
+ },
+ "dgeni": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/dgeni/-/dgeni-0.4.7.tgz",
+ "integrity": "sha1-UHBifdKPiNSABuIfVa+xipy4vmg=",
"dev": true,
"requires": {
"canonical-path": "0.0.2",
@@ -1914,19 +2511,25 @@
"glob": "7.1.2",
"htmlparser2": "3.9.2",
"lodash": "4.17.4",
- "marked": "0.3.6",
+ "marked": "0.3.7",
"minimatch": "3.0.4",
"mkdirp": "0.5.1",
"mkdirp-promise": "5.0.1",
"node-html-encoder": "0.0.2",
"nunjucks": "2.5.2",
- "semver": "5.3.0",
+ "semver": "5.4.1",
"shelljs": "0.7.8",
"spdx-license-list": "2.1.0",
"stringmap": "0.2.2",
"typescript": "1.8.10"
},
"dependencies": {
+ "espree": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-2.2.5.tgz",
+ "integrity": "sha1-32kbkxCIlAKuspzAZnCMVmkLhUs=",
+ "dev": true
+ },
"typescript": {
"version": "1.8.10",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz",
@@ -1982,18 +2585,6 @@
}
}
},
- "dom-serialize": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
- "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
- "dev": true,
- "requires": {
- "custom-event": "1.0.1",
- "ent": "2.2.0",
- "extend": "3.0.1",
- "void-elements": "2.0.1"
- }
- },
"dom-serializer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
@@ -2053,47 +2644,45 @@
}
},
"dot-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
- "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
"dev": true,
"requires": {
"is-obj": "1.0.1"
}
},
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
"duplexer2": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
- "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
"dev": true,
"requires": {
- "readable-stream": "1.1.14"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
+ "readable-stream": "2.3.3"
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
+ "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "stream-shift": "1.0.0"
}
},
"ecc-jsbn": {
@@ -2106,10 +2695,10 @@
"jsbn": "0.1.1"
}
},
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "electron-to-chromium": {
+ "version": "1.3.28",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz",
+ "integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=",
"dev": true
},
"elliptic": {
@@ -2127,132 +2716,48 @@
"minimalistic-crypto-utils": "1.0.1"
}
},
- "encodeurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
- "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
"dev": true
},
"end-of-stream": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
- "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
- "dev": true,
- "requires": {
- "once": "1.3.3"
- },
- "dependencies": {
- "once": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
- "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
- "dev": true,
- "requires": {
- "wrappy": "1.0.2"
- }
- }
- }
- },
- "engine.io": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz",
- "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=",
+ "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": {
- "accepts": "1.3.3",
- "base64id": "1.0.0",
- "cookie": "0.3.1",
- "debug": "2.3.3",
- "engine.io-parser": "1.3.2",
- "ws": "1.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
- }
- },
- "engine.io-client": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz",
- "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=",
- "dev": true,
- "requires": {
- "component-emitter": "1.2.1",
- "component-inherit": "0.0.3",
- "debug": "2.3.3",
- "engine.io-parser": "1.3.2",
- "has-cors": "1.1.0",
- "indexof": "0.0.1",
- "parsejson": "0.0.3",
- "parseqs": "0.0.5",
- "parseuri": "0.0.5",
- "ws": "1.1.2",
- "xmlhttprequest-ssl": "1.5.3",
- "yeast": "0.1.2"
- },
- "dependencies": {
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
- "dev": true
- },
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
+ "once": "1.4.0"
}
},
- "engine.io-parser": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
- "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+ "enhanced-resolve": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
+ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
"dev": true,
"requires": {
- "after": "0.8.2",
- "arraybuffer.slice": "0.0.6",
- "base64-arraybuffer": "0.1.5",
- "blob": "0.0.4",
- "has-binary": "0.1.7",
- "wtf-8": "1.0.0"
+ "graceful-fs": "4.1.11",
+ "memory-fs": "0.4.1",
+ "object-assign": "4.1.1",
+ "tapable": "0.2.8"
}
},
- "ent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
- "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
- "dev": true
- },
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
"dev": true
},
+ "errno": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
+ "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
+ "dev": true,
+ "requires": {
+ "prr": "0.0.0"
+ }
+ },
"error-ex": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
@@ -2262,17 +2767,81 @@
"is-arrayish": "0.2.1"
}
},
+ "es5-ext": {
+ "version": "0.10.37",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz",
+ "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "es6-map": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-iterator": "2.0.3",
+ "es6-set": "0.1.5",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "0.3.5"
+ }
+ },
"es6-promise": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
- "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
+ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=",
"dev": true
},
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
+ "es6-set": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "0.3.5"
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
+ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1"
+ }
},
"escape-string-regexp": {
"version": "1.0.5",
@@ -2281,48 +2850,54 @@
"dev": true
},
"escodegen": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
- "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz",
+ "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==",
"dev": true,
"requires": {
- "esprima": "2.7.3",
- "estraverse": "1.9.3",
+ "esprima": "3.1.3",
+ "estraverse": "4.2.0",
"esutils": "2.0.2",
"optionator": "0.8.2",
- "source-map": "0.2.0"
+ "source-map": "0.5.7"
},
"dependencies": {
"esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true
- },
- "estraverse": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
- "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
"dev": true
- },
- "source-map": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
- "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
- "dev": true,
- "optional": true,
- "requires": {
- "amdefine": "1.0.1"
- }
}
}
},
- "espree": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/espree/-/espree-2.2.5.tgz",
- "integrity": "sha1-32kbkxCIlAKuspzAZnCMVmkLhUs=",
+ "escope": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+ "dev": true,
+ "requires": {
+ "es6-map": "0.1.5",
+ "es6-weak-map": "2.0.2",
+ "esrecurse": "4.2.0",
+ "estraverse": "4.2.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
"dev": true
},
+ "esrecurse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
+ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0",
+ "object-assign": "4.1.1"
+ }
+ },
"estraverse": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
@@ -2335,11 +2910,30 @@
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
- "eventemitter3": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
- "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
- "dev": true
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.37"
+ }
+ },
+ "event-stream": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
+ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.3.3",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
+ }
},
"events": {
"version": "1.1.1",
@@ -2357,54 +2951,28 @@
"safe-buffer": "5.1.1"
}
},
- "expand-braces": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
- "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
+ "exec-sh": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz",
+ "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==",
"dev": true,
"requires": {
- "array-slice": "0.2.3",
- "array-unique": "0.2.1",
- "braces": "0.1.5"
- },
- "dependencies": {
- "array-slice": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
- "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
- "dev": true
- },
- "braces": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
- "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
- "dev": true,
- "requires": {
- "expand-range": "0.1.1"
- }
- },
- "expand-range": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
- "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
- "dev": true,
- "requires": {
- "is-number": "0.1.1",
- "repeat-string": "0.2.2"
- }
- },
- "is-number": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
- "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
- "dev": true
- },
- "repeat-string": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
- "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
- "dev": true
- }
+ "merge": "1.2.0"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
}
},
"expand-brackets": {
@@ -2434,6 +3002,31 @@
"os-homedir": "1.0.2"
}
},
+ "expect": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz",
+ "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "jest-diff": "21.2.1",
+ "jest-get-type": "21.2.0",
+ "jest-matcher-utils": "21.2.1",
+ "jest-message-util": "21.2.1",
+ "jest-regex-util": "21.2.0"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ }
+ }
+ },
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
@@ -2449,35 +3042,6 @@
"is-extglob": "1.0.0"
}
},
- "extract-zip": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
- "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
- "dev": true,
- "requires": {
- "concat-stream": "1.6.0",
- "debug": "2.6.9",
- "mkdirp": "0.5.0",
- "yauzl": "2.4.1"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
- "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- }
- }
- },
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -2518,13 +3082,23 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
- "fd-slicer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
- "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "fb-watchman": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
+ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
+ "dev": true,
+ "requires": {
+ "bser": "2.0.0"
+ }
+ },
+ "file-loader": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.8.5.tgz",
+ "integrity": "sha1-knXQMf54DyfUf19K8CvUNxPMFRs=",
"dev": true,
+ "optional": true,
"requires": {
- "pend": "1.2.0"
+ "loader-utils": "0.2.17"
}
},
"filename-regex": {
@@ -2533,6 +3107,16 @@
"integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
"dev": true
},
+ "fileset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
+ "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2",
+ "minimatch": "3.0.4"
+ }
+ },
"fill-range": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
@@ -2546,27 +3130,15 @@
"repeat-string": "1.6.1"
}
},
- "finalhandler": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz",
- "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=",
+ "find-cache-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
"dev": true,
"requires": {
- "debug": "2.6.9",
- "encodeurl": "1.0.1",
- "escape-html": "1.0.3",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "statuses": "1.3.1",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "statuses": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
- "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
- "dev": true
- }
+ "commondir": "1.0.1",
+ "make-dir": "1.1.0",
+ "pkg-dir": "2.0.0"
}
},
"find-index": {
@@ -2576,13 +3148,12 @@
"dev": true
},
"find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "path-exists": "2.1.0",
- "pinkie-promise": "2.0.1"
+ "locate-path": "2.0.0"
}
},
"findup-sync": {
@@ -2633,6 +3204,16 @@
"integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=",
"dev": true
},
+ "flush-write-stream": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz",
+ "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ }
+ },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -2665,6 +3246,22 @@
"mime-types": "2.1.17"
}
},
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
+ "dev": true
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ }
+ },
"fs-exists-sync": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
@@ -2672,46 +3269,71 @@
"dev": true
},
"fs-extra": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.0.0.tgz",
- "integrity": "sha1-M3NSve1KC3FPPrhN6M6nZenTdgA=",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
- "jsonfile": "2.4.0"
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.1"
}
},
"fs-extra-promise": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/fs-extra-promise/-/fs-extra-promise-0.4.1.tgz",
- "integrity": "sha1-rCjNLPa6ckjYI13ziHts9u3fNC8=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra-promise/-/fs-extra-promise-1.0.1.tgz",
+ "integrity": "sha1-tu0azpexDga5X0WNBRt/BcZhPuY=",
"dev": true,
"requires": {
"bluebird": "3.5.1",
- "fs-extra": "0.30.0"
+ "fs-extra": "2.1.2"
},
"dependencies": {
"fs-extra": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
- "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz",
+ "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
- "jsonfile": "2.4.0",
- "klaw": "1.3.1",
- "path-is-absolute": "1.0.1",
- "rimraf": "2.6.1"
+ "jsonfile": "2.4.0"
+ }
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
}
}
}
},
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "iferr": "0.1.5",
+ "imurmurhash": "0.1.4",
+ "readable-stream": "2.3.3"
+ }
+ },
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
"gaze": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
@@ -2721,6 +3343,12 @@
"globule": "0.1.0"
}
},
+ "get-caller-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "dev": true
+ },
"get-pkg-repo": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
@@ -2740,6 +3368,12 @@
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
"dev": true
},
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -2770,6 +3404,14 @@
"requires": {
"gitconfiglocal": "1.0.0",
"pify": "2.3.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
}
},
"git-semver-tags": {
@@ -2779,7 +3421,7 @@
"dev": true,
"requires": {
"meow": "3.7.0",
- "semver": "5.3.0"
+ "semver": "5.4.1"
}
},
"gitconfiglocal": {
@@ -2788,7 +3430,7 @@
"integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
"dev": true,
"requires": {
- "ini": "1.3.4"
+ "ini": "1.3.5"
}
},
"glob": {
@@ -2913,6 +3555,15 @@
"find-index": "0.1.1"
}
},
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "1.3.5"
+ }
+ },
"global-modules": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
@@ -2930,7 +3581,7 @@
"dev": true,
"requires": {
"homedir-polyfill": "1.0.1",
- "ini": "1.3.4",
+ "ini": "1.3.5",
"is-windows": "0.2.0",
"which": "1.3.0"
}
@@ -3008,12 +3659,37 @@
"sparkles": "1.0.0"
}
},
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "dev": true,
+ "requires": {
+ "create-error-class": "3.0.2",
+ "duplexer3": "0.1.4",
+ "get-stream": "3.0.0",
+ "is-redirect": "1.0.0",
+ "is-retry-allowed": "1.1.0",
+ "is-stream": "1.1.0",
+ "lowercase-keys": "1.0.0",
+ "safe-buffer": "5.1.1",
+ "timed-out": "4.0.1",
+ "unzip-response": "2.0.1",
+ "url-parse-lax": "1.0.0"
+ }
+ },
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
},
+ "growly": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
+ "dev": true
+ },
"gulp": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
@@ -3024,7 +3700,7 @@
"chalk": "1.1.3",
"deprecated": "0.0.1",
"gulp-util": "3.0.8",
- "interpret": "1.0.4",
+ "interpret": "1.1.0",
"liftoff": "2.3.0",
"minimist": "1.2.0",
"orchestrator": "0.3.8",
@@ -3040,6 +3716,15 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
"integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
"dev": true
+ },
+ "v8flags": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
+ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "dev": true,
+ "requires": {
+ "user-home": "1.1.1"
+ }
}
}
},
@@ -3050,9 +3735,9 @@
"dev": true
},
"gulp-replace": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-0.5.4.tgz",
- "integrity": "sha1-aaZ5FLvRPFYr/xT1BKQDeWqg2qk=",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-0.6.1.tgz",
+ "integrity": "sha1-Eb+Mj85TPjPi9qjy9DC5VboL4GY=",
"dev": true,
"requires": {
"istextorbinary": "1.0.2",
@@ -3061,14 +3746,22 @@
}
},
"gulp-tslint": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-6.1.2.tgz",
- "integrity": "sha1-ni3oLvJaqkN4/Yn+W0Q7Pq9wL+0=",
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.2.tgz",
+ "integrity": "sha512-0RNGqbp2TKPdbG+sWU3mNMXEMuF/noY1KS4+jd5lOStkvuFINkFL29dHX3IT1u+vVFD4Glwf+lkcdR2QMVNMzA==",
"dev": true,
"requires": {
"gulp-util": "3.0.8",
- "map-stream": "0.1.0",
+ "map-stream": "0.0.7",
"through": "2.3.8"
+ },
+ "dependencies": {
+ "map-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
+ "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=",
+ "dev": true
+ }
}
},
"gulp-util": {
@@ -3159,6 +3852,12 @@
"uglify-js": "2.8.29"
},
"dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
"source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
@@ -3182,10 +3881,19 @@
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"dev": true,
"requires": {
- "ajv": "5.3.0",
+ "ajv": "5.5.1",
"har-schema": "2.0.0"
}
},
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true,
+ "requires": {
+ "function-bind": "1.1.1"
+ }
+ },
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -3195,33 +3903,10 @@
"ansi-regex": "2.1.1"
}
},
- "has-binary": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
- "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
- "dev": true,
- "requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- }
- }
- },
- "has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
- "dev": true
- },
"has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
"dev": true
},
"has-gulplog": {
@@ -3252,16 +3937,6 @@
"minimalistic-assert": "1.0.0"
}
},
- "hasha": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
- "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
- "dev": true,
- "requires": {
- "is-stream": "1.1.0",
- "pinkie-promise": "2.0.1"
- }
- },
"hawk": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
@@ -3326,6 +4001,21 @@
"integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
"dev": true
},
+ "html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "dev": true,
+ "requires": {
+ "whatwg-encoding": "1.0.3"
+ }
+ },
+ "htmlescape": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
+ "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
+ "dev": true
+ },
"htmlparser2": {
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
@@ -3340,28 +4030,6 @@
"readable-stream": "2.3.3"
}
},
- "http-errors": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
- "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
- "dev": true,
- "requires": {
- "depd": "1.1.1",
- "inherits": "2.0.3",
- "setprototypeof": "1.0.3",
- "statuses": "1.4.0"
- }
- },
- "http-proxy": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
- "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
- "dev": true,
- "requires": {
- "eventemitter3": "1.2.0",
- "requires-port": "1.0.0"
- }
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -3391,6 +4059,30 @@
"integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
"dev": true
},
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
+ "dev": true
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
"indent-string": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
@@ -3423,9 +4115,9 @@
"dev": true
},
"ini": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
- "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true
},
"inline-source-map": {
@@ -3437,10 +4129,26 @@
"source-map": "0.5.7"
}
},
+ "insert-module-globals": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz",
+ "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "1.3.1",
+ "combine-source-map": "0.7.2",
+ "concat-stream": "1.5.2",
+ "is-buffer": "1.1.6",
+ "lexical-scope": "1.2.0",
+ "process": "0.11.10",
+ "through2": "2.0.3",
+ "xtend": "4.0.1"
+ }
+ },
"interpret": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz",
- "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
"dev": true
},
"invariant": {
@@ -3480,7 +4188,7 @@
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
"requires": {
- "binary-extensions": "1.10.0"
+ "binary-extensions": "1.11.0"
}
},
"is-buffer": {
@@ -3498,6 +4206,15 @@
"builtin-modules": "1.1.1"
}
},
+ "is-ci": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz",
+ "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=",
+ "dev": true,
+ "requires": {
+ "ci-info": "1.1.2"
+ }
+ },
"is-dotfile": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
@@ -3552,6 +4269,16 @@
"is-extglob": "1.0.0"
}
},
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "0.1.1",
+ "is-path-inside": "1.0.1"
+ }
+ },
"is-lower-case": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz",
@@ -3561,6 +4288,12 @@
"lower-case": "1.1.4"
}
},
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
"is-number": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
@@ -3576,6 +4309,15 @@
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "1.0.2"
+ }
+ },
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -3605,6 +4347,12 @@
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
"dev": true
},
+ "is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+ "dev": true
+ },
"is-relative": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz",
@@ -3614,6 +4362,12 @@
"is-unc-path": "0.1.2"
}
},
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -3677,12 +4431,6 @@
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
- "isbinaryfile": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
- "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
- "dev": true
- },
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -3704,51 +4452,71 @@
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
- "istanbul": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
- "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+ "istanbul-api": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz",
+ "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==",
"dev": true,
"requires": {
- "abbrev": "1.0.9",
- "async": "1.5.2",
- "escodegen": "1.8.1",
- "esprima": "2.7.3",
- "glob": "5.0.15",
- "handlebars": "4.0.11",
+ "async": "2.6.0",
+ "fileset": "2.0.3",
+ "istanbul-lib-coverage": "1.1.1",
+ "istanbul-lib-hook": "1.1.0",
+ "istanbul-lib-instrument": "1.9.1",
+ "istanbul-lib-report": "1.1.2",
+ "istanbul-lib-source-maps": "1.2.2",
+ "istanbul-reports": "1.1.3",
"js-yaml": "3.10.0",
"mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "once": "1.4.0",
- "resolve": "1.1.7",
- "supports-color": "3.2.3",
- "which": "1.3.0",
- "wordwrap": "1.0.0"
+ "once": "1.4.0"
+ }
+ },
+ "istanbul-lib-coverage": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz",
+ "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==",
+ "dev": true
+ },
+ "istanbul-lib-hook": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz",
+ "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==",
+ "dev": true,
+ "requires": {
+ "append-transform": "0.4.0"
+ }
+ },
+ "istanbul-lib-instrument": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz",
+ "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==",
+ "dev": true,
+ "requires": {
+ "babel-generator": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "istanbul-lib-coverage": "1.1.1",
+ "semver": "5.4.1"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz",
+ "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "1.1.1",
+ "mkdirp": "0.5.1",
+ "path-parse": "1.0.5",
+ "supports-color": "3.2.3"
},
"dependencies": {
- "esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true
- },
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
"dev": true
},
"supports-color": {
@@ -3759,15 +4527,42 @@
"requires": {
"has-flag": "1.0.0"
}
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
}
}
},
+ "istanbul-lib-source-maps": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz",
+ "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==",
+ "dev": true,
+ "requires": {
+ "debug": "3.1.0",
+ "istanbul-lib-coverage": "1.1.1",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz",
+ "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==",
+ "dev": true,
+ "requires": {
+ "handlebars": "4.0.11"
+ }
+ },
"istextorbinary": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-1.0.2.tgz",
@@ -3778,367 +4573,792 @@
"textextensions": "1.0.2"
}
},
- "jasmine-core": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz",
- "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
- "dev": true
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
- "js-yaml": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
- "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
+ "jest": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz",
+ "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==",
"dev": true,
"requires": {
- "argparse": "1.0.9",
- "esprima": "4.0.0"
+ "jest-cli": "21.2.1"
},
"dependencies": {
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "jest-cli": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz",
+ "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "3.0.0",
+ "chalk": "2.3.0",
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "is-ci": "1.0.10",
+ "istanbul-api": "1.2.1",
+ "istanbul-lib-coverage": "1.1.1",
+ "istanbul-lib-instrument": "1.9.1",
+ "istanbul-lib-source-maps": "1.2.2",
+ "jest-changed-files": "21.2.0",
+ "jest-config": "21.2.1",
+ "jest-environment-jsdom": "21.2.1",
+ "jest-haste-map": "21.2.0",
+ "jest-message-util": "21.2.1",
+ "jest-regex-util": "21.2.0",
+ "jest-resolve-dependencies": "21.2.0",
+ "jest-runner": "21.2.1",
+ "jest-runtime": "21.2.1",
+ "jest-snapshot": "21.2.1",
+ "jest-util": "21.2.1",
+ "micromatch": "2.3.11",
+ "node-notifier": "5.1.2",
+ "pify": "3.0.0",
+ "slash": "1.0.0",
+ "string-length": "2.0.0",
+ "strip-ansi": "4.0.0",
+ "which": "1.3.0",
+ "worker-farm": "1.5.2",
+ "yargs": "9.0.1"
+ }
+ },
+ "strip-ansi": {
+ "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"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
}
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "jest-changed-files": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz",
+ "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==",
"dev": true,
- "optional": true
- },
- "jsesc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
- "dev": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
+ "requires": {
+ "throat": "4.1.0"
+ }
},
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true
+ "jest-config": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz",
+ "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "glob": "7.1.2",
+ "jest-environment-jsdom": "21.2.1",
+ "jest-environment-node": "21.2.1",
+ "jest-get-type": "21.2.0",
+ "jest-jasmine2": "21.2.1",
+ "jest-regex-util": "21.2.0",
+ "jest-resolve": "21.2.0",
+ "jest-util": "21.2.1",
+ "jest-validate": "21.2.1",
+ "pretty-format": "21.2.1"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
+ "jest-diff": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz",
+ "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "diff": "3.4.0",
+ "jest-get-type": "21.2.0",
+ "pretty-format": "21.2.1"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
},
- "json3": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
- "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+ "jest-docblock": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz",
+ "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==",
"dev": true
},
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
+ "jest-environment-jsdom": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz",
+ "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==",
+ "dev": true,
+ "requires": {
+ "jest-mock": "21.2.0",
+ "jest-util": "21.2.1",
+ "jsdom": "9.12.0"
+ }
},
- "jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "jest-environment-node": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz",
+ "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11"
+ "jest-mock": "21.2.0",
+ "jest-util": "21.2.1"
}
},
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "jest-get-type": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz",
+ "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==",
"dev": true
},
- "JSONStream": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
- "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
+ "jest-haste-map": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz",
+ "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==",
"dev": true,
"requires": {
- "jsonparse": "1.3.1",
- "through": "2.3.8"
+ "fb-watchman": "2.0.0",
+ "graceful-fs": "4.1.11",
+ "jest-docblock": "21.2.0",
+ "micromatch": "2.3.11",
+ "sane": "2.2.0",
+ "worker-farm": "1.5.2"
}
},
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "jest-jasmine2": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz",
+ "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==",
"dev": true,
"requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
+ "chalk": "2.3.0",
+ "expect": "21.2.1",
+ "graceful-fs": "4.1.11",
+ "jest-diff": "21.2.1",
+ "jest-matcher-utils": "21.2.1",
+ "jest-message-util": "21.2.1",
+ "jest-snapshot": "21.2.1",
+ "p-cancelable": "0.3.0"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
}
},
- "karma": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz",
- "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==",
+ "jest-matcher-utils": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz",
+ "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==",
"dev": true,
"requires": {
- "bluebird": "3.5.1",
- "body-parser": "1.18.2",
- "chokidar": "1.7.0",
- "colors": "1.1.2",
- "combine-lists": "1.0.1",
- "connect": "3.6.5",
- "core-js": "2.5.1",
- "di": "0.0.1",
- "dom-serialize": "2.2.1",
- "expand-braces": "0.1.2",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "http-proxy": "1.16.2",
- "isbinaryfile": "3.0.2",
- "lodash": "3.10.1",
- "log4js": "0.6.38",
- "mime": "1.4.1",
- "minimatch": "3.0.4",
- "optimist": "0.6.1",
- "qjobs": "1.1.5",
- "range-parser": "1.2.0",
- "rimraf": "2.6.1",
- "safe-buffer": "5.1.1",
- "socket.io": "1.7.3",
- "source-map": "0.5.7",
- "tmp": "0.0.31",
- "useragent": "2.2.1"
+ "chalk": "2.3.0",
+ "jest-get-type": "21.2.0",
+ "pretty-format": "21.2.1"
},
"dependencies": {
- "colors": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
- "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
- "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.1"
+ }
},
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "dev": true
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
}
}
},
- "karma-cli": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz",
- "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=",
+ "jest-message-util": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz",
+ "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==",
"dev": true,
"requires": {
- "resolve": "1.5.0"
+ "chalk": "2.3.0",
+ "micromatch": "2.3.11",
+ "slash": "1.0.0"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
}
},
- "karma-coverage": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz",
- "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=",
+ "jest-mock": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz",
+ "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==",
+ "dev": true
+ },
+ "jest-regex-util": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz",
+ "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==",
+ "dev": true
+ },
+ "jest-resolve": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz",
+ "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==",
"dev": true,
"requires": {
- "dateformat": "1.0.12",
- "istanbul": "0.4.5",
- "lodash": "3.10.1",
- "minimatch": "3.0.4",
- "source-map": "0.5.7"
+ "browser-resolve": "1.11.2",
+ "chalk": "2.3.0",
+ "is-builtin-module": "1.0.0"
},
"dependencies": {
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
}
}
},
- "karma-jasmine": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz",
- "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=",
- "dev": true
+ "jest-resolve-dependencies": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz",
+ "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==",
+ "dev": true,
+ "requires": {
+ "jest-regex-util": "21.2.0"
+ }
},
- "karma-phantomjs-launcher": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz",
- "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=",
+ "jest-runner": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz",
+ "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==",
"dev": true,
"requires": {
- "lodash": "4.17.4",
- "phantomjs-prebuilt": "2.1.16"
+ "jest-config": "21.2.1",
+ "jest-docblock": "21.2.0",
+ "jest-haste-map": "21.2.0",
+ "jest-jasmine2": "21.2.1",
+ "jest-message-util": "21.2.1",
+ "jest-runtime": "21.2.1",
+ "jest-util": "21.2.1",
+ "pify": "3.0.0",
+ "throat": "4.1.0",
+ "worker-farm": "1.5.2"
}
},
- "karma-typescript": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/karma-typescript/-/karma-typescript-3.0.8.tgz",
- "integrity": "sha1-oayGsA2nRNwcA83HgXopgucvEXE=",
+ "jest-runtime": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz",
+ "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==",
"dev": true,
"requires": {
- "acorn": "4.0.13",
- "amdefine": "1.0.0",
- "assert": "1.4.1",
- "async": "2.6.0",
- "base64-js": "1.2.1",
- "browser-resolve": "1.11.2",
- "browserify-zlib": "0.2.0",
- "buffer": "5.0.8",
- "combine-source-map": "0.8.0",
- "console-browserify": "1.1.0",
- "constants-browserify": "1.0.0",
- "convert-source-map": "1.5.0",
- "crypto-browserify": "3.12.0",
- "diff": "3.4.0",
- "domain-browser": "1.1.7",
- "es6-promise": "4.1.1",
- "events": "1.1.1",
- "glob": "7.1.2",
- "https-browserify": "1.0.0",
- "ieee754": "1.1.8",
- "isarray": "1.0.0",
- "istanbul": "0.4.5",
- "json-stringify-safe": "5.0.1",
- "karma-coverage": "1.1.1",
- "lodash": "4.17.4",
- "log4js": "1.1.1",
- "magic-string": "0.19.1",
- "minimatch": "3.0.4",
- "os-browserify": "0.3.0",
- "pad": "1.2.1",
- "path-browserify": "0.0.0",
- "process": "0.11.10",
- "punycode": "1.4.1",
- "querystring-es3": "0.2.1",
- "readable-stream": "2.3.3",
- "remap-istanbul": "0.8.4",
- "source-map": "0.5.7",
- "stream-browserify": "2.0.1",
- "stream-http": "2.7.2",
- "string_decoder": "1.0.3",
- "through2": "2.0.1",
- "timers-browserify": "2.0.4",
- "tmp": "0.0.29",
- "tty-browserify": "0.0.0",
- "url": "0.11.0",
- "util": "0.10.3",
- "vm-browserify": "0.0.4"
+ "babel-core": "6.26.0",
+ "babel-jest": "21.2.0",
+ "babel-plugin-istanbul": "4.1.5",
+ "chalk": "2.3.0",
+ "convert-source-map": "1.5.1",
+ "graceful-fs": "4.1.11",
+ "jest-config": "21.2.1",
+ "jest-haste-map": "21.2.0",
+ "jest-regex-util": "21.2.0",
+ "jest-resolve": "21.2.0",
+ "jest-util": "21.2.1",
+ "json-stable-stringify": "1.0.1",
+ "micromatch": "2.3.11",
+ "slash": "1.0.0",
+ "strip-bom": "3.0.0",
+ "write-file-atomic": "2.3.0",
+ "yargs": "9.0.1"
},
"dependencies": {
- "amdefine": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz",
- "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=",
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true
},
- "async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
"dev": true,
"requires": {
- "lodash": "4.17.4"
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "jest-snapshot": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz",
+ "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "jest-diff": "21.2.1",
+ "jest-matcher-utils": "21.2.1",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "pretty-format": "21.2.1"
+ },
+ "dependencies": {
+ "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.1"
}
},
- "log4js": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-1.1.1.tgz",
- "integrity": "sha1-wh0px2BAieTyVYM+f5SzRh3h/0M=",
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"dev": true,
"requires": {
- "debug": "2.6.9",
- "semver": "5.3.0",
- "streamroller": "0.4.1"
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
}
},
- "through2": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz",
- "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=",
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
"dev": true,
"requires": {
- "readable-stream": "2.0.6",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
- "util-deprecate": "1.0.2"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "jest-util": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz",
+ "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==",
+ "dev": true,
+ "requires": {
+ "callsites": "2.0.0",
+ "chalk": "2.3.0",
+ "graceful-fs": "4.1.11",
+ "jest-message-util": "21.2.1",
+ "jest-mock": "21.2.0",
+ "jest-validate": "21.2.1",
+ "mkdirp": "0.5.1"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
}
},
- "tmp": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz",
- "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=",
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
"dev": true,
"requires": {
- "os-tmpdir": "1.0.2"
+ "has-flag": "2.0.0"
}
}
}
},
- "karma-typescript-es6-transform": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/karma-typescript-es6-transform/-/karma-typescript-es6-transform-1.0.2.tgz",
- "integrity": "sha1-uIuXd+dFDPDaySsBRt0u36mMbTA=",
+ "jest-validate": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz",
+ "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==",
"dev": true,
"requires": {
- "acorn": "4.0.13",
- "babel-core": "6.26.0",
- "babel-preset-es2015": "6.24.1",
- "log4js": "1.1.1",
- "magic-string": "0.19.1"
+ "chalk": "2.3.0",
+ "jest-get-type": "21.2.0",
+ "leven": "2.1.0",
+ "pretty-format": "21.2.1"
},
"dependencies": {
- "log4js": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-1.1.1.tgz",
- "integrity": "sha1-wh0px2BAieTyVYM+f5SzRh3h/0M=",
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"dev": true,
"requires": {
- "debug": "2.6.9",
- "semver": "5.3.0",
- "streamroller": "0.4.1"
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
}
}
}
},
- "kew": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
- "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
},
+ "js-yaml": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
+ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.9",
+ "esprima": "4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "jsdom": {
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz",
+ "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=",
+ "dev": true,
+ "requires": {
+ "abab": "1.0.4",
+ "acorn": "4.0.13",
+ "acorn-globals": "3.1.0",
+ "array-equal": "1.0.0",
+ "content-type-parser": "1.0.2",
+ "cssom": "0.3.2",
+ "cssstyle": "0.2.37",
+ "escodegen": "1.9.0",
+ "html-encoding-sniffer": "1.0.2",
+ "nwmatcher": "1.4.3",
+ "parse5": "1.5.1",
+ "request": "2.83.0",
+ "sax": "1.2.4",
+ "symbol-tree": "3.2.2",
+ "tough-cookie": "2.3.3",
+ "webidl-conversions": "4.0.2",
+ "whatwg-encoding": "1.0.3",
+ "whatwg-url": "4.8.0",
+ "xml-name-validator": "2.0.1"
+ }
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ },
+ "json-loader": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
+ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
+ "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
+ "dev": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@@ -4148,21 +5368,39 @@
"is-buffer": "1.1.6"
}
},
- "klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "labeled-stream-splicer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz",
+ "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11"
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "stream-splicer": "2.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ }
+ }
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true,
+ "requires": {
+ "package-json": "4.0.1"
}
},
"lazy-cache": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
"integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
- "dev": true,
- "optional": true
+ "dev": true
},
"lcid": {
"version": "1.0.0",
@@ -4173,6 +5411,12 @@
"invert-kv": "1.0.0"
}
},
+ "leven": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
+ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+ "dev": true
+ },
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
@@ -4183,6 +5427,15 @@
"type-check": "0.3.2"
}
},
+ "lexical-scope": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
+ "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=",
+ "dev": true,
+ "requires": {
+ "astw": "2.2.0"
+ }
+ },
"liftoff": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz",
@@ -4211,6 +5464,42 @@
"pify": "2.3.0",
"pinkie-promise": "2.0.1",
"strip-bom": "2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "loader-runner": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
+ "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true,
+ "requires": {
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1",
+ "object-assign": "4.1.1"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
}
},
"lodash": {
@@ -4219,6 +5508,16 @@
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
"dev": true
},
+ "lodash._baseassign": {
+ "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"
+ }
+ },
"lodash._basecopy": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
@@ -4237,6 +5536,23 @@
"integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
"dev": true
},
+ "lodash._bindcallback": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
+ "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",
+ "lodash.restparam": "3.6.1"
+ }
+ },
"lodash._getnative": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
@@ -4273,6 +5589,27 @@
"integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
"dev": true
},
+ "lodash.assign": {
+ "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",
+ "lodash.keys": "3.1.2"
+ }
+ },
+ "lodash.defaults": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz",
+ "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=",
+ "dev": true,
+ "requires": {
+ "lodash.assign": "3.2.0",
+ "lodash.restparam": "3.6.1"
+ }
+ },
"lodash.escape": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
@@ -4360,48 +5697,6 @@
"lodash._reinterpolate": "3.0.0"
}
},
- "log4js": {
- "version": "0.6.38",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz",
- "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
- "dev": true,
- "requires": {
- "readable-stream": "1.0.34",
- "semver": "4.3.6"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "semver": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
- "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
- "dev": true
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
- }
- },
"longest": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
@@ -4442,6 +5737,12 @@
"lower-case": "1.1.4"
}
},
+ "lowercase-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+ "dev": true
+ },
"lru-cache": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
@@ -4452,13 +5753,28 @@
"yallist": "2.1.2"
}
},
- "magic-string": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz",
- "integrity": "sha1-FNdoATyvLsj96hakmvgvw3fnUgE=",
+ "make-dir": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz",
+ "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==",
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "make-error": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz",
+ "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=",
+ "dev": true
+ },
+ "makeerror": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
"dev": true,
"requires": {
- "vlq": "0.2.3"
+ "tmpl": "1.0.4"
}
},
"map-cache": {
@@ -4480,9 +5796,9 @@
"dev": true
},
"marked": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz",
- "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=",
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.7.tgz",
+ "integrity": "sha512-zBEP4qO1YQp5aXHt8S5wTiOv9i2X74V/LQL0zhUNvVaklt6Ywa6lChxIvS+ibYlCGgADwKwZFhjC3+XfpsvQvQ==",
"dev": true
},
"md5.js": {
@@ -4507,11 +5823,24 @@
}
}
},
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "dev": true
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.1.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "0.1.4",
+ "readable-stream": "2.3.3"
+ }
},
"meow": {
"version": "3.7.0",
@@ -4531,6 +5860,12 @@
"trim-newlines": "1.0.0"
}
},
+ "merge": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz",
+ "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=",
+ "dev": true
+ },
"micromatch": {
"version": "2.3.11",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
@@ -4562,12 +5897,6 @@
"brorand": "1.1.0"
}
},
- "mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "dev": true
- },
"mime-db": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
@@ -4583,6 +5912,12 @@
"mime-db": "1.30.0"
}
},
+ "mimic-fn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
+ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
+ "dev": true
+ },
"minimalistic-assert": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
@@ -4610,6 +5945,24 @@
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
+ "mississippi": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz",
+ "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.5.2",
+ "duplexify": "3.5.1",
+ "end-of-stream": "1.4.0",
+ "flush-write-stream": "1.0.2",
+ "from2": "2.3.0",
+ "parallel-transform": "1.1.0",
+ "pump": "1.0.3",
+ "pumpify": "1.3.5",
+ "stream-each": "1.2.2",
+ "through2": "2.0.3"
+ }
+ },
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
@@ -4642,6 +5995,43 @@
"integrity": "sha1-4rbN65zhn5kxelNyLz2/XfXqqrI=",
"dev": true
},
+ "module-deps": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
+ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "1.3.1",
+ "browser-resolve": "1.11.2",
+ "cached-path-relative": "1.0.1",
+ "concat-stream": "1.5.2",
+ "defined": "1.0.0",
+ "detective": "4.7.0",
+ "duplexer2": "0.1.4",
+ "inherits": "2.0.3",
+ "parents": "1.0.1",
+ "readable-stream": "2.3.3",
+ "resolve": "1.5.0",
+ "stream-combiner2": "1.1.1",
+ "subarg": "1.0.0",
+ "through2": "2.0.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "copy-concurrently": "1.0.5",
+ "fs-write-stream-atomic": "1.0.10",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "run-queue": "1.0.3"
+ }
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -4655,18 +6045,53 @@
"dev": true,
"requires": {
"duplexer2": "0.0.2"
+ },
+ "dependencies": {
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
}
},
"natives": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz",
- "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz",
+ "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==",
"dev": true
},
- "negotiator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"no-case": {
@@ -4684,19 +6109,102 @@
"integrity": "sha1-iXNhjXJ9pVJqgwtH0HwNgD4KFcY=",
"dev": true
},
- "node-version": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.0.tgz",
- "integrity": "sha512-t1V2RFiaTavaW3jtQO0A2nok6k7/Gghuvx2rjvICuT0B0dYaObBQ4U0xHL+ZTPFZodt1LMYG2Vi2nypfz4/AJg==",
+ "node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
"dev": true
},
+ "node-libs-browser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
+ "dev": true,
+ "requires": {
+ "assert": "1.4.1",
+ "browserify-zlib": "0.2.0",
+ "buffer": "4.9.1",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
+ "crypto-browserify": "3.12.0",
+ "domain-browser": "1.1.7",
+ "events": "1.1.1",
+ "https-browserify": "1.0.0",
+ "os-browserify": "0.3.0",
+ "path-browserify": "0.0.0",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.3.3",
+ "stream-browserify": "2.0.1",
+ "stream-http": "2.7.2",
+ "string_decoder": "1.0.3",
+ "timers-browserify": "2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "0.11.0",
+ "util": "0.10.3",
+ "vm-browserify": "0.0.4"
+ },
+ "dependencies": {
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "1.2.1",
+ "ieee754": "1.1.8",
+ "isarray": "1.0.0"
+ }
+ },
+ "timers-browserify": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz",
+ "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "1.0.5"
+ }
+ }
+ }
+ },
+ "node-notifier": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz",
+ "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=",
+ "dev": true,
+ "requires": {
+ "growly": "1.3.0",
+ "semver": "5.4.1",
+ "shellwords": "0.1.1",
+ "which": "1.3.0"
+ }
+ },
+ "nodemon": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.12.1.tgz",
+ "integrity": "sha1-mWpW3EnZ8Wu/G3ik3gjxNjSzh40=",
+ "dev": true,
+ "requires": {
+ "chokidar": "1.7.0",
+ "debug": "2.6.9",
+ "es6-promise": "3.3.1",
+ "ignore-by-default": "1.0.1",
+ "lodash.defaults": "3.1.2",
+ "minimatch": "3.0.4",
+ "ps-tree": "1.1.0",
+ "touch": "3.1.0",
+ "undefsafe": "0.0.3",
+ "update-notifier": "2.3.0"
+ }
+ },
"nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
"dev": true,
"requires": {
- "abbrev": "1.0.9"
+ "abbrev": "1.1.1"
}
},
"normalize-package-data": {
@@ -4707,7 +6215,7 @@
"requires": {
"hosted-git-info": "2.5.0",
"is-builtin-module": "1.0.0",
- "semver": "5.3.0",
+ "semver": "5.4.1",
"validate-npm-package-license": "3.0.1"
}
},
@@ -4720,6 +6228,15 @@
"remove-trailing-separator": "1.1.0"
}
},
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
@@ -4737,6 +6254,12 @@
"yargs": "3.32.0"
},
"dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
"cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
@@ -4748,6 +6271,26 @@
"wrap-ansi": "2.1.0"
}
},
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "dev": true,
+ "requires": {
+ "lcid": "1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
"window-size": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
@@ -4771,6 +6314,12 @@
}
}
},
+ "nwmatcher": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz",
+ "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==",
+ "dev": true
+ },
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
@@ -4783,12 +6332,6 @@
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
- "object-component": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
- "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
- "dev": true
- },
"object.defaults": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
@@ -4796,7 +6339,7 @@
"dev": true,
"requires": {
"array-each": "1.0.1",
- "array-slice": "1.0.0",
+ "array-slice": "1.1.0",
"for-own": "1.0.0",
"isobject": "3.0.1"
},
@@ -4851,15 +6394,6 @@
"integrity": "sha1-jXoVvmy4Zw34pJDMa+EqTwXqgvQ=",
"dev": true
},
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dev": true,
- "requires": {
- "ee-first": "1.1.1"
- }
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -4909,12 +6443,6 @@
}
}
},
- "options": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
- "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
- "dev": true
- },
"orchestrator": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
@@ -4924,6 +6452,26 @@
"end-of-stream": "0.1.5",
"sequencify": "0.0.7",
"stream-consume": "0.1.0"
+ },
+ "dependencies": {
+ "end-of-stream": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
+ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
+ "dev": true,
+ "requires": {
+ "once": "1.3.3"
+ }
+ },
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ }
}
},
"ordered-read-streams": {
@@ -4944,29 +6492,60 @@
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true
},
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "dev": true,
+ "requires": {
+ "execa": "0.7.0",
+ "lcid": "1.0.0",
+ "mem": "1.1.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-cancelable": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
+ "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
+ "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
+ "dev": true
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"dev": true,
"requires": {
- "lcid": "1.0.0"
+ "p-limit": "1.1.0"
}
},
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "pad": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/pad/-/pad-1.2.1.tgz",
- "integrity": "sha512-cx/l/K+9UjGXJmoYolvP0l3cEUyB9BUdUL3wj3uwskIiApboLsinvsXxU9nSNg9Luz2ZyH0zzJNbqgLSNtfIDw==",
+ "package-json": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"requires": {
- "coffee-script": "1.12.7",
- "wcwidth": "1.0.1"
+ "got": "6.7.1",
+ "registry-auth-token": "3.3.1",
+ "registry-url": "3.1.0",
+ "semver": "5.4.1"
}
},
"pad-right": {
@@ -4984,6 +6563,17 @@
"integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
"dev": true
},
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "dev": true,
+ "requires": {
+ "cyclist": "0.2.2",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ }
+ },
"param-case": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
@@ -4993,6 +6583,15 @@
"no-case": "2.3.2"
}
},
+ "parents": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
+ "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
+ "dev": true,
+ "requires": {
+ "path-platform": "0.11.15"
+ }
+ },
"parse-asn1": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
@@ -5050,37 +6649,10 @@
"integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
"dev": true
},
- "parsejson": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
- "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
- "dev": true,
- "requires": {
- "better-assert": "1.0.2"
- }
- },
- "parseqs": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
- "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
- "dev": true,
- "requires": {
- "better-assert": "1.0.2"
- }
- },
- "parseuri": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
- "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
- "dev": true,
- "requires": {
- "better-assert": "1.0.2"
- }
- },
- "parseurl": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "parse5": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
+ "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=",
"dev": true
},
"pascal-case": {
@@ -5109,13 +6681,10 @@
}
},
"path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "2.0.1"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
},
"path-is-absolute": {
"version": "1.0.1",
@@ -5123,12 +6692,30 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
"path-parse": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
"dev": true
},
+ "path-platform": {
+ "version": "0.11.15",
+ "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
+ "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
+ "dev": true
+ },
"path-root": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
@@ -5153,6 +6740,23 @@
"graceful-fs": "4.1.11",
"pify": "2.3.0",
"pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
}
},
"pbkdf2": {
@@ -5168,52 +6772,16 @@
"sha.js": "2.4.9"
}
},
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
- "dev": true
- },
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
- "phantomjs-prebuilt": {
- "version": "2.1.16",
- "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
- "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
- "dev": true,
- "requires": {
- "es6-promise": "4.1.1",
- "extract-zip": "1.6.6",
- "fs-extra": "1.0.0",
- "hasha": "2.2.0",
- "kew": "0.7.0",
- "progress": "1.1.8",
- "request": "2.83.0",
- "request-progress": "2.0.1",
- "which": "1.3.0"
- },
- "dependencies": {
- "fs-extra": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
- "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "2.4.0",
- "klaw": "1.3.1"
- }
- }
- }
- },
"pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
},
"pinkie": {
@@ -5231,18 +6799,60 @@
"pinkie": "2.0.4"
}
},
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0"
+ }
+ },
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
"preserve": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
"integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
"dev": true
},
+ "pretty-format": {
+ "version": "21.2.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz",
+ "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0",
+ "ansi-styles": "3.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "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.1"
+ }
+ }
+ }
+ },
"pretty-hrtime": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
@@ -5267,18 +6877,27 @@
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
"dev": true
},
- "progress": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
- "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
- "promise-polyfill": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.0.2.tgz",
- "integrity": "sha1-2chtPcTcLfkBboiUbe/Wm0m0EWI=",
+ "prr": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
+ "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=",
"dev": true
},
+ "ps-tree": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz",
+ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.3.4"
+ }
+ },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -5298,6 +6917,27 @@
"randombytes": "2.0.5"
}
},
+ "pump": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "once": "1.4.0"
+ }
+ },
+ "pumpify": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz",
+ "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=",
+ "dev": true,
+ "requires": {
+ "duplexify": "3.5.1",
+ "inherits": "2.0.3",
+ "pump": "1.0.3"
+ }
+ },
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@@ -5305,15 +6945,9 @@
"dev": true
},
"q": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
- "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=",
- "dev": true
- },
- "qjobs": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz",
- "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
"dev": true
},
"qs": {
@@ -5334,15 +6968,6 @@
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
"dev": true
},
- "queue": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/queue/-/queue-4.2.1.tgz",
- "integrity": "sha1-UxjtiiJ6lzTmv+6ySgV3gpInUds=",
- "dev": true,
- "requires": {
- "inherits": "2.0.3"
- }
- },
"randomatic": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
@@ -5403,22 +7028,25 @@
"safe-buffer": "5.1.1"
}
},
- "range-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
- "dev": true
+ "rc": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
+ "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
+ "dev": true,
+ "requires": {
+ "deep-extend": "0.4.2",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ }
},
- "raw-body": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
- "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "read-only-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
+ "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
"dev": true,
"requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "unpipe": "1.0.0"
+ "readable-stream": "2.3.3"
}
},
"read-pkg": {
@@ -5440,6 +7068,27 @@
"requires": {
"find-up": "1.1.2",
"read-pkg": "1.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ }
}
},
"readable-stream": {
@@ -5501,9 +7150,9 @@
"dev": true
},
"regenerator-runtime": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
- "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==",
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
"dev": true
},
"regenerator-transform": {
@@ -5522,145 +7171,60 @@
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
"dev": true,
- "requires": {
- "is-equal-shallow": "0.1.3"
- }
- },
- "regexpu-core": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
- "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
- "dev": true,
- "requires": {
- "regenerate": "1.3.3",
- "regjsgen": "0.2.0",
- "regjsparser": "0.1.5"
- }
- },
- "regjsgen": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
- "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
- "dev": true
- },
- "regjsparser": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
- "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
- "dev": true,
- "requires": {
- "jsesc": "0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
- "dev": true
- }
- }
- },
- "remap-istanbul": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.8.4.tgz",
- "integrity": "sha1-tL/f28kO+mNemiix9KEW4iyMJpc=",
- "dev": true,
- "requires": {
- "amdefine": "1.0.1",
- "gulp-util": "3.0.7",
- "istanbul": "0.4.5",
- "source-map": "0.5.7",
- "through2": "2.0.1"
- },
- "dependencies": {
- "gulp-util": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz",
- "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=",
- "dev": true,
- "requires": {
- "array-differ": "1.0.0",
- "array-uniq": "1.0.3",
- "beeper": "1.1.1",
- "chalk": "1.1.3",
- "dateformat": "1.0.12",
- "fancy-log": "1.3.0",
- "gulplog": "1.0.0",
- "has-gulplog": "0.1.0",
- "lodash._reescape": "3.0.0",
- "lodash._reevaluate": "3.0.0",
- "lodash._reinterpolate": "3.0.0",
- "lodash.template": "3.6.2",
- "minimist": "1.2.0",
- "multipipe": "0.1.2",
- "object-assign": "3.0.0",
- "replace-ext": "0.0.1",
- "through2": "2.0.1",
- "vinyl": "0.5.3"
- }
- },
- "lodash.template": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
- "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
- "dev": true,
- "requires": {
- "lodash._basecopy": "3.0.1",
- "lodash._basetostring": "3.0.1",
- "lodash._basevalues": "3.0.0",
- "lodash._isiterateecall": "3.0.9",
- "lodash._reinterpolate": "3.0.0",
- "lodash.escape": "3.2.0",
- "lodash.keys": "3.1.2",
- "lodash.restparam": "3.6.1",
- "lodash.templatesettings": "3.1.1"
- }
- },
- "lodash.templatesettings": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
- "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
- "dev": true,
- "requires": {
- "lodash._reinterpolate": "3.0.0",
- "lodash.escape": "3.2.0"
- }
- },
- "object-assign": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
- "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
- "util-deprecate": "1.0.2"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "regexpu-core": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
+ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
+ "dev": true,
+ "requires": {
+ "regenerate": "1.3.3",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz",
+ "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.2",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.2"
+ }
+ },
+ "regjsgen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "dev": true,
+ "requires": {
+ "jsesc": "0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
- },
- "through2": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz",
- "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=",
- "dev": true,
- "requires": {
- "readable-stream": "2.0.6",
- "xtend": "4.0.1"
- }
}
}
},
@@ -5736,29 +7300,18 @@
"tough-cookie": "2.3.3",
"tunnel-agent": "0.6.0",
"uuid": "3.1.0"
- },
- "dependencies": {
- "uuid": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
- "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
- "dev": true
- }
}
},
- "request-progress": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
- "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
- "dev": true,
- "requires": {
- "throttleit": "1.0.0"
- }
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
},
- "requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
},
"resolve": {
@@ -5785,7 +7338,6 @@
"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
"integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
"dev": true,
- "optional": true,
"requires": {
"align-text": "0.1.4"
}
@@ -5797,9 +7349,9 @@
"dev": true
},
"rimraf": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
- "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
"glob": "7.1.2"
@@ -5815,13 +7367,22 @@
"inherits": "2.0.3"
}
},
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0"
+ }
+ },
"rxjs": {
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz",
"integrity": "sha512-oRYoIKWBU3Ic37fLA5VJu31VqQO4bWubRntcHSJ+cwaDQBwdnZ9x4zmhJfm/nFQ2E82/I4loSioHnACamrKGgA==",
"dev": true,
"requires": {
- "symbol-observable": "1.0.4"
+ "symbol-observable": "1.1.0"
}
},
"safe-buffer": {
@@ -5830,12 +7391,51 @@
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true
},
+ "sane": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz",
+ "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==",
+ "dev": true,
+ "requires": {
+ "anymatch": "1.3.2",
+ "exec-sh": "0.2.1",
+ "fb-watchman": "2.0.0",
+ "minimatch": "3.0.4",
+ "minimist": "1.2.0",
+ "walker": "1.0.7",
+ "watch": "0.18.0"
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
+ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.1"
+ }
+ },
"semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
"dev": true
},
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "requires": {
+ "semver": "5.4.1"
+ }
+ },
"sentence-case": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz",
@@ -5852,6 +7452,12 @@
"integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=",
"dev": true
},
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
"set-immediate-shim": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
@@ -5864,12 +7470,6 @@
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
"dev": true
},
- "setprototypeof": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
- "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
- "dev": true
- },
"sha.js": {
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz",
@@ -5880,6 +7480,43 @@
"safe-buffer": "5.1.1"
}
},
+ "shasum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
+ "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
+ "dev": true,
+ "requires": {
+ "json-stable-stringify": "0.0.1",
+ "sha.js": "2.4.9"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "0.0.1",
+ "array-map": "0.0.0",
+ "array-reduce": "0.0.0",
+ "jsonify": "0.0.0"
+ }
+ },
"shelljs": {
"version": "0.7.8",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
@@ -5887,10 +7524,16 @@
"dev": true,
"requires": {
"glob": "7.1.2",
- "interpret": "1.0.4",
+ "interpret": "1.1.0",
"rechoir": "0.6.2"
}
},
+ "shellwords": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+ "dev": true
+ },
"sigmund": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
@@ -5927,147 +7570,11 @@
"hoek": "4.2.0"
}
},
- "socket.io": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz",
- "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=",
- "dev": true,
- "requires": {
- "debug": "2.3.3",
- "engine.io": "1.8.3",
- "has-binary": "0.1.7",
- "object-assign": "4.1.0",
- "socket.io-adapter": "0.5.0",
- "socket.io-client": "1.7.3",
- "socket.io-parser": "2.3.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
- "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
- "dev": true
- }
- }
- },
- "socket.io-adapter": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
- "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
- "dev": true,
- "requires": {
- "debug": "2.3.3",
- "socket.io-parser": "2.3.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
- }
- },
- "socket.io-client": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz",
- "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=",
- "dev": true,
- "requires": {
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "1.2.1",
- "debug": "2.3.3",
- "engine.io-client": "1.8.3",
- "has-binary": "0.1.7",
- "indexof": "0.0.1",
- "object-component": "0.0.3",
- "parseuri": "0.0.5",
- "socket.io-parser": "2.3.1",
- "to-array": "0.1.4"
- },
- "dependencies": {
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
- "dev": true
- },
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
- }
- },
- "socket.io-parser": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
- "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
- "dev": true,
- "requires": {
- "component-emitter": "1.1.2",
- "debug": "2.2.0",
- "isarray": "0.0.1",
- "json3": "3.3.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
- "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
- "dev": true,
- "requires": {
- "ms": "0.7.1"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "ms": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
- "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
- "dev": true
- }
- }
+ "source-list-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
+ "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
+ "dev": true
},
"source-map": {
"version": "0.5.7",
@@ -6118,9 +7625,9 @@
"dev": true
},
"split": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
- "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
"dev": true,
"requires": {
"through": "2.3.8"
@@ -6157,18 +7664,21 @@
"tweetnacl": "0.14.5"
}
},
+ "ssri": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz",
+ "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
"dev": true
},
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
- "dev": true
- },
"stream-browserify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
@@ -6179,12 +7689,41 @@
"readable-stream": "2.3.3"
}
},
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1"
+ }
+ },
+ "stream-combiner2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "0.1.4",
+ "readable-stream": "2.3.3"
+ }
+ },
"stream-consume": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz",
"integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=",
"dev": true
},
+ "stream-each": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz",
+ "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "stream-shift": "1.0.0"
+ }
+ },
"stream-http": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
@@ -6198,47 +7737,100 @@
"xtend": "4.0.1"
}
},
- "streamroller": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.4.1.tgz",
- "integrity": "sha1-1DW9WXQ3Or2b2QaDWVEwhRBswF8=",
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "stream-splicer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
+ "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
"dev": true,
"requires": {
- "date-format": "0.0.0",
- "debug": "0.7.4",
- "mkdirp": "0.5.1",
- "readable-stream": "1.1.14"
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "string-length": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
+ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
+ "dev": true,
+ "requires": {
+ "astral-regex": "1.0.0",
+ "strip-ansi": "4.0.0"
},
"dependencies": {
- "debug": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
- "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "strip-ansi": {
+ "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"
+ }
+ }
+ }
+ },
+ "string-replace-webpack-plugin": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/string-replace-webpack-plugin/-/string-replace-webpack-plugin-0.1.3.tgz",
+ "integrity": "sha1-c8ZX51nWbP6Arh4M8JGqJW0OcVw=",
+ "dev": true,
+ "requires": {
+ "async": "0.2.10",
+ "css-loader": "0.9.1",
+ "file-loader": "0.8.5",
+ "loader-utils": "0.2.17",
+ "style-loader": "0.8.3"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ }
+ }
+ },
+ "string-width": {
+ "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"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "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=",
"dev": true
},
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "ansi-regex": "3.0.0"
}
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
}
}
},
@@ -6251,17 +7843,6 @@
"safe-buffer": "5.1.1"
}
},
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- },
"stringmap": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz",
@@ -6292,6 +7873,12 @@
"is-utf8": "0.2.1"
}
},
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
"strip-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
@@ -6301,6 +7888,31 @@
"get-stdin": "4.0.1"
}
},
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "style-loader": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.8.3.tgz",
+ "integrity": "sha1-9Pkut9tjdodI8VBlzWcA9aHIU1c=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "loader-utils": "0.2.17"
+ }
+ },
+ "subarg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
+ "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
+ "dev": true,
+ "requires": {
+ "minimist": "1.2.0"
+ }
+ },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -6318,9 +7930,30 @@
}
},
"symbol-observable": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz",
- "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz",
+ "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw==",
+ "dev": true
+ },
+ "symbol-tree": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
+ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
+ "dev": true
+ },
+ "syntax-error": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz",
+ "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=",
+ "dev": true,
+ "requires": {
+ "acorn": "4.0.13"
+ }
+ },
+ "tapable": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz",
+ "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=",
"dev": true
},
"tempfile": {
@@ -6331,6 +7964,36 @@
"requires": {
"os-tmpdir": "1.0.2",
"uuid": "2.0.3"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ }
+ }
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "requires": {
+ "execa": "0.7.0"
+ }
+ },
+ "test-exclude": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz",
+ "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==",
+ "dev": true,
+ "requires": {
+ "arrify": "1.0.1",
+ "micromatch": "2.3.11",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "require-main-filename": "1.0.1"
}
},
"text-extensions": {
@@ -6345,10 +8008,10 @@
"integrity": "sha1-ZUhjk+4fK7A5pgy7oFsLaL2VAdI=",
"dev": true
},
- "throttleit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
- "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
+ "throat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
+ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
"dev": true
},
"through": {
@@ -6382,13 +8045,19 @@
"integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
"dev": true
},
+ "timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "dev": true
+ },
"timers-browserify": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz",
- "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
+ "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
"dev": true,
"requires": {
- "setimmediate": "1.0.5"
+ "process": "0.11.10"
}
},
"title-case": {
@@ -6401,19 +8070,10 @@
"upper-case": "1.1.3"
}
},
- "tmp": {
- "version": "0.0.31",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
- "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
- "dev": true,
- "requires": {
- "os-tmpdir": "1.0.2"
- }
- },
- "to-array": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
- "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+ "tmpl": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
+ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
"dev": true
},
"to-arraybuffer": {
@@ -6428,6 +8088,15 @@
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true
},
+ "touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+ "dev": true,
+ "requires": {
+ "nopt": "1.0.10"
+ }
+ },
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
@@ -6437,6 +8106,12 @@
"punycode": "1.4.1"
}
},
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "dev": true
+ },
"trim-newlines": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
@@ -6455,10 +8130,171 @@
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
"dev": true
},
+ "ts-jest": {
+ "version": "21.1.4",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-21.1.4.tgz",
+ "integrity": "sha512-dq5JvwHnxwsQa36dNGOQEpHRcJAZubOvgDfKIQww1L4PUzYTTZOFL2VreyhiUfkOVDir77p3nTQSrpvCv1iFTg==",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.0",
+ "babel-plugin-istanbul": "4.1.5",
+ "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
+ "babel-preset-jest": "21.2.0",
+ "fs-extra": "4.0.3",
+ "jest-config": "21.2.1",
+ "jest-util": "21.2.1",
+ "pkg-dir": "2.0.0",
+ "source-map-support": "0.5.0",
+ "yargs": "10.0.3"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz",
+ "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.6.1"
+ }
+ },
+ "yargs": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz",
+ "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",
+ "dev": true,
+ "requires": {
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "find-up": "2.1.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "8.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz",
+ "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0"
+ }
+ }
+ }
+ },
+ "ts-node": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz",
+ "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=",
+ "dev": true,
+ "requires": {
+ "arrify": "1.0.1",
+ "chalk": "2.3.0",
+ "diff": "3.4.0",
+ "make-error": "1.3.0",
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.4.18",
+ "tsconfig": "6.0.0",
+ "v8flags": "3.0.1",
+ "yn": "2.0.0"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "tsconfig": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz",
+ "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=",
+ "dev": true,
+ "requires": {
+ "strip-bom": "3.0.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
"tsickle": {
- "version": "0.21.6",
- "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz",
- "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=",
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.25.5.tgz",
+ "integrity": "sha512-CgOT/1WqOKtE1fyvqB+kTJ7bizE33xj1TyUIzGbxJBGCbQmknCrZbb35DtxMiK6pJo4CrPyoS8iGFddfHKtSNA==",
"dev": true,
"requires": {
"minimist": "1.2.0",
@@ -6468,81 +8304,96 @@
}
},
"tslib": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz",
- "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.1.tgz",
+ "integrity": "sha1-aUavLR1lGnsYY7Ux1uWvpBqkTqw=",
"dev": true
},
"tslint": {
- "version": "3.15.1",
- "resolved": "https://registry.npmjs.org/tslint/-/tslint-3.15.1.tgz",
- "integrity": "sha1-2hZcqT2P3CwIa1EWXuG6y0jJjqU=",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.8.0.tgz",
+ "integrity": "sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=",
"dev": true,
"requires": {
- "colors": "1.1.2",
- "diff": "2.2.3",
- "findup-sync": "0.3.0",
+ "babel-code-frame": "6.26.0",
+ "builtin-modules": "1.1.1",
+ "chalk": "2.3.0",
+ "commander": "2.12.2",
+ "diff": "3.4.0",
"glob": "7.1.2",
- "optimist": "0.6.1",
+ "minimatch": "3.0.4",
"resolve": "1.5.0",
- "underscore.string": "3.3.4"
+ "semver": "5.4.1",
+ "tslib": "1.8.1",
+ "tsutils": "2.13.0"
},
"dependencies": {
- "colors": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
- "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
- "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.1"
+ }
},
- "diff": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz",
- "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=",
- "dev": true
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
},
- "findup-sync": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
- "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
"dev": true,
"requires": {
- "glob": "5.0.15"
- },
- "dependencies": {
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- }
+ "has-flag": "2.0.0"
}
}
}
},
"tslint-eslint-rules": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-1.6.1.tgz",
- "integrity": "sha1-OekvMZVq0qZsAGHDUfqWwICK4Pg=",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-4.1.1.tgz",
+ "integrity": "sha1-fDDniC8mvCdr/5HSOEl1xp2viLo=",
"dev": true,
"requires": {
"doctrine": "0.7.2",
- "tslint": "3.15.1"
+ "tslib": "1.8.1",
+ "tsutils": "1.9.1"
+ },
+ "dependencies": {
+ "tsutils": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz",
+ "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=",
+ "dev": true
+ }
}
},
"tslint-ionic-rules": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/tslint-ionic-rules/-/tslint-ionic-rules-0.0.8.tgz",
- "integrity": "sha1-au1vjjzUBlIzAdHW0Db38DbdKAk=",
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/tslint-ionic-rules/-/tslint-ionic-rules-0.0.11.tgz",
+ "integrity": "sha512-EP4/Vgv0Zl66T8dqZe6LV3g+aWpGCSBxHKfScbiFh3kQKE3cikGEEYCLu1vR5yhjvm5DveWFUobwEFiwlts0hw==",
+ "dev": true,
+ "requires": {
+ "tslint-eslint-rules": "4.1.1"
+ }
+ },
+ "tsutils": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.13.0.tgz",
+ "integrity": "sha512-FuWzNJbMsp3gcZMbI3b5DomhW4Ia41vMxjN63nKWI0t7f+I3UmHfRl0TrXJTwI2LUduDG+eR1Mksp3pvtlyCFQ==",
"dev": true,
"requires": {
- "tslint-eslint-rules": "1.6.1"
+ "tslib": "1.8.1"
}
},
"tty-browserify": {
@@ -6576,16 +8427,6 @@
"prelude-ls": "1.1.2"
}
},
- "type-is": {
- "version": "1.6.15",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
- "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
- "dev": true,
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "2.1.17"
- }
- },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -6593,9 +8434,9 @@
"dev": true
},
"typescript": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz",
- "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz",
+ "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=",
"dev": true
},
"uglify-js": {
@@ -6603,11 +8444,24 @@
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
"integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
"dev": true,
- "optional": true,
"requires": {
"source-map": "0.5.7",
"uglify-to-browserify": "1.0.2",
"yargs": "3.10.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "requires": {
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0"
+ }
+ }
}
},
"uglify-to-browserify": {
@@ -6617,10 +8471,43 @@
"dev": true,
"optional": true
},
- "ultron": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
- "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+ "uglifyjs-webpack-plugin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.2.tgz",
+ "integrity": "sha512-k07cmJTj+8vZMSc3BaQ9uW7qVl2MqDts4ti4KaNACXEcXSw2vQM2S8olSk/CODxvcSFGvUHzNSqA8JQlhgUJPw==",
+ "dev": true,
+ "requires": {
+ "cacache": "10.0.1",
+ "find-cache-dir": "1.0.0",
+ "schema-utils": "0.3.0",
+ "source-map": "0.6.1",
+ "uglify-es": "3.2.1",
+ "webpack-sources": "1.1.0",
+ "worker-farm": "1.5.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "uglify-es": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.1.tgz",
+ "integrity": "sha512-c+Fy4VuGvPmT7mj7vEPjRR/iNFuXuOAkufhCtCvTGX0Hr4gCM9YwCnLgHkxr1ngqSODQaDObU3g8SF8uE/tY1w==",
+ "dev": true,
+ "requires": {
+ "commander": "2.12.2",
+ "source-map": "0.6.1"
+ }
+ }
+ }
+ },
+ "umd": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz",
+ "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=",
"dev": true
},
"unc-path-regex": {
@@ -6629,6 +8516,12 @@
"integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
"dev": true
},
+ "undefsafe": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz",
+ "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=",
+ "dev": true
+ },
"underscore": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
@@ -6644,28 +8537,105 @@
"underscore": "1.6.0"
}
},
- "underscore.string": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
- "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
+ "unique-filename": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz",
+ "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
"dev": true,
"requires": {
- "sprintf-js": "1.0.3",
- "util-deprecate": "1.0.2"
+ "unique-slug": "2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
+ "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "0.1.4"
+ }
+ },
+ "unique-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
+ "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=",
+ "dev": true
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "1.0.0"
}
},
- "unique-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
- "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=",
+ "universalify": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
+ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+ "dev": true
+ },
+ "unminified-webpack-plugin": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/unminified-webpack-plugin/-/unminified-webpack-plugin-1.4.2.tgz",
+ "integrity": "sha512-SgkAaUABvs7xJUbp+UueNXEJ9WK+iCsMNxguMCYcyigZrWs6vFfoK2PTDwWKA8tslBTthC6A/O2oT4+OP6tTmw==",
"dev": true
},
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "unzip-response": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
"dev": true
},
+ "update-notifier": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz",
+ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=",
+ "dev": true,
+ "requires": {
+ "boxen": "1.3.0",
+ "chalk": "2.3.0",
+ "configstore": "3.1.1",
+ "import-lazy": "2.1.0",
+ "is-installed-globally": "0.1.0",
+ "is-npm": "1.0.0",
+ "latest-version": "3.1.0",
+ "semver-diff": "2.1.0",
+ "xdg-basedir": "3.0.0"
+ },
+ "dependencies": {
+ "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.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
"upper-case": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
@@ -6699,30 +8669,21 @@
}
}
},
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "1.0.4"
+ }
+ },
"user-home": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
"integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
"dev": true
},
- "useragent": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
- "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
- "dev": true,
- "requires": {
- "lru-cache": "2.2.4",
- "tmp": "0.0.31"
- },
- "dependencies": {
- "lru-cache": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
- "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
- "dev": true
- }
- }
- },
"util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
@@ -6746,25 +8707,19 @@
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "dev": true
- },
"uuid": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
- "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
"dev": true
},
"v8flags": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
- "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz",
+ "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=",
"dev": true,
"requires": {
- "user-home": "1.1.1"
+ "homedir-polyfill": "1.0.1"
}
},
"validate-npm-package-license": {
@@ -6833,7 +8788,7 @@
"integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
"dev": true,
"requires": {
- "natives": "1.1.0"
+ "natives": "1.1.1"
}
},
"isarray": {
@@ -6892,12 +8847,6 @@
}
}
},
- "vlq": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
- "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
- "dev": true
- },
"vm-browserify": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
@@ -6907,19 +8856,259 @@
"indexof": "0.0.1"
}
},
- "void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
- "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
+ "walker": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "dev": true,
+ "requires": {
+ "makeerror": "1.0.11"
+ }
+ },
+ "watch": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz",
+ "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=",
+ "dev": true,
+ "requires": {
+ "exec-sh": "0.2.1",
+ "minimist": "1.2.0"
+ }
+ },
+ "watchpack": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
+ "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=",
+ "dev": true,
+ "requires": {
+ "async": "2.6.0",
+ "chokidar": "1.7.0",
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
"dev": true
},
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "webpack": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz",
+ "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.2.1",
+ "acorn-dynamic-import": "2.0.2",
+ "ajv": "5.5.1",
+ "ajv-keywords": "2.1.1",
+ "async": "2.6.0",
+ "enhanced-resolve": "3.4.1",
+ "escope": "3.6.0",
+ "interpret": "1.1.0",
+ "json-loader": "0.5.7",
+ "json5": "0.5.1",
+ "loader-runner": "2.3.0",
+ "loader-utils": "1.1.0",
+ "memory-fs": "0.4.1",
+ "mkdirp": "0.5.1",
+ "node-libs-browser": "2.1.0",
+ "source-map": "0.5.7",
+ "supports-color": "4.5.0",
+ "tapable": "0.2.8",
+ "uglifyjs-webpack-plugin": "0.4.6",
+ "watchpack": "1.4.0",
+ "webpack-sources": "1.1.0",
+ "yargs": "8.0.2"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+ "dev": true,
+ "requires": {
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "2.3.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ },
+ "uglifyjs-webpack-plugin": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz",
+ "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7",
+ "uglify-js": "2.8.29",
+ "webpack-sources": "1.1.0"
+ }
+ },
+ "yargs": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
+ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "read-pkg-up": "2.0.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "7.0.0"
+ }
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz",
+ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "2.0.0",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "whatwg-encoding": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz",
+ "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.19"
+ }
+ },
+ "whatwg-url": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz",
+ "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=",
"dev": true,
"requires": {
- "defaults": "1.0.3"
+ "tr46": "0.0.3",
+ "webidl-conversions": "3.0.1"
+ },
+ "dependencies": {
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+ "dev": true
+ }
}
},
"which": {
@@ -6931,12 +9120,26 @@
"isexe": "2.0.0"
}
},
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "widest-line": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz",
+ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
"window-size": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
- "dev": true,
- "optional": true
+ "dev": true
},
"winston": {
"version": "2.4.0",
@@ -6972,6 +9175,16 @@
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
"dev": true
},
+ "worker-farm": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz",
+ "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==",
+ "dev": true,
+ "requires": {
+ "errno": "0.1.4",
+ "xtend": "4.0.1"
+ }
+ },
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
@@ -6980,6 +9193,19 @@
"requires": {
"string-width": "1.0.2",
"strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
}
},
"wrappy": {
@@ -6988,26 +9214,27 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
- "ws": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
- "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
+ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
"dev": true,
"requires": {
- "options": "0.0.6",
- "ultron": "1.0.2"
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
}
},
- "wtf-8": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
- "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
"dev": true
},
- "xmlhttprequest-ssl": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
- "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
+ "xml-name-validator": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
+ "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
"dev": true
},
"xtend": {
@@ -7029,46 +9256,133 @@
"dev": true
},
"yargs": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
+ "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
"dev": true,
- "optional": true,
"requires": {
- "camelcase": "1.2.1",
- "cliui": "2.1.0",
+ "camelcase": "4.1.0",
+ "cliui": "3.2.0",
"decamelize": "1.2.0",
- "window-size": "0.1.0"
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "read-pkg-up": "2.0.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "7.0.0"
},
"dependencies": {
"camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
"dev": true,
- "optional": true
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "2.3.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
}
}
},
- "yauzl": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
- "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "yargs-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
"dev": true,
"requires": {
- "fd-slicer": "1.0.1"
+ "camelcase": "4.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
}
},
- "yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
- "dev": true
- },
- "zone.js": {
- "version": "0.8.18",
- "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.18.tgz",
- "integrity": "sha512-knKOBQM0oea3/x9pdyDuDi7RhxDlJhOIkeixXSiTKWLgs4LpK37iBc+1HaHwzlciHUKT172CymJFKo8Xgh+44Q==",
+ "yn": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
+ "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
"dev": true
}
}
diff --git a/package.json b/package.json
index 3a3263f0b2..b774bce122 100644
--- a/package.json
+++ b/package.json
@@ -1,65 +1,82 @@
{
"name": "ionic-native",
- "version": "4.4.2",
+ "version": "5.0.0-beta.1",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"homepage": "https://ionicframework.com/",
"author": "Ionic Team (https://ionic.io)",
"license": "MIT",
+ "scripts": {
+ "test": "jest",
+ "test:watch": "jest --watch",
+ "build:core": "tsc -p tsconfig.core.json",
+ "build:esm": "ts-node -P scripts scripts/tasks/build-esm",
+ "build:es5": "ts-node -P scripts scripts/tasks/build-es5",
+ "build:ngx": "ts-node -P scripts scripts/tasks/build-ngx",
+ "build": "npm run build:core && npm run build:esm && npm run build:ngx && npm run build:es5",
+ "prebuild": "rm -rf dist",
+ "npmpub": "ts-node -P scripts scripts/tasks/publish",
+ "lint": "gulp lint",
+ "readmes": "gulp readmes",
+ "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
+ "postchangelog": "git commit -am \"chore(): update changelog\""
+ },
"devDependencies": {
- "@angular/compiler": "4.4.4",
- "@angular/compiler-cli": "4.4.4",
- "@angular/core": "4.4.4",
+ "@angular/common": "latest",
+ "@angular/compiler": "latest",
+ "@angular/compiler-cli": "latest",
+ "@angular/core": "latest",
"@types/cordova": "0.0.34",
- "@types/jasmine": "^2.6.3",
- "@types/node": "^8.0.50",
+ "@types/fs-extra": "^4.0.5",
+ "@types/jest": "21.1.5",
+ "@types/lodash": "4.14.85",
+ "@types/node": "8.0.47",
+ "@types/rimraf": "^2.0.2",
+ "@types/webpack": "^3.8.1",
+ "babel-core": "^6.26.0",
+ "babel-preset-env": "^1.6.1",
+ "babelify": "^8.0.0",
+ "browserify": "^14.5.0",
"canonical-path": "0.0.2",
- "child-process-promise": "2.2.1",
"conventional-changelog-cli": "1.3.4",
"cpr": "2.0.0",
"cz-conventional-changelog": "2.0.0",
"decamelize": "1.2.0",
"dgeni": "0.4.7",
"dgeni-packages": "0.16.10",
- "fs-extra": "2.0.0",
- "fs-extra-promise": "0.4.1",
+ "fs-extra": "^4.0.3",
+ "fs-extra-promise": "^1.0.1",
"gulp": "3.9.1",
"gulp-rename": "1.2.2",
- "gulp-replace": "0.5.4",
- "gulp-tslint": "6.1.2",
- "jasmine-core": "^2.6.1",
- "karma": "^1.7.0",
- "karma-cli": "^1.0.1",
- "karma-jasmine": "^1.1.0",
- "karma-phantomjs-launcher": "^1.0.4",
- "karma-typescript": "^3.0.1",
- "karma-typescript-es6-transform": "^1.0.0",
+ "gulp-replace": "0.6.1",
+ "gulp-tslint": "8.1.2",
+ "jest": "21.2.1",
"lodash": "4.17.4",
"minimist": "1.2.0",
- "node-html-encoder": "0.0.2",
- "q": "1.5.0",
- "queue": "4.2.1",
- "rimraf": "2.6.1",
+ "nodemon": "1.12.1",
+ "rimraf": "^2.6.2",
"rxjs": "5.5.2",
- "semver": "5.3.0",
- "tslint": "3.15.1",
- "tslint-ionic-rules": "0.0.8",
- "typescript": "~2.4.2",
- "zone.js": "0.8.18"
+ "string-replace-webpack-plugin": "^0.1.3",
+ "ts-jest": "21.1.4",
+ "ts-node": "3.3.0",
+ "tslint": "5.8.0",
+ "tslint-ionic-rules": "0.0.11",
+ "typescript": "^2.6.2",
+ "uglifyjs-webpack-plugin": "^1.1.2",
+ "unminified-webpack-plugin": "^1.4.2",
+ "webpack": "^3.9.1"
},
- "scripts": {
- "start": "npm run test:watch",
- "lint": "gulp lint",
- "build": "npm run clean && npm run lint && npm run build:core && npm run build:modules",
- "build:core": "ngc -p scripts/build/tsconfig-core.json",
- "build:modules": "node scripts/build/build.js",
- "clean": "rimraf dist .tmp",
- "shipit": "npm run build && gulp readmes && npm run npmpub",
- "npmpub": "node scripts/build/publish.js",
- "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
- "postchangelog": "git commit -am \"chore(): update changelog\"",
- "test": "karma start karma.conf.js --single-run",
- "test:watch": "karma start karma.conf.js",
- "readmes": "gulp readmes"
+ "jest": {
+ "transform": {
+ "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js"
+ },
+ "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(js?|ts?)$",
+ "moduleFileExtensions": [
+ "ts",
+ "tsx",
+ "js",
+ "jsx",
+ "json"
+ ]
},
"repository": {
"type": "git",
diff --git a/scripts/build/build.js b/scripts/build/build.js
deleted file mode 100644
index cae297b8ba..0000000000
--- a/scripts/build/build.js
+++ /dev/null
@@ -1,159 +0,0 @@
-"use strict";
-// Node module dependencies
-const fs = require('fs-extra-promise').useFs(require('fs-extra')),
- queue = require('queue'),
- path = require('path'),
- exec = require('child_process').exec;
-
-// Constants for the build process. Paths and JSON files templates
-const ROOT = path.resolve(path.join(__dirname, '../../')), // root ionic-native directory
- PLUGINS_PATH = path.resolve(ROOT, 'src/@ionic-native/plugins'), // path to plugins source files
- CORE_PACKAGE_JSON = require(path.resolve(__dirname, 'core-package.json')), // core package.json
- PLUGIN_PACKAGE_JSON = require(path.resolve(__dirname, 'plugin-package.json')), // plugin package.json template
- PLUGIN_TS_CONFIG = require(path.resolve(__dirname, 'tsconfig-plugin.json')), // plugin tsconfig template
- BUILD_TMP = path.resolve(ROOT, '.tmp'), // tmp directory path
- BUILD_DIST_ROOT = path.resolve(ROOT, 'dist/@ionic-native'), // dist directory root path
- BUILD_CORE_DIST = path.resolve(BUILD_DIST_ROOT, 'core'); // core dist directory path
-
-
-// dependency versions
-const ANGULAR_VERSION = '*',
- RXJS_VERSION = '^5.0.1',
- MIN_CORE_VERSION = '^4.2.0',
- IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
-
-// package dependencies
-const CORE_PEER_DEPS = {
- 'rxjs': RXJS_VERSION
-};
-
-const PLUGIN_PEER_DEPS = {
- '@ionic-native/core': MIN_CORE_VERSION,
- '@angular/core': ANGULAR_VERSION,
- 'rxjs': RXJS_VERSION
-};
-
-// set peer dependencies for all plugins
-PLUGIN_PACKAGE_JSON.peerDependencies = PLUGIN_PEER_DEPS;
-
-// Create tmp/dist directories
-console.log('Making new TMP directory');
-fs.mkdirpSync(BUILD_TMP);
-
-// Prepare and copy the core module's package.json
-console.log('Preparing core module package.json');
-CORE_PACKAGE_JSON.version = IONIC_NATIVE_VERSION;
-CORE_PACKAGE_JSON.peerDependencies = CORE_PEER_DEPS;
-fs.writeJsonSync(path.resolve(BUILD_CORE_DIST, 'package.json'), CORE_PACKAGE_JSON);
-
-
-// Fetch a list of the plugins
-const PLUGINS = fs.readdirSync(PLUGINS_PATH);
-
-// Build specific list of plugins to build from arguments, if any
-let pluginsToBuild = process.argv.slice(2);
-let ignoreErrors = false;
-let errors = [];
-
-const index = pluginsToBuild.indexOf('ignore-errors');
-if (index > -1) {
- ignoreErrors = true;
- pluginsToBuild.splice(index, 1);
- console.log('Build will continue even if errors were thrown. Errors will be printed when build finishes.');
-}
-
-if (!pluginsToBuild.length) {
- pluginsToBuild = PLUGINS;
-}
-
-// Create a queue to process tasks
-const QUEUE = queue({
- concurrency: require('os').cpus().length
-});
-
-
-// Function to process a single plugin
-const addPluginToQueue = pluginName => {
-
- QUEUE.push((callback) => {
-
- console.log(`Building plugin: ${pluginName}`);
-
- const PLUGIN_BUILD_DIR = path.resolve(BUILD_TMP, 'plugins', pluginName),
- PLUGIN_SRC_PATH = path.resolve(PLUGINS_PATH, pluginName, 'index.ts');
-
- let tsConfigPath;
-
- fs.mkdirpAsync(PLUGIN_BUILD_DIR) // create tmp build dir
- .then(() => fs.mkdirpAsync(path.resolve(BUILD_DIST_ROOT, pluginName))) // create dist dir
- .then(() => {
-
- // Write tsconfig.json
- const tsConfig = JSON.parse(JSON.stringify(PLUGIN_TS_CONFIG));
- tsConfig.files = [PLUGIN_SRC_PATH];
- // tsConfig.compilerOptions.paths['@ionic-native/core'] = [BUILD_CORE_DIST];
-
- tsConfigPath = path.resolve(PLUGIN_BUILD_DIR, 'tsconfig.json');
-
- return fs.writeJsonAsync(tsConfigPath, tsConfig);
- })
- .then(() => {
- // clone package.json
- const packageJson = JSON.parse(JSON.stringify(PLUGIN_PACKAGE_JSON));
-
- packageJson.name = `@ionic-native/${pluginName}`;
- packageJson.version = IONIC_NATIVE_VERSION;
-
- return fs.writeJsonAsync(path.resolve(BUILD_DIST_ROOT, pluginName, 'package.json'), packageJson);
- })
- .then(() => {
-
- // compile the plugin
- exec(`${ROOT}/node_modules/.bin/ngc -p ${tsConfigPath}`, (err, stdout, stderr) => {
-
- if (err) {
-
- if (!ignoreErrors) {
- // oops! something went wrong.
- console.log(err);
- callback(`\n\nBuilding ${pluginName} failed.`);
- return;
- } else {
- errors.push(err);
- }
-
- }
-
- // we're done with this plugin!
- callback();
-
- });
-
- })
- .catch(callback);
-
- }); // QUEUE.push end
-
-};
-
-pluginsToBuild.forEach(addPluginToQueue);
-
-QUEUE.start((err) => {
-
- if (err) {
- console.log('Error building plugins.');
- console.log(err);
- process.stderr.write(err);
- process.exit(1);
- } else if (errors.length) {
- errors.forEach(e => {
- console.log(e.message) && console.log('\n');
- process.stderr.write(err);
- });
- console.log('Build complete with errors');
- process.exit(1);
- } else {
- console.log('Done processing plugins!');
- }
-
-});
diff --git a/scripts/build/core-package.json b/scripts/build/core-package.json
deleted file mode 100644
index 99a573a9da..0000000000
--- a/scripts/build/core-package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "@ionic-native/core",
- "version": "{{VERSION}}",
- "description": "Ionic Native - Native plugins for ionic apps",
- "module": "index.js",
- "typings": "index.d.ts",
- "author": "ionic",
- "license": "MIT",
- "peerDependencies": {},
- "repository": {
- "type": "git",
- "url": "https://github.com/ionic-team/ionic-native.git"
- }
-}
diff --git a/scripts/build/helpers.ts b/scripts/build/helpers.ts
new file mode 100644
index 0000000000..756d129dc6
--- /dev/null
+++ b/scripts/build/helpers.ts
@@ -0,0 +1,123 @@
+import * as ts from 'typescript';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import { camelCase, clone } from 'lodash';
+
+export const ROOT = path.resolve(__dirname, '../../');
+export const TS_CONFIG = clone(require(path.resolve(ROOT, 'tsconfig.json')));
+export const COMPILER_OPTIONS = TS_CONFIG.compilerOptions;
+export const PLUGINS_ROOT = path.join(ROOT, 'src/plugins/');
+export const PLUGIN_PATHS = fs.readdirSync(PLUGINS_ROOT).map(d => path.join(PLUGINS_ROOT, d, 'index.ts'));
+
+export function getDecorator(node: ts.Node, index: number = 0): ts.Decorator {
+ if (node.decorators && node.decorators[index])
+ return node.decorators[index];
+}
+
+export function hasDecorator(decoratorName: string, node: ts.Node): boolean {
+ return node.decorators && node.decorators.length && node.decorators.findIndex(d => getDecoratorName(d) === decoratorName) > -1;
+}
+
+export function getDecoratorName(decorator: any) {
+ return decorator.expression.expression.text;
+}
+
+export function getRawDecoratorArgs(decorator: any): any[] {
+ if (decorator.expression.arguments.length === 0) return [];
+ return decorator.expression.arguments[0].properties;
+}
+
+export function getDecoratorArgs(decorator: any) {
+ const properties: any[] = getRawDecoratorArgs(decorator);
+ const args = {};
+
+ properties.forEach(prop => {
+ let val;
+
+ switch (prop.initializer.kind) {
+ case ts.SyntaxKind.StringLiteral:
+ val = prop.initializer.text;
+ // args[prop.name.escapedText] = val;
+ break;
+
+ case ts.SyntaxKind.ArrayLiteralExpression:
+ val = prop.initializer.elements.map(e => e.text);
+ break;
+
+ case ts.SyntaxKind.TrueKeyword:
+ val = true;
+ break;
+
+ case ts.SyntaxKind.FalseKeyword:
+ val = false;
+ break;
+
+ case ts.SyntaxKind.NumericLiteral:
+ val = Number(prop.initializer.text);
+ break;
+
+ default:
+ console.log(prop.initializer);
+ throw 'Unexpected property value type << helpers.ts >>';
+ }
+
+ args[prop.name.text] = val;
+ });
+
+ return args;
+}
+
+/**
+ * FROM STENCIL
+ * Convert a js value into typescript AST
+ * @param val array, object, string, boolean, or number
+ * @returns Typescript Object Literal, Array Literal, String Literal, Boolean Literal, Numeric Literal
+ */
+export function convertValueToLiteral(val: any) {
+ if (Array.isArray(val)) {
+ return arrayToArrayLiteral(val);
+ }
+ if (typeof val === 'object') {
+ return objectToObjectLiteral(val);
+ }
+ if (typeof val === 'number') {
+ return ts.createNumericLiteral(String(val));
+ }
+ return ts.createLiteral(val);
+}
+
+/**
+ * FROM STENCIL
+ * Convert a js object into typescript AST
+ * @param obj key value object
+ * @returns Typescript Object Literal Expression
+ */
+function objectToObjectLiteral(obj: { [key: string]: any }): ts.ObjectLiteralExpression {
+ const newProperties: ts.ObjectLiteralElementLike[] = Object.keys(obj).map((key: string): ts.ObjectLiteralElementLike => {
+ return ts.createPropertyAssignment(ts.createLiteral(key), convertValueToLiteral(obj[key]) as ts.Expression);
+ });
+
+ return ts.createObjectLiteral(newProperties);
+}
+
+/**
+ * FROM STENCIL
+ * Convert a js array into typescript AST
+ * @param list array
+ * @returns Typescript Array Literal Expression
+ */
+function arrayToArrayLiteral(list: any[]): ts.ArrayLiteralExpression {
+ const newList: any[] = list.map(convertValueToLiteral);
+ return ts.createArrayLiteral(newList);
+}
+
+export function getMethodsForDecorator(decoratorName: string) {
+ switch (decoratorName) {
+ case 'CordovaProperty': return ['cordovaPropertyGet', 'cordovaPropertySet'];
+ case 'InstanceProperty': return ['instancePropertyGet', 'instancePropertySet'];
+ case 'CordovaCheck': return ['checkAvailability'];
+ case 'InstanceCheck': return ['instanceAvailability'];
+ }
+
+ return [camelCase(decoratorName)];
+}
diff --git a/scripts/build/ngx.ts b/scripts/build/ngx.ts
new file mode 100644
index 0000000000..bf4645e7a4
--- /dev/null
+++ b/scripts/build/ngx.ts
@@ -0,0 +1,105 @@
+import * as ts from 'typescript';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import * as ngc from '@angular/compiler-cli';
+import * as rimraf from 'rimraf';
+import { generateDeclarations } from './transpile';
+import { clone } from 'lodash';
+import { EmitFlags } from '@angular/compiler-cli';
+import { importsTransformer } from './transformers/imports';
+import { pluginClassTransformer } from './transformers/plugin-class';
+import { COMPILER_OPTIONS, PLUGIN_PATHS, ROOT } from './helpers';
+
+export function getProgram(rootNames: string[] = createSourceFiles()) {
+ const options: ngc.CompilerOptions = clone(COMPILER_OPTIONS);
+ options.basePath = ROOT;
+ options.moduleResolution = ts.ModuleResolutionKind.NodeJs;
+ options.module = ts.ModuleKind.ES2015;
+ options.target = ts.ScriptTarget.ES5;
+ options.lib = ['dom', 'es2017'];
+ options.inlineSourceMap = true;
+ options.inlineSources = true;
+ delete options.baseUrl;
+
+ const host: ngc.CompilerHost = ngc.createCompilerHost({ options });
+
+ return ngc.createProgram({
+ rootNames,
+ options,
+ host
+ });
+}
+
+// hacky way to export metadata only for core package
+export function transpileNgxCore() {
+ getProgram([path.resolve(ROOT, 'src/core/index.ts')]).emit({
+ emitFlags: EmitFlags.Metadata,
+ emitCallback: ({ program, writeFile, customTransformers, cancellationToken, targetSourceFile }) =>
+ program.emit(targetSourceFile, writeFile, cancellationToken, true, customTransformers)
+ });
+}
+
+export function transpileNgx() {
+ getProgram().emit({
+ emitFlags: EmitFlags.Metadata,
+ customTransformers: {
+ beforeTs: [
+ importsTransformer(true),
+ pluginClassTransformer(true)
+ ]
+ }
+ });
+}
+
+export function generateDeclarationFiles() {
+ generateDeclarations(PLUGIN_PATHS.map(p => p.replace('index.ts', 'ngx/index.ts')));
+}
+
+// remove reference to @ionic-native/core decorators
+export function modifyMetadata() {
+ PLUGIN_PATHS.map(p => p.replace('src', 'dist').replace('index.ts', 'ngx/index.metadata.json'))
+ .forEach(p => {
+ const content = fs.readJSONSync(p);
+ let _prop;
+ for (const prop in content[0].metadata) {
+ _prop = content[0].metadata[prop];
+ removeIonicNativeDecorators(_prop);
+
+ if (_prop.members) {
+ for (const memberProp in _prop.members) {
+ removeIonicNativeDecorators(_prop.members[memberProp][0]);
+ }
+ }
+ }
+
+ fs.writeJSONSync(p, content);
+ });
+}
+
+function removeIonicNativeDecorators(node: any) {
+ if (node.decorators && node.decorators.length) {
+ node.decorators = node.decorators.filter((d, i) => d.expression.module !== '@ionic-native/core');
+ }
+
+ if (node.decorators && !node.decorators.length) delete node.decorators;
+}
+
+function createSourceFiles(): string[] {
+ return PLUGIN_PATHS.map((indexPath: string) => {
+ const ngxPath = path.resolve(indexPath.replace('index.ts', ''), 'ngx'),
+ newPath = path.resolve(ngxPath, 'index.ts');
+
+ // delete directory
+ rimraf.sync(ngxPath);
+ fs.mkdirpSync(ngxPath);
+ fs.copyFileSync(indexPath, newPath);
+
+ return newPath;
+ });
+}
+
+export function cleanupNgx() {
+ PLUGIN_PATHS.forEach((indexPath: string) =>
+ rimraf.sync(indexPath.replace('index.ts', 'ngx'))
+ );
+}
diff --git a/scripts/build/plugin-package.json b/scripts/build/plugin-package.json
deleted file mode 100644
index 0949cf308c..0000000000
--- a/scripts/build/plugin-package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "@ionic-native/{{PLUGIN}}",
- "version": "{{VERSION}}",
- "description": "Ionic Native - Native plugins for ionic apps",
- "module": "index.js",
- "typings": "index.d.ts",
- "author": "ionic",
- "license": "MIT",
- "peerDependencies": {},
- "repository": {
- "type": "git",
- "url": "https://github.com/ionic-team/ionic-native.git"
- }
-}
diff --git a/scripts/build/publish.js b/scripts/build/publish.js
deleted file mode 100644
index 184dda82d4..0000000000
--- a/scripts/build/publish.js
+++ /dev/null
@@ -1,58 +0,0 @@
-"use strict";
-// Node module dependencies
-const fs = require('fs-extra-promise').useFs(require('fs-extra')),
- queue = require('queue'),
- path = require('path'),
- exec = require('child-process-promise').exec;
-
-
-const ROOT = path.resolve(path.join(__dirname, '../../')),
- DIST = path.resolve(ROOT, 'dist', '@ionic-native');
-
-const FLAGS = '--access public'; // add any flags here if you want... (example: --tag alpha)
-
-const PACKAGES = fs.readdirSync(DIST);
-
-const failedPackages = [];
-
-const QUEUE = queue({
- concurrency: 10
-});
-
-PACKAGES.forEach(packageName => {
-
- QUEUE.push(done => {
-
- console.log(`Publishing @ionic-native/${packageName}`);
- const packagePath = path.resolve(DIST, packageName);
- exec(`npm publish ${packagePath} ${FLAGS}`)
- .then(() => done())
- .catch((e) => {
- if (e.stderr && e.stderr.indexOf('previously published version') === -1) {
- failedPackages.push({
- cmd: e.cmd,
- stderr: e.stderr
- });
- }
- done();
- });
-
- });
-
-});
-
-QUEUE.start((err) => {
-
- if (err) {
- console.log('Error publishing ionic-native. ', err);
- } else if (failedPackages.length > 0) {
- console.log(`${failedPackages.length} packages failed to publish.`);
- console.log(failedPackages);
- } else {
- console.log('Done publishing ionic-native!');
- }
-
-
-
-});
-
diff --git a/scripts/build/remove-tslib-helpers.js b/scripts/build/remove-tslib-helpers.js
new file mode 100644
index 0000000000..8b0de3c65d
--- /dev/null
+++ b/scripts/build/remove-tslib-helpers.js
@@ -0,0 +1,2 @@
+// removes the __extends method that is added automatically by typescript
+module.exports = source => source.replace(/var\s__extends\s=\s\(this\s&&[\sa-z\._\(\)\|{}=:\[\]&,;?]+}\)\(\);/i, '');
diff --git a/scripts/build/transformers/extract-injectables.ts b/scripts/build/transformers/extract-injectables.ts
new file mode 100644
index 0000000000..7a455c8960
--- /dev/null
+++ b/scripts/build/transformers/extract-injectables.ts
@@ -0,0 +1,54 @@
+import * as ts from 'typescript';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import { hasDecorator, ROOT } from '../helpers';
+
+export interface InjectableClassEntry {
+ file: string;
+ className: string;
+ dirName: string;
+}
+
+const injectableClasses: InjectableClassEntry[] = [];
+export const EMIT_PATH = path.resolve(ROOT, 'injectable-classes.json');
+
+/**
+ * This transformer extracts all the injectable classes
+ * so we can use all the names later on when we compile
+ * an es5 bundle.
+ *
+ * Every injectable class will end up in the
+ * window['IonicNative'] object.
+ */
+export function extractInjectables() {
+ return (ctx: ts.TransformationContext) => {
+ return tsSourceFile => {
+ if (tsSourceFile.fileName.indexOf('src/plugins') > -1) {
+ ts.visitEachChild(tsSourceFile, node => {
+ if (node.kind !== ts.SyntaxKind.ClassDeclaration) {
+ return node;
+ }
+
+ const isInjectable: boolean = hasDecorator('Injectable', node);
+ if (isInjectable) {
+ injectableClasses.push({
+ file: tsSourceFile.path,
+ className: (node as ts.ClassDeclaration).name.text,
+ dirName: tsSourceFile.path.split(/[\\\/]+/).reverse()[1]
+ });
+ }
+ }, ctx);
+ }
+
+ return tsSourceFile;
+ }
+ };
+}
+
+export function emitInjectableClasses() {
+ fs.writeJSONSync(EMIT_PATH, injectableClasses);
+}
+
+export function cleanEmittedData() {
+ fs.unlinkSync(EMIT_PATH);
+}
diff --git a/scripts/build/transformers/imports.ts b/scripts/build/transformers/imports.ts
new file mode 100644
index 0000000000..3b1a14ab8b
--- /dev/null
+++ b/scripts/build/transformers/imports.ts
@@ -0,0 +1,51 @@
+import * as ts from 'typescript';
+import { getMethodsForDecorator } from '../helpers';
+
+function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ngcBuild?: boolean) {
+ // remove angular imports
+ if (!ngcBuild) {
+ file.statements = (file.statements as any).filter((s: any) => !(s.kind === ts.SyntaxKind.ImportDeclaration && s.moduleSpecifier.text === '@angular/core'));
+ }
+
+ // find the @ionic-native/core import statement
+ const importStatement = (file.statements as any).find((s: any) => {
+ return s.kind === ts.SyntaxKind.ImportDeclaration && s.moduleSpecifier.text === '@ionic-native/core';
+ });
+
+ // we're only interested in files containing @ionic-native/core import statement
+ if (!importStatement) return file;
+
+ let decorators: string[] = [];
+
+ const decoratorRegex: RegExp = /@([a-zA-Z]+)\(/g;
+
+ let m;
+
+ while ((m = decoratorRegex.exec(file.text)) !== null) {
+ if (m.index === decoratorRegex.lastIndex) {
+ decoratorRegex.lastIndex++;
+ }
+ if (m && m[1] && decorators.indexOf(m[1]) === -1 && m[1] !== 'Plugin') decorators.push(m[1]);
+ }
+
+ if (decorators.length) {
+ let methods = [];
+
+ decorators.forEach(d => methods = getMethodsForDecorator(d).concat(methods));
+
+ importStatement.importClause.namedBindings.elements = [
+ ts.createIdentifier('IonicNativePlugin'),
+ ...methods.map(m => ts.createIdentifier(m))
+ ];
+ }
+
+ return file;
+}
+
+export function importsTransformer(ngcBuild?: boolean) {
+ return (ctx: ts.TransformationContext) => {
+ return tsSourceFile => {
+ return transformImports(tsSourceFile, ctx, ngcBuild);
+ }
+ };
+}
diff --git a/scripts/build/transformers/members.ts b/scripts/build/transformers/members.ts
new file mode 100644
index 0000000000..3638c6e8bd
--- /dev/null
+++ b/scripts/build/transformers/members.ts
@@ -0,0 +1,37 @@
+import * as ts from 'typescript';
+import { transformMethod } from './methods';
+import { transformProperty } from './properties';
+
+export function transformMembers(cls: ts.ClassDeclaration) {
+ const propertyIndices: number[] = [];
+
+ let members = cls.members.map((member: any, index: number) => {
+ // only process decorated members
+ if (!member.decorators || !member.decorators.length) return member;
+
+ switch (member.kind) {
+ case ts.SyntaxKind.MethodDeclaration:
+ return transformMethod(member);
+ case ts.SyntaxKind.PropertyDeclaration:
+ propertyIndices.push(index);
+ return member;
+ case ts.SyntaxKind.Constructor:
+ return ts.createConstructor(undefined, undefined, member.parameters, member.body);
+ default:
+ return member; // in case anything gets here by accident...
+ }
+ });
+
+ propertyIndices.forEach((i: number) => {
+ const [getter, setter] = transformProperty(members, i) as any;
+ members.push(getter, setter);
+ });
+
+ propertyIndices.reverse().forEach(i => members.splice(i, 1));
+
+ return members;
+}
+
+
+
+
diff --git a/scripts/build/transformers/methods.ts b/scripts/build/transformers/methods.ts
new file mode 100644
index 0000000000..1218e3d9ae
--- /dev/null
+++ b/scripts/build/transformers/methods.ts
@@ -0,0 +1,47 @@
+import * as ts from 'typescript';
+import { convertValueToLiteral, getDecorator, getDecoratorArgs, getDecoratorName, getMethodsForDecorator } from '../helpers';
+
+export function transformMethod(method: ts.MethodDeclaration) {
+ if (!method) return;
+
+ const decorator = getDecorator(method),
+ decoratorName = getDecoratorName(decorator),
+ decoratorArgs = getDecoratorArgs(decorator);
+
+ try {
+ return ts.createMethod(undefined, undefined, undefined, method.name, undefined, method.typeParameters, method.parameters, method.type, ts.createBlock([
+ ts.createReturn(
+ getMethodBlock(method, decoratorName, decoratorArgs)
+ )
+ ]));
+ } catch (e) {
+ console.log('Error transforming method: ', (method.name as any).text);
+ console.log(e.message);
+ }
+}
+
+function getMethodBlock(method: ts.MethodDeclaration, decoratorName: string, decoratorArgs: any): ts.Expression {
+ const decoratorMethod = getMethodsForDecorator(decoratorName)[0];
+
+ switch (decoratorName) {
+ case 'CordovaCheck':
+ case 'InstanceCheck':
+ return ts.createImmediatelyInvokedFunctionExpression([ts.createIf(
+ ts.createBinary(
+ ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [ts.createThis()]),
+ ts.SyntaxKind.EqualsEqualsEqualsToken,
+ ts.createTrue()
+ ),
+ method.body
+ )]);
+
+ default:
+ return ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [
+ ts.createThis(),
+ ts.createLiteral((method.name as any).text),
+ convertValueToLiteral(decoratorArgs),
+ ts.createIdentifier('arguments')
+ ]);
+ }
+
+}
diff --git a/scripts/build/transformers/plugin-class.ts b/scripts/build/transformers/plugin-class.ts
new file mode 100644
index 0000000000..a41a193d98
--- /dev/null
+++ b/scripts/build/transformers/plugin-class.ts
@@ -0,0 +1,64 @@
+import * as ts from 'typescript';
+import { convertValueToLiteral, getDecorator, getDecoratorArgs, getDecoratorName } from '../helpers';
+import { transformMembers } from './members';
+
+function transformClass(cls: any, ngcBuild?: boolean) {
+
+ console.time('~ transformClass: ' + cls.name.text);
+
+ const pluginStatics = [];
+ const dec: any = getDecorator(cls);
+
+ if (dec) {
+ const pluginDecoratorArgs = getDecoratorArgs(dec);
+
+ // add plugin decorator args as static properties of the plugin's class
+ for (let prop in pluginDecoratorArgs) {
+ pluginStatics.push(ts.createProperty(
+ undefined,
+ [ts.createToken(ts.SyntaxKind.StaticKeyword)],
+ ts.createIdentifier(prop),
+ undefined,
+ undefined,
+ convertValueToLiteral(pluginDecoratorArgs[prop])
+ ));
+ }
+ }
+
+ cls = ts.createClassDeclaration(
+ ngcBuild && cls.decorators && cls.decorators.length? cls.decorators.filter(d => getDecoratorName(d) === 'Injectable') : undefined, // remove Plugin and Injectable decorators
+ [ts.createToken(ts.SyntaxKind.ExportKeyword)],
+ cls.name,
+ cls.typeParameters,
+ cls.heritageClauses,
+ [
+ ...transformMembers(cls),
+ ...pluginStatics
+ ]
+ );
+
+ console.timeEnd('~ transformClass: ' + cls.name.text);
+ return cls;
+}
+
+function transformClasses(file: ts.SourceFile, ctx: ts.TransformationContext, ngcBuild?: boolean) {
+ // console.log('Transforming file: ' + file.fileName);
+ return ts.visitEachChild(file, node => {
+ if (node.kind !== ts.SyntaxKind.ClassDeclaration) {
+ return node;
+ }
+
+ return transformClass(node, ngcBuild);
+ }, ctx);
+}
+
+export function pluginClassTransformer(ngcBuild?: boolean): ts.TransformerFactory {
+ return (ctx: ts.TransformationContext) => {
+ return tsSourceFile => {
+ if (tsSourceFile.fileName.indexOf('src/plugins') > -1)
+ return transformClasses(tsSourceFile, ctx, ngcBuild);
+
+ return tsSourceFile;
+ }
+ };
+}
diff --git a/scripts/build/transformers/properties.ts b/scripts/build/transformers/properties.ts
new file mode 100644
index 0000000000..d0b10c8611
--- /dev/null
+++ b/scripts/build/transformers/properties.ts
@@ -0,0 +1,53 @@
+import * as ts from 'typescript';
+import { getDecorator, getDecoratorName } from '../helpers';
+
+export function transformProperty(members: any[], index: number) {
+
+ const property = members[index] as ts.PropertyDeclaration,
+ decorator = getDecorator(property),
+ decoratorName = getDecoratorName(decorator);
+
+ let type: 'cordova' | 'instance';
+
+ switch (decoratorName) {
+ case 'CordovaProperty':
+ type = 'cordova';
+ break;
+
+ case 'InstanceProperty':
+ type = 'instance';
+ break;
+
+ default: return property;
+ }
+
+
+ const getter = ts.createGetAccessor(undefined, undefined, property.name, undefined, property.type, ts.createBlock([
+ ts.createReturn(
+ ts.createCall(
+ ts.createIdentifier(type + 'PropertyGet'),
+ undefined,
+ [
+ ts.createThis(),
+ ts.createLiteral((property.name as any).text)
+ ]
+ )
+ )
+ ]));
+
+ const setter = ts.createSetAccessor(undefined, undefined, property.name, [ts.createParameter(undefined, undefined, undefined, 'value', undefined, property.type)], ts.createBlock([
+ ts.createStatement(
+ ts.createCall(
+ ts.createIdentifier(type + 'PropertySet'),
+ undefined,
+ [
+ ts.createThis(),
+ ts.createLiteral((property.name as any).text),
+ ts.createIdentifier('value')
+ ]
+ )
+ )
+ ]));
+
+ return [getter, setter];
+}
diff --git a/scripts/build/transpile.ts b/scripts/build/transpile.ts
new file mode 100644
index 0000000000..8e6c42c6b0
--- /dev/null
+++ b/scripts/build/transpile.ts
@@ -0,0 +1,51 @@
+import * as ts from 'typescript';
+import { pluginClassTransformer } from './transformers/plugin-class';
+import { importsTransformer } from './transformers/imports';
+import { clone } from 'lodash';
+import { emitInjectableClasses, extractInjectables } from './transformers/extract-injectables';
+import { COMPILER_OPTIONS, PLUGIN_PATHS, TS_CONFIG } from './helpers';
+
+let host: ts.CompilerHost;
+
+export function getCompilerHost() {
+ if (!host) host = ts.createCompilerHost(TS_CONFIG);
+ return host;
+}
+
+export function getProgram(declaration: boolean = false, pluginPaths: string[] = PLUGIN_PATHS) {
+ const compilerOptions: ts.CompilerOptions = clone(COMPILER_OPTIONS);
+ compilerOptions.declaration = declaration;
+ compilerOptions.moduleResolution = ts.ModuleResolutionKind.NodeJs;
+ compilerOptions.target = ts.ScriptTarget.ES5;
+ compilerOptions.module = ts.ModuleKind.ES2015;
+ compilerOptions.inlineSourceMap = true;
+ compilerOptions.inlineSources = true;
+ compilerOptions.lib = [
+ 'lib.dom.d.ts',
+ 'lib.es5.d.ts',
+ 'lib.es2015.d.ts',
+ 'lib.es2016.d.ts',
+ 'lib.es2017.d.ts'
+ ];
+
+ return ts.createProgram(pluginPaths, compilerOptions, getCompilerHost());
+}
+
+export function generateDeclarations(sourceFiles?: string[]) {
+ return getProgram(true, sourceFiles).emit(undefined, getCompilerHost().writeFile, undefined, true);
+}
+
+export function transpile() {
+ const emitResult = getProgram().emit(undefined, getCompilerHost().writeFile, undefined, false, {
+ before: [
+ extractInjectables(),
+ importsTransformer(),
+ pluginClassTransformer(),
+ ]
+ });
+
+ emitInjectableClasses();
+
+ return emitResult;
+}
+
diff --git a/scripts/build/tsconfig-plugin.json b/scripts/build/tsconfig-plugin.json
deleted file mode 100644
index 3e4a6d6f89..0000000000
--- a/scripts/build/tsconfig-plugin.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "declaration": true,
- "stripInternal": true,
- "experimentalDecorators": true,
- "emitDecoratorMetadata": true,
- "module": "es2015",
- "moduleResolution": "node",
- "outDir": "../../../dist/@ionic-native/",
- "paths": {
- "@ionic-native/core": ["../../../dist/@ionic-native/core"]
- },
- "rootDir": "../../../src/@ionic-native/plugins/",
- "target": "es5",
- "skipLibCheck": true,
- "lib": ["es2015", "dom"],
- "sourceMap": true,
- "inlineSources": true,
- "noImplicitAny": true
- },
- "files": []
-}
diff --git a/scripts/ci-tests.js b/scripts/ci-tests.js
deleted file mode 100644
index d4ff8eea96..0000000000
--- a/scripts/ci-tests.js
+++ /dev/null
@@ -1,65 +0,0 @@
-const exec = require('child-process-promise').exec;
-let diff;
-exec(`git branch | grep \\* | cut -d ' ' -f2`)
- .then(output => {
- if (output.stderr) {
- return Promise.reject(output.stderr);
- }
-
- const branch = output.stdout.trim();
-
- if (branch !== 'master') {
-
- console.log('Merging master branch in ...');
- // not on master branch
- // let's test the changes that were made
- return exec(`git merge origin master`);
- }
- })
- .then((output) => {
- if (output && output.stderr) {
- return Promise.reject(output.stderr);
- }
- console.log('Checking for differences ...');
- return exec(`git diff --name-status origin master`)
- })
- .then((output) => {
- if (output && output.stderr) {
- return Promise.reject(output.stderr);
- }
-
- diff = output.stdout;
- diff = diff.replace(/A\s+/g, '');
- diff = diff.match(/src\/@ionic-native\/plugins\/([a-zA-Z0-9\-]+)\/index\.ts/g);
-
- if (!diff) process.exit();
-
- console.log(`${ diff.length } plugins were modified. We will now build them to verify they still work.`);
-
- return exec('npm run build:core --silent');
- })
- .then((output) => {
-
- if (output && output.stderr) {
- return Promise.reject(output.stderr);
- }
-
- console.log('Built core library successfully ...');
- console.log('Building plugins ...');
-
- diff = diff.map(text => text.replace('src/@ionic-native/plugins/', '').replace('/index.ts', ''));
-
- return exec(`npm run build:modules ${diff.join(' ')} --silent`);
- })
- .then((output) => {
- if (output && output.stderr) {
- console.log(output.stderr);
- process.exit(1);
- }
- console.log(output.stdout);
- process.exit();
- })
- .catch(e => {
- console.log(e.message || e);
- process.exit(1);
- });
diff --git a/scripts/config.json b/scripts/docs/config.json
similarity index 76%
rename from scripts/config.json
rename to scripts/docs/config.json
index 2008df6028..66ba8ae4cc 100644
--- a/scripts/config.json
+++ b/scripts/docs/config.json
@@ -2,5 +2,5 @@
"sitePath": "../ionic-site",
"v2DocsDir": "docs/native",
"docsDest": "../ionic-site/content/docs/native",
- "pluginDir": "dist/@ionic-native"
+ "pluginDir": "dist/plugins"
}
diff --git a/scripts/docs/configs/links.js b/scripts/docs/dgeni/configs/links.js
similarity index 100%
rename from scripts/docs/configs/links.js
rename to scripts/docs/dgeni/configs/links.js
diff --git a/scripts/docs/configs/log.js b/scripts/docs/dgeni/configs/log.js
similarity index 100%
rename from scripts/docs/configs/log.js
rename to scripts/docs/dgeni/configs/log.js
diff --git a/scripts/docs/configs/tag-defs.js b/scripts/docs/dgeni/configs/tag-defs.js
similarity index 100%
rename from scripts/docs/configs/tag-defs.js
rename to scripts/docs/dgeni/configs/tag-defs.js
diff --git a/scripts/docs/configs/template-filters.js b/scripts/docs/dgeni/configs/template-filters.js
similarity index 100%
rename from scripts/docs/configs/template-filters.js
rename to scripts/docs/dgeni/configs/template-filters.js
diff --git a/scripts/docs/configs/template-tags.js b/scripts/docs/dgeni/configs/template-tags.js
similarity index 100%
rename from scripts/docs/configs/template-tags.js
rename to scripts/docs/dgeni/configs/template-tags.js
diff --git a/scripts/docs/dgeni-config.js b/scripts/docs/dgeni/dgeni-config.js
similarity index 97%
rename from scripts/docs/dgeni-config.js
rename to scripts/docs/dgeni/dgeni-config.js
index f93618ab31..cad50129c9 100644
--- a/scripts/docs/dgeni-config.js
+++ b/scripts/docs/dgeni/dgeni-config.js
@@ -50,11 +50,11 @@ module.exports = currentVersion => {
// Don't run unwanted processors since we are not using the normal file reading processor
readFilesProcessor.$enabled = false;
- readFilesProcessor.basePath = path.resolve(__dirname, '../..');
+ readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
- readTypeScriptModules.basePath = path.resolve(__dirname, '../..');
+ readTypeScriptModules.basePath = path.resolve(__dirname, '../../..');
readTypeScriptModules.sourceFiles = [
- './src/@ionic-native/plugins/**/*.ts'
+ './src/plugins/**/*.ts'
];
})
diff --git a/scripts/docs/dgeni-readmes-config.js b/scripts/docs/dgeni/dgeni-readmes-config.js
similarity index 94%
rename from scripts/docs/dgeni-readmes-config.js
rename to scripts/docs/dgeni/dgeni-readmes-config.js
index c701173d5c..da2520b05b 100644
--- a/scripts/docs/dgeni-readmes-config.js
+++ b/scripts/docs/dgeni/dgeni-readmes-config.js
@@ -40,7 +40,6 @@ module.exports = currentVersion => {
computePathsProcessor.pathTemplates = [{
docTypes: ['class'],
getOutputPath: doc => doc.originalModule.replace(config.pluginDir + '/', '')
- .replace('/plugins', '')
.replace(/\/index$/, '/README.md')
}];
@@ -50,10 +49,10 @@ module.exports = currentVersion => {
.config(function(readFilesProcessor, readTypeScriptModules) {
// Don't run unwanted processors since we are not using the normal file reading processor
readFilesProcessor.$enabled = false;
- readFilesProcessor.basePath = path.resolve(__dirname, '../..');
+ readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
- readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../..'));
- readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
+ readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../../..'));
+ readTypeScriptModules.sourceFiles = ['./src/plugins/**/*.ts'];
})
// Configure file writing
diff --git a/scripts/docs/filters/capital.js b/scripts/docs/dgeni/filters/capital.js
similarity index 100%
rename from scripts/docs/filters/capital.js
rename to scripts/docs/dgeni/filters/capital.js
diff --git a/scripts/docs/filters/code.js b/scripts/docs/dgeni/filters/code.js
similarity index 100%
rename from scripts/docs/filters/code.js
rename to scripts/docs/dgeni/filters/code.js
diff --git a/scripts/docs/filters/dashify.js b/scripts/docs/dgeni/filters/dashify.js
similarity index 100%
rename from scripts/docs/filters/dashify.js
rename to scripts/docs/dgeni/filters/dashify.js
diff --git a/scripts/docs/filters/dump.js b/scripts/docs/dgeni/filters/dump.js
similarity index 100%
rename from scripts/docs/filters/dump.js
rename to scripts/docs/dgeni/filters/dump.js
diff --git a/scripts/docs/processors/debug.js b/scripts/docs/dgeni/processors/debug.js
similarity index 100%
rename from scripts/docs/processors/debug.js
rename to scripts/docs/dgeni/processors/debug.js
diff --git a/scripts/docs/processors/hide-private-api.js b/scripts/docs/dgeni/processors/hide-private-api.js
similarity index 100%
rename from scripts/docs/processors/hide-private-api.js
rename to scripts/docs/dgeni/processors/hide-private-api.js
diff --git a/scripts/docs/processors/jekyll.js b/scripts/docs/dgeni/processors/jekyll.js
similarity index 100%
rename from scripts/docs/processors/jekyll.js
rename to scripts/docs/dgeni/processors/jekyll.js
diff --git a/scripts/docs/processors/mark-properties.js b/scripts/docs/dgeni/processors/mark-properties.js
similarity index 100%
rename from scripts/docs/processors/mark-properties.js
rename to scripts/docs/dgeni/processors/mark-properties.js
diff --git a/scripts/docs/processors/npm-id.js b/scripts/docs/dgeni/processors/npm-id.js
similarity index 100%
rename from scripts/docs/processors/npm-id.js
rename to scripts/docs/dgeni/processors/npm-id.js
diff --git a/scripts/docs/processors/parse-optional.js b/scripts/docs/dgeni/processors/parse-optional.js
similarity index 100%
rename from scripts/docs/processors/parse-optional.js
rename to scripts/docs/dgeni/processors/parse-optional.js
diff --git a/scripts/docs/processors/readmes.js b/scripts/docs/dgeni/processors/readmes.js
similarity index 100%
rename from scripts/docs/processors/readmes.js
rename to scripts/docs/dgeni/processors/readmes.js
diff --git a/scripts/docs/processors/remove-private-members.js b/scripts/docs/dgeni/processors/remove-private-members.js
similarity index 100%
rename from scripts/docs/processors/remove-private-members.js
rename to scripts/docs/dgeni/processors/remove-private-members.js
diff --git a/scripts/docs/tag-defs/tag-defs.js b/scripts/docs/dgeni/tag-defs/tag-defs.js
similarity index 100%
rename from scripts/docs/tag-defs/tag-defs.js
rename to scripts/docs/dgeni/tag-defs/tag-defs.js
diff --git a/scripts/docs/templates/common.template.html b/scripts/docs/dgeni/templates/common.template.html
similarity index 100%
rename from scripts/docs/templates/common.template.html
rename to scripts/docs/dgeni/templates/common.template.html
diff --git a/scripts/docs/templates/native_menu.template.html b/scripts/docs/dgeni/templates/native_menu.template.html
similarity index 100%
rename from scripts/docs/templates/native_menu.template.html
rename to scripts/docs/dgeni/templates/native_menu.template.html
diff --git a/scripts/docs/templates/readme.template.md b/scripts/docs/dgeni/templates/readme.template.md
similarity index 100%
rename from scripts/docs/templates/readme.template.md
rename to scripts/docs/dgeni/templates/readme.template.md
diff --git a/scripts/docs/gulp-tasks.js b/scripts/docs/gulp-tasks.js
index 81a10aa45c..0767302d02 100644
--- a/scripts/docs/gulp-tasks.js
+++ b/scripts/docs/gulp-tasks.js
@@ -1,5 +1,5 @@
"use strict";
-const config = require('../config.json'),
+const config = require('./config.json'),
projectPackage = require('../../package.json'),
path = require('path'),
fs = require('fs-extra-promise').useFs(require('fs-extra')),
@@ -10,7 +10,7 @@ module.exports = gulp => {
try {
- const ionicPackage = require('./dgeni-config')(projectPackage.version),
+ const ionicPackage = require('./dgeni/dgeni-config')(projectPackage.version),
dgeni = new Dgeni([ionicPackage]);
return dgeni.generate().then(docs => console.log(docs.length + ' docs generated'));
@@ -27,7 +27,7 @@ module.exports = gulp => {
try {
- const ionicPackage = require('./dgeni-readmes-config')(projectPackage.version),
+ const ionicPackage = require('./dgeni/dgeni-readmes-config')(projectPackage.version),
dgeni = new Dgeni([ionicPackage]);
return dgeni.generate().then(docs => console.log(docs.length + ' README files generated'));
diff --git a/scripts/docs/update_readmes.sh b/scripts/docs/update_readmes.sh
index 0c128668ca..b51ca3fee8 100755
--- a/scripts/docs/update_readmes.sh
+++ b/scripts/docs/update_readmes.sh
@@ -31,7 +31,7 @@ function run {
# git push origin master || :
- echo "-- Updated docs for $VERSION_NAME succesfully!"
+ echo "-- Updated docs for $VERSION_NAME successfully!"
fi
}
diff --git a/scripts/utils.inc.sh b/scripts/docs/utils.inc.sh
old mode 100755
new mode 100644
similarity index 96%
rename from scripts/utils.inc.sh
rename to scripts/docs/utils.inc.sh
index 08f3d8fe7c..df258e281d
--- a/scripts/utils.inc.sh
+++ b/scripts/docs/utils.inc.sh
@@ -1,244 +1,244 @@
-# bash utils from angularjs
-
-# This file provides:
-# - a default control flow
-# * initializes the environment
-# * call a function in your script based on the arguments
-# - named argument parsing and automatic generation of the "usage" for your script
-# - utility functions
-#
-# Usage:
-# - define the variable ARGS_DEF (see below) with the arguments for your script
-# - include this file using `source utils.inc` at the end of your script.
-#
-# Default control flow:
-# 0. Set the current directory to the directory of the script. By this
-# the script can be called from anywhere.
-# 1. Parse the named arguments
-# 2. [Redacted]
-# 3. If the parameter "verbose" is set, the `-x` flag will be set in bash.
-# 4. The function "init" will be called if it exists
-# 5. If the parameter "action" is set, it will call the function with the name of that parameter.
-# Otherwise the function "run" will be called.
-#
-# Named Argument Parsing:
-# - The variable ARGS_DEF defines the valid command arguments
-# * Required args syntax: --paramName=paramRegex
-# * Optional args syntax: [--paramName=paramRegex]
-# * e.g. ARG_DEFS=("--required_param=(.+)" "[--optional_param=(.+)]")
-# - Checks that:
-# * all arguments match to an entry in ARGS_DEF
-# * all required arguments are present
-# * all arguments match their regex
-# - Afterwards, every paramter value will be stored in a variable
-# with the name of the parameter in upper case (with dash converted to underscore).
-#
-# Special arguments that are always available:
-# - "--action=.*": This parameter will be used to dispatch to a function with that name when the
-# script is started
-
-# - "--verbose=true": This will set the `-x` flag in bash so that all calls will be logged
-#
-# Utility functions:
-# - readJsonProp
-# - replaceJsonProp
-# - resolveDir
-# - getVar
-# - serVar
-# - isFunction
-
-# always stop on errors
-set -e
-
-function usage {
- echo "Usage: ${0} ${ARG_DEFS[@]}"
- exit 1
-}
-
-
-function parseArgs {
- local REQUIRED_ARG_NAMES=()
-
- # -- helper functions
- function varName {
- # everything to upper case and dash to underscore
- echo ${1//-/_} | tr '[:lower:]' '[:upper:]'
- }
-
- function readArgDefs {
- local ARG_DEF
- local AD_OPTIONAL
- local AD_NAME
- local AD_RE
-
- # -- helper functions
- function parseArgDef {
- local ARG_DEF_REGEX="(\[?)--([^=]+)=(.*)"
- if [[ ! $1 =~ $ARG_DEF_REGEX ]]; then
- echo "Internal error: arg def has wrong format: $ARG_DEF"
- exit 1
- fi
- AD_OPTIONAL="${BASH_REMATCH[1]}"
- AD_NAME="${BASH_REMATCH[2]}"
- AD_RE="${BASH_REMATCH[3]}"
- if [[ $AD_OPTIONAL ]]; then
- # Remove last bracket for optional args.
- # Can't put this into the ARG_DEF_REGEX somehow...
- AD_RE=${AD_RE%?}
- fi
- }
-
- # -- run
- for ARG_DEF in "${ARG_DEFS[@]}"
- do
- parseArgDef $ARG_DEF
-
- local AD_NAME_UPPER=$(varName $AD_NAME)
- setVar "${AD_NAME_UPPER}_OPTIONAL" "$AD_OPTIONAL"
- setVar "${AD_NAME_UPPER}_RE" "$AD_RE"
- if [[ ! $AD_OPTIONAL ]]; then
- REQUIRED_ARG_NAMES+=($AD_NAME)
- fi
- done
- }
-
- function readAndValidateArgs {
- local ARG_NAME
- local ARG_VALUE
- local ARG_NAME_UPPER
-
- # -- helper functions
- function parseArg {
- local ARG_REGEX="--([^=]+)=?(.*)"
-
- if [[ ! $1 =~ $ARG_REGEX ]]; then
- echo "Can't parse argument $i"
- usage
- fi
-
- ARG_NAME="${BASH_REMATCH[1]}"
- ARG_VALUE="${BASH_REMATCH[2]}"
- ARG_NAME_UPPER=$(varName $ARG_NAME)
- }
-
- function validateArg {
- local AD_RE=$(getVar ${ARG_NAME_UPPER}_RE)
-
- if [[ ! $AD_RE ]]; then
- echo "Unknown option: $ARG_NAME"
- usage
- fi
-
- if [[ ! $ARG_VALUE =~ ^${AD_RE}$ ]]; then
- echo "Wrong format: $ARG_NAME"
- usage;
- fi
-
- # validate that the "action" option points to a valid function
- if [[ $ARG_NAME == "action" ]] && ! isFunction $ARG_VALUE; then
- echo "No action $ARG_VALUE defined in this script"
- usage;
- fi
- }
-
- # -- run
- for i in "$@"
- do
- parseArg $i
- validateArg
- setVar "${ARG_NAME_UPPER}" "$ARG_VALUE"
- done
- }
-
- function checkMissingArgs {
- local ARG_NAME
- for ARG_NAME in "${REQUIRED_ARG_NAMES[@]}"
- do
- ARG_VALUE=$(getVar $(varName $ARG_NAME))
-
- if [[ ! $ARG_VALUE ]]; then
- echo "Missing: $ARG_NAME"
- usage;
- fi
- done
- }
-
- # -- run
- readArgDefs
- readAndValidateArgs "$@"
- checkMissingArgs
-
-}
-
-# getVar(varName)
-function getVar {
- echo ${!1}
-}
-
-# setVar(varName, varValue)
-function setVar {
- eval "$1=\"$2\""
-}
-
-# isFunction(name)
-# - to be used in an if, so return 0 if successful and 1 if not!
-function isFunction {
- if [[ $(type -t $1) == "function" ]]; then
- return 0
- else
- return 1
- fi
-}
-
-# readJsonProp(jsonFile, property)
-# - restriction: property needs to be on an own line!
-function readJsonProp {
- echo $(sed -En 's/.*"'$2'"[ ]*:[ ]*"(.*)".*/\1/p' $1)
-}
-
-# replaceJsonProp(jsonFile, property, newValue)
-# - note: propertyRegex will be automatically placed into a
-# capturing group! -> all other groups start at index 2!
-function replaceJsonProp {
- replaceInFile $1 "\"$2\": \".*?\"" "\"$2\": \"$3\""
-}
-
-# replaceInFile(file, findPattern, replacePattern)
-function replaceInFile {
- perl -pi -e "s/$2/$3/g;" $1
-}
-
-# resolveDir(relativeDir)
-# - resolves a directory relative to the current script
-function resolveDir {
- echo $(cd $SCRIPT_DIR; cd $1; pwd)
-}
-
-function main {
- # normalize the working dir to the directory of the script
- cd $(dirname $0);SCRIPT_DIR=$(pwd)
-
- ARG_DEFS+=("[--verbose=(true|false)]")
- parseArgs "$@"
-
-
- # --verbose argument
- if [[ $VERBOSE == "true" ]]; then
- set -x
- fi
-
- if isFunction init; then
- init "$@"
- fi
-
- # jump to the function denoted by the --action argument,
- # otherwise call the "run" function
- if [[ $ACTION ]]; then
- $ACTION "$@"
- else
- run "$@"
- fi
-}
-
-
-main "$@"
+# bash utils from angularjs
+
+# This file provides:
+# - a default control flow
+# * initializes the environment
+# * call a function in your script based on the arguments
+# - named argument parsing and automatic generation of the "usage" for your script
+# - utility functions
+#
+# Usage:
+# - define the variable ARGS_DEF (see below) with the arguments for your script
+# - include this file using `source utils.inc` at the end of your script.
+#
+# Default control flow:
+# 0. Set the current directory to the directory of the script. By this
+# the script can be called from anywhere.
+# 1. Parse the named arguments
+# 2. [Redacted]
+# 3. If the parameter "verbose" is set, the `-x` flag will be set in bash.
+# 4. The function "init" will be called if it exists
+# 5. If the parameter "action" is set, it will call the function with the name of that parameter.
+# Otherwise the function "run" will be called.
+#
+# Named Argument Parsing:
+# - The variable ARGS_DEF defines the valid command arguments
+# * Required args syntax: --paramName=paramRegex
+# * Optional args syntax: [--paramName=paramRegex]
+# * e.g. ARG_DEFS=("--required_param=(.+)" "[--optional_param=(.+)]")
+# - Checks that:
+# * all arguments match to an entry in ARGS_DEF
+# * all required arguments are present
+# * all arguments match their regex
+# - Afterwards, every paramter value will be stored in a variable
+# with the name of the parameter in upper case (with dash converted to underscore).
+#
+# Special arguments that are always available:
+# - "--action=.*": This parameter will be used to dispatch to a function with that name when the
+# script is started
+
+# - "--verbose=true": This will set the `-x` flag in bash so that all calls will be logged
+#
+# Utility functions:
+# - readJsonProp
+# - replaceJsonProp
+# - resolveDir
+# - getVar
+# - serVar
+# - isFunction
+
+# always stop on errors
+set -e
+
+function usage {
+ echo "Usage: ${0} ${ARG_DEFS[@]}"
+ exit 1
+}
+
+
+function parseArgs {
+ local REQUIRED_ARG_NAMES=()
+
+ # -- helper functions
+ function varName {
+ # everything to upper case and dash to underscore
+ echo ${1//-/_} | tr '[:lower:]' '[:upper:]'
+ }
+
+ function readArgDefs {
+ local ARG_DEF
+ local AD_OPTIONAL
+ local AD_NAME
+ local AD_RE
+
+ # -- helper functions
+ function parseArgDef {
+ local ARG_DEF_REGEX="(\[?)--([^=]+)=(.*)"
+ if [[ ! $1 =~ $ARG_DEF_REGEX ]]; then
+ echo "Internal error: arg def has wrong format: $ARG_DEF"
+ exit 1
+ fi
+ AD_OPTIONAL="${BASH_REMATCH[1]}"
+ AD_NAME="${BASH_REMATCH[2]}"
+ AD_RE="${BASH_REMATCH[3]}"
+ if [[ $AD_OPTIONAL ]]; then
+ # Remove last bracket for optional args.
+ # Can't put this into the ARG_DEF_REGEX somehow...
+ AD_RE=${AD_RE%?}
+ fi
+ }
+
+ # -- run
+ for ARG_DEF in "${ARG_DEFS[@]}"
+ do
+ parseArgDef $ARG_DEF
+
+ local AD_NAME_UPPER=$(varName $AD_NAME)
+ setVar "${AD_NAME_UPPER}_OPTIONAL" "$AD_OPTIONAL"
+ setVar "${AD_NAME_UPPER}_RE" "$AD_RE"
+ if [[ ! $AD_OPTIONAL ]]; then
+ REQUIRED_ARG_NAMES+=($AD_NAME)
+ fi
+ done
+ }
+
+ function readAndValidateArgs {
+ local ARG_NAME
+ local ARG_VALUE
+ local ARG_NAME_UPPER
+
+ # -- helper functions
+ function parseArg {
+ local ARG_REGEX="--([^=]+)=?(.*)"
+
+ if [[ ! $1 =~ $ARG_REGEX ]]; then
+ echo "Can't parse argument $i"
+ usage
+ fi
+
+ ARG_NAME="${BASH_REMATCH[1]}"
+ ARG_VALUE="${BASH_REMATCH[2]}"
+ ARG_NAME_UPPER=$(varName $ARG_NAME)
+ }
+
+ function validateArg {
+ local AD_RE=$(getVar ${ARG_NAME_UPPER}_RE)
+
+ if [[ ! $AD_RE ]]; then
+ echo "Unknown option: $ARG_NAME"
+ usage
+ fi
+
+ if [[ ! $ARG_VALUE =~ ^${AD_RE}$ ]]; then
+ echo "Wrong format: $ARG_NAME"
+ usage;
+ fi
+
+ # validate that the "action" option points to a valid function
+ if [[ $ARG_NAME == "action" ]] && ! isFunction $ARG_VALUE; then
+ echo "No action $ARG_VALUE defined in this script"
+ usage;
+ fi
+ }
+
+ # -- run
+ for i in "$@"
+ do
+ parseArg $i
+ validateArg
+ setVar "${ARG_NAME_UPPER}" "$ARG_VALUE"
+ done
+ }
+
+ function checkMissingArgs {
+ local ARG_NAME
+ for ARG_NAME in "${REQUIRED_ARG_NAMES[@]}"
+ do
+ ARG_VALUE=$(getVar $(varName $ARG_NAME))
+
+ if [[ ! $ARG_VALUE ]]; then
+ echo "Missing: $ARG_NAME"
+ usage;
+ fi
+ done
+ }
+
+ # -- run
+ readArgDefs
+ readAndValidateArgs "$@"
+ checkMissingArgs
+
+}
+
+# getVar(varName)
+function getVar {
+ echo ${!1}
+}
+
+# setVar(varName, varValue)
+function setVar {
+ eval "$1=\"$2\""
+}
+
+# isFunction(name)
+# - to be used in an if, so return 0 if successful and 1 if not!
+function isFunction {
+ if [[ $(type -t $1) == "function" ]]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+# readJsonProp(jsonFile, property)
+# - restriction: property needs to be on an own line!
+function readJsonProp {
+ echo $(sed -En 's/.*"'$2'"[ ]*:[ ]*"(.*)".*/\1/p' $1)
+}
+
+# replaceJsonProp(jsonFile, property, newValue)
+# - note: propertyRegex will be automatically placed into a
+# capturing group! -> all other groups start at index 2!
+function replaceJsonProp {
+ replaceInFile $1 "\"$2\": \".*?\"" "\"$2\": \"$3\""
+}
+
+# replaceInFile(file, findPattern, replacePattern)
+function replaceInFile {
+ perl -pi -e "s/$2/$3/g;" $1
+}
+
+# resolveDir(relativeDir)
+# - resolves a directory relative to the current script
+function resolveDir {
+ echo $(cd $SCRIPT_DIR; cd $1; pwd)
+}
+
+function main {
+ # normalize the working dir to the directory of the script
+ cd $(dirname $0);SCRIPT_DIR=$(pwd)
+
+ ARG_DEFS+=("[--verbose=(true|false)]")
+ parseArgs "$@"
+
+
+ # --verbose argument
+ if [[ $VERBOSE == "true" ]]; then
+ set -x
+ fi
+
+ if isFunction init; then
+ init "$@"
+ fi
+
+ # jump to the function denoted by the --action argument,
+ # otherwise call the "run" function
+ if [[ $ACTION ]]; then
+ $ACTION "$@"
+ else
+ run "$@"
+ fi
+}
+
+
+main "$@"
diff --git a/scripts/tasks/build-es5.ts b/scripts/tasks/build-es5.ts
new file mode 100644
index 0000000000..c7187091c4
--- /dev/null
+++ b/scripts/tasks/build-es5.ts
@@ -0,0 +1,76 @@
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import * as webpack from 'webpack';
+import * as uglifyJsPlugin from 'uglifyjs-webpack-plugin';
+import * as unminifiedPlugin from 'unminified-webpack-plugin';
+import { cleanEmittedData, EMIT_PATH, InjectableClassEntry } from '../build/transformers/extract-injectables';
+import { ROOT } from '../build/helpers';
+
+const DIST = path.resolve(ROOT, 'dist');
+const INDEX_PATH = path.resolve(DIST, 'index.js');
+const INJECTABLE_CLASSES = fs.readJSONSync(EMIT_PATH).map((item: InjectableClassEntry) => {
+ item.file = './' + item.file.split(/[\/\\]+/).slice(-3, -1).join('/');
+ return item;
+});
+
+const webpackConfig: webpack.Configuration = {
+ entry: INDEX_PATH,
+ devtool: 'source-map',
+ target: 'web',
+ output: {
+ path: DIST,
+ filename: 'ionic-native.min.js'
+ },
+ resolve: {
+ modules: ['node_modules'],
+ extensions: ['.js'],
+ alias: {
+ '@ionic-native/core': path.resolve(DIST, 'core/index.js')
+ }
+ },
+ module: {
+ rules: [{
+ test: /\.js$/,
+ use: path.resolve(ROOT, 'scripts/build/remove-tslib-helpers.js')
+ }]
+ },
+ plugins: [
+ new webpack.ProvidePlugin({
+ '__extends': ['tslib', '__extends']
+ }),
+ new webpack.optimize.OccurrenceOrderPlugin(true),
+ new webpack.DefinePlugin({
+ 'process.env.NODE_ENV': JSON.stringify('production')
+ }),
+ new uglifyJsPlugin({
+ sourceMap: true
+ })
+ ]
+};
+
+function getPluginImport(entry: InjectableClassEntry) {
+ return `import { ${ entry.className } } from '${ entry.file }';`;
+}
+
+function createIndexFile() {
+ let fileContent = '';
+ fileContent += INJECTABLE_CLASSES.map(getPluginImport).join('\n');
+ fileContent += `\nwindow.IonicNative = {\n`;
+ fileContent += INJECTABLE_CLASSES.map(e => e.className).join(',\n');
+ fileContent += '\n};\n';
+ fileContent += `require('./core/bootstrap').checkReady();\n`;
+ fileContent += `require('./core/ng1').initAngular1(window.IonicNative);`;
+
+ fs.writeFileSync(INDEX_PATH, fileContent, { encoding: 'utf-8' });
+}
+
+function compile() {
+ webpack(webpackConfig, (err, stats) => {
+ if (err) console.log(err);
+ else console.log(stats);
+ // cleanEmittedData();
+ });
+}
+
+createIndexFile();
+compile();
diff --git a/scripts/tasks/build-esm.ts b/scripts/tasks/build-esm.ts
new file mode 100644
index 0000000000..11ed4cbbfd
--- /dev/null
+++ b/scripts/tasks/build-esm.ts
@@ -0,0 +1,29 @@
+import { generateDeclarations, transpile } from '../build/transpile';
+import { EMIT_PATH } from '../build/transformers/extract-injectables';
+import { PLUGIN_PATHS } from '../build/helpers';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+
+generateDeclarations();
+transpile();
+
+const outDirs = PLUGIN_PATHS.map(p => p.replace('src', 'dist').replace(/[\\/]index.ts/, ''));
+const injectableClasses = fs.readJSONSync(EMIT_PATH);
+
+
+outDirs.forEach(dir => {
+ const classes = injectableClasses.filter(entry => entry.dirName === dir.split(/[\\/]+/).pop());
+
+ let jsFile: string = fs.readFileSync(path.join(dir, 'index.js'), 'utf-8'),
+ dtsFile: string = fs.readFileSync(path.join(dir, 'index.d.ts'), 'utf-8');
+
+ classes.forEach(entry => {
+ dtsFile = dtsFile.replace(`class ${ entry.className } `, 'class ' + entry.className + 'Original ');
+ dtsFile += `\nexport declare const ${ entry.className }: ${ entry.className }Original;`;
+ jsFile = jsFile.replace(new RegExp(`([\\s\\(])${ entry.className }([\\s\\.;\\(,])`, 'g'), '$1' + entry.className + 'Original$2');
+ jsFile = jsFile.replace(`export { ${ entry.className }Original }`, `var ${ entry.className } = new ${ entry.className }Original();\nexport { ${ entry.className } }`);
+ });
+
+ fs.writeFileSync(path.join(dir, 'index.js'), jsFile, 'utf-8');
+ fs.writeFileSync(path.join(dir, 'index.d.ts'), dtsFile, 'utf-8');
+});
diff --git a/scripts/tasks/build-ngx.ts b/scripts/tasks/build-ngx.ts
new file mode 100644
index 0000000000..de8df8e614
--- /dev/null
+++ b/scripts/tasks/build-ngx.ts
@@ -0,0 +1,7 @@
+import { generateDeclarationFiles, transpileNgx, transpileNgxCore, modifyMetadata, cleanupNgx } from '../build/ngx';
+
+transpileNgxCore();
+transpileNgx();
+generateDeclarationFiles();
+modifyMetadata();
+cleanupNgx();
diff --git a/scripts/tasks/publish.ts b/scripts/tasks/publish.ts
new file mode 100644
index 0000000000..1d2939acc1
--- /dev/null
+++ b/scripts/tasks/publish.ts
@@ -0,0 +1,75 @@
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import { merge } from 'lodash';
+import { exec } from 'child_process';
+import { PLUGIN_PATHS, ROOT } from '../build/helpers';
+
+const MAIN_PACKAGE_JSON = require('../../package.json');
+const VERSION = MAIN_PACKAGE_JSON.version;
+const FLAGS = '--access public --tag beta';
+
+const PACKAGE_JSON_BASE = {
+ "description": "Ionic Native - Native plugins for ionic apps",
+ "module": "index.js",
+ "typings": "index.d.ts",
+ "author": "ionic",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/ionic-team/ionic-native.git"
+ }
+};
+
+const DIST = path.resolve(ROOT, 'dist');
+
+const PACKAGES = [];
+
+const RXJS_VEERSION = '^5.0.1';
+const CORE_VERSION = '^5.0.0';
+
+const PLUGIN_PEER_DEPENDENCIES = {
+ '@ionic-native/core': VERSION, // TODO change this in production
+ 'rxjs': RXJS_VEERSION
+};
+
+function getPackageJsonContent(name, peerDependencies = {}) {
+ return merge(PACKAGE_JSON_BASE, {
+ name: '@ionic-native/' + name,
+ peerDependencies,
+ version: VERSION
+ });
+}
+
+function writePackageJson(data: any, dir: string) {
+ const filePath = path.resolve(dir, 'package.json');
+ fs.writeJSONSync(filePath, data);
+ PACKAGES.push(dir);
+}
+
+function prepare() {
+ // write @ionic-native/core package.json
+ writePackageJson(
+ getPackageJsonContent('core', { 'rxjs': RXJS_VEERSION }),
+ path.resolve(DIST, 'core')
+ );
+
+ // write plugin package.json files
+ PLUGIN_PATHS.forEach((pluginPath: string) => {
+ const pluginName = pluginPath.split(/[\/\\]+/).slice(-2)[0];
+ const packageJsonContents = getPackageJsonContent(pluginName, PLUGIN_PEER_DEPENDENCIES);
+ const dir = path.resolve(DIST, 'plugins', pluginName);
+
+ writePackageJson(packageJsonContents, dir);
+ });
+}
+
+function publish() {
+ // TODO apply queue system so it doesn't publish everything at once
+ PACKAGES.forEach((pkg: string) => {
+ // console.log('Going to run the following command: ', `npm publish ${ pkg } ${ FLAGS }`);
+ exec(`npm publish ${ pkg } ${ FLAGS }`);
+ });
+}
+
+prepare();
+publish();
diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json
new file mode 100644
index 0000000000..0f7cbb459a
--- /dev/null
+++ b/scripts/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es5",
+ "moduleResolution": "node",
+ "noImplicitAny": false,
+ "lib": ["es6"]
+ },
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/src/@ionic-native/core/decorators.spec.ts b/src/@ionic-native/core/decorators.spec.ts
deleted file mode 100644
index 534a135f89..0000000000
--- a/src/@ionic-native/core/decorators.spec.ts
+++ /dev/null
@@ -1,277 +0,0 @@
-import 'core-js';
-import { Plugin, Cordova, CordovaProperty, CordovaCheck, CordovaInstance, InstanceProperty } from './decorators';
-import { IonicNativePlugin } from './ionic-native-plugin';
-import { ERR_CORDOVA_NOT_AVAILABLE, ERR_PLUGIN_NOT_INSTALLED } from './plugin';
-import { Observable } from 'rxjs/Observable';
-
-declare const window: any;
-
-class TestObject {
-
- constructor(public _objectInstance: any) {}
-
- @InstanceProperty
- name: string;
-
- @CordovaInstance({ sync: true })
- pingSync(): string { return; }
-
- @CordovaInstance()
- ping(): Promise { return; }
-
-}
-
-@Plugin({
- pluginName: 'TestPlugin',
- pluginRef: 'testPlugin',
- repo: '',
- plugin: 'cordova-plugin-my-plugin',
- platforms: ['Android', 'iOS']
-})
-class TestPlugin extends IonicNativePlugin {
-
- @CordovaProperty
- name: string;
-
- @Cordova({ sync: true })
- pingSync(): string { return; }
-
- @Cordova()
- ping(): Promise { return; }
-
- @CordovaCheck()
- customPing(): Promise {
- return Promise.resolve('pong');
- }
-
- create(): TestObject {
- return new TestObject(TestPlugin.getPlugin().create());
- }
-
- @Cordova({
- destruct: true
- })
- destructPromise(): Promise { return; }
-
- @Cordova({
- destruct: true,
- observable: true
- })
- destructObservable(): Observable { return; }
-
-}
-
-function definePlugin() {
- (window as any).testPlugin = {
- name: 'John Smith',
- ping: (success: Function, error: Function) => success('pong'),
- pingSync: () => 'pong',
- create: function TestObject() {
- this.pingSync = () => 'pong';
- this.ping = (success: Function, error: Function) => success('pong');
- this.name = 'John Smith';
- return this;
- },
- destructPromise: (success: Function) => success('hello', 'world'),
- destructObservable: (success: Function) => success('hello', 'world')
- };
-}
-
-describe('Regular Decorators', () => {
-
- let plugin: TestPlugin;
-
- beforeEach(() => {
- plugin = new TestPlugin();
- definePlugin();
- });
-
- describe('Plugin', () => {
-
- it('should set pluginName', () => {
- expect(TestPlugin.getPluginName()).toEqual('TestPlugin');
- });
-
- it('should set pluginRef', () => {
- expect(TestPlugin.getPluginRef()).toEqual('testPlugin');
- });
-
- it('should return original plugin object', () => {
- expect(TestPlugin.getPlugin()).toEqual(window.testPlugin);
- });
-
- it('should return supported platforms', () => {
- expect(TestPlugin.getSupportedPlatforms()).toEqual(['Android', 'iOS']);
- });
-
- });
-
- describe('Cordova', () => {
-
- it('should do a sync function', () => {
- expect(plugin.pingSync()).toEqual('pong');
- });
-
- it('should do an async function', (done: Function) => {
- plugin.ping()
- .then(res => {
- expect(res).toEqual('pong');
- done();
- })
- .catch(e => {
- expect(e).toBeUndefined();
- done('Method should have resolved');
- });
- });
-
- it('should throw plugin_not_installed error', (done: Function) => {
-
- delete window.testPlugin;
- window.cordova = true;
-
- expect(plugin.pingSync()).toEqual(ERR_PLUGIN_NOT_INSTALLED);
-
- plugin.ping()
- .catch(e => {
- expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
- delete window.cordova;
- done();
- });
-
- });
-
- it('should throw cordova_not_available error', (done: Function) => {
-
- delete window.testPlugin;
-
- expect(plugin.pingSync()).toEqual(ERR_CORDOVA_NOT_AVAILABLE);
-
- plugin.ping()
- .catch(e => {
- expect(e).toEqual(ERR_CORDOVA_NOT_AVAILABLE.error);
- done();
- });
-
- });
-
- });
-
- describe('CordovaProperty', () => {
-
- it('should return property value', () => {
- expect(plugin.name).toEqual('John Smith');
- });
-
- it('should set property value', () => {
- plugin.name = 'value2';
- expect(plugin.name).toEqual('value2');
- });
-
- });
-
- describe('CordovaCheck', () => {
-
- it('should run the method when plugin exists', (done) => {
- plugin.customPing()
- .then(res => {
- expect(res).toEqual('pong');
- done();
- });
- });
-
- it('shouldnt run the method when plugin doesnt exist', (done) => {
- delete window.testPlugin;
- window.cordova = true;
- plugin.customPing()
- .catch(e => {
- expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
- done();
- });
- });
-
- });
-
- describe('CordovaOptions', () => {
-
- describe('destruct', () => {
-
- it('should destruct values returned by a Promise', (done) => {
- plugin.destructPromise()
- .then((args: any[]) => {
- expect(args).toEqual(['hello', 'world']);
- done();
- });
- });
-
- it('should destruct values returned by an Observable', (done) => {
- plugin.destructObservable()
- .subscribe((args: any[]) => {
- expect(args).toEqual(['hello', 'world']);
- done();
- });
- });
-
- });
-
- });
-
-});
-
-describe('Instance Decorators', () => {
-
- let instance: TestObject,
- plugin: TestPlugin;
-
- beforeEach(() => {
- definePlugin();
- plugin = new TestPlugin();
- instance = plugin.create();
- });
-
- describe('Instance plugin', () => {
-
-
-
- });
-
- describe('CordovaInstance', () => {
-
- it('should call instance async method', (done) => {
- instance.ping()
- .then(r => {
- expect(r).toEqual('pong');
- done();
- });
- });
-
- it('should call instance sync method', () => {
- expect(instance.pingSync()).toEqual('pong');
- });
-
- it('shouldnt call instance method when _objectInstance is undefined', () => {
-
- delete instance._objectInstance;
- instance.ping()
- .then(r => {
- expect(r).toBeUndefined();
- })
- .catch(e => {
- expect(e).toBeUndefined();
- });
-
- });
-
- });
-
- describe('InstanceProperty', () => {
- it('should return property value', () => {
- expect(instance.name).toEqual('John Smith');
- });
-
- it('should set property value', () => {
- instance.name = 'John Cena';
- expect(instance.name).toEqual('John Cena');
- });
- });
-
-});
diff --git a/src/@ionic-native/core/decorators.ts b/src/@ionic-native/core/decorators.ts
deleted file mode 100644
index 0a99c3704d..0000000000
--- a/src/@ionic-native/core/decorators.ts
+++ /dev/null
@@ -1,313 +0,0 @@
-import { instanceAvailability, checkAvailability, wrap, wrapInstance, overrideFunction } from './plugin';
-import { getPlugin, getPromise } from './util';
-import { Observable } from 'rxjs/Observable';
-import 'rxjs/observable/throw';
-
-export interface PluginConfig {
- /**
- * Plugin name, this should match the class name
- */
- pluginName: string;
- /**
- * Plugin NPM package name
- */
- plugin: string;
- /**
- * Plugin object reference
- */
- pluginRef?: string;
- /**
- * Github repository URL
- */
- repo?: string;
- /**
- * Custom install command
- */
- install?: string;
- /**
- * Available installation variables
- */
- installVariables?: string[];
- /**
- * Supported platforms
- */
- platforms?: string[];
-
- [key: string]: any;
-}
-
-export interface CordovaOptions {
- destruct?: boolean;
- /**
- * Set to true if the wrapped method is a sync function
- */
- sync?: boolean;
- /**
- * Callback order. Set to reverse if the success/error callbacks are the first 2 arguments that the wrapped method takes.
- */
- callbackOrder?: 'reverse';
- /**
- * Callback style
- */
- callbackStyle?: 'node' | 'object';
- /**
- * Set a custom index for the success callback function. This doesn't work if callbackOrder or callbackStyle are set.
- */
- successIndex?: number;
- /**
- * Set a custom index for the error callback function. This doesn't work if callbackOrder or callbackStyle are set.
- */
- errorIndex?: number;
- /**
- * Success function property name. This must be set if callbackStyle is set to object.
- */
- successName?: string;
- /**
- * Error function property name. This must be set if callbackStyle is set to object.
- */
- errorName?: string;
- /**
- * Set to true to return an observable
- */
- observable?: boolean;
- /**
- * If observable is set to true, this can be set to a different function name that will cancel the observable.
- */
- clearFunction?: string;
- /**
- * This can be used if clearFunction is set. Set this to true to call the clearFunction with the same arguments used in the initial function.
- */
- clearWithArgs?: boolean;
- /**
- * Creates an observable that wraps a global event. Replaces document.addEventListener
- */
- eventObservable?: boolean;
- /**
- * Event name, this must be set if eventObservable is set to true
- */
- event?: string;
- /**
- * Element to attach the event listener to, this is optional, defaults to `window`
- */
- element?: any;
- /**
- * Set to true if the wrapped method returns a promise
- */
- otherPromise?: boolean;
- /**
- * Supported platforms
- */
- platforms?: string[];
-}
-
-export interface CordovaCheckOptions {
- sync?: boolean;
- observable?: boolean;
-}
-
-/**
- * @private
- */
-export function InstanceCheck(opts: CordovaCheckOptions = {}) {
- return (pluginObj: Object, methodName: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor => {
- return {
- value: function(...args: any[]): any {
- if (instanceAvailability(this)) {
- return descriptor.value.apply(this, args);
- } else {
-
- if (opts.sync) {
- return;
- } else if (opts.observable) {
- return new Observable(() => { });
- }
-
- return getPromise(() => { });
-
- }
- },
- enumerable: true
- };
- };
-}
-
-/**
- * Executes function only if plugin is available
- * @private
- */
-export function CordovaCheck(opts: CordovaCheckOptions = {}) {
- return (pluginObj: Object, methodName: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor => {
- return {
- value: function(...args: any[]): any {
- const check = checkAvailability(pluginObj);
- if (check === true) {
- return descriptor.value.apply(this, args);
- } else {
- if (opts.sync) {
- return null;
- } else if (opts.observable) {
- return Observable.throw(new Error(check && check.error));
- }
- return Promise.reject(check && check.error);
- }
- },
- enumerable: true
- };
- };
-}
-
-/**
- * @private
- *
- * Class decorator specifying Plugin metadata. Required for all plugins.
- *
- * @usage
- * ```typescript
- * @Plugin({
- * pluginName: 'MyPlugin',
- * plugin: 'cordova-plugin-myplugin',
- * pluginRef: 'window.myplugin'
- * })
- * export class MyPlugin {
- *
- * // Plugin wrappers, properties, and functions go here ...
- *
- * }
- * ```
- */
-export function Plugin(config: PluginConfig): ClassDecorator {
- return function(cls: any) {
-
- // Add these fields to the class
- for (let prop in config) {
- cls[prop] = config[prop];
- }
-
- cls['installed'] = function(printWarning?: boolean) {
- return !!getPlugin(config.pluginRef);
- };
-
- cls['getPlugin'] = function() {
- return getPlugin(config.pluginRef);
- };
-
- cls['checkInstall'] = function() {
- return checkAvailability(cls) === true;
- };
-
- cls['getPluginName'] = function() {
- return config.pluginName;
- };
-
- cls['getPluginRef'] = function() {
- return config.pluginRef;
- };
-
- cls['getPluginInstallName'] = function() {
- return config.plugin;
- };
-
- cls['getPluginRepo'] = function() {
- return config.repo;
- };
-
- cls['getSupportedPlatforms'] = function() {
- return config.platforms;
- };
-
- return cls;
- };
-}
-
-/**
- * @private
- *
- * Wrap a stub function in a call to a Cordova plugin, checking if both Cordova
- * and the required plugin are installed.
- */
-export function Cordova(opts: CordovaOptions = {}) {
- return (target: Object, methodName: string, descriptor: TypedPropertyDescriptor) => {
- return {
- value: function(...args: any[]) {
- return wrap(this, methodName, opts).apply(this, args);
- },
- enumerable: true
- };
- };
-}
-
-/**
- * @private
- *
- * Wrap an instance method
- */
-export function CordovaInstance(opts: CordovaOptions = {}) {
- return (target: Object, methodName: string) => {
- return {
- value: function(...args: any[]) {
- return wrapInstance(this, methodName, opts).apply(this, args);
- },
- enumerable: true
- };
- };
-}
-
-/**
- * @private
- *
- *
- * Before calling the original method, ensure Cordova and the plugin are installed.
- */
-export function CordovaProperty(target: any, key: string) {
- Object.defineProperty(target, key, {
- enumerable: true,
- get: () => {
- if (checkAvailability(target, key) === true) {
- return getPlugin(target.constructor.getPluginRef())[key];
- } else {
- return null;
- }
- },
- set: (value) => {
- if (checkAvailability(target, key) === true) {
- getPlugin(target.constructor.getPluginRef())[key] = value;
- }
- }
- });
-}
-
-/**
- * @private
- * @param target
- * @param key
- * @constructor
- */
-export function InstanceProperty(target: any, key: string) {
- Object.defineProperty(target, key, {
- enumerable: true,
- get: function() {
- return this._objectInstance[key];
- },
- set: function(value) {
- this._objectInstance[key] = value;
- }
- });
-}
-
-/**
- * @private
- *
- * Wrap a stub function in a call to a Cordova plugin, checking if both Cordova
- * and the required plugin are installed.
- */
-export function CordovaFunctionOverride(opts: any = {}) {
- return (target: Object, methodName: string, descriptor: TypedPropertyDescriptor) => {
- return {
- value: function(...args: any[]) {
- return overrideFunction(this, methodName, opts);
- },
- enumerable: true
- };
- };
-}
-
diff --git a/src/@ionic-native/core/decorators/common.spec.ts b/src/@ionic-native/core/decorators/common.spec.ts
new file mode 100644
index 0000000000..8638174bbf
--- /dev/null
+++ b/src/@ionic-native/core/decorators/common.spec.ts
@@ -0,0 +1,108 @@
+import { callCordovaPlugin, wrapInstance, wrapPromise } from './common';
+import 'rxjs/add/observable/of';
+
+declare const window: any;
+
+class MockPlugin {
+ static getPluginRef(): string {
+ return 'mockPlugin';
+ }
+
+ static getPluginName(): string {
+ return 'MockPlugin';
+ }
+
+ static getPluginInstallName(): string {
+ return '';
+ }
+
+ create(): MockInstancePluginObject {
+ return new MockInstancePluginObject();
+ }
+}
+
+class MockInstancePluginObject {
+ _pluginInstance: MockCordovaPlugin;
+
+ constructor() {
+ this._pluginInstance = new MockCordovaPlugin();
+ }
+}
+
+class MockCordovaPlugin {
+ static ping = jest.fn((arg: string) => 'pong');
+ ping = jest.fn((arg: string) => 'pong');
+
+ static pingAsync = jest.fn((arg: string, success: Function, error: Function) => success('pong'));
+ pingAsync = jest.fn((arg: string, success: Function, error: Function) => success('pong'));
+}
+
+describe('Common decorator functions', () => {
+
+ let plugin: MockPlugin,
+ instancePluginObject: MockInstancePluginObject;
+
+ beforeAll(() => {
+ window.mockPlugin = MockCordovaPlugin;
+ plugin = new MockPlugin();
+ instancePluginObject = plugin.create();
+ });
+
+ describe('callCordovaPlugin', () => {
+ test('should return value from cordova plugin', () => {
+ expect(callCordovaPlugin(plugin, 'ping', ['pingpong'])).toBe('pong');
+ });
+
+ test('original method should have been called', () => {
+ expect(MockCordovaPlugin.ping.mock.calls.length).toBe(1);
+ });
+
+ test('original method should have received args', () => {
+ expect(MockCordovaPlugin.ping.mock.calls[0][0]).toBe('pingpong');
+ });
+ });
+
+ describe('wrapPromise', () => {
+ test('should return a promise that resolves with a value', async () => {
+ expect(await wrapPromise(plugin, 'pingAsync', ['pingpong'])).toBe('pong');
+ });
+
+ test('original method should have been called', () => {
+ expect(MockCordovaPlugin.pingAsync.mock.calls.length).toBe(1);
+ });
+
+ test('original method should have received args', () => {
+ expect(MockCordovaPlugin.pingAsync.mock.calls[0][0]).toBe('pingpong');
+ expect(typeof MockCordovaPlugin.pingAsync.mock.calls[0][1]).toBe('function');
+ expect(typeof MockCordovaPlugin.pingAsync.mock.calls[0][2]).toBe('function');
+ });
+ });
+
+ describe('wrapObservable', () => {
+ test('should return an observable that emits a value', async () => {
+
+ });
+
+ test('original method should have been called', () => {});
+
+ test('original method should have received args', () => {});
+ });
+
+ describe('wrapEventObservable', () => {
+ test('should return an observable that wraps an event listener', async () => {});
+ });
+
+ describe('callInstance', () => {
+ test('should call an instance method', async () => {
+ });
+
+ test('original method should have been called', () => {
+ // expect(instancePluginObject._pluginInstance.ping.mock.calls.length).toBe(1);
+ });
+
+ test('original method should have received args', () => {
+ // expect(instancePluginObject._pluginInstance.ping.mock.calls[0][0]).toBe('pingpong');
+ });
+ });
+
+});
diff --git a/src/@ionic-native/core/plugin.ts b/src/@ionic-native/core/decorators/common.ts
similarity index 80%
rename from src/@ionic-native/core/plugin.ts
rename to src/@ionic-native/core/decorators/common.ts
index 4e5e6123a7..de095a27f5 100644
--- a/src/@ionic-native/core/plugin.ts
+++ b/src/@ionic-native/core/decorators/common.ts
@@ -1,18 +1,105 @@
-import { getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
-import { checkReady } from './bootstrap';
-import { CordovaOptions } from './decorators';
-
+import { CordovaOptions } from './interfaces';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
-checkReady();
-
-// declare const window;
-// declare var Promise;
-
export const ERR_CORDOVA_NOT_AVAILABLE = { error: 'cordova_not_available' };
export const ERR_PLUGIN_NOT_INSTALLED = { error: 'plugin_not_installed' };
+export function getPromise(callback: Function) {
+ const tryNativePromise = () => {
+ if (Promise) {
+ return new Promise((resolve, reject) => {
+ callback(resolve, reject);
+ });
+ } else {
+ console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.');
+ }
+ };
+
+ return tryNativePromise();
+}
+
+export function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: CordovaOptions = {}) {
+ let pluginResult: any, rej: Function;
+ const p = getPromise((resolve: Function, reject: Function) => {
+ if (opts.destruct) {
+ pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
+ } else {
+ pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
+ }
+ rej = reject;
+ });
+ // Angular throws an error on unhandled rejection, but in this case we have already printed
+ // a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason
+ // to error
+ if (pluginResult && pluginResult.error) {
+ p.catch(() => { });
+ typeof rej === 'function' && rej(pluginResult.error);
+ }
+ return p;
+}
+
+function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
+ return getPromise((resolve: Function, reject: Function) => {
+ const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
+ if (pluginResult) {
+ if (pluginResult.error) {
+ reject(pluginResult.error);
+ } else if (pluginResult.then) {
+ pluginResult.then(resolve).catch(reject);
+ }
+ } else {
+ reject({ error: 'unexpected_error' });
+ }
+ });
+}
+
+function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
+ return new Observable(observer => {
+ let pluginResult;
+
+ if (opts.destruct) {
+ pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
+ } else {
+ pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
+ }
+
+ if (pluginResult && pluginResult.error) {
+ observer.error(pluginResult.error);
+ observer.complete();
+ }
+ return () => {
+ try {
+ if (opts.clearFunction) {
+ if (opts.clearWithArgs) {
+ return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
+ }
+ return callCordovaPlugin(pluginObj, opts.clearFunction, []);
+ }
+ } catch (e) {
+ console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
+ console.warn(e);
+ }
+ };
+ });
+}
+
+/**
+ * Wrap the event with an observable
+ * @private
+ * @param event even name
+ * @param element The element to attach the event listener to
+ * @returns {Observable}
+ */
+function wrapEventObservable(event: string, element: any): Observable {
+ if (element) {
+ get(window, element);
+ } else {
+ element = window;
+ }
+ return Observable.fromEvent(element, event);
+}
+
/**
* Checks if plugin/cordova is available
@@ -56,7 +143,7 @@ export function instanceAvailability(pluginObj: any, methodName?: string): boole
return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');
}
-function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
+export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
// ignore resolve and reject in case sync
if (opts.sync) {
return args;
@@ -117,7 +204,7 @@ function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Func
return args;
}
-function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
+export function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
// Try to figure out where the success/error callbacks need to be bound
// to our promise resolve/reject handlers.
args = setIndex(args, opts, resolve, reject);
@@ -133,72 +220,7 @@ function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts
}
-function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
- let pluginResult: any, rej: Function;
- const p = getPromise((resolve: Function, reject: Function) => {
- if (opts.destruct) {
- pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
- } else {
- pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
- }
- rej = reject;
- });
- // Angular throws an error on unhandled rejection, but in this case we have already printed
- // a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason
- // to error
- if (pluginResult && pluginResult.error) {
- p.catch(() => { });
- typeof rej === 'function' && rej(pluginResult.error);
- }
- return p;
-}
-
-function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
- return getPromise((resolve: Function, reject: Function) => {
- const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
- if (pluginResult) {
- if (pluginResult.error) {
- reject(pluginResult.error);
- } else if (pluginResult.then) {
- pluginResult.then(resolve).catch(reject);
- }
- } else {
- reject({ error: 'unexpected_error' });
- }
- });
-}
-
-function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
- return new Observable(observer => {
- let pluginResult;
-
- if (opts.destruct) {
- pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
- } else {
- pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
- }
-
- if (pluginResult && pluginResult.error) {
- observer.error(pluginResult.error);
- observer.complete();
- }
- return () => {
- try {
- if (opts.clearFunction) {
- if (opts.clearWithArgs) {
- return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
- }
- return callCordovaPlugin(pluginObj, opts.clearFunction, []);
- }
- } catch (e) {
- console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
- console.warn(e);
- }
- };
- });
-}
-
-function callInstance(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
+export function callInstance(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
args = setIndex(args, opts, resolve, reject);
@@ -208,43 +230,44 @@ function callInstance(pluginObj: any, methodName: string, args: any[], opts: any
}
-/**
- * Wrap the event with an observable
- * @private
- * @param event even name
- * @param element The element to attach the event listener to
- * @returns {Observable}
- */
-export function wrapEventObservable(event: string, element: any = window): Observable {
- return Observable.fromEvent(element, event);
+export function getPlugin(pluginRef: string): any {
+ return get(window, pluginRef);
+}
+
+export function get(element: Element | Window, path: string) {
+ const paths: string[] = path.split('.');
+ let obj: any = element;
+ for (let i: number = 0; i < paths.length; i++) {
+ if (!obj) { return null; }
+ obj = obj[paths[i]];
+ }
+ return obj;
+}
+
+export function pluginWarn(pluginName: string, plugin?: string, method?: string): void {
+ if (method) {
+ console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.');
+ } else {
+ console.warn('Native: tried accessing the ' + pluginName + ' plugin but it\'s not installed.');
+ }
+ if (plugin) {
+ console.warn('Install the ' + pluginName + ' plugin: \'ionic cordova plugin add ' + plugin + '\'');
+ }
}
/**
- * Certain plugins expect the user to override methods in the plugin. For example,
- * window.cordova.plugins.backgroundMode.onactivate = function() { ... }.
- *
- * Unfortunately, this is brittle and would be better wrapped as an Observable. overrideFunction
- * does just this.
* @private
+ * @param pluginName
+ * @param method
*/
-export function overrideFunction(pluginObj: any, methodName: string, args: any[], opts: any = {}): Observable {
- return new Observable(observer => {
-
- const availabilityCheck = checkAvailability(pluginObj, methodName);
-
- if (availabilityCheck === true) {
- const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());
- pluginInstance[methodName] = observer.next.bind(observer);
- return () => pluginInstance[methodName] = () => { };
- } else {
- observer.error(availabilityCheck);
- observer.complete();
- }
-
- });
+export function cordovaWarn(pluginName: string, method?: string): void {
+ if (method) {
+ console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
+ } else {
+ console.warn('Native: tried accessing the ' + pluginName + ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
+ }
}
-
/**
* @private
*/
@@ -288,7 +311,6 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
if (pluginResult && pluginResult.error) {
observer.error(pluginResult.error);
- observer.complete();
}
return () => {
diff --git a/src/@ionic-native/core/decorators/cordova-function-override.ts b/src/@ionic-native/core/decorators/cordova-function-override.ts
new file mode 100644
index 0000000000..54bb3bc1b4
--- /dev/null
+++ b/src/@ionic-native/core/decorators/cordova-function-override.ts
@@ -0,0 +1,23 @@
+import { checkAvailability, getPlugin } from './common';
+import { Observable } from 'rxjs/Observable';
+
+function overrideFunction(pluginObj: any, methodName: string): Observable {
+ return new Observable(observer => {
+
+ const availabilityCheck = checkAvailability(pluginObj, methodName);
+
+ if (availabilityCheck === true) {
+ const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());
+ pluginInstance[methodName] = observer.next.bind(observer);
+ return () => pluginInstance[methodName] = () => { };
+ } else {
+ observer.error(availabilityCheck);
+ observer.complete();
+ }
+
+ });
+}
+
+export function cordovaFunctionOverride(pluginObj: any, methodName: string, args: IArguments | Array = []) {
+ return overrideFunction(pluginObj, methodName);
+}
diff --git a/src/@ionic-native/core/decorators/cordova-instance.ts b/src/@ionic-native/core/decorators/cordova-instance.ts
new file mode 100644
index 0000000000..ff6efa61b8
--- /dev/null
+++ b/src/@ionic-native/core/decorators/cordova-instance.ts
@@ -0,0 +1,7 @@
+import { CordovaOptions } from './interfaces';
+import { wrapInstance } from './common';
+
+export function cordovaInstance(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | Array) {
+ args = Array.from(args);
+ return wrapInstance(pluginObj, methodName, config).apply(this, args);
+}
diff --git a/src/@ionic-native/core/decorators/cordova-property.ts b/src/@ionic-native/core/decorators/cordova-property.ts
new file mode 100644
index 0000000000..9cc51a8189
--- /dev/null
+++ b/src/@ionic-native/core/decorators/cordova-property.ts
@@ -0,0 +1,14 @@
+import { checkAvailability, getPlugin } from './common';
+
+export function cordovaPropertyGet(pluginObj: any, key: string) {
+ if (checkAvailability(pluginObj, key) === true) {
+ return getPlugin(pluginObj.constructor.getPluginRef())[key];
+ }
+ return null;
+}
+
+export function cordovaPropertySet(pluginObj: any, key: string, value: any) {
+ if (checkAvailability(pluginObj, key) === true) {
+ getPlugin(pluginObj.constructor.getPluginRef())[key] = value;
+ }
+}
diff --git a/src/@ionic-native/core/decorators/cordova.ts b/src/@ionic-native/core/decorators/cordova.ts
new file mode 100644
index 0000000000..fe823d1474
--- /dev/null
+++ b/src/@ionic-native/core/decorators/cordova.ts
@@ -0,0 +1,6 @@
+import { CordovaOptions } from './interfaces';
+import { wrap } from './common';
+
+export function cordova(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | Array) {
+ return wrap(pluginObj, methodName, config).apply(this, args);
+}
diff --git a/src/@ionic-native/core/decorators/instance-property.ts b/src/@ionic-native/core/decorators/instance-property.ts
new file mode 100644
index 0000000000..6d54ac6a1b
--- /dev/null
+++ b/src/@ionic-native/core/decorators/instance-property.ts
@@ -0,0 +1,12 @@
+export function instancePropertyGet(pluginObj: any, key: string) {
+ if (!!pluginObj._objectInstance && !!pluginObj._objectInstance[key]) {
+ return pluginObj._objectInstance[key];
+ }
+ return null;
+}
+
+export function instancePropertySet(pluginObj: any, key: string, value: any) {
+ if (!!pluginObj._objectInstance && !!pluginObj._objectInstance[key]) {
+ pluginObj._objectInstance[key] = value;
+ }
+}
diff --git a/src/@ionic-native/core/decorators/interfaces.ts b/src/@ionic-native/core/decorators/interfaces.ts
new file mode 100644
index 0000000000..487ee026a2
--- /dev/null
+++ b/src/@ionic-native/core/decorators/interfaces.ts
@@ -0,0 +1,105 @@
+export interface PluginConfig {
+ /**
+ * Plugin name, this should match the class name
+ */
+ pluginName: string;
+ /**
+ * Plugin NPM package name
+ */
+ plugin: string;
+ /**
+ * Plugin object reference
+ */
+ pluginRef?: string;
+ /**
+ * Github repository URL
+ */
+ repo?: string;
+ /**
+ * Custom install command
+ */
+ install?: string;
+ /**
+ * Available installation variables
+ */
+ installVariables?: string[];
+ /**
+ * Supported platforms
+ */
+ platforms?: string[];
+
+ [key: string]: any;
+}
+
+export interface CordovaOptions {
+ destruct?: boolean;
+ /**
+ * Set to true if the wrapped method is a sync function
+ */
+ sync?: boolean;
+ /**
+ * Callback order. Set to reverse if the success/error callbacks are the first 2 arguments that the wrapped method takes.
+ */
+ callbackOrder?: 'reverse';
+ /**
+ * Callback style
+ */
+ callbackStyle?: 'node' | 'object';
+ /**
+ * Set a custom index for the success callback function. This doesn't work if callbackOrder or callbackStyle are set.
+ */
+ successIndex?: number;
+ /**
+ * Set a custom index for the error callback function. This doesn't work if callbackOrder or callbackStyle are set.
+ */
+ errorIndex?: number;
+ /**
+ * Success function property name. This must be set if callbackStyle is set to object.
+ */
+ successName?: string;
+ /**
+ * Error function property name. This must be set if callbackStyle is set to object.
+ */
+ errorName?: string;
+ /**
+ * Set to true to return an observable
+ */
+ observable?: boolean;
+ /**
+ * If observable is set to true, this can be set to a different function name that will cancel the observable.
+ */
+ clearFunction?: string;
+ /**
+ * This can be used if clearFunction is set. Set this to true to call the clearFunction with the same arguments used in the initial function.
+ */
+ clearWithArgs?: boolean;
+ /**
+ * Creates an observable that wraps a global event. Replaces document.addEventListener
+ */
+ eventObservable?: boolean;
+ /**
+ * Event name, this must be set if eventObservable is set to true
+ */
+ event?: string;
+ /**
+ * Element to attach the event listener to, this is optional, defaults to `window`
+ */
+ element?: any;
+ /**
+ * Set to true if the wrapped method returns a promise
+ */
+ otherPromise?: boolean;
+ /**
+ * Supported platforms
+ */
+ platforms?: string[];
+}
+
+export declare const Plugin: (config: PluginConfig) => ClassDecorator;
+export declare const Cordova: (config?: CordovaOptions) => MethodDecorator;
+export declare const CordovaProperty: () => PropertyDecorator;
+export declare const CordovaInstance: (config?: CordovaOptions) => MethodDecorator;
+export declare const InstanceProperty: () => PropertyDecorator;
+export declare const CordovaCheck: (config?: CordovaOptions) => MethodDecorator;
+export declare const InstanceCheck: (config?: CordovaOptions) => MethodDecorator;
+export declare const CordovaFunctionOverride: () => MethodDecorator;
diff --git a/src/@ionic-native/core/index.ts b/src/@ionic-native/core/index.ts
index e6e1ab8520..3a3740e0d7 100644
--- a/src/@ionic-native/core/index.ts
+++ b/src/@ionic-native/core/index.ts
@@ -1,4 +1,14 @@
-export * from './plugin';
-export * from './decorators';
-export * from './util';
-export * from './ionic-native-plugin';
+import { checkReady } from './bootstrap';
+
+export { IonicNativePlugin } from './ionic-native-plugin';
+
+// Decorators
+export { checkAvailability, instanceAvailability, wrap, getPromise } from './decorators/common';
+export * from './decorators/cordova';
+export * from './decorators/cordova-function-override';
+export * from './decorators/cordova-instance';
+export * from './decorators/cordova-property';
+export * from './decorators/instance-property';
+export * from './decorators/interfaces';
+
+checkReady();
diff --git a/src/@ionic-native/core/ionic-native-plugin.spec.ts b/src/@ionic-native/core/ionic-native-plugin.spec.ts
deleted file mode 100644
index 69df51ce8a..0000000000
--- a/src/@ionic-native/core/ionic-native-plugin.spec.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-// This is to verify that new (FileTransfer.getPlugin)() works
-
-import { Plugin, CordovaInstance } from './decorators';
-import { checkAvailability } from './plugin';
-import { IonicNativePlugin } from './ionic-native-plugin';
-
-class FT {
- hello(): string {
- return 'world';
- }
-}
-
-(window as any).FileTransfer = () => new FT();
-
-@Plugin({
- plugin: 'cordova-plugin-file-transfer',
- pluginRef: 'FileTransfer',
- repo: '',
- pluginName: 'FileTransfer'
-})
-export class FileTransfer extends IonicNativePlugin {
- create(): FileTransferObject {
- let instance: any;
- if (checkAvailability(FileTransfer.getPluginRef(), null, FileTransfer.getPluginName()) === true) {
- instance = new (FileTransfer.getPlugin())();
- }
- return new FileTransferObject(instance);
- }
-}
-
-export class FileTransferObject {
-
- constructor(public _objectInstance: any) {
- console.info('Creating a new FileTransferObject with instance: ', _objectInstance);
- }
-
- @CordovaInstance({ sync: true })
- hello(): string { return; }
-
-}
-
-describe('Mock FileTransfer Plugin', () => {
-
- let plugin: FileTransfer,
- instance: FileTransferObject;
-
- beforeAll(() => {
- plugin = new FileTransfer();
- instance = plugin.create();
- });
-
- it('should create a new FileTransfer plugin instance', () => {
- expect(plugin instanceof FileTransfer).toBeTruthy();
- });
-
- it('should create new FileTransferObject instance', () => {
- expect(instance instanceof FileTransferObject).toBeTruthy();
- });
-
- it('FileTransferObject instance should have _objectInstance property', () => {
- expect(instance._objectInstance).toBeDefined();
- });
-
- it('FileTransferObject.hello should return world', () => {
- console.info('instance hello is', instance.hello());
- expect(instance.hello()).toEqual('world');
- });
-
-});
diff --git a/src/@ionic-native/core/ionic-native-plugin.ts b/src/@ionic-native/core/ionic-native-plugin.ts
index ed62979b38..fd361b933c 100644
--- a/src/@ionic-native/core/ionic-native-plugin.ts
+++ b/src/@ionic-native/core/ionic-native-plugin.ts
@@ -1,3 +1,6 @@
+import { checkAvailability } from './decorators/common';
+import { get } from './util';
+
export class IonicNativePlugin {
static pluginName: string;
@@ -16,31 +19,31 @@ export class IonicNativePlugin {
* Returns a boolean that indicates whether the plugin is installed
* @return {boolean}
*/
- static installed(): boolean { return false; }
+ static installed(): boolean { return checkAvailability(this.pluginRef) === true; }
/**
* Returns the original plugin object
*/
- static getPlugin(): any { }
+ static getPlugin(): any { return get(window, this.pluginRef); }
/**
* Returns the plugin's name
*/
- static getPluginName(): string { return; }
+ static getPluginName(): string { return this.pluginName; }
/**
* Returns the plugin's reference
*/
- static getPluginRef(): string { return; }
+ static getPluginRef(): string { return this.pluginRef; }
/**
* Returns the plugin's install name
*/
- static getPluginInstallName(): string { return; }
+ static getPluginInstallName(): string { return this.plugin; }
/**
* Returns the plugin's supported platforms
*/
- static getSupportedPlatforms(): string[] { return; }
+ static getSupportedPlatforms(): string[] { return this.platforms || []; }
}
diff --git a/src/@ionic-native/core/ng1.ts b/src/@ionic-native/core/ng1.ts
new file mode 100644
index 0000000000..edf4fe3c5b
--- /dev/null
+++ b/src/@ionic-native/core/ng1.ts
@@ -0,0 +1,25 @@
+declare const window: any;
+
+/**
+ * Initialize the ionic.native Angular module if we're running in ng1.
+ * This iterates through the list of registered plugins and dynamically
+ * creates Angular 1 services of the form $cordovaSERVICE, ex: $cordovaStatusBar.
+ */
+export function initAngular1(plugins: any) {
+ if (window.angular) {
+ const ngModule = window.angular.module('ionic.native', []);
+
+ for (const name in plugins) {
+ let serviceName = '$cordova' + name;
+ let cls = plugins[name];
+
+ (function(serviceName, cls, name) {
+ ngModule.service(serviceName, [function() {
+ const funcs = window.angular.copy(cls);
+ funcs.__proto__['name'] = name;
+ return funcs;
+ }]);
+ })(serviceName, cls, name);
+ }
+ }
+}
diff --git a/src/@ionic-native/core/util.ts b/src/@ionic-native/core/util.ts
index eddedaaaa2..bc28b44e4f 100644
--- a/src/@ionic-native/core/util.ts
+++ b/src/@ionic-native/core/util.ts
@@ -3,7 +3,7 @@ declare const window: any;
/**
* @private
*/
-export const get = (element: Element | Window, path: string): any => {
+export function get(element: Element | Window, path: string) {
const paths: string[] = path.split('.');
let obj: any = element;
for (let i: number = 0; i < paths.length; i++) {
@@ -11,17 +11,17 @@ export const get = (element: Element | Window, path: string): any => {
obj = obj[paths[i]];
}
return obj;
-};
+}
/**
* @private
*/
-export const getPromise = (callback: Function): Promise => {
+export function getPromise(callback: Function = () => {}): Promise {
const tryNativePromise = () => {
if (window.Promise) {
- return new Promise((resolve, reject) => {
+ return new Promise((resolve, reject) => {
callback(resolve, reject);
});
} else {
@@ -30,40 +30,4 @@ export const getPromise = (callback: Function): Promise => {
};
return tryNativePromise();
-};
-
-/**
- * @private
- * @param pluginRef
- * @returns {null|*}
- */
-export const getPlugin = (pluginRef: string): any => {
- return get(window, pluginRef);
-};
-
-/**
- * @private
- */
-export const pluginWarn = (pluginName: string, plugin?: string, method?: string): void => {
- if (method) {
- console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.');
- } else {
- console.warn('Native: tried accessing the ' + pluginName + ' plugin but it\'s not installed.');
- }
- if (plugin) {
- console.warn('Install the ' + pluginName + ' plugin: \'ionic cordova plugin add ' + plugin + '\'');
- }
-};
-
-/**
- * @private
- * @param pluginName
- * @param method
- */
-export const cordovaWarn = (pluginName: string, method?: string): void => {
- if (method) {
- console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
- } else {
- console.warn('Native: tried accessing the ' + pluginName + ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
- }
-};
+}
diff --git a/src/@ionic-native/plugins/action-sheet/index.ts b/src/@ionic-native/plugins/action-sheet/index.ts
index 28c33d8298..1eb8e86810 100644
--- a/src/@ionic-native/plugins/action-sheet/index.ts
+++ b/src/@ionic-native/plugins/action-sheet/index.ts
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface ActionSheetOptions {
@@ -80,7 +80,7 @@ export interface ActionSheetOptions {
* addDestructiveButtonWithLabel: 'Delete',
* androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK,
* destructiveButtonLast: true
- * };
+ * }
*
* this.actionSheet.show(options).then((buttonIndex: number) => {
* console.log('Button pressed: ' + buttonIndex);
@@ -123,7 +123,9 @@ export class ActionSheet extends IonicNativePlugin {
* button pressed (1 based, so 1, 2, 3, etc.)
*/
@Cordova()
- show(options?: ActionSheetOptions): Promise { return; }
+ show(options?: ActionSheetOptions): Promise {
+ return;
+ }
/**
@@ -131,5 +133,7 @@ export class ActionSheet extends IonicNativePlugin {
* @returns {Promise} Returns a Promise that resolves when the actionsheet is closed
*/
@Cordova()
- hide(options?: any): Promise { return; }
+ hide(options?: any): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/admob-free/index.ts b/src/@ionic-native/plugins/admob-free/index.ts
index bcd059b3d2..292eac08df 100644
--- a/src/@ionic-native/plugins/admob-free/index.ts
+++ b/src/@ionic-native/plugins/admob-free/index.ts
@@ -1,4 +1,4 @@
-import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
@@ -64,112 +64,6 @@ export interface AdMobFreeRewardVideoConfig {
autoShow?: boolean;
}
-/**
- * @name AdMob Free
- * @description
- *
- * @usage
- * ```typescript
- * import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
- *
- *
- * constructor(private admobFree: AdMobFree) { }
- *
- *
- * ...
- *
- *
- * const bannerConfig: AdMobFreeBannerConfig = {
- * // add your config here
- * // for the sake of this example we will just use the test config
- * isTesting: true,
- * autoShow: true
- * };
- * this.admobFree.banner.config(bannerConfig);
- *
- * this.admobFree.banner.prepare()
- * .then(() => {
- * // banner Ad is ready
- * // if we set autoShow to false, then we will need to call the show method here
- * })
- * .catch(e => console.log(e));
- *
- *
- * ```
- * @interfaces
- * AdMobFreeBannerConfig
- * AdMobFreeInterstitialConfig
- * AdMobFreeRewardVideoConfig
- * @classes
- * AdMobFreeBanner
- * AdMobFreeInterstitial
- * AdMobFreeRewardVideo
- */
-@Plugin({
- pluginName: 'AdMobFree',
- plugin: 'cordova-plugin-admob-free',
- pluginRef: 'admob',
- repo: 'https://github.com/ratson/cordova-plugin-admob-free',
- platforms: ['Android', 'iOS']
-})
-@Injectable()
-export class AdMobFree extends IonicNativePlugin {
-
- /**
- * Convenience object to get event names
- * @type {Object}
- */
- events: any = {
- BANNER_LOAD: 'admob.banner.events.LOAD',
- BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
- BANNER_OPEN: 'admob.banner.events.OPEN',
- BANNER_CLOSE: 'admob.banner.events.CLOSE',
- BANNER_EXIT_APP: 'admob.banner.events.EXIT_APP',
-
- INTERSTITIAL_LOAD: 'admob.interstitial.events.LOAD',
- INTERSTITIAL_LOAD_FAIL: 'admob.interstitial.events.LOAD_FAIL',
- INTERSTITIAL_OPEN: 'admob.interstitial.events.OPEN',
- INTERSTITIAL_CLOSE: 'admob.interstitial.events.CLOSE',
- INTERSTITIAL_EXIT_APP: 'admob.interstitial.events.EXIT_APP',
-
- REWARD_VIDEO_LOAD: 'admob.rewardvideo.events.LOAD',
- REWARD_VIDEO_LOAD_FAIL: 'admob.rewardvideo.events.LOAD_FAIL',
- REWARD_VIDEO_OPEN: 'admob.rewardvideo.events.OPEN',
- REWARD_VIDEO_CLOSE: 'admob.rewardvideo.events.CLOSE',
- REWARD_VIDEO_EXIT_APP: 'admob.rewardvideo.events.EXIT_APP',
- REWARD_VIDEO_START: 'admob.rewardvideo.events.START',
- REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD'
- };
-
- /**
- * Watch an event
- * @param event {string} event name
- * @return {Observable}
- */
- on(event: string): Observable {
- return Observable.fromEvent(document, event);
- }
-
- /**
- * Returns the AdMobFreeBanner object
- * @type {AdMobFreeBanner}
- */
- banner: AdMobFreeBanner = new AdMobFreeBanner();
-
- /**
- * Returns the AdMobFreeInterstitial object
- * @type {AdMobFreeInterstitial}
- */
- interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
-
- /**
- * Returns the AdMobFreeRewardVideo object
- * @type {AdMobFreeRewardVideo}
- */
- rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
-
-}
-
/**
* @hidden
*/
@@ -186,35 +80,45 @@ export class AdMobFreeBanner {
* @return {AdMobFreeBannerConfig}
*/
@Cordova({ sync: true })
- config(options: AdMobFreeBannerConfig): AdMobFreeBannerConfig { return; }
+ config(options: AdMobFreeBannerConfig): AdMobFreeBannerConfig {
+ return;
+ }
/**
* Hide the banner.
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- hide(): Promise { return; }
+ hide(): Promise {
+ return;
+ }
/**
* Create banner.
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- prepare(): Promise { return; }
+ prepare(): Promise {
+ return;
+ }
/**
* Remove the banner.
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- remove(): Promise { return; }
+ remove(): Promise {
+ return;
+ }
/**
* Show the banner.
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- show(): Promise { return; }
+ show(): Promise {
+ return;
+ }
}
@@ -234,28 +138,36 @@ export class AdMobFreeInterstitial {
* @return {AdMobFreeInterstitialConfig}
*/
@Cordova({ sync: true })
- config(options: AdMobFreeInterstitialConfig): AdMobFreeInterstitialConfig { return; }
+ config(options: AdMobFreeInterstitialConfig): AdMobFreeInterstitialConfig {
+ return;
+ }
/**
* Check if interstitial is ready
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- isReady(): Promise { return; }
+ isReady(): Promise {
+ return;
+ }
/**
* Prepare interstitial
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- prepare(): Promise { return; }
+ prepare(): Promise {
+ return;
+ }
/**
* Show the interstitial
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- show(): Promise { return; }
+ show(): Promise {
+ return;
+ }
}
@@ -275,27 +187,138 @@ export class AdMobFreeRewardVideo {
* @return {AdMobFreeRewardVideoConfig}
*/
@Cordova({ sync: true })
- config(options: AdMobFreeRewardVideoConfig): AdMobFreeRewardVideoConfig { return; }
+ config(options: AdMobFreeRewardVideoConfig): AdMobFreeRewardVideoConfig {
+ return;
+ }
/**
* Check if reward video is ready
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- isReady(): Promise { return; }
+ isReady(): Promise {
+ return;
+ }
/**
* Prepare reward video
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- prepare(): Promise { return; }
+ prepare(): Promise {
+ return;
+ }
/**
* Show the reward video
* @return {Promise}
*/
@Cordova({ otherPromise: true })
- show(): Promise { return; }
+ show(): Promise {
+ return;
+ }
+
+}
+
+/**
+ * @name AdMob Free
+ * @description
+ *
+ * @usage
+ * ```typescript
+ * import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
+ *
+ *
+ * constructor(private admobFree: AdMobFree) { }
+ *
+ *
+ * ...
+ *
+ *
+ * const bannerConfig: AdMobFreeBannerConfig = {
+ * // add your config here
+ * // for the sake of this example we will just use the test config
+ * isTesting: true,
+ * autoShow: true
+ * }
+ * this.admobFree.banner.config(bannerConfig);
+ *
+ * this.admobFree.banner.prepare()
+ * .then(() => {
+ * // banner Ad is ready
+ * // if we set autoShow to false, then we will need to call the show method here
+ * })
+ * .catch(e => console.log(e));
+ *
+ *
+ * ```
+ * @interfaces
+ * AdMobFreeBannerConfig
+ * AdMobFreeInterstitialConfig
+ * AdMobFreeRewardVideoConfig
+ * @classes
+ * AdMobFreeBanner
+ * AdMobFreeInterstitial
+ * AdMobFreeRewardVideo
+ */
+@Plugin({
+ pluginName: 'AdMobFree',
+ plugin: 'cordova-plugin-admob-free',
+ pluginRef: 'admob',
+ repo: 'https://github.com/ratson/cordova-plugin-admob-free',
+ platforms: ['Android', 'iOS']
+})
+@Injectable()
+export class AdMobFree extends IonicNativePlugin {
+
+ /**
+ * Convenience object to get event names
+ * @type {Object}
+ */
+ events: any = {
+ BANNER_LOAD: 'admob.banner.events.LOAD',
+ BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
+ BANNER_OPEN: 'admob.banner.events.OPEN',
+ BANNER_CLOSE: 'admob.banner.events.CLOSE',
+ BANNER_EXIT_APP: 'admob.banner.events.EXIT_APP',
+
+ INTERSTITIAL_LOAD: 'admob.interstitial.events.LOAD',
+ INTERSTITIAL_LOAD_FAIL: 'admob.interstitial.events.LOAD_FAIL',
+ INTERSTITIAL_OPEN: 'admob.interstitial.events.OPEN',
+ INTERSTITIAL_CLOSE: 'admob.interstitial.events.CLOSE',
+ INTERSTITIAL_EXIT_APP: 'admob.interstitial.events.EXIT_APP',
+
+ REWARD_VIDEO_LOAD: 'admob.rewardvideo.events.LOAD',
+ REWARD_VIDEO_LOAD_FAIL: 'admob.rewardvideo.events.LOAD_FAIL',
+ REWARD_VIDEO_OPEN: 'admob.rewardvideo.events.OPEN',
+ REWARD_VIDEO_CLOSE: 'admob.rewardvideo.events.CLOSE',
+ REWARD_VIDEO_EXIT_APP: 'admob.rewardvideo.events.EXIT_APP',
+ REWARD_VIDEO_START: 'admob.rewardvideo.events.START',
+ REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD'
+ };
+ /**
+ * Returns the AdMobFreeBanner object
+ * @type {AdMobFreeBanner}
+ */
+ banner: AdMobFreeBanner = new AdMobFreeBanner();
+ /**
+ * Returns the AdMobFreeInterstitial object
+ * @type {AdMobFreeInterstitial}
+ */
+ interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
+ /**
+ * Returns the AdMobFreeRewardVideo object
+ * @type {AdMobFreeRewardVideo}
+ */
+ rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
+
+ /**
+ * Watch an event
+ * @param event {string} event name
+ * @return {Observable}
+ */
+ on(event: string): Observable {
+ return Observable.fromEvent(document, event);
+ }
}
diff --git a/src/@ionic-native/plugins/admob-pro/index.ts b/src/@ionic-native/plugins/admob-pro/index.ts
index ad9c66b1d0..c4cfafc08c 100644
--- a/src/@ionic-native/plugins/admob-pro/index.ts
+++ b/src/@ionic-native/plugins/admob-pro/index.ts
@@ -1,8 +1,15 @@
import { Injectable } from '@angular/core';
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
-export type AdSize = 'SMART_BANNER' | 'BANNER' | 'MEDIUM_RECTANGLE' | 'FULL_BANNER' | 'LEADERBOARD' | 'SKYSCRAPER' | 'CUSTOM';
+export type AdSize =
+ 'SMART_BANNER'
+ | 'BANNER'
+ | 'MEDIUM_RECTANGLE'
+ | 'FULL_BANNER'
+ | 'LEADERBOARD'
+ | 'SKYSCRAPER'
+ | 'CUSTOM';
export interface AdMobOptions {
@@ -167,7 +174,9 @@ export class AdMobPro extends IonicNativePlugin {
* @returns {Promise} Returns a Promise that resolves when the banner is created
*/
@Cordova()
- createBanner(adIdOrOptions: string | AdMobOptions): Promise { return; }
+ createBanner(adIdOrOptions: string | AdMobOptions): Promise {
+ return;
+ }
/**
* Destroy the banner, remove it from screen.
@@ -175,7 +184,8 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
- removeBanner(): void { }
+ removeBanner(): void {
+ }
/**
* Show banner at position
@@ -184,7 +194,8 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
- showBanner(position: number): void { }
+ showBanner(position: number): void {
+ }
/**
* Show banner at custom position
@@ -194,7 +205,8 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
- showBannerAtXY(x: number, y: number): void { }
+ showBannerAtXY(x: number, y: number): void {
+ }
/**
* Hide the banner, remove it from screen, but can show it later
@@ -202,7 +214,8 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
- hideBanner(): void { }
+ hideBanner(): void {
+ }
/**
* Prepare interstitial banner
@@ -210,7 +223,9 @@ export class AdMobPro extends IonicNativePlugin {
* @returns {Promise} Returns a Promise that resolves when interstitial is prepared
*/
@Cordova()
- prepareInterstitial(adIdOrOptions: string | AdMobOptions): Promise { return; }
+ prepareInterstitial(adIdOrOptions: string | AdMobOptions): Promise {
+ return;
+ }
/**
* Show interstitial ad when it's ready
@@ -218,7 +233,8 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
- showInterstitial(): void { }
+ showInterstitial(): void {
+ }
/**
* Prepare a reward video ad
@@ -226,7 +242,9 @@ export class AdMobPro extends IonicNativePlugin {
* @returns {Promise} Returns a Promise that resolves when the ad is prepared
*/
@Cordova()
- prepareRewardVideoAd(adIdOrOptions: string | AdMobOptions): Promise { return; }
+ prepareRewardVideoAd(adIdOrOptions: string | AdMobOptions): Promise {
+ return;
+ }
/**
* Show a reward video ad
@@ -234,7 +252,8 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
- showRewardVideoAd(): void { }
+ showRewardVideoAd(): void {
+ }
/**
* Sets the values for configuration and targeting
@@ -242,14 +261,18 @@ export class AdMobPro extends IonicNativePlugin {
* @returns {Promise} Returns a Promise that resolves when the options have been set
*/
@Cordova()
- setOptions(options: AdMobOptions): Promise { return; }
+ setOptions(options: AdMobOptions): Promise {
+ return;
+ }
/**
* Get user ad settings
* @returns {Promise} Returns a promise that resolves with the ad settings
*/
@Cordova()
- getAdSettings(): Promise { return; }
+ getAdSettings(): Promise {
+ return;
+ }
/**
* Triggered when failed to receive Ad
@@ -258,9 +281,11 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdFailLoad',
- element: document
+ element: 'document'
})
- onAdFailLoad(): Observable { return; }
+ onAdFailLoad(): Observable {
+ return;
+ }
/**
* Triggered when Ad received
@@ -269,9 +294,11 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdLoaded',
- element: document
+ element: 'document'
})
- onAdLoaded(): Observable { return; }
+ onAdLoaded(): Observable {
+ return;
+ }
/**
* Triggered when Ad will be showed on screen
@@ -280,9 +307,11 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdPresent',
- element: document
+ element: 'document'
})
- onAdPresent(): Observable { return; }
+ onAdPresent(): Observable {
+ return;
+ }
/**
* Triggered when user click the Ad, and will jump out of your App
@@ -291,9 +320,11 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdLeaveApp',
- element: document
+ element: 'document'
})
- onAdLeaveApp(): Observable { return; }
+ onAdLeaveApp(): Observable {
+ return;
+ }
/**
* Triggered when dismiss the Ad and back to your App
@@ -302,8 +333,10 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdDismiss',
- element: document
+ element: 'document'
})
- onAdDismiss(): Observable { return; }
+ onAdDismiss(): Observable {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/alipay/index.ts b/src/@ionic-native/plugins/alipay/index.ts
index c0e517e613..c73ef77b22 100644
--- a/src/@ionic-native/plugins/alipay/index.ts
+++ b/src/@ionic-native/plugins/alipay/index.ts
@@ -1,8 +1,7 @@
-import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
-
export interface AlipayOrder {
/**
* appId assigned by Alipay
@@ -77,7 +76,7 @@ export interface AlipayOrder {
* // Should get from server side with sign.
* const alipayOrder: AlipayOrder = {
* ...
- * };
+ * }
*
*
* this.alipay.pay(alipayOrder)
@@ -113,5 +112,7 @@ export class Alipay extends IonicNativePlugin {
* @returns {Promise} Returns a Promise that resolves with the success return, or rejects with an error.
*/
@Cordova()
- pay(order: AlipayOrder | string): Promise { return; }
+ pay(order: AlipayOrder | string): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/android-exoplayer/index.ts b/src/@ionic-native/plugins/android-exoplayer/index.ts
index 26fe488316..6020e0ebad 100644
--- a/src/@ionic-native/plugins/android-exoplayer/index.ts
+++ b/src/@ionic-native/plugins/android-exoplayer/index.ts
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export type AndroidExoPlayerAspectRatio = 'FILL_SCREEN' | 'FIT_SCREEN';
@@ -187,14 +187,16 @@ export class AndroidExoplayer extends IonicNativePlugin {
* @param parameters {AndroidExoPlayerParams} Parameters
* @return {Observable}
*/
- @Cordova({
- observable: true,
- clearFunction: 'close',
- clearWithArgs: false,
- successIndex: 1,
- errorIndex: 2
- })
- show(parameters: AndroidExoPlayerParams): Observable { return; }
+ @Cordova({
+ observable: true,
+ clearFunction: 'close',
+ clearWithArgs: false,
+ successIndex: 1,
+ errorIndex: 2
+ })
+ show(parameters: AndroidExoPlayerParams): Observable {
+ return;
+ }
/**
* Switch stream without disposing of the player.
@@ -203,21 +205,27 @@ export class AndroidExoplayer extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- setStream(url: string, controller: AndroidExoPlayerControllerConfig): Promise { return; }
+ setStream(url: string, controller: AndroidExoPlayerControllerConfig): Promise {
+ return;
+ }
/**
* Will pause if playing and play if paused
* @return {Promise}
*/
@Cordova()
- playPause(): Promise { return; }
+ playPause(): Promise {
+ return;
+ }
/**
* Stop playing.
* @return {Promise}
*/
@Cordova()
- stop(): Promise { return; }
+ stop(): Promise {
+ return;
+ }
/**
* Jump to a particular position.
@@ -225,7 +233,9 @@ export class AndroidExoplayer extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- seekTo(milliseconds: number): Promise { return; }
+ seekTo(milliseconds: number): Promise {
+ return;
+ }
/**
* Jump to a particular time relative to the current position.
@@ -233,28 +243,36 @@ export class AndroidExoplayer extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- seekBy(milliseconds: number): Promise { return; }
+ seekBy(milliseconds: number): Promise {
+ return;
+ }
/**
* Get the current player state.
* @return {Promise}
*/
@Cordova()
- getState(): Promise { return; }
+ getState(): Promise {
+ return;
+ }
/**
* Show the controller.
* @return {Promise}
*/
@Cordova()
- showController(): Promise { return; }
+ showController(): Promise {
+ return;
+ }
/**
* Hide the controller.
* @return {Promise}
*/
@Cordova()
- hideController(): Promise { return; }
+ hideController(): Promise {
+ return;
+ }
/**
* Update the controller configuration.
@@ -262,12 +280,16 @@ export class AndroidExoplayer extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- setController(controller: AndroidExoPlayerControllerConfig): Promise { return; }
+ setController(controller: AndroidExoPlayerControllerConfig): Promise {
+ return;
+ }
/**
* Close and dispose of player, call before destroy.
* @return {Promise}
*/
@Cordova()
- close(): Promise { return; }
+ close(): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/android-fingerprint-auth/index.ts b/src/@ionic-native/plugins/android-fingerprint-auth/index.ts
index 2366e86bbf..c983a02e7c 100644
--- a/src/@ionic-native/plugins/android-fingerprint-auth/index.ts
+++ b/src/@ionic-native/plugins/android-fingerprint-auth/index.ts
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AFAAuthOptions {
@@ -177,7 +177,9 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- encrypt(options: AFAAuthOptions): Promise { return; }
+ encrypt(options: AFAAuthOptions): Promise {
+ return;
+ }
/**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
@@ -185,19 +187,25 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- decrypt(options: AFAAuthOptions): Promise { return; }
+ decrypt(options: AFAAuthOptions): Promise {
+ return;
+ }
/**
* Check if service is available
* @returns {Promise} Returns a Promise that resolves if fingerprint auth is available on the device
*/
@Cordova()
- isAvailable(): Promise<{ isAvailable: boolean, isHardwareDetected: boolean, hasEnrolledFingerprints: boolean }> { return; }
+ isAvailable(): Promise<{ isAvailable: boolean, isHardwareDetected: boolean, hasEnrolledFingerprints: boolean }> {
+ return;
+ }
/**
* Delete the cipher used for encryption and decryption by username
* @returns {Promise} Returns a Promise that resolves if the cipher was successfully deleted
*/
@Cordova()
- delete(options: { clientId: string; username: string; }): Promise<{ deleted: boolean }> { return; }
+ delete(options: { clientId: string; username: string; }): Promise<{ deleted: boolean }> {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/android-full-screen/index.ts b/src/@ionic-native/plugins/android-full-screen/index.ts
index 8971f6dada..e9364953ff 100644
--- a/src/@ionic-native/plugins/android-full-screen/index.ts
+++ b/src/@ionic-native/plugins/android-full-screen/index.ts
@@ -1,9 +1,9 @@
import { Injectable } from '@angular/core';
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* Bit flag values for setSystemUiVisibility()
- * @see https://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)
+ * @see https://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)
*/
export enum AndroidSystemUiFlags {
/** View has requested the system UI (status bar) to be visible (the default). SYSTEM_UI_FLAG_VISIBLE */
@@ -64,63 +64,81 @@ export class AndroidFullScreen extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- isSupported(): Promise { return; }
+ isSupported(): Promise {
+ return;
+ }
/**
* Is immersive mode supported?
* @return {Promise}
*/
@Cordova()
- isImmersiveModeSupported(): Promise { return; }
+ isImmersiveModeSupported(): Promise {
+ return;
+ }
/**
* The width of the screen in immersive mode.
* @return {Promise}
*/
@Cordova()
- immersiveWidth(): Promise { return; }
+ immersiveWidth(): Promise {
+ return;
+ }
/**
* The height of the screen in immersive mode.
* @return {Promise}
*/
@Cordova()
- immersiveHeight(): Promise { return; }
+ immersiveHeight(): Promise {
+ return;
+ }
/**
* Hide system UI until user interacts.
* @return {Promise}
*/
@Cordova()
- leanMode(): Promise { return; }
+ leanMode(): Promise {
+ return;
+ }
/**
* Show system UI.
* @return {Promise}
*/
@Cordova()
- showSystemUI(): Promise { return; }
+ showSystemUI(): Promise {
+ return;
+ }
/**
* Extend your app underneath the status bar (Android 4.4+ only).
* @return {Promise}
*/
@Cordova()
- showUnderStatusBar(): Promise { return; }
+ showUnderStatusBar(): Promise {
+ return;
+ }
/**
* Extend your app underneath the system UI (Android 4.4+ only).
* @return {Promise}
*/
@Cordova()
- showUnderSystemUI(): Promise { return; }
+ showUnderSystemUI(): Promise {
+ return;
+ }
/**
* Hide system UI and keep it hidden (Android 4.4+ only).
* @return {Promise}
*/
@Cordova()
- immersiveMode(): Promise { return; }
+ immersiveMode(): Promise {
+ return;
+ }
/**
* Manually set the the system UI to a custom mode. This mirrors the Android method of the same name. (Android 4.4+ only).
@@ -129,5 +147,7 @@ export class AndroidFullScreen extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- setSystemUiVisibility(visibility: AndroidSystemUiFlags): Promise { return; }
+ setSystemUiVisibility(visibility: AndroidSystemUiFlags): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/android-permissions/index.ts b/src/@ionic-native/plugins/android-permissions/index.ts
index 6ee438268d..67725c6031 100644
--- a/src/@ionic-native/plugins/android-permissions/index.ts
+++ b/src/@ionic-native/plugins/android-permissions/index.ts
@@ -1,4 +1,4 @@
-import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -199,7 +199,9 @@ export class AndroidPermissions extends IonicNativePlugin {
* @return {Promise} Returns a promise
*/
@Cordova()
- checkPermission(permission: string): Promise { return; }
+ checkPermission(permission: string): Promise {
+ return;
+ }
/**
* Request permission
@@ -207,7 +209,9 @@ export class AndroidPermissions extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- requestPermission(permission: string): Promise { return; }
+ requestPermission(permission: string): Promise {
+ return;
+ }
/**
* Request permissions
@@ -215,7 +219,9 @@ export class AndroidPermissions extends IonicNativePlugin {
* @return {Promise} Returns a promise
*/
@Cordova()
- requestPermissions(permissions: string[]): Promise { return; }
+ requestPermissions(permissions: string[]): Promise {
+ return;
+ }
/**
* This function still works now, will not support in the future.
@@ -223,6 +229,8 @@ export class AndroidPermissions extends IonicNativePlugin {
* @return {Promise} Returns a promise
*/
@Cordova()
- hasPermission(permission: string): Promise { return; }
+ hasPermission(permission: string): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/app-availability/index.ts b/src/@ionic-native/plugins/app-availability/index.ts
index 3011921b00..4542998b8e 100644
--- a/src/@ionic-native/plugins/app-availability/index.ts
+++ b/src/@ionic-native/plugins/app-availability/index.ts
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name App Availability
@@ -48,6 +48,8 @@ export class AppAvailability extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- check(app: string): Promise { return; }
+ check(app: string): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/app-minimize/index.ts b/src/@ionic-native/plugins/app-minimize/index.ts
index 5179a9b06c..ec5bd0783c 100644
--- a/src/@ionic-native/plugins/app-minimize/index.ts
+++ b/src/@ionic-native/plugins/app-minimize/index.ts
@@ -1,4 +1,4 @@
-import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -37,6 +37,8 @@ export class AppMinimize extends IonicNativePlugin {
* @return {Promise}
*/
@Cordova()
- minimize(): Promise { return; }
+ minimize(): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/app-preferences/index.ts b/src/@ionic-native/plugins/app-preferences/index.ts
index 6b7924315f..19389a8319 100644
--- a/src/@ionic-native/plugins/app-preferences/index.ts
+++ b/src/@ionic-native/plugins/app-preferences/index.ts
@@ -1,4 +1,4 @@
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
@@ -40,7 +40,9 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
- fetch(dict: string, key?: string): Promise { return; }
+ fetch(dict: string, key?: string): Promise {
+ return;
+ }
/**
* Set a preference value
@@ -67,7 +69,9 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
- remove(dict: string, key?: string): Promise { return; }
+ remove(dict: string, key?: string): Promise {
+ return;
+ }
/**
* Clear preferences
@@ -77,7 +81,9 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
- clearAll(): Promise { return; }
+ clearAll(): Promise {
+ return;
+ }
/**
* Show native preferences interface
@@ -87,7 +93,9 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
- show(): Promise { return; }
+ show(): Promise {
+ return;
+ }
/**
* Show native preferences interface
@@ -98,7 +106,9 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
observable: true
})
- watch(subscribe: boolean): Observable { return; }
+ watch(subscribe: boolean): Observable {
+ return;
+ }
/**
* Return named configuration context
@@ -111,13 +121,17 @@ export class AppPreferences extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
- suite(suiteName: string): any { return; }
+ suite(suiteName: string): any {
+ return;
+ }
@Cordova({
platforms: ['iOS'],
sync: true
})
- iosSuite(suiteName: string): any { return; }
+ iosSuite(suiteName: string): any {
+ return;
+ }
/**
* Return cloud synchronized configuration context
@@ -127,7 +141,9 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
platforms: ['iOS', 'Windows', 'Windows Phone 8']
})
- cloudSync(): Object { return; }
+ cloudSync(): Object {
+ return;
+ }
/**
* Return default configuration context
@@ -137,6 +153,8 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
platforms: ['iOS', 'Windows', 'Windows Phone 8']
})
- defaults(): Object { return; }
+ defaults(): Object {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/app-rate/index.ts b/src/@ionic-native/plugins/app-rate/index.ts
index 6eb6b2cb6b..8204dacf0b 100644
--- a/src/@ionic-native/plugins/app-rate/index.ts
+++ b/src/@ionic-native/plugins/app-rate/index.ts
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
-import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AppRatePreferences {
@@ -121,7 +121,7 @@ export interface AppUrls {
* ios: '',
* android: 'market://details?id=',
* windows: 'ms-windows-store://review/?ProductId='
- * };
+ * }
*
* this.appRate.promptForRating(true);
*
@@ -133,7 +133,7 @@ export interface AppUrls {
* android: 'market://details?id=',
* windows: 'ms-windows-store://review/?ProductId='
* }
- * };
+ * }
*
* this.appRate.promptForRating(false);
* ```
@@ -158,7 +158,7 @@ export class AppRate extends IonicNativePlugin {
* Configure various settings for the Rating View.
* See table below for options
*/
- @CordovaProperty
+ @CordovaProperty()
preferences: AppRatePreferences;
/**
@@ -166,12 +166,14 @@ export class AppRate extends IonicNativePlugin {
* @param {boolean} immediately Show the rating prompt immediately.
*/
@Cordova()
- promptForRating(immediately: boolean): void { };
+ promptForRating(immediately: boolean): void {
+ }
/**
* Immediately send the user to the app store rating page
*/
@Cordova()
- navigateToAppStore(): void { };
+ navigateToAppStore(): void {
+ }
}
diff --git a/src/@ionic-native/plugins/app-update/index.ts b/src/@ionic-native/plugins/app-update/index.ts
index 3b2158ac68..a423c5d033 100644
--- a/src/@ionic-native/plugins/app-update/index.ts
+++ b/src/@ionic-native/plugins/app-update/index.ts
@@ -1,4 +1,4 @@
-import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -49,5 +49,7 @@ export class AppUpdate extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
- checkAppUpdate(updateUrl: string): Promise { return; }
+ checkAppUpdate(updateUrl: string): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/app-version/index.ts b/src/@ionic-native/plugins/app-version/index.ts
index 1962cdebd3..8ce241acd8 100644
--- a/src/@ionic-native/plugins/app-version/index.ts
+++ b/src/@ionic-native/plugins/app-version/index.ts
@@ -1,6 +1,5 @@
import { Injectable } from '@angular/core';
-import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
-
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
@@ -41,27 +40,35 @@ export class AppVersion extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- getAppName(): Promise { return; }
+ getAppName(): Promise {
+ return;
+ }
/**
* Returns the package name of the app
* @returns {Promise}
*/
@Cordova()
- getPackageName(): Promise { return; }
+ getPackageName(): Promise {
+ return;
+ }
/**
* Returns the build identifier of the app
* @returns {Promise}
*/
@Cordova()
- getVersionCode(): Promise { return; }
+ getVersionCode(): Promise {
+ return;
+ }
/**
* Returns the version of the app
* @returns {Promise}
*/
@Cordova()
- getVersionNumber(): Promise { return; }
+ getVersionNumber(): Promise {
+ return;
+ }
}
diff --git a/src/@ionic-native/plugins/apple-pay/index.ts b/src/@ionic-native/plugins/apple-pay/index.ts
index 1995cb4965..5e06ffc8c6 100644
--- a/src/@ionic-native/plugins/apple-pay/index.ts
+++ b/src/@ionic-native/plugins/apple-pay/index.ts
@@ -1,15 +1,22 @@
-import {Injectable} from '@angular/core';
-import {Observable} from 'rxjs/Observable';
-import {
- Plugin,
- Cordova,
- IonicNativePlugin
-} from '@ionic-native/core';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs/Observable';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
-export type IMakePayments = 'This device can make payments and has a supported card' | 'This device cannot make payments.' | 'This device can make payments but has no supported cards';
+export type IMakePayments =
+ 'This device can make payments and has a supported card'
+ | 'This device cannot make payments.'
+ | 'This device can make payments but has no supported cards';
export type IShippingType = 'shipping' | 'delivery' | 'store' | 'service';
-export type IBillingRequirement = 'none' | 'all' | 'postcode' | 'name' | 'email' | 'phone';
-export type ITransactionStatus = 'success' | 'failure' | 'invalid-billing-address' | 'invalid-shipping-address' | 'invalid-shipping-contact' | 'require-pin' | 'incorrect-pin' | 'locked-pin';
+export type IBillingRequirement = 'none' | 'all' | 'postcode' | 'name' | 'email' | 'phone';
+export type ITransactionStatus =
+ 'success'
+ | 'failure'
+ | 'invalid-billing-address'
+ | 'invalid-shipping-address'
+ | 'invalid-shipping-contact'
+ | 'require-pin'
+ | 'incorrect-pin'
+ | 'locked-pin';
export type ICompleteTransaction = 'Payment status applied.';
export type IUpdateItemsAndShippingStatus = 'Updated List Info' | 'Did you make a payment request?';
@@ -50,12 +57,14 @@ export interface IOrderItem {
label: string;
amount: number;
}
-export interface IShippingMethod {
+
+export interface IShippingMethod {
identifier: string;
label: string;
detail: string;
amount: number;
}
+
export interface IOrderItemsAndShippingMethods {
items: IOrderItem[];
shippingMethods?: IShippingMethod[];
@@ -221,7 +230,7 @@ export class ApplePay extends IonicNativePlugin {
* this.paySheetItems.shippingCost = {
* label: 'Shipping Cost',
* amount: shippingMethod[0].amount
- * };
+ * }
* this.applePay.updateItemsAndShippingMethods(this.paySheetItems, shippingMethods);
* });
*/
diff --git a/src/@ionic-native/plugins/appodeal/index.ts b/src/@ionic-native/plugins/appodeal/index.ts
index 5d72981f12..cae6a0b023 100644
--- a/src/@ionic-native/plugins/appodeal/index.ts
+++ b/src/@ionic-native/plugins/appodeal/index.ts
@@ -1,4 +1,4 @@
-import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
+import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
@@ -46,14 +46,17 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType
*/
@Cordova()
- initialize(appKey: string, adType: number): void { };
+ initialize(appKey: string, adType: number): void {
+ }
/**
* check if SDK has been initialized
* @returns {Promise}
*/
@Cordova()
- isInitialized(): Promise { return; };
+ isInitialized(): Promise {
+ return;
+ }
/**
* show ad of specified type
@@ -61,7 +64,9 @@ export class Appodeal extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- show(adType: number): Promise { return; };
+ show(adType: number): Promise {
+ return;
+ }
/**
* show ad of specified type with placement options
@@ -70,24 +75,26 @@ export class Appodeal extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- showWithPlacement(
- adType: number,
- placement: any
- ): Promise { return; };
+ showWithPlacement(adType: number,
+ placement: any): Promise {
+ return;
+ }
/**
* hide ad of specified type
* @param {number} adType
*/
@Cordova()
- hide(adType: number): void { };
+ hide(adType: number): void {
+ }
/**
* confirm use of ads of specified type
* @param {number} adType
*/
@Cordova()
- confirm(adType: number): void { };
+ confirm(adType: number): void {
+ }
/**
* check if ad of specified type has been loaded
@@ -95,7 +102,9 @@ export class Appodeal extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- isLoaded(adType: number): Promise { return; };
+ isLoaded(adType: number): Promise {
+ return;
+ }
/**
* check if ad of specified
@@ -103,7 +112,9 @@ export class Appodeal extends IonicNativePlugin {
* @returns {Promise}
*/
@Cordova()
- isPrecache(adType: number): Promise { return; };
+ isPrecache(adType: number): Promise {
+ return;
+ }
/**
*
@@ -111,75 +122,87 @@ export class Appodeal extends IonicNativePlugin {
* @param autoCache
*/
@Cordova()
- setAutoCache(adType: number, autoCache: any): void { };
+ setAutoCache(adType: number, autoCache: any): void {
+ }
/**
* forcefully cache an ad by type
* @param {number} adType
*/
@Cordova()
- cache(adType: number): void { };
+ cache(adType: number): void {
+ }
/**
*
* @param {boolean} set
*/
@Cordova()
- setOnLoadedTriggerBoth(set: boolean): void { };
+ setOnLoadedTriggerBoth(set: boolean): void {
+ }
/**
* enable or disable Smart Banners
* @param {boolean} enabled
*/
@Cordova()
- setSmartBanners(enabled: boolean): void { };
+ setSmartBanners(enabled: boolean): void {
+ }
/**
* enable or disable banner backgrounds
* @param {boolean} enabled
*/
@Cordova()
- setBannerBackground(enabled: boolean): void { };
+ setBannerBackground(enabled: boolean): void {
+ }
/**
* enable or disable banner animations
* @param {boolean} enabled
*/
@Cordova()
- setBannerAnimation(enabled: boolean): void { };
+ setBannerAnimation(enabled: boolean): void {
+ }
/**
*
* @param value
*/
@Cordova()
- set728x90Banners(value: any): void { };
+ set728x90Banners(value: any): void {
+ }
/**
* enable or disable logging
* @param {boolean} logging
*/
@Cordova()
- setLogging(logging: boolean): void { };
+ setLogging(logging: boolean): void {
+ }
/**
* enable or disable testing mode
* @param {boolean} testing
*/
@Cordova()
- setTesting(testing: boolean): void { };
+ setTesting(testing: boolean): void {
+ }
/**
* reset device ID
*/
@Cordova()
- resetUUID(): void { };
+ resetUUID(): void {
+ }
/**
* get version of Appdeal SDK
*/
@Cordova()
- getVersion(): Promise { return; };
+ getVersion(): Promise {
+ return;
+ }
/**
*
@@ -187,7 +210,8 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType
*/
@Cordova()
- disableNetwork(network?: string, adType?: number): void { };
+ disableNetwork(network?: string, adType?: number): void {
+ }
/**
*
@@ -195,54 +219,62 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType
*/
@Cordova()
- disableNetworkType(network?: string, adType?: number): void { };
+ disableNetworkType(network?: string, adType?: number): void {
+ }
/**
* disable Location permissions for Appodeal SDK
*/
@Cordova()
- disableLocationPermissionCheck(): void { };
+ disableLocationPermissionCheck(): void {
+ }
/**
* disable Storage permissions for Appodeal SDK
*/
@Cordova()
- disableWriteExternalStoragePermissionCheck(): void { };
+ disableWriteExternalStoragePermissionCheck(): void {
+ }
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
- enableInterstitialCallbacks(enabled: boolean): void { };
+ enableInterstitialCallbacks(enabled: boolean): void {
+ }
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
- enableSkippableVideoCallbacks(enabled: boolean): void { };
+ enableSkippableVideoCallbacks(enabled: boolean): void {
+ }
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
- enableNonSkippableVideoCallbacks(enabled: boolean): void { };
+ enableNonSkippableVideoCallbacks(enabled: boolean): void {
+ }
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
- enableBannerCallbacks(enabled: boolean): void { };
+ enableBannerCallbacks(enabled: boolean): void {
+ }
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
- enableRewardedVideoCallbacks(enabled: boolean): void { };
+ enableRewardedVideoCallbacks(enabled: boolean): void {
+ }
/**
*
@@ -250,7 +282,8 @@ export class Appodeal extends IonicNativePlugin {
* @param {boolean} value
*/
@Cordova()
- setCustomBooleanRule(name: string, value: boolean): void { };
+ setCustomBooleanRule(name: string, value: boolean): void {
+ }
/**
*
@@ -258,7 +291,8 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} value
*/
@Cordova()
- setCustomIntegerRule(name: string, value: number): void { };
+ setCustomIntegerRule(name: string, value: number): void {
+ }
/**
* set rule with float value
@@ -266,7 +300,8 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} value
*/
@Cordova()
- setCustomDoubleRule(name: string, value: number): void { };
+ setCustomDoubleRule(name: string, value: number): void {
+ }
/**
* set rule with string value
@@ -274,243 +309,302 @@ export class Appodeal extends IonicNativePlugin {
* @param {string} value
*/
@Cordova()
- setCustomStringRule(name: string, value: string): void { };
+ setCustomStringRule(name: string, value: string): void {
+ }
/**
* set ID preference in Appodeal for current user
* @param id
*/
@Cordova()
- setUserId(id: any): void { };
+ setUserId(id: any): void {
+ }
/**
* set Email preference in Appodeal for current user
* @param email
*/
@Cordova()
- setEmail(email: any): void { };
+ setEmail(email: any): void {
+ }
/**
* set Birthday preference in Appodeal for current user
* @param birthday
*/
@Cordova()
- setBirthday(birthday: any): void { };
+ setBirthday(birthday: any): void {
+ }
/**
* et Age preference in Appodeal for current user
* @param age
*/
@Cordova()
- setAge(age: any): void { };
+ setAge(age: any): void {
+ }
/**
* set Gender preference in Appodeal for current user
* @param gender
*/
@Cordova()
- setGender(gender: any): void { };
+ setGender(gender: any): void {
+ }
/**
* set Occupation preference in Appodeal for current user
* @param occupation
*/
@Cordova()
- setOccupation(occupation: any): void { };
+ setOccupation(occupation: any): void {
+ }
/**
* set Relation preference in Appodeal for current user
* @param relation
*/
@Cordova()
- setRelation(relation: any): void { };
+ setRelation(relation: any): void {
+ }
/**
* set Smoking preference in Appodeal for current user
* @param smoking
*/
@Cordova()
- setSmoking(smoking: any): void { };
+ setSmoking(smoking: any): void {
+ }
/**
* set Alcohol preference in Appodeal for current user
* @param alcohol
*/
@Cordova()
- setAlcohol(alcohol: any): void { };
+ setAlcohol(alcohol: any): void {
+ }
/**
* set Interests preference in Appodeal for current user
* @param interests
*/
@Cordova()
- setInterests(interests: any): void { };
+ setInterests(interests: any): void {
+ }
@Cordova({
eventObservable: true,
event: 'onInterstitialLoaded',
- element: document
+ element: 'document'
})
- onInterstitialLoaded(): Observable { return; }
+ onInterstitialLoaded(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onInterstitialFailedToLoad',
- element: document
+ element: 'document'
})
- onInterstitialFailedToLoad(): Observable { return; }
+ onInterstitialFailedToLoad(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onInterstitialShown',
- element: document
+ element: 'document'
})
- onInterstitialShown(): Observable { return; }
+ onInterstitialShown(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onInterstitialClicked',
- element: document
+ element: 'document'
})
- onInterstitialClicked(): Observable { return; }
+ onInterstitialClicked(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onInterstitialClosed',
- element: document
+ element: 'document'
})
- onInterstitialClosed(): Observable { return; }
+ onInterstitialClosed(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onSkippableVideoLoaded',
- element: document
+ element: 'document'
})
- onSkippableVideoLoaded(): Observable { return; }
+ onSkippableVideoLoaded(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onSkippableVideoFailedToLoad',
- element: document
+ element: 'document'
})
- onSkippableVideoFailedToLoad(): Observable { return; }
+ onSkippableVideoFailedToLoad(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onSkippableVideoShown',
- element: document
+ element: 'document'
})
- onSkippableVideoShown(): Observable { return; }
+ onSkippableVideoShown(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onSkippableVideoFinished',
- element: document
+ element: 'document'
})
- onSkippableVideoFinished(): Observable { return; }
+ onSkippableVideoFinished(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onSkippableVideoClosed',
- element: document
+ element: 'document'
})
- onSkippableVideoClosed(): Observable { return; }
+ onSkippableVideoClosed(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onRewardedVideoLoaded',
- element: document
+ element: 'document'
})
- onRewardedVideoLoaded(): Observable { return; }
+ onRewardedVideoLoaded(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onRewardedVideoFailedToLoad',
- element: document
+ element: 'document'
})
- onRewardedVideoFailedToLoad(): Observable { return; }
+ onRewardedVideoFailedToLoad(): Observable {
+ return;
+ }
@Cordova({
eventObservable: true,
event: 'onRewardedVideoShown',
- element: document
+ element: 'document'
})
- onRewardedVideoShown(): Observable