mirror of https://github.com/embarklabs/embark.git
refactor: coverage now reacts instead of being told what to do
This commit is contained in:
parent
1456ec60b7
commit
988e6399a0
|
@ -142,6 +142,7 @@ export class ContractEnhanced {
|
|||
line,
|
||||
loc: location,
|
||||
name,
|
||||
decl: location
|
||||
};
|
||||
this.coverage.f[coverageId] = 0;
|
||||
this.functionsBodyLocation[coverageId] = bodyLocation;
|
||||
|
|
|
@ -18,14 +18,25 @@ export default class Coverage {
|
|||
constructor(private embark: Embark, options: any) {
|
||||
this.fs = embark.fs;
|
||||
this.fs.ensureDirSync(coverageContractsPath());
|
||||
this.originalContractFiles = embark.config.contractsFiles;
|
||||
|
||||
this.contracts = this.getContracts();
|
||||
this.contracts = [];
|
||||
|
||||
this.embark.events.setCommandHandler("coverage:prepareContracts", async (done) => {
|
||||
if (!options.coverage) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.embark.registerActionForEvent('tests:contracts:compile:before', async (contractsFiles, cb) => {
|
||||
const solcVersion = this.embark.config.embarkConfig.versions.solc;
|
||||
const enhancedContracts = contractsFiles.map((file: File) => new ContractEnhanced(file.path, solcVersion));
|
||||
|
||||
this.mergeContracts(enhancedContracts);
|
||||
await this.prepareContracts();
|
||||
this.swapContracts();
|
||||
done();
|
||||
|
||||
contractsFiles.forEach((cf: any) => {
|
||||
cf.path = path.join(coverageContractsPath(), cf.path);
|
||||
});
|
||||
|
||||
cb(null, contractsFiles);
|
||||
});
|
||||
|
||||
this.embark.events.on("tests:ready", this.pushDeployedContracts.bind(this));
|
||||
|
@ -33,9 +44,14 @@ export default class Coverage {
|
|||
this.embark.events.on("tests:manualDeploy", this.registerWeb3Contract.bind(this));
|
||||
}
|
||||
|
||||
private getContracts() {
|
||||
const solcVersion = this.embark.config.embarkConfig.versions.solc;
|
||||
return this.originalContractFiles.map((file) => new ContractEnhanced(file.path, solcVersion));
|
||||
private async mergeContracts(contracts: ContractEnhanced[]) {
|
||||
contracts.forEach((contract: ContractEnhanced) => {
|
||||
if (this.contracts.some((cc: ContractEnhanced) => cc.filepath === contract.filepath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.contracts.push(contract);
|
||||
});
|
||||
}
|
||||
|
||||
private async prepareContracts() {
|
||||
|
@ -46,14 +62,6 @@ export default class Coverage {
|
|||
await Promise.all(promises);
|
||||
}
|
||||
|
||||
private swapContracts() {
|
||||
this.embark.config.embarkConfig.contracts = this.originalContractFiles.map((file: File) => (
|
||||
path.join(coverageContractsPath(), file.path)
|
||||
));
|
||||
this.embark.config.contractsFiles = [];
|
||||
this.embark.config.reloadConfig();
|
||||
}
|
||||
|
||||
private async pushDeployedContracts() {
|
||||
const newContracts = await this.getDeployedContracts();
|
||||
this.deployedContracts = this.deployedContracts.concat(newContracts);
|
||||
|
|
|
@ -26,6 +26,7 @@ export interface Coverage {
|
|||
[functionId: number]: {
|
||||
line: number;
|
||||
loc: Location;
|
||||
decl: Location;
|
||||
name: string;
|
||||
skip?: boolean;
|
||||
};
|
||||
|
|
|
@ -9,13 +9,14 @@ const JAVASCRIPT_TEST_MATCH = /^.+\.js$/i;
|
|||
const TEST_TIMEOUT = 15000; // 15 seconds in milliseconds
|
||||
|
||||
class MochaTestRunner {
|
||||
constructor(embark, _options) {
|
||||
constructor(embark, options) {
|
||||
this.embark = embark;
|
||||
this.events = embark.events;
|
||||
this.plugins = options.plugins;
|
||||
|
||||
this.files = [];
|
||||
|
||||
const { events } = embark;
|
||||
events.request('tests:runner:register',
|
||||
this.events.request('tests:runner:register',
|
||||
'JavaScript (Mocha)',
|
||||
this.match.bind(this),
|
||||
this.addFile.bind(this),
|
||||
|
@ -36,7 +37,7 @@ class MochaTestRunner {
|
|||
}
|
||||
|
||||
run(options, cb) {
|
||||
const {events} = this.embark;
|
||||
const {events, plugins} = this;
|
||||
const {reporter} = options;
|
||||
|
||||
const Module = require("module");
|
||||
|
@ -104,17 +105,17 @@ class MochaTestRunner {
|
|||
events.request("contracts:reset", next);
|
||||
},
|
||||
(next) => { // get contract files
|
||||
if (!options.coverage) {
|
||||
return events.request("config:contractsFiles", next);
|
||||
}
|
||||
|
||||
events.request("coverage:prepareContracts", () => {
|
||||
events.request("config:contractsFiles", next);
|
||||
});
|
||||
events.request("config:contractsFiles", next);
|
||||
},
|
||||
(cf, next) => {
|
||||
plugins.emitAndRunActionsForEvent('tests:contracts:compile:before', cf, next);
|
||||
},
|
||||
(cf, next) => { // compile contracts
|
||||
events.request("compiler:contracts:compile", cf, next);
|
||||
},
|
||||
(cc, next) => {
|
||||
plugins.emitAndRunActionsForEvent('tests:contracts:compile:after', cc, next);
|
||||
},
|
||||
(cc, next) => { // override require
|
||||
compiledContracts = cc;
|
||||
|
||||
|
|
|
@ -28,9 +28,10 @@ const ASSERT_LIB = new File({
|
|||
});
|
||||
|
||||
class SolidityTestRunner {
|
||||
constructor(embark, _options) {
|
||||
constructor(embark, options) {
|
||||
this.embark = embark;
|
||||
this.events = embark.events;
|
||||
this.plugins = options.plugins;
|
||||
|
||||
this.files = [];
|
||||
|
||||
|
@ -56,7 +57,7 @@ class SolidityTestRunner {
|
|||
|
||||
run(options, cb) {
|
||||
const reporter = new Reporter(options.reporter);
|
||||
const {events} = this;
|
||||
const {events, plugins} = this;
|
||||
|
||||
if (this.files.length === 0) {
|
||||
return cb(null, 0);
|
||||
|
@ -87,9 +88,19 @@ class SolidityTestRunner {
|
|||
(next) => {
|
||||
events.request("contracts:reset", next);
|
||||
},
|
||||
/*
|
||||
(next) => {
|
||||
plugins.emitAndRunActionsForEvent('tests:contracts:compile:before', contractFiles, next);
|
||||
},
|
||||
*/
|
||||
(next) => {
|
||||
events.request("compiler:contracts:compile", contractFiles, next);
|
||||
},
|
||||
/*
|
||||
(cc, next) => {
|
||||
plugins.emitAndRunActionsForEvent('tests:contracts:compile:after', cc, next);
|
||||
},
|
||||
*/
|
||||
(compiledContracts, next) => {
|
||||
// TODO: fetch config and use it here
|
||||
events.request("contracts:build", { contracts: {} }, compiledContracts, next);
|
||||
|
@ -110,6 +121,7 @@ class SolidityTestRunner {
|
|||
events.request("deployment:contracts:deploy", contractsToDeploy, contractDependencies, next);
|
||||
},
|
||||
(_result, next) => {
|
||||
events.emit('tests:ready');
|
||||
events.request("blockchain:client:provider", "ethereum", next);
|
||||
},
|
||||
(bcProvider, next) => {
|
||||
|
|
|
@ -52,7 +52,9 @@
|
|||
"embark-i18n": "^4.1.1",
|
||||
"embark-utils": "^4.1.1",
|
||||
"fs-extra": "7.0.1",
|
||||
"istanbul": "0.4.5",
|
||||
"istanbul-lib-coverage": "^2.0.5",
|
||||
"istanbul-lib-report": "2.0.8",
|
||||
"istanbul-reports": "^2.2.4",
|
||||
"mocha": "6.2.0",
|
||||
"open": "6.4.0"
|
||||
},
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
import { __ } from 'embark-i18n';
|
||||
const async = require('async');
|
||||
const chalk = require('chalk');
|
||||
|
||||
const coverage = require('istanbul-lib-coverage');
|
||||
const reporter = require('istanbul-lib-report');
|
||||
const reports = require('istanbul-reports');
|
||||
|
||||
const path = require('path');
|
||||
const { embarkPath, dappPath, runCmd } = require('embark-utils');
|
||||
const { dappPath } = require('embark-utils');
|
||||
import fs from 'fs';
|
||||
import { COVERAGE_GAS_LIMIT, GAS_LIMIT } from './constants';
|
||||
|
||||
|
@ -19,6 +24,8 @@ class TestRunner {
|
|||
this.gasLimit = options.coverage ? COVERAGE_GAS_LIMIT : GAS_LIMIT;
|
||||
this.files = [];
|
||||
|
||||
//this.istanbulPath = findup('node_modules/.bin/istanbul', { cwd: __dirname });
|
||||
|
||||
this.events.setCommandHandler('tests:run', (options, callback) => {
|
||||
this.run(options, callback);
|
||||
});
|
||||
|
@ -63,14 +70,6 @@ class TestRunner {
|
|||
|
||||
async.series(runnerFns, next);
|
||||
},
|
||||
(_results, next) => {
|
||||
if (!options.coverage) {
|
||||
return next();
|
||||
}
|
||||
|
||||
const cmd = `${embarkPath('node_modules/.bin/istanbul')} report --root .embark --format html --format lcov`;
|
||||
runCmd(cmd, {silent: false, exitOnError: false}, next);
|
||||
},
|
||||
], (err) => {
|
||||
reporter.footer();
|
||||
|
||||
|
@ -78,6 +77,7 @@ class TestRunner {
|
|||
return cb(err, reporter.passes, reporter.fails);
|
||||
}
|
||||
|
||||
this.generateCoverageReport();
|
||||
process.stdout.write(chalk`{blue Coverage report created. You can find it here:}\n{white.underline ${dappPath('coverage/index.html')}}\n`);
|
||||
|
||||
if (options.noBrowser) {
|
||||
|
@ -91,6 +91,18 @@ class TestRunner {
|
|||
});
|
||||
}
|
||||
|
||||
generateCoverageReport() {
|
||||
const coveragePath = path.join(dappPath(), ".embark", "coverage.json");
|
||||
const coverageMap = JSON.parse(fs.readFileSync(coveragePath));
|
||||
const map = coverage.createCoverageMap(coverageMap);
|
||||
const tree = reporter.summarizers.nested(map);
|
||||
|
||||
const ctx = reporter.createContext({ dir: 'coverage' });
|
||||
const report = reports.create('html', { skipEmpty: false, skipFull: false });
|
||||
|
||||
tree.visit(report, ctx);
|
||||
}
|
||||
|
||||
getFilesFromDir(filePath, cb) {
|
||||
fs.stat(filePath, (err, fileStat) => {
|
||||
const errorMessage = `File "${filePath}" doesn't exist or you don't have permission to it`.red;
|
||||
|
|
|
@ -159,7 +159,6 @@
|
|||
"http-proxy": "1.17.0",
|
||||
"http-shutdown": "1.2.0",
|
||||
"ipfs-api": "17.2.4",
|
||||
"istanbul": "0.4.5",
|
||||
"json-parse-better-errors": "1.0.2",
|
||||
"lodash.clonedeep": "4.5.0",
|
||||
"mocha": "6.2.0",
|
||||
|
|
|
@ -923,7 +923,7 @@ class EmbarkController {
|
|||
engine.registerModuleGroup("compiler");
|
||||
engine.registerModuleGroup("contracts");
|
||||
engine.registerModuleGroup("pipeline");
|
||||
engine.registerModuleGroup("tests");
|
||||
engine.registerModuleGroup("tests", options);
|
||||
|
||||
let plugin = engine.plugins.createPlugin('cmdcontrollerplugin', {});
|
||||
plugin.registerActionForEvent("embark:engine:started", async (_params, cb) => {
|
||||
|
|
|
@ -188,11 +188,11 @@ class Engine {
|
|||
});
|
||||
}
|
||||
|
||||
testComponents() {
|
||||
testComponents(options) {
|
||||
this.registerModulePackage('embark-test-runner');
|
||||
this.registerModulePackage('embark-coverage');
|
||||
this.registerModulePackage('embark-solidity-tests');
|
||||
this.registerModulePackage('embark-mocha-tests');
|
||||
this.registerModulePackage('embark-coverage', {plugins: this.plugins, coverage: options.coverage});
|
||||
this.registerModulePackage('embark-solidity-tests', {plugins: this.plugins, coverage: options.coverage});
|
||||
this.registerModulePackage('embark-mocha-tests', {plugins: this.plugins, coverage: options.coverage});
|
||||
}
|
||||
|
||||
compilerComponents(_options) {
|
||||
|
|
119
yarn.lock
119
yarn.lock
|
@ -3174,11 +3174,6 @@ abbrev@1:
|
|||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||
|
||||
abbrev@1.0.x:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
|
||||
integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
|
||||
|
||||
abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6"
|
||||
|
@ -3806,11 +3801,6 @@ async-limiter@^1.0.0, async-limiter@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
||||
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
||||
|
||||
async@1.x, async@^1.4.2, async@^1.5.2, async@~1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
||||
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
|
||||
|
||||
async@2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
|
||||
|
@ -3823,6 +3813,11 @@ async@3.1.0:
|
|||
resolved "https://registry.yarnpkg.com/async/-/async-3.1.0.tgz#42b3b12ae1b74927b5217d8c0016baaf62463772"
|
||||
integrity sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==
|
||||
|
||||
async@^1.4.2, async@^1.5.2, async@~1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
||||
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
|
||||
|
||||
async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.4.0, async@^2.5.0, async@^2.6.0, async@^2.6.1:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
|
||||
|
@ -7551,18 +7546,6 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
|
|||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
escodegen@1.8.x:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
|
||||
integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=
|
||||
dependencies:
|
||||
esprima "^2.7.1"
|
||||
estraverse "^1.9.1"
|
||||
esutils "^2.0.2"
|
||||
optionator "^0.8.1"
|
||||
optionalDependencies:
|
||||
source-map "~0.2.0"
|
||||
|
||||
escodegen@^1.11.1, escodegen@^1.9.1:
|
||||
version "1.12.0"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
|
||||
|
@ -7874,11 +7857,6 @@ esprima-extract-comments@^1.1.0:
|
|||
dependencies:
|
||||
esprima "^4.0.0"
|
||||
|
||||
esprima@2.7.x, esprima@^2.7.1:
|
||||
version "2.7.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
|
||||
integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
|
||||
|
||||
esprima@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
|
||||
|
@ -7903,11 +7881,6 @@ esrecurse@^4.1.0:
|
|||
dependencies:
|
||||
estraverse "^4.1.0"
|
||||
|
||||
estraverse@^1.9.1:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
|
||||
integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=
|
||||
|
||||
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
|
||||
|
@ -9498,17 +9471,6 @@ glob@7.1.3:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^5.0.15:
|
||||
version "5.0.15"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
|
||||
integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
|
||||
dependencies:
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "2 || 3"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1:
|
||||
version "7.1.4"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
|
||||
|
@ -9817,7 +9779,7 @@ handlebars@4.0.14:
|
|||
optionalDependencies:
|
||||
uglify-js "^3.1.4"
|
||||
|
||||
handlebars@^4.0.1, handlebars@^4.0.3, handlebars@^4.1.2:
|
||||
handlebars@^4.0.3, handlebars@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67"
|
||||
integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==
|
||||
|
@ -11416,6 +11378,15 @@ istanbul-lib-instrument@^3.0.0:
|
|||
istanbul-lib-coverage "^2.0.5"
|
||||
semver "^6.0.0"
|
||||
|
||||
istanbul-lib-report@2.0.8, istanbul-lib-report@^2.0.2:
|
||||
version "2.0.8"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
|
||||
integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
|
||||
dependencies:
|
||||
istanbul-lib-coverage "^2.0.5"
|
||||
make-dir "^2.1.0"
|
||||
supports-color "^6.1.0"
|
||||
|
||||
istanbul-lib-report@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c"
|
||||
|
@ -11426,15 +11397,6 @@ istanbul-lib-report@^1.1.5:
|
|||
path-parse "^1.0.5"
|
||||
supports-color "^3.1.2"
|
||||
|
||||
istanbul-lib-report@^2.0.2:
|
||||
version "2.0.8"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
|
||||
integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
|
||||
dependencies:
|
||||
istanbul-lib-coverage "^2.0.5"
|
||||
make-dir "^2.1.0"
|
||||
supports-color "^6.1.0"
|
||||
|
||||
istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6:
|
||||
version "1.2.6"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f"
|
||||
|
@ -11464,33 +11426,13 @@ istanbul-reports@^1.5.1:
|
|||
dependencies:
|
||||
handlebars "^4.0.3"
|
||||
|
||||
istanbul-reports@^2.0.1:
|
||||
istanbul-reports@^2.0.1, istanbul-reports@^2.2.4:
|
||||
version "2.2.6"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af"
|
||||
integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==
|
||||
dependencies:
|
||||
handlebars "^4.1.2"
|
||||
|
||||
istanbul@0.4.5:
|
||||
version "0.4.5"
|
||||
resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
|
||||
integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=
|
||||
dependencies:
|
||||
abbrev "1.0.x"
|
||||
async "1.x"
|
||||
escodegen "1.8.x"
|
||||
esprima "2.7.x"
|
||||
glob "^5.0.15"
|
||||
handlebars "^4.0.1"
|
||||
js-yaml "3.x"
|
||||
mkdirp "0.5.x"
|
||||
nopt "3.x"
|
||||
once "1.x"
|
||||
resolve "1.1.x"
|
||||
supports-color "^3.1.0"
|
||||
which "^1.1.1"
|
||||
wordwrap "^1.0.0"
|
||||
|
||||
isurl@^1.0.0-alpha5:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
|
||||
|
@ -11887,7 +11829,7 @@ js-tokens@^3.0.2:
|
|||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
||||
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
|
||||
|
||||
js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.5.1, js-yaml@^3.7.0:
|
||||
js-yaml@3.13.1, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.5.1, js-yaml@^3.7.0:
|
||||
version "3.13.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
|
||||
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
|
||||
|
@ -13897,7 +13839,7 @@ nodent-transform@^3.2.9:
|
|||
resolved "https://registry.yarnpkg.com/nodent-transform/-/nodent-transform-3.2.9.tgz#ec11a6116b5476e60bc212371cf6b8e4c74f40b6"
|
||||
integrity sha512-4a5FH4WLi+daH/CGD5o/JWRR8W5tlCkd3nrDSkxbOzscJTyTUITltvOJeQjg3HJ1YgEuNyiPhQbvbtRjkQBByQ==
|
||||
|
||||
"nopt@2 || 3", nopt@3.x, nopt@~3.0.6:
|
||||
"nopt@2 || 3", nopt@~3.0.6:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
|
||||
integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
|
||||
|
@ -14265,7 +14207,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.4.0:
|
||||
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
|
||||
|
@ -17516,7 +17458,7 @@ resolve-url@^0.2.1:
|
|||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
||||
|
||||
resolve@1.1.7, resolve@1.1.x:
|
||||
resolve@1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
|
||||
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
|
||||
|
@ -18560,13 +18502,6 @@ source-map@^0.7.2:
|
|||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
|
||||
|
||||
source-map@~0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
|
||||
integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50=
|
||||
dependencies:
|
||||
amdefine ">=0.0.4"
|
||||
|
||||
space-separated-tokens@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.2.tgz#e95ab9d19ae841e200808cd96bc7bd0adbbb3412"
|
||||
|
@ -19082,7 +19017,7 @@ supports-color@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
|
||||
|
||||
supports-color@^3.1.0, supports-color@^3.1.2:
|
||||
supports-color@^3.1.2:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
|
||||
integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
|
||||
|
@ -21222,7 +21157,7 @@ which-module@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
||||
|
||||
which@1, which@1.3.1, which@^1.1.1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
|
||||
which@1, which@1.3.1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
||||
|
@ -21286,16 +21221,16 @@ winston@^3.0.0:
|
|||
triple-beam "^1.3.0"
|
||||
winston-transport "^4.3.0"
|
||||
|
||||
wordwrap@^1.0.0, wordwrap@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
|
||||
|
||||
wordwrap@~0.0.2:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
|
||||
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
|
||||
|
||||
wordwrap@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
|
||||
|
||||
workbox-background-sync@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94"
|
||||
|
|
Loading…
Reference in New Issue