@psync/patch-package 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/detectPackageManager.js +55 -21
- package/dist/getPackageResolution.js +50 -25
- package/dist/parseBunLockfile.js +88 -3
- package/package.json +6 -6
|
@@ -3,42 +3,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.detectPackageManager = void 0;
|
|
6
|
+
exports.detectPackageManager = exports.LOCKFILE_NAMES = void 0;
|
|
7
|
+
exports.findBunLockfilePath = findBunLockfilePath;
|
|
7
8
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
9
|
const path_1 = require("./path");
|
|
9
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
10
11
|
const process_1 = __importDefault(require("process"));
|
|
11
12
|
const find_yarn_workspace_root_1 = __importDefault(require("find-yarn-workspace-root"));
|
|
13
|
+
/**
|
|
14
|
+
* The set of lockfile filenames patch-package recognises for each package
|
|
15
|
+
* manager. Exposed so other modules can resolve the actual file in use.
|
|
16
|
+
*/
|
|
17
|
+
exports.LOCKFILE_NAMES = {
|
|
18
|
+
yarn: "yarn.lock",
|
|
19
|
+
npm: "package-lock.json",
|
|
20
|
+
"npm-shrinkwrap": "npm-shrinkwrap.json",
|
|
21
|
+
// bun.lockb is the legacy binary lockfile (Bun < 1.2).
|
|
22
|
+
// bun.lock is the text/JSONC lockfile used by Bun >= 1.2 (incl. 1.3.14).
|
|
23
|
+
bun: "bun.lock",
|
|
24
|
+
bunLegacy: "bun.lockb",
|
|
25
|
+
};
|
|
12
26
|
function printNoYarnLockfileError() {
|
|
13
|
-
console.log(`
|
|
14
|
-
${chalk_1.default.red.bold("**ERROR**")} ${chalk_1.default.red(`The --use-yarn option was specified but there is no yarn.lock file`)}
|
|
27
|
+
console.log(`
|
|
28
|
+
${chalk_1.default.red.bold("**ERROR**")} ${chalk_1.default.red(`The --use-yarn option was specified but there is no yarn.lock file`)}
|
|
15
29
|
`);
|
|
16
30
|
}
|
|
17
31
|
function printNoBunLockfileError() {
|
|
18
|
-
console.log(`
|
|
19
|
-
${chalk_1.default.red.bold("**ERROR**")} ${chalk_1.default.red(`The --use-bun option was specified but there is no bun.lockb file`)}
|
|
32
|
+
console.log(`
|
|
33
|
+
${chalk_1.default.red.bold("**ERROR**")} ${chalk_1.default.red(`The --use-bun option was specified but there is no bun.lock or bun.lockb file`)}
|
|
20
34
|
`);
|
|
21
35
|
}
|
|
22
36
|
function printNoLockfilesError() {
|
|
23
|
-
console.log(`
|
|
24
|
-
${chalk_1.default.red.bold("**ERROR**")} ${chalk_1.default.red(`No package-lock.json, npm-shrinkwrap.json, yarn.lock, or bun.lockb file.
|
|
25
|
-
|
|
26
|
-
You must use either npm@>=5, yarn, npm-shrinkwrap, or bun to manage this project's
|
|
27
|
-
dependencies.`)}
|
|
37
|
+
console.log(`
|
|
38
|
+
${chalk_1.default.red.bold("**ERROR**")} ${chalk_1.default.red(`No package-lock.json, npm-shrinkwrap.json, yarn.lock, bun.lock, or bun.lockb file.
|
|
39
|
+
|
|
40
|
+
You must use either npm@>=5, yarn, npm-shrinkwrap, or bun to manage this project's
|
|
41
|
+
dependencies.`)}
|
|
28
42
|
`);
|
|
29
43
|
}
|
|
30
44
|
function printSelectingDefaultMessage() {
|
|
31
|
-
console.info(`${chalk_1.default.bold("patch-package")}: you have multiple lockfiles, e.g. yarn.lock and package-lock.json
|
|
32
|
-
Defaulting to using ${chalk_1.default.bold("npm")}
|
|
33
|
-
You can override this setting by passing --use-yarn, --use-bun, or
|
|
34
|
-
deleting the conflicting lockfile if you don't need it
|
|
45
|
+
console.info(`${chalk_1.default.bold("patch-package")}: you have multiple lockfiles, e.g. yarn.lock and package-lock.json
|
|
46
|
+
Defaulting to using ${chalk_1.default.bold("npm")}
|
|
47
|
+
You can override this setting by passing --use-yarn, --use-bun, or
|
|
48
|
+
deleting the conflicting lockfile if you don't need it
|
|
35
49
|
`);
|
|
36
50
|
}
|
|
37
51
|
function printSelectingDefaultYarnMessage() {
|
|
38
|
-
console.info(`${chalk_1.default.bold("patch-package")}: you have both yarn.lock and bun.lockb
|
|
39
|
-
Defaulting to using ${chalk_1.default.bold("yarn")}
|
|
40
|
-
You can override this setting by passing --use-bun, or
|
|
41
|
-
deleting yarn.lock if you don't need it
|
|
52
|
+
console.info(`${chalk_1.default.bold("patch-package")}: you have both yarn.lock and a bun lockfile (bun.lock or bun.lockb)
|
|
53
|
+
Defaulting to using ${chalk_1.default.bold("yarn")}
|
|
54
|
+
You can override this setting by passing --use-bun, or
|
|
55
|
+
deleting yarn.lock if you don't need it
|
|
42
56
|
`);
|
|
43
57
|
}
|
|
44
58
|
function checkForYarnOverride(overridePackageManager) {
|
|
@@ -58,11 +72,15 @@ const detectPackageManager = (appRootPath, overridePackageManager) => {
|
|
|
58
72
|
const shrinkWrapExists = fs_extra_1.default.existsSync((0, path_1.join)(appRootPath, "npm-shrinkwrap.json"));
|
|
59
73
|
const yarnLockExists = fs_extra_1.default.existsSync((0, path_1.join)((0, find_yarn_workspace_root_1.default)() ?? appRootPath, "yarn.lock"));
|
|
60
74
|
// Bun workspaces seem to work the same as yarn workspaces - https://bun.sh/docs/install/workspaces
|
|
75
|
+
// bun.lock is the text/JSONC format used by Bun >= 1.2 (incl. 1.3.14).
|
|
76
|
+
// bun.lockb is the legacy binary format used by Bun < 1.2.
|
|
77
|
+
const bunLockExists = fs_extra_1.default.existsSync((0, path_1.join)((0, find_yarn_workspace_root_1.default)() ?? appRootPath, "bun.lock"));
|
|
61
78
|
const bunLockbExists = fs_extra_1.default.existsSync((0, path_1.join)((0, find_yarn_workspace_root_1.default)() ?? appRootPath, "bun.lockb"));
|
|
79
|
+
const anyBunLockExists = bunLockExists || bunLockbExists;
|
|
62
80
|
if ([
|
|
63
81
|
packageLockExists || shrinkWrapExists,
|
|
64
82
|
yarnLockExists,
|
|
65
|
-
|
|
83
|
+
anyBunLockExists,
|
|
66
84
|
].filter(Boolean).length > 1) {
|
|
67
85
|
if (overridePackageManager) {
|
|
68
86
|
return overridePackageManager;
|
|
@@ -84,7 +102,7 @@ const detectPackageManager = (appRootPath, overridePackageManager) => {
|
|
|
84
102
|
checkForBunOverride(overridePackageManager);
|
|
85
103
|
return "yarn";
|
|
86
104
|
}
|
|
87
|
-
else if (
|
|
105
|
+
else if (anyBunLockExists) {
|
|
88
106
|
checkForYarnOverride(overridePackageManager);
|
|
89
107
|
return "bun";
|
|
90
108
|
}
|
|
@@ -95,4 +113,20 @@ const detectPackageManager = (appRootPath, overridePackageManager) => {
|
|
|
95
113
|
throw Error();
|
|
96
114
|
};
|
|
97
115
|
exports.detectPackageManager = detectPackageManager;
|
|
98
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Returns the path to the actual bun lockfile that exists on disk, preferring
|
|
118
|
+
* the new `bun.lock` text format over the legacy `bun.lockb` binary format.
|
|
119
|
+
*
|
|
120
|
+
* Returns `null` if neither exists.
|
|
121
|
+
*/
|
|
122
|
+
function findBunLockfilePath(appRootPath) {
|
|
123
|
+
const root = (0, find_yarn_workspace_root_1.default)() ?? appRootPath;
|
|
124
|
+
if (fs_extra_1.default.existsSync((0, path_1.join)(root, "bun.lock"))) {
|
|
125
|
+
return (0, path_1.join)(root, "bun.lock");
|
|
126
|
+
}
|
|
127
|
+
if (fs_extra_1.default.existsSync((0, path_1.join)(root, "bun.lockb"))) {
|
|
128
|
+
return (0, path_1.join)(root, "bun.lockb");
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0UGFja2FnZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGV0ZWN0UGFja2FnZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBc0pBLGtEQVNDO0FBL0pELHdEQUF5QjtBQUN6QixpQ0FBNkI7QUFDN0Isa0RBQXlCO0FBQ3pCLHNEQUE2QjtBQUM3Qix3RkFBd0Q7QUFJeEQ7OztHQUdHO0FBQ1UsUUFBQSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLFdBQVc7SUFDakIsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixnQkFBZ0IsRUFBRSxxQkFBcUI7SUFDdkMsdURBQXVEO0lBQ3ZELHlFQUF5RTtJQUN6RSxHQUFHLEVBQUUsVUFBVTtJQUNmLFNBQVMsRUFBRSxXQUFXO0NBQ2QsQ0FBQTtBQUVWLFNBQVMsd0JBQXdCO0lBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUM7RUFDWixlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxlQUFLLENBQUMsR0FBRyxDQUN0QyxvRUFBb0UsQ0FDckU7Q0FDRixDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQsU0FBUyx1QkFBdUI7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQztFQUNaLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGVBQUssQ0FBQyxHQUFHLENBQ3RDLCtFQUErRSxDQUNoRjtDQUNGLENBQUMsQ0FBQTtBQUNGLENBQUM7QUFFRCxTQUFTLHFCQUFxQjtJQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDO0VBQ1osZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksZUFBSyxDQUFDLEdBQUcsQ0FDdEM7OztjQUdVLENBQ1g7Q0FDRixDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQsU0FBUyw0QkFBNEI7SUFDbkMsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLGVBQUss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UUFDMUIsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUMzQyxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7U0FBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUM1QyxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04scUJBQXFCLEVBQUUsQ0FBQTtRQUN2QixpQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsTUFBTSxLQUFLLEVBQUUsQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQXZEWSxRQUFBLG9CQUFvQix3QkF1RGhDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxXQUFtQjtJQUNyRCxNQUFNLElBQUksR0FBRyxJQUFBLGtDQUFpQixHQUFFLElBQUksV0FBVyxDQUFBO0lBQy9DLElBQUksa0JBQUUsQ0FBQyxVQUFVLENBQUMsSUFBQSxXQUFJLEVBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUEsV0FBSSxFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsSUFBSSxrQkFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFBLFdBQUksRUFBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNDLE9BQU8sSUFBQSxXQUFJLEVBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIlxuaW1wb3J0IHByb2Nlc3MgZnJvbSBcInByb2Nlc3NcIlxuaW1wb3J0IGZpbmRXb3Jrc3BhY2VSb290IGZyb20gXCJmaW5kLXlhcm4td29ya3NwYWNlLXJvb3RcIlxuXG5leHBvcnQgdHlwZSBQYWNrYWdlTWFuYWdlciA9IFwieWFyblwiIHwgXCJucG1cIiB8IFwibnBtLXNocmlua3dyYXBcIiB8IFwiYnVuXCJcblxuLyoqXG4gKiBUaGUgc2V0IG9mIGxvY2tmaWxlIGZpbGVuYW1lcyBwYXRjaC1wYWNrYWdlIHJlY29nbmlzZXMgZm9yIGVhY2ggcGFja2FnZVxuICogbWFuYWdlci4gRXhwb3NlZCBzbyBvdGhlciBtb2R1bGVzIGNhbiByZXNvbHZlIHRoZSBhY3R1YWwgZmlsZSBpbiB1c2UuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0NLRklMRV9OQU1FUyA9IHtcbiAgeWFybjogXCJ5YXJuLmxvY2tcIixcbiAgbnBtOiBcInBhY2thZ2UtbG9jay5qc29uXCIsXG4gIFwibnBtLXNocmlua3dyYXBcIjogXCJucG0tc2hyaW5rd3JhcC5qc29uXCIsXG4gIC8vIGJ1bi5sb2NrYiBpcyB0aGUgbGVnYWN5IGJpbmFyeSBsb2NrZmlsZSAoQnVuIDwgMS4yKS5cbiAgLy8gYnVuLmxvY2sgaXMgdGhlIHRleHQvSlNPTkMgbG9ja2ZpbGUgdXNlZCBieSBCdW4gPj0gMS4yIChpbmNsLiAxLjMuMTQpLlxuICBidW46IFwiYnVuLmxvY2tcIixcbiAgYnVuTGVnYWN5OiBcImJ1bi5sb2NrYlwiLFxufSBhcyBjb25zdFxuXG5mdW5jdGlvbiBwcmludE5vWWFybkxvY2tmaWxlRXJyb3IoKSB7XG4gIGNvbnNvbGUubG9nKGBcbiR7Y2hhbGsucmVkLmJvbGQoXCIqKkVSUk9SKipcIil9ICR7Y2hhbGsucmVkKFxuICAgIGBUaGUgLS11c2UteWFybiBvcHRpb24gd2FzIHNwZWNpZmllZCBidXQgdGhlcmUgaXMgbm8geWFybi5sb2NrIGZpbGVgLFxuICApfVxuYClcbn1cblxuZnVuY3Rpb24gcHJpbnROb0J1bkxvY2tmaWxlRXJyb3IoKSB7XG4gIGNvbnNvbGUubG9nKGBcbiR7Y2hhbGsucmVkLmJvbGQoXCIqKkVSUk9SKipcIil9ICR7Y2hhbGsucmVkKFxuICAgIGBUaGUgLS11c2UtYnVuIG9wdGlvbiB3YXMgc3BlY2lmaWVkIGJ1dCB0aGVyZSBpcyBubyBidW4ubG9jayBvciBidW4ubG9ja2IgZmlsZWAsXG4gICl9XG5gKVxufVxuXG5mdW5jdGlvbiBwcmludE5vTG9ja2ZpbGVzRXJyb3IoKSB7XG4gIGNvbnNvbGUubG9nKGBcbiR7Y2hhbGsucmVkLmJvbGQoXCIqKkVSUk9SKipcIil9ICR7Y2hhbGsucmVkKFxuICAgIGBObyBwYWNrYWdlLWxvY2suanNvbiwgbnBtLXNocmlua3dyYXAuanNvbiwgeWFybi5sb2NrLCBidW4ubG9jaywgb3IgYnVuLmxvY2tiIGZpbGUuXG5cbllvdSBtdXN0IHVzZSBlaXRoZXIgbnBtQD49NSwgeWFybiwgbnBtLXNocmlua3dyYXAsIG9yIGJ1biB0byBtYW5hZ2UgdGhpcyBwcm9qZWN0J3NcbmRlcGVuZGVuY2llcy5gLFxuICApfVxuYClcbn1cblxuZnVuY3Rpb24gcHJpbnRTZWxlY3RpbmdEZWZhdWx0TWVzc2FnZSgpIHtcbiAgY29uc29sZS5pbmZvKFxuICAgIGAke2NoYWxrLmJvbGQoXG4gICAgICBcInBhdGNoLXBhY2thZ2VcIixcbiAgICApfTogeW91IGhhdmUgbXVsdGlwbGUgbG9ja2ZpbGVzLCBlLmcuIHlhcm4ubG9jayBhbmQgcGFja2FnZS1sb2NrLmpzb25cbkRlZmF1bHRpbmcgdG8gdXNpbmcgJHtjaGFsay5ib2xkKFwibnBtXCIpfVxuWW91IGNhbiBvdmVycmlkZSB0aGlzIHNldHRpbmcgYnkgcGFzc2luZyAtLXVzZS15YXJuLCAtLXVzZS1idW4sIG9yXG5kZWxldGluZyB0aGUgY29uZmxpY3RpbmcgbG9ja2ZpbGUgaWYgeW91IGRvbid0IG5lZWQgaXRcbmAsXG4gIClcbn1cblxuZnVuY3Rpb24gcHJpbnRTZWxlY3RpbmdEZWZhdWx0WWFybk1lc3NhZ2UoKSB7XG4gIGNvbnNvbGUuaW5mbyhcbiAgICBgJHtjaGFsay5ib2xkKFxuICAgICAgXCJwYXRjaC1wYWNrYWdlXCIsXG4gICAgKX06IHlvdSBoYXZlIGJvdGggeWFybi5sb2NrIGFuZCBhIGJ1biBsb2NrZmlsZSAoYnVuLmxvY2sgb3IgYnVuLmxvY2tiKVxuRGVmYXVsdGluZyB0byB1c2luZyAke2NoYWxrLmJvbGQoXCJ5YXJuXCIpfVxuWW91IGNhbiBvdmVycmlkZSB0aGlzIHNldHRpbmcgYnkgcGFzc2luZyAtLXVzZS1idW4sIG9yXG5kZWxldGluZyB5YXJuLmxvY2sgaWYgeW91IGRvbid0IG5lZWQgaXRcbmAsXG4gIClcbn1cblxuZnVuY3Rpb24gY2hlY2tGb3JZYXJuT3ZlcnJpZGUob3ZlcnJpZGVQYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIgfCBudWxsKSB7XG4gIGlmIChvdmVycmlkZVBhY2thZ2VNYW5hZ2VyID09PSBcInlhcm5cIikge1xuICAgIHByaW50Tm9ZYXJuTG9ja2ZpbGVFcnJvcigpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tGb3JCdW5PdmVycmlkZShvdmVycmlkZVBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlciB8IG51bGwpIHtcbiAgaWYgKG92ZXJyaWRlUGFja2FnZU1hbmFnZXIgPT09IFwiYnVuXCIpIHtcbiAgICBwcmludE5vQnVuTG9ja2ZpbGVFcnJvcigpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRldGVjdFBhY2thZ2VNYW5hZ2VyID0gKFxuICBhcHBSb290UGF0aDogc3RyaW5nLFxuICBvdmVycmlkZVBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlciB8IG51bGwsXG4pOiBQYWNrYWdlTWFuYWdlciA9PiB7XG4gIGNvbnN0IHBhY2thZ2VMb2NrRXhpc3RzID0gZnMuZXhpc3RzU3luYyhcbiAgICBqb2luKGFwcFJvb3RQYXRoLCBcInBhY2thZ2UtbG9jay5qc29uXCIpLFxuICApXG4gIGNvbnN0IHNocmlua1dyYXBFeGlzdHMgPSBmcy5leGlzdHNTeW5jKFxuICAgIGpvaW4oYXBwUm9vdFBhdGgsIFwibnBtLXNocmlua3dyYXAuanNvblwiKSxcbiAgKVxuICBjb25zdCB5YXJuTG9ja0V4aXN0cyA9IGZzLmV4aXN0c1N5bmMoXG4gICAgam9pbihmaW5kV29ya3NwYWNlUm9vdCgpID8/IGFwcFJvb3RQYXRoLCBcInlhcm4ubG9ja1wiKSxcbiAgKVxuICAvLyBCdW4gd29ya3NwYWNlcyBzZWVtIHRvIHdvcmsgdGhlIHNhbWUgYXMgeWFybiB3b3Jrc3BhY2VzIC0gaHR0cHM6Ly9idW4uc2gvZG9jcy9pbnN0YWxsL3dvcmtzcGFjZXNcbiAgLy8gYnVuLmxvY2sgaXMgdGhlIHRleHQvSlNPTkMgZm9ybWF0IHVzZWQgYnkgQnVuID49IDEuMiAoaW5jbC4gMS4zLjE0KS5cbiAgLy8gYnVuLmxvY2tiIGlzIHRoZSBsZWdhY3kgYmluYXJ5IGZvcm1hdCB1c2VkIGJ5IEJ1biA8IDEuMi5cbiAgY29uc3QgYnVuTG9ja0V4aXN0cyA9IGZzLmV4aXN0c1N5bmMoXG4gICAgam9pbihmaW5kV29ya3NwYWNlUm9vdCgpID8/IGFwcFJvb3RQYXRoLCBcImJ1bi5sb2NrXCIpLFxuICApXG4gIGNvbnN0IGJ1bkxvY2tiRXhpc3RzID0gZnMuZXhpc3RzU3luYyhcbiAgICBqb2luKGZpbmRXb3Jrc3BhY2VSb290KCkgPz8gYXBwUm9vdFBhdGgsIFwiYnVuLmxvY2tiXCIpLFxuICApXG4gIGNvbnN0IGFueUJ1bkxvY2tFeGlzdHMgPSBidW5Mb2NrRXhpc3RzIHx8IGJ1bkxvY2tiRXhpc3RzXG4gIGlmIChcbiAgICBbXG4gICAgICBwYWNrYWdlTG9ja0V4aXN0cyB8fCBzaHJpbmtXcmFwRXhpc3RzLFxuICAgICAgeWFybkxvY2tFeGlzdHMsXG4gICAgICBhbnlCdW5Mb2NrRXhpc3RzLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmxlbmd0aCA+IDFcbiAgKSB7XG4gICAgaWYgKG92ZXJyaWRlUGFja2FnZU1hbmFnZXIpIHtcbiAgICAgIHJldHVybiBvdmVycmlkZVBhY2thZ2VNYW5hZ2VyXG4gICAgfVxuICAgIGlmICghcGFja2FnZUxvY2tFeGlzdHMgJiYgIXNocmlua1dyYXBFeGlzdHMpIHtcbiAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3Qgd2FudCB0byBkZWZhdWx0IHRvIG5wbSBpcyB3aGVuIHdlIGhhdmUgYm90aCB5YXJuIGFuZCBidW4gbG9ja2ZpbGVzLlxuICAgICAgcHJpbnRTZWxlY3RpbmdEZWZhdWx0WWFybk1lc3NhZ2UoKVxuICAgICAgcmV0dXJuIFwieWFyblwiXG4gICAgfVxuICAgIHByaW50U2VsZWN0aW5nRGVmYXVsdE1lc3NhZ2UoKVxuICAgIHJldHVybiBzaHJpbmtXcmFwRXhpc3RzID8gXCJucG0tc2hyaW5rd3JhcFwiIDogXCJucG1cIlxuICB9IGVsc2UgaWYgKHBhY2thZ2VMb2NrRXhpc3RzIHx8IHNocmlua1dyYXBFeGlzdHMpIHtcbiAgICBjaGVja0Zvcllhcm5PdmVycmlkZShvdmVycmlkZVBhY2thZ2VNYW5hZ2VyKVxuICAgIGNoZWNrRm9yQnVuT3ZlcnJpZGUob3ZlcnJpZGVQYWNrYWdlTWFuYWdlcilcbiAgICByZXR1cm4gc2hyaW5rV3JhcEV4aXN0cyA/IFwibnBtLXNocmlua3dyYXBcIiA6IFwibnBtXCJcbiAgfSBlbHNlIGlmICh5YXJuTG9ja0V4aXN0cykge1xuICAgIGNoZWNrRm9yQnVuT3ZlcnJpZGUob3ZlcnJpZGVQYWNrYWdlTWFuYWdlcilcbiAgICByZXR1cm4gXCJ5YXJuXCJcbiAgfSBlbHNlIGlmIChhbnlCdW5Mb2NrRXhpc3RzKSB7XG4gICAgY2hlY2tGb3JZYXJuT3ZlcnJpZGUob3ZlcnJpZGVQYWNrYWdlTWFuYWdlcilcbiAgICByZXR1cm4gXCJidW5cIlxuICB9IGVsc2Uge1xuICAgIHByaW50Tm9Mb2NrZmlsZXNFcnJvcigpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgdGhyb3cgRXJyb3IoKVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGggdG8gdGhlIGFjdHVhbCBidW4gbG9ja2ZpbGUgdGhhdCBleGlzdHMgb24gZGlzaywgcHJlZmVycmluZ1xuICogdGhlIG5ldyBgYnVuLmxvY2tgIHRleHQgZm9ybWF0IG92ZXIgdGhlIGxlZ2FjeSBgYnVuLmxvY2tiYCBiaW5hcnkgZm9ybWF0LlxuICpcbiAqIFJldHVybnMgYG51bGxgIGlmIG5laXRoZXIgZXhpc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEJ1bkxvY2tmaWxlUGF0aChhcHBSb290UGF0aDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHJvb3QgPSBmaW5kV29ya3NwYWNlUm9vdCgpID8/IGFwcFJvb3RQYXRoXG4gIGlmIChmcy5leGlzdHNTeW5jKGpvaW4ocm9vdCwgXCJidW4ubG9ja1wiKSkpIHtcbiAgICByZXR1cm4gam9pbihyb290LCBcImJ1bi5sb2NrXCIpXG4gIH1cbiAgaWYgKGZzLmV4aXN0c1N5bmMoam9pbihyb290LCBcImJ1bi5sb2NrYlwiKSkpIHtcbiAgICByZXR1cm4gam9pbihyb290LCBcImJ1bi5sb2NrYlwiKVxuICB9XG4gIHJldHVybiBudWxsXG59XG4iXX0=
|
|
@@ -17,38 +17,63 @@ const parseBunLockfile_1 = require("./parseBunLockfile");
|
|
|
17
17
|
function getPackageResolution({ packageDetails, packageManager, appPath, }) {
|
|
18
18
|
if (packageManager === "yarn" || packageManager === "bun") {
|
|
19
19
|
const isBun = packageManager === "bun";
|
|
20
|
-
const lockFileName = isBun ? "bun.lockb" : "yarn.lock";
|
|
21
|
-
let lockFilePath = lockFileName;
|
|
22
|
-
if (!(0, fs_extra_1.existsSync)(lockFilePath)) {
|
|
23
|
-
const workspaceRoot = (0, find_yarn_workspace_root_1.default)();
|
|
24
|
-
if (!workspaceRoot) {
|
|
25
|
-
throw new Error(`Can't find ${lockFileName} file`);
|
|
26
|
-
}
|
|
27
|
-
lockFilePath = (0, path_1.join)(workspaceRoot, lockFilePath);
|
|
28
|
-
}
|
|
29
|
-
if (!(0, fs_extra_1.existsSync)(lockFilePath)) {
|
|
30
|
-
throw new Error(`Can't find ${lockFileName} file`);
|
|
31
|
-
}
|
|
32
|
-
const lockFileString = isBun
|
|
33
|
-
? (0, parseBunLockfile_1.parseBunLockfile)(lockFilePath)
|
|
34
|
-
: (0, fs_extra_1.readFileSync)(lockFilePath).toString();
|
|
35
20
|
let appLockFile;
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
21
|
+
if (isBun) {
|
|
22
|
+
// Bun lockfile resolution. Two formats exist:
|
|
23
|
+
// - bun.lock : text/JSONC, Bun >= 1.2 (incl. 1.3.14) — default
|
|
24
|
+
// - bun.lockb : binary, Bun < 1.2 — legacy
|
|
25
|
+
const bunLockPath = (0, detectPackageManager_1.findBunLockfilePath)(appPath);
|
|
26
|
+
if (!bunLockPath) {
|
|
27
|
+
throw new Error(`Can't find bun.lock or bun.lockb file`);
|
|
28
|
+
}
|
|
29
|
+
if (bunLockPath.endsWith("bun.lock")) {
|
|
30
|
+
// New text format. parseBunLockTextFile already returns a
|
|
31
|
+
// yarn-v1-compatible object, so we can skip the yarn lockfile parser.
|
|
32
|
+
appLockFile = (0, parseBunLockfile_1.parseBunLockTextFile)(bunLockPath);
|
|
40
33
|
}
|
|
41
34
|
else {
|
|
35
|
+
// Legacy binary format: dump to yarn-v1 text via `bun bun.lockb`,
|
|
36
|
+
// then parse it with the yarn lockfile parser.
|
|
37
|
+
const lockFileString = (0, parseBunLockfile_1.parseBunLockfile)(bunLockPath);
|
|
38
|
+
const parsedYarnLockFile = (0, lockfile_1.parse)(lockFileString);
|
|
39
|
+
if (parsedYarnLockFile.type !== "success") {
|
|
40
|
+
throw new Error(`Could not parse yarn v1 lock file - was originally a bun.lockb file`);
|
|
41
|
+
}
|
|
42
42
|
appLockFile = parsedYarnLockFile.object;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
// yarn
|
|
47
|
+
const lockFileName = "yarn.lock";
|
|
48
|
+
let lockFilePath = lockFileName;
|
|
49
|
+
if (!(0, fs_extra_1.existsSync)(lockFilePath)) {
|
|
50
|
+
const workspaceRoot = (0, find_yarn_workspace_root_1.default)();
|
|
51
|
+
if (!workspaceRoot) {
|
|
52
|
+
throw new Error(`Can't find ${lockFileName} file`);
|
|
53
|
+
}
|
|
54
|
+
lockFilePath = (0, path_1.join)(workspaceRoot, lockFilePath);
|
|
48
55
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
56
|
+
if (!(0, fs_extra_1.existsSync)(lockFilePath)) {
|
|
57
|
+
throw new Error(`Can't find ${lockFileName} file`);
|
|
58
|
+
}
|
|
59
|
+
const lockFileString = (0, fs_extra_1.readFileSync)(lockFilePath).toString();
|
|
60
|
+
if (lockFileString.includes("yarn lockfile v1")) {
|
|
61
|
+
const parsedYarnLockFile = (0, lockfile_1.parse)(lockFileString);
|
|
62
|
+
if (parsedYarnLockFile.type !== "success") {
|
|
63
|
+
throw new Error(`Could not parse yarn v1 lock file`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
appLockFile = parsedYarnLockFile.object;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
try {
|
|
71
|
+
appLockFile = yaml_1.default.parse(lockFileString);
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
console.log(e);
|
|
75
|
+
throw new Error(`Could not parse yarn v2 lock file`);
|
|
76
|
+
}
|
|
52
77
|
}
|
|
53
78
|
}
|
|
54
79
|
const installedVersion = (0, getPackageVersion_1.getPackageVersion)((0, path_1.join)((0, path_1.resolve)(appPath, packageDetails.path), "package.json"));
|
|
@@ -118,4 +143,4 @@ if (require.main === module) {
|
|
|
118
143
|
packageManager: (0, detectPackageManager_1.detectPackageManager)(process.cwd(), null),
|
|
119
144
|
}));
|
|
120
145
|
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UGFja2FnZVJlc29sdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0UGFja2FnZVJlc29sdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFXQSxvREE4SEM7QUF6SUQsaUNBQXNDO0FBQ3RDLHFEQUErRTtBQUMvRSxpRUFBNkU7QUFDN0UsdUNBQW1EO0FBQ25ELGdEQUE4RDtBQUM5RCxnREFBdUI7QUFDdkIsd0ZBQXdEO0FBQ3hELDJEQUF1RDtBQUN2RCxpREFBNkM7QUFDN0MseURBQXFEO0FBRXJELFNBQWdCLG9CQUFvQixDQUFDLEVBQ25DLGNBQWMsRUFDZCxjQUFjLEVBQ2QsT0FBTyxHQUtSO0lBQ0MsSUFBSSxjQUFjLEtBQUssTUFBTSxJQUFJLGNBQWMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUMxRCxNQUFNLEtBQUssR0FBRyxjQUFjLEtBQUssS0FBSyxDQUFBO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUE7UUFDdEQsSUFBSSxZQUFZLEdBQUcsWUFBWSxDQUFBO1FBQy9CLElBQUksQ0FBQyxJQUFBLHFCQUFVLEVBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFBLGtDQUFpQixHQUFFLENBQUE7WUFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsWUFBWSxPQUFPLENBQUMsQ0FBQTtZQUNwRCxDQUFDO1lBQ0QsWUFBWSxHQUFHLElBQUEsV0FBSSxFQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUNsRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUEscUJBQVUsRUFBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxZQUFZLE9BQU8sQ0FBQyxDQUFBO1FBQ3BELENB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b0IsRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDO0tBQzFELENBQUMsQ0FDSCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tIFwiLi9wYXRoXCJcclxuaW1wb3J0IHsgUGFja2FnZURldGFpbHMsIGdldFBhdGNoRGV0YWlsc0Zyb21DbGlTdHJpbmcgfSBmcm9tIFwiLi9QYWNrYWdlRGV0YWlsc1wiXHJcbmltcG9ydCB7IFBhY2thZ2VNYW5hZ2VyLCBkZXRlY3RQYWNrYWdlTWFuYWdlciB9IGZyb20gXCIuL2RldGVjdFBhY2thZ2VNYW5hZ2VyXCJcclxuaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCBleGlzdHNTeW5jIH0gZnJvbSBcImZzLWV4dHJhXCJcclxuaW1wb3J0IHsgcGFyc2UgYXMgcGFyc2VZYXJuTG9ja0ZpbGUgfSBmcm9tIFwiQHlhcm5wa2cvbG9ja2ZpbGVcIlxyXG5pbXBvcnQgeWFtbCBmcm9tIFwieWFtbFwiXHJcbmltcG9ydCBmaW5kV29ya3NwYWNlUm9vdCBmcm9tIFwiZmluZC15YXJuLXdvcmtzcGFjZS1yb290XCJcclxuaW1wb3J0IHsgZ2V0UGFja2FnZVZlcnNpb24gfSBmcm9tIFwiLi9nZXRQYWNrYWdlVmVyc2lvblwiXHJcbmltcG9ydCB7IGNvZXJjZVNlbVZlciB9IGZyb20gXCIuL2NvZXJjZVNlbVZlclwiXHJcbmltcG9ydCB7IHBhcnNlQnVuTG9ja2ZpbGUgfSBmcm9tIFwiLi9wYXJzZUJ1bkxvY2tmaWxlXCJcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlUmVzb2x1dGlvbih7XHJcbiAgcGFja2FnZURldGFpbHMsXHJcbiAgcGFja2FnZU1hbmFnZXIsXHJcbiAgYXBwUGF0aCxcclxufToge1xyXG4gIHBhY2thZ2VEZXRhaWxzOiBQYWNrYWdlRGV0YWlsc1xyXG4gIHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlclxyXG4gIGFwcFBhdGg6IHN0cmluZ1xyXG59KSB7XHJcbiAgaWYgKHBhY2thZ2VNYW5hZ2VyID09PSBcInlhcm5cIiB8fCBwYWNrYWdlTWFuYWdlciA9PT0gXCJidW5cIikge1xyXG4gICAgY29uc3QgaXNCdW4gPSBwYWNrYWdlTWFuYWdlciA9PT0gXCJidW5cIlxyXG4gICAgY29uc3QgbG9ja0ZpbGVOYW1lID0gaXNCdW4gPyBcImJ1bi5sb2NrYlwiIDogXCJ5YXJuLmxvY2tcIlxyXG4gICAgbGV0IGxvY2tGaWxlUGF0aCA9IGxvY2tGaWxlTmFtZVxyXG4gICAgaWYgKCFleGlzdHNTeW5jKGxvY2tGaWxlUGF0aCkpIHtcclxuICAgICAgY29uc3Qgd29ya3NwYWNlUm9vdCA9IGZpbmRXb3Jrc3BhY2VSb290KClcclxuICAgICAgaWYgKCF3b3Jrc3BhY2VSb290KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kICR7bG9ja0ZpbGVOYW1lfSBmaWxlYClcclxuICAgICAgfVxyXG4gICAgICBsb2NrRmlsZVBhdGggPSBqb2luKHdvcmtzcGFjZVJvb3QsIGxvY2tGaWxlUGF0aClcclxuICAgIH1cclxuICAgIGlmICghZXhpc3RzU3luYyhsb2NrRmlsZVBhdGgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCAke2xvY2tGaWxlTmFtZX0gZmlsZWApXHJcbiAgICB9XHJcbiAgICBjb25zdCBsb2NrRmlsZVN0cmluZyA9IGlzQnVuXHJcbiAgICAgID8gcGFyc2VCdW5Mb2NrZmlsZShsb2NrRmlsZVBhdGgpXHJcbiAgICAgIDogcmVhZEZpbGVTeW5jKGxvY2tGaWxlUGF0aCkudG9TdHJpbmcoKVxyXG4gICAgbGV0IGFwcExvY2tGaWxlXHJcbiAgICBpZiAobG9ja0ZpbGVTdHJpbmcuaW5jbHVkZXMoXCJ5YXJuIGxvY2tmaWxlIHYxXCIpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnNlZFlhcm5Mb2NrRmlsZSA9IHBhcnNlWWFybkxvY2tGaWxlKGxvY2tGaWxlU3RyaW5nKVxyXG4gICAgICBpZiAocGFyc2VkWWFybkxvY2tGaWxlLnR5cGUgIT09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYENvdWxkIG5vdCBwYXJzZSB5YXJuIHYxIGxvY2sgZmlsZSAke1xyXG4gICAgICAgICAgICBpc0J1biA/IFwiLSB3YXMgb3JpZ2luYWxseSBhIGJ1bi5sb2NrYiBmaWxlXCIgOiBcIlwiXHJcbiAgICAgICAgICB9YCxcclxuICAgICAgICApXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXBwTG9ja0ZpbGUgPSBwYXJzZWRZYXJuTG9ja0ZpbGUub2JqZWN0XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXBwTG9ja0ZpbGUgPSB5YW1sLnBhcnNlKGxvY2tGaWxlU3RyaW5nKVxyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgQ291bGQgbm90IHBhcnNlIHlhcm4gdjIgbG9jayBmaWxlICR7XHJcbiAgICAgICAgICAgIGlzQnVuID8gXCItIHdhcyBvcmlnaW5hbGx5IGEgYnVuLmxvY2tiIGZpbGUgKHNob3VsZCBub3QgaGFwcGVuKVwiIDogXCJcIlxyXG4gICAgICAgICAgfWAsXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5zdGFsbGVkVmVyc2lvbiA9IGdldFBhY2thZ2VWZXJzaW9uKFxyXG4gICAgICBqb2luKHJlc29sdmUoYXBwUGF0aCwgcGFja2FnZURldGFpbHMucGF0aCksIFwicGFja2FnZS5qc29uXCIpLFxyXG4gICAgKVxyXG5cclxuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhhcHBMb2NrRmlsZSkuZmlsdGVyKFxyXG4gICAgICAoW2ssIHZdKSA9PlxyXG4gICAgICAgIGsuc3RhcnRzV2l0aChwYWNrYWdlRGV0YWlscy5uYW1lICsgXCJAXCIpICYmXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGNvZXJjZVNlbVZlcih2LnZlcnNpb24pID09PSBjb2VyY2VTZW1WZXIoaW5zdGFsbGVkVmVyc2lvbiksXHJcbiAgICApXHJcblxyXG4gICAgY29uc3QgcmVzb2x1dGlvbnMgPSBlbnRyaWVzLm1hcCgoW18sIHZdKSA9PiB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIHYucmVzb2x2ZWRcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHJlc29sdXRpb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYFxcYCR7cGFja2FnZURldGFpbHMucGF0aFNwZWNpZmllcn1cXGAncyBpbnN0YWxsZWQgdmVyc2lvbiBpcyAke2luc3RhbGxlZFZlcnNpb259IGJ1dCBhIGxvY2tmaWxlIGVudHJ5IGZvciBpdCBjb3VsZG4ndCBiZSBmb3VuZC4gWW91ciBsb2NrZmlsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCBvciB5b3UgZm9yZ290IHRvIHJlaW5zdGFsbCB5b3VyIHBhY2thZ2VzLmAsXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBpZiAobmV3IFNldChyZXNvbHV0aW9ucykuc2l6ZSAhPT0gMSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBgQW1iaWdpb3VzIGxvY2tmaWxlIGVudHJpZXMgZm9yICR7cGFja2FnZURldGFpbHMucGF0aFNwZWNpZmllcn0uIFVzaW5nIHZlcnNpb24gJHtpbnN0YWxsZWRWZXJzaW9ufWAsXHJcbiAgICAgIClcclxuICAgICAgcmV0dXJuIGluc3RhbGxlZFZlcnNpb25cclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzb2x1dGlvbnNbMF0pIHtcclxuICAgICAgcmV0dXJuIHJlc29sdXRpb25zWzBdXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IGVudHJpZXNbMF1bMF0uc2xpY2UocGFja2FnZURldGFpbHMubmFtZS5sZW5ndGggKyAxKVxyXG5cclxuICAgIC8vIHJlc29sdmUgcmVsYXRpdmUgZmlsZSBwYXRoXHJcbiAgICBpZiAocmVzb2x1dGlvbi5zdGFydHNXaXRoKFwiZmlsZTouXCIpKSB7XHJcbiAgICAgIHJldHVybiBgZmlsZToke3Jlc29sdmUoYXBwUGF0aCwgcmVzb2x1dGlvbi5zbGljZShcImZpbGU6XCIubGVuZ3RoKSl9YFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXNvbHV0aW9uLnN0YXJ0c1dpdGgoXCJucG06XCIpKSB7XHJcbiAgICAgIHJldHVybiByZXNvbHV0aW9uLnJlcGxhY2UoXCJucG06XCIsIFwiXCIpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc29sdXRpb25cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgbG9ja2ZpbGUgPSByZXF1aXJlKFxyXG4gICAgICBqb2luKFxyXG4gICAgICAgIGFwcFBhdGgsXHJcbiAgICAgICAgcGFja2FnZU1hbmFnZXIgPT09IFwibnBtLXNocmlua3dyYXBcIlxyXG4gICAgICAgICAgPyBcIm5wbS1zaHJpbmt3cmFwLmpzb25cIlxyXG4gICAgICAgICAgOiBcInBhY2thZ2UtbG9jay5qc29uXCIsXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgICBjb25zdCBsb2NrRmlsZVN0YWNrID0gW2xvY2tmaWxlXVxyXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHBhY2thZ2VEZXRhaWxzLnBhY2thZ2VOYW1lcy5zbGljZSgwLCAtMSkpIHtcclxuICAgICAgY29uc3QgY2hpbGQgPSBsb2NrRmlsZVN0YWNrWzBdLmRlcGVuZGVuY2llc1xyXG4gICAgICBpZiAoY2hpbGQgJiYgbmFtZSBpbiBjaGlsZCkge1xyXG4gICAgICAgIGxvY2tGaWxlU3RhY2sucHVzaChjaGlsZFtuYW1lXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbG9ja0ZpbGVTdGFjay5yZXZlcnNlKClcclxuICAgIGNvbnN0IHJlbGV2YW50U3RhY2tFbnRyeSA9IGxvY2tGaWxlU3RhY2suZmluZCgoZW50cnkpID0+IHtcclxuICAgICAgaWYgKGVudHJ5LmRlcGVuZGVuY2llcykge1xyXG4gICAgICAgIHJldHVybiBlbnRyeS5kZXBlbmRlbmNpZXMgJiYgcGFja2FnZURldGFpbHMubmFtZSBpbiBlbnRyeS5kZXBlbmRlbmNpZXNcclxuICAgICAgfSBlbHNlIGlmIChlbnRyeS5wYWNrYWdlcykge1xyXG4gICAgICAgIHJldHVybiBlbnRyeS5wYWNrYWdlcyAmJiBwYWNrYWdlRGV0YWlscy5wYXRoIGluIGVudHJ5LnBhY2thZ2VzXHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgZGVwZW5kZW5jaWVzIG9yIHBhY2thZ2VzIGluIGxvY2tmaWxlXCIpXHJcbiAgICB9KVxyXG4gICAgY29uc3QgcGtnID0gcmVsZXZhbnRTdGFja0VudHJ5LmRlcGVuZGVuY2llc1xyXG4gICAgICA/IHJlbGV2YW50U3RhY2tFbnRyeS5kZXBlbmRlbmNpZXNbcGFja2FnZURldGFpbHMubmFtZV1cclxuICAgICAgOiByZWxldmFudFN0YWNrRW50cnkucGFja2FnZXNbcGFja2FnZURldGFpbHMucGF0aF1cclxuICAgIHJldHVybiBwa2cucmVzb2x2ZWQgfHwgcGtnLnZlcnNpb24gfHwgcGtnLmZyb21cclxuICB9XHJcbn1cclxuXHJcbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xyXG4gIGNvbnN0IHBhY2thZ2VEZXRhaWxzID0gZ2V0UGF0Y2hEZXRhaWxzRnJvbUNsaVN0cmluZyhwcm9jZXNzLmFyZ3ZbMl0pXHJcbiAgaWYgKCFwYWNrYWdlRGV0YWlscykge1xyXG4gICAgY29uc29sZS5sb2coYENhbid0IGZpbmQgcGFja2FnZSAke3Byb2Nlc3MuYXJndlsyXX1gKVxyXG4gICAgcHJvY2Vzcy5leGl0KDEpXHJcbiAgfVxyXG4gIGNvbnNvbGUubG9nKFxyXG4gICAgZ2V0UGFja2FnZVJlc29sdXRpb24oe1xyXG4gICAgICBhcHBQYXRoOiBwcm9jZXNzLmN3ZCgpLFxyXG4gICAgICBwYWNrYWdlRGV0YWlscyxcclxuICAgICAgcGFja2FnZU1hbmFnZXI6IGRldGVjdFBhY2thZ2VNYW5hZ2VyKHByb2Nlc3MuY3dkKCksIG51bGwpLFxyXG4gICAgfSksXHJcbiAgKVxyXG59XHJcbiJdfQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UGFja2FnZVJlc29sdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0UGFja2FnZVJlc29sdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSxvREFnSkM7QUEvSkQsaUNBQXNDO0FBQ3RDLHFEQUErRTtBQUMvRSxpRUFJK0I7QUFDL0IsdUNBQW1EO0FBQ25ELGdEQUE4RDtBQUM5RCxnREFBdUI7QUFDdkIsd0ZBQXdEO0FBQ3hELDJEQUF1RDtBQUN2RCxpREFBNkM7QUFDN0MseURBQTJFO0FBRTNFLFNBQWdCLG9CQUFvQixDQUFDLEVBQ25DLGNBQWMsRUFDZCxjQUFjLEVBQ2QsT0FBTyxHQUtSO0lBQ0MsSUFBSSxjQUFjLEtBQUssTUFBTSxJQUFJLGNBQWMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUMxRCxNQUFNLEtBQUssR0FBRyxjQUFjLEtBQUssS0FBSyxDQUFBO1FBQ3RDLElBQUksV0FBZ0MsQ0FBQTtRQUVwQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsOENBQThDO1lBQzlDLG1FQUFtRTtZQUNuRSxrREFBa0Q7WUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBQSwwQ0FBbUIsRUFBQyxPQUFPLENBQUMsQ0FBQTtZQUNoRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtZQUMxRCxDQUFDO1lBQ0QsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLDBEQUEwRDtnQkFDMUQsc0VBQXNFO2dCQUN0RSxXQUFXLEdBQUcsSUFBQSx1Q0FBb0IsRUFBQyxXQUFXLENBQUMsQ0FBQTtZQUNqRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sa0VBQWtFO2dCQUNsRSwrQ0FBK0M7Z0JBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUEsbUNBQWdCLEVBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQ3BELE1BQU0s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QUMsQ0FBQTtRQUNwRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFBO0lBQ2hELENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO0lBQzVCLE1BQU0sY0FBYyxHQUFHLElBQUEsNkNBQTRCLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3BFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUNULG9CQUFvQixDQUFDO1FBQ25CLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3RCLGNBQWM7UUFDZCxjQUFjLEVBQUUsSUFBQSwyQ0FBb0IsRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDO0tBQzFELENBQUMsQ0FDSCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCB7IFBhY2thZ2VEZXRhaWxzLCBnZXRQYXRjaERldGFpbHNGcm9tQ2xpU3RyaW5nIH0gZnJvbSBcIi4vUGFja2FnZURldGFpbHNcIlxuaW1wb3J0IHtcbiAgUGFja2FnZU1hbmFnZXIsXG4gIGRldGVjdFBhY2thZ2VNYW5hZ2VyLFxuICBmaW5kQnVuTG9ja2ZpbGVQYXRoLFxufSBmcm9tIFwiLi9kZXRlY3RQYWNrYWdlTWFuYWdlclwiXG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIGV4aXN0c1N5bmMgfSBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHsgcGFyc2UgYXMgcGFyc2VZYXJuTG9ja0ZpbGUgfSBmcm9tIFwiQHlhcm5wa2cvbG9ja2ZpbGVcIlxuaW1wb3J0IHlhbWwgZnJvbSBcInlhbWxcIlxuaW1wb3J0IGZpbmRXb3Jrc3BhY2VSb290IGZyb20gXCJmaW5kLXlhcm4td29ya3NwYWNlLXJvb3RcIlxuaW1wb3J0IHsgZ2V0UGFja2FnZVZlcnNpb24gfSBmcm9tIFwiLi9nZXRQYWNrYWdlVmVyc2lvblwiXG5pbXBvcnQgeyBjb2VyY2VTZW1WZXIgfSBmcm9tIFwiLi9jb2VyY2VTZW1WZXJcIlxuaW1wb3J0IHsgcGFyc2VCdW5Mb2NrZmlsZSwgcGFyc2VCdW5Mb2NrVGV4dEZpbGUgfSBmcm9tIFwiLi9wYXJzZUJ1bkxvY2tmaWxlXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VSZXNvbHV0aW9uKHtcbiAgcGFja2FnZURldGFpbHMsXG4gIHBhY2thZ2VNYW5hZ2VyLFxuICBhcHBQYXRoLFxufToge1xuICBwYWNrYWdlRGV0YWlsczogUGFja2FnZURldGFpbHNcbiAgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyXG4gIGFwcFBhdGg6IHN0cmluZ1xufSkge1xuICBpZiAocGFja2FnZU1hbmFnZXIgPT09IFwieWFyblwiIHx8IHBhY2thZ2VNYW5hZ2VyID09PSBcImJ1blwiKSB7XG4gICAgY29uc3QgaXNCdW4gPSBwYWNrYWdlTWFuYWdlciA9PT0gXCJidW5cIlxuICAgIGxldCBhcHBMb2NrRmlsZTogUmVjb3JkPHN0cmluZywgYW55PlxuXG4gICAgaWYgKGlzQnVuKSB7XG4gICAgICAvLyBCdW4gbG9ja2ZpbGUgcmVzb2x1dGlvbi4gVHdvIGZvcm1hdHMgZXhpc3Q6XG4gICAgICAvLyAgIC0gYnVuLmxvY2sgICA6IHRleHQvSlNPTkMsIEJ1biA+PSAxLjIgKGluY2wuIDEuMy4xNCkg4oCUIGRlZmF1bHRcbiAgICAgIC8vICAgLSBidW4ubG9ja2IgIDogYmluYXJ5LCAgICAgQnVuIDwgMS4yIOKAlCBsZWdhY3lcbiAgICAgIGNvbnN0IGJ1bkxvY2tQYXRoID0gZmluZEJ1bkxvY2tmaWxlUGF0aChhcHBQYXRoKVxuICAgICAgaWYgKCFidW5Mb2NrUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgYnVuLmxvY2sgb3IgYnVuLmxvY2tiIGZpbGVgKVxuICAgICAgfVxuICAgICAgaWYgKGJ1bkxvY2tQYXRoLmVuZHNXaXRoKFwiYnVuLmxvY2tcIikpIHtcbiAgICAgICAgLy8gTmV3IHRleHQgZm9ybWF0LiBwYXJzZUJ1bkxvY2tUZXh0RmlsZSBhbHJlYWR5IHJldHVybnMgYVxuICAgICAgICAvLyB5YXJuLXYxLWNvbXBhdGlibGUgb2JqZWN0LCBzbyB3ZSBjYW4gc2tpcCB0aGUgeWFybiBsb2NrZmlsZSBwYXJzZXIuXG4gICAgICAgIGFwcExvY2tGaWxlID0gcGFyc2VCdW5Mb2NrVGV4dEZpbGUoYnVuTG9ja1BhdGgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMZWdhY3kgYmluYXJ5IGZvcm1hdDogZHVtcCB0byB5YXJuLXYxIHRleHQgdmlhIGBidW4gYnVuLmxvY2tiYCxcbiAgICAgICAgLy8gdGhlbiBwYXJzZSBpdCB3aXRoIHRoZSB5YXJuIGxvY2tmaWxlIHBhcnNlci5cbiAgICAgICAgY29uc3QgbG9ja0ZpbGVTdHJpbmcgPSBwYXJzZUJ1bkxvY2tmaWxlKGJ1bkxvY2tQYXRoKVxuICAgICAgICBjb25zdCBwYXJzZWRZYXJuTG9ja0ZpbGUgPSBwYXJzZVlhcm5Mb2NrRmlsZShsb2NrRmlsZVN0cmluZylcbiAgICAgICAgaWYgKHBhcnNlZFlhcm5Mb2NrRmlsZS50eXBlICE9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDb3VsZCBub3QgcGFyc2UgeWFybiB2MSBsb2NrIGZpbGUgLSB3YXMgb3JpZ2luYWxseSBhIGJ1bi5sb2NrYiBmaWxlYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYXBwTG9ja0ZpbGUgPSBwYXJzZWRZYXJuTG9ja0ZpbGUub2JqZWN0XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHlhcm5cbiAgICAgIGNvbnN0IGxvY2tGaWxlTmFtZSA9IFwieWFybi5sb2NrXCJcbiAgICAgIGxldCBsb2NrRmlsZVBhdGggPSBsb2NrRmlsZU5hbWVcbiAgICAgIGlmICghZXhpc3RzU3luYyhsb2NrRmlsZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZVJvb3QgPSBmaW5kV29ya3NwYWNlUm9vdCgpXG4gICAgICAgIGlmICghd29ya3NwYWNlUm9vdCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCAke2xvY2tGaWxlTmFtZX0gZmlsZWApXG4gICAgICAgIH1cbiAgICAgICAgbG9ja0ZpbGVQYXRoID0gam9pbih3b3Jrc3BhY2VSb290LCBsb2NrRmlsZVBhdGgpXG4gICAgICB9XG4gICAgICBpZiAoIWV4aXN0c1N5bmMobG9ja0ZpbGVQYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgJHtsb2NrRmlsZU5hbWV9IGZpbGVgKVxuICAgICAgfVxuICAgICAgY29uc3QgbG9ja0ZpbGVTdHJpbmcgPSByZWFkRmlsZVN5bmMobG9ja0ZpbGVQYXRoKS50b1N0cmluZygpXG4gICAgICBpZiAobG9ja0ZpbGVTdHJpbmcuaW5jbHVkZXMoXCJ5YXJuIGxvY2tmaWxlIHYxXCIpKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFlhcm5Mb2NrRmlsZSA9IHBhcnNlWWFybkxvY2tGaWxlKGxvY2tGaWxlU3RyaW5nKVxuICAgICAgICBpZiAocGFyc2VkWWFybkxvY2tGaWxlLnR5cGUgIT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgeWFybiB2MSBsb2NrIGZpbGVgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFwcExvY2tGaWxlID0gcGFyc2VkWWFybkxvY2tGaWxlLm9iamVjdFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGFwcExvY2tGaWxlID0geWFtbC5wYXJzZShsb2NrRmlsZVN0cmluZylcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGUpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgeWFybiB2MiBsb2NrIGZpbGVgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFsbGVkVmVyc2lvbiA9IGdldFBhY2thZ2VWZXJzaW9uKFxuICAgICAgam9pbihyZXNvbHZlKGFwcFBhdGgsIHBhY2thZ2VEZXRhaWxzLnBhdGgpLCBcInBhY2thZ2UuanNvblwiKSxcbiAgICApXG5cbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoYXBwTG9ja0ZpbGUpLmZpbHRlcihcbiAgICAgIChbaywgdl0pID0+XG4gICAgICAgIGsuc3RhcnRzV2l0aChwYWNrYWdlRGV0YWlscy5uYW1lICsgXCJAXCIpICYmXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29lcmNlU2VtVmVyKHYudmVyc2lvbikgPT09IGNvZXJjZVNlbVZlcihpbnN0YWxsZWRWZXJzaW9uKSxcbiAgICApXG5cbiAgICBjb25zdCByZXNvbHV0aW9ucyA9IGVudHJpZXMubWFwKChbXywgdl0pID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiB2LnJlc29sdmVkXG4gICAgfSlcblxuICAgIGlmIChyZXNvbHV0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFxcYCR7cGFja2FnZURldGFpbHMucGF0aFNwZWNpZmllcn1cXGAncyBpbnN0YWxsZWQgdmVyc2lvbiBpcyAke2luc3RhbGxlZFZlcnNpb259IGJ1dCBhIGxvY2tmaWxlIGVudHJ5IGZvciBpdCBjb3VsZG4ndCBiZSBmb3VuZC4gWW91ciBsb2NrZmlsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCBvciB5b3UgZm9yZ290IHRvIHJlaW5zdGFsbCB5b3VyIHBhY2thZ2VzLmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKG5ldyBTZXQocmVzb2x1dGlvbnMpLnNpemUgIT09IDEpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQW1iaWdpb3VzIGxvY2tmaWxlIGVudHJpZXMgZm9yICR7cGFja2FnZURldGFpbHMucGF0aFNwZWNpZmllcn0uIFVzaW5nIHZlcnNpb24gJHtpbnN0YWxsZWRWZXJzaW9ufWAsXG4gICAgICApXG4gICAgICByZXR1cm4gaW5zdGFsbGVkVmVyc2lvblxuICAgIH1cblxuICAgIGlmIChyZXNvbHV0aW9uc1swXSkge1xuICAgICAgcmV0dXJuIHJlc29sdXRpb25zWzBdXG4gICAgfVxuXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IGVudHJpZXNbMF1bMF0uc2xpY2UocGFja2FnZURldGFpbHMubmFtZS5sZW5ndGggKyAxKVxuXG4gICAgLy8gcmVzb2x2ZSByZWxhdGl2ZSBmaWxlIHBhdGhcbiAgICBpZiAocmVzb2x1dGlvbi5zdGFydHNXaXRoKFwiZmlsZTouXCIpKSB7XG4gICAgICByZXR1cm4gYGZpbGU6JHtyZXNvbHZlKGFwcFBhdGgsIHJlc29sdXRpb24uc2xpY2UoXCJmaWxlOlwiLmxlbmd0aCkpfWBcbiAgICB9XG5cbiAgICBpZiAocmVzb2x1dGlvbi5zdGFydHNXaXRoKFwibnBtOlwiKSkge1xuICAgICAgcmV0dXJuIHJlc29sdXRpb24ucmVwbGFjZShcIm5wbTpcIiwgXCJcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x1dGlvblxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxvY2tmaWxlID0gcmVxdWlyZShcbiAgICAgIGpvaW4oXG4gICAgICAgIGFwcFBhdGgsXG4gICAgICAgIHBhY2thZ2VNYW5hZ2VyID09PSBcIm5wbS1zaHJpbmt3cmFwXCJcbiAgICAgICAgICA/IFwibnBtLXNocmlua3dyYXAuanNvblwiXG4gICAgICAgICAgOiBcInBhY2thZ2UtbG9jay5qc29uXCIsXG4gICAgICApLFxuICAgIClcbiAgICBjb25zdCBsb2NrRmlsZVN0YWNrID0gW2xvY2tmaWxlXVxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBwYWNrYWdlRGV0YWlscy5wYWNrYWdlTmFtZXMuc2xpY2UoMCwgLTEpKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGxvY2tGaWxlU3RhY2tbMF0uZGVwZW5kZW5jaWVzXG4gICAgICBpZiAoY2hpbGQgJiYgbmFtZSBpbiBjaGlsZCkge1xuICAgICAgICBsb2NrRmlsZVN0YWNrLnB1c2goY2hpbGRbbmFtZV0pXG4gICAgICB9XG4gICAgfVxuICAgIGxvY2tGaWxlU3RhY2sucmV2ZXJzZSgpXG4gICAgY29uc3QgcmVsZXZhbnRTdGFja0VudHJ5ID0gbG9ja0ZpbGVTdGFjay5maW5kKChlbnRyeSkgPT4ge1xuICAgICAgaWYgKGVudHJ5LmRlcGVuZGVuY2llcykge1xuICAgICAgICByZXR1cm4gZW50cnkuZGVwZW5kZW5jaWVzICYmIHBhY2thZ2VEZXRhaWxzLm5hbWUgaW4gZW50cnkuZGVwZW5kZW5jaWVzXG4gICAgICB9IGVsc2UgaWYgKGVudHJ5LnBhY2thZ2VzKSB7XG4gICAgICAgIHJldHVybiBlbnRyeS5wYWNrYWdlcyAmJiBwYWNrYWdlRGV0YWlscy5wYXRoIGluIGVudHJ5LnBhY2thZ2VzXG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBkZXBlbmRlbmNpZXMgb3IgcGFja2FnZXMgaW4gbG9ja2ZpbGVcIilcbiAgICB9KVxuICAgIGNvbnN0IHBrZyA9IHJlbGV2YW50U3RhY2tFbnRyeS5kZXBlbmRlbmNpZXNcbiAgICAgID8gcmVsZXZhbnRTdGFja0VudHJ5LmRlcGVuZGVuY2llc1twYWNrYWdlRGV0YWlscy5uYW1lXVxuICAgICAgOiByZWxldmFudFN0YWNrRW50cnkucGFja2FnZXNbcGFja2FnZURldGFpbHMucGF0aF1cbiAgICByZXR1cm4gcGtnLnJlc29sdmVkIHx8IHBrZy52ZXJzaW9uIHx8IHBrZy5mcm9tXG4gIH1cbn1cblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IHBhY2thZ2VEZXRhaWxzID0gZ2V0UGF0Y2hEZXRhaWxzRnJvbUNsaVN0cmluZyhwcm9jZXNzLmFyZ3ZbMl0pXG4gIGlmICghcGFja2FnZURldGFpbHMpIHtcbiAgICBjb25zb2xlLmxvZyhgQ2FuJ3QgZmluZCBwYWNrYWdlICR7cHJvY2Vzcy5hcmd2WzJdfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgY29uc29sZS5sb2coXG4gICAgZ2V0UGFja2FnZVJlc29sdXRpb24oe1xuICAgICAgYXBwUGF0aDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIHBhY2thZ2VEZXRhaWxzLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IGRldGVjdFBhY2thZ2VNYW5hZ2VyKHByb2Nlc3MuY3dkKCksIG51bGwpLFxuICAgIH0pLFxuICApXG59XG4iXX0=
|
package/dist/parseBunLockfile.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseBunLockfile = parseBunLockfile;
|
|
4
|
+
exports.parseBunLockTextFile = parseBunLockTextFile;
|
|
4
5
|
const child_process_1 = require("child_process");
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
const fs_extra_1 = require("fs-extra");
|
|
7
|
+
/**
|
|
8
|
+
* Parses the legacy `bun.lockb` binary lockfile (Bun < 1.2) by running
|
|
9
|
+
* `bun <path>`, which prints the lockfile in yarn-v1 text format.
|
|
10
|
+
*
|
|
11
|
+
* Returns the yarn-v1 text so it can be fed to `@yarnpkg/lockfile`'s parser.
|
|
12
|
+
*/
|
|
7
13
|
function parseBunLockfile(lockFilePath) {
|
|
8
14
|
const process = (0, child_process_1.spawnSync)("bun", [lockFilePath], {
|
|
9
15
|
stdio: ["ignore", "pipe", "pipe"],
|
|
@@ -13,4 +19,83 @@ function parseBunLockfile(lockFilePath) {
|
|
|
13
19
|
}
|
|
14
20
|
return process.stdout.toString();
|
|
15
21
|
}
|
|
16
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Parses the new `bun.lock` text/JSONC lockfile (Bun >= 1.2, including
|
|
24
|
+
* 1.3.14) and converts it into a yarn-v1-lockfile-compatible object so the
|
|
25
|
+
* rest of the resolution logic can treat bun like yarn.
|
|
26
|
+
*
|
|
27
|
+
* Each package entry in `bun.lock` has the form:
|
|
28
|
+
*
|
|
29
|
+
* "name": ["full-specifier@version", "path", { ...metadata }, "integrity"]
|
|
30
|
+
*
|
|
31
|
+
* This is transformed to yarn v1 shape:
|
|
32
|
+
*
|
|
33
|
+
* "full-specifier@version": { version: "version", resolved: undefined }
|
|
34
|
+
*
|
|
35
|
+
* The `resolved` URL is not stored in `bun.lock` (only the integrity hash),
|
|
36
|
+
* so it is left `undefined`. The downstream resolution logic already falls
|
|
37
|
+
* back to the version/alias/file specifier when `resolved` is missing.
|
|
38
|
+
*/
|
|
39
|
+
function parseBunLockTextFile(lockFilePath) {
|
|
40
|
+
const raw = (0, fs_extra_1.readFileSync)(lockFilePath, "utf8");
|
|
41
|
+
const cleaned = stripJsonc(raw);
|
|
42
|
+
let data;
|
|
43
|
+
try {
|
|
44
|
+
data = JSON.parse(cleaned);
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
throw new Error(`Could not parse bun.lock file at ${lockFilePath}: ${e.message}`);
|
|
48
|
+
}
|
|
49
|
+
const packages = data.packages ?? {};
|
|
50
|
+
const result = {};
|
|
51
|
+
for (const entry of Object.values(packages)) {
|
|
52
|
+
if (!Array.isArray(entry))
|
|
53
|
+
continue;
|
|
54
|
+
const specifier = entry[0];
|
|
55
|
+
if (typeof specifier !== "string")
|
|
56
|
+
continue;
|
|
57
|
+
const version = extractVersion(specifier);
|
|
58
|
+
result[specifier] = { version, resolved: undefined };
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Extracts the version (or meaningful resolution token) from a bun.lock
|
|
64
|
+
* package specifier.
|
|
65
|
+
*
|
|
66
|
+
* Specifier forms handled:
|
|
67
|
+
* "name@1.2.3"
|
|
68
|
+
* "@scope/name@1.2.3"
|
|
69
|
+
* "npm:other-name@1.2.3"
|
|
70
|
+
* "file:./path"
|
|
71
|
+
* "workspace:^"
|
|
72
|
+
* "link:./path"
|
|
73
|
+
*/
|
|
74
|
+
function extractVersion(specifier) {
|
|
75
|
+
const prefixMatch = specifier.match(/^(npm:|file:|workspace:|link:)/);
|
|
76
|
+
if (prefixMatch) {
|
|
77
|
+
const rest = specifier.slice(prefixMatch[0].length);
|
|
78
|
+
const atIdx = rest.lastIndexOf("@");
|
|
79
|
+
if (atIdx > 0) {
|
|
80
|
+
return rest.slice(atIdx + 1);
|
|
81
|
+
}
|
|
82
|
+
return rest;
|
|
83
|
+
}
|
|
84
|
+
const atIdx = specifier.lastIndexOf("@");
|
|
85
|
+
if (atIdx > 0) {
|
|
86
|
+
return specifier.slice(atIdx + 1);
|
|
87
|
+
}
|
|
88
|
+
return specifier;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Strips JSONC extensions (// comments and trailing commas) so the file can
|
|
92
|
+
* be parsed with `JSON.parse`. Bun's `bun.lock` allows both.
|
|
93
|
+
*/
|
|
94
|
+
function stripJsonc(text) {
|
|
95
|
+
// Strip single-line `//` comments. (bun.lock does not use block comments.)
|
|
96
|
+
let out = text.replace(/^\s*\/\/.*$/gm, "");
|
|
97
|
+
// Remove trailing commas before } or ]
|
|
98
|
+
out = out.replace(/,(\s*[}\]])/g, "$1");
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VCdW5Mb2NrZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUJ1bkxvY2tmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsNENBVUM7QUFtQkQsb0RBdUJDO0FBN0RELGlEQUF5QztBQUN6Qyx1Q0FBdUM7QUFFdkM7Ozs7O0dBS0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxZQUFvQjtJQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUFTLEVBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDL0MsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7S0FDbEMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IseUJBQXlCLE9BQU8sQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUN4RSxDQUFBO0lBQ0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsWUFBb0I7SUFFcEIsTUFBTSxHQUFHLEdBQUcsSUFBQSx1QkFBWSxFQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUM5QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0IsSUFBSSxJQUE0QyxDQUFBO0lBQ2hELElBQUksQ0FBQztRQUNILElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixvQ0FBb0MsWUFBWSxLQUFNLENBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FDNUUsQ0FBQTtJQUNILENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQTtJQUNwQyxNQUFNLE1BQU0sR0FBMkQsRUFBRSxDQUFBO0lBQ3pFLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLFNBQVE7UUFDbkMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFCLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUTtZQUFFLFNBQVE7UUFDM0MsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUE7SUFDdEQsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBUyxjQUFjLENBQUMsU0FBaUI7SUFDdkMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0lBQ3JFLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDZCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxVQUFVLENBQUMsSUFBWTtJQUM5QiwyRUFBMkU7SUFDM0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDM0MsdUNBQXVDO0lBQ3ZDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN2QyxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3blN5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnMtZXh0cmFcIlxuXG4vKipcbiAqIFBhcnNlcyB0aGUgbGVnYWN5IGBidW4ubG9ja2JgIGJpbmFyeSBsb2NrZmlsZSAoQnVuIDwgMS4yKSBieSBydW5uaW5nXG4gKiBgYnVuIDxwYXRoPmAsIHdoaWNoIHByaW50cyB0aGUgbG9ja2ZpbGUgaW4geWFybi12MSB0ZXh0IGZvcm1hdC5cbiAqXG4gKiBSZXR1cm5zIHRoZSB5YXJuLXYxIHRleHQgc28gaXQgY2FuIGJlIGZlZCB0byBgQHlhcm5wa2cvbG9ja2ZpbGVgJ3MgcGFyc2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCdW5Mb2NrZmlsZShsb2NrRmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHByb2Nlc3MgPSBzcGF3blN5bmMoXCJidW5cIiwgW2xvY2tGaWxlUGF0aF0sIHtcbiAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXG4gIH0pXG4gIGlmIChwcm9jZXNzLnN0YXR1cyAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBCdW4gZXhpdGVkIHdpdGggY29kZTogJHtwcm9jZXNzLnN0YXR1c31cXG4ke3Byb2Nlc3Muc3RkZXJyLnRvU3RyaW5nKCl9YCxcbiAgICApXG4gIH1cbiAgcmV0dXJuIHByb2Nlc3Muc3Rkb3V0LnRvU3RyaW5nKClcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIG5ldyBgYnVuLmxvY2tgIHRleHQvSlNPTkMgbG9ja2ZpbGUgKEJ1biA+PSAxLjIsIGluY2x1ZGluZ1xuICogMS4zLjE0KSBhbmQgY29udmVydHMgaXQgaW50byBhIHlhcm4tdjEtbG9ja2ZpbGUtY29tcGF0aWJsZSBvYmplY3Qgc28gdGhlXG4gKiByZXN0IG9mIHRoZSByZXNvbHV0aW9uIGxvZ2ljIGNhbiB0cmVhdCBidW4gbGlrZSB5YXJuLlxuICpcbiAqIEVhY2ggcGFja2FnZSBlbnRyeSBpbiBgYnVuLmxvY2tgIGhhcyB0aGUgZm9ybTpcbiAqXG4gKiAgIFwibmFtZVwiOiBbXCJmdWxsLXNwZWNpZmllckB2ZXJzaW9uXCIsIFwicGF0aFwiLCB7IC4uLm1ldGFkYXRhIH0sIFwiaW50ZWdyaXR5XCJdXG4gKlxuICogVGhpcyBpcyB0cmFuc2Zvcm1lZCB0byB5YXJuIHYxIHNoYXBlOlxuICpcbiAqICAgXCJmdWxsLXNwZWNpZmllckB2ZXJzaW9uXCI6IHsgdmVyc2lvbjogXCJ2ZXJzaW9uXCIsIHJlc29sdmVkOiB1bmRlZmluZWQgfVxuICpcbiAqIFRoZSBgcmVzb2x2ZWRgIFVSTCBpcyBub3Qgc3RvcmVkIGluIGBidW4ubG9ja2AgKG9ubHkgdGhlIGludGVncml0eSBoYXNoKSxcbiAqIHNvIGl0IGlzIGxlZnQgYHVuZGVmaW5lZGAuIFRoZSBkb3duc3RyZWFtIHJlc29sdXRpb24gbG9naWMgYWxyZWFkeSBmYWxsc1xuICogYmFjayB0byB0aGUgdmVyc2lvbi9hbGlhcy9maWxlIHNwZWNpZmllciB3aGVuIGByZXNvbHZlZGAgaXMgbWlzc2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQnVuTG9ja1RleHRGaWxlKFxuICBsb2NrRmlsZVBhdGg6IHN0cmluZyxcbik6IFJlY29yZDxzdHJpbmcsIHsgdmVyc2lvbjogc3RyaW5nOyByZXNvbHZlZD86IHN0cmluZyB9PiB7XG4gIGNvbnN0IHJhdyA9IHJlYWRGaWxlU3luYyhsb2NrRmlsZVBhdGgsIFwidXRmOFwiKVxuICBjb25zdCBjbGVhbmVkID0gc3RyaXBKc29uYyhyYXcpXG4gIGxldCBkYXRhOiB7IHBhY2thZ2VzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfVxuICB0cnkge1xuICAgIGRhdGEgPSBKU09OLnBhcnNlKGNsZWFuZWQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ291bGQgbm90IHBhcnNlIGJ1bi5sb2NrIGZpbGUgYXQgJHtsb2NrRmlsZVBhdGh9OiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWAsXG4gICAgKVxuICB9XG4gIGNvbnN0IHBhY2thZ2VzID0gZGF0YS5wYWNrYWdlcyA/PyB7fVxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHsgdmVyc2lvbjogc3RyaW5nOyByZXNvbHZlZD86IHN0cmluZyB9PiA9IHt9XG4gIGZvciAoY29uc3QgZW50cnkgb2YgT2JqZWN0LnZhbHVlcyhwYWNrYWdlcykpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cnkpKSBjb250aW51ZVxuICAgIGNvbnN0IHNwZWNpZmllciA9IGVudHJ5WzBdXG4gICAgaWYgKHR5cGVvZiBzcGVjaWZpZXIgIT09IFwic3RyaW5nXCIpIGNvbnRpbnVlXG4gICAgY29uc3QgdmVyc2lvbiA9IGV4dHJhY3RWZXJzaW9uKHNwZWNpZmllcilcbiAgICByZXN1bHRbc3BlY2lmaWVyXSA9IHsgdmVyc2lvbiwgcmVzb2x2ZWQ6IHVuZGVmaW5lZCB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSB2ZXJzaW9uIChvciBtZWFuaW5nZnVsIHJlc29sdXRpb24gdG9rZW4pIGZyb20gYSBidW4ubG9ja1xuICogcGFja2FnZSBzcGVjaWZpZXIuXG4gKlxuICogU3BlY2lmaWVyIGZvcm1zIGhhbmRsZWQ6XG4gKiAgIFwibmFtZUAxLjIuM1wiXG4gKiAgIFwiQHNjb3BlL25hbWVAMS4yLjNcIlxuICogICBcIm5wbTpvdGhlci1uYW1lQDEuMi4zXCJcbiAqICAgXCJmaWxlOi4vcGF0aFwiXG4gKiAgIFwid29ya3NwYWNlOl5cIlxuICogICBcImxpbms6Li9wYXRoXCJcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdFZlcnNpb24oc3BlY2lmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwcmVmaXhNYXRjaCA9IHNwZWNpZmllci5tYXRjaCgvXihucG06fGZpbGU6fHdvcmtzcGFjZTp8bGluazopLylcbiAgaWYgKHByZWZpeE1hdGNoKSB7XG4gICAgY29uc3QgcmVzdCA9IHNwZWNpZmllci5zbGljZShwcmVmaXhNYXRjaFswXS5sZW5ndGgpXG4gICAgY29uc3QgYXRJZHggPSByZXN0Lmxhc3RJbmRleE9mKFwiQFwiKVxuICAgIGlmIChhdElkeCA+IDApIHtcbiAgICAgIHJldHVybiByZXN0LnNsaWNlKGF0SWR4ICsgMSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3RcbiAgfVxuICBjb25zdCBhdElkeCA9IHNwZWNpZmllci5sYXN0SW5kZXhPZihcIkBcIilcbiAgaWYgKGF0SWR4ID4gMCkge1xuICAgIHJldHVybiBzcGVjaWZpZXIuc2xpY2UoYXRJZHggKyAxKVxuICB9XG4gIHJldHVybiBzcGVjaWZpZXJcbn1cblxuLyoqXG4gKiBTdHJpcHMgSlNPTkMgZXh0ZW5zaW9ucyAoLy8gY29tbWVudHMgYW5kIHRyYWlsaW5nIGNvbW1hcykgc28gdGhlIGZpbGUgY2FuXG4gKiBiZSBwYXJzZWQgd2l0aCBgSlNPTi5wYXJzZWAuIEJ1bidzIGBidW4ubG9ja2AgYWxsb3dzIGJvdGguXG4gKi9cbmZ1bmN0aW9uIHN0cmlwSnNvbmModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gU3RyaXAgc2luZ2xlLWxpbmUgYC8vYCBjb21tZW50cy4gKGJ1bi5sb2NrIGRvZXMgbm90IHVzZSBibG9jayBjb21tZW50cy4pXG4gIGxldCBvdXQgPSB0ZXh0LnJlcGxhY2UoL15cXHMqXFwvXFwvLiokL2dtLCBcIlwiKVxuICAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWFzIGJlZm9yZSB9IG9yIF1cbiAgb3V0ID0gb3V0LnJlcGxhY2UoLywoXFxzKlt9XFxdXSkvZywgXCIkMVwiKVxuICByZXR1cm4gb3V0XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@psync/patch-package",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Fix broken node modules with no fuss",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": "github:New-Elysium/patch-package",
|
|
7
|
-
"author": "
|
|
8
|
-
"license": "
|
|
7
|
+
"author": "Srikanth Gopalakrishnan",
|
|
8
|
+
"license": "Apache-2.0",
|
|
9
9
|
"engines": {
|
|
10
|
-
"node": ">=
|
|
11
|
-
"npm": ">
|
|
10
|
+
"node": ">=24",
|
|
11
|
+
"npm": ">10",
|
|
12
12
|
"bun": ">=1.3.14"
|
|
13
13
|
},
|
|
14
14
|
"bin": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"ts-jest": "^29.4.0",
|
|
70
70
|
"ts-node": "^10.9.0",
|
|
71
71
|
"tslib": "^2.8.0",
|
|
72
|
-
"typescript": "^6.0.
|
|
72
|
+
"typescript": "^6.0.3"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@yarnpkg/lockfile": "^1.1.0",
|