Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-tdd

Package Overview
Dependencies
Maintainers
1
Versions
167
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-tdd - npm Package Compare versions

Comparing version 2.1.0 to 2.2.0

269

lib/util/desc.js

@@ -58,3 +58,4 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

recordConsole: Joi.boolean().optional(),
cryptoSeed: Joi.string().optional()
cryptoSeed: Joi.string().optional(),
timeout: Joi.number().optional().min(0)
}), 'Bad Options Provided');

@@ -67,2 +68,3 @@ const useTmpDir = get(opts, 'useTmpDir', false);

const cryptoSeed = get(opts, 'cryptoSeed', null);
const timeout = get(opts, 'timeout', null);
let dir = null;

@@ -100,149 +102,168 @@ let requestRecorder = null;

let afterEachCb = () => {};
let afterEachCb = () => {}; // eslint-disable-next-line func-names
mocha.describe(suiteName, () => {
// eslint-disable-next-line func-names
mocha.before(function () {
return (async () => {
if (getParents(this.test).length === 3 && fs.existsSync(envVarFile)) {
envManagerFile = EnvManager({
envVars: fs.smartRead(envVarFile),
allowOverwrite: false
});
envManagerFile.apply();
}
if (envVars !== null) {
envManagerDesc = EnvManager({
envVars,
allowOverwrite: false
});
envManagerDesc.apply();
}
mocha.describe(suiteName, function () {
return (async () => {
if (timeout !== null) {
this.timeout(timeout);
} // eslint-disable-next-line func-names
if (timestamp !== null) {
timeKeeper = TimeKeeper({
unix: timestamp
});
timeKeeper.inject();
}
if (cryptoSeed !== null) {
randomSeeder = RandomSeeder({
seed: cryptoSeed,
reseed: false
});
randomSeeder.inject();
}
mocha.before(function () {
return (async () => {
if (getParents(this.test).length === 3 && fs.existsSync(envVarFile)) {
envManagerFile = EnvManager({
envVars: fs.smartRead(envVarFile),
allowOverwrite: false
});
envManagerFile.apply();
}
if (useNock === true) {
requestRecorder = RequestRecorder({
cassetteFolder: `${testFile}__cassettes/`,
stripHeaders: false,
strict: true
});
}
if (envVars !== null) {
envManagerDesc = EnvManager({
envVars,
allowOverwrite: false
});
envManagerDesc.apply();
}
await beforeCb();
})();
});
mocha.after(async () => {
if (requestRecorder !== null) {
requestRecorder.shutdown();
requestRecorder = null;
}
if (timestamp !== null) {
timeKeeper = TimeKeeper({
unix: timestamp
});
timeKeeper.inject();
}
if (randomSeeder !== null) {
randomSeeder.release();
randomSeeder = null;
}
if (cryptoSeed !== null) {
randomSeeder = RandomSeeder({
seed: cryptoSeed,
reseed: false
});
randomSeeder.inject();
}
if (timeKeeper !== null) {
timeKeeper.release();
timeKeeper = null;
}
if (useNock === true) {
requestRecorder = RequestRecorder({
cassetteFolder: `${testFile}__cassettes/`,
stripHeaders: false,
strict: true
});
}
if (envManagerDesc !== null) {
envManagerDesc.unapply();
envManagerDesc = null;
}
await beforeCb.call(this);
})();
}); // eslint-disable-next-line func-names
if (envManagerFile !== null) {
envManagerFile.unapply();
envManagerFile = null;
}
mocha.after(function () {
return (async () => {
if (requestRecorder !== null) {
requestRecorder.shutdown();
requestRecorder = null;
}
await afterCb();
}); // eslint-disable-next-line func-names
if (randomSeeder !== null) {
randomSeeder.release();
randomSeeder = null;
}
mocha.beforeEach(function () {
return (async () => {
if (useTmpDir === true) {
tmp.setGracefulCleanup();
dir = tmp.dirSync({
keep: false,
unsafeCleanup: true
}).name;
}
if (timeKeeper !== null) {
timeKeeper.release();
timeKeeper = null;
}
if (useNock === true) {
await requestRecorder.inject(genCassetteName(this.currentTest));
}
if (envManagerDesc !== null) {
envManagerDesc.unapply();
envManagerDesc = null;
}
if (recordConsole === true) {
consoleRecorder = ConsoleRecorder({
verbose: true
});
consoleRecorder.inject();
}
if (envManagerFile !== null) {
envManagerFile.unapply();
envManagerFile = null;
}
await beforeEachCb(getArgs());
})();
});
mocha.afterEach(async () => {
if (consoleRecorder !== null) {
consoleRecorder.release();
consoleRecorder = null;
}
await afterCb.call(this);
})();
}); // eslint-disable-next-line func-names
if (requestRecorder !== null) {
requestRecorder.release();
}
mocha.beforeEach(function () {
return (async () => {
if (useTmpDir === true) {
tmp.setGracefulCleanup();
dir = tmp.dirSync({
keep: false,
unsafeCleanup: true
}).name;
}
if (dir !== null) {
dir = null;
}
if (useNock === true) {
await requestRecorder.inject(genCassetteName(this.currentTest));
}
await afterEachCb(getArgs());
});
const globalsPrev = Object.keys(mocha).reduce((p, key) => Object.assign(p, {
[key]: global[key]
}));
if (recordConsole === true) {
consoleRecorder = ConsoleRecorder({
verbose: true
});
consoleRecorder.inject();
}
global.it = (testName, fn) => mocha.it(testName, fn.length === 0 || /^[^(=]*\({/.test(fn.toString()) ? () => fn(getArgs()) : done => fn(done));
await beforeEachCb.call(this, getArgs());
})();
}); // eslint-disable-next-line func-names
global.specify = global.it;
global.describe = desc;
global.context = global.describe;
mocha.afterEach(function () {
return (async () => {
if (consoleRecorder !== null) {
consoleRecorder.release();
consoleRecorder = null;
}
global.before = fn => {
beforeCb = fn;
};
if (requestRecorder !== null) {
requestRecorder.release();
}
global.after = fn => {
afterCb = fn;
};
if (dir !== null) {
dir = null;
}
global.beforeEach = fn => {
beforeEachCb = fn;
};
await afterEachCb.call(this, getArgs());
})();
});
const globalsPrev = Object.keys(mocha).reduce((p, key) => Object.assign(p, {
[key]: global[key]
}));
global.afterEach = fn => {
afterEachCb = fn;
};
global.it = (testName, fn) => mocha.it(testName, fn.length === 0 || /^[^(=]*\({/.test(fn.toString()) // eslint-disable-next-line func-names
? function () {
return fn.call(this, getArgs());
} // eslint-disable-next-line func-names
: function (done) {
return fn.call(this, done);
});
tests();
Object.entries(globalsPrev).forEach(([k, v]) => {
global[k] = v;
});
global.specify = global.it;
global.describe = desc;
global.context = global.describe;
global.before = fn => {
beforeCb = fn;
};
global.after = fn => {
afterCb = fn;
};
global.beforeEach = fn => {
beforeEachCb = fn;
};
global.afterEach = fn => {
afterEachCb = fn;
};
await tests.call(this);
Object.entries(globalsPrev).forEach(([k, v]) => {
global[k] = v;
});
})();
});

@@ -252,2 +273,2 @@ };

module.exports = desc;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rlc2MuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsInBhdGgiLCJmcyIsImNhbGxzaXRlcyIsImdldCIsInRtcCIsIkpvaSIsIlJlcXVlc3RSZWNvcmRlciIsIkVudk1hbmFnZXIiLCJUaW1lS2VlcGVyIiwiQ29uc29sZVJlY29yZGVyIiwiUmFuZG9tU2VlZGVyIiwiZ2V0UGFyZW50cyIsImdlbkNhc3NldHRlTmFtZSIsIm1vY2hhIiwiaXQiLCJzcGVjaWZ5IiwiZGVzY3JpYmUiLCJjb250ZXh0IiwiYmVmb3JlIiwiYWZ0ZXIiLCJiZWZvcmVFYWNoIiwiYWZ0ZXJFYWNoIiwiZGVzYyIsInN1aXRlTmFtZSIsIm9wdHNPclRlc3RzIiwidGVzdHNPck51bGwiLCJvcHRzIiwidGVzdHMiLCJ0ZXN0RmlsZSIsInJlc29sdmUiLCJnZXRGaWxlTmFtZSIsImVudlZhckZpbGUiLCJvYmplY3QiLCJrZXlzIiwidXNlVG1wRGlyIiwiYm9vbGVhbiIsIm9wdGlvbmFsIiwidXNlTm9jayIsImVudlZhcnMiLCJ1bmtub3duIiwicGF0dGVybiIsInN0cmluZyIsInRpbWVzdGFtcCIsIm51bWJlciIsIm1pbiIsInJlY29yZENvbnNvbGUiLCJjcnlwdG9TZWVkIiwiZGlyIiwicmVxdWVzdFJlY29yZGVyIiwiZW52TWFuYWdlckZpbGUiLCJlbnZNYW5hZ2VyRGVzYyIsInRpbWVLZWVwZXIiLCJjb25zb2xlUmVjb3JkZXIiLCJyYW5kb21TZWVkZXIiLCJnZXRBcmdzIiwiY2FwdHVyZSIsImZuIiwiZSIsIkFzc2VydGlvbkVycm9yIiwibWVzc2FnZSIsImdldENvbnNvbGVPdXRwdXQiLCJiZWZvcmVDYiIsImFmdGVyQ2IiLCJiZWZvcmVFYWNoQ2IiLCJhZnRlckVhY2hDYiIsInRlc3QiLCJsZW5ndGgiLCJleGlzdHNTeW5jIiwic21hcnRSZWFkIiwiYWxsb3dPdmVyd3JpdGUiLCJhcHBseSIsInVuaXgiLCJpbmplY3QiLCJzZWVkIiwicmVzZWVkIiwiY2Fzc2V0dGVGb2xkZXIiLCJzdHJpcEhlYWRlcnMiLCJzdHJpY3QiLCJzaHV0ZG93biIsInJlbGVhc2UiLCJ1bmFwcGx5Iiwic2V0R3JhY2VmdWxDbGVhbnVwIiwiZGlyU3luYyIsImtlZXAiLCJ1bnNhZmVDbGVhbnVwIiwibmFtZSIsImN1cnJlbnRUZXN0IiwidmVyYm9zZSIsImdsb2JhbHNQcmV2IiwiT2JqZWN0IiwicmVkdWNlIiwicCIsImtleSIsImFzc2lnbiIsImdsb2JhbCIsInRlc3ROYW1lIiwidG9TdHJpbmciLCJkb25lIiwiZW50cmllcyIsImZvckVhY2giLCJrIiwidiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxVQUFELENBQWxCOztBQUNBLE1BQU1HLFNBQVMsR0FBR0gsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUksR0FBRyxHQUFHSixPQUFPLENBQUMsWUFBRCxDQUFuQjs7QUFDQSxNQUFNSyxHQUFHLEdBQUdMLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1NLEdBQUcsR0FBR04sT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTU8sZUFBZSxHQUFHUCxPQUFPLENBQUMsNkJBQUQsQ0FBL0I7O0FBQ0EsTUFBTVEsVUFBVSxHQUFHUixPQUFPLENBQUMsd0JBQUQsQ0FBMUI7O0FBQ0EsTUFBTVMsVUFBVSxHQUFHVCxPQUFPLENBQUMsd0JBQUQsQ0FBMUI7O0FBQ0EsTUFBTVUsZUFBZSxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBL0I7O0FBQ0EsTUFBTVcsWUFBWSxHQUFHWCxPQUFPLENBQUMsMEJBQUQsQ0FBNUI7O0FBQ0EsTUFBTTtBQUFFWSxFQUFBQSxVQUFGO0FBQWNDLEVBQUFBO0FBQWQsSUFBa0Ni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QUFDQXdFLElBQUFBLE1BQU0sQ0FBQzdFLE9BQVAsR0FBaUI2RSxNQUFNLENBQUM5RSxRQUF4Qjs7QUFDQThFLElBQUFBLE1BQU0sQ0FBQzVFLE1BQVAsR0FBaUJzQyxFQUFELElBQVE7QUFDdEJLLE1BQUFBLFFBQVEsR0FBR0wsRUFBWDtBQUNELEtBRkQ7O0FBR0FzQyxJQUFBQSxNQUFNLENBQUMzRSxLQUFQLEdBQWdCcUMsRUFBRCxJQUFRO0FBQ3JCTSxNQUFBQSxPQUFPLEdBQUdOLEVBQVY7QUFDRCxLQUZEOztBQUdBc0MsSUFBQUEsTUFBTSxDQUFDMUUsVUFBUCxHQUFxQm9DLEVBQUQsSUFBUTtBQUMxQk8sTUFBQUEsWUFBWSxHQUFHUCxFQUFmO0FBQ0QsS0FGRDs7QUFHQXNDLElBQUFBLE1BQU0sQ0FBQ3pFLFNBQVAsR0FBb0JtQyxFQUFELElBQVE7QUFDekJRLE1BQUFBLFdBQVcsR0FBR1IsRUFBZDtBQUNELEtBRkQ7O0FBR0E3QixJQUFBQSxLQUFLO0FBQ0w4RCxJQUFBQSxNQUFNLENBQUNTLE9BQVAsQ0FBZVYsV0FBZixFQUE0QlcsT0FBNUIsQ0FBb0MsQ0FBQyxDQUFDQyxDQUFELEVBQUlDLENBQUosQ0FBRCxLQUFZO0FBQzlDUCxNQUFBQSxNQUFNLENBQUNNLENBQUQsQ0FBTixHQUFZQyxDQUFaO0FBQ0QsS0FGRDtBQUdELEdBbEhEO0FBbUhELENBbEtEOztBQW1LQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCakYsSUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBmcyA9IHJlcXVpcmUoJ3NtYXJ0LWZzJyk7XG5jb25zdCBjYWxsc2l0ZXMgPSByZXF1aXJlKCdjYWxsc2l0ZXMnKTtcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ2xvZGFzaC5nZXQnKTtcbmNvbnN0IHRtcCA9IHJlcXVpcmUoJ3RtcCcpO1xuY29uc3QgSm9pID0gcmVxdWlyZSgnam9pLXN0cmljdCcpO1xuY29uc3QgUmVxdWVzdFJlY29yZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9yZXF1ZXN0LXJlY29yZGVyJyk7XG5jb25zdCBFbnZNYW5hZ2VyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lbnYtbWFuYWdlcicpO1xuY29uc3QgVGltZUtlZXBlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvdGltZS1rZWVwZXInKTtcbmNvbnN0IENvbnNvbGVSZWNvcmRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvY29uc29sZS1yZWNvcmRlcicpO1xuY29uc3QgUmFuZG9tU2VlZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9yYW5kb20tc2VlZGVyJyk7XG5jb25zdCB7IGdldFBhcmVudHMsIGdlbkNhc3NldHRlTmFtZSB9ID0gcmVxdWlyZSgnLi9tb2NoYS10ZXN0Jyk7XG5cbmNvbnN0IG1vY2hhID0ge1xuICBpdCxcbiAgc3BlY2lmeSxcbiAgZGVzY3JpYmUsXG4gIGNvbnRleHQsXG4gIGJlZm9yZSxcbiAgYWZ0ZXIsXG4gIGJlZm9yZUVhY2gsXG4gIGFmdGVyRWFjaFxufTtcblxuY29uc3QgZGVzYyA9IChzdWl0ZU5hbWUsIG9wdHNPclRlc3RzLCB0ZXN0c09yTnVsbCA9IG51bGwpID0+IHtcbiAgY29uc3Qgb3B0cyA9IHRlc3RzT3JOdWxsID09PSBudWxsID8ge30gOiBvcHRzT3JUZXN0cztcbiAgY29uc3QgdGVzdHMgPSB0ZXN0c09yTnVsbCA9PT0gbnVsbCA/IG9wdHNPclRlc3RzIDogdGVzdHNPck51bGw7XG5cbiAgY29uc3QgdGVzdEZpbGUgPSBwYXRoLnJlc29sdmUoY2FsbHNpdGVzKClbMV0uZ2V0RmlsZU5hbWUoKSk7XG4gIGNvbnN0IGVudlZhckZpbGUgPSBgJHt0ZXN0RmlsZX0uZW52LnltbGA7XG5cbiAgSm9pLmFzc2VydChvcHRzLCBKb2kub2JqZWN0KCkua2V5cyh7XG4gICAgdXNlVG1wRGlyOiBKb2kuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgdXNlTm9jazogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGVudlZhcnM6IEpvaS5vYmplY3QoKS5vcHRpb25hbCgpLnVua25vd24odHJ1ZSkucGF0dGVybihKb2kuc3RyaW5nKCksIEpvaS5zdHJpbmcoKSksXG4gICAgdGltZXN0YW1wOiBKb2kubnVtYmVyKCkub3B0aW9uYWwoKS5taW4oMCksXG4gICAgcmVjb3JkQ29uc29sZTogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGNyeXB0b1NlZWQ6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpXG4gIH0pLCAnQmFkIE9wdGlvbnMgUHJvdmlkZWQnKTtcbiAgY29uc3QgdXNlVG1wRGlyID0gZ2V0KG9wdHMsICd1c2VUbXBEaXInLCBmYWxzZSk7XG4gIGNvbnN0IHVzZU5vY2sgPSBnZXQob3B0cywgJ3VzZU5vY2snLCBmYWxzZSk7XG4gIGNvbnN0IGVudlZhcnMgPSBnZXQob3B0cywgJ2VudlZhcnMnLCBudWxsKTtcbiAgY29uc3QgdGltZXN0YW1wID0gZ2V0KG9wdHMsICd0aW1lc3RhbXAnLCBudWxsKTtcbiAgY29uc3QgcmVjb3JkQ29uc29sZSA9IGdldChvcHRzLCAncmVjb3JkQ29uc29sZScsIGZhbHNlKTtcbiAgY29uc3QgY3J5cHRvU2VlZCA9IGdldChvcHRzLCAnY3J5cHRvU2VlZCcsIG51bGwpO1xuXG4gIGxldCBkaXIgPSBudWxsO1xuICBsZXQgcmVxdWVzdFJlY29yZGVyID0gbnVsbDtcbiAgbGV0IGVudk1hbmFnZXJGaWxlID0gbnVsbDtcbiAgbGV0IGVudk1hbmFnZXJEZXNjID0gbnVsbDtcbiAgbGV0IHRpbWVLZWVwZXIgPSBudWxsO1xuICBsZXQgY29uc29sZVJlY29yZGVyID0gbnVsbDtcbiAgbGV0IHJhbmRvbVNlZWRlciA9IG51bGw7XG5cbiAgY29uc3QgZ2V0QXJncyA9ICgpID0+ICh7XG4gICAgY2FwdHVyZTogYXN5bmMgKGZuKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoeyBtZXNzYWdlOiAnZXhwZWN0ZWQgW0Z1bmN0aW9uXSB0byB0aHJvdyBhbiBlcnJvcicgfSk7XG4gICAgfSxcbiAgICAuLi4oZGlyID09PSBudWxsID8ge30gOiB7IGRpciB9KSxcbiAgICAuLi4oY29uc29sZVJlY29yZGVyID09PSBudWxsID8ge30gOiB7IGdldENvbnNvbGVPdXRwdXQ6IGNvbnNvbGVSZWNvcmRlci5nZXQgfSlcbiAgfSk7XG4gIGxldCBiZWZvcmVDYiA9ICgpID0+IHt9O1xuICBsZXQgYWZ0ZXJDYiA9ICgpID0+IHt9O1xuICBsZXQgYmVmb3JlRWFjaENiID0gKCkgPT4ge307XG4gIGxldCBhZnRlckVhY2hDYiA9ICgpID0+IHt9O1xuXG4gIG1vY2hhLmRlc2NyaWJlKHN1aXRlTmFtZSwgKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgbW9jaGEuYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoZ2V0UGFyZW50cyh0aGlzLnRlc3QpLmxlbmd0aCA9PT0gMyAmJiBmcy5leGlzdHNTeW5jKGVudlZhckZpbGUpKSB7XG4gICAgICAgICAgZW52TWFuYWdlckZpbGUgPSBFbnZNYW5hZ2VyKHsgZW52VmFyczogZnMuc21hcnRSZWFkKGVudlZhckZpbGUpLCBhbGxvd092ZXJ3cml0ZTogZmFsc2UgfSk7XG4gICAgICAgICAgZW52TWFuYWdlckZpbGUuYXBwbHkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW52VmFycyAhPT0gbnVsbCkge1xuICAgICAgICAgIGVudk1hbmFnZXJEZXNjID0gRW52TWFuYWdlcih7IGVudlZhcnMsIGFsbG93T3ZlcndyaXRlOiBmYWxzZSB9KTtcbiAgICAgICAgICBlbnZNYW5hZ2VyRGVzYy5hcHBseSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lc3RhbXAgIT09IG51bGwpIHtcbiAgICAgICAgICB0aW1lS2VlcGVyID0gVGltZUtlZXBlcih7IHVuaXg6IHRpbWVzdGFtcCB9KTtcbiAgICAgICAgICB0aW1lS2VlcGVyLmluamVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjcnlwdG9TZWVkICE9PSBudWxsKSB7XG4gICAgICAgICAgcmFuZG9tU2VlZGVyID0gUmFuZG9tU2VlZGVyKHsgc2VlZDogY3J5cHRvU2VlZCwgcmVzZWVkOiBmYWxzZSB9KTtcbiAgICAgICAgICByYW5kb21TZWVkZXIuaW5qZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZU5vY2sgPT09IHRydWUpIHtcbiAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIgPSBSZXF1ZXN0UmVjb3JkZXIoe1xuICAgICAgICAgICAgY2Fzc2V0dGVGb2xkZXI6IGAke3Rlc3RGaWxlfV9fY2Fzc2V0dGVzL2AsXG4gICAgICAgICAgICBzdHJpcEhlYWRlcnM6IGZhbHNlLFxuICAgICAgICAgICAgc3RyaWN0OiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmVmb3JlQ2IoKTtcbiAgICAgIH0pKCk7XG4gICAgfSk7XG5cbiAgICBtb2NoYS5hZnRlcihhc3luYyAoKSA9PiB7XG4gICAgICBpZiAocmVxdWVzdFJlY29yZGVyICE9PSBudWxsKSB7XG4gICAgICAgIHJlcXVlc3RSZWNvcmRlci5zaHV0ZG93bigpO1xuICAgICAgICByZXF1ZXN0UmVjb3JkZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHJhbmRvbVNlZWRlciAhPT0gbnVsbCkge1xuICAgICAgICByYW5kb21TZWVkZXIucmVsZWFzZSgpO1xuICAgICAgICByYW5kb21TZWVkZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHRpbWVLZWVwZXIgIT09IG51bGwpIHtcbiAgICAgICAgdGltZUtlZXBlci5yZWxlYXNlKCk7XG4gICAgICAgIHRpbWVLZWVwZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGVudk1hbmFnZXJEZXNjICE9PSBudWxsKSB7XG4gICAgICAgIGVudk1hbmFnZXJEZXNjLnVuYXBwbHkoKTtcbiAgICAgICAgZW52TWFuYWdlckRlc2MgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGVudk1hbmFnZXJGaWxlICE9PSBudWxsKSB7XG4gICAgICAgIGVudk1hbmFnZXJGaWxlLnVuYXBwbHkoKTtcbiAgICAgICAgZW52TWFuYWdlckZpbGUgPSBudWxsO1xuICAgICAgfVxuICAgICAgYXdhaXQgYWZ0ZXJDYigpO1xuICAgIH0pO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICBtb2NoYS5iZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAodXNlVG1wRGlyID09PSB0cnVlKSB7XG4gICAgICAgICAgdG1wLnNldEdyYWNlZnVsQ2xlYW51cCgpO1xuICAgICAgICAgIGRpciA9IHRtcC5kaXJTeW5jKHsga2VlcDogZmFsc2UsIHVuc2FmZUNsZWFudXA6IHRydWUgfSkubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlTm9jayA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGF3YWl0IHJlcXVlc3RSZWNvcmRlci5pbmplY3QoZ2VuQ2Fzc2V0dGVOYW1lKHRoaXMuY3VycmVudFRlc3QpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjb3JkQ29uc29sZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnNvbGVSZWNvcmRlciA9IENvbnNvbGVSZWNvcmRlcih7IHZlcmJvc2U6IHRydWUgfSk7XG4gICAgICAgICAgY29uc29sZVJlY29yZGVyLmluamVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJlZm9yZUVhY2hDYihnZXRBcmdzKCkpO1xuICAgICAgfSkoKTtcbiAgICB9KTtcblxuICAgIG1vY2hhLmFmdGVyRWFjaChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoY29uc29sZVJlY29yZGVyICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGVSZWNvcmRlci5yZWxlYXNlKCk7XG4gICAgICAgIGNvbnNvbGVSZWNvcmRlciA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdFJlY29yZGVyICE9PSBudWxsKSB7XG4gICAgICAgIHJlcXVlc3RSZWNvcmRlci5yZWxlYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZGlyICE9PSBudWxsKSB7XG4gICAgICAgIGRpciA9IG51bGw7XG4gICAgICB9XG4gICAgICBhd2FpdCBhZnRlckVhY2hDYihnZXRBcmdzKCkpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZ2xvYmFsc1ByZXYgPSBPYmplY3Qua2V5cyhtb2NoYSlcbiAgICAgIC5yZWR1Y2UoKHAsIGtleSkgPT4gT2JqZWN0LmFzc2lnbihwLCB7IFtrZXldOiBnbG9iYWxba2V5XSB9KSk7XG4gICAgZ2xvYmFsLml0ID0gKHRlc3ROYW1lLCBmbikgPT4gbW9jaGEuaXQoXG4gICAgICB0ZXN0TmFtZSxcbiAgICAgIGZuLmxlbmd0aCA9PT0gMCB8fCAvXlteKD1dKlxcKHsvLnRlc3QoZm4udG9TdHJpbmcoKSlcbiAgICAgICAgPyAoKSA9PiBmbihnZXRBcmdzKCkpXG4gICAgICAgIDogKGRvbmUpID0+IGZuKGRvbmUpXG4gICAgKTtcbiAgICBnbG9iYWwuc3BlY2lmeSA9IGdsb2JhbC5pdDtcbiAgICBnbG9iYWwuZGVzY3JpYmUgPSBkZXNjO1xuICAgIGdsb2JhbC5jb250ZXh0ID0gZ2xvYmFsLmRlc2NyaWJlO1xuICAgIGdsb2JhbC5iZWZvcmUgPSAoZm4pID0+IHtcbiAgICAgIGJlZm9yZUNiID0gZm47XG4gICAgfTtcbiAgICBnbG9iYWwuYWZ0ZXIgPSAoZm4pID0+IHtcbiAgICAgIGFmdGVyQ2IgPSBmbjtcbiAgICB9O1xuICAgIGdsb2JhbC5iZWZvcmVFYWNoID0gKGZuKSA9PiB7XG4gICAgICBiZWZvcmVFYWNoQ2IgPSBmbjtcbiAgICB9O1xuICAgIGdsb2JhbC5hZnRlckVhY2ggPSAoZm4pID0+IHtcbiAgICAgIGFmdGVyRWFjaENiID0gZm47XG4gICAgfTtcbiAgICB0ZXN0cygpO1xuICAgIE9iamVjdC5lbnRyaWVzKGdsb2JhbHNQcmV2KS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgIGdsb2JhbFtrXSA9IHY7XG4gICAgfSk7XG4gIH0pO1xufTtcbm1vZHVsZS5leHBvcnRzID0gZGVzYztcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rlc2MuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsInBhdGgiLCJmcyIsImNhbGxzaXRlcyIsImdldCIsInRtcCIsIkpvaSIsIlJlcXVlc3RSZWNvcmRlciIsIkVudk1hbmFnZXIiLCJUaW1lS2VlcGVyIiwiQ29uc29sZVJlY29yZGVyIiwiUmFuZG9tU2VlZGVyIiwiZ2V0UGFyZW50cyIsImdlbkNhc3NldHRlTmFtZSIsIm1vY2hhIiwiaXQiLCJzcGVjaWZ5IiwiZGVzY3JpYmUiLCJjb250ZXh0IiwiYmVmb3JlIiwiYWZ0ZXIiLCJiZWZvcmVFYWNoIiwiYWZ0ZXJFYWNoIiwiZGVzYyIsInN1aXRlTmFtZSIsIm9wdHNPclRlc3RzIiwidGVzdHNPck51bGwiLCJvcHRzIiwidGVzdHMiLCJ0ZXN0RmlsZSIsInJlc29sdmUiLCJnZXRGaWxlTmFtZSIsImVudlZhckZpbGUiLCJvYmplY3QiLCJrZXlzIiwidXNlVG1wRGlyIiwiYm9vbGVhbiIsIm9wdGlvbmFsIiwidXNlTm9jayIsImVudlZhcnMiLCJ1bmtub3duIiwicGF0dGVybiIsInN0cmluZyIsInRpbWVzdGFtcCIsIm51bWJlciIsIm1pbiIsInJlY29yZENvbnNvbGUiLCJjcnlwdG9TZWVkIiwidGltZW91dCIsImRpciIsInJlcXVlc3RSZWNvcmRlciIsImVudk1hbmFnZXJGaWxlIiwiZW52TWFuYWdlckRlc2MiLCJ0aW1lS2VlcGVyIiwiY29uc29sZVJlY29yZGVyIiwicmFuZG9tU2VlZGVyIiwiZ2V0QXJncyIsImNhcHR1cmUiLCJmbiIsImUiLCJBc3NlcnRpb25FcnJvciIsIm1lc3NhZ2UiLCJnZXRDb25zb2xlT3V0cHV0IiwiYmVmb3JlQ2IiLCJhZnRlckNiIiwiYmVmb3JlRWFjaENiIiwiYWZ0ZXJFYWNoQ2IiLCJ0ZXN0IiwibGVuZ3RoIiwiZXhpc3RzU3luYyIsInNtYXJ0UmVhZCIsImFsbG93T3ZlcndyaXRlIiwiYXBwbHkiLCJ1bml4IiwiaW5qZWN0Iiwic2VlZCIsInJlc2VlZCIsImNhc3NldHRlRm9sZGVyIiwic3RyaXBIZWFkZXJzIiwic3RyaWN0IiwiY2FsbCIsInNodXRkb3duIiwicmVsZWFzZSIsInVuYXBwbHkiLCJzZXRHcmFjZWZ1bENsZWFudXAiLCJkaXJTeW5jIiwia2VlcCIsInVuc2FmZUNsZWFudXAiLCJuYW1lIiwiY3VycmVudFRlc3QiLCJ2ZXJib3NlIiwiZ2xvYmFsc1ByZXYiLCJPYmplY3QiLCJyZWR1Y2UiLCJwIiwia2V5IiwiYXNzaWduIiwiZ2xvYmFsIiwidGVzdE5hbWUiLCJ0b1N0cmluZyIsImRvbmUiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImsiLCJ2IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsU0FBUyxHQUFHSCxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNSSxHQUFHLEdBQUdKLE9BQU8sQ0FBQyxZQUFELENBQW5COztBQUNBLE1BQU1LLEdBQUcsR0FBR0wsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTU0sR0FBRyxHQUFHTixPQUFPLENBQUMsWUFBRCxDQUFuQjs7QUFDQSxNQUFNTyxlQUFlLEdBQUdQLE9BQU8sQ0FBQyw2QkFBRCxDQUEvQjs7QUFDQSxNQUFNUSxVQUFVLEdBQUdSLE9BQU8sQ0FBQyx3QkFBRCxDQUExQjs7QUFDQSxNQUFNUyxVQUFVLEdBQUdULE9BQU8sQ0FBQyx3QkFBRCxDQUExQjs7QUFDQSxNQUFNVSxlQUFlLEdBQUdWLE9BQU8sQ0FBQyw2QkFBRCxDQUEvQjs7QUFDQSxNQUFNVyxZQUFZLEdBQUdYLE9BQU8sQ0FBQywwQkFBRCxDQUE1Qjs7QUFDQSxNQUFNO0FBQUVZLEVBQUFBLFVBQUY7QUFBY0Ms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UCxFQUFmO0FBQ0QsT0FGRDs7QUFHQXVDLE1BQUFBLE1BQU0sQ0FBQzNFLFNBQVAsR0FBb0JvQyxFQUFELElBQVE7QUFDekJRLFFBQUFBLFdBQVcsR0FBR1IsRUFBZDtBQUNELE9BRkQ7O0FBR0EsWUFBTTlCLEtBQUssQ0FBQ29ELElBQU4sQ0FBVyxJQUFYLENBQU47QUFDQVksTUFBQUEsTUFBTSxDQUFDUyxPQUFQLENBQWVWLFdBQWYsRUFBNEJXLE9BQTVCLENBQW9DLENBQUMsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLENBQUQsS0FBWTtBQUM5Q1AsUUFBQUEsTUFBTSxDQUFDTSxDQUFELENBQU4sR0FBWUMsQ0FBWjtBQUNELE9BRkQ7QUFHRCxLQWxJTSxHQUFQO0FBbUlELEdBcElEO0FBcUlELENBdkxEOztBQXdMQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkYsSUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBmcyA9IHJlcXVpcmUoJ3NtYXJ0LWZzJyk7XG5jb25zdCBjYWxsc2l0ZXMgPSByZXF1aXJlKCdjYWxsc2l0ZXMnKTtcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ2xvZGFzaC5nZXQnKTtcbmNvbnN0IHRtcCA9IHJlcXVpcmUoJ3RtcCcpO1xuY29uc3QgSm9pID0gcmVxdWlyZSgnam9pLXN0cmljdCcpO1xuY29uc3QgUmVxdWVzdFJlY29yZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9yZXF1ZXN0LXJlY29yZGVyJyk7XG5jb25zdCBFbnZNYW5hZ2VyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lbnYtbWFuYWdlcicpO1xuY29uc3QgVGltZUtlZXBlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvdGltZS1rZWVwZXInKTtcbmNvbnN0IENvbnNvbGVSZWNvcmRlciA9IHJlcXVpcmUoJy4uL21vZHVsZXMvY29uc29sZS1yZWNvcmRlcicpO1xuY29uc3QgUmFuZG9tU2VlZGVyID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9yYW5kb20tc2VlZGVyJyk7XG5jb25zdCB7IGdldFBhcmVudHMsIGdlbkNhc3NldHRlTmFtZSB9ID0gcmVxdWlyZSgnLi9tb2NoYS10ZXN0Jyk7XG5cbmNvbnN0IG1vY2hhID0ge1xuICBpdCxcbiAgc3BlY2lmeSxcbiAgZGVzY3JpYmUsXG4gIGNvbnRleHQsXG4gIGJlZm9yZSxcbiAgYWZ0ZXIsXG4gIGJlZm9yZUVhY2gsXG4gIGFmdGVyRWFjaFxufTtcblxuY29uc3QgZGVzYyA9IChzdWl0ZU5hbWUsIG9wdHNPclRlc3RzLCB0ZXN0c09yTnVsbCA9IG51bGwpID0+IHtcbiAgY29uc3Qgb3B0cyA9IHRlc3RzT3JOdWxsID09PSBudWxsID8ge30gOiBvcHRzT3JUZXN0cztcbiAgY29uc3QgdGVzdHMgPSB0ZXN0c09yTnVsbCA9PT0gbnVsbCA/IG9wdHNPclRlc3RzIDogdGVzdHNPck51bGw7XG5cbiAgY29uc3QgdGVzdEZpbGUgPSBwYXRoLnJlc29sdmUoY2FsbHNpdGVzKClbMV0uZ2V0RmlsZU5hbWUoKSk7XG4gIGNvbnN0IGVudlZhckZpbGUgPSBgJHt0ZXN0RmlsZX0uZW52LnltbGA7XG5cbiAgSm9pLmFzc2VydChvcHRzLCBKb2kub2JqZWN0KCkua2V5cyh7XG4gICAgdXNlVG1wRGlyOiBKb2kuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgdXNlTm9jazogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGVudlZhcnM6IEpvaS5vYmplY3QoKS5vcHRpb25hbCgpLnVua25vd24odHJ1ZSkucGF0dGVybihKb2kuc3RyaW5nKCksIEpvaS5zdHJpbmcoKSksXG4gICAgdGltZXN0YW1wOiBKb2kubnVtYmVyKCkub3B0aW9uYWwoKS5taW4oMCksXG4gICAgcmVjb3JkQ29uc29sZTogSm9pLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGNyeXB0b1NlZWQ6IEpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHRpbWVvdXQ6IEpvaS5udW1iZXIoKS5vcHRpb25hbCgpLm1pbigwKVxuICB9KSwgJ0JhZCBPcHRpb25zIFByb3ZpZGVkJyk7XG4gIGNvbnN0IHVzZVRtcERpciA9IGdldChvcHRzLCAndXNlVG1wRGlyJywgZmFsc2UpO1xuICBjb25zdCB1c2VOb2NrID0gZ2V0KG9wdHMsICd1c2VOb2NrJywgZmFsc2UpO1xuICBjb25zdCBlbnZWYXJzID0gZ2V0KG9wdHMsICdlbnZWYXJzJywgbnVsbCk7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IGdldChvcHRzLCAndGltZXN0YW1wJywgbnVsbCk7XG4gIGNvbnN0IHJlY29yZENvbnNvbGUgPSBnZXQob3B0cywgJ3JlY29yZENvbnNvbGUnLCBmYWxzZSk7XG4gIGNvbnN0IGNyeXB0b1NlZWQgPSBnZXQob3B0cywgJ2NyeXB0b1NlZWQnLCBudWxsKTtcbiAgY29uc3QgdGltZW91dCA9IGdldChvcHRzLCAndGltZW91dCcsIG51bGwpO1xuXG4gIGxldCBkaXIgPSBudWxsO1xuICBsZXQgcmVxdWVzdFJlY29yZGVyID0gbnVsbDtcbiAgbGV0IGVudk1hbmFnZXJGaWxlID0gbnVsbDtcbiAgbGV0IGVudk1hbmFnZXJEZXNjID0gbnVsbDtcbiAgbGV0IHRpbWVLZWVwZXIgPSBudWxsO1xuICBsZXQgY29uc29sZVJlY29yZGVyID0gbnVsbDtcbiAgbGV0IHJhbmRvbVNlZWRlciA9IG51bGw7XG5cbiAgY29uc3QgZ2V0QXJncyA9ICgpID0+ICh7XG4gICAgY2FwdHVyZTogYXN5bmMgKGZuKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoeyBtZXNzYWdlOiAnZXhwZWN0ZWQgW0Z1bmN0aW9uXSB0byB0aHJvdyBhbiBlcnJvcicgfSk7XG4gICAgfSxcbiAgICAuLi4oZGlyID09PSBudWxsID8ge30gOiB7IGRpciB9KSxcbiAgICAuLi4oY29uc29sZVJlY29yZGVyID09PSBudWxsID8ge30gOiB7IGdldENvbnNvbGVPdXRwdXQ6IGNvbnNvbGVSZWNvcmRlci5nZXQgfSlcbiAgfSk7XG4gIGxldCBiZWZvcmVDYiA9ICgpID0+IHt9O1xuICBsZXQgYWZ0ZXJDYiA9ICgpID0+IHt9O1xuICBsZXQgYmVmb3JlRWFjaENiID0gKCkgPT4ge307XG4gIGxldCBhZnRlckVhY2hDYiA9ICgpID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIG1vY2hhLmRlc2NyaWJlKHN1aXRlTmFtZSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgbW9jaGEuYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKGdldFBhcmVudHModGhpcy50ZXN0KS5sZW5ndGggPT09IDMgJiYgZnMuZXhpc3RzU3luYyhlbnZWYXJGaWxlKSkge1xuICAgICAgICAgICAgZW52TWFuYWdlckZpbGUgPSBFbnZNYW5hZ2VyKHsgZW52VmFyczogZnMuc21hcnRSZWFkKGVudlZhckZpbGUpLCBhbGxvd092ZXJ3cml0ZTogZmFsc2UgfSk7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRmlsZS5hcHBseSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZW52VmFycyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZW52TWFuYWdlckRlc2MgPSBFbnZNYW5hZ2VyKHsgZW52VmFycywgYWxsb3dPdmVyd3JpdGU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgZW52TWFuYWdlckRlc2MuYXBwbHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRpbWVzdGFtcCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGltZUtlZXBlciA9IFRpbWVLZWVwZXIoeyB1bml4OiB0aW1lc3RhbXAgfSk7XG4gICAgICAgICAgICB0aW1lS2VlcGVyLmluamVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY3J5cHRvU2VlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmFuZG9tU2VlZGVyID0gUmFuZG9tU2VlZGVyKHsgc2VlZDogY3J5cHRvU2VlZCwgcmVzZWVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHJhbmRvbVNlZWRlci5pbmplY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVzZU5vY2sgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJlcXVlc3RSZWNvcmRlciA9IFJlcXVlc3RSZWNvcmRlcih7XG4gICAgICAgICAgICAgIGNhc3NldHRlRm9sZGVyOiBgJHt0ZXN0RmlsZX1fX2Nhc3NldHRlcy9gLFxuICAgICAgICAgICAgICBzdHJpcEhlYWRlcnM6IGZhbHNlLFxuICAgICAgICAgICAgICBzdHJpY3Q6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBiZWZvcmVDYi5jYWxsKHRoaXMpO1xuICAgICAgICB9KSgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBtb2NoYS5hZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmIChyZXF1ZXN0UmVjb3JkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJlcXVlc3RSZWNvcmRlci5zaHV0ZG93bigpO1xuICAgICAgICAgICAgcmVxdWVzdFJlY29yZGVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJhbmRvbVNlZWRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmFuZG9tU2VlZGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJhbmRvbVNlZWRlciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aW1lS2VlcGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lS2VlcGVyLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHRpbWVLZWVwZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZW52TWFuYWdlckRlc2MgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjLnVuYXBwbHkoKTtcbiAgICAgICAgICAgIGVudk1hbmFnZXJEZXNjID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVudk1hbmFnZXJGaWxlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRmlsZS51bmFwcGx5KCk7XG4gICAgICAgICAgICBlbnZNYW5hZ2VyRmlsZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGFmdGVyQ2IuY2FsbCh0aGlzKTtcbiAgICAgICAgfSkoKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgbW9jaGEuYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICh1c2VUbXBEaXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRtcC5zZXRHcmFjZWZ1bENsZWFudXAoKTtcbiAgICAgICAgICAgIGRpciA9IHRtcC5kaXJTeW5jKHsga2VlcDogZmFsc2UsIHVuc2FmZUNsZWFudXA6IHRydWUgfSkubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVzZU5vY2sgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGF3YWl0IHJlcXVlc3RSZWNvcmRlci5pbmplY3QoZ2VuQ2Fzc2V0dGVOYW1lKHRoaXMuY3VycmVudFRlc3QpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlY29yZENvbnNvbGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGVSZWNvcmRlciA9IENvbnNvbGVSZWNvcmRlcih7IHZlcmJvc2U6IHRydWUgfSk7XG4gICAgICAgICAgICBjb25zb2xlUmVjb3JkZXIuaW5qZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IGJlZm9yZUVhY2hDYi5jYWxsKHRoaXMsIGdldEFyZ3MoKSk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG1vY2hhLmFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmIChjb25zb2xlUmVjb3JkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnNvbGVSZWNvcmRlci5yZWxlYXNlKCk7XG4gICAgICAgICAgICBjb25zb2xlUmVjb3JkZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVxdWVzdFJlY29yZGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXF1ZXN0UmVjb3JkZXIucmVsZWFzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGlyICE9PSBudWxsKSB7XG4gICAgICAgICAgICBkaXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBhZnRlckVhY2hDYi5jYWxsKHRoaXMsIGdldEFyZ3MoKSk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZ2xvYmFsc1ByZXYgPSBPYmplY3Qua2V5cyhtb2NoYSlcbiAgICAgICAgLnJlZHVjZSgocCwga2V5KSA9PiBPYmplY3QuYXNzaWduKHAsIHsgW2tleV06IGdsb2JhbFtrZXldIH0pKTtcbiAgICAgIGdsb2JhbC5pdCA9ICh0ZXN0TmFtZSwgZm4pID0+IG1vY2hhLml0KFxuICAgICAgICB0ZXN0TmFtZSxcbiAgICAgICAgZm4ubGVuZ3RoID09PSAwIHx8IC9eW14oPV0qXFwoey8udGVzdChmbi50b1N0cmluZygpKVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBnZXRBcmdzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgICAgIDogZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGRvbmUpO1xuICAgICAgICAgIH1cbiAgICAgICk7XG4gICAgICBnbG9iYWwuc3BlY2lmeSA9IGdsb2JhbC5pdDtcbiAgICAgIGdsb2JhbC5kZXNjcmliZSA9IGRlc2M7XG4gICAgICBnbG9iYWwuY29udGV4dCA9IGdsb2JhbC5kZXNjcmliZTtcbiAgICAgIGdsb2JhbC5iZWZvcmUgPSAoZm4pID0+IHtcbiAgICAgICAgYmVmb3JlQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuYWZ0ZXIgPSAoZm4pID0+IHtcbiAgICAgICAgYWZ0ZXJDYiA9IGZuO1xuICAgICAgfTtcbiAgICAgIGdsb2JhbC5iZWZvcmVFYWNoID0gKGZuKSA9PiB7XG4gICAgICAgIGJlZm9yZUVhY2hDYiA9IGZuO1xuICAgICAgfTtcbiAgICAgIGdsb2JhbC5hZnRlckVhY2ggPSAoZm4pID0+IHtcbiAgICAgICAgYWZ0ZXJFYWNoQ2IgPSBmbjtcbiAgICAgIH07XG4gICAgICBhd2FpdCB0ZXN0cy5jYWxsKHRoaXMpO1xuICAgICAgT2JqZWN0LmVudHJpZXMoZ2xvYmFsc1ByZXYpLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgICAgICBnbG9iYWxba10gPSB2O1xuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBkZXNjO1xuIl19
{
"name": "node-tdd",
"version": "2.1.0",
"version": "2.2.0",
"description": "Drop in replacement for mocha to abstract commonly used test setups",

@@ -47,4 +47,4 @@ "main": "lib/index.js",

"@babel/register": "7.5.5",
"@blackflux/eslint-plugin-rules": "1.3.6",
"@blackflux/robo-config-plugin": "2.5.9",
"@blackflux/eslint-plugin-rules": "1.3.7",
"@blackflux/robo-config-plugin": "2.5.11",
"babel-eslint": "10.0.2",

@@ -56,3 +56,2 @@ "chai": "4.2.0",

"eslint-plugin-import": "2.18.2",
"eslint-plugin-jasmine": "2.10.1",
"eslint-plugin-json": "1.4.0",

@@ -59,0 +58,0 @@ "eslint-plugin-markdown": "1.0.0",

@@ -104,1 +104,8 @@ # node-tdd

When set, randomization is overwritten and consistent per test using the provided seed.
#### timeout
Type: `number`<br>
Default: -
Set the timeout for all tests in the suite.
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc