diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
deleted file mode 100644
index 9a597262..00000000
--- a/.github/workflows/android.yml
+++ /dev/null
@@ -1,216 +0,0 @@
-name: Android Builds
-
-on:
- schedule:
- - cron: "0 9 * * *" # 9am UTC = 1am PST / 2am PDT. for all testapps except firestore
- pull_request:
- types: [opened, reopened, synchronize]
- workflow_dispatch:
- inputs:
- apis:
- description: 'CSV of apis to build and test'
- default: 'analytics,auth,database,dynamic_links,firestore,functions,gma,messaging,remote_config,storage'
- required: true
-
-env:
- CCACHE_DIR: ${{ github.workspace }}/ccache_dir
- GITHUB_TOKEN: ${{ github.token }}
- xcodeVersion: "13.3.1" # Only affects Mac runners, and only for prerequisites.
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
- cancel-in-progress: true
-
-jobs:
- check_and_prepare:
- runs-on: ubuntu-latest
- outputs:
- apis: ${{ steps.set_outputs.outputs.apis }}
- steps:
- - id: set_outputs
- run: |
- if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
- apis="${GITHUB_EVENT_INPUTS_APIS}"
- else
- apis="analytics,auth,database,dynamic_links,firestore,functions,gma,messaging,remote_config,storage"
- fi
- echo apis: ${apis}
- echo "::set-output name=apis::${apis}"
- env:
- GITHUB_EVENT_INPUTS_APIS: ${{ github.event.inputs.apis }}
-
- build:
- name: android-${{ matrix.os }}-${{ matrix.architecture }}-${{ matrix.python_version }}
- runs-on: ${{ matrix.os }}
- needs: [check_and_prepare]
- strategy:
- fail-fast: false
- matrix:
- os: [macos-12, ubuntu-latest, windows-latest]
- architecture: [x64]
- python_version: [3.7]
- steps:
- - name: setup Xcode version (macos)
- if: runner.os == 'macOS'
- run: sudo xcode-select -s /Applications/Xcode_${{ env.xcodeVersion }}.app/Contents/Developer
-
- - name: Store git credentials for all git commands
- # Forces all git commands to use authenticated https, to prevent throttling.
- shell: bash
- run: |
- git config --global credential.helper 'store --file /tmp/git-credentials'
- echo 'https://${{ github.token }}@github.com' > /tmp/git-credentials
-
- - name: Enable Git Long-paths Support
- if: runner.os == 'Windows'
- run: git config --system core.longpaths true
-
- - uses: actions/checkout@v2
- with:
- submodules: true
-
- - name: Set env variables for subsequent steps (all)
- shell: bash
- run: |
- echo "MATRIX_UNIQUE_NAME=${{ matrix.os }}-${{ matrix.architecture }}" >> $GITHUB_ENV
- echo "GHA_INSTALL_CCACHE=1" >> $GITHUB_ENV
-
- - name: Setup python
- uses: actions/setup-python@v2
- with:
- python-version: ${{ matrix.python_version }}
- architecture: ${{ matrix.architecture }}
-
- - name: Add msbuild to PATH
- if: startsWith(matrix.os, 'windows')
- uses: microsoft/setup-msbuild@v1.0.2
-
- - name: Cache NDK
- id: cache_ndk
- uses: actions/cache@v2
- with:
- path: /tmp/android-ndk-r21e
- key: android-ndk-${{ matrix.os }}-r21e
-
- - name: Check cached NDK
- shell: bash
- if: steps.cache_ndk.outputs.cache-hit != 'true'
- run: |
- # If the NDK failed to download from the cache, but there is a
- # /tmp/android-ndk-r21e directory, it's incomplete, so remove it.
- if [[ -d "/tmp/android-ndk-r21e" ]]; then
- echo "Removing incomplete download of NDK"
- rm -rf /tmp/android-ndk-r21e
- fi
-
- - name: Update homebrew (avoid bintray errors)
- uses: nick-invision/retry@v2
- if: startsWith(matrix.os, 'macos')
- with:
- timeout_minutes: 10
- max_attempts: 3
- command: |
- # Temporarily here until Github runners have updated their version of
- # homebrew. This prevents errors arising from the shut down of
- # binutils, used by older version of homebrew for hosting packages.
- brew update
-
- - name: Install prerequisites
- uses: nick-invision/retry@v2
- with:
- timeout_minutes: 10
- max_attempts: 3
- shell: bash
- command: |
- scripts/build_scripts/android/install_prereqs.sh
- echo "NDK_ROOT=/tmp/android-ndk-r21e" >> $GITHUB_ENV
- echo "ANDROID_NDK_HOME=/tmp/android-ndk-r21e" >> $GITHUB_ENV
- pip install -r scripts/build_scripts/python_requirements.txt
- python scripts/restore_secrets.py --passphrase "${{ secrets.TEST_SECRET }}"
-
- - name: Download C++ SDK
- shell: bash
- run: |
- set +e
- # Retry up to 10 times because Curl has a tendency to timeout on
- # Github runners.
- for retry in {1..10} error; do
- if [[ $retry == "error" ]]; then exit 5; fi
- curl -LSs \
- "https://firebase.google.com/download/cpp" \
- --output firebase_cpp_sdk.zip && break
- sleep 300
- done
- set -e
- mkdir /tmp/downloaded_sdk
- unzip -q firebase_cpp_sdk.zip -d /tmp/downloaded_sdk/
- rm -f firebase_cpp_sdk.zip
-
- - name: Cache ccache files
- id: cache_ccache
- uses: actions/cache@v2
- with:
- path: ccache_dir
- key: dev-test-ccache-${{ env.MATRIX_UNIQUE_NAME }}
-
- - name: Build testapp
- shell: bash
- run: |
- set -x
- CLEAN_APIS=$(echo ${NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS} | tr -d "'" | tr -d "\"")
- python scripts/build_scripts/build_testapps.py --p Android \
- --t ${CLEAN_APIS} \
- --output_directory "${{ github.workspace }}" \
- --artifact_name "android-${{ matrix.os }}" \
- --noadd_timestamp \
- --short_output_paths \
- --gha_build \
- --packaged_sdk /tmp/downloaded_sdk/firebase_cpp_sdk
- env:
- NEEDS_CHECK_AND_PREPARE_OUTPUTS_APIS: ${{ needs.check_and_prepare.outputs.apis }}
-
- - name: Stats for ccache (mac and linux)
- if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
- run: ccache -s
-
- - name: Prepare results summary artifact
- if: ${{ !cancelled() }}
- shell: bash
- run: |
- if [ ! -f build-results-android-${{ matrix.os }}.log.json ]; then
- echo "__SUMMARY_MISSING__" > build-results-android-${{ matrix.os }}.log.json
- fi
-
- - name: Upload Android integration tests artifact
- uses: actions/upload-artifact@v3
- if: ${{ !cancelled() }}
- with:
- name: testapps-android-${{ matrix.os }}
- path: testapps-android-${{ matrix.os }}
- retention-days: ${{ env.artifactRetentionDays }}
-
- - name: Upload Android build results artifact
- uses: actions/upload-artifact@v3
- if: ${{ !cancelled() }}
- with:
- name: log-artifact
- path: build-results-android-${{ matrix.os }}*
- retention-days: ${{ env.artifactRetentionDays }}
-
- - name: Download log artifacts
- if: ${{ needs.check_and_prepare.outputs.pr_number && failure() && !cancelled() }}
- uses: actions/download-artifact@v3
- with:
- path: test_results
- name: log-artifact
-
- - name: Summarize build results
- if: ${{ !cancelled() }}
- shell: bash
- run: |
- cat build-results-android-${{ matrix.os }}.log
- if [[ "${JOB_STATUS}" != "success" ]]; then
- exit 1
- fi
- env:
- JOB_STATUS: ${{ job.status }}
diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml
deleted file mode 100644
index b606cea0..00000000
--- a/.github/workflows/desktop.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: Desktop builds
-
-on:
- workflow_dispatch:
- inputs:
- apis:
- description: 'CSV of apis whose quickstart examples we should build'
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - name: noop
- run: true
diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml
deleted file mode 100644
index 72c85f64..00000000
--- a/.github/workflows/ios.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: iOS builds
-
-on:
- workflow_dispatch:
- inputs:
- apis:
- description: 'CSV of apis whose quickstart examples we should build'
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - name: noop
- run: true
diff --git a/dynamic_links/testapp/AndroidManifest.xml b/dynamic_links/testapp/AndroidManifest.xml
deleted file mode 100644
index 2aa60f2d..00000000
--- a/dynamic_links/testapp/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/dynamic_links/testapp/CMakeLists.txt b/dynamic_links/testapp/CMakeLists.txt
deleted file mode 100644
index 5574b351..00000000
--- a/dynamic_links/testapp/CMakeLists.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-# User settings for Firebase samples.
-# Path to Firebase SDK.
-# Try to read the path to the Firebase C++ SDK from an environment variable.
-if (NOT "$ENV{FIREBASE_CPP_SDK_DIR}" STREQUAL "")
- set(DEFAULT_FIREBASE_CPP_SDK_DIR "$ENV{FIREBASE_CPP_SDK_DIR}")
-else()
- set(DEFAULT_FIREBASE_CPP_SDK_DIR "firebase_cpp_sdk")
-endif()
-if ("${FIREBASE_CPP_SDK_DIR}" STREQUAL "")
- set(FIREBASE_CPP_SDK_DIR ${DEFAULT_FIREBASE_CPP_SDK_DIR})
-endif()
-if(NOT EXISTS ${FIREBASE_CPP_SDK_DIR})
- message(FATAL_ERROR "The Firebase C++ SDK directory does not exist: ${FIREBASE_CPP_SDK_DIR}. See the readme.md for more information")
-endif()
-
-# Windows runtime mode, either MD or MT depending on whether you are using
-# /MD or /MT. For more information see:
-# https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx
-set(MSVC_RUNTIME_MODE MD)
-
-project(firebase_testapp)
-
-# Sample source files.
-set(FIREBASE_SAMPLE_COMMON_SRCS
- src/main.h
- src/common_main.cc
-)
-
-# The include directory for the testapp.
-include_directories(src)
-
-# Sample uses some features that require C++ 11, such as lambdas.
-set (CMAKE_CXX_STANDARD 11)
-
-if(ANDROID)
- # Build an Android application.
-
- # Source files used for the Android build.
- set(FIREBASE_SAMPLE_ANDROID_SRCS
- src/android/android_main.cc
- )
-
- # Build native_app_glue as a static lib
- add_library(native_app_glue STATIC
- ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
-
- # Export ANativeActivity_onCreate(),
- # Refer to: https://github.com/android-ndk/ndk/issues/381.
- set(CMAKE_SHARED_LINKER_FLAGS
- "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")
-
- # Define the target as a shared library, as that is what gradle expects.
- set(target_name "android_main")
- add_library(${target_name} SHARED
- ${FIREBASE_SAMPLE_ANDROID_SRCS}
- ${FIREBASE_SAMPLE_COMMON_SRCS}
- )
-
- target_link_libraries(${target_name}
- log android atomic native_app_glue
- )
-
- target_include_directories(${target_name} PRIVATE
- ${ANDROID_NDK}/sources/android/native_app_glue)
-
- set(ADDITIONAL_LIBS)
-else()
- # Build a desktop application.
-
- # Windows runtime mode, either MD or MT depending on whether you are using
- # /MD or /MT. For more information see:
- # https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx
- set(MSVC_RUNTIME_MODE MD)
-
- # Platform abstraction layer for the desktop sample.
- set(FIREBASE_SAMPLE_DESKTOP_SRCS
- src/desktop/desktop_main.cc
- )
-
- set(target_name "desktop_testapp")
- add_executable(${target_name}
- ${FIREBASE_SAMPLE_DESKTOP_SRCS}
- ${FIREBASE_SAMPLE_COMMON_SRCS}
- )
-
- if(APPLE)
- set(ADDITIONAL_LIBS pthread)
- elseif(MSVC)
- set(ADDITIONAL_LIBS)
- else()
- set(ADDITIONAL_LIBS pthread)
- endif()
-
- # If a config file is present, copy it into the binary location so that it's
- # possible to create the default Firebase app.
- set(FOUND_JSON_FILE FALSE)
- foreach(config "google-services-desktop.json" "google-services.json")
- if (EXISTS ${config})
- add_custom_command(
- TARGET ${target_name} POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy
- ${config} $)
- set(FOUND_JSON_FILE TRUE)
- break()
- endif()
- endforeach()
- if(NOT FOUND_JSON_FILE)
- message(WARNING "Failed to find either google-services-desktop.json or google-services.json. See the readme.md for more information.")
- endif()
-endif()
-
-# Add the Firebase libraries to the target using the function from the SDK.
-add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
-# Note that firebase_app needs to be last in the list.
-set(firebase_libs firebase_dynamic_links firebase_app)
-target_link_libraries(${target_name} "${firebase_libs}" ${ADDITIONAL_LIBS})
diff --git a/dynamic_links/testapp/LICENSE b/dynamic_links/testapp/LICENSE
deleted file mode 100644
index d6456956..00000000
--- a/dynamic_links/testapp/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
diff --git a/dynamic_links/testapp/LaunchScreen.storyboard b/dynamic_links/testapp/LaunchScreen.storyboard
deleted file mode 100644
index 673e0f7e..00000000
--- a/dynamic_links/testapp/LaunchScreen.storyboard
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/dynamic_links/testapp/Podfile b/dynamic_links/testapp/Podfile
deleted file mode 100644
index e983680a..00000000
--- a/dynamic_links/testapp/Podfile
+++ /dev/null
@@ -1,7 +0,0 @@
-source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '13.0'
-use_frameworks!
-# Dynamic Links test application.
-target 'testapp' do
- pod 'Firebase/DynamicLinks', '10.25.0'
-end
diff --git a/dynamic_links/testapp/build.gradle b/dynamic_links/testapp/build.gradle
deleted file mode 100644
index e7b828bb..00000000
--- a/dynamic_links/testapp/build.gradle
+++ /dev/null
@@ -1,76 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- repositories {
- mavenLocal()
- maven { url 'https://maven.google.com' }
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.1'
- classpath 'com.google.gms:google-services:4.0.1'
- }
-}
-
-allprojects {
- repositories {
- mavenLocal()
- maven { url 'https://maven.google.com' }
- jcenter()
- }
-}
-
-apply plugin: 'com.android.application'
-
-android {
- compileOptions {
- sourceCompatibility 1.8
- targetCompatibility 1.8
- }
- compileSdkVersion 34
- ndkPath System.getenv('ANDROID_NDK_HOME')
- buildToolsVersion '30.0.2'
-
- sourceSets {
- main {
- jniLibs.srcDirs = ['libs']
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src/android/java']
- res.srcDirs = ['res']
- }
- }
-
- defaultConfig {
- applicationId 'com.google.android.dynamiclinks.testapp'
- minSdkVersion 23
- targetSdkVersion 28
- versionCode 1
- versionName '1.0'
- externalNativeBuild.cmake {
- arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
- }
- }
- externalNativeBuild.cmake {
- path 'CMakeLists.txt'
- }
- buildTypes {
- release {
- minifyEnabled true
- proguardFile getDefaultProguardFile('proguard-android.txt')
- proguardFile file('proguard.pro')
- }
- }
- packagingOptions {
- pickFirst 'META-INF/**/coroutines.pro'
- }
- lintOptions {
- abortOnError false
- checkReleaseBuilds false
- }
-}
-
-apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
-firebaseCpp.dependencies {
- dynamicLinks
-}
-
-apply plugin: 'com.google.gms.google-services'
diff --git a/dynamic_links/testapp/gradle.properties b/dynamic_links/testapp/gradle.properties
deleted file mode 100644
index d7ba8f42..00000000
--- a/dynamic_links/testapp/gradle.properties
+++ /dev/null
@@ -1 +0,0 @@
-android.useAndroidX = true
diff --git a/dynamic_links/testapp/gradle/wrapper/gradle-wrapper.jar b/dynamic_links/testapp/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 8c0fb64a..00000000
Binary files a/dynamic_links/testapp/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/dynamic_links/testapp/gradle/wrapper/gradle-wrapper.properties b/dynamic_links/testapp/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 475b0f7d..00000000
--- a/dynamic_links/testapp/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-#Mon Nov 27 14:03:45 PST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https://services.gradle.org/distributions/gradle-6.7.1-all.zip
-
diff --git a/dynamic_links/testapp/gradlew b/dynamic_links/testapp/gradlew
deleted file mode 100755
index 91a7e269..00000000
--- a/dynamic_links/testapp/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/dynamic_links/testapp/gradlew.bat b/dynamic_links/testapp/gradlew.bat
deleted file mode 100644
index 8a0b282a..00000000
--- a/dynamic_links/testapp/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/dynamic_links/testapp/proguard.pro b/dynamic_links/testapp/proguard.pro
deleted file mode 100644
index 54cd248b..00000000
--- a/dynamic_links/testapp/proguard.pro
+++ /dev/null
@@ -1,2 +0,0 @@
--ignorewarnings
--keep,includedescriptorclasses public class com.google.firebase.example.LoggingUtils { *; }
diff --git a/dynamic_links/testapp/readme.md b/dynamic_links/testapp/readme.md
deleted file mode 100644
index 66190975..00000000
--- a/dynamic_links/testapp/readme.md
+++ /dev/null
@@ -1,223 +0,0 @@
-Firebase Dynamic Links Quickstart
-=================================
-
-> [!IMPORTANT]
-> Firebase Dynamic Links is **deprecated** and should not be used in new projects. The service will shut down on August 25, 2025.
->
-> Please see our [Dynamic Links Deprecation FAQ documentation](https://firebase.google.com/support/dynamic-links-faq) for more guidance.
-
-The Firebase Dynamic Links Quickstart demonstrates logging a range
-of different events using the Firebase Dynamic Links C++ SDK. The application
-has no user interface and simply logs actions it's performing to the console.
-
-Introduction
-------------
-
-- [Read more about Firebase Dynamic Links](https://firebase.google.com/docs/dynamic-links/)
-
-Building and Running the testapp
---------------------------------
-
-### iOS
- - Link your iOS app to the Firebase libraries.
- - Get CocoaPods version 1 or later by running,
- ```
- sudo gem install cocoapods --pre
- ```
- - From the testapp directory, install the CocoaPods listed in the Podfile
- by running,
- ```
- pod install
- ```
- - Open the generated Xcode workspace (which now has the CocoaPods),
- ```
- open testapp.xcworkspace
- ```
- - For further details please refer to the
- [general instructions for setting up an iOS app with Firebase](https://firebase.google.com/docs/ios/setup).
- - Register your iOS app with Firebase.
- - Create a new app on the [Firebase console](https://firebase.google.com/console/), and attach
- your iOS app to it.
- - You can use "com.google.FirebaseCppDynamicLinksTestApp.dev" as the iOS Bundle ID
- while you're testing. You can omit App Store ID while testing.
- - Add the GoogleService-Info.plist that you downloaded from Firebase
- console to the testapp root directory. This file identifies your iOS app
- to the Firebase backend.
- - Configure the app to handle dynamic links / app invites.
- - In your project's Info tab, under the URL Types section, find the URL
- Schemes box and add your app's bundle ID (the default scheme used
- by dynamic links).
- - Copy the dynamic links domain for your project under the Dynamic Links
- tab of the [Firebase console](https://firebase.google.com/console/)
- Then, in your project's Capabilities tab:
- - Enable the Associated Domains capability.
- - Add applinks:YOUR_DYNAMIC_LINKS_DOMAIN
- For example "applinks:xyz.app.goo.gl".
- - Copy the dynamic links domain for your project under the Dynamic Links
- tab of the [Firebase console](https://firebase.google.com/console/)
- e.g xyz.app.goo.gl and assign to the string kDomainUriPrefix in
- src/common_main.cc .
- - Optional: If you want to use a custom Dynamic Links domain, follow
- [these instructions](https://firebase.google.com/docs/dynamic-links/custom-domains)
- to set up the domain in Firebase console and in your project's Info.plist.
- Be sure to assign that domain to the string kDomainUriPrefix in
- src/common_main.cc.
- - Download the Firebase C++ SDK linked from
- [https://firebase.google.com/docs/cpp/setup](https://firebase.google.com/docs/cpp/setup)
- and unzip it to a directory of your choice.
- - Add the following frameworks from the Firebase C++ SDK to the project:
- - frameworks/ios/universal/firebase.framework
- - frameworks/ios/universal/firebase\_dynamic_links.framework
- - You will need to either,
- 1. Check "Copy items if needed" when adding the frameworks, or
- 2. Add the framework path in "Framework Search Paths"
- - e.g. If you downloaded the Firebase C++ SDK to
- `/Users/me/firebase_cpp_sdk`,
- then you would add the path
- `/Users/me/firebase_cpp_sdk/frameworks/ios/universal`.
- - To add the path, in XCode, select your project in the project
- navigator, then select your target in the main window.
- Select the "Build Settings" tab, and click "All" to see all
- the build settings. Scroll down to "Search Paths", and add
- your path to "Framework Search Paths".
- - In XCode, build & run the sample on an iOS device or simulator.
- - The testapp has no user interface. The output of the app can be viewed
- via the console. In Xcode, select
- "View --> Debug Area --> Activate Console" from the menu.
- - When running the application you should see:
- - The dynamic link - if any - recevied by the application on startup.
- - A dynamically generated long link.
- - A dynamically generated short link.
- - Leaving the application and opening a link (e.g via an email) for the app
- should reopen the app and display the dynamic link.
-
-### Android
- - Register your Android app with Firebase.
- - Create a new app on the [Firebase console](https://firebase.google.com/console/), and attach
- your Android app to it.
- - You can use "com.google.android.dynamiclinks.testapp" as the Package Name
- while you're testing.
- - To [generate a SHA1](https://developers.google.com/android/guides/client-auth)
- run this command on Mac and Linux,
- ```
- keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
- ```
- or this command on Windows,
- ```
- keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
- ```
- - If keytool reports that you do not have a debug.keystore, you can
- [create one with](http://developer.android.com/tools/publishing/app-signing.html#signing-manually),
- ```
- keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"
- ```
- - Add the `google-services.json` file that you downloaded from Firebase
- console to the root directory of testapp. This file identifies your
- Android app to the Firebase backend.
- - For further details please refer to the
- [general instructions for setting up an Android app with Firebase](https://firebase.google.com/docs/android/setup).
- - Copy the dynamic links domain for your project under the Dynamic Links
- tab of the [Firebase console](https://firebase.google.com/console/)
- e.g xyz.app.goo.gl and assign to the string kDomainUriPrefix in
- src/common_main.cc .
- - Optional: If you want to use a custom Dynamic Links domain, follow
- [these instructions](https://firebase.google.com/docs/dynamic-links/custom-domains)
- to set up the domain in Firebase console. Be sure to assign that domain to
- the string kDomainUriPrefix in src/common_main.cc.
- - Download the Firebase C++ SDK linked from
- [https://firebase.google.com/docs/cpp/setup](https://firebase.google.com/docs/cpp/setup)
- and unzip it to a directory of your choice.
- - Configure the location of the Firebase C++ SDK by setting the
- firebase\_cpp\_sdk.dir Gradle property to the SDK install directory.
- For example, in the project directory:
- ```
- echo "systemProp.firebase\_cpp\_sdk.dir=/User/$USER/firebase\_cpp\_sdk" >> gradle.properties
- ```
- - Ensure the Android SDK and NDK locations are set in Android Studio.
- - From the Android Studio launch menu, go to `File/Project Structure...` or
- `Configure/Project Defaults/Project Structure...`
- (Shortcut: Control + Alt + Shift + S on windows, Command + ";" on a mac)
- and download the SDK and NDK if the locations are not yet set.
- - Open *build.gradle* in Android Studio.
- - From the Android Studio launch menu, "Open an existing Android Studio
- project", and select `build.gradle`.
- - Install the SDK Platforms that Android Studio reports missing.
- - Build the testapp and run it on an Android device or emulator.
- - The testapp has no user interface. The output of the app can be viewed
- in the logcat output of Android studio or by running "adb logcat" from
- the command line.
- - When running the application you should see:
- - The dynamic link - if any - recevied by the application on startup.
- - A dynamically generated long link.
- - A dynamically generated short link.
- - Leaving the application and opening a link (e.g via an email) for the app
- should reopen the app and display the dynamic link.
-
-### Desktop
- - Register your app with Firebase.
- - Create a new app on the [Firebase console](https://firebase.google.com/console/),
- following the above instructions for Android or iOS.
- - If you have an Android project, add the `google-services.json` file that
- you downloaded from the Firebase console to the root directory of the
- testapp.
- - If you have an iOS project, and don't wish to use an Android project,
- you can use the Python script `generate_xml_from_google_services_json.py --plist`,
- located in the Firebase C++ SDK, to convert your `GoogleService-Info.plist`
- file into a `google-services-desktop.json` file, which can then be
- placed in the root directory of the testapp.
- - Download the Firebase C++ SDK linked from
- [https://firebase.google.com/docs/cpp/setup](https://firebase.google.com/docs/cpp/setup)
- and unzip it to a directory of your choice.
- - Configure the testapp with the location of the Firebase C++ SDK.
- This can be done a couple different ways (in highest to lowest priority):
- - When invoking cmake, pass in the location with
- -DFIREBASE_CPP_SDK_DIR=/path/to/firebase_cpp_sdk.
- - Set an environment variable for FIREBASE_CPP_SDK_DIR to the path to use.
- - Edit the CMakeLists.txt file, changing the FIREBASE_CPP_SDK_DIR path
- to the appropriate location.
- - From the testapp directory, generate the build files by running,
- ```
- cmake .
- ```
- If you want to use XCode, you can use -G"Xcode" to generate the project.
- Similarly, to use Visual Studio, -G"Visual Studio 15 2017". For more
- information, see
- [CMake generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html).
- - Build the testapp, by either opening the generated project file based on
- the platform, or running,
- ```
- cmake --build .
- ```
- - Execute the testapp by running,
- ```
- ./desktop_testapp
- ```
- Note that the executable might be under another directory, such as Debug.
- - The testapp has no user interface, but the output can be viewed via the
- console. Note that Dynamic Links uses a stubbed implementation on desktop,
- so functionality is not expected.
-
-Support
--------
-
-[https://firebase.google.com/support/](https://firebase.google.com/support/)
-
-License
--------
-
-Copyright 2017 Google, Inc.
-
-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.
diff --git a/dynamic_links/testapp/res/layout/main.xml b/dynamic_links/testapp/res/layout/main.xml
deleted file mode 100644
index d3ffb630..00000000
--- a/dynamic_links/testapp/res/layout/main.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/dynamic_links/testapp/res/values/strings.xml b/dynamic_links/testapp/res/values/strings.xml
deleted file mode 100644
index 33fe18b2..00000000
--- a/dynamic_links/testapp/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- Firebase Dynamic Links Test
-
diff --git a/dynamic_links/testapp/settings.gradle b/dynamic_links/testapp/settings.gradle
deleted file mode 100644
index 2a543b93..00000000
--- a/dynamic_links/testapp/settings.gradle
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2018 Google LLC
-//
-// 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.
-
-def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
-if (firebase_cpp_sdk_dir == null || firebase_cpp_sdk_dir.isEmpty()) {
- firebase_cpp_sdk_dir = System.getenv('FIREBASE_CPP_SDK_DIR')
- if (firebase_cpp_sdk_dir == null || firebase_cpp_sdk_dir.isEmpty()) {
- if ((new File('firebase_cpp_sdk')).exists()) {
- firebase_cpp_sdk_dir = 'firebase_cpp_sdk'
- } else {
- throw new StopActionException(
- 'firebase_cpp_sdk.dir property or the FIREBASE_CPP_SDK_DIR ' +
- 'environment variable must be set to reference the Firebase C++ ' +
- 'SDK install directory. This is used to configure static library ' +
- 'and C/C++ include paths for the SDK.')
- }
- }
-}
-if (!(new File(firebase_cpp_sdk_dir)).exists()) {
- throw new StopActionException(
- sprintf('Firebase C++ SDK directory %s does not exist',
- firebase_cpp_sdk_dir))
-}
-gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
-includeBuild "$firebase_cpp_sdk_dir"
\ No newline at end of file
diff --git a/dynamic_links/testapp/src/android/android_main.cc b/dynamic_links/testapp/src/android/android_main.cc
deleted file mode 100644
index 4e033e1c..00000000
--- a/dynamic_links/testapp/src/android/android_main.cc
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-//
-// 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.
-
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include "main.h" // NOLINT
-
-// This implementation is derived from http://github.com/google/fplutil
-
-extern "C" int common_main(int argc, const char* argv[]);
-
-static struct android_app* g_app_state = nullptr;
-static bool g_destroy_requested = false;
-static bool g_started = false;
-static bool g_restarted = false;
-static pthread_mutex_t g_started_mutex;
-
-// Handle state changes from via native app glue.
-static void OnAppCmd(struct android_app* app, int32_t cmd) {
- g_destroy_requested |= cmd == APP_CMD_DESTROY;
-}
-
-// Process events pending on the main thread.
-// Returns true when the app receives an event requesting exit.
-bool ProcessEvents(int msec) {
- struct android_poll_source* source = nullptr;
- int events;
- int looperId = ALooper_pollAll(msec, nullptr, &events,
- reinterpret_cast(&source));
- if (looperId >= 0 && source) {
- source->process(g_app_state, source);
- }
- return g_destroy_requested | g_restarted;
-}
-
-// Get the activity.
-jobject GetActivity() { return g_app_state->activity->clazz; }
-
-// Get the window context. For Android, it's a jobject pointing to the Activity.
-jobject GetWindowContext() { return g_app_state->activity->clazz; }
-
-// Find a class, attempting to load the class if it's not found.
-jclass FindClass(JNIEnv* env, jobject activity_object, const char* class_name) {
- jclass class_object = env->FindClass(class_name);
- if (env->ExceptionCheck()) {
- env->ExceptionClear();
- // If the class isn't found it's possible NativeActivity is being used by
- // the application which means the class path is set to only load system
- // classes. The following falls back to loading the class using the
- // Activity before retrieving a reference to it.
- jclass activity_class = env->FindClass("android/app/Activity");
- jmethodID activity_get_class_loader = env->GetMethodID(
- activity_class, "getClassLoader", "()Ljava/lang/ClassLoader;");
-
- jobject class_loader_object =
- env->CallObjectMethod(activity_object, activity_get_class_loader);
-
- jclass class_loader_class = env->FindClass("java/lang/ClassLoader");
- jmethodID class_loader_load_class =
- env->GetMethodID(class_loader_class, "loadClass",
- "(Ljava/lang/String;)Ljava/lang/Class;");
- jstring class_name_object = env->NewStringUTF(class_name);
-
- class_object = static_cast(env->CallObjectMethod(
- class_loader_object, class_loader_load_class, class_name_object));
-
- if (env->ExceptionCheck()) {
- env->ExceptionClear();
- class_object = nullptr;
- }
- env->DeleteLocalRef(class_name_object);
- env->DeleteLocalRef(class_loader_object);
- }
- return class_object;
-}
-
-// Vars that we need available for appending text to the log window:
-class LoggingUtilsData {
- public:
- LoggingUtilsData()
- : logging_utils_class_(nullptr),
- logging_utils_add_log_text_(0),
- logging_utils_init_log_window_(0) {}
-
- ~LoggingUtilsData() {
- JNIEnv* env = GetJniEnv();
- assert(env);
- if (logging_utils_class_) {
- env->DeleteGlobalRef(logging_utils_class_);
- }
- }
-
- void Init() {
- JNIEnv* env = GetJniEnv();
- assert(env);
-
- jclass logging_utils_class = FindClass(
- env, GetActivity(), "com/google/firebase/example/LoggingUtils");
- assert(logging_utils_class != 0);
-
- // Need to store as global references so it don't get moved during garbage
- // collection.
- logging_utils_class_ =
- static_cast(env->NewGlobalRef(logging_utils_class));
- env->DeleteLocalRef(logging_utils_class);
-
- logging_utils_init_log_window_ = env->GetStaticMethodID(
- logging_utils_class_, "initLogWindow", "(Landroid/app/Activity;)V");
- logging_utils_add_log_text_ = env->GetStaticMethodID(
- logging_utils_class_, "addLogText", "(Ljava/lang/String;)V");
-
- env->CallStaticVoidMethod(logging_utils_class_,
- logging_utils_init_log_window_, GetActivity());
- }
-
- void AppendText(const char* text) {
- if (logging_utils_class_ == 0) return; // haven't been initted yet
- JNIEnv* env = GetJniEnv();
- assert(env);
- jstring text_string = env->NewStringUTF(text);
- env->CallStaticVoidMethod(logging_utils_class_, logging_utils_add_log_text_,
- text_string);
- env->DeleteLocalRef(text_string);
- }
-
- private:
- jclass logging_utils_class_;
- jmethodID logging_utils_add_log_text_;
- jmethodID logging_utils_init_log_window_;
-};
-
-LoggingUtilsData* g_logging_utils_data;
-
-// Checks if a JNI exception has happened, and if so, logs it to the console.
-void CheckJNIException() {
- JNIEnv* env = GetJniEnv();
- if (env->ExceptionCheck()) {
- // Get the exception text.
- jthrowable exception = env->ExceptionOccurred();
- env->ExceptionClear();
-
- // Convert the exception to a string.
- jclass object_class = env->FindClass("java/lang/Object");
- jmethodID toString =
- env->GetMethodID(object_class, "toString", "()Ljava/lang/String;");
- jstring s = (jstring)env->CallObjectMethod(exception, toString);
- const char* exception_text = env->GetStringUTFChars(s, nullptr);
-
- // Log the exception text.
- __android_log_print(ANDROID_LOG_INFO, FIREBASE_TESTAPP_NAME,
- "-------------------JNI exception:");
- __android_log_print(ANDROID_LOG_INFO, FIREBASE_TESTAPP_NAME, "%s",
- exception_text);
- __android_log_print(ANDROID_LOG_INFO, FIREBASE_TESTAPP_NAME,
- "-------------------");
-
- // Also, assert fail.
- assert(false);
-
- // In the event we didn't assert fail, clean up.
- env->ReleaseStringUTFChars(s, exception_text);
- env->DeleteLocalRef(s);
- env->DeleteLocalRef(exception);
- }
-}
-
-// Log a message that can be viewed in "adb logcat".
-void LogMessage(const char* format, ...) {
- static const int kLineBufferSize = 1000;
- char buffer[kLineBufferSize + 2];
-
- va_list list;
- va_start(list, format);
- int string_len = vsnprintf(buffer, kLineBufferSize, format, list);
- string_len = string_len < kLineBufferSize ? string_len : kLineBufferSize;
- // append a linebreak to the buffer:
- buffer[string_len] = '\n';
- buffer[string_len + 1] = '\0';
-
- __android_log_vprint(ANDROID_LOG_INFO, FIREBASE_TESTAPP_NAME, format, list);
- g_logging_utils_data->AppendText(buffer);
- CheckJNIException();
- va_end(list);
-}
-
-// Get the JNI environment.
-JNIEnv* GetJniEnv() {
- JavaVM* vm = g_app_state->activity->vm;
- JNIEnv* env;
- jint result = vm->AttachCurrentThread(&env, nullptr);
- return result == JNI_OK ? env : nullptr;
-}
-
-// Execute common_main(), flush pending events and finish the activity.
-extern "C" void android_main(struct android_app* state) {
- // native_app_glue spawns a new thread, calling android_main() when the
- // activity onStart() or onRestart() methods are called. This code handles
- // the case where we're re-entering this method on a different thread by
- // signalling the existing thread to exit, waiting for it to complete before
- // reinitializing the application.
- if (g_started) {
- g_restarted = true;
- // Wait for the existing thread to exit.
- pthread_mutex_lock(&g_started_mutex);
- pthread_mutex_unlock(&g_started_mutex);
- } else {
- g_started_mutex = PTHREAD_MUTEX_INITIALIZER;
- }
- pthread_mutex_lock(&g_started_mutex);
- g_started = true;
-
- // Save native app glue state and setup a callback to track the state.
- g_destroy_requested = false;
- g_app_state = state;
- g_app_state->onAppCmd = OnAppCmd;
-
- // Create the logging display.
- g_logging_utils_data = new LoggingUtilsData();
- g_logging_utils_data->Init();
-
- // Execute cross platform entry point.
- static const char* argv[] = {FIREBASE_TESTAPP_NAME};
- int return_value = common_main(1, argv);
- (void)return_value; // Ignore the return value.
- ProcessEvents(10);
-
- // Clean up logging display.
- delete g_logging_utils_data;
- g_logging_utils_data = nullptr;
-
- // Finish the activity.
- if (!g_restarted) ANativeActivity_finish(state->activity);
-
- g_app_state->activity->vm->DetachCurrentThread();
- g_started = false;
- g_restarted = false;
- pthread_mutex_unlock(&g_started_mutex);
-}
diff --git a/dynamic_links/testapp/src/android/java/com/google/firebase/example/LoggingUtils.java b/dynamic_links/testapp/src/android/java/com/google/firebase/example/LoggingUtils.java
deleted file mode 100644
index 11d67c5b..00000000
--- a/dynamic_links/testapp/src/android/java/com/google/firebase/example/LoggingUtils.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-//
-// 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.
-
-package com.google.firebase.example;
-
-import android.app.Activity;
-import android.os.Handler;
-import android.os.Looper;
-import android.view.Window;
-import android.widget.LinearLayout;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-/**
- * A utility class, encapsulating the data and methods required to log arbitrary
- * text to the screen, via a non-editable TextView.
- */
-public class LoggingUtils {
- public static TextView sTextView = null;
-
- public static void initLogWindow(Activity activity) {
- LinearLayout linearLayout = new LinearLayout(activity);
- ScrollView scrollView = new ScrollView(activity);
- TextView textView = new TextView(activity);
- textView.setTag("Logger");
- linearLayout.addView(scrollView);
- scrollView.addView(textView);
- Window window = activity.getWindow();
- window.takeSurface(null);
- window.setContentView(linearLayout);
- sTextView = textView;
- }
-
- public static void addLogText(final String text) {
- new Handler(Looper.getMainLooper()).post(new Runnable() {
- @Override
- public void run() {
- if (sTextView != null) {
- sTextView.append(text);
- }
- }
- });
- }
-}
diff --git a/dynamic_links/testapp/src/common_main.cc b/dynamic_links/testapp/src/common_main.cc
deleted file mode 100644
index 3201f859..00000000
--- a/dynamic_links/testapp/src/common_main.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-//
-// 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.
-
-#include
-#include
-
-#include "firebase/app.h"
-#include "firebase/dynamic_links.h"
-#include "firebase/dynamic_links/components.h"
-#include "firebase/future.h"
-#include "firebase/util.h"
-// Thin OS abstraction layer.
-#include "main.h" // NOLINT
-
-// Invalid domain, used to make sure the user sets a valid domain.
-#define INVALID_DOMAIN_URI_PREFIX "THIS_IS_AN_INVALID_DOMAIN"
-
-static const char* kDomainUriPrefixInvalidError =
- "kDomainUriPrefix is not valid, link shortening will fail.\n"
- "To resolve this:\n"
- "* Goto the Firebase console https://firebase.google.com/console/\n"
- "* Click on the Dynamic Links tab\n"
- "* Copy the URI prefix e.g https://x20yz.app.goo.gl\n"
- "* Replace the value of kDomainUriPrefix with the copied URI prefix.\n";
-
-// IMPORTANT: You need to set this to a valid URI prefix from the Firebase
-// console (see kDomainUriPrefixInvalidError for the details).
-static const char* kDomainUriPrefix = INVALID_DOMAIN_URI_PREFIX;
-
-// Displays a received dynamic link.
-class Listener : public firebase::dynamic_links::Listener {
- public:
- // Called on the client when a dynamic link arrives.
- void OnDynamicLinkReceived(
- const firebase::dynamic_links::DynamicLink* dynamic_link) override {
- LogMessage("Received link: %s", dynamic_link->url.c_str());
- }
-};
-
-void WaitForCompletion(const firebase::FutureBase& future, const char* name) {
- while (future.status() == firebase::kFutureStatusPending) {
- ProcessEvents(100);
- }
- if (future.status() != firebase::kFutureStatusComplete) {
- LogMessage("ERROR: %s returned an invalid result.", name);
- } else if (future.error() != 0) {
- LogMessage("ERROR: %s returned error %d: %s", name, future.error(),
- future.error_message());
- }
-}
-
-// Show a generated link.
-void ShowGeneratedLink(
- const firebase::dynamic_links::GeneratedDynamicLink& generated_link,
- const char* operation_description) {
- if (!generated_link.warnings.empty()) {
- LogMessage("%s generated warnings:", operation_description);
- for (auto it = generated_link.warnings.begin();
- it != generated_link.warnings.end(); ++it) {
- LogMessage(" %s", it->c_str());
- }
- }
- LogMessage("url: %s", generated_link.url.c_str());
-}
-
-// Wait for dynamic link generation to complete, logging the result.
-void WaitForAndShowGeneratedLink(
- const firebase::Future&
- generated_dynamic_link_future,
- const char* operation_description) {
- LogMessage("%s...", operation_description);
- WaitForCompletion(generated_dynamic_link_future, operation_description);
- if (generated_dynamic_link_future.error() != 0) {
- LogMessage("ERROR: %s failed with error %d: %s", operation_description,
- generated_dynamic_link_future.error(),
- generated_dynamic_link_future.error_message());
- return;
- }
- ShowGeneratedLink(*generated_dynamic_link_future.result(),
- operation_description);
-}
-
-// Execute all methods of the C++ Dynamic Links API.
-extern "C" int common_main(int argc, const char* argv[]) {
- namespace dynamic_links = ::firebase::dynamic_links;
- ::firebase::App* app;
- Listener* link_listener = new Listener;
-
- LogMessage("Initialize the Firebase Dynamic Links library");
-#if defined(__ANDROID__)
- app = ::firebase::App::Create(GetJniEnv(), GetActivity());
-#else
- app = ::firebase::App::Create();
-#endif // defined(__ANDROID__)
-
- LogMessage("Created the Firebase app %x",
- static_cast(reinterpret_cast(app)));
-
- ::firebase::ModuleInitializer initializer;
- initializer.Initialize(app, link_listener,
- [](::firebase::App* app, void* listener) {
- LogMessage("Try to initialize Dynamic Links");
- return ::firebase::dynamic_links::Initialize(
- *app, reinterpret_cast(listener));
- });
- while (initializer.InitializeLastResult().status() !=
- firebase::kFutureStatusComplete) {
- if (ProcessEvents(100)) return 1; // exit if requested
- }
- if (initializer.InitializeLastResult().error() != 0) {
- LogMessage("Failed to initialize Firebase Dynamic Links: %s",
- initializer.InitializeLastResult().error_message());
- ProcessEvents(2000);
- return 1;
- }
-
- LogMessage("Initialized the Firebase Dynamic Links API");
-
- firebase::dynamic_links::GoogleAnalyticsParameters analytics_parameters;
- analytics_parameters.source = "mysource";
- analytics_parameters.medium = "mymedium";
- analytics_parameters.campaign = "mycampaign";
- analytics_parameters.term = "myterm";
- analytics_parameters.content = "mycontent";
-
- firebase::dynamic_links::IOSParameters ios_parameters("com.myapp.bundleid");
- ios_parameters.fallback_url = "https://mysite/fallback";
- ios_parameters.custom_scheme = "mycustomscheme";
- ios_parameters.minimum_version = "1.2.3";
- ios_parameters.ipad_bundle_id = "com.myapp.bundleid.ipad";
- ios_parameters.ipad_fallback_url = "https://mysite/fallbackipad";
-
- firebase::dynamic_links::ITunesConnectAnalyticsParameters
- app_store_parameters;
- app_store_parameters.affiliate_token = "abcdefg";
- app_store_parameters.campaign_token = "hijklmno";
- app_store_parameters.provider_token = "pq-rstuv";
-
- firebase::dynamic_links::AndroidParameters android_parameters(
- "com.myapp.packageid");
- android_parameters.fallback_url = "https://mysite/fallback";
- android_parameters.minimum_version = 12;
-
- firebase::dynamic_links::SocialMetaTagParameters social_parameters;
- social_parameters.title = "My App!";
- social_parameters.description = "My app is awesome!";
- social_parameters.image_url = "https://mysite.com/someimage.jpg";
-
- firebase::dynamic_links::DynamicLinkComponents components(
- "https://google.com/abc", kDomainUriPrefix);
- components.google_analytics_parameters = &analytics_parameters;
- components.ios_parameters = &ios_parameters;
- components.itunes_connect_analytics_parameters = &app_store_parameters;
- components.android_parameters = &android_parameters;
- components.social_meta_tag_parameters = &social_parameters;
-
- dynamic_links::GeneratedDynamicLink long_link;
- {
- const char* description = "Generate long link from components";
- long_link = dynamic_links::GetLongLink(components);
- LogMessage("%s...", description);
- ShowGeneratedLink(long_link, description);
- }
-
- if (strcmp(kDomainUriPrefix, INVALID_DOMAIN_URI_PREFIX) == 0) {
- LogMessage(kDomainUriPrefixInvalidError);
- } else {
- {
- firebase::Future link_future =
- dynamic_links::GetShortLink(components);
- WaitForAndShowGeneratedLink(link_future,
- "Generate short link from components");
- }
- if (!long_link.url.empty()) {
- dynamic_links::DynamicLinkOptions options;
- options.path_length = firebase::dynamic_links::kPathLengthShort;
- firebase::Future link_future =
- dynamic_links::GetShortLink(long_link.url.c_str(), options);
- WaitForAndShowGeneratedLink(link_future, "Generate short from long link");
- }
- }
-
- // Wait until the user wants to quit the app.
- while (!ProcessEvents(1000)) {
- }
-
- dynamic_links::Terminate();
- delete link_listener;
- delete app;
-
- return 0;
-}
diff --git a/dynamic_links/testapp/src/desktop/desktop_main.cc b/dynamic_links/testapp/src/desktop/desktop_main.cc
deleted file mode 100644
index 0220c688..00000000
--- a/dynamic_links/testapp/src/desktop/desktop_main.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-//
-// 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.
-
-#include
-#include
-#include
-
-#ifdef _WIN32
-#include
-#define chdir _chdir
-#else
-#include
-#endif // _WIN32
-
-#ifdef _WIN32
-#include
-#endif // _WIN32
-
-#include
-#include
-
-#include "main.h" // NOLINT
-
-// The TO_STRING macro is useful for command line defined strings as the quotes
-// get stripped.
-#define TO_STRING_EXPAND(X) #X
-#define TO_STRING(X) TO_STRING_EXPAND(X)
-
-// Path to the Firebase config file to load.
-#ifdef FIREBASE_CONFIG
-#define FIREBASE_CONFIG_STRING TO_STRING(FIREBASE_CONFIG)
-#else
-#define FIREBASE_CONFIG_STRING ""
-#endif // FIREBASE_CONFIG
-
-extern "C" int common_main(int argc, const char* argv[]);
-
-static bool quit = false;
-
-#ifdef _WIN32
-static BOOL WINAPI SignalHandler(DWORD event) {
- if (!(event == CTRL_C_EVENT || event == CTRL_BREAK_EVENT)) {
- return FALSE;
- }
- quit = true;
- return TRUE;
-}
-#else
-static void SignalHandler(int /* ignored */) { quit = true; }
-#endif // _WIN32
-
-bool ProcessEvents(int msec) {
-#ifdef _WIN32
- Sleep(msec);
-#else
- usleep(msec * 1000);
-#endif // _WIN32
- return quit;
-}
-
-std::string PathForResource() {
- return std::string();
-}
-
-void LogMessage(const char* format, ...) {
- va_list list;
- va_start(list, format);
- vprintf(format, list);
- va_end(list);
- printf("\n");
- fflush(stdout);
-}
-
-WindowContext GetWindowContext() { return nullptr; }
-
-// Change the current working directory to the directory containing the
-// specified file.
-void ChangeToFileDirectory(const char* file_path) {
- std::string path(file_path);
- std::replace(path.begin(), path.end(), '\\', '/');
- auto slash = path.rfind('/');
- if (slash != std::string::npos) {
- std::string directory = path.substr(0, slash);
- if (!directory.empty()) chdir(directory.c_str());
- }
-}
-
-int main(int argc, const char* argv[]) {
- ChangeToFileDirectory(
- FIREBASE_CONFIG_STRING[0] != '\0' ?
- FIREBASE_CONFIG_STRING : argv[0]); // NOLINT
-#ifdef _WIN32
- SetConsoleCtrlHandler((PHANDLER_ROUTINE)SignalHandler, TRUE);
-#else
- signal(SIGINT, SignalHandler);
-#endif // _WIN32
- return common_main(argc, argv);
-}
-
-#if defined(_WIN32)
-// Returns the number of microseconds since the epoch.
-int64_t WinGetCurrentTimeInMicroseconds() {
- FILETIME file_time;
- GetSystemTimeAsFileTime(&file_time);
-
- ULARGE_INTEGER now;
- now.LowPart = file_time.dwLowDateTime;
- now.HighPart = file_time.dwHighDateTime;
-
- // Windows file time is expressed in 100s of nanoseconds.
- // To convert to microseconds, multiply x10.
- return now.QuadPart * 10LL;
-}
-#endif
diff --git a/dynamic_links/testapp/src/ios/ios_main.mm b/dynamic_links/testapp/src/ios/ios_main.mm
deleted file mode 100644
index 2adcac9c..00000000
--- a/dynamic_links/testapp/src/ios/ios_main.mm
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-//
-// 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.
-
-#import
-
-#include
-
-#include "main.h"
-
-extern "C" int common_main(int argc, const char* argv[]);
-
-@interface AppDelegate : UIResponder
-
-@property(nonatomic, strong) UIWindow *window;
-
-@end
-
-@interface FTAViewController : UIViewController
-
-@end
-
-static int g_exit_status = 0;
-static bool g_shutdown = false;
-static NSCondition *g_shutdown_complete;
-static NSCondition *g_shutdown_signal;
-static UITextView *g_text_view;
-static UIView *g_parent_view;
-
-@implementation FTAViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- g_parent_view = self.view;
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- const char *argv[] = {FIREBASE_TESTAPP_NAME};
- [g_shutdown_signal lock];
- g_exit_status = common_main(1, argv);
- [g_shutdown_complete signal];
- });
-}
-
-@end
-
-bool ProcessEvents(int msec) {
- [g_shutdown_signal
- waitUntilDate:[NSDate dateWithTimeIntervalSinceNow:static_cast(msec) / 1000.0f]];
- return g_shutdown;
-}
-
-WindowContext GetWindowContext() {
- return g_parent_view;
-}
-
-// Log a message that can be viewed in the console.
-void LogMessage(const char* format, ...) {
- va_list args;
- NSString *formatString = @(format);
-
- va_start(args, format);
- NSString *message = [[NSString alloc] initWithFormat:formatString arguments:args];
- va_end(args);
-
- NSLog(@"%@", message);
- message = [message stringByAppendingString:@"\n"];
-
- dispatch_async(dispatch_get_main_queue(), ^{
- g_text_view.text = [g_text_view.text stringByAppendingString:message];
- });
-}
-
-int main(int argc, char* argv[]) {
- @autoreleasepool {
- UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
- return g_exit_status;
-}
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication*)application
- didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
- g_shutdown_complete = [[NSCondition alloc] init];
- g_shutdown_signal = [[NSCondition alloc] init];
- [g_shutdown_complete lock];
-
- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
- FTAViewController *viewController = [[FTAViewController alloc] init];
- self.window.rootViewController = viewController;
- [self.window makeKeyAndVisible];
-
- g_text_view = [[UITextView alloc] initWithFrame:viewController.view.bounds];
-
- g_text_view.accessibilityIdentifier = @"Logger";
- g_text_view.editable = NO;
- g_text_view.scrollEnabled = YES;
- g_text_view.userInteractionEnabled = YES;
-
- [viewController.view addSubview:g_text_view];
-
- return YES;
-}
-
-- (void)applicationWillTerminate:(UIApplication *)application {
- g_shutdown = true;
- [g_shutdown_signal signal];
- [g_shutdown_complete wait];
-}
-
-@end
diff --git a/dynamic_links/testapp/src/main.h b/dynamic_links/testapp/src/main.h
deleted file mode 100644
index 2eda2c10..00000000
--- a/dynamic_links/testapp/src/main.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2016 Google Inc. All rights reserved.
-//
-// 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.
-
-#ifndef FIREBASE_TESTAPP_MAIN_H_ // NOLINT
-#define FIREBASE_TESTAPP_MAIN_H_ // NOLINT
-
-#if defined(__ANDROID__)
-#include
-#include
-#elif defined(__APPLE__)
-extern "C" {
-#include
-} // extern "C"
-#endif // __ANDROID__
-
-// Defined using -DANDROID_MAIN_APP_NAME=some_app_name when compiling this
-// file.
-#ifndef FIREBASE_TESTAPP_NAME
-#define FIREBASE_TESTAPP_NAME "android_main"
-#endif // FIREBASE_TESTAPP_NAME
-
-// Cross platform logging method.
-// Implemented by android/android_main.cc or ios/ios_main.mm.
-extern "C" void LogMessage(const char* format, ...);
-
-// Platform-independent method to flush pending events for the main thread.
-// Returns true when an event requesting program-exit is received.
-bool ProcessEvents(int msec);
-
-// WindowContext represents the handle to the parent window. It's type
-// (and usage) vary based on the OS.
-#if defined(__ANDROID__)
-typedef jobject WindowContext; // A jobject to the Java Activity.
-#elif defined(__APPLE__)
-typedef id WindowContext; // A pointer to an iOS UIView.
-#else
-typedef void* WindowContext; // A void* for any other environments.
-#endif
-
-#if defined(__ANDROID__)
-// Get the JNI environment.
-JNIEnv* GetJniEnv();
-// Get the activity.
-jobject GetActivity();
-#endif // defined(__ANDROID__)
-
-// Returns a variable that describes the window context for the app. On Android
-// this will be a jobject pointing to the Activity. On iOS, it's an id pointing
-// to the root view of the view controller.
-WindowContext GetWindowContext();
-
-#endif // FIREBASE_TESTAPP_MAIN_H_ // NOLINT
diff --git a/dynamic_links/testapp/testapp.xcodeproj/project.pbxproj b/dynamic_links/testapp/testapp.xcodeproj/project.pbxproj
deleted file mode 100644
index 5769362c..00000000
--- a/dynamic_links/testapp/testapp.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,312 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 520BC0391C869159008CFBC3 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 520BC0381C869159008CFBC3 /* GoogleService-Info.plist */; };
- 529226D61C85F68000C89379 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 529226D51C85F68000C89379 /* Foundation.framework */; };
- 529226D81C85F68000C89379 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 529226D71C85F68000C89379 /* CoreGraphics.framework */; };
- 529226DA1C85F68000C89379 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 529226D91C85F68000C89379 /* UIKit.framework */; };
- 529227211C85FB6A00C89379 /* common_main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5292271F1C85FB6A00C89379 /* common_main.cc */; };
- 529227241C85FB7600C89379 /* ios_main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 529227221C85FB7600C89379 /* ios_main.mm */; };
- 52B71EBB1C8600B600398745 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 52B71EBA1C8600B600398745 /* Images.xcassets */; };
- D66B16871CE46E8900E5638A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D66B16861CE46E8900E5638A /* LaunchScreen.storyboard */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 520BC0381C869159008CFBC3 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
- 529226D21C85F68000C89379 /* testapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testapp.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 529226D51C85F68000C89379 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
- 529226D71C85F68000C89379 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
- 529226D91C85F68000C89379 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
- 529226EE1C85F68000C89379 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
- 5292271F1C85FB6A00C89379 /* common_main.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = common_main.cc; path = src/common_main.cc; sourceTree = ""; };
- 529227201C85FB6A00C89379 /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = main.h; path = src/main.h; sourceTree = ""; };
- 529227221C85FB7600C89379 /* ios_main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ios_main.mm; path = src/ios/ios_main.mm; sourceTree = ""; };
- 52B71EBA1C8600B600398745 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = testapp/Images.xcassets; sourceTree = ""; };
- 52FD1FF81C85FFA000BC68E3 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = testapp/Info.plist; sourceTree = ""; };
- D66B16861CE46E8900E5638A /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 529226CF1C85F68000C89379 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 529226D81C85F68000C89379 /* CoreGraphics.framework in Frameworks */,
- 529226DA1C85F68000C89379 /* UIKit.framework in Frameworks */,
- 529226D61C85F68000C89379 /* Foundation.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 529226C91C85F68000C89379 = {
- isa = PBXGroup;
- children = (
- D66B16861CE46E8900E5638A /* LaunchScreen.storyboard */,
- 520BC0381C869159008CFBC3 /* GoogleService-Info.plist */,
- 52B71EBA1C8600B600398745 /* Images.xcassets */,
- 52FD1FF81C85FFA000BC68E3 /* Info.plist */,
- 5292271D1C85FB5500C89379 /* src */,
- 529226D41C85F68000C89379 /* Frameworks */,
- 529226D31C85F68000C89379 /* Products */,
- );
- sourceTree = "";
- };
- 529226D31C85F68000C89379 /* Products */ = {
- isa = PBXGroup;
- children = (
- 529226D21C85F68000C89379 /* testapp.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 529226D41C85F68000C89379 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 529226D51C85F68000C89379 /* Foundation.framework */,
- 529226D71C85F68000C89379 /* CoreGraphics.framework */,
- 529226D91C85F68000C89379 /* UIKit.framework */,
- 529226EE1C85F68000C89379 /* XCTest.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- 5292271D1C85FB5500C89379 /* src */ = {
- isa = PBXGroup;
- children = (
- 5292271F1C85FB6A00C89379 /* common_main.cc */,
- 529227201C85FB6A00C89379 /* main.h */,
- 5292271E1C85FB5B00C89379 /* ios */,
- );
- name = src;
- sourceTree = "";
- };
- 5292271E1C85FB5B00C89379 /* ios */ = {
- isa = PBXGroup;
- children = (
- 529227221C85FB7600C89379 /* ios_main.mm */,
- );
- name = ios;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 529226D11C85F68000C89379 /* testapp */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 529226F91C85F68000C89379 /* Build configuration list for PBXNativeTarget "testapp" */;
- buildPhases = (
- 529226CE1C85F68000C89379 /* Sources */,
- 529226CF1C85F68000C89379 /* Frameworks */,
- 529226D01C85F68000C89379 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = testapp;
- productName = testapp;
- productReference = 529226D21C85F68000C89379 /* testapp.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 529226CA1C85F68000C89379 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 0640;
- ORGANIZATIONNAME = Google;
- TargetAttributes = {
- 529226D11C85F68000C89379 = {
- CreatedOnToolsVersion = 6.4;
- };
- };
- };
- buildConfigurationList = 529226CD1C85F68000C89379 /* Build configuration list for PBXProject "testapp" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- );
- mainGroup = 529226C91C85F68000C89379;
- productRefGroup = 529226D31C85F68000C89379 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 529226D11C85F68000C89379 /* testapp */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 529226D01C85F68000C89379 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- D66B16871CE46E8900E5638A /* LaunchScreen.storyboard in Resources */,
- 52B71EBB1C8600B600398745 /* Images.xcassets in Resources */,
- 520BC0391C869159008CFBC3 /* GoogleService-Info.plist in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 529226CE1C85F68000C89379 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 529227241C85FB7600C89379 /* ios_main.mm in Sources */,
- 529227211C85FB6A00C89379 /* common_main.cc in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
- 529226F71C85F68000C89379 /* 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;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- 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;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 529226F81C85F68000C89379 /* 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;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- 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;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- 529226FA1C85F68000C89379 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
- "\"$(SRCROOT)/src\"",
- );
- INFOPLIST_FILE = testapp/Info.plist;
- PRODUCT_NAME = "$(TARGET_NAME)";
- WRAPPER_EXTENSION = app;
- };
- name = Debug;
- };
- 529226FB1C85F68000C89379 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- HEADER_SEARCH_PATHS = (
- "$(inherited)",
- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
- "\"$(SRCROOT)/src\"",
- );
- INFOPLIST_FILE = testapp/Info.plist;
- PRODUCT_NAME = "$(TARGET_NAME)";
- WRAPPER_EXTENSION = app;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 529226CD1C85F68000C89379 /* Build configuration list for PBXProject "testapp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 529226F71C85F68000C89379 /* Debug */,
- 529226F81C85F68000C89379 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 529226F91C85F68000C89379 /* Build configuration list for PBXNativeTarget "testapp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 529226FA1C85F68000C89379 /* Debug */,
- 529226FB1C85F68000C89379 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 529226CA1C85F68000C89379 /* Project object */;
-}
diff --git a/dynamic_links/testapp/testapp/Images.xcassets/AppIcon.appiconset/Contents.json b/dynamic_links/testapp/testapp/Images.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index b7f3352e..00000000
--- a/dynamic_links/testapp/testapp/Images.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/dynamic_links/testapp/testapp/Images.xcassets/LaunchImage.launchimage/Contents.json b/dynamic_links/testapp/testapp/Images.xcassets/LaunchImage.launchimage/Contents.json
deleted file mode 100644
index 6f870a46..00000000
--- a/dynamic_links/testapp/testapp/Images.xcassets/LaunchImage.launchimage/Contents.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "images" : [
- {
- "orientation" : "portrait",
- "idiom" : "iphone",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "iphone",
- "subtype" : "retina4",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "1x"
- },
- {
- "orientation" : "landscape",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "1x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "landscape",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/dynamic_links/testapp/testapp/Info.plist b/dynamic_links/testapp/testapp/Info.plist
deleted file mode 100644
index c9ef93fc..00000000
--- a/dynamic_links/testapp/testapp/Info.plist
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- com.google.FirebaseCppDynamicLinksTestApp.dev
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleURLSchemes
-
- com.google.FirebaseCppDynamicLinksTestApp.dev
-
- CFBundleURLTypes
-
-
- CFBundleTypeRole
- Editor
- CFBundleURLName
- com.google.FirebaseCppDynamicLinksTestApp.dev
- CFBundleURLSchemes
-
- com.google.FirebaseCppDynamicLinksTestApp.dev
-
-
-
- CFBundleTypeRole
- Editor
- CFBundleURLName
- google
- CFBundleURLSchemes
-
- YOUR_REVERSED_CLIENT_ID
-
-
-
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- NSContactsUsageDescription
- Invite others to use the app.
-
-
diff --git a/functions/testapp/functions/package-lock.json b/functions/testapp/functions/package-lock.json
deleted file mode 100644
index 988b0b35..00000000
--- a/functions/testapp/functions/package-lock.json
+++ /dev/null
@@ -1,8246 +0,0 @@
-{
- "name": "functions",
- "requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "@firebase/app": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.1.10.tgz",
- "integrity": "sha512-2GTXt3b2QZXkmx6/5nNJq+pEN/VTjAG55MFJS1WMoLVZkwKuNpWNk65QVyPaoL88x1iHtuLqAMFgJUOnhOg+Pw==",
- "requires": {
- "@firebase/app-types": "0.1.2",
- "@firebase/util": "0.1.10",
- "tslib": "1.9.0"
- }
- },
- "@firebase/app-types": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.1.2.tgz",
- "integrity": "sha512-bCIZGeMtP0ibrXNNaU214/1tRNw0jHnir/cfiAao1gjUyIS7RzOTQoH+zbwPJNEwUqJ0T3ykw/Tv4/khGqbVBg=="
- },
- "@firebase/database": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.2.1.tgz",
- "integrity": "sha512-IxONy7MM+Vmnx7bupBujmUyaTqE0n9Jt5xW/2gyLRc9i2wOxNR0XDlJ3Oc12+bksW/zMXHJU1hNO1jxRmIKmsw==",
- "requires": {
- "@firebase/database-types": "0.2.0",
- "@firebase/logger": "0.1.0",
- "@firebase/util": "0.1.10",
- "faye-websocket": "0.11.1",
- "tslib": "1.9.0"
- },
- "dependencies": {
- "faye-websocket": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
- "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
- "requires": {
- "websocket-driver": "0.7.0"
- }
- }
- }
- },
- "@firebase/database-types": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.2.0.tgz",
- "integrity": "sha512-QFrxlLABVbZAVJqw1XNkSYZK22qPjpE3U5eM1SO7Htx69TrIgX7tb1/+BJnFkb3AKUD33tAr22Z4XVth5Ys46A=="
- },
- "@firebase/logger": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.0.tgz",
- "integrity": "sha512-/abxM9/l0V9WzNXvSonI2imVqORVhyCVS8yJ1O2rsRmNzw3FIPPIt0BuTvmCBH1oh1uDtZIn2Aar1p7zF69KWg=="
- },
- "@firebase/util": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.1.10.tgz",
- "integrity": "sha512-XEogRfUQBZ4T37TMq/3ZbuiTdRAKX8hF3TgJglUZNCJf/6QnQ+jlupCuMAXBqCGfw2Mw0m2matoCUBWpsyevOA==",
- "requires": {
- "tslib": "1.9.0"
- }
- },
- "@google-cloud/common": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.16.2.tgz",
- "integrity": "sha512-GrkaFoj0/oO36pNs4yLmaYhTujuA3i21FdQik99Fd/APix1uhf01VlpJY4lAteTDFLRNkRx6ydEh7OVvmeUHng==",
- "requires": {
- "array-uniq": "1.0.3",
- "arrify": "1.0.1",
- "concat-stream": "1.6.2",
- "create-error-class": "3.0.2",
- "duplexify": "3.5.4",
- "ent": "2.2.0",
- "extend": "3.0.1",
- "google-auto-auth": "0.9.7",
- "is": "3.2.1",
- "log-driver": "1.2.7",
- "methmeth": "1.1.0",
- "modelo": "4.2.3",
- "request": "2.85.0",
- "retry-request": "3.3.1",
- "split-array-stream": "1.0.3",
- "stream-events": "1.0.2",
- "string-format-obj": "1.1.1",
- "through2": "2.0.3"
- }
- },
- "@google-cloud/common-grpc": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/common-grpc/-/common-grpc-0.6.0.tgz",
- "integrity": "sha512-b5i2auMeP+kPPPpWtZVgjbbbIB+3uDGw+Vww1QjG0SEQlahcGrwkCEaNLQit1R77m8ibxs+sTVa+AH/FNILAdQ==",
- "requires": {
- "@google-cloud/common": "0.16.2",
- "dot-prop": "4.2.0",
- "duplexify": "3.5.4",
- "extend": "3.0.1",
- "grpc": "1.9.1",
- "is": "3.2.1",
- "modelo": "4.2.3",
- "retry-request": "3.3.1",
- "through2": "2.0.3"
- }
- },
- "@google-cloud/firestore": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-0.13.0.tgz",
- "integrity": "sha512-9Aak9O/NBwdhAJWn2ooaHJT0uyU6IN6oHegW4GcAzLwJKwx8nw+c/GwFufSS6PRMLTiXdpV0I/rvdz4nSgO1HA==",
- "requires": {
- "@google-cloud/common": "0.16.2",
- "@google-cloud/common-grpc": "0.6.0",
- "bun": "0.0.12",
- "deep-equal": "1.0.1",
- "extend": "3.0.1",
- "functional-red-black-tree": "1.0.1",
- "google-gax": "0.15.0",
- "is": "3.2.1",
- "safe-buffer": "5.1.1",
- "through2": "2.0.3"
- }
- },
- "@google-cloud/storage": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-1.6.0.tgz",
- "integrity": "sha512-yQ63bJYoiwY220gn/KdTLPoHppAPwFHfG7VFLPwJ+1R5U1eqUN5XV2a7uPj1szGF8/gxlKm2UbE8DgoJJ76DFw==",
- "requires": {
- "@google-cloud/common": "0.16.2",
- "arrify": "1.0.1",
- "async": "2.6.0",
- "compressible": "2.0.13",
- "concat-stream": "1.6.2",
- "create-error-class": "3.0.2",
- "duplexify": "3.5.4",
- "extend": "3.0.1",
- "gcs-resumable-upload": "0.9.0",
- "hash-stream-validation": "0.2.1",
- "is": "3.2.1",
- "mime": "2.2.0",
- "mime-types": "2.1.18",
- "once": "1.4.0",
- "pumpify": "1.4.0",
- "request": "2.85.0",
- "safe-buffer": "5.1.1",
- "snakeize": "0.1.0",
- "stream-events": "1.0.2",
- "string-format-obj": "1.1.1",
- "through2": "2.0.3"
- }
- },
- "@mrmlnc/readdir-enhanced": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
- "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
- "requires": {
- "call-me-maybe": "1.0.1",
- "glob-to-regexp": "0.3.0"
- }
- },
- "@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
- },
- "@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
- },
- "@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
- },
- "@protobufjs/eventemitter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
- },
- "@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
- "requires": {
- "@protobufjs/aspromise": "1.1.2",
- "@protobufjs/inquire": "1.1.0"
- }
- },
- "@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
- },
- "@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
- },
- "@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
- },
- "@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
- },
- "@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
- },
- "@types/body-parser": {
- "version": "1.16.8",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.16.8.tgz",
- "integrity": "sha512-BdN2PXxOFnTXFcyONPW6t0fHjz2fvRZHVMFpaS0wYr+Y8fWEaNOs4V8LEu/fpzQlMx+ahdndgTaGTwPC+J/EeA==",
- "requires": {
- "@types/express": "4.11.1",
- "@types/node": "8.9.5"
- }
- },
- "@types/cors": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.3.tgz",
- "integrity": "sha512-wiZ7yYSIKZ005QJeyoUk5OHHEamNHTxaYwaFQWfTPohBjyhgIDHTgV8oGn+zBYTWQCb9WQYg54PhtntFTD7GVg==",
- "requires": {
- "@types/express": "4.11.1"
- }
- },
- "@types/events": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
- "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
- },
- "@types/express": {
- "version": "4.11.1",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.11.1.tgz",
- "integrity": "sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g==",
- "requires": {
- "@types/body-parser": "1.16.8",
- "@types/express-serve-static-core": "4.11.1",
- "@types/serve-static": "1.13.1"
- }
- },
- "@types/express-serve-static-core": {
- "version": "4.11.1",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.1.tgz",
- "integrity": "sha512-EehCl3tpuqiM8RUb+0255M8PhhSwTtLfmO7zBBdv0ay/VTd/zmrqDfQdZFsa5z/PVMbH2yCMZPXsnrImpATyIw==",
- "requires": {
- "@types/events": "1.2.0",
- "@types/node": "8.9.5"
- }
- },
- "@types/google-cloud__storage": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@types/google-cloud__storage/-/google-cloud__storage-1.1.7.tgz",
- "integrity": "sha512-010Llp+5ze+XWWmZuLDxs0pZgFjOgtJQVt9icJ0Ed67ZFLq7PnXkYx8x/k9nwDojR5/X4XoLPNqB1F627TScdQ==",
- "requires": {
- "@types/node": "8.9.5"
- }
- },
- "@types/jsonwebtoken": {
- "version": "7.2.6",
- "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-7.2.6.tgz",
- "integrity": "sha512-SuCA16HtLqPy0yerKEvMdaEAeLRgm6zPUJE1sF7bwGq0hAO4xW9UJZxTcDBaBwr5rcz1HST5QC1+1qXQ1+R9yw==",
- "requires": {
- "@types/node": "8.9.5"
- }
- },
- "@types/lodash": {
- "version": "4.14.105",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.105.tgz",
- "integrity": "sha512-LB5PKR4QNoDrgcl4H8JdhBMp9wHWp0OATkU9EHzuXKiutRwbvsyYmqPUaMSWmdCycJoKHtdAWh47/zSe/GZ1yA=="
- },
- "@types/long": {
- "version": "3.0.32",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz",
- "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA=="
- },
- "@types/mime": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz",
- "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA=="
- },
- "@types/node": {
- "version": "8.9.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz",
- "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ=="
- },
- "@types/serve-static": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.1.tgz",
- "integrity": "sha512-jDMH+3BQPtvqZVIcsH700Dfi8Q3MIcEx16g/VdxjoqiGR/NntekB10xdBpirMKnPe9z2C5cBmL0vte0YttOr3Q==",
- "requires": {
- "@types/express-serve-static-core": "4.11.1",
- "@types/mime": "2.0.0"
- }
- },
- "@types/sha1": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/sha1/-/sha1-1.1.1.tgz",
- "integrity": "sha512-Yrz4TPsm/xaw7c39aTISskNirnRJj2W9OVeHv8ooOR9SG8NHEfh4lwvGeN9euzxDyPfBdFkvL/VHIY3kM45OpQ==",
- "requires": {
- "@types/node": "8.9.5"
- }
- },
- "accepts": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
- "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
- "requires": {
- "mime-types": "2.1.18",
- "negotiator": "0.6.1"
- }
- },
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
- },
- "acorn-es7-plugin": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz",
- "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s="
- },
- "ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
- "requires": {
- "co": "4.6.0",
- "fast-deep-equal": "1.1.0",
- "fast-json-stable-stringify": "2.0.0",
- "json-schema-traverse": "0.3.1"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
- },
- "array-filter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
- "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM="
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "requires": {
- "array-uniq": "1.0.3"
- }
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
- },
- "ascli": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz",
- "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=",
- "requires": {
- "colour": "0.7.1",
- "optjs": "3.2.2"
- }
- },
- "asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
- },
- "async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
- "requires": {
- "lodash": "4.17.5"
- }
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "atob": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz",
- "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10="
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
- },
- "aws4": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
- "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
- },
- "axios": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
- "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
- "requires": {
- "follow-redirects": "1.4.1",
- "is-buffer": "1.1.6"
- }
- },
- "bad-words": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/bad-words/-/bad-words-1.6.1.tgz",
- "integrity": "sha1-BkgwIZUanYD7X8qi8Nmh51p0W1A=",
- "requires": {
- "badwords-list": "1.0.0"
- }
- },
- "badwords-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/badwords-list/-/badwords-list-1.0.0.tgz",
- "integrity": "sha1-XphW2/E0gqKVw7CzBK+51M/FxXk="
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "requires": {
- "cache-base": "1.0.1",
- "class-utils": "0.3.6",
- "component-emitter": "1.2.1",
- "define-property": "1.0.0",
- "isobject": "3.0.1",
- "mixin-deep": "1.3.1",
- "pascalcase": "0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "1.0.2"
- }
- }
- }
- },
- "base64url": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz",
- "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs="
- },
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
- "optional": true,
- "requires": {
- "tweetnacl": "0.14.5"
- }
- },
- "body-parser": {
- "version": "1.18.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
- "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
- "requires": {
- "bytes": "3.0.0",
- "content-type": "1.0.4",
- "debug": "2.6.9",
- "depd": "1.1.2",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "on-finished": "2.3.0",
- "qs": "6.5.1",
- "raw-body": "2.3.2",
- "type-is": "1.6.16"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "boom": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
- "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
- "requires": {
- "hoek": "4.2.1"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz",
- "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==",
- "requires": {
- "arr-flatten": "1.1.0",
- "array-unique": "0.3.2",
- "define-property": "1.0.0",
- "extend-shallow": "2.0.1",
- "fill-range": "4.0.0",
- "isobject": "3.0.1",
- "kind-of": "6.0.2",
- "repeat-element": "1.1.2",
- "snapdragon": "0.8.2",
- "snapdragon-node": "2.1.1",
- "split-string": "3.1.0",
- "to-regex": "3.0.2"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "1.0.2"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "0.1.1"
- }
- }
- }
- },
- "buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74="
- },
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
- },
- "buffer-from": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
- "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA=="
- },
- "bun": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/bun/-/bun-0.0.12.tgz",
- "integrity": "sha512-Toms18J9DqnT+IfWkwxVTB2EaBprHvjlMWrTIsfX4xbu3ZBqVBwrERU0em1IgtRe04wT+wJxMlKHZok24hrcSQ==",
- "requires": {
- "readable-stream": "1.0.34"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "bytebuffer": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz",
- "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=",
- "requires": {
- "long": "3.2.0"
- }
- },
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "requires": {
- "collection-visit": "1.0.0",
- "component-emitter": "1.2.1",
- "get-value": "2.0.6",
- "has-value": "1.0.0",
- "isobject": "3.0.1",
- "set-value": "2.0.0",
- "to-object-path": "0.3.0",
- "union-value": "1.0.0",
- "unset-value": "1.0.0"
- }
- },
- "call-me-maybe": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
- "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
- },
- "call-signature": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz",
- "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY="
- },
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
- },
- "capitalize-sentence": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/capitalize-sentence/-/capitalize-sentence-0.1.5.tgz",
- "integrity": "sha1-e/LtUdyKoqY8lPgkA55KphS3HeY="
- },
- "capture-stack-trace": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
- "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0="
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "charenc": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "requires": {
- "arr-union": "3.1.0",
- "define-property": "0.2.5",
- "isobject": "3.0.1",
- "static-extend": "0.1.2"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "0.1.6"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "0.1.6",
- "is-data-descriptor": "0.1.4",
- "kind-of": "5.1.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wrap-ansi": "2.1.0"
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "requires": {
- "map-visit": "1.0.0",
- "object-visit": "1.0.1"
- }
- },
- "colour": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz",
- "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g="
- },
- "combined-stream": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
- "requires": {
- "delayed-stream": "1.0.0"
- }
- },
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
- },
- "compressible": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz",
- "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=",
- "requires": {
- "mime-db": "1.33.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "requires": {
- "buffer-from": "1.0.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "typedarray": "0.0.6"
- }
- },
- "configstore": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz",
- "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==",
- "requires": {
- "dot-prop": "4.2.0",
- "graceful-fs": "4.1.11",
- "make-dir": "1.2.0",
- "unique-string": "1.0.0",
- "write-file-atomic": "2.3.0",
- "xdg-basedir": "3.0.0"
- }
- },
- "content-disposition": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
- },
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
- },
- "cookie": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
- "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
- },
- "core-js": {
- "version": "2.5.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz",
- "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "cors": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz",
- "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=",
- "requires": {
- "object-assign": "4.1.1",
- "vary": "1.1.2"
- }
- },
- "create-error-class": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
- "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
- "requires": {
- "capture-stack-trace": "1.0.0"
- }
- },
- "crypt": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
- },
- "cryptiles": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
- "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
- "requires": {
- "boom": "5.2.0"
- },
- "dependencies": {
- "boom": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
- "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
- "requires": {
- "hoek": "4.2.1"
- }
- }
- }
- },
- "crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4="
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "1.0.0"
- }
- },
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
- },
- "deep-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
- "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
- },
- "define-properties": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
- "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
- "requires": {
- "foreach": "2.0.5",
- "object-keys": "1.0.11"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "requires": {
- "is-descriptor": "1.0.2",
- "isobject": "3.0.1"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
- },
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
- },
- "diff-match-patch": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz",
- "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg="
- },
- "dir-glob": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
- "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
- "requires": {
- "arrify": "1.0.1",
- "path-type": "3.0.0"
- }
- },
- "dot-prop": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
- "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
- "requires": {
- "is-obj": "1.0.1"
- }
- },
- "duplexify": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz",
- "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==",
- "requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "stream-shift": "1.0.0"
- }
- },
- "eastasianwidth": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz",
- "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w="
- },
- "ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
- }
- },
- "ecdsa-sig-formatter": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz",
- "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=",
- "requires": {
- "base64url": "2.0.0",
- "safe-buffer": "5.1.1"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "empower": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz",
- "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=",
- "requires": {
- "core-js": "2.5.3",
- "empower-core": "0.6.2"
- }
- },
- "empower-core": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz",
- "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=",
- "requires": {
- "call-signature": "0.0.2",
- "core-js": "2.5.3"
- }
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
- },
- "end-of-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "requires": {
- "once": "1.4.0"
- }
- },
- "ent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
- "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "espurify": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz",
- "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=",
- "requires": {
- "core-js": "2.5.3"
- }
- },
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "requires": {
- "debug": "2.6.9",
- "define-property": "0.2.5",
- "extend-shallow": "2.0.1",
- "posix-character-classes": "0.1.1",
- "regex-not": "1.0.2",
- "snapdragon": "0.8.2",
- "to-regex": "3.0.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "0.1.6"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "0.1.1"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "0.1.6",
- "is-data-descriptor": "0.1.4",
- "kind-of": "5.1.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "express": {
- "version": "4.16.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
- "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
- "requires": {
- "accepts": "1.3.5",
- "array-flatten": "1.1.1",
- "body-parser": "1.18.2",
- "content-disposition": "0.5.2",
- "content-type": "1.0.4",
- "cookie": "0.3.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "1.1.2",
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "etag": "1.8.1",
- "finalhandler": "1.1.1",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "1.1.2",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "2.0.3",
- "qs": "6.5.1",
- "range-parser": "1.2.0",
- "safe-buffer": "5.1.1",
- "send": "0.16.2",
- "serve-static": "1.13.2",
- "setprototypeof": "1.1.0",
- "statuses": "1.4.0",
- "type-is": "1.6.16",
- "utils-merge": "1.0.1",
- "vary": "1.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "requires": {
- "assign-symbols": "1.0.0",
- "is-extendable": "1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "requires": {
- "is-plain-object": "2.0.4"
- }
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "requires": {
- "array-unique": "0.3.2",
- "define-property": "1.0.0",
- "expand-brackets": "2.1.4",
- "extend-shallow": "2.0.1",
- "fragment-cache": "0.2.1",
- "regex-not": "1.0.2",
- "snapdragon": "0.8.2",
- "to-regex": "3.0.2"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "1.0.2"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "0.1.1"
- }
- }
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
- "fast-deep-equal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
- },
- "fast-glob": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.0.tgz",
- "integrity": "sha512-4F75PTznkNtSKs2pbhtBwRkw8sRwa7LfXx5XaQJOe4IQ6yTjceLDTwM5gj1s80R2t/5WeDC1gVfm3jLE+l39Tw==",
- "requires": {
- "@mrmlnc/readdir-enhanced": "2.2.1",
- "glob-parent": "3.1.0",
- "is-glob": "4.0.0",
- "merge2": "1.2.1",
- "micromatch": "3.1.9"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
- },
- "faye-websocket": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.3.tgz",
- "integrity": "sha1-SCpQWw3wrmJrlphm0710DNuWLoM=",
- "requires": {
- "websocket-driver": "0.7.0"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "requires": {
- "extend-shallow": "2.0.1",
- "is-number": "3.0.0",
- "repeat-string": "1.6.1",
- "to-regex-range": "2.1.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "0.1.1"
- }
- }
- }
- },
- "finalhandler": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
- "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "statuses": "1.4.0",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "firebase-admin": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-5.10.0.tgz",
- "integrity": "sha1-dtj85rsdvSwF7HbL+1ncGtOXflY=",
- "requires": {
- "@firebase/app": "0.1.10",
- "@firebase/database": "0.2.1",
- "@google-cloud/firestore": "0.13.0",
- "@google-cloud/storage": "1.6.0",
- "@types/google-cloud__storage": "1.1.7",
- "@types/node": "8.9.5",
- "faye-websocket": "0.9.3",
- "jsonwebtoken": "8.1.0",
- "node-forge": "0.7.1"
- }
- },
- "firebase-functions": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-0.9.0.tgz",
- "integrity": "sha1-X6FXJb25z8UbpxbppXpVR1PQwHM=",
- "requires": {
- "@types/cors": "2.8.3",
- "@types/express": "4.11.1",
- "@types/jsonwebtoken": "7.2.6",
- "@types/lodash": "4.14.105",
- "@types/sha1": "1.1.1",
- "cors": "2.8.4",
- "express": "4.16.3",
- "jsonwebtoken": "7.4.3",
- "lodash": "4.17.5",
- "sha1": "1.1.1"
- },
- "dependencies": {
- "jsonwebtoken": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz",
- "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=",
- "requires": {
- "joi": "6.10.1",
- "jws": "3.1.4",
- "lodash.once": "4.1.1",
- "ms": "2.0.0",
- "xtend": "4.0.1"
- }
- }
- }
- },
- "follow-redirects": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz",
- "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==",
- "requires": {
- "debug": "3.1.0"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
- },
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "form-data": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
- "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.6",
- "mime-types": "2.1.18"
- }
- },
- "forwarded": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "requires": {
- "map-cache": "0.2.2"
- }
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "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="
- },
- "gcp-metadata": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz",
- "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==",
- "requires": {
- "axios": "0.18.0",
- "extend": "3.0.1",
- "retry-axios": "0.3.2"
- }
- },
- "gcs-resumable-upload": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-0.9.0.tgz",
- "integrity": "sha512-+Zrmr0JKO2y/2mg953TW6JLu+NAMHqQsKzqCm7CIT24gMQakolPJCMzDleVpVjXAqB7ZCD276tcUq2ebOfqTug==",
- "requires": {
- "buffer-equal": "1.0.0",
- "configstore": "3.1.1",
- "google-auto-auth": "0.9.7",
- "pumpify": "1.4.0",
- "request": "2.85.0",
- "stream-events": "1.0.2",
- "through2": "2.0.3"
- }
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "1.0.0"
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "requires": {
- "is-glob": "3.1.0",
- "path-dirname": "1.0.2"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "requires": {
- "is-extglob": "2.1.1"
- }
- }
- }
- },
- "glob-to-regexp": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
- "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs="
- },
- "globby": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
- "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
- "requires": {
- "array-union": "1.0.2",
- "dir-glob": "2.0.0",
- "fast-glob": "2.2.0",
- "glob": "7.1.2",
- "ignore": "3.3.7",
- "pify": "3.0.0",
- "slash": "1.0.0"
- }
- },
- "google-auth-library": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.3.2.tgz",
- "integrity": "sha512-aRz0om4Bs85uyR2Ousk3Gb8Nffx2Sr2RoKts1smg1MhRwrehE1aD1HC4RmprNt1HVJ88IDnQ8biJQ/aXjiIxlQ==",
- "requires": {
- "axios": "0.18.0",
- "gcp-metadata": "0.6.3",
- "gtoken": "2.2.0",
- "jws": "3.1.4",
- "lodash.isstring": "4.0.1",
- "lru-cache": "4.1.2",
- "retry-axios": "0.3.2"
- }
- },
- "google-auto-auth": {
- "version": "0.9.7",
- "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz",
- "integrity": "sha512-Nro7aIFrL2NP0G7PoGrJqXGMZj8AjdBOcbZXRRm/8T3w08NUHIiNN3dxpuUYzDsZizslH+c8e+7HXL8vh3JXTQ==",
- "requires": {
- "async": "2.6.0",
- "gcp-metadata": "0.6.3",
- "google-auth-library": "1.3.2",
- "request": "2.85.0"
- }
- },
- "google-gax": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.15.0.tgz",
- "integrity": "sha512-a+WBi3oiV3jQ0eLCIM0GAFe8vYQ10yYuXRnjhEEXFKSNd8nW6XSQ7YWqMLIod2Xnyu6JiSSymMBwCr5YSwQyRQ==",
- "requires": {
- "extend": "3.0.1",
- "globby": "8.0.1",
- "google-auto-auth": "0.9.7",
- "google-proto-files": "0.15.1",
- "grpc": "1.9.1",
- "is-stream-ended": "0.1.3",
- "lodash": "4.17.5",
- "protobufjs": "6.8.6",
- "readable-stream": "2.3.5",
- "through2": "2.0.3"
- },
- "dependencies": {
- "long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "protobufjs": {
- "version": "6.8.6",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz",
- "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==",
- "requires": {
- "@protobufjs/aspromise": "1.1.2",
- "@protobufjs/base64": "1.1.2",
- "@protobufjs/codegen": "2.0.4",
- "@protobufjs/eventemitter": "1.1.0",
- "@protobufjs/fetch": "1.1.0",
- "@protobufjs/float": "1.0.2",
- "@protobufjs/inquire": "1.1.0",
- "@protobufjs/path": "1.1.2",
- "@protobufjs/pool": "1.1.0",
- "@protobufjs/utf8": "1.1.0",
- "@types/long": "3.0.32",
- "@types/node": "8.9.5",
- "long": "4.0.0"
- }
- }
- }
- },
- "google-p12-pem": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz",
- "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==",
- "requires": {
- "node-forge": "0.7.4",
- "pify": "3.0.0"
- },
- "dependencies": {
- "node-forge": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz",
- "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA=="
- }
- }
- },
- "google-proto-files": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz",
- "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==",
- "requires": {
- "globby": "7.1.1",
- "power-assert": "1.4.4",
- "protobufjs": "6.8.6"
- },
- "dependencies": {
- "globby": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
- "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
- "requires": {
- "array-union": "1.0.2",
- "dir-glob": "2.0.0",
- "glob": "7.1.2",
- "ignore": "3.3.7",
- "pify": "3.0.0",
- "slash": "1.0.0"
- }
- },
- "long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "protobufjs": {
- "version": "6.8.6",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz",
- "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==",
- "requires": {
- "@protobufjs/aspromise": "1.1.2",
- "@protobufjs/base64": "1.1.2",
- "@protobufjs/codegen": "2.0.4",
- "@protobufjs/eventemitter": "1.1.0",
- "@protobufjs/fetch": "1.1.0",
- "@protobufjs/float": "1.0.2",
- "@protobufjs/inquire": "1.1.0",
- "@protobufjs/path": "1.1.2",
- "@protobufjs/pool": "1.1.0",
- "@protobufjs/utf8": "1.1.0",
- "@types/long": "3.0.32",
- "@types/node": "8.9.5",
- "long": "4.0.0"
- }
- }
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
- },
- "grpc": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.9.1.tgz",
- "integrity": "sha512-WNW3MWMuAoo63AwIlzFE3T0KzzvNBSvOkg67Hm8WhvHNkXFBlIk1QyJRE3Ocm0O5eIwS7JU8Ssota53QR1zllg==",
- "requires": {
- "lodash": "4.17.5",
- "nan": "2.10.0",
- "node-pre-gyp": "0.6.39",
- "protobufjs": "5.0.2"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "ajv": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
- "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
- "requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
- },
- "are-we-there-yet": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
- "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
- "requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.3.3"
- }
- },
- "asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
- },
- "assert-plus": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "aws-sign2": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
- },
- "aws4": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
- "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
- "optional": true,
- "requires": {
- "tweetnacl": "0.14.5"
- }
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "requires": {
- "inherits": "2.0.3"
- }
- },
- "boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "brace-expansion": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
- "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "combined-stream": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
- "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
- "requires": {
- "delayed-stream": "1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
- "requires": {
- "boom": "2.10.1"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "deep-extend": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
- "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8="
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
- },
- "ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
- }
- },
- "extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "form-data": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
- "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.17"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fstream": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
- "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
- "requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2"
- }
- },
- "fstream-ignore": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz",
- "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=",
- "requires": {
- "fstream": "1.0.11",
- "inherits": "2.0.3",
- "minimatch": "3.0.4"
- }
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "requires": {
- "aproba": "1.2.0",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
- },
- "har-schema": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
- "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
- },
- "har-validator": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
- "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
- "requires": {
- "ajv": "4.11.8",
- "har-schema": "1.0.5"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
- },
- "hawk": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
- "requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
- }
- },
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
- },
- "http-signature": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
- "requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.1",
- "sshpk": "1.13.1"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "optional": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
- "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
- "requires": {
- "jsonify": "0.0.0"
- }
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "mime-db": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
- "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
- },
- "mime-types": {
- "version": "2.1.17",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
- "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
- "requires": {
- "mime-db": "1.30.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "1.1.8"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node-pre-gyp": {
- "version": "0.6.39",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz",
- "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==",
- "requires": {
- "detect-libc": "1.0.3",
- "hawk": "3.1.3",
- "mkdirp": "0.5.1",
- "nopt": "4.0.1",
- "npmlog": "4.1.2",
- "rc": "1.2.4",
- "request": "2.81.0",
- "rimraf": "2.6.2",
- "semver": "5.5.0",
- "tar": "2.2.1",
- "tar-pack": "3.4.1"
- }
- },
- "nopt": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
- "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
- "requires": {
- "abbrev": "1.1.1",
- "osenv": "0.1.4"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1.0.2"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
- },
- "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="
- },
- "osenv": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
- "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
- }
- },
- "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="
- },
- "performance-now": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
- "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- },
- "qs": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
- "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
- },
- "rc": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.4.tgz",
- "integrity": "sha1-oPYGyq4qO4YrvQ74VILAElsxX6M=",
- "requires": {
- "deep-extend": "0.4.2",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
- }
- }
- },
- "readable-stream": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
- "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
- }
- },
- "request": {
- "version": "2.81.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
- "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "4.2.1",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
- "oauth-sign": "0.8.2",
- "performance-now": "0.2.0",
- "qs": "6.4.0",
- "safe-buffer": "5.1.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.3",
- "tunnel-agent": "0.6.0",
- "uuid": "3.2.1"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
- "requires": {
- "glob": "7.1.2"
- }
- },
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
- },
- "sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "sshpk": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
- "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
- "requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- },
- "string_decoder": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "stringstream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
- "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
- },
- "tar": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
- "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
- "requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
- }
- },
- "tar-pack": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz",
- "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==",
- "requires": {
- "debug": "2.6.9",
- "fstream": "1.0.11",
- "fstream-ignore": "1.0.5",
- "once": "1.4.0",
- "readable-stream": "2.3.3",
- "rimraf": "2.6.2",
- "tar": "2.2.1",
- "uid-number": "0.0.6"
- }
- },
- "tough-cookie": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
- "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
- "requires": {
- "punycode": "1.4.1"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "optional": true
- },
- "uid-number": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
- "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE="
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "uuid": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
- "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "wide-align": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
- "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
- "requires": {
- "string-width": "1.0.2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- }
- }
- },
- "gtoken": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.2.0.tgz",
- "integrity": "sha512-tvQs8B1z5+I1FzMPZnq/OCuxTWFOkvy7cUJcpNdBOK2L7yEtPZTVCPtZU181sSDF+isUPebSqFTNTkIejFASAQ==",
- "requires": {
- "axios": "0.18.0",
- "google-p12-pem": "1.0.2",
- "jws": "3.1.4",
- "mime": "2.2.0",
- "pify": "3.0.0"
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
- },
- "har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
- "requires": {
- "ajv": "5.5.2",
- "har-schema": "2.0.0"
- }
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "requires": {
- "get-value": "2.0.6",
- "has-values": "1.0.0",
- "isobject": "3.0.1"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "requires": {
- "is-number": "3.0.0",
- "kind-of": "4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "hash-stream-validation": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz",
- "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=",
- "requires": {
- "through2": "2.0.3"
- }
- },
- "hawk": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
- "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
- "requires": {
- "boom": "4.3.1",
- "cryptiles": "3.1.2",
- "hoek": "4.2.1",
- "sntp": "2.1.0"
- }
- },
- "hoek": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
- "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
- },
- "http-errors": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
- "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
- "requires": {
- "depd": "1.1.1",
- "inherits": "2.0.3",
- "setprototypeof": "1.0.3",
- "statuses": "1.4.0"
- },
- "dependencies": {
- "depd": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
- },
- "setprototypeof": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
- "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
- }
- }
- },
- "http-parser-js": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz",
- "integrity": "sha512-QCR5O2AjjMW8Mo4HyI1ctFcv+O99j/0g367V3YoVnrNw5hkDvAWZD0lWGcc+F4yN3V55USPCVix4efb75HxFfA=="
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "requires": {
- "assert-plus": "1.0.0",
- "jsprim": "1.4.1",
- "sshpk": "1.14.1"
- }
- },
- "iconv-lite": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
- },
- "ignore": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
- "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA=="
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
- },
- "indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
- },
- "ipaddr.js": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
- "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs="
- },
- "is": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz",
- "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU="
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "requires": {
- "kind-of": "6.0.2"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "requires": {
- "kind-of": "6.0.2"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "requires": {
- "is-accessor-descriptor": "1.0.0",
- "is-data-descriptor": "1.0.0",
- "kind-of": "6.0.2"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "is-glob": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
- "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
- "requires": {
- "is-extglob": "2.1.1"
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
- },
- "is-odd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
- "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
- "requires": {
- "is-number": "4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
- }
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "requires": {
- "isobject": "3.0.1"
- }
- },
- "is-stream-ended": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.3.tgz",
- "integrity": "sha1-oEc7Jnx1ZjVIa+7cfjNE5UnRUqw="
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "isemail": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz",
- "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo="
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "joi": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz",
- "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=",
- "requires": {
- "hoek": "2.16.3",
- "isemail": "1.2.0",
- "moment": "2.21.0",
- "topo": "1.1.0"
- },
- "dependencies": {
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
- }
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "optional": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "jsonwebtoken": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz",
- "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=",
- "requires": {
- "jws": "3.1.4",
- "lodash.includes": "4.3.0",
- "lodash.isboolean": "3.0.3",
- "lodash.isinteger": "4.0.4",
- "lodash.isnumber": "3.0.3",
- "lodash.isplainobject": "4.0.6",
- "lodash.isstring": "4.0.1",
- "lodash.once": "4.1.1",
- "ms": "2.0.0",
- "xtend": "4.0.1"
- }
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "jwa": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz",
- "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=",
- "requires": {
- "base64url": "2.0.0",
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.9",
- "safe-buffer": "5.1.1"
- }
- },
- "jws": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz",
- "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=",
- "requires": {
- "base64url": "2.0.0",
- "jwa": "1.1.5",
- "safe-buffer": "5.1.1"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "requires": {
- "invert-kv": "1.0.0"
- }
- },
- "lodash": {
- "version": "4.17.5",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
- "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
- },
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
- },
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
- "log-driver": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
- "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg=="
- },
- "long": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
- "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
- },
- "lru-cache": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
- "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
- "requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
- }
- },
- "make-dir": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz",
- "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==",
- "requires": {
- "pify": "3.0.0"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "requires": {
- "object-visit": "1.0.1"
- }
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
- },
- "merge2": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.1.tgz",
- "integrity": "sha512-wUqcG5pxrAcaFI1lkqkMnk3Q7nUxV/NWfpAFSeWUwG9TRODnBDCUHa75mi3o3vLWQ5N4CQERWCauSlP0I3ZqUg=="
- },
- "methmeth": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/methmeth/-/methmeth-1.1.0.tgz",
- "integrity": "sha1-6AomYY5S9cQiKGG7dIUQvRDikIk="
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
- },
- "micromatch": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz",
- "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==",
- "requires": {
- "arr-diff": "4.0.0",
- "array-unique": "0.3.2",
- "braces": "2.3.1",
- "define-property": "2.0.2",
- "extend-shallow": "3.0.2",
- "extglob": "2.0.4",
- "fragment-cache": "0.2.1",
- "kind-of": "6.0.2",
- "nanomatch": "1.2.9",
- "object.pick": "1.3.0",
- "regex-not": "1.0.2",
- "snapdragon": "0.8.2",
- "to-regex": "3.0.2"
- }
- },
- "mime": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz",
- "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA=="
- },
- "mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
- },
- "mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
- "requires": {
- "mime-db": "1.33.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "1.1.11"
- }
- },
- "mixin-deep": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
- "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
- "requires": {
- "for-in": "1.0.2",
- "is-extendable": "1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "requires": {
- "is-plain-object": "2.0.4"
- }
- }
- }
- },
- "modelo": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.3.tgz",
- "integrity": "sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA=="
- },
- "moment": {
- "version": "2.21.0",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz",
- "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ=="
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
- },
- "nanomatch": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
- "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
- "requires": {
- "arr-diff": "4.0.0",
- "array-unique": "0.3.2",
- "define-property": "2.0.2",
- "extend-shallow": "3.0.2",
- "fragment-cache": "0.2.1",
- "is-odd": "2.0.0",
- "is-windows": "1.0.2",
- "kind-of": "6.0.2",
- "object.pick": "1.3.0",
- "regex-not": "1.0.2",
- "snapdragon": "0.8.2",
- "to-regex": "3.0.2"
- }
- },
- "negotiator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
- },
- "node-forge": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz",
- "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA="
- },
- "npm": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/npm/-/npm-5.8.0.tgz",
- "integrity": "sha512-DowXzQwtSWDtbAjuWecuEiismR0VdNEYaL3VxNTYTdW6AGkYxfGk9LUZ/rt6etEyiH4IEk95HkJeGfXE5Rz9xQ==",
- "requires": {
- "JSONStream": "1.3.2",
- "abbrev": "1.1.1",
- "ansi-regex": "3.0.0",
- "ansicolors": "0.3.2",
- "ansistyles": "0.1.3",
- "aproba": "1.2.0",
- "archy": "1.0.0",
- "bin-links": "1.1.0",
- "bluebird": "3.5.1",
- "cacache": "10.0.4",
- "call-limit": "1.1.0",
- "chownr": "1.0.1",
- "cli-table2": "0.2.0",
- "cmd-shim": "2.0.2",
- "columnify": "1.5.4",
- "config-chain": "1.1.11",
- "debuglog": "1.0.1",
- "detect-indent": "5.0.0",
- "detect-newline": "2.1.0",
- "dezalgo": "1.0.3",
- "editor": "1.0.0",
- "find-npm-prefix": "1.0.2",
- "fs-vacuum": "1.2.10",
- "fs-write-stream-atomic": "1.0.10",
- "gentle-fs": "2.0.1",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "has-unicode": "2.0.1",
- "hosted-git-info": "2.6.0",
- "iferr": "0.1.5",
- "imurmurhash": "0.1.4",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "ini": "1.3.5",
- "init-package-json": "1.10.3",
- "is-cidr": "1.0.0",
- "json-parse-better-errors": "1.0.1",
- "lazy-property": "1.0.0",
- "libcipm": "1.6.0",
- "libnpx": "10.0.1",
- "lockfile": "1.0.3",
- "lodash._baseindexof": "3.1.0",
- "lodash._baseuniq": "4.6.0",
- "lodash._bindcallback": "3.0.1",
- "lodash._cacheindexof": "3.0.2",
- "lodash._createcache": "3.1.2",
- "lodash._getnative": "3.9.1",
- "lodash.clonedeep": "4.5.0",
- "lodash.restparam": "3.6.1",
- "lodash.union": "4.6.0",
- "lodash.uniq": "4.5.0",
- "lodash.without": "4.4.0",
- "lru-cache": "4.1.1",
- "meant": "1.0.1",
- "mississippi": "3.0.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "nopt": "4.0.1",
- "normalize-package-data": "2.4.0",
- "npm-cache-filename": "1.0.2",
- "npm-install-checks": "3.0.0",
- "npm-lifecycle": "2.0.1",
- "npm-package-arg": "6.0.0",
- "npm-packlist": "1.1.10",
- "npm-profile": "3.0.1",
- "npm-registry-client": "8.5.1",
- "npm-user-validate": "1.0.0",
- "npmlog": "4.1.2",
- "once": "1.4.0",
- "opener": "1.4.3",
- "osenv": "0.1.5",
- "pacote": "7.6.1",
- "path-is-inside": "1.0.2",
- "promise-inflight": "1.0.1",
- "qrcode-terminal": "0.11.0",
- "query-string": "5.1.0",
- "qw": "1.0.1",
- "read": "1.0.7",
- "read-cmd-shim": "1.0.1",
- "read-installed": "4.0.3",
- "read-package-json": "2.0.13",
- "read-package-tree": "5.1.6",
- "readable-stream": "2.3.5",
- "readdir-scoped-modules": "1.0.2",
- "request": "2.83.0",
- "retry": "0.10.1",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.1",
- "semver": "5.5.0",
- "sha": "2.0.1",
- "slide": "1.1.6",
- "sorted-object": "2.0.1",
- "sorted-union-stream": "2.1.3",
- "ssri": "5.2.4",
- "strip-ansi": "4.0.0",
- "tar": "4.4.0",
- "text-table": "0.2.0",
- "uid-number": "0.0.6",
- "umask": "1.1.0",
- "unique-filename": "1.1.0",
- "unpipe": "1.0.0",
- "update-notifier": "2.3.0",
- "uuid": "3.2.1",
- "validate-npm-package-license": "3.0.1",
- "validate-npm-package-name": "3.0.0",
- "which": "1.3.0",
- "worker-farm": "1.5.4",
- "wrappy": "1.0.2",
- "write-file-atomic": "2.3.0"
- },
- "dependencies": {
- "JSONStream": {
- "version": "1.3.2",
- "bundled": true,
- "requires": {
- "jsonparse": "1.3.1",
- "through": "2.3.8"
- },
- "dependencies": {
- "jsonparse": {
- "version": "1.3.1",
- "bundled": true
- },
- "through": {
- "version": "2.3.8",
- "bundled": true
- }
- }
- },
- "abbrev": {
- "version": "1.1.1",
- "bundled": true
- },
- "ansi-regex": {
- "version": "3.0.0",
- "bundled": true
- },
- "ansicolors": {
- "version": "0.3.2",
- "bundled": true
- },
- "ansistyles": {
- "version": "0.1.3",
- "bundled": true
- },
- "aproba": {
- "version": "1.2.0",
- "bundled": true
- },
- "archy": {
- "version": "1.0.0",
- "bundled": true
- },
- "bin-links": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "bluebird": "3.5.1",
- "cmd-shim": "2.0.2",
- "fs-write-stream-atomic": "1.0.10",
- "gentle-fs": "2.0.1",
- "graceful-fs": "4.1.11",
- "slide": "1.1.6"
- }
- },
- "bluebird": {
- "version": "3.5.1",
- "bundled": true
- },
- "cacache": {
- "version": "10.0.4",
- "bundled": true,
- "requires": {
- "bluebird": "3.5.1",
- "chownr": "1.0.1",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "lru-cache": "4.1.1",
- "mississippi": "2.0.0",
- "mkdirp": "0.5.1",
- "move-concurrently": "1.0.1",
- "promise-inflight": "1.0.1",
- "rimraf": "2.6.2",
- "ssri": "5.2.4",
- "unique-filename": "1.1.0",
- "y18n": "4.0.0"
- },
- "dependencies": {
- "mississippi": {
- "version": "2.0.0",
- "bundled": true,
- "requires": {
- "concat-stream": "1.6.1",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.2",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "2.0.1",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.6.1",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "typedarray": "0.0.6"
- },
- "dependencies": {
- "typedarray": {
- "version": "0.0.6",
- "bundled": true
- }
- }
- },
- "duplexify": {
- "version": "3.5.4",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "end-of-stream": {
- "version": "1.4.1",
- "bundled": true,
- "requires": {
- "once": "1.4.0"
- }
- },
- "flush-write-stream": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "from2": {
- "version": "2.3.0",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "parallel-transform": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- },
- "dependencies": {
- "cyclist": {
- "version": "0.2.2",
- "bundled": true
- }
- }
- },
- "pump": {
- "version": "2.0.1",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- },
- "pumpify": {
- "version": "1.4.0",
- "bundled": true,
- "requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
- }
- },
- "stream-each": {
- "version": "1.2.2",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "through2": {
- "version": "2.0.3",
- "bundled": true,
- "requires": {
- "readable-stream": "2.3.5",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "xtend": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "y18n": {
- "version": "4.0.0",
- "bundled": true
- }
- }
- },
- "call-limit": {
- "version": "1.1.0",
- "bundled": true
- },
- "chownr": {
- "version": "1.0.1",
- "bundled": true
- },
- "cli-table2": {
- "version": "0.2.0",
- "bundled": true,
- "requires": {
- "colors": "1.1.2",
- "lodash": "3.10.1",
- "string-width": "1.0.2"
- },
- "dependencies": {
- "colors": {
- "version": "1.1.2",
- "bundled": true,
- "optional": true
- },
- "lodash": {
- "version": "3.10.1",
- "bundled": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- },
- "dependencies": {
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "number-is-nan": "1.0.1"
- },
- "dependencies": {
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "ansi-regex": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- }
- }
- }
- }
- },
- "cmd-shim": {
- "version": "2.0.2",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "mkdirp": "0.5.1"
- }
- },
- "columnify": {
- "version": "1.5.4",
- "bundled": true,
- "requires": {
- "strip-ansi": "3.0.1",
- "wcwidth": "1.0.1"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "ansi-regex": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "bundled": true,
- "requires": {
- "defaults": "1.0.3"
- },
- "dependencies": {
- "defaults": {
- "version": "1.0.3",
- "bundled": true,
- "requires": {
- "clone": "1.0.2"
- },
- "dependencies": {
- "clone": {
- "version": "1.0.2",
- "bundled": true
- }
- }
- }
- }
- }
- }
- },
- "config-chain": {
- "version": "1.1.11",
- "bundled": true,
- "requires": {
- "ini": "1.3.5",
- "proto-list": "1.2.4"
- },
- "dependencies": {
- "proto-list": {
- "version": "1.2.4",
- "bundled": true
- }
- }
- },
- "debuglog": {
- "version": "1.0.1",
- "bundled": true
- },
- "detect-indent": {
- "version": "5.0.0",
- "bundled": true
- },
- "detect-newline": {
- "version": "2.1.0",
- "bundled": true
- },
- "dezalgo": {
- "version": "1.0.3",
- "bundled": true,
- "requires": {
- "asap": "2.0.5",
- "wrappy": "1.0.2"
- },
- "dependencies": {
- "asap": {
- "version": "2.0.5",
- "bundled": true
- }
- }
- },
- "editor": {
- "version": "1.0.0",
- "bundled": true
- },
- "find-npm-prefix": {
- "version": "1.0.2",
- "bundled": true
- },
- "fs-vacuum": {
- "version": "1.2.10",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "path-is-inside": "1.0.2",
- "rimraf": "2.6.2"
- }
- },
- "fs-write-stream-atomic": {
- "version": "1.0.10",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "iferr": "0.1.5",
- "imurmurhash": "0.1.4",
- "readable-stream": "2.3.5"
- }
- },
- "gentle-fs": {
- "version": "2.0.1",
- "bundled": true,
- "requires": {
- "aproba": "1.2.0",
- "fs-vacuum": "1.2.10",
- "graceful-fs": "4.1.11",
- "iferr": "0.1.5",
- "mkdirp": "0.5.1",
- "path-is-inside": "1.0.2",
- "read-cmd-shim": "1.0.1",
- "slide": "1.1.6"
- }
- },
- "glob": {
- "version": "7.1.2",
- "bundled": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- },
- "dependencies": {
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "requires": {
- "brace-expansion": "1.1.8"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "1.1.8",
- "bundled": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "bundled": true
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true
- },
- "hosted-git-info": {
- "version": "2.6.0",
- "bundled": true
- },
- "iferr": {
- "version": "0.1.5",
- "bundled": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "bundled": true
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true
- },
- "ini": {
- "version": "1.3.5",
- "bundled": true
- },
- "init-package-json": {
- "version": "1.10.3",
- "bundled": true,
- "requires": {
- "glob": "7.1.2",
- "npm-package-arg": "6.0.0",
- "promzard": "0.3.0",
- "read": "1.0.7",
- "read-package-json": "2.0.13",
- "semver": "5.5.0",
- "validate-npm-package-license": "3.0.1",
- "validate-npm-package-name": "3.0.0"
- },
- "dependencies": {
- "promzard": {
- "version": "0.3.0",
- "bundled": true,
- "requires": {
- "read": "1.0.7"
- }
- }
- }
- },
- "is-cidr": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "cidr-regex": "1.0.6"
- },
- "dependencies": {
- "cidr-regex": {
- "version": "1.0.6",
- "bundled": true
- }
- }
- },
- "json-parse-better-errors": {
- "version": "1.0.1",
- "bundled": true
- },
- "lazy-property": {
- "version": "1.0.0",
- "bundled": true
- },
- "libcipm": {
- "version": "1.6.0",
- "bundled": true,
- "requires": {
- "bin-links": "1.1.0",
- "bluebird": "3.5.1",
- "find-npm-prefix": "1.0.2",
- "graceful-fs": "4.1.11",
- "lock-verify": "2.0.0",
- "npm-lifecycle": "2.0.1",
- "npm-logical-tree": "1.2.1",
- "npm-package-arg": "6.0.0",
- "pacote": "7.6.1",
- "protoduck": "5.0.0",
- "read-package-json": "2.0.13",
- "rimraf": "2.6.2",
- "worker-farm": "1.5.4"
- },
- "dependencies": {
- "lock-verify": {
- "version": "2.0.0",
- "bundled": true,
- "requires": {
- "npm-package-arg": "5.1.2",
- "semver": "5.5.0"
- },
- "dependencies": {
- "npm-package-arg": {
- "version": "5.1.2",
- "bundled": true,
- "requires": {
- "hosted-git-info": "2.6.0",
- "osenv": "0.1.5",
- "semver": "5.5.0",
- "validate-npm-package-name": "3.0.0"
- }
- }
- }
- },
- "npm-logical-tree": {
- "version": "1.2.1",
- "bundled": true
- },
- "protoduck": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "genfun": "4.0.1"
- },
- "dependencies": {
- "genfun": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- },
- "worker-farm": {
- "version": "1.5.4",
- "bundled": true,
- "requires": {
- "errno": "0.1.7",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "errno": {
- "version": "0.1.7",
- "bundled": true,
- "requires": {
- "prr": "1.0.1"
- },
- "dependencies": {
- "prr": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "xtend": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "libnpx": {
- "version": "10.0.1",
- "bundled": true,
- "requires": {
- "dotenv": "5.0.1",
- "npm-package-arg": "6.0.0",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.1",
- "update-notifier": "2.3.0",
- "which": "1.3.0",
- "y18n": "4.0.0",
- "yargs": "11.0.0"
- },
- "dependencies": {
- "dotenv": {
- "version": "5.0.1",
- "bundled": true
- },
- "y18n": {
- "version": "4.0.0",
- "bundled": true
- },
- "yargs": {
- "version": "11.0.0",
- "bundled": true,
- "requires": {
- "cliui": "4.0.0",
- "decamelize": "1.2.0",
- "find-up": "2.1.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "9.0.2"
- },
- "dependencies": {
- "cliui": {
- "version": "4.0.0",
- "bundled": true,
- "requires": {
- "string-width": "2.1.1",
- "strip-ansi": "4.0.0",
- "wrap-ansi": "2.1.0"
- },
- "dependencies": {
- "wrap-ansi": {
- "version": "2.1.0",
- "bundled": true,
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- },
- "dependencies": {
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "number-is-nan": "1.0.1"
- },
- "dependencies": {
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "ansi-regex": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- }
- }
- }
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "bundled": true
- },
- "find-up": {
- "version": "2.1.0",
- "bundled": true,
- "requires": {
- "locate-path": "2.0.0"
- },
- "dependencies": {
- "locate-path": {
- "version": "2.0.0",
- "bundled": true,
- "requires": {
- "p-locate": "2.0.0",
- "path-exists": "3.0.0"
- },
- "dependencies": {
- "p-locate": {
- "version": "2.0.0",
- "bundled": true,
- "requires": {
- "p-limit": "1.2.0"
- },
- "dependencies": {
- "p-limit": {
- "version": "1.2.0",
- "bundled": true,
- "requires": {
- "p-try": "1.0.0"
- },
- "dependencies": {
- "p-try": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "get-caller-file": {
- "version": "1.0.2",
- "bundled": true
- },
- "os-locale": {
- "version": "2.1.0",
- "bundled": true,
- "requires": {
- "execa": "0.7.0",
- "lcid": "1.0.0",
- "mem": "1.1.0"
- },
- "dependencies": {
- "execa": {
- "version": "0.7.0",
- "bundled": true,
- "requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "bundled": true,
- "requires": {
- "lru-cache": "4.1.1",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
- },
- "dependencies": {
- "shebang-command": {
- "version": "1.2.0",
- "bundled": true,
- "requires": {
- "shebang-regex": "1.0.0"
- },
- "dependencies": {
- "shebang-regex": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "get-stream": {
- "version": "3.0.0",
- "bundled": true
- },
- "is-stream": {
- "version": "1.1.0",
- "bundled": true
- },
- "npm-run-path": {
- "version": "2.0.2",
- "bundled": true,
- "requires": {
- "path-key": "2.0.1"
- },
- "dependencies": {
- "path-key": {
- "version": "2.0.1",
- "bundled": true
- }
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "bundled": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true
- },
- "strip-eof": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "lcid": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "invert-kv": "1.0.0"
- },
- "dependencies": {
- "invert-kv": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "mem": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "mimic-fn": "1.2.0"
- },
- "dependencies": {
- "mimic-fn": {
- "version": "1.2.0",
- "bundled": true
- }
- }
- }
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "bundled": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "bundled": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true
- },
- "string-width": {
- "version": "2.1.1",
- "bundled": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- },
- "which-module": {
- "version": "2.0.0",
- "bundled": true
- },
- "y18n": {
- "version": "3.2.1",
- "bundled": true
- },
- "yargs-parser": {
- "version": "9.0.2",
- "bundled": true,
- "requires": {
- "camelcase": "4.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "bundled": true
- }
- }
- }
- }
- }
- }
- },
- "lockfile": {
- "version": "1.0.3",
- "bundled": true
- },
- "lodash._baseindexof": {
- "version": "3.1.0",
- "bundled": true
- },
- "lodash._baseuniq": {
- "version": "4.6.0",
- "bundled": true,
- "requires": {
- "lodash._createset": "4.0.3",
- "lodash._root": "3.0.1"
- },
- "dependencies": {
- "lodash._createset": {
- "version": "4.0.3",
- "bundled": true
- },
- "lodash._root": {
- "version": "3.0.1",
- "bundled": true
- }
- }
- },
- "lodash._bindcallback": {
- "version": "3.0.1",
- "bundled": true
- },
- "lodash._cacheindexof": {
- "version": "3.0.2",
- "bundled": true
- },
- "lodash._createcache": {
- "version": "3.1.2",
- "bundled": true,
- "requires": {
- "lodash._getnative": "3.9.1"
- }
- },
- "lodash._getnative": {
- "version": "3.9.1",
- "bundled": true
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "bundled": true
- },
- "lodash.restparam": {
- "version": "3.6.1",
- "bundled": true
- },
- "lodash.union": {
- "version": "4.6.0",
- "bundled": true
- },
- "lodash.uniq": {
- "version": "4.5.0",
- "bundled": true
- },
- "lodash.without": {
- "version": "4.4.0",
- "bundled": true
- },
- "lru-cache": {
- "version": "4.1.1",
- "bundled": true,
- "requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
- },
- "dependencies": {
- "pseudomap": {
- "version": "1.0.2",
- "bundled": true
- },
- "yallist": {
- "version": "2.1.2",
- "bundled": true
- }
- }
- },
- "meant": {
- "version": "1.0.1",
- "bundled": true
- },
- "mississippi": {
- "version": "3.0.0",
- "bundled": true,
- "requires": {
- "concat-stream": "1.6.1",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.2",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "3.0.0",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.6.1",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "typedarray": "0.0.6"
- },
- "dependencies": {
- "typedarray": {
- "version": "0.0.6",
- "bundled": true
- }
- }
- },
- "duplexify": {
- "version": "3.5.4",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "end-of-stream": {
- "version": "1.4.1",
- "bundled": true,
- "requires": {
- "once": "1.4.0"
- }
- },
- "flush-write-stream": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "from2": {
- "version": "2.3.0",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "parallel-transform": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- },
- "dependencies": {
- "cyclist": {
- "version": "0.2.2",
- "bundled": true
- }
- }
- },
- "pump": {
- "version": "3.0.0",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- },
- "pumpify": {
- "version": "1.4.0",
- "bundled": true,
- "requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
- },
- "dependencies": {
- "pump": {
- "version": "2.0.1",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- }
- }
- },
- "stream-each": {
- "version": "1.2.2",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "through2": {
- "version": "2.0.3",
- "bundled": true,
- "requires": {
- "readable-stream": "2.3.5",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "xtend": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "bundled": true
- }
- }
- },
- "move-concurrently": {
- "version": "1.0.1",
- "bundled": true,
- "requires": {
- "aproba": "1.2.0",
- "copy-concurrently": "1.0.5",
- "fs-write-stream-atomic": "1.0.10",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2",
- "run-queue": "1.0.3"
- },
- "dependencies": {
- "copy-concurrently": {
- "version": "1.0.5",
- "bundled": true,
- "requires": {
- "aproba": "1.2.0",
- "fs-write-stream-atomic": "1.0.10",
- "iferr": "0.1.5",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2",
- "run-queue": "1.0.3"
- }
- },
- "run-queue": {
- "version": "1.0.3",
- "bundled": true,
- "requires": {
- "aproba": "1.2.0"
- }
- }
- }
- },
- "nopt": {
- "version": "4.0.1",
- "bundled": true,
- "requires": {
- "abbrev": "1.1.1",
- "osenv": "0.1.5"
- }
- },
- "normalize-package-data": {
- "version": "2.4.0",
- "bundled": true,
- "requires": {
- "hosted-git-info": "2.6.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.5.0",
- "validate-npm-package-license": "3.0.1"
- },
- "dependencies": {
- "is-builtin-module": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "builtin-modules": "1.1.1"
- },
- "dependencies": {
- "builtin-modules": {
- "version": "1.1.1",
- "bundled": true
- }
- }
- }
- }
- },
- "npm-cache-filename": {
- "version": "1.0.2",
- "bundled": true
- },
- "npm-install-checks": {
- "version": "3.0.0",
- "bundled": true,
- "requires": {
- "semver": "5.5.0"
- }
- },
- "npm-lifecycle": {
- "version": "2.0.1",
- "bundled": true,
- "requires": {
- "byline": "5.0.0",
- "graceful-fs": "4.1.11",
- "node-gyp": "3.6.2",
- "resolve-from": "4.0.0",
- "slide": "1.1.6",
- "uid-number": "0.0.6",
- "umask": "1.1.0",
- "which": "1.3.0"
- },
- "dependencies": {
- "byline": {
- "version": "5.0.0",
- "bundled": true
- },
- "node-gyp": {
- "version": "3.6.2",
- "bundled": true,
- "requires": {
- "fstream": "1.0.11",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "npmlog": "4.1.2",
- "osenv": "0.1.5",
- "request": "2.83.0",
- "rimraf": "2.6.2",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "which": "1.3.0"
- },
- "dependencies": {
- "fstream": {
- "version": "1.0.11",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "requires": {
- "brace-expansion": "1.1.11"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "nopt": {
- "version": "3.0.6",
- "bundled": true,
- "requires": {
- "abbrev": "1.1.1"
- }
- },
- "semver": {
- "version": "5.3.0",
- "bundled": true
- },
- "tar": {
- "version": "2.2.1",
- "bundled": true,
- "requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
- },
- "dependencies": {
- "block-stream": {
- "version": "0.0.9",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3"
- }
- }
- }
- }
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "bundled": true
- }
- }
- },
- "npm-package-arg": {
- "version": "6.0.0",
- "bundled": true,
- "requires": {
- "hosted-git-info": "2.6.0",
- "osenv": "0.1.5",
- "semver": "5.5.0",
- "validate-npm-package-name": "3.0.0"
- }
- },
- "npm-packlist": {
- "version": "1.1.10",
- "bundled": true,
- "requires": {
- "ignore-walk": "3.0.1",
- "npm-bundled": "1.0.3"
- },
- "dependencies": {
- "ignore-walk": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "minimatch": "3.0.4"
- },
- "dependencies": {
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "requires": {
- "brace-expansion": "1.1.8"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "1.1.8",
- "bundled": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true
- }
- }
- }
- }
- }
- }
- },
- "npm-bundled": {
- "version": "1.0.3",
- "bundled": true
- }
- }
- },
- "npm-profile": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "aproba": "1.2.0",
- "make-fetch-happen": "2.6.0"
- },
- "dependencies": {
- "make-fetch-happen": {
- "version": "2.6.0",
- "bundled": true,
- "requires": {
- "agentkeepalive": "3.3.0",
- "cacache": "10.0.4",
- "http-cache-semantics": "3.8.1",
- "http-proxy-agent": "2.0.0",
- "https-proxy-agent": "2.1.1",
- "lru-cache": "4.1.1",
- "mississippi": "1.3.1",
- "node-fetch-npm": "2.0.2",
- "promise-retry": "1.1.1",
- "socks-proxy-agent": "3.0.1",
- "ssri": "5.2.4"
- },
- "dependencies": {
- "agentkeepalive": {
- "version": "3.3.0",
- "bundled": true,
- "requires": {
- "humanize-ms": "1.2.1"
- },
- "dependencies": {
- "humanize-ms": {
- "version": "1.2.1",
- "bundled": true,
- "requires": {
- "ms": "2.1.1"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- }
- }
- },
- "http-cache-semantics": {
- "version": "3.8.1",
- "bundled": true
- },
- "http-proxy-agent": {
- "version": "2.0.0",
- "bundled": true,
- "requires": {
- "agent-base": "4.2.0",
- "debug": "2.6.9"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.2.0",
- "bundled": true,
- "requires": {
- "es6-promisify": "5.0.0"
- },
- "dependencies": {
- "es6-promisify": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "es6-promise": "4.2.4"
- },
- "dependencies": {
- "es6-promise": {
- "version": "4.2.4",
- "bundled": true
- }
- }
- }
- }
- },
- "debug": {
- "version": "2.6.9",
- "bundled": true,
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "https-proxy-agent": {
- "version": "2.1.1",
- "bundled": true,
- "requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.2.0",
- "bundled": true,
- "requires": {
- "es6-promisify": "5.0.0"
- },
- "dependencies": {
- "es6-promisify": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "es6-promise": "4.2.4"
- },
- "dependencies": {
- "es6-promise": {
- "version": "4.2.4",
- "bundled": true
- }
- }
- }
- }
- },
- "debug": {
- "version": "3.1.0",
- "bundled": true,
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "mississippi": {
- "version": "1.3.1",
- "bundled": true,
- "requires": {
- "concat-stream": "1.6.0",
- "duplexify": "3.5.3",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.2",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "1.0.3",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.6.0",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "typedarray": "0.0.6"
- },
- "dependencies": {
- "typedarray": {
- "version": "0.0.6",
- "bundled": true
- }
- }
- },
- "duplexify": {
- "version": "3.5.3",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "end-of-stream": {
- "version": "1.4.1",
- "bundled": true,
- "requires": {
- "once": "1.4.0"
- }
- },
- "flush-write-stream": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "from2": {
- "version": "2.3.0",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "parallel-transform": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- },
- "dependencies": {
- "cyclist": {
- "version": "0.2.2",
- "bundled": true
- }
- }
- },
- "pump": {
- "version": "1.0.3",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- },
- "pumpify": {
- "version": "1.4.0",
- "bundled": true,
- "requires": {
- "duplexify": "3.5.3",
- "inherits": "2.0.3",
- "pump": "2.0.1"
- },
- "dependencies": {
- "pump": {
- "version": "2.0.1",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- }
- }
- },
- "stream-each": {
- "version": "1.2.2",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "through2": {
- "version": "2.0.3",
- "bundled": true,
- "requires": {
- "readable-stream": "2.3.5",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "xtend": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "node-fetch-npm": {
- "version": "2.0.2",
- "bundled": true,
- "requires": {
- "encoding": "0.1.12",
- "json-parse-better-errors": "1.0.1",
- "safe-buffer": "5.1.1"
- },
- "dependencies": {
- "encoding": {
- "version": "0.1.12",
- "bundled": true,
- "requires": {
- "iconv-lite": "0.4.19"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.19",
- "bundled": true
- }
- }
- },
- "json-parse-better-errors": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "promise-retry": {
- "version": "1.1.1",
- "bundled": true,
- "requires": {
- "err-code": "1.1.2",
- "retry": "0.10.1"
- },
- "dependencies": {
- "err-code": {
- "version": "1.1.2",
- "bundled": true
- }
- }
- },
- "socks-proxy-agent": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "agent-base": "4.2.0",
- "socks": "1.1.10"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.2.0",
- "bundled": true,
- "requires": {
- "es6-promisify": "5.0.0"
- },
- "dependencies": {
- "es6-promisify": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "es6-promise": "4.2.4"
- },
- "dependencies": {
- "es6-promise": {
- "version": "4.2.4",
- "bundled": true
- }
- }
- }
- }
- },
- "socks": {
- "version": "1.1.10",
- "bundled": true,
- "requires": {
- "ip": "1.1.5",
- "smart-buffer": "1.1.15"
- },
- "dependencies": {
- "ip": {
- "version": "1.1.5",
- "bundled": true
- },
- "smart-buffer": {
- "version": "1.1.15",
- "bundled": true
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "npm-registry-client": {
- "version": "8.5.1",
- "bundled": true,
- "requires": {
- "concat-stream": "1.6.1",
- "graceful-fs": "4.1.11",
- "normalize-package-data": "2.4.0",
- "npm-package-arg": "6.0.0",
- "npmlog": "4.1.2",
- "once": "1.4.0",
- "request": "2.83.0",
- "retry": "0.10.1",
- "safe-buffer": "5.1.1",
- "semver": "5.5.0",
- "slide": "1.1.6",
- "ssri": "5.2.4"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.6.1",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "typedarray": "0.0.6"
- },
- "dependencies": {
- "typedarray": {
- "version": "0.0.6",
- "bundled": true
- }
- }
- }
- }
- },
- "npm-user-validate": {
- "version": "1.0.0",
- "bundled": true
- },
- "npmlog": {
- "version": "4.1.2",
- "bundled": true,
- "requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
- },
- "dependencies": {
- "are-we-there-yet": {
- "version": "1.1.4",
- "bundled": true,
- "requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.3.5"
- },
- "dependencies": {
- "delegates": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "requires": {
- "aproba": "1.2.0",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
- },
- "dependencies": {
- "object-assign": {
- "version": "4.1.1",
- "bundled": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- },
- "dependencies": {
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "number-is-nan": "1.0.1"
- },
- "dependencies": {
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "ansi-regex": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- },
- "wide-align": {
- "version": "1.1.2",
- "bundled": true,
- "requires": {
- "string-width": "1.0.2"
- }
- }
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "requires": {
- "wrappy": "1.0.2"
- }
- },
- "opener": {
- "version": "1.4.3",
- "bundled": true
- },
- "osenv": {
- "version": "0.1.5",
- "bundled": true,
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
- },
- "dependencies": {
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true
- }
- }
- },
- "pacote": {
- "version": "7.6.1",
- "bundled": true,
- "requires": {
- "bluebird": "3.5.1",
- "cacache": "10.0.4",
- "get-stream": "3.0.0",
- "glob": "7.1.2",
- "lru-cache": "4.1.1",
- "make-fetch-happen": "2.6.0",
- "minimatch": "3.0.4",
- "mississippi": "3.0.0",
- "mkdirp": "0.5.1",
- "normalize-package-data": "2.4.0",
- "npm-package-arg": "6.0.0",
- "npm-packlist": "1.1.10",
- "npm-pick-manifest": "2.1.0",
- "osenv": "0.1.5",
- "promise-inflight": "1.0.1",
- "promise-retry": "1.1.1",
- "protoduck": "5.0.0",
- "rimraf": "2.6.2",
- "safe-buffer": "5.1.1",
- "semver": "5.5.0",
- "ssri": "5.2.4",
- "tar": "4.4.0",
- "unique-filename": "1.1.0",
- "which": "1.3.0"
- },
- "dependencies": {
- "get-stream": {
- "version": "3.0.0",
- "bundled": true
- },
- "make-fetch-happen": {
- "version": "2.6.0",
- "bundled": true,
- "requires": {
- "agentkeepalive": "3.4.0",
- "cacache": "10.0.4",
- "http-cache-semantics": "3.8.1",
- "http-proxy-agent": "2.1.0",
- "https-proxy-agent": "2.2.0",
- "lru-cache": "4.1.1",
- "mississippi": "1.3.1",
- "node-fetch-npm": "2.0.2",
- "promise-retry": "1.1.1",
- "socks-proxy-agent": "3.0.1",
- "ssri": "5.2.4"
- },
- "dependencies": {
- "agentkeepalive": {
- "version": "3.4.0",
- "bundled": true,
- "requires": {
- "humanize-ms": "1.2.1"
- },
- "dependencies": {
- "humanize-ms": {
- "version": "1.2.1",
- "bundled": true,
- "requires": {
- "ms": "2.1.1"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- }
- }
- },
- "http-cache-semantics": {
- "version": "3.8.1",
- "bundled": true
- },
- "http-proxy-agent": {
- "version": "2.1.0",
- "bundled": true,
- "requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.2.0",
- "bundled": true,
- "requires": {
- "es6-promisify": "5.0.0"
- },
- "dependencies": {
- "es6-promisify": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "es6-promise": "4.2.4"
- },
- "dependencies": {
- "es6-promise": {
- "version": "4.2.4",
- "bundled": true
- }
- }
- }
- }
- },
- "debug": {
- "version": "3.1.0",
- "bundled": true,
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "https-proxy-agent": {
- "version": "2.2.0",
- "bundled": true,
- "requires": {
- "agent-base": "4.2.0",
- "debug": "3.1.0"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.2.0",
- "bundled": true,
- "requires": {
- "es6-promisify": "5.0.0"
- },
- "dependencies": {
- "es6-promisify": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "es6-promise": "4.2.4"
- },
- "dependencies": {
- "es6-promise": {
- "version": "4.2.4",
- "bundled": true
- }
- }
- }
- }
- },
- "debug": {
- "version": "3.1.0",
- "bundled": true,
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "mississippi": {
- "version": "1.3.1",
- "bundled": true,
- "requires": {
- "concat-stream": "1.6.1",
- "duplexify": "3.5.4",
- "end-of-stream": "1.4.1",
- "flush-write-stream": "1.0.2",
- "from2": "2.3.0",
- "parallel-transform": "1.1.0",
- "pump": "1.0.3",
- "pumpify": "1.4.0",
- "stream-each": "1.2.2",
- "through2": "2.0.3"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.6.1",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "typedarray": "0.0.6"
- },
- "dependencies": {
- "typedarray": {
- "version": "0.0.6",
- "bundled": true
- }
- }
- },
- "duplexify": {
- "version": "3.5.4",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "end-of-stream": {
- "version": "1.4.1",
- "bundled": true,
- "requires": {
- "once": "1.4.0"
- }
- },
- "flush-write-stream": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "from2": {
- "version": "2.3.0",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- }
- },
- "parallel-transform": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "cyclist": "0.2.2",
- "inherits": "2.0.3",
- "readable-stream": "2.3.5"
- },
- "dependencies": {
- "cyclist": {
- "version": "0.2.2",
- "bundled": true
- }
- }
- },
- "pump": {
- "version": "1.0.3",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- },
- "pumpify": {
- "version": "1.4.0",
- "bundled": true,
- "requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
- },
- "dependencies": {
- "pump": {
- "version": "2.0.1",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- }
- }
- },
- "stream-each": {
- "version": "1.2.2",
- "bundled": true,
- "requires": {
- "end-of-stream": "1.4.1",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "through2": {
- "version": "2.0.3",
- "bundled": true,
- "requires": {
- "readable-stream": "2.3.5",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "xtend": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "node-fetch-npm": {
- "version": "2.0.2",
- "bundled": true,
- "requires": {
- "encoding": "0.1.12",
- "json-parse-better-errors": "1.0.1",
- "safe-buffer": "5.1.1"
- },
- "dependencies": {
- "encoding": {
- "version": "0.1.12",
- "bundled": true,
- "requires": {
- "iconv-lite": "0.4.19"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.19",
- "bundled": true
- }
- }
- },
- "json-parse-better-errors": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "socks-proxy-agent": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "agent-base": "4.2.0",
- "socks": "1.1.10"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.2.0",
- "bundled": true,
- "requires": {
- "es6-promisify": "5.0.0"
- },
- "dependencies": {
- "es6-promisify": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "es6-promise": "4.2.4"
- },
- "dependencies": {
- "es6-promise": {
- "version": "4.2.4",
- "bundled": true
- }
- }
- }
- }
- },
- "socks": {
- "version": "1.1.10",
- "bundled": true,
- "requires": {
- "ip": "1.1.5",
- "smart-buffer": "1.1.15"
- },
- "dependencies": {
- "ip": {
- "version": "1.1.5",
- "bundled": true
- },
- "smart-buffer": {
- "version": "1.1.15",
- "bundled": true
- }
- }
- }
- }
- }
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "requires": {
- "brace-expansion": "1.1.11"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- },
- "dependencies": {
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "npm-pick-manifest": {
- "version": "2.1.0",
- "bundled": true,
- "requires": {
- "npm-package-arg": "6.0.0",
- "semver": "5.5.0"
- }
- },
- "promise-retry": {
- "version": "1.1.1",
- "bundled": true,
- "requires": {
- "err-code": "1.1.2",
- "retry": "0.10.1"
- },
- "dependencies": {
- "err-code": {
- "version": "1.1.2",
- "bundled": true
- }
- }
- },
- "protoduck": {
- "version": "5.0.0",
- "bundled": true,
- "requires": {
- "genfun": "4.0.1"
- },
- "dependencies": {
- "genfun": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "path-is-inside": {
- "version": "1.0.2",
- "bundled": true
- },
- "promise-inflight": {
- "version": "1.0.1",
- "bundled": true
- },
- "qrcode-terminal": {
- "version": "0.11.0",
- "bundled": true
- },
- "query-string": {
- "version": "5.1.0",
- "bundled": true,
- "requires": {
- "decode-uri-component": "0.2.0",
- "object-assign": "4.1.1",
- "strict-uri-encode": "1.1.0"
- },
- "dependencies": {
- "decode-uri-component": {
- "version": "0.2.0",
- "bundled": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true
- },
- "strict-uri-encode": {
- "version": "1.1.0",
- "bundled": true
- }
- }
- },
- "qw": {
- "version": "1.0.1",
- "bundled": true
- },
- "read": {
- "version": "1.0.7",
- "bundled": true,
- "requires": {
- "mute-stream": "0.0.7"
- },
- "dependencies": {
- "mute-stream": {
- "version": "0.0.7",
- "bundled": true
- }
- }
- },
- "read-cmd-shim": {
- "version": "1.0.1",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11"
- }
- },
- "read-installed": {
- "version": "4.0.3",
- "bundled": true,
- "requires": {
- "debuglog": "1.0.1",
- "graceful-fs": "4.1.11",
- "read-package-json": "2.0.13",
- "readdir-scoped-modules": "1.0.2",
- "semver": "5.5.0",
- "slide": "1.1.6",
- "util-extend": "1.0.3"
- },
- "dependencies": {
- "util-extend": {
- "version": "1.0.3",
- "bundled": true
- }
- }
- },
- "read-package-json": {
- "version": "2.0.13",
- "bundled": true,
- "requires": {
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "json-parse-better-errors": "1.0.1",
- "normalize-package-data": "2.4.0",
- "slash": "1.0.0"
- },
- "dependencies": {
- "json-parse-better-errors": {
- "version": "1.0.1",
- "bundled": true
- },
- "slash": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "read-package-tree": {
- "version": "5.1.6",
- "bundled": true,
- "requires": {
- "debuglog": "1.0.1",
- "dezalgo": "1.0.3",
- "once": "1.4.0",
- "read-package-json": "2.0.13",
- "readdir-scoped-modules": "1.0.2"
- }
- },
- "readable-stream": {
- "version": "2.3.5",
- "bundled": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
- },
- "dependencies": {
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "bundled": true
- },
- "string_decoder": {
- "version": "1.0.3",
- "bundled": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true
- }
- }
- },
- "readdir-scoped-modules": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "debuglog": "1.0.1",
- "dezalgo": "1.0.3",
- "graceful-fs": "4.1.11",
- "once": "1.4.0"
- }
- },
- "request": {
- "version": "2.83.0",
- "bundled": true,
- "requires": {
- "aws-sign2": "0.7.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.3.1",
- "har-validator": "5.0.3",
- "hawk": "6.0.2",
- "http-signature": "1.2.0",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
- "oauth-sign": "0.8.2",
- "performance-now": "2.1.0",
- "qs": "6.5.1",
- "safe-buffer": "5.1.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.3",
- "tunnel-agent": "0.6.0",
- "uuid": "3.2.1"
- },
- "dependencies": {
- "aws-sign2": {
- "version": "0.7.0",
- "bundled": true
- },
- "aws4": {
- "version": "1.6.0",
- "bundled": true
- },
- "caseless": {
- "version": "0.12.0",
- "bundled": true
- },
- "combined-stream": {
- "version": "1.0.5",
- "bundled": true,
- "requires": {
- "delayed-stream": "1.0.0"
- },
- "dependencies": {
- "delayed-stream": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "extend": {
- "version": "3.0.1",
- "bundled": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "bundled": true
- },
- "form-data": {
- "version": "2.3.1",
- "bundled": true,
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.17"
- },
- "dependencies": {
- "asynckit": {
- "version": "0.4.0",
- "bundled": true
- }
- }
- },
- "har-validator": {
- "version": "5.0.3",
- "bundled": true,
- "requires": {
- "ajv": "5.2.3",
- "har-schema": "2.0.0"
- },
- "dependencies": {
- "ajv": {
- "version": "5.2.3",
- "bundled": true,
- "requires": {
- "co": "4.6.0",
- "fast-deep-equal": "1.0.0",
- "json-schema-traverse": "0.3.1",
- "json-stable-stringify": "1.0.1"
- },
- "dependencies": {
- "co": {
- "version": "4.6.0",
- "bundled": true
- },
- "fast-deep-equal": {
- "version": "1.0.0",
- "bundled": true
- },
- "json-schema-traverse": {
- "version": "0.3.1",
- "bundled": true
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "bundled": true,
- "requires": {
- "jsonify": "0.0.0"
- },
- "dependencies": {
- "jsonify": {
- "version": "0.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- },
- "hawk": {
- "version": "6.0.2",
- "bundled": true,
- "requires": {
- "boom": "4.3.1",
- "cryptiles": "3.1.2",
- "hoek": "4.2.0",
- "sntp": "2.0.2"
- },
- "dependencies": {
- "boom": {
- "version": "4.3.1",
- "bundled": true,
- "requires": {
- "hoek": "4.2.0"
- }
- },
- "cryptiles": {
- "version": "3.1.2",
- "bundled": true,
- "requires": {
- "boom": "5.2.0"
- },
- "dependencies": {
- "boom": {
- "version": "5.2.0",
- "bundled": true,
- "requires": {
- "hoek": "4.2.0"
- }
- }
- }
- },
- "hoek": {
- "version": "4.2.0",
- "bundled": true
- },
- "sntp": {
- "version": "2.0.2",
- "bundled": true,
- "requires": {
- "hoek": "4.2.0"
- }
- }
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "bundled": true,
- "requires": {
- "assert-plus": "1.0.0",
- "jsprim": "1.4.1",
- "sshpk": "1.13.1"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "bundled": true
- },
- "jsprim": {
- "version": "1.4.1",
- "bundled": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- },
- "dependencies": {
- "extsprintf": {
- "version": "1.3.0",
- "bundled": true
- },
- "json-schema": {
- "version": "0.2.3",
- "bundled": true
- },
- "verror": {
- "version": "1.10.0",
- "bundled": true,
- "requires": {
- "assert-plus": "1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
- },
- "dependencies": {
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true
- }
- }
- }
- }
- },
- "sshpk": {
- "version": "1.13.1",
- "bundled": true,
- "requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- },
- "dependencies": {
- "asn1": {
- "version": "0.2.3",
- "bundled": true
- },
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "bundled": true,
- "optional": true,
- "requires": {
- "tweetnacl": "0.14.5"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "bundled": true,
- "requires": {
- "assert-plus": "1.0.0"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.1",
- "bundled": true,
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "bundled": true,
- "requires": {
- "assert-plus": "1.0.0"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "bundled": true,
- "optional": true
- },
- "tweetnacl": {
- "version": "0.14.5",
- "bundled": true,
- "optional": true
- }
- }
- }
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "bundled": true
- },
- "isstream": {
- "version": "0.1.2",
- "bundled": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "bundled": true
- },
- "mime-types": {
- "version": "2.1.17",
- "bundled": true,
- "requires": {
- "mime-db": "1.30.0"
- },
- "dependencies": {
- "mime-db": {
- "version": "1.30.0",
- "bundled": true
- }
- }
- },
- "oauth-sign": {
- "version": "0.8.2",
- "bundled": true
- },
- "performance-now": {
- "version": "2.1.0",
- "bundled": true
- },
- "qs": {
- "version": "6.5.1",
- "bundled": true
- },
- "stringstream": {
- "version": "0.0.5",
- "bundled": true
- },
- "tough-cookie": {
- "version": "2.3.3",
- "bundled": true,
- "requires": {
- "punycode": "1.4.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "bundled": true
- }
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "bundled": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- }
- }
- },
- "retry": {
- "version": "0.10.1",
- "bundled": true
- },
- "rimraf": {
- "version": "2.6.2",
- "bundled": true,
- "requires": {
- "glob": "7.1.2"
- }
- },
- "safe-buffer": {
- "version": "5.1.1",
- "bundled": true
- },
- "semver": {
- "version": "5.5.0",
- "bundled": true
- },
- "sha": {
- "version": "2.0.1",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "readable-stream": "2.3.5"
- }
- },
- "slide": {
- "version": "1.1.6",
- "bundled": true
- },
- "sorted-object": {
- "version": "2.0.1",
- "bundled": true
- },
- "sorted-union-stream": {
- "version": "2.1.3",
- "bundled": true,
- "requires": {
- "from2": "1.3.0",
- "stream-iterate": "1.2.0"
- },
- "dependencies": {
- "from2": {
- "version": "1.3.0",
- "bundled": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "1.1.14"
- },
- "dependencies": {
- "readable-stream": {
- "version": "1.1.14",
- "bundled": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- },
- "dependencies": {
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true
- },
- "isarray": {
- "version": "0.0.1",
- "bundled": true
- },
- "string_decoder": {
- "version": "0.10.31",
- "bundled": true
- }
- }
- }
- }
- },
- "stream-iterate": {
- "version": "1.2.0",
- "bundled": true,
- "requires": {
- "readable-stream": "2.3.5",
- "stream-shift": "1.0.0"
- },
- "dependencies": {
- "stream-shift": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "ssri": {
- "version": "5.2.4",
- "bundled": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "bundled": true,
- "requires": {
- "ansi-regex": "3.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "bundled": true
- }
- }
- },
- "tar": {
- "version": "4.4.0",
- "bundled": true,
- "requires": {
- "chownr": "1.0.1",
- "fs-minipass": "1.2.5",
- "minipass": "2.2.1",
- "minizlib": "1.1.0",
- "mkdirp": "0.5.1",
- "yallist": "3.0.2"
- },
- "dependencies": {
- "fs-minipass": {
- "version": "1.2.5",
- "bundled": true,
- "requires": {
- "minipass": "2.2.1"
- }
- },
- "minipass": {
- "version": "2.2.1",
- "bundled": true,
- "requires": {
- "yallist": "3.0.2"
- }
- },
- "minizlib": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "minipass": "2.2.1"
- }
- },
- "yallist": {
- "version": "3.0.2",
- "bundled": true
- }
- }
- },
- "text-table": {
- "version": "0.2.0",
- "bundled": true
- },
- "uid-number": {
- "version": "0.0.6",
- "bundled": true
- },
- "umask": {
- "version": "1.1.0",
- "bundled": true
- },
- "unique-filename": {
- "version": "1.1.0",
- "bundled": true,
- "requires": {
- "unique-slug": "2.0.0"
- },
- "dependencies": {
- "unique-slug": {
- "version": "2.0.0",
- "bundled": true,
- "requires": {
- "imurmurhash": "0.1.4"
- }
- }
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "bundled": true
- },
- "update-notifier": {
- "version": "2.3.0",
- "bundled": true,
- "requires": {
- "boxen": "1.2.1",
- "chalk": "2.1.0",
- "configstore": "3.1.1",
- "import-lazy": "2.1.0",
- "is-installed-globally": "0.1.0",
- "is-npm": "1.0.0",
- "latest-version": "3.1.0",
- "semver-diff": "2.1.0",
- "xdg-basedir": "3.0.0"
- },
- "dependencies": {
- "boxen": {
- "version": "1.2.1",
- "bundled": true,
- "requires": {
- "ansi-align": "2.0.0",
- "camelcase": "4.1.0",
- "chalk": "2.1.0",
- "cli-boxes": "1.0.0",
- "string-width": "2.1.1",
- "term-size": "1.2.0",
- "widest-line": "1.0.0"
- },
- "dependencies": {
- "ansi-align": {
- "version": "2.0.0",
- "bundled": true,
- "requires": {
- "string-width": "2.1.1"
- }
- },
- "camelcase": {
- "version": "4.1.0",
- "bundled": true
- },
- "cli-boxes": {
- "version": "1.0.0",
- "bundled": true
- },
- "string-width": {
- "version": "2.1.1",
- "bundled": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- },
- "term-size": {
- "version": "1.2.0",
- "bundled": true,
- "requires": {
- "execa": "0.7.0"
- },
- "dependencies": {
- "execa": {
- "version": "0.7.0",
- "bundled": true,
- "requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "bundled": true,
- "requires": {
- "lru-cache": "4.1.1",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
- },
- "dependencies": {
- "shebang-command": {
- "version": "1.2.0",
- "bundled": true,
- "requires": {
- "shebang-regex": "1.0.0"
- },
- "dependencies": {
- "shebang-regex": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "get-stream": {
- "version": "3.0.0",
- "bundled": true
- },
- "is-stream": {
- "version": "1.1.0",
- "bundled": true
- },
- "npm-run-path": {
- "version": "2.0.2",
- "bundled": true,
- "requires": {
- "path-key": "2.0.1"
- },
- "dependencies": {
- "path-key": {
- "version": "2.0.1",
- "bundled": true
- }
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "bundled": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true
- },
- "strip-eof": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "widest-line": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "string-width": "1.0.2"
- },
- "dependencies": {
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- },
- "dependencies": {
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "number-is-nan": "1.0.1"
- },
- "dependencies": {
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "ansi-regex": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "chalk": {
- "version": "2.1.0",
- "bundled": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.4.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.0",
- "bundled": true,
- "requires": {
- "color-convert": "1.9.0"
- },
- "dependencies": {
- "color-convert": {
- "version": "1.9.0",
- "bundled": true,
- "requires": {
- "color-name": "1.1.3"
- },
- "dependencies": {
- "color-name": {
- "version": "1.1.3",
- "bundled": true
- }
- }
- }
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "bundled": true
- },
- "supports-color": {
- "version": "4.4.0",
- "bundled": true,
- "requires": {
- "has-flag": "2.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "configstore": {
- "version": "3.1.1",
- "bundled": true,
- "requires": {
- "dot-prop": "4.2.0",
- "graceful-fs": "4.1.11",
- "make-dir": "1.0.0",
- "unique-string": "1.0.0",
- "write-file-atomic": "2.3.0",
- "xdg-basedir": "3.0.0"
- },
- "dependencies": {
- "dot-prop": {
- "version": "4.2.0",
- "bundled": true,
- "requires": {
- "is-obj": "1.0.1"
- },
- "dependencies": {
- "is-obj": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "make-dir": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "pify": "2.3.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "bundled": true
- }
- }
- },
- "unique-string": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "crypto-random-string": "1.0.0"
- },
- "dependencies": {
- "crypto-random-string": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- }
- }
- },
- "import-lazy": {
- "version": "2.1.0",
- "bundled": true
- },
- "is-installed-globally": {
- "version": "0.1.0",
- "bundled": true,
- "requires": {
- "global-dirs": "0.1.0",
- "is-path-inside": "1.0.0"
- },
- "dependencies": {
- "global-dirs": {
- "version": "0.1.0",
- "bundled": true,
- "requires": {
- "ini": "1.3.5"
- }
- },
- "is-path-inside": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "path-is-inside": "1.0.2"
- }
- }
- }
- },
- "is-npm": {
- "version": "1.0.0",
- "bundled": true
- },
- "latest-version": {
- "version": "3.1.0",
- "bundled": true,
- "requires": {
- "package-json": "4.0.1"
- },
- "dependencies": {
- "package-json": {
- "version": "4.0.1",
- "bundled": true,
- "requires": {
- "got": "6.7.1",
- "registry-auth-token": "3.3.1",
- "registry-url": "3.1.0",
- "semver": "5.5.0"
- },
- "dependencies": {
- "got": {
- "version": "6.7.1",
- "bundled": true,
- "requires": {
- "create-error-class": "3.0.2",
- "duplexer3": "0.1.4",
- "get-stream": "3.0.0",
- "is-redirect": "1.0.0",
- "is-retry-allowed": "1.1.0",
- "is-stream": "1.1.0",
- "lowercase-keys": "1.0.0",
- "safe-buffer": "5.1.1",
- "timed-out": "4.0.1",
- "unzip-response": "2.0.1",
- "url-parse-lax": "1.0.0"
- },
- "dependencies": {
- "create-error-class": {
- "version": "3.0.2",
- "bundled": true,
- "requires": {
- "capture-stack-trace": "1.0.0"
- },
- "dependencies": {
- "capture-stack-trace": {
- "version": "1.0.0",
- "bundled": true
- }
- }
- },
- "duplexer3": {
- "version": "0.1.4",
- "bundled": true
- },
- "get-stream": {
- "version": "3.0.0",
- "bundled": true
- },
- "is-redirect": {
- "version": "1.0.0",
- "bundled": true
- },
- "is-retry-allowed": {
- "version": "1.1.0",
- "bundled": true
- },
- "is-stream": {
- "version": "1.1.0",
- "bundled": true
- },
- "lowercase-keys": {
- "version": "1.0.0",
- "bundled": true
- },
- "timed-out": {
- "version": "4.0.1",
- "bundled": true
- },
- "unzip-response": {
- "version": "2.0.1",
- "bundled": true
- },
- "url-parse-lax": {
- "version": "1.0.0",
- "bundled": true,
- "requires": {
- "prepend-http": "1.0.4"
- },
- "dependencies": {
- "prepend-http": {
- "version": "1.0.4",
- "bundled": true
- }
- }
- }
- }
- },
- "registry-auth-token": {
- "version": "3.3.1",
- "bundled": true,
- "requires": {
- "rc": "1.2.1",
- "safe-buffer": "5.1.1"
- },
- "dependencies": {
- "rc": {
- "version": "1.2.1",
- "bundled": true,
- "requires": {
- "deep-extend": "0.4.2",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
- },
- "dependencies": {
- "deep-extend": {
- "version": "0.4.2",
- "bundled": true
- },
- "minimist": {
- "version": "1.2.0",
- "bundled": true
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true
- }
- }
- }
- }
- },
- "registry-url": {
- "version": "3.1.0",
- "bundled": true,
- "requires": {
- "rc": "1.2.1"
- },
- "dependencies": {
- "rc": {
- "version": "1.2.1",
- "bundled": true,
- "requires": {
- "deep-extend": "0.4.2",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
- },
- "dependencies": {
- "deep-extend": {
- "version": "0.4.2",
- "bundled": true
- },
- "minimist": {
- "version": "1.2.0",
- "bundled": true
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "semver-diff": {
- "version": "2.1.0",
- "bundled": true,
- "requires": {
- "semver": "5.5.0"
- }
- },
- "xdg-basedir": {
- "version": "3.0.0",
- "bundled": true
- }
- }
- },
- "uuid": {
- "version": "3.2.1",
- "bundled": true
- },
- "validate-npm-package-license": {
- "version": "3.0.1",
- "bundled": true,
- "requires": {
- "spdx-correct": "1.0.2",
- "spdx-expression-parse": "1.0.4"
- },
- "dependencies": {
- "spdx-correct": {
- "version": "1.0.2",
- "bundled": true,
- "requires": {
- "spdx-license-ids": "1.2.2"
- },
- "dependencies": {
- "spdx-license-ids": {
- "version": "1.2.2",
- "bundled": true
- }
- }
- },
- "spdx-expression-parse": {
- "version": "1.0.4",
- "bundled": true
- }
- }
- },
- "validate-npm-package-name": {
- "version": "3.0.0",
- "bundled": true,
- "requires": {
- "builtins": "1.0.3"
- },
- "dependencies": {
- "builtins": {
- "version": "1.0.3",
- "bundled": true
- }
- }
- },
- "which": {
- "version": "1.3.0",
- "bundled": true,
- "requires": {
- "isexe": "2.0.0"
- },
- "dependencies": {
- "isexe": {
- "version": "2.0.0",
- "bundled": true
- }
- }
- },
- "worker-farm": {
- "version": "1.5.4",
- "bundled": true,
- "requires": {
- "errno": "0.1.7",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "errno": {
- "version": "0.1.7",
- "bundled": true,
- "requires": {
- "prr": "1.0.1"
- },
- "dependencies": {
- "prr": {
- "version": "1.0.1",
- "bundled": true
- }
- }
- },
- "xtend": {
- "version": "4.0.1",
- "bundled": true
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true
- },
- "write-file-atomic": {
- "version": "2.3.0",
- "bundled": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "imurmurhash": "0.1.4",
- "signal-exit": "3.0.2"
- },
- "dependencies": {
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true
- }
- }
- }
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "requires": {
- "copy-descriptor": "0.1.1",
- "define-property": "0.2.5",
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "0.1.6"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "3.2.2"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "3.2.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "0.1.6",
- "is-data-descriptor": "0.1.4",
- "kind-of": "5.1.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "object-keys": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
- "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "requires": {
- "isobject": "3.0.1"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "requires": {
- "isobject": "3.0.1"
- }
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1.0.2"
- }
- },
- "optjs": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz",
- "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4="
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "requires": {
- "lcid": "1.0.0"
- }
- },
- "parseurl": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
- },
- "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="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "requires": {
- "pify": "3.0.0"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
- },
- "power-assert": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.4.4.tgz",
- "integrity": "sha1-kpXqdDcZb1pgH95CDwQmMRhtdRc=",
- "requires": {
- "define-properties": "1.1.2",
- "empower": "1.2.3",
- "power-assert-formatter": "1.4.1",
- "universal-deep-strict-equal": "1.2.2",
- "xtend": "4.0.1"
- }
- },
- "power-assert-context-formatter": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz",
- "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=",
- "requires": {
- "core-js": "2.5.3",
- "power-assert-context-traversal": "1.1.1"
- }
- },
- "power-assert-context-reducer-ast": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz",
- "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=",
- "requires": {
- "acorn": "4.0.13",
- "acorn-es7-plugin": "1.1.7",
- "core-js": "2.5.3",
- "espurify": "1.7.0",
- "estraverse": "4.2.0"
- }
- },
- "power-assert-context-traversal": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz",
- "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=",
- "requires": {
- "core-js": "2.5.3",
- "estraverse": "4.2.0"
- }
- },
- "power-assert-formatter": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz",
- "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=",
- "requires": {
- "core-js": "2.5.3",
- "power-assert-context-formatter": "1.1.1",
- "power-assert-context-reducer-ast": "1.1.2",
- "power-assert-renderer-assertion": "1.1.1",
- "power-assert-renderer-comparison": "1.1.1",
- "power-assert-renderer-diagram": "1.1.2",
- "power-assert-renderer-file": "1.1.1"
- }
- },
- "power-assert-renderer-assertion": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz",
- "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=",
- "requires": {
- "power-assert-renderer-base": "1.1.1",
- "power-assert-util-string-width": "1.1.1"
- }
- },
- "power-assert-renderer-base": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz",
- "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s="
- },
- "power-assert-renderer-comparison": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz",
- "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=",
- "requires": {
- "core-js": "2.5.3",
- "diff-match-patch": "1.0.0",
- "power-assert-renderer-base": "1.1.1",
- "stringifier": "1.3.0",
- "type-name": "2.0.2"
- }
- },
- "power-assert-renderer-diagram": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz",
- "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=",
- "requires": {
- "core-js": "2.5.3",
- "power-assert-renderer-base": "1.1.1",
- "power-assert-util-string-width": "1.1.1",
- "stringifier": "1.3.0"
- }
- },
- "power-assert-renderer-file": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz",
- "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=",
- "requires": {
- "power-assert-renderer-base": "1.1.1"
- }
- },
- "power-assert-util-string-width": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz",
- "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=",
- "requires": {
- "eastasianwidth": "0.1.1"
- }
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
- },
- "protobufjs": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz",
- "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=",
- "requires": {
- "ascli": "1.0.1",
- "bytebuffer": "5.0.1",
- "glob": "7.1.2",
- "yargs": "3.32.0"
- }
- },
- "proxy-addr": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
- "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
- "requires": {
- "forwarded": "0.1.2",
- "ipaddr.js": "1.6.0"
- }
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
- },
- "pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- },
- "pumpify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz",
- "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==",
- "requires": {
- "duplexify": "3.5.4",
- "inherits": "2.0.3",
- "pump": "2.0.1"
- }
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- },
- "qs": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
- },
- "range-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
- },
- "raw-body": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
- "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
- "requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "unpipe": "1.0.0"
- }
- },
- "readable-stream": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz",
- "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "requires": {
- "extend-shallow": "3.0.2",
- "safe-regex": "1.1.0"
- }
- },
- "repeat-element": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
- "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
- },
- "request": {
- "version": "2.85.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
- "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
- "requires": {
- "aws-sign2": "0.7.0",
- "aws4": "1.6.0",
- "caseless": "0.12.0",
- "combined-stream": "1.0.6",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.3.2",
- "har-validator": "5.0.3",
- "hawk": "6.0.2",
- "http-signature": "1.2.0",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.18",
- "oauth-sign": "0.8.2",
- "performance-now": "2.1.0",
- "qs": "6.5.1",
- "safe-buffer": "5.1.1",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.4",
- "tunnel-agent": "0.6.0",
- "uuid": "3.2.1"
- }
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
- },
- "retry-axios": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz",
- "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ=="
- },
- "retry-request": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.1.tgz",
- "integrity": "sha512-PjAmtWIxjNj4Co/6FRtBl8afRP3CxrrIAnUzb1dzydfROd+6xt7xAebFeskgQgkfFf8NmzrXIoaB3HxmswXyxw==",
- "requires": {
- "request": "2.85.0",
- "through2": "2.0.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "requires": {
- "ret": "0.1.15"
- }
- },
- "send": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
- "requires": {
- "debug": "2.6.9",
- "depd": "1.1.2",
- "destroy": "1.0.4",
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "etag": "1.8.1",
- "fresh": "0.5.2",
- "http-errors": "1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "2.3.0",
- "range-parser": "1.2.0",
- "statuses": "1.4.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
- }
- }
- },
- "serve-static": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
- "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
- "requires": {
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "parseurl": "1.3.2",
- "send": "0.16.2"
- }
- },
- "set-value": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
- "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
- "requires": {
- "extend-shallow": "2.0.1",
- "is-extendable": "0.1.1",
- "is-plain-object": "2.0.4",
- "split-string": "3.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "0.1.1"
- }
- }
- }
- },
- "setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
- "sha1": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
- "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=",
- "requires": {
- "charenc": "0.0.2",
- "crypt": "0.0.2"
- }
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
- },
- "slash": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
- "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
- },
- "snakeize": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz",
- "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0="
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "requires": {
- "base": "0.11.2",
- "debug": "2.6.9",
- "define-property": "0.2.5",
- "extend-shallow": "2.0.1",
- "map-cache": "0.2.2",
- "source-map": "0.5.7",
- "source-map-resolve": "0.5.1",
- "use": "3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "0.1.6"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "0.1.1"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "0.1.6",
- "is-data-descriptor": "0.1.4",
- "kind-of": "5.1.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "requires": {
- "define-property": "1.0.0",
- "isobject": "3.0.1",
- "snapdragon-util": "3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "1.0.2"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "sntp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
- "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
- "requires": {
- "hoek": "4.2.1"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "source-map-resolve": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz",
- "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==",
- "requires": {
- "atob": "2.0.3",
- "decode-uri-component": "0.2.0",
- "resolve-url": "0.2.1",
- "source-map-url": "0.4.0",
- "urix": "0.1.0"
- }
- },
- "source-map-url": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
- },
- "split-array-stream": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz",
- "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=",
- "requires": {
- "async": "2.6.0",
- "is-stream-ended": "0.1.3"
- }
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "requires": {
- "extend-shallow": "3.0.2"
- }
- },
- "sshpk": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
- "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
- "requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "requires": {
- "define-property": "0.2.5",
- "object-copy": "0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "0.1.6"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "0.1.6",
- "is-data-descriptor": "0.1.4",
- "kind-of": "5.1.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
- },
- "stream-events": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.2.tgz",
- "integrity": "sha1-q/OfZsCJCk63lbyNXoWbJhW1kLI=",
- "requires": {
- "stubs": "3.0.0"
- }
- },
- "stream-shift": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
- "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
- },
- "string-format-obj": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.1.tgz",
- "integrity": "sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q=="
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- },
- "string_decoder": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "stringifier": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz",
- "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=",
- "requires": {
- "core-js": "2.5.3",
- "traverse": "0.6.6",
- "type-name": "2.0.2"
- }
- },
- "stringstream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
- "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "stubs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
- "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls="
- },
- "through2": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
- "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
- "requires": {
- "readable-stream": "2.3.5",
- "xtend": "4.0.1"
- }
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "requires": {
- "define-property": "2.0.2",
- "extend-shallow": "3.0.2",
- "regex-not": "1.0.2",
- "safe-regex": "1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "requires": {
- "is-number": "3.0.0",
- "repeat-string": "1.6.1"
- }
- },
- "topo": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
- "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=",
- "requires": {
- "hoek": "2.16.3"
- },
- "dependencies": {
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
- }
- }
- },
- "tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
- "requires": {
- "punycode": "1.4.1"
- }
- },
- "traverse": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
- "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
- },
- "tslib": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
- "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "optional": true
- },
- "type-is": {
- "version": "1.6.16",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
- "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "2.1.18"
- }
- },
- "type-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz",
- "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q="
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
- },
- "union-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
- "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
- "requires": {
- "arr-union": "3.1.0",
- "get-value": "2.0.6",
- "is-extendable": "0.1.1",
- "set-value": "0.4.3"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "0.1.1"
- }
- },
- "set-value": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
- "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
- "requires": {
- "extend-shallow": "2.0.1",
- "is-extendable": "0.1.1",
- "is-plain-object": "2.0.4",
- "to-object-path": "0.3.0"
- }
- }
- }
- },
- "unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "requires": {
- "crypto-random-string": "1.0.0"
- }
- },
- "universal-deep-strict-equal": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz",
- "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=",
- "requires": {
- "array-filter": "1.0.0",
- "indexof": "0.0.1",
- "object-keys": "1.0.11"
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "requires": {
- "has-value": "0.3.1",
- "isobject": "3.0.1"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "requires": {
- "get-value": "2.0.6",
- "has-values": "0.1.4",
- "isobject": "2.1.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
- }
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
- },
- "use": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
- "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
- "requires": {
- "kind-of": "6.0.2"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
- },
- "uuid": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
- "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
- }
- },
- "websocket-driver": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
- "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
- "requires": {
- "http-parser-js": "0.4.11",
- "websocket-extensions": "0.1.3"
- }
- },
- "websocket-extensions": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
- "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
- },
- "window-size": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
- "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "write-file-atomic": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
- "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
- "requires": {
- "graceful-fs": "4.1.11",
- "imurmurhash": "0.1.4",
- "signal-exit": "3.0.2"
- }
- },
- "xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ="
- },
- "xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
- },
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
- },
- "yargs": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
- "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
- "requires": {
- "camelcase": "2.1.1",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "os-locale": "1.4.0",
- "string-width": "1.0.2",
- "window-size": "0.1.4",
- "y18n": "3.2.1"
- }
- }
- }
-}
diff --git a/scripts/build_scripts/android/install_prereqs.sh b/scripts/build_scripts/android/install_prereqs.sh
deleted file mode 100755
index f5d6efe9..00000000
--- a/scripts/build_scripts/android/install_prereqs.sh
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/bash -e
-
-# Copyright 2022 Google LLC
-
-if [[ $(uname) == "Darwin" ]]; then
- platform=darwin
- if [[ ! -z "${GHA_INSTALL_CCACHE}" ]]; then
- brew install ccache
- echo "CCACHE_INSTALLED=1" >> $GITHUB_ENV
- fi
-elif [[ $(uname) == "Linux" ]]; then
- platform=linux
- if [[ ! -z "${GHA_INSTALL_CCACHE}" ]]; then
- sudo apt install ccache
- echo "CCACHE_INSTALLED=1" >> $GITHUB_ENV
- fi
-else
- platform=windows
-fi
-
-if [[ -z $(which cmake) ]]; then
- echo "Error, cmake is not installed or is not in the PATH."
- exit 1
-fi
-
-if [[ -z $(which python) ]]; then
- echo "Error, python is not installed or is not in the PATH."
- exit 1
-else
- updated_pip=0
- if ! $(echo "import absl"$'\n' | python - 2> /dev/null); then
- echo "Installing python packages."
- set -x
- # On Windows bash shell, sudo doesn't exist
- if [[ $(uname) == "Linux" ]] || [[ $(uname) == "Darwin" ]]; then
- sudo python -m pip install --upgrade pip
- else
- python -m pip install --upgrade pip
- fi
- pip install absl-py
- set +x
- fi
-fi
-
-if [[ -z "${ANDROID_HOME}" ]]; then
- echo "Error, ANDROID_HOME environment variable is not set."
- exit 1
-fi
-
-if [[ -z "${NDK_ROOT}" || -z $(grep "Pkg\.Revision = 21\." "${NDK_ROOT}/source.properties") ]]; then
- if [[ -d /tmp/android-ndk-r21e && \
- -n $(grep "Pkg\.Revision = 21\." "/tmp/android-ndk-r21e/source.properties") ]]; then
- echo "Using NDK r21e in /tmp/android-ndk-r21e".
- else
- echo "NDK_ROOT environment variable is not set, or NDK version is incorrect."
- echo "This build recommends NDK r21e, downloading..."
- if [[ -z $(which curl) ]]; then
- echo "Error, could not run 'curl' to download NDK. Is it in your PATH?"
- exit 1
- fi
- set +e
- # Retry up to 10 times because Curl has a tendency to timeout on
- # Github runners.
- for retry in {1..10} error; do
- if [[ $retry == "error" ]]; then exit 5; fi
- curl --http1.1 -LSs \
- "https://dl.google.com/android/repository/android-ndk-r21e-${platform}-x86_64.zip" \
- --output /tmp/android-ndk-r21e.zip && break
- sleep 300
- done
- set -e
- (cd /tmp && unzip -oq android-ndk-r21e.zip && rm -f android-ndk-r21e.zip)
- echo "NDK r21e has been downloaded into /tmp/android-ndk-r21e"
- fi
-fi
diff --git a/scripts/build_scripts/build_testapps.json b/scripts/build_scripts/build_testapps.json
deleted file mode 100644
index 5b5ef2d1..00000000
--- a/scripts/build_scripts/build_testapps.json
+++ /dev/null
@@ -1,170 +0,0 @@
-{
- "apis": [
- {
- "name": "analytics",
- "full_name": "FirebaseAnalytics",
- "bundle_id": "com.google.ios.analytics.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "analytics/testapp",
- "frameworks": [
- "firebase_analytics.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Google_Development.mobileprovision"
- },
- {
- "name": "auth",
- "full_name": "FirebaseAuth",
- "bundle_id": "com.google.FirebaseCppAuthTestApp.dev",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "auth/testapp",
- "frameworks": [
- "firebase_auth.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Firebase_Cpp_Auth_Test_App_Dev.mobileprovision"
- },
- {
- "name": "database",
- "full_name": "FirebaseDatabase",
- "bundle_id": "com.google.firebase.cpp.database.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "database/testapp",
- "frameworks": [
- "firebase_auth.xcframework",
- "firebase_database.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Firebase_Dev_Wildcard.mobileprovision"
- },
- {
- "name": "dynamic_links",
- "full_name": "FirebaseDynamicLinks",
- "bundle_id": "com.google.FirebaseCppDynamicLinksTestApp.dev",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "dynamic_links/testapp",
- "frameworks": [
- "firebase_dynamic_links.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Firebase_Cpp_Dynamic_Links_Test_App_Dev.mobileprovision"
- },
- {
- "name": "functions",
- "full_name": "FirebaseFunctions",
- "bundle_id": "com.google.firebase.cpp.functions.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "functions/testapp",
- "frameworks": [
- "firebase_auth.xcframework",
- "firebase_functions.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Firebase_Dev_Wildcard.mobileprovision"
- },
- {
- "name": "gma",
- "full_name": "FirebaseGma",
- "bundle_id": "com.google.ios.admob.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "gma/testapp",
- "frameworks": [
- "firebase_gma.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Google_Development.mobileprovision"
- },
- {
- "name": "messaging",
- "full_name": "FirebaseMessaging",
- "bundle_id": "com.google.FirebaseCppMessagingTestApp.dev",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "messaging/testapp",
- "frameworks": [
- "firebase_messaging.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Firebase_Cpp_Messaging_Test_App_Dev.mobileprovision"
- },
- {
- "name": "remote_config",
- "full_name": "FirebaseRemoteConfig",
- "bundle_id": "com.google.ios.remoteconfig.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "remote_config/testapp",
- "frameworks": [
- "firebase_remote_config.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Google_Development.mobileprovision"
- },
- {
- "name": "storage",
- "full_name": "FirebaseStorage",
- "bundle_id": "com.google.firebase.cpp.storage.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "storage/testapp",
- "frameworks": [
- "firebase_storage.xcframework",
- "firebase_auth.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Firebase_Dev_Wildcard.mobileprovision"
- },
- {
- "name": "firestore",
- "full_name": "FirebaseFirestore",
- "bundle_id": "com.google.firebase.cpp.firestore.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "firestore/testapp",
- "frameworks": [
- "firebase_firestore.xcframework",
- "firebase_auth.xcframework",
- "firebase.xcframework"
- ],
- "provision": "Firebase_Dev_Wildcard.mobileprovision",
- "minify": "proguard"
- }
- ],
- "apple_team_id": "REPLACE_ME_TEMP_INVALID_ID",
- "compiler_dict": {
- "gcc-4.8": [
- "-DCMAKE_C_COMPILER=gcc-4.8",
- "-DCMAKE_CXX_COMPILER=g++-4.8"
- ],
- "gcc-7": [
- "-DCMAKE_C_COMPILER=gcc-7",
- "-DCMAKE_CXX_COMPILER=g++-7"
- ],
- "gcc-9": [
- "-DCMAKE_C_COMPILER=gcc-9",
- "-DCMAKE_CXX_COMPILER=g++-9"
- ],
- "clang-5.0": [
- "-DCMAKE_C_COMPILER=clang-5.0",
- "-DCMAKE_CXX_COMPILER=clang++-5.0"
- ],
- "VisualStudio2015": [
- "-G",
- "Visual Studio 14 2015 Win64"
- ],
- "VisualStudio2017": [
- "-G",
- "Visual Studio 15 2017 Win64"
- ],
- "VisualStudio2019": [
- "-G",
- "Visual Studio 16 2019"
- ]
- }
- }
diff --git a/scripts/build_scripts/build_testapps.py b/scripts/build_scripts/build_testapps.py
deleted file mode 100644
index 3caf85f0..00000000
--- a/scripts/build_scripts/build_testapps.py
+++ /dev/null
@@ -1,718 +0,0 @@
-# Copyright 2022 Google LLC
-#
-# 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.
-
-r"""Build automation tool for Firebase C++ testapps for desktop and mobile.
-
-USAGE:
-
-This tool has a number of dependencies (listed below). Once those are taken
-care of, here is an example of an execution of the tool (on MacOS):
-
-python build_testapps.py --t auth,messaging --p iOS --s /tmp/firebase-cpp-sdk
-
-Critical flags:
---t (full name: testapps, default: None)
---p (full name: platforms, default: None)
---s (full name: packaged_sdk, default: None)
-
-By default, this tool will build integration tests from source, which involves
-
-Under most circumstances the other flags don't need to be set, but can be
-seen by running --help. Note that all path flags will forcefully expand
-the user ~.
-
-
-DEPENDENCIES:
-
-----Firebase Repo----
-The Firebase C++ Quickstart repo must be locally present.
-Path specified by the flag:
-
- --repo_dir (default: current working directory)
-
-----Python Dependencies----
-The requirements.txt file has the required dependencies for this Python tool.
-
- pip install -r requirements.txt
-
-----CMake (Desktop only)----
-CMake must be installed and on the system path.
-
-----Environment Variables (Android only)----
-If building for Android, gradle requires several environment variables.
-The following lists expected variables, and examples of what
-a configured value may look like on MacOS:
-
- JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-8-latest/Contents/Home
- ANDROID_HOME=/Users/user_name/Library/Android/sdk
- ANDROID_SDK_HOME=/Users/user_name/Library/Android/sdk
- ANDROID_NDK_HOME=/Users/user_name/Library/Android/sdk/ndk-bundle
-
-Or on Linux:
- JAVA_HOME=/usr/local/buildtools/java/jdk/
- ANDROID_HOME=~/Android/Sdk
- ANDROID_SDK_HOME=~/Android/Sdk
- ANDROID_NDK_HOME=~/Android/Sdk/ndk
-
-If using this tool frequently, you will likely find it convenient to
-modify your bashrc file to automatically set these variables.
-
-"""
-
-import attr
-import datetime
-import json
-import os
-import platform
-import shutil
-import stat
-import subprocess
-import sys
-import tempfile
-
-from absl import app
-from absl import flags
-from absl import logging
-from distutils import dir_util
-
-import utils
-import config_reader
-import xcodebuild
-
-# Environment variables
-_JAVA_HOME = "JAVA_HOME"
-_ANDROID_HOME = "ANDROID_HOME"
-_ANDROID_SDK_HOME = "ANDROID_SDK_HOME"
-_NDK_ROOT = "NDK_ROOT"
-_ANDROID_NDK_HOME = "ANDROID_NDK_HOME"
-
-# Platforms
-_ANDROID = "Android"
-_IOS = "iOS"
-_TVOS = "tvOS"
-_DESKTOP = "Desktop"
-_SUPPORTED_PLATFORMS = (_ANDROID, _IOS, _TVOS, _DESKTOP)
-
-# Architecture
-_SUPPORTED_ARCHITECTURES = ("x64", "x86", "arm64")
-
-# Values for iOS SDK flag (where the iOS app will run)
-_APPLE_SDK_DEVICE = "real"
-_APPLE_SDK_SIMULATOR = "virtual"
-_SUPPORTED_APPLE_SDK = (_APPLE_SDK_DEVICE, _APPLE_SDK_SIMULATOR)
-
-_DEFAULT_RUN_TIMEOUT_SECONDS = 4800 # 1 hour 20 min
-
-FLAGS = flags.FLAGS
-
-flags.DEFINE_string(
- "packaged_sdk", None, "Firebase SDK directory.")
-
-flags.DEFINE_string(
- "output_directory", "~",
- "Build output will be placed in this directory.")
-
-flags.DEFINE_string(
- "artifact_name", "local-build",
- "artifacts will be created and placed in output_directory."
- " testapps artifact is testapps-$artifact_name;"
- " build log artifact is build-results-$artifact_name.log.")
-
-flags.DEFINE_string(
- "repo_dir", os.getcwd(),
- "Firebase C++ Quickstart Git repository. Current directory by default.")
-
-flags.DEFINE_list(
- "testapps", None, "Which testapps (Firebase APIs) to build, e.g."
- " 'analytics,auth'.",
- short_name="t")
-
-flags.DEFINE_list(
- "platforms", None, "Which platforms to build. Can be Android, iOS and/or"
- " Desktop", short_name="p")
-
-flags.DEFINE_bool(
- "add_timestamp", True,
- "Add a timestamp to the output directory for disambiguation."
- " Recommended when running locally, so each execution gets its own "
- " directory.")
-
-flags.DEFINE_list(
- "ios_sdk", _APPLE_SDK_DEVICE,
- "(iOS only) Build for real device (.ipa), virtual device / simulator (.app), "
- "or both. Building for both will produce both an .app and an .ipa.")
-
-flags.DEFINE_list(
- "tvos_sdk", _APPLE_SDK_SIMULATOR,
- "(tvOS only) Build for real device (.ipa), virtual device / simulator (.app), "
- "or both. Building for both will produce both an .app and an .ipa.")
-
-flags.DEFINE_bool(
- "update_pod_repo", True,
- "(iOS/tvOS only) Will run 'pod repo update' before building for iOS/tvOS to update"
- " the local spec repos available on this machine. Must also include iOS/tvOS"
- " in platforms flag.")
-
-flags.DEFINE_string(
- "compiler", None,
- "(Desktop only) Specify the compiler with CMake during the testapps build."
- " Check the config file to see valid choices for this flag."
- " If none, will invoke cmake without specifying a compiler.")
-
-flags.DEFINE_string(
- "arch", "x64",
- "(Desktop only) Which architecture to build: x64 (all), x86 (Windows/Linux), "
- "or arm64 (Mac only).")
-
-# Get the number of CPUs for the default value of FLAGS.jobs
-CPU_COUNT = os.cpu_count();
-# If CPU count couldn't be determined, default to 2.
-DEFAULT_CPU_COUNT = 2
-if CPU_COUNT is None: CPU_COUNT = DEFAULT_CPU_COUNT
-# Cap at 4 CPUs.
-MAX_CPU_COUNT = 4
-if CPU_COUNT > MAX_CPU_COUNT: CPU_COUNT = MAX_CPU_COUNT
-
-flags.DEFINE_integer(
- "jobs", CPU_COUNT,
- "(Desktop only) If > 0, pass in -j to make CMake parallelize the"
- " build. Defaults to the system's CPU count (max %s)." % MAX_CPU_COUNT)
-
-flags.DEFINE_multi_string(
- "cmake_flag", None,
- "Pass an additional flag to the CMake configure step."
- " This option can be specified multiple times.")
-
-flags.register_validator(
- "platforms",
- lambda p: all(platform in _SUPPORTED_PLATFORMS for platform in p),
- message="Valid platforms: " + ",".join(_SUPPORTED_PLATFORMS),
- flag_values=FLAGS)
-
-flags.register_validator(
- "ios_sdk",
- lambda s: all(ios_sdk in _SUPPORTED_APPLE_SDK for ios_sdk in s),
- message="Valid platforms: " + ",".join(_SUPPORTED_APPLE_SDK),
- flag_values=FLAGS)
-
-flags.register_validator(
- "tvos_sdk",
- lambda s: all(tvos_sdk in _SUPPORTED_APPLE_SDK for tvos_sdk in s),
- message="Valid platforms: " + ",".join(_SUPPORTED_APPLE_SDK),
- flag_values=FLAGS)
-
-flags.DEFINE_bool(
- "short_output_paths", False,
- "Use short directory names for output paths. Useful to avoid hitting file "
- "path limits on Windows.")
-
-flags.DEFINE_bool(
- "gha_build", False,
- "Set to true if this is a GitHub Actions build.")
-
-def main(argv):
- if len(argv) > 1:
- raise app.UsageError("Too many command-line arguments.")
-
- platforms = FLAGS.platforms
- testapps = FLAGS.testapps
-
- sdk_dir = _fix_path(FLAGS.packaged_sdk)
- root_output_dir = _fix_path(FLAGS.output_directory)
- repo_dir = _fix_path(FLAGS.repo_dir)
-
- update_pod_repo = FLAGS.update_pod_repo
- if FLAGS.add_timestamp:
- timestamp = datetime.datetime.now().strftime("%Y_%m_%d-%H_%M_%S")
- else:
- timestamp = ""
-
- if FLAGS.short_output_paths:
- output_dir = os.path.join(root_output_dir, "ta")
- else:
- output_dir = os.path.join(root_output_dir, "testapps" + timestamp)
-
- config = config_reader.read_config()
-
- xcframework_dir = os.path.join(sdk_dir, "xcframeworks")
- xcframework_exist = os.path.isdir(xcframework_dir)
- if not xcframework_exist:
- if _IOS in platforms:
- _build_xcframework_from_repo(repo_dir, "ios", testapps, config)
- if _TVOS in platforms:
- _build_xcframework_from_repo(repo_dir, "tvos", testapps, config)
-
- if update_pod_repo and (_IOS in platforms or _TVOS in platforms):
- _run(["pod", "repo", "update"])
-
- cmake_flags = _get_desktop_compiler_flags(FLAGS.compiler, config.compilers)
-
- if (_DESKTOP in platforms and utils.is_linux_os() and FLAGS.arch == "x86"):
- # Write out a temporary toolchain file to force 32-bit Linux builds, as
- # the SDK-included toolchain file may not be present when building against
- # the packaged SDK.
- temp_toolchain_file = tempfile.NamedTemporaryFile("w+", suffix=".cmake")
- temp_toolchain_file.writelines([
- 'set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")\n',
- 'set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")\n',
- 'set(CMAKE_LIBRARY_PATH "/usr/lib/i386-linux-gnu")\n',
- 'set(INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES} "/usr/include/i386-linux-gnu")\n'])
- temp_toolchain_file.flush()
- # Leave the file open, as it will be deleted on close, i.e. when this script exits.
- # (On Linux, the file can be opened a second time by cmake while still open by
- # this script)
- cmake_flags.extend(["-DCMAKE_TOOLCHAIN_FILE=%s" % temp_toolchain_file.name])
-
- if FLAGS.cmake_flag:
- cmake_flags.extend(FLAGS.cmake_flag)
-
- failures = []
- for testapp in testapps:
- api_config = config.get_api(testapp)
- testapp_dirs = [api_config.testapp_path]
- for testapp_dir in testapp_dirs:
- logging.info("BEGIN building for %s: %s", testapp, testapp_dir)
- failures += _build(
- testapp=testapp,
- platforms=platforms,
- api_config=config.get_api(testapp),
- testapp_dir=testapp_dir,
- output_dir=output_dir,
- sdk_dir=sdk_dir,
- xcframework_exist=xcframework_exist,
- repo_dir=repo_dir,
- ios_sdk=FLAGS.ios_sdk,
- tvos_sdk=FLAGS.tvos_sdk,
- cmake_flags=cmake_flags,
- short_output_paths=FLAGS.short_output_paths)
- logging.info("END building for %s", testapp)
-
- _collect_integration_tests(testapps, root_output_dir, output_dir, FLAGS.artifact_name)
-
- _summarize_results(testapps, platforms, failures, root_output_dir, FLAGS.artifact_name)
- return 1 if failures else 0
-
-
-def _build(
- testapp, platforms, api_config, testapp_dir, output_dir, sdk_dir, xcframework_exist,
- repo_dir, ios_sdk, tvos_sdk, cmake_flags, short_output_paths):
- """Builds one testapp on each of the specified platforms."""
- os.chdir(repo_dir)
- project_dir = os.path.join(output_dir, api_config.name)
- if short_output_paths:
- # Combining the first letter of every part separated by underscore for
- # testapp paths. This is a trick to reduce file path length as we were
- # exceeding the limit on Windows.
- testapp_dir_parts = os.path.basename(testapp_dir).split('_')
- output_testapp_dir = ''.join([x[0] for x in testapp_dir_parts])
- else:
- output_testapp_dir = os.path.basename(testapp_dir)
-
- project_dir = os.path.join(project_dir, output_testapp_dir)
-
- logging.info("Copying testapp project to %s", project_dir)
- os.makedirs(project_dir)
- dir_util.copy_tree(testapp_dir, project_dir)
-
- logging.info("Changing directory to %s", project_dir)
- os.chdir(project_dir)
-
- # TODO(DDB): remove
- # _run_setup_script(repo_dir, project_dir)
-
- failures = []
-
- if _DESKTOP in platforms:
- logging.info("BEGIN %s, %s", testapp, _DESKTOP)
- try:
- _build_desktop(sdk_dir, cmake_flags)
- except subprocess.SubprocessError as e:
- failures.append(
- Failure(testapp=testapp, platform=_DESKTOP, error_message=str(e)))
- _rm_dir_safe(os.path.join(project_dir, "bin"))
- logging.info("END %s, %s", testapp, _DESKTOP)
-
- if _ANDROID in platforms:
- logging.info("BEGIN %s, %s", testapp, _ANDROID)
- try:
- _validate_android_environment_variables()
- _build_android(project_dir, sdk_dir)
- except subprocess.SubprocessError as e:
- failures.append(
- Failure(testapp=testapp, platform=_ANDROID, error_message=str(e)))
- _rm_dir_safe(os.path.join(project_dir, "build", "intermediates"))
- _rm_dir_safe(os.path.join(project_dir, ".externalNativeBuild"))
- logging.info("END %s, %s", testapp, _ANDROID)
-
- if _IOS in platforms:
- logging.info("BEGIN %s, %s", testapp, _IOS)
- try:
- _build_apple(
- sdk_dir=sdk_dir,
- xcframework_exist=xcframework_exist,
- project_dir=project_dir,
- repo_dir=repo_dir,
- api_config=api_config,
- target=api_config.ios_target,
- scheme=api_config.ios_scheme,
- apple_platfrom=_IOS,
- apple_sdk=ios_sdk)
-
- except subprocess.SubprocessError as e:
- failures.append(
- Failure(testapp=testapp, platform=_IOS, error_message=str(e)))
- logging.info("END %s, %s", testapp, _IOS)
-
- if _TVOS in platforms and api_config.tvos_target:
- logging.info("BEGIN %s, %s", testapp, _TVOS)
- try:
- _build_apple(
- sdk_dir=sdk_dir,
- xcframework_exist=xcframework_exist,
- project_dir=project_dir,
- repo_dir=repo_dir,
- api_config=api_config,
- target=api_config.tvos_target,
- scheme=api_config.tvos_scheme,
- apple_platfrom=_TVOS,
- apple_sdk=tvos_sdk)
- except subprocess.SubprocessError as e:
- failures.append(
- Failure(testapp=testapp, platform=_TVOS, error_message=str(e)))
- logging.info("END %s, %s", testapp, _TVOS)
-
- return failures
-
-
-def _collect_integration_tests(testapps, root_output_dir, output_dir, artifact_name):
- testapps_artifact_dir = "testapps-" + artifact_name
- android_testapp_extension = ".apk"
- ios_testapp_extension = ".ipa"
- ios_simualtor_testapp_extension = ".app"
- desktop_testapp_name = "testapp"
- if platform.system() == "Windows":
- desktop_testapp_name += ".exe"
-
- testapp_paths = []
- testapp_google_services = {}
- for file_dir, directories, file_names in os.walk(output_dir):
- for directory in directories:
- if directory.endswith(ios_simualtor_testapp_extension):
- testapp_paths.append(os.path.join(file_dir, directory))
- for file_name in file_names:
- if ((file_name == desktop_testapp_name and "ios_build" not in file_dir)
- or file_name.endswith(android_testapp_extension)
- or file_name.endswith(ios_testapp_extension)):
- testapp_paths.append(os.path.join(file_dir, file_name))
- if (file_name == "google-services.json"):
- testapp_google_services[file_dir.split(os.path.sep)[-2]] = os.path.join(file_dir, file_name)
-
- artifact_path = os.path.join(root_output_dir, testapps_artifact_dir)
- _rm_dir_safe(artifact_path)
- for testapp in testapps:
- os.makedirs(os.path.join(artifact_path, testapp))
- for path in testapp_paths:
- for testapp in testapps:
- if testapp in path:
- if os.path.isfile(path):
- shutil.copy(path, os.path.join(artifact_path, testapp))
- if path.endswith(desktop_testapp_name) and testapp_google_services.get(testapp):
- shutil.copy(testapp_google_services[testapp], os.path.join(artifact_path, testapp))
- else:
- dir_util.copy_tree(path, os.path.join(artifact_path, testapp, os.path.basename(path)))
- break
-
-
-def _write_summary(testapp_dir, summary, file_name="summary.log"):
- with open(os.path.join(testapp_dir, file_name), "a") as f:
- timestamp = datetime.datetime.now().strftime("%Y_%m_%d-%H_%M_%S")
- f.write("\n%s\n%s\n" % (timestamp, summary))
-
-
-def _summarize_results(testapps, platforms, failures, root_output_dir, artifact_name):
- """Logs a readable summary of the results of the build."""
- file_name = "build-results-" + artifact_name + ".log"
-
- summary = []
- summary.append("BUILD SUMMARY:")
- summary.append("TRIED TO BUILD: " + ",".join(testapps))
- summary.append("ON PLATFORMS: " + ",".join(platforms))
-
- if not failures:
- summary.append("ALL BUILDS SUCCEEDED")
- else:
- summary.append("SOME ERRORS OCCURRED:")
- for i, failure in enumerate(failures, start=1):
- summary.append("%d: %s" % (i, failure.describe()))
- summary = "\n".join(summary)
-
- logging.info(summary)
- _write_summary(root_output_dir, summary, file_name=file_name)
-
- summary_json = {}
- summary_json["type"] = "build"
- summary_json["testapps"] = testapps
- summary_json["errors"] = {failure.testapp:failure.error_message for failure in failures}
- with open(os.path.join(root_output_dir, file_name+".json"), "a") as f:
- f.write(json.dumps(summary_json, indent=2))
-
-
-def _build_desktop(sdk_dir, cmake_flags):
- cmake_configure_cmd = ["cmake", ".", "-DCMAKE_BUILD_TYPE=Debug",
- "-DFIREBASE_CPP_SDK_DIR=" + sdk_dir]
- if utils.is_windows_os():
- cmake_configure_cmd += ["-A",
- "Win32" if FLAGS.arch == "x86" else FLAGS.arch]
- elif utils.is_mac_os():
- # Ensure that correct Mac architecture is built.
- cmake_configure_cmd += ["-DCMAKE_OSX_ARCHITECTURES=%s" %
- ("arm64" if FLAGS.arch == "arm64" else "x86_64")]
-
- _run(cmake_configure_cmd + cmake_flags)
- _run(["cmake", "--build", ".", "--config", "Debug"] +
- ["-j", str(FLAGS.jobs)] if FLAGS.jobs > 0 else [])
-
-
-def _get_desktop_compiler_flags(compiler, compiler_table):
- """Returns the command line flags for this compiler."""
- if not compiler: # None is an acceptable default value
- return []
- try:
- return compiler_table[compiler]
- except KeyError:
- valid_keys = ", ".join(compiler_table.keys())
- raise ValueError(
- "Given compiler: %s. Valid compilers: %s" % (compiler, valid_keys))
-
-
-def _build_android(project_dir, sdk_dir):
- """Builds an Android binary (apk)."""
- if platform.system() == "Windows":
- gradlew = "gradlew.bat"
- sdk_dir = sdk_dir.replace("\\", "/") # Gradle misinterprets backslashes.
- else:
- gradlew = "./gradlew"
- logging.info("Patching gradle properties with path to SDK")
- gradle_properties = os.path.join(project_dir, "gradle.properties")
- with open(gradle_properties, "a+") as f:
- f.write("systemProp.firebase_cpp_sdk.dir=" + sdk_dir + "\n")
- f.write("http.keepAlive=false\n")
- f.write("maven.wagon.http.pool=false\n")
- f.write("maven.wagon.httpconnectionManager.ttlSeconds=120")
- # This will log the versions of dependencies for debugging purposes.
- _run([gradlew, "dependencies", "--configuration", "debugCompileClasspath",])
- _run([gradlew, "assembleDebug", "--stacktrace"])
-
-
-def _validate_android_environment_variables():
- """Checks environment variables that may be required for Android."""
- # Ultimately we let the gradle build be the source of truth on what env vars
- # are required, but try to repair holes and log warnings if we can't.
- android_home = os.environ.get(_ANDROID_HOME)
- if not os.environ.get(_JAVA_HOME):
- logging.warning("%s not set", _JAVA_HOME)
- if not os.environ.get(_ANDROID_SDK_HOME):
- if android_home: # Use ANDROID_HOME as backup for ANDROID_SDK_HOME
- os.environ[_ANDROID_SDK_HOME] = android_home
- logging.info("%s not found, using %s", _ANDROID_SDK_HOME, _ANDROID_HOME)
- else:
- logging.warning("Missing: %s and %s", _ANDROID_SDK_HOME, _ANDROID_HOME)
- # Different environments may have different NDK env vars specified. We look
- # for these, in this order, and set the others to the first found.
- # If none are set, we check the default location for the ndk.
- ndk_path = None
- ndk_vars = [_NDK_ROOT, _ANDROID_NDK_HOME]
- for env_var in ndk_vars:
- val = os.environ.get(env_var)
- if val:
- ndk_path = val
- break
- if not ndk_path:
- if android_home:
- default_ndk_path = os.path.join(android_home, "ndk-bundle")
- if os.path.isdir(default_ndk_path):
- ndk_path = default_ndk_path
- if ndk_path:
- logging.info("Found ndk: %s", ndk_path)
- for env_var in ndk_vars:
- if os.environ.get(env_var) != ndk_path:
- logging.info("Setting %s to %s", env_var, ndk_path)
- os.environ[env_var] = ndk_path
- else:
- logging.warning("No NDK env var set. Set one of %s", ", ".join(ndk_vars))
-
-# build required ios xcframeworks based on makefiles
-# the xcframeworks locates at repo_dir/ios_build
-def _build_xcframework_from_repo(repo_dir, apple_platform, testapps, config):
- """Builds xcframework from SDK source."""
- output_path = os.path.join(repo_dir, apple_platform + "_build")
- _rm_dir_safe(output_path)
- xcframework_builder = os.path.join(
- repo_dir, "scripts", "gha", "build_ios_tvos.py")
-
- # build only required targets to save time
- target = set()
- for testapp in testapps:
- api_config = config.get_api(testapp)
- if apple_platform == "ios" or (apple_platform == "tvos" and api_config.tvos_target):
- for framework in api_config.frameworks:
- # firebase_analytics.framework -> firebase_analytics
- target.add(os.path.splitext(framework)[0])
-
- # firebase is not a target in CMake, firebase_app is the target
- # firebase_app will be built by other target as well
- target.remove("firebase")
-
- framework_builder_args = [
- sys.executable, xcframework_builder,
- "-b", output_path,
- "-s", repo_dir,
- "-o", apple_platform,
- "-t"
- ]
- framework_builder_args.extend(target)
- _run(framework_builder_args)
-
-
-def _build_apple(
- sdk_dir, xcframework_exist, project_dir, repo_dir, api_config,
- target, scheme, apple_platfrom, apple_sdk):
- """Builds an iOS application (.app, .ipa or both)."""
- build_dir = apple_platfrom.lower() + "_build"
- if not xcframework_exist:
- sdk_dir = os.path.join(repo_dir, build_dir)
-
- build_dir = os.path.join(project_dir, build_dir)
- os.makedirs(build_dir)
-
- logging.info("Copying XCFrameworks")
- framework_src_dir = os.path.join(sdk_dir, "xcframeworks")
- framework_paths = [] # Paths to the copied frameworks.
- for framework in api_config.frameworks:
- framework_src_path = os.path.join(framework_src_dir, framework)
- framework_dest_path = os.path.join(project_dir, "Frameworks", framework)
- dir_util.copy_tree(framework_src_path, framework_dest_path)
- framework_paths.append(framework_dest_path)
-
- _run(["pod", "install"])
-
- entitlements_path = os.path.join(
- project_dir, api_config.ios_target + ".entitlements")
- xcode_tool_path = os.path.join(
- repo_dir, "scripts", "gha", "integration_testing", "xcode_tool.rb")
- xcode_patcher_args = [
- "ruby", xcode_tool_path,
- "--XCodeCPP.xcodeProjectDir", project_dir,
- "--XCodeCPP.target", target,
- "--XCodeCPP.frameworks", ",".join(framework_paths)
- ]
- # Internal integration tests require the SDK root as an include path.
- if repo_dir and api_config.internal_testapp_path:
- xcode_patcher_args.extend(("--XCodeCPP.include", repo_dir))
- if os.path.isfile(entitlements_path): # Not all testapps require entitlements
- logging.info("Entitlements file detected.")
- xcode_patcher_args.extend(("--XCodeCPP.entitlement", entitlements_path))
- else:
- logging.info("No entitlements found at %s.", entitlements_path)
- _run(xcode_patcher_args)
-
- xcode_path = os.path.join(project_dir, "integration_test.xcworkspace")
- if _APPLE_SDK_SIMULATOR in apple_sdk:
- _run(
- xcodebuild.get_args_for_build(
- path=xcode_path,
- scheme=scheme,
- output_dir=build_dir,
- apple_platfrom=apple_platfrom,
- apple_sdk=_APPLE_SDK_SIMULATOR,
- configuration="Debug"))
-
- if _APPLE_SDK_DEVICE in apple_sdk:
- _run(
- xcodebuild.get_args_for_build(
- path=xcode_path,
- scheme=scheme,
- output_dir=build_dir,
- apple_platfrom=apple_platfrom,
- apple_sdk=_APPLE_SDK_DEVICE,
- configuration="Debug"))
-
- xcodebuild.generate_unsigned_ipa(
- output_dir=build_dir, configuration="Debug")
-
-
-# This should be executed before performing any builds.
-def _run_setup_script(root_dir, testapp_dir):
- """Runs the setup_integration_tests.py script."""
- # This script will download gtest to its own directory.
- # The CMake projects were configured to download gtest, but this was
- # found to be flaky and errors didn't propagate up the build system
- # layers. The workaround is to download gtest with this script and copy it.
- downloader_dir = os.path.join(root_dir, "testing", "test_framework")
- _run([sys.executable, os.path.join(downloader_dir, "download_googletest.py")])
- # Copies shared test framework files into the project, including gtest.
- script_path = os.path.join(root_dir, "setup_integration_tests.py")
- _run([sys.executable, script_path, testapp_dir])
-
-
-def _run(args, timeout=_DEFAULT_RUN_TIMEOUT_SECONDS, capture_output=False, text=None, check=True):
- """Executes a command in a subprocess."""
- logging.info("Running in subprocess: %s", " ".join(args))
- return subprocess.run(
- args=args,
- timeout=timeout,
- capture_output=capture_output,
- text=text,
- check=check)
-
-
-def _handle_readonly_file(func, path, excinfo):
- """Function passed into shutil.rmtree to handle Access Denied error"""
- os.chmod(path, stat.S_IWRITE)
- func(path) # will re-throw if a different error occurrs
-
-
-def _rm_dir_safe(directory_path):
- """Removes directory at given path. No error if dir doesn't exist."""
- logging.info("Deleting %s...", directory_path)
- try:
- shutil.rmtree(directory_path, onerror=_handle_readonly_file)
- except OSError as e:
- # There are two known cases where this can happen:
- # The directory doesn't exist (FileNotFoundError)
- # A file in the directory is open in another process (PermissionError)
- logging.warning("Failed to remove directory:\n%s", e.strerror)
-
-
-def _fix_path(path):
- """Expands ~, normalizes slashes, and converts relative paths to absolute."""
- return os.path.abspath(os.path.expanduser(path))
-
-
-@attr.s(frozen=True, eq=False)
-class Failure(object):
- """Holds context for the failure of a testapp to build/run."""
- testapp = attr.ib()
- platform = attr.ib()
- error_message = attr.ib()
-
- def describe(self):
- return "%s, %s: %s" % (self.testapp, self.platform, self.error_message)
-
-
-if __name__ == "__main__":
- flags.mark_flag_as_required("testapps")
- flags.mark_flag_as_required("platforms")
- flags.mark_flag_as_required("packaged_sdk")
- app.run(main)
diff --git a/scripts/build_scripts/config_reader.py b/scripts/build_scripts/config_reader.py
deleted file mode 100644
index a24f5d7a..00000000
--- a/scripts/build_scripts/config_reader.py
+++ /dev/null
@@ -1,139 +0,0 @@
-# Copyright 2022 Google LLC
-#
-# 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.
-
-"""A utility for working with testapp builder JSON files.
-
-This module handles loading the central configuration file for a testapp
-builder, returning a 'Config' object that exposes all the data.
-
-The motivation for loading the config into a class as opposed to returning
-the loaded JSON directly is to validate the data upfront, to fail fast if
-anything is missing or formatted incorrectly.
-
-Example of such a configuration file:
-
-{
- "apis": [
- {
- "name": "analytics",
- "full_name": "FirebaseAnalytics",
- "bundle_id": "com.google.ios.analytics.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "analytics/testapp",
- "frameworks": [
- "firebase_analytics.framework",
- "firebase.framework"
- ],
- "provision": "Google_Development.mobileprovision"
- },
- {
- "name": "admob",
- "full_name": "FirebaseAdmob",
- "bundle_id": "com.google.ios.admob.testapp",
- "ios_target": "testapp",
- "tvos_target": "",
- "testapp_path": "admob/testapp",
- "frameworks": [
- "firebase_admob.framework",
- "firebase.framework"
- ],
- "provision": "Google_Development.mobileprovision"
- }
- ],
- "dev_team": "ABCDEFGHIJK"
-}
-
-"""
-
-import json
-import os
-import pathlib
-
-import attr
-
-_DEFAULT_CONFIG_NAME = "build_testapps.json"
-
-
-def read_config(path=None):
- """Creates an in-memory 'Config' object out of a testapp config file.
-
- Args:
- path (str): Path to a testapp builder config file. If not specified, will
- look for 'build_testapps.json' in the same directory as this file.
-
- Returns:
- Config: All of the testapp builder's configuration.
-
- """
- if not path:
- directory = pathlib.Path(__file__).parent.absolute()
- path = os.path.join(directory, _DEFAULT_CONFIG_NAME)
- with open(path, "r") as config:
- config = json.load(config)
- api_configs = dict()
- try:
- for api in config["apis"]:
- api_name = api["name"]
- api_configs[api_name] = APIConfig(
- name=api_name,
- full_name=api["full_name"],
- bundle_id=api["bundle_id"],
- ios_target=api["ios_target"],
- tvos_target=api["tvos_target"],
- ios_scheme=api["ios_target"], # Scheme assumed to be same as target.
- tvos_scheme=api["tvos_target"],
- testapp_path=api["testapp_path"],
- internal_testapp_path=api.get("internal_testapp_path", None),
- frameworks=api["frameworks"],
- provision=api["provision"],
- minify=api.get("minify", None))
- return Config(
- apis=api_configs,
- compilers=config["compiler_dict"])
- except (KeyError, TypeError, IndexError):
- # The error will be cryptic on its own, so we dump the JSON to
- # offer context, then reraise the error.
- print(
- "Error occurred while parsing config. Full config dump:\n"
- + json.dumps(config, sort_keys=True, indent=4, separators=(",", ":")))
- raise
-
-
-@attr.s(frozen=True, eq=False)
-class Config(object):
- apis = attr.ib() # Mapping of str: APIConfig
- compilers = attr.ib()
-
- def get_api(self, api):
- """Returns the APIConfig object for the given api, e.g. 'analytics'."""
- return self.apis[api]
-
-
-@attr.s(frozen=True, eq=False)
-class APIConfig(object):
- """Holds all the configuration for a single testapp project."""
- name = attr.ib()
- full_name = attr.ib()
- bundle_id = attr.ib()
- ios_target = attr.ib()
- tvos_target = attr.ib()
- ios_scheme = attr.ib()
- tvos_scheme = attr.ib()
- testapp_path = attr.ib() # testapp dir relative to sdk root
- internal_testapp_path = attr.ib() # Internal testdir dir relative to sdk root
- frameworks = attr.ib() # Required custom xcode frameworks
- provision = attr.ib() # Path to the local mobile provision
- minify = attr.ib() # (Optional) Android minification.
-
diff --git a/scripts/build_scripts/python_requirements.txt b/scripts/build_scripts/python_requirements.txt
deleted file mode 100644
index 214a8aac..00000000
--- a/scripts/build_scripts/python_requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-attrs
-absl-py
diff --git a/scripts/build_scripts/utils.py b/scripts/build_scripts/utils.py
deleted file mode 100644
index 631dc8df..00000000
--- a/scripts/build_scripts/utils.py
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2022 Google
-#
-# 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.
-
-"""
-Helper functions that are shared amongst prereqs and build scripts across various
-platforms.
-"""
-
-import distutils.spawn
-import platform
-import shutil
-import subprocess
-import os
-import urllib.request
-
-def run_command(cmd, capture_output=False, cwd=None, check=False, as_root=False,
- print_cmd=True):
- """Run a command.
-
- Args:
- cmd (list(str)): Command to run as a list object.
- Eg: ['ls', '-l'].
- capture_output (bool): Capture the output of this command.
- Output can be accessed as .stdout
- cwd (str): Directory to execute the command from.
- check (bool): Raises a CalledProcessError if True and the command errored out
- as_root (bool): Run command as root user with admin priveleges (supported on mac and linux).
- print_cmd (bool): Print the command we are running to stdout.
-
- Raises:
- (subprocess.CalledProcessError): If command errored out and `text=True`
-
- Returns:
- (`subprocess.CompletedProcess`): object containing information from
- command execution
- """
-
- if as_root and (is_mac_os() or is_linux_os()):
- cmd.insert(0, 'sudo')
-
- cmd_string = ' '.join(cmd)
- if print_cmd:
- print('Running cmd: {0}\n'.format(cmd_string))
- # If capture_output is requested, we also set text=True to store the returned value of the
- # command as a string instead of bytes object
- return subprocess.run(cmd, capture_output=capture_output, cwd=cwd,
- check=check, text=capture_output)
-
-
-def is_command_installed(tool):
- """Check if a command is installed on the system."""
- return distutils.spawn.find_executable(tool)
-
-
-def delete_directory(dir_path):
- """Recursively delete a valid directory"""
- if os.path.exists(dir_path):
- shutil.rmtree(dir_path)
-
-
-def download_file(url, file_path):
- """Download from url and save to specified file path."""
- with urllib.request.urlopen(url) as response, open(file_path, 'wb') as out_file:
- shutil.copyfileobj(response, out_file)
-
-
-def unpack_files(archive_file_path, output_dir=None):
- """Unpack/extract an archive to specified output_directory"""
- shutil.unpack_archive(archive_file_path, output_dir)
-
-
-def is_windows_os():
- return platform.system() == 'Windows'
-
-
-def is_mac_os():
- return platform.system() == 'Darwin'
-
-
-def is_linux_os():
- return platform.system() == 'Linux'
diff --git a/scripts/build_scripts/xcodebuild.py b/scripts/build_scripts/xcodebuild.py
deleted file mode 100644
index b60c70dc..00000000
--- a/scripts/build_scripts/xcodebuild.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# 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.
-
-"""Helper module for working with xcode projects.
-
-The tool xcodebuild provides support to build xcode projects from the command
-line. The motivation was to simplify usage of xcodebuild, since it was non-trivial
-to figure out which flags were needed to get it working in a CI environment.
-The options required by the methods in this module were found to work both
-locally and on CI, with both the Unity and C++ projects.
-
-get_args_for_build() method doesn't performing operations with xcodebuild directly,
-this module returns arg sequences. These sequences can be passed to e.g.
-subprocess.run to execute the operations.
-
-get_args_for_build() support either device or simulator builds. For simulator
-builds, it suffices to use get_args_for_build() to create a .app that can be
-used with simulators. For unsigned device builds, generate .app via
-get_args_for_build() step and then use generate_unsigned_ipa() to package
-the .app to .ipa.
-
-"""
-
-import os
-import shutil
-
-def get_args_for_build(
- path, scheme, output_dir, apple_platfrom, apple_sdk, configuration):
- """Constructs subprocess args for an unsigned xcode build.
-
- Args:
- path (str): Full path to the project or workspace to build. Must end in
- either .xcodeproj or .xcworkspace.
- scheme (str): Name of the scheme to build.
- output_dir (str): Directory for the resulting build artifacts. Will be
- created if it doesn't already exist.
- apple_platfrom (str): iOS or tvOS.
- apple_sdk (str): Where this build will be run: real device or virtual device (simulator).
- configuration (str): Value for the -configuration flag.
-
- Returns:
- Sequence of strings, corresponding to valid args for a subprocess call.
-
- """
- args = [
- "xcodebuild",
- "-sdk", _get_apple_env_from_target(apple_platfrom, apple_sdk),
- "-scheme", scheme,
- "-configuration", configuration,
- "-quiet",
- "BUILD_DIR=" + output_dir
- ]
-
- if apple_sdk == "real":
- args.extend(['CODE_SIGN_IDENTITY=""',
- "CODE_SIGNING_REQUIRED=NO",
- "CODE_SIGNING_ALLOWED=NO"])
- elif apple_sdk == "virtual" and apple_platfrom == "tvOS":
- args.extend(['-arch', "x86_64"])
-
- if not path:
- raise ValueError("Must supply a path.")
- if path.endswith(".xcworkspace"):
- args.extend(("-workspace", path))
- elif path.endswith(".xcodeproj"):
- args.extend(("-project", path))
- else:
- raise ValueError("Path must end with .xcworkspace or .xcodeproj: %s" % path)
- return args
-
-
-def _get_apple_env_from_target(apple_platfrom, apple_sdk):
- """Return a value for the -sdk flag based on the target (device/simulator)."""
- if apple_platfrom == "iOS":
- if apple_sdk == "real":
- return "iphoneos"
- elif apple_sdk == "virtual":
- return "iphonesimulator"
- else:
- raise ValueError("Unrecognized apple_sdk: %s" % apple_sdk)
- elif apple_platfrom == "tvOS":
- if apple_sdk == "real":
- return "appletvos"
- elif apple_sdk == "virtual":
- return "appletvsimulator"
- else:
- raise ValueError("Unrecognized apple_sdk: %s" % apple_sdk)
- else:
- raise ValueError("Unrecognized apple_sdk: %s" % apple_sdk)
-
-
-def generate_unsigned_ipa(output_dir, configuration):
- """create unsigned .ipa from .app, then remove .app afterwards
-
- Args:
- output_dir (str): Same value as get_args_for_build. generated unsigned .ipa
- will be placed within the subdirectory "Debug-iphoneos" or "Release-iphoneos".
- configuration (str): Same value as get_args_for_build.
- """
- iphone_build_dir = os.path.join(output_dir, configuration + "-iphoneos")
- payload_path = os.path.join(iphone_build_dir, "Payload")
- app_path = os.path.join(iphone_build_dir, "integration_test.app")
- ipa_path = os.path.join(iphone_build_dir, "integration_test.ipa")
- os.mkdir(payload_path)
- shutil.move(app_path, payload_path)
- shutil.make_archive(payload_path, 'zip', root_dir=iphone_build_dir, base_dir='Payload')
- shutil.move('%s.%s'%(payload_path, 'zip'), ipa_path)
- shutil.rmtree(payload_path)
diff --git a/scripts/gha-encrypted/README b/scripts/gha-encrypted/README
deleted file mode 100644
index e73cd287..00000000
--- a/scripts/gha-encrypted/README
+++ /dev/null
@@ -1,3 +0,0 @@
-See https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
-
-Googlers: code search firebase/cpp/Secrets to find the sources.
\ No newline at end of file
diff --git a/scripts/gha-encrypted/analytics/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/analytics/GoogleService-Info.plist.gpg
deleted file mode 100644
index a7fad00c..00000000
Binary files a/scripts/gha-encrypted/analytics/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/analytics/google-services.json.gpg b/scripts/gha-encrypted/analytics/google-services.json.gpg
deleted file mode 100644
index 8e2a09d3..00000000
Binary files a/scripts/gha-encrypted/analytics/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/auth/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/auth/GoogleService-Info.plist.gpg
deleted file mode 100644
index 896aeabf..00000000
--- a/scripts/gha-encrypted/auth/GoogleService-Info.plist.gpg
+++ /dev/null
@@ -1,3 +0,0 @@
-
ᗩ9p0E,uv%|{G+:q{y9Նz J{;.P^]pnę]
-2Oe;0żCf]fۇ*
-"*{t?eigW}2f)1gf69>r(goO0d-z9cK@)Kg~)T'm~H/>X64Oئ{5N-V/sw"Df>%>wNAǽ@\B"\Dp35i` ܨ̺哐ʡvM:K!\ٌ<6XNj|MIv̶R51Bd4 'x(A15JH6{H@/ |IR_M$[i +?s^NTyzc]q.-[Mz
¶O&eSvrlAcR5rK~ΉT
-[AbZgcӴպX5AS|ӧm7l{~*K&) ?8tR狮UL衧q,!7eI}B{iTrHɍ;[EAPV!Dk" 陑dyb"kJՖ
\ No newline at end of file
diff --git a/scripts/gha-encrypted/auth/google-services.json.gpg b/scripts/gha-encrypted/auth/google-services.json.gpg
deleted file mode 100644
index 9f86b0a3..00000000
Binary files a/scripts/gha-encrypted/auth/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/database/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/database/GoogleService-Info.plist.gpg
deleted file mode 100644
index 9d7f62a8..00000000
Binary files a/scripts/gha-encrypted/database/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/database/google-services.json.gpg b/scripts/gha-encrypted/database/google-services.json.gpg
deleted file mode 100644
index a9421faa..00000000
Binary files a/scripts/gha-encrypted/database/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/dynamic_links/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/dynamic_links/GoogleService-Info.plist.gpg
deleted file mode 100644
index 7d577bef..00000000
Binary files a/scripts/gha-encrypted/dynamic_links/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/dynamic_links/google-services.json.gpg b/scripts/gha-encrypted/dynamic_links/google-services.json.gpg
deleted file mode 100644
index 0db36dbf..00000000
--- a/scripts/gha-encrypted/dynamic_links/google-services.json.gpg
+++ /dev/null
@@ -1,3 +0,0 @@
-
3u=ێpAbg3.)
zs/@Zrӓ$i^$1>X3OZh%YM
t?_C:AiclƎ
\m.IMi?9 {S~ZUXt⾘=}ݔV||1M-u_m8cVS]brQ㈃:rE[=ۅ.nj=zU>5h)ZarPr"8qбo>E 3|nF(KUe5(uo?CiN_:X>vJ['g_okL\IZJٕ'@ȲN?
k$-SaCSRqv7
-rlYyRQEx%L蔘%p8ye*/\g oOM'w܊fY
-g"KFra6X18?خIu2Bmx>mZ;V2zy4LuiД;T]̄SIbrZ*R|*'6ȑ~XSMG|!ˇ2֠Butq!3nr@lVu
H&P5KOy}e;eUa">g
\ No newline at end of file
diff --git a/scripts/gha-encrypted/firestore/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/firestore/GoogleService-Info.plist.gpg
deleted file mode 100644
index 4ae5fb41..00000000
Binary files a/scripts/gha-encrypted/firestore/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/firestore/google-services.json.gpg b/scripts/gha-encrypted/firestore/google-services.json.gpg
deleted file mode 100644
index 98073347..00000000
Binary files a/scripts/gha-encrypted/firestore/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/functions/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/functions/GoogleService-Info.plist.gpg
deleted file mode 100644
index 6ed5b9d8..00000000
Binary files a/scripts/gha-encrypted/functions/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/functions/google-services.json.gpg b/scripts/gha-encrypted/functions/google-services.json.gpg
deleted file mode 100644
index c9edac06..00000000
Binary files a/scripts/gha-encrypted/functions/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/gma/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/gma/GoogleService-Info.plist.gpg
deleted file mode 100644
index 65b703ce..00000000
Binary files a/scripts/gha-encrypted/gma/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/gma/google-services.json.gpg b/scripts/gha-encrypted/gma/google-services.json.gpg
deleted file mode 100644
index c46f5964..00000000
Binary files a/scripts/gha-encrypted/gma/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/messaging/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/messaging/GoogleService-Info.plist.gpg
deleted file mode 100644
index cf95c652..00000000
Binary files a/scripts/gha-encrypted/messaging/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/messaging/google-services.json.gpg b/scripts/gha-encrypted/messaging/google-services.json.gpg
deleted file mode 100644
index 8ad06ccf..00000000
Binary files a/scripts/gha-encrypted/messaging/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/remote_config/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/remote_config/GoogleService-Info.plist.gpg
deleted file mode 100644
index ea9dc946..00000000
Binary files a/scripts/gha-encrypted/remote_config/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/remote_config/google-services.json.gpg b/scripts/gha-encrypted/remote_config/google-services.json.gpg
deleted file mode 100644
index b9dd70a0..00000000
Binary files a/scripts/gha-encrypted/remote_config/google-services.json.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/storage/GoogleService-Info.plist.gpg b/scripts/gha-encrypted/storage/GoogleService-Info.plist.gpg
deleted file mode 100644
index 01d28ec9..00000000
Binary files a/scripts/gha-encrypted/storage/GoogleService-Info.plist.gpg and /dev/null differ
diff --git a/scripts/gha-encrypted/storage/google-services.json.gpg b/scripts/gha-encrypted/storage/google-services.json.gpg
deleted file mode 100644
index 57ba134a..00000000
Binary files a/scripts/gha-encrypted/storage/google-services.json.gpg and /dev/null differ
diff --git a/scripts/restore_secrets.py b/scripts/restore_secrets.py
deleted file mode 100644
index cd72cf58..00000000
--- a/scripts/restore_secrets.py
+++ /dev/null
@@ -1,186 +0,0 @@
-# Copyright 2022 Google LLC
-#
-# 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.
-
-"""Script for restoring secrets into the testapp projects.
-
-Usage:
-
-python restore_secrets.py --passphrase [--repo_dir ]
-python restore_secrets.py --passphrase_file [--repo_dir ]
-
---passphrase: Passphrase to decrypt the files. This option is insecure on a
- multi-user machine; use the --passphrase_file option instead.
---passphrase_file: Specify a file to read the passphrase from (only reads the
- first line). Use "-" (without quotes) for stdin.
---repo_dir: Path to C++ Quickstart Github repository. Defaults to current
- directory.
---apis: Specify a list of particular product APIs and retrieve only their
- secrets.
-
-This script will perform the following:
-
-- Google Service files (plist and json) will be restored into the
- testapp directories.
-- The reverse id will be patched into all Info.plist files, using the value from
- the decrypted Google Service plist files as the source of truth.
-
-"""
-
-import os
-import plistlib
-import subprocess
-
-from absl import app
-from absl import flags
-
-
-FLAGS = flags.FLAGS
-
-flags.DEFINE_string("repo_dir", os.getcwd(), "Path to C++ SDK Github repo.")
-flags.DEFINE_string("passphrase", None, "The passphrase itself.")
-flags.DEFINE_string("passphrase_file", None,
- "Path to file with passphrase. Use \"-\" (without quotes) for stdin.")
-flags.DEFINE_string("artifact", None, "Artifact Path, google-services.json will be placed here.")
-flags.DEFINE_list("apis",[], "Optional comma-separated list of APIs for which to retreive "
- " secrets. All secrets will be fetched if this is flag is not defined.")
-
-
-def main(argv):
- if len(argv) > 1:
- raise app.UsageError("Too many command-line arguments.")
-
- repo_dir = FLAGS.repo_dir
- # The passphrase is sensitive, do not log.
- if FLAGS.passphrase:
- passphrase = FLAGS.passphrase
- elif FLAGS.passphrase_file == "-":
- passphrase = input()
- elif FLAGS.passphrase_file:
- with open(FLAGS.passphrase_file, "r") as f:
- passphrase = f.readline().strip()
- else:
- raise ValueError("Must supply passphrase or passphrase_file arg.")
-
- if FLAGS.apis:
- print("Retrieving secrets for product APIs: ", FLAGS.apis)
-
- secrets_dir = os.path.join(repo_dir, "scripts", "gha-encrypted")
- encrypted_files = _find_encrypted_files(secrets_dir)
- print("Found these encrypted files:\n%s" % "\n".join(encrypted_files))
-
- for path in encrypted_files:
- if "google-services" in path or "GoogleService" in path:
- # We infer the destination from the file's directory, example:
- # /scripts/gha-encrypted/auth/google-services.json.gpg turns into
- # //auth/testapp/google-services.json
- api = os.path.basename(os.path.dirname(path))
- if FLAGS.apis and api not in FLAGS.apis:
- print("Skipping secret found in product api", api)
- continue
- print("Encrypted Google Service file found: %s" % path)
- file_name = os.path.basename(path).replace(".gpg", "")
- dest_paths = [os.path.join(repo_dir, api, "testapp", file_name)]
- if FLAGS.artifact:
- # ///auth/google-services.json
- if "google-services" in path and os.path.isdir(os.path.join(repo_dir, FLAGS.artifact, api)):
- dest_paths = [os.path.join(repo_dir, FLAGS.artifact, api, file_name)]
- else:
- continue
-
- decrypted_text = _decrypt(path, passphrase)
- for dest_path in dest_paths:
- with open(dest_path, "w") as f:
- f.write(decrypted_text)
- print("Copied decrypted google service file to %s" % dest_path)
- # We use a Google Service file as the source of truth for the reverse id
- # that needs to be patched into the Info.plist files.
- if dest_path.endswith(".plist"):
- _patch_reverse_id(dest_path)
- _patch_bundle_id(dest_path)
-
- if FLAGS.artifact:
- return
-
-def _find_encrypted_files(directory_to_search):
- """Returns a list of full paths to all files encrypted with gpg."""
- encrypted_files = []
- for prefix, _, files in os.walk(directory_to_search):
- for relative_path in files:
- if relative_path.endswith(".gpg"):
- encrypted_files.append(os.path.join(prefix, relative_path))
- return encrypted_files
-
-
-def _decrypt(encrypted_file, passphrase):
- """Returns the decrypted contents of the given .gpg file."""
- print("Decrypting %s" % encrypted_file)
- # Note: if setting check=True, be sure to catch the error and not rethrow it
- # or print a traceback, as the message will include the passphrase.
- result = subprocess.run(
- args=[
- "gpg",
- "--passphrase", passphrase,
- "--quiet",
- "--batch",
- "--yes",
- "--decrypt",
- encrypted_file],
- check=False,
- text=True,
- capture_output=True)
- if result.returncode:
- # Remove any instances of the passphrase from error before logging it.
- raise RuntimeError(result.stderr.replace(passphrase, "****"))
- print("Decryption successful")
- # rstrip to eliminate a linebreak that GPG may introduce.
- return result.stdout.rstrip()
-
-
-def _patch_reverse_id(service_plist_path):
- """Patches the Info.plist file with the reverse id from the Service plist."""
- print("Attempting to patch reverse id in Info.plist")
- with open(service_plist_path, "rb") as f:
- service_plist = plistlib.load(f)
- _patch_file(
- path=os.path.join(os.path.dirname(service_plist_path), "testapp", "Info.plist"),
- placeholder="REPLACE_WITH_REVERSED_CLIENT_ID",
- value=service_plist["REVERSED_CLIENT_ID"])
-
-
-def _patch_bundle_id(service_plist_path):
- """Patches the Info.plist file with the bundle id from the Service plist."""
- print("Attempting to patch bundle id in Info.plist")
- with open(service_plist_path, "rb") as f:
- service_plist = plistlib.load(f)
- _patch_file(
- path=os.path.join(os.path.dirname(service_plist_path), "testapp", "Info.plist"),
- placeholder="$(PRODUCT_BUNDLE_IDENTIFIER)",
- value=service_plist["BUNDLE_ID"])
-
-
-def _patch_file(path, placeholder, value):
- """Patches instances of the placeholder with the given value."""
- # Note: value may be sensitive, so do not log.
- with open(path, "r") as f_read:
- text = f_read.read()
- # Count number of times placeholder appears for debugging purposes.
- replacements = text.count(placeholder)
- patched_text = text.replace(placeholder, value)
- with open(path, "w") as f_write:
- f_write.write(patched_text)
- print("Patched %d instances of %s in %s" % (replacements, placeholder, path))
-
-
-if __name__ == "__main__":
- app.run(main)