@savvy-web/silk 3.2.2 → 3.2.3

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.
@@ -2357,7 +2357,7 @@ var GlobSet = class GlobSet extends effect.Schema.Class("GlobSet")(effect.Schema
2357
2357
  }
2358
2358
  };
2359
2359
  //#endregion
2360
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/BunExtension.js
2360
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/BunExtension.js
2361
2361
  /**
2362
2362
  * Extension data specific to bun lockfiles, attached to `Lockfile.extension`
2363
2363
  * when the format is `"bun"`.
@@ -2378,7 +2378,7 @@ var BunExtension = class extends effect.Schema.Class("BunExtension")({
2378
2378
  trustedDependencies: effect.Schema.optionalKey(effect.Schema.Array(effect.Schema.String))
2379
2379
  }) {};
2380
2380
  //#endregion
2381
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogResolver.js
2381
+ //#region ../../node_modules/.pnpm/@effected+npm@0.4.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogResolver.js
2382
2382
  /**
2383
2383
  * Contract for resolving pnpm `catalog:` dependency specifiers to concrete
2384
2384
  * version ranges.
@@ -2424,7 +2424,7 @@ var CatalogResolver = class CatalogResolver extends effect.Context.Service()("@e
2424
2424
  static noop = effect.Layer.succeed(CatalogResolver, { rangeOf: () => effect.Effect.succeed(effect.Option.none()) });
2425
2425
  };
2426
2426
  //#endregion
2427
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/WorkspaceResolver.js
2427
+ //#region ../../node_modules/.pnpm/@effected+npm@0.4.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/WorkspaceResolver.js
2428
2428
  /**
2429
2429
  * Raised when a `catalog:` or `workspace:` specifier cannot be resolved
2430
2430
  * because the resolution mechanism itself failed — not for an ordinary
@@ -2485,7 +2485,7 @@ var WorkspaceResolver = class WorkspaceResolver extends effect.Context.Service()
2485
2485
  static noop = effect.Layer.succeed(WorkspaceResolver, { versionOf: () => effect.Effect.succeed(effect.Option.none()) });
2486
2486
  };
2487
2487
  //#endregion
2488
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogAssemblyError.js
2488
+ //#region ../../node_modules/.pnpm/@effected+npm@0.4.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/CatalogAssemblyError.js
2489
2489
  /**
2490
2490
  * Raised when a workspace's catalogs cannot be assembled — a `pnpm-workspace.yaml`
2491
2491
  * that is unreadable or not valid YAML, a root `package.json` `workspaces` field
@@ -2529,7 +2529,7 @@ var CatalogAssemblyError = class extends effect.Schema.TaggedErrorClass()("Catal
2529
2529
  }
2530
2530
  };
2531
2531
  //#endregion
2532
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySection.js
2532
+ //#region ../../node_modules/.pnpm/@effected+npm@0.4.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySection.js
2533
2533
  /**
2534
2534
  * The short dependency kind: which dependency map an entry came from, named the
2535
2535
  * way consumers branch on it.
@@ -4030,7 +4030,7 @@ const isComparatorSetSubset = (sub, sup) => {
4030
4030
  return true;
4031
4031
  };
4032
4032
  //#endregion
4033
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySpecifier.js
4033
+ //#region ../../node_modules/.pnpm/@effected+npm@0.4.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/DependencySpecifier.js
4034
4034
  /**
4035
4035
  * Indicates that a string could not be parsed as a valid dependency specifier.
4036
4036
  *
@@ -4237,7 +4237,7 @@ const DependencySpecifier = Object.assign(brandedSpecifier, {
4237
4237
  FromString: fromString
4238
4238
  });
4239
4239
  //#endregion
4240
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/IntegrityHash.js
4240
+ //#region ../../node_modules/.pnpm/@effected+npm@0.4.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/IntegrityHash.js
4241
4241
  const SRI_RE = /^(sha1|sha256|sha384|sha512)-[A-Za-z0-9+/]+={0,2}$/;
4242
4242
  const COREPACK_RE = /^(sha1|sha256|sha384|sha512)\.[0-9a-f]+$/;
4243
4243
  const YARN_RE = /^[0-9]+(c[0-9]+)?\/[0-9a-f]+$/;
@@ -4290,7 +4290,7 @@ const IntegrityHash = Object.assign(brandedIntegrity, {
4290
4290
  decode: decode$2
4291
4291
  });
4292
4292
  //#endregion
4293
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/ReleaseAgeGate.js
4293
+ //#region ../../node_modules/.pnpm/@effected+npm@0.4.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/ReleaseAgeGate.js
4294
4294
  const MS_PER_MINUTE = 6e4;
4295
4295
  /**
4296
4296
  * A source's partial contribution to a {@link ReleaseAgeGate}: the effective
@@ -4378,7 +4378,9 @@ var ReleaseAgeGate = class ReleaseAgeGate extends effect.Schema.Class("ReleaseAg
4378
4378
  * Combine partial contributions from multiple sources into one effective
4379
4379
  * gate: **strictest age wins** (the maximum of the contributed ages,
4380
4380
  * clamped to be non-negative) and the exclude sets **union** (deduplicated,
4381
- * insertion order preserved). A contribution's absent field adds nothing; a
4381
+ * lexicographically sorted a canonical wire form, so the combined gate is
4382
+ * deterministic regardless of the order contributions arrive in). A
4383
+ * contribution's absent field adds nothing; a
4382
4384
  * negative or non-finite contributed age is ignored by the clamp. With no
4383
4385
  * contributions (or only empty ones) the result is the inert zero gate
4384
4386
  * (`ageMinutes: 0`, `exclude: []`).
@@ -4392,7 +4394,7 @@ var ReleaseAgeGate = class ReleaseAgeGate extends effect.Schema.Class("ReleaseAg
4392
4394
  static combine(...contributions) {
4393
4395
  const ages = contributions.map((contribution) => contribution.ageMinutes).filter((age) => typeof age === "number" && Number.isFinite(age));
4394
4396
  const ageMinutes = ages.length > 0 ? Math.max(0, ...ages) : 0;
4395
- const exclude = [...new Set(contributions.flatMap((contribution) => contribution.exclude ?? []))];
4397
+ const exclude = [...new Set(contributions.flatMap((contribution) => contribution.exclude ?? []))].sort();
4396
4398
  return ReleaseAgeGate.make({
4397
4399
  ageMinutes,
4398
4400
  exclude
@@ -4458,7 +4460,7 @@ var ReleaseAgeGate = class ReleaseAgeGate extends effect.Schema.Class("ReleaseAg
4458
4460
  }
4459
4461
  };
4460
4462
  //#endregion
4461
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/ImporterDependency.js
4463
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/ImporterDependency.js
4462
4464
  /**
4463
4465
  * One declared dependency of one workspace importer, as the lockfile records it.
4464
4466
  *
@@ -4469,11 +4471,20 @@ var ReleaseAgeGate = class ReleaseAgeGate extends effect.Schema.Class("ReleaseAg
4469
4471
  * `ClassifiedSpecifier` (`catalog:` / `workspace:` / range / dist-tag / raw),
4470
4472
  * while encoding round-trips the **exact original string byte-for-byte** — the
4471
4473
  * guarantee a before/after lockfile diff relies on.
4472
- * - `version` — the concrete resolved version, **populated by pnpm only**. pnpm
4473
- * records `{ specifier, version }` per importer dependency; bun and npm record
4474
- * resolved versions on their package entries instead, so for those formats
4475
- * `version` is absent and a consumer joins by `name` against
4476
- * `Lockfile.packages`.
4474
+ * - `version` — the concrete resolved version, **populated by pnpm only**:
4475
+ * comparable across refs and printable. pnpm records `{ specifier, version }`
4476
+ * per importer dependency, and the parser splits pnpm's peer-disambiguation
4477
+ * suffix off into `peerSuffix`, so `version` is always the plain version or
4478
+ * a non-registry resolution (`link:../utils`, `file:...`), passed through
4479
+ * verbatim. bun and npm record resolved versions on their package entries
4480
+ * instead, so for those formats `version` is absent and a consumer joins by
4481
+ * `name` against `Lockfile.packages`.
4482
+ * - `peerSuffix` — pnpm's peer-disambiguation context: the raw parenthesized
4483
+ * chain the lockfile recorded after the version, e.g.
4484
+ * `(effect@4.0.0-beta.101)(ioredis@5.11.1(supports-color@8.1.1))`. Present
4485
+ * only when the lockfile recorded one — never for suffix-free pnpm entries,
4486
+ * and never for the other formats, which do not record peer context per
4487
+ * importer dependency.
4477
4488
  * - `depType` — which dependency map declared it, spelled with `@effected/npm`'s
4478
4489
  * kit-wide `DependencyField` vocabulary.
4479
4490
  *
@@ -4483,10 +4494,11 @@ var ImporterDependency = class extends effect.Schema.Class("ImporterDependency")
4483
4494
  name: effect.Schema.NonEmptyString,
4484
4495
  specifier: DependencySpecifier.FromString,
4485
4496
  version: effect.Schema.optionalKey(effect.Schema.String),
4497
+ peerSuffix: effect.Schema.optionalKey(effect.Schema.String),
4486
4498
  depType: DependencyField
4487
4499
  }) {};
4488
4500
  //#endregion
4489
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/LockfileImporter.js
4501
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/LockfileImporter.js
4490
4502
  /**
4491
4503
  * One workspace importer's declared dependencies, as the lockfile records them.
4492
4504
  *
@@ -4510,7 +4522,7 @@ var LockfileImporter = class extends effect.Schema.Class("LockfileImporter")({
4510
4522
  dependencies: effect.Schema.Array(ImporterDependency)
4511
4523
  }) {};
4512
4524
  //#endregion
4513
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/ResolvedPackage.js
4525
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/ResolvedPackage.js
4514
4526
  const EMPTY_DEPENDENCIES = {};
4515
4527
  /**
4516
4528
  * A package resolved from a lockfile.
@@ -4545,7 +4557,7 @@ var ResolvedPackage = class extends effect.Schema.Class("ResolvedPackage")({
4545
4557
  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)))
4546
4558
  }) {};
4547
4559
  //#endregion
4548
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/WorkspaceDependency.js
4560
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/WorkspaceDependency.js
4549
4561
  /**
4550
4562
  * A directed dependency edge between two workspace packages as recorded in
4551
4563
  * the lockfile.
@@ -4567,7 +4579,7 @@ var WorkspaceDependency = class extends effect.Schema.Class("WorkspaceDependency
4567
4579
  constraint: effect.Schema.String
4568
4580
  }) {};
4569
4581
  //#endregion
4570
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/PnpmExtension.js
4582
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/PnpmExtension.js
4571
4583
  /**
4572
4584
  * Extension data specific to pnpm lockfiles, attached to `Lockfile.extension`
4573
4585
  * when the format is `"pnpm"`.
@@ -4592,7 +4604,7 @@ var PnpmExtension = class extends effect.Schema.Class("PnpmExtension")({
4592
4604
  }))
4593
4605
  }) {};
4594
4606
  //#endregion
4595
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/LockfileFormat.js
4607
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/LockfileFormat.js
4596
4608
  /**
4597
4609
  * The lockfile formats this package parses: bun's `bun.lock` (JSONC), npm's
4598
4610
  * `package-lock.json` (v2/v3 JSON), pnpm's `pnpm-lock.yaml` and yarn Berry's
@@ -4626,7 +4638,7 @@ const FILENAMES = {
4626
4638
  */
4627
4639
  const filenameFor = (format) => FILENAMES[format];
4628
4640
  //#endregion
4629
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/internal/shared.js
4641
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/internal/shared.js
4630
4642
  /**
4631
4643
  * The four dependency sections of a manifest, in a stable order — the shared
4632
4644
  * dependency-sections table (v3's `DEP_SECTIONS`). Each entry is both the
@@ -4665,22 +4677,54 @@ const toIntegrityHash = (raw) => {
4665
4677
  };
4666
4678
  const decodeSpecifier = effect.Schema.decodeUnknownExit(DependencySpecifier.FromString);
4667
4679
  /**
4680
+ * Split pnpm's peer-disambiguation suffix off a recorded string: everything
4681
+ * from the first `(` on is suffix, since package names and versions never
4682
+ * contain `(`. Handles both shapes pnpm records — a bare version
4683
+ * (`"1.0.0(effect@4.0.0)"`, importer entries) and a `name@version` snapshot key
4684
+ * (`"fdir@6.5.0(picomatch@4.0.4)"`). A string with no `(` — including
4685
+ * `link:...` / `file:...` resolutions — passes through untouched. So does a
4686
+ * protocol-bearing string (a `:` ahead of the first `(`), where a parenthesis
4687
+ * is path or URL text rather than a peer suffix: pnpm attaches suffixes to
4688
+ * registry versions only. This is the single stripping implementation — do not
4689
+ * hand-roll an `indexOf("(")` split elsewhere.
4690
+ *
4691
+ * @internal
4692
+ */
4693
+ const splitPeerSuffix = (raw) => {
4694
+ const parenIndex = raw.indexOf("(");
4695
+ if (parenIndex === -1) return { plain: raw };
4696
+ if (raw.lastIndexOf(":", parenIndex) !== -1) return { plain: raw };
4697
+ return {
4698
+ plain: raw.slice(0, parenIndex),
4699
+ peerSuffix: raw.slice(parenIndex)
4700
+ };
4701
+ };
4702
+ /**
4668
4703
  * Build one {@link ImporterDependency}, decoding the raw specifier string into
4669
4704
  * the `@effected/npm` `ClassifiedSpecifier` tagged union. Returns `undefined`
4670
4705
  * — a skip, never a throw — when the name is empty or the specifier does not
4671
4706
  * classify (e.g. an empty specifier), per the total-string-surgery discipline.
4672
4707
  *
4708
+ * A pnpm-recorded version is normalized through {@link splitPeerSuffix}: the
4709
+ * `version` field carries the plain version and the split-off peer chain lands
4710
+ * in `peerSuffix`. A version that is *only* a peer chain (empty plain part) is
4711
+ * treated as no concrete version — a skip of both fields, never a throw.
4712
+ *
4673
4713
  * @internal
4674
4714
  */
4675
4715
  const buildImporterDependency = (name, specifier, depType, version) => {
4676
4716
  if (name === "") return void 0;
4677
4717
  const exit = decodeSpecifier(specifier);
4678
4718
  if (effect.Exit.isFailure(exit)) return void 0;
4719
+ const resolved = version !== void 0 && version !== "" ? splitPeerSuffix(version) : void 0;
4679
4720
  return ImporterDependency.make({
4680
4721
  name,
4681
4722
  specifier: exit.value,
4682
4723
  depType,
4683
- ...version !== void 0 && version !== "" ? { version } : {}
4724
+ ...resolved !== void 0 && resolved.plain !== "" ? {
4725
+ version: resolved.plain,
4726
+ ...resolved.peerSuffix !== void 0 ? { peerSuffix: resolved.peerSuffix } : {}
4727
+ } : {}
4684
4728
  });
4685
4729
  };
4686
4730
  /**
@@ -6525,7 +6569,7 @@ var JsoncModifier = class {
6525
6569
  });
6526
6570
  };
6527
6571
  //#endregion
6528
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/internal/bun.js
6572
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/internal/bun.js
6529
6573
  const DepRecord$2 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
6530
6574
  const BunWorkspaceEntry = effect.Schema.Struct({
6531
6575
  name: effect.Schema.optionalKey(effect.Schema.String),
@@ -6618,7 +6662,7 @@ const toFields$3 = (raw) => effect.Effect.gen(function* () {
6618
6662
  };
6619
6663
  });
6620
6664
  //#endregion
6621
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/internal/npm.js
6665
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/internal/npm.js
6622
6666
  const DepRecord$1 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
6623
6667
  const NpmPackageEntry = effect.Schema.Struct({
6624
6668
  name: effect.Schema.optionalKey(effect.Schema.String),
@@ -6716,7 +6760,7 @@ const toFields$2 = (raw) => effect.Effect.gen(function* () {
6716
6760
  };
6717
6761
  });
6718
6762
  //#endregion
6719
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlNode.js
6763
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlNode.js
6720
6764
  /**
6721
6765
  * YAML scalar presentation styles.
6722
6766
  *
@@ -7118,7 +7162,7 @@ function nodeToValue(node, anchors, budget, counting = false) {
7118
7162
  return null;
7119
7163
  }
7120
7164
  //#endregion
7121
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/diagnostics.js
7165
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/diagnostics.js
7122
7166
  /** Error codes emitted by the lexer stage. */
7123
7167
  const YAML_LEX_ERROR_CODES = [
7124
7168
  "UnexpectedCharacter",
@@ -7196,7 +7240,7 @@ function isFatalCode(code) {
7196
7240
  return FATAL_CODES.has(code);
7197
7241
  }
7198
7242
  //#endregion
7199
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlDiagnostic.js
7243
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlDiagnostic.js
7200
7244
  /**
7201
7245
  * Error codes emitted by the lexer stage.
7202
7246
  *
@@ -7317,7 +7361,7 @@ function lineChar(text, offset) {
7317
7361
  };
7318
7362
  }
7319
7363
  //#endregion
7320
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/anchors.js
7364
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/anchors.js
7321
7365
  /**
7322
7366
  * Check if a pending anchor is being applied to an alias node (invalid in YAML 1.2 §3.2.2).
7323
7367
  * Aliases represent references to existing anchored nodes and cannot have their own anchors.
@@ -7410,7 +7454,7 @@ function collectAnchors(node, anchors) {
7410
7454
  }
7411
7455
  }
7412
7456
  //#endregion
7413
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/lexer.js
7457
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/lexer.js
7414
7458
  /**
7415
7459
  * Create a new YAML scanner for the given source text.
7416
7460
  *
@@ -8367,7 +8411,7 @@ function lexAll(text) {
8367
8411
  return tokens;
8368
8412
  }
8369
8413
  //#endregion
8370
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/cst-parser.js
8414
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/cst-parser.js
8371
8415
  /**
8372
8416
  * Hardening: cap CST nesting so hostile inputs cannot overflow the stack
8373
8417
  * while the tree is being BUILT. Set slightly above the composer's
@@ -9079,7 +9123,7 @@ function parseCSTAll(text) {
9079
9123
  return parseDocuments(lexAll(text), text);
9080
9124
  }
9081
9125
  //#endregion
9082
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/state.js
9126
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/state.js
9083
9127
  let lineStartsText;
9084
9128
  let lineStartsCache = [];
9085
9129
  function getLineStarts(text) {
@@ -9185,7 +9229,7 @@ function exitNesting(state) {
9185
9229
  state.depth--;
9186
9230
  }
9187
9231
  //#endregion
9188
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/tags.js
9232
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/tags.js
9189
9233
  /**
9190
9234
  * Resolve a tag shorthand using the document's %TAG directives.
9191
9235
  * For example, with `%TAG !! tag:example.com,2000:app/`, the tag `!!int`
@@ -9271,7 +9315,7 @@ function validateTagHandlesInDocument(docCst, state) {
9271
9315
  }
9272
9316
  }
9273
9317
  //#endregion
9274
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/scalars.js
9318
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/scalars.js
9275
9319
  const NULL_RE$1 = /^(?:null|Null|NULL|~)$/;
9276
9320
  const TRUE_RE$1 = /^(?:true|True|TRUE)$/;
9277
9321
  const FALSE_RE$1 = /^(?:false|False|FALSE)$/;
@@ -10149,7 +10193,7 @@ function shouldPreserveRaw(rawValue, value) {
10149
10193
  return false;
10150
10194
  }
10151
10195
  //#endregion
10152
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/block.js
10196
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/block.js
10153
10197
  /**
10154
10198
  * Compose a block map from its CST children, with an optional external first key.
10155
10199
  *
@@ -11297,7 +11341,7 @@ function composeFlatBlockMap(children, startIdx, parentCst, state, externalFirst
11297
11341
  return map;
11298
11342
  }
11299
11343
  //#endregion
11300
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/flow.js
11344
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/flow.js
11301
11345
  /**
11302
11346
  * Validate that flow collection entries are separated by commas.
11303
11347
  *
@@ -11689,7 +11733,7 @@ function composeFlowSeqInner(cst, state, meta, parentBlockColumn) {
11689
11733
  return seq;
11690
11734
  }
11691
11735
  //#endregion
11692
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/document.js
11736
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/document.js
11693
11737
  /** The flow-composer dispatch wired into every state this module creates. */
11694
11738
  const FLOW = {
11695
11739
  composeFlowMap,
@@ -12355,7 +12399,7 @@ function composeAllDocuments(text, options) {
12355
12399
  };
12356
12400
  }
12357
12401
  //#endregion
12358
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/fold.js
12402
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/fold.js
12359
12403
  /**
12360
12404
  * Column-based line folding for a single logical scalar line (YAML 1.2 flow
12361
12405
  * folding, §7.3 / §8.2.1). Breaks the content at "safe" single-space
@@ -12591,7 +12635,7 @@ function renderBlockFolded(s, indent) {
12591
12635
  return `>${indentIndicator}${chomp}\n${outputLines.join("\n")}`;
12592
12636
  }
12593
12637
  //#endregion
12594
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/stringifier.js
12638
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/stringifier.js
12595
12639
  /**
12596
12640
  * Thrown by the stringifier on its failure paths (circular references). The
12597
12641
  * facade catches this and materializes the public stringify error.
@@ -13540,7 +13584,7 @@ function deepEqualValues(a, b) {
13540
13584
  return false;
13541
13585
  }
13542
13586
  //#endregion
13543
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/internal/documents.js
13587
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/internal/documents.js
13544
13588
  /**
13545
13589
  * An empty YAML document composes to `null` (`Yaml.parseAll("")` is `[null]`,
13546
13590
  * and the trailing document of an env-only `pnpm-lock.yaml` is `null` too).
@@ -13610,7 +13654,7 @@ const selectSoleDocument = (content) => effect.Effect.gen(function* () {
13610
13654
  };
13611
13655
  });
13612
13656
  //#endregion
13613
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/internal/pnpm.js
13657
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/internal/pnpm.js
13614
13658
  const PnpmImporterDeps = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.Struct({
13615
13659
  specifier: effect.Schema.String,
13616
13660
  version: effect.Schema.String
@@ -13707,8 +13751,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
13707
13751
  }));
13708
13752
  }
13709
13753
  if (raw.packages) for (const [key, pkg] of Object.entries(raw.packages)) {
13710
- const parenIndex = key.indexOf("(");
13711
- const bare = parenIndex === -1 ? key : key.slice(0, parenIndex);
13754
+ const { plain: bare } = splitPeerSuffix(key);
13712
13755
  const atIndex = bare.lastIndexOf("@");
13713
13756
  if (atIndex <= 0) continue;
13714
13757
  const name = bare.slice(0, atIndex);
@@ -13736,7 +13779,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
13736
13779
  };
13737
13780
  });
13738
13781
  //#endregion
13739
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/internal/yarn.js
13782
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/internal/yarn.js
13740
13783
  const YarnLockfileRaw = effect.Schema.Record(effect.Schema.String, effect.Schema.Unknown);
13741
13784
  const DepRecord = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
13742
13785
  const YarnEntry = effect.Schema.Struct({
@@ -13859,7 +13902,7 @@ const cleanYarnDeps = (deps) => {
13859
13902
  return Object.fromEntries(Object.entries(deps).map(([name, value]) => [name, value.startsWith("npm:") ? value.slice(4) : value]));
13860
13903
  };
13861
13904
  //#endregion
13862
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/Lockfile.js
13905
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/Lockfile.js
13863
13906
  const EMPTY_IMPORTERS = [];
13864
13907
  /**
13865
13908
  * Failure of `Lockfile.parse`: the given content is not a valid lockfile of
@@ -14103,7 +14146,7 @@ var Lockfile = class Lockfile extends effect.Schema.Class("Lockfile")({
14103
14146
  }
14104
14147
  };
14105
14148
  //#endregion
14106
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/LockfileIntegrity.js
14149
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._bb7f362bdd42193e6ed4fc5154b217f4/node_modules/@effected/lockfiles/LockfileIntegrity.js
14107
14150
  /**
14108
14151
  * The minimal manifest shape {@link LockfileIntegrity.compare} checks a
14109
14152
  * lockfile against: a package name plus the four optional dependency maps.
@@ -14219,7 +14262,7 @@ var LockfileIntegrity = class LockfileIntegrity extends effect.Schema.Class("Loc
14219
14262
  }
14220
14263
  };
14221
14264
  //#endregion
14222
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Dependency.js
14265
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/Dependency.js
14223
14266
  /**
14224
14267
  * A resolved dependency entry pairing a package name with its version
14225
14268
  * specifier and the `kind` of map it came from (`@effected/npm`'s
@@ -14283,7 +14326,7 @@ var Dependency = class extends effect.Schema.Class("Dependency")({
14283
14326
  }
14284
14327
  };
14285
14328
  //#endregion
14286
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/DevEngines.js
14329
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/DevEngines.js
14287
14330
  /**
14288
14331
  * A single `devEngines` constraint with a name and optional `version` / `onFail`.
14289
14332
  *
@@ -15838,7 +15881,7 @@ effect.Schema.String.pipe(effect.Schema.decodeTo(SpdxExpressionUnion, effect.Sch
15838
15881
  encode: (expression) => effect.Effect.succeed(serialize$1(expression))
15839
15882
  })));
15840
15883
  //#endregion
15841
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/License.js
15884
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/License.js
15842
15885
  /**
15843
15886
  * Indicates that a string is not a valid SPDX license identifier or expression.
15844
15887
  *
@@ -15873,7 +15916,7 @@ const isValidSpdx = (value) => {
15873
15916
  */
15874
15917
  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"));
15875
15918
  //#endregion
15876
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageManager.js
15919
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageManager.js
15877
15920
  const PACKAGE_MANAGER_RE = /^([a-z]+)@(\d+\.\d+\.\d+(?:-[a-zA-Z0-9._-]+)?)(?:\+(.+))?$/;
15878
15921
  /**
15879
15922
  * The `packageManager` field only ever carries corepack's `<algo>.<hex>`
@@ -15931,7 +15974,7 @@ var PackageManager = class PackageManager extends effect.Schema.Class("PackageMa
15931
15974
  }
15932
15975
  };
15933
15976
  //#endregion
15934
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageName.js
15977
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageName.js
15935
15978
  /**
15936
15979
  * Indicates that a string could not be used as a valid npm package name.
15937
15980
  *
@@ -15989,7 +16032,7 @@ const PackageName = Object.assign(effect.Schema.Union([ScopedPackageName, Unscop
15989
16032
  isScoped
15990
16033
  });
15991
16034
  //#endregion
15992
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Person.js
16035
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/Person.js
15993
16036
  const parsePersonString = (input) => {
15994
16037
  const emailMatch = input.match(/<([^>]+)>/);
15995
16038
  const urlMatch = input.match(/\(([^)]+)\)/);
@@ -16132,7 +16175,7 @@ var Person = class Person extends effect.Schema.Class("Person")({
16132
16175
  }
16133
16176
  };
16134
16177
  //#endregion
16135
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/internal/format.js
16178
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/internal/format.js
16136
16179
  const KEY_INDEX = new Map([
16137
16180
  "$schema",
16138
16181
  "name",
@@ -16355,7 +16398,7 @@ const renderJson = (raw, options) => {
16355
16398
  return options.newline ? `${json}\n` : json;
16356
16399
  };
16357
16400
  //#endregion
16358
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Package.js
16401
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/Package.js
16359
16402
  const toHashMap = effect.SchemaTransformation.transform({
16360
16403
  decode: (record) => effect.HashMap.fromIterable(Object.entries(record)),
16361
16404
  encode: (map) => Object.fromEntries(effect.HashMap.toEntries(map))
@@ -16673,7 +16716,7 @@ var Package = class Package extends effect.Schema.Class("Package")({
16673
16716
  }
16674
16717
  };
16675
16718
  //#endregion
16676
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspacePackage.js
16719
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspacePackage.js
16677
16720
  const EMPTY$1 = Object.freeze(Object.create(null));
16678
16721
  const EMPTY_MANIFEST = Object.freeze(Object.create(null));
16679
16722
  /**
@@ -17278,7 +17321,7 @@ const Walker$1 = {
17278
17321
  findRoot: findRoot$1
17279
17322
  };
17280
17323
  //#endregion
17281
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceRoot.js
17324
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceRoot.js
17282
17325
  /**
17283
17326
  * The marker filenames {@link WorkspaceRoot} probes for, in priority order.
17284
17327
  *
@@ -17465,7 +17508,7 @@ var WorkspaceRoot = class WorkspaceRoot extends effect.Context.Service()("@effec
17465
17508
  static layerTest = (root) => effect.Layer.effect(WorkspaceRoot, WorkspaceRoot.makeTest(root)).pipe(effect.Layer.provide(effect.Path.layer));
17466
17509
  };
17467
17510
  //#endregion
17468
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.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
17511
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.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
17469
17512
  /**
17470
17513
  * Hard ceiling on directories the enumerator will visit for one pattern set.
17471
17514
  * Guards the pathological case a depth cap alone does not: a wide, shallow
@@ -17483,7 +17526,7 @@ const MAX_ENUMERATION_ENTRIES = 1e5;
17483
17526
  */
17484
17527
  const PRUNED_DIRECTORIES = /* @__PURE__ */ new Set([".git", "node_modules"]);
17485
17528
  //#endregion
17486
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.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
17529
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.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
17487
17530
  /** Directory names never descended into. */
17488
17531
  const isPruned = (entry) => PRUNED_DIRECTORIES.has(entry);
17489
17532
  /** Join root-relative POSIX segments; `""` is the root itself. */
@@ -17573,7 +17616,7 @@ var Traversal = class {
17573
17616
  }
17574
17617
  };
17575
17618
  //#endregion
17576
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.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
17619
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.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
17577
17620
  /** Strip a trailing slash from `GlobPattern.enumerationPrefix` to get a relative directory. */
17578
17621
  const baseOf = (pattern) => pattern.enumerationPrefix.replace(/\/$/, "");
17579
17622
  /**
@@ -17643,7 +17686,7 @@ const enumerate = (root, globs, options) => effect.Effect.gen(function* () {
17643
17686
  return results;
17644
17687
  });
17645
17688
  //#endregion
17646
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.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
17689
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.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
17647
17690
  const stringsOf = (value) => Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : void 0;
17648
17691
  /** The `packages:` list of a `pnpm-workspace.yaml` document. Total on a parsed document. */
17649
17692
  const pnpmPatternsOf = (document) => {
@@ -17700,7 +17743,7 @@ const readPatterns = (root) => effect.Effect.gen(function* () {
17700
17743
  return manifestPatternsOf(manifest);
17701
17744
  });
17702
17745
  //#endregion
17703
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceDiscovery.js
17746
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceDiscovery.js
17704
17747
  /**
17705
17748
  * Raised when a workspace member's `package.json` cannot be read, parsed, or
17706
17749
  * used — it is missing, malformed, or lacks a `name` or `version`.
@@ -18134,7 +18177,7 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends effect.Context.Service
18134
18177
  };
18135
18178
  const isStringRecord$2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((entry) => typeof entry === "string");
18136
18179
  //#endregion
18137
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/DependencyGraph.js
18180
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/DependencyGraph.js
18138
18181
  /**
18139
18182
  * Raised when the workspace dependency graph cannot be topologically ordered
18140
18183
  * because it contains a cycle.
@@ -18369,7 +18412,7 @@ const kahn = (edges) => {
18369
18412
  };
18370
18413
  };
18371
18414
  //#endregion
18372
- //#region ../../node_modules/.pnpm/@effected+git@0.4.2_effect@4.0.0-beta.101/node_modules/@effected/git/GitCommand.js
18415
+ //#region ../../node_modules/.pnpm/@effected+git@0.5.0_effect@4.0.0-beta.101/node_modules/@effected/git/GitCommand.js
18373
18416
  /**
18374
18417
  * Builds a `git` `ChildProcess.StandardCommand` with the argv this package
18375
18418
  * classifies against.
@@ -18788,7 +18831,7 @@ const GitCommand = {
18788
18831
  status
18789
18832
  };
18790
18833
  //#endregion
18791
- //#region ../../node_modules/.pnpm/@effected+git@0.4.2_effect@4.0.0-beta.101/node_modules/@effected/git/internal/run.js
18834
+ //#region ../../node_modules/.pnpm/@effected+git@0.5.0_effect@4.0.0-beta.101/node_modules/@effected/git/internal/run.js
18792
18835
  /**
18793
18836
  * Spawns `command` and collects its stdout, stderr, and exit code as a single
18794
18837
  * triple.
@@ -18815,7 +18858,7 @@ const runCollected = (command) => effect.Effect.scoped(effect.Effect.gen(functio
18815
18858
  };
18816
18859
  }));
18817
18860
  //#endregion
18818
- //#region ../../node_modules/.pnpm/@effected+git@0.4.2_effect@4.0.0-beta.101/node_modules/@effected/git/Git.js
18861
+ //#region ../../node_modules/.pnpm/@effected+git@0.5.0_effect@4.0.0-beta.101/node_modules/@effected/git/Git.js
18819
18862
  /** git's own ceiling: a run that has not answered in 30s is not going to. */
18820
18863
  const GIT_TIMEOUT = effect.Duration.seconds(30);
18821
18864
  /**
@@ -19702,6 +19745,12 @@ const make = (spawner) => {
19702
19745
  };
19703
19746
  };
19704
19747
  /**
19748
+ * The default for every {@link Git.makeTest} method a test did not stub: a
19749
+ * defect naming the method, so an unexercised call fails loudly instead of
19750
+ * succeeding with a lie or failing with a dishonest typed error.
19751
+ */
19752
+ const notStubbed = (method) => () => effect.Effect.die(/* @__PURE__ */ new Error(`Git.makeTest: ${method}() was called but not stubbed — no honest default exists for a test double; pass a \`${method}\` override.`));
19753
+ /**
19705
19754
  * Typed git introspection over core's `ChildProcessSpawner`: read a
19706
19755
  * repository's state at any ref without checking it out, plus the mutating
19707
19756
  * tier (`checkout`, `fetch`, `fetchAny`, `submoduleUpdate`, `submoduleAdd`,
@@ -19724,15 +19773,102 @@ const make = (spawner) => {
19724
19773
  *
19725
19774
  * @public
19726
19775
  */
19727
- var Git = class extends effect.Context.Service()("@effected/git/Git") {
19776
+ var Git = class Git extends effect.Context.Service()("@effected/git/Git") {
19728
19777
  /** Resolves `ChildProcessSpawner` once, at construction — every method's `R` is `never`. */
19729
19778
  static layer = effect.Layer.effect(this, effect.Effect.gen(function* () {
19730
19779
  const spawner = yield* effect_unstable_process.ChildProcessSpawner.ChildProcessSpawner;
19731
19780
  return make(spawner);
19732
19781
  }));
19782
+ /**
19783
+ * An in-memory test double of the service shape: stub only the methods the
19784
+ * test exercises, every other method **dies** with a defect naming itself.
19785
+ *
19786
+ * @remarks
19787
+ * Unlike `WorkspaceDiscovery.makeTest`, **no method here has an honest
19788
+ * default** — the shape is twenty-six unrelated git operations, and a
19789
+ * fabricated answer for any of them (an empty tree, a made-up sha, a silent
19790
+ * no-op `checkout`) would leak into consumer logic as fact. So every
19791
+ * unstubbed method fails loudly as a defect
19792
+ * (`Git.makeTest: <name>() was called but not stubbed`) rather than
19793
+ * succeeding with a lie or failing with a dishonest typed error — which is
19794
+ * also what makes the double a proof that a test touches *nothing but* the
19795
+ * methods it stubbed.
19796
+ *
19797
+ * The double deliberately models **none** of the live service's semantics:
19798
+ * no stderr classification, no option-injection guard (an option-like ref a
19799
+ * stub accepts would be refused live), no `LC_ALL=C` pinning, no timeout,
19800
+ * and no `./`-vs-bare path resolution on `show` — a stub answers exactly
19801
+ * what it is told and nothing else. A suite exercising any of those wants
19802
+ * `Git.layer` over a mocked `ChildProcessSpawner` (or real git) instead.
19803
+ *
19804
+ * @example
19805
+ * ```ts
19806
+ * import { Git } from "@effected/git";
19807
+ * import { Effect, Option } from "effect";
19808
+ *
19809
+ * const double = Git.makeTest({
19810
+ * show: (_cwd, _ref, path) =>
19811
+ * Effect.succeed(path === "./package.json" ? Option.some("{}") : Option.none()),
19812
+ * });
19813
+ * // `double.show(...)` answers; `double.status(...)` dies, named.
19814
+ * ```
19815
+ */
19816
+ static makeTest = (overrides = {}) => ({
19817
+ show: notStubbed("show"),
19818
+ lsTree: notStubbed("lsTree"),
19819
+ refExists: notStubbed("refExists"),
19820
+ mergeBase: notStubbed("mergeBase"),
19821
+ changedFiles: notStubbed("changedFiles"),
19822
+ workingChanges: notStubbed("workingChanges"),
19823
+ revParse: notStubbed("revParse"),
19824
+ checkout: notStubbed("checkout"),
19825
+ fetch: notStubbed("fetch"),
19826
+ fetchAny: notStubbed("fetchAny"),
19827
+ submoduleUpdate: notStubbed("submoduleUpdate"),
19828
+ submoduleAdd: notStubbed("submoduleAdd"),
19829
+ sparseCheckoutSet: notStubbed("sparseCheckoutSet"),
19830
+ configSet: notStubbed("configSet"),
19831
+ add: notStubbed("add"),
19832
+ nameStatus: notStubbed("nameStatus"),
19833
+ unstagedChanges: notStubbed("unstagedChanges"),
19834
+ stagedChanges: notStubbed("stagedChanges"),
19835
+ untrackedFiles: notStubbed("untrackedFiles"),
19836
+ defaultBranch: notStubbed("defaultBranch"),
19837
+ currentBranch: notStubbed("currentBranch"),
19838
+ repoRoot: notStubbed("repoRoot"),
19839
+ configGet: notStubbed("configGet"),
19840
+ remoteUrl: notStubbed("remoteUrl"),
19841
+ commitInfo: notStubbed("commitInfo"),
19842
+ status: notStubbed("status"),
19843
+ ...overrides
19844
+ });
19845
+ /**
19846
+ * The test layer: {@link Git.makeTest} behind `Layer.succeed`, so a suite
19847
+ * provides only the methods it exercises.
19848
+ *
19849
+ * @remarks
19850
+ * A parameterized layer factory mints a **fresh reference per call**, and
19851
+ * layers memoize by reference — bind the result to a `const` and reuse it
19852
+ * rather than calling `layerTest(...)` at each composition site.
19853
+ *
19854
+ * @example
19855
+ * ```ts
19856
+ * import { Git, LsTreeEntry } from "@effected/git";
19857
+ * import { Effect } from "effect";
19858
+ *
19859
+ * const TestGit = Git.layerTest({
19860
+ * lsTree: () =>
19861
+ * Effect.succeed([
19862
+ * LsTreeEntry.make({ mode: "100644", type: "blob", oid: "0".repeat(40), path: "package.json" }),
19863
+ * ]),
19864
+ * });
19865
+ * // program.pipe(Effect.provide(TestGit))
19866
+ * ```
19867
+ */
19868
+ static layerTest = (overrides = {}) => effect.Layer.succeed(Git, Git.makeTest(overrides));
19733
19869
  };
19734
19870
  //#endregion
19735
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ChangeDetector.js
19871
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ChangeDetector.js
19736
19872
  /**
19737
19873
  * Which git refs to compare, and whether to fold in the working tree.
19738
19874
  *
@@ -19984,7 +20120,7 @@ function resolveFromCatalog(catalogs, wantedDependency) {
19984
20120
  };
19985
20121
  }
19986
20122
  //#endregion
19987
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.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
20123
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.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
19988
20124
  /** Project a pnpm-workspace manifest's `catalog` / `catalogs` fields into a `Catalogs` map. */
19989
20125
  const inlineCatalogs = (manifest) => {
19990
20126
  if (manifest.catalog === void 0 && manifest.catalogs === void 0) return {};
@@ -20048,7 +20184,7 @@ const rangeOf = (catalogs, dependency, specifier) => {
20048
20184
  });
20049
20185
  };
20050
20186
  //#endregion
20051
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ConfigDependencyHooks.js
20187
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/ConfigDependencyHooks.js
20052
20188
  /** Whether `value` is a non-null, non-array object. */
20053
20189
  const isObject$2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
20054
20190
  /**
@@ -20234,7 +20370,7 @@ var ConfigDependencyHooks = class ConfigDependencyHooks extends effect.Context.S
20234
20370
  }) });
20235
20371
  };
20236
20372
  //#endregion
20237
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/PackageManagerName.js
20373
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/PackageManagerName.js
20238
20374
  /**
20239
20375
  * The four package managers this package understands.
20240
20376
  *
@@ -20476,7 +20612,7 @@ var PackageManagerDetector = class PackageManagerDetector extends effect.Context
20476
20612
  static layer = effect.Layer.effect(PackageManagerDetector, PackageManagerDetector.make);
20477
20613
  };
20478
20614
  //#endregion
20479
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/LockfileReader.js
20615
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/LockfileReader.js
20480
20616
  /**
20481
20617
  * Raised when the workspace's lockfile cannot be read off disk.
20482
20618
  *
@@ -20499,6 +20635,8 @@ var LockfileReadError = class extends effect.Schema.TaggedErrorClass()("Lockfile
20499
20635
  return `Cannot read ${this.format} lockfile at ${this.lockfilePath}`;
20500
20636
  }
20501
20637
  };
20638
+ /** A defect naming the unstubbed test-double method — a test-wiring mistake, not a typed failure. */
20639
+ const unstubbed$2 = (method) => effect.Effect.die(/* @__PURE__ */ new Error(`LockfileReader.makeTest: ${method}() was called but not stubbed — pass a \`${method}\` override.`));
20502
20640
  /**
20503
20641
  * Reads and parses the workspace's lockfile.
20504
20642
  *
@@ -20584,9 +20722,77 @@ var LockfileReader = class LockfileReader extends effect.Context.Service()("@eff
20584
20722
  * `const` and reuse it.
20585
20723
  */
20586
20724
  static layer = (options) => effect.Layer.effect(LockfileReader, LockfileReader.make(options));
20725
+ /**
20726
+ * A test double satisfying the full {@link LockfileReaderShape} with no
20727
+ * filesystem, root walk, or package-manager detection.
20728
+ *
20729
+ * @remarks
20730
+ * There is **no honest default lockfile**: an empty one that looks like a
20731
+ * legitimate answer is indistinguishable from "this workspace resolves
20732
+ * nothing" — the silent-empty failure class this package documents on the
20733
+ * live paths — so `read` **dies** with an instructive defect until stubbed.
20734
+ *
20735
+ * The one derivation mirrors `WorkspaceDiscovery.makeTest`'s
20736
+ * derived-from-the-primary rule: when a `read` override is supplied,
20737
+ * `resolvedVersion` answers as the live service does — the **first** entry
20738
+ * of `lockfile.packagesNamed(name)` in lockfile order, `Option.none()` on a
20739
+ * miss — so the two stay consistent by construction. `integrity` is **not**
20740
+ * derivable: the live method compares the lockfile against the workspace
20741
+ * manifests discovery enumerates, and the double has no discovery to ask, so
20742
+ * it dies unless stubbed.
20743
+ *
20744
+ * `refresh` defaults to `Effect.void` honestly: the live contract is "drop
20745
+ * the memoized read so the next call re-reads", and this double memoizes
20746
+ * nothing — every `read()` call re-invokes the override — so there is
20747
+ * nothing to drop and the no-op is truthful, the same reasoning as
20748
+ * `WorkspaceDiscovery.makeTest`'s `refresh`.
20749
+ *
20750
+ * @example
20751
+ * ```ts
20752
+ * import { Lockfile } from "@effected/lockfiles";
20753
+ * import { LockfileReader } from "@effected/workspaces";
20754
+ * import { Effect } from "effect";
20755
+ *
20756
+ * const double = LockfileReader.makeTest({
20757
+ * read: () =>
20758
+ * Effect.succeed(
20759
+ * Lockfile.make({ format: "pnpm", lockfileVersion: "9.0", packages: [], workspaceDependencies: [] }),
20760
+ * ),
20761
+ * });
20762
+ * // `resolvedVersion` now answers consistently from that lockfile.
20763
+ * ```
20764
+ */
20765
+ static makeTest = (overrides = {}) => {
20766
+ const read = overrides.read;
20767
+ return {
20768
+ read: () => unstubbed$2("read"),
20769
+ resolvedVersion: read !== void 0 ? (packageName) => effect.Effect.map(read(), (lockfile) => effect.Option.fromUndefinedOr(lockfile.packagesNamed(packageName)[0])) : () => unstubbed$2("resolvedVersion"),
20770
+ integrity: () => unstubbed$2("integrity"),
20771
+ refresh: () => effect.Effect.void,
20772
+ ...overrides
20773
+ };
20774
+ };
20775
+ /**
20776
+ * The test layer: {@link LockfileReader.makeTest} behind `Layer.succeed`, so
20777
+ * a suite provides only the methods it exercises.
20778
+ *
20779
+ * @remarks
20780
+ * A parameterized layer factory mints a **fresh reference per call**, and
20781
+ * layers memoize by reference — bind the result to a `const` and reuse it
20782
+ * rather than calling `layerTest(...)` at each composition site.
20783
+ *
20784
+ * @example
20785
+ * ```ts
20786
+ * import { LockfileReader } from "@effected/workspaces";
20787
+ *
20788
+ * const TestLockfiles = LockfileReader.layerTest();
20789
+ * // program.pipe(Effect.provide(TestLockfiles)) — dies loudly if touched.
20790
+ * ```
20791
+ */
20792
+ static layerTest = (overrides = {}) => effect.Layer.succeed(LockfileReader, LockfileReader.makeTest(overrides));
20587
20793
  };
20588
20794
  //#endregion
20589
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Publishability.js
20795
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Publishability.js
20590
20796
  /** The public npm registry, used when `publishConfig.registry` says nothing. */
20591
20797
  const DEFAULT_REGISTRY = "https://registry.npmjs.org/";
20592
20798
  /**
@@ -20686,7 +20892,7 @@ var PublishabilityDetector = class PublishabilityDetector extends effect.Context
20686
20892
  }) });
20687
20893
  };
20688
20894
  //#endregion
20689
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.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
20895
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.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
20690
20896
  /**
20691
20897
  * Strip pnpm's peer-disambiguation suffix from a recorded importer version.
20692
20898
  *
@@ -20772,7 +20978,7 @@ const unanimousVersionOf = (index, dependency) => {
20772
20978
  return agreed;
20773
20979
  };
20774
20980
  //#endregion
20775
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceCatalogs.js
20981
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceCatalogs.js
20776
20982
  /**
20777
20983
  * An immutable, fully-normalized catalog collection — the one catalog
20778
20984
  * resolution semantic in the package.
@@ -21048,6 +21254,8 @@ const validatePnpmWorkspaceCatalogs = (document) => {
21048
21254
  catalogs: "catalogs"
21049
21255
  }));
21050
21256
  };
21257
+ /** A defect naming the unstubbed test-double method — a test-wiring mistake, not a typed failure. */
21258
+ const unstubbed$1 = (method) => effect.Effect.die(/* @__PURE__ */ new Error(`WorkspaceCatalogs.makeTest: ${method}() was called but not stubbed — pass a \`${method}\` override.`));
21051
21259
  /**
21052
21260
  * Assembles a workspace's catalogs, package-manager-aware.
21053
21261
  *
@@ -21191,6 +21399,70 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
21191
21399
  */
21192
21400
  static layerWithConfigDependencies = (options) => effect.Layer.effect(WorkspaceCatalogs, WorkspaceCatalogs.make(options)).pipe(effect.Layer.provide(ConfigDependencyHooks.layerLive));
21193
21401
  /**
21402
+ * A test double satisfying the full {@link WorkspaceCatalogsShape} with no
21403
+ * filesystem, lockfile read, or hook replay.
21404
+ *
21405
+ * @remarks
21406
+ * There is **no honest default catalog set**: an empty `CatalogSet` that
21407
+ * looks like a legitimate answer is the "every dependency looks newly added"
21408
+ * failure class the live assembler hard-fails to prevent, so every method
21409
+ * **dies** with an instructive defect until stubbed — a test-wiring mistake
21410
+ * fails loudly as a defect rather than succeeding with a lie or failing with
21411
+ * a dishonest typed error.
21412
+ *
21413
+ * The one derivation mirrors `WorkspaceDiscovery.makeTest`'s
21414
+ * derived-from-the-primary rule: when a `set` override is supplied,
21415
+ * `resolveSpecifier` answers from that `CatalogSet`'s own
21416
+ * {@link CatalogSet.resolveSpecifier} — exactly what the live service runs
21417
+ * over its assembled set — so the two stay consistent by construction.
21418
+ * `releaseAgeGate` and `importerVersions` are **not** derivable from a
21419
+ * catalog set (the gate comes from release-age keys and hook contributions,
21420
+ * the importer index from the lockfile's importer blocks — neither is in a
21421
+ * `CatalogSet`) and always die unless stubbed.
21422
+ *
21423
+ * @example
21424
+ * ```ts
21425
+ * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
21426
+ * import { Effect } from "effect";
21427
+ *
21428
+ * const double = WorkspaceCatalogs.makeTest({
21429
+ * set: () => Effect.succeed(CatalogSet.fromCatalogs({ default: { effect: "4.0.0" } })),
21430
+ * });
21431
+ * // `resolveSpecifier` now answers consistently from that set.
21432
+ * ```
21433
+ */
21434
+ static makeTest = (overrides = {}) => {
21435
+ const set = overrides.set;
21436
+ return {
21437
+ set: () => unstubbed$1("set"),
21438
+ resolveSpecifier: set !== void 0 ? (dependency, specifier) => effect.Effect.map(set(), (catalogs) => catalogs.resolveSpecifier(dependency, specifier)) : () => unstubbed$1("resolveSpecifier"),
21439
+ releaseAgeGate: () => unstubbed$1("releaseAgeGate"),
21440
+ importerVersions: () => unstubbed$1("importerVersions"),
21441
+ ...overrides
21442
+ };
21443
+ };
21444
+ /**
21445
+ * The test layer: {@link WorkspaceCatalogs.makeTest} behind `Layer.succeed`,
21446
+ * so a suite provides only the methods it exercises.
21447
+ *
21448
+ * @remarks
21449
+ * A parameterized layer factory mints a **fresh reference per call**, and
21450
+ * layers memoize by reference — bind the result to a `const` and reuse it
21451
+ * rather than calling `layerTest(...)` at each composition site.
21452
+ *
21453
+ * @example
21454
+ * ```ts
21455
+ * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
21456
+ * import { Effect } from "effect";
21457
+ *
21458
+ * const TestCatalogs = WorkspaceCatalogs.layerTest({
21459
+ * set: () => Effect.succeed(CatalogSet.empty()),
21460
+ * });
21461
+ * // program.pipe(Effect.provide(TestCatalogs))
21462
+ * ```
21463
+ */
21464
+ static layerTest = (overrides = {}) => effect.Layer.succeed(WorkspaceCatalogs, WorkspaceCatalogs.makeTest(overrides));
21465
+ /**
21194
21466
  * The real implementation of `@effected/npm`'s `CatalogResolver` contract —
21195
21467
  * the one `@effected/package-json` declares but cannot fill.
21196
21468
  *
@@ -21215,7 +21487,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
21215
21487
  }));
21216
21488
  };
21217
21489
  //#endregion
21218
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
21490
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
21219
21491
  const EMPTY = Object.freeze(Object.create(null));
21220
21492
  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)));
21221
21493
  /**
@@ -21438,7 +21710,7 @@ var WorkspaceStateSnapshot = class extends effect.Schema.Class("WorkspaceStateSn
21438
21710
  }
21439
21711
  };
21440
21712
  //#endregion
21441
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceSnapshots.js
21713
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/WorkspaceSnapshots.js
21442
21714
  /** Whether `value` is a non-null, non-array object. */
21443
21715
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
21444
21716
  /** Whether every value in a record is a string — a usable dependency map. */
@@ -21497,6 +21769,8 @@ const EMPTY_LOCKFILE_RECORD = {
21497
21769
  catalogs: CatalogSet.empty(),
21498
21770
  importerVersions: {}
21499
21771
  };
21772
+ /** A defect naming the unstubbed test-double method — a test-wiring mistake, not a typed failure. */
21773
+ const unstubbed = (method) => effect.Effect.die(/* @__PURE__ */ new Error(`WorkspaceSnapshots.makeTest: ${method}() was called but not stubbed — pass a \`${method}\` override.`));
21500
21774
  /**
21501
21775
  * Reads workspace state at a git ref with no checkout, and the live worktree.
21502
21776
  *
@@ -21643,9 +21917,69 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends effect.Context.Service
21643
21917
  * `const` and reuse it, or layer memoization does not apply.
21644
21918
  */
21645
21919
  static layer = (options) => effect.Layer.effect(WorkspaceSnapshots, WorkspaceSnapshots.make(options));
21920
+ /**
21921
+ * A test double satisfying the full {@link WorkspaceSnapshotsShape} with no
21922
+ * git, filesystem, discovery, or catalog assembly.
21923
+ *
21924
+ * @remarks
21925
+ * There are **no honest defaults and no derivations** here: `at(ref)` and
21926
+ * `worktree()` are two independent reads of two different sources (a git ref
21927
+ * vs. the live tree), so neither can be honestly derived from the other, and
21928
+ * a fabricated empty {@link WorkspaceStateSnapshot} on either side of a
21929
+ * before/after diff reads as every dependency newly added or removed — the
21930
+ * exact silent-empty failure class this package documents on the live paths.
21931
+ * Both methods therefore **die** with an instructive defect until stubbed; a
21932
+ * test-wiring mistake fails loudly as a defect rather than succeeding with a
21933
+ * lie.
21934
+ *
21935
+ * @example
21936
+ * ```ts
21937
+ * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
21938
+ * import { Effect } from "effect";
21939
+ *
21940
+ * const empty = WorkspaceStateSnapshot.make({
21941
+ * packages: [],
21942
+ * catalogs: CatalogSet.empty(),
21943
+ * importerVersions: {},
21944
+ * });
21945
+ * const double = WorkspaceSnapshots.makeTest({
21946
+ * at: () => Effect.succeed(empty),
21947
+ * worktree: () => Effect.succeed(empty),
21948
+ * });
21949
+ * ```
21950
+ */
21951
+ static makeTest = (overrides = {}) => ({
21952
+ at: () => unstubbed("at"),
21953
+ worktree: () => unstubbed("worktree"),
21954
+ ...overrides
21955
+ });
21956
+ /**
21957
+ * The test layer: {@link WorkspaceSnapshots.makeTest} behind `Layer.succeed`,
21958
+ * so a suite provides only the methods it exercises.
21959
+ *
21960
+ * @remarks
21961
+ * A parameterized layer factory mints a **fresh reference per call**, and
21962
+ * layers memoize by reference — bind the result to a `const` and reuse it
21963
+ * rather than calling `layerTest(...)` at each composition site.
21964
+ *
21965
+ * @example
21966
+ * ```ts
21967
+ * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
21968
+ * import { Effect } from "effect";
21969
+ *
21970
+ * const TestSnapshots = WorkspaceSnapshots.layerTest({
21971
+ * worktree: () =>
21972
+ * Effect.succeed(
21973
+ * WorkspaceStateSnapshot.make({ packages: [], catalogs: CatalogSet.empty(), importerVersions: {} }),
21974
+ * ),
21975
+ * });
21976
+ * // program.pipe(Effect.provide(TestSnapshots))
21977
+ * ```
21978
+ */
21979
+ static layerTest = (overrides = {}) => effect.Layer.succeed(WorkspaceSnapshots, WorkspaceSnapshots.makeTest(overrides));
21646
21980
  };
21647
21981
  //#endregion
21648
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Workspaces.js
21982
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.8.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/Workspaces.js
21649
21983
  /**
21650
21984
  * Every service that needs only a filesystem: root, package-manager detection,
21651
21985
  * discovery, lockfile reading, catalogs and publishability.
@@ -46783,20 +47117,25 @@ function readRawPackageJson(fs, pkgDir) {
46783
47117
  }
46784
47118
  /**
46785
47119
  * Build resolved scopes from the discovered workspace packages, keeping only
46786
- * those that are a release surface (declare publishConfig that yields at least
46787
- * one publish target). Used both when `.changeset/config.json` declares no
46788
- * explicit `packages` record AND to augment an explicit record with the
46789
- * remaining workspace packages it does not list (so the record annotates the
46790
- * listed packages without shrinking the release surface). The changeset
46791
- * `ignore` list is intentionally NOT consulted here an ignored package still
46792
- * declares publishConfig and remains a valid changeset target.
46793
- */
46794
- function buildFallbackScopes(fs, workspaces) {
47120
+ * those that are a release surface: a package that declares publishConfig
47121
+ * yielding at least one publish target, OR when the changeset config sets
47122
+ * `privatePackages.version: true` (`versionPrivate`) any workspace package
47123
+ * at all, since changesets versions private packages too in that mode (#360:
47124
+ * a private single-root repo with `privatePackages.version: true` previously
47125
+ * produced an empty release surface and left every file unmapped). Used both
47126
+ * when `.changeset/config.json` declares no explicit `packages` record AND to
47127
+ * augment an explicit record with the remaining workspace packages it does
47128
+ * not list (so the record annotates the listed packages without shrinking the
47129
+ * release surface). The changeset `ignore` list is intentionally NOT
47130
+ * consulted here — an ignored package still declares publishConfig and
47131
+ * remains a valid changeset target.
47132
+ */
47133
+ function buildFallbackScopes(fs, workspaces, versionPrivate) {
46795
47134
  return effect.Effect.forEach(workspaces, (ws) => effect.Effect.gen(function* () {
46796
47135
  const raw = yield* readRawPackageJson(fs, ws.path);
46797
47136
  if (raw === null) return [];
46798
47137
  const binding = yield* readTargetsBinding(fs, ws.path);
46799
- if (SilkPublishability.detect(ws.name, raw, binding).length === 0) return [];
47138
+ if (SilkPublishability.detect(ws.name, raw, binding).length === 0 && !versionPrivate) return [];
46800
47139
  return [{
46801
47140
  name: ws.name,
46802
47141
  workspaceDir: ws.path,
@@ -46902,6 +47241,8 @@ function makeShape$3(reader, discovery, fs) {
46902
47241
  version: w.version
46903
47242
  }));
46904
47243
  const hasExplicitPackages = Object.keys(decodedOptions.packages ?? {}).length > 0;
47244
+ const privatePackages = config.privatePackages;
47245
+ const versionPrivate = privatePackages !== void 0 && privatePackages !== false && privatePackages.version === true;
46905
47246
  let scopes;
46906
47247
  if (hasExplicitPackages) {
46907
47248
  const explicitScopes = yield* buildResolvedScopes({
@@ -46917,9 +47258,9 @@ function makeShape$3(reader, discovery, fs) {
46917
47258
  throw e;
46918
47259
  }
46919
47260
  const explicitNames = new Set(explicitScopes.map((s) => s.name));
46920
- const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)));
47261
+ const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)), versionPrivate);
46921
47262
  scopes = [...explicitScopes, ...discoveredScopes];
46922
- } else scopes = yield* buildFallbackScopes(fs, workspaces);
47263
+ } else scopes = yield* buildFallbackScopes(fs, workspaces, versionPrivate);
46923
47264
  const inspected = {
46924
47265
  configPath,
46925
47266
  projectDir,
@@ -46953,12 +47294,19 @@ function makeShape$3(reader, discovery, fs) {
46953
47294
  function classifyOne(inspected, path) {
46954
47295
  const abs = (0, node_path.resolve)(inspected.projectDir, path);
46955
47296
  let bestWorkspace = null;
46956
- for (const s of inspected.packages) if (isInside(s.workspaceDir, abs)) {
46957
- const depth = s.workspaceDir.length;
46958
- if (!bestWorkspace || depth > bestWorkspace.depth) bestWorkspace = {
46959
- pkg: s.name,
46960
- depth
46961
- };
47297
+ let rootScope = null;
47298
+ for (const s of inspected.packages) {
47299
+ if (s.workspaceDir === inspected.projectDir) {
47300
+ rootScope = s.name;
47301
+ continue;
47302
+ }
47303
+ if (isInside(s.workspaceDir, abs)) {
47304
+ const depth = s.workspaceDir.length;
47305
+ if (!bestWorkspace || depth > bestWorkspace.depth) bestWorkspace = {
47306
+ pkg: s.name,
47307
+ depth
47308
+ };
47309
+ }
46962
47310
  }
46963
47311
  if (bestWorkspace) return {
46964
47312
  path,
@@ -46985,6 +47333,11 @@ function classifyOne(inspected, path) {
46985
47333
  glob: vf.glob
46986
47334
  }
46987
47335
  };
47336
+ if (rootScope && isInside(inspected.projectDir, abs)) return {
47337
+ path,
47338
+ package: rootScope,
47339
+ reason: "workspace"
47340
+ };
46988
47341
  return {
46989
47342
  path,
46990
47343
  package: null,