diff --git a/.deployment.config b/.deployment.config new file mode 100644 index 0000000000..1a0a95584b --- /dev/null +++ b/.deployment.config @@ -0,0 +1,81 @@ +{ + "product": "coveo-search-ui", + "team_name": "searchui", + "general": { + "aws_regions": { + "sequential": [ + "us-east-1" + ] + }, + "environments_order": { + "sequential": [ + "dev", + "qa", + "prd" + ] + }, + "team_jenkins": "searchuibuilds", + "start_environment_automatically": false, + "notifications": { + "slack_channels": [ + "#searchuibuilds" + ] + } + }, + "phases": { + "s3": { + "bucket": "coveo-nprod-binaries", + "directory": "proda/StaticCDN/searchui/v$[MAJOR_MINOR_VERSION]", + "parameters": { + "acl": "public-read" + }, + "dev": { + "disabled": true + }, + "qa": { + "disabled": true + }, + "source": "bin" + } + }, + "certifiers": { + "dev": [ + { + "system_certifier": "snyk" + }, + { + "system_certifier": "veracode" + } + ], + "prd": [ + { + "job_name": "search_ui/job/update_npm_latest_tag", + "tag_suffix": "npm_latest_tag_updated", + "extra_parameters": { + "LATEST_NPM_VERSION": "$[LATEST_NPM_VERSION]" + } + } + ] + }, + "snyk": { + "org": "coveo-jsui", + "no_container_images": true, + "configurations": [ + { + "directory": ".", + "project_name": "search-ui" + } + ] + }, + "veracode": { + "sandbox_name": "JS UI", + "scan_include_patterns": "*" + }, + "observatory": { + "no_endpoint": true + }, + "package_rollout": { + "only_consider_changesets_after": "16247824e24b" + }, + "deployment_config_version": 1 +} \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..a6b2926bb5 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,71 @@ +node('linux && docker') { + checkout scm + def tag = env.TAG_NAME + + withEnv([ + 'npm_config_cache=npm-cache' + ]){ + withDockerContainer(image: 'nikolaik/python-nodejs:python3.8-nodejs10', args: '-u=root') { + stage('Install') { + sh 'yarn install' + } + + stage('Build') { + sh '. ./read.version.sh' + sh 'echo $PACKAGE_JSON_VERSION' + sh 'yarn run injectTag' + sh 'yarn run build' + + if (tag) { + sh 'yarn run minimize' + } + } + + stage('Install Chrome') { + sh "wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -" + sh "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list" + sh "apt-get update" + sh "apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 libxtst6 --no-install-recommends" + sh "google-chrome --version" + } + + stage('Test') { + sh 'yarn run unitTests' + + if (tag) { + sh 'yarn run accessibilityTests' + } + + sh 'set +e' + // sh 'yarn run uploadCoverage' + sh 'set -e' + sh 'yarn run validateTypeDefinitions' + } + + stage('Docs') { + // sh 'if [[ "x$GIT_TAG_NAME" != "x" && $IS_PULL_REQUEST_PUSH_BUILD = false ]]; then bash ./deploy.doc.sh ; fi' + sh 'yarn run docsitemap' + sh 'yarn run zipForGitReleases' + } + + if (!tag) { + return + } + + stage('Deploy') { + withCredentials([ + string(credentialsId: 'NPM_TOKEN', variable: 'NPM_TOKEN') + ]) { + sh 'node ./build/npm.deploy.js' + } + + sh 'rm -rf veracode && mkdir veracode' + sh 'mkdir veracode/search-ui' + sh 'cp -R src package.json yarn.lock veracode/search-ui' + + sh 'node ./build/deployment-pipeline.deploy.js || true' + } + } + + } +} \ No newline at end of file diff --git a/build/deployment-pipeline.deploy.js b/build/deployment-pipeline.deploy.js new file mode 100644 index 0000000000..13b6cf4cd7 --- /dev/null +++ b/build/deployment-pipeline.deploy.js @@ -0,0 +1,47 @@ +const { promisify } = require('util'); +const exec = promisify(require('child_process').exec); +const compareVersions = require('compare-versions'); +const { getMajorMinorVersion, getVersion } = require('./tag.utilities'); +const { getLatestVersionOnNpm } = require('./npm.utilities'); + +async function installDeploymentPipeLineCli() { + const command = 'pip install deployment_package==7.* --index-url https://pypi.dev.cloud.coveo.com/simple'; + console.log('installing deployment pipeline cli'); + await exec(command); +} + +async function createAndDeployPackage() { + const paramString = await getResolvedParamString(); + const command = `deployment-package package create ${paramString} --for-spinnaker --with-deploy`; + + console.log('creating and deploying package'); + await exec(command); +} + +async function getResolvedParamString() { + const npmVersion = await getLatestNpmVersion(); + const params = [`MAJOR_MINOR_VERSION=${getMajorMinorVersion()}`, `LATEST_NPM_VERSION=${npmVersion}`]; + return ['', ...params].join(' --resolve ').trim(); +} + +async function getLatestNpmVersion() { + const currentVersion = getVersion(); + const latestVersion = await getLatestVersionOnNpm(); + const isCurrentVersionNewerThanLatest = compareVersions(currentVersion, latestVersion) === 1; + + return isCurrentVersionNewerThanLatest ? currentVersion : latestVersion; +} + +async function main() { + try { + await installDeploymentPipeLineCli(); + await createAndDeployPackage(); + console.log('Successfully uploaded package to deployment pipeline'); + process.exit(0); + } catch (e) { + console.log('Failed to upload package to deployment pipeline', e); + process.exit(1); + } +} + +main(); diff --git a/build/npm.deploy.js b/build/npm.deploy.js new file mode 100644 index 0000000000..d3a79a057d --- /dev/null +++ b/build/npm.deploy.js @@ -0,0 +1,37 @@ +'use strict'; +const { promisify } = require('util'); +const exec = promisify(require('child_process').exec); +const fs = require('fs'); +const os = require('os'); +const { isTagged } = require('./tag.utilities'); + +async function deployTaggedVersion() { + const suffix = 'beta'; + console.log(`Doing a NPM deployment of a ${suffix} version`); + await publishToNpm(['--tag', suffix], `Deploy ${suffix} is done`); +} + +async function publishToNpm(publishArgs = [], successMessage) { + const args = ['publish', ...publishArgs].join(' '); + await exec(`npm ${args}`); + console.log(successMessage); +} + +function setNpmrcFile() { + const fileName = `${os.homedir()}/.npmrc`; + const npmrcString = `//registry.npmjs.org/:_authToken=${process.env.NPM_TOKEN}`; + + console.log('setting npmrc file'); + return new Promise((resolve, reject) => fs.writeFile(fileName, npmrcString, err => (err ? reject(err) : resolve()))); +} + +async function main() { + if (!isTagged()) { + return console.log('Skipping NPM deployment because this is not a tagged commit'); + } + + await setNpmrcFile(); + await deployTaggedVersion(); +} + +main(); diff --git a/build/npm.utilities.js b/build/npm.utilities.js new file mode 100644 index 0000000000..e259906e57 --- /dev/null +++ b/build/npm.utilities.js @@ -0,0 +1,18 @@ +const { promisify } = require('util'); +const exec = promisify(require('child_process').exec); + +async function getLatestVersionOnNpm() { + const tags = await getTags(); + const latestTag = tags.find(tag => tag.indexOf('latest') !== -1); + return latestTag.split(':')[1].trim(); +} + +async function getTags() { + const command = 'npm dist-tags ls coveo-search-ui'; + const { stdout } = await exec(command); + return stdout.split('\n'); +} + +module.exports = { + getLatestVersionOnNpm +}; diff --git a/build/tag.utilities.js b/build/tag.utilities.js new file mode 100644 index 0000000000..669c21be9f --- /dev/null +++ b/build/tag.utilities.js @@ -0,0 +1,79 @@ +const tag = process.env.TAG_NAME || ''; + +function isTagged() { + return tag && tag !== ''; +} + +function isOfficialTag() { + const officialForm = `^${semanticVersionForm()}$`; + const officialRegex = new RegExp(officialForm); + + return officialRegex.test(tag); +} + +function isBetaTag() { + const betaForm = `^${semanticVersionForm()}-beta$`; + const betaRegex = new RegExp(betaForm); + + return betaRegex.test(tag); +} + +function semanticVersionForm() { + const number = '[0-9]+'; + const dot = '[.]'; + return `${number}${dot}${number}${dot}${number}`; +} + +function majorMinorForm() { + const number = '[0-9]+'; + const dot = '[.]'; + return `${number}${dot}${number}`; +} + +function smallLetters() { + return '[a-z]+'; +} + +function tagHasAlphabeticSuffix() { + const suffixForm = `^${semanticVersionForm()}-${smallLetters()}$`; + const suffixRegex = new RegExp(suffixForm); + + return suffixRegex.test(tag); +} + +function getAlphabeticSuffix() { + if (!tagHasAlphabeticSuffix()) { + return ''; + } + + const suffixRegex = new RegExp(`${smallLetters()}$`); + return suffixRegex.exec(tag)[0]; +} + +function getVersion() { + return require('../package.json').version; +} + +function getMajorMinorVersion() { + const version = getVersion(); + const form = `^${majorMinorForm()}`; + const majorMinorRegex = new RegExp(form); + + return majorMinorRegex.exec(version)[0]; +} + +function getHerokuVersion() { + const version = getVersion(); + return version ? version.replace(/\./g, '-') : 'unknown-version'; +} + +module.exports = { + isTagged, + isOfficialTag, + isBetaTag, + tagHasAlphabeticSuffix, + getAlphabeticSuffix, + getVersion, + getHerokuVersion, + getMajorMinorVersion +}; diff --git a/deploy.beta.js b/deploy.beta.js deleted file mode 100644 index bdd8644eb5..0000000000 --- a/deploy.beta.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; -const login = require('npm-cli-login'); -const exec = require('child_process').exec; -login(process.env.NPM_USERNAME, process.env.NPM_PW, 'sandbox_JSUI@coveo.com'); - -const travisBranchName = process.env.TRAVIS_BRANCH || ''; -let branchToTag = ''; - -if (travisBranchName) { - branchToTag = travisBranchName.replace('-beta', ''); - const match = branchToTag.match(/([0-9]{1}.[0-9]+).[0-9]+/); - if (match) { - if (match[1] == '2.0' || match[1] == '1.0') { - branchToTag = '-master'; - } else { - branchToTag = `-${match[1]}`; - } - } -} - -console.log('executing deploy script beta'); -setTimeout(function () { - exec(`npm publish --tag beta${branchToTag}`, function (error, stdout, stderr) { - if (error) { - console.log(error, stdout, stderr); - process.exit(1); - } - }); -}, 2000); diff --git a/gulpTasks/injectTag.js b/gulpTasks/injectTag.js index 285e102cfd..886b64755c 100644 --- a/gulpTasks/injectTag.js +++ b/gulpTasks/injectTag.js @@ -3,11 +3,11 @@ const replace = require('gulp-replace'); const colors = require('colors'); function injectTag() { - if (process.env.TRAVIS_TAG) { - console.log(`Injecting ${process.env.TRAVIS_TAG} in Coveo.version ...`.black.bgGreen); + if (process.env.TAG_NAME) { + console.log(`Injecting ${process.env.TAG_NAME} in Coveo.version ...`.black.bgGreen); return gulp .src('./src/misc/Version.ts') - .pipe(replace(/0\.0\.0\.0/g, process.env.TRAVIS_TAG)) + .pipe(replace(/0\.0\.0\.0/g, process.env.TAG_NAME)) .pipe(gulp.dest('./src/misc/')); } diff --git a/gulpTasks/test.js b/gulpTasks/test.js index 15032655bf..996fbdcff7 100644 --- a/gulpTasks/test.js +++ b/gulpTasks/test.js @@ -52,7 +52,7 @@ function configureTestServer(configPath, cb) { const coverage = gulp.series(remapCoverage, convertCoverageToLcovFormat); -const uploadCoverage = gulp.series(coverage, shell.task(['cat bin/coverage/lcov.info | npx coveralls'])); +const uploadCoverage = gulp.series(coverage, shell.task([`cat bin/coverage/lcov.info | npx coveralls`])); function remapCoverage() { return gulp diff --git a/invalidate.cloudfront.js b/invalidate.cloudfront.js index 48f204c8c4..1059edd2fb 100644 --- a/invalidate.cloudfront.js +++ b/invalidate.cloudfront.js @@ -9,10 +9,10 @@ const shouldDoInvalidation = () => { if (!process.env.TRAVIS) { return false; } - if (!process.env.TRAVIS_TAG) { + if (!process.env.TAG_NAME) { return false; } - if (process.env.TRAVIS_TAG.indexOf('beta') != -1) { + if (process.env.TAG_NAME.indexOf('beta') != -1) { return false; } return true; diff --git a/karma.unit.test.conf.js b/karma.unit.test.conf.js index 52e274e399..55395fd6d1 100644 --- a/karma.unit.test.conf.js +++ b/karma.unit.test.conf.js @@ -4,7 +4,13 @@ process.env.CHROME_BIN = puppeteer.executablePath(); const configuration = { singleRun: true, - browsers: ['ChromeHeadless'], + browsers: ['ChromeHeadlessNoSandbox'], + customLaunchers: { + ChromeHeadlessNoSandbox: { + base: 'ChromeHeadless', + flags: ['--no-sandbox'] + } + }, frameworks: ['jasmine'], browserDisconnectTimeout: 120000, browserNoActivityTimeout: 120000, diff --git a/package.json b/package.json index 539662d754..ac6059d895 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "body-parser": "^1.18.2", "cheerio": "^0.20.0", "colors": "^1.1.2", + "compare-versions": "^3.6.0", "coveralls": "3.0.2", "css-loader": "^0.23.1", "del": "^3.0.0", @@ -124,7 +125,6 @@ "lint-staged": "^4.1.3", "node-fetch": "^2.6.1", "node-sass": "^4.14.1", - "npm-cli-login": "0.1.1", "null-loader": "^0.1.1", "pg": "^7.3.0", "plop": "^1.5.0", @@ -181,4 +181,4 @@ "@types/node": "~10.5.4" }, "snyk": true -} \ No newline at end of file +} diff --git a/read.version.sh b/read.version.sh index f706e74d6e..a59b0a9f3c 100644 --- a/read.version.sh +++ b/read.version.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/bash export PACKAGE_JSON_VERSION=`cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | sed -E 's/\.[0-9]+$//g' | xargs` export PACKAGE_PATCH_VERSION=`cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | sed -E 's/[0-9]+\.[0-9]+\.//g' | xargs` \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 376d2a9a7e..84c044e628 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1337,21 +1337,11 @@ buffer@^5.5.0: base64-js "^1.0.2" ieee754 "^1.1.4" -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -1927,6 +1917,11 @@ commander@^2.18.0, commander@^2.9.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -1980,7 +1975,7 @@ concat-stream@^1.4.7: readable-stream "^2.2.2" typedarray "^0.0.6" -concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.2: +concat-stream@^1.6.0, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -5119,13 +5114,6 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= - dependencies: - builtin-modules "^1.0.0" - is-callable@^1.1.4, is-callable@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" @@ -7105,15 +7093,6 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -"normalize-package-data@~1.0.1 || ^2.0.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" @@ -7154,49 +7133,12 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-cli-login@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/npm-cli-login/-/npm-cli-login-0.1.1.tgz#12e5bebc753cf433a3edab75be1d76f696c6fb86" - integrity sha512-IWEsRe/f6VWcKWPuQYHNEyKF5SPLjxS5Lyn2W4/Gxx4lxZLzo2HKIJgibVAH/rVN80mi7r75ahKUmSNMFDulGQ== - dependencies: - npm-registry-client "8.6.0" - snyk "^1.91.0" - -"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0": - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" - integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== - dependencies: - hosted-git-info "^2.7.1" - osenv "^0.1.5" - semver "^5.6.0" - validate-npm-package-name "^3.0.0" - npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" dependencies: which "^1.2.10" -npm-registry-client@8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" - integrity sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg== - dependencies: - concat-stream "^1.5.2" - graceful-fs "^4.1.6" - normalize-package-data "~1.0.1 || ^2.0.0" - npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - once "^1.3.3" - request "^2.74.0" - retry "^0.10.0" - safe-buffer "^5.1.1" - semver "2 >=2.2.1 || 3.x || 4 || 5" - slide "^1.1.3" - ssri "^5.2.4" - optionalDependencies: - npmlog "2 || ^3.1.0 || ^4.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7212,7 +7154,7 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -7394,7 +7336,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -7535,7 +7477,7 @@ osenv@0: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -osenv@^0.1.0, osenv@^0.1.5: +osenv@^0.1.0: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" dependencies: @@ -8865,7 +8807,7 @@ replacestream@^4.0.0: object-assign "^4.0.1" readable-stream "^2.0.2" -request@^2.55.0, request@^2.58.0, request@^2.74.0, request@^2.85.0: +request@^2.55.0, request@^2.58.0, request@^2.85.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" dependencies: @@ -9077,11 +9019,6 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= - rework-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" @@ -9284,11 +9221,7 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", semver@^5.0.1: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9297,6 +9230,10 @@ semver@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" +semver@^5.0.1: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -9465,7 +9402,7 @@ slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" -slide@^1.1.3, slide@^1.1.5: +slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -9529,26 +9466,6 @@ snyk-cpp-plugin@1.5.0: debug "^4.1.1" tslib "^2.0.0" -snyk-docker-plugin@3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-3.21.0.tgz#a92074c0411578c1a7b86852a06f1421770e985d" - integrity sha512-A7oJS3QGR7bwm1qeeczCb8PDfi8go1KM6VWph/drJHBQ7JxVKKLb3j4AzrMmIM96mGZFbmyNOL4pznwumaOM8g== - dependencies: - "@snyk/rpm-parser" "^2.0.0" - "@snyk/snyk-docker-pull" "^3.2.0" - debug "^4.1.1" - docker-modem "2.1.3" - dockerfile-ast "0.0.30" - event-loop-spinner "^2.0.0" - gunzip-maybe "^1.4.2" - mkdirp "^1.0.4" - semver "^6.1.0" - snyk-nodejs-lockfile-parser "1.28.1" - tar-stream "^2.1.0" - tmp "^0.2.1" - tslib "^1" - uuid "^8.2.0" - snyk-docker-plugin@3.23.0: version "3.23.0" resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-3.23.0.tgz#d873c574f8481e38cec40e2916e7728dee2467a7" @@ -9851,56 +9768,6 @@ snyk@^1.148.0: uuid "^3.3.2" wrap-ansi "^5.1.0" -snyk@^1.91.0: - version "1.398.1" - resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.398.1.tgz#19aec8dfffa60e7412e6309117e96b2cfa960355" - integrity sha512-jH24ztdJY8DQlqkd1z8n/JutdOqHtTPccCynM2hfOedW20yAp9c108LFjXvqBEk/EH3YyNmWzyLkkHOySeDkwQ== - dependencies: - "@snyk/cli-interface" "2.9.2" - "@snyk/dep-graph" "1.19.4" - "@snyk/gemfile" "1.2.0" - "@snyk/snyk-cocoapods-plugin" "2.5.1" - abbrev "^1.1.1" - ansi-escapes "3.2.0" - chalk "^2.4.2" - cli-spinner "0.2.10" - configstore "^5.0.1" - debug "^4.1.1" - diff "^4.0.1" - glob "^7.1.3" - graphlib "^2.1.8" - inquirer "^7.3.3" - lodash "^4.17.20" - needle "2.5.0" - open "^7.0.3" - os-name "^3.0.0" - proxy-agent "^3.1.1" - proxy-from-env "^1.0.0" - semver "^6.0.0" - snyk-config "3.1.1" - snyk-cpp-plugin "1.5.0" - snyk-docker-plugin "3.21.0" - snyk-go-plugin "1.16.2" - snyk-gradle-plugin "3.6.3" - snyk-module "3.1.0" - snyk-mvn-plugin "2.19.4" - snyk-nodejs-lockfile-parser "1.28.1" - snyk-nuget-plugin "1.19.3" - snyk-php-plugin "1.9.2" - snyk-policy "1.14.1" - snyk-python-plugin "1.17.1" - snyk-resolve "1.0.1" - snyk-resolve-deps "4.4.0" - snyk-sbt-plugin "2.11.0" - snyk-tree "^1.0.0" - snyk-try-require "1.3.1" - source-map-support "^0.5.11" - strip-ansi "^5.2.0" - tempfile "^2.0.0" - update-notifier "^4.1.0" - uuid "^3.3.2" - wrap-ansi "^5.1.0" - socket.io-adapter@~1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" @@ -10179,13 +10046,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== - dependencies: - safe-buffer "^5.1.1" - stack-trace@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -11214,13 +11074,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - value-or-function@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"