@pubm/core 0.4.8 → 0.4.9

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;AA6BpB,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,EAGnB,MAAM,YAAY,CAAC;AAiCpB,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,CAAC,CAqD7B"}
@@ -1,5 +1,5 @@
1
1
  export { resolveConfig } from "./defaults.js";
2
2
  export { loadConfig } from "./loader.js";
3
- export type { PackageConfig, PubmConfig, ResolvedPubmConfig, ValidateConfig, } from "./types.js";
3
+ export type { PackageConfig, PubmConfig, ResolvedPubmConfig, RollbackConfig, ValidateConfig, } from "./types.js";
4
4
  export { defineConfig } from "./types.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EACV,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EACV,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -26,6 +26,12 @@ export interface ValidateConfig {
26
26
  entryPoints?: boolean;
27
27
  extraneousFiles?: boolean;
28
28
  }
29
+ export interface RollbackConfig {
30
+ /** @default "individual" */
31
+ strategy?: "individual" | "all";
32
+ /** Allow registry unpublish/yank during rollback in non-TTY environments. @default false */
33
+ dangerouslyAllowUnpublish?: boolean;
34
+ }
29
35
  export interface PubmConfig {
30
36
  versioning?: "independent" | "fixed";
31
37
  branch?: string;
@@ -45,19 +51,22 @@ export interface PubmConfig {
45
51
  saveToken?: boolean;
46
52
  releaseDraft?: boolean;
47
53
  releaseNotes?: boolean;
54
+ /** @deprecated Use `rollback.strategy` instead. */
48
55
  rollbackStrategy?: "individual" | "all";
56
+ rollback?: RollbackConfig;
49
57
  lockfileSync?: "required" | "optional" | "skip";
50
58
  plugins?: PubmPlugin[];
51
59
  compress?: CompressOption;
52
60
  releaseAssets?: ReleaseAssetEntry[];
53
61
  excludeRelease?: string[];
54
62
  }
55
- export interface ResolvedPubmConfig extends Required<Omit<PubmConfig, "packages" | "validate" | "registries" | "compress" | "releaseAssets" | "excludeRelease">> {
63
+ export interface ResolvedPubmConfig extends Required<Omit<PubmConfig, "packages" | "validate" | "registries" | "compress" | "releaseAssets" | "excludeRelease" | "rollbackStrategy" | "rollback">> {
56
64
  compress?: CompressOption;
57
65
  releaseAssets?: ReleaseAssetEntry[];
58
66
  excludeRelease?: string[];
59
67
  packages: ResolvedPackageConfig[];
60
68
  validate: Required<ValidateConfig>;
69
+ rollback: Required<RollbackConfig>;
61
70
  discoveryEmpty?: boolean;
62
71
  }
63
72
  export declare function defineConfig(config: PubmConfig): PubmConfig;
@@ -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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"}
package/dist/index.cjs CHANGED
@@ -22714,7 +22714,7 @@ var package_default;
22714
22714
  var init_package = __esm(() => {
22715
22715
  package_default = {
22716
22716
  name: "@pubm/core",
22717
- version: "0.4.8",
22717
+ version: "0.4.9",
22718
22718
  type: "module",
22719
22719
  description: "Core SDK for pubm - publish manager for multiple registries",
22720
22720
  types: "./dist/index.d.ts",
@@ -22792,7 +22792,7 @@ var coreEngines, PUBM_VERSION, PUBM_ENGINES;
22792
22792
  var init_pubm_metadata = __esm(() => {
22793
22793
  init_package();
22794
22794
  coreEngines = package_default.engines ?? {};
22795
- PUBM_VERSION = resolveDefine("0.4.8", package_default.version);
22795
+ PUBM_VERSION = resolveDefine("0.4.9", package_default.version);
22796
22796
  PUBM_ENGINES = {
22797
22797
  node: resolveDefine(">=24", coreEngines.node ?? ">=18"),
22798
22798
  git: resolveDefine(">=2.11.0", coreEngines.git ?? ">=2.11.0"),
@@ -27930,6 +27930,7 @@ init_ui();
27930
27930
  init_rust();
27931
27931
  init_error();
27932
27932
  init_crates();
27933
+ init_ui();
27933
27934
  async function getCrateName(packagePath) {
27934
27935
  const eco = new RustEcosystem(packagePath);
27935
27936
  return await eco.packageName();
@@ -27962,15 +27963,24 @@ function createCratesPublishTask(packagePath) {
27962
27963
  };
27963
27964
  }
27964
27965
  function registerYankRollback(ctx, registry, packageName, version) {
27965
- if (registry.supportsUnpublish) {
27966
+ if (!registry.supportsUnpublish)
27967
+ return;
27968
+ const canYank = ctx.runtime.promptEnabled || ctx.config.rollback.dangerouslyAllowUnpublish;
27969
+ if (!canYank) {
27966
27970
  ctx.runtime.rollback.add({
27967
- label: `Yank ${packageName}@${version} from crates`,
27968
- fn: async () => {
27969
- await registry.unpublish(packageName, version);
27970
- },
27971
- confirm: true
27971
+ label: `Yank ${packageName}@${version} from crates (skipped — use --dangerously-allow-unpublish to enable)`,
27972
+ fn: async () => {}
27972
27973
  });
27974
+ return;
27973
27975
  }
27976
+ ctx.runtime.rollback.add({
27977
+ label: `Yank ${packageName}@${version} from crates (⚠ version will be permanently burned)`,
27978
+ fn: async () => {
27979
+ await registry.unpublish(packageName, version);
27980
+ console.log(` ${ui.chalk.yellow("⚠")} v${version} is permanently reserved on crates.io — this version cannot be reused`);
27981
+ },
27982
+ confirm: true
27983
+ });
27974
27984
  }
27975
27985
 
27976
27986
  // src/tasks/dry-run-publish.ts
@@ -28382,6 +28392,7 @@ init_dist2();
28382
28392
  var import_node_process14 = __toESM(require("node:process"));
28383
28393
  init_error();
28384
28394
  init_npm();
28395
+ init_ui();
28385
28396
 
28386
28397
  class NpmAvailableError extends AbstractError {
28387
28398
  name = "npm is unavailable for publishing.";
@@ -28460,15 +28471,24 @@ function createNpmPublishTask(packagePath) {
28460
28471
  };
28461
28472
  }
28462
28473
  function registerUnpublishRollback(ctx, registry, version) {
28463
- if (registry.supportsUnpublish) {
28474
+ if (!registry.supportsUnpublish)
28475
+ return;
28476
+ const canUnpublish = ctx.runtime.promptEnabled || ctx.config.rollback.dangerouslyAllowUnpublish;
28477
+ if (!canUnpublish) {
28464
28478
  ctx.runtime.rollback.add({
28465
- label: `Unpublish ${registry.packageName}@${version} from npm`,
28466
- fn: async () => {
28467
- await registry.unpublish(registry.packageName, version);
28468
- },
28469
- confirm: true
28479
+ label: `Unpublish ${registry.packageName}@${version} from npm (skipped — use --dangerously-allow-unpublish to enable)`,
28480
+ fn: async () => {}
28470
28481
  });
28482
+ return;
28471
28483
  }
28484
+ ctx.runtime.rollback.add({
28485
+ label: `Unpublish ${registry.packageName}@${version} from npm (⚠ version will be permanently burned)`,
28486
+ fn: async () => {
28487
+ await registry.unpublish(registry.packageName, version);
28488
+ console.log(` ${ui.chalk.yellow("⚠")} v${version} is permanently reserved on npm — this version cannot be reused`);
28489
+ },
28490
+ confirm: true
28491
+ });
28472
28492
  }
28473
28493
 
28474
28494
  // src/tasks/preflight.ts
@@ -30475,6 +30495,10 @@ var defaultValidate = {
30475
30495
  entryPoints: true,
30476
30496
  extraneousFiles: true
30477
30497
  };
30498
+ var defaultRollback = {
30499
+ strategy: "individual",
30500
+ dangerouslyAllowUnpublish: false
30501
+ };
30478
30502
  var defaultConfig = {
30479
30503
  versioning: "independent",
30480
30504
  branch: "main",
@@ -30492,7 +30516,6 @@ var defaultConfig = {
30492
30516
  saveToken: true,
30493
30517
  releaseDraft: true,
30494
30518
  releaseNotes: true,
30495
- rollbackStrategy: "individual",
30496
30519
  lockfileSync: "optional"
30497
30520
  };
30498
30521
  async function resolveConfig(config, cwd) {
@@ -30534,6 +30557,11 @@ async function resolveConfig(config, cwd) {
30534
30557
  ...config,
30535
30558
  packages,
30536
30559
  validate: { ...defaultValidate, ...config.validate },
30560
+ rollback: {
30561
+ ...defaultRollback,
30562
+ ...config.rollbackStrategy ? { strategy: config.rollbackStrategy } : {},
30563
+ ...config.rollback
30564
+ },
30537
30565
  snapshotTemplate: config.snapshotTemplate ?? defaultConfig.snapshotTemplate,
30538
30566
  plugins: config.plugins ?? [],
30539
30567
  ...discoveryEmpty ? { discoveryEmpty } : {}
package/dist/index.d.ts CHANGED
@@ -11,7 +11,7 @@ export type { AssetPipelineHooks, CompressedAsset, CompressFormat, CompressOptio
11
11
  export { normalizeConfig, parsePlatform, resolveAssets, runAssetPipeline, } from "./assets/index.js";
12
12
  export type { BumpType, ChangelogEntry, Changeset, DependencyUpdate, MigrationResult, PackageStatus, Release, Status, VersionBump, } from "./changeset/index.js";
13
13
  export { buildChangelogEntries, calculateVersionBumps, createKeyResolver, deleteChangesetFiles, generateChangelog, generateChangesetContent, generateChangesetId, getStatus, migrateFromChangesets, parseChangelogSection, parseChangeset, readChangesets, writeChangelogToFile, writeChangeset, } from "./changeset/index.js";
14
- export type { PackageConfig, PubmConfig, ResolvedPubmConfig, } from "./config/index.js";
14
+ export type { PackageConfig, PubmConfig, ResolvedPubmConfig, RollbackConfig, } from "./config/index.js";
15
15
  export { defineConfig, loadConfig, resolveConfig } from "./config/index.js";
16
16
  export type { ResolvedPackageConfig } from "./config/types.js";
17
17
  export type { FixedVersionPlan, IndependentVersionPlan, PubmContext, SingleVersionPlan, VersionPlan, } from "./context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22633,7 +22633,7 @@ var package_default;
22633
22633
  var init_package = __esm(() => {
22634
22634
  package_default = {
22635
22635
  name: "@pubm/core",
22636
- version: "0.4.8",
22636
+ version: "0.4.9",
22637
22637
  type: "module",
22638
22638
  description: "Core SDK for pubm - publish manager for multiple registries",
22639
22639
  types: "./dist/index.d.ts",
@@ -22711,7 +22711,7 @@ var coreEngines, PUBM_VERSION, PUBM_ENGINES;
22711
22711
  var init_pubm_metadata = __esm(() => {
22712
22712
  init_package();
22713
22713
  coreEngines = package_default.engines ?? {};
22714
- PUBM_VERSION = resolveDefine("0.4.8", package_default.version);
22714
+ PUBM_VERSION = resolveDefine("0.4.9", package_default.version);
22715
22715
  PUBM_ENGINES = {
22716
22716
  node: resolveDefine(">=24", coreEngines.node ?? ">=18"),
22717
22717
  git: resolveDefine(">=2.11.0", coreEngines.git ?? ">=2.11.0"),
@@ -27827,6 +27827,7 @@ init_ui();
27827
27827
  init_rust();
27828
27828
  init_error();
27829
27829
  init_crates();
27830
+ init_ui();
27830
27831
  async function getCrateName(packagePath) {
27831
27832
  const eco = new RustEcosystem(packagePath);
27832
27833
  return await eco.packageName();
@@ -27859,15 +27860,24 @@ function createCratesPublishTask(packagePath) {
27859
27860
  };
27860
27861
  }
27861
27862
  function registerYankRollback(ctx, registry, packageName, version) {
27862
- if (registry.supportsUnpublish) {
27863
+ if (!registry.supportsUnpublish)
27864
+ return;
27865
+ const canYank = ctx.runtime.promptEnabled || ctx.config.rollback.dangerouslyAllowUnpublish;
27866
+ if (!canYank) {
27863
27867
  ctx.runtime.rollback.add({
27864
- label: `Yank ${packageName}@${version} from crates`,
27865
- fn: async () => {
27866
- await registry.unpublish(packageName, version);
27867
- },
27868
- confirm: true
27868
+ label: `Yank ${packageName}@${version} from crates (skipped — use --dangerously-allow-unpublish to enable)`,
27869
+ fn: async () => {}
27869
27870
  });
27871
+ return;
27870
27872
  }
27873
+ ctx.runtime.rollback.add({
27874
+ label: `Yank ${packageName}@${version} from crates (⚠ version will be permanently burned)`,
27875
+ fn: async () => {
27876
+ await registry.unpublish(packageName, version);
27877
+ console.log(` ${ui.chalk.yellow("⚠")} v${version} is permanently reserved on crates.io — this version cannot be reused`);
27878
+ },
27879
+ confirm: true
27880
+ });
27871
27881
  }
27872
27882
 
27873
27883
  // src/tasks/dry-run-publish.ts
@@ -28279,6 +28289,7 @@ init_dist2();
28279
28289
  import process16 from "node:process";
28280
28290
  init_error();
28281
28291
  init_npm();
28292
+ init_ui();
28282
28293
 
28283
28294
  class NpmAvailableError extends AbstractError {
28284
28295
  name = "npm is unavailable for publishing.";
@@ -28357,15 +28368,24 @@ function createNpmPublishTask(packagePath) {
28357
28368
  };
28358
28369
  }
28359
28370
  function registerUnpublishRollback(ctx, registry, version) {
28360
- if (registry.supportsUnpublish) {
28371
+ if (!registry.supportsUnpublish)
28372
+ return;
28373
+ const canUnpublish = ctx.runtime.promptEnabled || ctx.config.rollback.dangerouslyAllowUnpublish;
28374
+ if (!canUnpublish) {
28361
28375
  ctx.runtime.rollback.add({
28362
- label: `Unpublish ${registry.packageName}@${version} from npm`,
28363
- fn: async () => {
28364
- await registry.unpublish(registry.packageName, version);
28365
- },
28366
- confirm: true
28376
+ label: `Unpublish ${registry.packageName}@${version} from npm (skipped — use --dangerously-allow-unpublish to enable)`,
28377
+ fn: async () => {}
28367
28378
  });
28379
+ return;
28368
28380
  }
28381
+ ctx.runtime.rollback.add({
28382
+ label: `Unpublish ${registry.packageName}@${version} from npm (⚠ version will be permanently burned)`,
28383
+ fn: async () => {
28384
+ await registry.unpublish(registry.packageName, version);
28385
+ console.log(` ${ui.chalk.yellow("⚠")} v${version} is permanently reserved on npm — this version cannot be reused`);
28386
+ },
28387
+ confirm: true
28388
+ });
28369
28389
  }
28370
28390
 
28371
28391
  // src/tasks/preflight.ts
@@ -30371,6 +30391,10 @@ var defaultValidate = {
30371
30391
  entryPoints: true,
30372
30392
  extraneousFiles: true
30373
30393
  };
30394
+ var defaultRollback = {
30395
+ strategy: "individual",
30396
+ dangerouslyAllowUnpublish: false
30397
+ };
30374
30398
  var defaultConfig = {
30375
30399
  versioning: "independent",
30376
30400
  branch: "main",
@@ -30388,7 +30412,6 @@ var defaultConfig = {
30388
30412
  saveToken: true,
30389
30413
  releaseDraft: true,
30390
30414
  releaseNotes: true,
30391
- rollbackStrategy: "individual",
30392
30415
  lockfileSync: "optional"
30393
30416
  };
30394
30417
  async function resolveConfig(config, cwd) {
@@ -30430,6 +30453,11 @@ async function resolveConfig(config, cwd) {
30430
30453
  ...config,
30431
30454
  packages,
30432
30455
  validate: { ...defaultValidate, ...config.validate },
30456
+ rollback: {
30457
+ ...defaultRollback,
30458
+ ...config.rollbackStrategy ? { strategy: config.rollbackStrategy } : {},
30459
+ ...config.rollback
30460
+ },
30433
30461
  snapshotTemplate: config.snapshotTemplate ?? defaultConfig.snapshotTemplate,
30434
30462
  plugins: config.plugins ?? [],
30435
30463
  ...discoveryEmpty ? { discoveryEmpty } : {}
@@ -1 +1 @@
1
- {"version":3,"file":"crates.d.ts","sourceRoot":"","sources":["../../src/tasks/crates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAuBpE,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAClB,SAAS,CAAC,WAAW,CAAC,CAoBxB;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,SAAS,CAAC,WAAW,CAAC,CAmCxB"}
1
+ {"version":3,"file":"crates.d.ts","sourceRoot":"","sources":["../../src/tasks/crates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAwBpE,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAClB,SAAS,CAAC,WAAW,CAAC,CAoBxB;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,SAAS,CAAC,WAAW,CAAC,CAmCxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/tasks/npm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAepE,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,GAClB,SAAS,CAAC,WAAW,CAAC,CAwGxB"}
1
+ {"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/tasks/npm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAgBpE,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,GAClB,SAAS,CAAC,WAAW,CAAC,CAwGxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pubm/core",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
4
4
  "type": "module",
5
5
  "description": "Core SDK for pubm - publish manager for multiple registries",
6
6
  "types": "./dist/index.d.ts",