From e009975d218e1b17b8b237aeb8eb0550b4c344d3 Mon Sep 17 00:00:00 2001 From: seebees Date: Mon, 24 Feb 2020 11:27:51 -0800 Subject: [PATCH] feat: Move to yauzl to fix FD error `unzipper` would throw an FD error occasionally. Relevant issue: https://github.com/ZJONSSON/node-unzipper/issues/104 There is a pending PR, but it seemed simpler to simply move to `yauzl`. The error: ``` events.js:174 throw er; // Unhandled 'error' event ^ Error: EBADF: bad file descriptor, read Emitted 'error' event at: at lazyFs.read (internal/fs/streams.js:165:12) at FSReqWrap.wrapper [as oncomplete] (fs.js:467:17) ``` --- modules/integration-browser/package.json | 4 +- .../src/build_decrypt_fixtures.ts | 62 +- modules/integration-node/package.json | 6 +- .../src/get_decrypt_test_iterator.ts | 88 +- .../integration-node/src/integration_tests.ts | 11 +- .../test/get_decrypt_test_iterator.test.ts | 25 +- package-lock.json | 778 +++++++++++------- package.json | 11 +- 8 files changed, 635 insertions(+), 350 deletions(-) diff --git a/modules/integration-browser/package.json b/modules/integration-browser/package.json index ba904f019..a799649db 100644 --- a/modules/integration-browser/package.json +++ b/modules/integration-browser/package.json @@ -22,7 +22,7 @@ "@trust/keyto": "^0.3.7", "@types/got": "^9.6.2", "@types/stream-to-promise": "^2.2.0", - "@types/unzipper": "^0.10.2", + "@types/yauzl": "^2.9.1", "@types/yargs": "^15.0.3", "got": "^10.6.0", "jasmine-core": "^3.4.0", @@ -34,7 +34,7 @@ "puppeteer": "^1.14.0", "stream-to-promise": "^2.2.0", "tslib": "^1.9.3", - "unzipper": "^0.9.11", + "yauzl": "^2.10.0", "webpack": "^4.30.0", "yargs": "^13.2.2" }, diff --git a/modules/integration-browser/src/build_decrypt_fixtures.ts b/modules/integration-browser/src/build_decrypt_fixtures.ts index f419ecee7..d8c0df3b6 100644 --- a/modules/integration-browser/src/build_decrypt_fixtures.ts +++ b/modules/integration-browser/src/build_decrypt_fixtures.ts @@ -14,9 +14,14 @@ * limitations under the License. */ -import { Open } from 'unzipper' +import { + open, + Entry, // eslint-disable-line no-unused-vars + ZipFile // eslint-disable-line no-unused-vars +} from 'yauzl' import streamToPromise from 'stream-to-promise' import { writeFileSync } from 'fs' +import { Readable } from 'stream' // eslint-disable-line no-unused-vars import { DecryptManifestList } from './types' // eslint-disable-line no-unused-vars @@ -30,23 +35,22 @@ import { DecryptManifestList } from './types' // eslint-disable-line no-unused-v export async function buildDecryptFixtures (fixtures: string, vectorFile: string, testName?: string, slice?: string) { const [start = 0, end = 9999] = (slice || '').split(':').map(n => parseInt(n, 10)) - const centralDirectory = await Open.file(vectorFile) - const filesMap = new Map(centralDirectory.files.map(file => [file.path, file])) + const filesMap = await centralDirectory(vectorFile) const readUriOnce = (() => { const cache = new Map() return async (uri: string) => { const has = cache.get(uri) if (has) return has - const fileInfo = filesMap.get(testUri2Path(uri)) + const fileInfo = filesMap.get(uri) if (!fileInfo) throw new Error(`${uri} does not exist`) - const buffer = await fileInfo.buffer() + const buffer = await streamToPromise(await fileInfo.stream()) cache.set(uri, buffer) return buffer } })() - const manifestBuffer = await readUriOnce('manifest.json') + const manifestBuffer = await readUriOnce('file://manifest.json') const { keys: keysFile, tests }: DecryptManifestList = JSON.parse(manifestBuffer.toString('utf8')) const keysBuffer = await readUriOnce(keysFile) const { keys } = JSON.parse(keysBuffer.toString('utf8')) @@ -68,12 +72,12 @@ export async function buildDecryptFixtures (fixtures: string, vectorFile: string testNames.push(name) const { plaintext: plaintextFile, ciphertext, 'master-keys': masterKeys } = testInfo - const plainTextInfo = filesMap.get(testUri2Path(plaintextFile)) - const cipherInfo = filesMap.get(testUri2Path(ciphertext)) + const plainTextInfo = filesMap.get(plaintextFile) + const cipherInfo = filesMap.get(ciphertext) if (!cipherInfo || !plainTextInfo) throw new Error(`no file for ${name}: ${ciphertext} | ${plaintextFile}`) - const cipherText = await streamToPromise(cipherInfo.stream()) - const plainText = await readUriOnce(plainTextInfo.path) + const cipherText = await streamToPromise(await cipherInfo.stream()) + const plainText = await readUriOnce(`file://${plainTextInfo.fileName}`) const keysInfo = masterKeys.map(keyInfo => { const key = keys[keyInfo.key] if (!key) throw new Error(`no key for ${name}`) @@ -83,7 +87,7 @@ export async function buildDecryptFixtures (fixtures: string, vectorFile: string const test = JSON.stringify({ name, keysInfo, - cipherFile: cipherInfo.path, + cipherFile: cipherInfo.fileName, cipherText: cipherText.toString('base64'), plainText: plainText.toString('base64') }) @@ -94,6 +98,38 @@ export async function buildDecryptFixtures (fixtures: string, vectorFile: string writeFileSync(`${fixtures}/decrypt_tests.json`, JSON.stringify(testNames)) } -function testUri2Path (uri: string) { - return uri.replace('file://', '') +interface StreamEntry extends Entry { + stream: () => Promise +} + +function centralDirectory (vectorFile: string): Promise> { + const filesMap = new Map() + return new Promise((resolve, reject) => { + open(vectorFile, { lazyEntries: true, autoClose: false }, (err, zipfile) => { + if (err || !zipfile) return reject(err) + + zipfile + .on('entry', (entry: StreamEntry) => { + entry.stream = curryStream(zipfile, entry) + filesMap.set(`file://${entry.fileName}`, entry) + zipfile.readEntry() + }) + .on('end', () => { + resolve(filesMap) + }) + .on('error', (err) => reject(err)) + .readEntry() + }) + }) +} + +function curryStream (zipfile: ZipFile, entry: Entry) { + return function stream (): Promise { + return new Promise((resolve, reject) => { + zipfile.openReadStream(entry, (err, readStream) => { + if (err || !readStream) return reject(err) + resolve(readStream) + }) + }) + } } diff --git a/modules/integration-node/package.json b/modules/integration-node/package.json index bb2292aa4..f07887d0a 100644 --- a/modules/integration-node/package.json +++ b/modules/integration-node/package.json @@ -15,12 +15,12 @@ "license": "Apache-2.0", "dependencies": { "@aws-crypto/client-node": "file:../client-node", - "@types/got": "^9.6.2", - "@types/unzipper": "^0.10.2", + "@types/got": "^9.6.9", + "@types/yauzl": "^2.9.1", "@types/yargs": "^15.0.3", "got": "^10.6.0", "tslib": "^1.9.3", - "unzipper": "^0.9.11", + "yauzl": "^2.10.0", "yargs": "^13.2.2" }, "sideEffects": false, diff --git a/modules/integration-node/src/get_decrypt_test_iterator.ts b/modules/integration-node/src/get_decrypt_test_iterator.ts index b0e242c28..7bc68ea0d 100644 --- a/modules/integration-node/src/get_decrypt_test_iterator.ts +++ b/modules/integration-node/src/get_decrypt_test_iterator.ts @@ -14,9 +14,10 @@ */ import { - Open, - File // eslint-disable-line no-unused-vars -} from 'unzipper' + open, + Entry, // eslint-disable-line no-unused-vars + ZipFile // eslint-disable-line no-unused-vars +} from 'yauzl' import { DecryptManifestList, // eslint-disable-line no-unused-vars KeyList, // eslint-disable-line no-unused-vars @@ -25,29 +26,36 @@ import { import { Readable } from 'stream' // eslint-disable-line no-unused-vars export async function getDecryptTestVectorIterator (vectorFile: string) { - const centralDirectory = await Open.file(vectorFile) - // @ts-ignore - const filesMap = new Map(centralDirectory.files.map(file => [file.path, file])) + const filesMap = await centralDirectory(vectorFile) return _getDecryptTestVectorIterator(filesMap) } /* Just a simple more testable function */ -export async function _getDecryptTestVectorIterator (filesMap: Map) { +export async function _getDecryptTestVectorIterator (filesMap: Map) { const readUriOnce = (() => { const cache: Map = new Map() - return async (uri: string) => { + return async (uri: string): Promise => { const has = cache.get(uri) if (has) return has - const fileInfo = filesMap.get(testUri2Path(uri)) + const fileInfo = filesMap.get(uri) if (!fileInfo) throw new Error(`${uri} does not exist`) - const buffer = await fileInfo.buffer() - cache.set(uri, buffer) - return buffer + const stream = await fileInfo.stream() + return new Promise((resolve, reject) => { + const buffer: Buffer[] = [] + stream + .on('data', chunk => buffer.push(chunk)) + .on('end', () => { + const data = Buffer.concat(buffer) + cache.set(uri, data) + resolve(data) + }) + .on('error', err => reject(err)) + }) } })() - const manifestBuffer = await readUriOnce('manifest.json') + const manifestBuffer = await readUriOnce('file://manifest.json') const { keys: keysFile, tests }: DecryptManifestList = JSON.parse(manifestBuffer.toString('utf8')) const keysBuffer = await readUriOnce(keysFile) const { keys }: KeyList = JSON.parse(keysBuffer.toString('utf8')) @@ -55,11 +63,11 @@ export async function _getDecryptTestVectorIterator (filesMap: Map return (function * nextTest (): IterableIterator { for (const [name, testInfo] of Object.entries(tests)) { const { plaintext: plaintextFile, ciphertext, 'master-keys': masterKeys } = testInfo - const plainTextInfo = filesMap.get(testUri2Path(plaintextFile)) - const cipherInfo = filesMap.get(testUri2Path(ciphertext)) - if (!cipherInfo || !plainTextInfo) throw new Error(`no file for ${name}: ${testUri2Path(ciphertext)} | ${testUri2Path(plaintextFile)}`) - const cipherStream = cipherInfo.stream() - const plainTextStream = plainTextInfo.stream() + const plainTextInfo = filesMap.get(plaintextFile) + const cipherInfo = filesMap.get(ciphertext) + if (!cipherInfo || !plainTextInfo) throw new Error(`no file for ${name}: ${ciphertext} | ${plaintextFile}`) + const cipherStream = cipherInfo.stream + const plainTextStream = plainTextInfo.stream const keysInfo = masterKeys.map(keyInfo => { const key = keys[keyInfo.key] if (!key) throw new Error(`no key for ${name}`) @@ -76,13 +84,45 @@ export async function _getDecryptTestVectorIterator (filesMap: Map })() } -function testUri2Path (uri: string) { - return uri.replace('file://', '') -} - export interface TestVectorInfo { name: string, keysInfo: KeyInfoTuple[], - cipherStream: Readable - plainTextStream: Readable + cipherStream: () => Promise + plainTextStream: () => Promise +} + +interface StreamEntry extends Entry { + stream: () => Promise +} + +function centralDirectory (vectorFile: string): Promise> { + const filesMap = new Map() + return new Promise((resolve, reject) => { + open(vectorFile, { lazyEntries: true, autoClose: false }, (err, zipfile) => { + if (err || !zipfile) return reject(err) + + zipfile + .on('entry', (entry: StreamEntry) => { + entry.stream = curryStream(zipfile, entry) + filesMap.set('file://' + entry.fileName, entry) + zipfile.readEntry() + }) + .on('end', () => { + resolve(filesMap) + }) + .on('error', (err) => reject(err)) + .readEntry() + }) + }) +} + +function curryStream (zipfile: ZipFile, entry: Entry) { + return function stream (): Promise { + return new Promise((resolve, reject) => { + zipfile.openReadStream(entry, (err, readStream) => { + if (err || !readStream) return reject(err) + resolve(readStream) + }) + }) + } } diff --git a/modules/integration-node/src/integration_tests.ts b/modules/integration-node/src/integration_tests.ts index 6fc72659d..6d60c6d55 100644 --- a/modules/integration-node/src/integration_tests.ts +++ b/modules/integration-node/src/integration_tests.ts @@ -40,8 +40,8 @@ export async function testDecryptVector ({ name, keysInfo, plainTextStream, ciph try { const cmm = decryptMaterialsManagerNode(keysInfo) const knowGood: Buffer[] = [] - plainTextStream.on('data', (chunk: Buffer) => knowGood.push(chunk)) - const { plaintext } = await decrypt(cmm, cipherStream) + ;(await plainTextStream()).on('data', (chunk: Buffer) => knowGood.push(chunk)) + const { plaintext } = await decrypt(cmm, await cipherStream()) const result = Buffer.concat(knowGood).equals(plaintext) return { result, name } } catch (err) { @@ -50,7 +50,7 @@ export async function testDecryptVector ({ name, keysInfo, plainTextStream, ciph } // This is only viable for small streams, if we start get get larger streams, an stream equality should get written -export async function testEncryptVector ({ name, keysInfo, encryptOp, plainTextData }: EncryptTestVectorInfo, decryptOracle: URL): Promise { +export async function testEncryptVector ({ name, keysInfo, encryptOp, plainTextData }: EncryptTestVectorInfo, decryptOracle: string): Promise { try { const cmm = encryptMaterialsManagerNode(keysInfo) const { result: encryptResult } = await encrypt(cmm, plainTextData, encryptOp) @@ -61,7 +61,7 @@ export async function testEncryptVector ({ name, keysInfo, encryptOp, plainTextD 'Accept': 'application/octet-stream' }, body: encryptResult, - encoding: null + responseType: 'buffer' }) needs(decryptResponse.statusCode === 200, 'decrypt failure') const { body } = decryptResponse @@ -75,6 +75,7 @@ export async function testEncryptVector ({ name, keysInfo, encryptOp, plainTextD export async function integrationDecryptTestVectors (vectorFile: string, tolerateFailures: number = 0, testName?: string, concurrency: number = 1) { const tests = await getDecryptTestVectorIterator(vectorFile) + // @ts-ignore return parallelTests(concurrency, tolerateFailures, runTest, tests) async function runTest (test: TestVectorInfo): Promise { @@ -97,7 +98,7 @@ export async function integrationDecryptTestVectors (vectorFile: string, tolerat } export async function integrationEncryptTestVectors (manifestFile: string, keyFile: string, decryptOracle: string, tolerateFailures: number = 0, testName?: string, concurrency: number = 1) { - const decryptOracleUrl = new URL(decryptOracle) + const decryptOracleUrl = new URL(decryptOracle).toString() const tests = await getEncryptTestVectorIterator(manifestFile, keyFile) return parallelTests(concurrency, tolerateFailures, runTest, tests) diff --git a/modules/integration-node/test/get_decrypt_test_iterator.test.ts b/modules/integration-node/test/get_decrypt_test_iterator.test.ts index f8787ebcf..4492bd4d0 100644 --- a/modules/integration-node/test/get_decrypt_test_iterator.test.ts +++ b/modules/integration-node/test/get_decrypt_test_iterator.test.ts @@ -21,6 +21,7 @@ import { _getDecryptTestVectorIterator } from '../src/index' import { DecryptManifestList, KeyList } from '../src/types' // eslint-disable-line no-unused-vars +import { PassThrough } from 'stream' const keyList: KeyList = { 'manifest': { @@ -63,29 +64,33 @@ const manifest:DecryptManifestList = { const filesMap = new Map([ [ - 'manifest.json', { - async buffer () { - return Buffer.from(JSON.stringify(manifest)) + 'file://manifest.json', { + async stream () { + const stream = new PassThrough() + setImmediate(() => stream.end(Buffer.from(JSON.stringify(manifest)))) + return stream } } as any ], [ - 'keys.json', { - async buffer () { - return Buffer.from(JSON.stringify(keyList)) + 'file://keys.json', { + async stream () { + const stream = new PassThrough() + setImmediate(() => stream.end(Buffer.from(JSON.stringify(keyList)))) + return stream } } as any ], [ - 'ciphertexts/460bd892-c137-4178-8201-4ab5ee5d3041', { - stream () { + 'file://ciphertexts/460bd892-c137-4178-8201-4ab5ee5d3041', { + async stream () { return {} as any } } as any ], [ - 'plaintexts/small', { - stream () { + 'file://plaintexts/small', { + async stream () { return {} as any } } as any diff --git a/package-lock.json b/package-lock.json index afb9a6e6e..ca5a46507 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,8 @@ "@aws-crypto/cache-material": { "version": "file:modules/cache-material", "requires": { + "@aws-crypto/material-management": "file:modules/material-management", + "@aws-crypto/serialize": "file:modules/serialize", "@types/lru-cache": "^5.1.0", "lru-cache": "^5.1.1", "tslib": "^1.9.3" @@ -15,6 +17,10 @@ "@aws-crypto/caching-materials-manager-browser": { "version": "file:modules/caching-materials-manager-browser", "requires": { + "@aws-crypto/cache-material": "file:modules/cache-material", + "@aws-crypto/material-management-browser": "file:modules/material-management-browser", + "@aws-crypto/serialize": "file:modules/serialize", + "@aws-crypto/web-crypto-backend": "file:modules/web-crypto-backend", "@aws-sdk/util-base64-browser": "1.0.0-alpha.2", "tslib": "^1.9.3" } @@ -22,24 +28,43 @@ "@aws-crypto/caching-materials-manager-node": { "version": "file:modules/caching-materials-manager-node", "requires": { + "@aws-crypto/cache-material": "file:modules/cache-material", + "@aws-crypto/material-management-node": "file:modules/material-management-node", "tslib": "^1.9.3" } }, "@aws-crypto/client-browser": { "version": "file:modules/client-browser", "requires": { + "@aws-crypto/caching-materials-manager-browser": "file:modules/caching-materials-manager-browser", + "@aws-crypto/decrypt-browser": "file:modules/decrypt-browser", + "@aws-crypto/encrypt-browser": "file:modules/encrypt-browser", + "@aws-crypto/kms-keyring-browser": "file:modules/kms-keyring-browser", + "@aws-crypto/material-management-browser": "file:modules/material-management-browser", + "@aws-crypto/raw-aes-keyring-browser": "file:modules/raw-aes-keyring-browser", + "@aws-crypto/raw-rsa-keyring-browser": "file:modules/raw-rsa-keyring-browser", + "@aws-crypto/web-crypto-backend": "file:modules/web-crypto-backend", "tslib": "^1.9.3" } }, "@aws-crypto/client-node": { "version": "file:modules/client-node", "requires": { + "@aws-crypto/caching-materials-manager-node": "file:modules/caching-materials-manager-node", + "@aws-crypto/decrypt-node": "file:modules/decrypt-node", + "@aws-crypto/encrypt-node": "file:modules/encrypt-node", + "@aws-crypto/kms-keyring-node": "file:modules/kms-keyring-node", + "@aws-crypto/material-management-node": "file:modules/material-management-node", + "@aws-crypto/raw-aes-keyring-node": "file:modules/raw-aes-keyring-node", + "@aws-crypto/raw-rsa-keyring-node": "file:modules/raw-rsa-keyring-node", "tslib": "^1.9.3" } }, "@aws-crypto/decrypt-browser": { "version": "file:modules/decrypt-browser", "requires": { + "@aws-crypto/material-management-browser": "file:modules/material-management-browser", + "@aws-crypto/serialize": "file:modules/serialize", "@aws-sdk/util-utf8-browser": "1.0.0-alpha.2", "tslib": "^1.9.3" } @@ -47,6 +72,8 @@ "@aws-crypto/decrypt-node": { "version": "file:modules/decrypt-node", "requires": { + "@aws-crypto/material-management-node": "file:modules/material-management-node", + "@aws-crypto/serialize": "file:modules/serialize", "@types/duplexify": "^3.6.0", "duplexify": "^4.0.0", "readable-stream": "^3.2.0", @@ -56,6 +83,9 @@ "@aws-crypto/encrypt-browser": { "version": "file:modules/encrypt-browser", "requires": { + "@aws-crypto/material-management-browser": "file:modules/material-management-browser", + "@aws-crypto/serialize": "file:modules/serialize", + "@aws-crypto/web-crypto-backend": "file:modules/web-crypto-backend", "@aws-sdk/util-utf8-browser": "1.0.0-alpha.2", "tslib": "^1.9.3" } @@ -63,6 +93,8 @@ "@aws-crypto/encrypt-node": { "version": "file:modules/encrypt-node", "requires": { + "@aws-crypto/material-management-node": "file:modules/material-management-node", + "@aws-crypto/serialize": "file:modules/serialize", "@types/duplexify": "^3.6.0", "duplexify": "^4.0.0", "readable-stream": "^3.2.0", @@ -72,6 +104,7 @@ "@aws-crypto/example-browser": { "version": "file:modules/example-browser", "requires": { + "@aws-crypto/client-browser": "file:modules/client-browser", "@aws-sdk/util-base64-browser": "1.0.0-alpha.2", "tslib": "^1.9.3" } @@ -79,6 +112,7 @@ "@aws-crypto/example-node": { "version": "file:modules/example-node", "requires": { + "@aws-crypto/client-node": "file:modules/client-node", "tslib": "^1.9.3" } }, @@ -99,49 +133,370 @@ "@aws-crypto/integration-browser": { "version": "file:modules/integration-browser", "requires": { + "@aws-crypto/client-browser": "file:modules/client-browser", "@aws-sdk/karma-credential-loader": "1.0.0-alpha.5", "@aws-sdk/util-base64-browser": "1.0.0-alpha.2", "@aws-sdk/util-utf8-browser": "1.0.0-alpha.2", "@trust/keyto": "^0.3.7", "@types/got": "^9.6.2", "@types/stream-to-promise": "^2.2.0", - "@types/unzipper": "^0.9.1", - "@types/yargs": "^13.0.0", - "got": "^9.6.0", + "@types/yargs": "^15.0.3", + "@types/yauzl": "^2.9.1", + "got": "^10.6.0", "jasmine-core": "^3.4.0", "karma": "^4.1.0", - "karma-jasmine": "^2.0.1", + "karma-chrome-launcher": "^3.1.0", + "karma-jasmine": "^3.1.1", "karma-json-fixtures-preprocessor": "0.0.6", "karma-webpack": "^3.0.5", "puppeteer": "^1.14.0", "stream-to-promise": "^2.2.0", "tslib": "^1.9.3", - "unzipper": "^0.9.11", "webpack": "^4.30.0", - "yargs": "^13.2.2" + "yargs": "^13.2.2", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.0.tgz", + "integrity": "sha512-lXKXfypKo644k4Da4yXkPCrwcvn6SlUW2X2zFbuflKHNjf0w9htru01bo26uMhleMXsDmnZ12eJLdrAZa9MANg==" + }, + "@szmarczak/http-timer": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", + "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/yargs": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.3.tgz", + "integrity": "sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "cacheable-request": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", + "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", + "integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "defer-to-connect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", + "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-10.6.0.tgz", + "integrity": "sha512-3LIdJNTdCFbbJc+h/EH0V5lpNpbJ6Bfwykk21lcQvQsEcrzdi/ltCyQehFHLzJ/ka0UMH4Slg0hkYvAZN9qUDg==", + "requires": { + "@sindresorhus/is": "^2.0.0", + "@szmarczak/http-timer": "^4.0.0", + "@types/cacheable-request": "^6.0.1", + "cacheable-lookup": "^2.0.0", + "cacheable-request": "^7.0.1", + "decompress-response": "^5.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^5.0.0", + "lowercase-keys": "^2.0.0", + "mimic-response": "^2.1.0", + "p-cancelable": "^2.0.0", + "p-event": "^4.0.0", + "responselike": "^2.0.0", + "to-readable-stream": "^2.0.0", + "type-fest": "^0.10.0" + } + }, + "http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-Z2EICWNJou7Tr9Bd2M2UqDJq3A9F2ePG9w3lIpjoyuSyXFP9QbniJVu3XQYytuw5ebmG7dXSXO9PgAjJG8DDKA==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "karma-jasmine": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", + "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", + "requires": { + "jasmine-core": "^3.5.0" + } + }, + "keyv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.0.tgz", + "integrity": "sha512-U7ioE8AimvRVLfw4LffyOIRhL2xVgmE8T22L6i0BucSnBUyv4w+I7VN/zVZwRKHOI6ZRUcdMdWHQ8KSUvGpEog==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "p-cancelable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "to-readable-stream": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", + "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==" + }, + "type-fest": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.10.0.tgz", + "integrity": "sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } } }, "@aws-crypto/integration-node": { "version": "file:modules/integration-node", "requires": { - "@types/got": "^9.6.2", - "@types/unzipper": "^0.9.1", - "@types/yargs": "^13.0.0", - "got": "^9.6.0", + "@aws-crypto/client-node": "file:modules/client-node", + "@types/got": "^9.6.9", + "@types/yargs": "^15.0.3", + "@types/yauzl": "^2.9.1", + "got": "^10.6.0", "tslib": "^1.9.3", - "unzipper": "^0.9.11", - "yargs": "^13.2.2" + "yargs": "^13.2.2", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.0.tgz", + "integrity": "sha512-lXKXfypKo644k4Da4yXkPCrwcvn6SlUW2X2zFbuflKHNjf0w9htru01bo26uMhleMXsDmnZ12eJLdrAZa9MANg==" + }, + "@szmarczak/http-timer": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", + "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/yargs": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.3.tgz", + "integrity": "sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "cacheable-request": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", + "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", + "integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "defer-to-connect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", + "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-10.6.0.tgz", + "integrity": "sha512-3LIdJNTdCFbbJc+h/EH0V5lpNpbJ6Bfwykk21lcQvQsEcrzdi/ltCyQehFHLzJ/ka0UMH4Slg0hkYvAZN9qUDg==", + "requires": { + "@sindresorhus/is": "^2.0.0", + "@szmarczak/http-timer": "^4.0.0", + "@types/cacheable-request": "^6.0.1", + "cacheable-lookup": "^2.0.0", + "cacheable-request": "^7.0.1", + "decompress-response": "^5.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^5.0.0", + "lowercase-keys": "^2.0.0", + "mimic-response": "^2.1.0", + "p-cancelable": "^2.0.0", + "p-event": "^4.0.0", + "responselike": "^2.0.0", + "to-readable-stream": "^2.0.0", + "type-fest": "^0.10.0" + } + }, + "http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-Z2EICWNJou7Tr9Bd2M2UqDJq3A9F2ePG9w3lIpjoyuSyXFP9QbniJVu3XQYytuw5ebmG7dXSXO9PgAjJG8DDKA==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "keyv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.0.tgz", + "integrity": "sha512-U7ioE8AimvRVLfw4LffyOIRhL2xVgmE8T22L6i0BucSnBUyv4w+I7VN/zVZwRKHOI6ZRUcdMdWHQ8KSUvGpEog==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "p-cancelable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "to-readable-stream": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", + "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==" + }, + "type-fest": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.10.0.tgz", + "integrity": "sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } } }, "@aws-crypto/kms-keyring": { "version": "file:modules/kms-keyring", "requires": { + "@aws-crypto/material-management": "file:modules/material-management", "tslib": "^1.9.3" } }, "@aws-crypto/kms-keyring-browser": { "version": "file:modules/kms-keyring-browser", "requires": { + "@aws-crypto/kms-keyring": "file:modules/kms-keyring", + "@aws-crypto/material-management-browser": "file:modules/material-management-browser", + "@aws-crypto/web-crypto-backend": "file:modules/web-crypto-backend", "aws-sdk": "^2.443.0", "tslib": "^1.9.3" } @@ -149,6 +504,8 @@ "@aws-crypto/kms-keyring-node": { "version": "file:modules/kms-keyring-node", "requires": { + "@aws-crypto/kms-keyring": "file:modules/kms-keyring", + "@aws-crypto/material-management-node": "file:modules/material-management-node", "aws-sdk": "^2.443.0", "tslib": "^1.9.3" } @@ -157,13 +514,23 @@ "version": "file:modules/material-management", "requires": { "asn1.js": "^5.0.1", - "bn.js": "^4.11.8", + "bn.js": "^5.1.1", "tslib": "^1.9.3" + }, + "dependencies": { + "bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==" + } } }, "@aws-crypto/material-management-browser": { "version": "file:modules/material-management-browser", "requires": { + "@aws-crypto/material-management": "file:modules/material-management", + "@aws-crypto/serialize": "file:modules/serialize", + "@aws-crypto/web-crypto-backend": "file:modules/web-crypto-backend", "@aws-sdk/util-base64-browser": "1.0.0-alpha.2", "tslib": "^1.9.3" } @@ -171,6 +538,9 @@ "@aws-crypto/material-management-node": { "version": "file:modules/material-management-node", "requires": { + "@aws-crypto/hkdf-node": "file:modules/hkdf-node", + "@aws-crypto/material-management": "file:modules/material-management", + "@aws-crypto/serialize": "file:modules/serialize", "tslib": "^1.9.3" } }, @@ -188,7 +558,11 @@ "@aws-crypto/raw-aes-keyring-browser": { "version": "file:modules/raw-aes-keyring-browser", "requires": { + "@aws-crypto/material-management-browser": "file:modules/material-management-browser", "@aws-crypto/random-source-browser": "^1.0.0-alpha.0", + "@aws-crypto/raw-keyring": "file:modules/raw-keyring", + "@aws-crypto/serialize": "file:modules/serialize", + "@aws-crypto/web-crypto-backend": "file:modules/web-crypto-backend", "@aws-sdk/util-utf8-browser": "1.0.0-alpha.2", "tslib": "^1.9.3" } @@ -196,19 +570,27 @@ "@aws-crypto/raw-aes-keyring-node": { "version": "file:modules/raw-aes-keyring-node", "requires": { + "@aws-crypto/material-management-node": "file:modules/material-management-node", + "@aws-crypto/raw-keyring": "file:modules/raw-keyring", + "@aws-crypto/serialize": "file:modules/serialize", "tslib": "^1.9.3" } }, "@aws-crypto/raw-keyring": { "version": "file:modules/raw-keyring", "requires": { + "@aws-crypto/material-management": "file:modules/material-management", + "@aws-crypto/serialize": "file:modules/serialize", "tslib": "^1.9.3" } }, "@aws-crypto/raw-rsa-keyring-browser": { "version": "file:modules/raw-rsa-keyring-browser", "requires": { + "@aws-crypto/material-management-browser": "file:modules/material-management-browser", "@aws-crypto/random-source-browser": "^1.0.0-alpha.0", + "@aws-crypto/raw-keyring": "file:modules/raw-keyring", + "@aws-crypto/web-crypto-backend": "file:modules/web-crypto-backend", "@aws-sdk/util-base64-browser": "1.0.0-alpha.2", "tslib": "^1.9.3" } @@ -216,15 +598,25 @@ "@aws-crypto/raw-rsa-keyring-node": { "version": "file:modules/raw-rsa-keyring-node", "requires": { + "@aws-crypto/material-management-node": "file:modules/material-management-node", + "@aws-crypto/raw-keyring": "file:modules/raw-keyring", "tslib": "^1.9.3" } }, "@aws-crypto/serialize": { "version": "file:modules/serialize", "requires": { + "@aws-crypto/material-management": "file:modules/material-management", "asn1.js": "^5.0.1", - "bn.js": "^4.11.8", + "bn.js": "^5.1.1", "tslib": "^1.9.3" + }, + "dependencies": { + "bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==" + } } }, "@aws-crypto/supports-web-crypto": { @@ -2350,11 +2742,6 @@ "@types/node": ">= 8" } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, "@sinonjs/commons": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz", @@ -2391,14 +2778,6 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, "@trust/keyto": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/@trust/keyto/-/keyto-0.3.7.tgz", @@ -2418,6 +2797,17 @@ "@types/node": "*" } }, + "@types/cacheable-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", + "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, "@types/chai": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.9.tgz", @@ -2495,12 +2885,25 @@ } } }, + "@types/http-cache-semantics": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", + "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" + }, "@types/json-schema": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", "dev": true }, + "@types/keyv": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", + "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", + "requires": { + "@types/node": "*" + } + }, "@types/lru-cache": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz", @@ -2523,6 +2926,14 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-11.15.4.tgz", "integrity": "sha512-z7deEbNOPcS7pb7uyaZhbITh18ruGghYh86VmUL2zJPKeu9tEAqF0goQH0dhWamHoBJpkyWroNxPZjzNvbYVCw==" }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, "@types/sinon": { "version": "7.5.1", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.1.tgz", @@ -2542,27 +2953,19 @@ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.6.tgz", "integrity": "sha512-wHNBMnkoEBiRAd3s8KTKwIuO9biFtTf0LehITzBhSco+HQI0xkXZbLOD55SW3Aqw3oUkHstkm5SPv58yaAdFPQ==" }, - "@types/unzipper": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.9.2.tgz", - "integrity": "sha512-9K8sLpn1dxIzbXMDgUerkyO1z0deg5RqN/F6df8waAM94aPnS7x7V0l12kkUYoUlM8r4xWgvlcXLdWQvt6KdUA==", - "requires": { - "@types/node": "*" - } - }, - "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", - "requires": { - "@types/yargs-parser": "*" - } - }, "@types/yargs-parser": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" }, + "@types/yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", + "requires": { + "@types/node": "*" + } + }, "@typescript-eslint/eslint-plugin": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz", @@ -3467,25 +3870,11 @@ "callsite": "1.0.0" } }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "binary-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", @@ -3662,6 +4051,11 @@ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -3672,21 +4066,11 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, - "buffer-indexof-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", - "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=" - }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -3753,42 +4137,26 @@ "unset-value": "^1.0.0" } }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "cacheable-lookup": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-2.0.0.tgz", + "integrity": "sha512-s2piO6LvA7xnL1AR03wuEdSx3BZT3tIJpZ56/lcJwzO/6DTJZlTs7X3lrvPxk6d1PlDe6PrVe2TjlUIZNFglAQ==", "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "keyv": "^4.0.0" }, "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "keyv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.0.tgz", + "integrity": "sha512-U7ioE8AimvRVLfw4LffyOIRhL2xVgmE8T22L6i0BucSnBUyv4w+I7VN/zVZwRKHOI6ZRUcdMdWHQ8KSUvGpEog==", "requires": { - "pump": "^3.0.0" + "json-buffer": "3.0.1" } - }, - "http-cache-semantics": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", - "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" } } }, @@ -3901,14 +4269,6 @@ "check-error": "^1.0.2" } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -4700,14 +5060,6 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -4747,11 +5099,6 @@ "clone": "^1.0.2" } }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4945,35 +5292,6 @@ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -6219,17 +6537,6 @@ "integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==", "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -6495,6 +6802,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -6730,24 +7038,6 @@ "slash": "^2.0.0" } }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, "graceful-fs": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", @@ -7547,8 +7837,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "3.0.1", @@ -7779,11 +8068,6 @@ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -7913,7 +8197,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", - "dev": true, "requires": { "which": "^1.2.1" } @@ -7929,11 +8212,12 @@ } }, "karma-jasmine": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", - "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", + "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", + "dev": true, "requires": { - "jasmine-core": "^3.3" + "jasmine-core": "^3.5.0" } }, "karma-json-fixtures-preprocessor": { @@ -7963,14 +8247,6 @@ "webpack-dev-middleware": "^2.0.6" } }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -8021,11 +8297,6 @@ "type-check": "~0.3.2" } }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -8254,11 +8525,6 @@ "signal-exit": "^3.0.0" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -9630,22 +9896,24 @@ "os-tmpdir": "^1.0.0" } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true }, + "p-event": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.1.0.tgz", + "integrity": "sha512-4vAd06GCsgflX4wHN1JqrMzBh/8QZ4j+rzp0cd2scXRwuBEv+QR3wrVA5aLhWDLw4y2WgDKvzWF3CCLmVM1UgA==", + "requires": { + "p-timeout": "^2.0.1" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { "version": "2.1.0", @@ -9715,6 +9983,14 @@ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", "dev": true }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -10111,11 +10387,6 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -10728,14 +10999,6 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -12061,11 +12324,6 @@ } } }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -12117,11 +12375,6 @@ "punycode": "^2.1.0" } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", @@ -12415,48 +12668,6 @@ } } }, - "unzipper": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.9.15.tgz", - "integrity": "sha512-2aaUvO4RAeHDvOCuEtth7jrHFaCKTSXPqUkXwADaLBzGbgZGzUDccoEdJ5lW+3RmfpOZYNx0Rw6F6PUzM6caIA==", - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -12496,14 +12707,6 @@ "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -13613,7 +13816,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } diff --git a/package.json b/package.json index 6adf4e148..6e9ef6f7d 100644 --- a/package.json +++ b/package.json @@ -29,17 +29,17 @@ "coverage": "run-s coverage-* && nyc merge .karma_output .nyc_output/browser.json && nyc report --extension .ts --check-coverage", "report-coverage": "nyc report --extension .ts --check-coverage -r html", "test": "npm run lint && npm run build && npm run coverage", - "integration-browser-decrypt": "npm run build; lerna run build_fixtures --stream --no-prefix -- -- decrypt -v $npm_package_config_localTestVectors --karma", - "integration-browser-encrypt": "npm run build; lerna run build_fixtures --stream --no-prefix -- -- encrypt -m $npm_package_config_encryptManifestList -k $npm_package_config_encryptKeyManifest -o $npm_package_config_decryptOracle --karma", + "integration-browser-decrypt": "npm run build; integration-browser decrypt -v $npm_package_config_localTestVectors --karma", + "integration-browser-encrypt": "npm run build; integration-browser encrypt -m $npm_package_config_encryptManifestList -k $npm_package_config_encryptKeyManifest -o $npm_package_config_decryptOracle --karma", "browser-integration": "run-s integration-browser-*", - "integration-node-decrypt": "npm run build; lerna run integration_node --stream --no-prefix -- -- decrypt -v $npm_package_config_localTestVectors -c 10", - "integration-node-encrypt": "npm run build; lerna run integration_node --stream --no-prefix -- -- encrypt -m $npm_package_config_encryptManifestList -k $npm_package_config_encryptKeyManifest -o $npm_package_config_decryptOracle -c 20", + "integration-node-decrypt": "npm run build; integration-node decrypt -v $npm_package_config_localTestVectors -c 10", + "integration-node-encrypt": "npm run build; integration-node encrypt -m $npm_package_config_encryptManifestList -k $npm_package_config_encryptKeyManifest -o $npm_package_config_decryptOracle -c 20", "node-integration": "run-s integration-node-*", "integration": "run-s integration-*", "test_conditions": "./util/test_conditions" }, "config": { - "localTestVectors": "../../aws-encryption-sdk-test-vectors/vectors/awses-decrypt/python-1.3.8.zip", + "localTestVectors": "aws-encryption-sdk-test-vectors/vectors/awses-decrypt/python-1.3.8.zip", "encryptManifestList": "https://raw.githubusercontent.com/awslabs/aws-crypto-tools-test-vector-framework/master/features/CANONICAL-GENERATED-MANIFESTS/0003-awses-message-encryption.v1.json", "encryptKeyManifest": "https://raw.githubusercontent.com/awslabs/aws-crypto-tools-test-vector-framework/master/features/CANONICAL-GENERATED-MANIFESTS/0002-keys.v1.json", "decryptOracle": "https://xi1mwx3ttb.execute-api.us-west-2.amazonaws.com/api/v0/decrypt" @@ -112,6 +112,7 @@ "karma-coverage-istanbul-reporter": "^2.0.4", "karma-mocha": "^1.3.0", "karma-webpack": "^3.0.5", + "karma-jasmine": "^3.1.1", "mocha": "^5.2.0", "nyc": "^14.0.0", "sinon": "^7.2.4",