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.13.0 to 2.14.0

lib/modules/request-recorder/request-injector.js

42

lib/modules/request-recorder.js

@@ -29,2 +29,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; }

const requestInjector = require('./request-recorder/request-injector');
const nockBack = nock.back;

@@ -81,10 +83,7 @@ const nockRecorder = nock.recorder;

nockBack.fixtures = opts.cassetteFolder;
nockListener.subscribe('no match', (req, options, body) => {
nockListener.subscribe('no match', () => {
assert(hasCassette === true);
const options = requestInjector.getLastOptions();
if (anyFlagPresent(['record'])) {
if (options === undefined) {
throw new Error('Please delete empty cassette instead of using "record" option.');
}
expectedCassette.push(async () => {

@@ -101,3 +100,7 @@ nockRecorder.rec({

});
r.write(body);
if (options.body !== undefined) {
r.write(options.body);
}
r.end();

@@ -113,6 +116,2 @@ });

} else if (anyFlagPresent(['stub'])) {
if (options === undefined) {
throw new Error('Please delete empty cassette instead of using "stub" option.');
}
expectedCassette.push({

@@ -122,3 +121,3 @@ scope: `${options.uri.protocol}//${options.uri.host}`,

path: options.uri.path,
body: tryParseJson(body),
body: tryParseJson(options.body),
status: 200,

@@ -129,8 +128,2 @@ response: {},

}
if (!anyFlagPresent(['magic', 'prune'])) {
expectedCassette.push(...pendingMocks.map(({
record
}) => record));
}
});

@@ -190,5 +183,10 @@ nockDone = await new Promise(resolve => nockBack(cassetteFile, {

}, resolve));
requestInjector.inject();
},
release: async () => {
assert(nockDone !== null);
requestInjector.release();
nockDone();
nockDone = null;
nockListener.unsubscribeAll('no match');

@@ -203,8 +201,6 @@ for (let idx = 0; idx < expectedCassette.length; idx += 1) {

nockDone();
nockDone = null;
nockListener.unsubscribeAll('no match');
if (opts.heal !== false) {
fs.smartWrite(cassetteFilePath, expectedCassette, {
fs.smartWrite(cassetteFilePath, anyFlagPresent(['magic', 'prune']) ? expectedCassette : [...expectedCassette, ...pendingMocks.map(({
record
}) => record)], {
keepOrder: outOfOrderErrors.length === 0 && pendingMocks.length === 0

@@ -240,2 +236,2 @@ });

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGVzL3JlcXVlc3QtcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsImh0dHAiLCJwYXRoIiwiZnMiLCJKb2kiLCJub2NrIiwibm9ja0xpc3RlbmVyIiwiaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2giLCJidWlsZEtleSIsInRyeVBhcnNlSnNvbiIsImNvbnZlcnRIZWFkZXJzIiwibm9ja0JhY2siLCJiYWNrIiwibm9ja1JlY29yZGVyIiwicmVjb3JkZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwib3B0cyIsIm9iamVjdCIsImtleXMiLCJjYXNzZXR0ZUZvbGRlciIsInN0cmluZyIsInN0cmlwSGVhZGVycyIsImJvb2xlYW4iLCJzdHJpY3QiLCJoZWFsIiwiYWx0ZXJuYXRpdmVzIiwibm9ja0RvbmUiLCJjYXNzZXR0ZUZpbGVQYXRoIiwia25vd25DYXNzZXR0ZU5hbWVzIiwicmVjb3JkcyIsIm91dE9mT3JkZXJFcnJvcnMiLCJleHBlY3RlZENhc3NldHRlIiwicGVuZGluZ01vY2tzIiwiYW55RmxhZ1ByZXNlbnQiLCJmbGFncyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIm5lZWRsZUZsYWdzIiwic3BsaXQiLCJzb21lIiwiZmxhZyIsImluY2x1ZGVzIiwiaW5qZWN0IiwiY2Fzc2V0dGVGaWxlIiwicHVzaCIsImpvaW4iLCJoYXNDYXNzZXR0ZSIsImV4aXN0c1N5bmMiLCJjYXNzZXR0ZUNvbnRlbnQiLCJzbWFydFJlYWQiLCJkZWZpbmUiLCJtYXAiLCJlIiwiaWR4Iiwia2V5IiwiaW50ZXJjZXB0b3JzIiwicmVjb3JkIiwic2V0TW9kZSIsImZpeHR1cmVzIiwic3Vic2NyaWJlIiwicmVxIiwib3B0aW9ucyIsImJvZHkiLCJ1bmRlZmluZWQiLCJFcnJvciIsInJlYyIsIm91dHB1dF9vYmplY3RzIiwiZG9udF9wcmludCIsImVuYWJsZV9yZXFoZWFkZXJzX3JlY29yZGluZyIsIlByb21pc2UiLCJyZXNvbHZlIiwiciIsInJlcXVlc3QiLCJyZXNwb25zZSIsIm9uIiwid3JpdGUiLCJlbmQiLCJyZWNvcmRlZCIsInBsYXkiLCJjbGVhciIsIk9iamVjdCIsImFzc2lnbiIsImhlYWRlcnMiLCJyYXdIZWFkZXJzIiwic2NvcGUiLCJ1cmkiLCJwcm90b2NvbCIsImhvc3QiLCJtZXRob2QiLCJzdGF0dXMiLCJyZXNwb25zZUlzQmluYXJ5IiwiYmVmb3JlIiwic2NvcGVJZHgiLCJmaWx0ZXJpbmdSZXF1ZXN0Qm9keSIsImZpbmRJbmRleCIsIm0iLCJyZXF1ZXN0Qm9keSIsImZpbHRlcmluZ1BhdGgiLCJyZXF1ZXN0UGF0aCIsImFmdGVyIiwiaW50ZXJjZXB0b3IiLCJyZXF1ZXN0Qm9keVN0cmluZyIsInJlc3BvbnNlQm9keSIsInJlZHVjZSIsInJlc3BCb2R5IiwiZm4iLCJzcGxpY2UiLCJhZnRlclJlY29yZCIsInJlY29yZGluZ3MiLCJKU09OIiwic3RyaW5naWZ5IiwicmVsZWFzZSIsInVuc3Vic2NyaWJlQWxsIiwic21hcnRXcml0ZSIsImtlZXBPcmRlciIsInNodXRkb3duIiwidW5leHBlY3RlZEZpbGVzIiwid2Fsa0RpciIsImZpbHRlciIsImYiLCJnZXQiLCJzbGljZSIsInVubWF0Y2hlZFJlY29yZGluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxJQUFJLEdBQUdGLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1HLEVBQUUsR0FBR0gsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBQ0EsTUFBTUksR0FBRyxHQUFHSixPQUFPLENBQUMsWUFBRCxDQUFuQjs7QUFDQSxNQUFNSyxJQUFJLEdBQUdMLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1NLFlBQVksR0FBR04sT0FBTyxDQUFDLGtDQUFELENBQTVCOztBQUNBLE1BQU1P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O0FBcUpOc0UsSUFBQUEsUUFBUSxFQUFFLE1BQU07QUFDZCxZQUFNQyxlQUFlLEdBQUduSCxFQUFFLENBQUNvSCxPQUFILENBQVd0RyxJQUFJLENBQUNHLGNBQWhCLEVBQWdDb0csTUFBaEMsQ0FBd0NDLENBQUQsSUFBTyxDQUFDNUYsa0JBQWtCLENBQUNjLFFBQW5CLENBQTRCOEUsQ0FBNUIsQ0FBL0MsQ0FBeEI7O0FBQ0EsVUFBSUgsZUFBZSxDQUFDaEYsTUFBaEIsS0FBMkIsQ0FBL0IsRUFBa0M7QUFDaEMsY0FBTSxJQUFJNEIsS0FBSixDQUFXLDBDQUF5Q29ELGVBQWUsQ0FBQ3ZFLElBQWhCLENBQXFCLElBQXJCLENBQTJCLEVBQS9FLENBQU47QUFDRDtBQUNGLEtBMUpLO0FBMkpOMkUsSUFBQUEsR0FBRyxFQUFFLE9BQU87QUFDVjVGLE1BQUFBLE9BQU8sRUFBRUEsT0FBTyxDQUFDNkYsS0FBUixFQURDO0FBRVY1RixNQUFBQSxnQkFBZ0IsRUFBRUEsZ0JBQWdCLENBQUM0RixLQUFqQixFQUZSO0FBR1ZDLE1BQUFBLG1CQUFtQixFQUFFM0YsWUFBWSxDQUFDb0IsR0FBYixDQUFrQkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNFLEdBQTFCLEVBQStCbUUsS0FBL0IsRUFIWDtBQUlWM0YsTUFBQUEsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDMkYsS0FBakIsRUFKUjtBQUtWL0YsTUFBQUE7QUFMVSxLQUFQO0FBM0pDLEdBQVI7QUFtS0QsQ0EzTEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbmNvbnN0IGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgZnMgPSByZXF1aXJlKCdzbWFydC1mcycpO1xuY29uc3QgSm9pID0gcmVxdWlyZSgnam9pLXN0cmljdCcpO1xuY29uc3Qgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmNvbnN0IG5vY2tMaXN0ZW5lciA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci9ub2NrLWxpc3RlbmVyJyk7XG5jb25zdCBoZWFsU3FzU2VuZE1lc3NhZ2VCYXRjaCA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci9oZWFsLXNxcy1zZW5kLW1lc3NhZ2UtYmF0Y2gnKTtcbmNvbnN0IHsgYnVpbGRLZXksIHRyeVBhcnNlSnNvbiwgY29udmVydEhlYWRlcnMgfSA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci91dGlsJyk7XG5cbmNvbnN0IG5vY2tCYWNrID0gbm9jay5iYWNrO1xuY29uc3Qgbm9ja1JlY29yZGVyID0gbm9jay5yZWNvcmRlcjtcblxubW9kdWxlLmV4cG9ydHMgPSAob3B0cykgPT4ge1xuICBKb2kuYXNzZXJ0KG9wdHMsIEpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICBjYXNzZXR0ZUZvbGRlcjogSm9pLnN0cmluZygpLFxuICAgIHN0cmlwSGVhZGVyczogSm9pLmJvb2xlYW4oKSxcbiAgICBzdHJpY3Q6IEpvaS5ib29sZWFuKCksXG4gICAgaGVhbDogSm9pLmFsdGVybmF0aXZlcyhKb2kuYm9vbGVhbigpLCBKb2kuc3RyaW5nKCkpXG4gIH0pLCAnSW52YWxpZCBPcHRpb25zIFByb3ZpZGVkJyk7XG4gIGxldCBub2NrRG9uZSA9IG51bGw7XG4gIGxldCBjYXNzZXR0ZUZpbGVQYXRoID0gbnVsbDtcbiAgY29uc3Qga25vd25DYXNzZXR0ZU5hbWVzID0gW107XG4gIGNvbnN0IHJlY29yZHMgPSBbXTtcbiAgY29uc3Qgb3V0T2ZPcmRlckVycm9ycyA9IFtdO1xuICBjb25zdCBleHBlY3RlZENhc3NldHRlID0gW107XG4gIGNvbnN0IHBlbmRpbmdNb2NrcyA9IFtdO1xuXG4gIGNvbnN0IGFueUZsYWdQcmVzZW50ID0gKGZsYWdzKSA9PiB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkoZmxhZ3MpICYmIGZsYWdzLmxlbmd0aCAhPT0gMCk7XG4gICAgaWYgKHR5cGVvZiBvcHRzLmhlYWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG5lZWRsZUZsYWdzID0gb3B0cy5oZWFsLnNwbGl0KCcsJyk7XG4gICAgcmV0dXJuIGZsYWdzLnNvbWUoKGZsYWcpID0+IG5lZWRsZUZsYWdzLmluY2x1ZGVzKGZsYWcpKTtcbiAgfTtcblxuICByZXR1cm4gKHtcbiAgICBpbmplY3Q6IGFzeW5jIChjYXNzZXR0ZUZpbGUpID0+IHtcbiAgICAgIGFzc2VydChub2NrRG9uZSA9PT0gbnVsbCk7XG4gICAgICBrbm93bkNhc3NldHRlTmFtZXMucHVzaChjYXNzZXR0ZUZpbGUpO1xuICAgICAgcmVjb3Jkcy5sZW5ndGggPSAwO1xuICAgICAgb3V0T2ZPcmRlckVycm9ycy5sZW5ndGggPSAwO1xuICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5sZW5ndGggPSAwO1xuICAgICAgcGVuZGluZ01vY2tzLmxlbmd0aCA9IDA7XG5cbiAgICAgIGNhc3NldHRlRmlsZVBhdGggPSBwYXRoLmpvaW4ob3B0cy5jYXNzZXR0ZUZvbGRlciwgY2Fzc2V0dGVGaWxlKTtcbiAgICAgIGNvbnN0IGhhc0Nhc3NldHRlID0gZnMuZXhpc3RzU3luYyhjYXNzZXR0ZUZpbGVQYXRoKTtcbiAgICAgIGlmIChoYXNDYXNzZXR0ZSkge1xuICAgICAgICBjb25zdCBjYXNzZXR0ZUNvbnRlbnQgPSBmcy5zbWFydFJlYWQoY2Fzc2V0dGVGaWxlUGF0aCk7XG4gICAgICAgIHBlbmRpbmdNb2Nrcy5wdXNoKC4uLm5vY2tcbiAgICAgICAgICAuZGVmaW5lKGNhc3NldHRlQ29udGVudClcbiAgICAgICAgICAubWFwKChlLCBpZHgpID0+ICh7XG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICBrZXk6IGJ1aWxkS2V5KGUuaW50ZXJjZXB0b3JzWzBdKSxcbiAgICAgICAgICAgIHJlY29yZDogY2Fzc2V0dGVDb250ZW50W2lkeF1cbiAgICAgICAgICB9KSkpO1xuICAgICAgfVxuXG4gICAgICBub2NrQmFjay5zZXRNb2RlKGhhc0Nhc3NldHRlID8gJ2xvY2tkb3duJyA6ICdyZWNvcmQnKTtcbiAgICAgIG5vY2tCYWNrLmZpeHR1cmVzID0gb3B0cy5jYXNzZXR0ZUZvbGRlcjtcbiAgICAgIG5vY2tMaXN0ZW5lci5zdWJzY3JpYmUoJ25vIG1hdGNoJywgKHJlcSwgb3B0aW9ucywgYm9keSkgPT4ge1xuICAgICAgICBhc3NlcnQoaGFzQ2Fzc2V0dGUgPT09IHRydWUpO1xuICAgICAgICBpZiAoYW55RmxhZ1ByZXNlbnQoWydyZWNvcmQnXSkpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBkZWxldGUgZW1wdHkgY2Fzc2V0dGUgaW5zdGVhZCBvZiB1c2luZyBcInJlY29yZFwiIG9wdGlvbi4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIG5vY2tSZWNvcmRlci5yZWMoe1xuICAgICAgICAgICAgICBvdXRwdXRfb2JqZWN0czogdHJ1ZSxcbiAgICAgICAgICAgICAgZG9udF9wcmludDogdHJ1ZSxcbiAgICAgICAgICAgICAgZW5hYmxlX3JlcWhlYWRlcnNfcmVjb3JkaW5nOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByID0gaHR0cC5yZXF1ZXN0KG9wdGlvbnMsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgKCkgPT4ge30pO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdlbmQnLCByZXNvbHZlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHIud3JpdGUoYm9keSk7XG4gICAgICAgICAgICAgIHIuZW5kKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZGVkID0gbm9ja1JlY29yZGVyLnBsYXkoKTtcbiAgICAgICAgICAgIG5vY2tSZWNvcmRlci5jbGVhcigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZGVkLm1hcCgocmVjb3JkKSA9PiBPYmplY3QuYXNzaWduKHJlY29yZCwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiBvcHRzLnN0cmlwSGVhZGVycyA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IGNvbnZlcnRIZWFkZXJzKHJlY29yZC5yYXdIZWFkZXJzKSxcbiAgICAgICAgICAgICAgcmF3SGVhZGVyczogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYW55RmxhZ1ByZXNlbnQoWydzdHViJ10pKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgZGVsZXRlIGVtcHR5IGNhc3NldHRlIGluc3RlYWQgb2YgdXNpbmcgXCJzdHViXCIgb3B0aW9uLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBleHBlY3RlZENhc3NldHRlLnB1c2goe1xuICAgICAgICAgICAgc2NvcGU6IGAke29wdGlvbnMudXJpLnByb3RvY29sfS8vJHtvcHRpb25zLnVyaS5ob3N0fWAsXG4gICAgICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kLFxuICAgICAgICAgICAgcGF0aDogb3B0aW9ucy51cmkucGF0aCxcbiAgICAgICAgICAgIGJvZHk6IHRyeVBhcnNlSnNvbihib2R5KSxcbiAgICAgICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgICAgICAgcmVzcG9uc2VJc0JpbmFyeTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFueUZsYWdQcmVzZW50KFsnbWFnaWMnLCAncHJ1bmUnXSkpIHtcbiAgICAgICAgICBleHBlY3RlZENhc3NldHRlLnB1c2goLi4ucGVuZGluZ01vY2tzLm1hcCgoeyByZWNvcmQgfSkgPT4gcmVjb3JkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbm9ja0RvbmUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gbm9ja0JhY2soY2Fzc2V0dGVGaWxlLCB7XG4gICAgICAgIGJlZm9yZTogKHNjb3BlLCBzY29wZUlkeCkgPT4ge1xuICAgICAgICAgIHJlY29yZHMucHVzaCh7IC4uLnNjb3BlIH0pO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1JlcXVlc3RCb2R5ID0gKGJvZHkpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ2JvZHknXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB0cnlQYXJzZUpzb24oYm9keSk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5ib2R5ID0gcmVxdWVzdEJvZHkgPT09IG51bGwgPyAnbnVsbCcgOiByZXF1ZXN0Qm9keTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLmJvZHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm9keTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHNjb3BlLmZpbHRlcmluZ1BhdGggPSAocmVxdWVzdFBhdGgpID0+IHtcbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3BhdGgnXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgobSkgPT4gbS5pZHggPT09IHNjb3BlSWR4KTtcbiAgICAgICAgICAgICAgcGVuZGluZ01vY2tzW2lkeF0ucmVjb3JkLnBhdGggPSByZXF1ZXN0UGF0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLnBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFBhdGg7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyOiAoc2NvcGUsIHNjb3BlSWR4KSA9PiB7XG4gICAgICAgICAgc2NvcGUub24oJ3JlcXVlc3QnLCAocmVxLCBpbnRlcmNlcHRvciwgcmVxdWVzdEJvZHlTdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBlbmRpbmdNb2Nrcy5maW5kSW5kZXgoKGUpID0+IGUuaWR4ID09PSBzY29wZUlkeCk7XG5cbiAgICAgICAgICAgIGlmIChhbnlGbGFnUHJlc2VudChbJ21hZ2ljJywgJ3Jlc3BvbnNlJ10pKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IHRyeVBhcnNlSnNvbihbXG4gICAgICAgICAgICAgICAgaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2hcbiAgICAgICAgICAgICAgXS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHJlc3BCb2R5LCBmbikgPT4gZm4ocmVxdWVzdEJvZHlTdHJpbmcsIHJlc3BCb2R5LCBzY29wZSksXG4gICAgICAgICAgICAgICAgaW50ZXJjZXB0b3IuYm9keVxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgIGludGVyY2VwdG9yLmJvZHkgPSByZXNwb25zZUJvZHk7XG4gICAgICAgICAgICAgIHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZC5yZXNwb25zZSA9IHJlc3BvbnNlQm9keTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKHBlbmRpbmdNb2Nrc1tpZHhdLnJlY29yZCk7XG4gICAgICAgICAgICBpZiAoaWR4ICE9PSAwKSB7XG4gICAgICAgICAgICAgIG91dE9mT3JkZXJFcnJvcnMucHVzaChwZW5kaW5nTW9ja3NbaWR4XS5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVuZGluZ01vY2tzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlY29yZDogKHJlY29yZGluZ3MpID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZGluZ3MubWFwKChyKSA9PiAoe1xuICAgICAgICAgIC4uLnIsXG4gICAgICAgICAgYm9keTogdHJ5UGFyc2VKc29uKHIuYm9keSksXG4gICAgICAgICAgcmF3SGVhZGVyczogb3B0cy5zdHJpcEhlYWRlcnMgPT09IHRydWUgPyB1bmRlZmluZWQgOiByLnJhd0hlYWRlcnNcbiAgICAgICAgfSkpLCBudWxsLCAyKVxuICAgICAgfSwgcmVzb2x2ZSkpO1xuICAgIH0sXG4gICAgcmVsZWFzZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXNzZXJ0KG5vY2tEb25lICE9PSBudWxsKTtcbiAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGV4cGVjdGVkQ2Fzc2V0dGUubGVuZ3RoOyBpZHggKz0gMSkge1xuICAgICAgICBpZiAodHlwZW9mIGV4cGVjdGVkQ2Fzc2V0dGVbaWR4XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5zcGxpY2UoaWR4LCAxLCAuLi5hd2FpdCBleHBlY3RlZENhc3NldHRlW2lkeF0oKSk7XG4gICAgICAgICAgaWR4IC09IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vY2tEb25lKCk7XG4gICAgICBub2NrRG9uZSA9IG51bGw7XG4gICAgICBub2NrTGlzdGVuZXIudW5zdWJzY3JpYmVBbGwoJ25vIG1hdGNoJyk7XG4gICAgICBpZiAob3B0cy5oZWFsICE9PSBmYWxzZSkge1xuICAgICAgICBmcy5zbWFydFdyaXRlKGNhc3NldHRlRmlsZVBhdGgsIGV4cGVjdGVkQ2Fzc2V0dGUsIHtcbiAgICAgICAgICBrZWVwT3JkZXI6IG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoID09PSAwICYmIHBlbmRpbmdNb2Nrcy5sZW5ndGggPT09IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5zdHJpY3QgIT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChvdXRPZk9yZGVyRXJyb3JzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3V0IG9mIE9yZGVyIFJlY29yZGluZ3M6ICR7b3V0T2ZPcmRlckVycm9ycy5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZW5kaW5nTW9ja3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbm1hdGNoZWQgUmVjb3JkaW5nczogJHtwZW5kaW5nTW9ja3MubWFwKChlKSA9PiBlLmtleSkuam9pbignLCAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgc2h1dGRvd246ICgpID0+IHtcbiAgICAgIGNvbnN0IHVuZXhwZWN0ZWRGaWxlcyA9IGZzLndhbGtEaXIob3B0cy5jYXNzZXR0ZUZvbGRlcikuZmlsdGVyKChmKSA9PiAha25vd25DYXNzZXR0ZU5hbWVzLmluY2x1ZGVzKGYpKTtcbiAgICAgIGlmICh1bmV4cGVjdGVkRmlsZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBmaWxlKHMpIGluIGNhc3NldHRlIGZvbGRlcjogJHt1bmV4cGVjdGVkRmlsZXMuam9pbignLCAnKX1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldDogKCkgPT4gKHtcbiAgICAgIHJlY29yZHM6IHJlY29yZHMuc2xpY2UoKSxcbiAgICAgIG91dE9mT3JkZXJFcnJvcnM6IG91dE9mT3JkZXJFcnJvcnMuc2xpY2UoKSxcbiAgICAgIHVubWF0Y2hlZFJlY29yZGluZ3M6IHBlbmRpbmdNb2Nrcy5tYXAoKGUpID0+IGUua2V5KS5zbGljZSgpLFxuICAgICAgZXhwZWN0ZWRDYXNzZXR0ZTogZXhwZWN0ZWRDYXNzZXR0ZS5zbGljZSgpLFxuICAgICAgY2Fzc2V0dGVGaWxlUGF0aFxuICAgIH0pXG4gIH0pO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGVzL3JlcXVlc3QtcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsImh0dHAiLCJwYXRoIiwiZnMiLCJKb2kiLCJub2NrIiwibm9ja0xpc3RlbmVyIiwiaGVhbFNxc1NlbmRNZXNzYWdlQmF0Y2giLCJidWlsZEtleSIsInRyeVBhcnNlSnNvbiIsImNvbnZlcnRIZWFkZXJzIiwicmVxdWVzdEluamVjdG9yIiwibm9ja0JhY2siLCJiYWNrIiwibm9ja1JlY29yZGVyIiwicmVjb3JkZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwib3B0cyIsIm9iamVjdCIsImtleXMiLCJjYXNzZXR0ZUZvbGRlciIsInN0cmluZyIsInN0cmlwSGVhZGVycyIsImJvb2xlYW4iLCJzdHJpY3QiLCJoZWFsIiwiYWx0ZXJuYXRpdmVzIiwibm9ja0RvbmUiLCJjYXNzZXR0ZUZpbGVQYXRoIiwia25vd25DYXNzZXR0ZU5hbWVzIiwicmVjb3JkcyIsIm91dE9mT3JkZXJFcnJvcnMiLCJleHBlY3RlZENhc3NldHRlIiwicGVuZGluZ01vY2tzIiwiYW55RmxhZ1ByZXNlbnQiLCJmbGFncyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIm5lZWRsZUZsYWdzIiwic3BsaXQiLCJzb21lIiwiZmxhZyIsImluY2x1ZGVzIiwiaW5qZWN0IiwiY2Fzc2V0dGVGaWxlIiwicHVzaCIsImpvaW4iLCJoYXNDYXNzZXR0ZSIsImV4aXN0c1N5bmMiLCJjYXNzZXR0ZUNvbnRlbnQiLCJzbWFydFJlYWQiLCJkZWZpbmUiLCJtYXAiLCJlIiwiaWR4Iiwia2V5IiwiaW50ZXJjZXB0b3JzIiwicmVjb3JkIiwic2V0TW9kZSIsImZpeHR1cmVzIiwic3Vic2NyaWJlIiwib3B0aW9ucyIsImdldExhc3RPcHRpb25zIiwicmVjIiwib3V0cHV0X29iamVjdHMiLCJkb250X3ByaW50IiwiZW5hYmxlX3JlcWhlYWRlcnNfcmVjb3JkaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyIiwicmVxdWVzdCIsInJlc3BvbnNlIiwib24iLCJib2R5IiwidW5kZWZpbmVkIiwid3JpdGUiLCJlbmQiLCJyZWNvcmRlZCIsInBsYXkiLCJjbGVhciIsIk9iamVjdCIsImFzc2lnbiIsImhlYWRlcnMiLCJyYXdIZWFkZXJzIiwic2NvcGUiLCJ1cmkiLCJwcm90b2NvbCIsImhvc3QiLCJtZXRob2QiLCJzdGF0dXMiLCJyZXNwb25zZUlzQmluYXJ5IiwiYmVmb3JlIiwic2NvcGVJZHgiLCJmaWx0ZXJpbmdSZXF1ZXN0Qm9keSIsImZpbmRJbmRleCIsIm0iLCJyZXF1ZXN0Qm9keSIsImZpbHRlcmluZ1BhdGgiLCJyZXF1ZXN0UGF0aCIsImFmdGVyIiwicmVxIiwiaW50ZXJjZXB0b3IiLCJyZXF1ZXN0Qm9keVN0cmluZyIsInJlc3BvbnNlQm9keSIsInJlZHVjZSIsInJlc3BCb2R5IiwiZm4iLCJzcGxpY2UiLCJhZnRlclJlY29yZCIsInJlY29yZGluZ3MiLCJKU09OIiwic3RyaW5naWZ5IiwicmVsZWFzZSIsInVuc3Vic2NyaWJlQWxsIiwic21hcnRXcml0ZSIsImtlZXBPcmRlciIsIkVycm9yIiwic2h1dGRvd24iLCJ1bmV4cGVjdGVkRmlsZXMiLCJ3YWxrRGlyIiwiZmlsdGVyIiwiZiIsImdldCIsInNsaWNlIiwidW5tYXRjaGVkUmVjb3JkaW5ncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUcsRUFBRSxHQUFHSCxPQUFPLENBQUMsVUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxHQUFHLEdBQUdKLE9BQU8sQ0FBQyxZQUFELENBQW5COztBQUNBLE1BQU1LLElBQUksR0FBR0wsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTU0sWUFBWSxHQUFH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MEMsRUFBN0UsQ0FBTjtBQUNEO0FBQ0Y7QUFDRixLQXRKSztBQXVKTnVFLElBQUFBLFFBQVEsRUFBRSxNQUFNO0FBQ2QsWUFBTUMsZUFBZSxHQUFHckgsRUFBRSxDQUFDc0gsT0FBSCxDQUFXdkcsSUFBSSxDQUFDRyxjQUFoQixFQUFnQ3FHLE1BQWhDLENBQXdDQyxDQUFELElBQU8sQ0FBQzdGLGtCQUFrQixDQUFDYyxRQUFuQixDQUE0QitFLENBQTVCLENBQS9DLENBQXhCOztBQUNBLFVBQUlILGVBQWUsQ0FBQ2pGLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQ2hDLGNBQU0sSUFBSStFLEtBQUosQ0FBVywwQ0FBeUNFLGVBQWUsQ0FBQ3hFLElBQWhCLENBQXFCLElBQXJCLENBQTJCLEVBQS9FLENBQU47QUFDRDtBQUNGLEtBNUpLO0FBNkpONEUsSUFBQUEsR0FBRyxFQUFFLE9BQU87QUFDVjdGLE1BQUFBLE9BQU8sRUFBRUEsT0FBTyxDQUFDOEYsS0FBUixFQURDO0FBRVY3RixNQUFBQSxnQkFBZ0IsRUFBRUEsZ0JBQWdCLENBQUM2RixLQUFqQixFQUZSO0FBR1ZDLE1BQUFBLG1CQUFtQixFQUFFNUYsWUFBWSxDQUFDb0IsR0FBYixDQUFrQkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNFLEdBQTFCLEVBQStCb0UsS0FBL0IsRUFIWDtBQUlWNUYsTUFBQUEsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDNEYsS0FBakIsRUFKUjtBQUtWaEcsTUFBQUE7QUFMVSxLQUFQO0FBN0pDLEdBQVI7QUFxS0QsQ0E3TEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbmNvbnN0IGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgZnMgPSByZXF1aXJlKCdzbWFydC1mcycpO1xuY29uc3QgSm9pID0gcmVxdWlyZSgnam9pLXN0cmljdCcpO1xuY29uc3Qgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmNvbnN0IG5vY2tMaXN0ZW5lciA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci9ub2NrLWxpc3RlbmVyJyk7XG5jb25zdCBoZWFsU3FzU2VuZE1lc3NhZ2VCYXRjaCA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci9oZWFsLXNxcy1zZW5kLW1lc3NhZ2UtYmF0Y2gnKTtcbmNvbnN0IHsgYnVpbGRLZXksIHRyeVBhcnNlSnNvbiwgY29udmVydEhlYWRlcnMgfSA9IHJlcXVpcmUoJy4vcmVxdWVzdC1yZWNvcmRlci91dGlsJyk7XG5jb25zdCByZXF1ZXN0SW5qZWN0b3IgPSByZXF1aXJlKCcuL3JlcXVlc3QtcmVjb3JkZXIvcmVxdWVzdC1pbmplY3RvcicpO1xuXG5jb25zdCBub2NrQmFjayA9IG5vY2suYmFjaztcbmNvbnN0IG5vY2tSZWNvcmRlciA9IG5vY2sucmVjb3JkZXI7XG5cbm1vZHVsZS5leHBvcnRzID0gKG9wdHMpID0+IHtcbiAgSm9pLmFzc2VydChvcHRzLCBKb2kub2JqZWN0KCkua2V5cyh7XG4gICAgY2Fzc2V0dGVGb2xkZXI6IEpvaS5zdHJpbmcoKSxcbiAgICBzdHJpcEhlYWRlcnM6IEpvaS5ib29sZWFuKCksXG4gICAgc3RyaWN0OiBKb2kuYm9vbGVhbigpLFxuICAgIGhlYWw6IEpvaS5hbHRlcm5hdGl2ZXMoSm9pLmJvb2xlYW4oKSwgSm9pLnN0cmluZygpKVxuICB9KSwgJ0ludmFsaWQgT3B0aW9ucyBQcm92aWRlZCcpO1xuICBsZXQgbm9ja0RvbmUgPSBudWxsO1xuICBsZXQgY2Fzc2V0dGVGaWxlUGF0aCA9IG51bGw7XG4gIGNvbnN0IGtub3duQ2Fzc2V0dGVOYW1lcyA9IFtdO1xuICBjb25zdCByZWNvcmRzID0gW107XG4gIGNvbnN0IG91dE9mT3JkZXJFcnJvcnMgPSBbXTtcbiAgY29uc3QgZXhwZWN0ZWRDYXNzZXR0ZSA9IFtdO1xuICBjb25zdCBwZW5kaW5nTW9ja3MgPSBbXTtcblxuICBjb25zdCBhbnlGbGFnUHJlc2VudCA9IChmbGFncykgPT4ge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KGZsYWdzKSAmJiBmbGFncy5sZW5ndGggIT09IDApO1xuICAgIGlmICh0eXBlb2Ygb3B0cy5oZWFsICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBuZWVkbGVGbGFncyA9IG9wdHMuaGVhbC5zcGxpdCgnLCcpO1xuICAgIHJldHVybiBmbGFncy5zb21lKChmbGFnKSA9PiBuZWVkbGVGbGFncy5pbmNsdWRlcyhmbGFnKSk7XG4gIH07XG5cbiAgcmV0dXJuICh7XG4gICAgaW5qZWN0OiBhc3luYyAoY2Fzc2V0dGVGaWxlKSA9PiB7XG4gICAgICBhc3NlcnQobm9ja0RvbmUgPT09IG51bGwpO1xuICAgICAga25vd25DYXNzZXR0ZU5hbWVzLnB1c2goY2Fzc2V0dGVGaWxlKTtcbiAgICAgIHJlY29yZHMubGVuZ3RoID0gMDtcbiAgICAgIG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoID0gMDtcbiAgICAgIGV4cGVjdGVkQ2Fzc2V0dGUubGVuZ3RoID0gMDtcbiAgICAgIHBlbmRpbmdNb2Nrcy5sZW5ndGggPSAwO1xuXG4gICAgICBjYXNzZXR0ZUZpbGVQYXRoID0gcGF0aC5qb2luKG9wdHMuY2Fzc2V0dGVGb2xkZXIsIGNhc3NldHRlRmlsZSk7XG4gICAgICBjb25zdCBoYXNDYXNzZXR0ZSA9IGZzLmV4aXN0c1N5bmMoY2Fzc2V0dGVGaWxlUGF0aCk7XG4gICAgICBpZiAoaGFzQ2Fzc2V0dGUpIHtcbiAgICAgICAgY29uc3QgY2Fzc2V0dGVDb250ZW50ID0gZnMuc21hcnRSZWFkKGNhc3NldHRlRmlsZVBhdGgpO1xuICAgICAgICBwZW5kaW5nTW9ja3MucHVzaCguLi5ub2NrXG4gICAgICAgICAgLmRlZmluZShjYXNzZXR0ZUNvbnRlbnQpXG4gICAgICAgICAgLm1hcCgoZSwgaWR4KSA9PiAoe1xuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAga2V5OiBidWlsZEtleShlLmludGVyY2VwdG9yc1swXSksXG4gICAgICAgICAgICByZWNvcmQ6IGNhc3NldHRlQ29udGVudFtpZHhdXG4gICAgICAgICAgfSkpKTtcbiAgICAgIH1cblxuICAgICAgbm9ja0JhY2suc2V0TW9kZShoYXNDYXNzZXR0ZSA/ICdsb2NrZG93bicgOiAncmVjb3JkJyk7XG4gICAgICBub2NrQmFjay5maXh0dXJlcyA9IG9wdHMuY2Fzc2V0dGVGb2xkZXI7XG4gICAgICBub2NrTGlzdGVuZXIuc3Vic2NyaWJlKCdubyBtYXRjaCcsICgpID0+IHtcbiAgICAgICAgYXNzZXJ0KGhhc0Nhc3NldHRlID09PSB0cnVlKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHJlcXVlc3RJbmplY3Rvci5nZXRMYXN0T3B0aW9ucygpO1xuICAgICAgICBpZiAoYW55RmxhZ1ByZXNlbnQoWydyZWNvcmQnXSkpIHtcbiAgICAgICAgICBleHBlY3RlZENhc3NldHRlLnB1c2goYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgbm9ja1JlY29yZGVyLnJlYyh7XG4gICAgICAgICAgICAgIG91dHB1dF9vYmplY3RzOiB0cnVlLFxuICAgICAgICAgICAgICBkb250X3ByaW50OiB0cnVlLFxuICAgICAgICAgICAgICBlbmFibGVfcmVxaGVhZGVyc19yZWNvcmRpbmc6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHIgPSBodHRwLnJlcXVlc3Qob3B0aW9ucywgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uub24oJ2RhdGEnLCAoKSA9PiB7fSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uub24oJ2VuZCcsIHJlc29sdmUpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYm9keSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgci53cml0ZShvcHRpb25zLmJvZHkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHIuZW5kKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZGVkID0gbm9ja1JlY29yZGVyLnBsYXkoKTtcbiAgICAgICAgICAgIG5vY2tSZWNvcmRlci5jbGVhcigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZGVkLm1hcCgocmVjb3JkKSA9PiBPYmplY3QuYXNzaWduKHJlY29yZCwge1xuICAgICAgICAgICAgICBoZWFkZXJzOiBvcHRzLnN0cmlwSGVhZGVycyA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IGNvbnZlcnRIZWFkZXJzKHJlY29yZC5yYXdIZWFkZXJzKSxcbiAgICAgICAgICAgICAgcmF3SGVhZGVyczogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYW55RmxhZ1ByZXNlbnQoWydzdHViJ10pKSB7XG4gICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5wdXNoKHtcbiAgICAgICAgICAgIHNjb3BlOiBgJHtvcHRpb25zLnVyaS5wcm90b2NvbH0vLyR7b3B0aW9ucy51cmkuaG9zdH1gLFxuICAgICAgICAgICAgbWV0aG9kOiBvcHRpb25zLm1ldGhvZCxcbiAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMudXJpLnBhdGgsXG4gICAgICAgICAgICBib2R5OiB0cnlQYXJzZUpzb24ob3B0aW9ucy5ib2R5KSxcbiAgICAgICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgICAgICAgcmVzcG9uc2VJc0JpbmFyeTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBub2NrRG9uZSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBub2NrQmFjayhjYXNzZXR0ZUZpbGUsIHtcbiAgICAgICAgYmVmb3JlOiAoc2NvcGUsIHNjb3BlSWR4KSA9PiB7XG4gICAgICAgICAgcmVjb3Jkcy5wdXNoKHsgLi4uc2NvcGUgfSk7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgc2NvcGUuZmlsdGVyaW5nUmVxdWVzdEJvZHkgPSAoYm9keSkgPT4ge1xuICAgICAgICAgICAgaWYgKGFueUZsYWdQcmVzZW50KFsnbWFnaWMnLCAnYm9keSddKSkge1xuICAgICAgICAgICAgICBjb25zdCBpZHggPSBwZW5kaW5nTW9ja3MuZmluZEluZGV4KChtKSA9PiBtLmlkeCA9PT0gc2NvcGVJZHgpO1xuICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHRyeVBhcnNlSnNvbihib2R5KTtcbiAgICAgICAgICAgICAgcGVuZGluZ01vY2tzW2lkeF0ucmVjb3JkLmJvZHkgPSByZXF1ZXN0Qm9keSA9PT0gbnVsbCA/ICdudWxsJyA6IHJlcXVlc3RCb2R5O1xuICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuYm9keTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBib2R5O1xuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgc2NvcGUuZmlsdGVyaW5nUGF0aCA9IChyZXF1ZXN0UGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFueUZsYWdQcmVzZW50KFsnbWFnaWMnLCAncGF0aCddKSkge1xuICAgICAgICAgICAgICBjb25zdCBpZHggPSBwZW5kaW5nTW9ja3MuZmluZEluZGV4KChtKSA9PiBtLmlkeCA9PT0gc2NvcGVJZHgpO1xuICAgICAgICAgICAgICBwZW5kaW5nTW9ja3NbaWR4XS5yZWNvcmQucGF0aCA9IHJlcXVlc3RQYXRoO1xuICAgICAgICAgICAgICByZXR1cm4gc2NvcGUucGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0UGF0aDtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBzY29wZTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXI6IChzY29wZSwgc2NvcGVJZHgpID0+IHtcbiAgICAgICAgICBzY29wZS5vbigncmVxdWVzdCcsIChyZXEsIGludGVyY2VwdG9yLCByZXF1ZXN0Qm9keVN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gcGVuZGluZ01vY2tzLmZpbmRJbmRleCgoZSkgPT4gZS5pZHggPT09IHNjb3BlSWR4KTtcblxuICAgICAgICAgICAgaWYgKGFueUZsYWdQcmVzZW50KFsnbWFnaWMnLCAncmVzcG9uc2UnXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gdHJ5UGFyc2VKc29uKFtcbiAgICAgICAgICAgICAgICBoZWFsU3FzU2VuZE1lc3NhZ2VCYXRjaFxuICAgICAgICAgICAgICBdLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocmVzcEJvZHksIGZuKSA9PiBmbihyZXF1ZXN0Qm9keVN0cmluZywgcmVzcEJvZHksIHNjb3BlKSxcbiAgICAgICAgICAgICAgICBpbnRlcmNlcHRvci5ib2R5XG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgICAgaW50ZXJjZXB0b3IuYm9keSA9IHJlc3BvbnNlQm9keTtcbiAgICAgICAgICAgICAgcGVuZGluZ01vY2tzW2lkeF0ucmVjb3JkLnJlc3BvbnNlID0gcmVzcG9uc2VCb2R5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBleHBlY3RlZENhc3NldHRlLnB1c2gocGVuZGluZ01vY2tzW2lkeF0ucmVjb3JkKTtcbiAgICAgICAgICAgIGlmIChpZHggIT09IDApIHtcbiAgICAgICAgICAgICAgb3V0T2ZPcmRlckVycm9ycy5wdXNoKHBlbmRpbmdNb2Nrc1tpZHhdLmtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZW5kaW5nTW9ja3Muc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyUmVjb3JkOiAocmVjb3JkaW5ncykgPT4gSlNPTi5zdHJpbmdpZnkocmVjb3JkaW5ncy5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgLi4ucixcbiAgICAgICAgICBib2R5OiB0cnlQYXJzZUpzb24oci5ib2R5KSxcbiAgICAgICAgICByYXdIZWFkZXJzOiBvcHRzLnN0cmlwSGVhZGVycyA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IHIucmF3SGVhZGVyc1xuICAgICAgICB9KSksIG51bGwsIDIpXG4gICAgICB9LCByZXNvbHZlKSk7XG4gICAgICByZXF1ZXN0SW5qZWN0b3IuaW5qZWN0KCk7XG4gICAgfSxcbiAgICByZWxlYXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhc3NlcnQobm9ja0RvbmUgIT09IG51bGwpO1xuICAgICAgcmVxdWVzdEluamVjdG9yLnJlbGVhc2UoKTtcbiAgICAgIG5vY2tEb25lKCk7XG4gICAgICBub2NrRG9uZSA9IG51bGw7XG4gICAgICBub2NrTGlzdGVuZXIudW5zdWJzY3JpYmVBbGwoJ25vIG1hdGNoJyk7XG5cbiAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGV4cGVjdGVkQ2Fzc2V0dGUubGVuZ3RoOyBpZHggKz0gMSkge1xuICAgICAgICBpZiAodHlwZW9mIGV4cGVjdGVkQ2Fzc2V0dGVbaWR4XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgZXhwZWN0ZWRDYXNzZXR0ZS5zcGxpY2UoaWR4LCAxLCAuLi5hd2FpdCBleHBlY3RlZENhc3NldHRlW2lkeF0oKSk7XG4gICAgICAgICAgaWR4IC09IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMuaGVhbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgZnMuc21hcnRXcml0ZShcbiAgICAgICAgICBjYXNzZXR0ZUZpbGVQYXRoLFxuICAgICAgICAgIGFueUZsYWdQcmVzZW50KFsnbWFnaWMnLCAncHJ1bmUnXSlcbiAgICAgICAgICAgID8gZXhwZWN0ZWRDYXNzZXR0ZVxuICAgICAgICAgICAgOiBbLi4uZXhwZWN0ZWRDYXNzZXR0ZSwgLi4ucGVuZGluZ01vY2tzLm1hcCgoeyByZWNvcmQgfSkgPT4gcmVjb3JkKV0sXG4gICAgICAgICAgeyBrZWVwT3JkZXI6IG91dE9mT3JkZXJFcnJvcnMubGVuZ3RoID09PSAwICYmIHBlbmRpbmdNb2Nrcy5sZW5ndGggPT09IDAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKG9wdHMuc3RyaWN0ICE9PSBmYWxzZSkge1xuICAgICAgICBpZiAob3V0T2ZPcmRlckVycm9ycy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE91dCBvZiBPcmRlciBSZWNvcmRpbmdzOiAke291dE9mT3JkZXJFcnJvcnMuam9pbignLCAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ01vY2tzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5tYXRjaGVkIFJlY29yZGluZ3M6ICR7cGVuZGluZ01vY2tzLm1hcCgoZSkgPT4gZS5rZXkpLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHNodXRkb3duOiAoKSA9PiB7XG4gICAgICBjb25zdCB1bmV4cGVjdGVkRmlsZXMgPSBmcy53YWxrRGlyKG9wdHMuY2Fzc2V0dGVGb2xkZXIpLmZpbHRlcigoZikgPT4gIWtub3duQ2Fzc2V0dGVOYW1lcy5pbmNsdWRlcyhmKSk7XG4gICAgICBpZiAodW5leHBlY3RlZEZpbGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZmlsZShzKSBpbiBjYXNzZXR0ZSBmb2xkZXI6ICR7dW5leHBlY3RlZEZpbGVzLmpvaW4oJywgJyl9YCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXQ6ICgpID0+ICh7XG4gICAgICByZWNvcmRzOiByZWNvcmRzLnNsaWNlKCksXG4gICAgICBvdXRPZk9yZGVyRXJyb3JzOiBvdXRPZk9yZGVyRXJyb3JzLnNsaWNlKCksXG4gICAgICB1bm1hdGNoZWRSZWNvcmRpbmdzOiBwZW5kaW5nTW9ja3MubWFwKChlKSA9PiBlLmtleSkuc2xpY2UoKSxcbiAgICAgIGV4cGVjdGVkQ2Fzc2V0dGU6IGV4cGVjdGVkQ2Fzc2V0dGUuc2xpY2UoKSxcbiAgICAgIGNhc3NldHRlRmlsZVBhdGhcbiAgICB9KVxuICB9KTtcbn07XG4iXX0=
{
"name": "node-tdd",
"version": "2.13.0",
"version": "2.14.0",
"description": "Drop in extension for mocha to abstract commonly used test setups",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

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