Socket
Socket
Sign inDemoInstall

babel-import-util

Package Overview
Dependencies
0
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.2 to 2.0.3

5

package.json
{
"name": "babel-import-util",
"version": "2.0.2",
"version": "2.0.3",
"description": "Utility for manipulating imports within babel plugins",

@@ -30,2 +30,3 @@ "repository": "https://github.com/ef4/babel-import-util",

"@babel/core": "^7.14.3",
"@babel/plugin-syntax-typescript": "^7.24.1",
"@babel/plugin-transform-modules-commonjs": "^7.14.5",

@@ -38,3 +39,3 @@ "@babel/plugin-transform-typescript": "^7.14.6",

"@typescript-eslint/parser": "^4.26.1",
"code-equality-assertions": "^0.9.0",
"code-equality-assertions": "^1.0.0",
"eslint": "^6.8.0",

@@ -41,0 +42,0 @@ "eslint-config-prettier": "^6.15.0",

6

src/index.js

@@ -110,3 +110,5 @@ "use strict";

for (let path of this.program.get('body')) {
if (path.isImportDeclaration() && path.node.source.value === moduleSpecifier) {
if (path.isImportDeclaration() &&
path.node.source.value === moduleSpecifier &&
path.node.importKind !== 'type') {
return path;

@@ -190,2 +192,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFhLFVBQVU7SUFDckIsWUFBb0IsQ0FBYSxFQUFVLE9BQTRCO1FBQW5ELE1BQUMsR0FBRCxDQUFDLENBQVk7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUFHLENBQUM7SUFFM0UsMkVBQTJFO0lBQzNFLG1FQUFtRTtJQUNuRSxZQUFZLENBQUMsZUFBdUIsRUFBRSxZQUFvQjtRQUN4RCxLQUFLLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxFQUFFO2dCQUMvQyxTQUFTO2FBQ1Y7WUFFRCxJQUFJLG1CQUFtQixHQUFHLFlBQVk7aUJBQ25DLEdBQUcsQ0FBQyxZQUFZLENBQUM7aUJBQ2pCLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksbUJBQW1CLEVBQUU7Z0JBQ3ZCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDN0MsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUN2QjtxQkFBTTtvQkFDTCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDOUI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxnQkFBZ0IsQ0FBQyxlQUF1QjtRQUN0QyxLQUFLLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pELElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsRUFBRTtnQkFDOUMsWUFBWSxDQUFDLE1BQU0s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TSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN4RTtLQUNGO1NBQU07UUFDTCxPQUFPLFlBQVksQ0FBQztLQUNyQjtBQUNILENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFtQixFQUFFLFlBQW9CO0lBQy9ELFFBQVEsWUFBWSxFQUFFO1FBQ3BCLEtBQUssU0FBUztZQUNaLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDekMsS0FBSyxHQUFHO1lBQ04sT0FBTyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUMzQztZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssWUFBWSxDQUFDO0tBQ2hGO0FBQ0gsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUNsQixJQUFtQixFQUNuQixlQUF1QjtJQUV2QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUM7QUFDekYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTm9kZVBhdGggfSBmcm9tICdAYmFiZWwvdHJhdmVyc2UnO1xuaW1wb3J0IHR5cGUgKiBhcyB0IGZyb20gJ0BiYWJlbC90eXBlcyc7XG5cbnR5cGUgQmFiZWxUeXBlcyA9IHR5cGVvZiB0O1xuXG5leHBvcnQgY2xhc3MgSW1wb3J0VXRpbCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdDogQmFiZWxUeXBlcywgcHJpdmF0ZSBwcm9ncmFtOiBOb2RlUGF0aDx0LlByb2dyYW0+KSB7fVxuXG4gIC8vIHJlbW92ZSBvbmUgaW1wb3J0ZWQgYmluZGluZy4gSWYgdGhpcyBpcyB0aGUgbGFzdCB0aGluZyBpbXBvcnRlZCBmcm9tIHRoZVxuICAvLyBnaXZlbiBtb2R1bGVTcGVjaWZpZXIsIHRoZSB3aG9sZSBzdGF0ZW1lbnQgd2lsbCBhbHNvIGJlIHJlbW92ZWQuXG4gIHJlbW92ZUltcG9ydChtb2R1bGVTcGVjaWZpZXI6IHN0cmluZywgZXhwb3J0ZWROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGxldCB0b3BMZXZlbFBhdGggb2YgdGhpcy5wcm9ncmFtLmdldCgnYm9keScpKSB7XG4gICAgICBpZiAoIW1hdGNoTW9kdWxlKHRvcExldmVsUGF0aCwgbW9kdWxlU3BlY2lmaWVyKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGltcG9ydFNwZWNpZmllclBhdGggPSB0b3BMZXZlbFBhdGhcbiAgICAgICAgLmdldCgnc3BlY2lmaWVycycpXG4gICAgICAgIC5maW5kKChzcGVjaWZpZXJQYXRoKSA9PiBtYXRjaFNwZWNpZmllcihzcGVjaWZpZXJQYXRoLCBleHBvcnRlZE5hbWUpKTtcbiAgICAgIGlmIChpbXBvcnRTcGVjaWZpZXJQYXRoKSB7XG4gICAgICAgIGlmICh0b3BMZXZlbFBhdGgubm9kZS5zcGVjaWZpZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHRvcExldmVsUGF0aC5yZW1vdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbXBvcnRTcGVjaWZpZXJQYXRoLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gcmVtb3ZlIGFsbCBpbXBvcnRzIGZyb20gdGhlIGdpdmVuIG1vZHVsZVNwZWNpZmllclxuICByZW1vdmVBbGxJbXBvcnRzKG1vZHVsZVNwZWNpZmllcjogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChsZXQgdG9wTGV2ZWxQYXRoIG9mIHRoaXMucHJvZ3JhbS5nZXQoJ2JvZHknKSkge1xuICAgICAgaWYgKG1hdGNoTW9kdWxlKHRvcExldmVsUGF0aCwgbW9kdWxlU3BlY2lmaWVyKSkge1xuICAgICAgICB0b3BMZXZlbFBhdGgucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSW1wb3J0IHRoZSBnaXZlbiB2YWx1ZSAoaWYgbmVlZGVkKSBhbmQgcmV0dXJuIGFuIElkZW50aWZpZXIgcmVwcmVzZW50aW5nXG4gIC8vIGl0LlxuICBpbXBvcnQoXG4gICAgLy8gdGhlIHNwb3QgYXQgd2hpY2ggeW91IHdpbGwgaW5zZXJ0IHRoZSBJZGVudGlmaWVyIHdlIHJldHVybiB0byB5b3VcbiAgICB0YXJnZXQ6IE5vZGVQYXRoPHQuTm9kZT4sXG5cbiAgICAvLyB0aGUgcGF0aCB0byB0aGUgbW9kdWxlIHlvdSdyZSBpbXBvcnRpbmcgZnJvbVxuICAgIG1vZHVsZVNwZWNpZmllcjogc3RyaW5nLFxuXG4gICAgLy8gdGhlIG5hbWUgeW91J3JlIGltcG9ydGluZyBmcm9tIHRoYXQgbW9kdWxlLiBVc2UgXCJkZWZhdWx0XCIgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gZXhwb3J0LiBVc2UgXCIqXCIgZm9yIHRoZSBuYW1lc3BhY2UuXG4gICAgZXhwb3J0ZWROYW1lOiBzdHJpbmcsXG5cbiAgICAvLyBPcHRpb25hbCBoaW50IGZvciBoZWxwaW5nIHVzIHBpY2sgYSBuYW1lIGZvciB0aGUgaW1wb3J0ZWQgYmluZGluZ1xuICAgIG5hbWVIaW50Pzogc3RyaW5nXG4gICk6IHQuSWRlbnRpZmllciB7XG4gICAgbGV0IGlzTmFtZXNwYWNlSW1wb3J0ID0gZXhwb3J0ZWROYW1lID09PSAnKic7XG4gICAgbGV0IGlzRGVmYXVsdEltcG9ydCA9IGV4cG9ydGVkTmFtZSA9PT0gJ2RlZmF1bHQnO1xuICAgIGxldCBpc05hbWVkSW1wb3J0ID0gIWlzRGVmYXVsdEltcG9ydCAmJiAhaXNOYW1lc3BhY2VJbXBvcnQ7XG4gICAgbGV0IGRlY2xhcmF0aW9uID0gdGhpcy5maW5kSW1wb3J0RnJvbShtb2R1bGVTcGVjaWZpZXIpO1xuICAgIGxldCBoYXNOYW1lc3BhY2VTcGVjaWZpZXIgPSBkZWNsYXJhdGlvbj8ubm9kZS5zcGVjaWZpZXJzLmZpbmQoXG4gICAgICAocykgPT4gcy50eXBlID09PSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJ1xuICAgICk7XG4gICAgbGV0IGhhc05hbWVkU3BlY2lmaWVycyA9IGRlY2xhcmF0aW9uPy5ub2RlLnNwZWNpZmllcnMuZmluZCgocykgPT4gcy50eXBlID09PSAnSW1wb3J0U3BlY2lmaWVyJyk7XG5cbiAgICAvKipcbiAgICAgKiB0aGUgZmlsZSBoYXMgYSBwcmVleGlzdGluZyBub24tbmFtZXNwYWNlIGltcG9ydCBhbmQgYSB0cmFuc2Zvcm0gdHJpZXMgdG8gYWRkIGEgbmFtZXNwYWNlIGltcG9ydCwgc28gdGhleSBkb24ndCBnZXQgY29tYmluZWRcbiAgICAgKiB0aGUgZmlsZSBoYXMgYSBwcmVleGlzdGluZyBuYW1lc3BhY2UgaW1wb3J0IGFuZCBhIHRyYW5zZm9ybSB0cmllcyB0byBhZGQgYSBub24tbmFtZXNwYWNlIGltcG9ydCwgc28gdGhleSBkb24ndCBnZXQgY29tYmluZWRcbiAgICAgKiB0aGUgZmlsZSBoYXMgYSBwcmVleGlzdGluZyBuYW1lc3BhY2UgaW1wb3J0IGFuZCBhIHRyYW5zZm9ybSB0cmllcyB0byBhZGQgYSBuYW1lc3BhY2UgaW1wb3J0LCBzbyB0aGV5IGRvbid0IGdldCBjb21iaW5lZFxuICAgICAqL1xuICAgIGxldCBjYW5ub3RVc2VFeGlzdGluZ0RlY2xhcmF0aW9uID1cbiAgICAgIChoYXNOYW1lZFNwZWNpZmllcnMgJiYgaXNOYW1lc3BhY2VJbXBvcnQpIHx8XG4gICAgICAoaGFzTmFtZXNwYWNlU3BlY2lmaWVyICYmIGlzTmFtZWRJbXBvcnQpIHx8XG4gICAgICAoaGFzTmFtZXNwYWNlU3BlY2lmaWVyICYmIGlzTmFtZXNwYWNlSW1wb3J0KTtcblxuICAgIGlmICghY2Fubm90VXNlRXhpc3RpbmdEZWNsYXJhdGlvbiAmJiBkZWNsYXJhdGlvbikge1xuICAgICAgbGV0IHNwZWNpZmllciA9IGRlY2xhcmF0aW9uXG4gICAgICAgIC5nZXQoJ3NwZWNpZmllcnMnKVxuICAgICAgICAuZmluZCgoc3BlYykgPT4gbWF0Y2hTcGVjaWZpZXIoc3BlYywgZXhwb3J0ZWROYW1lKSk7XG4gICAgICBpZiAoc3BlY2lmaWVyICYmIHRhcmdldC5zY29wZS5nZXRCaW5kaW5nKHNwZWNpZmllci5ub2RlLmxvY2FsLm5hbWUpPy5raW5kID09PSAnbW9kdWxlJykge1xuICAgICAgICByZXR1cm4gdGhpcy50LmlkZW50aWZpZXIoc3BlY2lmaWVyLm5vZGUubG9jYWwubmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRTcGVjaWZpZXIodGFyZ2V0LCBkZWNsYXJhdGlvbiwgZXhwb3J0ZWROYW1lLCBuYW1lSGludCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZWNsYXJhdGlvbiA9IHRoaXMuaW5zZXJ0QWZ0ZXJFeGlzdGluZ0ltcG9ydHMoXG4gICAgICAgIHRoaXMudC5pbXBvcnREZWNsYXJhdGlvbihbXSwgdGhpcy50LnN0cmluZ0xpdGVyYWwobW9kdWxlU3BlY2lmaWVyKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdGhpcy5hZGRTcGVjaWZpZXIodGFyZ2V0LCBkZWNsYXJhdGlvbiwgZXhwb3J0ZWROYW1lLCBuYW1lSGludCk7XG4gICAgfVxuICB9XG5cbiAgaW1wb3J0Rm9yU2lkZUVmZmVjdChtb2R1bGVTcGVjaWZpZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBkZWNsYXJhdGlvbiA9IHRoaXMuZmluZEltcG9ydEZyb20obW9kdWxlU3BlY2lmaWVyKTtcbiAgICBpZiAoIWRlY2xhcmF0aW9uKSB7XG4gICAgICB0aGlzLmluc2VydEFmdGVyRXhpc3RpbmdJbXBvcnRzKFxuICAgICAgICB0aGlzLnQuaW1wb3J0RGVjbGFyYXRpb24oW10sIHRoaXMudC5zdHJpbmdMaXRlcmFsKG1vZHVsZVNwZWNpZmllcikpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkU3BlY2lmaWVyKFxuICAgIHRhcmdldDogTm9kZVBhdGg8dC5Ob2RlPixcbiAgICBkZWNsYXJhdGlvbjogTm9kZVBhdGg8dC5JbXBvcnREZWNsYXJhdGlvbj4sXG4gICAgZXhwb3J0ZWROYW1lOiBzdHJpbmcsXG4gICAgbmFtZUhpbnQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICApOiB0LklkZW50aWZpZXIge1xuICAgIGxldCBsb2NhbCA9IHRoaXMudC5pZGVudGlmaWVyKFxuICAgICAgdW51c2VkTmFtZUxpa2UodGFyZ2V0LCBkZXNpcmVkTmFtZShuYW1lSGludCwgZXhwb3J0ZWROYW1lLCB0YXJnZXQpKVxuICAgICk7XG4gICAgbGV0IHNwZWNpZmllciA9IHRoaXMuYnVpbGRTcGVjaWZpZXIoZXhwb3J0ZWROYW1lLCBsb2NhbCk7XG4gICAgaWYgKHNwZWNpZmllci50eXBlID09PSAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcicpIHtcbiAgICAgIGRlY2xhcmF0aW9uLm5vZGUuc3BlY2lmaWVycy51bnNoaWZ0KHNwZWNpZmllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlY2xhcmF0aW9uLm5vZGUuc3BlY2lmaWVycy5wdXNoKHNwZWNpZmllcik7XG4gICAgfVxuICAgIGRlY2xhcmF0aW9uLnNjb3BlLnJlZ2lzdGVyQmluZGluZyhcbiAgICAgICdtb2R1bGUnLFxuICAgICAgZGVjbGFyYXRpb24uZ2V0KGBzcGVjaWZpZXJzLiR7ZGVjbGFyYXRpb24ubm9kZS5zcGVjaWZpZXJzLmxlbmd0aCAtIDF9YCkgYXMgTm9kZVBhdGhcbiAgICApO1xuICAgIHJldHVybiBsb2NhbDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTcGVjaWZpZXIoZXhwb3J0ZWROYW1lOiBzdHJpbmcsIGxvY2FsTmFtZTogdC5JZGVudGlmaWVyKSB7XG4gICAgc3dpdGNoIChleHBvcnRlZE5hbWUpIHtcbiAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgICByZXR1cm4gdGhpcy50LmltcG9ydERlZmF1bHRTcGVjaWZpZXIobG9jYWxOYW1lKTtcbiAgICAgIGNhc2UgJyonOlxuICAgICAgICByZXR1cm4gdGhpcy50LmltcG9ydE5hbWVzcGFjZVNwZWNpZmllcihsb2NhbE5hbWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMudC5pbXBvcnRTcGVjaWZpZXIobG9jYWxOYW1lLCB0aGlzLnQuaWRlbnRpZmllcihleHBvcnRlZE5hbWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRJbXBvcnRGcm9tKG1vZHVsZVNwZWNpZmllcjogc3RyaW5nKTogTm9kZVBhdGg8dC5JbXBvcnREZWNsYXJhdGlvbj4gfCB1bmRlZmluZWQge1xuICAgIGZvciAobGV0IHBhdGggb2YgdGhpcy5wcm9ncmFtLmdldCgnYm9keScpKSB7XG4gICAgICBpZiAocGF0aC5pc0ltcG9ydERlY2xhcmF0aW9uKCkgJiYgcGF0aC5ub2RlLnNvdXJjZS52YWx1ZSA9PT0gbW9kdWxlU3BlY2lmaWVyKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRBZnRlckV4aXN0aW5nSW1wb3J0czxTIGV4dGVuZHMgdC5TdGF0ZW1lbnQ+KHN0YXRlbWVudDogUyk6IE5vZGVQYXRoPFM+IHtcbiAgICBsZXQgbGFzdEluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgW2luZGV4LCBub2RlXSBvZiB0aGlzLnByb2dyYW0ubm9kZS5ib2R5LmVudHJpZXMoKSkge1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0ltcG9ydERlY2xhcmF0aW9uJykge1xuICAgICAgICBsYXN0SW5kZXggPSBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxhc3RJbmRleCA9PSBudWxsKSB7XG4gICAgICAvLyB3ZSBhcmUgaW50ZW50aW9uYWxseSBub3QgdXNpbmcgYmFiZWwncyBjb250YWluZXItYXdhcmUgbWV0aG9kcywgYmVjYXVzZVxuICAgICAgLy8gd2hpbGUgaW4gdGhlb3J5IGl0J3MgbmljZSB0aGF0IHRoZXkgc2NoZWR1bGUgb3RoZXIgcGx1Z2lucyB0byBydW4gb25cbiAgICAgIC8vIG91ciBub2RlcywgaW4gcHJhY3RpY2UgdGhvc2Ugbm9kZXMgbWlnaHQgZ2V0IG11dGF0ZWQgb3IgcmVtb3ZlZCBieSBzb21lXG4gICAgICAvLyBvdGhlciBwbHVnaW4gaW4gdGhlIGludGVydmVuaW5nIHRpbWUgY2F1c2luZyBmYWlsdXJlcy5cbiAgICAgIHRoaXMucHJvZ3JhbS5ub2RlLmJvZHkudW5zaGlmdChzdGF0ZW1lbnQpO1xuICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5nZXQoJ2JvZHkuMCcpIGFzIE5vZGVQYXRoPFM+O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2dyYW0ubm9kZS5ib2R5LnNwbGljZShsYXN0SW5kZXggKyAxLCAwLCBzdGF0ZW1lbnQpO1xuICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5nZXQoYGJvZHkuJHtsYXN0SW5kZXggKyAxfWApIGFzIE5vZGVQYXRoPFM+O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1bnVzZWROYW1lTGlrZShwYXRoOiBOb2RlUGF0aDx0Lk5vZGU+LCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgY2FuZGlkYXRlID0gbmFtZTtcbiAgbGV0IGNvdW50ZXIgPSAwO1xuICB3aGlsZSAocGF0aC5zY29wZS5oYXNCaW5kaW5nKGNhbmRpZGF0ZSkpIHtcbiAgICBjYW5kaWRhdGUgPSBgJHtuYW1lfSR7Y291bnRlcisrfWA7XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZTtcbn1cblxuZnVuY3Rpb24gbmFtZShub2RlOiB0LlN0cmluZ0xpdGVyYWwgfCB0LklkZW50aWZpZXIpOiBzdHJpbmcge1xuICBpZiAobm9kZS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9kZS5uYW1lO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlc2lyZWROYW1lKG5hbWVIaW50OiBzdHJpbmcgfCB1bmRlZmluZWQsIGV4cG9ydGVkTmFtZTogc3RyaW5nLCB0YXJnZXQ6IE5vZGVQYXRoPHQuTm9kZT4pIHtcbiAgaWYgKG5hbWVIaW50KSB7XG4gICAgLy8gZmlyc3Qgd2Ugb3Bwb3J0dW5pc3RpY2FsbHkgZG8gY2FtZWxpemF0aW9uIHdoZW4gYW4gaWxsZWdhbCBjaGFyYWN0ZXIgaXNcbiAgICAvLyBmb2xsb3dlZCBieSBhIGxvd2VyY2FzZSBsZXR0ZXIsIGluIGFuIGVmZm9ydCB0byBhaWQgcmVhZGFiaWxpdHkgb2YgdGhlXG4gICAgLy8gb3V0cHV0LlxuICAgIGxldCBjbGVhbmVkID0gbmFtZUhpbnQucmVwbGFjZSgvW15hLXpBLVpfXShbYS16XSkvZywgKF9tLCBsZXR0ZXIpID0+IGxldHRlci50b1VwcGVyQ2FzZSgpKTtcbiAgICAvLyB0aGVuIHdlIHVubGl0ZXJhbGx5IHN0cmlwIGFsbCByZW1haW5pbmcgaWxsZWdhbCBjaGFyYWN0ZXJzLlxuICAgIGNsZWFuZWQgPSBjbGVhbmVkLnJlcGxhY2UoL1teYS16QS1aX10vZywgJycpO1xuICAgIHJldHVybiBjbGVhbmVkO1xuICB9XG4gIGlmIChleHBvcnRlZE5hbWUgPT09ICdkZWZhdWx0JyB8fCBleHBvcnRlZE5hbWUgPT09ICcqJykge1xuICAgIGlmICh0YXJnZXQuaXNJZGVudGlmaWVyKCkpIHtcbiAgICAgIHJldHVybiB0YXJnZXQubm9kZS5uYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnNjb3BlLmdlbmVyYXRlVWlkSWRlbnRpZmllckJhc2VkT25Ob2RlKHRhcmdldC5ub2RlKS5uYW1lO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZXhwb3J0ZWROYW1lO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoU3BlY2lmaWVyKHNwZWM6IE5vZGVQYXRoPGFueT4sIGV4cG9ydGVkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHN3aXRjaCAoZXhwb3J0ZWROYW1lKSB7XG4gICAgY2FzZSAnZGVmYXVsdCc6XG4gICAgICByZXR1cm4gc3BlYy5pc0ltcG9ydERlZmF1bHRTcGVjaWZpZXIoKTtcbiAgICBjYXNlICcqJzpcbiAgICAgIHJldHVybiBzcGVjLmlzSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyKCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzcGVjLmlzSW1wb3J0U3BlY2lmaWVyKCkgJiYgbmFtZShzcGVjLm5vZGUuaW1wb3J0ZWQpID09PSBleHBvcnRlZE5hbWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hNb2R1bGUoXG4gIHBhdGg6IE5vZGVQYXRoPGFueT4sXG4gIG1vZHVsZVNwZWNpZmllcjogc3RyaW5nXG4pOiBwYXRoIGlzIE5vZGVQYXRoPHQuSW1wb3J0RGVjbGFyYXRpb24+IHtcbiAgcmV0dXJuIHBhdGguaXNJbXBvcnREZWNsYXJhdGlvbigpICYmIHBhdGguZ2V0KCdzb3VyY2UnKS5ub2RlLnZhbHVlID09PSBtb2R1bGVTcGVjaWZpZXI7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFhLFVBQVU7SUFDckIsWUFBb0IsQ0FBYSxFQUFVLE9BQTRCO1FBQW5ELE1BQUMsR0FBRCxDQUFDLENBQVk7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUFHLENBQUM7SUFFM0UsMkVBQTJFO0lBQzNFLG1FQUFtRTtJQUNuRSxZQUFZLENBQUMsZUFBdUIsRUFBRSxZQUFvQjtRQUN4RCxLQUFLLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxFQUFFO2dCQUMvQyxTQUFTO2FBQ1Y7WUFFRCxJQUFJLG1CQUFtQixHQUFHLFlBQVk7aUJBQ25DLEdBQUcsQ0FBQyxZQUFZLENBQUM7aUJBQ2pCLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksbUJBQW1CLEVBQUU7Z0JBQ3ZCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDN0MsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUN2QjtxQkFBTTtvQkFDTCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDOUI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxnQkFBZ0IsQ0FBQyxlQUF1QjtRQUN0QyxLQUFLLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pELElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsRUFBRTtnQkFDOUMsWUFBWSxDQUFDLE1BQU0s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QUNMLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3hFO0tBQ0Y7U0FBTTtRQUNMLE9BQU8sWUFBWSxDQUFDO0tBQ3JCO0FBQ0gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQW1CLEVBQUUsWUFBb0I7SUFDL0QsUUFBUSxZQUFZLEVBQUU7UUFDcEIsS0FBSyxTQUFTO1lBQ1osT0FBTyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLEdBQUc7WUFDTixPQUFPLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQzNDO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxZQUFZLENBQUM7S0FDaEY7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLElBQW1CLEVBQ25CLGVBQXVCO0lBRXZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQztBQUN6RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOb2RlUGF0aCB9IGZyb20gJ0BiYWJlbC90cmF2ZXJzZSc7XG5pbXBvcnQgdHlwZSAqIGFzIHQgZnJvbSAnQGJhYmVsL3R5cGVzJztcblxudHlwZSBCYWJlbFR5cGVzID0gdHlwZW9mIHQ7XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRVdGlsIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0OiBCYWJlbFR5cGVzLCBwcml2YXRlIHByb2dyYW06IE5vZGVQYXRoPHQuUHJvZ3JhbT4pIHt9XG5cbiAgLy8gcmVtb3ZlIG9uZSBpbXBvcnRlZCBiaW5kaW5nLiBJZiB0aGlzIGlzIHRoZSBsYXN0IHRoaW5nIGltcG9ydGVkIGZyb20gdGhlXG4gIC8vIGdpdmVuIG1vZHVsZVNwZWNpZmllciwgdGhlIHdob2xlIHN0YXRlbWVudCB3aWxsIGFsc28gYmUgcmVtb3ZlZC5cbiAgcmVtb3ZlSW1wb3J0KG1vZHVsZVNwZWNpZmllcjogc3RyaW5nLCBleHBvcnRlZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGZvciAobGV0IHRvcExldmVsUGF0aCBvZiB0aGlzLnByb2dyYW0uZ2V0KCdib2R5JykpIHtcbiAgICAgIGlmICghbWF0Y2hNb2R1bGUodG9wTGV2ZWxQYXRoLCBtb2R1bGVTcGVjaWZpZXIpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgaW1wb3J0U3BlY2lmaWVyUGF0aCA9IHRvcExldmVsUGF0aFxuICAgICAgICAuZ2V0KCdzcGVjaWZpZXJzJylcbiAgICAgICAgLmZpbmQoKHNwZWNpZmllclBhdGgpID0+IG1hdGNoU3BlY2lmaWVyKHNwZWNpZmllclBhdGgsIGV4cG9ydGVkTmFtZSkpO1xuICAgICAgaWYgKGltcG9ydFNwZWNpZmllclBhdGgpIHtcbiAgICAgICAgaWYgKHRvcExldmVsUGF0aC5ub2RlLnNwZWNpZmllcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgdG9wTGV2ZWxQYXRoLnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGltcG9ydFNwZWNpZmllclBhdGgucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyByZW1vdmUgYWxsIGltcG9ydHMgZnJvbSB0aGUgZ2l2ZW4gbW9kdWxlU3BlY2lmaWVyXG4gIHJlbW92ZUFsbEltcG9ydHMobW9kdWxlU3BlY2lmaWVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGxldCB0b3BMZXZlbFBhdGggb2YgdGhpcy5wcm9ncmFtLmdldCgnYm9keScpKSB7XG4gICAgICBpZiAobWF0Y2hNb2R1bGUodG9wTGV2ZWxQYXRoLCBtb2R1bGVTcGVjaWZpZXIpKSB7XG4gICAgICAgIHRvcExldmVsUGF0aC5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJbXBvcnQgdGhlIGdpdmVuIHZhbHVlIChpZiBuZWVkZWQpIGFuZCByZXR1cm4gYW4gSWRlbnRpZmllciByZXByZXNlbnRpbmdcbiAgLy8gaXQuXG4gIGltcG9ydChcbiAgICAvLyB0aGUgc3BvdCBhdCB3aGljaCB5b3Ugd2lsbCBpbnNlcnQgdGhlIElkZW50aWZpZXIgd2UgcmV0dXJuIHRvIHlvdVxuICAgIHRhcmdldDogTm9kZVBhdGg8dC5Ob2RlPixcblxuICAgIC8vIHRoZSBwYXRoIHRvIHRoZSBtb2R1bGUgeW91J3JlIGltcG9ydGluZyBmcm9tXG4gICAgbW9kdWxlU3BlY2lmaWVyOiBzdHJpbmcsXG5cbiAgICAvLyB0aGUgbmFtZSB5b3UncmUgaW1wb3J0aW5nIGZyb20gdGhhdCBtb2R1bGUuIFVzZSBcImRlZmF1bHRcIiBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyBleHBvcnQuIFVzZSBcIipcIiBmb3IgdGhlIG5hbWVzcGFjZS5cbiAgICBleHBvcnRlZE5hbWU6IHN0cmluZyxcblxuICAgIC8vIE9wdGlvbmFsIGhpbnQgZm9yIGhlbHBpbmcgdXMgcGljayBhIG5hbWUgZm9yIHRoZSBpbXBvcnRlZCBiaW5kaW5nXG4gICAgbmFtZUhpbnQ/OiBzdHJpbmdcbiAgKTogdC5JZGVudGlmaWVyIHtcbiAgICBsZXQgaXNOYW1lc3BhY2VJbXBvcnQgPSBleHBvcnRlZE5hbWUgPT09ICcqJztcbiAgICBsZXQgaXNEZWZhdWx0SW1wb3J0ID0gZXhwb3J0ZWROYW1lID09PSAnZGVmYXVsdCc7XG4gICAgbGV0IGlzTmFtZWRJbXBvcnQgPSAhaXNEZWZhdWx0SW1wb3J0ICYmICFpc05hbWVzcGFjZUltcG9ydDtcbiAgICBsZXQgZGVjbGFyYXRpb24gPSB0aGlzLmZpbmRJbXBvcnRGcm9tKG1vZHVsZVNwZWNpZmllcik7XG4gICAgbGV0IGhhc05hbWVzcGFjZVNwZWNpZmllciA9IGRlY2xhcmF0aW9uPy5ub2RlLnNwZWNpZmllcnMuZmluZChcbiAgICAgIChzKSA9PiBzLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInXG4gICAgKTtcbiAgICBsZXQgaGFzTmFtZWRTcGVjaWZpZXJzID0gZGVjbGFyYXRpb24/Lm5vZGUuc3BlY2lmaWVycy5maW5kKChzKSA9PiBzLnR5cGUgPT09ICdJbXBvcnRTcGVjaWZpZXInKTtcblxuICAgIC8qKlxuICAgICAqIHRoZSBmaWxlIGhhcyBhIHByZWV4aXN0aW5nIG5vbi1uYW1lc3BhY2UgaW1wb3J0IGFuZCBhIHRyYW5zZm9ybSB0cmllcyB0byBhZGQgYSBuYW1lc3BhY2UgaW1wb3J0LCBzbyB0aGV5IGRvbid0IGdldCBjb21iaW5lZFxuICAgICAqIHRoZSBmaWxlIGhhcyBhIHByZWV4aXN0aW5nIG5hbWVzcGFjZSBpbXBvcnQgYW5kIGEgdHJhbnNmb3JtIHRyaWVzIHRvIGFkZCBhIG5vbi1uYW1lc3BhY2UgaW1wb3J0LCBzbyB0aGV5IGRvbid0IGdldCBjb21iaW5lZFxuICAgICAqIHRoZSBmaWxlIGhhcyBhIHByZWV4aXN0aW5nIG5hbWVzcGFjZSBpbXBvcnQgYW5kIGEgdHJhbnNmb3JtIHRyaWVzIHRvIGFkZCBhIG5hbWVzcGFjZSBpbXBvcnQsIHNvIHRoZXkgZG9uJ3QgZ2V0IGNvbWJpbmVkXG4gICAgICovXG4gICAgbGV0IGNhbm5vdFVzZUV4aXN0aW5nRGVjbGFyYXRpb24gPVxuICAgICAgKGhhc05hbWVkU3BlY2lmaWVycyAmJiBpc05hbWVzcGFjZUltcG9ydCkgfHxcbiAgICAgIChoYXNOYW1lc3BhY2VTcGVjaWZpZXIgJiYgaXNOYW1lZEltcG9ydCkgfHxcbiAgICAgIChoYXNOYW1lc3BhY2VTcGVjaWZpZXIgJiYgaXNOYW1lc3BhY2VJbXBvcnQpO1xuXG4gICAgaWYgKCFjYW5ub3RVc2VFeGlzdGluZ0RlY2xhcmF0aW9uICYmIGRlY2xhcmF0aW9uKSB7XG4gICAgICBsZXQgc3BlY2lmaWVyID0gZGVjbGFyYXRpb25cbiAgICAgICAgLmdldCgnc3BlY2lmaWVycycpXG4gICAgICAgIC5maW5kKChzcGVjKSA9PiBtYXRjaFNwZWNpZmllcihzcGVjLCBleHBvcnRlZE5hbWUpKTtcbiAgICAgIGlmIChzcGVjaWZpZXIgJiYgdGFyZ2V0LnNjb3BlLmdldEJpbmRpbmcoc3BlY2lmaWVyLm5vZGUubG9jYWwubmFtZSk/LmtpbmQgPT09ICdtb2R1bGUnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnQuaWRlbnRpZmllcihzcGVjaWZpZXIubm9kZS5sb2NhbC5uYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNwZWNpZmllcih0YXJnZXQsIGRlY2xhcmF0aW9uLCBleHBvcnRlZE5hbWUsIG5hbWVIaW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRlY2xhcmF0aW9uID0gdGhpcy5pbnNlcnRBZnRlckV4aXN0aW5nSW1wb3J0cyhcbiAgICAgICAgdGhpcy50LmltcG9ydERlY2xhcmF0aW9uKFtdLCB0aGlzLnQuc3RyaW5nTGl0ZXJhbChtb2R1bGVTcGVjaWZpZXIpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiB0aGlzLmFkZFNwZWNpZmllcih0YXJnZXQsIGRlY2xhcmF0aW9uLCBleHBvcnRlZE5hbWUsIG5hbWVIaW50KTtcbiAgICB9XG4gIH1cblxuICBpbXBvcnRGb3JTaWRlRWZmZWN0KG1vZHVsZVNwZWNpZmllcjogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGRlY2xhcmF0aW9uID0gdGhpcy5maW5kSW1wb3J0RnJvbShtb2R1bGVTcGVjaWZpZXIpO1xuICAgIGlmICghZGVjbGFyYXRpb24pIHtcbiAgICAgIHRoaXMuaW5zZXJ0QWZ0ZXJFeGlzdGluZ0ltcG9ydHMoXG4gICAgICAgIHRoaXMudC5pbXBvcnREZWNsYXJhdGlvbihbXSwgdGhpcy50LnN0cmluZ0xpdGVyYWwobW9kdWxlU3BlY2lmaWVyKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRTcGVjaWZpZXIoXG4gICAgdGFyZ2V0OiBOb2RlUGF0aDx0Lk5vZGU+LFxuICAgIGRlY2xhcmF0aW9uOiBOb2RlUGF0aDx0LkltcG9ydERlY2xhcmF0aW9uPixcbiAgICBleHBvcnRlZE5hbWU6IHN0cmluZyxcbiAgICBuYW1lSGludDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICk6IHQuSWRlbnRpZmllciB7XG4gICAgbGV0IGxvY2FsID0gdGhpcy50LmlkZW50aWZpZXIoXG4gICAgICB1bnVzZWROYW1lTGlrZSh0YXJnZXQsIGRlc2lyZWROYW1lKG5hbWVIaW50LCBleHBvcnRlZE5hbWUsIHRhcmdldCkpXG4gICAgKTtcbiAgICBsZXQgc3BlY2lmaWVyID0gdGhpcy5idWlsZFNwZWNpZmllcihleHBvcnRlZE5hbWUsIGxvY2FsKTtcbiAgICBpZiAoc3BlY2lmaWVyLnR5cGUgPT09ICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJykge1xuICAgICAgZGVjbGFyYXRpb24ubm9kZS5zcGVjaWZpZXJzLnVuc2hpZnQoc3BlY2lmaWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVjbGFyYXRpb24ubm9kZS5zcGVjaWZpZXJzLnB1c2goc3BlY2lmaWVyKTtcbiAgICB9XG4gICAgZGVjbGFyYXRpb24uc2NvcGUucmVnaXN0ZXJCaW5kaW5nKFxuICAgICAgJ21vZHVsZScsXG4gICAgICBkZWNsYXJhdGlvbi5nZXQoYHNwZWNpZmllcnMuJHtkZWNsYXJhdGlvbi5ub2RlLnNwZWNpZmllcnMubGVuZ3RoIC0gMX1gKSBhcyBOb2RlUGF0aFxuICAgICk7XG4gICAgcmV0dXJuIGxvY2FsO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNwZWNpZmllcihleHBvcnRlZE5hbWU6IHN0cmluZywgbG9jYWxOYW1lOiB0LklkZW50aWZpZXIpIHtcbiAgICBzd2l0Y2ggKGV4cG9ydGVkTmFtZSkge1xuICAgICAgY2FzZSAnZGVmYXVsdCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQuaW1wb3J0RGVmYXVsdFNwZWNpZmllcihsb2NhbE5hbWUpO1xuICAgICAgY2FzZSAnKic6XG4gICAgICAgIHJldHVybiB0aGlzLnQuaW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyKGxvY2FsTmFtZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50LmltcG9ydFNwZWNpZmllcihsb2NhbE5hbWUsIHRoaXMudC5pZGVudGlmaWVyKGV4cG9ydGVkTmFtZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluZEltcG9ydEZyb20obW9kdWxlU3BlY2lmaWVyOiBzdHJpbmcpOiBOb2RlUGF0aDx0LkltcG9ydERlY2xhcmF0aW9uPiB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChsZXQgcGF0aCBvZiB0aGlzLnByb2dyYW0uZ2V0KCdib2R5JykpIHtcbiAgICAgIGlmIChcbiAgICAgICAgcGF0aC5pc0ltcG9ydERlY2xhcmF0aW9uKCkgJiZcbiAgICAgICAgcGF0aC5ub2RlLnNvdXJjZS52YWx1ZSA9PT0gbW9kdWxlU3BlY2lmaWVyICYmXG4gICAgICAgIHBhdGgubm9kZS5pbXBvcnRLaW5kICE9PSAndHlwZSdcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaW5zZXJ0QWZ0ZXJFeGlzdGluZ0ltcG9ydHM8UyBleHRlbmRzIHQuU3RhdGVtZW50PihzdGF0ZW1lbnQ6IFMpOiBOb2RlUGF0aDxTPiB7XG4gICAgbGV0IGxhc3RJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGZvciAobGV0IFtpbmRleCwgbm9kZV0gb2YgdGhpcy5wcm9ncmFtLm5vZGUuYm9keS5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09ICdJbXBvcnREZWNsYXJhdGlvbicpIHtcbiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsYXN0SW5kZXggPT0gbnVsbCkge1xuICAgICAgLy8gd2UgYXJlIGludGVudGlvbmFsbHkgbm90IHVzaW5nIGJhYmVsJ3MgY29udGFpbmVyLWF3YXJlIG1ldGhvZHMsIGJlY2F1c2VcbiAgICAgIC8vIHdoaWxlIGluIHRoZW9yeSBpdCdzIG5pY2UgdGhhdCB0aGV5IHNjaGVkdWxlIG90aGVyIHBsdWdpbnMgdG8gcnVuIG9uXG4gICAgICAvLyBvdXIgbm9kZXMsIGluIHByYWN0aWNlIHRob3NlIG5vZGVzIG1pZ2h0IGdldCBtdXRhdGVkIG9yIHJlbW92ZWQgYnkgc29tZVxuICAgICAgLy8gb3RoZXIgcGx1Z2luIGluIHRoZSBpbnRlcnZlbmluZyB0aW1lIGNhdXNpbmcgZmFpbHVyZXMuXG4gICAgICB0aGlzLnByb2dyYW0ubm9kZS5ib2R5LnVuc2hpZnQoc3RhdGVtZW50KTtcbiAgICAgIHJldHVybiB0aGlzLnByb2dyYW0uZ2V0KCdib2R5LjAnKSBhcyBOb2RlUGF0aDxTPjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9ncmFtLm5vZGUuYm9keS5zcGxpY2UobGFzdEluZGV4ICsgMSwgMCwgc3RhdGVtZW50KTtcbiAgICAgIHJldHVybiB0aGlzLnByb2dyYW0uZ2V0KGBib2R5LiR7bGFzdEluZGV4ICsgMX1gKSBhcyBOb2RlUGF0aDxTPjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdW51c2VkTmFtZUxpa2UocGF0aDogTm9kZVBhdGg8dC5Ob2RlPiwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IGNhbmRpZGF0ZSA9IG5hbWU7XG4gIGxldCBjb3VudGVyID0gMDtcbiAgd2hpbGUgKHBhdGguc2NvcGUuaGFzQmluZGluZyhjYW5kaWRhdGUpKSB7XG4gICAgY2FuZGlkYXRlID0gYCR7bmFtZX0ke2NvdW50ZXIrK31gO1xuICB9XG4gIHJldHVybiBjYW5kaWRhdGU7XG59XG5cbmZ1bmN0aW9uIG5hbWUobm9kZTogdC5TdHJpbmdMaXRlcmFsIHwgdC5JZGVudGlmaWVyKTogc3RyaW5nIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vZGUubmFtZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXNpcmVkTmFtZShuYW1lSGludDogc3RyaW5nIHwgdW5kZWZpbmVkLCBleHBvcnRlZE5hbWU6IHN0cmluZywgdGFyZ2V0OiBOb2RlUGF0aDx0Lk5vZGU+KSB7XG4gIGlmIChuYW1lSGludCkge1xuICAgIC8vIGZpcnN0IHdlIG9wcG9ydHVuaXN0aWNhbGx5IGRvIGNhbWVsaXphdGlvbiB3aGVuIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGlzXG4gICAgLy8gZm9sbG93ZWQgYnkgYSBsb3dlcmNhc2UgbGV0dGVyLCBpbiBhbiBlZmZvcnQgdG8gYWlkIHJlYWRhYmlsaXR5IG9mIHRoZVxuICAgIC8vIG91dHB1dC5cbiAgICBsZXQgY2xlYW5lZCA9IG5hbWVIaW50LnJlcGxhY2UoL1teYS16QS1aX10oW2Etel0pL2csIChfbSwgbGV0dGVyKSA9PiBsZXR0ZXIudG9VcHBlckNhc2UoKSk7XG4gICAgLy8gdGhlbiB3ZSB1bmxpdGVyYWxseSBzdHJpcCBhbGwgcmVtYWluaW5nIGlsbGVnYWwgY2hhcmFjdGVycy5cbiAgICBjbGVhbmVkID0gY2xlYW5lZC5yZXBsYWNlKC9bXmEtekEtWl9dL2csICcnKTtcbiAgICByZXR1cm4gY2xlYW5lZDtcbiAgfVxuICBpZiAoZXhwb3J0ZWROYW1lID09PSAnZGVmYXVsdCcgfHwgZXhwb3J0ZWROYW1lID09PSAnKicpIHtcbiAgICBpZiAodGFyZ2V0LmlzSWRlbnRpZmllcigpKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0Lm5vZGUubmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRhcmdldC5zY29wZS5nZW5lcmF0ZVVpZElkZW50aWZpZXJCYXNlZE9uTm9kZSh0YXJnZXQubm9kZSkubmFtZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGV4cG9ydGVkTmFtZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXRjaFNwZWNpZmllcihzcGVjOiBOb2RlUGF0aDxhbnk+LCBleHBvcnRlZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBzd2l0Y2ggKGV4cG9ydGVkTmFtZSkge1xuICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgcmV0dXJuIHNwZWMuaXNJbXBvcnREZWZhdWx0U3BlY2lmaWVyKCk7XG4gICAgY2FzZSAnKic6XG4gICAgICByZXR1cm4gc3BlYy5pc0ltcG9ydE5hbWVzcGFjZVNwZWNpZmllcigpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3BlYy5pc0ltcG9ydFNwZWNpZmllcigpICYmIG5hbWUoc3BlYy5ub2RlLmltcG9ydGVkKSA9PT0gZXhwb3J0ZWROYW1lO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoTW9kdWxlKFxuICBwYXRoOiBOb2RlUGF0aDxhbnk+LFxuICBtb2R1bGVTcGVjaWZpZXI6IHN0cmluZ1xuKTogcGF0aCBpcyBOb2RlUGF0aDx0LkltcG9ydERlY2xhcmF0aW9uPiB7XG4gIHJldHVybiBwYXRoLmlzSW1wb3J0RGVjbGFyYXRpb24oKSAmJiBwYXRoLmdldCgnc291cmNlJykubm9kZS52YWx1ZSA9PT0gbW9kdWxlU3BlY2lmaWVyO1xufVxuIl19
SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc