diff --git a/.gitignore b/.gitignore index 813a858..a37dcc7 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ demo/train-* .nyc_output/ coverage/ .DS_Store +*.node diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..87bf470 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,70 @@ +language: node_js +compiler: gcc +env: + global: + - NODE_GLES_SKIP_BINARY_DOWNLOAD_FOR_CI=true +jobs: + include: + - stage: build + node_js: "10" + os: linux + - stage: build + node_js: "11" + os: linux + - stage: build + node_js: "12" + os: linux + - stage: build + node_js: "13" + os: linux + - stage: build + node_js: "14" + os: linux + - stage: build + node_js: "10" + os: osx + - stage: build + node_js: "11" + os: osx + - stage: build + node_js: "12" + os: osx + - stage: build + node_js: "13" + os: osx + - stage: build + node_js: "14" + os: osx +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + - g++-7 + - make + - git +before_install: + - npm install -g yarn + - if [ $TRAVIS_OS_NAME == "linux" ]; then + export CC="gcc-7"; + export CXX="g++-7"; + export LINK="gcc-7"; + export LINKXX="g++-7"; + fi + - node --version + - yarn --version +script: + - yarn build +after_script: + - "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js" +cache: yarn +deploy: + provider: releases + api_key: + secure: ADD YOUR TRAVIS KEY HERE + file_glob: true + file: "node-gles-*-*-*.node" + skip_cleanup: true + on: + tags: true diff --git a/README.md b/README.md index 6310922..bc3879a 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,16 @@ Future plans include surfacing an API for running [Compute Shaders](https://www. ## Supported platforms -* Mac OS -* Windows -* Linux +This is a native Addon to NodeJS which delivers prebuilt binaries. Only some environments are supported: + +| Node Version | Windows 64-Bit | Windows 32-Bit | Linux 64-Bit | Linux 32-Bit | OSX | +| ------------------ | -------------- | -------------- | ------------ | ------------ | --- | +| Earlier | ✗ | ✗ | ✗ | ✗ | ✗ | +| Node 10 _(Abi 64)_ | ✓ | ✗ | ✓ | ✗ | ✓ | +| Node 11 _(Abi 67)_ | ✓ | ✗ | ✓ | ✗ | ✓ | +| Node 12 _(Abi 72)_ | ✓ | ✗ | ✓ | ✗ | ✓ | +| Node 13 _(Abi 79)_ | ✓ | ✗ | ✓ | ✗ | ✓ | +| Node 14 _(Abi 83)_ | ✓ | ✗ | ✓ | ✗ | ✓ | ## Creating a WebGL context diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..f9a9b1c --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,110 @@ +# The release configuration. +# This is executed for releases only and will upload the artifact to Github. +- configuration: release + version: "{build}" + branches: + only: + - release + - /\d\.\d\.\d/ + except: + - master + os: Visual Studio 2013 + platform: + - x64 + build: off + clone_folder: C:\repositories\node-gles + # This is adapted from the appveyor.yml in node-sass. + # http://www.wintellect.com/devcenter/jrobbins/pdb-files-what-every-developer-must-know + # http://help.appveyor.com/discussions/kb/32-how-to-build-on-logical-drive-created-by-subst + init: + - cmd: >- + subst S: C:\repositories + - ps: set-location -path S:\node-gles + environment: + NODE_GLES_SKIP_BINARY_DOWNLOAD_FOR_CI: true + matrix: + - nodejs_version: 10 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 11 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 12 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 13 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 14 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + install: + - git submodule update --init --recursive + - ps: Install-Product node $env:nodejs_version $env:platform + - node --version + - npm --version + - npm install -g yarn + - yarn --version + - yarn install + build_script: + - yarn build + artifacts: + - path: node-gles-*-*-*.node + name: node-gles + deploy: + - provider: GitHub + artifact: node-gles + auth_token: + secure: ADD YOUR APPVEYOR KEY HERE + draft: false + prerelease: false + on: + appveyor_repo_tag: true +# The testing configuration. +# This will be executed for master and all pull requests and wont upload any artifacts. +- configuration: testing + version: "{build}" + branches: + except: + - release + - /\d\.\d\.\d/ + skip_tags: true + os: Visual Studio 2013 + platform: + - x64 + build: off + clone_folder: C:\repositories\node-gles + # This is adapted from the appveyor.yml in node-sass. + # http://www.wintellect.com/devcenter/jrobbins/pdb-files-what-every-developer-must-know + # http://help.appveyor.com/discussions/kb/32-how-to-build-on-logical-drive-created-by-subst + init: + - cmd: >- + subst S: c:\repositories + - ps: set-location -path S:\node-gles + environment: + NODE_GLES_SKIP_BINARY_DOWNLOAD_FOR_CI: true + matrix: + - nodejs_version: 10 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 11 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 12 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 13 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - nodejs_version: 14 + GYP_MSVS_VERSION: 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + install: + - ps: Install-Product node $env:nodejs_version $env:platform + - node --version + - npm --version + - npm install -g yarn + - yarn --version + - yarn install + build_script: + - yarn build diff --git a/package.json b/package.json index 34523e5..b184e7d 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "scripts": { "build-npm": "./scripts/build-npm.sh", "format": "clang-format -i -style=Google binding/*.cc binding/*.h", - "install": "node scripts/install.js" + "install": "node scripts/install.js", + "build": "node scripts/build.js && tsc -p .", + "postbuild": "node scripts/rename.js" }, "devDependencies": { "@types/bindings": "^1.3.0", @@ -32,6 +34,7 @@ "bindings": "^1.3.0", "https-proxy-agent": "^2.2.3", "progress": "^2.0.3", + "request": "^2.88.2", "rimraf": "^2.6.2", "tar": "^6.0.1" } diff --git a/scripts/build.js b/scripts/build.js new file mode 100644 index 0000000..98aea39 --- /dev/null +++ b/scripts/build.js @@ -0,0 +1,168 @@ +/** + * @license + * Copyright 2019 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. + * ============================================================================= + */ + +const cp = require('child_process'); +const fs = require('fs'); +const https = require('https'); +const path = require('path'); +const rimraf = require('rimraf'); +const tar = require('tar'); +const util = require('util'); +const os = require('os'); +const url = require('url'); +const zip = require('adm-zip'); +const HttpsProxyAgent = require('https-proxy-agent'); +const ProgressBar = require('progress'); + +const mkdir = util.promisify(fs.mkdir); +const exists = util.promisify(fs.exists); +const rename = util.promisify(fs.rename); +const unlink = util.promisify(fs.unlink); + +// Determine which tarball to download based on the OS platform and arch: +const platform = os.platform().toLowerCase(); +const platformArch = `${platform}-${os.arch().toLowerCase()}`; +let ANGLE_BINARY_URI = 'https://storage.googleapis.com/angle-builds/'; +if (platform === 'darwin') { + // TODO(add debug flag?) + ANGLE_BINARY_URI += `angle-3729-${platformArch}.tar.gz`; +} else if (platform === 'linux') { + // TODO(add debug flag?) + ANGLE_BINARY_URI += `angle-3729-${platformArch}.tar.gz`; +} else if (platform === 'win32') { + ANGLE_BINARY_URI += `angle-3729-${platformArch}.zip`; +} else { + console.log('platform: ' + platform); + throw new Error(`The platform ${platformArch} is not currently supported!`); +} + +console.log(`Downloading ANGLE from: ${ANGLE_BINARY_URI}`); + +// Dependency storage paths: +const depsPath = path.join(__dirname, '..', 'deps'); + +// +// Ensures that a directory exists at a given path. +// +async function ensureDir(dirPath) { + if (!await exists(dirPath)) { + await mkdir(dirPath); + } +} + +// +// Downloads the ANGLE tarball set at `ANGLE_BINARY_URI` with an optional +// callback when downloading and extracting has finished. +// +async function downloadAngleLibs(callback) { + console.error('* Downloading ANGLE'); + await ensureDir(depsPath); + + // If HTTPS_PROXY, https_proxy, HTTP_PROXY, or http_proxy is set + const proxy = process.env['HTTPS_PROXY'] || process.env['https_proxy'] || + process.env['HTTP_PROXY'] || process.env['http_proxy'] || ''; + + // Using object destructuring to construct the options object for the + // http request. the '...url.parse(ANGLE_BINARY_URI)' part fills in the host, + // path, protocol, etc from the ANGLE_BINARY_URI and then we set the agent to + // the default agent which is overridden a few lines down if there is a proxy + const options = { + ...url.parse(ANGLE_BINARY_URI), + agent: https.globalAgent, + headers: { 'Cache-Control': 'no-cache' } + }; + + if (proxy !== '') { + options.agent = new HttpsProxyAgent(proxy); + } + + const request = https.get(options, response => { + const bar = new ProgressBar('[:bar] :rate/bps :percent :etas', { + complete: '=', + incomplete: ' ', + width: 30, + total: parseInt(response.headers['content-length'], 10) + }); + + if (platform === 'win32') { + // Save zip file to disk, extract, and delete the downloaded zip file. + const tempFileName = path.join(__dirname, '_tmp.zip'); + const outputFile = fs.createWriteStream(tempFileName); + + response.on('data', chunk => bar.tick(chunk.length)) + .pipe(outputFile) + .on('close', async () => { + const zipFile = new zip(tempFileName); + zipFile.extractAllTo(depsPath, true /* overwrite */); + + await unlink(tempFileName); + + // The .lib files for the two .dll files we care about have a name + // the compiler doesn't like - rename them: + await rename( + path.join( + depsPath, 'angle', 'out', 'Release', 'libGLESv2.dll.lib'), + path.join( + depsPath, 'angle', 'out', 'Release', 'libGLESv2.lib')); + await rename( + path.join( + depsPath, 'angle', 'out', 'Release', 'libEGL.dll.lib'), + path.join(depsPath, 'angle', 'out', 'Release', 'libEGL.lib')); + + if (callback !== undefined) { + callback(); + } + }); + } else { + // All other platforms use a tarball: + response + .on('data', + (chunk) => { + bar.tick(chunk.length); + }) + .pipe(tar.x({ C: depsPath, strict: true })) + .on('close', () => { + if (callback !== undefined) { + callback(); + } + }); + } + }); + + request.end(); +} + +// +// Wraps and executes a node-gyp rebuild command. +// +async function buildBindings() { + console.error('* Building ANGLE bindings') + cp.execSync('node-gyp rebuild', (err) => { + if (err) { + throw new Error('node-gyp failed with: ' + err); + } + }); +} + +// +// Main execution function for this script. +// +async function run() { + await downloadAngleLibs(buildBindings); +} + +run(); diff --git a/scripts/file-name.d.ts b/scripts/file-name.d.ts new file mode 100644 index 0000000..fe16fb6 --- /dev/null +++ b/scripts/file-name.d.ts @@ -0,0 +1,3 @@ +export const suffix: string; +export const baseName: string; +export const qualifiedName: string; diff --git a/scripts/file-name.js b/scripts/file-name.js new file mode 100644 index 0000000..7fc28f0 --- /dev/null +++ b/scripts/file-name.js @@ -0,0 +1,7 @@ +const path = require("path"); + +const suffix = `${process.platform}-${process.arch}-${process.versions.modules}`; +const baseName = `node-gles-${suffix}.node`; +const qualifiedName = path.resolve(__dirname, "..", baseName); + +module.exports = { suffix, baseName, qualifiedName }; diff --git a/scripts/install.js b/scripts/install.js index 436d8c7..0763e93 100644 --- a/scripts/install.js +++ b/scripts/install.js @@ -1,166 +1,36 @@ -/** - * @license - * Copyright 2019 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. - * ============================================================================= - */ - -const cp = require('child_process'); -const fs = require('fs'); -const https = require('https'); -const path = require('path'); -const rimraf = require('rimraf'); -const tar = require('tar'); -const util = require('util'); -const os = require('os'); -const url = require('url'); -const zip = require('adm-zip'); -const HttpsProxyAgent = require('https-proxy-agent'); -const ProgressBar = require('progress'); - -const mkdir = util.promisify(fs.mkdir); -const exists = util.promisify(fs.exists); -const rename = util.promisify(fs.rename); -const unlink = util.promisify(fs.unlink); - -// Determine which tarball to download based on the OS platform and arch: -const platform = os.platform().toLowerCase(); -const platformArch = `${platform}-${os.arch().toLowerCase()}`; -let ANGLE_BINARY_URI = 'https://storage.googleapis.com/angle-builds/'; -if (platform === 'darwin') { - // TODO(add debug flag?) - ANGLE_BINARY_URI += `angle-3729-${platformArch}.tar.gz`; -} else if (platform === 'linux') { - // TODO(add debug flag?) - ANGLE_BINARY_URI += `angle-3729-${platformArch}.tar.gz`; -} else if (platform === 'win32') { - ANGLE_BINARY_URI += `angle-3729-${platformArch}.zip`; -} else { - console.log('platform: ' + platform); - throw new Error(`The platform ${platformArch} is not currently supported!`); -} - -// Dependency storage paths: -const depsPath = path.join(__dirname, '..', 'deps'); - -// -// Ensures that a directory exists at a given path. -// -async function ensureDir(dirPath) { - if (!await exists(dirPath)) { - await mkdir(dirPath); - } -} - -// -// Downloads the ANGLE tarball set at `ANGLE_BINARY_URI` with an optional -// callback when downloading and extracting has finished. -// -async function downloadAngleLibs(callback) { - console.error('* Downloading ANGLE'); - await ensureDir(depsPath); - - // If HTTPS_PROXY, https_proxy, HTTP_PROXY, or http_proxy is set - const proxy = process.env['HTTPS_PROXY'] || process.env['https_proxy'] || - process.env['HTTP_PROXY'] || process.env['http_proxy'] || ''; - - // Using object destructuring to construct the options object for the - // http request. the '...url.parse(ANGLE_BINARY_URI)' part fills in the host, - // path, protocol, etc from the ANGLE_BINARY_URI and then we set the agent to - // the default agent which is overridden a few lines down if there is a proxy - const options = { - ...url.parse(ANGLE_BINARY_URI), - agent: https.globalAgent, - headers: {'Cache-Control': 'no-cache'} - }; - - if (proxy !== '') { - options.agent = new HttpsProxyAgent(proxy); - } - - const request = https.get(options, response => { - const bar = new ProgressBar('[:bar] :rate/bps :percent :etas', { - complete: '=', - incomplete: ' ', - width: 30, - total: parseInt(response.headers['content-length'], 10) - }); - - if (platform === 'win32') { - // Save zip file to disk, extract, and delete the downloaded zip file. - const tempFileName = path.join(__dirname, '_tmp.zip'); - const outputFile = fs.createWriteStream(tempFileName); - - response.on('data', chunk => bar.tick(chunk.length)) - .pipe(outputFile) - .on('close', async () => { - const zipFile = new zip(tempFileName); - zipFile.extractAllTo(depsPath, true /* overwrite */); - - await unlink(tempFileName); - - // The .lib files for the two .dll files we care about have a name - // the compiler doesn't like - rename them: - await rename( - path.join( - depsPath, 'angle', 'out', 'Release', 'libGLESv2.dll.lib'), - path.join( - depsPath, 'angle', 'out', 'Release', 'libGLESv2.lib')); - await rename( - path.join( - depsPath, 'angle', 'out', 'Release', 'libEGL.dll.lib'), - path.join(depsPath, 'angle', 'out', 'Release', 'libEGL.lib')); - - if (callback !== undefined) { - callback(); - } - }); - } else { - // All other platforms use a tarball: - response - .on('data', - (chunk) => { - bar.tick(chunk.length); - }) - .pipe(tar.x({C: depsPath, strict: true})) - .on('close', () => { - if (callback !== undefined) { - callback(); - } - }); +const path = require("path"); +const fs = require("fs"); +const request = require("request"); +const fileName = require("./file-name"); + +if (fs.existsSync(fileName.qualifiedName)) { return; } +if (process.env["NODE_GLES_SKIP_BINARY_DOWNLOAD_FOR_CI"] || process.env["npm_config_node_gles_skip_binary_download_for_ci"]) { return; } + +// Get the version of the library; +const pkg = require(path.resolve(__dirname, "..", "package.json")); +const packageVersion = pkg.version; +const baseUrl = process.env["NODE_GLES_BINARY_URL"] || process.env["npm_config_node_gles_binary_url"] || "https://github.com/Prior99/node-gles/releases/download"; +const url = `${baseUrl}/v${packageVersion}/${fileName.baseName}`; + +console.info(`Downloading node-gles prebuilt binary from "${url}".`); + +const destination = fs.createWriteStream(fileName.qualifiedName); + +request.get(url) + .on("error", err => { throw err; }) + .on("response", response => { + if (response.statusCode >= 200 && response.statusCode < 300) { + response.pipe(destination); + destination.on("finish", () => { + console.info("Successfully downloaded binaries for node-gles."); + }); + return; } - }); - - request.end(); -} - -// -// Wraps and executes a node-gyp rebuild command. -// -async function buildBindings() { - console.error('* Building ANGLE bindings') - cp.execSync('node-gyp rebuild', (err) => { - if (err) { - throw new Error('node-gyp failed with: ' + err); + if (response.statusCode === 404) { + throw new Error(`No supported node-gles ${packageVersion} build found for node ${process.version} on ${process.platform} (${process.arch}).`); + } else { + throw new Error(`Error downloading binaries for node-gles ${packageVersion}. Received status code ${response.statusCode}`) } + destination.close(); + fs.unlink(fileName.qualifiedName); }); -} - -// -// Main execution function for this script. -// -async function run() { - await downloadAngleLibs(buildBindings); -} - -run(); diff --git a/scripts/rename.js b/scripts/rename.js new file mode 100644 index 0000000..b3e6bb5 --- /dev/null +++ b/scripts/rename.js @@ -0,0 +1,10 @@ +const fs = require("fs"); +const path = require("path"); +const fileName = require("./file-name"); + +const source = path.resolve(__dirname, "..", "build", "Release", "nodejs_gl_binding.node"); +const destination = fileName.qualifiedName; + +console.log("Build artifact: " + destination); + +fs.renameSync(source, destination); diff --git a/src/index.ts b/src/index.ts index d931684..f541d93 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,37 +15,37 @@ * ============================================================================= */ -// tslint:disable-next-line:no-require-imports -import bindings = require('bindings'); -import {NodeJsGlBinding} from './binding'; +import * as fs from "fs"; +import { qualifiedName } from "../scripts/file-name"; -const binding = bindings('nodejs_gl_binding') as NodeJsGlBinding; +if (!fs.existsSync(qualifiedName)) { + throw new Error(`Unable to find native addon file "${qualifiedName}".`); +} +// tslint:disable-next-line:no-require-imports +const binding = require(qualifiedName); interface ContextArguments { - width?: number, - height?: number, - webGLCompability?: boolean, - majorVersion?: number, - minorVersion?: number, + width?: number; + height?: number; + webGLCompability?: boolean; + majorVersion?: number; + minorVersion?: number; +} + +const createWebGLRenderingContext = function (args: ContextArguments = {}) { + const width = args.width || 1; + const height = args.height || 1; + const webGLCompability = args.webGLCompability || false; + const majorVersion = args.majorVersion || 3; + const minorVersion = args.minorVersion || 0; + return binding.createWebGLRenderingContext( + width, + height, + majorVersion, + minorVersion, + webGLCompability + ); }; -const createWebGLRenderingContext = function(args: ContextArguments = {}) { - const width = args.width || 1; - const height = args.height || 1; - const webGLCompability = args.webGLCompability || false; - const majorVersion = args.majorVersion || 3; - const minorVersion = args.minorVersion || 0; - return binding.createWebGLRenderingContext( - width, - height, - majorVersion, - minorVersion, - webGLCompability, - ); - - -} - - export { createWebGLRenderingContext }; diff --git a/yarn.lock b/yarn.lock index 0cc1446..6258020 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41,6 +41,16 @@ agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" +ajv@^6.5.5: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -63,16 +73,50 @@ arrify@^1.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + bindings@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" @@ -101,6 +145,11 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + chownr@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -129,11 +178,30 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -159,11 +227,24 @@ del@^2.2.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + diff@^3.1.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + error-ex@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -183,6 +264,31 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -191,6 +297,20 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -217,6 +337,13 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -246,11 +373,33 @@ graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-proxy-agent@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.3.tgz#fb6cd98ed5b9c35056b5a73cd01a8a721d7193d1" @@ -327,11 +476,41 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -339,6 +518,16 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -362,6 +551,18 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -439,6 +640,11 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -501,6 +707,11 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -523,6 +734,21 @@ progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -540,6 +766,32 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -571,6 +823,16 @@ rimraf@^2.6.2: dependencies: glob "^7.0.5" +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + "semver@2 || 3 || 4 || 5": version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" @@ -620,6 +882,21 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -655,6 +932,14 @@ tar@^6.0.1: mkdirp "^1.0.3" yallist "^4.0.0" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + ts-node@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" @@ -669,6 +954,18 @@ ts-node@^7.0.1: source-map-support "^0.5.6" yn "^2.0.0" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + typescript@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.3.tgz#4853b3e275ecdaa27f78fda46dc273a7eb7fc1c8" @@ -679,6 +976,13 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" @@ -686,6 +990,11 @@ user-home@^2.0.0: dependencies: os-homedir "^1.0.0" +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -694,6 +1003,15 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"