diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
deleted file mode 100644
index e086d3f9..00000000
--- a/.github/workflows/android.yml
+++ /dev/null
@@ -1,209 +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}"
-
- 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
- python scripts/build_scripts/build_testapps.py --p Android \
- --t ${{ needs.check_and_prepare.outputs.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
-
- - 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
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/messaging/testapp/readme.md b/messaging/testapp/readme.md
index ea47af73..c5a59969 100644
--- a/messaging/testapp/readme.md
+++ b/messaging/testapp/readme.md
@@ -1,241 +1,48 @@
Firebase Cloud Messaging Quickstart
===================================
-The Firebase Cloud Messaging Test Application (testapp) demonstrates receiving
-Firebase Cloud Messages using the Firebase Cloud Messaging C++ SDK. This
+The Firebase Messaging C++ Sample (hereafter the 'test app') demonstrates receiving messages from [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging/)
+using the [Firebase C++ SDK](https://firebase.google.com/docs/cpp/setup). This
application has no user interface and simply logs actions it's performing to the
console.
-Introduction
-------------
+## Set up, build and run the test app
-- [Read more about Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging/)
+> **_NOTE:_** Do not implement the code changes of the subsequent linked instructions as this codebase already has those functionalities.
-Building and Running the testapp
---------------------------------
-### iOS
- - Link your iOS app to the Firebase libraries.
- - Get CocoaPods version 1 or later by running,
+1. Complete [Add Firebase to your C++ project](https://firebase.google.com/docs/cpp/setup) for your selected build platforms.
+1. [Set up a Firebase Cloud Messaging client app with C++](https://firebase.google.com/docs/cloud-messaging/cpp/client).
- ```
- 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
- [firebase.google.com/console](https://firebase.google.com/console/)
- , and attach your iOS app to it.
- - For Messaging, you will need an App Store ID. Use something random such
- as 12345678."
- - You can use "com.google.FirebaseCppMessagingTestApp.dev" as the iOS Bundle ID
- while you're 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.
- - 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_messaging.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".
- - You need a valid
- [APNs](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html)
- certificate. If you don't already have one, see
- [Provisioning APNs SSL Certificates.](https://firebase.google.com/docs/cloud-messaging/ios/certs)
- - Configure the Xcode project for push messaging.
- - Select the `testapp` project from the `Navigator area`.
- - Select the `testapp` target from the `Editor area`.
- - Select the `General` tab from the `Editor area`.
- - Scroll down to `Linked Frameworks and Libraries` and click the `+`
- button to add a framework.
- - In the window that appears, scroll to `UserNotifications.framework`
- and click on that entry, then click on `Add`. This framework will only
- appear in Xcode version 8 and higher, required by this library.
- - Select the `Capabilities` tab from the `Editor area`.
- - Switch `Push Notifications` to `On`.
- - Scroll down to `Background Modes` and switch it to `On`.
- - Tick the `Remote notifications` box under `Background Modes`.
- - 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.
-
-### Android
-**Register your Android app with Firebase.**
-
-- Create a new app on
-[firebase.google.com/console](https://firebase.google.com/console/)
-, and attach your Android app to it.
-- You can use "com.google.android.messaging.testapp" as the Package Name
-while you're testing.
-- To [generate a SHA1](https://developers.google.com/android/guides/client-auth)
-run this command (_Note: the default password is 'android'_):
- * Mac and Linux:
-
- ```
- keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
- ```
- * 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](http://developer.android.com/tools/publishing/app-signing.html#signing-manually)
-with:
-
- ```
- 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).
-
-- 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 your SDK paths**
-
-- Configure the location of the Firebase C++ SDK by setting the
-`firebase_cpp_sdk.dir` Gradle property to the SDK install directory.
- * Run this command in the project directory, and modify the path to match your
- local installation path:
-
- ```
- 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.
- * Android Studio will write these paths to `local.properties`.
-
-**Optional: Configure your deep link URL**
-
-- To enable your app to receive deep links via FCM, you will need to add an
- intent filter to your AndroidManifest.xml in the native activity that
- associates your domain with your app.
-
-```
-
-
-
-
-
-
-
-```
-
-**Build & Run**
-
-- 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.
-- See [below](#using_the_test_app) for usage instructions.
-
-### 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 Messaging uses a stubbed implementation on desktop,
- so functionality is not expected.
-
-Using the Test App
-------------------
+### Running the test app
+----------------------
- Install and run the test app on your iOS or Android device or emulator.
- The application has minimal user interface. The output of the app can be
viewed via the console:
- * **iOS**: Open select "View --> Debug Area --> Activate Console" from the
+ * **iOS**: Open select "View -> Debug Area -> Activate Console" from the
menu in Xcode.
* **Android**: View the logcat output in Android studio or by running
- "adb logcat" from the command line.
+ `adb logcat` from the command line.
- When you first run the app, it will print:
`Received Registration Token: `. Copy this code to a text editor.
-- Copy the ServerKey from the firebase console:
- - Open your project in the
- [Firebase Console](https://firebase.google.com/console/).
- - Click the gear icon then `Project settings` in the menu on the left
- - Select the `Cloud Messaging` tab.
- - Copy the `Server Key`
-- Replace `` and `` in this command and run it
-from the command line.
-```
-curl --header "Authorization: key=" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d '{"notification":{"title":"Hi","body":"Hello from the Cloud"},"data":{"score":"lots"},"to":""}'
-```
-- Observe the command received in the app, via the console output.
-Support
--------
+### Send a message from your server environment
+-----------------------------------------------
+
+1. Navigate to the FCM REST API Docs for [Method: projects.messages.send](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages/send)
+1. Look for the "Try this method" panel
+ 1. This might require you to expand your browser window.
+1. Follow the API doc to understand what IDs and fields to fill in for your particular use case.
+ 1. Your project number is available from [Project settings](https://console.firebase.google.com/project/_/settings/general)
+1. Fill in the `Request body` referencing the [FCM REST API docs](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages).
+1. Execute.
+1. Observe the command received in the app, via the console output.
+
+Reminder, while this process is currently done from our website, it uses the FCM v1 Send API directly and provides the simplest starting point to switch to using the v1 Send API or the Firebase Admin SDK in production.
-[https://firebase.google.com/support/](https://firebase.google.com/support/)
+## Troubleshooting and Support
+- [Firebase Cloud Messaging troubleshooting & FAQ](https://firebase.google.com/docs/cloud-messaging/troubleshooting)
+- [Firebase Support](https://firebase.google.com/support/)
License
-------
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)