diff --git a/.gitignore b/.gitignore index f0c2471..31a697b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules lib *.log +.idea diff --git a/package.json b/package.json index f60331a..fecb057 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "serverless-plugin-cloudformation-cross-region-variables", - "version": "1.0.7", + "version": "1.0.8", "url": "https://github.com/blueflag/serverless-plugin-cloudformation-cross-region-variables", "description": "Serverless plugin to get varibles from cross region cloudformation templates", "main": "lib/index.js", diff --git a/src/index.js b/src/index.js index 1440d61..94a604c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,22 +1,21 @@ - -var Observable = require('rxjs/Rx').Observable +const Observable = require('rxjs/Rx').Observable; import {getValueSSMCR, getValueFromCF} from './awsVars'; -const CF_PREFIX = 'cfcr' -const CF_SPLIT = /(cfcr):(.*?):(.*?):([0-9a-zA-Z]*)/ -const CF_SPLIT_DOT = /(cfcr):(.*?)\.(.*?):([0-9a-zA-Z]*)/ +const CF_PREFIX = 'cfcr'; +const CF_SPLIT = /(cfcr):(.*?):(.*?):([0-9a-zA-Z\-_]*)/; +const CF_SPLIT_DOT = /(cfcr):(.*?)\.(.*?):([0-9a-zA-Z\-_]*)/; -const SSM_PREFIX = 'ssmcr' -const SSM_SPLIT = /(ssmcr):(.*?):([a-zA-Z0-9_.\-/]+)[~]?(true|false)?/ +const SSM_PREFIX = 'ssmcr'; +const SSM_SPLIT = /(ssmcr):(.*?):([a-zA-Z0-9_.\-/]+)[~]?(true|false)?/; export default class ServerlessCFCrossRegionVariables { constructor(serverless, options) { - this.resolvedValues = {} - const delegate = serverless.variables.getValueFromSource.bind(serverless.variables) + this.resolvedValues = {}; + const delegate = serverless.variables.getValueFromSource.bind(serverless.variables); serverless.variables.getValueFromSource = (variableString) => { if(this.resolvedValues[variableString]){ return Promise.resolve(this.resolvedValues[variableString]) @@ -26,11 +25,11 @@ export default class ServerlessCFCrossRegionVariables { if(split === null){ throw new Error(`Invalid syntax, must be cfcr:region:service:output got "${variableString}"`) } - var [string, cfcr, region, stack, variable] = split + var [string, cfcr, region, stack, variable] = split; return this._getValueFromCF(region, stack, variable, variableString) - } + } else if (variableString.startsWith(`${SSM_PREFIX}:`)) { - var split = SSM_SPLIT.exec(variableString) + var split = SSM_SPLIT.exec(variableString); if(split === null){ throw new Error(`Invalid syntax, must be ssmcr:region:varlocation got "${variableString}"`) } @@ -43,7 +42,7 @@ export default class ServerlessCFCrossRegionVariables { async _getValueSSMCR(region, variable, decrypt, variableString) { try{ - var value = await getValueSSMCR(region, variable, decrypt); + const value = await getValueSSMCR(region, variable, decrypt); this.resolvedValues[variableString] = value; return value; } catch (e){ @@ -53,7 +52,7 @@ export default class ServerlessCFCrossRegionVariables { async _getValueFromCF(region, stack, variable, variableString) { try{ - var value = await getValueFromCF(region, stack, variable); + const value = await getValueFromCF(region, stack, variable); this.resolvedValues[variableString] = value; return value; } catch (e){ diff --git a/test/index.spec.js b/test/index.spec.js index 257982c..662c6e3 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -4,83 +4,100 @@ import proxyquire from 'proxyquire' import ServerlessCFVariables from '../src' function buildSls(serverlessCFVariables) { - const sls = new Serverless() - sls.pluginManager.addPlugin(serverlessCFVariables) - sls.init() + const sls = new Serverless(); + sls.pluginManager.addPlugin(serverlessCFVariables); + sls.init(); return sls } test('Variables are passed through', async t => { - const sls = buildSls(ServerlessCFVariables) - sls.service.custom.myVar = 'myVar' - sls.service.custom.myResoledVar = '${self:custom.myVar}' // eslint-disable-line + const sls = buildSls(ServerlessCFVariables); + sls.service.custom.myVar = 'myVar'; + sls.service.custom.myResoledVar = '${self:custom.myVar}'; // eslint-disable-line - await sls.variables.populateService() + await sls.variables.populateService(); t.is(sls.service.custom.myResoledVar, 'myVar') -}) +}); test('Correctly parses vars', async t => { - var serverlessCFVariables = proxyquire.noCallThru()('../src', { + const serverlessCFVariables = proxyquire.noCallThru()('../src', { './awsVars': { getValueFromCF: (region, stack, variables) => { return `region:${region},stack:${stack},variables:${variables}` } } - }) - const sls = buildSls(serverlessCFVariables) - sls.service.custom.myResoledVar = '${cfcr:region:servicename:ServiceEndpoint}' // eslint-disable-lin - await sls.variables.populateService() + }); + const sls = buildSls(serverlessCFVariables); + sls.service.custom.myResoledVar = '${cfcr:region:servicename:ServiceEndpoint}'; // eslint-disable-lin + await sls.variables.populateService(); t.is(sls.service.custom.myResoledVar, 'region:region,stack:servicename,variables:ServiceEndpoint') -}) +}); -test('Correctly throws an error on incorrect syntax', async t => { - const sls = buildSls(ServerlessCFVariables) - sls.service.custom.myResoledVar = '${cfcr:region:servicename}' // eslint-disable-lin - // await sls.variables.populateService() - await t.throws(() => sls.variables.populateService(), /Invalid syntax, must be cfcr:region:service:output got/) -}) +test('Correctly parses vars with hyphen and underscore', async t => { + const serverlessCFVariables = proxyquire.noCallThru()('../src', { + './awsVars': { + getValueFromCF: (region, stack, variables) => { + return `region:${region},stack:${stack},variables:${variables}` + } + } + }); + const sls = buildSls(serverlessCFVariables); + sls.service.custom.myResoledVar = '${cfcr:region:servicename:ServiceEndpoint-stage_1}'; // eslint-disable-lin + await sls.variables.populateService(); + t.is(sls.service.custom.myResoledVar, 'region:region,stack:servicename,variables:ServiceEndpoint-stage_1') +}); + +test.skip('Correctly throws an error on incorrect syntax', t => { + const sls = buildSls(ServerlessCFVariables); + sls.service.custom.myResoledVar = '${cfcr:region:servicename}'; // eslint-disable-lin + + return sls.variables.populateService().then( + () => t.fail('Should have thrown'), + (res) => t.true(res.message.match(/Invalid syntax, must be cfcr:region:service:output got.*/)) + ); +}); test('Returns an error if var can`t be found', async t => { - var serverlessCFVariables = proxyquire.noCallThru()('../src', { + const serverlessCFVariables = proxyquire.noCallThru()('../src', { './awsVars': { getValueFromCF: (region, stack, variables) => { throw Error() } } - }) - const sls = buildSls(serverlessCFVariables) - sls.service.custom.myResoledVar = '${cfcr:region:servicename:ServiceEndpointWillBeUndefined}' // eslint-disable-lin + }); + const sls = buildSls(serverlessCFVariables); + sls.service.custom.myResoledVar = '${cfcr:region:servicename:ServiceEndpointWillBeUndefined}'; // eslint-disable-lin let result = await sls.variables.populateService(); t.true(typeof sls.service.custom.myResoledVar === 'undefined'); -}) +}); test('Correctly parses ssm vars', async t => { - var serverlessCFVariables = proxyquire.noCallThru()('../src', { + const serverlessCFVariables = proxyquire.noCallThru()('../src', { './awsVars': { getValueSSMCR: (region, variables) => { return `region:${region},variables:${variables}` } } - }) - const sls = buildSls(serverlessCFVariables) - sls.service.custom.myResoledVar = '${ssmcr:region:name}' // eslint-disable-lin - await sls.variables.populateService() + }); + const sls = buildSls(serverlessCFVariables); + sls.service.custom.myResoledVar = '${ssmcr:region:name}'; // eslint-disable-lin + await sls.variables.populateService(); t.is(sls.service.custom.myResoledVar, 'region:region,variables:name') -}) +}); test('Parses requests for decript', async t => { - var serverlessCFVariables = proxyquire.noCallThru()('../src', { + const serverlessCFVariables = proxyquire.noCallThru()('../src', { './awsVars': { getValueSSMCR: (region, variables, decript) => { return `region:${region},variables:${variables}:${decript}` } } - }) - const sls = buildSls(serverlessCFVariables) - sls.service.custom.myResoledVar = '${ssmcr:region:name~true}' // eslint-disable-lin - await sls.variables.populateService() + }); + const sls = buildSls(serverlessCFVariables); + sls.service.custom.myResoledVar = '${ssmcr:region:name~true}'; // eslint-disable-lin + await sls.variables.populateService(); t.is(sls.service.custom.myResoledVar, 'region:region,variables:name:true') -}); \ No newline at end of file +}); diff --git a/yarn.lock b/yarn.lock index 57db7d0..8f723bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -542,14 +542,6 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" @@ -675,26 +667,10 @@ babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" @@ -703,15 +679,7 @@ babel-plugin-syntax-trailing-function-commas@^6.20.0, babel-plugin-syntax-traili version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" -babel-plugin-transform-async-generator-functions@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.16.0, babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: +babel-plugin-transform-async-to-generator@^6.16.0, babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" dependencies: @@ -719,15 +687,6 @@ babel-plugin-transform-async-to-generator@^6.16.0, babel-plugin-transform-async- babel-plugin-syntax-async-functions "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-class-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -896,7 +855,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.11.0, babel-plugin-transform-es20 babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1, babel-plugin-transform-exponentiation-operator@^6.8.0: +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" dependencies: @@ -904,13 +863,6 @@ babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-e babel-plugin-syntax-exponentiation-operator "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - babel-plugin-transform-object-rest-spread@6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" @@ -918,48 +870,13 @@ babel-plugin-transform-object-rest-spread@6.23.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-object-rest-spread@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-display-name@^6.23.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-self@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" dependencies: regenerator-transform "^0.10.0" -babel-plugin-transform-runtime@6.23.0, babel-plugin-transform-runtime@^6.23.0: +babel-plugin-transform-runtime@6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" dependencies: @@ -980,16 +897,6 @@ babel-polyfill@^6.16.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-blueflag@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-blueflag/-/babel-preset-blueflag-0.6.0.tgz#74f47c57130e472ee1f02fb446c1f2c53b07beda" - dependencies: - babel-plugin-transform-class-properties "^6.24.1" - babel-plugin-transform-runtime "^6.23.0" - babel-preset-env "^1.5.2" - babel-preset-react "^6.24.1" - babel-preset-stage-3 "^6.24.1" - babel-preset-env@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.4.0.tgz#c8e02a3bcc7792f23cded68e0355b9d4c28f0f7a" @@ -1024,68 +931,6 @@ babel-preset-env@1.4.0: browserslist "^1.4.0" invariant "^2.2.2" -babel-preset-env@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^2.1.2" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-flow@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - -babel-preset-react@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" - dependencies: - babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-react-display-name "^6.23.0" - babel-plugin-transform-react-jsx "^6.24.1" - babel-plugin-transform-react-jsx-self "^6.22.0" - babel-plugin-transform-react-jsx-source "^6.22.0" - babel-preset-flow "^6.23.0" - -babel-preset-stage-3@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.24.1" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-plugin-transform-exponentiation-operator "^6.24.1" - babel-plugin-transform-object-rest-spread "^6.22.0" - babel-register@6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" @@ -1239,13 +1084,6 @@ browserslist@^1.4.0: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^2.1.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.10.0.tgz#bac5ee1cc69ca9d96403ffb8a3abdc5b6aed6346" - dependencies: - caniuse-lite "^1.0.30000780" - electron-to-chromium "^1.3.28" - buf-compare@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" @@ -1328,10 +1166,6 @@ caniuse-db@^1.0.30000639: version "1.0.30000780" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000780.tgz#8d1977561d00ff0f0ed2b6b66140328ab4504c0a" -caniuse-lite@^1.0.30000780: - version "1.0.30000780" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000780.tgz#1f9095f2efd4940e0ba6c5992ab7a9b64cc35ba4" - capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -1856,7 +1690,7 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.28: +electron-to-chromium@^1.2.7: version "1.3.28" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz#8dd4e6458086644e9f9f0a1cf32e2a1f9dffd9ee"