@savvy-web/silk 3.2.8 → 3.2.11

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.
@@ -2336,7 +2336,7 @@ var GlobSet = class GlobSet extends effect.Schema.Class("GlobSet")(effect.Schema
2336
2336
  }
2337
2337
  };
2338
2338
  //#endregion
2339
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/BunExtension.js
2339
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/BunExtension.js
2340
2340
  /**
2341
2341
  * Extension data specific to bun lockfiles, attached to `Lockfile.extension`
2342
2342
  * when the format is `"bun"`.
@@ -2357,7 +2357,7 @@ var BunExtension = class extends effect.Schema.Class("BunExtension")({
2357
2357
  trustedDependencies: effect.Schema.optionalKey(effect.Schema.Array(effect.Schema.String))
2358
2358
  }) {};
2359
2359
  //#endregion
2360
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogResolver.js
2360
+ //#region ../../node_modules/.pnpm/@effected+npm@0.6.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogResolver.js
2361
2361
  /**
2362
2362
  * Contract for resolving pnpm `catalog:` dependency specifiers to concrete
2363
2363
  * version ranges.
@@ -2403,7 +2403,7 @@ var CatalogResolver = class CatalogResolver extends effect.Context.Service()("@e
2403
2403
  static noop = effect.Layer.succeed(CatalogResolver, { rangeOf: () => effect.Effect.succeed(effect.Option.none()) });
2404
2404
  };
2405
2405
  //#endregion
2406
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/WorkspaceResolver.js
2406
+ //#region ../../node_modules/.pnpm/@effected+npm@0.6.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/WorkspaceResolver.js
2407
2407
  /**
2408
2408
  * Raised when a `catalog:` or `workspace:` specifier cannot be resolved
2409
2409
  * because the resolution mechanism itself failed — not for an ordinary
@@ -2464,7 +2464,7 @@ var WorkspaceResolver = class WorkspaceResolver extends effect.Context.Service()
2464
2464
  static noop = effect.Layer.succeed(WorkspaceResolver, { versionOf: () => effect.Effect.succeed(effect.Option.none()) });
2465
2465
  };
2466
2466
  //#endregion
2467
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogAssemblyError.js
2467
+ //#region ../../node_modules/.pnpm/@effected+npm@0.6.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogAssemblyError.js
2468
2468
  /**
2469
2469
  * Raised when a workspace's catalogs cannot be assembled — a `pnpm-workspace.yaml`
2470
2470
  * that is unreadable or not valid YAML, a root `package.json` `workspaces` field
@@ -2508,7 +2508,7 @@ var CatalogAssemblyError = class extends effect.Schema.TaggedErrorClass()("Catal
2508
2508
  }
2509
2509
  };
2510
2510
  //#endregion
2511
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySection.js
2511
+ //#region ../../node_modules/.pnpm/@effected+npm@0.6.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySection.js
2512
2512
  /**
2513
2513
  * The short dependency kind: which dependency map an entry came from, named the
2514
2514
  * way consumers branch on it.
@@ -4009,7 +4009,7 @@ const isComparatorSetSubset = (sub, sup) => {
4009
4009
  return true;
4010
4010
  };
4011
4011
  //#endregion
4012
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySpecifier.js
4012
+ //#region ../../node_modules/.pnpm/@effected+npm@0.6.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySpecifier.js
4013
4013
  /**
4014
4014
  * Indicates that a string could not be parsed as a valid dependency specifier.
4015
4015
  *
@@ -4216,7 +4216,7 @@ const DependencySpecifier = Object.assign(brandedSpecifier, {
4216
4216
  FromString: fromString
4217
4217
  });
4218
4218
  //#endregion
4219
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/IntegrityHash.js
4219
+ //#region ../../node_modules/.pnpm/@effected+npm@0.6.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/IntegrityHash.js
4220
4220
  const SRI_RE = /^(sha1|sha256|sha384|sha512)-[A-Za-z0-9+/]+={0,2}$/;
4221
4221
  const COREPACK_RE = /^(sha1|sha256|sha384|sha512)\.[0-9a-f]+$/;
4222
4222
  const YARN_RE = /^[0-9]+(c[0-9]+)?\/[0-9a-f]+$/;
@@ -4282,15 +4282,22 @@ const PREFIXES = {
4282
4282
  "--no",
4283
4283
  "--"
4284
4284
  ],
4285
- dlxPrefix: ["npx"]
4285
+ dlxPrefix: ["npx"],
4286
+ scriptPrefix: [
4287
+ "npm",
4288
+ "run",
4289
+ "--"
4290
+ ]
4286
4291
  },
4287
4292
  pnpm: {
4288
4293
  prefix: ["pnpm", "exec"],
4289
- dlxPrefix: ["pnpm", "dlx"]
4294
+ dlxPrefix: ["pnpm", "dlx"],
4295
+ scriptPrefix: ["pnpm", "run"]
4290
4296
  },
4291
4297
  yarn: {
4292
4298
  prefix: ["yarn", "exec"],
4293
- dlxPrefix: ["yarn", "dlx"]
4299
+ dlxPrefix: ["yarn", "dlx"],
4300
+ scriptPrefix: ["yarn", "run"]
4294
4301
  },
4295
4302
  bun: {
4296
4303
  prefix: [
@@ -4298,15 +4305,16 @@ const PREFIXES = {
4298
4305
  "x",
4299
4306
  "--no-install"
4300
4307
  ],
4301
- dlxPrefix: ["bun", "x"]
4308
+ dlxPrefix: ["bun", "x"],
4309
+ scriptPrefix: ["bun", "run"]
4302
4310
  }
4303
4311
  };
4304
4312
  /**
4305
4313
  * How to run a project-local binary here.
4306
4314
  *
4307
4315
  * @remarks
4308
- * This is the whole of what tool discovery needs from a workspace: an argv
4309
- * prefix and a directory to run it in. It deliberately carries no workspace
4316
+ * This is the whole of what tool discovery needs from a workspace: argv
4317
+ * prefixes and a directory to run them in. It deliberately carries no workspace
4310
4318
  * root, no manifest and no package-manager semantics — `label` is for
4311
4319
  * reporting only, and nothing in this package branches on it.
4312
4320
  *
@@ -4319,6 +4327,8 @@ var ExecContext = class extends effect.Schema.Class("ExecContext")({
4319
4327
  prefix: effect.Schema.Array(effect.Schema.String),
4320
4328
  /** argv prefix that fetch-and-runs a package binary, e.g. `["pnpm", "dlx"]`. */
4321
4329
  dlxPrefix: effect.Schema.Array(effect.Schema.String),
4330
+ /** argv prefix that runs a `package.json` script, e.g. `["pnpm", "run"]`. */
4331
+ scriptPrefix: effect.Schema.Array(effect.Schema.String),
4322
4332
  /** Directory the prefix must run in. Omitted means "wherever the caller is". */
4323
4333
  directory: effect.Schema.optionalKey(effect.Schema.String)
4324
4334
  }) {
@@ -4331,6 +4341,19 @@ var ExecContext = class extends effect.Schema.Class("ExecContext")({
4331
4341
  return this.withPrefix(command, this.dlxPrefix);
4332
4342
  }
4333
4343
  /**
4344
+ * As {@link ExecContext.apply}, using `scriptPrefix` — runs a
4345
+ * `package.json` script by name.
4346
+ *
4347
+ * @remarks
4348
+ * The command's `command` is the script name and its `args` are the script's
4349
+ * arguments. Every launcher uses the explicit `run` form, and npm's prefix
4350
+ * carries a trailing `--` because bare `npm run <script> --flag` silently
4351
+ * claims `--flag` for npm itself instead of the script.
4352
+ */
4353
+ applyScript(command) {
4354
+ return this.withPrefix(command, this.scriptPrefix);
4355
+ }
4356
+ /**
4334
4357
  * Core's `prefix` and `setCwd` both return NEW commands, so the caller's
4335
4358
  * value is never mutated.
4336
4359
  */
@@ -4381,9 +4404,21 @@ var LocalExecError = class extends effect.Schema.TaggedErrorClass()("LocalExecEr
4381
4404
  * @public
4382
4405
  */
4383
4406
  var LocalExec = class LocalExec extends effect.Context.Service()("@effected/commands/LocalExec") {
4384
- /** The exec and dlx argv prefixes for a launcher — the single home of that knowledge. */
4407
+ /** The exec, dlx and script-runner argv prefixes for a launcher — the single home of that knowledge. */
4385
4408
  static prefixes = (launcher) => PREFIXES[launcher];
4386
4409
  /**
4410
+ * The argv prefix that runs a `package.json` script for `launcher`.
4411
+ *
4412
+ * @remarks
4413
+ * A projection of {@link LocalExec.prefixes} for the caller that only runs
4414
+ * scripts. Every launcher uses the explicit `run` form —
4415
+ * `["npm", "run", "--"]`, `["pnpm", "run"]`, `["yarn", "run"]` and
4416
+ * `["bun", "run"]` — and npm's carries a trailing `--` because bare
4417
+ * `npm run <script> --flag` silently claims `--flag` for npm itself; the
4418
+ * other three forward post-script arguments without it.
4419
+ */
4420
+ static scriptPrefix = (launcher) => PREFIXES[launcher].scriptPrefix;
4421
+ /**
4387
4422
  * No project-local execution context: every tool resolves globally.
4388
4423
  *
4389
4424
  * @remarks
@@ -4393,11 +4428,12 @@ var LocalExec = class LocalExec extends effect.Context.Service()("@effected/comm
4393
4428
  static layerNone = effect.Layer.succeed(this, { context: effect.Effect.succeed(effect.Option.none()) });
4394
4429
  /** A context for a known package manager, from the static prefix table. */
4395
4430
  static layerFor = (launcher, options) => {
4396
- const { prefix, dlxPrefix } = PREFIXES[launcher];
4431
+ const { prefix, dlxPrefix, scriptPrefix } = PREFIXES[launcher];
4397
4432
  return LocalExec.layerContext(ExecContext.make({
4398
4433
  label: launcher,
4399
4434
  prefix,
4400
4435
  dlxPrefix,
4436
+ scriptPrefix,
4401
4437
  ...options?.directory === void 0 ? {} : { directory: options.directory }
4402
4438
  }));
4403
4439
  };
@@ -4427,7 +4463,7 @@ var LocalExec = class LocalExec extends effect.Context.Service()("@effected/comm
4427
4463
  static layerTest = (overrides = {}) => effect.Layer.succeed(LocalExec, LocalExec.makeTest(overrides));
4428
4464
  };
4429
4465
  //#endregion
4430
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/ReleaseAgeGate.js
4466
+ //#region ../../node_modules/.pnpm/@effected+npm@0.6.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/ReleaseAgeGate.js
4431
4467
  const MS_PER_MINUTE = 6e4;
4432
4468
  /**
4433
4469
  * A source's partial contribution to a {@link ReleaseAgeGate}: the effective
@@ -4597,7 +4633,7 @@ var ReleaseAgeGate = class ReleaseAgeGate extends effect.Schema.Class("ReleaseAg
4597
4633
  }
4598
4634
  };
4599
4635
  //#endregion
4600
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/ImporterDependency.js
4636
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/ImporterDependency.js
4601
4637
  /**
4602
4638
  * One declared dependency of one workspace importer, as the lockfile records it.
4603
4639
  *
@@ -4635,7 +4671,7 @@ var ImporterDependency = class extends effect.Schema.Class("ImporterDependency")
4635
4671
  depType: DependencyField
4636
4672
  }) {};
4637
4673
  //#endregion
4638
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/LockfileImporter.js
4674
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/LockfileImporter.js
4639
4675
  /**
4640
4676
  * One workspace importer's declared dependencies, as the lockfile records them.
4641
4677
  *
@@ -4659,7 +4695,7 @@ var LockfileImporter = class extends effect.Schema.Class("LockfileImporter")({
4659
4695
  dependencies: effect.Schema.Array(ImporterDependency)
4660
4696
  }) {};
4661
4697
  //#endregion
4662
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/ResolvedPackage.js
4698
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/ResolvedPackage.js
4663
4699
  const EMPTY_DEPENDENCIES = {};
4664
4700
  /**
4665
4701
  * A package resolved from a lockfile.
@@ -4694,7 +4730,7 @@ var ResolvedPackage = class extends effect.Schema.Class("ResolvedPackage")({
4694
4730
  dependencies: effect.Schema.Record(effect.Schema.String, effect.Schema.String).pipe(effect.Schema.withDecodingDefaultKey(effect.Effect.succeed(EMPTY_DEPENDENCIES)), effect.Schema.withConstructorDefault(effect.Effect.succeed(EMPTY_DEPENDENCIES)))
4695
4731
  }) {};
4696
4732
  //#endregion
4697
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/WorkspaceDependency.js
4733
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/WorkspaceDependency.js
4698
4734
  /**
4699
4735
  * A directed dependency edge between two workspace packages as recorded in
4700
4736
  * the lockfile.
@@ -4716,7 +4752,7 @@ var WorkspaceDependency = class extends effect.Schema.Class("WorkspaceDependency
4716
4752
  constraint: effect.Schema.String
4717
4753
  }) {};
4718
4754
  //#endregion
4719
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/PnpmExtension.js
4755
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/PnpmExtension.js
4720
4756
  /**
4721
4757
  * Extension data specific to pnpm lockfiles, attached to `Lockfile.extension`
4722
4758
  * when the format is `"pnpm"`.
@@ -4741,7 +4777,7 @@ var PnpmExtension = class extends effect.Schema.Class("PnpmExtension")({
4741
4777
  }))
4742
4778
  }) {};
4743
4779
  //#endregion
4744
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/LockfileFormat.js
4780
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/LockfileFormat.js
4745
4781
  /**
4746
4782
  * The lockfile formats this package parses: bun's `bun.lock` (JSONC), npm's
4747
4783
  * `package-lock.json` (v2/v3 JSON), pnpm's `pnpm-lock.yaml` and yarn Berry's
@@ -4775,7 +4811,7 @@ const FILENAMES = {
4775
4811
  */
4776
4812
  const filenameFor = (format) => FILENAMES[format];
4777
4813
  //#endregion
4778
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/internal/shared.js
4814
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/internal/shared.js
4779
4815
  /**
4780
4816
  * The four dependency sections of a manifest, in a stable order — the shared
4781
4817
  * dependency-sections table (v3's `DEP_SECTIONS`). Each entry is both the
@@ -6706,7 +6742,7 @@ var JsoncModifier = class {
6706
6742
  });
6707
6743
  };
6708
6744
  //#endregion
6709
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/internal/bun.js
6745
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/internal/bun.js
6710
6746
  const DepRecord$2 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
6711
6747
  const BunWorkspaceEntry = effect.Schema.Struct({
6712
6748
  name: effect.Schema.optionalKey(effect.Schema.String),
@@ -6799,7 +6835,7 @@ const toFields$3 = (raw) => effect.Effect.gen(function* () {
6799
6835
  };
6800
6836
  });
6801
6837
  //#endregion
6802
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/internal/npm.js
6838
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/internal/npm.js
6803
6839
  const DepRecord$1 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
6804
6840
  const NpmPackageEntry = effect.Schema.Struct({
6805
6841
  name: effect.Schema.optionalKey(effect.Schema.String),
@@ -13721,7 +13757,7 @@ function deepEqualValues(a, b) {
13721
13757
  return false;
13722
13758
  }
13723
13759
  //#endregion
13724
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/internal/documents.js
13760
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/internal/documents.js
13725
13761
  /**
13726
13762
  * An empty YAML document composes to `null` (`Yaml.parseAll("")` is `[null]`,
13727
13763
  * and the trailing document of an env-only `pnpm-lock.yaml` is `null` too).
@@ -13791,7 +13827,7 @@ const selectSoleDocument = (content) => effect.Effect.gen(function* () {
13791
13827
  };
13792
13828
  });
13793
13829
  //#endregion
13794
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/internal/pnpm.js
13830
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/internal/pnpm.js
13795
13831
  const PnpmImporterDeps = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.Struct({
13796
13832
  specifier: effect.Schema.String,
13797
13833
  version: effect.Schema.String
@@ -13916,7 +13952,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
13916
13952
  };
13917
13953
  });
13918
13954
  //#endregion
13919
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/internal/yarn.js
13955
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/internal/yarn.js
13920
13956
  const YarnLockfileRaw = effect.Schema.Record(effect.Schema.String, effect.Schema.Unknown);
13921
13957
  const DepRecord = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
13922
13958
  const YarnEntry = effect.Schema.Struct({
@@ -14039,7 +14075,7 @@ const cleanYarnDeps = (deps) => {
14039
14075
  return Object.fromEntries(Object.entries(deps).map(([name, value]) => [name, value.startsWith("npm:") ? value.slice(4) : value]));
14040
14076
  };
14041
14077
  //#endregion
14042
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/Lockfile.js
14078
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/Lockfile.js
14043
14079
  const EMPTY_IMPORTERS = [];
14044
14080
  /**
14045
14081
  * Failure of `Lockfile.parse`: the given content is not a valid lockfile of
@@ -14283,7 +14319,7 @@ var Lockfile = class Lockfile extends effect.Schema.Class("Lockfile")({
14283
14319
  }
14284
14320
  };
14285
14321
  //#endregion
14286
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/LockfileIntegrity.js
14322
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.2_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._96898a3d00962223825b2ef21022f405/node_modules/@effected/lockfiles/LockfileIntegrity.js
14287
14323
  /**
14288
14324
  * The minimal manifest shape {@link LockfileIntegrity.compare} checks a
14289
14325
  * lockfile against: a package name plus the four optional dependency maps.
@@ -14399,7 +14435,7 @@ var LockfileIntegrity = class LockfileIntegrity extends effect.Schema.Class("Loc
14399
14435
  }
14400
14436
  };
14401
14437
  //#endregion
14402
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/Dependency.js
14438
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Dependency.js
14403
14439
  /**
14404
14440
  * A resolved dependency entry pairing a package name with its version
14405
14441
  * specifier and the `kind` of map it came from (`@effected/npm`'s
@@ -14463,7 +14499,7 @@ var Dependency = class extends effect.Schema.Class("Dependency")({
14463
14499
  }
14464
14500
  };
14465
14501
  //#endregion
14466
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/DevEngines.js
14502
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/DevEngines.js
14467
14503
  /**
14468
14504
  * A single `devEngines` constraint with a name and optional `version` / `onFail`.
14469
14505
  *
@@ -16018,7 +16054,7 @@ effect.Schema.String.pipe(effect.Schema.decodeTo(SpdxExpressionUnion, effect.Sch
16018
16054
  encode: (expression) => effect.Effect.succeed(serialize$1(expression))
16019
16055
  })));
16020
16056
  //#endregion
16021
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/License.js
16057
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/License.js
16022
16058
  /**
16023
16059
  * Indicates that a string is not a valid SPDX license identifier or expression.
16024
16060
  *
@@ -16053,7 +16089,7 @@ const isValidSpdx = (value) => {
16053
16089
  */
16054
16090
  const SpdxLicense = effect.Schema.String.pipe(effect.Schema.check(effect.Schema.makeFilter((value) => isValidSpdx(value) ? void 0 : "Expected a valid SPDX license expression")), effect.Schema.brand("SpdxLicense"));
16055
16091
  //#endregion
16056
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageManager.js
16092
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageManager.js
16057
16093
  const PACKAGE_MANAGER_RE = /^([a-z]+)@(\d+\.\d+\.\d+(?:-[a-zA-Z0-9._-]+)?)(?:\+(.+))?$/;
16058
16094
  /**
16059
16095
  * The `packageManager` field only ever carries corepack's `<algo>.<hex>`
@@ -16111,7 +16147,7 @@ var PackageManager = class PackageManager extends effect.Schema.Class("PackageMa
16111
16147
  }
16112
16148
  };
16113
16149
  //#endregion
16114
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageName.js
16150
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageName.js
16115
16151
  /**
16116
16152
  * Indicates that a string could not be used as a valid npm package name.
16117
16153
  *
@@ -16169,7 +16205,7 @@ const PackageName = Object.assign(effect.Schema.Union([ScopedPackageName, Unscop
16169
16205
  isScoped
16170
16206
  });
16171
16207
  //#endregion
16172
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/Person.js
16208
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Person.js
16173
16209
  const parsePersonString = (input) => {
16174
16210
  const emailMatch = input.match(/<([^>]+)>/);
16175
16211
  const urlMatch = input.match(/\(([^)]+)\)/);
@@ -16315,7 +16351,7 @@ var Person = class Person extends effect.Schema.Class("Person")({
16315
16351
  }
16316
16352
  };
16317
16353
  //#endregion
16318
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/Repository.js
16354
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Repository.js
16319
16355
  /** The shorthand hosts npm resolves without a scheme. */
16320
16356
  const SHORTHAND_HOSTS = /* @__PURE__ */ new Map([
16321
16357
  ["github", "https://github.com"],
@@ -16490,7 +16526,7 @@ var Bugs = class Bugs extends effect.Schema.Class("Bugs")({
16490
16526
  })));
16491
16527
  };
16492
16528
  //#endregion
16493
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/internal/format.js
16529
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/internal/format.js
16494
16530
  const KEY_INDEX = new Map([
16495
16531
  "$schema",
16496
16532
  "name",
@@ -16713,7 +16749,7 @@ const renderJson = (raw, options) => {
16713
16749
  return options.newline ? `${json}\n` : json;
16714
16750
  };
16715
16751
  //#endregion
16716
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/Package.js
16752
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Package.js
16717
16753
  const toHashMap = effect.SchemaTransformation.transform({
16718
16754
  decode: (record) => effect.HashMap.fromIterable(Object.entries(record)),
16719
16755
  encode: (map) => Object.fromEntries(effect.HashMap.toEntries(map))
@@ -17028,7 +17064,7 @@ var Package = class Package extends effect.Schema.Class("Package")({
17028
17064
  }
17029
17065
  };
17030
17066
  //#endregion
17031
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspacePackage.js
17067
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspacePackage.js
17032
17068
  const EMPTY$1 = Object.freeze(Object.create(null));
17033
17069
  const EMPTY_MANIFEST = Object.freeze(Object.create(null));
17034
17070
  /**
@@ -17626,7 +17662,7 @@ var Walker$1 = class {
17626
17662
  static findRoot = findRoot$1;
17627
17663
  };
17628
17664
  //#endregion
17629
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceRoot.js
17665
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceRoot.js
17630
17666
  /**
17631
17667
  * The marker filenames {@link WorkspaceRoot} probes for, in priority order.
17632
17668
  *
@@ -17813,7 +17849,7 @@ var WorkspaceRoot = class WorkspaceRoot extends effect.Context.Service()("@effec
17813
17849
  static layerTest = (root) => effect.Layer.effect(WorkspaceRoot, WorkspaceRoot.makeTest(root)).pipe(effect.Layer.provide(effect.Path.layer));
17814
17850
  };
17815
17851
  //#endregion
17816
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/limits.js
17852
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/limits.js
17817
17853
  /**
17818
17854
  * Hard ceiling on directories the enumerator will visit for one pattern set.
17819
17855
  * Guards the pathological case a depth cap alone does not: a wide, shallow
@@ -17831,7 +17867,7 @@ const MAX_ENUMERATION_ENTRIES = 1e5;
17831
17867
  */
17832
17868
  const PRUNED_DIRECTORIES = /* @__PURE__ */ new Set([".git", "node_modules"]);
17833
17869
  //#endregion
17834
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/traverse.js
17870
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/traverse.js
17835
17871
  /** Directory names never descended into. */
17836
17872
  const isPruned = (entry) => PRUNED_DIRECTORIES.has(entry);
17837
17873
  /** Join root-relative POSIX segments; `""` is the root itself. */
@@ -17921,7 +17957,7 @@ var Traversal = class {
17921
17957
  }
17922
17958
  };
17923
17959
  //#endregion
17924
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/enumerate.js
17960
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/enumerate.js
17925
17961
  /** Strip a trailing slash from `GlobPattern.enumerationPrefix` to get a relative directory. */
17926
17962
  const baseOf = (pattern) => pattern.enumerationPrefix.replace(/\/$/, "");
17927
17963
  /**
@@ -17991,7 +18027,7 @@ const enumerate = (root, globs, options) => effect.Effect.gen(function* () {
17991
18027
  return results;
17992
18028
  });
17993
18029
  //#endregion
17994
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/patterns.js
18030
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/patterns.js
17995
18031
  const stringsOf = (value) => Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : void 0;
17996
18032
  /** The `packages:` list of a `pnpm-workspace.yaml` document. Total on a parsed document. */
17997
18033
  const pnpmPatternsOf = (document) => {
@@ -18048,7 +18084,7 @@ const readPatterns = (root) => effect.Effect.gen(function* () {
18048
18084
  return manifestPatternsOf(manifest);
18049
18085
  });
18050
18086
  //#endregion
18051
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceDiscovery.js
18087
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceDiscovery.js
18052
18088
  /**
18053
18089
  * Raised when a workspace member's `package.json` cannot be read, parsed, or
18054
18090
  * used — it is missing, malformed, or lacks a `name` or `version`.
@@ -18368,7 +18404,10 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends effect.Context.Service
18368
18404
  * (a fabricated root path would leak into consumer path logic), so an
18369
18405
  * unstubbed `info()` call is a test-wiring mistake and fails loudly as a
18370
18406
  * defect rather than succeeding with a lie or failing with a dishonest
18371
- * typed error.
18407
+ * typed error. A defect is not absorbed by `Effect.catch` or any
18408
+ * typed-error handler — deliberately, so code under test with a
18409
+ * best-effort `catch` cannot make the mandatory stub look optional; the
18410
+ * unstubbed call still fails the test.
18372
18411
  *
18373
18412
  * @example
18374
18413
  * ```ts
@@ -18482,7 +18521,7 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends effect.Context.Service
18482
18521
  };
18483
18522
  const isStringRecord$2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((entry) => typeof entry === "string");
18484
18523
  //#endregion
18485
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/DependencyGraph.js
18524
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/DependencyGraph.js
18486
18525
  /**
18487
18526
  * Raised when the workspace dependency graph cannot be topologically ordered
18488
18527
  * because it contains a cycle.
@@ -20126,7 +20165,7 @@ var Git = class Git extends effect.Context.Service()("@effected/git/Git") {
20126
20165
  static layerTest = (overrides = {}) => effect.Layer.succeed(Git, Git.makeTest(overrides));
20127
20166
  };
20128
20167
  //#endregion
20129
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ChangeDetector.js
20168
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ChangeDetector.js
20130
20169
  /**
20131
20170
  * Which git refs to compare, and whether to fold in the working tree.
20132
20171
  *
@@ -20378,7 +20417,7 @@ function resolveFromCatalog(catalogs, wantedDependency) {
20378
20417
  };
20379
20418
  }
20380
20419
  //#endregion
20381
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/catalogs.js
20420
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/catalogs.js
20382
20421
  /** Project a pnpm-workspace manifest's `catalog` / `catalogs` fields into a `Catalogs` map. */
20383
20422
  const inlineCatalogs = (manifest) => {
20384
20423
  if (manifest.catalog === void 0 && manifest.catalogs === void 0) return {};
@@ -20442,7 +20481,7 @@ const rangeOf = (catalogs, dependency, specifier) => {
20442
20481
  });
20443
20482
  };
20444
20483
  //#endregion
20445
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ConfigDependencyHooks.js
20484
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ConfigDependencyHooks.js
20446
20485
  /** Whether `value` is a non-null, non-array object. */
20447
20486
  const isObject$2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
20448
20487
  /**
@@ -20628,7 +20667,7 @@ var ConfigDependencyHooks = class ConfigDependencyHooks extends effect.Context.S
20628
20667
  }) });
20629
20668
  };
20630
20669
  //#endregion
20631
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/PackageManagerName.js
20670
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/PackageManagerName.js
20632
20671
  /**
20633
20672
  * The four package managers this package understands.
20634
20673
  *
@@ -20918,6 +20957,11 @@ var PackageManagerDetector = class PackageManagerDetector extends effect.Context
20918
20957
  * reads as a legitimate "no manager here" answer, so a consumer would branch
20919
20958
  * on it and proceed, never learning that the test simply forgot to stub.
20920
20959
  *
20960
+ * The defect is also not absorbed by `Effect.catch` or any typed-error
20961
+ * handler — deliberately, so code under test with a best-effort `catch`
20962
+ * around detection cannot make the mandatory stub look optional; the
20963
+ * unstubbed call still fails the test.
20964
+ *
20921
20965
  * @param overrides - Members to supply; anything omitted dies on use.
20922
20966
  *
20923
20967
  * @example
@@ -20951,7 +20995,7 @@ var PackageManagerDetector = class PackageManagerDetector extends effect.Context
20951
20995
  static layerTest = (overrides = {}) => effect.Layer.succeed(PackageManagerDetector, PackageManagerDetector.makeTest(overrides));
20952
20996
  };
20953
20997
  //#endregion
20954
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/LockfileReader.js
20998
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/LockfileReader.js
20955
20999
  /**
20956
21000
  * Raised when the workspace's lockfile cannot be read off disk.
20957
21001
  *
@@ -21131,7 +21175,7 @@ var LockfileReader = class LockfileReader extends effect.Context.Service()("@eff
21131
21175
  static layerTest = (overrides = {}) => effect.Layer.succeed(LockfileReader, LockfileReader.makeTest(overrides));
21132
21176
  };
21133
21177
  //#endregion
21134
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Publishability.js
21178
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Publishability.js
21135
21179
  /** The public npm registry, used when `publishConfig.registry` says nothing. */
21136
21180
  const DEFAULT_REGISTRY = "https://registry.npmjs.org/";
21137
21181
  /**
@@ -21268,8 +21312,15 @@ var PublishabilityDetector = class extends effect.Context.Service()("@effected/w
21268
21312
  * silence — `Layer.mergeAll(myDetector, Workspaces.layer())` resolved to the
21269
21313
  * default, because `mergeAll` is last-wins. For a service that decides
21270
21314
  * whether a package publishes and to which registry, that silent revert was
21271
- * the worst available failure. The requirement now sits in `R`, so the
21272
- * choice is made once, explicitly, and unmade wiring does not compile.
21315
+ * the worst available failure.
21316
+ *
21317
+ * The composites do not *require* a detector either — nothing inside them
21318
+ * asks a publishability question, so their `R` stays `FileSystem | Path`.
21319
+ * The requirement instead surfaces in the `R` of each operation that asks
21320
+ * (`VersioningStrategy.detect`, e.g.): a program that asks and never wires
21321
+ * a detector fails to compile where that operation's `R` must close — which
21322
+ * can be far from the layer-wiring site — and a program that never asks
21323
+ * never supplies a publish policy at all.
21273
21324
  */
21274
21325
  static layerNpm = effect.Layer.succeed(this, this.npm);
21275
21326
  /**
@@ -21283,7 +21334,7 @@ var PublishabilityDetector = class extends effect.Context.Service()("@effected/w
21283
21334
  static layerNone = effect.Layer.succeed(this, this.none);
21284
21335
  };
21285
21336
  //#endregion
21286
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/importerVersions.js
21337
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/internal/importerVersions.js
21287
21338
  /**
21288
21339
  * Strip pnpm's peer-disambiguation suffix from a recorded importer version.
21289
21340
  *
@@ -21369,7 +21420,7 @@ const unanimousVersionOf = (index, dependency) => {
21369
21420
  return agreed;
21370
21421
  };
21371
21422
  //#endregion
21372
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceCatalogs.js
21423
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceCatalogs.js
21373
21424
  /**
21374
21425
  * An immutable, fully-normalized catalog collection — the one catalog
21375
21426
  * resolution semantic in the package.
@@ -21878,7 +21929,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
21878
21929
  }));
21879
21930
  };
21880
21931
  //#endregion
21881
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
21932
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
21882
21933
  const EMPTY = Object.freeze(Object.create(null));
21883
21934
  const DependencyMap = effect.Schema.Record(effect.Schema.String, effect.Schema.String).pipe(effect.Schema.withDecodingDefaultKey(effect.Effect.succeed(EMPTY)), effect.Schema.withConstructorDefault(effect.Effect.succeed(EMPTY)));
21884
21935
  /**
@@ -22101,7 +22152,7 @@ var WorkspaceStateSnapshot = class extends effect.Schema.Class("WorkspaceStateSn
22101
22152
  }
22102
22153
  };
22103
22154
  //#endregion
22104
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceSnapshots.js
22155
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceSnapshots.js
22105
22156
  /** Whether `value` is a non-null, non-array object. */
22106
22157
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
22107
22158
  /** Whether every value in a record is a string — a usable dependency map. */
@@ -22265,7 +22316,7 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends effect.Context.Service
22265
22316
  return {
22266
22317
  at: effect.Effect.fn("WorkspaceSnapshots.at")(function* (ref) {
22267
22318
  const root = yield* effect.Effect.suspend(() => roots.find(options?.cwd ?? process.cwd()));
22268
- const key = `${root}${ref}`;
22319
+ const key = `${root}\0${ref}`;
22269
22320
  let memo = atCaches.get(key);
22270
22321
  if (memo === void 0) {
22271
22322
  const [resolveOnce, invalidate] = yield* effect.Effect.cachedInvalidateWithTTL(computeAt(root, ref), effect.Duration.infinity);
@@ -22323,6 +22374,13 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends effect.Context.Service
22323
22374
  * test-wiring mistake fails loudly as a defect rather than succeeding with a
22324
22375
  * lie.
22325
22376
  *
22377
+ * **A defect is not absorbed by `Effect.catch` or any typed-error handler**,
22378
+ * and that is the point: code under test with a best-effort `catch` around
22379
+ * its snapshot reads cannot make a mandatory stub look optional — the
22380
+ * unstubbed call still fails the test instead of quietly taking the catch
22381
+ * branch. Only defect-level combinators (`Effect.catchDefect`,
22382
+ * `Effect.exit`) would see it.
22383
+ *
22326
22384
  * @example
22327
22385
  * ```ts
22328
22386
  * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
@@ -22370,7 +22428,7 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends effect.Context.Service
22370
22428
  static layerTest = (overrides = {}) => effect.Layer.succeed(WorkspaceSnapshots, WorkspaceSnapshots.makeTest(overrides));
22371
22429
  };
22372
22430
  //#endregion
22373
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Workspaces.js
22431
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Workspaces.js
22374
22432
  const compose = (options, catalogsFactory) => {
22375
22433
  const roots = WorkspaceRoot.layer;
22376
22434
  const detector = PackageManagerDetector.layer;
@@ -22403,11 +22461,12 @@ const localExecLayer = (options) => effect.Layer.effect(LocalExec, effect.Effect
22403
22461
  cause
22404
22462
  })));
22405
22463
  if (effect.Option.isNone(detected)) return effect.Option.none();
22406
- const { prefix, dlxPrefix } = LocalExec.prefixes(detected.value.name);
22464
+ const { prefix, dlxPrefix, scriptPrefix } = LocalExec.prefixes(detected.value.name);
22407
22465
  return effect.Option.some(ExecContext.make({
22408
22466
  label: detected.value.name,
22409
22467
  prefix,
22410
22468
  dlxPrefix,
22469
+ scriptPrefix,
22411
22470
  directory: root.value
22412
22471
  }));
22413
22472
  }) };
@@ -22421,13 +22480,23 @@ var Workspaces = class {
22421
22480
  constructor() {}
22422
22481
  /**
22423
22482
  * Every service that needs only a filesystem: root, package-manager
22424
- * detection, discovery, lockfile reading, catalogs and publishability.
22483
+ * detection, discovery, lockfile reading and catalogs.
22425
22484
  *
22426
22485
  * @remarks
22427
22486
  * Requires core `FileSystem` and `Path`, which the consumer provides at the
22428
22487
  * edge (`@effect/platform-node`, `@effect/platform-bun`, or a test's
22429
22488
  * `FileSystem.layerNoop`).
22430
22489
  *
22490
+ * **`PublishabilityDetector` is neither provided nor required here.** The
22491
+ * composite used to bake in npm semantics, which a naively-ordered override
22492
+ * silently lost to; now it supplies no default, and — because nothing inside
22493
+ * the composite asks a publishability question — it does not require one in
22494
+ * `R` either. The requirement surfaces in the `R` of each operation that
22495
+ * asks (`VersioningStrategy.detect`, e.g.), so a program that asks and never
22496
+ * wires a detector fails to compile at that operation, and a program that
22497
+ * never asks never supplies a publish policy. Wire one explicitly where
22498
+ * needed: `Layer.mergeAll(Workspaces.layer(), PublishabilityDetector.layerNpm)`.
22499
+ *
22431
22500
  * **Bind the result to a `const`.** This is a parameterized factory and
22432
22501
  * layers memoize by reference, so calling it twice builds everything twice.
22433
22502
  *
@@ -22483,7 +22552,8 @@ var Workspaces = class {
22483
22552
  * it. So `commands` declares the narrow contract and we ship the layer.
22484
22553
  *
22485
22554
  * **The argv knowledge is not duplicated.** `LocalExec.prefixes(name)` is
22486
- * the one home of the four managers' `exec`/`dlx` prefixes; this layer
22555
+ * the one home of the four managers' `exec`/`dlx`/script-runner prefixes;
22556
+ * this layer
22487
22557
  * detects *which* manager owns the directory and asks `commands` what that
22488
22558
  * manager's argv looks like. Neither package reimplements the other's
22489
22559
  * half.
@@ -45203,6 +45273,22 @@ function inferDependencyType(dep) {
45203
45273
  return "dependency";
45204
45274
  }
45205
45275
  /**
45276
+ * Narrow a dependency update to one with both version endpoints present.
45277
+ *
45278
+ * `@changesets/types` only guarantees `oldVersion`/`newVersion` on the
45279
+ * `major`/`minor`/`patch` arms of `ComprehensiveRelease`; a `type: "none"`
45280
+ * entry may carry neither. The table's `From`/`To` columns are validated
45281
+ * version strings, so an entry missing either endpoint has no row to render.
45282
+ *
45283
+ * @param dep - The dependency update to test
45284
+ * @returns `true` when both `oldVersion` and `newVersion` are present
45285
+ *
45286
+ * @internal
45287
+ */
45288
+ function isVersioned(dep) {
45289
+ return dep.oldVersion !== void 0 && dep.newVersion !== void 0;
45290
+ }
45291
+ /**
45206
45292
  * Format dependency release lines as a structured markdown table.
45207
45293
  *
45208
45294
  * This is the core Effect program that implements the `getDependencyReleaseLine`
@@ -45213,8 +45299,9 @@ function inferDependencyType(dep) {
45213
45299
  * The function maps each `ModCompWithPackage` entry to a `DependencyTableRow`,
45214
45300
  * inferring the dependency type from the consuming package's `package.json`,
45215
45301
  * then delegates to `serializeDependencyTableToMarkdown` for GFM table
45216
- * rendering, prefixed with a `### Dependencies` heading. Returns an empty
45217
- * string when no dependencies were updated.
45302
+ * rendering, prefixed with a `### Dependencies` heading. Entries missing
45303
+ * either version endpoint are dropped by {@link isVersioned}; the function
45304
+ * returns an empty string when no rows survive.
45218
45305
  *
45219
45306
  * The `_changesets` and `_options` parameters are part of the Changesets API
45220
45307
  * contract but are not used in the table format. They are retained for
@@ -45223,19 +45310,21 @@ function inferDependencyType(dep) {
45223
45310
  * @param _changesets - Changesets that caused the dependency updates (unused in table format)
45224
45311
  * @param dependenciesUpdated - The list of dependencies that were updated, including old/new versions
45225
45312
  * @param _options - Validated configuration options (unused in table format)
45226
- * @returns An `Effect` that resolves to a `### Dependencies` heading followed by a formatted markdown table string, or empty string if no dependencies were updated
45313
+ * @returns An `Effect` that resolves to a `### Dependencies` heading followed by a formatted markdown table string, or empty string if no dependencies with both version endpoints were updated
45227
45314
  */
45228
45315
  function getDependencyReleaseLine(_changesets, dependenciesUpdated, _options) {
45229
45316
  return effect.Effect.gen(function* () {
45230
45317
  if (dependenciesUpdated.length === 0) return "";
45231
45318
  yield* GitHubService;
45232
- return `### Dependencies\n\n${serializeDependencyTableToMarkdown(dependenciesUpdated.map((dep) => ({
45319
+ const rows = dependenciesUpdated.filter(isVersioned).map((dep) => ({
45233
45320
  dependency: dep.name,
45234
45321
  type: inferDependencyType(dep),
45235
45322
  action: "updated",
45236
45323
  from: dep.oldVersion,
45237
45324
  to: dep.newVersion
45238
- })))}`;
45325
+ }));
45326
+ if (rows.length === 0) return "";
45327
+ return `### Dependencies\n\n${serializeDependencyTableToMarkdown(rows)}`;
45239
45328
  });
45240
45329
  }
45241
45330
  //#endregion
@@ -48612,6 +48701,10 @@ const MaintenanceReasonSchema = effect.Schema.Struct({
48612
48701
  * will not match here; the release then degrades gracefully to the
48613
48702
  * `"unspecified"` fallback sentence instead of naming its triggers.
48614
48703
  *
48704
+ * Co-members releasing as `type: "none"` are never triggers — they carry no
48705
+ * version bump (and, per `@changesets/types`, no guaranteed `newVersion`), so
48706
+ * naming one would print an unchanged version as the cause of the release.
48707
+ *
48615
48708
  * @public
48616
48709
  */
48617
48710
  function deriveMaintenanceReason(release, plan, config) {
@@ -48619,7 +48712,7 @@ function deriveMaintenanceReason(release, plan, config) {
48619
48712
  const groupKinds = [["fixed", config.fixed], ["linked", config.linked]];
48620
48713
  for (const [kind, groups] of groupKinds) for (const group of groups) {
48621
48714
  if (!group.some((pattern) => ChangesetConfig.matches(release.name, pattern))) continue;
48622
- const triggers = plan.releases.filter((r) => r.name !== release.name && r.changesets.length > 0 && group.some((pattern) => ChangesetConfig.matches(r.name, pattern))).map((r) => ({
48715
+ const triggers = plan.releases.filter((r) => r.name !== release.name && r.type !== "none" && r.changesets.length > 0 && group.some((pattern) => ChangesetConfig.matches(r.name, pattern))).map((r) => ({
48623
48716
  name: r.name,
48624
48717
  version: r.newVersion
48625
48718
  }));
@@ -60260,7 +60353,7 @@ function validatePackages(packages) {
60260
60353
  }
60261
60354
  }
60262
60355
  //#endregion
60263
- //#region ../../node_modules/.pnpm/@changesets+get-dependents-graph@3.0.0-next.7/node_modules/@changesets/get-dependents-graph/dist/index.mjs
60356
+ //#region ../../node_modules/.pnpm/@changesets+get-dependents-graph@3.0.0-next.8/node_modules/@changesets/get-dependents-graph/dist/index.mjs
60264
60357
  var src_default = new Proxy({}, { get(target, color) {
60265
60358
  target[color] ??= (text) => (0, node_util.styleText)(color, text);
60266
60359
  return target[color];
@@ -60374,20 +60467,20 @@ function getDependentsGraph(packages, opts) {
60374
60467
  graph.set(key, dependentsLookup[key]);
60375
60468
  });
60376
60469
  const simplifiedDependentsGraph = /* @__PURE__ */ new Map();
60377
- graph.forEach((pkgInfo, pkgName) => {
60378
- simplifiedDependentsGraph.set(pkgName, pkgInfo.dependents);
60470
+ graph.forEach((info, pkgName) => {
60471
+ simplifiedDependentsGraph.set(pkgName, info.dependents);
60379
60472
  });
60380
60473
  return simplifiedDependentsGraph;
60381
60474
  }
60382
60475
  //#endregion
60383
- //#region ../../node_modules/.pnpm/@changesets+should-skip-package@1.0.0-next.7/node_modules/@changesets/should-skip-package/dist/index.mjs
60476
+ //#region ../../node_modules/.pnpm/@changesets+should-skip-package@1.0.0-next.8/node_modules/@changesets/should-skip-package/dist/index.mjs
60384
60477
  function shouldSkipPackage({ packageJson }, { ignore, allowPrivatePackages }) {
60385
60478
  if (ignore.includes(packageJson.name)) return true;
60386
60479
  if (packageJson.private && !allowPrivatePackages) return true;
60387
60480
  return !packageJson.version;
60388
60481
  }
60389
60482
  //#endregion
60390
- //#region ../../node_modules/.pnpm/@changesets+config@4.0.0-next.7/node_modules/@changesets/config/dist/index.mjs
60483
+ //#region ../../node_modules/.pnpm/@changesets+config@4.0.0-next.8/node_modules/@changesets/config/dist/index.mjs
60391
60484
  const DEFAULT_CONFIG = {
60392
60485
  lang: void 0,
60393
60486
  message: void 0,
@@ -61299,7 +61392,7 @@ async function readConfig(cwd, packages) {
61299
61392
  packages ??= await getPackages(cwd);
61300
61393
  return validateConfig(JSON.parse(await node_fs_promises.readFile(node_path.join(packages.rootDir, ".changeset", "config.json"), "utf8")), packages);
61301
61394
  }
61302
- var version = "4.0.0-next.7";
61395
+ var version = "4.0.0-next.8";
61303
61396
  const defaultConfig = normalizeWrittenConfig({
61304
61397
  packageNames: [],
61305
61398
  writtenConfig: parse(WrittenConfigSchema, {
@@ -62571,7 +62664,7 @@ var InternalError = class extends Error {
62571
62664
  }
62572
62665
  };
62573
62666
  //#endregion
62574
- //#region ../../node_modules/.pnpm/@changesets+git@4.0.0-next.7/node_modules/@changesets/git/dist/index.mjs
62667
+ //#region ../../node_modules/.pnpm/@changesets+git@4.0.0-next.8/node_modules/@changesets/git/dist/index.mjs
62575
62668
  async function getDivergedCommit(cwd, ref) {
62576
62669
  const cmd = await z("git", [
62577
62670
  "merge-base",
@@ -64718,7 +64811,7 @@ function applyEdits(text, edits) {
64718
64811
  return text;
64719
64812
  }
64720
64813
  //#endregion
64721
- //#region ../../node_modules/.pnpm/@changesets+apply-release-plan@8.0.0-next.8/node_modules/@changesets/apply-release-plan/dist/index.mjs
64814
+ //#region ../../node_modules/.pnpm/@changesets+apply-release-plan@8.0.0-next.9/node_modules/@changesets/apply-release-plan/dist/index.mjs
64722
64815
  /**
64723
64816
  * A simple JSON editing utility that preserves formatting. They specified operation keys
64724
64817
  * must exist in the JSON for this implementation.
@@ -64770,6 +64863,7 @@ function getBumpLevel(type) {
64770
64863
  return level;
64771
64864
  }
64772
64865
  function shouldUpdateDependencyBasedOnConfig(cwd, release, { depVersionRange, depType }, { minReleaseType, onlyUpdatePeerDependentsWhenOutOfRange }) {
64866
+ if (release.newVersion == null) return false;
64773
64867
  if (depVersionRange.startsWith("workspace:")) {
64774
64868
  depVersionRange = depVersionRange.replace(/^workspace:/, "");
64775
64869
  switch (depVersionRange) {
@@ -64781,7 +64875,7 @@ function shouldUpdateDependencyBasedOnConfig(cwd, release, { depVersionRange, de
64781
64875
  default: if (!(0, semver_ranges_valid_js.default)(depVersionRange)) return node_path.posix.normalize(depVersionRange) === node_path.relative(cwd, release.dir).replace(/\\/g, "/");
64782
64876
  }
64783
64877
  }
64784
- if (!(0, semver_functions_satisfies_js.default)(release.version, depVersionRange)) return true;
64878
+ if (!(0, semver_functions_satisfies_js.default)(release.newVersion, depVersionRange)) return true;
64785
64879
  const minLevel = getBumpLevel(minReleaseType);
64786
64880
  let shouldUpdate = getBumpLevel(release.type) >= minLevel;
64787
64881
  if (depType === "peerDependencies") shouldUpdate = !onlyUpdatePeerDependentsWhenOutOfRange;
@@ -64806,12 +64900,7 @@ async function getChangelogEntry(cwd, release, releases, changesets, changelogFu
64806
64900
  const peerDependencyVersionRange = release.packageJson.peerDependencies?.[rel.name];
64807
64901
  const versionRange = dependencyVersionRange || peerDependencyVersionRange;
64808
64902
  const usesWorkspaceRange = versionRange?.startsWith("workspace:");
64809
- return versionRange && (usesWorkspaceRange || (0, semver_ranges_valid_js.default)(versionRange) != null) && shouldUpdateDependencyBasedOnConfig(cwd, {
64810
- type: rel.type,
64811
- version: rel.newVersion,
64812
- oldVersion: rel.oldVersion,
64813
- dir: rel.dir
64814
- }, {
64903
+ return versionRange && (usesWorkspaceRange || (0, semver_ranges_valid_js.default)(versionRange) != null) && shouldUpdateDependencyBasedOnConfig(cwd, rel, {
64815
64904
  depVersionRange: versionRange,
64816
64905
  depType: dependencyVersionRange ? "dependencies" : "peerDependencies"
64817
64906
  }, {
@@ -64863,14 +64952,11 @@ function getDependencyVersionEdits(packageJson, versionsToUpdate, { cwd, updateI
64863
64952
  const pkgJsonEdits = [];
64864
64953
  for (const depType of DEPENDENCY_TYPES) {
64865
64954
  const deps = packageJson[depType];
64866
- if (deps) for (const { name, version, oldVersion, type, dir } of versionsToUpdate) {
64955
+ if (deps) for (const release of versionsToUpdate) {
64956
+ if (release.newVersion == null) continue;
64957
+ const { name, newVersion } = release;
64867
64958
  let depCurrentVersion = deps[name];
64868
- if (!depCurrentVersion || depCurrentVersion.startsWith("file:") || depCurrentVersion.startsWith("link:") || !shouldUpdateDependencyBasedOnConfig(cwd, {
64869
- version,
64870
- oldVersion,
64871
- type,
64872
- dir
64873
- }, {
64959
+ if (!depCurrentVersion || depCurrentVersion.startsWith("file:") || depCurrentVersion.startsWith("link:") || !shouldUpdateDependencyBasedOnConfig(cwd, release, {
64874
64960
  depVersionRange: depCurrentVersion,
64875
64961
  depType
64876
64962
  }, {
@@ -64884,8 +64970,8 @@ function getDependencyVersionEdits(packageJson, versionsToUpdate, { cwd, updateI
64884
64970
  if (workspaceDepVersion === "*" || workspaceDepVersion === "^" || workspaceDepVersion === "~" || (0, semver_ranges_valid_js.default)(workspaceDepVersion) == null) continue;
64885
64971
  depCurrentVersion = workspaceDepVersion;
64886
64972
  }
64887
- if (new semver_classes_range_js.default(depCurrentVersion).range !== "" || (0, semver_functions_prerelease_js.default)(version) != null) {
64888
- let newNewRange = snapshot ? version : `${getVersionRangeType(depCurrentVersion)}${version}`;
64973
+ if (new semver_classes_range_js.default(depCurrentVersion).range !== "" || (0, semver_functions_prerelease_js.default)(newVersion) != null) {
64974
+ let newNewRange = snapshot ? newVersion : `${getVersionRangeType(depCurrentVersion)}${newVersion}`;
64889
64975
  if (usesWorkspaceRange) newNewRange = `workspace:${newNewRange}`;
64890
64976
  pkgJsonEdits.push({
64891
64977
  keys: [depType, name],
@@ -64952,12 +65038,9 @@ async function applyReleasePlan(releasePlan, packages, config = defaultConfig, s
64952
65038
  else await node_fs_promises.writeFile(node_path.join(cwd, ".changeset", "pre.json"), JSON.stringify(releasePlan.preState, null, 2) + "\n");
64953
65039
  touchedFiles.push(node_path.join(cwd, ".changeset", "pre.json"));
64954
65040
  }
64955
- const versionsToUpdate = releases.map(({ name, newVersion, oldVersion, type }) => ({
64956
- name,
64957
- version: newVersion,
64958
- oldVersion,
64959
- type,
64960
- dir: packagesByName.get(name).dir
65041
+ const versionsToUpdate = releases.map((release) => ({
65042
+ ...release,
65043
+ dir: packagesByName.get(release.name).dir
64961
65044
  }));
64962
65045
  const dependencyUpdateOptions = {
64963
65046
  cwd,
@@ -64969,10 +65052,12 @@ async function applyReleasePlan(releasePlan, packages, config = defaultConfig, s
64969
65052
  const filesToFormat = [];
64970
65053
  for (const release of releaseWithChangelogs) {
64971
65054
  const { changelog, dir, name, newVersion, packageJson } = release;
64972
- const pkgJsonPath = await updatePackageJson(dir, [{
65055
+ const pkgJsonEdits = getDependencyVersionEdits(packageJson, versionsToUpdate, dependencyUpdateOptions);
65056
+ if (newVersion != null) pkgJsonEdits.push({
64973
65057
  keys: ["version"],
64974
65058
  value: newVersion
64975
- }, ...getDependencyVersionEdits(packageJson, versionsToUpdate, dependencyUpdateOptions)]);
65059
+ });
65060
+ const pkgJsonPath = await updatePackageJson(dir, pkgJsonEdits);
64976
65061
  if (pkgJsonPath) touchedFiles.push(pkgJsonPath);
64977
65062
  if (changelog && changelog.length > 0) {
64978
65063
  const changelogPath = node_path.resolve(dir, "CHANGELOG.md");
@@ -65076,7 +65161,7 @@ async function updateChangelog(changelogPath, changelog, name) {
65076
65161
  await node_fs_promises.writeFile(changelogPath, newChangelog);
65077
65162
  }
65078
65163
  //#endregion
65079
- //#region ../../node_modules/.pnpm/@changesets+assemble-release-plan@7.0.0-next.8/node_modules/@changesets/assemble-release-plan/dist/index.mjs
65164
+ //#region ../../node_modules/.pnpm/@changesets+assemble-release-plan@7.0.0-next.9/node_modules/@changesets/assemble-release-plan/dist/index.mjs
65080
65165
  function getHighestReleaseType(releases) {
65081
65166
  if (releases.length === 0) throw new Error(`Large internal Changesets error when calculating highest release type in the set of releases. Please contact the maintainers`);
65082
65167
  let highestReleaseType = "none";
@@ -65422,7 +65507,7 @@ function getPreInfo(changesets, packagesByName, config, preState) {
65422
65507
  };
65423
65508
  }
65424
65509
  //#endregion
65425
- //#region ../../node_modules/.pnpm/@changesets+pre@3.0.0-next.7/node_modules/@changesets/pre/dist/index.mjs
65510
+ //#region ../../node_modules/.pnpm/@changesets+pre@3.0.0-next.8/node_modules/@changesets/pre/dist/index.mjs
65426
65511
  async function outputFile(filePath, content) {
65427
65512
  await node_fs_promises.mkdir(node_path.dirname(filePath), { recursive: true });
65428
65513
  await node_fs_promises.writeFile(filePath, content, "utf8");
@@ -65451,7 +65536,7 @@ async function migratePreState(rootDir, preState) {
65451
65536
  return preState;
65452
65537
  }
65453
65538
  //#endregion
65454
- //#region ../../node_modules/.pnpm/@changesets+parse@1.0.0-next.8/node_modules/@changesets/parse/dist/index.mjs
65539
+ //#region ../../node_modules/.pnpm/@changesets+parse@1.0.0-next.9/node_modules/@changesets/parse/dist/index.mjs
65455
65540
  const mdRegex = /\s*---([^]*?)\r?\n\s*---(\s*(?:\n|$)[^]*)/;
65456
65541
  const EXAMPLE_FORMAT = `---\n"package-name": patch\n---`;
65457
65542
  const validVersionTypes = [
@@ -65504,7 +65589,7 @@ YAML error: ${e instanceof Error ? e.message : String(e)}\nFrontmatter content:\
65504
65589
  };
65505
65590
  }
65506
65591
  //#endregion
65507
- //#region ../../node_modules/.pnpm/@changesets+read@1.0.0-next.8/node_modules/@changesets/read/dist/index.mjs
65592
+ //#region ../../node_modules/.pnpm/@changesets+read@1.0.0-next.9/node_modules/@changesets/read/dist/index.mjs
65508
65593
  const ignoredMdFiles = [
65509
65594
  /^README\.md$/i,
65510
65595
  "AGENTS.md",
@@ -65537,7 +65622,7 @@ async function readChangesets(rootDir, sinceRef) {
65537
65622
  return await Promise.all(changesetContents);
65538
65623
  }
65539
65624
  //#endregion
65540
- //#region ../../node_modules/.pnpm/@changesets+get-release-plan@5.0.0-next.8/node_modules/@changesets/get-release-plan/dist/index.mjs
65625
+ //#region ../../node_modules/.pnpm/@changesets+get-release-plan@5.0.0-next.9/node_modules/@changesets/get-release-plan/dist/index.mjs
65541
65626
  async function getReleasePlan(cwd, sinceRef, passedConfig) {
65542
65627
  const packages = await getPackages(cwd);
65543
65628
  const configResult = await readConfig(packages.rootDir, packages);