From a7706fef5853bf5fbc584fd6089baa515db21880 Mon Sep 17 00:00:00 2001 From: Mosab A <47486787+mosabab@users.noreply.github.com> Date: Sun, 12 Jan 2020 16:46:24 +0200 Subject: [PATCH 01/26] Update readme.md by adding missing info (#239) * Update readme.md by adding missing info * Update README.md * Update README.md * Update README.md * Update text as standard * Update README.md * Update README.md --- README.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d377a76..dd5a20c 100644 --- a/README.md +++ b/README.md @@ -91,17 +91,19 @@ projectRoot ```xml - - - - - + + + + + + - - - - - + + + + + + @@ -159,6 +161,8 @@ Apple is moving away from legacy launch images. There is no official support for The preferred method of providing launch images is to use a launch storyboard. For native app developers, the ideal launch storyboard is an unpopulated version of the app's user interface at launch. For non-native app developers who don't wish to learn Interface Builder, however, this plugin simulates the legacy launch image method as much as is feasible. +**Note:** Since iOS 11, for iPhone X devices and greater (with notch screen), you should switch to the new storyboard splash screens, taking into account to add `viewport-fit=cover` to the viewport meta tag in your `index.html` file to display the app correctly like so: `` and make some modification to your app style by adding: `padding: env(safe-area-inset-top)` to your `index.css` file to avoid the unsafe areas behind notches in the screen. + #### Legacy launch images If you choose to use legacy launch images, you will use the following syntax in `config.xml`: From 054387e02a1da399d6c5b0aec7897c736e544ca8 Mon Sep 17 00:00:00 2001 From: Peter Maatman Date: Sun, 12 Jan 2020 19:30:00 +0100 Subject: [PATCH 02/26] Fix #235: update homepage to github readme page (#236) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf0d9e0..2813482 100644 --- a/package.json +++ b/package.json @@ -47,5 +47,5 @@ "devDependencies": { "jshint": "^2.6.0" }, - "homepage": "https://cordova.apache.org/" + "homepage": "https://github.com/apache/cordova-plugin-splashscreen#readme" } From 46acbadd70f0d822cd049d046dd224588ffce45e Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Sat, 28 Mar 2020 15:30:26 +0000 Subject: [PATCH 03/26] ci: updates Node.js versions (#252) --- .appveyor.yml | 14 +++++++++----- .travis.yml | 21 +++++++++++---------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index a7b2426..6a3c939 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -12,12 +12,16 @@ image: - Visual Studio 2017 environment: - nodejs_version: "4" matrix: - - PLATFORM: windows-10-store - JUST_BUILD: --justBuild + - nodejs_version: "10" + - nodejs_version: "12" + +platform: + - x86 + - x64 + install: - - npm cache clean -f + - ps: Install-Product node $env:nodejs_version - node --version - npm install -g cordova-paramedic@https://github.com/apache/cordova-paramedic.git - npm install -g cordova @@ -25,4 +29,4 @@ install: build: off test_script: - - cordova-paramedic --config pr\%PLATFORM% --plugin . %JUST_BUILD% + - cordova-paramedic --config pr\windows-10-store --plugin . --justBuild diff --git a/.travis.yml b/.travis.yml index 82f49b1..55f2351 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -# This Travis configuration file is built after a Cordova Paramedic +# This Travis configuration file is built after a Cordova Paramedic # specific template with minimal modifications and adaptations: # https://github.com/apache/cordova-paramedic/blob/master/.travis.yml @@ -12,18 +12,18 @@ addons: env: global: - SAUCE_USERNAME=snay - - TRAVIS_NODE_VERSION=8 + - TRAVIS_NODE_VERSION=12 - ANDROID_API_LEVEL=28 - ANDROID_BUILD_TOOLS_VERSION=28.0.3 language: node_js -node_js: 8 +node_js: 12 # yaml anchor/alias: https://medium.com/@tommyvn/travis-yml-dry-with-anchors-8b6a3ac1b027 _ios: &_ios os: osx - osx_image: xcode10.2 + osx_image: xcode10.3 _android: &_android language: android @@ -35,9 +35,9 @@ _android: &_android - build-tools-$ANDROID_BUILD_TOOLS_VERSION - android-$ANDROID_API_LEVEL licenses: - - 'android-sdk-preview-license-.+' - - 'android-sdk-license-.+' - - 'google-gdk-license-.+' + - "android-sdk-preview-license-.+" + - "android-sdk-license-.+" + - "google-gdk-license-.+" matrix: include: @@ -81,13 +81,13 @@ matrix: before_install: # manually install Node for `language: android` - - if [[ "$PLATFORM" =~ android ]]; then nvm install $TRAVIS_NODE_VERSION; fi + - if [[ "$PLATFORM" =~ android ]]; then nvm install $TRAVIS_NODE_VERSION; fi - node --version - if [[ "$PLATFORM" =~ android ]]; then gradle --version; fi - if [[ "$PLATFORM" =~ ios ]]; then npm install -g ios-deploy; fi - npm install -g cordova # install paramedic if not running on paramedic repo - - if ! [[ "$TRAVIS_REPO_SLUG" =~ cordova-paramedic ]]; then npm install -g github:apache/cordova-paramedic; fi + - if ! [[ "$TRAVIS_REPO_SLUG" =~ cordova-paramedic ]]; then npm install -g github:apache/cordova-paramedic; fi install: - npm install @@ -116,7 +116,8 @@ before_script: echo "PARAMEDIC_BUILDNAME=$PARAMEDIC_BUILDNAME" script: - $TEST_COMMAND - - if [[ "$ADDITIONAL_TESTS_DIR" != "" ]]; then + - | + if [[ "$ADDITIONAL_TESTS_DIR" != "" ]]; then cd $ADDITIONAL_TESTS_DIR && npm install && npm test; else $PARAMEDIC_COMMAND --config ./pr/$PLATFORM --plugin $PARAMEDIC_PLUGIN_TO_TEST --buildName $PARAMEDIC_BUILDNAME; From 35c41091d1d1117d8dcf316c0bc27e5d8397ebf4 Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Sat, 28 Mar 2020 15:30:39 +0000 Subject: [PATCH 04/26] chore(npm): adds ignore list (#251) --- .npmignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..45e3c38 --- /dev/null +++ b/.npmignore @@ -0,0 +1,3 @@ +.* +appveyor.yml +tests From 06a76567b9b8ab04a016a92c6767b98009782a36 Mon Sep 17 00:00:00 2001 From: Niklas Merz Date: Mon, 13 Apr 2020 14:32:32 +0200 Subject: [PATCH 05/26] Update CONTRIBUTING.md --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4c8e6a5..21a93d7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,13 +25,13 @@ Anyone can contribute to Cordova. And we need your contributions. There are multiple ways to contribute: report bugs, improve the docs, and contribute code. - -For instructions on this, start with the + +For instructions on this, start with the [contribution overview](http://cordova.apache.org/contribute/). The details are explained there, but the important items are: - - Sign and submit an Apache ICLA (Contributor License Agreement). - - Have a Jira issue open that corresponds to your contribution. + - Check for Github issues that corresponds to your contribution and link or create them if necessary. - Run the tests so your patch doesn't break existing functionality. We look forward to your contributions! + From ed3049817743809576af248f263237e72ff58f92 Mon Sep 17 00:00:00 2001 From: Erisu Date: Wed, 22 Apr 2020 13:42:38 +0900 Subject: [PATCH 06/26] chore(asf): update git notification settings --- .asf.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .asf.yaml diff --git a/.asf.yaml b/.asf.yaml new file mode 100644 index 0000000..29a6c7c --- /dev/null +++ b/.asf.yaml @@ -0,0 +1,22 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +notifications: + commits: commits@cordova.apache.org + issues: issues@cordova.apache.org + pullrequests_status: issues@cordova.apache.org + pullrequests_comment: issues@cordova.apache.org From ed1db6650c73ebd958ed69f572cfcc69f3166c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Mon, 1 Jun 2020 16:30:24 +0900 Subject: [PATCH 07/26] chore: add cordova-ios requirement <6.0.0 (#261) --- package.json | 3 +++ plugin.xml | 1 + 2 files changed, 4 insertions(+) diff --git a/package.json b/package.json index 2813482..68d322f 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,9 @@ "cordova-android": ">=3.6.0", "cordova-windows": ">=4.4.0" }, + "<6.0.0": { + "cordova-ios": "<6.0.0" + }, "6.0.0": { "cordova": ">100" } diff --git a/plugin.xml b/plugin.xml index 39e635d..08f2f77 100644 --- a/plugin.xml +++ b/plugin.xml @@ -30,6 +30,7 @@ + From 5bc7d0d63f7550a37375dd9635150c89ca3de159 Mon Sep 17 00:00:00 2001 From: Niklas Merz Date: Wed, 3 Jun 2020 19:48:17 +0200 Subject: [PATCH 08/26] Updated version and RELEASENOTES.md for release 5.0.4 (5.0.4) --- RELEASENOTES.md | 12 ++++++++++++ package.json | 2 +- plugin.xml | 2 +- tests/package.json | 2 +- tests/plugin.xml | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 73b2a1e..b674963 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -20,6 +20,18 @@ --> # Release Notes +### 5.0.4 (Jun 03, 2020) +* [GH-261](https://github.com/apache/cordova-plugin-splashscreen/pull/261) chore: add `cordova-ios` requirement <6.0.0 +* chore(asf): update git notification settings +* update CONTRIBUTING.md +* [GH-251](https://github.com/apache/cordova-plugin-splashscreen/pull/251) chore(npm): adds ignore list +* [GH-252](https://github.com/apache/cordova-plugin-splashscreen/pull/252) ci: updates Node.js versions +* [GH-236](https://github.com/apache/cordova-plugin-splashscreen/pull/236) update homepage to github `README` page +* [GH-239](https://github.com/apache/cordova-plugin-splashscreen/pull/239) update `README`.md by adding missing info +* ci(travis): Upgrade node from 6 to 8 +* ci(travis): Remove **Android 4.4**, Add **Android** 9.0 +* [GH-212](https://github.com/apache/cordova-plugin-splashscreen/pull/212) ci(travis): Add ADDITIONAL_TESTS_DIR=./tests/ios + ### 5.0.3 (May 09, 2019) * Update CI configuration and README ([#210](https://github.com/apache/cordova-plugin-splashscreen/pull/210), [#208](https://github.com/apache/cordova-plugin-splashscreen/pull/208), [#198](https://github.com/apache/cordova-plugin-splashscreen/pull/198), [#194](https://github.com/apache/cordova-plugin-splashscreen/pull/194)) * Add or update GitHub pull request and issue template diff --git a/package.json b/package.json index 68d322f..b5ce15a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen", - "version": "5.0.4-dev", + "version": "5.0.4", "description": "Cordova Splashscreen Plugin", "types": "./types/index.d.ts", "cordova": { diff --git a/plugin.xml b/plugin.xml index 08f2f77..f426a56 100644 --- a/plugin.xml +++ b/plugin.xml @@ -20,7 +20,7 @@ + version="5.0.4"> Splashscreen Cordova Splashscreen Plugin Apache 2.0 diff --git a/tests/package.json b/tests/package.json index b1f011c..9baf8bf 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen-tests", - "version": "5.0.4-dev", + "version": "5.0.4", "description": "", "cordova": { "id": "cordova-plugin-splashscreen-tests", diff --git a/tests/plugin.xml b/tests/plugin.xml index 7057144..5f51579 100644 --- a/tests/plugin.xml +++ b/tests/plugin.xml @@ -20,7 +20,7 @@ + version="5.0.4"> Cordova Splashscreen Plugin Tests Apache 2.0 From c1ab711039e016719948ef4913ef522b2e8c4082 Mon Sep 17 00:00:00 2001 From: Niklas Merz Date: Wed, 3 Jun 2020 20:00:51 +0200 Subject: [PATCH 09/26] Incremented plugin version to -dev (5.0.5-dev) --- package.json | 2 +- plugin.xml | 2 +- tests/package.json | 2 +- tests/plugin.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index b5ce15a..d0cb0f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen", - "version": "5.0.4", + "version": "5.0.5-dev", "description": "Cordova Splashscreen Plugin", "types": "./types/index.d.ts", "cordova": { diff --git a/plugin.xml b/plugin.xml index f426a56..ca4c291 100644 --- a/plugin.xml +++ b/plugin.xml @@ -20,7 +20,7 @@ + version="5.0.5-dev"> Splashscreen Cordova Splashscreen Plugin Apache 2.0 diff --git a/tests/package.json b/tests/package.json index 9baf8bf..567a5ae 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen-tests", - "version": "5.0.4", + "version": "5.0.5-dev", "description": "", "cordova": { "id": "cordova-plugin-splashscreen-tests", diff --git a/tests/plugin.xml b/tests/plugin.xml index 5f51579..bb19593 100644 --- a/tests/plugin.xml +++ b/tests/plugin.xml @@ -20,7 +20,7 @@ + version="5.0.5-dev"> Cordova Splashscreen Plugin Tests Apache 2.0 From 048702cb9ccb58ced1fa001675d0789373726f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Sat, 6 Jun 2020 23:34:40 +0900 Subject: [PATCH 10/26] test: force cordova-ios@^5.1.1 (#267) --- tests/ios/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ios/package.json b/tests/ios/package.json index 67f0edc..e6cd139 100644 --- a/tests/ios/package.json +++ b/tests/ios/package.json @@ -5,7 +5,7 @@ "author": "Apache Software Foundation", "license": "Apache Version 2.0", "dependencies": { - "cordova-ios": "*" + "cordova-ios": "^5.1.1" }, "scripts": { "test": "xcodebuild test -workspace CDVSplashScreenTest.xcworkspace -scheme CDVSplashScreenLibTests -destination 'platform=iOS Simulator,name=iPhone 5' CONFIGURATION_BUILD_DIR='/tmp' HEADER_SEARCH_PATHS='$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include'" From 3d66c880bc5299d9530da96a648482c6aad9b9b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Thu, 25 Jun 2020 23:25:33 +0900 Subject: [PATCH 11/26] breaking: bump version 6.0.0-dev (#262) --- package.json | 2 +- plugin.xml | 2 +- tests/package.json | 2 +- tests/plugin.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d0cb0f5..e3989aa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen", - "version": "5.0.5-dev", + "version": "6.0.0-dev", "description": "Cordova Splashscreen Plugin", "types": "./types/index.d.ts", "cordova": { diff --git a/plugin.xml b/plugin.xml index ca4c291..e98a1df 100644 --- a/plugin.xml +++ b/plugin.xml @@ -20,7 +20,7 @@ + version="6.0.0-dev"> Splashscreen Cordova Splashscreen Plugin Apache 2.0 diff --git a/tests/package.json b/tests/package.json index 567a5ae..4d45dd9 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen-tests", - "version": "5.0.5-dev", + "version": "6.0.0-dev", "description": "", "cordova": { "id": "cordova-plugin-splashscreen-tests", diff --git a/tests/plugin.xml b/tests/plugin.xml index bb19593..d45dfb9 100644 --- a/tests/plugin.xml +++ b/tests/plugin.xml @@ -20,7 +20,7 @@ + version="6.0.0-dev"> Cordova Splashscreen Plugin Tests Apache 2.0 From d85e440e1504e1da2b3d0dda97783e5ef751f37f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Fri, 26 Jun 2020 11:56:55 +0900 Subject: [PATCH 12/26] breaking: remove ios platform code from plugin repo (#263) * breaking: remove iOS platform code from plugin repo * chore: update README.md, remove iOS legacy SplashScreen information * chore: simplify local browser tests Note: Even though the implementation of the iOS SplashScreen is integrated into the core of cordova-ios, the documentation is left in this repo. This is because all of the SplashScreen documentation is grouped together on cordova.io and that documentation is pulled from this repo. --- .gitignore | 13 - .jshintignore | 1 - .travis.yml | 20 +- README.md | 147 ++-- package.json | 5 - plugin.xml | 18 - src/ios/CDVSplashScreen.h | 46 -- src/ios/CDVSplashScreen.m | 514 ------------- src/ios/CDVViewController+SplashScreen.h | 28 - src/ios/CDVViewController+SplashScreen.m | 89 --- .../contents.xcworkspacedata | 7 - .../CDVSplashScreenTest.xccheckout | 41 - .../xcschemes/CordovaLib.xcscheme | 77 -- tests/ios/CDVSplashScreenTest/.gitignore | 1 - .../CDVSplashScreenLibTests/ImageNameTest.m | 702 ------------------ .../ImageNameTestDelegates.h | 57 -- .../ImageNameTestDelegates.m | 200 ----- .../CDVSplashScreenLibTests/Info.plist | 44 -- .../project.pbxproj | 505 ------------- .../contents.xcworkspacedata | 7 - .../CDVSplashScreenTest.xccheckout | 41 - .../xcschemes/CDVSplashScreenLib.xcscheme | 77 -- .../CDVSplashScreenLibTests.xcscheme | 96 --- tests/ios/README.md | 40 - tests/ios/package.json | 13 - 25 files changed, 49 insertions(+), 2740 deletions(-) delete mode 100644 .jshintignore delete mode 100644 src/ios/CDVSplashScreen.h delete mode 100644 src/ios/CDVSplashScreen.m delete mode 100644 src/ios/CDVViewController+SplashScreen.h delete mode 100644 src/ios/CDVViewController+SplashScreen.m delete mode 100644 tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata delete mode 100644 tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout delete mode 100644 tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme delete mode 100644 tests/ios/CDVSplashScreenTest/.gitignore delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme delete mode 100644 tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme delete mode 100644 tests/ios/README.md delete mode 100644 tests/ios/package.json diff --git a/.gitignore b/.gitignore index 7d3b1ce..5099a0b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,17 +12,4 @@ Thumbs.db *.swp *.user - - - - - - - - - node_modules - -/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcuserdata/ - -/tests/ios/CDVSplashScreenTest.xcworkspace/xcuserdata/ diff --git a/.jshintignore b/.jshintignore deleted file mode 100644 index 09bc22e..0000000 --- a/.jshintignore +++ /dev/null @@ -1 +0,0 @@ -tests/ios diff --git a/.travis.yml b/.travis.yml index 55f2351..a8aeeaa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,10 +21,6 @@ node_js: 12 # yaml anchor/alias: https://medium.com/@tommyvn/travis-yml-dry-with-anchors-8b6a3ac1b027 -_ios: &_ios - os: osx - osx_image: xcode10.3 - _android: &_android language: android os: linux @@ -41,15 +37,9 @@ _android: &_android matrix: include: - # additional `npm test` in directory - - env: ADDITIONAL_TESTS_DIR=./tests/ios - <<: *_ios - # one local test, without saucelabs - env: PLATFORM=local/browser - <<: *_ios - - env: PLATFORM=local/ios-10.0 - <<: *_ios + os: osx # many tests with saucelabs - env: PLATFORM=browser-chrome @@ -57,13 +47,6 @@ matrix: - env: PLATFORM=browser-safari - env: PLATFORM=browser-edge - - env: PLATFORM=ios-11.3 - <<: *_ios - - env: PLATFORM=ios-12.0 - <<: *_ios - - env: PLATFORM=ios-12.2 - <<: *_ios - - env: PLATFORM=android-5.1 <<: *_android - env: PLATFORM=android-6.0 @@ -84,7 +67,6 @@ before_install: - if [[ "$PLATFORM" =~ android ]]; then nvm install $TRAVIS_NODE_VERSION; fi - node --version - if [[ "$PLATFORM" =~ android ]]; then gradle --version; fi - - if [[ "$PLATFORM" =~ ios ]]; then npm install -g ios-deploy; fi - npm install -g cordova # install paramedic if not running on paramedic repo - if ! [[ "$TRAVIS_REPO_SLUG" =~ cordova-paramedic ]]; then npm install -g github:apache/cordova-paramedic; fi diff --git a/README.md b/README.md index dd5a20c..947e2c1 100644 --- a/README.md +++ b/README.md @@ -29,22 +29,32 @@ description: Control the splash screen for your app. This plugin displays and hides a splash screen while your web application is launching. Using its methods you can also show and hide the splash screen manually. -- [Installation](#installation) -- [Supported Platforms](#supported-platforms) -- [Platform Splash Screen Image Configuration](#platform-splash-screen-image-configuration) - * [Example Configuration](#example-configuration) - * [iOS-specific Information](#ios-specific-information) - * [Windows-specific Information](#windows-specific-information) -- [Preferences](#preferences) - * [config.xml](#configxml) - * [Quirks](#quirks) - + [Android Quirks](#android-quirks) - + [Browser Quirks](#browser-quirks) - + [iOS Quirks](#ios-quirks) - + [Windows Quirks](#windows-quirks) -- [Methods](#methods) - * [splashscreen.hide](#splashscreenhide) - * [splashscreen.show](#splashscreenshow) +- [cordova-plugin-splashscreen](#cordova-plugin-splashscreen) + - [Installation](#installation) + - [Supported Platforms](#supported-platforms) + - [Platform Splash Screen Image Configuration](#platform-splash-screen-image-configuration) + - [Example Configuration](#example-configuration) + - [iOS-specific Information](#ios-specific-information) + - [Launch Storyboard Images](#launch-storyboard-images) + - [Designing Launch Storyboard Images](#designing-launch-storyboard-images) + - [Scale](#scale) + - [Idioms](#idioms) + - [Size classes](#size-classes) + - [Single-image launch screen](#single-image-launch-screen) + - [Multi-image launch screen](#multi-image-launch-screen) + - [Quirks and Known Issues](#quirks-and-known-issues) + - [Windows-specific Information](#windows-specific-information) + - [Preferences](#preferences) + - [config.xml](#configxml) + - [Quirks](#quirks) + - [Android Quirks](#android-quirks) + - [Browser Quirks](#browser-quirks) + - [iOS Quirks](#ios-quirks) + - [Windows Quirks](#windows-quirks) + - [Methods](#methods) + - [splashscreen.hide](#splashscreenhide) + - [iOS Quirk](#ios-quirk) + - [splashscreen.show](#splashscreenshow) ## Installation @@ -107,22 +117,7 @@ projectRoot - - - - - - - - - - - - @@ -151,81 +146,37 @@ projectRoot ### iOS-specific Information -There are two mechanisms for displaying a launch screen on iOS: +Launch storyboard images are sized based on scale, idiom, and size classes. It supports all devices, and can be used with split-screen/slide-over multitasking. -1. Legacy launch images: images are sized exactly for the device's screen size. Does not support the iPad Pro 12.9's native resolution or split-screen/slide-over multitasking. +There is no official support for providing a native-resolution launch image for the iPad Pro 12.9 or for providing launch images that work with split-screen multitasking or slide-over. -2. Launch storyboard images: Images are sized based on scale, idiom, and size classes. Supports all devices, and can be used with split-screen/slide-over multitasking. +**Note:** Since iOS 11, for iPhone X devices and greater (with notch screen), make sure to add `viewport-fit=cover` to the viewport meta tag in your `index.html` file to display the app correctly like so: `` and make some modification to your app style by adding: `padding: env(safe-area-inset-top)` to your `index.css` file to avoid the unsafe areas behind notches in the screen. -Apple is moving away from legacy launch images. There is no official support for providing a native-resolution launch image for the iPad Pro 12.9 or for providing launch images that work with split-screen multitasking or slide-over. If your app doesn't need to support these contexts, then you can continue to use legacy launch images for as long as you like. +#### Launch Storyboard Images -The preferred method of providing launch images is to use a launch storyboard. For native app developers, the ideal launch storyboard is an unpopulated version of the app's user interface at launch. For non-native app developers who don't wish to learn Interface Builder, however, this plugin simulates the legacy launch image method as much as is feasible. +To support newer form factors and split-screen/slide-over multitasking, launch storyboard images are used. -**Note:** Since iOS 11, for iPhone X devices and greater (with notch screen), you should switch to the new storyboard splash screens, taking into account to add `viewport-fit=cover` to the viewport meta tag in your `index.html` file to display the app correctly like so: `` and make some modification to your app style by adding: `padding: env(safe-area-inset-top)` to your `index.css` file to avoid the unsafe areas behind notches in the screen. +- images are not specific to a given device. +- images are scaled to fill the available viewport (while maintaining the aspect ratio). +- the outer edges of the images will be cropped, and the amount will vary based on device an viewport. +- there is no need to provide an image for each possible device, viewport, and orientation; iOS will choose the best image for the situation automatically. -#### Legacy launch images - -If you choose to use legacy launch images, you will use the following syntax in `config.xml`: - -``` - - - - - - - - - -``` - -Technically the filename for the `src` attribute can be anything you want; the filenames are used because they match what will be used when your project is compiled. The width and height attributes determine which launch images are displayed on which devices as follows: - -| width | height | device (orientation) | -|:-----------:|:------------:|:--------------------------------:| -| 320 | 480 | All non-retina iPhones and iPods | -| 640 | 960 | iPhone 4/4s (portrait) | -| 640 | 1136 | iPhone 5/5s/SE (portrait) | -| 750 | 1334 | iPhone 6/6s/7 (portrait) | -| 1242 | 2208 | iPhone 6+/6s+/7+ (portrait) | -| 2208 | 1242 | iPhone 6+/6s+/7+ (landscape) | -| 768 | 1024 | All non-retina iPads (portrait) | -| 1024 | 768 | All non-retina iPads (landscape) | -| 1536 | 2048 | All retina iPads (portrait) | -| 2048 | 1536 | All retina iPads (landscape) | - -Note: It is vitally important that the source image actually matches the size specified in the `width` and `height` attributes. If it does not, the device may fail to render it properly, if at all. - -#### Launch storyboard images - -In order to support newer form factors and split-screen/slide-over multitasking, you should use launch storyboard images. These are similar to the legacy launch images above, but there are crucial differences: - - - images are not specific to a given device. - - - images are scaled to fill the available viewport (while maintaining the aspect ratio). - - - the outer edges of the images will be cropped, and the amount will vary based on device an viewport. - - - there is no need to provide an image for each possible device, viewport, and orientation; iOS will choose the best image for the situation automatically. - -##### Designing launch storyboard images +##### Designing Launch Storyboard Images The key to designing a launch storyboard image is understanding that the edges of the image will almost certainly be cropped. Therefore, one should not place any important information near the edges of any images provided to the launch storyboard. Only the center is a safe area, and this all but guarantees that following Apple's advice of presenting an unpopulated user interface will not work well. Instead, the following tips should enable you to create a launch image that works across a multitude of form factors, viewports, and orientations: - - Important graphics (logos, icons, titles) should be centered. The safe bounding region will vary, so you will need to test to ensure that the important graphics are never cropped. Better yet, don't supply any important graphics in the first place. +- Important graphics (logos, icons, titles) should be centered. The safe bounding region will vary, so you will need to test to ensure that the important graphics are never cropped. Better yet, don't supply any important graphics in the first place. - - You _can_ fine-tune the placement and size of these graphics, but you don't have the same fine-grained control as you did with legacy launch images. + - You _can_ fine-tune the placement and size of these graphics. - - Use a simple color wash. If you use two colors, you'll want one color to fill the top half of the image, and the second to fill the bottom half. If you use a gradient, you'll probably want to ensure that the middle of the gradient lines up with the center of the image. +- Use a simple color wash. If you use two colors, you'll want one color to fill the top half of the image, and the second to fill the bottom half. If you use a gradient, you'll probably want to ensure that the middle of the gradient lines up with the center of the image. - - Don't worry about pixel perfection -- because the images are scaled, there's almost no chance the images will be perfectly fit to the pixel grid. Since all supported iOS devices use retina screens, users will be hard pressed to notice it anyway. +- Don't worry about pixel perfection -- because the images are scaled, there's almost no chance the images will be perfectly fit to the pixel grid. Since all supported iOS devices use retina screens, users will be hard pressed to notice it anyway. It is important to understand the concept of scale, idiom, and size class traits in order to use launch storyboard images effectively. Of the images supplied to the launch storyboard, iOS will choose the image that best matches the device and viewport and render that image. It is possible to supply only one launch image if so desired, but it is also possible to fine-tune the displayed launch image based on traits. When fine-tuning, one can ignore traits that aren't targeted or supported by the app. -> Note: If you are using launch storyboard images, there is no need to include legacy images. If you do, the legacy images will be copied, but not used. - ##### Scale | scale | devices | @@ -267,17 +218,15 @@ To see the complete list of size classes associated with devices and viewports, If your launch image is simple, you may be able to avoid creating a lot of different launch images and supply only one. The launch image needs to meet the following requirements: - - the image should be square +- the image should be square +- the image should be large enough to fit on an iPad Pro 12.9": 2732x2732 +- anything important should fit within the center - - the image should be large enough to fit on an iPad Pro 12.9": 2732x2732 - - - anything important should fit within the center - - Keep in mind that the image will be cropped, possibly quite severely, depending upon the viewport. +Keep in mind that the image will be cropped, possibly quite severely, depending upon the viewport. Once the image is created, you can include it in your project by adding the following to `config.xml`: -``` +```xml ``` @@ -304,7 +253,7 @@ If you don't need to target images to a specific idiom, you should create six im The above looks like the following snippet when present in `config.xml`: -``` +```xml @@ -330,7 +279,7 @@ Should one need to further fine tune based upon device idiom, one can do so. Thi The above looks like the following in `config.xml`: -``` +```xml diff --git a/package.json b/package.json index e3989aa..af373d6 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "platforms": [ "android", "ubuntu", - "ios", "windows", "browser" ] @@ -20,7 +19,6 @@ "splashscreen", "ecosystem:cordova", "cordova-android", - "cordova-ios", "cordova-windows" ], "scripts": { @@ -36,9 +34,6 @@ "cordova-android": ">=3.6.0", "cordova-windows": ">=4.4.0" }, - "<6.0.0": { - "cordova-ios": "<6.0.0" - }, "6.0.0": { "cordova": ">100" } diff --git a/plugin.xml b/plugin.xml index e98a1df..3aee39a 100644 --- a/plugin.xml +++ b/plugin.xml @@ -30,7 +30,6 @@ - @@ -50,23 +49,6 @@ - - - - - - - - - - - - - - - - - diff --git a/src/ios/CDVSplashScreen.h b/src/ios/CDVSplashScreen.h deleted file mode 100644 index dcc0d77..0000000 --- a/src/ios/CDVSplashScreen.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import - -typedef struct { - BOOL iPhone; - BOOL iPad; - BOOL iPhone4; - BOOL iPhone5; - BOOL iPhone6; - BOOL iPhone6Plus; - BOOL retina; - BOOL iPhoneX; - -} CDV_iOSDevice; - -@interface CDVSplashScreen : CDVPlugin { - UIActivityIndicatorView* _activityView; - UIImageView* _imageView; - NSString* _curImageName; - BOOL _visible; - BOOL _destroyed; -} - -- (void)show:(CDVInvokedUrlCommand*)command; -- (void)hide:(CDVInvokedUrlCommand*)command; - -@end diff --git a/src/ios/CDVSplashScreen.m b/src/ios/CDVSplashScreen.m deleted file mode 100644 index 9b04582..0000000 --- a/src/ios/CDVSplashScreen.m +++ /dev/null @@ -1,514 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import "CDVSplashScreen.h" -#import -#import -#import "CDVViewController+SplashScreen.h" - -#define kSplashScreenDurationDefault 3000.0f -#define kFadeDurationDefault 500.0f - - -@implementation CDVSplashScreen - -- (void)pluginInitialize -{ - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pageDidLoad) name:CDVPageDidLoadNotification object:nil]; - - [self setVisible:YES]; -} - -- (void)show:(CDVInvokedUrlCommand*)command -{ - [self setVisible:YES]; -} - -- (void)hide:(CDVInvokedUrlCommand*)command -{ - [self setVisible:NO andForce:YES]; -} - -- (void)pageDidLoad -{ - id autoHideSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"AutoHideSplashScreen" lowercaseString]]; - - // if value is missing, default to yes - if ((autoHideSplashScreenValue == nil) || [autoHideSplashScreenValue boolValue]) { - [self setVisible:NO]; - } -} - -- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context -{ - [self updateImage]; -} - -- (void)createViews -{ - /* - * The Activity View is the top spinning throbber in the status/battery bar. We init it with the default Grey Style. - * - * whiteLarge = UIActivityIndicatorViewStyleWhiteLarge - * white = UIActivityIndicatorViewStyleWhite - * gray = UIActivityIndicatorViewStyleGray - * - */ - - // Determine whether rotation should be enabled for this device - // Per iOS HIG, landscape is only supported on iPad and iPhone 6+ - CDV_iOSDevice device = [self getCurrentDevice]; - BOOL autorotateValue = (device.iPad || device.iPhone6Plus || device.iPhoneX) ? - [(CDVViewController *)self.viewController shouldAutorotateDefaultValue] : - NO; - - [(CDVViewController *)self.viewController setEnabledAutorotation:autorotateValue]; - - NSString* topActivityIndicator = [self.commandDelegate.settings objectForKey:[@"TopActivityIndicator" lowercaseString]]; - UIActivityIndicatorViewStyle topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray; - - if ([topActivityIndicator isEqualToString:@"whiteLarge"]) - { - topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhiteLarge; - } - else if ([topActivityIndicator isEqualToString:@"white"]) - { - topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhite; - } - else if ([topActivityIndicator isEqualToString:@"gray"]) - { - topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray; - } - - UIView* parentView = self.viewController.view; - parentView.userInteractionEnabled = NO; // disable user interaction while splashscreen is shown - _activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:topActivityIndicatorStyle]; - _activityView.center = CGPointMake(parentView.bounds.size.width / 2, parentView.bounds.size.height / 2); - _activityView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin - | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin; - [_activityView startAnimating]; - - // Set the frame & image later. - _imageView = [[UIImageView alloc] init]; - [parentView addSubview:_imageView]; - - id showSplashScreenSpinnerValue = [self.commandDelegate.settings objectForKey:[@"ShowSplashScreenSpinner" lowercaseString]]; - // backwards compatibility - if key is missing, default to true - if ((showSplashScreenSpinnerValue == nil) || [showSplashScreenSpinnerValue boolValue]) - { - [parentView addSubview:_activityView]; - } - - // Frame is required when launching in portrait mode. - // Bounds for landscape since it captures the rotation. - [parentView addObserver:self forKeyPath:@"frame" options:0 context:nil]; - [parentView addObserver:self forKeyPath:@"bounds" options:0 context:nil]; - - [self updateImage]; - _destroyed = NO; -} - -- (void)hideViews -{ - [_imageView setAlpha:0]; - [_activityView setAlpha:0]; -} - -- (void)destroyViews -{ - _destroyed = YES; - [(CDVViewController *)self.viewController setEnabledAutorotation:[(CDVViewController *)self.viewController shouldAutorotateDefaultValue]]; - - [_imageView removeFromSuperview]; - [_activityView removeFromSuperview]; - _imageView = nil; - _activityView = nil; - _curImageName = nil; - - self.viewController.view.userInteractionEnabled = YES; // re-enable user interaction upon completion - @try { - [self.viewController.view removeObserver:self forKeyPath:@"frame"]; - [self.viewController.view removeObserver:self forKeyPath:@"bounds"]; - } - @catch (NSException *exception) { - // When reloading the page from a remotely connected Safari, there - // are no observers, so the removeObserver method throws an exception, - // that we can safely ignore. - // Alternatively we can check whether there are observers before calling removeObserver - } -} - -- (CDV_iOSDevice) getCurrentDevice -{ - CDV_iOSDevice device; - - UIScreen* mainScreen = [UIScreen mainScreen]; - CGFloat mainScreenHeight = mainScreen.bounds.size.height; - CGFloat mainScreenWidth = mainScreen.bounds.size.width; - - int limit = MAX(mainScreenHeight,mainScreenWidth); - - device.iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); - device.iPhone = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone); - device.retina = ([mainScreen scale] == 2.0); - device.iPhone4 = (device.iPhone && limit == 480.0); - device.iPhone5 = (device.iPhone && limit == 568.0); - // note these below is not a true device detect, for example if you are on an - // iPhone 6/6+ but the app is scaled it will prob set iPhone5 as true, but - // this is appropriate for detecting the runtime screen environment - device.iPhone6 = (device.iPhone && limit == 667.0); - device.iPhone6Plus = (device.iPhone && limit == 736.0); - device.iPhoneX = (device.iPhone && limit == 812.0); - - return device; -} - -- (BOOL) isUsingCDVLaunchScreen { - NSString* launchStoryboardName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchStoryboardName"]; - if (launchStoryboardName) { - return ([launchStoryboardName isEqualToString:@"CDVLaunchScreen"]); - } else { - return NO; - } -} - -- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device -{ - // Use UILaunchImageFile if specified in plist. Otherwise, use Default. - NSString* imageName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchImageFile"]; - - // detect if we are using CB-9762 Launch Storyboard; if so, return the associated image instead - if ([self isUsingCDVLaunchScreen]) { - imageName = @"LaunchStoryboard"; - return imageName; - } - - NSUInteger supportedOrientations = [orientationDelegate supportedInterfaceOrientations]; - - // Checks to see if the developer has locked the orientation to use only one of Portrait or Landscape - BOOL supportsLandscape = (supportedOrientations & UIInterfaceOrientationMaskLandscape); - BOOL supportsPortrait = (supportedOrientations & UIInterfaceOrientationMaskPortrait || supportedOrientations & UIInterfaceOrientationMaskPortraitUpsideDown); - // this means there are no mixed orientations in there - BOOL isOrientationLocked = !(supportsPortrait && supportsLandscape); - - if (imageName) - { - imageName = [imageName stringByDeletingPathExtension]; - } - else - { - imageName = @"Default"; - } - - // Add Asset Catalog specific prefixes - if ([imageName isEqualToString:@"LaunchImage"]) - { - if (device.iPhone4 || device.iPhone5 || device.iPad) { - imageName = [imageName stringByAppendingString:@"-700"]; - } else if(device.iPhone6) { - imageName = [imageName stringByAppendingString:@"-800"]; - } else if(device.iPhone6Plus || device.iPhoneX ) { - if(device.iPhone6Plus) { - imageName = [imageName stringByAppendingString:@"-800"]; - } else { - imageName = [imageName stringByAppendingString:@"-1100"]; - } - if (currentOrientation == UIInterfaceOrientationPortrait || currentOrientation == UIInterfaceOrientationPortraitUpsideDown) - { - imageName = [imageName stringByAppendingString:@"-Portrait"]; - } - } - } - - if (device.iPhone5) - { // does not support landscape - imageName = [imageName stringByAppendingString:@"-568h"]; - } - else if (device.iPhone6) - { // does not support landscape - imageName = [imageName stringByAppendingString:@"-667h"]; - } - else if (device.iPhone6Plus || device.iPhoneX) - { // supports landscape - if (isOrientationLocked) - { - imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"")]; - } - else - { - switch (currentOrientation) - { - case UIInterfaceOrientationLandscapeLeft: - case UIInterfaceOrientationLandscapeRight: - imageName = [imageName stringByAppendingString:@"-Landscape"]; - break; - default: - break; - } - } - if (device.iPhoneX) { - imageName = [imageName stringByAppendingString:@"-2436h"]; - } else { - imageName = [imageName stringByAppendingString:@"-736h"]; - } - } - else if (device.iPad) - { // supports landscape - if (isOrientationLocked) - { - imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"-Portrait")]; - } - else - { - switch (currentOrientation) - { - case UIInterfaceOrientationLandscapeLeft: - case UIInterfaceOrientationLandscapeRight: - imageName = [imageName stringByAppendingString:@"-Landscape"]; - break; - - case UIInterfaceOrientationPortrait: - case UIInterfaceOrientationPortraitUpsideDown: - default: - imageName = [imageName stringByAppendingString:@"-Portrait"]; - break; - } - } - } - - return imageName; -} - -- (UIInterfaceOrientation)getCurrentOrientation -{ - UIInterfaceOrientation iOrientation = [UIApplication sharedApplication].statusBarOrientation; - UIDeviceOrientation dOrientation = [UIDevice currentDevice].orientation; - - bool landscape; - - if (dOrientation == UIDeviceOrientationUnknown || dOrientation == UIDeviceOrientationFaceUp || dOrientation == UIDeviceOrientationFaceDown) { - // If the device is laying down, use the UIInterfaceOrientation based on the status bar. - landscape = UIInterfaceOrientationIsLandscape(iOrientation); - } else { - // If the device is not laying down, use UIDeviceOrientation. - landscape = UIDeviceOrientationIsLandscape(dOrientation); - - // There's a bug in iOS!!!! http://openradar.appspot.com/7216046 - // So values needs to be reversed for landscape! - if (dOrientation == UIDeviceOrientationLandscapeLeft) - { - iOrientation = UIInterfaceOrientationLandscapeRight; - } - else if (dOrientation == UIDeviceOrientationLandscapeRight) - { - iOrientation = UIInterfaceOrientationLandscapeLeft; - } - else if (dOrientation == UIDeviceOrientationPortrait) - { - iOrientation = UIInterfaceOrientationPortrait; - } - else if (dOrientation == UIDeviceOrientationPortraitUpsideDown) - { - iOrientation = UIInterfaceOrientationPortraitUpsideDown; - } - } - - return iOrientation; -} - -// Sets the view's frame and image. -- (void)updateImage -{ - NSString* imageName = [self getImageName:[self getCurrentOrientation] delegate:(id)self.viewController device:[self getCurrentDevice]]; - - if (![imageName isEqualToString:_curImageName]) - { - UIImage* img = [UIImage imageNamed:imageName]; - _imageView.image = img; - _curImageName = imageName; - } - - // Check that splash screen's image exists before updating bounds - if (_imageView.image) - { - [self updateBounds]; - } - else - { - NSLog(@"WARNING: The splashscreen image named %@ was not found", imageName); - } -} - -- (void)updateBounds -{ - if ([self isUsingCDVLaunchScreen]) { - // CB-9762's launch screen expects the image to fill the screen and be scaled using AspectFill. - CGSize viewportSize = [UIApplication sharedApplication].delegate.window.bounds.size; - _imageView.frame = CGRectMake(0, 0, viewportSize.width, viewportSize.height); - _imageView.contentMode = UIViewContentModeScaleAspectFill; - return; - } - - UIImage* img = _imageView.image; - CGRect imgBounds = (img) ? CGRectMake(0, 0, img.size.width, img.size.height) : CGRectZero; - - CGSize screenSize = [self.viewController.view convertRect:[UIScreen mainScreen].bounds fromView:nil].size; - UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; - CGAffineTransform imgTransform = CGAffineTransformIdentity; - - /* If and only if an iPhone application is landscape-only as per - * UISupportedInterfaceOrientations, the view controller's orientation is - * landscape. In this case the image must be rotated in order to appear - * correctly. - */ - CDV_iOSDevice device = [self getCurrentDevice]; - if (UIInterfaceOrientationIsLandscape(orientation) && !device.iPhone6Plus && !device.iPad && !device.iPhoneX) - { - imgTransform = CGAffineTransformMakeRotation(M_PI / 2); - imgBounds.size = CGSizeMake(imgBounds.size.height, imgBounds.size.width); - } - - // There's a special case when the image is the size of the screen. - if (CGSizeEqualToSize(screenSize, imgBounds.size)) - { - CGRect statusFrame = [self.viewController.view convertRect:[UIApplication sharedApplication].statusBarFrame fromView:nil]; - if (!(IsAtLeastiOSVersion(@"7.0"))) - { - imgBounds.origin.y -= statusFrame.size.height; - } - } - else if (imgBounds.size.width > 0) - { - CGRect viewBounds = self.viewController.view.bounds; - CGFloat imgAspect = imgBounds.size.width / imgBounds.size.height; - CGFloat viewAspect = viewBounds.size.width / viewBounds.size.height; - // This matches the behaviour of the native splash screen. - CGFloat ratio; - if (viewAspect > imgAspect) - { - ratio = viewBounds.size.width / imgBounds.size.width; - } - else - { - ratio = viewBounds.size.height / imgBounds.size.height; - } - imgBounds.size.height *= ratio; - imgBounds.size.width *= ratio; - } - - _imageView.transform = imgTransform; - _imageView.frame = imgBounds; -} - -- (void)setVisible:(BOOL)visible -{ - [self setVisible:visible andForce:NO]; -} - -- (void)setVisible:(BOOL)visible andForce:(BOOL)force -{ - if (visible != _visible || force) - { - _visible = visible; - - id fadeSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreen" lowercaseString]]; - id fadeSplashScreenDuration = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreenDuration" lowercaseString]]; - - float fadeDuration = fadeSplashScreenDuration == nil ? kFadeDurationDefault : [fadeSplashScreenDuration floatValue]; - - id splashDurationString = [self.commandDelegate.settings objectForKey: [@"SplashScreenDelay" lowercaseString]]; - float splashDuration = splashDurationString == nil ? kSplashScreenDurationDefault : [splashDurationString floatValue]; - - id autoHideSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"AutoHideSplashScreen" lowercaseString]]; - BOOL autoHideSplashScreen = true; - - if (autoHideSplashScreenValue != nil) { - autoHideSplashScreen = [autoHideSplashScreenValue boolValue]; - } - - if (!autoHideSplashScreen) { - // CB-10412 SplashScreenDelay does not make sense if the splashscreen is hidden manually - splashDuration = 0; - } - - - if (fadeSplashScreenValue == nil) - { - fadeSplashScreenValue = @"true"; - } - - if (![fadeSplashScreenValue boolValue]) - { - fadeDuration = 0; - } - else if (fadeDuration < 30) - { - // [CB-9750] This value used to be in decimal seconds, so we will assume that if someone specifies 10 - // they mean 10 seconds, and not the meaningless 10ms - fadeDuration *= 1000; - } - - if (_visible) - { - if (_imageView == nil) - { - [self createViews]; - } - } - else if (fadeDuration == 0 && splashDuration == 0) - { - [self destroyViews]; - } - else - { - __weak __typeof(self) weakSelf = self; - float effectiveSplashDuration; - - // [CB-10562] AutoHideSplashScreen may be "true" but we should still be able to hide the splashscreen manually. - if (!autoHideSplashScreen || force) { - effectiveSplashDuration = (fadeDuration) / 1000; - } else { - effectiveSplashDuration = (splashDuration - fadeDuration) / 1000; - } - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (uint64_t) effectiveSplashDuration * NSEC_PER_SEC), dispatch_get_main_queue(), CFBridgingRelease(CFBridgingRetain(^(void) { - if (!_destroyed) { - [UIView transitionWithView:self.viewController.view - duration:(fadeDuration / 1000) - options:UIViewAnimationOptionTransitionNone - animations:^(void) { - [weakSelf hideViews]; - } - completion:^(BOOL finished) { - // Always destroy views, otherwise you could have an - // invisible splashscreen that is overlayed over your active views - // which causes that no touch events are passed - if (!_destroyed) { - [weakSelf destroyViews]; - // TODO: It might also be nice to have a js event happen here -jm - } - } - ]; - } - }))); - } - } -} - -@end diff --git a/src/ios/CDVViewController+SplashScreen.h b/src/ios/CDVViewController+SplashScreen.h deleted file mode 100644 index a948ea3..0000000 --- a/src/ios/CDVViewController+SplashScreen.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import - -@interface CDVViewController (SplashScreen) - -@property (nonatomic, assign) BOOL enabledAutorotation; -@property (nonatomic, readonly) BOOL shouldAutorotateDefaultValue; - - -@end diff --git a/src/ios/CDVViewController+SplashScreen.m b/src/ios/CDVViewController+SplashScreen.m deleted file mode 100644 index e483def..0000000 --- a/src/ios/CDVViewController+SplashScreen.m +++ /dev/null @@ -1,89 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import "CDVViewController+SplashScreen.h" -#import - -@implementation CDVViewController (SplashScreen) - -@dynamic enabledAutorotation; - -- (void)setEnabledAutorotation:(BOOL)value -{ - objc_setAssociatedObject(self, - @selector(enabledAutorotation), - [NSNumber numberWithBool:value], - OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (BOOL)enabledAutorotation -{ - NSNumber *number = (NSNumber *)objc_getAssociatedObject(self, @selector(enabledAutorotation)); - - // Defaulting to YES to correspond parent CDVViewController behavior - if (number == nil) - { - return YES; - } - - return [number boolValue]; -} - -+ (void)load -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - Class class = [self class]; - - SEL originalSelector = @selector(shouldAutorotate); - SEL swizzledSelector = @selector(splash_shouldAutorotate); - - Method originalMethod = class_getInstanceMethod(class, originalSelector); - Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); - - BOOL didAddMethod = class_addMethod(class, - originalSelector, - method_getImplementation(swizzledMethod), - method_getTypeEncoding(swizzledMethod)); - - if (didAddMethod) { - class_replaceMethod(class, - swizzledSelector, - method_getImplementation(originalMethod), - method_getTypeEncoding(originalMethod)); - } else { - method_exchangeImplementations(originalMethod, swizzledMethod); - } - }); -} - -#pragma mark - Method Swizzling - -- (BOOL)splash_shouldAutorotate -{ - return self.enabledAutorotation; -} - - -- (BOOL)shouldAutorotateDefaultValue -{ - return [self splash_shouldAutorotate]; -} - -@end diff --git a/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata b/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 2dd325a..0000000 --- a/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout deleted file mode 100644 index 7e4cdb9..0000000 --- a/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 - IDESourceControlProjectName - CDVSplashScreenTest - IDESourceControlProjectOriginsDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - - IDESourceControlProjectPath - tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj - IDESourceControlProjectRelativeInstallPathDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - ../../../../.. - - IDESourceControlProjectURL - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - IDESourceControlProjectVersion - 111 - IDESourceControlProjectWCCIdentifier - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlWCCName - cordova-plugin-splashscreen - - - - diff --git a/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme b/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme deleted file mode 100644 index 13f9a15..0000000 --- a/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/ios/CDVSplashScreenTest/.gitignore b/tests/ios/CDVSplashScreenTest/.gitignore deleted file mode 100644 index c795b05..0000000 --- a/tests/ios/CDVSplashScreenTest/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build \ No newline at end of file diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m b/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m deleted file mode 100644 index 1637d24..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m +++ /dev/null @@ -1,702 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import -#import -#import "CDVSplashScreen.h" -#import "ImageNameTestDelegates.h" - -const CDV_iOSDevice CDV_iOSDeviceZero = { 0, 0, 0, 0, 0, 0 }; - -@interface ImageNameTest : XCTestCase - -@property (nonatomic, strong) CDVSplashScreen* plugin; - -@end - -@interface CDVSplashScreen () - -// expose private interface -- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device; - -@end - -@implementation ImageNameTest - -- (void)setUp { - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. - - self.plugin = [[CDVSplashScreen alloc] init]; -} - -- (void)tearDown { - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void) orientationHelper:(id)delegate expectedImageNameDictionary:(NSDictionary*)expectedImageNameDictionary device:(CDV_iOSDevice)device{ - - NSString* name = nil; - NSString* expectedImageName = nil; - UIInterfaceOrientation currentOrientation; - NSString* deviceName = device.iPad? @"iPad" : device.iPhone6Plus? @"iPhone6Plus": device.iPhone6? @"iPhone6": device.iPhone5? @"iPhone5" : @"iPhone"; - - // LandscapeLeft, should always return expectedImageName - currentOrientation = UIInterfaceOrientationLandscapeLeft; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeLeft"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); - - // LandscapeRight - should always return expectedImageName - currentOrientation = UIInterfaceOrientationLandscapeRight; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeRight"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); - - // Portrait - should always return expectedImageName - currentOrientation = UIInterfaceOrientationPortrait; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"portrait"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); - - // PortraitUpsideDown - should always return expectedImageName - currentOrientation = UIInterfaceOrientationPortraitUpsideDown; - name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; - expectedImageName = [expectedImageNameDictionary objectForKey:@"portraitUpsideDown"]; - XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); -} - -- (void)testiPadOrientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPad = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Portrait", - @"landscapeRight" : @"Default-Portrait", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Portrait", - @"landscapeRight" : @"Default-Portrait", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Landscape", - @"portraitUpsideDown" : @"Default-Landscape" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Landscape", - @"portraitUpsideDown" : @"Default-Landscape" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Portrait", - @"landscapeRight" : @"Default-Portrait", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Landscape", - @"portraitUpsideDown" : @"Default-Landscape" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape", - @"landscapeRight" : @"Default-Landscape", - @"portrait" : @"Default-Portrait", - @"portraitUpsideDown" : @"Default-Portrait" - } - device:device]; -} - -- (void)testiPhoneOrientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default", - @"landscapeRight" : @"Default", - @"portrait" : @"Default", - @"portraitUpsideDown" : @"Default" - } - device:device]; -} - -- (void)testiPhone5Orientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - device.iPhone5 = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-568h", - @"landscapeRight" : @"Default-568h", - @"portrait" : @"Default-568h", - @"portraitUpsideDown" : @"Default-568h" - } - device:device]; -} - -- (void)testiPhone6Orientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - device.iPhone6 = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-667h", - @"landscapeRight" : @"Default-667h", - @"portrait" : @"Default-667h", - @"portraitUpsideDown" : @"Default-667h" - } - device:device]; -} - -- (void)testiPhone6PlusOrientation { - - CDV_iOSDevice device = CDV_iOSDeviceZero; - device.iPhone = YES; - device.iPhone6Plus = YES; - - // One orientation - - PortraitOnly* delegate = [[PortraitOnly alloc] init]; - [self orientationHelper:delegate expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-736h", - @"landscapeRight" : @"Default-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; - [self orientationHelper:delegate2 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-736h", - @"landscapeRight" : @"Default-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate3 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-Landscape-736h", - @"portraitUpsideDown" : @"Default-Landscape-736h" - } - device:device]; - - LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; - [self orientationHelper:delegate4 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-Landscape-736h", - @"portraitUpsideDown" : @"Default-Landscape-736h" - } - device:device]; - - // All Portrait - - AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; - [self orientationHelper:delegate5 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-736h", - @"landscapeRight" : @"Default-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // All Landscape - - AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; - [self orientationHelper:delegate6 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-Landscape-736h", - @"portraitUpsideDown" : @"Default-Landscape-736h" - } - device:device]; - - - // All orientations - - AllOrientations* delegate7 = [[AllOrientations alloc] init]; - [self orientationHelper:delegate7 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // Portrait and Landscape Left - - PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate8 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // Portrait and Landscape Right - - PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate9 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // PortraitUpsideDown and Landscape Left - - PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; - [self orientationHelper:delegate10 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; - - // PortraitUpsideDown and Landscape Right - - PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; - [self orientationHelper:delegate11 expectedImageNameDictionary:@{ - @"landscapeLeft" : @"Default-Landscape-736h", - @"landscapeRight" : @"Default-Landscape-736h", - @"portrait" : @"Default-736h", - @"portraitUpsideDown" : @"Default-736h" - } - device:device]; -} - - - -@end diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h b/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h deleted file mode 100644 index be4a788..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import - -@interface PortraitOnly : NSObject -@end - -@interface PortraitUpsideDownOnly : NSObject -@end - -@interface AllPortraitOnly : NSObject -@end - - -@interface LandscapeLeftOnly : NSObject -@end - -@interface LandscapeRightOnly : NSObject -@end - -@interface AllLandscapeOnly : NSObject -@end - - -@interface AllOrientations : NSObject -@end - -@interface PortraitAndLandscapeLeftOnly : NSObject -@end - -@interface PortraitAndLandscapeRightOnly : NSObject -@end - -@interface PortraitUpsideDownAndLandscapeLeftOnly : NSObject -@end - -@interface PortraitUpsideDownAndLandscapeRightOnly : NSObject -@end - diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m b/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m deleted file mode 100644 index b5a1b23..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m +++ /dev/null @@ -1,200 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import "ImageNameTestDelegates.h" - -@implementation PortraitOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitUpsideDownOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortraitUpsideDown; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation AllPortraitOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - - -@implementation LandscapeLeftOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskLandscapeLeft; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation LandscapeRightOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation AllLandscapeOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - - -@implementation AllOrientations - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskAll; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitAndLandscapeLeftOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitAndLandscapeRightOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitUpsideDownAndLandscapeLeftOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeLeft; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - -@implementation PortraitUpsideDownAndLandscapeRightOnly - -- (NSUInteger)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeRight; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; -} - -- (BOOL)shouldAutorotate { - return YES; -} - -@end - diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist b/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist deleted file mode 100644 index 95c8add..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - org.apache.cordova.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj b/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj deleted file mode 100644 index ce820d8..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj +++ /dev/null @@ -1,505 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */; }; - 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B019DA114400DA31AC /* ImageNameTest.m */; }; - 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B219DA116500DA31AC /* Foundation.framework */; }; - 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B419DA127E00DA31AC /* UIKit.framework */; }; - 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */; }; - 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; }; - 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519019DA0F8300DA31AC /* libCordova.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 68A32D7114102E1C006B237C; - remoteInfo = CordovaLib; - }; - 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7E9F517219DA09CE00DA31AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7E9F519419DA102000DA31AC; - remoteInfo = CDVSplashScreenLib; - }; - 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D2AAC07D0554694100DB518D; - remoteInfo = CordovaLib; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 7E9F519319DA102000DA31AC /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = "../node_modules/cordova-ios/CordovaLib/CordovaLib.xcodeproj"; sourceTree = ""; }; - 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCDVSplashScreenLib.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CDVSplashScreenLibTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E9F51A219DA102000DA31AC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = ../../../src/ios/CDVSplashScreen.m; sourceTree = SOURCE_ROOT; }; - 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = ../../../src/ios/CDVSplashScreen.h; sourceTree = SOURCE_ROOT; }; - 7E9F51B019DA114400DA31AC /* ImageNameTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTest.m; sourceTree = ""; }; - 7E9F51B219DA116500DA31AC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 7E9F51B419DA127E00DA31AC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageNameTestDelegates.h; sourceTree = ""; }; - 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTestDelegates.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 7E9F519219DA102000DA31AC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7E9F519C19DA102000DA31AC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */, - 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */, - 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */, - 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 7E9F517119DA09CE00DA31AC = { - isa = PBXGroup; - children = ( - 7E9F51B419DA127E00DA31AC /* UIKit.framework */, - 7E9F51B219DA116500DA31AC /* Foundation.framework */, - 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */, - 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */, - 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */, - 7E9F517D19DA0A0A00DA31AC /* Products */, - ); - sourceTree = ""; - }; - 7E9F517D19DA0A0A00DA31AC /* Products */ = { - isa = PBXGroup; - children = ( - 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */, - 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 7E9F518C19DA0F8300DA31AC /* Products */ = { - isa = PBXGroup; - children = ( - 7E9F519019DA0F8300DA31AC /* libCordova.a */, - ); - name = Products; - sourceTree = ""; - }; - 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */ = { - isa = PBXGroup; - children = ( - 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */, - 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */, - ); - path = CDVSplashScreenLib; - sourceTree = SOURCE_ROOT; - }; - 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */ = { - isa = PBXGroup; - children = ( - 7E9F51A119DA102000DA31AC /* Supporting Files */, - 7E9F51B019DA114400DA31AC /* ImageNameTest.m */, - 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */, - 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */, - ); - path = CDVSplashScreenLibTests; - sourceTree = ""; - }; - 7E9F51A119DA102000DA31AC /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 7E9F51A219DA102000DA31AC /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */; - buildPhases = ( - 7E9F519119DA102000DA31AC /* Sources */, - 7E9F519219DA102000DA31AC /* Frameworks */, - 7E9F519319DA102000DA31AC /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CDVSplashScreenLib; - productName = CDVSplashScreenLib; - productReference = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; - productType = "com.apple.product-type.library.static"; - }; - 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */; - buildPhases = ( - 7E9F519B19DA102000DA31AC /* Sources */, - 7E9F519C19DA102000DA31AC /* Frameworks */, - 7E9F519D19DA102000DA31AC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */, - 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */, - ); - name = CDVSplashScreenLibTests; - productName = CDVSplashScreenLibTests; - productReference = 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 7E9F517219DA09CE00DA31AC /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0600; - TargetAttributes = { - 7E9F519419DA102000DA31AC = { - CreatedOnToolsVersion = 6.0; - }; - 7E9F519E19DA102000DA31AC = { - CreatedOnToolsVersion = 6.0; - }; - }; - }; - buildConfigurationList = 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 7E9F517119DA09CE00DA31AC; - productRefGroup = 7E9F517D19DA0A0A00DA31AC /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 7E9F518C19DA0F8300DA31AC /* Products */; - ProjectRef = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */, - 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 7E9F519019DA0F8300DA31AC /* libCordova.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libCordova.a; - remoteRef = 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 7E9F519D19DA102000DA31AC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7E9F519119DA102000DA31AC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7E9F519B19DA102000DA31AC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */, - 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */; - targetProxy = 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */; - }; - 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = CordovaLib; - targetProxy = 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 7E9F517619DA09CE00DA31AC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Debug; - }; - 7E9F517719DA09CE00DA31AC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Release; - }; - 7E9F51A419DA102000DA31AC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", - "\"$(OBJROOT)/UninstalledProducts/include\"", - "\"$(BUILT_PRODUCTS_DIR)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 7E9F51A519DA102000DA31AC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", - "\n\"$(OBJROOT)/UninstalledProducts/include\"\n\"$(BUILT_PRODUCTS_DIR)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7E9F51A719DA102000DA31AC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 7E9F51A819DA102000DA31AC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7E9F517619DA09CE00DA31AC /* Debug */, - 7E9F517719DA09CE00DA31AC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7E9F51A419DA102000DA31AC /* Debug */, - 7E9F51A519DA102000DA31AC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7E9F51A719DA102000DA31AC /* Debug */, - 7E9F51A819DA102000DA31AC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 7E9F517219DA09CE00DA31AC /* Project object */; -} diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 8f91278..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout deleted file mode 100644 index 7e4cdb9..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 - IDESourceControlProjectName - CDVSplashScreenTest - IDESourceControlProjectOriginsDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - - IDESourceControlProjectPath - tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj - IDESourceControlProjectRelativeInstallPathDictionary - - BEF5A5D0FF64801E558286389440357A9233D7DB - ../../../../.. - - IDESourceControlProjectURL - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - IDESourceControlProjectVersion - 111 - IDESourceControlProjectWCCIdentifier - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - BEF5A5D0FF64801E558286389440357A9233D7DB - IDESourceControlWCCName - cordova-plugin-splashscreen - - - - diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme b/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme deleted file mode 100644 index b97b863..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme b/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme deleted file mode 100644 index 6a2a526..0000000 --- a/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/ios/README.md b/tests/ios/README.md deleted file mode 100644 index 97ee9df..0000000 --- a/tests/ios/README.md +++ /dev/null @@ -1,40 +0,0 @@ - - -# iOS Tests for CDVSplashScreen - -You need to install `node.js` to pull in `cordova-ios`. - -First install cordova-ios: - - npm install - -... in the current folder. - - -# Testing from Xcode - -1. Launch the `CDVSplashScreenTest.xcworkspace` file. -2. Choose "CDVSplashScreenLibTests" from the scheme drop-down menu -3. Click and hold on the `Play` button, and choose the `Wrench` icon to run the tests - - -# Testing from the command line - - npm test diff --git a/tests/ios/package.json b/tests/ios/package.json deleted file mode 100644 index e6cd139..0000000 --- a/tests/ios/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "cordova-plugin-splashscreen-test-ios", - "version": "1.0.0", - "description": "iOS Unit Tests for Splashscreen Plugin", - "author": "Apache Software Foundation", - "license": "Apache Version 2.0", - "dependencies": { - "cordova-ios": "^5.1.1" - }, - "scripts": { - "test": "xcodebuild test -workspace CDVSplashScreenTest.xcworkspace -scheme CDVSplashScreenLibTests -destination 'platform=iOS Simulator,name=iPhone 5' CONFIGURATION_BUILD_DIR='/tmp' HEADER_SEARCH_PATHS='$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include'" - } -} From 097ca6ac42ed5bcae1b726bafb2b7be851ed566b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Fri, 26 Jun 2020 17:07:57 +0900 Subject: [PATCH 13/26] breaking: bump engine restriction for cordova dependencies (#274) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index af373d6..5916d72 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "cordova-android": ">=3.6.0", "cordova-windows": ">=4.4.0" }, - "6.0.0": { + "7.0.0": { "cordova": ">100" } }, From 0fba4f31dd619455a1f6790a2b4bc628b23aae38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Fri, 26 Jun 2020 17:08:41 +0900 Subject: [PATCH 14/26] chore: cleanup repo (#275) * chore: remove ubuntu from supported platforms list * chore: remove old wp platform unused src code * chore: remove old wp platform reference * chore: update urls to projects issue & git repo * style: fix indention --- package.json | 1 - plugin.xml | 8 +- src/wp/ResolutionHelper.cs | 39 ------ src/wp/SplashScreen.cs | 255 ------------------------------------- tests/tests.js | 1 - 5 files changed, 4 insertions(+), 300 deletions(-) delete mode 100644 src/wp/ResolutionHelper.cs delete mode 100644 src/wp/SplashScreen.cs diff --git a/package.json b/package.json index 5916d72..093acd3 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "id": "cordova-plugin-splashscreen", "platforms": [ "android", - "ubuntu", "windows", "browser" ] diff --git a/plugin.xml b/plugin.xml index 3aee39a..02c99f9 100644 --- a/plugin.xml +++ b/plugin.xml @@ -19,14 +19,14 @@ --> + id="cordova-plugin-splashscreen" + version="6.0.0-dev"> Splashscreen Cordova Splashscreen Plugin Apache 2.0 cordova,splashscreen - https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git - https://issues.apache.org/jira/browse/CB/component/12320653 + https://github.com/apache/cordova-plugin-splashscreen.git + https://github.com/apache/cordova-plugin-splashscreen/issues diff --git a/src/wp/ResolutionHelper.cs b/src/wp/ResolutionHelper.cs deleted file mode 100644 index 050c392..0000000 --- a/src/wp/ResolutionHelper.cs +++ /dev/null @@ -1,39 +0,0 @@ -/* - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -using Microsoft.Phone.Info; -using System; -using System.Windows; - -namespace WPCordovaClassLib.Cordova.Commands -{ - public enum Resolutions { WVGA, WXGA, HD }; - - public static class ResolutionHelper - { - public static Resolutions CurrentResolution - { - get - { - switch (Application.Current.Host.Content.ScaleFactor) - { - case 100: return Resolutions.WVGA; - case 160: return Resolutions.WXGA; - case 150: return Resolutions.HD; - } - throw new InvalidOperationException("Unknown resolution"); - } - } - } -} \ No newline at end of file diff --git a/src/wp/SplashScreen.cs b/src/wp/SplashScreen.cs deleted file mode 100644 index c56d4ad..0000000 --- a/src/wp/SplashScreen.cs +++ /dev/null @@ -1,255 +0,0 @@ -/* - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -using System; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Shapes; -using Microsoft.Phone.Info; -using System.Windows.Controls.Primitives; -using System.Diagnostics; -using System.Windows.Media.Imaging; -using System.Windows.Resources; -using System.IO; -using System.Xml.Linq; -using System.Linq; -using System.Windows.Threading; - -namespace WPCordovaClassLib.Cordova.Commands -{ - /// - /// Listens for changes to the state of the battery on the device. - /// Currently only the "isPlugged" parameter available via native APIs. - /// - public class SplashScreen : BaseCommand - { - private Popup popup; - - // Time until we dismiss the splashscreen - private int prefDelay = 3000; - - // Whether we hide it by default - private bool prefAutoHide = true; - - // Path to image to use - private string prefImagePath = "SplashScreenImage.jpg"; - - // static because autodismiss is only ever applied once, at app launch - // subsequent page loads should not cause the SplashScreen to be shown. - private static bool WasShown = false; - - public SplashScreen() - { - LoadConfigPrefs(); - - Image SplashScreen = new Image() - { - Height = Application.Current.Host.Content.ActualHeight, - Width = Application.Current.Host.Content.ActualWidth, - Stretch = Stretch.Fill - }; - - var imageResource = GetSplashScreenImageResource(); - if (imageResource != null) - { - BitmapImage splash_image = new BitmapImage(); - splash_image.SetSource(imageResource.Stream); - SplashScreen.Source = splash_image; - } - - // Instansiate the popup and set the Child property of Popup to SplashScreen - popup = new Popup() { IsOpen = false, - Child = SplashScreen, - HorizontalAlignment = HorizontalAlignment.Stretch, - VerticalAlignment = VerticalAlignment.Center - - }; - } - - public override void OnInit() - { - // we only want to autoload on the first page load. - // but OnInit is called for every page load. - if (!SplashScreen.WasShown) - { - SplashScreen.WasShown = true; - show(); - } - } - - private void LoadConfigPrefs() - { - StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri("config.xml", UriKind.Relative)); - if (streamInfo != null) - { - using (StreamReader sr = new StreamReader(streamInfo.Stream)) - { - //This will Read Keys Collection for the xml file - XDocument configFile = XDocument.Parse(sr.ReadToEnd()); - - string configAutoHide = configFile.Descendants() - .Where(x => x.Name.LocalName == "preference") - .Where(x => (string)x.Attribute("name") == "AutoHideSplashScreen") - .Select(x => (string)x.Attribute("value")) - .FirstOrDefault(); - - bool bVal; - prefAutoHide = bool.TryParse(configAutoHide, out bVal) ? bVal : prefAutoHide; - - string configDelay = configFile.Descendants() - .Where(x => x.Name.LocalName == "preference") - .Where(x => (string)x.Attribute("name") == "SplashScreenDelay") - .Select(x => (string)x.Attribute("value")) - .FirstOrDefault(); - int nVal; - prefDelay = int.TryParse(configDelay, out nVal) ? nVal : prefDelay; - - string configImage = configFile.Descendants() - .Where(x => x.Name.LocalName == "preference") - .Where(x => (string)x.Attribute("name") == "SplashScreen") - .Select(x => (string)x.Attribute("value")) - .FirstOrDefault(); - - if (!String.IsNullOrEmpty(configImage)) - { - prefImagePath = configImage; - } - } - } - } - - private StreamResourceInfo GetSplashScreenImageResource() - { - // Get the base filename for the splash screen images - string imageName = System.IO.Path.GetFileNameWithoutExtension(prefImagePath); - Uri imageUri = null; - StreamResourceInfo imageResource = null; - - // First, try to get a resolution-specific splashscreen - try - { - // Determine the device's resolution - switch (ResolutionHelper.CurrentResolution) - { - case Resolutions.HD: - imageUri = new Uri(imageName + ".screen-720p.jpg", UriKind.Relative); - break; - - case Resolutions.WVGA: - imageUri = new Uri(imageName + ".screen-WVGA.jpg", UriKind.Relative); - break; - - case Resolutions.WXGA: - default: - imageUri = new Uri(imageName + ".screen-WXGA.jpg", UriKind.Relative); - break; - } - - imageResource = Application.GetResourceStream(imageUri); - } - catch (Exception) - { - // It's OK if we didn't get a resolution-specific image - } - - // Fallback to the default image name without decoration - if (imageResource == null) - { - imageUri = new Uri(prefImagePath, UriKind.Relative); - imageResource = Application.GetResourceStream(imageUri); - } - - if (imageUri != null) Debug.WriteLine("INFO :: SplashScreen: using image {0}", imageUri.OriginalString); - - return imageResource; - } - - public void show(string options = null) - { - Deployment.Current.Dispatcher.BeginInvoke(() => - { - if (!popup.IsOpen) - { - popup.Child.Opacity = 0; - - Storyboard story = new Storyboard(); - DoubleAnimation animation = new DoubleAnimation() - { - From = 0.0, - To = 1.0, - Duration = new Duration(TimeSpan.FromSeconds(0.2)) - }; - - Storyboard.SetTarget(animation, popup.Child); - Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity")); - story.Children.Add(animation); - - story.Begin(); - - popup.IsOpen = true; - - if (prefAutoHide) - { - StartAutoHideTimer(); - } - } - }); - } - - public void hide(string options = null) - { - Deployment.Current.Dispatcher.BeginInvoke(() => - { - if (popup.IsOpen) - { - popup.Child.Opacity = 1.0; - - Storyboard story = new Storyboard(); - DoubleAnimation animation = new DoubleAnimation() - { - From = 1.0, - To = 0.0, - Duration = new Duration(TimeSpan.FromSeconds(0.4)) - }; - - Storyboard.SetTarget(animation, popup.Child); - Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity")); - story.Children.Add(animation); - story.Completed += (object sender, EventArgs e) => - { - popup.IsOpen = false; - }; - story.Begin(); - } - }); - } - - private void StartAutoHideTimer() - { - var timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(prefDelay) }; - timer.Tick += (object sender, EventArgs e) => - { - hide(); - timer.Stop(); - }; - timer.Start(); - } - } -} diff --git a/tests/tests.js b/tests/tests.js index 7b55a81..6129692 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -48,7 +48,6 @@ exports.defineManualTests = function (contentEl, createActionButton) { } contentEl.innerHTML = '

Splashscreen Tests

' + - '

Note for WP: AutoHideSplashScreen must be set to false in config.xml

' + '
' + 'Expected result: Will show the Cordova splashscreen for 1 second' + '

' + From 369f8d148f2a9493a97a0cc80db44ee0bc12a2cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Fri, 26 Jun 2020 18:55:53 +0900 Subject: [PATCH 15/26] breaking: drop node engine requirement (#276) --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 093acd3..309c214 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,7 @@ "7.0.0": { "cordova": ">100" } - }, - "node": ">=6.0.0" + } }, "author": "Apache Software Foundation", "license": "Apache-2.0", From 893ba08e8fb6c83abc36204e42f5e740d5be5254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Fri, 26 Jun 2020 19:31:02 +0900 Subject: [PATCH 16/26] breaking: replace jshint with eslint (#277) * breaking: remove jshint files and references * breaking: swap jshint with eslint * chore: apply eslint auto corrections * chore: remove jslint inline ignore rule --- .eslintrc.yml | 23 ++++++++++ .jshintrc | 16 ------- package.json | 6 +-- src/browser/SplashScreenProxy.js | 76 ++++++++++++++++---------------- tests/tests.js | 10 ++--- www/splashscreen.js | 8 ++-- www/windows/SplashScreenProxy.js | 6 +-- 7 files changed, 73 insertions(+), 72 deletions(-) create mode 100644 .eslintrc.yml delete mode 100644 .jshintrc diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000..e651750 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,23 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +root: true +extends: '@cordova/eslint-config/browser' + +overrides: + - files: [tests/**/*.js] + extends: '@cordova/eslint-config/node-tests' diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index cf48aac..0000000 --- a/.jshintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "browser": true - , "devel": true - , "bitwise": true - , "undef": true - , "trailing": true - , "quotmark": false - , "indent": 4 - , "unused": "vars" - , "latedef": "nofunc" - , "globals": { - "module": false, - "exports": false, - "require": false - } -} diff --git a/package.json b/package.json index 309c214..746ac06 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ "cordova-windows" ], "scripts": { - "test": "npm run jshint", - "jshint": "node node_modules/jshint/bin/jshint www && node node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint tests" + "test": "npm run lint", + "lint": "eslint ." }, "engines": { "cordovaDependencies": { @@ -41,7 +41,7 @@ "author": "Apache Software Foundation", "license": "Apache-2.0", "devDependencies": { - "jshint": "^2.6.0" + "@cordova/eslint-config": "^3.0.0" }, "homepage": "https://github.com/apache/cordova-plugin-splashscreen#readme" } diff --git a/src/browser/SplashScreenProxy.js b/src/browser/SplashScreenProxy.js index 1a5cd30..9df6e54 100644 --- a/src/browser/SplashScreenProxy.js +++ b/src/browser/SplashScreenProxy.js @@ -22,10 +22,10 @@ // Default parameter values including image size can be changed in `config.xml` var splashImageWidth = 170; var splashImageHeight = 200; -var position = { x: 0, y: 0, width: splashImageWidth, height: splashImageHeight }; +var position = { x: 0, y: 0, width: splashImageWidth, height: splashImageHeight }; var localSplash; // the image to display var localSplashImage; -var bgColor = "#464646"; +var bgColor = '#464646'; var imageSrc = '/img/logo.png'; var splashScreenDelay = 3000; // in milliseconds var showSplashScreen = true; // show splashcreen by default @@ -33,24 +33,24 @@ var cordova = require('cordova'); var configHelper = cordova.require('cordova/confighelper'); var autoHideSplashScreen = true; -function updateImageLocation() { +function updateImageLocation () { position.width = Math.min(splashImageWidth, window.innerWidth); position.height = position.width * (splashImageHeight / splashImageWidth); - localSplash.style.width = window.innerWidth + "px"; - localSplash.style.height = window.innerHeight + "px"; - localSplash.style.top = "0px"; - localSplash.style.left = "0px"; + localSplash.style.width = window.innerWidth + 'px'; + localSplash.style.height = window.innerHeight + 'px'; + localSplash.style.top = '0px'; + localSplash.style.left = '0px'; - localSplashImage.style.top = "50%"; - localSplashImage.style.left = "50%"; - localSplashImage.style.height = position.height + "px"; - localSplashImage.style.width = position.width + "px"; - localSplashImage.style.marginTop = (-position.height / 2) + "px"; - localSplashImage.style.marginLeft = (-position.width / 2) + "px"; + localSplashImage.style.top = '50%'; + localSplashImage.style.left = '50%'; + localSplashImage.style.height = position.height + 'px'; + localSplashImage.style.width = position.width + 'px'; + localSplashImage.style.marginTop = (-position.height / 2) + 'px'; + localSplashImage.style.marginLeft = (-position.width / 2) + 'px'; } -function onResize() { +function onResize () { updateImageLocation(); } @@ -62,16 +62,16 @@ var SplashScreen = { } }, show: function () { - if(!localSplash) { - window.addEventListener("resize", onResize, false); - localSplash = document.createElement("div"); + if (!localSplash) { + window.addEventListener('resize', onResize, false); + localSplash = document.createElement('div'); localSplash.style.backgroundColor = bgColor; - localSplash.style.position = "absolute"; - localSplash.style["z-index"] = "99999"; + localSplash.style.position = 'absolute'; + localSplash.style['z-index'] = '99999'; - localSplashImage = document.createElement("img"); + localSplashImage = document.createElement('img'); localSplashImage.src = imageSrc; - localSplashImage.style.position = "absolute"; + localSplashImage.style.position = 'absolute'; updateImageLocation(); @@ -88,16 +88,16 @@ var SplashScreen = { } }, hide: function () { - if(localSplash) { + if (localSplash) { var innerLocalSplash = localSplash; localSplash = null; - window.removeEventListener("resize", onResize, false); + window.removeEventListener('resize', onResize, false); innerLocalSplash.style.opacity = '0'; - innerLocalSplash.style["-webkit-transition"] = "opacity 1s ease-in-out"; - innerLocalSplash.style["-moz-transition"] = "opacity 1s ease-in-out"; - innerLocalSplash.style["-ms-transition"] = "opacity 1s ease-in-out"; - innerLocalSplash.style["-o-transition"] = "opacity 1s ease-in-out"; + innerLocalSplash.style['-webkit-transition'] = 'opacity 1s ease-in-out'; + innerLocalSplash.style['-moz-transition'] = 'opacity 1s ease-in-out'; + innerLocalSplash.style['-ms-transition'] = 'opacity 1s ease-in-out'; + innerLocalSplash.style['-o-transition'] = 'opacity 1s ease-in-out'; window.setTimeout(function () { document.body.removeChild(innerLocalSplash); @@ -112,10 +112,10 @@ var SplashScreen = { /** * Reads preferences via ConfigHelper and substitutes default parameters. */ -function readPreferencesFromCfg(cfg) { +function readPreferencesFromCfg (cfg) { try { var value = cfg.getPreferenceValue('ShowSplashScreen'); - if(typeof value != 'undefined') { + if (typeof value !== 'undefined') { showSplashScreen = value === 'true'; } @@ -128,7 +128,7 @@ function readPreferencesFromCfg(cfg) { splashImageHeight = cfg.getPreferenceValue('SplashScreenHeight') || splashImageHeight; autoHideSplashScreen = cfg.getPreferenceValue('AutoHideSplashScreen') || autoHideSplashScreen; autoHideSplashScreen = (autoHideSplashScreen === true || autoHideSplashScreen.toLowerCase() === 'true'); - } catch(e) { + } catch (e) { var msg = '[Browser][SplashScreen] Error occurred on loading preferences from config.xml: ' + JSON.stringify(e); console.error(msg); } @@ -137,11 +137,11 @@ function readPreferencesFromCfg(cfg) { /** * Shows and hides splashscreen if it is enabled, with a delay according the current preferences. */ -function showAndHide() { - if(showSplashScreen) { +function showAndHide () { + if (showSplashScreen) { SplashScreen.show(); - window.setTimeout(function() { + window.setTimeout(function () { SplashScreen.hide(); }, splashScreenDelay); } @@ -150,21 +150,19 @@ function showAndHide() { /** * Tries to read config.xml and override default properties and then shows and hides splashscreen if it is enabled. */ -(function initAndShow() { - configHelper.readConfig(function(config) { +(function initAndShow () { + configHelper.readConfig(function (config) { readPreferencesFromCfg(config); if (autoHideSplashScreen) { showAndHide(); } else { SplashScreen.show(); } - - }, function(err) { + }, function (err) { console.error(err); }); })(); module.exports = SplashScreen; -require("cordova/exec/proxy").add("SplashScreen", SplashScreen); - +require('cordova/exec/proxy').add('SplashScreen', SplashScreen); diff --git a/tests/tests.js b/tests/tests.js index 6129692..ecf4889 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -19,20 +19,18 @@ * */ -/* jshint jasmine: true */ - exports.defineAutoTests = function () { describe('Splashscreen (cordova)', function () { - it("splashscreen.spec.1 should exist", function () { + it('splashscreen.spec.1 should exist', function () { expect(navigator.splashscreen).toBeDefined(); }); - it("splashscreen.spec.2 show method should exist", function () { + it('splashscreen.spec.2 show method should exist', function () { expect(navigator.splashscreen.show).toBeDefined(); expect(typeof navigator.splashscreen.show).toBe('function'); }); - it("splashscreen.spec.3 hide method should exist", function () { + it('splashscreen.spec.3 hide method should exist', function () { expect(navigator.splashscreen.hide).toBeDefined(); expect(typeof navigator.splashscreen.hide).toBe('function'); }); @@ -40,7 +38,7 @@ exports.defineAutoTests = function () { }; exports.defineManualTests = function (contentEl, createActionButton) { - function showFor(duration) { + function showFor (duration) { navigator.splashscreen.show(); window.setTimeout(function () { navigator.splashscreen.hide(); diff --git a/www/splashscreen.js b/www/splashscreen.js index 7cb48bd..8235e8e 100644 --- a/www/splashscreen.js +++ b/www/splashscreen.js @@ -22,11 +22,11 @@ var exec = require('cordova/exec'); var splashscreen = { - show:function() { - exec(null, null, "SplashScreen", "show", []); + show: function () { + exec(null, null, 'SplashScreen', 'show', []); }, - hide:function() { - exec(null, null, "SplashScreen", "hide", []); + hide: function () { + exec(null, null, 'SplashScreen', 'hide', []); } }; diff --git a/www/windows/SplashScreenProxy.js b/www/windows/SplashScreenProxy.js index 1003f06..b359df6 100644 --- a/www/windows/SplashScreenProxy.js +++ b/www/windows/SplashScreenProxy.js @@ -1,4 +1,4 @@ -/* +/* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -19,8 +19,6 @@ * */ -/*jslint sloppy:true */ - var splash = require('cordova/splashscreen'); var SplashScreen = { @@ -34,4 +32,4 @@ var SplashScreen = { module.exports = SplashScreen; -require("cordova/exec/proxy").add("SplashScreen", SplashScreen); +require('cordova/exec/proxy').add('SplashScreen', SplashScreen); From 3ede66ef8fcb08afc1f289bc5018a620a4b9c6e6 Mon Sep 17 00:00:00 2001 From: jcesarmobile Date: Fri, 26 Jun 2020 13:05:31 +0200 Subject: [PATCH 17/26] chore: update engine checks to cover newer versions (#278) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 746ac06..b310183 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "2.0.0": { "cordova-android": ">=3.6.0" }, - "4.0.0": { + ">=4.0.0": { "cordova-android": ">=3.6.0", "cordova-windows": ">=4.4.0" }, From b893339a985728315d9074edf8dc794d18866b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Fri, 26 Jun 2020 20:55:08 +0900 Subject: [PATCH 18/26] chore: add missing supported platform browser to npm keywords (#279) --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b310183..aae7e88 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "splashscreen", "ecosystem:cordova", "cordova-android", - "cordova-windows" + "cordova-windows", + "cordova-browser" ], "scripts": { "test": "npm run lint", From 050f29cfca9c8f7db13078d3c093a1fd0299e0e7 Mon Sep 17 00:00:00 2001 From: Jan Piotrowski Date: Fri, 26 Jun 2020 14:42:45 +0200 Subject: [PATCH 19/26] fix(windows): implementation structure (#200) --- plugin.xml | 2 +- {www => src}/windows/SplashScreenProxy.js | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {www => src}/windows/SplashScreenProxy.js (100%) diff --git a/plugin.xml b/plugin.xml index 02c99f9..c96de85 100644 --- a/plugin.xml +++ b/plugin.xml @@ -51,7 +51,7 @@ - + diff --git a/www/windows/SplashScreenProxy.js b/src/windows/SplashScreenProxy.js similarity index 100% rename from www/windows/SplashScreenProxy.js rename to src/windows/SplashScreenProxy.js From 2ee4ff97ff69701fbf0cb53b7c146d975102c048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Tue, 30 Jun 2020 22:46:35 +0900 Subject: [PATCH 20/26] doc(android): various improvements including size specs (#280) * Add size specs for Android Splash Screens * doc(android): add splashscreen details Co-authored-by: Mosab A <47486787+mosabab@users.noreply.github.com> --- README.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 947e2c1..65d25fe 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,11 @@ This plugin displays and hides a splash screen while your web application is lau - [Supported Platforms](#supported-platforms) - [Platform Splash Screen Image Configuration](#platform-splash-screen-image-configuration) - [Example Configuration](#example-configuration) + - [Android-specific Information](#android-specific-information) + - [Image Layout](#image-layout) + - [`density`](#density) + - [Image Sizing Table](#image-sizing-table) + - [Example Android Configuration](#example-android-configuration) - [iOS-specific Information](#ios-specific-information) - [Launch Storyboard Images](#launch-storyboard-images) - [Designing Launch Storyboard Images](#designing-launch-storyboard-images) @@ -100,7 +105,6 @@ projectRoot ```xml - @@ -126,7 +130,6 @@ projectRoot - @@ -144,6 +147,56 @@ projectRoot ``` +### Android-specific Information + +To effectively create your Android SplashScreen assets, it is important to understand the idiom and sizes used for the assets. + +Android defined its assets by the image's layout and `density`. + +#### Image Layout + +- `land` short for landscape mode +- `port` short for portrait mode + +#### `density` + +The image's density refers to the number of pixels per square inch. Android, interchangeably refers to this as DPI. + +Not all devices have the same pixel size so it is important to create images for all DPI to ensure that the quality of the image for each device is great. + +If not all DPI images are considered, some devices might not show a SplashScreen or will use an incorrect DPI image that can result in a blurry scaled image. + +#### Image Sizing Table + +| size | portrait | landscape | +| :-----: | :-------: | :-------: | +| ldpi | 200x320 | 320x200 | +| mdpi | 320x480 | 480x320 | +| hdpi | 480x800 | 800x480 | +| xhdpi | 720x1280 | 1280x720 | +| xxhdpi | 960x1600 | 1600x960 | +| xxxhdpi | 1280x1920 | 1920x1280 | + +#### Example Android Configuration + +```xml + + + + + + + + + + + + + + + +``` + ### iOS-specific Information Launch storyboard images are sized based on scale, idiom, and size classes. It supports all devices, and can be used with split-screen/slide-over multitasking. From 3389695fc588504168863759366d8ae8fef6745a Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Fri, 3 Jul 2020 14:44:56 +0000 Subject: [PATCH 21/26] chore: adds package-lock file (#281) --- package-lock.json | 1724 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1724 insertions(+) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..54e6cac --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1724 @@ +{ + "name": "cordova-plugin-splashscreen", + "version": "6.0.0-dev", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@cordova/eslint-config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cordova/eslint-config/-/eslint-config-3.0.0.tgz", + "integrity": "sha512-YOZn/G5foKFzZc8R/oBM+BLG6vHufOmZiJtiZHNxifsrqzORwyjq1EiUSvQ6s0bm6Ydh3zwwyuGVbYyDBil67w==", + "dev": true, + "requires": { + "eslint": "^6.8.0", + "eslint-config-standard": "^14.1.1", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.1" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "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 + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "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 + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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 + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-config-standard": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", + "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.3", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", + "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "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 + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.0.tgz", + "integrity": "sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "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.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "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": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "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 + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "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-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "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": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "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", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "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.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "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 + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "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.3.2", + "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.0.0", + "read-pkg": "^2.0.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", + "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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 + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "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 + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } +} From faa8aa937d398f08b1a4ddab6486e4ca5e39517b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=A8=E3=83=AA=E3=82=B9?= Date: Tue, 7 Jul 2020 12:08:11 +0900 Subject: [PATCH 22/26] fix: js clobber only on supported platforms (#282) --- plugin.xml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/plugin.xml b/plugin.xml index c96de85..cc1fb1a 100644 --- a/plugin.xml +++ b/plugin.xml @@ -33,10 +33,6 @@
- - - - @@ -47,6 +43,10 @@ + + + + @@ -54,6 +54,10 @@ + + + +
@@ -61,5 +65,9 @@ + + + + From a9e73eb64280cab088b504043cf287bce33724fc Mon Sep 17 00:00:00 2001 From: Erisu Date: Tue, 7 Jul 2020 14:46:31 +0900 Subject: [PATCH 23/26] Updated version and RELEASENOTES.md for release 6.0.0 (splashscreen-20200707) --- RELEASENOTES.md | 15 +++++++++++++++ package-lock.json | 2 +- package.json | 2 +- plugin.xml | 2 +- tests/package.json | 2 +- tests/plugin.xml | 2 +- 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b674963..d4877dc 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -20,6 +20,21 @@ --> # Release Notes +### 6.0.0 (Jul 07, 2020) + +* [GH-282](https://github.com/apache/cordova-plugin-splashscreen/pull/282) fix: js `clobber` only on supported platforms +* [GH-281](https://github.com/apache/cordova-plugin-splashscreen/pull/281) chore: adds `package-lock` file +* [GH-280](https://github.com/apache/cordova-plugin-splashscreen/pull/280) doc(android): various improvements including size specs +* [GH-200](https://github.com/apache/cordova-plugin-splashscreen/pull/200) fix(windows): implementation structure +* [GH-279](https://github.com/apache/cordova-plugin-splashscreen/pull/279) chore: add missing supported platform **Browser** to `npm` keywords +* [GH-278](https://github.com/apache/cordova-plugin-splashscreen/pull/278) chore: update `engine` checks to cover newer versions +* [GH-277](https://github.com/apache/cordova-plugin-splashscreen/pull/277) breaking: replace `jshint` with `eslint` +* [GH-276](https://github.com/apache/cordova-plugin-splashscreen/pull/276) breaking: drop `node` `engine` requirement +* [GH-275](https://github.com/apache/cordova-plugin-splashscreen/pull/275) chore: cleanup repo +* [GH-274](https://github.com/apache/cordova-plugin-splashscreen/pull/274) breaking: bump `engine` restriction for cordova dependencies +* [GH-263](https://github.com/apache/cordova-plugin-splashscreen/pull/263) breaking: remove **iOS** platform code from plugin repo +* [GH-267](https://github.com/apache/cordova-plugin-splashscreen/pull/267) test: force `cordova-ios`@^5.1.1 + ### 5.0.4 (Jun 03, 2020) * [GH-261](https://github.com/apache/cordova-plugin-splashscreen/pull/261) chore: add `cordova-ios` requirement <6.0.0 * chore(asf): update git notification settings diff --git a/package-lock.json b/package-lock.json index 54e6cac..064f1ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen", - "version": "6.0.0-dev", + "version": "6.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index aae7e88..01c7136 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen", - "version": "6.0.0-dev", + "version": "6.0.0", "description": "Cordova Splashscreen Plugin", "types": "./types/index.d.ts", "cordova": { diff --git a/plugin.xml b/plugin.xml index cc1fb1a..9483fe3 100644 --- a/plugin.xml +++ b/plugin.xml @@ -20,7 +20,7 @@ + version="6.0.0"> Splashscreen Cordova Splashscreen Plugin Apache 2.0 diff --git a/tests/package.json b/tests/package.json index 4d45dd9..374485d 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen-tests", - "version": "6.0.0-dev", + "version": "6.0.0", "description": "", "cordova": { "id": "cordova-plugin-splashscreen-tests", diff --git a/tests/plugin.xml b/tests/plugin.xml index d45dfb9..bc60b25 100644 --- a/tests/plugin.xml +++ b/tests/plugin.xml @@ -20,7 +20,7 @@ + version="6.0.0"> Cordova Splashscreen Plugin Tests Apache 2.0 From f41610c2f7850b82325f0b35decbbcd6008a99cc Mon Sep 17 00:00:00 2001 From: Erisu Date: Mon, 20 Jul 2020 14:04:11 +0900 Subject: [PATCH 24/26] Increment package version to 6.0.1-dev --- package-lock.json | 2 +- package.json | 2 +- plugin.xml | 2 +- tests/package.json | 2 +- tests/plugin.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 064f1ef..c3e78c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen", - "version": "6.0.0", + "version": "6.0.1-dev", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 01c7136..29847be 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen", - "version": "6.0.0", + "version": "6.0.1-dev", "description": "Cordova Splashscreen Plugin", "types": "./types/index.d.ts", "cordova": { diff --git a/plugin.xml b/plugin.xml index 9483fe3..ea5175d 100644 --- a/plugin.xml +++ b/plugin.xml @@ -20,7 +20,7 @@ + version="6.0.1-dev"> Splashscreen Cordova Splashscreen Plugin Apache 2.0 diff --git a/tests/package.json b/tests/package.json index 374485d..1dd0686 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-splashscreen-tests", - "version": "6.0.0", + "version": "6.0.1-dev", "description": "", "cordova": { "id": "cordova-plugin-splashscreen-tests", diff --git a/tests/plugin.xml b/tests/plugin.xml index bc60b25..7388fc8 100644 --- a/tests/plugin.xml +++ b/tests/plugin.xml @@ -20,7 +20,7 @@ + version="6.0.1-dev"> Cordova Splashscreen Plugin Tests Apache 2.0 From 14d17c5c648b918766c23d487fc6214fb3f52c54 Mon Sep 17 00:00:00 2001 From: Hans Krywalsky Date: Sat, 8 Aug 2020 14:13:48 +0200 Subject: [PATCH 25/26] (docs): Add Information about how to use Dark Mode SplashScreens (#286) --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/README.md b/README.md index 65d25fe..36f56c1 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ This plugin displays and hides a splash screen while your web application is lau - [Image Layout](#image-layout) - [`density`](#density) - [Image Sizing Table](#image-sizing-table) + - [Dark Mode](#dark-mode) - [Example Android Configuration](#example-android-configuration) - [iOS-specific Information](#ios-specific-information) - [Launch Storyboard Images](#launch-storyboard-images) @@ -47,6 +48,7 @@ This plugin displays and hides a splash screen while your web application is lau - [Size classes](#size-classes) - [Single-image launch screen](#single-image-launch-screen) - [Multi-image launch screen](#multi-image-launch-screen) + - [Dark Mode](#dark-mode-1) - [Quirks and Known Issues](#quirks-and-known-issues) - [Windows-specific Information](#windows-specific-information) - [Preferences](#preferences) @@ -177,6 +179,13 @@ If not all DPI images are considered, some devices might not show a SplashScreen | xxhdpi | 960x1600 | 1600x960 | | xxxhdpi | 1280x1920 | 1920x1280 | +#### Dark Mode (API 28+) + +You can optionally provide an extra SplashScreen image to be used in dark/night mode when enabled on supported devices. +To do this, add the `-night` keyword in between the **layout** and **size** keywords of the image's `density` attribute value. E.g.: `land-night-hdpi` + +For more examples, please see [the Example Configuration](#example-android-configuration) section. + #### Example Android Configuration ```xml @@ -194,6 +203,21 @@ If not all DPI images are considered, some devices might not show a SplashScreen + + + + + + + + + + + + + + + ``` @@ -343,6 +367,23 @@ The above looks like the following in `config.xml`: ``` +##### Dark Mode + +Since [Cordova-iOS@6.1.0](https://github.com/apache/cordova-ios), it is now possible to optionally specify different SplashScreen images to use when the app is running in dark mode. The luminosity of SplashScreen images can be defined in `config.xml` using the `~dark` and `~light` suffixes. + +```xml + + + + + + + + +``` + +**Note:** This works since iOS 13. iOS 12 and below will use the default SplashScreen without a luminosity suffix specified. + ##### Quirks and Known Issues 1. **App on target may not reflect changes to images** From 7e5b4fd93d27c5256b029ed4309eb17fec6741a3 Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Fri, 21 Aug 2020 14:35:18 +0000 Subject: [PATCH 26/26] ci(travis): updates Android API level (#292) --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a8aeeaa..c41d67b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,8 @@ env: global: - SAUCE_USERNAME=snay - TRAVIS_NODE_VERSION=12 - - ANDROID_API_LEVEL=28 - - ANDROID_BUILD_TOOLS_VERSION=28.0.3 + - ANDROID_API_LEVEL=29 + - ANDROID_BUILD_TOOLS_VERSION=29.0.2 language: node_js node_js: 12