@pubm/core 0.4.5 → 0.4.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,UAAU,EAEV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AA4BpB,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,CAAC,CAgD7B"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,UAAU,EAEV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AA6BpB,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,CAAC,CAgD7B"}
@@ -46,6 +46,7 @@ export interface PubmConfig {
46
46
  releaseDraft?: boolean;
47
47
  releaseNotes?: boolean;
48
48
  rollbackStrategy?: "individual" | "all";
49
+ lockfileSync?: "required" | "optional" | "skip";
49
50
  plugins?: PubmPlugin[];
50
51
  compress?: CompressOption;
51
52
  releaseAssets?: ReleaseAssetEntry[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export declare abstract class Ecosystem {
19
19
  readVersion(): Promise<string>;
20
20
  dependencies(): Promise<string[]>;
21
21
  updateSiblingDependencyVersions(_siblingVersions: Map<string, string>): Promise<boolean>;
22
- syncLockfile(): Promise<string | undefined>;
22
+ syncLockfile(_mode?: "required" | "optional" | "skip"): Promise<string | undefined>;
23
23
  /**
24
24
  * Temporarily resolve workspace-specific dependency references to concrete
25
25
  * versions for publishing. Returns a backup map (filePath → originalContent)
@@ -1 +1 @@
1
- {"version":3,"file":"ecosystem.d.ts","sourceRoot":"","sources":["../../src/ecosystem/ecosystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,8BAAsB,SAAS;IACV,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;IAEtC,QAAQ,CAAC,eAAe,IAAI,CAAC,OAAO,eAAe,CAAC,EAAE;IACtD,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACxD,QAAQ,CAAC,aAAa,IAAI,MAAM,EAAE;IAClC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IACvD,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IACxD,QAAQ,CAAC,mBAAmB,IAAI,YAAY,EAAE;IAC9C,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAEnD,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAYxC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAY1D,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIjC,+BAA+B,CACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,OAAO,CAAC;IAIb,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIjD;;;;;;;OAOG;IACG,0BAA0B,CAC9B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI/B;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;CAK/D"}
1
+ {"version":3,"file":"ecosystem.d.ts","sourceRoot":"","sources":["../../src/ecosystem/ecosystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,8BAAsB,SAAS;IACV,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;IAEtC,QAAQ,CAAC,eAAe,IAAI,CAAC,OAAO,eAAe,CAAC,EAAE;IACtD,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACxD,QAAQ,CAAC,aAAa,IAAI,MAAM,EAAE;IAClC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IACvD,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IACxD,QAAQ,CAAC,mBAAmB,IAAI,YAAY,EAAE;IAC9C,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAEnD,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAYxC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAY1D,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIjC,+BAA+B,CACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,OAAO,CAAC;IAIb,YAAY,CAChB,KAAK,GAAE,UAAU,GAAG,UAAU,GAAG,MAAmB,GACnD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9B;;;;;;;OAOG;IACG,0BAA0B,CAC9B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI/B;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;CAK/D"}
@@ -10,6 +10,14 @@ export declare class JsEcosystem extends Ecosystem {
10
10
  defaultTestCommand(): Promise<string>;
11
11
  defaultBuildCommand(): Promise<string>;
12
12
  supportedRegistries(): RegistryType[];
13
+ syncLockfile(mode?: "required" | "optional" | "skip"): Promise<string | undefined>;
14
+ /**
15
+ * Walk from packagePath upward to find the first JS lock file.
16
+ * In JS monorepos, the first lock file found ascending is the workspace root's.
17
+ * Nested lock files below a workspace root indicate a separate project boundary,
18
+ * not a workspace member.
19
+ */
20
+ private findLockfile;
13
21
  resolvePublishDependencies(workspaceVersions: Map<string, string>): Promise<Map<string, string>>;
14
22
  createDescriptor(): Promise<EcosystemDescriptor>;
15
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../src/ecosystem/js.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,WAAY,SAAQ,SAAS;WAC3B,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,eAAe,IAAI,CAAC,OAAO,eAAe,CAAC,EAAE;IAOvC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD,aAAa,IAAI,MAAM,EAAE;IAInB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5C,mBAAmB,IAAI,YAAY,EAAE;IAI/B,0BAA0B,CAC9B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyDzB,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAcvD"}
1
+ {"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../src/ecosystem/js.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,WAAY,SAAQ,SAAS;WAC3B,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,eAAe,IAAI,CAAC,OAAO,eAAe,CAAC,EAAE;IAOvC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD,aAAa,IAAI,MAAM,EAAE;IAInB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5C,mBAAmB,IAAI,YAAY,EAAE;IAI/B,YAAY,CAChB,IAAI,GAAE,UAAU,GAAG,UAAU,GAAG,MAAmB,GAClD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgC9B;;;;;OAKG;YACW,YAAY;IA0BpB,0BAA0B,CAC9B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyDzB,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAcvD"}
@@ -11,7 +11,7 @@ export declare class RustEcosystem extends Ecosystem {
11
11
  * This ensures `cargo publish` works when crates depend on each other via path.
12
12
  */
13
13
  updateSiblingDependencyVersions(siblingVersions: Map<string, string>): Promise<boolean>;
14
- syncLockfile(): Promise<string | undefined>;
14
+ syncLockfile(mode?: "required" | "optional" | "skip"): Promise<string | undefined>;
15
15
  private findLockfile;
16
16
  manifestFiles(): string[];
17
17
  defaultTestCommand(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../src/ecosystem/rust.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,qBAAa,aAAc,SAAQ,SAAS;WAC7B,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,eAAe,IAAI,CAAC,OAAO,eAAe,CAAC,EAAE;IAIvC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;;OAGG;IACG,+BAA+B,CACnC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,OAAO,CAAC;IAgCb,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAYnC,YAAY;IAe1B,aAAa,IAAI,MAAM,EAAE;IAIzB,kBAAkB,IAAI,MAAM;IAI5B,mBAAmB,IAAI,MAAM;IAI7B,mBAAmB,IAAI,YAAY,EAAE;IAI/B,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CASvD"}
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../src/ecosystem/rust.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,qBAAa,aAAc,SAAQ,SAAS;WAC7B,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,eAAe,IAAI,CAAC,OAAO,eAAe,CAAC,EAAE;IAIvC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;;OAGG;IACG,+BAA+B,CACnC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,OAAO,CAAC;IAgCb,YAAY,CAChB,IAAI,GAAE,UAAU,GAAG,UAAU,GAAG,MAAmB,GAClD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAqBhB,YAAY;IAe1B,aAAa,IAAI,MAAM,EAAE;IAIzB,kBAAkB,IAAI,MAAM;IAI5B,mBAAmB,IAAI,MAAM;IAI7B,mBAAmB,IAAI,YAAY,EAAE;IAI/B,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CASvD"}
package/dist/index.cjs CHANGED
@@ -23077,7 +23077,7 @@ function isValidPackageName(packageName) {
23077
23077
  // package.json
23078
23078
  var package_default = {
23079
23079
  name: "@pubm/core",
23080
- version: "0.4.5",
23080
+ version: "0.4.7",
23081
23081
  type: "module",
23082
23082
  description: "Core SDK for pubm - publish manager for multiple registries",
23083
23083
  types: "./dist/index.d.ts",
@@ -23151,7 +23151,7 @@ var coreEngines = package_default.engines ?? {};
23151
23151
  function resolveDefine(injected, fallback) {
23152
23152
  return typeof injected === "string" ? injected : fallback;
23153
23153
  }
23154
- var PUBM_VERSION = resolveDefine("0.4.5", package_default.version);
23154
+ var PUBM_VERSION = resolveDefine("0.4.7", package_default.version);
23155
23155
  var PUBM_ENGINES = {
23156
23156
  node: resolveDefine(">=24", coreEngines.node ?? ">=18"),
23157
23157
  git: resolveDefine(">=2.11.0", coreEngines.git ?? ">=2.11.0"),
@@ -24104,6 +24104,9 @@ async function npmPackageRegistry(packagePath) {
24104
24104
  return new NpmPackageRegistry(manifest.name, packagePath);
24105
24105
  }
24106
24106
 
24107
+ // src/ecosystem/js.ts
24108
+ init_exec();
24109
+
24107
24110
  // src/utils/package.ts
24108
24111
  var import_promises3 = require("node:fs/promises");
24109
24112
  var import_node_path10 = __toESM(require("node:path"));
@@ -24127,16 +24130,28 @@ async function findOutFile(file, { cwd = import_node_process10.default.cwd() } =
24127
24130
  }
24128
24131
 
24129
24132
  // src/utils/package-manager.ts
24130
- var lockFile = {
24133
+ var lockFiles = {
24131
24134
  bun: ["bun.lock", "bun.lockb"],
24132
24135
  npm: ["package-lock.json", "npm-shrinkwrap.json"],
24133
24136
  pnpm: ["pnpm-lock.yaml"],
24134
24137
  yarn: ["yarn.lock"]
24135
24138
  };
24139
+ function getInstallCommand(pm, isYarnBerry) {
24140
+ switch (pm) {
24141
+ case "bun":
24142
+ return ["bun", "install", "--lockfile-only"];
24143
+ case "npm":
24144
+ return ["npm", "install", "--package-lock-only"];
24145
+ case "pnpm":
24146
+ return ["pnpm", "install", "--lockfile-only"];
24147
+ case "yarn":
24148
+ return isYarnBerry ? ["yarn", "install", "--mode", "update-lockfile"] : ["yarn", "install"];
24149
+ }
24150
+ }
24136
24151
  async function getPackageManager() {
24137
- for (const [packageManager, lockFiles] of Object.entries(lockFile)) {
24138
- for (const lockFile2 of lockFiles) {
24139
- if (await findOutFile(lockFile2))
24152
+ for (const [packageManager, files] of Object.entries(lockFiles)) {
24153
+ for (const file of files) {
24154
+ if (await findOutFile(file))
24140
24155
  return packageManager;
24141
24156
  }
24142
24157
  }
@@ -24187,7 +24202,7 @@ class Ecosystem {
24187
24202
  async updateSiblingDependencyVersions(_siblingVersions) {
24188
24203
  return false;
24189
24204
  }
24190
- async syncLockfile() {
24205
+ async syncLockfile(_mode = "optional") {
24191
24206
  return;
24192
24207
  }
24193
24208
  async resolvePublishDependencies(_workspaceVersions) {
@@ -24268,6 +24283,55 @@ class JsEcosystem extends Ecosystem {
24268
24283
  supportedRegistries() {
24269
24284
  return ["npm", "jsr"];
24270
24285
  }
24286
+ async syncLockfile(mode = "optional") {
24287
+ if (mode === "skip")
24288
+ return;
24289
+ const found = await this.findLockfile();
24290
+ if (!found)
24291
+ return;
24292
+ const { lockfilePath, packageManager } = found;
24293
+ const lockfileDir = import_node_path11.default.dirname(lockfilePath);
24294
+ try {
24295
+ let isYarnBerry;
24296
+ if (packageManager === "yarn") {
24297
+ const yarnrcPath = import_node_path11.default.join(lockfileDir, ".yarnrc.yml");
24298
+ try {
24299
+ isYarnBerry = (await import_promises4.stat(yarnrcPath)).isFile();
24300
+ } catch {
24301
+ isYarnBerry = false;
24302
+ }
24303
+ }
24304
+ const [cmd, ...args] = getInstallCommand(packageManager, isYarnBerry);
24305
+ await exec3(cmd, args, { nodeOptions: { cwd: lockfileDir } });
24306
+ return lockfilePath;
24307
+ } catch (error2) {
24308
+ if (mode === "required")
24309
+ throw error2;
24310
+ console.warn(`Warning: Failed to sync lockfile at ${lockfilePath}: ${error2 instanceof Error ? error2.message : error2}`);
24311
+ return;
24312
+ }
24313
+ }
24314
+ async findLockfile() {
24315
+ let dir = this.packagePath;
24316
+ const { root } = import_node_path11.default.parse(dir);
24317
+ while (dir !== root) {
24318
+ for (const [pm, files] of Object.entries(lockFiles)) {
24319
+ for (const file of files) {
24320
+ const candidate = import_node_path11.default.join(dir, file);
24321
+ try {
24322
+ if ((await import_promises4.stat(candidate)).isFile()) {
24323
+ return {
24324
+ lockfilePath: candidate,
24325
+ packageManager: pm
24326
+ };
24327
+ }
24328
+ } catch {}
24329
+ }
24330
+ }
24331
+ dir = import_node_path11.default.dirname(dir);
24332
+ }
24333
+ return;
24334
+ }
24271
24335
  async resolvePublishDependencies(workspaceVersions) {
24272
24336
  const backups = new Map;
24273
24337
  const manifestPath = import_node_path11.default.join(this.packagePath, "package.json");
@@ -25645,15 +25709,24 @@ class RustEcosystem extends Ecosystem {
25645
25709
  }
25646
25710
  return modified;
25647
25711
  }
25648
- async syncLockfile() {
25712
+ async syncLockfile(mode = "optional") {
25713
+ if (mode === "skip")
25714
+ return;
25649
25715
  const lockfilePath = await this.findLockfile();
25650
25716
  if (!lockfilePath)
25651
25717
  return;
25652
- const name = await this.packageName();
25653
- await exec3("cargo", ["update", "--package", name], {
25654
- nodeOptions: { cwd: import_node_path13.default.dirname(lockfilePath) }
25655
- });
25656
- return lockfilePath;
25718
+ try {
25719
+ const name = await this.packageName();
25720
+ await exec3("cargo", ["update", "--package", name], {
25721
+ nodeOptions: { cwd: import_node_path13.default.dirname(lockfilePath) }
25722
+ });
25723
+ return lockfilePath;
25724
+ } catch (error2) {
25725
+ if (mode === "required")
25726
+ throw error2;
25727
+ console.warn(`Warning: Failed to sync lockfile at ${lockfilePath}: ${error2 instanceof Error ? error2.message : error2}`);
25728
+ return;
25729
+ }
25657
25730
  }
25658
25731
  async findLockfile() {
25659
25732
  let dir = this.packagePath;
@@ -25729,7 +25802,7 @@ init_error();
25729
25802
  init_git();
25730
25803
 
25731
25804
  // src/manifest/write-versions.ts
25732
- async function writeVersionsForEcosystem(ecosystems, versions) {
25805
+ async function writeVersionsForEcosystem(ecosystems, versions, lockfileSync) {
25733
25806
  const modifiedFiles = [];
25734
25807
  for (const { eco, pkg } of ecosystems) {
25735
25808
  const version = versions.get(pkg.path);
@@ -25750,10 +25823,13 @@ async function writeVersionsForEcosystem(ecosystems, versions) {
25750
25823
  }
25751
25824
  await Promise.all(ecosystems.map(({ eco }) => eco.updateSiblingDependencyVersions(nameKeyedVersions)));
25752
25825
  }
25826
+ const syncedLockfiles = new Set;
25753
25827
  for (const { eco } of ecosystems) {
25754
- const lockfilePath = await eco.syncLockfile();
25755
- if (lockfilePath)
25828
+ const lockfilePath = await eco.syncLockfile(lockfileSync);
25829
+ if (lockfilePath && !syncedLockfiles.has(lockfilePath)) {
25830
+ syncedLockfiles.add(lockfilePath);
25756
25831
  modifiedFiles.push(lockfilePath);
25832
+ }
25757
25833
  }
25758
25834
  return modifiedFiles;
25759
25835
  }
@@ -26996,10 +27072,10 @@ function readdirRecursiveNoSymlinks(dir, root) {
26996
27072
  continue;
26997
27073
  const fullPath = import_node_path16.default.join(dir, entry);
26998
27074
  try {
26999
- const stat5 = import_node_fs9.lstatSync(fullPath);
27000
- if (stat5.isSymbolicLink())
27075
+ const stat6 = import_node_fs9.lstatSync(fullPath);
27076
+ if (stat6.isSymbolicLink())
27001
27077
  continue;
27002
- if (stat5.isDirectory()) {
27078
+ if (stat6.isDirectory()) {
27003
27079
  results.push(import_node_path16.default.relative(root, fullPath));
27004
27080
  results.push(...readdirRecursiveNoSymlinks(fullPath, root));
27005
27081
  }
@@ -28393,7 +28469,7 @@ async function writeVersions(ctx, versions) {
28393
28469
  const eco = new descriptor.ecosystemClass(absPath);
28394
28470
  return { eco, pkg };
28395
28471
  });
28396
- const lockfileChanges = await writeVersionsForEcosystem(ecosystems, versions);
28472
+ const lockfileChanges = await writeVersionsForEcosystem(ecosystems, versions, ctx.config.lockfileSync);
28397
28473
  const manifestFiles = ecosystems.flatMap(({ eco }) => eco.manifestFiles().map((f2) => import_node_path20.default.resolve(eco.packagePath, f2)));
28398
28474
  return [...manifestFiles, ...lockfileChanges];
28399
28475
  }
@@ -29660,7 +29736,8 @@ var defaultConfig = {
29660
29736
  saveToken: true,
29661
29737
  releaseDraft: true,
29662
29738
  releaseNotes: true,
29663
- rollbackStrategy: "individual"
29739
+ rollbackStrategy: "individual",
29740
+ lockfileSync: "optional"
29664
29741
  };
29665
29742
  async function resolveConfig(config, cwd) {
29666
29743
  const resolvedCwd = cwd ?? process.cwd();
@@ -30901,6 +30978,7 @@ async function handleRemainingPackages(ctx, task, remainingPackages, packageInfo
30901
30978
  const versions = new Map([...bumps].map(([p2, b2]) => [p2, b2.newVersion]));
30902
30979
  const publishPaths = new Set(bumps.keys());
30903
30980
  const reverseDeps = buildReverseDeps(graph);
30981
+ let lastBumpType;
30904
30982
  for (const pkg of remainingPackages) {
30905
30983
  const currentVersion = currentVersions.get(pkg.path) ?? pkg.version;
30906
30984
  const deps = graph.get(pkg.path) ?? [];
@@ -30913,8 +30991,9 @@ async function handleRemainingPackages(ctx, task, remainingPackages, packageInfo
30913
30991
  if (pkgNotes.length > 0) {
30914
30992
  task.output = renderPackageVersionSummary(remainingPackages, currentVersions, versions, { activePackage: pkg.path, notes: new Map([[pkg.path, pkgNotes]]) });
30915
30993
  }
30916
- const result = await promptVersion(task, currentVersion, pkg.name);
30994
+ const result = await promptVersion(task, currentVersion, pkg.name, undefined, lastBumpType);
30917
30995
  versions.set(pkg.path, result.version);
30996
+ lastBumpType = result.bumpType;
30918
30997
  if (result.version !== currentVersion) {
30919
30998
  bumpedPackages.add(pkg.path);
30920
30999
  publishPaths.add(pkg.path);
package/dist/index.js CHANGED
@@ -22866,7 +22866,7 @@ function createKeyResolver(packages) {
22866
22866
 
22867
22867
  // src/ecosystem/js.ts
22868
22868
  import { existsSync as existsSync3, readFileSync as readFileSync4, writeFileSync as writeFileSync4 } from "node:fs";
22869
- import { readFile as readFile3, writeFile } from "node:fs/promises";
22869
+ import { readFile as readFile3, stat as stat3, writeFile } from "node:fs/promises";
22870
22870
  import path5 from "node:path";
22871
22871
 
22872
22872
  // src/registry/jsr.ts
@@ -22970,7 +22970,7 @@ function isValidPackageName(packageName) {
22970
22970
  // package.json
22971
22971
  var package_default = {
22972
22972
  name: "@pubm/core",
22973
- version: "0.4.5",
22973
+ version: "0.4.7",
22974
22974
  type: "module",
22975
22975
  description: "Core SDK for pubm - publish manager for multiple registries",
22976
22976
  types: "./dist/index.d.ts",
@@ -23044,7 +23044,7 @@ var coreEngines = package_default.engines ?? {};
23044
23044
  function resolveDefine(injected, fallback) {
23045
23045
  return typeof injected === "string" ? injected : fallback;
23046
23046
  }
23047
- var PUBM_VERSION = resolveDefine("0.4.5", package_default.version);
23047
+ var PUBM_VERSION = resolveDefine("0.4.7", package_default.version);
23048
23048
  var PUBM_ENGINES = {
23049
23049
  node: resolveDefine(">=24", coreEngines.node ?? ">=18"),
23050
23050
  git: resolveDefine(">=2.11.0", coreEngines.git ?? ">=2.11.0"),
@@ -24003,6 +24003,9 @@ async function npmPackageRegistry(packagePath) {
24003
24003
  return new NpmPackageRegistry(manifest.name, packagePath);
24004
24004
  }
24005
24005
 
24006
+ // src/ecosystem/js.ts
24007
+ init_exec();
24008
+
24006
24009
  // src/utils/package.ts
24007
24010
  import { stat as stat2 } from "node:fs/promises";
24008
24011
  import path4 from "node:path";
@@ -24026,16 +24029,28 @@ async function findOutFile(file, { cwd = process12.cwd() } = {}) {
24026
24029
  }
24027
24030
 
24028
24031
  // src/utils/package-manager.ts
24029
- var lockFile = {
24032
+ var lockFiles = {
24030
24033
  bun: ["bun.lock", "bun.lockb"],
24031
24034
  npm: ["package-lock.json", "npm-shrinkwrap.json"],
24032
24035
  pnpm: ["pnpm-lock.yaml"],
24033
24036
  yarn: ["yarn.lock"]
24034
24037
  };
24038
+ function getInstallCommand(pm, isYarnBerry) {
24039
+ switch (pm) {
24040
+ case "bun":
24041
+ return ["bun", "install", "--lockfile-only"];
24042
+ case "npm":
24043
+ return ["npm", "install", "--package-lock-only"];
24044
+ case "pnpm":
24045
+ return ["pnpm", "install", "--lockfile-only"];
24046
+ case "yarn":
24047
+ return isYarnBerry ? ["yarn", "install", "--mode", "update-lockfile"] : ["yarn", "install"];
24048
+ }
24049
+ }
24035
24050
  async function getPackageManager() {
24036
- for (const [packageManager, lockFiles] of Object.entries(lockFile)) {
24037
- for (const lockFile2 of lockFiles) {
24038
- if (await findOutFile(lockFile2))
24051
+ for (const [packageManager, files] of Object.entries(lockFiles)) {
24052
+ for (const file of files) {
24053
+ if (await findOutFile(file))
24039
24054
  return packageManager;
24040
24055
  }
24041
24056
  }
@@ -24086,7 +24101,7 @@ class Ecosystem {
24086
24101
  async updateSiblingDependencyVersions(_siblingVersions) {
24087
24102
  return false;
24088
24103
  }
24089
- async syncLockfile() {
24104
+ async syncLockfile(_mode = "optional") {
24090
24105
  return;
24091
24106
  }
24092
24107
  async resolvePublishDependencies(_workspaceVersions) {
@@ -24167,6 +24182,55 @@ class JsEcosystem extends Ecosystem {
24167
24182
  supportedRegistries() {
24168
24183
  return ["npm", "jsr"];
24169
24184
  }
24185
+ async syncLockfile(mode = "optional") {
24186
+ if (mode === "skip")
24187
+ return;
24188
+ const found = await this.findLockfile();
24189
+ if (!found)
24190
+ return;
24191
+ const { lockfilePath, packageManager } = found;
24192
+ const lockfileDir = path5.dirname(lockfilePath);
24193
+ try {
24194
+ let isYarnBerry;
24195
+ if (packageManager === "yarn") {
24196
+ const yarnrcPath = path5.join(lockfileDir, ".yarnrc.yml");
24197
+ try {
24198
+ isYarnBerry = (await stat3(yarnrcPath)).isFile();
24199
+ } catch {
24200
+ isYarnBerry = false;
24201
+ }
24202
+ }
24203
+ const [cmd, ...args] = getInstallCommand(packageManager, isYarnBerry);
24204
+ await exec3(cmd, args, { nodeOptions: { cwd: lockfileDir } });
24205
+ return lockfilePath;
24206
+ } catch (error2) {
24207
+ if (mode === "required")
24208
+ throw error2;
24209
+ console.warn(`Warning: Failed to sync lockfile at ${lockfilePath}: ${error2 instanceof Error ? error2.message : error2}`);
24210
+ return;
24211
+ }
24212
+ }
24213
+ async findLockfile() {
24214
+ let dir = this.packagePath;
24215
+ const { root } = path5.parse(dir);
24216
+ while (dir !== root) {
24217
+ for (const [pm, files] of Object.entries(lockFiles)) {
24218
+ for (const file of files) {
24219
+ const candidate = path5.join(dir, file);
24220
+ try {
24221
+ if ((await stat3(candidate)).isFile()) {
24222
+ return {
24223
+ lockfilePath: candidate,
24224
+ packageManager: pm
24225
+ };
24226
+ }
24227
+ } catch {}
24228
+ }
24229
+ }
24230
+ dir = path5.dirname(dir);
24231
+ }
24232
+ return;
24233
+ }
24170
24234
  async resolvePublishDependencies(workspaceVersions) {
24171
24235
  const backups = new Map;
24172
24236
  const manifestPath = path5.join(this.packagePath, "package.json");
@@ -24219,7 +24283,7 @@ class JsEcosystem extends Ecosystem {
24219
24283
  }
24220
24284
 
24221
24285
  // src/ecosystem/rust.ts
24222
- import { readFile as readFile4, stat as stat3, writeFile as writeFile2 } from "node:fs/promises";
24286
+ import { readFile as readFile4, stat as stat4, writeFile as writeFile2 } from "node:fs/promises";
24223
24287
  import path7 from "node:path";
24224
24288
 
24225
24289
  // ../../node_modules/.bun/smol-toml@1.6.0/node_modules/smol-toml/dist/error.js
@@ -25544,15 +25608,24 @@ class RustEcosystem extends Ecosystem {
25544
25608
  }
25545
25609
  return modified;
25546
25610
  }
25547
- async syncLockfile() {
25611
+ async syncLockfile(mode = "optional") {
25612
+ if (mode === "skip")
25613
+ return;
25548
25614
  const lockfilePath = await this.findLockfile();
25549
25615
  if (!lockfilePath)
25550
25616
  return;
25551
- const name = await this.packageName();
25552
- await exec3("cargo", ["update", "--package", name], {
25553
- nodeOptions: { cwd: path7.dirname(lockfilePath) }
25554
- });
25555
- return lockfilePath;
25617
+ try {
25618
+ const name = await this.packageName();
25619
+ await exec3("cargo", ["update", "--package", name], {
25620
+ nodeOptions: { cwd: path7.dirname(lockfilePath) }
25621
+ });
25622
+ return lockfilePath;
25623
+ } catch (error2) {
25624
+ if (mode === "required")
25625
+ throw error2;
25626
+ console.warn(`Warning: Failed to sync lockfile at ${lockfilePath}: ${error2 instanceof Error ? error2.message : error2}`);
25627
+ return;
25628
+ }
25556
25629
  }
25557
25630
  async findLockfile() {
25558
25631
  let dir = this.packagePath;
@@ -25560,7 +25633,7 @@ class RustEcosystem extends Ecosystem {
25560
25633
  while (dir !== root) {
25561
25634
  const candidate = path7.join(dir, "Cargo.lock");
25562
25635
  try {
25563
- if ((await stat3(candidate)).isFile())
25636
+ if ((await stat4(candidate)).isFile())
25564
25637
  return candidate;
25565
25638
  } catch {}
25566
25639
  dir = path7.dirname(dir);
@@ -25628,7 +25701,7 @@ init_error();
25628
25701
  init_git();
25629
25702
 
25630
25703
  // src/manifest/write-versions.ts
25631
- async function writeVersionsForEcosystem(ecosystems, versions) {
25704
+ async function writeVersionsForEcosystem(ecosystems, versions, lockfileSync) {
25632
25705
  const modifiedFiles = [];
25633
25706
  for (const { eco, pkg } of ecosystems) {
25634
25707
  const version = versions.get(pkg.path);
@@ -25649,10 +25722,13 @@ async function writeVersionsForEcosystem(ecosystems, versions) {
25649
25722
  }
25650
25723
  await Promise.all(ecosystems.map(({ eco }) => eco.updateSiblingDependencyVersions(nameKeyedVersions)));
25651
25724
  }
25725
+ const syncedLockfiles = new Set;
25652
25726
  for (const { eco } of ecosystems) {
25653
- const lockfilePath = await eco.syncLockfile();
25654
- if (lockfilePath)
25727
+ const lockfilePath = await eco.syncLockfile(lockfileSync);
25728
+ if (lockfilePath && !syncedLockfiles.has(lockfilePath)) {
25729
+ syncedLockfiles.add(lockfilePath);
25655
25730
  modifiedFiles.push(lockfilePath);
25731
+ }
25656
25732
  }
25657
25733
  return modifiedFiles;
25658
25734
  }
@@ -25667,7 +25743,7 @@ import { lstatSync, readdirSync as readdirSync3 } from "node:fs";
25667
25743
  import path8 from "node:path";
25668
25744
 
25669
25745
  // src/ecosystem/infer.ts
25670
- import { readFile as readFile5, stat as stat4 } from "node:fs/promises";
25746
+ import { readFile as readFile5, stat as stat5 } from "node:fs/promises";
25671
25747
  import { join as join5 } from "node:path";
25672
25748
 
25673
25749
  // src/utils/crate-graph.ts
@@ -25884,7 +25960,7 @@ function registerPrivateRegistry(config, ecosystemKey, catalog = registryCatalog
25884
25960
  var NPM_OFFICIAL = "registry.npmjs.org";
25885
25961
  async function fileExists(path8) {
25886
25962
  try {
25887
- const s2 = await stat4(path8);
25963
+ const s2 = await stat5(path8);
25888
25964
  return s2.isFile();
25889
25965
  } catch {
25890
25966
  return false;
@@ -26894,10 +26970,10 @@ function readdirRecursiveNoSymlinks(dir, root) {
26894
26970
  continue;
26895
26971
  const fullPath = path8.join(dir, entry);
26896
26972
  try {
26897
- const stat5 = lstatSync(fullPath);
26898
- if (stat5.isSymbolicLink())
26973
+ const stat6 = lstatSync(fullPath);
26974
+ if (stat6.isSymbolicLink())
26899
26975
  continue;
26900
- if (stat5.isDirectory()) {
26976
+ if (stat6.isDirectory()) {
26901
26977
  results.push(path8.relative(root, fullPath));
26902
26978
  results.push(...readdirRecursiveNoSymlinks(fullPath, root));
26903
26979
  }
@@ -28291,7 +28367,7 @@ async function writeVersions(ctx, versions) {
28291
28367
  const eco = new descriptor.ecosystemClass(absPath);
28292
28368
  return { eco, pkg };
28293
28369
  });
28294
- const lockfileChanges = await writeVersionsForEcosystem(ecosystems, versions);
28370
+ const lockfileChanges = await writeVersionsForEcosystem(ecosystems, versions, ctx.config.lockfileSync);
28295
28371
  const manifestFiles = ecosystems.flatMap(({ eco }) => eco.manifestFiles().map((f2) => path10.resolve(eco.packagePath, f2)));
28296
28372
  return [...manifestFiles, ...lockfileChanges];
28297
28373
  }
@@ -29557,7 +29633,8 @@ var defaultConfig = {
29557
29633
  saveToken: true,
29558
29634
  releaseDraft: true,
29559
29635
  releaseNotes: true,
29560
- rollbackStrategy: "individual"
29636
+ rollbackStrategy: "individual",
29637
+ lockfileSync: "optional"
29561
29638
  };
29562
29639
  async function resolveConfig(config, cwd) {
29563
29640
  const resolvedCwd = cwd ?? process.cwd();
@@ -29621,7 +29698,7 @@ import {
29621
29698
  mkdtemp,
29622
29699
  readFile as readFile7,
29623
29700
  rm,
29624
- stat as stat5,
29701
+ stat as stat6,
29625
29702
  writeFile as writeFile3
29626
29703
  } from "node:fs/promises";
29627
29704
  import { createRequire as createRequire2 } from "node:module";
@@ -29681,7 +29758,7 @@ async function findConfigFile(cwd) {
29681
29758
  for (const file of CONFIG_FILES) {
29682
29759
  const filePath = path13.join(cwd, file);
29683
29760
  try {
29684
- if ((await stat5(filePath)).isFile()) {
29761
+ if ((await stat6(filePath)).isFile()) {
29685
29762
  return filePath;
29686
29763
  }
29687
29764
  } catch {}
@@ -29704,7 +29781,7 @@ async function findClosestPackageManifest(filePath) {
29704
29781
  while (true) {
29705
29782
  const manifestPath = path13.join(current, "package.json");
29706
29783
  try {
29707
- if ((await stat5(manifestPath)).isFile()) {
29784
+ if ((await stat6(manifestPath)).isFile()) {
29708
29785
  return manifestPath;
29709
29786
  }
29710
29787
  } catch {}
@@ -29812,7 +29889,7 @@ async function findInstalledPackagePath(startDir, dependency) {
29812
29889
  while (true) {
29813
29890
  const packageDir = path13.join(current, "node_modules", dependency);
29814
29891
  try {
29815
- if ((await stat5(packageDir)).isDirectory()) {
29892
+ if ((await stat6(packageDir)).isDirectory()) {
29816
29893
  return packageDir;
29817
29894
  }
29818
29895
  } catch {}
@@ -30298,7 +30375,7 @@ async function loadConfig(cwd = process.cwd(), configPath) {
30298
30375
  if (configPath) {
30299
30376
  resolvedConfigPath = path13.resolve(cwd, configPath);
30300
30377
  try {
30301
- if (!(await stat5(resolvedConfigPath)).isFile()) {
30378
+ if (!(await stat6(resolvedConfigPath)).isFile()) {
30302
30379
  throw new Error(`Config path is not a file: ${resolvedConfigPath}`);
30303
30380
  }
30304
30381
  } catch (e3) {
@@ -30805,6 +30882,7 @@ async function handleRemainingPackages(ctx, task, remainingPackages, packageInfo
30805
30882
  const versions = new Map([...bumps].map(([p2, b2]) => [p2, b2.newVersion]));
30806
30883
  const publishPaths = new Set(bumps.keys());
30807
30884
  const reverseDeps = buildReverseDeps(graph);
30885
+ let lastBumpType;
30808
30886
  for (const pkg of remainingPackages) {
30809
30887
  const currentVersion = currentVersions.get(pkg.path) ?? pkg.version;
30810
30888
  const deps = graph.get(pkg.path) ?? [];
@@ -30817,8 +30895,9 @@ async function handleRemainingPackages(ctx, task, remainingPackages, packageInfo
30817
30895
  if (pkgNotes.length > 0) {
30818
30896
  task.output = renderPackageVersionSummary(remainingPackages, currentVersions, versions, { activePackage: pkg.path, notes: new Map([[pkg.path, pkgNotes]]) });
30819
30897
  }
30820
- const result = await promptVersion(task, currentVersion, pkg.name);
30898
+ const result = await promptVersion(task, currentVersion, pkg.name, undefined, lastBumpType);
30821
30899
  versions.set(pkg.path, result.version);
30900
+ lastBumpType = result.bumpType;
30822
30901
  if (result.version !== currentVersion) {
30823
30902
  bumpedPackages.add(pkg.path);
30824
30903
  publishPaths.add(pkg.path);
@@ -3,5 +3,5 @@ import type { Ecosystem } from "../ecosystem/ecosystem.js";
3
3
  export declare function writeVersionsForEcosystem(ecosystems: {
4
4
  eco: Ecosystem;
5
5
  pkg: ResolvedPackageConfig;
6
- }[], versions: Map<string, string>): Promise<string[]>;
6
+ }[], versions: Map<string, string>, lockfileSync?: "required" | "optional" | "skip"): Promise<string[]>;
7
7
  //# sourceMappingURL=write-versions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-versions.d.ts","sourceRoot":"","sources":["../../src/manifest/write-versions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,qBAAqB,CAAA;CAAE,EAAE,EAC5D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB"}
1
+ {"version":3,"file":"write-versions.d.ts","sourceRoot":"","sources":["../../src/manifest/write-versions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,qBAAqB,CAAA;CAAE,EAAE,EAC5D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,GAC9C,OAAO,CAAC,MAAM,EAAE,CAAC,CAyCnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/tasks/runner.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAsejD,wBAAsB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAojCzD"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/tasks/runner.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA0ejD,wBAAsB,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAojCzD"}
@@ -1,4 +1,5 @@
1
- type PackageManager = "npm" | "pnpm" | "yarn" | "bun";
1
+ export type PackageManager = "npm" | "pnpm" | "yarn" | "bun";
2
+ export declare const lockFiles: Record<PackageManager, string[]>;
3
+ export declare function getInstallCommand(pm: PackageManager, isYarnBerry?: boolean): string[];
2
4
  export declare function getPackageManager(): Promise<PackageManager>;
3
- export {};
4
5
  //# sourceMappingURL=package-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAStD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CASjE"}
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAKtD,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,cAAc,EAClB,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM,EAAE,CAaV;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CASjE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pubm/core",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "type": "module",
5
5
  "description": "Core SDK for pubm - publish manager for multiple registries",
6
6
  "types": "./dist/index.d.ts",