diff --git a/README.md b/README.md index 2bdc564..d06e60c 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,10 @@ Cypress.Allure.reporter.runtime.writer; ## Debugging -Execute `localStorage.debug = 'allure-plugin'` in DevTools console to see additional debug output. +- In-browser logs + execute `localStorage.debug = 'allure-plugin*'` in DevTools console +- Writer task + add `DEBUG=allure-plugin*` before cypress run\open command ## Examples diff --git a/cypress/integration/results/main.spec.js b/cypress/integration/results/main.spec.js index 1a8c093..c8df5d4 100644 --- a/cypress/integration/results/main.spec.js +++ b/cypress/integration/results/main.spec.js @@ -10,8 +10,6 @@ describe('Allure results', () => { ['basic', 'cucumber'].forEach((mode) => { it(`should contain suite results for ${mode}`, () => { const { suites, tests } = result[mode]; - console.log(mode); - console.log(result[mode]); expect(suites).to.have.length(1); expect(suites[0].children).to.have.length(mode === 'basic' ? 4 : 1); expect( diff --git a/reporter/commands.js b/reporter/commands.js index 3c0560c..aed9ed5 100644 --- a/reporter/commands.js +++ b/reporter/commands.js @@ -53,11 +53,7 @@ const childCommands = { for (const command in childCommands) { Cypress.Commands.add(command, { prevSubject: true }, (...args) => { const [allure] = args; - logger( - `[commands] starting command "%s" with args: %O`, - command, - args.slice(1) - ); + logger.command(`"%s" with args: %O`, command, args.slice(1)); childCommands[command](...args); cy.wrap(allure, { log: false }); }); diff --git a/reporter/debug.js b/reporter/debug.js index 66abbba..460ed7d 100644 --- a/reporter/debug.js +++ b/reporter/debug.js @@ -1,9 +1,15 @@ const debug = require('debug'); -const logger = debug('allure-plugin'); +const namespace = 'allure-plugin'; +const scopes = ['allure', 'mocha', 'cy', 'command', 'writer']; -// eslint-disable-next-line no-console -logger.log = console.log.bind(console); +const logger = scopes.reduce((loggers, scope) => { + const base = debug(`${namespace}:${scope}`); + // eslint-disable-next-line no-console + base.log = console.log.bind(console); + loggers[scope] = base; + return loggers; +}, {}); /** * Print out debug message @@ -13,5 +19,10 @@ logger.log = console.log.bind(console); * %d Number (both integer and float). * %j JSON. Replaced with the string '[Circular]' if the argument contains circular references. * %% Single percent sign ('%'). This does not consume an argument. + * @property {*} allure + * @property {*} mocha + * @property {*} cy + * @property {*} command + * @property {*} writer */ module.exports = logger; diff --git a/reporter/index.js b/reporter/index.js index 4084f84..244f31a 100644 --- a/reporter/index.js +++ b/reporter/index.js @@ -25,11 +25,11 @@ const logger = require('./debug'); const { env } = Cypress; const shouldEnableGherkinLogging = () => { - const logCypress = env().allureLogCypress; - const logGherkin = env().allureLogGherkin; + const logCypress = env('allureLogCypress'); + const logGherkin = env('allureLogGherkin'); - const isLogCypressDefined = typeof (logCypress !== 'undefined'); - const isLogGherkinDefined = typeof (logGherkin !== 'undefined'); + const isLogCypressDefined = typeof logCypress !== 'undefined'; + const isLogGherkinDefined = typeof logGherkin !== 'undefined'; // enable by default if (!isLogCypressDefined && !isLogGherkinDefined) { @@ -38,7 +38,7 @@ const shouldEnableGherkinLogging = () => { // inherit logCypress in case directly set if (isLogCypressDefined && !isLogGherkinDefined) { - return logCypress !== false; + return logCypress; } // use env var @@ -46,17 +46,16 @@ const shouldEnableGherkinLogging = () => { }; const config = { - allureEnabled: () => env().allure, - resultsPath: () => env().allureResultsPath || 'allure-results', - shouldLogCypress: () => env().allureLogCypress !== false, - shouldAttachRequests: () => env().allureAttachRequests, + allureEnabled: () => env('allure'), + resultsPath: () => env('allureResultsPath') || 'allure-results', + shouldLogCypress: () => env('allureLogCypress') !== false, + shouldAttachRequests: () => env('allureAttachRequests'), shouldLogGherkinSteps: () => shouldEnableGherkinLogging(), - allureDebug: () => env().allureDebug, clearFilesForPreviousAttempt: () => - env().allureOmitPreviousAttemptScreenshots, - clearSkipped: () => env().allureClearSkippedTests === true, - addAnalyticLabels: () => env().allureAddAnalyticLabels, - addVideoOnPass: () => env().allureAddVideoOnPass + env('allureOmitPreviousAttemptScreenshots'), + clearSkipped: () => env('allureClearSkippedTests') === true, + addAnalyticLabels: () => env('allureAddAnalyticLabels'), + addVideoOnPass: () => env('allureAddVideoOnPass') }; const shouldListenToCyCommandEvents = () => @@ -64,7 +63,10 @@ const shouldListenToCyCommandEvents = () => class CypressAllureReporter { constructor() { - logger(`creating allure reporter instance, cypress env: %O`, env()); + logger.allure( + `creating allure reporter instance, cypress env: %O`, + env() + ); this.reporter = new AllureReporter( new AllureRuntime({ resultsDir: config.resultsPath(), @@ -80,11 +82,11 @@ class CypressAllureReporter { Cypress.mocha .getRunner() .on(EVENT_SUITE_BEGIN, (suite) => { - logger(`[mocha] EVENT_SUITE_BEGIN: %s %O`, suite.title, suite); + logger.mocha(`EVENT_SUITE_BEGIN: %s %O`, suite.title, suite); this.reporter.startSuite(suite.fullTitle()); }) .on(EVENT_SUITE_END, (suite) => { - logger(`[mocha] EVENT_SUITE_END: %s %O`, suite.title, suite); + logger.mocha(`EVENT_SUITE_END: %s %O`, suite.title, suite); /** * only global cypress file suite end * should be triggered from here @@ -107,37 +109,37 @@ class CypressAllureReporter { ) // eslint-disable-next-line no-console .catch((e) => - logger( + logger.allure( `failed to execute task to write allure results: %O`, e ) ); - logger(`writing allure results`); + logger.allure(`writing allure results`); } catch (e) { // happens when cy.task could not be executed due to fired outside of it - logger(`failed to write allure results: %O`, e); + logger.allure(`failed to write allure results: %O`, e); } } }) .on(EVENT_TEST_BEGIN, (test) => { - logger(`[mocha] EVENT_TEST_BEGIN: %s %O`, test.title, test); + logger.mocha(`EVENT_TEST_BEGIN: %s %O`, test.title, test); this.reporter.startCase(test, config); }) .on(EVENT_TEST_FAIL, (test, err) => { - logger(`[mocha] EVENT_TEST_FAIL: %s %O`, test.title, test); + logger.mocha(`EVENT_TEST_FAIL: %s %O`, test.title, test); this.reporter.failTestCase(test, err); attachVideo(this.reporter, test, 'failed'); }) .on(EVENT_TEST_PASS, (test) => { - logger(`[mocha] EVENT_TEST_PASS: %s %O`, test.title, test); + logger.mocha(`EVENT_TEST_PASS: %s %O`, test.title, test); this.reporter.passTestCase(test); }) .on(EVENT_TEST_PENDING, (test) => { - logger(`[mocha] EVENT_TEST_PENDING: %s %O`, test.title, test); + logger.mocha(`EVENT_TEST_PENDING: %s %O`, test.title, test); this.reporter.pendingTestCase(test); }) .on(EVENT_TEST_END, (test) => { - logger(`[mocha] EVENT_TEST_END: %s %O`, test.title, test); + logger.mocha(`EVENT_TEST_END: %s %O`, test.title, test); attachVideo(this.reporter, test, 'finished'); this.reporter.populateGherkinLinksFromExampleTable(); @@ -145,31 +147,31 @@ class CypressAllureReporter { this.reporter.endTest(); }) .on(EVENT_HOOK_BEGIN, (hook) => { - logger(`[mocha] EVENT_HOOK_BEGIN: %s %O`, hook.title, hook); + logger.mocha(`EVENT_HOOK_BEGIN: %s %O`, hook.title, hook); this.reporter.startHook(hook); }) .on(EVENT_HOOK_END, (hook) => { - logger(`[mocha] EVENT_HOOK_END: %s %O`, hook.title, hook); + logger.mocha(`EVENT_HOOK_END: %s %O`, hook.title, hook); this.reporter.endHook(hook); }); Cypress.on('command:enqueued', (command) => { if (shouldListenToCyCommandEvents()) { - logger(`[cypress] command:enqueued %O`, command); + logger.cy(`command:enqueued %O`, command); this.reporter.cyCommandEnqueue(command); } }); Cypress.on('command:start', (command) => { if (shouldListenToCyCommandEvents()) { - logger(`[cypress] command:start %O`, command); + logger.cy(`command:start %O`, command); this.reporter.cyCommandStart(command.attributes); } }); Cypress.on('command:end', (command) => { if (shouldListenToCyCommandEvents()) { - logger(`[cypress] command:end %O`, command); + logger.cy(`command:end %O`, command); this.reporter.cyCommandEnd(command.attributes); } }); @@ -182,9 +184,9 @@ Cypress.Allure = config.allureEnabled() Cypress.Screenshot.defaults({ onAfterScreenshot(_, details) { - logger(`[cypress] onAfterScreenshot: %O`, details); + logger.cy(`onAfterScreenshot: %O`, details); if (config.allureEnabled()) { - logger(`[cypress] allure enabled, attaching screenshot`); + logger.allure(`allure enabled, attaching screenshot`); Cypress.Allure.reporter.files.push({ name: details.name || `${details.specName}:${details.takenAt}`, path: details.path, @@ -201,7 +203,7 @@ const attachVideo = (reporter, test, status) => { ? true : test.state !== 'failed' && config.addVideoOnPass(); - logger(`[allure] check video attachment`); + logger.allure(`check video attachment`); if (Cypress.config().video && reporter.currentTest) { // add video to failed test case or for passed in case addVideoOnPass is true @@ -231,8 +233,8 @@ const attachVideo = (reporter, test, status) => { return; } - logger( - `[allure] attaching video %s`, + logger.allure( + `attaching video %s`, path.join(relativeVideoPath, fileName) ); diff --git a/reporter/mocha-allure/AllureReporter.js b/reporter/mocha-allure/AllureReporter.js index df933a0..bd1cecb 100644 --- a/reporter/mocha-allure/AllureReporter.js +++ b/reporter/mocha-allure/AllureReporter.js @@ -119,35 +119,35 @@ module.exports = class AllureReporter { * but if previous suite is not global * it should be finished, and new one created */ - logger(`[allure] finish previous suite %O`, this.currentSuite); + logger.allure(`finish previous suite %O`, this.currentSuite); this.endSuite(true); } } const scope = this.currentSuite || this.runtime; const suite = scope.startGroup(suiteName || 'Global'); - logger(`[allure] start suite %O`, suite); + logger.allure(`start suite %O`, suite); this.pushSuite(suite); } endSuite(isGlobal = false) { if (this.currentSuite && isGlobal) { this.cyCommandsFinish(Status.PASSED); - logger(`[allure] finished cypress commands`); + logger.allure(`finished cypress commands`); this.finishAllSteps(Status.PASSED); - logger(`[allure] finished steps`); + logger.allure(`finished steps`); this.currentStep !== null && this.currentStep.endStep(); this.currentSuite.endGroup(); this.popSuite(); - logger(`[allure] finished suite`); + logger.allure(`finished suite`); } // restrict label storage to single suite scope this.labelStorage = []; } startCase(test, config) { - logger(`[allure] starting case %s %O`, test.title, test); + logger.allure(`starting case %s %O`, test.title, test); if (this.currentSuite === null) { - logger(`[allure] no active suite available`); + logger.allure(`no active suite available`); throw new Error('No active suite'); } @@ -163,7 +163,7 @@ module.exports = class AllureReporter { this.currentTest.info.status === 'skipped' && this.currentTest.info.name === test.title ) { - logger(`[allure] skipped test already exists`); + logger.allure(`skipped test already exists`); return; } @@ -180,7 +180,7 @@ module.exports = class AllureReporter { config.clearFilesForPreviousAttempt() && test._currentRetry > 0 ) { - logger(`[allure] clearing screenshots from previous retries`); + logger.allure(`clearing screenshots from previous retries`); // remove screenshots from previous attempt this.files = this.files.filter( (file) => file.testName !== test.title @@ -188,7 +188,7 @@ module.exports = class AllureReporter { } if (config && config.addAnalyticLabels()) { - logger(`[allure] adding analytic labels`); + logger.allure(`adding analytic labels`); this.currentTest.addLabel(LabelName.FRAMEWORK, 'Cypress'); const language = languageLabel(test); language && this.currentTest.addLabel(LabelName.LANGUAGE, language); @@ -225,7 +225,7 @@ module.exports = class AllureReporter { const { testState } = globalThis; if (testState.currentScenario.keyword === 'Scenario Outline') { - logger(`[allure] populating gherkin links from examples table`); + logger.allure(`populating gherkin links from examples table`); const scenario = testState.currentScenario; !this.gherkinExamplesStorage.length && @@ -274,13 +274,13 @@ module.exports = class AllureReporter { if (tmsCellIndex !== -1) { const tmsId = findTableCellValue(tmsCellIndex); - logger(`[allure] found tms link: %s`, issueId); + logger.allure(`found tms link: %s`, issueId); addScenarioTag('tms', tmsId); } if (issueCellIndex !== -1) { const issueId = findTableCellValue(issueCellIndex); - logger(`[allure] found issue link: %s`, issueId); + logger.allure(`found issue link: %s`, issueId); addScenarioTag('issue', issueId); } } @@ -291,7 +291,7 @@ module.exports = class AllureReporter { // accept cucumber tags from cypress-cucumber-preprocessor as commands handleCucumberTags() { if (globalThis && globalThis.testState) { - logger(`[allure] parsing gherkin tags`); + logger.allure(`parsing gherkin tags`); const { testState } = globalThis; const { currentTest } = this; @@ -303,7 +303,7 @@ module.exports = class AllureReporter { * to not be overwritten by feature tags */ ['feature', 'currentScenario'].forEach(function (type) { - logger(`[allure] tags for %s`, type); + logger.allure(`tags for %s`, type); testState[type] && testState[type].tags // check for labels @@ -366,38 +366,38 @@ module.exports = class AllureReporter { passTestCase(test) { if (this.currentTest === null) { - logger(`[allure] not found allure test, created new`); + logger.allure(`not found allure test, created new`); this.startCase(test); } this.updateTest(Status.PASSED); - logger(`[allure] set passed for test: %s %O`, test.title, test); + logger.allure(`set passed for test: %s %O`, test.title, test); } pendingTestCase(test) { this.startCase(test); this.updateTest(Status.SKIPPED, { message: 'Test ignored' }); - logger( - `[allure] created new test and set to pending: %s %O`, + logger.allure( + `created new test and set to pending: %s %O`, test.title, test ); } failTestCase(test, error) { - logger( - `[allure] received test failed event: %s, %O, %O`, + logger.allure( + `received test failed event: %s, %O, %O`, test.title, test, error ); if (this.currentTest === null) { - logger(`[allure] not found test, created new`); + logger.allure(`not found test, created new`); this.startCase(test); } else { const latestStatus = this.currentTest.status; // if test already has a failed state, we should not overwrite it if (latestStatus && latestStatus !== Status.PASSED) { - logger(`[allure] test already has failed status`); + logger.allure(`test already has failed status`); return; } } @@ -409,7 +409,7 @@ module.exports = class AllureReporter { * in case error comes from hook */ if (test.type === 'hook') { - logger(`[allure] test error origin is hook`); + logger.allure(`test error origin is hook`); this.endHook(test, true); /** * in case of before all cypress creates new test @@ -418,8 +418,8 @@ module.exports = class AllureReporter { */ if (test.hookName && test.hookName === 'before all') { - logger( - `[allure] finishing test as no events received for failed test in before all hook` + logger.allure( + `finishing test as no events received for failed test in before all hook` ); this.endTest(); } @@ -461,9 +461,9 @@ module.exports = class AllureReporter { } startHook(hook) { - logger(`[allure] starting hook %s`, hook.title); + logger.allure(`starting hook %s`, hook.title); if (!this.currentSuite || isEmpty(hook)) { - logger(`[allure] no suite or hook is empty function`); + logger.allure(`no suite or hook is empty function`); return; } /** @@ -494,9 +494,9 @@ module.exports = class AllureReporter { } endHook(hook, failed = false) { - logger(`[allure] finishing hook %s`, hook.title); + logger.allure(`finishing hook %s`, hook.title); if (!this.currentSuite || !this.currentHook || isEmpty(hook)) { - logger(`[allure] no suite or no hook or hook is empty function`); + logger.allure(`no suite or no hook or hook is empty function`); return; } // should define results property for all or each hook @@ -546,7 +546,7 @@ module.exports = class AllureReporter { } endTest() { - logger(`[allure] finishing current test`); + logger.allure(`finishing current test`); this.currentTest && this.currentTest.endTest(); } @@ -576,11 +576,7 @@ module.exports = class AllureReporter { } cyCommandEnqueue(attributes) { - logger( - `[allure:cy] cyCommandEnqueue: %s %O`, - attributes.name, - attributes - ); + logger.cy(`cyCommandEnqueue: %s %O`, attributes.name, attributes); // skipped are: // assertions, as they don't receive command:start and command:end events and are hardly trackable // allure custom command used for interacting with allure api @@ -601,13 +597,13 @@ module.exports = class AllureReporter { }; if (commandShouldBeSkipped(attributes)) { - logger(`[allure:cy] command should be skipped`); + logger.cy(`command should be skipped`); return; } // handle case when nothing should be logged if (!this.logCypress && !this.logGherkinSteps) { - logger(`[allure:cy] logging cy commands is disabled`); + logger.cy(`logging cy commands is disabled`); return; } @@ -617,7 +613,7 @@ module.exports = class AllureReporter { !this.logCypress && !attributeIsGherkinStep(attributes) ) { - logger(`[allure:cy] is not a gherkin step`); + logger.cy(`is not a gherkin step`); return; } @@ -635,7 +631,7 @@ module.exports = class AllureReporter { }; this.commands.push(command); - logger(`[allure:cy] tracking command: %O`, command); + logger.cy(`tracking command: %O`, command); // in case command in enqueued while there was active chainer - treat it as parent // so this command should be added as child to track if we should finish parent command step @@ -645,16 +641,12 @@ module.exports = class AllureReporter { ); // set new child from start as command queue works as LIFO (last in - first out) approach parent && parent.children.unshift(command.id); - logger(`[allure:cy] added as child of command: %O`, parent); + logger.cy(`added as child of command: %O`, parent); } } cyCommandStart(attributes) { - logger( - `[allure:cy] cyCommandStart: %s %O`, - attributes.name, - attributes - ); + logger.cy(`cyCommandStart: %s %O`, attributes.name, attributes); // check if we have enqueued command const command = this.commands.find( (command) => @@ -665,11 +657,11 @@ module.exports = class AllureReporter { ); if (!command) { - logger(`[allure:cy] command not available`); + logger.cy(`command not available`); return; } - logger(`[allure:cy] tracked info about command: %O`, command); + logger.cy(`tracked info about command: %O`, command); command.commandLog = attributes; @@ -686,7 +678,7 @@ module.exports = class AllureReporter { const executable = this.cyCommandExecutable(command); const displayArg = (arg) => { - logger(`checking argument %O and provide to step`, arg); + logger.cy(`checking argument %O and provide to step`, arg); if (typeof arg === 'function') { return '[function]'; } @@ -719,11 +711,7 @@ module.exports = class AllureReporter { `${command.name}${commandArgs ? ` (${commandArgs})` : ''}` ); - logger( - `[allure:cy] started allure step %s %O`, - step.info.name, - step - ); + logger.cy(`started allure step %s %O`, step.info.name, step); command.step = step; } @@ -731,7 +719,7 @@ module.exports = class AllureReporter { } cyCommandEnd(attributes, failed = false) { - logger(`[allure:cy] cyCommandEnd: %s %O`, attributes.name, attributes); + logger.cy(`cyCommandEnd: %s %O`, attributes.name, attributes); // check if we have enqueued command const command = this.commands.find( (command) => @@ -742,20 +730,20 @@ module.exports = class AllureReporter { ); if (!command) { - logger(`[allure:cy] command not available`); + logger.cy(`command not available`); return; } - logger(`[allure:cy] tracked info about command: %O`, command); + logger.cy(`tracked info about command: %O`, command); this.currentChainer = null; // in case no children enqueued - finish this step if (!command.children.length || failed) { - logger(`[allure:cy] no children enqueued left, finishing step`); + logger.cy(`no children enqueued left, finishing step`); // check if command has some entries for command log if (command.commandLog.logs.length) { - logger( - `[allure:cy] found command log entries %O`, + logger.cy( + `found command log entries %O`, command.commandLog.logs ); // set first command log (which refers to current command) as last @@ -770,18 +758,18 @@ module.exports = class AllureReporter { try { log = entry.toJSON(); } catch (e) { - logger( - `[allure:cy] could not call toJSON for command log entry #%d, %O`, + logger.cy( + `could not call toJSON for command log entry #%d, %O`, index, entry ); return; } - logger(`[allure:cy] checking entry #%d, %O`, index, log); + logger.cy(`checking entry #%d, %O`, index, log); // for main log (which we set last) we should finish command step if (index === command.commandLog.logs.length - 1) { - logger(`[allure:cy] last entry, finishing step`); + logger.cy(`last entry, finishing step`); // in case "then" command has some logging - create step for that if (callbacks.includes(command.name)) { const executable = @@ -798,16 +786,13 @@ module.exports = class AllureReporter { executable, log ); - logger( - `[allure:cy] creating step for then's %O`, - step - ); + logger.cy(`creating step for then's %O`, step); command.step = step; if (log.name === 'step') { - logger( - `[allure:cy] found gherkin step, finishing all current steps` + logger.cy( + `found gherkin step, finishing all current steps` ); this.finishAllSteps( command.passed @@ -835,8 +820,8 @@ module.exports = class AllureReporter { }); const step = this.cyStartStepForLog(executable, log); - logger( - `[allure:cy] attaching command log entries as allure steps %O`, + logger.cy( + `attaching command log entries as allure steps %O`, step ); @@ -846,8 +831,8 @@ module.exports = class AllureReporter { } }); } else { - logger( - `[allure:cy] no command log entries, finish step %O`, + logger.cy( + `no command log entries, finish step %O`, command.step ); this.cyCommandEndStep( @@ -877,13 +862,13 @@ module.exports = class AllureReporter { return; } - logger(`[allure:cy] command has parent, %O`, parent); + logger.cy(`command has parent, %O`, parent); const childIndex = parent.children.indexOf(child.id); // if found child - remove it from parent if (childIndex > -1) { - logger(`[allure:cy] removing child from parent %O`, parent); + logger.cy(`removing child from parent %O`, parent); parent.children.splice(childIndex, 1); // update status of parent in case any of children failed if (!child.passed || failed) { @@ -893,8 +878,8 @@ module.exports = class AllureReporter { // finish parent step when no children left or when test is failed if (!parent.children.length || failed) { - logger( - `[allure:cy] finish parent step as no other children left %O`, + logger.cy( + `finish parent step as no other children left %O`, parent ); !parent.passed && (failed = true); @@ -987,11 +972,7 @@ module.exports = class AllureReporter { !logNameNoOverride.includes(log.name) ) { step.info.name = `${log.name} ${log.message}`; - logger( - `[allure:cy] changing step name to "%s" %O`, - step.info.name, - step - ); + logger.cy(`changing step name to "%s" %O`, step.info.name, step); } const passed = @@ -1008,7 +989,7 @@ module.exports = class AllureReporter { } cyStartStepForLog(executable, log) { - logger(`[allure:cy] creating step for command log entry %O`, log); + logger.cy(`creating step for command log entry %O`, log); // define step name based on cypress log name or messages const messages = { xhr: () => @@ -1060,7 +1041,7 @@ module.exports = class AllureReporter { ? JSON.stringify(value, getCircularReplacer(), 2) : value; - logger( + logger.cy( '[allure:cy] adding actual and expected as a parameter %O', log ); diff --git a/writer.js b/writer.js index dffbbe0..695bdce 100644 --- a/writer.js +++ b/writer.js @@ -2,6 +2,7 @@ const path = require('path'); const fs = require('fs'); const uuid = require('uuid'); const crypto = require('crypto-js'); +const logger = require('./reporter/debug'); function allureWriter(on, config) { // pass allure config from Cypress.env to process.env @@ -16,6 +17,10 @@ function allureWriter(on, config) { on('task', { writeAllureResults: ({ results, files, clearSkipped }) => { const { resultsDir, writer } = results; + logger.writer( + 'starting writing allure results to "%s"', + resultsDir + ); const { groups, tests, @@ -35,6 +40,11 @@ function allureWriter(on, config) { resultsDir, `${uuid.v4()}-attachment${ext}` ); + logger.writer( + 'copy attachment "%s" to "%s"', + file.path, + allureFilePath + ); fs.copyFileSync(file.path, allureFilePath); @@ -49,6 +59,11 @@ function allureWriter(on, config) { ); testsForAttachment.forEach((test) => { + logger.writer( + 'attach "%s" to test "%s"', + path.basename(allureFilePath), + test.name + ); test.attachments.push({ name: file.name, type: file.type, @@ -62,7 +77,10 @@ function allureWriter(on, config) { groups.forEach((group) => { if (group.children.length) { if (clearSkipped) { - // clear skipped tests from suite + logger.writer( + 'clearing skipped tests enabled, removing tests from suite %s', + group.name + ); group.children = group.children.filter( (testId) => { const test = tests.find( @@ -73,8 +91,10 @@ function allureWriter(on, config) { ); } ); - // skip suite if no tests assigned if (!group.children.length) { + logger.writer( + 'skip suite as it has no tests remained' + ); return; } } @@ -85,6 +105,12 @@ function allureWriter(on, config) { fileName ); + logger.writer( + 'write suite "%s" to file "%s"', + group.name, + fileName + ); + // remove empty set up and tear down global hooks group.befores = (group.befores && @@ -109,10 +135,16 @@ function allureWriter(on, config) { tests && tests.forEach((test) => { if (clearSkipped && test.status === 'skipped') { + logger.writer('skipping test "%s"', test.name); return; } const fileName = `${test.uuid}-result.json`; + logger.writer( + 'write test "%s" to file "%s"', + test.name, + fileName + ); const testResultPath = path.join(resultsDir, fileName); const testResult = overwriteTestNameMaybe(test); !fs.existsSync(testResultPath) && @@ -124,6 +156,13 @@ function allureWriter(on, config) { if (attachments) { for (let [name, content] of Object.entries(attachments)) { const attachmentPath = path.join(resultsDir, name); + + logger.writer( + 'write attachment "%s" to "%s"', + name, + attachmentPath + ); + !fs.existsSync(attachmentPath) && fs.writeFileSync(attachmentPath, content, { encoding: 'binary' @@ -133,10 +172,12 @@ function allureWriter(on, config) { writeInfoFile('categories.json', categories, resultsDir); writeInfoFile('executor.json', executorInfo, resultsDir); writeInfoFile('environment.properties', envInfo, resultsDir); + logger.writer('finished writing allure results'); } catch (e) { process.stdout.write( `error while writing allure results: ${e}` ); + logger.writer('failed to write allure results: %O', e); } finally { return null; } @@ -146,6 +187,7 @@ function allureWriter(on, config) { const writeInfoFile = (fileName, data, resultsDir) => { if (data) { + logger.writer('write file "%s"', fileName); const isEnvProps = fileName === 'environment.properties'; isEnvProps && (data = Object.keys(data) @@ -229,6 +271,7 @@ const overwriteTestNameMaybe = (test) => { ); if (overrideIndex !== -1) { const name = test.parameters[overrideIndex].value; + logger.writer('overwriting test "%s" name to "%s"', test.name, name); test.name = name; test.fullName = name; test.historyId = crypto.MD5(name).toString(crypto.enc.Hex); diff --git a/yarn.lock b/yarn.lock index 11a9eb8..9446488 100644 --- a/yarn.lock +++ b/yarn.lock @@ -859,7 +859,7 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/arborist@*", "@npmcli/arborist@^2.3.0", "@npmcli/arborist@^2.5.0": +"@npmcli/arborist@^2.3.0", "@npmcli/arborist@^2.5.0", "@npmcli/arborist@^2.8.3": version "2.8.3" resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-2.8.3.tgz#5569e7d2038f6893abc81f9c879f497b506e6980" integrity sha512-miFcxbZjmQqeFTeRSLLh+lc/gxIKDO5L4PVCp+dp+kmcwJmYsEJmF7YvHR2yi3jF+fxgvLf3CCFzboPIXAuabg== @@ -896,12 +896,12 @@ treeverse "^1.0.4" walk-up-path "^1.0.0" -"@npmcli/ci-detect@*", "@npmcli/ci-detect@^1.3.0": +"@npmcli/ci-detect@^1.2.0", "@npmcli/ci-detect@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== -"@npmcli/config@*": +"@npmcli/config@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-2.3.0.tgz#364fbe942037e562a832a113206e14ccb651f7bc" integrity sha512-yjiC1xv7KTmUTqfRwN2ZL7BHV160ctGF0fLXmKkkMXj40UOvBe45Apwvt5JsFRtXSoHkUYy1ouzscziuWNzklg== @@ -949,7 +949,7 @@ npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -"@npmcli/map-workspaces@*", "@npmcli/map-workspaces@^1.0.2": +"@npmcli/map-workspaces@^1.0.2", "@npmcli/map-workspaces@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz#915708b55afa25e20bc2c14a766c124c2c5d4cab" integrity sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q== @@ -986,7 +986,7 @@ resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== -"@npmcli/package-json@*", "@npmcli/package-json@^1.0.1": +"@npmcli/package-json@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89" integrity sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg== @@ -1000,7 +1000,7 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@*", "@npmcli/run-script@^1.8.2", "@npmcli/run-script@^1.8.3", "@npmcli/run-script@^1.8.4": +"@npmcli/run-script@^1.8.2", "@npmcli/run-script@^1.8.3", "@npmcli/run-script@^1.8.4", "@npmcli/run-script@^1.8.6": version "1.8.6" resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== @@ -1258,7 +1258,7 @@ JSONStream@^1.0.3, JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abbrev@*, abbrev@1: +abbrev@1, abbrev@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -1377,12 +1377,12 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: dependencies: color-convert "^2.0.1" -ansicolors@*, ansicolors@~0.3.2: +ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= -ansistyles@*: +ansistyles@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= @@ -1415,7 +1415,7 @@ arch@^2.2.0: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -archy@*: +archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= @@ -1986,7 +1986,7 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= -cacache@*, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: +cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -2094,14 +2094,6 @@ chai@^4.1.2: pathval "^1.1.1" type-detect "^4.0.5" -chalk@*, chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -2122,6 +2114,14 @@ chalk@^2.0.0, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" @@ -2151,7 +2151,7 @@ chokidar@^2.0.4, chokidar@^2.1.1: optionalDependencies: fsevents "^1.2.7" -chownr@*, chownr@^2.0.0: +chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== @@ -2191,13 +2191,13 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-columns@*: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" - integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ== +cli-columns@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" + integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= dependencies: - string-width "^4.2.3" - strip-ansi "^6.0.1" + string-width "^2.0.0" + strip-ansi "^3.0.1" cli-cursor@^1.0.2: version "1.0.2" @@ -2213,7 +2213,7 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-table3@*, cli-table3@^0.6.0, cli-table3@~0.6.0: +cli-table3@^0.6.0, cli-table3@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== @@ -2329,7 +2329,7 @@ colors@^1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -columnify@*: +columnify@~1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= @@ -3413,7 +3413,7 @@ fast-safe-stringify@^2.0.7: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== -fastest-levenshtein@*: +fastest-levenshtein@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== @@ -3726,7 +3726,7 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob@*, glob@^7.0.0, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -3769,7 +3769,7 @@ globby@^11.0.0, globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@*, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.8: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -3900,18 +3900,18 @@ hook-std@^2.0.0: resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== -hosted-git-info@*, hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1, hosted-git-info@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== dependencies: lru-cache "^6.0.0" -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - htmlescape@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" @@ -4057,7 +4057,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@*, ini@2.0.0, ini@^2.0.0: +ini@2.0.0, ini@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== @@ -4067,7 +4067,7 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@*: +init-package-json@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== @@ -4166,7 +4166,7 @@ is-ci@^3.0.0: dependencies: ci-info "^3.1.1" -is-cidr@*: +is-cidr@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.2.tgz#94c7585e4c6c77ceabf920f8cde51b8c0fda8814" integrity sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA== @@ -4445,7 +4445,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@*, json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -4592,7 +4592,7 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -libnpmaccess@*: +libnpmaccess@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== @@ -4602,7 +4602,7 @@ libnpmaccess@*: npm-package-arg "^8.1.2" npm-registry-fetch "^11.0.0" -libnpmdiff@*: +libnpmdiff@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-2.0.4.tgz#bb1687992b1a97a8ea4a32f58ad7c7f92de53b74" integrity sha512-q3zWePOJLHwsLEUjZw3Kyu/MJMYfl4tWCg78Vl6QGSfm4aXBUSVzMzjJ6jGiyarsT4d+1NH4B1gxfs62/+y9iQ== @@ -4616,7 +4616,7 @@ libnpmdiff@*: pacote "^11.3.0" tar "^6.1.0" -libnpmexec@*: +libnpmexec@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-2.0.1.tgz#729ae3e15a3ba225964ccf248117a75d311eeb73" integrity sha512-4SqBB7eJvJWmUKNF42Q5qTOn20DRjEE4TgvEh2yneKlAiRlwlhuS9MNR45juWwmoURJlf2K43bozlVt7OZiIOw== @@ -4633,14 +4633,14 @@ libnpmexec@*: read-package-json-fast "^2.0.2" walk-up-path "^1.0.0" -libnpmfund@*: +libnpmfund@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-1.1.0.tgz#ee91313905b3194b900530efa339bc3f9fc4e5c4" integrity sha512-Kfmh3pLS5/RGKG5WXEig8mjahPVOxkik6lsbH4iX0si1xxNi6eeUh/+nF1MD+2cgalsQif3O5qyr6mNz2ryJrQ== dependencies: "@npmcli/arborist" "^2.5.0" -libnpmhook@*: +libnpmhook@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-6.0.3.tgz#1d7f0d7e6a7932fbf7ce0881fdb0ed8bf8748a30" integrity sha512-3fmkZJibIybzmAvxJ65PeV3NzRc0m4xmYt6scui5msocThbEp4sKFT80FhgrCERYDjlUuFahU6zFNbJDHbQ++g== @@ -4648,7 +4648,7 @@ libnpmhook@*: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmorg@*: +libnpmorg@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-2.0.3.tgz#4e605d4113dfa16792d75343824a0625c76703bc" integrity sha512-JSGl3HFeiRFUZOUlGdiNcUZOsUqkSYrg6KMzvPZ1WVZ478i47OnKSS0vkPmX45Pai5mTKuwIqBMcGWG7O8HfdA== @@ -4656,7 +4656,7 @@ libnpmorg@*: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmpack@*: +libnpmpack@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-2.0.1.tgz#d3eac25cc8612f4e7cdeed4730eee339ba51c643" integrity sha512-He4/jxOwlaQ7YG7sIC1+yNeXeUDQt8RLBvpI68R3RzPMZPa4/VpxhlDo8GtBOBDYoU8eq6v1wKL38sq58u4ibQ== @@ -4665,7 +4665,7 @@ libnpmpack@*: npm-package-arg "^8.1.0" pacote "^11.2.6" -libnpmpublish@*: +libnpmpublish@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== @@ -4676,14 +4676,14 @@ libnpmpublish@*: semver "^7.1.3" ssri "^8.0.1" -libnpmsearch@*: +libnpmsearch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-3.1.2.tgz#aee81b9e4768750d842b627a3051abc89fdc15f3" integrity sha512-BaQHBjMNnsPYk3Bl6AiOeVuFgp72jviShNBw5aHaHNKWqZxNi38iVNoXbo6bG/Ccc/m1To8s0GtMdtn6xZ1HAw== dependencies: npm-registry-fetch "^11.0.0" -libnpmteam@*: +libnpmteam@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-2.0.4.tgz#9dbe2e18ae3cb97551ec07d2a2daf9944f3edc4c" integrity sha512-FPrVJWv820FZFXaflAEVTLRWZrerCvfe7ZHSMzJ/62EBlho2KFlYKjyNEsPW3JiV7TLSXi3vo8u0gMwIkXSMTw== @@ -4691,7 +4691,7 @@ libnpmteam@*: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmversion@*: +libnpmversion@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-1.2.1.tgz#689aa7fe0159939b3cbbf323741d34976f4289e9" integrity sha512-AA7x5CFgBFN+L4/JWobnY5t4OAHjQuPbAwUYJ7/NtHuyLut5meb+ne/aj0n7PWNiTGCJcRw/W6Zd2LoLT7EZuQ== @@ -4842,7 +4842,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-fetch-happen@*, make-fetch-happen@^9.0.1: +make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -4864,27 +4864,6 @@ make-fetch-happen@*, make-fetch-happen@^9.0.1: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -make-fetch-happen@^8.0.14: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -5086,7 +5065,7 @@ minipass-json-stream@^1.0.1: jsonparse "^1.3.1" minipass "^3.0.0" -minipass-pipeline@*, minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== @@ -5100,7 +5079,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@*, minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.1.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== @@ -5128,7 +5107,7 @@ mkdirp-classic@^0.5.2: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp-infer-owner@*, mkdirp-infer-owner@^2.0.0: +mkdirp-infer-owner@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== @@ -5137,11 +5116,6 @@ mkdirp-infer-owner@*, mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mkdirp@^0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -5149,6 +5123,11 @@ mkdirp@^0.5.0: dependencies: minimist "^1.2.5" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -5175,11 +5154,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -ms@*, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5190,6 +5164,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -5277,23 +5256,7 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-gyp@*: - version "8.2.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.2.0.tgz#ef509ccdf5cef3b4d93df0690b90aa55ff8c7977" - integrity sha512-KG8SdcoAnw2d6augGwl1kOayALUrXW/P2uOAm2J2+nmW/HjZo7y+8TDg7LejxbekOOSv3kzhq+NSUYkIDAX8eA== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^8.0.14" - nopt "^5.0.0" - npmlog "^4.1.2" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - -node-gyp@^7.1.0: +node-gyp@^7.1.0, node-gyp@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== @@ -5314,7 +5277,7 @@ node-releases@^1.1.76: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e" integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== -nopt@*, nopt@^5.0.0: +nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== @@ -5358,7 +5321,7 @@ normalize-url@^6.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-audit-report@*: +npm-audit-report@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-2.1.5.tgz#a5b8850abe2e8452fce976c8960dd432981737b5" integrity sha512-YB8qOoEmBhUH1UJgh1xFAv7Jg1d+xoNhsDYiFQlEFThEBui0W1vIz2ZK6FVg4WZjwEdl7uBQlm1jy3MUfyHeEw== @@ -5372,7 +5335,7 @@ npm-bundled@^1.1.1: dependencies: npm-normalize-package-bin "^1.0.1" -npm-install-checks@*, npm-install-checks@^4.0.0: +npm-install-checks@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== @@ -5384,7 +5347,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@*, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -5403,7 +5366,7 @@ npm-packlist@^2.1.4: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@*, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -5413,14 +5376,14 @@ npm-pick-manifest@*, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pic npm-package-arg "^8.1.2" semver "^7.3.4" -npm-profile@*: +npm-profile@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-5.0.4.tgz#73e5bd1d808edc2c382d7139049cc367ac43161b" integrity sha512-OKtU7yoAEBOnc8zJ+/uo5E4ugPp09sopo+6y1njPp+W99P8DvQon3BJYmpvyK2Bf1+3YV5LN1bvgXRoZ1LUJBA== dependencies: npm-registry-fetch "^11.0.0" -npm-registry-fetch@*, npm-registry-fetch@^11.0.0: +npm-registry-fetch@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== @@ -5439,7 +5402,7 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npm-user-validate@*: +npm-user-validate@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.1.tgz#31428fc5475fe8416023f178c0ab47935ad8c561" integrity sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw== @@ -5519,16 +5482,6 @@ npm@^7.0.0: which "^2.0.2" write-file-atomic "^3.0.3" -npmlog@*: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -5539,6 +5492,16 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5611,7 +5574,7 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -opener@*: +opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== @@ -5725,7 +5688,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pacote@*, pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1, pacote@^11.3.5: +pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1, pacote@^11.3.5: version "11.3.5" resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== @@ -5787,7 +5750,7 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-conflict-json@*, parse-conflict-json@^1.1.1: +parse-conflict-json@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz#54ec175bde0f2d70abf6be79e0e042290b86701b" integrity sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw== @@ -6035,7 +5998,7 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qrcode-terminal@*: +qrcode-terminal@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== @@ -6107,7 +6070,7 @@ read-only-stream@^2.0.0: dependencies: readable-stream "^2.0.2" -read-package-json-fast@*, read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -6115,7 +6078,7 @@ read-package-json-fast@*, read-package-json-fast@^2.0.1, read-package-json-fast@ json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-package-json@*, read-package-json@^4.1.1: +read-package-json@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== @@ -6144,7 +6107,7 @@ read-pkg@^5.0.0, read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@*, read@1, read@^1.0.7, read@~1.0.1: +read@1, read@^1.0.7, read@~1.0.1, read@~1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= @@ -6173,7 +6136,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdir-scoped-modules@*, readdir-scoped-modules@^1.1.0: +readdir-scoped-modules@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -6407,7 +6370,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@*, rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -6509,13 +6472,6 @@ semver-regex@^3.1.2: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.3.tgz#b2bcc6f97f63269f286994e297e229b6245d0dc3" integrity sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ== -semver@*, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -6531,6 +6487,13 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + serialize-error@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" @@ -6668,15 +6631,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - socks-proxy-agent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz#869cf2d7bd10fea96c7ad3111e81726855e285c3" @@ -6686,7 +6640,7 @@ socks-proxy-agent@^6.0.0: debug "^4.3.1" socks "^2.6.1" -socks@^2.3.3, socks@^2.6.1: +socks@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== @@ -6804,7 +6758,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@*, ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== @@ -6912,7 +6866,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.1 || ^2.0.0", "string-width@^1.0.2 || 2": +"string-width@^1.0.1 || ^2.0.0", "string-width@^1.0.2 || 2", string-width@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6920,7 +6874,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7056,7 +7010,7 @@ table@^6.0.9: string-width "^4.2.0" strip-ansi "^6.0.0" -tar@*, tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -7089,7 +7043,7 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@*, text-table@^0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -7140,7 +7094,7 @@ timers-browserify@^1.0.1: dependencies: process "~0.11.0" -tiny-relative-date@*: +tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== @@ -7220,7 +7174,7 @@ traverse@~0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= -treeverse@*, treeverse@^1.0.4: +treeverse@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== @@ -7511,7 +7465,7 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@*, validate-npm-package-name@^3.0.0: +validate-npm-package-name@^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= @@ -7570,7 +7524,7 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which@*, which@^2.0.1, which@^2.0.2: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -7617,7 +7571,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@*, write-file-atomic@^3.0.3: +write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==