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

cci-pingu

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cci-pingu - npm Package Compare versions

Comparing version 2.0.3 to 2.1.0

7

dist/lib/task.js

@@ -180,7 +180,4 @@ 'use strict';

res.body.forEach(function (item) {
// strip first two segments of the path (that might start with leading /)
var mpath = item.path[0] === '/' ? item.path.substr(1) : item.path;
mpath = mpath.split('/').slice(2).join('/');
prefixes.forEach(function (prefix) {
if (mpath.startsWith(prefix.name)) {
if (item.path.indexOf(prefix.name) !== -1) {
urls.push(item.url);

@@ -275,2 +272,2 @@ prefix.found = true;

exports.default = _module;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90YXNrLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsIm9wdGlvbnMiLCJjb25maWciLCJkb3dubG9hZEVycm9yIiwiRVhJVF9DT0RFIiwic2NoZWR1bGVOZXh0IiwiX3NhdmUiLCJsYXN0IiwiX2xhc3QiLCJjZmdGaWxlIiwid3JpdGUiLCJjb25zb2xlIiwiaW5mbyIsInByb2Nlc3MiLCJleGl0Iiwic2V0VGltZW91dCIsInJ1biIsImludGVydmFsIiwic3RhcnRTY3JpcHQiLCJzY3JpcHRGaWxlIiwicmVzb2x2ZSIsInNjcmlwdCIsIl90YXJnZXQiLCJjd2QiLCJkaXJuYW1lIiwic3Rkb3V0Iiwib24iLCJkYXRhIiwidG9TdHJpbmciLCJzdGRlcnIiLCJ3YXJuIiwiZXJyIiwiZXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwiY29kZSIsImUiLCJtZXNzYWdlIiwiY2NpRG93bmxvYWRPbmUiLCJfdXJscyIsImxlbmd0aCIsInVybCIsInBvcCIsImZpbGVuYW1lIiwic3BsaXQiLCJzdHJlYW1OYW1lIiwiam9pbiIsInN0cmVhbSIsImNyZWF0ZVdyaXRlU3RyZWFtIiwic3RhcnQiLCJEYXRlIiwiZ2V0VGltZSIsImdldCIsInF1ZXJ5IiwidG9rZW4iLCJ0aW1lb3V0IiwiZHVyIiwic3BsaWNlIiwibmV4dFRpY2siLCJwaXBlIiwiY2NpRG93bmxvYWQiLCJzdGF0U3luYyIsImRpcmVjdG9yeSIsImJhc2VuYW1lIiwiaSIsImxvZyIsIm1rZGlyU3luYyIsImNjaUFydGlmYWN0c0luZm9IYW5kbGVyIiwicmVzIiwib2siLCJzdGF0dXMiLCJ0ZXh0IiwiYm9keSIsInByZWZpeGVzIiwiYXJ0aWZhY3RzIiwibWFwIiwibmFtZSIsIml0ZW0iLCJmb3VuZCIsInVybHMiLCJmb3JFYWNoIiwibXBhdGgiLCJwYXRoIiwic3Vic3RyIiwic2xpY2UiLCJzdGFydHNXaXRoIiwicHJlZml4IiwicHVzaCIsImFsbEZvdW5kIiwiY2NpQnVpbGRJbmZvSGFuZGxlciIsImluc3RhbGwiLCJidWlsZF9udW0iLCJfbmFtZSIsImFwaVBhdGgiLCJob3N0aW5nIiwib3JnYW5pc2F0aW9uIiwicHJvamVjdCIsInNldCIsImVuZCIsIl9vcHRpb25zIiwicmVhZCIsImJyYW5jaCIsImZpbHRlciIsImxpbWl0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFNQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQVRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0EsSUFBTUEsVUFBUyxFQUFmO0FBQ0EsSUFBSUMsZ0JBQUosQyxDQUFhO0FBQ2IsSUFBSUMsZUFBSixDLENBQWE7QUFDYixJQUFJQyxzQkFBSixDLENBQW1COztBQUVuQixJQUFJQyxrQkFBSixDLENBQWU7O0FBRWYsSUFBTUMsZUFBZSxTQUFmQSxZQUFlLEdBQU07QUFDekIsTUFBSUgsT0FBT0ksS0FBWCxFQUFrQjtBQUNoQkosV0FBT0ssSUFBUCxHQUFjTCxPQUFPTSxLQUFyQjtBQUNBLFFBQUlQLFFBQVFRLE9BQVIsQ0FBZ0JDLEtBQWhCLENBQXNCUixNQUF0QixDQUFKLEVBQW1DO0FBQ2pDUyxjQUFRQyxJQUFSLENBQWEscURBQWI7QUFDRDtBQUNGO0FBQ0QsTUFBSVgsUUFBUSxVQUFSLENBQUosRUFBeUI7QUFDdkJVLFlBQVFDLElBQVIsQ0FBYSxxREFBYjtBQUNBQyxZQUFRQyxJQUFSLENBQWFWLFNBQWI7QUFDRCxHQUhELE1BR087QUFDTFcsZUFBV2YsUUFBT2dCLEdBQWxCLEVBQXVCZCxPQUFPZSxRQUFQLEdBQWtCLElBQXpDO0FBQ0FOLFlBQVFDLElBQVIsQ0FBYSxnQ0FBZ0NWLE9BQU9lLFFBQXZDLEdBQWtELFdBQS9EO0FBQ0Q7QUFDRixDQWREOztBQWdCQSxJQUFNQyxjQUFjLFNBQWRBLFdBQWMsR0FBTTtBQUN4QixNQUFNQyxhQUFhLGVBQUtDLE9BQUwsQ0FBYWxCLE9BQU9tQixNQUFwQixDQUFuQjtBQUNBVixVQUFRQyxJQUFSLENBQWEsZ0JBQWdCTyxVQUFoQixHQUE2QixJQUExQztBQUNBLE1BQUk7QUFD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QmV6RixPIiwiZmlsZSI6InRhc2suanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNb2R1bGUgZm9yIHRhbGtpbmcgdG8gQ0NJLCBnZXR0aW5nIHRoZSBhcnRpZmFjdHMsIGRvd25sb2FkaW5nIHRoZW0sXG4vLyBzdGFydGluZyB0aGUgYWN0aW9uIHNjcmlwdCwgc2F2aW5nIHRoZSB1cGRhdGVkIGNvbmZpZyBmaWxlLCAuLi5cbi8vXG4vLyBUaGUgdGFzay5ydW4oKSBzY2hlZHVsZXMgbmV4dCBydW4gYXMgbmVlZGVkLlxuLy8gQWxsIGRpc2sgb3BlcmF0aW9ucyBhcmUgc3luY2hyb25vdXMuXG5cbmltcG9ydCByZXF1ZXN0IGZyb20gJ3N1cGVyYWdlbnQnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgbW9kdWxlID0ge307XG5sZXQgb3B0aW9uczsgLy8gc2V0IG9uY2UgYXQgZmlyc3QgcnVuKClcbmxldCBjb25maWc7ICAvLyByZS1yZWFkIGluIGVhY2ggaXRlcmF0aW9uXG5sZXQgZG93bmxvYWRFcnJvcjsgLy8gc3RvcCB0aGUgcHJvY2VzcyBpbiBjYXNlIGRvd25sb2FkIGZhaWxlZFxuXG5sZXQgRVhJVF9DT0RFOyAvLyByZXR1cm4gY29kZSBmb3IgJy0tcnVuLW9uY2UnIG1vZGVcblxuY29uc3Qgc2NoZWR1bGVOZXh0ID0gKCkgPT4ge1xuICBpZiAoY29uZmlnLl9zYXZlKSB7XG4gICAgY29uZmlnLmxhc3QgPSBjb25maWcuX2xhc3Q7XG4gICAgaWYgKG9wdGlvbnMuY2ZnRmlsZS53cml0ZShjb25maWcpKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ05ldyBjb25maWd1cmF0aW9uIGZpbGUgcmV2aXNpb24gc3VjY2Vzc2Z1bGx5IHNhdmVkLicpO1xuICAgIH1cbiAgfVxuICBpZiAob3B0aW9uc1sncnVuLW9uY2UnXSkge1xuICAgIGNvbnNvbGUuaW5mbygnQ0NJLVBJTkdVIGFib3V0IHRvIGV4aXQuIFRoYW5rcyBmb3IgZmx5aW5nIHdpdGggdXMhJyk7XG4gICAgcHJvY2Vzcy5leGl0KEVYSVRfQ09ERSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0VGltZW91dChtb2R1bGUucnVuLCBjb25maWcuaW50ZXJ2YWwgKiAxMDAwKTtcbiAgICBjb25zb2xlLmluZm8oJ05leHQgQ0NJIHRhc2sgc2NoZWR1bGVkIGluICcgKyBjb25maWcuaW50ZXJ2YWwgKyAnIHNlY29uZHMuJyk7XG4gIH1cbn07XG5cbmNvbnN0IHN0YXJ0U2NyaXB0ID0gKCkgPT4ge1xuICBjb25zdCBzY3JpcHRGaWxlID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5zY3JpcHQpO1xuICBjb25zb2xlLmluZm8oJ0V4ZWN1dGluZyBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICB0cnkge1xuICAgIGNvbnN0IHNjcmlwdCA9IHNwYXduKHNjcmlwdEZpbGUsIFsgY29uZmlnLl90YXJnZXQgXSwgeyBjd2Q6IHBhdGguZGlybmFtZShzY3JpcHRGaWxlKSB9KTtcbiAgICBzY3JpcHQuc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGEpID0+IGNvbnNvbGUuaW5mbygnU2NyaXB0IFNURE9VVDpcXG4nICsgZGF0YS50b1N0cmluZygpKSk7XG4gICAgc2NyaXB0LnN0ZGVyci5vbignZGF0YScsIChkYXRhKSA9PiBjb25zb2xlLndhcm4oJ1NjcmlwdCBTVERFUlJcXG46JyArIGRhdGEudG9TdHJpbmcoKSkpO1xuICAgIHNjcmlwdC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgc2NyaXB0IFwiJyArIHNjcmlwdEZpbGUgKyAnXCIuJyk7XG4gICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycikpO1xuICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9KTtcbiAgICBzY3JpcHQub24oJ2Nsb3NlJywgKGNvZGUpID0+IHtcbiAgICAgIGlmICghY29kZSkgeyAvLyBzdWNjZXNzXG4gICAgICAgIGNvbnNvbGUuaW5mbygnQ0NJIHRhc2sgc3VjY2Vzc2Z1bGx5IGZpbmlzaGVkLicpO1xuICAgICAgICBjb25maWcuX3NhdmUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHsgLy8gZmFpbFxuICAgICAgICBjb25zb2xlLmVycm9yKCdJbnN0YWxsYXRpb24gc2NyaXB0IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAoJyArIGNvZGUgKyAnKS4nKTtcbiAgICAgIH1cbiAgICAgIEVYSVRfQ09ERSA9IGNvZGU7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkgeyAvLyBzcGF3biBjYW4gdGhyb3cgZXhjZXB0aW9ucyBvbiBpdHMgb3duXG4gICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHNjcmlwdCBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfVxufTtcblxuY29uc3QgY2NpRG93bmxvYWRPbmUgPSAoKSA9PiB7XG4gIGlmICghY29uZmlnLl91cmxzLmxlbmd0aCkge1xuICAgIHN0YXJ0U2NyaXB0KCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gY29uZmlnLl91cmxzLnBvcCgpO1xuICAgIGxldCBmaWxlbmFtZSA9IHVybC5zcGxpdCgnLycpO1xuICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbZmlsZW5hbWUubGVuZ3RoIC0gMV07XG4gICAgY29uc3Qgc3RyZWFtTmFtZSA9IHBhdGguam9pbihjb25maWcuX3RhcmdldCwgZmlsZW5hbWUpO1xuICAgIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHN0cmVhbU5hbWUpO1xuICAgIGNvbnNvbGUuaW5mbygnRG93bmxvYWRpbmcgXCInICsgdXJsICsgJ1wiLicpO1xuICAgIGNvbnN0IHN0YXJ0ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgICBkb3dubG9hZEVycm9yID0gZmFsc2U7XG4gICAgcmVxdWVzdFxuICAgICAgLmdldCh1cmwpXG4gICAgICAucXVlcnkoeyAnY2lyY2xlLXRva2VuJzogY29uZmlnLnRva2VuIH0pXG4gICAgICAudGltZW91dChjb25maWcudGltZW91dCAqIDEwMDApXG4gICAgICAub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdEb3dubG9hZCBmYWlsZWQ6ICcgKyBKU09OLnN0cmluZ2lmeShlcnIpICsgJy4nKTtcbiAgICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICAgIGRvd25sb2FkRXJyb3IgPSB0cnVlO1xuICAgICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgaWYgKGRvd25sb2FkRXJyb3IpIHsgcmV0dXJuOyB9XG4gICAgICAgIGxldCBkdXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC0gc3RhcnQ7XG4gICAgICAgIGlmIChkdXIgPiA5OTkpIHtcbiAgICAgICAgICBkdXIgPSAoJycgKyBkdXIpLnNwbGl0KCcnKTtcbiAgICAgICAgICBkdXIuc3BsaWNlKGR1ci5sZW5ndGggLSAzLCAwLCAnLicpO1xuICAgICAgICAgIGR1ciA9IGR1ci5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmluZm8oJ1NhdmVkIGFzIFwiJyArIHN0cmVhbU5hbWUgKyAnXCIgaW4gJyArIGR1ciArICcgbXMuJyk7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2NpRG93bmxvYWRPbmUpO1xuICAgICAgfSlcbiAgICAgIC5waXBlKHN0cmVhbSk7XG4gIH1cbn07XG5jb25zdCBjY2lEb3dubG9hZCA9ICgpID0+IHtcbiAgLy8gY3JlYXRlIHRhcmdldCBkaXJlY3RvcnlcbiAgdHJ5IHtcbiAgICBmcy5zdGF0U3luYyhjb25maWcuZGlyZWN0b3J5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0RpcmVjdG9yeSBcIicgKyBjb25maWcuZGlyZWN0b3J5ICsgJ1wiIGRvZXMgbm90IGV4aXN0LCBjYW5ub3Qgd3JpdGUgdGhlcmUuJyk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGJhc2VuYW1lID0gJ2J1aWxkLScgKyBjb25maWcuX2xhc3Q7XG4gIGxldCBkaXJuYW1lO1xuICB0cnkge1xuICAgIGxldCBpID0gMTtcbiAgICB3aGlsZSAodHJ1ZSkgeyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgIGRpcm5hbWUgPSBiYXNlbmFtZSArIChpID4gMSA/ICcuJyArIGkgOiAnJyk7XG4gICAgICBmcy5zdGF0U3luYyhwYXRoLmpvaW4oY29uZmlnLmRpcmVjdG9yeSwgZGlybmFtZSkpO1xuICAgICAgaSsrO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGV4Y2VwdGlvbiBpcyBmaW5lXG4gIH1cbiAgLy8gY3JlYXRlIG5ldyBkaXJcbiAgY29uZmlnLl90YXJnZXQgPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKGNvbmZpZy5kaXJlY3RvcnksIGRpcm5hbWUpKTtcbiAgY29uc29sZS5sb2coJ0NyZWF0aW5nIGFydGlmYWN0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIi4nKTtcbiAgdHJ5IHtcbiAgICBmcy5ta2RpclN5bmMoY29uZmlnLl90YXJnZXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignVGFyZ2V0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIiBjYW5ub3QgYmUgY3JlYXRlZC4nKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBzdGFydCB0aGUgZG93bmxvYWRzXG4gIGNjaURvd25sb2FkT25lKCk7XG59O1xuXG5jb25zdCBjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciA9IChlcnIsIHJlcykgPT4ge1xuICBpZiAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zb2xlLmVycm9yKCdTdGF0dXM6ICcgKyByZXMuc3RhdHVzICsgJywgJyArIHJlcy50ZXh0KTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfSBlbHNlIHsgLy8gcmVzLm9rXG4gICAgY29uc29sZS5sb2coJ1Jlc3BvbnNlIGZyb20gQ0NJIHNlcnZlcjpcXG4nICsgSlNPTi5zdHJpbmdpZnkocmVzLmJvZHksIG51bGwsIDQpKTtcbiAgICBjb25zdCBwcmVmaXhlcyA9IGNvbmZpZy5hcnRpZmFjdHMubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHsgbmFtZTogaXRlbSwgZm91bmQ6IGZhbHNlIH07XG4gICAgfSk7XG4gICAgY29uc3QgdXJscyA9IFtdO1xuICAgIHJlcy5ib2R5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAvLyBzdHJpcCBmaXJzdCB0d28gc2VnbWVudHMgb2YgdGhlIHBhdGggKHRoYXQgbWlnaHQgc3RhcnQgd2l0aCBsZWFkaW5nIC8pXG4gICAgICBsZXQgbXBhdGggPSBpdGVtLnBhdGhbMF0gPT09ICcvJyA/IGl0ZW0ucGF0aC5zdWJzdHIoMSkgOiBpdGVtLnBhdGg7XG4gICAgICBtcGF0aCA9IG1wYXRoLnNwbGl0KCcvJykuc2xpY2UoMikuam9pbignLycpO1xuICAgICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4ge1xuICAgICAgICBpZiAobXBhdGguc3RhcnRzV2l0aChwcmVmaXgubmFtZSkpIHtcbiAgICAgICAgICB1cmxzLnB1c2goaXRlbS51cmwpO1xuICAgICAgICAgIHByZWZpeC5mb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCdDb2xsZWN0ZWQgYXJ0aWZhY3QgVVJMcyAodG8gZG93bmxvYWQpOlxcbicgKyBKU09OLnN0cmluZ2lmeSh1cmxzLCBudWxsLCA0KSk7XG4gICAgbGV0IGFsbEZvdW5kID0gdHJ1ZTtcbiAgICBwcmVmaXhlcy5mb3JFYWNoKHByZWZpeCA9PiB7IGlmICghcHJlZml4LmZvdW5kKSB7IGFsbEZvdW5kID0gZmFsc2U7IH0gfSk7XG4gICAgaWYgKCFhbGxGb3VuZCkge1xuICAgICAgY29uc29sZS5lcnJvcignTm90IGFsbCBhcnRpZmFjdHMgZm91bmQhIE1pc3Npbmc6Jyk7XG4gICAgICBwcmVmaXhlcy5mb3JFYWNoKHByZWZpeCA9PiB7IGlmICghcHJlZml4LmZvdW5kKSB7IGNvbnNvbGUuZXJyb3IoJysgJyArIHByZWZpeC5uYW1lKTsgfSB9KTtcbiAgICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZy5fdXJscyA9IHVybHM7XG4gICAgICBjY2lEb3dubG9hZCgpO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgY2NpQnVpbGRJbmZvSGFuZGxlciA9IChlcnIsIHJlcykgPT4ge1xuICBpZiAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zb2xlLmVycm9yKCdTdGF0dXM6ICcgKyByZXMuc3RhdHVzICsgJywgJyArIHJlcy50ZXh0KTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfSBlbHNlIGlmICghcmVzLmJvZHkgfHwgIXJlcy5ib2R5Lmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ05vIHN1Y2Nlc3NmdWwgYnVpbGQgZm91bmQgZm9yIGdpdmVuIGJyYW5jaCEnKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfSBlbHNlIHsgLy8gcmVzLm9rXG4gICAgIW9wdGlvbnMuaW5zdGFsbCAmJiBjb25zb2xlLmxvZygnUmVzcG9uc2UgZnJvbSBDQ0kgc2VydmVyOlxcbicgKyBKU09OLnN0cmluZ2lmeShyZXMuYm9keSwgbnVsbCwgNCkpO1xuICAgIGNvbmZpZy5fbGFzdCA9IHJlcy5ib2R5WzBdLmJ1aWxkX251bTtcbiAgICAhb3B0aW9ucy5pbnN0YWxsICYmIGNvbnNvbGUuaW5mbygnTGFzdCBzdWNjZXNzZnVsICcgKyBjb25maWcuX25hbWUgKyAnIGJ1aWxkIG51bWJlcjogJyArIGNvbmZpZy5fbGFzdCArICcuJyk7XG4gICAgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ0J1aWxkICcgKyBjb25maWcuX2xhc3QgKyAnIGFscmVhZHkgaW5zdGFsbGVkLicpO1xuICAgICAgY29uc29sZS5pbmZvKCdDQ0kgdGFzayBzdWNjZXNzZnVsbHkgZmluaXNoZWQuJyk7XG4gICAgICBFWElUX0NPREUgPSAwO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgYWxyZWFkeSBpbnN0YWxsZWQsIGFib3V0IHRvIGluc3RhbGwgaXQgYWdhaW4uLi4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgaXMgbm90IGluc3RhbGxlZCB5ZXQuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhcGlQYXRoID0gWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLFxuICAgICAgICBjb25maWcucHJvamVjdCwgY29uZmlnLl9sYXN0LCAnYXJ0aWZhY3RzJ10uam9pbignLycpO1xuICAgICAgY29uc29sZS5sb2coJ0dldHRpbmcgaW5mbyBhYm91dCBidWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBhcnRpZmFjdHMuJyk7XG4gICAgICByZXF1ZXN0XG4gICAgICAgIC5nZXQoJ2h0dHBzOi8vY2lyY2xlY2kuY29tJyArIGFwaVBhdGgpXG4gICAgICAgIC5xdWVyeSh7ICdjaXJjbGUtdG9rZW4nOiBjb25maWcudG9rZW4gfSlcbiAgICAgICAgLnNldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICAudGltZW91dChjb25maWcudGltZW91dCAqIDEwMDApXG4gICAgICAgIC5lbmQoY2NpQXJ0aWZhY3RzSW5mb0hhbmRsZXIpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLnJ1biA9IChfb3B0aW9ucyA9IG51bGwpID0+IHtcbiAgRVhJVF9DT0RFID0gMTsgICAvLyB1cGRhdGUgdG8gMCBvbiBmaW5hbCBzdWNjZXNzXG4gIGlmIChfb3B0aW9ucykgeyBvcHRpb25zID0gX29wdGlvbnM7IH1cbiAgY29uZmlnID0gb3B0aW9ucy5jZmdGaWxlLnJlYWQoKTtcbiAgY29uZmlnLl9uYW1lID0gW2NvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLCBjb25maWcucHJvamVjdCwgY29uZmlnLmJyYW5jaF0uam9pbignLycpO1xuICBjb25zb2xlLmluZm8oJ0NDSSB0YXNrIHN0YXJ0ZWQuJyk7XG4gIGlmIChvcHRpb25zLmluc3RhbGwpIHtcbiAgICBjY2lCdWlsZEluZm9IYW5kbGVyKG51bGwsIHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgYm9keTogWyB7IGJ1aWxkX251bTogb3B0aW9ucy5pbnN0YWxsIH0gXVxuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBhcGlQYXRoID0gWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLCBjb25maWcucHJvamVjdCwgJ3RyZWUnLCBjb25maWcuYnJhbmNoXS5qb2luKCcvJyk7XG4gIGNvbnNvbGUubG9nKCdHZXR0aW5nIGluZm8gYWJvdXQgbGFzdCBzdWNjZXNzZnVsIGJ1aWxkIG9mICcgKyBjb25maWcuX25hbWUgKyAnLicpO1xuICByZXF1ZXN0XG4gICAgLmdldCgnaHR0cHM6Ly9jaXJjbGVjaS5jb20nICsgYXBpUGF0aClcbiAgICAucXVlcnkoeyAnY2lyY2xlLXRva2VuJzogY29uZmlnLnRva2VuLCBmaWx0ZXI6ICdzdWNjZXNzZnVsJywgbGltaXQ6IDEgfSlcbiAgICAuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgLnRpbWVvdXQoY29uZmlnLnRpbWVvdXQgKiAxMDAwKVxuICAgIC5lbmQoY2NpQnVpbGRJbmZvSGFuZGxlcik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGU7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90YXNrLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsIm9wdGlvbnMiLCJjb25maWciLCJkb3dubG9hZEVycm9yIiwiRVhJVF9DT0RFIiwic2NoZWR1bGVOZXh0IiwiX3NhdmUiLCJsYXN0IiwiX2xhc3QiLCJjZmdGaWxlIiwid3JpdGUiLCJjb25zb2xlIiwiaW5mbyIsInByb2Nlc3MiLCJleGl0Iiwic2V0VGltZW91dCIsInJ1biIsImludGVydmFsIiwic3RhcnRTY3JpcHQiLCJzY3JpcHRGaWxlIiwicmVzb2x2ZSIsInNjcmlwdCIsIl90YXJnZXQiLCJjd2QiLCJkaXJuYW1lIiwic3Rkb3V0Iiwib24iLCJkYXRhIiwidG9TdHJpbmciLCJzdGRlcnIiLCJ3YXJuIiwiZXJyIiwiZXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwiY29kZSIsImUiLCJtZXNzYWdlIiwiY2NpRG93bmxvYWRPbmUiLCJfdXJscyIsImxlbmd0aCIsInVybCIsInBvcCIsImZpbGVuYW1lIiwic3BsaXQiLCJzdHJlYW1OYW1lIiwiam9pbiIsInN0cmVhbSIsImNyZWF0ZVdyaXRlU3RyZWFtIiwic3RhcnQiLCJEYXRlIiwiZ2V0VGltZSIsImdldCIsInF1ZXJ5IiwidG9rZW4iLCJ0aW1lb3V0IiwiZHVyIiwic3BsaWNlIiwibmV4dFRpY2siLCJwaXBlIiwiY2NpRG93bmxvYWQiLCJzdGF0U3luYyIsImRpcmVjdG9yeSIsImJhc2VuYW1lIiwiaSIsImxvZyIsIm1rZGlyU3luYyIsImNjaUFydGlmYWN0c0luZm9IYW5kbGVyIiwicmVzIiwib2siLCJzdGF0dXMiLCJ0ZXh0IiwiYm9keSIsInByZWZpeGVzIiwiYXJ0aWZhY3RzIiwibWFwIiwibmFtZSIsIml0ZW0iLCJmb3VuZCIsInVybHMiLCJmb3JFYWNoIiwicGF0aCIsImluZGV4T2YiLCJwcmVmaXgiLCJwdXNoIiwiYWxsRm91bmQiLCJjY2lCdWlsZEluZm9IYW5kbGVyIiwiaW5zdGFsbCIsImJ1aWxkX251bSIsIl9uYW1lIiwiYXBpUGF0aCIsImhvc3RpbmciLCJvcmdhbmlzYXRpb24iLCJwcm9qZWN0Iiwic2V0IiwiZW5kIiwiX29wdGlvbnMiLCJyZWFkIiwiYnJhbmNoIiwiZmlsdGVyIiwibGltaXQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQU1BOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFPQSxJQUFNQSxVQUFTLEVBQWY7QUFDQSxJQUFJQyxnQkFBSixDLENBQWE7QUFDYixJQUFJQyxlQUFKLEMsQ0FBYTtBQUNiLElBQUlDLHNCQUFKLEMsQ0FBbUI7O0FBRW5CLElBQUlDLGtCQUFKLEMsQ0FBZTs7QUFFZixJQUFNQyxlQUFlLFNBQWZBLFlBQWUsR0FBTTtBQUN6QixNQUFJSCxPQUFPSSxLQUFYLEVBQWtCO0FBQ2hCSixXQUFPSyxJQUFQLEdBQWNMLE9BQU9NLEtBQXJCO0FBQ0EsUUFBSVAsUUFBUVEsT0FBUixDQUFnQkMsS0FBaEIsQ0FBc0JSLE1BQXRCLENBQUosRUFBbUM7QUFDakNTLGNBQVFDLElBQVIsQ0FBYSxxREFBYjtBQUNEO0FBQ0Y7QUFDRCxNQUFJWCxRQUFRLFVBQVIsQ0FBSixFQUF5QjtBQUN2QlUsWUFBUUMsSUFBUixDQUFhLHFEQUFiO0FBQ0FDLFlBQVFDLElBQVIsQ0FBYVYsU0FBYjtBQUNELEdBSEQsTUFHTztBQUNMVyxlQUFXZixRQUFPZ0IsR0FBbEIsRUFBdUJkLE9BQU9lLFFBQVAsR0FBa0IsSUFBekM7QUFDQU4sWUFBUUMsSUFBUixDQUFhLGdDQUFnQ1YsT0FBT2UsUUFBdkMsR0FBa0QsV0FBL0Q7QUFDRDtBQUNGLENBZEQ7O0FBZ0JBLElBQU1DLGNBQWMsU0FBZEEsV0FBYyxHQUFNO0FBQ3hCLE1BQU1DLGFBQWEsZUFBS0MsT0FBTCxDQUFhbEIsT0FBT21CLE1BQXBCLENBQW5CO0FBQ0FWLFVBQVFDLElBQVIsQ0FBYSxnQkFBZ0JPLFVBQWhCLEdBQTZCLElBQTFDO0FBQ0EsTUFBSTtBQUNGLFFBQU1FLFNBQVMsMEJBQU1GLFVBQU4sRUFB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QyxFQUFzRDNGLE9BQU9nRyxNQUE3RCxFQUFxRXBELElBQXJFLENBQTBFLEdBQTFFLENBQWY7QUFDQW5DLFVBQVFDLElBQVIsQ0FBYSxtQkFBYjtBQUNBLE1BQUlYLFFBQVFzRixPQUFaLEVBQXFCO0FBQ25CRCx3QkFBb0IsSUFBcEIsRUFBMEI7QUFDeEJqQixVQUFJLElBRG9CO0FBRXhCRyxZQUFNLENBQUUsRUFBRWdCLFdBQVd2RixRQUFRc0YsT0FBckIsRUFBRjtBQUZrQixLQUExQjtBQUlBO0FBQ0Q7QUFDRCxNQUFNRyxVQUFVLENBQUMsbUJBQUQsRUFBc0J4RixPQUFPeUYsT0FBN0IsRUFBc0N6RixPQUFPMEYsWUFBN0MsRUFBMkQxRixPQUFPMkYsT0FBbEUsRUFBMkUsTUFBM0UsRUFBbUYzRixPQUFPZ0csTUFBMUYsRUFBa0dwRCxJQUFsRyxDQUF1RyxHQUF2RyxDQUFoQjtBQUNBbkMsVUFBUXNELEdBQVIsQ0FBWSxpREFBaUQvRCxPQUFPdUYsS0FBeEQsR0FBZ0UsR0FBNUU7QUFDQSx1QkFDR3JDLEdBREgsQ0FDTyx5QkFBeUJzQyxPQURoQyxFQUVHckMsS0FGSCxDQUVTLEVBQUUsZ0JBQWdCbkQsT0FBT29ELEtBQXpCLEVBQWdDNkMsUUFBUSxZQUF4QyxFQUFzREMsT0FBTyxDQUE3RCxFQUZULEVBR0dOLEdBSEgsQ0FHTyxRQUhQLEVBR2lCLGtCQUhqQixFQUlHdkMsT0FKSCxDQUlXckQsT0FBT3FELE9BQVAsR0FBaUIsSUFKNUIsRUFLR3dDLEdBTEgsQ0FLT1QsbUJBTFA7QUFNRCxDQXJCRDs7a0JBdUJldEYsTyIsImZpbGUiOiJ0YXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kdWxlIGZvciB0YWxraW5nIHRvIENDSSwgZ2V0dGluZyB0aGUgYXJ0aWZhY3RzLCBkb3dubG9hZGluZyB0aGVtLFxuLy8gc3RhcnRpbmcgdGhlIGFjdGlvbiBzY3JpcHQsIHNhdmluZyB0aGUgdXBkYXRlZCBjb25maWcgZmlsZSwgLi4uXG4vL1xuLy8gVGhlIHRhc2sucnVuKCkgc2NoZWR1bGVzIG5leHQgcnVuIGFzIG5lZWRlZC5cbi8vIEFsbCBkaXNrIG9wZXJhdGlvbnMgYXJlIHN5bmNocm9ub3VzLlxuXG5pbXBvcnQgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5cbmNvbnN0IG1vZHVsZSA9IHt9O1xubGV0IG9wdGlvbnM7IC8vIHNldCBvbmNlIGF0IGZpcnN0IHJ1bigpXG5sZXQgY29uZmlnOyAgLy8gcmUtcmVhZCBpbiBlYWNoIGl0ZXJhdGlvblxubGV0IGRvd25sb2FkRXJyb3I7IC8vIHN0b3AgdGhlIHByb2Nlc3MgaW4gY2FzZSBkb3dubG9hZCBmYWlsZWRcblxubGV0IEVYSVRfQ09ERTsgLy8gcmV0dXJuIGNvZGUgZm9yICctLXJ1bi1vbmNlJyBtb2RlXG5cbmNvbnN0IHNjaGVkdWxlTmV4dCA9ICgpID0+IHtcbiAgaWYgKGNvbmZpZy5fc2F2ZSkge1xuICAgIGNvbmZpZy5sYXN0ID0gY29uZmlnLl9sYXN0O1xuICAgIGlmIChvcHRpb25zLmNmZ0ZpbGUud3JpdGUoY29uZmlnKSkge1xuICAgICAgY29uc29sZS5pbmZvKCdOZXcgY29uZmlndXJhdGlvbiBmaWxlIHJldmlzaW9uIHN1Y2Nlc3NmdWxseSBzYXZlZC4nKTtcbiAgICB9XG4gIH1cbiAgaWYgKG9wdGlvbnNbJ3J1bi1vbmNlJ10pIHtcbiAgICBjb25zb2xlLmluZm8oJ0NDSS1QSU5HVSBhYm91dCB0byBleGl0LiBUaGFua3MgZm9yIGZseWluZyB3aXRoIHVzIScpO1xuICAgIHByb2Nlc3MuZXhpdChFWElUX0NPREUpO1xuICB9IGVsc2Uge1xuICAgIHNldFRpbWVvdXQobW9kdWxlLnJ1biwgY29uZmlnLmludGVydmFsICogMTAwMCk7XG4gICAgY29uc29sZS5pbmZvKCdOZXh0IENDSSB0YXNrIHNjaGVkdWxlZCBpbiAnICsgY29uZmlnLmludGVydmFsICsgJyBzZWNvbmRzLicpO1xuICB9XG59O1xuXG5jb25zdCBzdGFydFNjcmlwdCA9ICgpID0+IHtcbiAgY29uc3Qgc2NyaXB0RmlsZSA9IHBhdGgucmVzb2x2ZShjb25maWcuc2NyaXB0KTtcbiAgY29uc29sZS5pbmZvKCdFeGVjdXRpbmcgXCInICsgc2NyaXB0RmlsZSArICdcIi4nKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBzY3JpcHQgPSBzcGF3bihzY3JpcHRGaWxlLCBbIGNvbmZpZy5fdGFyZ2V0IF0sIHsgY3dkOiBwYXRoLmRpcm5hbWUoc2NyaXB0RmlsZSkgfSk7XG4gICAgc2NyaXB0LnN0ZG91dC5vbignZGF0YScsIChkYXRhKSA9PiBjb25zb2xlLmluZm8oJ1NjcmlwdCBTVERPVVQ6XFxuJyArIGRhdGEudG9TdHJpbmcoKSkpO1xuICAgIHNjcmlwdC5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YSkgPT4gY29uc29sZS53YXJuKCdTY3JpcHQgU1RERVJSXFxuOicgKyBkYXRhLnRvU3RyaW5nKCkpKTtcbiAgICBzY3JpcHQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHNjcmlwdCBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSk7XG4gICAgc2NyaXB0Lm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gICAgICBpZiAoIWNvZGUpIHsgLy8gc3VjY2Vzc1xuICAgICAgICBjb25zb2xlLmluZm8oJ0NDSSB0YXNrIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZC4nKTtcbiAgICAgICAgY29uZmlnLl9zYXZlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7IC8vIGZhaWxcbiAgICAgICAgY29uc29sZS5lcnJvcignSW5zdGFsbGF0aW9uIHNjcmlwdCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgKCcgKyBjb2RlICsgJykuJyk7XG4gICAgICB9XG4gICAgICBFWElUX0NPREUgPSBjb2RlO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHsgLy8gc3Bhd24gY2FuIHRocm93IGV4Y2VwdGlvbnMgb24gaXRzIG93blxuICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBzY3JpcHQgXCInICsgc2NyaXB0RmlsZSArICdcIi4nKTtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gIH1cbn07XG5cbmNvbnN0IGNjaURvd25sb2FkT25lID0gKCkgPT4ge1xuICBpZiAoIWNvbmZpZy5fdXJscy5sZW5ndGgpIHtcbiAgICBzdGFydFNjcmlwdCgpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHVybCA9IGNvbmZpZy5fdXJscy5wb3AoKTtcbiAgICBsZXQgZmlsZW5hbWUgPSB1cmwuc3BsaXQoJy8nKTtcbiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lW2ZpbGVuYW1lLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IHN0cmVhbU5hbWUgPSBwYXRoLmpvaW4oY29uZmlnLl90YXJnZXQsIGZpbGVuYW1lKTtcbiAgICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShzdHJlYW1OYW1lKTtcbiAgICBjb25zb2xlLmluZm8oJ0Rvd25sb2FkaW5nIFwiJyArIHVybCArICdcIi4nKTtcbiAgICBjb25zdCBzdGFydCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgZG93bmxvYWRFcnJvciA9IGZhbHNlO1xuICAgIHJlcXVlc3RcbiAgICAgIC5nZXQodXJsKVxuICAgICAgLnF1ZXJ5KHsgJ2NpcmNsZS10b2tlbic6IGNvbmZpZy50b2tlbiB9KVxuICAgICAgLnRpbWVvdXQoY29uZmlnLnRpbWVvdXQgKiAxMDAwKVxuICAgICAgLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRG93bmxvYWQgZmFpbGVkOiAnICsgSlNPTi5zdHJpbmdpZnkoZXJyKSArICcuJyk7XG4gICAgICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgICAgICBkb3dubG9hZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIGlmIChkb3dubG9hZEVycm9yKSB7IHJldHVybjsgfVxuICAgICAgICBsZXQgZHVyID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIHN0YXJ0O1xuICAgICAgICBpZiAoZHVyID4gOTk5KSB7XG4gICAgICAgICAgZHVyID0gKCcnICsgZHVyKS5zcGxpdCgnJyk7XG4gICAgICAgICAgZHVyLnNwbGljZShkdXIubGVuZ3RoIC0gMywgMCwgJy4nKTtcbiAgICAgICAgICBkdXIgPSBkdXIuam9pbignJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5pbmZvKCdTYXZlZCBhcyBcIicgKyBzdHJlYW1OYW1lICsgJ1wiIGluICcgKyBkdXIgKyAnIG1zLicpO1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGNjaURvd25sb2FkT25lKTtcbiAgICAgIH0pXG4gICAgICAucGlwZShzdHJlYW0pO1xuICB9XG59O1xuY29uc3QgY2NpRG93bmxvYWQgPSAoKSA9PiB7XG4gIC8vIGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3J5XG4gIHRyeSB7XG4gICAgZnMuc3RhdFN5bmMoY29uZmlnLmRpcmVjdG9yeSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKCdEaXJlY3RvcnkgXCInICsgY29uZmlnLmRpcmVjdG9yeSArICdcIiBkb2VzIG5vdCBleGlzdCwgY2Fubm90IHdyaXRlIHRoZXJlLicpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBiYXNlbmFtZSA9ICdidWlsZC0nICsgY29uZmlnLl9sYXN0O1xuICBsZXQgZGlybmFtZTtcbiAgdHJ5IHtcbiAgICBsZXQgaSA9IDE7XG4gICAgd2hpbGUgKHRydWUpIHsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgICBkaXJuYW1lID0gYmFzZW5hbWUgKyAoaSA+IDEgPyAnLicgKyBpIDogJycpO1xuICAgICAgZnMuc3RhdFN5bmMocGF0aC5qb2luKGNvbmZpZy5kaXJlY3RvcnksIGRpcm5hbWUpKTtcbiAgICAgIGkrKztcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBleGNlcHRpb24gaXMgZmluZVxuICB9XG4gIC8vIGNyZWF0ZSBuZXcgZGlyXG4gIGNvbmZpZy5fdGFyZ2V0ID0gcGF0aC5yZXNvbHZlKHBhdGguam9pbihjb25maWcuZGlyZWN0b3J5LCBkaXJuYW1lKSk7XG4gIGNvbnNvbGUubG9nKCdDcmVhdGluZyBhcnRpZmFjdCBkaXJlY3RvcnkgXCInICsgY29uZmlnLl90YXJnZXQgKyAnXCIuJyk7XG4gIHRyeSB7XG4gICAgZnMubWtkaXJTeW5jKGNvbmZpZy5fdGFyZ2V0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RhcmdldCBkaXJlY3RvcnkgXCInICsgY29uZmlnLl90YXJnZXQgKyAnXCIgY2Fubm90IGJlIGNyZWF0ZWQuJyk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gc3RhcnQgdGhlIGRvd25sb2Fkc1xuICBjY2lEb3dubG9hZE9uZSgpO1xufTtcblxuY29uc3QgY2NpQXJ0aWZhY3RzSW5mb0hhbmRsZXIgPSAoZXJyLCByZXMpID0+IHtcbiAgaWYgKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghcmVzLm9rKSB7XG4gICAgY29uc29sZS5lcnJvcignU3RhdHVzOiAnICsgcmVzLnN0YXR1cyArICcsICcgKyByZXMudGV4dCk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gIH0gZWxzZSB7IC8vIHJlcy5va1xuICAgIGNvbnNvbGUubG9nKCdSZXNwb25zZSBmcm9tIENDSSBzZXJ2ZXI6XFxuJyArIEpTT04uc3RyaW5naWZ5KHJlcy5ib2R5LCBudWxsLCA0KSk7XG4gICAgY29uc3QgcHJlZml4ZXMgPSBjb25maWcuYXJ0aWZhY3RzLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGl0ZW0sIGZvdW5kOiBmYWxzZSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHVybHMgPSBbXTtcbiAgICByZXMuYm9keS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4ge1xuICAgICAgICBpZiAoaXRlbS5wYXRoLmluZGV4T2YocHJlZml4Lm5hbWUpICE9PSAtMSkge1xuICAgICAgICAgIHVybHMucHVzaChpdGVtLnVybCk7XG4gICAgICAgICAgcHJlZml4LmZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJ0NvbGxlY3RlZCBhcnRpZmFjdCBVUkxzICh0byBkb3dubG9hZCk6XFxuJyArIEpTT04uc3RyaW5naWZ5KHVybHMsIG51bGwsIDQpKTtcbiAgICBsZXQgYWxsRm91bmQgPSB0cnVlO1xuICAgIHByZWZpeGVzLmZvckVhY2gocHJlZml4ID0+IHsgaWYgKCFwcmVmaXguZm91bmQpIHsgYWxsRm91bmQgPSBmYWxzZTsgfSB9KTtcbiAgICBpZiAoIWFsbEZvdW5kKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdOb3QgYWxsIGFydGlmYWN0cyBmb3VuZCEgTWlzc2luZzonKTtcbiAgICAgIHByZWZpeGVzLmZvckVhY2gocHJlZml4ID0+IHsgaWYgKCFwcmVmaXguZm91bmQpIHsgY29uc29sZS5lcnJvcignKyAnICsgcHJlZml4Lm5hbWUpOyB9IH0pO1xuICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnLl91cmxzID0gdXJscztcbiAgICAgIGNjaURvd25sb2FkKCk7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBjY2lCdWlsZEluZm9IYW5kbGVyID0gKGVyciwgcmVzKSA9PiB7XG4gIGlmIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycikpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXJlcy5vaykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1N0YXR1czogJyArIHJlcy5zdGF0dXMgKyAnLCAnICsgcmVzLnRleHQpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9IGVsc2UgaWYgKCFyZXMuYm9keSB8fCAhcmVzLmJvZHkubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcignTm8gc3VjY2Vzc2Z1bCBidWlsZCBmb3VuZCBmb3IgZ2l2ZW4gYnJhbmNoIScpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9IGVsc2UgeyAvLyByZXMub2tcbiAgICAhb3B0aW9ucy5pbnN0YWxsICYmIGNvbnNvbGUubG9nKCdSZXNwb25zZSBmcm9tIENDSSBzZXJ2ZXI6XFxuJyArIEpTT04uc3RyaW5naWZ5KHJlcy5ib2R5LCBudWxsLCA0KSk7XG4gICAgY29uZmlnLl9sYXN0ID0gcmVzLmJvZHlbMF0uYnVpbGRfbnVtO1xuICAgICFvcHRpb25zLmluc3RhbGwgJiYgY29uc29sZS5pbmZvKCdMYXN0IHN1Y2Nlc3NmdWwgJyArIGNvbmZpZy5fbmFtZSArICcgYnVpbGQgbnVtYmVyOiAnICsgY29uZmlnLl9sYXN0ICsgJy4nKTtcbiAgICBpZiAoIW9wdGlvbnMuaW5zdGFsbCAmJiAoY29uZmlnLmxhc3QgPT09IGNvbmZpZy5fbGFzdCkpIHtcbiAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgYWxyZWFkeSBpbnN0YWxsZWQuJyk7XG4gICAgICBjb25zb2xlLmluZm8oJ0NDSSB0YXNrIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZC4nKTtcbiAgICAgIEVYSVRfQ09ERSA9IDA7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMuaW5zdGFsbCAmJiAoY29uZmlnLmxhc3QgPT09IGNvbmZpZy5fbGFzdCkpIHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdCdWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBhbHJlYWR5IGluc3RhbGxlZCwgYWJvdXQgdG8gaW5zdGFsbCBpdCBhZ2Fpbi4uLicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdCdWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBpcyBub3QgaW5zdGFsbGVkIHlldC4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFwaVBhdGggPSBbJy9hcGkvdjEuMS9wcm9qZWN0JywgY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sXG4gICAgICAgIGNvbmZpZy5wcm9qZWN0LCBjb25maWcuX2xhc3QsICdhcnRpZmFjdHMnXS5qb2luKCcvJyk7XG4gICAgICBjb25zb2xlLmxvZygnR2V0dGluZyBpbmZvIGFib3V0IGJ1aWxkICcgKyBjb25maWcuX2xhc3QgKyAnIGFydGlmYWN0cy4nKTtcbiAgICAgIHJlcXVlc3RcbiAgICAgICAgLmdldCgnaHR0cHM6Ly9jaXJjbGVjaS5jb20nICsgYXBpUGF0aClcbiAgICAgICAgLnF1ZXJ5KHsgJ2NpcmNsZS10b2tlbic6IGNvbmZpZy50b2tlbiB9KVxuICAgICAgICAuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgIC50aW1lb3V0KGNvbmZpZy50aW1lb3V0ICogMTAwMClcbiAgICAgICAgLmVuZChjY2lBcnRpZmFjdHNJbmZvSGFuZGxlcik7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUucnVuID0gKF9vcHRpb25zID0gbnVsbCkgPT4ge1xuICBFWElUX0NPREUgPSAxOyAgIC8vIHVwZGF0ZSB0byAwIG9uIGZpbmFsIHN1Y2Nlc3NcbiAgaWYgKF9vcHRpb25zKSB7IG9wdGlvbnMgPSBfb3B0aW9uczsgfVxuICBjb25maWcgPSBvcHRpb25zLmNmZ0ZpbGUucmVhZCgpO1xuICBjb25maWcuX25hbWUgPSBbY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sIGNvbmZpZy5wcm9qZWN0LCBjb25maWcuYnJhbmNoXS5qb2luKCcvJyk7XG4gIGNvbnNvbGUuaW5mbygnQ0NJIHRhc2sgc3RhcnRlZC4nKTtcbiAgaWYgKG9wdGlvbnMuaW5zdGFsbCkge1xuICAgIGNjaUJ1aWxkSW5mb0hhbmRsZXIobnVsbCwge1xuICAgICAgb2s6IHRydWUsXG4gICAgICBib2R5OiBbIHsgYnVpbGRfbnVtOiBvcHRpb25zLmluc3RhbGwgfSBdXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGFwaVBhdGggPSBbJy9hcGkvdjEuMS9wcm9qZWN0JywgY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sIGNvbmZpZy5wcm9qZWN0LCAndHJlZScsIGNvbmZpZy5icmFuY2hdLmpvaW4oJy8nKTtcbiAgY29uc29sZS5sb2coJ0dldHRpbmcgaW5mbyBhYm91dCBsYXN0IHN1Y2Nlc3NmdWwgYnVpbGQgb2YgJyArIGNvbmZpZy5fbmFtZSArICcuJyk7XG4gIHJlcXVlc3RcbiAgICAuZ2V0KCdodHRwczovL2NpcmNsZWNpLmNvbScgKyBhcGlQYXRoKVxuICAgIC5xdWVyeSh7ICdjaXJjbGUtdG9rZW4nOiBjb25maWcudG9rZW4sIGZpbHRlcjogJ3N1Y2Nlc3NmdWwnLCBsaW1pdDogMSB9KVxuICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAudGltZW91dChjb25maWcudGltZW91dCAqIDEwMDApXG4gICAgLmVuZChjY2lCdWlsZEluZm9IYW5kbGVyKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZTtcbiJdfQ==

@@ -7,3 +7,3 @@ 'use strict';

// generated code, please see package.json
exports.default = '2.0.3';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92ZXJzaW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7a0JBQ2UsTyIsImZpbGUiOiJ2ZXJzaW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGNvZGUsIHBsZWFzZSBzZWUgcGFja2FnZS5qc29uXG5leHBvcnQgZGVmYXVsdCAnMi4wLjMnO1xuIl19
exports.default = '2.1.0';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92ZXJzaW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7a0JBQ2UsTyIsImZpbGUiOiJ2ZXJzaW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGNvZGUsIHBsZWFzZSBzZWUgcGFja2FnZS5qc29uXG5leHBvcnQgZGVmYXVsdCAnMi4xLjAnO1xuIl19
{
"name": "cci-pingu",
"version": "2.0.3",
"version": "2.1.0",
"description": "Periodically check for new builds (artifacts) on CircleCI and install them in turn",

@@ -38,3 +38,3 @@ "license": "MIT",

"babel-preset-stage-0": "^6.24.1",
"eslint": "^4.9.0",
"eslint": "^4.10.0",
"eslint-config-standard": "^10.2.1",

@@ -41,0 +41,0 @@ "eslint-plugin-import": "^2.8.0",

@@ -32,3 +32,3 @@ [![Dependency Status](https://img.shields.io/david/salsita/cci-pingu.svg)](https://david-dm.org/salsita/cci-pingu)

| branch | * | string| | The project repository branch to monitor. |
| artifacts | * | array of strings | | List of artifact names that will be downloaded for successful build. Actually, it is list of artifact name *prefixes* so that you can have "test" string in the `artifacts` array and it would match "test-1.2.3.tgz" artifact on CircleCI. |
| artifacts | * | array of strings | | List of artifact names that will be downloaded for successful build. Actually, it is list of artifact name *substrings* so that you can have "test" string in the `artifacts` array and it would match "test-1.2.3.tgz" artifact on CircleCI. |
| script | * | string | | Filename of executable (typically script) that is able to install the artifacts locally. |

@@ -50,3 +50,3 @@ | interval | | integer | 60 | When running in continuous mode, this number specifies the number of seconds between two consecutive checks on CircleCI. |

When the tool finds out that the latest CircleCI build (or the build provided on command line explicitly) is not installed locally, it retrieves the information about given build, including the artifacts of the build, and then compiles a list of artifacts that needs to be downloaded by comparing the list of artifacts listed in configuration file. As mentioned above, the list from configuration file is actually list of artifact name *prefixes*, so when you have "test" in the `artifacts` array of the configuration file, and the build info indicates that there are two artifacts on CircleCI, "test-1.2.3.tgz" and "test-db-0.1.2.dump", then both the artifacts will match the prefix and will be added to the list of artifacts to be donwloaded.
When the tool finds out that the latest CircleCI build (or the build provided on command line explicitly) is not installed locally, it retrieves the information about given build, including the artifacts of the build, and then compiles a list of artifacts that needs to be downloaded by comparing the list of artifacts listed in configuration file. As mentioned above, the list from configuration file is actually list of artifact name *substrings*, so when you have "test" in the `artifacts` array of the configuration file, and the build info indicates that there are two artifacts on CircleCI, "test-1.2.3.tgz" and "test-db-0.1.2.dump", then both the artifacts will match the substring and will be added to the list of artifacts to be donwloaded.

@@ -53,0 +53,0 @@ Once we know the list of the artifacts, the tool will create a new directory under `directory` from the config file. The name of the directory is `build-<CCI-build-number>[.installation-attempt-number]`. The installation attempt number is only used in case there already was some attempt to install the exact same build, but it failed for any reason.

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