Socket
Socket
Sign inDemoInstall

patch-package

Package Overview
Dependencies
169
Maintainers
1
Versions
95
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 6.1.4 to 6.2.0

dist/packageIsDevDependency.js

43

CHANGELOG.md
# Changelog
## 6.2.0
- Add support for dev-only patches (#159 again)
## 6.1.4

@@ -10,3 +14,4 @@

- Fail when patches are found for uninstalled packages (#159)
- Support private registries declared in .npmrc (Contribution from @cherniavskii in #152)
- Support private registries declared in .npmrc (Contribution from @cherniavskii
in #152)

@@ -44,3 +49,4 @@ ## 6.1.2

- Allow relative file paths for --patch-dir (Contribution from @lots0logs in #119)
- Allow relative file paths for --patch-dir (Contribution from @lots0logs in
#119)
- Fix version string handling (Contribution from @teppeis in #122)

@@ -115,3 +121,4 @@ - Add support for custom resolutions field in app's package.json (#125)

- Fix patch application bug when creating new files (Contribution from @stmarkidis)
- Fix patch application bug when creating new files (Contribution from
@stmarkidis)

@@ -175,11 +182,14 @@ ## 6.0.0-8

- Fix bug where patch-package was complaining about failing when it had, in fact, succeeded. See #31
- Fix bug where patch-package was complaining about failing when it had, in
fact, succeeded. See #31
## 3.6.0
- Remove git headers from patch files to prevent git from thinking files are part of the index
- Remove git headers from patch files to prevent git from thinking files are
part of the index
## 3.5.3
- Change the way patch files are re-written when the project root dir is not the same as the git root dir.
- Change the way patch files are re-written when the project root dir is not the
same as the git root dir.
- Remove redundant windows warning about whitespace

@@ -233,10 +243,10 @@

- Resolve paths in patch files for situations where the git root is not
the same as the app root.
- Resolve paths in patch files for situations where the git root is not the same
as the app root.
## 3.3.4
- Pass --unsafe-paths option to `git apply` to let it work on arbitrary
file paths (i.e. files which are not in a git repo or files which are
outside of the working directory)
- Pass --unsafe-paths option to `git apply` to let it work on arbitrary file
paths (i.e. files which are not in a git repo or files which are outside of
the working directory)

@@ -296,8 +306,7 @@ ## 3.3.3

Moving fast and breaking things. It turns out yarn doesn't run the
prepare hook after removing a package, so we use patch-package to
patch a local version of yarn. I'm not proud of this. Probably
wouldn't have released this in the first place if I had known that
yarn didn't have all the right hooks. Oh well. Now I have a reason
to contribute to Yarn I guess.
Moving fast and breaking things. It turns out yarn doesn't run the prepare hook
after removing a package, so we use patch-package to patch a local version of
yarn. I'm not proud of this. Probably wouldn't have released this in the first
place if I had known that yarn didn't have all the right hooks. Oh well. Now I
have a reason to contribute to Yarn I guess.

@@ -304,0 +313,0 @@ ## 1.2.1

@@ -17,2 +17,3 @@ "use strict";

var read_1 = require("./patch/read");
var packageIsDevDependency_1 = require("./packageIsDevDependency");
// don't want to exit(1) on postinsall locally.

@@ -29,6 +30,12 @@ // see https://github.com/ds300/patch-package/issues/86

function getInstalledPackageVersion(_a) {
var appPath = _a.appPath, path = _a.path, pathSpecifier = _a.pathSpecifier;
var appPath = _a.appPath, path = _a.path, pathSpecifier = _a.pathSpecifier, isDevOnly = _a.isDevOnly, patchFilename = _a.patchFilename;
var packageDir = path_1.join(appPath, path);
if (!fs_extra_1.existsSync(packageDir)) {
if (process.env.NODE_ENV === "production" && isDevOnly) {
return null;
}
console.error(chalk_1.default.red("Error:") + " Patch file found for package " + path_2.posix.basename(pathSpecifier) + (" which is not present at " + path_1.relative(".", packageDir)));
if (!isDevOnly && process.env.NODE_ENV === "production") {
console.error("\n If this package is a dev dependency, rename the patch file to\n \n " + chalk_1.default.bold(patchFilename.replace(".patch", ".dev.patch")) + "\n");
}
exit();

@@ -59,3 +66,3 @@ }

}
var name = packageDetails.name, version = packageDetails.version, path = packageDetails.path, pathSpecifier = packageDetails.pathSpecifier;
var name = packageDetails.name, version = packageDetails.version, path = packageDetails.path, pathSpecifier = packageDetails.pathSpecifier, isDevOnly = packageDetails.isDevOnly, patchFilename = packageDetails.patchFilename;
var installedPackageVersion = getInstalledPackageVersion({

@@ -65,3 +72,13 @@ appPath: appPath,

pathSpecifier: pathSpecifier,
isDevOnly: isDevOnly ||
// check for direct-dependents in prod
(process.env.NODE_ENV === "production" &&
packageIsDevDependency_1.packageIsDevDependency({ appPath: appPath, packageDetails: packageDetails })),
patchFilename: patchFilename,
});
if (!installedPackageVersion) {
// it's ok we're in production mode and this is a dev only package
console.log("Skipping dev-only " + chalk_1.default.bold(pathSpecifier) + "@" + version + " " + chalk_1.default.blue("✔"));
return;
}
if (applyPatch({

@@ -143,2 +160,2 @@ patchFilePath: path_1.resolve(patchesDirectory, filename),

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHlQYXRjaGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcGx5UGF0Y2hlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF5QjtBQUN6QixxQ0FBeUM7QUFDekMsdUNBQThDO0FBQzlDLHFDQUFxQztBQUNyQywrQkFBZ0Q7QUFDaEQsNkJBQTRCO0FBQzVCLG1EQUd5QjtBQUN6QiwyQ0FBOEM7QUFDOUMsZ0RBQXdCO0FBQ3hCLGtEQUEyQjtBQUMzQixxQ0FBd0M7QUFFeEMsK0NBQStDO0FBQy9DLHVEQUF1RDtBQUN2RCxJQUFNLDhCQUE4QixHQUFHLGVBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUE7QUFFOUUsSUFBTSxJQUFJLEdBQUcsY0FBTSxPQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQXBELENBQW9ELENBQUE7QUFFdkUsU0FBUyxjQUFjLENBQUMsZ0JBQXdCO0lBQzlDLElBQUksQ0FBQyxxQkFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDakMsT0FBTyxFQUFFLENBQUE7S0FDVjtJQUVELE9BQU8sdUJBQWEsQ0FBQyxnQkFBZ0IsQ0FBYSxDQUFBO0FBQ3BELENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUFDLEVBUW5DO1FBUEMsb0JBQU8sRUFDUCxjQUFJLEVBQ0osZ0NBQWE7SUFNYixJQUFNLFVBQVUsR0FBRyxXQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3RDLElBQUksQ0FBQyxxQkFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQ1IsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsc0NBQWlDLFlBQUssQ0FBQyxRQUFRLENBQ25FLGFBQWEsQ0FDWixJQUFHLDhCQUE0QixlQUFRLENBQUMs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LENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUFDLEVBVWxDO1FBVEMsNEJBQVcsRUFDWCxnQ0FBYSxFQUNiLGNBQUksRUFDSixnQ0FBYTtJQU9iLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FDZCxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBSSxlQUFLLENBQUMsR0FBRyxDQUN0Qyx1Q0FBcUMsZUFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBVSxDQUN2RSxrQkFFRyxJQUFJLGdIQUlJLGFBQWEsbVBBTVAsYUFBYSwyS0FPaEMsQ0FBQyxDQUFBO0FBQ0YsQ0FBQztBQUVELFNBQVMsZ0NBQWdDLENBQUMsRUFjekM7UUFiQyw0QkFBVyxFQUNYLGdDQUFhLEVBQ2Isb0NBQWUsRUFDZixnQ0FBYSxFQUNiLGNBQUksRUFDSixnQ0FBYTtJQVNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FDZCxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBSSxlQUFLLENBQUMsR0FBRyxDQUN0Qyx1Q0FBcUMsZUFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBVSxDQUN2RSxrQkFFRyxJQUFJLDRDQUV3QixlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvaUJBZXJDLGFBQWEsNkNBR1AsYUFBYSwwQ0FDTCxlQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUNBQzFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUNyRCxDQUFDLENBQUE7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiXG5pbXBvcnQgeyBnZXRQYXRjaEZpbGVzIH0gZnJvbSBcIi4vcGF0Y2hGc1wiXG5pbXBvcnQgeyBleGVjdXRlRWZmZWN0cyB9IGZyb20gXCIuL3BhdGNoL2FwcGx5XCJcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSwgcmVsYXRpdmUgfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCB7IHBvc2l4IH0gZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZSxcbiAgUGFja2FnZURldGFpbHMsXG59IGZyb20gXCIuL1BhY2thZ2VEZXRhaWxzXCJcbmltcG9ydCB7IHJldmVyc2VQYXRjaCB9IGZyb20gXCIuL3BhdGNoL3JldmVyc2VcIlxuaW1wb3J0IGlzQ2kgZnJvbSBcImlzLWNpXCJcbmltcG9ydCBzZW12ZXIgZnJvbSBcInNlbXZlclwiXG5pbXBvcnQgeyByZWFkUGF0Y2ggfSBmcm9tIFwiLi9wYXRjaC9yZWFkXCJcblxuLy8gZG9uJ3Qgd2FudCB0byBleGl0KDEpIG9uIHBvc3RpbnNhbGwgbG9jYWxseS5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZHMzMDAvcGF0Y2gtcGFja2FnZS9pc3N1ZXMvODZcbmNvbnN0IHNob3VsZEV4aXRQb3N0aW5zdGFsbFdpdGhFcnJvciA9IGlzQ2kgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiXG5cbmNvbnN0IGV4aXQgPSAoKSA9PiBwcm9jZXNzLmV4aXQoc2hvdWxkRXhpdFBvc3RpbnN0YWxsV2l0aEVycm9yID8gMSA6IDApXG5cbmZ1bmN0aW9uIGZpbmRQYXRjaEZpbGVzKHBhdGNoZXNEaXJlY3Rvcnk6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgaWYgKCFleGlzdHNTeW5jKHBhdGNoZXNEaXJlY3RvcnkpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gZ2V0UGF0Y2hGaWxlcyhwYXRjaGVzRGlyZWN0b3J5KSBhcyBzdHJpbmdbXVxufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsZWRQYWNrYWdlVmVyc2lvbih7XG4gIGFwcFBhdGgsXG4gIHBhdGgsXG4gIHBhdGhTcGVjaWZpZXIsXG59OiB7XG4gIGFwcFBhdGg6IHN0cmluZ1xuICBwYXRoOiBzdHJpbmdcbiAgcGF0aFNwZWNpZmllcjogc3RyaW5nXG59KTogc3RyaW5nIHtcbiAgY29uc3QgcGFja2FnZURpciA9IGpvaW4oYXBwUGF0aCwgcGF0aClcbiAgaWYgKCFleGlzdHNTeW5jKHBhY2thZ2VEaXIpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGAke2NoYWxrLnJlZChcIkVycm9yOlwiKX0gUGF0Y2ggZmlsZSBmb3VuZCBmb3IgcGFja2FnZSAke3Bvc2l4LmJhc2VuYW1lKFxuICAgICAgICBwYXRoU3BlY2lmaWVyLFxuICAgICAgKX1gICsgYCB3aGljaCBpcyBub3QgcHJlc2VudCBhdCAke3JlbGF0aXZlKFwiLlwiLCBwYWNrYWdlRGlyKX1gLFxuICAgIClcblxuICAgIGV4aXQoKVxuICB9XG5cbiAgY29uc3QgeyB2ZXJzaW9uIH0gPSByZXF1aXJlKGpvaW4ocGFja2FnZURpciwgXCJwYWNrYWdlLmpzb25cIikpXG4gIC8vIG5vcm1hbGl6ZSB2ZXJzaW9uIGZvciBgbnBtIGNpYFxuICBjb25zdCByZXN1bHQgPSBzZW12ZXIudmFsaWQodmVyc2lvbilcbiAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgJHtjaGFsay5yZWQoXG4gICAgICAgIFwiRXJyb3I6XCIsXG4gICAgICApfSBWZXJzaW9uIHN0cmluZyAnJHt2ZXJzaW9ufScgY2Fubm90IGJlIHBhcnNlZCBmcm9tICR7am9pbihcbiAgICAgICAgcGFja2FnZURpcixcbiAgICAgICAgXCJwYWNrYWdlLmpzb25cIixcbiAgICAgICl9YCxcbiAgICApXG5cbiAgICBleGl0KClcbiAgfVxuXG4gIHJldHVybiByZXN1bHQgYXMgc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoZXNGb3JBcHAoe1xuICBhcHBQYXRoLFxuICByZXZlcnNlLFxuICBwYXRjaERpcixcbn06IHtcbiAgYXBwUGF0aDogc3RyaW5nXG4gIHJldmVyc2U6IGJvb2xlYW5cbiAgcGF0Y2hEaXI6IHN0cmluZ1xufSk6IHZvaWQge1xuICBjb25zdCBwYXRjaGVzRGlyZWN0b3J5ID0gam9pbihhcHBQYXRoLCBwYXRjaERpcilcbiAgY29uc3QgZmlsZXMgPSBmaW5kUGF0Y2hGaWxlcyhwYXRjaGVzRGlyZWN0b3J5KVxuXG4gIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChcIk5vIHBhdGNoIGZpbGVzIGZvdW5kXCIpKVxuICAgIHJldHVyblxuICB9XG5cbiAgZmlsZXMuZm9yRWFjaChmaWxlbmFtZSA9PiB7XG4gICAgY29uc3QgcGFja2FnZURldGFpbHMgPSBnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lKGZpbGVuYW1lKVxuXG4gICAgaWYgKCFwYWNrYWdlRGV0YWlscykge1xuICAgICAgY29uc29sZS53YXJuKGBVbnJlY29nbml6ZWQgcGF0Y2ggZmlsZSBpbiBwYXRjaGVzIGRpcmVjdG9yeSAke2ZpbGVuYW1lfWApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB7IG5hbWUsIHZlcnNpb24sIHBhdGgsIHBhdGhTcGVjaWZpZXIgfSA9IHBhY2thZ2VEZXRhaWxzXG5cbiAgICBjb25zdCBpbnN0YWxsZWRQYWNrYWdlVmVyc2lvbiA9IGdldEluc3RhbGxlZFBhY2thZ2VWZXJzaW9uKHtcbiAgICAgIGFwcFBhdGgsXG4gICAgICBwYXRoLFxuICAgICAgcGF0aFNwZWNpZmllcixcbiAgICB9KVxuXG4gICAgaWYgKFxuICAgICAgYXBwbHlQYXRjaCh7XG4gICAgICAgIHBhdGNoRmlsZVBhdGg6IHJlc29sdmUocGF0Y2hlc0RpcmVjdG9yeSwgZmlsZW5hbWUpIGFzIHN0cmluZyxcbiAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgcGFja2FnZURldGFpbHMsXG4gICAgICAgIHBhdGNoRGlyLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIC8vIHlheSBwYXRjaCB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHlcbiAgICAgIC8vIHByaW50IHdhcm5pbmcgaWYgdmVyc2lvbiBtaXNtYXRjaFxuICAgICAgaWYgKGluc3RhbGxlZFBhY2thZ2VWZXJzaW9uICE9PSB2ZXJzaW9uKSB7XG4gICAgICAgIHByaW50VmVyc2lvbk1pc21hdGNoV2FybmluZyh7XG4gICAgICAgICAgcGFja2FnZU5hbWU6IG5hbWUsXG4gICAgICAgICAgYWN0dWFsVmVyc2lvbjogaW5zdGFsbGVkUGFja2FnZVZlcnNpb24sXG4gICAgICAgICAgb3JpZ2luYWxWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgIHBhdGhTcGVjaWZpZXIsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAke2NoYWxrLmJvbGQocGF0aFNwZWNpZmllcil9QCR7dmVyc2lvbn0gJHtjaGFsay5ncmVlbihcIuKclFwiKX1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbXBsZXRlbHkgZmFpbGVkIHRvIGFwcGx5IHBhdGNoXG4gICAgICAvLyBUT0RPOiBwcm9wYWdhdGUgdXNlZnVsIGVycm9yIG1lc3NhZ2VzIGZyb20gcGF0Y2ggYXBwbGljYXRpb25cbiAgICAgIGlmIChpbnN0YWxsZWRQYWNrYWdlVmVyc2lvbiA9PT0gdmVyc2lvbikge1xuICAgICAgICBwcmludEJyb2tlblBhdGNoRmlsZUVycm9yKHtcbiAgICAgICAgICBwYWNrYWdlTmFtZTogbmFtZSxcbiAgICAgICAgICBwYXRjaEZpbGVOYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgICBwYXRoU3BlY2lmaWVyLFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmludFBhdGNoQXBwbGljdGlvbkZhaWx1cmVFcnJvcih7XG4gICAgICAgICAgcGFja2FnZU5hbWU6IG5hbWUsXG4gICAgICAgICAgYWN0dWFsVmVyc2lvbjogaW5zdGFsbGVkUGFja2FnZVZlcnNpb24sXG4gICAgICAgICAgb3JpZ2luYWxWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgIHBhdGNoRmlsZU5hbWU6IGZpbGVuYW1lLFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgcGF0aFNwZWNpZmllcixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZXhpdCgpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQYXRjaCh7XG4gIHBhdGNoRmlsZVBhdGgsXG4gIHJldmVyc2UsXG4gIHBhY2thZ2VEZXRhaWxzLFxuICBwYXRjaERpcixcbn06IHtcbiAgcGF0Y2hGaWxlUGF0aDogc3RyaW5nXG4gIHJldmVyc2U6IGJvb2xlYW5cbiAgcGFja2FnZURldGFpbHM6IFBhY2thZ2VEZXRhaWxzXG4gIHBhdGNoRGlyOiBzdHJpbmdcbn0pOiBib29sZWFuIHtcbiAgY29uc3QgcGF0Y2ggPSByZWFkUGF0Y2goeyBwYXRjaEZpbGVQYXRoLCBwYWNrYWdlRGV0YWlscywgcGF0Y2hEaXIgfSlcbiAgdHJ5IHtcbiAgICBleGVjdXRlRWZmZWN0cyhyZXZlcnNlID8gcmV2ZXJzZVBhdGNoKHBhdGNoKSA6IHBhdGNoLCB7IGRyeVJ1bjogZmFsc2UgfSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRlRWZmZWN0cyhyZXZlcnNlID8gcGF0Y2ggOiByZXZlcnNlUGF0Y2gocGF0Y2gpLCB7IGRyeVJ1bjogdHJ1ZSB9KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHByaW50VmVyc2lvbk1pc21hdGNoV2FybmluZyh7XG4gIHBhY2thZ2VOYW1lLFxuICBhY3R1YWxWZXJzaW9uLFxuICBvcmlnaW5hbFZlcnNpb24sXG4gIHBhdGhTcGVjaWZpZXIsXG4gIHBhdGgsXG59OiB7XG4gIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgYWN0dWFsVmVyc2lvbjogc3RyaW5nXG4gIG9yaWdpbmFsVmVyc2lvbjogc3RyaW5nXG4gIHBhdGhTcGVjaWZpZXI6IHN0cmluZ1xuICBwYXRoOiBzdHJpbmdcbn0pIHtcbiAgY29uc29sZS53YXJuKGBcbiR7Y2hhbGsucmVkKFwiV2FybmluZzpcIil9IHBhdGNoLXBhY2thZ2UgZGV0ZWN0ZWQgYSBwYXRjaCBmaWxlIHZlcnNpb24gbWlzbWF0Y2hcblxuICBEb24ndCB3b3JyeSEgVGhpcyBpcyBwcm9iYWJseSBmaW5lLiBUaGUgcGF0Y2ggd2FzIHN0aWxsIGFwcGxpZWRcbiAgc3VjY2Vzc2Z1bGx5LiBIZXJlJ3MgdGhlIGRlZXRzOlxuXG4gIFBhdGNoIGZpbGUgY3JlYXRlZCBmb3JcblxuICAgICR7cGFja2FnZU5hbWV9QCR7Y2hhbGsuYm9sZChvcmlnaW5hbFZlcnNpb24pfVxuXG4gIGFwcGxpZWQgdG9cblxuICAgICR7cGFja2FnZU5hbWV9QCR7Y2hhbGsuYm9sZChhY3R1YWxWZXJzaW9uKX1cbiAgXG4gIEF0IHBhdGhcbiAgXG4gICAgJHtwYXRofVxuXG4gIFRoaXMgd2FybmluZyBpcyBqdXN0IHRvIGdpdmUgeW91IGEgaGVhZHMtdXAuIFRoZXJlIGlzIGEgc21hbGwgY2hhbmNlIG9mXG4gIGJyZWFrYWdlIGV2ZW4gdGhvdWdoIHRoZSBwYXRjaCB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuIE1ha2Ugc3VyZSB0aGUgcGFja2FnZVxuICBzdGlsbCBiZWhhdmVzIGxpa2UgeW91IGV4cGVjdCAoeW91IHdyb3RlIHRlc3RzLCByaWdodD8pIGFuZCB0aGVuIHJ1blxuXG4gICAgJHtjaGFsay5ib2xkKGBwYXRjaC1wYWNrYWdlICR7cGF0aFNwZWNpZmllcn1gKX1cblxuICB0byB1cGRhdGUgdGhlIHZlcnNpb24gaW4gdGhlIHBhdGNoIGZpbGUgbmFtZSBhbmQgbWFrZSB0aGlzIHdhcm5pbmcgZ28gYXdheS5cbmApXG59XG5cbmZ1bmN0aW9uIHByaW50QnJva2VuUGF0Y2hGaWxlRXJyb3Ioe1xuICBwYWNrYWdlTmFtZSxcbiAgcGF0Y2hGaWxlTmFtZSxcbiAgcGF0aCxcbiAgcGF0aFNwZWNpZmllcixcbn06IHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZ1xuICBwYXRjaEZpbGVOYW1lOiBzdHJpbmdcbiAgcGF0aDogc3RyaW5nXG4gIHBhdGhTcGVjaWZpZXI6IHN0cmluZ1xufSkge1xuICBjb25zb2xlLmVycm9yKGBcbiR7Y2hhbGsucmVkLmJvbGQoXCIqKkVSUk9SKipcIil9ICR7Y2hhbGsucmVkKFxuICAgIGBGYWlsZWQgdG8gYXBwbHkgcGF0Y2ggZm9yIHBhY2thZ2UgJHtjaGFsay5ib2xkKHBhY2thZ2VOYW1lKX0gYXQgcGF0aGAsXG4gICl9XG4gIFxuICAgICR7cGF0aH1cblxuICBUaGlzIGVycm9yIHdhcyBjYXVzZWQgYmVjYXVzZSBwYXRjaC1wYWNrYWdlIGNhbm5vdCBhcHBseSB0aGUgZm9sbG93aW5nIHBhdGNoIGZpbGU6XG5cbiAgICBwYXRjaGVzLyR7cGF0Y2hGaWxlTmFtZX1cblxuICBUcnkgcmVtb3Zpbmcgbm9kZV9tb2R1bGVzIGFuZCB0cnlpbmcgYWdhaW4uIElmIHRoYXQgZG9lc24ndCB3b3JrLCBtYXliZSB0aGVyZSB3YXNcbiAgYW4gYWNjaWRlbnRhbCBjaGFuZ2UgbWFkZSB0byB0aGUgcGF0Y2ggZmlsZT8gVHJ5IHJlY3JlYXRpbmcgaXQgYnkgbWFudWFsbHlcbiAgZWRpdGluZyB0aGUgYXBwcm9wcmlhdGUgZmlsZXMgYW5kIHJ1bm5pbmc6XG4gIFxuICAgIHBhdGNoLXBhY2thZ2UgJHtwYXRoU3BlY2lmaWVyfVxuICBcbiAgSWYgdGhhdCBkb2Vzbid0IHdvcmssIHRoZW4gaXQncyBhIGJ1ZyBpbiBwYXRjaC1wYWNrYWdlLCBzbyBwbGVhc2Ugc3VibWl0IGEgYnVnXG4gIHJlcG9ydC4gVGhhbmtzIVxuXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL2RzMzAwL3BhdGNoLXBhY2thZ2UvaXNzdWVzXG4gICAgXG5gKVxufVxuXG5mdW5jdGlvbiBwcmludFBhdGNoQXBwbGljdGlvbkZhaWx1cmVFcnJvcih7XG4gIHBhY2thZ2VOYW1lLFxuICBhY3R1YWxWZXJzaW9uLFxuICBvcmlnaW5hbFZlcnNpb24sXG4gIHBhdGNoRmlsZU5hbWUsXG4gIHBhdGgsXG4gIHBhdGhTcGVjaWZpZXIsXG59OiB7XG4gIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgYWN0dWFsVmVyc2lvbjogc3RyaW5nXG4gIG9yaWdpbmFsVmVyc2lvbjogc3RyaW5nXG4gIHBhdGNoRmlsZU5hbWU6IHN0cmluZ1xuICBwYXRoOiBzdHJpbmdcbiAgcGF0aFNwZWNpZmllcjogc3RyaW5nXG59KSB7XG4gIGNvbnNvbGUuZXJyb3IoYFxuJHtjaGFsay5yZWQuYm9sZChcIioqRVJST1IqKlwiKX0gJHtjaGFsay5yZWQoXG4gICAgYEZhaWxlZCB0byBhcHBseSBwYXRjaCBmb3IgcGFja2FnZSAke2NoYWxrLmJvbGQocGFja2FnZU5hbWUpfSBhdCBwYXRoYCxcbiAgKX1cbiAgXG4gICAgJHtwYXRofVxuXG4gIFRoaXMgZXJyb3Igd2FzIGNhdXNlZCBiZWNhdXNlICR7Y2hhbGsuYm9sZChwYWNrYWdlTmFtZSl9IGhhcyBjaGFuZ2VkIHNpbmNlIHlvdVxuICBtYWRlIHRoZSBwYXRjaCBmaWxlIGZvciBpdC4gVGhpcyBpbnRyb2R1Y2VkIGNvbmZsaWN0cyB3aXRoIHlvdXIgcGF0Y2gsXG4gIGp1c3QgbGlrZSBhIG1lcmdlIGNvbmZsaWN0IGluIEdpdCB3aGVuIHNlcGFyYXRlIGluY29tcGF0aWJsZSBjaGFuZ2VzIGFyZVxuICBtYWRlIHRvIHRoZSBzYW1lIHBpZWNlIG9mIGNvZGUuXG5cbiAgTWF5YmUgdGhpcyBtZWFucyB5b3VyIHBhdGNoIGZpbGUgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgaW4gd2hpY2ggY2FzZVxuICBob29yYXkhIEp1c3QgZGVsZXRlIGl0IVxuXG4gIE90aGVyd2lzZSwgeW91IG5lZWQgdG8gZ2VuZXJhdGUgYSBuZXcgcGF0Y2ggZmlsZS5cblxuICBUbyBnZW5lcmF0ZSBhIG5ldyBvbmUsIGp1c3QgcmVwZWF0IHRoZSBzdGVwcyB5b3UgbWFkZSB0byBnZW5lcmF0ZSB0aGUgZmlyc3RcbiAgb25lLlxuXG4gIGkuZS4gbWFudWFsbHkgbWFrZSB0aGUgYXBwcm9wcmlhdGUgZmlsZSBjaGFuZ2VzLCB0aGVuIHJ1biBcblxuICAgIHBhdGNoLXBhY2thZ2UgJHtwYXRoU3BlY2lmaWVyfVxuXG4gIEluZm86XG4gICAgUGF0Y2ggZmlsZTogcGF0Y2hlcy8ke3BhdGNoRmlsZU5hbWV9XG4gICAgUGF0Y2ggd2FzIG1hZGUgZm9yIHZlcnNpb246ICR7Y2hhbGsuZ3JlZW4uYm9sZChvcmlnaW5hbFZlcnNpb24pfVxuICAgIEluc3RhbGxlZCB2ZXJzaW9uOiAke2NoYWxrLnJlZC5ib2xkKGFjdHVhbFZlcnNpb24pfVxuYClcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHlQYXRjaGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcGx5UGF0Y2hlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF5QjtBQUN6QixxQ0FBeUM7QUFDekMsdUNBQThDO0FBQzlDLHFDQUFxQztBQUNyQywrQkFBZ0Q7QUFDaEQsNkJBQTRCO0FBQzVCLG1EQUd5QjtBQUN6QiwyQ0FBOEM7QUFDOUMsZ0RBQXdCO0FBQ3hCLGtEQUEyQjtBQUMzQixxQ0FBd0M7QUFDeEMsbUVBQWlFO0FBRWpFLCtDQUErQztBQUMvQyx1REFBdUQ7QUFDdkQsSUFBTSw4QkFBOEIsR0FBRyxlQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFBO0FBRTlFLElBQU0sSUFBSSxHQUFHLGNBQU0sT0FBQSxPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFwRCxDQUFvRCxDQUFBO0FBRXZFLFNBQVMsY0FBYyxDQUFDLGdCQUF3QjtJQUM5QyxJQUFJLENBQUMscUJBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ2pDLE9BQU8sRUFBRSxDQUFBO0tBQ1Y7SUFFRCxPQUFPLHVCQUFhLENBQUMsZ0JBQWdCLENBQWEsQ0FBQTtBQUNwRCxDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxFQVluQztRQVhDLG9CQUFPLEVBQ1AsY0FBSSxFQUNKLGdDQUFhLEVBQ2Isd0JBQVMsRUFDVCxnQ0FBYTtJQVFiLElBQU0sVUFBVSxHQUFHLFdBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdEMsSUFBSSxDQUFDLHFCQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDM0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLElBQUksU0FBUyxFQUFFO1lBQ3RELE9BQU8sSUFBSSxDQUFB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QWEsbVBBTVAsYUFBYSwyS0FPaEMsQ0FBQyxDQUFBO0FBQ0YsQ0FBQztBQUVELFNBQVMsZ0NBQWdDLENBQUMsRUFjekM7UUFiQyw0QkFBVyxFQUNYLGdDQUFhLEVBQ2Isb0NBQWUsRUFDZixnQ0FBYSxFQUNiLGNBQUksRUFDSixnQ0FBYTtJQVNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FDZCxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBSSxlQUFLLENBQUMsR0FBRyxDQUN0Qyx1Q0FBcUMsZUFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBVSxDQUN2RSxrQkFFRyxJQUFJLDRDQUV3QixlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvaUJBZXJDLGFBQWEsNkNBR1AsYUFBYSwwQ0FDTCxlQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUNBQzFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUNyRCxDQUFDLENBQUE7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiXG5pbXBvcnQgeyBnZXRQYXRjaEZpbGVzIH0gZnJvbSBcIi4vcGF0Y2hGc1wiXG5pbXBvcnQgeyBleGVjdXRlRWZmZWN0cyB9IGZyb20gXCIuL3BhdGNoL2FwcGx5XCJcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSwgcmVsYXRpdmUgfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCB7IHBvc2l4IH0gZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZSxcbiAgUGFja2FnZURldGFpbHMsXG59IGZyb20gXCIuL1BhY2thZ2VEZXRhaWxzXCJcbmltcG9ydCB7IHJldmVyc2VQYXRjaCB9IGZyb20gXCIuL3BhdGNoL3JldmVyc2VcIlxuaW1wb3J0IGlzQ2kgZnJvbSBcImlzLWNpXCJcbmltcG9ydCBzZW12ZXIgZnJvbSBcInNlbXZlclwiXG5pbXBvcnQgeyByZWFkUGF0Y2ggfSBmcm9tIFwiLi9wYXRjaC9yZWFkXCJcbmltcG9ydCB7IHBhY2thZ2VJc0RldkRlcGVuZGVuY3kgfSBmcm9tIFwiLi9wYWNrYWdlSXNEZXZEZXBlbmRlbmN5XCJcblxuLy8gZG9uJ3Qgd2FudCB0byBleGl0KDEpIG9uIHBvc3RpbnNhbGwgbG9jYWxseS5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZHMzMDAvcGF0Y2gtcGFja2FnZS9pc3N1ZXMvODZcbmNvbnN0IHNob3VsZEV4aXRQb3N0aW5zdGFsbFdpdGhFcnJvciA9IGlzQ2kgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiXG5cbmNvbnN0IGV4aXQgPSAoKSA9PiBwcm9jZXNzLmV4aXQoc2hvdWxkRXhpdFBvc3RpbnN0YWxsV2l0aEVycm9yID8gMSA6IDApXG5cbmZ1bmN0aW9uIGZpbmRQYXRjaEZpbGVzKHBhdGNoZXNEaXJlY3Rvcnk6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgaWYgKCFleGlzdHNTeW5jKHBhdGNoZXNEaXJlY3RvcnkpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gZ2V0UGF0Y2hGaWxlcyhwYXRjaGVzRGlyZWN0b3J5KSBhcyBzdHJpbmdbXVxufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsZWRQYWNrYWdlVmVyc2lvbih7XG4gIGFwcFBhdGgsXG4gIHBhdGgsXG4gIHBhdGhTcGVjaWZpZXIsXG4gIGlzRGV2T25seSxcbiAgcGF0Y2hGaWxlbmFtZSxcbn06IHtcbiAgYXBwUGF0aDogc3RyaW5nXG4gIHBhdGg6IHN0cmluZ1xuICBwYXRoU3BlY2lmaWVyOiBzdHJpbmdcbiAgaXNEZXZPbmx5OiBib29sZWFuXG4gIHBhdGNoRmlsZW5hbWU6IHN0cmluZ1xufSk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBwYWNrYWdlRGlyID0gam9pbihhcHBQYXRoLCBwYXRoKVxuICBpZiAoIWV4aXN0c1N5bmMocGFja2FnZURpcikpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiICYmIGlzRGV2T25seSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGAke2NoYWxrLnJlZChcIkVycm9yOlwiKX0gUGF0Y2ggZmlsZSBmb3VuZCBmb3IgcGFja2FnZSAke3Bvc2l4LmJhc2VuYW1lKFxuICAgICAgICBwYXRoU3BlY2lmaWVyLFxuICAgICAgKX1gICsgYCB3aGljaCBpcyBub3QgcHJlc2VudCBhdCAke3JlbGF0aXZlKFwiLlwiLCBwYWNrYWdlRGlyKX1gLFxuICAgIClcblxuICAgIGlmICghaXNEZXZPbmx5ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFxuICBJZiB0aGlzIHBhY2thZ2UgaXMgYSBkZXYgZGVwZW5kZW5jeSwgcmVuYW1lIHRoZSBwYXRjaCBmaWxlIHRvXG4gIFxuICAgICR7Y2hhbGsuYm9sZChwYXRjaEZpbGVuYW1lLnJlcGxhY2UoXCIucGF0Y2hcIiwgXCIuZGV2LnBhdGNoXCIpKX1cbmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgZXhpdCgpXG4gIH1cblxuICBjb25zdCB7IHZlcnNpb24gfSA9IHJlcXVpcmUoam9pbihwYWNrYWdlRGlyLCBcInBhY2thZ2UuanNvblwiKSlcbiAgLy8gbm9ybWFsaXplIHZlcnNpb24gZm9yIGBucG0gY2lgXG4gIGNvbnN0IHJlc3VsdCA9IHNlbXZlci52YWxpZCh2ZXJzaW9uKVxuICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGAke2NoYWxrLnJlZChcbiAgICAgICAgXCJFcnJvcjpcIixcbiAgICAgICl9IFZlcnNpb24gc3RyaW5nICcke3ZlcnNpb259JyBjYW5ub3QgYmUgcGFyc2VkIGZyb20gJHtqb2luKFxuICAgICAgICBwYWNrYWdlRGlyLFxuICAgICAgICBcInBhY2thZ2UuanNvblwiLFxuICAgICAgKX1gLFxuICAgIClcblxuICAgIGV4aXQoKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlc0ZvckFwcCh7XG4gIGFwcFBhdGgsXG4gIHJldmVyc2UsXG4gIHBhdGNoRGlyLFxufToge1xuICBhcHBQYXRoOiBzdHJpbmdcbiAgcmV2ZXJzZTogYm9vbGVhblxuICBwYXRjaERpcjogc3RyaW5nXG59KTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoZXNEaXJlY3RvcnkgPSBqb2luKGFwcFBhdGgsIHBhdGNoRGlyKVxuICBjb25zdCBmaWxlcyA9IGZpbmRQYXRjaEZpbGVzKHBhdGNoZXNEaXJlY3RvcnkpXG5cbiAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKFwiTm8gcGF0Y2ggZmlsZXMgZm91bmRcIikpXG4gICAgcmV0dXJuXG4gIH1cblxuICBmaWxlcy5mb3JFYWNoKGZpbGVuYW1lID0+IHtcbiAgICBjb25zdCBwYWNrYWdlRGV0YWlscyA9IGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoZmlsZW5hbWUpXG5cbiAgICBpZiAoIXBhY2thZ2VEZXRhaWxzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFVucmVjb2duaXplZCBwYXRjaCBmaWxlIGluIHBhdGNoZXMgZGlyZWN0b3J5ICR7ZmlsZW5hbWV9YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgcGF0aCxcbiAgICAgIHBhdGhTcGVjaWZpZXIsXG4gICAgICBpc0Rldk9ubHksXG4gICAgICBwYXRjaEZpbGVuYW1lLFxuICAgIH0gPSBwYWNrYWdlRGV0YWlsc1xuXG4gICAgY29uc3QgaW5zdGFsbGVkUGFja2FnZVZlcnNpb24gPSBnZXRJbnN0YWxsZWRQYWNrYWdlVmVyc2lvbih7XG4gICAgICBhcHBQYXRoLFxuICAgICAgcGF0aCxcbiAgICAgIHBhdGhTcGVjaWZpZXIsXG4gICAgICBpc0Rldk9ubHk6XG4gICAgICAgIGlzRGV2T25seSB8fFxuICAgICAgICAvLyBjaGVjayBmb3IgZGlyZWN0LWRlcGVuZGVudHMgaW4gcHJvZFxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiICYmXG4gICAgICAgICAgcGFja2FnZUlzRGV2RGVwZW5kZW5jeSh7IGFwcFBhdGgsIHBhY2thZ2VEZXRhaWxzIH0pKSxcbiAgICAgIHBhdGNoRmlsZW5hbWUsXG4gICAgfSlcbiAgICBpZiAoIWluc3RhbGxlZFBhY2thZ2VWZXJzaW9uKSB7XG4gICAgICAvLyBpdCdzIG9rIHdlJ3JlIGluIHByb2R1Y3Rpb24gbW9kZSBhbmQgdGhpcyBpcyBhIGRldiBvbmx5IHBhY2thZ2VcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgU2tpcHBpbmcgZGV2LW9ubHkgJHtjaGFsay5ib2xkKHBhdGhTcGVjaWZpZXIpfUAke3ZlcnNpb259ICR7Y2hhbGsuYmx1ZShcbiAgICAgICAgICBcIuKclFwiLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBhcHBseVBhdGNoKHtcbiAgICAgICAgcGF0Y2hGaWxlUGF0aDogcmVzb2x2ZShwYXRjaGVzRGlyZWN0b3J5LCBmaWxlbmFtZSkgYXMgc3RyaW5nLFxuICAgICAgICByZXZlcnNlLFxuICAgICAgICBwYWNrYWdlRGV0YWlscyxcbiAgICAgICAgcGF0Y2hEaXIsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgLy8geWF5IHBhdGNoIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseVxuICAgICAgLy8gcHJpbnQgd2FybmluZyBpZiB2ZXJzaW9uIG1pc21hdGNoXG4gICAgICBpZiAoaW5zdGFsbGVkUGFja2FnZVZlcnNpb24gIT09IHZlcnNpb24pIHtcbiAgICAgICAgcHJpbnRWZXJzaW9uTWlzbWF0Y2hXYXJuaW5nKHtcbiAgICAgICAgICBwYWNrYWdlTmFtZTogbmFtZSxcbiAgICAgICAgICBhY3R1YWxWZXJzaW9uOiBpbnN0YWxsZWRQYWNrYWdlVmVyc2lvbixcbiAgICAgICAgICBvcmlnaW5hbFZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgcGF0aFNwZWNpZmllcixcbiAgICAgICAgICBwYXRoLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYCR7Y2hhbGsuYm9sZChwYXRoU3BlY2lmaWVyKX1AJHt2ZXJzaW9ufSAke2NoYWxrLmdyZWVuKFwi4pyUXCIpfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29tcGxldGVseSBmYWlsZWQgdG8gYXBwbHkgcGF0Y2hcbiAgICAgIC8vIFRPRE86IHByb3BhZ2F0ZSB1c2VmdWwgZXJyb3IgbWVzc2FnZXMgZnJvbSBwYXRjaCBhcHBsaWNhdGlvblxuICAgICAgaWYgKGluc3RhbGxlZFBhY2thZ2VWZXJzaW9uID09PSB2ZXJzaW9uKSB7XG4gICAgICAgIHByaW50QnJva2VuUGF0Y2hGaWxlRXJyb3Ioe1xuICAgICAgICAgIHBhY2thZ2VOYW1lOiBuYW1lLFxuICAgICAgICAgIHBhdGNoRmlsZU5hbWU6IGZpbGVuYW1lLFxuICAgICAgICAgIHBhdGhTcGVjaWZpZXIsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByaW50UGF0Y2hBcHBsaWN0aW9uRmFpbHVyZUVycm9yKHtcbiAgICAgICAgICBwYWNrYWdlTmFtZTogbmFtZSxcbiAgICAgICAgICBhY3R1YWxWZXJzaW9uOiBpbnN0YWxsZWRQYWNrYWdlVmVyc2lvbixcbiAgICAgICAgICBvcmlnaW5hbFZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgcGF0Y2hGaWxlTmFtZTogZmlsZW5hbWUsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwYXRoU3BlY2lmaWVyLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBleGl0KClcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHtcbiAgcGF0Y2hGaWxlUGF0aCxcbiAgcmV2ZXJzZSxcbiAgcGFja2FnZURldGFpbHMsXG4gIHBhdGNoRGlyLFxufToge1xuICBwYXRjaEZpbGVQYXRoOiBzdHJpbmdcbiAgcmV2ZXJzZTogYm9vbGVhblxuICBwYWNrYWdlRGV0YWlsczogUGFja2FnZURldGFpbHNcbiAgcGF0Y2hEaXI6IHN0cmluZ1xufSk6IGJvb2xlYW4ge1xuICBjb25zdCBwYXRjaCA9IHJlYWRQYXRjaCh7IHBhdGNoRmlsZVBhdGgsIHBhY2thZ2VEZXRhaWxzLCBwYXRjaERpciB9KVxuICB0cnkge1xuICAgIGV4ZWN1dGVFZmZlY3RzKHJldmVyc2UgPyByZXZlcnNlUGF0Y2gocGF0Y2gpIDogcGF0Y2gsIHsgZHJ5UnVuOiBmYWxzZSB9KVxuICB9IGNhdGNoIChlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dGVFZmZlY3RzKHJldmVyc2UgPyBwYXRjaCA6IHJldmVyc2VQYXRjaChwYXRjaCksIHsgZHJ5UnVuOiB0cnVlIH0pXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gcHJpbnRWZXJzaW9uTWlzbWF0Y2hXYXJuaW5nKHtcbiAgcGFja2FnZU5hbWUsXG4gIGFjdHVhbFZlcnNpb24sXG4gIG9yaWdpbmFsVmVyc2lvbixcbiAgcGF0aFNwZWNpZmllcixcbiAgcGF0aCxcbn06IHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZ1xuICBhY3R1YWxWZXJzaW9uOiBzdHJpbmdcbiAgb3JpZ2luYWxWZXJzaW9uOiBzdHJpbmdcbiAgcGF0aFNwZWNpZmllcjogc3RyaW5nXG4gIHBhdGg6IHN0cmluZ1xufSkge1xuICBjb25zb2xlLndhcm4oYFxuJHtjaGFsay5yZWQoXCJXYXJuaW5nOlwiKX0gcGF0Y2gtcGFja2FnZSBkZXRlY3RlZCBhIHBhdGNoIGZpbGUgdmVyc2lvbiBtaXNtYXRjaFxuXG4gIERvbid0IHdvcnJ5ISBUaGlzIGlzIHByb2JhYmx5IGZpbmUuIFRoZSBwYXRjaCB3YXMgc3RpbGwgYXBwbGllZFxuICBzdWNjZXNzZnVsbHkuIEhlcmUncyB0aGUgZGVldHM6XG5cbiAgUGF0Y2ggZmlsZSBjcmVhdGVkIGZvclxuXG4gICAgJHtwYWNrYWdlTmFtZX1AJHtjaGFsay5ib2xkKG9yaWdpbmFsVmVyc2lvbil9XG5cbiAgYXBwbGllZCB0b1xuXG4gICAgJHtwYWNrYWdlTmFtZX1AJHtjaGFsay5ib2xkKGFjdHVhbFZlcnNpb24pfVxuICBcbiAgQXQgcGF0aFxuICBcbiAgICAke3BhdGh9XG5cbiAgVGhpcyB3YXJuaW5nIGlzIGp1c3QgdG8gZ2l2ZSB5b3UgYSBoZWFkcy11cC4gVGhlcmUgaXMgYSBzbWFsbCBjaGFuY2Ugb2ZcbiAgYnJlYWthZ2UgZXZlbiB0aG91Z2ggdGhlIHBhdGNoIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseS4gTWFrZSBzdXJlIHRoZSBwYWNrYWdlXG4gIHN0aWxsIGJlaGF2ZXMgbGlrZSB5b3UgZXhwZWN0ICh5b3Ugd3JvdGUgdGVzdHMsIHJpZ2h0PykgYW5kIHRoZW4gcnVuXG5cbiAgICAke2NoYWxrLmJvbGQoYHBhdGNoLXBhY2thZ2UgJHtwYXRoU3BlY2lmaWVyfWApfVxuXG4gIHRvIHVwZGF0ZSB0aGUgdmVyc2lvbiBpbiB0aGUgcGF0Y2ggZmlsZSBuYW1lIGFuZCBtYWtlIHRoaXMgd2FybmluZyBnbyBhd2F5LlxuYClcbn1cblxuZnVuY3Rpb24gcHJpbnRCcm9rZW5QYXRjaEZpbGVFcnJvcih7XG4gIHBhY2thZ2VOYW1lLFxuICBwYXRjaEZpbGVOYW1lLFxuICBwYXRoLFxuICBwYXRoU3BlY2lmaWVyLFxufToge1xuICBwYWNrYWdlTmFtZTogc3RyaW5nXG4gIHBhdGNoRmlsZU5hbWU6IHN0cmluZ1xuICBwYXRoOiBzdHJpbmdcbiAgcGF0aFNwZWNpZmllcjogc3RyaW5nXG59KSB7XG4gIGNvbnNvbGUuZXJyb3IoYFxuJHtjaGFsay5yZWQuYm9sZChcIioqRVJST1IqKlwiKX0gJHtjaGFsay5yZWQoXG4gICAgYEZhaWxlZCB0byBhcHBseSBwYXRjaCBmb3IgcGFja2FnZSAke2NoYWxrLmJvbGQocGFja2FnZU5hbWUpfSBhdCBwYXRoYCxcbiAgKX1cbiAgXG4gICAgJHtwYXRofVxuXG4gIFRoaXMgZXJyb3Igd2FzIGNhdXNlZCBiZWNhdXNlIHBhdGNoLXBhY2thZ2UgY2Fubm90IGFwcGx5IHRoZSBmb2xsb3dpbmcgcGF0Y2ggZmlsZTpcblxuICAgIHBhdGNoZXMvJHtwYXRjaEZpbGVOYW1lfVxuXG4gIFRyeSByZW1vdmluZyBub2RlX21vZHVsZXMgYW5kIHRyeWluZyBhZ2Fpbi4gSWYgdGhhdCBkb2Vzbid0IHdvcmssIG1heWJlIHRoZXJlIHdhc1xuICBhbiBhY2NpZGVudGFsIGNoYW5nZSBtYWRlIHRvIHRoZSBwYXRjaCBmaWxlPyBUcnkgcmVjcmVhdGluZyBpdCBieSBtYW51YWxseVxuICBlZGl0aW5nIHRoZSBhcHByb3ByaWF0ZSBmaWxlcyBhbmQgcnVubmluZzpcbiAgXG4gICAgcGF0Y2gtcGFja2FnZSAke3BhdGhTcGVjaWZpZXJ9XG4gIFxuICBJZiB0aGF0IGRvZXNuJ3Qgd29yaywgdGhlbiBpdCdzIGEgYnVnIGluIHBhdGNoLXBhY2thZ2UsIHNvIHBsZWFzZSBzdWJtaXQgYSBidWdcbiAgcmVwb3J0LiBUaGFua3MhXG5cbiAgICBodHRwczovL2dpdGh1Yi5jb20vZHMzMDAvcGF0Y2gtcGFja2FnZS9pc3N1ZXNcbiAgICBcbmApXG59XG5cbmZ1bmN0aW9uIHByaW50UGF0Y2hBcHBsaWN0aW9uRmFpbHVyZUVycm9yKHtcbiAgcGFja2FnZU5hbWUsXG4gIGFjdHVhbFZlcnNpb24sXG4gIG9yaWdpbmFsVmVyc2lvbixcbiAgcGF0Y2hGaWxlTmFtZSxcbiAgcGF0aCxcbiAgcGF0aFNwZWNpZmllcixcbn06IHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZ1xuICBhY3R1YWxWZXJzaW9uOiBzdHJpbmdcbiAgb3JpZ2luYWxWZXJzaW9uOiBzdHJpbmdcbiAgcGF0Y2hGaWxlTmFtZTogc3RyaW5nXG4gIHBhdGg6IHN0cmluZ1xuICBwYXRoU3BlY2lmaWVyOiBzdHJpbmdcbn0pIHtcbiAgY29uc29sZS5lcnJvcihgXG4ke2NoYWxrLnJlZC5ib2xkKFwiKipFUlJPUioqXCIpfSAke2NoYWxrLnJlZChcbiAgICBgRmFpbGVkIHRvIGFwcGx5IHBhdGNoIGZvciBwYWNrYWdlICR7Y2hhbGsuYm9sZChwYWNrYWdlTmFtZSl9IGF0IHBhdGhgLFxuICApfVxuICBcbiAgICAke3BhdGh9XG5cbiAgVGhpcyBlcnJvciB3YXMgY2F1c2VkIGJlY2F1c2UgJHtjaGFsay5ib2xkKHBhY2thZ2VOYW1lKX0gaGFzIGNoYW5nZWQgc2luY2UgeW91XG4gIG1hZGUgdGhlIHBhdGNoIGZpbGUgZm9yIGl0LiBUaGlzIGludHJvZHVjZWQgY29uZmxpY3RzIHdpdGggeW91ciBwYXRjaCxcbiAganVzdCBsaWtlIGEgbWVyZ2UgY29uZmxpY3QgaW4gR2l0IHdoZW4gc2VwYXJhdGUgaW5jb21wYXRpYmxlIGNoYW5nZXMgYXJlXG4gIG1hZGUgdG8gdGhlIHNhbWUgcGllY2Ugb2YgY29kZS5cblxuICBNYXliZSB0aGlzIG1lYW5zIHlvdXIgcGF0Y2ggZmlsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCBpbiB3aGljaCBjYXNlXG4gIGhvb3JheSEgSnVzdCBkZWxldGUgaXQhXG5cbiAgT3RoZXJ3aXNlLCB5b3UgbmVlZCB0byBnZW5lcmF0ZSBhIG5ldyBwYXRjaCBmaWxlLlxuXG4gIFRvIGdlbmVyYXRlIGEgbmV3IG9uZSwganVzdCByZXBlYXQgdGhlIHN0ZXBzIHlvdSBtYWRlIHRvIGdlbmVyYXRlIHRoZSBmaXJzdFxuICBvbmUuXG5cbiAgaS5lLiBtYW51YWxseSBtYWtlIHRoZSBhcHByb3ByaWF0ZSBmaWxlIGNoYW5nZXMsIHRoZW4gcnVuIFxuXG4gICAgcGF0Y2gtcGFja2FnZSAke3BhdGhTcGVjaWZpZXJ9XG5cbiAgSW5mbzpcbiAgICBQYXRjaCBmaWxlOiBwYXRjaGVzLyR7cGF0Y2hGaWxlTmFtZX1cbiAgICBQYXRjaCB3YXMgbWFkZSBmb3IgdmVyc2lvbjogJHtjaGFsay5ncmVlbi5ib2xkKG9yaWdpbmFsVmVyc2lvbil9XG4gICAgSW5zdGFsbGVkIHZlcnNpb246ICR7Y2hhbGsucmVkLmJvbGQoYWN0dWFsVmVyc2lvbil9XG5gKVxufVxuIl19

@@ -28,3 +28,3 @@ "use strict";

function getPackageDetailsFromPatchFilename(patchFilename) {
var legacyMatch = patchFilename.match(/^([^+=]+?)(:|\+)(\d+\.\d+\.\d+.*)\.patch$/);
var legacyMatch = patchFilename.match(/^([^+=]+?)(:|\+)(\d+\.\d+\.\d+.*)(\.dev)?\.patch$/);
if (legacyMatch) {

@@ -42,6 +42,7 @@ var name = legacyMatch[1];

patchFilename: patchFilename,
isDevOnly: patchFilename.endsWith(".dev.patch"),
};
}
var parts = patchFilename
.replace(/\.patch$/, "")
.replace(/(\.dev)?\.patch$/, "")
.split("++")

@@ -78,2 +79,3 @@ .map(parseNameAndVersion)

}),
isDevOnly: patchFilename.endsWith(".dev.patch"),
};

@@ -114,2 +116,2 @@ }

exports.getPatchDetailsFromCliString = getPatchDetailsFromCliString;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZURldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGFja2FnZURldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBNkI7QUFnQjdCLFNBQVMsbUJBQW1CLENBQzFCLENBQVM7SUFLVCxJQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUNwQixLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ04sT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUMxQjtRQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDQyxJQUFBLHNCQUFXLEVBQUUsd0JBQWEsQ0FBUztZQUMxQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQy9CLE9BQU87b0JBQ0wsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE9BQU8sRUFBRSxhQUFhO2lCQUN2QixDQUFBO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFLLFdBQVcsU0FBSSxhQUFlLEVBQUUsQ0FBQTtTQUNuRDtRQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDQyxJQUFBLGdCQUFLLEVBQUUsZUFBSSxFQUFFLGtCQUFPLENBQVM7WUFDcEMsT0FBTyxFQUFFLElBQUksRUFBSyxLQUFLLFNBQUksSUFBTSxFQUFFLE9BQU8sU0FBQSxFQUFFLENBQUE7U0FDN0M7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQWdCLGtDQUFrQyxDQUNoRCxhQUFxQjtJQUVyQixJQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUNyQywyQ0FBMkMsQ0FDNUMsQ0FBQTtJQUVELElBQUksV0FBVyxFQUFFO1FBQ2YsSUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNC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Q0FBQyxDQUFDLENBQUE7YUFDNUI7U0FDRjtLQUNGO0lBRUQsSUFBTSxJQUFJLEdBQUcsV0FBSSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtJQUV0RSxPQUFPO1FBQ0wsWUFBWSxjQUFBO1FBQ1osSUFBSSxNQUFBO1FBQ0osSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMzQywwQkFBMEIsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyRCxRQUFRLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ2pDLGFBQWEsRUFBRSxTQUFTO0tBQ3pCLENBQUE7QUFDSCxDQUFDO0FBbkNELG9FQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi9wYXRoXCJcblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlRGV0YWlscyB7XG4gIGh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyOiBzdHJpbmdcbiAgcGF0aFNwZWNpZmllcjogc3RyaW5nXG4gIHBhdGg6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgaXNOZXN0ZWQ6IGJvb2xlYW5cbiAgcGFja2FnZU5hbWVzOiBzdHJpbmdbXVxufVxuXG5pbnRlcmZhY2UgUGF0Y2hlZFBhY2thZ2VEZXRhaWxzIGV4dGVuZHMgUGFja2FnZURldGFpbHMge1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgcGF0Y2hGaWxlbmFtZTogc3RyaW5nXG59XG5cbmZ1bmN0aW9uIHBhcnNlTmFtZUFuZFZlcnNpb24oXG4gIHM6IHN0cmluZyxcbik6IHtcbiAgbmFtZTogc3RyaW5nXG4gIHZlcnNpb24/OiBzdHJpbmdcbn0gfCBudWxsIHtcbiAgY29uc3QgcGFydHMgPSBzLnNwbGl0KFwiK1wiKVxuICBzd2l0Y2ggKHBhcnRzLmxlbmd0aCkge1xuICAgIGNhc2UgMToge1xuICAgICAgcmV0dXJuIHsgbmFtZTogcGFydHNbMF0gfVxuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIGNvbnN0IFtuYW1lT3JTY29wZSwgdmVyc2lvbk9yTmFtZV0gPSBwYXJ0c1xuICAgICAgaWYgKHZlcnNpb25Pck5hbWUubWF0Y2goL15cXGQrLykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBuYW1lT3JTY29wZSxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uT3JOYW1lLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBuYW1lOiBgJHtuYW1lT3JTY29wZX0vJHt2ZXJzaW9uT3JOYW1lfWAgfVxuICAgIH1cbiAgICBjYXNlIDM6IHtcbiAgICAgIGNvbnN0IFtzY29wZSwgbmFtZSwgdmVyc2lvbl0gPSBwYXJ0c1xuICAgICAgcmV0dXJuIHsgbmFtZTogYCR7c2NvcGV9LyR7bmFtZX1gLCB2ZXJzaW9uIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXG4gIHBhdGNoRmlsZW5hbWU6IHN0cmluZyxcbik6IFBhdGNoZWRQYWNrYWdlRGV0YWlscyB8IG51bGwge1xuICBjb25zdCBsZWdhY3lNYXRjaCA9IHBhdGNoRmlsZW5hbWUubWF0Y2goXG4gICAgL14oW14rPV0rPykoOnxcXCspKFxcZCtcXC5cXGQrXFwuXFxkKy4qKVxcLnBhdGNoJC8sXG4gIClcblxuICBpZiAobGVnYWN5TWF0Y2gpIHtcbiAgICBjb25zdCBuYW1lID0gbGVnYWN5TWF0Y2hbMV1cbiAgICBjb25zdCB2ZXJzaW9uID0gbGVnYWN5TWF0Y2hbM11cblxuICAgIHJldHVybiB7XG4gICAgICBwYWNrYWdlTmFtZXM6IFtuYW1lXSxcbiAgICAgIHBhdGhTcGVjaWZpZXI6IG5hbWUsXG4gICAgICBodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllcjogbmFtZSxcbiAgICAgIHBhdGg6IGpvaW4oXCJub2RlX21vZHVsZXNcIiwgbmFtZSksXG4gICAgICBuYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGlzTmVzdGVkOiBmYWxzZSxcbiAgICAgIHBhdGNoRmlsZW5hbWUsXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGFydHMgPSBwYXRjaEZpbGVuYW1lXG4gICAgLnJlcGxhY2UoL1xcLnBhdGNoJC8sIFwiXCIpXG4gICAgLnNwbGl0KFwiKytcIilcbiAgICAubWFwKHBhcnNlTmFtZUFuZFZlcnNpb24pXG4gICAgLmZpbHRlcigoeCk6IHggaXMgTm9uTnVsbGFibGU8dHlwZW9mIHg+ID0+IHggIT09IG51bGwpXG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdXG5cbiAgaWYgKCFsYXN0UGFydC52ZXJzaW9uKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogbGFzdFBhcnQubmFtZSxcbiAgICB2ZXJzaW9uOiBsYXN0UGFydC52ZXJzaW9uLFxuICAgIHBhdGg6IGpvaW4oXG4gICAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICAgICAgcGFydHMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbihcIi9ub2RlX21vZHVsZXMvXCIpLFxuICAgICksXG4gICAgcGF0Y2hGaWxlbmFtZSxcbiAgICBwYXRoU3BlY2lmaWVyOiBwYXJ0cy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKS5qb2luKFwiL1wiKSxcbiAgICBodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllcjogcGFydHMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbihcIiA9PiBcIiksXG4gICAgaXNOZXN0ZWQ6IHBhcnRzLmxlbmd0aCA+IDEsXG4gICAgcGFja2FnZU5hbWVzOiBwYXJ0cy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0Y2hEZXRhaWxzRnJvbUNsaVN0cmluZyhcbiAgc3BlY2lmaWVyOiBzdHJpbmcsXG4pOiBQYWNrYWdlRGV0YWlscyB8IG51bGwge1xuICBjb25zdCBwYXJ0cyA9IHNwZWNpZmllci5zcGxpdChcIi9cIilcblxuICBjb25zdCBwYWNrYWdlTmFtZXMgPSBbXVxuXG4gIGxldCBzY29wZTogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHBhcnRzW2ldLnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG4gICAgICBpZiAoc2NvcGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHNjb3BlID0gcGFydHNbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNjb3BlKSB7XG4gICAgICAgIHBhY2thZ2VOYW1lcy5wdXNoKGAke3Njb3BlfS8ke3BhcnRzW2ldfWApXG4gICAgICAgIHNjb3BlID0gbnVsbFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFja2FnZU5hbWVzLnB1c2gocGFydHNbaV0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGF0aCA9IGpvaW4oXCJub2RlX21vZHVsZXNcIiwgcGFja2FnZU5hbWVzLmpvaW4oXCIvbm9kZV9tb2R1bGVzL1wiKSlcblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2VOYW1lcyxcbiAgICBwYXRoLFxuICAgIG5hbWU6IHBhY2thZ2VOYW1lc1twYWNrYWdlTmFtZXMubGVuZ3RoIC0gMV0sXG4gICAgaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXI6IHBhY2thZ2VOYW1lcy5qb2luKFwiID0+IFwiKSxcbiAgICBpc05lc3RlZDogcGFja2FnZU5hbWVzLmxlbmd0aCA+IDEsXG4gICAgcGF0aFNwZWNpZmllcjogc3BlY2lmaWVyLFxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZURldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGFja2FnZURldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBNkI7QUFpQjdCLFNBQVMsbUJBQW1CLENBQzFCLENBQVM7SUFLVCxJQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUNwQixLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ04sT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUMxQjtRQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDQyxJQUFBLHNCQUFXLEVBQUUsd0JBQWEsQ0FBUztZQUMxQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQy9CLE9BQU87b0JBQ0wsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE9BQU8sRUFBRSxhQUFhO2lCQUN2QixDQUFBO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFLLFdBQVcsU0FBSSxhQUFlLEVBQUUsQ0FBQTtTQUNuRDtRQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDQyxJQUFBLGdCQUFLLEVBQUUsZUFBSSxFQUFFLGtCQUFPLENBQVM7WUFDcEMsT0FBTyxFQUFFLElBQUksRUFBSyxLQUFLLFNBQUksSUFBTSxFQUFFLE9BQU8sU0FBQSxFQUFFLENBQUE7U0FDN0M7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQWdCLGtDQUFrQyxDQUNoRCxhQUFxQjtJQUVyQixJQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUNyQyxtREFBbUQsQ0FDcEQsQ0FBQTtJQUVELElBQUksV0FBVyxFQUFFO1FBQ2YsSUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNC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Q0FBRyxDQUFDLENBQUE7Z0JBQ3pDLEtBQUssR0FBRyxJQUFJLENBQUE7YUFDYjtpQkFBTTtnQkFDTCxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQzVCO1NBQ0Y7S0FDRjtJQUVELElBQU0sSUFBSSxHQUFHLFdBQUksQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7SUFFdEUsT0FBTztRQUNMLFlBQVksY0FBQTtRQUNaLElBQUksTUFBQTtRQUNKLElBQUksRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDM0MsMEJBQTBCLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckQsUUFBUSxFQUFFLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNqQyxhQUFhLEVBQUUsU0FBUztLQUN6QixDQUFBO0FBQ0gsQ0FBQztBQW5DRCxvRUFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIi4vcGF0aFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZURldGFpbHMge1xuICBodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllcjogc3RyaW5nXG4gIHBhdGhTcGVjaWZpZXI6IHN0cmluZ1xuICBwYXRoOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGlzTmVzdGVkOiBib29sZWFuXG4gIHBhY2thZ2VOYW1lczogc3RyaW5nW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXRjaGVkUGFja2FnZURldGFpbHMgZXh0ZW5kcyBQYWNrYWdlRGV0YWlscyB7XG4gIHZlcnNpb246IHN0cmluZ1xuICBwYXRjaEZpbGVuYW1lOiBzdHJpbmdcbiAgaXNEZXZPbmx5OiBib29sZWFuXG59XG5cbmZ1bmN0aW9uIHBhcnNlTmFtZUFuZFZlcnNpb24oXG4gIHM6IHN0cmluZyxcbik6IHtcbiAgbmFtZTogc3RyaW5nXG4gIHZlcnNpb24/OiBzdHJpbmdcbn0gfCBudWxsIHtcbiAgY29uc3QgcGFydHMgPSBzLnNwbGl0KFwiK1wiKVxuICBzd2l0Y2ggKHBhcnRzLmxlbmd0aCkge1xuICAgIGNhc2UgMToge1xuICAgICAgcmV0dXJuIHsgbmFtZTogcGFydHNbMF0gfVxuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIGNvbnN0IFtuYW1lT3JTY29wZSwgdmVyc2lvbk9yTmFtZV0gPSBwYXJ0c1xuICAgICAgaWYgKHZlcnNpb25Pck5hbWUubWF0Y2goL15cXGQrLykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBuYW1lT3JTY29wZSxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uT3JOYW1lLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBuYW1lOiBgJHtuYW1lT3JTY29wZX0vJHt2ZXJzaW9uT3JOYW1lfWAgfVxuICAgIH1cbiAgICBjYXNlIDM6IHtcbiAgICAgIGNvbnN0IFtzY29wZSwgbmFtZSwgdmVyc2lvbl0gPSBwYXJ0c1xuICAgICAgcmV0dXJuIHsgbmFtZTogYCR7c2NvcGV9LyR7bmFtZX1gLCB2ZXJzaW9uIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXG4gIHBhdGNoRmlsZW5hbWU6IHN0cmluZyxcbik6IFBhdGNoZWRQYWNrYWdlRGV0YWlscyB8IG51bGwge1xuICBjb25zdCBsZWdhY3lNYXRjaCA9IHBhdGNoRmlsZW5hbWUubWF0Y2goXG4gICAgL14oW14rPV0rPykoOnxcXCspKFxcZCtcXC5cXGQrXFwuXFxkKy4qKShcXC5kZXYpP1xcLnBhdGNoJC8sXG4gIClcblxuICBpZiAobGVnYWN5TWF0Y2gpIHtcbiAgICBjb25zdCBuYW1lID0gbGVnYWN5TWF0Y2hbMV1cbiAgICBjb25zdCB2ZXJzaW9uID0gbGVnYWN5TWF0Y2hbM11cblxuICAgIHJldHVybiB7XG4gICAgICBwYWNrYWdlTmFtZXM6IFtuYW1lXSxcbiAgICAgIHBhdGhTcGVjaWZpZXI6IG5hbWUsXG4gICAgICBodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllcjogbmFtZSxcbiAgICAgIHBhdGg6IGpvaW4oXCJub2RlX21vZHVsZXNcIiwgbmFtZSksXG4gICAgICBuYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGlzTmVzdGVkOiBmYWxzZSxcbiAgICAgIHBhdGNoRmlsZW5hbWUsXG4gICAgICBpc0Rldk9ubHk6IHBhdGNoRmlsZW5hbWUuZW5kc1dpdGgoXCIuZGV2LnBhdGNoXCIpLFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gcGF0Y2hGaWxlbmFtZVxuICAgIC5yZXBsYWNlKC8oXFwuZGV2KT9cXC5wYXRjaCQvLCBcIlwiKVxuICAgIC5zcGxpdChcIisrXCIpXG4gICAgLm1hcChwYXJzZU5hbWVBbmRWZXJzaW9uKVxuICAgIC5maWx0ZXIoKHgpOiB4IGlzIE5vbk51bGxhYmxlPHR5cGVvZiB4PiA9PiB4ICE9PSBudWxsKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgbGFzdFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXVxuXG4gIGlmICghbGFzdFBhcnQudmVyc2lvbikge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6IGxhc3RQYXJ0Lm5hbWUsXG4gICAgdmVyc2lvbjogbGFzdFBhcnQudmVyc2lvbixcbiAgICBwYXRoOiBqb2luKFxuICAgICAgXCJub2RlX21vZHVsZXNcIixcbiAgICAgIHBhcnRzLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oXCIvbm9kZV9tb2R1bGVzL1wiKSxcbiAgICApLFxuICAgIHBhdGNoRmlsZW5hbWUsXG4gICAgcGF0aFNwZWNpZmllcjogcGFydHMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbihcIi9cIiksXG4gICAgaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXI6IHBhcnRzLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oXCIgPT4gXCIpLFxuICAgIGlzTmVzdGVkOiBwYXJ0cy5sZW5ndGggPiAxLFxuICAgIHBhY2thZ2VOYW1lczogcGFydHMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSksXG4gICAgaXNEZXZPbmx5OiBwYXRjaEZpbGVuYW1lLmVuZHNXaXRoKFwiLmRldi5wYXRjaFwiKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0Y2hEZXRhaWxzRnJvbUNsaVN0cmluZyhcbiAgc3BlY2lmaWVyOiBzdHJpbmcsXG4pOiBQYWNrYWdlRGV0YWlscyB8IG51bGwge1xuICBjb25zdCBwYXJ0cyA9IHNwZWNpZmllci5zcGxpdChcIi9cIilcblxuICBjb25zdCBwYWNrYWdlTmFtZXMgPSBbXVxuXG4gIGxldCBzY29wZTogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHBhcnRzW2ldLnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG4gICAgICBpZiAoc2NvcGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHNjb3BlID0gcGFydHNbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNjb3BlKSB7XG4gICAgICAgIHBhY2thZ2VOYW1lcy5wdXNoKGAke3Njb3BlfS8ke3BhcnRzW2ldfWApXG4gICAgICAgIHNjb3BlID0gbnVsbFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFja2FnZU5hbWVzLnB1c2gocGFydHNbaV0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGF0aCA9IGpvaW4oXCJub2RlX21vZHVsZXNcIiwgcGFja2FnZU5hbWVzLmpvaW4oXCIvbm9kZV9tb2R1bGVzL1wiKSlcblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2VOYW1lcyxcbiAgICBwYXRoLFxuICAgIG5hbWU6IHBhY2thZ2VOYW1lc1twYWNrYWdlTmFtZXMubGVuZ3RoIC0gMV0sXG4gICAgaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXI6IHBhY2thZ2VOYW1lcy5qb2luKFwiID0+IFwiKSxcbiAgICBpc05lc3RlZDogcGFja2FnZU5hbWVzLmxlbmd0aCA+IDEsXG4gICAgcGF0aFNwZWNpZmllcjogc3BlY2lmaWVyLFxuICB9XG59XG4iXX0=

@@ -6,15 +6,18 @@ "use strict";

it("parses old-style patch filenames", function () {
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types/banana:3.4.2-beta.2.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana\",\n \"isNested\": false,\n \"name\": \"@types/banana\",\n \"packageNames\": Array [\n \"@types/banana\",\n ],\n \"patchFilename\": \"@types/banana:3.4.2-beta.2.patch\",\n \"path\": \"node_modules/@types/banana\",\n \"pathSpecifier\": \"@types/banana\",\n \"version\": \"3.4.2-beta.2\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types/banana:3.4.2-beta.2.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana\",\n \"isDevOnly\": false,\n \"isNested\": false,\n \"name\": \"@types/banana\",\n \"packageNames\": Array [\n \"@types/banana\",\n ],\n \"patchFilename\": \"@types/banana:3.4.2-beta.2.patch\",\n \"path\": \"node_modules/@types/banana\",\n \"pathSpecifier\": \"@types/banana\",\n \"version\": \"3.4.2-beta.2\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana:0.4.2.patch"))
.toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana\",\n \"isNested\": false,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"banana\",\n ],\n \"patchFilename\": \"banana:0.4.2.patch\",\n \"path\": \"node_modules/banana\",\n \"pathSpecifier\": \"banana\",\n \"version\": \"0.4.2\",\n}\n");
.toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana\",\n \"isDevOnly\": false,\n \"isNested\": false,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"banana\",\n ],\n \"patchFilename\": \"banana:0.4.2.patch\",\n \"path\": \"node_modules/banana\",\n \"pathSpecifier\": \"banana\",\n \"version\": \"0.4.2\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana+0.4.2.patch"))
.toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana\",\n \"isNested\": false,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"banana\",\n ],\n \"patchFilename\": \"banana+0.4.2.patch\",\n \"path\": \"node_modules/banana\",\n \"pathSpecifier\": \"banana\",\n \"version\": \"0.4.2\",\n}\n");
.toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana\",\n \"isDevOnly\": false,\n \"isNested\": false,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"banana\",\n ],\n \"patchFilename\": \"banana+0.4.2.patch\",\n \"path\": \"node_modules/banana\",\n \"pathSpecifier\": \"banana\",\n \"version\": \"0.4.2\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana-0.4.2.patch")).toBe(null);
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana-0.4.2.patch")).toBe(null);
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana+0.4.2.dev.patch"))
.toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana\",\n \"isDevOnly\": true,\n \"isNested\": false,\n \"name\": \"banana\",\n \"packageNames\": Array [\n \"banana\",\n ],\n \"patchFilename\": \"banana+0.4.2.dev.patch\",\n \"path\": \"node_modules/banana\",\n \"pathSpecifier\": \"banana\",\n \"version\": \"0.4.2.dev\",\n}\n");
});
it("parses new-style patch filenames", function () {
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("banana++apple+0.4.2.patch"))
.toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana => apple\",\n \"isNested\": true,\n \"name\": \"apple\",\n \"packageNames\": Array [\n \"banana\",\n \"apple\",\n ],\n \"patchFilename\": \"banana++apple+0.4.2.patch\",\n \"path\": \"node_modules/banana/node_modules/apple\",\n \"pathSpecifier\": \"banana/apple\",\n \"version\": \"0.4.2\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana++@types+apple++@mollusc+man+0.4.2-banana-tree.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana => @types/apple => @mollusc/man\",\n \"isNested\": true,\n \"name\": \"@mollusc/man\",\n \"packageNames\": Array [\n \"@types/banana\",\n \"@types/apple\",\n \"@mollusc/man\",\n ],\n \"patchFilename\": \"@types+banana++@types+apple++@mollusc+man+0.4.2-banana-tree.patch\",\n \"path\": \"node_modules/@types/banana/node_modules/@types/apple/node_modules/@mollusc/man\",\n \"pathSpecifier\": \"@types/banana/@types/apple/@mollusc/man\",\n \"version\": \"0.4.2-banana-tree\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana.patch++hello+0.4.2-banana-tree.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana.patch => hello\",\n \"isNested\": true,\n \"name\": \"hello\",\n \"packageNames\": Array [\n \"@types/banana.patch\",\n \"hello\",\n ],\n \"patchFilename\": \"@types+banana.patch++hello+0.4.2-banana-tree.patch\",\n \"path\": \"node_modules/@types/banana.patch/node_modules/hello\",\n \"pathSpecifier\": \"@types/banana.patch/hello\",\n \"version\": \"0.4.2-banana-tree\",\n}\n");
.toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"banana => apple\",\n \"isDevOnly\": false,\n \"isNested\": true,\n \"name\": \"apple\",\n \"packageNames\": Array [\n \"banana\",\n \"apple\",\n ],\n \"patchFilename\": \"banana++apple+0.4.2.patch\",\n \"path\": \"node_modules/banana/node_modules/apple\",\n \"pathSpecifier\": \"banana/apple\",\n \"version\": \"0.4.2\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana++@types+apple++@mollusc+man+0.4.2-banana-tree.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana => @types/apple => @mollusc/man\",\n \"isDevOnly\": false,\n \"isNested\": true,\n \"name\": \"@mollusc/man\",\n \"packageNames\": Array [\n \"@types/banana\",\n \"@types/apple\",\n \"@mollusc/man\",\n ],\n \"patchFilename\": \"@types+banana++@types+apple++@mollusc+man+0.4.2-banana-tree.patch\",\n \"path\": \"node_modules/@types/banana/node_modules/@types/apple/node_modules/@mollusc/man\",\n \"pathSpecifier\": \"@types/banana/@types/apple/@mollusc/man\",\n \"version\": \"0.4.2-banana-tree\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana.patch++hello+0.4.2-banana-tree.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana.patch => hello\",\n \"isDevOnly\": false,\n \"isNested\": true,\n \"name\": \"hello\",\n \"packageNames\": Array [\n \"@types/banana.patch\",\n \"hello\",\n ],\n \"patchFilename\": \"@types+banana.patch++hello+0.4.2-banana-tree.patch\",\n \"path\": \"node_modules/@types/banana.patch/node_modules/hello\",\n \"pathSpecifier\": \"@types/banana.patch/hello\",\n \"version\": \"0.4.2-banana-tree\",\n}\n");
expect(PackageDetails_1.getPackageDetailsFromPatchFilename("@types+banana.patch++hello+0.4.2-banana-tree.dev.patch")).toMatchInlineSnapshot("\nObject {\n \"humanReadablePathSpecifier\": \"@types/banana.patch => hello\",\n \"isDevOnly\": true,\n \"isNested\": true,\n \"name\": \"hello\",\n \"packageNames\": Array [\n \"@types/banana.patch\",\n \"hello\",\n ],\n \"patchFilename\": \"@types+banana.patch++hello+0.4.2-banana-tree.dev.patch\",\n \"path\": \"node_modules/@types/banana.patch/node_modules/hello\",\n \"pathSpecifier\": \"@types/banana.patch/hello\",\n \"version\": \"0.4.2-banana-tree\",\n}\n");
});

@@ -38,2 +41,2 @@ });

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZURldGFpbHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QYWNrYWdlRGV0YWlscy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR3lCO0FBRXpCLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRTtJQUM3QyxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxDQUNKLG1EQUFrQyxDQUFDLGtDQUFrQyxDQUFDLENBQ3ZFLENBQUMscUJBQXFCLENBQUMsOFdBYTNCLENBQUMsQ0FBQTtRQUVFLE1BQU0sQ0FBQyxtREFBa0MsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQzdELHFCQUFxQixDQUFDLHNUQWE1QixDQUFDLENBQUE7UUFFRSxNQUFNLENBQUMsbURBQWtDLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUM3RCxxQkFBcUIsQ0FBQyxzVEFhNUIsQ0FBQyxDQUFBO1FBRUUsTUFBTSxDQUFDLG1EQUFrQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFM0UsTUFBTSxDQUNKLG1EQUFrQyxDQUFDLDJCQUEyQixDQUFDLENBQ2hFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxDQUFDLG1EQUFrQyxDQUFDLDJCQUEyQixDQUFDLENBQUM7YUFDcEUscUJBQXFCLENBQUMsNldBYzVCLENBQUMsQ0FBQTtRQUVFLE1BQU0sQ0FDSixtREFBa0MsQ0FDaEMsbUVBQW1FLENBQ3BFLENBQ0YsQ0FBQyxxQkFBcUIsQ0FBQyw4aUJBZTNCLENBQUMsQ0FBQTtRQUVFLE1BQU0sQ0FDSixtREFBa0MsQ0FDaEMsb0RBQW9ELENBQ3JELENBQ0YsQ0FBQyxxQkFBcUIsQ0FBQyxzY0FjM0IsQ0FBQyxDQUFBO0lBQ0EsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQTtBQUVGLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRTtJQUN2QyxFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDbkMsTUFBTSxDQUFDLDZDQUE0QixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQ3pFLGdSQVdMLENBQ0ksQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLCtCQUErQixFQUFFO1FBQ2xDLE1BQU0sQ0FDSiw2Q0FBNEIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUNyRCxDQUFDLHFCQUFxQixDQUNyQixtVEFXTCxDQUNJLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQkFBK0IsRUFBRTtRQUNsQyxNQUFNLENBQ0osNkNBQTRCLENBQUMscUJBQXFCLENBQUMsQ0FDcEQsQ0FBQyxxQkFBcUIsQ0FDckIsaVVBWUwsQ0FDSSxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsMkNBQTJDLEVBQUU7UUFDOUMsTUFBTSxDQUNKLDZDQUE0QixDQUFDLDZCQUE2QixDQUFDLENBQzVELENBQUMscUJBQXFCLENBQ3JCLDBWQVlMLENBQ0ksQ0FBQTtRQUVELE1BQU0sQ0FDSiw2Q0FBNEIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUNuRSxDQUFDLHFCQUFxQixDQUNyQiw2WEFZTCxDQUNJLENBQUE7UUFFRCxNQUFNLENBQ0osNkNBQTRCLENBQUMsbUNBQW1DLENBQUMsQ0FDbEUsQ0FBQyxxQkFBcUIsQ0FDckIsbVpBYUwsQ0FDSSxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUsXG4gIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcsXG59IGZyb20gXCIuL1BhY2thZ2VEZXRhaWxzXCJcblxuZGVzY3JpYmUoXCJnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lXCIsICgpID0+IHtcbiAgaXQoXCJwYXJzZXMgb2xkLXN0eWxlIHBhdGNoIGZpbGVuYW1lc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcIkB0eXBlcy9iYW5hbmE6My40LjItYmV0YS4yLnBhdGNoXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcIkB0eXBlcy9iYW5hbmFcIixcbiAgXCJwYWNrYWdlTmFtZXNcIjogQXJyYXkgW1xuICAgIFwiQHR5cGVzL2JhbmFuYVwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJAdHlwZXMvYmFuYW5hOjMuNC4yLWJldGEuMi5wYXRjaFwiLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQHR5cGVzL2JhbmFuYVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hXCIsXG4gIFwidmVyc2lvblwiOiBcIjMuNC4yLWJldGEuMlwiLFxufVxuYClcblxuICAgIGV4cGVjdChnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lKFwiYmFuYW5hOjAuNC4yLnBhdGNoXCIpKVxuICAgICAgLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcImJhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJiYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRjaEZpbGVuYW1lXCI6IFwiYmFuYW5hOjAuNC4yLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmErMC40LjIucGF0Y2hcIikpXG4gICAgICAudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJiYW5hbmFcIixcbiAgXCJpc05lc3RlZFwiOiBmYWxzZSxcbiAgXCJuYW1lXCI6IFwiYmFuYW5hXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcImJhbmFuYVwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJiYW5hbmErMC40LjIucGF0Y2hcIixcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL2JhbmFuYVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJiYW5hbmFcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC40LjJcIixcbn1cbmApXG5cbiAgICBleHBlY3QoZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcImJhbmFuYS0wLjQuMi5wYXRjaFwiKSkudG9CZShudWxsKVxuXG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcIkB0eXBlcytiYW5hbmEtMC40LjIucGF0Y2hcIiksXG4gICAgKS50b0JlKG51bGwpXG4gIH0pXG5cbiAgaXQoXCJwYXJzZXMgbmV3LXN0eWxlIHBhdGNoIGZpbGVuYW1lc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmErK2FwcGxlKzAuNC4yLnBhdGNoXCIpKVxuICAgICAgLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hID0+IGFwcGxlXCIsXG4gIFwiaXNOZXN0ZWRcIjogdHJ1ZSxcbiAgXCJuYW1lXCI6IFwiYXBwbGVcIixcbiAgXCJwYWNrYWdlTmFtZXNcIjogQXJyYXkgW1xuICAgIFwiYmFuYW5hXCIsXG4gICAgXCJhcHBsZVwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJiYW5hbmErK2FwcGxlKzAuNC4yLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9iYW5hbmEvbm9kZV9tb2R1bGVzL2FwcGxlXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcImJhbmFuYS9hcHBsZVwiLFxuICBcInZlcnNpb25cIjogXCIwLjQuMlwiLFxufVxuYClcblxuICAgIGV4cGVjdChcbiAgICAgIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXG4gICAgICAgIFwiQHR5cGVzK2JhbmFuYSsrQHR5cGVzK2FwcGxlKytAbW9sbHVzYyttYW4rMC40LjItYmFuYW5hLXRyZWUucGF0Y2hcIixcbiAgICAgICksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcIkB0eXBlcy9iYW5hbmEgPT4gQHR5cGVzL2FwcGxlID0+IEBtb2xsdXNjL21hblwiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcIkBtb2xsdXNjL21hblwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAdHlwZXMvYmFuYW5hXCIsXG4gICAgXCJAdHlwZXMvYXBwbGVcIixcbiAgICBcIkBtb2xsdXNjL21hblwiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJAdHlwZXMrYmFuYW5hKytAdHlwZXMrYXBwbGUrK0Btb2xsdXNjK21hbiswLjQuMi1iYW5hbmEtdHJlZS5wYXRjaFwiLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQHR5cGVzL2JhbmFuYS9ub2RlX21vZHVsZXMvQHR5cGVzL2FwcGxlL25vZGVfbW9kdWxlcy9AbW9sbHVzYy9tYW5cIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiQHR5cGVzL2JhbmFuYS9AdHlwZXMvYXBwbGUvQG1vbGx1c2MvbWFuXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yLWJhbmFuYS10cmVlXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcbiAgICAgICAgXCJAdHlwZXMrYmFuYW5hLnBhdGNoKytoZWxsbyswLjQuMi1iYW5hbmEtdHJlZS5wYXRjaFwiLFxuICAgICAgKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiQHR5cGVzL2JhbmFuYS5wYXRjaCA9PiBoZWxsb1wiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcImhlbGxvXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcIkB0eXBlcy9iYW5hbmEucGF0Y2hcIixcbiAgICBcImhlbGxvXCIsXG4gIF0sXG4gIFwicGF0Y2hGaWxlbmFtZVwiOiBcIkB0eXBlcytiYW5hbmEucGF0Y2grK2hlbGxvKzAuNC4yLWJhbmFuYS10cmVlLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AdHlwZXMvYmFuYW5hLnBhdGNoL25vZGVfbW9kdWxlcy9oZWxsb1wiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hLnBhdGNoL2hlbGxvXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yLWJhbmFuYS10cmVlXCIsXG59XG5gKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nXCIsICgpID0+IHtcbiAgaXQoXCJoYW5kbGVzIGEgbWluaW1hbCBwYWNrYWdlIG5hbWVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwicGF0Y2gtcGFja2FnZVwiKSkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcInBhdGNoLXBhY2thZ2VcIixcbiAgXCJpc05lc3RlZFwiOiBmYWxzZSxcbiAgXCJuYW1lXCI6IFwicGF0Y2gtcGFja2FnZVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJwYXRjaC1wYWNrYWdlXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9wYXRjaC1wYWNrYWdlXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcInBhdGNoLXBhY2thZ2VcIixcbn1cbmAsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBhIHNjb3BlZCBwYWNrYWdlIG5hbWVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICBcImlzTmVzdGVkXCI6IGZhbHNlLFxuICBcIm5hbWVcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICBdLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQGRhdmlkL3BhdGNoLXBhY2thZ2VcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiQGRhdmlkL3BhdGNoLXBhY2thZ2VcIixcbn1cbmAsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBhIG5lc3RlZCBwYWNrYWdlIG5hbWVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJkYXZpZC9wYXRjaC1wYWNrYWdlXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcImRhdmlkID0+IHBhdGNoLXBhY2thZ2VcIixcbiAgXCJpc05lc3RlZFwiOiB0cnVlLFxuICBcIm5hbWVcIjogXCJwYXRjaC1wYWNrYWdlXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcImRhdmlkXCIsXG4gICAgXCJwYXRjaC1wYWNrYWdlXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9kYXZpZC9ub2RlX21vZHVsZXMvcGF0Y2gtcGFja2FnZVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJkYXZpZC9wYXRjaC1wYWNrYWdlXCIsXG59XG5gLFxuICAgIClcbiAgfSlcblxuICBpdChcImhhbmRsZXMgYSBuZXN0ZWQgcGFja2FnZSBuYW1lIHdpdGggc2NvcGVzXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UvYmFuYW5hXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlID0+IGJhbmFuYVwiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcImJhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICAgIFwiYmFuYW5hXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AZGF2aWQvcGF0Y2gtcGFja2FnZS9ub2RlX21vZHVsZXMvYmFuYW5hXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlL2JhbmFuYVwiLFxufVxuYCxcbiAgICApXG5cbiAgICBleHBlY3QoXG4gICAgICBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UvQGRhdmlkL2JhbmFuYVwiKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZSA9PiBAZGF2aWQvYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogdHJ1ZSxcbiAgXCJuYW1lXCI6IFwiQGRhdmlkL2JhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICAgIFwiQGRhdmlkL2JhbmFuYVwiLFxuICBdLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvQGRhdmlkL3BhdGNoLXBhY2thZ2Uvbm9kZV9tb2R1bGVzL0BkYXZpZC9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UvQGRhdmlkL2JhbmFuYVwiLFxufVxuYCxcbiAgICApXG5cbiAgICBleHBlY3QoXG4gICAgICBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nKFwiZGF2aWQvcGF0Y2gtcGFja2FnZS9AZGF2aWQvYmFuYW5hXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcImRhdmlkID0+IHBhdGNoLXBhY2thZ2UgPT4gQGRhdmlkL2JhbmFuYVwiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcIkBkYXZpZC9iYW5hbmFcIixcbiAgXCJwYWNrYWdlTmFtZXNcIjogQXJyYXkgW1xuICAgIFwiZGF2aWRcIixcbiAgICBcInBhdGNoLXBhY2thZ2VcIixcbiAgICBcIkBkYXZpZC9iYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL2RhdmlkL25vZGVfbW9kdWxlcy9wYXRjaC1wYWNrYWdlL25vZGVfbW9kdWxlcy9AZGF2aWQvYmFuYW5hXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcImRhdmlkL3BhdGNoLXBhY2thZ2UvQGRhdmlkL2JhbmFuYVwiLFxufVxuYCxcbiAgICApXG4gIH0pXG59KVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZURldGFpbHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QYWNrYWdlRGV0YWlscy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR3lCO0FBRXpCLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRTtJQUM3QyxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsTUFBTSxDQUNKLG1EQUFrQyxDQUFDLGtDQUFrQyxDQUFDLENBQ3ZFLENBQUMscUJBQXFCLENBQUMsdVlBYzNCLENBQUMsQ0FBQTtRQUVFLE1BQU0sQ0FBQyxtREFBa0MsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQzdELHFCQUFxQixDQUFDLCtVQWM1QixDQUFDLENBQUE7UUFFRSxNQUFNLENBQUMsbURBQWtDLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUM3RCxxQkFBcUIsQ0FBQywrVUFjNUIsQ0FBQyxDQUFBO1FBRUUsTUFBTSxDQUFDLG1EQUFrQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFM0UsTUFBTSxDQUNKLG1EQUFrQyxDQUFDLDJCQUEyQixDQUFDLENBQ2hFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRVosTUFBTSxDQUFDLG1EQUFrQyxDQUFDLHdCQUF3QixDQUFDLENBQUM7YUFDakUscUJBQXFCLENBQUMsc1ZBYzVCLENBQUMsQ0FBQTtJQUNBLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGtDQUFrQyxFQUFFO1FBQ3JDLE1BQU0sQ0FBQyxtREFBa0MsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2FBQ3BFLHFCQUFxQixDQUFDLHNZQWU1QixDQUFDLENBQUE7UUFFRSxNQUFNLENBQ0osbURBQWtDLENBQ2hDLG1FQUFtRSxDQUNwRSxDQUNGLENBQUMscUJBQXFCLENBQUMsdWtCQWdCM0IsQ0FBQyxDQUFBO1FBRUUsTUFBTSxDQUNKLG1EQUFrQyxDQUNoQyxvREFBb0QsQ0FDckQsQ0FDRixDQUFDLHFCQUFxQixDQUFDLCtkQWUzQixDQUFDLENBQUE7UUFFRSxNQUFNLENBQ0osbURBQWtDLENBQ2hDLHdEQUF3RCxDQUN6RCxDQUNGLENBQUMscUJBQXFCLENBQUMsa2VBZTNCLENBQUMsQ0FBQTtJQUNBLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUE7QUFFRixRQUFRLENBQUMsOEJBQThCLEVBQUU7SUFDdkMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFO1FBQ25DLE1BQU0sQ0FBQyw2Q0FBNEIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUN6RSxnUkFXTCxDQUNJLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQkFBK0IsRUFBRTtRQUNsQyxNQUFNLENBQ0osNkNBQTRCLENBQUMsc0JBQXNCLENBQUMsQ0FDckQsQ0FBQyxxQkFBcUIsQ0FDckIsbVRBV0wsQ0FDSSxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsK0JBQStCLEVBQUU7UUFDbEMsTUFBTSxDQUNKLDZDQUE0QixDQUFDLHFCQUFxQixDQUFDLENBQ3BELENBQUMscUJBQXFCLENBQ3JCLGlVQVlMLENBQ0ksQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDJDQUEyQyxFQUFFO1FBQzlDLE1BQU0sQ0FDSiw2Q0FBNEIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUM1RCxDQUFDLHFCQUFxQixDQUNyQiwwVkFZTCxDQUNJLENBQUE7UUFFRCxNQUFNLENBQ0osNkNBQTRCLENBQUMsb0NBQW9DLENBQUMsQ0FDbkUsQ0FBQyxxQkFBcUIsQ0FDckIsNlhBWUwsQ0FDSSxDQUFBO1FBRUQsTUFBTSxDQUNKLDZDQUE0QixDQUFDLG1DQUFtQyxDQUFDLENBQ2xFLENBQUMscUJBQXFCLENBQ3JCLG1aQWFMLENBQ0ksQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lLFxuICBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nLFxufSBmcm9tIFwiLi9QYWNrYWdlRGV0YWlsc1wiXG5cbmRlc2NyaWJlKFwiZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZVwiLCAoKSA9PiB7XG4gIGl0KFwicGFyc2VzIG9sZC1zdHlsZSBwYXRjaCBmaWxlbmFtZXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJAdHlwZXMvYmFuYW5hOjMuNC4yLWJldGEuMi5wYXRjaFwiKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiQHR5cGVzL2JhbmFuYVwiLFxuICBcImlzRGV2T25seVwiOiBmYWxzZSxcbiAgXCJpc05lc3RlZFwiOiBmYWxzZSxcbiAgXCJuYW1lXCI6IFwiQHR5cGVzL2JhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAdHlwZXMvYmFuYW5hXCIsXG4gIF0sXG4gIFwicGF0Y2hGaWxlbmFtZVwiOiBcIkB0eXBlcy9iYW5hbmE6My40LjItYmV0YS4yLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AdHlwZXMvYmFuYW5hXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcIkB0eXBlcy9iYW5hbmFcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMy40LjItYmV0YS4yXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmE6MC40LjIucGF0Y2hcIikpXG4gICAgICAudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJiYW5hbmFcIixcbiAgXCJpc0Rldk9ubHlcIjogZmFsc2UsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcImJhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJiYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRjaEZpbGVuYW1lXCI6IFwiYmFuYW5hOjAuNC4yLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmErMC40LjIucGF0Y2hcIikpXG4gICAgICAudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJiYW5hbmFcIixcbiAgXCJpc0Rldk9ubHlcIjogZmFsc2UsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcImJhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJiYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRjaEZpbGVuYW1lXCI6IFwiYmFuYW5hKzAuNC4yLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmEtMC40LjIucGF0Y2hcIikpLnRvQmUobnVsbClcblxuICAgIGV4cGVjdChcbiAgICAgIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJAdHlwZXMrYmFuYW5hLTAuNC4yLnBhdGNoXCIpLFxuICAgICkudG9CZShudWxsKVxuXG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmErMC40LjIuZGV2LnBhdGNoXCIpKVxuICAgICAgLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hXCIsXG4gIFwiaXNEZXZPbmx5XCI6IHRydWUsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcImJhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJiYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRjaEZpbGVuYW1lXCI6IFwiYmFuYW5hKzAuNC4yLmRldi5wYXRjaFwiLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvYmFuYW5hXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcImJhbmFuYVwiLFxuICBcInZlcnNpb25cIjogXCIwLjQuMi5kZXZcIixcbn1cbmApXG4gIH0pXG5cbiAgaXQoXCJwYXJzZXMgbmV3LXN0eWxlIHBhdGNoIGZpbGVuYW1lc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoXCJiYW5hbmErK2FwcGxlKzAuNC4yLnBhdGNoXCIpKVxuICAgICAgLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiYmFuYW5hID0+IGFwcGxlXCIsXG4gIFwiaXNEZXZPbmx5XCI6IGZhbHNlLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcImFwcGxlXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcImJhbmFuYVwiLFxuICAgIFwiYXBwbGVcIixcbiAgXSxcbiAgXCJwYXRjaEZpbGVuYW1lXCI6IFwiYmFuYW5hKythcHBsZSswLjQuMi5wYXRjaFwiLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvYmFuYW5hL25vZGVfbW9kdWxlcy9hcHBsZVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJiYW5hbmEvYXBwbGVcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC40LjJcIixcbn1cbmApXG5cbiAgICBleHBlY3QoXG4gICAgICBnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lKFxuICAgICAgICBcIkB0eXBlcytiYW5hbmErK0B0eXBlcythcHBsZSsrQG1vbGx1c2MrbWFuKzAuNC4yLWJhbmFuYS10cmVlLnBhdGNoXCIsXG4gICAgICApLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hID0+IEB0eXBlcy9hcHBsZSA9PiBAbW9sbHVzYy9tYW5cIixcbiAgXCJpc0Rldk9ubHlcIjogZmFsc2UsXG4gIFwiaXNOZXN0ZWRcIjogdHJ1ZSxcbiAgXCJuYW1lXCI6IFwiQG1vbGx1c2MvbWFuXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcIkB0eXBlcy9iYW5hbmFcIixcbiAgICBcIkB0eXBlcy9hcHBsZVwiLFxuICAgIFwiQG1vbGx1c2MvbWFuXCIsXG4gIF0sXG4gIFwicGF0Y2hGaWxlbmFtZVwiOiBcIkB0eXBlcytiYW5hbmErK0B0eXBlcythcHBsZSsrQG1vbGx1c2MrbWFuKzAuNC4yLWJhbmFuYS10cmVlLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AdHlwZXMvYmFuYW5hL25vZGVfbW9kdWxlcy9AdHlwZXMvYXBwbGUvbm9kZV9tb2R1bGVzL0Btb2xsdXNjL21hblwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hL0B0eXBlcy9hcHBsZS9AbW9sbHVzYy9tYW5cIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC40LjItYmFuYW5hLXRyZWVcIixcbn1cbmApXG5cbiAgICBleHBlY3QoXG4gICAgICBnZXRQYWNrYWdlRGV0YWlsc0Zyb21QYXRjaEZpbGVuYW1lKFxuICAgICAgICBcIkB0eXBlcytiYW5hbmEucGF0Y2grK2hlbGxvKzAuNC4yLWJhbmFuYS10cmVlLnBhdGNoXCIsXG4gICAgICApLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbk9iamVjdCB7XG4gIFwiaHVtYW5SZWFkYWJsZVBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hLnBhdGNoID0+IGhlbGxvXCIsXG4gIFwiaXNEZXZPbmx5XCI6IGZhbHNlLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcImhlbGxvXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcIkB0eXBlcy9iYW5hbmEucGF0Y2hcIixcbiAgICBcImhlbGxvXCIsXG4gIF0sXG4gIFwicGF0Y2hGaWxlbmFtZVwiOiBcIkB0eXBlcytiYW5hbmEucGF0Y2grK2hlbGxvKzAuNC4yLWJhbmFuYS10cmVlLnBhdGNoXCIsXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AdHlwZXMvYmFuYW5hLnBhdGNoL25vZGVfbW9kdWxlcy9oZWxsb1wiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAdHlwZXMvYmFuYW5hLnBhdGNoL2hlbGxvXCIsXG4gIFwidmVyc2lvblwiOiBcIjAuNC4yLWJhbmFuYS10cmVlXCIsXG59XG5gKVxuXG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGFja2FnZURldGFpbHNGcm9tUGF0Y2hGaWxlbmFtZShcbiAgICAgICAgXCJAdHlwZXMrYmFuYW5hLnBhdGNoKytoZWxsbyswLjQuMi1iYW5hbmEtdHJlZS5kZXYucGF0Y2hcIixcbiAgICAgICksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcIkB0eXBlcy9iYW5hbmEucGF0Y2ggPT4gaGVsbG9cIixcbiAgXCJpc0Rldk9ubHlcIjogdHJ1ZSxcbiAgXCJpc05lc3RlZFwiOiB0cnVlLFxuICBcIm5hbWVcIjogXCJoZWxsb1wiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJAdHlwZXMvYmFuYW5hLnBhdGNoXCIsXG4gICAgXCJoZWxsb1wiLFxuICBdLFxuICBcInBhdGNoRmlsZW5hbWVcIjogXCJAdHlwZXMrYmFuYW5hLnBhdGNoKytoZWxsbyswLjQuMi1iYW5hbmEtdHJlZS5kZXYucGF0Y2hcIixcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL0B0eXBlcy9iYW5hbmEucGF0Y2gvbm9kZV9tb2R1bGVzL2hlbGxvXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcIkB0eXBlcy9iYW5hbmEucGF0Y2gvaGVsbG9cIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC40LjItYmFuYW5hLXRyZWVcIixcbn1cbmApXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmdcIiwgKCkgPT4ge1xuICBpdChcImhhbmRsZXMgYSBtaW5pbWFsIHBhY2thZ2UgbmFtZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJwYXRjaC1wYWNrYWdlXCIpKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwicGF0Y2gtcGFja2FnZVwiLFxuICBcImlzTmVzdGVkXCI6IGZhbHNlLFxuICBcIm5hbWVcIjogXCJwYXRjaC1wYWNrYWdlXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcInBhdGNoLXBhY2thZ2VcIixcbiAgXSxcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL3BhdGNoLXBhY2thZ2VcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwicGF0Y2gtcGFja2FnZVwiLFxufVxuYCxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIGEgc2NvcGVkIHBhY2thZ2UgbmFtZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGF0Y2hEZXRhaWxzRnJvbUNsaVN0cmluZyhcIkBkYXZpZC9wYXRjaC1wYWNrYWdlXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlXCIsXG4gIFwiaXNOZXN0ZWRcIjogZmFsc2UsXG4gIFwibmFtZVwiOiBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZVwiLFxufVxuYCxcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIGEgbmVzdGVkIHBhY2thZ2UgbmFtZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgZ2V0UGF0Y2hEZXRhaWxzRnJvbUNsaVN0cmluZyhcImRhdmlkL3BhdGNoLXBhY2thZ2VcIiksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiZGF2aWQgPT4gcGF0Y2gtcGFja2FnZVwiLFxuICBcImlzTmVzdGVkXCI6IHRydWUsXG4gIFwibmFtZVwiOiBcInBhdGNoLXBhY2thZ2VcIixcbiAgXCJwYWNrYWdlTmFtZXNcIjogQXJyYXkgW1xuICAgIFwiZGF2aWRcIixcbiAgICBcInBhdGNoLXBhY2thZ2VcIixcbiAgXSxcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL2RhdmlkL25vZGVfbW9kdWxlcy9wYXRjaC1wYWNrYWdlXCIsXG4gIFwicGF0aFNwZWNpZmllclwiOiBcImRhdmlkL3BhdGNoLXBhY2thZ2VcIixcbn1cbmAsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBhIG5lc3RlZCBwYWNrYWdlIG5hbWUgd2l0aCBzY29wZXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJAZGF2aWQvcGF0Y2gtcGFja2FnZS9iYW5hbmFcIiksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UgPT4gYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogdHJ1ZSxcbiAgXCJuYW1lXCI6IFwiYmFuYW5hXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlXCIsXG4gICAgXCJiYW5hbmFcIixcbiAgXSxcbiAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL0BkYXZpZC9wYXRjaC1wYWNrYWdlL25vZGVfbW9kdWxlcy9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiQGRhdmlkL3BhdGNoLXBhY2thZ2UvYmFuYW5hXCIsXG59XG5gLFxuICAgIClcblxuICAgIGV4cGVjdChcbiAgICAgIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJAZGF2aWQvcGF0Y2gtcGFja2FnZS9AZGF2aWQvYmFuYW5hXCIpLFxuICAgICkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFxuT2JqZWN0IHtcbiAgXCJodW1hblJlYWRhYmxlUGF0aFNwZWNpZmllclwiOiBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlID0+IEBkYXZpZC9iYW5hbmFcIixcbiAgXCJpc05lc3RlZFwiOiB0cnVlLFxuICBcIm5hbWVcIjogXCJAZGF2aWQvYmFuYW5hXCIsXG4gIFwicGFja2FnZU5hbWVzXCI6IEFycmF5IFtcbiAgICBcIkBkYXZpZC9wYXRjaC1wYWNrYWdlXCIsXG4gICAgXCJAZGF2aWQvYmFuYW5hXCIsXG4gIF0sXG4gIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9AZGF2aWQvcGF0Y2gtcGFja2FnZS9ub2RlX21vZHVsZXMvQGRhdmlkL2JhbmFuYVwiLFxuICBcInBhdGhTcGVjaWZpZXJcIjogXCJAZGF2aWQvcGF0Y2gtcGFja2FnZS9AZGF2aWQvYmFuYW5hXCIsXG59XG5gLFxuICAgIClcblxuICAgIGV4cGVjdChcbiAgICAgIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcoXCJkYXZpZC9wYXRjaC1wYWNrYWdlL0BkYXZpZC9iYW5hbmFcIiksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXG5PYmplY3Qge1xuICBcImh1bWFuUmVhZGFibGVQYXRoU3BlY2lmaWVyXCI6IFwiZGF2aWQgPT4gcGF0Y2gtcGFja2FnZSA9PiBAZGF2aWQvYmFuYW5hXCIsXG4gIFwiaXNOZXN0ZWRcIjogdHJ1ZSxcbiAgXCJuYW1lXCI6IFwiQGRhdmlkL2JhbmFuYVwiLFxuICBcInBhY2thZ2VOYW1lc1wiOiBBcnJheSBbXG4gICAgXCJkYXZpZFwiLFxuICAgIFwicGF0Y2gtcGFja2FnZVwiLFxuICAgIFwiQGRhdmlkL2JhbmFuYVwiLFxuICBdLFxuICBcInBhdGhcIjogXCJub2RlX21vZHVsZXMvZGF2aWQvbm9kZV9tb2R1bGVzL3BhdGNoLXBhY2thZ2Uvbm9kZV9tb2R1bGVzL0BkYXZpZC9iYW5hbmFcIixcbiAgXCJwYXRoU3BlY2lmaWVyXCI6IFwiZGF2aWQvcGF0Y2gtcGFja2FnZS9AZGF2aWQvYmFuYW5hXCIsXG59XG5gLFxuICAgIClcbiAgfSlcbn0pXG4iXX0=
{
"name": "patch-package",
"version": "6.1.4",
"version": "6.2.0",
"description": "Fix broken node modules with no fuss",

@@ -62,3 +62,3 @@ "main": "dist/index.js",

"np": "^4.0.2",
"prettier": "^1.16.4",
"prettier": "^1.18.2",
"randomstring": "^1.1.5",

@@ -65,0 +65,0 @@ "ts-jest": "^24.0.0",

<p align="center">
<img src="./patch-package.svg" width="80%" alt="patch-package" />
<img src="https://ds300.github.com/patch-package/patch-package.svg" width="80%" alt="patch-package" />
</p>

@@ -20,7 +20,7 @@

Patches created by `patch-package` are automatically and gracefully applied
when you use `npm`(>=5) or `yarn`.
Patches created by `patch-package` are automatically and gracefully applied when
you use `npm`(>=5) or `yarn`.
No more waiting around for pull requests to be merged and published.
No more forking repos just to fix that one tiny thing preventing your app from working.
No more waiting around for pull requests to be merged and published. No more
forking repos just to fix that one tiny thing preventing your app from working.

@@ -43,3 +43,4 @@ ## Set-up

You can use `--save-dev` if you don't need to run npm in production, e.g. if you're making a web frontend.
You can use `--save-dev` if you don't need to run npm in production, e.g. if
you're making a web frontend.

@@ -50,9 +51,14 @@ ### yarn

You can use `--dev` if you don't need to run yarn in production, e.g. if you're making a web frontend.
You can use `--dev` if you don't need to run yarn in production, e.g. if you're
making a web frontend.
To understand why yarn needs the `postinstall-postinstall` package see: [Why use postinstall-postinstall](#why-use-postinstall-postinstall-with-yarn)
To understand why yarn needs the `postinstall-postinstall` package see:
[Why use postinstall-postinstall](#why-use-postinstall-postinstall-with-yarn)
### yarn workspaces
Same as for yarn ☝️ Note that if you want to patch un-hoisted packages you'll need to repeat the setup process for the child package. Also make sure you're in the child package directory when you run `patch-package` to generate the patch files.
Same as for yarn ☝️ Note that if you want to patch un-hoisted packages you'll
need to repeat the setup process for the child package. Also make sure you're in
the child package directory when you run `patch-package` to generate the patch
files.

@@ -63,3 +69,4 @@ ## Usage

First make changes to the files of a particular package in your node_modules folder, then run
First make changes to the files of a particular package in your node_modules
folder, then run

@@ -74,5 +81,7 @@ yarn patch-package package-name

If this is the first time you've used `patch-package`, it will create a folder called `patches` in
the root dir of your app. Inside will be a file called `package-name+0.44.0.patch` or something,
which is a diff between normal old `package-name` and your fixed version. Commit this to share the fix with your team.
If this is the first time you've used `patch-package`, it will create a folder
called `patches` in the root dir of your app. Inside will be a file called
`package-name+0.44.0.patch` or something, which is a diff between normal old
`package-name` and your fixed version. Commit this to share the fix with your
team.

@@ -83,10 +92,10 @@ #### Options

By default, patch-package checks whether you use npm or yarn based on
which lockfile you have. If you have both, it uses npm by default.
Set this option to override that default and always use yarn.
By default, patch-package checks whether you use npm or yarn based on which
lockfile you have. If you have both, it uses npm by default. Set this option
to override that default and always use yarn.
- `--exclude <regexp>`
Ignore paths matching the regexp when creating patch files.
Paths are relative to the root dir of the package to be patched.
Ignore paths matching the regexp when creating patch files. Paths are relative
to the root dir of the package to be patched.

@@ -97,4 +106,4 @@ Default value: `package\\.json$`

Only consider paths matching the regexp when creating patch files.
Paths are relative to the root dir of the package to be patched.
Only consider paths matching the regexp when creating patch files. Paths are
relative to the root dir of the package to be patched.

@@ -113,3 +122,5 @@ Default value: `.*`

If you are trying to patch a package at, e.g. `node_modules/package/node_modules/another-package` you can just put a `/` between the package names:
If you are trying to patch a package at, e.g.
`node_modules/package/node_modules/another-package` you can just put a `/`
between the package names:

@@ -124,3 +135,4 @@ npx patch-package package/another-package

Use exactly the same process as for making patches in the first place, i.e. make more changes, run patch-package, commit the changes to the patch file.
Use exactly the same process as for making patches in the first place, i.e. make
more changes, run patch-package, commit the changes to the patch file.

@@ -137,5 +149,8 @@ ### Applying patches

Note that this will fail if the patched files have changed since being patched. In that case, you'll probably need to re-install `node_modules`.
Note that this will fail if the patched files have changed since being
patched. In that case, you'll probably need to re-install `node_modules`.
This option was added to help people using CircleCI avoid [an issue around caching and patch file updates](https://github.com/ds300/patch-package/issues/37) but might be useful in other contexts too.
This option was added to help people using CircleCI avoid
[an issue around caching and patch file updates](https://github.com/ds300/patch-package/issues/37)
but might be useful in other contexts too.

@@ -156,8 +171,30 @@ - `--patch-dir`

### Dev-only patches
If you deploy your package to production (e.g. your package is a server) then
any patched `devDependencies` will not be present when patch-package runs in
production. It will happily ignore those patch files if the package to be
patched is listed directly in the `devDependencies` of your package.json. If
it's a transitive dependency patch-package can't detect that it is safe to
ignore and will throw an error. To fix this, mark patches for transitive dev
dependencies as dev-only by renaming from, e.g.
package-name+0.44.0.patch
to
package-name+0.44.0.dev.patch
This will allow those patch files to be safely ignored when
`NODE_ENV=production`.
## Benefits of patching over forking
- Sometimes forks need extra build steps, e.g. with react-native for Android. Forget that noise.
- Get told in big red letters when the dependency changed and you need to check that your fix is still valid.
- Sometimes forks need extra build steps, e.g. with react-native for Android.
Forget that noise.
- Get told in big red letters when the dependency changed and you need to check
that your fix is still valid.
- Keep your patches colocated with the code that depends on them.
- Patches can be reviewed as part of your normal review process, forks probably can't
- Patches can be reviewed as part of your normal review process, forks probably
can't

@@ -172,14 +209,26 @@ ## When to fork instead

Nope. The technique is quite robust. Here are some things to keep in mind though:
Nope. The technique is quite robust. Here are some things to keep in mind
though:
- It's easy to forget to run `yarn` or `npm` when switching between branches that do and don't have patch files.
- Long lived patches can be costly to maintain if they affect an area of code that is updated regularly and you want to update the package regularly too.
- Big semantic changes can be hard to review. Keep them small and obvious or add plenty of comments.
- Changes can also impact the behaviour of other untouched packages. It's normally obvious when this will happen, and often desired, but be careful nonetheless.
- It's easy to forget to run `yarn` or `npm` when switching between branches
that do and don't have patch files.
- Long lived patches can be costly to maintain if they affect an area of code
that is updated regularly and you want to update the package regularly too.
- Big semantic changes can be hard to review. Keep them small and obvious or add
plenty of comments.
- Changes can also impact the behaviour of other untouched packages. It's
normally obvious when this will happen, and often desired, but be careful
nonetheless.
## Why use postinstall-postinstall with Yarn?
Most times when you do a `yarn`, `yarn add`, `yarn remove`, or `yarn install` (which is the same as just `yarn`) Yarn will completely replace the contents of your node_modules with freshly unpackaged modules. patch-package uses the `postinstall` hook to modify these fresh modules, so that they behave well according to your will.
Most times when you do a `yarn`, `yarn add`, `yarn remove`, or `yarn install`
(which is the same as just `yarn`) Yarn will completely replace the contents of
your node_modules with freshly unpackaged modules. patch-package uses the
`postinstall` hook to modify these fresh modules, so that they behave well
according to your will.
Yarn only runs the `postinstall` hook after `yarn` and `yarn add`, but not after `yarn remove`. The `postinstall-postinstall` package is used to make sure your `postinstall` hook gets executed even after a `yarn remove`.
Yarn only runs the `postinstall` hook after `yarn` and `yarn add`, but not after
`yarn remove`. The `postinstall-postinstall` package is used to make sure your
`postinstall` hook gets executed even after a `yarn remove`.

@@ -186,0 +235,0 @@ ## License

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