Comparing version 2.1.0 to 2.2.0
@@ -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. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
77244
21
470
111