@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.
@@ -2381,7 +2381,7 @@ var GlobSet = class GlobSet extends Schema.Class("GlobSet")(Schema.Struct({ patt
2381
2381
  };
2382
2382
 
2383
2383
  //#endregion
2384
- //#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
2384
+ //#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
2385
2385
  /**
2386
2386
  * Extension data specific to bun lockfiles, attached to `Lockfile.extension`
2387
2387
  * when the format is `"bun"`.
@@ -2403,7 +2403,7 @@ var BunExtension = class extends Schema.Class("BunExtension")({
2403
2403
  }) {};
2404
2404
 
2405
2405
  //#endregion
2406
- //#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
2406
+ //#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
2407
2407
  /**
2408
2408
  * Contract for resolving pnpm `catalog:` dependency specifiers to concrete
2409
2409
  * version ranges.
@@ -2450,7 +2450,7 @@ var CatalogResolver = class CatalogResolver extends Context.Service()("@effected
2450
2450
  };
2451
2451
 
2452
2452
  //#endregion
2453
- //#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
2453
+ //#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
2454
2454
  /**
2455
2455
  * Raised when a `catalog:` or `workspace:` specifier cannot be resolved
2456
2456
  * because the resolution mechanism itself failed — not for an ordinary
@@ -2512,7 +2512,7 @@ var WorkspaceResolver = class WorkspaceResolver extends Context.Service()("@effe
2512
2512
  };
2513
2513
 
2514
2514
  //#endregion
2515
- //#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
2515
+ //#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
2516
2516
  /**
2517
2517
  * Raised when a workspace's catalogs cannot be assembled — a `pnpm-workspace.yaml`
2518
2518
  * that is unreadable or not valid YAML, a root `package.json` `workspaces` field
@@ -2557,7 +2557,7 @@ var CatalogAssemblyError = class extends Schema.TaggedErrorClass()("CatalogAssem
2557
2557
  };
2558
2558
 
2559
2559
  //#endregion
2560
- //#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
2560
+ //#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
2561
2561
  /**
2562
2562
  * The short dependency kind: which dependency map an entry came from, named the
2563
2563
  * way consumers branch on it.
@@ -4067,7 +4067,7 @@ const isComparatorSetSubset = (sub, sup) => {
4067
4067
  };
4068
4068
 
4069
4069
  //#endregion
4070
- //#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
4070
+ //#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
4071
4071
  /**
4072
4072
  * Indicates that a string could not be parsed as a valid dependency specifier.
4073
4073
  *
@@ -4275,7 +4275,7 @@ const DependencySpecifier = Object.assign(brandedSpecifier, {
4275
4275
  });
4276
4276
 
4277
4277
  //#endregion
4278
- //#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
4278
+ //#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
4279
4279
  const SRI_RE = /^(sha1|sha256|sha384|sha512)-[A-Za-z0-9+/]+={0,2}$/;
4280
4280
  const COREPACK_RE = /^(sha1|sha256|sha384|sha512)\.[0-9a-f]+$/;
4281
4281
  const YARN_RE = /^[0-9]+(c[0-9]+)?\/[0-9a-f]+$/;
@@ -4329,7 +4329,7 @@ const IntegrityHash = Object.assign(brandedIntegrity, {
4329
4329
  });
4330
4330
 
4331
4331
  //#endregion
4332
- //#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
4332
+ //#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
4333
4333
  const MS_PER_MINUTE = 6e4;
4334
4334
  /**
4335
4335
  * A source's partial contribution to a {@link ReleaseAgeGate}: the effective
@@ -4417,7 +4417,9 @@ var ReleaseAgeGate = class ReleaseAgeGate extends Schema.Class("ReleaseAgeGate")
4417
4417
  * Combine partial contributions from multiple sources into one effective
4418
4418
  * gate: **strictest age wins** (the maximum of the contributed ages,
4419
4419
  * clamped to be non-negative) and the exclude sets **union** (deduplicated,
4420
- * insertion order preserved). A contribution's absent field adds nothing; a
4420
+ * lexicographically sorted a canonical wire form, so the combined gate is
4421
+ * deterministic regardless of the order contributions arrive in). A
4422
+ * contribution's absent field adds nothing; a
4421
4423
  * negative or non-finite contributed age is ignored by the clamp. With no
4422
4424
  * contributions (or only empty ones) the result is the inert zero gate
4423
4425
  * (`ageMinutes: 0`, `exclude: []`).
@@ -4431,7 +4433,7 @@ var ReleaseAgeGate = class ReleaseAgeGate extends Schema.Class("ReleaseAgeGate")
4431
4433
  static combine(...contributions) {
4432
4434
  const ages = contributions.map((contribution) => contribution.ageMinutes).filter((age) => typeof age === "number" && Number.isFinite(age));
4433
4435
  const ageMinutes = ages.length > 0 ? Math.max(0, ...ages) : 0;
4434
- const exclude = [...new Set(contributions.flatMap((contribution) => contribution.exclude ?? []))];
4436
+ const exclude = [...new Set(contributions.flatMap((contribution) => contribution.exclude ?? []))].sort();
4435
4437
  return ReleaseAgeGate.make({
4436
4438
  ageMinutes,
4437
4439
  exclude
@@ -4498,7 +4500,7 @@ var ReleaseAgeGate = class ReleaseAgeGate extends Schema.Class("ReleaseAgeGate")
4498
4500
  };
4499
4501
 
4500
4502
  //#endregion
4501
- //#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
4503
+ //#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
4502
4504
  /**
4503
4505
  * One declared dependency of one workspace importer, as the lockfile records it.
4504
4506
  *
@@ -4509,11 +4511,20 @@ var ReleaseAgeGate = class ReleaseAgeGate extends Schema.Class("ReleaseAgeGate")
4509
4511
  * `ClassifiedSpecifier` (`catalog:` / `workspace:` / range / dist-tag / raw),
4510
4512
  * while encoding round-trips the **exact original string byte-for-byte** — the
4511
4513
  * guarantee a before/after lockfile diff relies on.
4512
- * - `version` — the concrete resolved version, **populated by pnpm only**. pnpm
4513
- * records `{ specifier, version }` per importer dependency; bun and npm record
4514
- * resolved versions on their package entries instead, so for those formats
4515
- * `version` is absent and a consumer joins by `name` against
4516
- * `Lockfile.packages`.
4514
+ * - `version` — the concrete resolved version, **populated by pnpm only**:
4515
+ * comparable across refs and printable. pnpm records `{ specifier, version }`
4516
+ * per importer dependency, and the parser splits pnpm's peer-disambiguation
4517
+ * suffix off into `peerSuffix`, so `version` is always the plain version or
4518
+ * a non-registry resolution (`link:../utils`, `file:...`), passed through
4519
+ * verbatim. bun and npm record resolved versions on their package entries
4520
+ * instead, so for those formats `version` is absent and a consumer joins by
4521
+ * `name` against `Lockfile.packages`.
4522
+ * - `peerSuffix` — pnpm's peer-disambiguation context: the raw parenthesized
4523
+ * chain the lockfile recorded after the version, e.g.
4524
+ * `(effect@4.0.0-beta.101)(ioredis@5.11.1(supports-color@8.1.1))`. Present
4525
+ * only when the lockfile recorded one — never for suffix-free pnpm entries,
4526
+ * and never for the other formats, which do not record peer context per
4527
+ * importer dependency.
4517
4528
  * - `depType` — which dependency map declared it, spelled with `@effected/npm`'s
4518
4529
  * kit-wide `DependencyField` vocabulary.
4519
4530
  *
@@ -4523,11 +4534,12 @@ var ImporterDependency = class extends Schema.Class("ImporterDependency")({
4523
4534
  name: Schema.NonEmptyString,
4524
4535
  specifier: DependencySpecifier.FromString,
4525
4536
  version: Schema.optionalKey(Schema.String),
4537
+ peerSuffix: Schema.optionalKey(Schema.String),
4526
4538
  depType: DependencyField
4527
4539
  }) {};
4528
4540
 
4529
4541
  //#endregion
4530
- //#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
4542
+ //#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
4531
4543
  /**
4532
4544
  * One workspace importer's declared dependencies, as the lockfile records them.
4533
4545
  *
@@ -4552,7 +4564,7 @@ var LockfileImporter = class extends Schema.Class("LockfileImporter")({
4552
4564
  }) {};
4553
4565
 
4554
4566
  //#endregion
4555
- //#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
4567
+ //#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
4556
4568
  const EMPTY_DEPENDENCIES = {};
4557
4569
  /**
4558
4570
  * A package resolved from a lockfile.
@@ -4588,7 +4600,7 @@ var ResolvedPackage = class extends Schema.Class("ResolvedPackage")({
4588
4600
  }) {};
4589
4601
 
4590
4602
  //#endregion
4591
- //#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
4603
+ //#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
4592
4604
  /**
4593
4605
  * A directed dependency edge between two workspace packages as recorded in
4594
4606
  * the lockfile.
@@ -4611,7 +4623,7 @@ var WorkspaceDependency = class extends Schema.Class("WorkspaceDependency")({
4611
4623
  }) {};
4612
4624
 
4613
4625
  //#endregion
4614
- //#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
4626
+ //#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
4615
4627
  /**
4616
4628
  * Extension data specific to pnpm lockfiles, attached to `Lockfile.extension`
4617
4629
  * when the format is `"pnpm"`.
@@ -4637,7 +4649,7 @@ var PnpmExtension = class extends Schema.Class("PnpmExtension")({
4637
4649
  }) {};
4638
4650
 
4639
4651
  //#endregion
4640
- //#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
4652
+ //#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
4641
4653
  /**
4642
4654
  * The lockfile formats this package parses: bun's `bun.lock` (JSONC), npm's
4643
4655
  * `package-lock.json` (v2/v3 JSON), pnpm's `pnpm-lock.yaml` and yarn Berry's
@@ -4672,7 +4684,7 @@ const FILENAMES = {
4672
4684
  const filenameFor = (format) => FILENAMES[format];
4673
4685
 
4674
4686
  //#endregion
4675
- //#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
4687
+ //#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
4676
4688
  /**
4677
4689
  * The four dependency sections of a manifest, in a stable order — the shared
4678
4690
  * dependency-sections table (v3's `DEP_SECTIONS`). Each entry is both the
@@ -4711,22 +4723,54 @@ const toIntegrityHash = (raw) => {
4711
4723
  };
4712
4724
  const decodeSpecifier = Schema.decodeUnknownExit(DependencySpecifier.FromString);
4713
4725
  /**
4726
+ * Split pnpm's peer-disambiguation suffix off a recorded string: everything
4727
+ * from the first `(` on is suffix, since package names and versions never
4728
+ * contain `(`. Handles both shapes pnpm records — a bare version
4729
+ * (`"1.0.0(effect@4.0.0)"`, importer entries) and a `name@version` snapshot key
4730
+ * (`"fdir@6.5.0(picomatch@4.0.4)"`). A string with no `(` — including
4731
+ * `link:...` / `file:...` resolutions — passes through untouched. So does a
4732
+ * protocol-bearing string (a `:` ahead of the first `(`), where a parenthesis
4733
+ * is path or URL text rather than a peer suffix: pnpm attaches suffixes to
4734
+ * registry versions only. This is the single stripping implementation — do not
4735
+ * hand-roll an `indexOf("(")` split elsewhere.
4736
+ *
4737
+ * @internal
4738
+ */
4739
+ const splitPeerSuffix = (raw) => {
4740
+ const parenIndex = raw.indexOf("(");
4741
+ if (parenIndex === -1) return { plain: raw };
4742
+ if (raw.lastIndexOf(":", parenIndex) !== -1) return { plain: raw };
4743
+ return {
4744
+ plain: raw.slice(0, parenIndex),
4745
+ peerSuffix: raw.slice(parenIndex)
4746
+ };
4747
+ };
4748
+ /**
4714
4749
  * Build one {@link ImporterDependency}, decoding the raw specifier string into
4715
4750
  * the `@effected/npm` `ClassifiedSpecifier` tagged union. Returns `undefined`
4716
4751
  * — a skip, never a throw — when the name is empty or the specifier does not
4717
4752
  * classify (e.g. an empty specifier), per the total-string-surgery discipline.
4718
4753
  *
4754
+ * A pnpm-recorded version is normalized through {@link splitPeerSuffix}: the
4755
+ * `version` field carries the plain version and the split-off peer chain lands
4756
+ * in `peerSuffix`. A version that is *only* a peer chain (empty plain part) is
4757
+ * treated as no concrete version — a skip of both fields, never a throw.
4758
+ *
4719
4759
  * @internal
4720
4760
  */
4721
4761
  const buildImporterDependency = (name, specifier, depType, version) => {
4722
4762
  if (name === "") return void 0;
4723
4763
  const exit = decodeSpecifier(specifier);
4724
4764
  if (Exit.isFailure(exit)) return void 0;
4765
+ const resolved = version !== void 0 && version !== "" ? splitPeerSuffix(version) : void 0;
4725
4766
  return ImporterDependency.make({
4726
4767
  name,
4727
4768
  specifier: exit.value,
4728
4769
  depType,
4729
- ...version !== void 0 && version !== "" ? { version } : {}
4770
+ ...resolved !== void 0 && resolved.plain !== "" ? {
4771
+ version: resolved.plain,
4772
+ ...resolved.peerSuffix !== void 0 ? { peerSuffix: resolved.peerSuffix } : {}
4773
+ } : {}
4730
4774
  });
4731
4775
  };
4732
4776
  /**
@@ -6614,7 +6658,7 @@ var JsoncModifier = class {
6614
6658
  };
6615
6659
 
6616
6660
  //#endregion
6617
- //#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
6661
+ //#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
6618
6662
  const DepRecord$2 = Schema.optionalKey(Schema.Record(Schema.String, Schema.String));
6619
6663
  const BunWorkspaceEntry = Schema.Struct({
6620
6664
  name: Schema.optionalKey(Schema.String),
@@ -6708,7 +6752,7 @@ const toFields$3 = (raw) => Effect.gen(function* () {
6708
6752
  });
6709
6753
 
6710
6754
  //#endregion
6711
- //#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
6755
+ //#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
6712
6756
  const DepRecord$1 = Schema.optionalKey(Schema.Record(Schema.String, Schema.String));
6713
6757
  const NpmPackageEntry = Schema.Struct({
6714
6758
  name: Schema.optionalKey(Schema.String),
@@ -6807,7 +6851,7 @@ const toFields$2 = (raw) => Effect.gen(function* () {
6807
6851
  });
6808
6852
 
6809
6853
  //#endregion
6810
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlNode.js
6854
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlNode.js
6811
6855
  /**
6812
6856
  * YAML scalar presentation styles.
6813
6857
  *
@@ -7210,7 +7254,7 @@ function nodeToValue(node, anchors, budget, counting = false) {
7210
7254
  }
7211
7255
 
7212
7256
  //#endregion
7213
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/diagnostics.js
7257
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/diagnostics.js
7214
7258
  /** Error codes emitted by the lexer stage. */
7215
7259
  const YAML_LEX_ERROR_CODES = [
7216
7260
  "UnexpectedCharacter",
@@ -7289,7 +7333,7 @@ function isFatalCode(code) {
7289
7333
  }
7290
7334
 
7291
7335
  //#endregion
7292
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlDiagnostic.js
7336
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/YamlDiagnostic.js
7293
7337
  /**
7294
7338
  * Error codes emitted by the lexer stage.
7295
7339
  *
@@ -7411,7 +7455,7 @@ function lineChar(text, offset) {
7411
7455
  }
7412
7456
 
7413
7457
  //#endregion
7414
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/anchors.js
7458
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/anchors.js
7415
7459
  /**
7416
7460
  * Check if a pending anchor is being applied to an alias node (invalid in YAML 1.2 §3.2.2).
7417
7461
  * Aliases represent references to existing anchored nodes and cannot have their own anchors.
@@ -7505,7 +7549,7 @@ function collectAnchors(node, anchors) {
7505
7549
  }
7506
7550
 
7507
7551
  //#endregion
7508
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/lexer.js
7552
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/lexer.js
7509
7553
  /**
7510
7554
  * Create a new YAML scanner for the given source text.
7511
7555
  *
@@ -8463,7 +8507,7 @@ function lexAll(text) {
8463
8507
  }
8464
8508
 
8465
8509
  //#endregion
8466
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/cst-parser.js
8510
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/cst-parser.js
8467
8511
  /**
8468
8512
  * Hardening: cap CST nesting so hostile inputs cannot overflow the stack
8469
8513
  * while the tree is being BUILT. Set slightly above the composer's
@@ -9176,7 +9220,7 @@ function parseCSTAll(text) {
9176
9220
  }
9177
9221
 
9178
9222
  //#endregion
9179
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/state.js
9223
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/state.js
9180
9224
  let lineStartsText;
9181
9225
  let lineStartsCache = [];
9182
9226
  function getLineStarts(text) {
@@ -9283,7 +9327,7 @@ function exitNesting(state) {
9283
9327
  }
9284
9328
 
9285
9329
  //#endregion
9286
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/tags.js
9330
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/tags.js
9287
9331
  /**
9288
9332
  * Resolve a tag shorthand using the document's %TAG directives.
9289
9333
  * For example, with `%TAG !! tag:example.com,2000:app/`, the tag `!!int`
@@ -9370,7 +9414,7 @@ function validateTagHandlesInDocument(docCst, state) {
9370
9414
  }
9371
9415
 
9372
9416
  //#endregion
9373
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/scalars.js
9417
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/scalars.js
9374
9418
  const NULL_RE$1 = /^(?:null|Null|NULL|~)$/;
9375
9419
  const TRUE_RE$1 = /^(?:true|True|TRUE)$/;
9376
9420
  const FALSE_RE$1 = /^(?:false|False|FALSE)$/;
@@ -10249,7 +10293,7 @@ function shouldPreserveRaw(rawValue, value) {
10249
10293
  }
10250
10294
 
10251
10295
  //#endregion
10252
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/block.js
10296
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/block.js
10253
10297
  /**
10254
10298
  * Compose a block map from its CST children, with an optional external first key.
10255
10299
  *
@@ -11398,7 +11442,7 @@ function composeFlatBlockMap(children, startIdx, parentCst, state, externalFirst
11398
11442
  }
11399
11443
 
11400
11444
  //#endregion
11401
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/flow.js
11445
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/flow.js
11402
11446
  /**
11403
11447
  * Validate that flow collection entries are separated by commas.
11404
11448
  *
@@ -11791,7 +11835,7 @@ function composeFlowSeqInner(cst, state, meta, parentBlockColumn) {
11791
11835
  }
11792
11836
 
11793
11837
  //#endregion
11794
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/document.js
11838
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/composer/document.js
11795
11839
  /** The flow-composer dispatch wired into every state this module creates. */
11796
11840
  const FLOW = {
11797
11841
  composeFlowMap,
@@ -12458,7 +12502,7 @@ function composeAllDocuments(text, options) {
12458
12502
  }
12459
12503
 
12460
12504
  //#endregion
12461
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/fold.js
12505
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/fold.js
12462
12506
  /**
12463
12507
  * Column-based line folding for a single logical scalar line (YAML 1.2 flow
12464
12508
  * folding, §7.3 / §8.2.1). Breaks the content at "safe" single-space
@@ -12695,7 +12739,7 @@ function renderBlockFolded(s, indent) {
12695
12739
  }
12696
12740
 
12697
12741
  //#endregion
12698
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/stringifier.js
12742
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/internal/stringifier.js
12699
12743
  /**
12700
12744
  * Thrown by the stringifier on its failure paths (circular references). The
12701
12745
  * facade catches this and materializes the public stringify error.
@@ -13067,7 +13111,7 @@ function stringifyValue(value, options) {
13067
13111
  }
13068
13112
 
13069
13113
  //#endregion
13070
- //#region ../../node_modules/.pnpm/@effected+yaml@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/yaml/Yaml.js
13114
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/yaml/Yaml.js
13071
13115
  /**
13072
13116
  * Options controlling parse behavior. All fields are omissible; absent fields
13073
13117
  * resolve to `strict` `true`, `maxAliasCount` `100` (the alias-based
@@ -13719,7 +13763,7 @@ function deepEqualValues(a, b) {
13719
13763
  }
13720
13764
 
13721
13765
  //#endregion
13722
- //#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
13766
+ //#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
13723
13767
  /**
13724
13768
  * An empty YAML document composes to `null` (`Yaml.parseAll("")` is `[null]`,
13725
13769
  * and the trailing document of an env-only `pnpm-lock.yaml` is `null` too).
@@ -13790,7 +13834,7 @@ const selectSoleDocument = (content) => Effect.gen(function* () {
13790
13834
  });
13791
13835
 
13792
13836
  //#endregion
13793
- //#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
13837
+ //#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
13794
13838
  const PnpmImporterDeps = Schema.optionalKey(Schema.Record(Schema.String, Schema.Struct({
13795
13839
  specifier: Schema.String,
13796
13840
  version: Schema.String
@@ -13887,8 +13931,7 @@ const toFields$1 = (raw) => Effect.gen(function* () {
13887
13931
  }));
13888
13932
  }
13889
13933
  if (raw.packages) for (const [key, pkg] of Object.entries(raw.packages)) {
13890
- const parenIndex = key.indexOf("(");
13891
- const bare = parenIndex === -1 ? key : key.slice(0, parenIndex);
13934
+ const { plain: bare } = splitPeerSuffix(key);
13892
13935
  const atIndex = bare.lastIndexOf("@");
13893
13936
  if (atIndex <= 0) continue;
13894
13937
  const name = bare.slice(0, atIndex);
@@ -13917,7 +13960,7 @@ const toFields$1 = (raw) => Effect.gen(function* () {
13917
13960
  });
13918
13961
 
13919
13962
  //#endregion
13920
- //#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
13963
+ //#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
13921
13964
  const YarnLockfileRaw = Schema.Record(Schema.String, Schema.Unknown);
13922
13965
  const DepRecord = Schema.optionalKey(Schema.Record(Schema.String, Schema.String));
13923
13966
  const YarnEntry = Schema.Struct({
@@ -14041,7 +14084,7 @@ const cleanYarnDeps = (deps) => {
14041
14084
  };
14042
14085
 
14043
14086
  //#endregion
14044
- //#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
14087
+ //#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
14045
14088
  const EMPTY_IMPORTERS = [];
14046
14089
  /**
14047
14090
  * Failure of `Lockfile.parse`: the given content is not a valid lockfile of
@@ -14286,7 +14329,7 @@ var Lockfile = class Lockfile extends Schema.Class("Lockfile")({
14286
14329
  };
14287
14330
 
14288
14331
  //#endregion
14289
- //#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
14332
+ //#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
14290
14333
  /**
14291
14334
  * The minimal manifest shape {@link LockfileIntegrity.compare} checks a
14292
14335
  * lockfile against: a package name plus the four optional dependency maps.
@@ -14403,7 +14446,7 @@ var LockfileIntegrity = class LockfileIntegrity extends Schema.Class("LockfileIn
14403
14446
  };
14404
14447
 
14405
14448
  //#endregion
14406
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Dependency.js
14449
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/Dependency.js
14407
14450
  /**
14408
14451
  * A resolved dependency entry pairing a package name with its version
14409
14452
  * specifier and the `kind` of map it came from (`@effected/npm`'s
@@ -14468,7 +14511,7 @@ var Dependency = class extends Schema.Class("Dependency")({
14468
14511
  };
14469
14512
 
14470
14513
  //#endregion
14471
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/DevEngines.js
14514
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/DevEngines.js
14472
14515
  /**
14473
14516
  * A single `devEngines` constraint with a name and optional `version` / `onFail`.
14474
14517
  *
@@ -16066,7 +16109,7 @@ const SpdxExpression = {
16066
16109
  };
16067
16110
 
16068
16111
  //#endregion
16069
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/License.js
16112
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/License.js
16070
16113
  /**
16071
16114
  * Indicates that a string is not a valid SPDX license identifier or expression.
16072
16115
  *
@@ -16102,7 +16145,7 @@ const isValidSpdx = (value) => {
16102
16145
  const SpdxLicense = Schema.String.pipe(Schema.check(Schema.makeFilter((value) => isValidSpdx(value) ? void 0 : "Expected a valid SPDX license expression")), Schema.brand("SpdxLicense"));
16103
16146
 
16104
16147
  //#endregion
16105
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageManager.js
16148
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageManager.js
16106
16149
  const PACKAGE_MANAGER_RE = /^([a-z]+)@(\d+\.\d+\.\d+(?:-[a-zA-Z0-9._-]+)?)(?:\+(.+))?$/;
16107
16150
  /**
16108
16151
  * The `packageManager` field only ever carries corepack's `<algo>.<hex>`
@@ -16161,7 +16204,7 @@ var PackageManager = class PackageManager extends Schema.Class("PackageManager")
16161
16204
  };
16162
16205
 
16163
16206
  //#endregion
16164
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageName.js
16207
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/PackageName.js
16165
16208
  /**
16166
16209
  * Indicates that a string could not be used as a valid npm package name.
16167
16210
  *
@@ -16220,7 +16263,7 @@ const PackageName = Object.assign(Schema.Union([ScopedPackageName, UnscopedPacka
16220
16263
  });
16221
16264
 
16222
16265
  //#endregion
16223
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Person.js
16266
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/Person.js
16224
16267
  const parsePersonString = (input) => {
16225
16268
  const emailMatch = input.match(/<([^>]+)>/);
16226
16269
  const urlMatch = input.match(/\(([^)]+)\)/);
@@ -16364,7 +16407,7 @@ var Person = class Person extends Schema.Class("Person")({
16364
16407
  };
16365
16408
 
16366
16409
  //#endregion
16367
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/internal/format.js
16410
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/internal/format.js
16368
16411
  const KEY_INDEX = new Map([
16369
16412
  "$schema",
16370
16413
  "name",
@@ -16588,7 +16631,7 @@ const renderJson = (raw, options) => {
16588
16631
  };
16589
16632
 
16590
16633
  //#endregion
16591
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/Package.js
16634
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.5.2_effect@4.0.0-beta.101/node_modules/@effected/package-json/Package.js
16592
16635
  const toHashMap = SchemaTransformation.transform({
16593
16636
  decode: (record) => HashMap.fromIterable(Object.entries(record)),
16594
16637
  encode: (map) => Object.fromEntries(HashMap.toEntries(map))
@@ -16907,7 +16950,7 @@ var Package = class Package extends Schema.Class("Package")({
16907
16950
  };
16908
16951
 
16909
16952
  //#endregion
16910
- //#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
16953
+ //#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
16911
16954
  const EMPTY$1 = Object.freeze(Object.create(null));
16912
16955
  const EMPTY_MANIFEST = Object.freeze(Object.create(null));
16913
16956
  /**
@@ -17516,7 +17559,7 @@ const Walker$1 = {
17516
17559
  };
17517
17560
 
17518
17561
  //#endregion
17519
- //#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
17562
+ //#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
17520
17563
  /**
17521
17564
  * The marker filenames {@link WorkspaceRoot} probes for, in priority order.
17522
17565
  *
@@ -17704,7 +17747,7 @@ var WorkspaceRoot = class WorkspaceRoot extends Context.Service()("@effected/wor
17704
17747
  };
17705
17748
 
17706
17749
  //#endregion
17707
- //#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
17750
+ //#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
17708
17751
  /**
17709
17752
  * Hard ceiling on directories the enumerator will visit for one pattern set.
17710
17753
  * Guards the pathological case a depth cap alone does not: a wide, shallow
@@ -17723,7 +17766,7 @@ const MAX_ENUMERATION_ENTRIES = 1e5;
17723
17766
  const PRUNED_DIRECTORIES = /* @__PURE__ */ new Set([".git", "node_modules"]);
17724
17767
 
17725
17768
  //#endregion
17726
- //#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
17769
+ //#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
17727
17770
  /** Directory names never descended into. */
17728
17771
  const isPruned = (entry) => PRUNED_DIRECTORIES.has(entry);
17729
17772
  /** Join root-relative POSIX segments; `""` is the root itself. */
@@ -17814,7 +17857,7 @@ var Traversal = class {
17814
17857
  };
17815
17858
 
17816
17859
  //#endregion
17817
- //#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
17860
+ //#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
17818
17861
  /** Strip a trailing slash from `GlobPattern.enumerationPrefix` to get a relative directory. */
17819
17862
  const baseOf = (pattern) => pattern.enumerationPrefix.replace(/\/$/, "");
17820
17863
  /**
@@ -17885,7 +17928,7 @@ const enumerate = (root, globs, options) => Effect.gen(function* () {
17885
17928
  });
17886
17929
 
17887
17930
  //#endregion
17888
- //#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
17931
+ //#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
17889
17932
  const stringsOf = (value) => Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : void 0;
17890
17933
  /** The `packages:` list of a `pnpm-workspace.yaml` document. Total on a parsed document. */
17891
17934
  const pnpmPatternsOf = (document) => {
@@ -17943,7 +17986,7 @@ const readPatterns = (root) => Effect.gen(function* () {
17943
17986
  });
17944
17987
 
17945
17988
  //#endregion
17946
- //#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
17989
+ //#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
17947
17990
  /**
17948
17991
  * Raised when a workspace member's `package.json` cannot be read, parsed, or
17949
17992
  * used — it is missing, malformed, or lacks a `name` or `version`.
@@ -18378,7 +18421,7 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends Context.Service()("@ef
18378
18421
  const isStringRecord$2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((entry) => typeof entry === "string");
18379
18422
 
18380
18423
  //#endregion
18381
- //#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
18424
+ //#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
18382
18425
  /**
18383
18426
  * Raised when the workspace dependency graph cannot be topologically ordered
18384
18427
  * because it contains a cycle.
@@ -18614,7 +18657,7 @@ const kahn = (edges) => {
18614
18657
  };
18615
18658
 
18616
18659
  //#endregion
18617
- //#region ../../node_modules/.pnpm/@effected+git@0.4.2_effect@4.0.0-beta.101/node_modules/@effected/git/GitCommand.js
18660
+ //#region ../../node_modules/.pnpm/@effected+git@0.5.0_effect@4.0.0-beta.101/node_modules/@effected/git/GitCommand.js
18618
18661
  /**
18619
18662
  * Builds a `git` `ChildProcess.StandardCommand` with the argv this package
18620
18663
  * classifies against.
@@ -19034,7 +19077,7 @@ const GitCommand = {
19034
19077
  };
19035
19078
 
19036
19079
  //#endregion
19037
- //#region ../../node_modules/.pnpm/@effected+git@0.4.2_effect@4.0.0-beta.101/node_modules/@effected/git/internal/run.js
19080
+ //#region ../../node_modules/.pnpm/@effected+git@0.5.0_effect@4.0.0-beta.101/node_modules/@effected/git/internal/run.js
19038
19081
  /**
19039
19082
  * Spawns `command` and collects its stdout, stderr, and exit code as a single
19040
19083
  * triple.
@@ -19062,7 +19105,7 @@ const runCollected = (command) => Effect.scoped(Effect.gen(function* () {
19062
19105
  }));
19063
19106
 
19064
19107
  //#endregion
19065
- //#region ../../node_modules/.pnpm/@effected+git@0.4.2_effect@4.0.0-beta.101/node_modules/@effected/git/Git.js
19108
+ //#region ../../node_modules/.pnpm/@effected+git@0.5.0_effect@4.0.0-beta.101/node_modules/@effected/git/Git.js
19066
19109
  /** git's own ceiling: a run that has not answered in 30s is not going to. */
19067
19110
  const GIT_TIMEOUT = Duration.seconds(30);
19068
19111
  /**
@@ -19949,6 +19992,12 @@ const make = (spawner) => {
19949
19992
  };
19950
19993
  };
19951
19994
  /**
19995
+ * The default for every {@link Git.makeTest} method a test did not stub: a
19996
+ * defect naming the method, so an unexercised call fails loudly instead of
19997
+ * succeeding with a lie or failing with a dishonest typed error.
19998
+ */
19999
+ const notStubbed = (method) => () => 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.`));
20000
+ /**
19952
20001
  * Typed git introspection over core's `ChildProcessSpawner`: read a
19953
20002
  * repository's state at any ref without checking it out, plus the mutating
19954
20003
  * tier (`checkout`, `fetch`, `fetchAny`, `submoduleUpdate`, `submoduleAdd`,
@@ -19971,16 +20020,103 @@ const make = (spawner) => {
19971
20020
  *
19972
20021
  * @public
19973
20022
  */
19974
- var Git = class extends Context.Service()("@effected/git/Git") {
20023
+ var Git = class Git extends Context.Service()("@effected/git/Git") {
19975
20024
  /** Resolves `ChildProcessSpawner` once, at construction — every method's `R` is `never`. */
19976
20025
  static layer = Layer.effect(this, Effect.gen(function* () {
19977
20026
  const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
19978
20027
  return make(spawner);
19979
20028
  }));
20029
+ /**
20030
+ * An in-memory test double of the service shape: stub only the methods the
20031
+ * test exercises, every other method **dies** with a defect naming itself.
20032
+ *
20033
+ * @remarks
20034
+ * Unlike `WorkspaceDiscovery.makeTest`, **no method here has an honest
20035
+ * default** — the shape is twenty-six unrelated git operations, and a
20036
+ * fabricated answer for any of them (an empty tree, a made-up sha, a silent
20037
+ * no-op `checkout`) would leak into consumer logic as fact. So every
20038
+ * unstubbed method fails loudly as a defect
20039
+ * (`Git.makeTest: <name>() was called but not stubbed`) rather than
20040
+ * succeeding with a lie or failing with a dishonest typed error — which is
20041
+ * also what makes the double a proof that a test touches *nothing but* the
20042
+ * methods it stubbed.
20043
+ *
20044
+ * The double deliberately models **none** of the live service's semantics:
20045
+ * no stderr classification, no option-injection guard (an option-like ref a
20046
+ * stub accepts would be refused live), no `LC_ALL=C` pinning, no timeout,
20047
+ * and no `./`-vs-bare path resolution on `show` — a stub answers exactly
20048
+ * what it is told and nothing else. A suite exercising any of those wants
20049
+ * `Git.layer` over a mocked `ChildProcessSpawner` (or real git) instead.
20050
+ *
20051
+ * @example
20052
+ * ```ts
20053
+ * import { Git } from "@effected/git";
20054
+ * import { Effect, Option } from "effect";
20055
+ *
20056
+ * const double = Git.makeTest({
20057
+ * show: (_cwd, _ref, path) =>
20058
+ * Effect.succeed(path === "./package.json" ? Option.some("{}") : Option.none()),
20059
+ * });
20060
+ * // `double.show(...)` answers; `double.status(...)` dies, named.
20061
+ * ```
20062
+ */
20063
+ static makeTest = (overrides = {}) => ({
20064
+ show: notStubbed("show"),
20065
+ lsTree: notStubbed("lsTree"),
20066
+ refExists: notStubbed("refExists"),
20067
+ mergeBase: notStubbed("mergeBase"),
20068
+ changedFiles: notStubbed("changedFiles"),
20069
+ workingChanges: notStubbed("workingChanges"),
20070
+ revParse: notStubbed("revParse"),
20071
+ checkout: notStubbed("checkout"),
20072
+ fetch: notStubbed("fetch"),
20073
+ fetchAny: notStubbed("fetchAny"),
20074
+ submoduleUpdate: notStubbed("submoduleUpdate"),
20075
+ submoduleAdd: notStubbed("submoduleAdd"),
20076
+ sparseCheckoutSet: notStubbed("sparseCheckoutSet"),
20077
+ configSet: notStubbed("configSet"),
20078
+ add: notStubbed("add"),
20079
+ nameStatus: notStubbed("nameStatus"),
20080
+ unstagedChanges: notStubbed("unstagedChanges"),
20081
+ stagedChanges: notStubbed("stagedChanges"),
20082
+ untrackedFiles: notStubbed("untrackedFiles"),
20083
+ defaultBranch: notStubbed("defaultBranch"),
20084
+ currentBranch: notStubbed("currentBranch"),
20085
+ repoRoot: notStubbed("repoRoot"),
20086
+ configGet: notStubbed("configGet"),
20087
+ remoteUrl: notStubbed("remoteUrl"),
20088
+ commitInfo: notStubbed("commitInfo"),
20089
+ status: notStubbed("status"),
20090
+ ...overrides
20091
+ });
20092
+ /**
20093
+ * The test layer: {@link Git.makeTest} behind `Layer.succeed`, so a suite
20094
+ * provides only the methods it exercises.
20095
+ *
20096
+ * @remarks
20097
+ * A parameterized layer factory mints a **fresh reference per call**, and
20098
+ * layers memoize by reference — bind the result to a `const` and reuse it
20099
+ * rather than calling `layerTest(...)` at each composition site.
20100
+ *
20101
+ * @example
20102
+ * ```ts
20103
+ * import { Git, LsTreeEntry } from "@effected/git";
20104
+ * import { Effect } from "effect";
20105
+ *
20106
+ * const TestGit = Git.layerTest({
20107
+ * lsTree: () =>
20108
+ * Effect.succeed([
20109
+ * LsTreeEntry.make({ mode: "100644", type: "blob", oid: "0".repeat(40), path: "package.json" }),
20110
+ * ]),
20111
+ * });
20112
+ * // program.pipe(Effect.provide(TestGit))
20113
+ * ```
20114
+ */
20115
+ static layerTest = (overrides = {}) => Layer.succeed(Git, Git.makeTest(overrides));
19980
20116
  };
19981
20117
 
19982
20118
  //#endregion
19983
- //#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
20119
+ //#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
19984
20120
  /**
19985
20121
  * Which git refs to compare, and whether to fold in the working tree.
19986
20122
  *
@@ -20262,7 +20398,7 @@ function resolveFromCatalog(catalogs, wantedDependency) {
20262
20398
  }
20263
20399
 
20264
20400
  //#endregion
20265
- //#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
20401
+ //#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
20266
20402
  /** Project a pnpm-workspace manifest's `catalog` / `catalogs` fields into a `Catalogs` map. */
20267
20403
  const inlineCatalogs = (manifest) => {
20268
20404
  if (manifest.catalog === void 0 && manifest.catalogs === void 0) return {};
@@ -20327,7 +20463,7 @@ const rangeOf = (catalogs, dependency, specifier) => {
20327
20463
  };
20328
20464
 
20329
20465
  //#endregion
20330
- //#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
20466
+ //#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
20331
20467
  /** Whether `value` is a non-null, non-array object. */
20332
20468
  const isObject$2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
20333
20469
  /**
@@ -20514,7 +20650,7 @@ var ConfigDependencyHooks = class ConfigDependencyHooks extends Context.Service(
20514
20650
  };
20515
20651
 
20516
20652
  //#endregion
20517
- //#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
20653
+ //#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
20518
20654
  /**
20519
20655
  * The four package managers this package understands.
20520
20656
  *
@@ -20757,7 +20893,7 @@ var PackageManagerDetector = class PackageManagerDetector extends Context.Servic
20757
20893
  };
20758
20894
 
20759
20895
  //#endregion
20760
- //#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
20896
+ //#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
20761
20897
  /**
20762
20898
  * Raised when the workspace's lockfile cannot be read off disk.
20763
20899
  *
@@ -20780,6 +20916,8 @@ var LockfileReadError = class extends Schema.TaggedErrorClass()("LockfileReadErr
20780
20916
  return `Cannot read ${this.format} lockfile at ${this.lockfilePath}`;
20781
20917
  }
20782
20918
  };
20919
+ /** A defect naming the unstubbed test-double method — a test-wiring mistake, not a typed failure. */
20920
+ const unstubbed$2 = (method) => Effect.die(/* @__PURE__ */ new Error(`LockfileReader.makeTest: ${method}() was called but not stubbed — pass a \`${method}\` override.`));
20783
20921
  /**
20784
20922
  * Reads and parses the workspace's lockfile.
20785
20923
  *
@@ -20865,10 +21003,78 @@ var LockfileReader = class LockfileReader extends Context.Service()("@effected/w
20865
21003
  * `const` and reuse it.
20866
21004
  */
20867
21005
  static layer = (options) => Layer.effect(LockfileReader, LockfileReader.make(options));
21006
+ /**
21007
+ * A test double satisfying the full {@link LockfileReaderShape} with no
21008
+ * filesystem, root walk, or package-manager detection.
21009
+ *
21010
+ * @remarks
21011
+ * There is **no honest default lockfile**: an empty one that looks like a
21012
+ * legitimate answer is indistinguishable from "this workspace resolves
21013
+ * nothing" — the silent-empty failure class this package documents on the
21014
+ * live paths — so `read` **dies** with an instructive defect until stubbed.
21015
+ *
21016
+ * The one derivation mirrors `WorkspaceDiscovery.makeTest`'s
21017
+ * derived-from-the-primary rule: when a `read` override is supplied,
21018
+ * `resolvedVersion` answers as the live service does — the **first** entry
21019
+ * of `lockfile.packagesNamed(name)` in lockfile order, `Option.none()` on a
21020
+ * miss — so the two stay consistent by construction. `integrity` is **not**
21021
+ * derivable: the live method compares the lockfile against the workspace
21022
+ * manifests discovery enumerates, and the double has no discovery to ask, so
21023
+ * it dies unless stubbed.
21024
+ *
21025
+ * `refresh` defaults to `Effect.void` honestly: the live contract is "drop
21026
+ * the memoized read so the next call re-reads", and this double memoizes
21027
+ * nothing — every `read()` call re-invokes the override — so there is
21028
+ * nothing to drop and the no-op is truthful, the same reasoning as
21029
+ * `WorkspaceDiscovery.makeTest`'s `refresh`.
21030
+ *
21031
+ * @example
21032
+ * ```ts
21033
+ * import { Lockfile } from "@effected/lockfiles";
21034
+ * import { LockfileReader } from "@effected/workspaces";
21035
+ * import { Effect } from "effect";
21036
+ *
21037
+ * const double = LockfileReader.makeTest({
21038
+ * read: () =>
21039
+ * Effect.succeed(
21040
+ * Lockfile.make({ format: "pnpm", lockfileVersion: "9.0", packages: [], workspaceDependencies: [] }),
21041
+ * ),
21042
+ * });
21043
+ * // `resolvedVersion` now answers consistently from that lockfile.
21044
+ * ```
21045
+ */
21046
+ static makeTest = (overrides = {}) => {
21047
+ const read = overrides.read;
21048
+ return {
21049
+ read: () => unstubbed$2("read"),
21050
+ resolvedVersion: read !== void 0 ? (packageName) => Effect.map(read(), (lockfile) => Option.fromUndefinedOr(lockfile.packagesNamed(packageName)[0])) : () => unstubbed$2("resolvedVersion"),
21051
+ integrity: () => unstubbed$2("integrity"),
21052
+ refresh: () => Effect.void,
21053
+ ...overrides
21054
+ };
21055
+ };
21056
+ /**
21057
+ * The test layer: {@link LockfileReader.makeTest} behind `Layer.succeed`, so
21058
+ * a suite provides only the methods it exercises.
21059
+ *
21060
+ * @remarks
21061
+ * A parameterized layer factory mints a **fresh reference per call**, and
21062
+ * layers memoize by reference — bind the result to a `const` and reuse it
21063
+ * rather than calling `layerTest(...)` at each composition site.
21064
+ *
21065
+ * @example
21066
+ * ```ts
21067
+ * import { LockfileReader } from "@effected/workspaces";
21068
+ *
21069
+ * const TestLockfiles = LockfileReader.layerTest();
21070
+ * // program.pipe(Effect.provide(TestLockfiles)) — dies loudly if touched.
21071
+ * ```
21072
+ */
21073
+ static layerTest = (overrides = {}) => Layer.succeed(LockfileReader, LockfileReader.makeTest(overrides));
20868
21074
  };
20869
21075
 
20870
21076
  //#endregion
20871
- //#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
21077
+ //#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
20872
21078
  /** The public npm registry, used when `publishConfig.registry` says nothing. */
20873
21079
  const DEFAULT_REGISTRY = "https://registry.npmjs.org/";
20874
21080
  /**
@@ -20969,7 +21175,7 @@ var PublishabilityDetector = class PublishabilityDetector extends Context.Servic
20969
21175
  };
20970
21176
 
20971
21177
  //#endregion
20972
- //#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
21178
+ //#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
20973
21179
  /**
20974
21180
  * Strip pnpm's peer-disambiguation suffix from a recorded importer version.
20975
21181
  *
@@ -21056,7 +21262,7 @@ const unanimousVersionOf = (index, dependency) => {
21056
21262
  };
21057
21263
 
21058
21264
  //#endregion
21059
- //#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
21265
+ //#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
21060
21266
  /**
21061
21267
  * An immutable, fully-normalized catalog collection — the one catalog
21062
21268
  * resolution semantic in the package.
@@ -21332,6 +21538,8 @@ const validatePnpmWorkspaceCatalogs = (document) => {
21332
21538
  catalogs: "catalogs"
21333
21539
  }));
21334
21540
  };
21541
+ /** A defect naming the unstubbed test-double method — a test-wiring mistake, not a typed failure. */
21542
+ const unstubbed$1 = (method) => Effect.die(/* @__PURE__ */ new Error(`WorkspaceCatalogs.makeTest: ${method}() was called but not stubbed — pass a \`${method}\` override.`));
21335
21543
  /**
21336
21544
  * Assembles a workspace's catalogs, package-manager-aware.
21337
21545
  *
@@ -21475,6 +21683,70 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends Context.Service()("@effe
21475
21683
  */
21476
21684
  static layerWithConfigDependencies = (options) => Layer.effect(WorkspaceCatalogs, WorkspaceCatalogs.make(options)).pipe(Layer.provide(ConfigDependencyHooks.layerLive));
21477
21685
  /**
21686
+ * A test double satisfying the full {@link WorkspaceCatalogsShape} with no
21687
+ * filesystem, lockfile read, or hook replay.
21688
+ *
21689
+ * @remarks
21690
+ * There is **no honest default catalog set**: an empty `CatalogSet` that
21691
+ * looks like a legitimate answer is the "every dependency looks newly added"
21692
+ * failure class the live assembler hard-fails to prevent, so every method
21693
+ * **dies** with an instructive defect until stubbed — a test-wiring mistake
21694
+ * fails loudly as a defect rather than succeeding with a lie or failing with
21695
+ * a dishonest typed error.
21696
+ *
21697
+ * The one derivation mirrors `WorkspaceDiscovery.makeTest`'s
21698
+ * derived-from-the-primary rule: when a `set` override is supplied,
21699
+ * `resolveSpecifier` answers from that `CatalogSet`'s own
21700
+ * {@link CatalogSet.resolveSpecifier} — exactly what the live service runs
21701
+ * over its assembled set — so the two stay consistent by construction.
21702
+ * `releaseAgeGate` and `importerVersions` are **not** derivable from a
21703
+ * catalog set (the gate comes from release-age keys and hook contributions,
21704
+ * the importer index from the lockfile's importer blocks — neither is in a
21705
+ * `CatalogSet`) and always die unless stubbed.
21706
+ *
21707
+ * @example
21708
+ * ```ts
21709
+ * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
21710
+ * import { Effect } from "effect";
21711
+ *
21712
+ * const double = WorkspaceCatalogs.makeTest({
21713
+ * set: () => Effect.succeed(CatalogSet.fromCatalogs({ default: { effect: "4.0.0" } })),
21714
+ * });
21715
+ * // `resolveSpecifier` now answers consistently from that set.
21716
+ * ```
21717
+ */
21718
+ static makeTest = (overrides = {}) => {
21719
+ const set = overrides.set;
21720
+ return {
21721
+ set: () => unstubbed$1("set"),
21722
+ resolveSpecifier: set !== void 0 ? (dependency, specifier) => Effect.map(set(), (catalogs) => catalogs.resolveSpecifier(dependency, specifier)) : () => unstubbed$1("resolveSpecifier"),
21723
+ releaseAgeGate: () => unstubbed$1("releaseAgeGate"),
21724
+ importerVersions: () => unstubbed$1("importerVersions"),
21725
+ ...overrides
21726
+ };
21727
+ };
21728
+ /**
21729
+ * The test layer: {@link WorkspaceCatalogs.makeTest} behind `Layer.succeed`,
21730
+ * so a suite provides only the methods it exercises.
21731
+ *
21732
+ * @remarks
21733
+ * A parameterized layer factory mints a **fresh reference per call**, and
21734
+ * layers memoize by reference — bind the result to a `const` and reuse it
21735
+ * rather than calling `layerTest(...)` at each composition site.
21736
+ *
21737
+ * @example
21738
+ * ```ts
21739
+ * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
21740
+ * import { Effect } from "effect";
21741
+ *
21742
+ * const TestCatalogs = WorkspaceCatalogs.layerTest({
21743
+ * set: () => Effect.succeed(CatalogSet.empty()),
21744
+ * });
21745
+ * // program.pipe(Effect.provide(TestCatalogs))
21746
+ * ```
21747
+ */
21748
+ static layerTest = (overrides = {}) => Layer.succeed(WorkspaceCatalogs, WorkspaceCatalogs.makeTest(overrides));
21749
+ /**
21478
21750
  * The real implementation of `@effected/npm`'s `CatalogResolver` contract —
21479
21751
  * the one `@effected/package-json` declares but cannot fill.
21480
21752
  *
@@ -21500,7 +21772,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends Context.Service()("@effe
21500
21772
  };
21501
21773
 
21502
21774
  //#endregion
21503
- //#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
21775
+ //#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
21504
21776
  const EMPTY = Object.freeze(Object.create(null));
21505
21777
  const DependencyMap = Schema.Record(Schema.String, Schema.String).pipe(Schema.withDecodingDefaultKey(Effect.succeed(EMPTY)), Schema.withConstructorDefault(Effect.succeed(EMPTY)));
21506
21778
  /**
@@ -21724,7 +21996,7 @@ var WorkspaceStateSnapshot = class extends Schema.Class("WorkspaceStateSnapshot"
21724
21996
  };
21725
21997
 
21726
21998
  //#endregion
21727
- //#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
21999
+ //#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
21728
22000
  /** Whether `value` is a non-null, non-array object. */
21729
22001
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
21730
22002
  /** Whether every value in a record is a string — a usable dependency map. */
@@ -21783,6 +22055,8 @@ const EMPTY_LOCKFILE_RECORD = {
21783
22055
  catalogs: CatalogSet.empty(),
21784
22056
  importerVersions: {}
21785
22057
  };
22058
+ /** A defect naming the unstubbed test-double method — a test-wiring mistake, not a typed failure. */
22059
+ const unstubbed = (method) => Effect.die(/* @__PURE__ */ new Error(`WorkspaceSnapshots.makeTest: ${method}() was called but not stubbed — pass a \`${method}\` override.`));
21786
22060
  /**
21787
22061
  * Reads workspace state at a git ref with no checkout, and the live worktree.
21788
22062
  *
@@ -21929,10 +22203,70 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends Context.Service()("@ef
21929
22203
  * `const` and reuse it, or layer memoization does not apply.
21930
22204
  */
21931
22205
  static layer = (options) => Layer.effect(WorkspaceSnapshots, WorkspaceSnapshots.make(options));
22206
+ /**
22207
+ * A test double satisfying the full {@link WorkspaceSnapshotsShape} with no
22208
+ * git, filesystem, discovery, or catalog assembly.
22209
+ *
22210
+ * @remarks
22211
+ * There are **no honest defaults and no derivations** here: `at(ref)` and
22212
+ * `worktree()` are two independent reads of two different sources (a git ref
22213
+ * vs. the live tree), so neither can be honestly derived from the other, and
22214
+ * a fabricated empty {@link WorkspaceStateSnapshot} on either side of a
22215
+ * before/after diff reads as every dependency newly added or removed — the
22216
+ * exact silent-empty failure class this package documents on the live paths.
22217
+ * Both methods therefore **die** with an instructive defect until stubbed; a
22218
+ * test-wiring mistake fails loudly as a defect rather than succeeding with a
22219
+ * lie.
22220
+ *
22221
+ * @example
22222
+ * ```ts
22223
+ * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
22224
+ * import { Effect } from "effect";
22225
+ *
22226
+ * const empty = WorkspaceStateSnapshot.make({
22227
+ * packages: [],
22228
+ * catalogs: CatalogSet.empty(),
22229
+ * importerVersions: {},
22230
+ * });
22231
+ * const double = WorkspaceSnapshots.makeTest({
22232
+ * at: () => Effect.succeed(empty),
22233
+ * worktree: () => Effect.succeed(empty),
22234
+ * });
22235
+ * ```
22236
+ */
22237
+ static makeTest = (overrides = {}) => ({
22238
+ at: () => unstubbed("at"),
22239
+ worktree: () => unstubbed("worktree"),
22240
+ ...overrides
22241
+ });
22242
+ /**
22243
+ * The test layer: {@link WorkspaceSnapshots.makeTest} behind `Layer.succeed`,
22244
+ * so a suite provides only the methods it exercises.
22245
+ *
22246
+ * @remarks
22247
+ * A parameterized layer factory mints a **fresh reference per call**, and
22248
+ * layers memoize by reference — bind the result to a `const` and reuse it
22249
+ * rather than calling `layerTest(...)` at each composition site.
22250
+ *
22251
+ * @example
22252
+ * ```ts
22253
+ * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
22254
+ * import { Effect } from "effect";
22255
+ *
22256
+ * const TestSnapshots = WorkspaceSnapshots.layerTest({
22257
+ * worktree: () =>
22258
+ * Effect.succeed(
22259
+ * WorkspaceStateSnapshot.make({ packages: [], catalogs: CatalogSet.empty(), importerVersions: {} }),
22260
+ * ),
22261
+ * });
22262
+ * // program.pipe(Effect.provide(TestSnapshots))
22263
+ * ```
22264
+ */
22265
+ static layerTest = (overrides = {}) => Layer.succeed(WorkspaceSnapshots, WorkspaceSnapshots.makeTest(overrides));
21932
22266
  };
21933
22267
 
21934
22268
  //#endregion
21935
- //#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
22269
+ //#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
21936
22270
  /**
21937
22271
  * Every service that needs only a filesystem: root, package-manager detection,
21938
22272
  * discovery, lockfile reading, catalogs and publishability.
@@ -47304,20 +47638,25 @@ function readRawPackageJson(fs, pkgDir) {
47304
47638
  }
47305
47639
  /**
47306
47640
  * Build resolved scopes from the discovered workspace packages, keeping only
47307
- * those that are a release surface (declare publishConfig that yields at least
47308
- * one publish target). Used both when `.changeset/config.json` declares no
47309
- * explicit `packages` record AND to augment an explicit record with the
47310
- * remaining workspace packages it does not list (so the record annotates the
47311
- * listed packages without shrinking the release surface). The changeset
47312
- * `ignore` list is intentionally NOT consulted here an ignored package still
47313
- * declares publishConfig and remains a valid changeset target.
47314
- */
47315
- function buildFallbackScopes(fs, workspaces) {
47641
+ * those that are a release surface: a package that declares publishConfig
47642
+ * yielding at least one publish target, OR when the changeset config sets
47643
+ * `privatePackages.version: true` (`versionPrivate`) any workspace package
47644
+ * at all, since changesets versions private packages too in that mode (#360:
47645
+ * a private single-root repo with `privatePackages.version: true` previously
47646
+ * produced an empty release surface and left every file unmapped). Used both
47647
+ * when `.changeset/config.json` declares no explicit `packages` record AND to
47648
+ * augment an explicit record with the remaining workspace packages it does
47649
+ * not list (so the record annotates the listed packages without shrinking the
47650
+ * release surface). The changeset `ignore` list is intentionally NOT
47651
+ * consulted here — an ignored package still declares publishConfig and
47652
+ * remains a valid changeset target.
47653
+ */
47654
+ function buildFallbackScopes(fs, workspaces, versionPrivate) {
47316
47655
  return Effect.forEach(workspaces, (ws) => Effect.gen(function* () {
47317
47656
  const raw = yield* readRawPackageJson(fs, ws.path);
47318
47657
  if (raw === null) return [];
47319
47658
  const binding = yield* readTargetsBinding(fs, ws.path);
47320
- if (SilkPublishability.detect(ws.name, raw, binding).length === 0) return [];
47659
+ if (SilkPublishability.detect(ws.name, raw, binding).length === 0 && !versionPrivate) return [];
47321
47660
  return [{
47322
47661
  name: ws.name,
47323
47662
  workspaceDir: ws.path,
@@ -47423,6 +47762,8 @@ function makeShape$3(reader, discovery, fs) {
47423
47762
  version: w.version
47424
47763
  }));
47425
47764
  const hasExplicitPackages = Object.keys(decodedOptions.packages ?? {}).length > 0;
47765
+ const privatePackages = config.privatePackages;
47766
+ const versionPrivate = privatePackages !== void 0 && privatePackages !== false && privatePackages.version === true;
47426
47767
  let scopes;
47427
47768
  if (hasExplicitPackages) {
47428
47769
  const explicitScopes = yield* buildResolvedScopes({
@@ -47438,9 +47779,9 @@ function makeShape$3(reader, discovery, fs) {
47438
47779
  throw e;
47439
47780
  }
47440
47781
  const explicitNames = new Set(explicitScopes.map((s) => s.name));
47441
- const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)));
47782
+ const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)), versionPrivate);
47442
47783
  scopes = [...explicitScopes, ...discoveredScopes];
47443
- } else scopes = yield* buildFallbackScopes(fs, workspaces);
47784
+ } else scopes = yield* buildFallbackScopes(fs, workspaces, versionPrivate);
47444
47785
  const inspected = {
47445
47786
  configPath,
47446
47787
  projectDir,
@@ -47474,12 +47815,19 @@ function makeShape$3(reader, discovery, fs) {
47474
47815
  function classifyOne(inspected, path) {
47475
47816
  const abs = resolve(inspected.projectDir, path);
47476
47817
  let bestWorkspace = null;
47477
- for (const s of inspected.packages) if (isInside(s.workspaceDir, abs)) {
47478
- const depth = s.workspaceDir.length;
47479
- if (!bestWorkspace || depth > bestWorkspace.depth) bestWorkspace = {
47480
- pkg: s.name,
47481
- depth
47482
- };
47818
+ let rootScope = null;
47819
+ for (const s of inspected.packages) {
47820
+ if (s.workspaceDir === inspected.projectDir) {
47821
+ rootScope = s.name;
47822
+ continue;
47823
+ }
47824
+ if (isInside(s.workspaceDir, abs)) {
47825
+ const depth = s.workspaceDir.length;
47826
+ if (!bestWorkspace || depth > bestWorkspace.depth) bestWorkspace = {
47827
+ pkg: s.name,
47828
+ depth
47829
+ };
47830
+ }
47483
47831
  }
47484
47832
  if (bestWorkspace) return {
47485
47833
  path,
@@ -47506,6 +47854,11 @@ function classifyOne(inspected, path) {
47506
47854
  glob: vf.glob
47507
47855
  }
47508
47856
  };
47857
+ if (rootScope && isInside(inspected.projectDir, abs)) return {
47858
+ path,
47859
+ package: rootScope,
47860
+ reason: "workspace"
47861
+ };
47509
47862
  return {
47510
47863
  path,
47511
47864
  package: null,