@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.
@@ -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 lockfiles
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
- bunLockbExists,
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 (bunLockbExists) {
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0UGFja2FnZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGV0ZWN0UGFja2FnZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0RBQXlCO0FBQ3pCLGlDQUE2QjtBQUM3QixrREFBeUI7QUFDekIsc0RBQTZCO0FBQzdCLHdGQUF3RDtBQUl4RCxTQUFTLHdCQUF3QjtJQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDO0VBQ1osZUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksZUFBSyxDQUFDLEdBQUcsQ0FDdEMsb0VBQW9FLENBQ3JFO0NBQ0YsQ0FBQyxDQUFBO0FBQ0YsQ0FBQztBQUVELFNBQVMsdUJBQXVCO0lBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUM7RUFDWixlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxlQUFLLENBQUMsR0FBRyxDQUN0QyxtRUFBbUUsQ0FDcEU7Q0FDRixDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQsU0FBUyxxQkFBcUI7SUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQztFQUNaLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGVBQUssQ0FBQyxHQUFHLENBQ3RDOzs7Y0FHVSxDQUNYO0NBQ0YsQ0FBQyxDQUFBO0FBQ0YsQ0FBQztBQUVELFNBQVMsNEJBQTRCO0lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxlQUFLLENBQUMsSUFBSSxDQUNYLGVBQWUsQ0FDaEI7c0JBQ2lCLGVBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7Q0FHdEMsQ0FDRSxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0NBQWdDO0lBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxlQUFLLENBQUMsSUFBSSxDQUNYLGVBQWUsQ0FDaEI7c0JBQ2lCLGVBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOzs7Q0FHdkMsQ0FDRSxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsc0JBQTZDO0lBQ3pFLElBQUksc0JBQXNCLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDdEMsd0JBQXdCLEVBQUUsQ0FBQTtRQUMxQixpQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsc0JBQTZDO0lBQ3hFLElBQUksc0JBQXNCLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDckMsdUJBQXVCLEVBQUUsQ0FBQTtRQUN6QixpQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsV0FBbUIsRUFDbkIsc0JBQTZDLEVBQzdCLEVBQUU7SUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxrQkFBRSxDQUFDLFVBQVUsQ0FDckMsSUFBQSxXQUFJLEVBQUMsV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQ3ZDLENBQUE7SUFDRCxNQUFNLGdCQUFnQixHQUFHLGtCQUFFLENBQUMsVUFBVSxDQUNwQyxJQUFBLFdBQUksRUFBQyxXQUFXLEVBQUUscUJBQXFCLENBQUMsQ0FDekMsQ0FBQTtJQUNELE1BQU0sY0FBYyxHQUFHLGtCQUFFLENBQUMsVUFBVSxDQUNsQyxJQUFBLFdBQUksRUFBQyxJQUFBLGtDQUFpQixHQUFFLElBQUksV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUN0RCxDQUFBO0lBQ0QsbUdBQW1HO0lBQ25HLE1BQU0sY0FBYyxHQUFHLGtCQUFFLENBQUMsVUFBVSxDQUNsQyxJQUFBLFdBQUksRUFBQyxJQUFBLGtDQUFpQixHQUFFLElBQUksV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUN0RCxDQUFBO0lBQ0QsSUFDRTtRQUNFLGlCQUFpQixJQUFJLGdCQUFnQjtRQUNyQyxjQUFjO1FBQ2QsY0FBYztLQUNmLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzVCLENBQUM7UUFDRCxJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsT0FBTyxzQkFBc0IsQ0FBQTtRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QyxtR0FBbUc7WUFDbkcsZ0NBQWdDLEVBQUUsQ0FBQTtZQUNsQyxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFDRCw0QkFBNEIsRUFBRSxDQUFBO1FBQzlCLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDcEQsQ0FBQztTQUFNLElBQUksaUJBQWlCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQzVDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDM0MsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUNwRCxDQUFDO1NBQU0sSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMxQixtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQzNDLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztTQUFNLElBQUksY0FBYyxFQUFFLENBQUM7UUFDMUIsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUM1QyxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04scUJBQXFCLEVBQUUsQ0FBQTtRQUN2QixpQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsTUFBTSxLQUFLLEVBQUUsQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQWpEWSxRQUFBLG9CQUFvQix3QkFpRGhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXHJcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi9wYXRoXCJcclxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiXHJcbmltcG9ydCBwcm9jZXNzIGZyb20gXCJwcm9jZXNzXCJcclxuaW1wb3J0IGZpbmRXb3Jrc3BhY2VSb290IGZyb20gXCJmaW5kLXlhcm4td29ya3NwYWNlLXJvb3RcIlxyXG5cclxuZXhwb3J0IHR5cGUgUGFja2FnZU1hbmFnZXIgPSBcInlhcm5cIiB8IFwibnBtXCIgfCBcIm5wbS1zaHJpbmt3cmFwXCIgfCBcImJ1blwiXHJcblxyXG5mdW5jdGlvbiBwcmludE5vWWFybkxvY2tmaWxlRXJyb3IoKSB7XHJcbiAgY29uc29sZS5sb2coYFxyXG4ke2NoYWxrLnJlZC5ib2xkKFwiKipFUlJPUioqXCIpfSAke2NoYWxrLnJlZChcclxuICAgIGBUaGUgLS11c2UteWFybiBvcHRpb24gd2FzIHNwZWNpZmllZCBidXQgdGhlcmUgaXMgbm8geWFybi5sb2NrIGZpbGVgLFxyXG4gICl9XHJcbmApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByaW50Tm9CdW5Mb2NrZmlsZUVycm9yKCkge1xyXG4gIGNvbnNvbGUubG9nKGBcclxuJHtjaGFsay5yZWQuYm9sZChcIioqRVJST1IqKlwiKX0gJHtjaGFsay5yZWQoXHJcbiAgICBgVGhlIC0tdXNlLWJ1biBvcHRpb24gd2FzIHNwZWNpZmllZCBidXQgdGhlcmUgaXMgbm8gYnVuLmxvY2tiIGZpbGVgLFxyXG4gICl9XHJcbmApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByaW50Tm9Mb2NrZmlsZXNFcnJvcigpIHtcclxuICBjb25zb2xlLmxvZyhgXHJcbiR7Y2hhbGsucmVkLmJvbGQoXCIqKkVSUk9SKipcIil9ICR7Y2hhbGsucmVkKFxyXG4gICAgYE5vIHBhY2thZ2UtbG9jay5qc29uLCBucG0tc2hyaW5rd3JhcC5qc29uLCB5YXJuLmxvY2ssIG9yIGJ1bi5sb2NrYiBmaWxlLlxyXG5cclxuWW91IG11c3QgdXNlIGVpdGhlciBucG1APj01LCB5YXJuLCBucG0tc2hyaW5rd3JhcCwgb3IgYnVuIHRvIG1hbmFnZSB0aGlzIHByb2plY3Qnc1xyXG5kZXBlbmRlbmNpZXMuYCxcclxuICApfVxyXG5gKVxyXG59XHJcblxyXG5mdW5jdGlvbiBwcmludFNlbGVjdGluZ0RlZmF1bHRNZXNzYWdlKCkge1xyXG4gIGNvbnNvbGUuaW5mbyhcclxuICAgIGAke2NoYWxrLmJvbGQoXHJcbiAgICAgIFwicGF0Y2gtcGFja2FnZVwiLFxyXG4gICAgKX06IHlvdSBoYXZlIG11bHRpcGxlIGxvY2tmaWxlcywgZS5nLiB5YXJuLmxvY2sgYW5kIHBhY2thZ2UtbG9jay5qc29uXHJcbkRlZmF1bHRpbmcgdG8gdXNpbmcgJHtjaGFsay5ib2xkKFwibnBtXCIpfVxyXG5Zb3UgY2FuIG92ZXJyaWRlIHRoaXMgc2V0dGluZyBieSBwYXNzaW5nIC0tdXNlLXlhcm4sIC0tdXNlLWJ1biwgb3JcclxuZGVsZXRpbmcgdGhlIGNvbmZsaWN0aW5nIGxvY2tmaWxlIGlmIHlvdSBkb24ndCBuZWVkIGl0XHJcbmAsXHJcbiAgKVxyXG59XHJcblxyXG5mdW5jdGlvbiBwcmludFNlbGVjdGluZ0RlZmF1bHRZYXJuTWVzc2FnZSgpIHtcclxuICBjb25zb2xlLmluZm8oXHJcbiAgICBgJHtjaGFsay5ib2xkKFxyXG4gICAgICBcInBhdGNoLXBhY2thZ2VcIixcclxuICAgICl9OiB5b3UgaGF2ZSBib3RoIHlhcm4ubG9jayBhbmQgYnVuLmxvY2tiIGxvY2tmaWxlc1xyXG5EZWZhdWx0aW5nIHRvIHVzaW5nICR7Y2hhbGsuYm9sZChcInlhcm5cIil9XHJcbllvdSBjYW4gb3ZlcnJpZGUgdGhpcyBzZXR0aW5nIGJ5IHBhc3NpbmcgLS11c2UtYnVuLCBvclxyXG5kZWxldGluZyB5YXJuLmxvY2sgaWYgeW91IGRvbid0IG5lZWQgaXRcclxuYCxcclxuICApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrRm9yWWFybk92ZXJyaWRlKG92ZXJyaWRlUGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyIHwgbnVsbCkge1xyXG4gIGlmIChvdmVycmlkZVBhY2thZ2VNYW5hZ2VyID09PSBcInlhcm5cIikge1xyXG4gICAgcHJpbnROb1lhcm5Mb2NrZmlsZUVycm9yKClcclxuICAgIHByb2Nlc3MuZXhpdCgxKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gY2hlY2tGb3JCdW5PdmVycmlkZShvdmVycmlkZVBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlciB8IG51bGwpIHtcclxuICBpZiAob3ZlcnJpZGVQYWNrYWdlTWFuYWdlciA9PT0gXCJidW5cIikge1xyXG4gICAgcHJpbnROb0J1bkxvY2tmaWxlRXJyb3IoKVxyXG4gICAgcHJvY2Vzcy5leGl0KDEpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZGV0ZWN0UGFja2FnZU1hbmFnZXIgPSAoXHJcbiAgYXBwUm9vdFBhdGg6IHN0cmluZyxcclxuICBvdmVycmlkZVBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlciB8IG51bGwsXHJcbik6IFBhY2thZ2VNYW5hZ2VyID0+IHtcclxuICBjb25zdCBwYWNrYWdlTG9ja0V4aXN0cyA9IGZzLmV4aXN0c1N5bmMoXHJcbiAgICBqb2luKGFwcFJvb3RQYXRoLCBcInBhY2thZ2UtbG9jay5qc29uXCIpLFxyXG4gIClcclxuICBjb25zdCBzaHJpbmtXcmFwRXhpc3RzID0gZnMuZXhpc3RzU3luYyhcclxuICAgIGpvaW4oYXBwUm9vdFBhdGgsIFwibnBtLXNocmlua3dyYXAuanNvblwiKSxcclxuICApXHJcbiAgY29uc3QgeWFybkxvY2tFeGlzdHMgPSBmcy5leGlzdHNTeW5jKFxyXG4gICAgam9pbihmaW5kV29ya3NwYWNlUm9vdCgpID8/IGFwcFJvb3RQYXRoLCBcInlhcm4ubG9ja1wiKSxcclxuICApXHJcbiAgLy8gQnVuIHdvcmtzcGFjZXMgc2VlbSB0byB3b3JrIHRoZSBzYW1lIGFzIHlhcm4gd29ya3NwYWNlcyAtIGh0dHBzOi8vYnVuLnNoL2RvY3MvaW5zdGFsbC93b3Jrc3BhY2VzXHJcbiAgY29uc3QgYnVuTG9ja2JFeGlzdHMgPSBmcy5leGlzdHNTeW5jKFxyXG4gICAgam9pbihmaW5kV29ya3NwYWNlUm9vdCgpID8/IGFwcFJvb3RQYXRoLCBcImJ1bi5sb2NrYlwiKSxcclxuICApXHJcbiAgaWYgKFxyXG4gICAgW1xyXG4gICAgICBwYWNrYWdlTG9ja0V4aXN0cyB8fCBzaHJpbmtXcmFwRXhpc3RzLFxyXG4gICAgICB5YXJuTG9ja0V4aXN0cyxcclxuICAgICAgYnVuTG9ja2JFeGlzdHMsXHJcbiAgICBdLmZpbHRlcihCb29sZWFuKS5sZW5ndGggPiAxXHJcbiAgKSB7XHJcbiAgICBpZiAob3ZlcnJpZGVQYWNrYWdlTWFuYWdlcikge1xyXG4gICAgICByZXR1cm4gb3ZlcnJpZGVQYWNrYWdlTWFuYWdlclxyXG4gICAgfVxyXG4gICAgaWYgKCFwYWNrYWdlTG9ja0V4aXN0cyAmJiAhc2hyaW5rV3JhcEV4aXN0cykge1xyXG4gICAgICAvLyBUaGUgb25seSBjYXNlIHdoZXJlIHdlIGRvbid0IHdhbnQgdG8gZGVmYXVsdCB0byBucG0gaXMgd2hlbiB3ZSBoYXZlIGJvdGggeWFybiBhbmQgYnVuIGxvY2tmaWxlcy5cclxuICAgICAgcHJpbnRTZWxlY3RpbmdEZWZhdWx0WWFybk1lc3NhZ2UoKVxyXG4gICAgICByZXR1cm4gXCJ5YXJuXCJcclxuICAgIH1cclxuICAgIHByaW50U2VsZWN0aW5nRGVmYXVsdE1lc3NhZ2UoKVxyXG4gICAgcmV0dXJuIHNocmlua1dyYXBFeGlzdHMgPyBcIm5wbS1zaHJpbmt3cmFwXCIgOiBcIm5wbVwiXHJcbiAgfSBlbHNlIGlmIChwYWNrYWdlTG9ja0V4aXN0cyB8fCBzaHJpbmtXcmFwRXhpc3RzKSB7XHJcbiAgICBjaGVja0Zvcllhcm5PdmVycmlkZShvdmVycmlkZVBhY2thZ2VNYW5hZ2VyKVxyXG4gICAgY2hlY2tGb3JCdW5PdmVycmlkZShvdmVycmlkZVBhY2thZ2VNYW5hZ2VyKVxyXG4gICAgcmV0dXJuIHNocmlua1dyYXBFeGlzdHMgPyBcIm5wbS1zaHJpbmt3cmFwXCIgOiBcIm5wbVwiXHJcbiAgfSBlbHNlIGlmICh5YXJuTG9ja0V4aXN0cykge1xyXG4gICAgY2hlY2tGb3JCdW5PdmVycmlkZShvdmVycmlkZVBhY2thZ2VNYW5hZ2VyKVxyXG4gICAgcmV0dXJuIFwieWFyblwiXHJcbiAgfSBlbHNlIGlmIChidW5Mb2NrYkV4aXN0cykge1xyXG4gICAgY2hlY2tGb3JZYXJuT3ZlcnJpZGUob3ZlcnJpZGVQYWNrYWdlTWFuYWdlcilcclxuICAgIHJldHVybiBcImJ1blwiXHJcbiAgfSBlbHNlIHtcclxuICAgIHByaW50Tm9Mb2NrZmlsZXNFcnJvcigpXHJcbiAgICBwcm9jZXNzLmV4aXQoMSlcclxuICB9XHJcbiAgdGhyb3cgRXJyb3IoKVxyXG59XHJcbiJdfQ==
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 (lockFileString.includes("yarn lockfile v1")) {
37
- const parsedYarnLockFile = (0, lockfile_1.parse)(lockFileString);
38
- if (parsedYarnLockFile.type !== "success") {
39
- throw new Error(`Could not parse yarn v1 lock file ${isBun ? "- was originally a bun.lockb file" : ""}`);
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
- try {
47
- appLockFile = yaml_1.default.parse(lockFileString);
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
- catch (e) {
50
- console.log(e);
51
- throw new Error(`Could not parse yarn v2 lock file ${isBun ? "- was originally a bun.lockb file (should not happen)" : ""}`);
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=
@@ -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
- // Adapted from https://github.com/oven-sh/bun/blob/main/packages/bun-vscode/src/features/lockfile.ts,
6
- // rewritten to use spawnSync instead of spawn.
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VCdW5Mb2NrZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUJ1bkxvY2tmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsNENBVUM7QUFkRCxpREFBeUM7QUFFekMsc0dBQXNHO0FBQ3RHLCtDQUErQztBQUMvQyxTQUFnQixnQkFBZ0IsQ0FBQyxZQUFvQjtJQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUFTLEVBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDL0MsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7S0FDbEMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IseUJBQXlCLE9BQU8sQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUN4RSxDQUFBO0lBQ0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd25TeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxyXG5cclxuLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9vdmVuLXNoL2J1bi9ibG9iL21haW4vcGFja2FnZXMvYnVuLXZzY29kZS9zcmMvZmVhdHVyZXMvbG9ja2ZpbGUudHMsXHJcbi8vIHJld3JpdHRlbiB0byB1c2Ugc3Bhd25TeW5jIGluc3RlYWQgb2Ygc3Bhd24uXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUJ1bkxvY2tmaWxlKGxvY2tGaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCBwcm9jZXNzID0gc3Bhd25TeW5jKFwiYnVuXCIsIFtsb2NrRmlsZVBhdGhdLCB7XHJcbiAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXHJcbiAgfSlcclxuICBpZiAocHJvY2Vzcy5zdGF0dXMgIT09IDApIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgYEJ1biBleGl0ZWQgd2l0aCBjb2RlOiAke3Byb2Nlc3Muc3RhdHVzfVxcbiR7cHJvY2Vzcy5zdGRlcnIudG9TdHJpbmcoKX1gLFxyXG4gICAgKVxyXG4gIH1cclxuICByZXR1cm4gcHJvY2Vzcy5zdGRvdXQudG9TdHJpbmcoKVxyXG59XHJcbiJdfQ==
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.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": "David Sheldrick",
8
- "license": "MIT",
7
+ "author": "Srikanth Gopalakrishnan",
8
+ "license": "Apache-2.0",
9
9
  "engines": {
10
- "node": ">=14",
11
- "npm": ">5",
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.0"
72
+ "typescript": "^6.0.3"
73
73
  },
74
74
  "dependencies": {
75
75
  "@yarnpkg/lockfile": "^1.1.0",