@savvy-web/silk 3.8.2 → 3.8.4

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.
@@ -2335,7 +2335,7 @@ var GlobSet = class GlobSet extends effect.Schema.Class("GlobSet")(effect.Schema
2335
2335
  }
2336
2336
  };
2337
2337
  //#endregion
2338
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/BunExtension.js
2338
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/BunExtension.js
2339
2339
  /**
2340
2340
  * Extension data specific to bun lockfiles, attached to `Lockfile.extension`
2341
2341
  * when the format is `"bun"`.
@@ -2356,7 +2356,7 @@ var BunExtension = class extends effect.Schema.Class("BunExtension")({
2356
2356
  trustedDependencies: effect.Schema.optionalKey(effect.Schema.Array(effect.Schema.String))
2357
2357
  }) {};
2358
2358
  //#endregion
2359
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/CatalogResolver.js
2359
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/CatalogResolver.js
2360
2360
  /**
2361
2361
  * Contract for resolving pnpm `catalog:` dependency specifiers to concrete
2362
2362
  * version ranges.
@@ -2402,7 +2402,7 @@ var CatalogResolver = class CatalogResolver extends effect.Context.Service()("@e
2402
2402
  static noop = effect.Layer.succeed(CatalogResolver, { rangeOf: () => effect.Effect.succeed(effect.Option.none()) });
2403
2403
  };
2404
2404
  //#endregion
2405
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/WorkspaceResolver.js
2405
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/WorkspaceResolver.js
2406
2406
  /**
2407
2407
  * Raised when a `catalog:` or `workspace:` specifier cannot be resolved
2408
2408
  * because the resolution mechanism itself failed — not for an ordinary
@@ -2463,7 +2463,7 @@ var WorkspaceResolver = class WorkspaceResolver extends effect.Context.Service()
2463
2463
  static noop = effect.Layer.succeed(WorkspaceResolver, { versionOf: () => effect.Effect.succeed(effect.Option.none()) });
2464
2464
  };
2465
2465
  //#endregion
2466
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/CatalogAssemblyError.js
2466
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/CatalogAssemblyError.js
2467
2467
  /**
2468
2468
  * Raised when a workspace's catalogs cannot be assembled — a `pnpm-workspace.yaml`
2469
2469
  * that is unreadable or not valid YAML, a root `package.json` `workspaces` field
@@ -2507,7 +2507,7 @@ var CatalogAssemblyError = class extends effect.Schema.TaggedError()("CatalogAss
2507
2507
  }
2508
2508
  };
2509
2509
  //#endregion
2510
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/DependencySection.js
2510
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/DependencySection.js
2511
2511
  /**
2512
2512
  * The short dependency kind: which dependency map an entry came from, named the
2513
2513
  * way consumers branch on it.
@@ -4122,7 +4122,7 @@ const isComparatorSetSubset = (sub, sup) => {
4122
4122
  return true;
4123
4123
  };
4124
4124
  //#endregion
4125
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/DependencySpecifier.js
4125
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/DependencySpecifier.js
4126
4126
  /**
4127
4127
  * Indicates that a string could not be parsed as a valid dependency specifier.
4128
4128
  *
@@ -4329,7 +4329,7 @@ const DependencySpecifier = Object.assign(brandedSpecifier, {
4329
4329
  FromString: fromString
4330
4330
  });
4331
4331
  //#endregion
4332
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/IntegrityHash.js
4332
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/IntegrityHash.js
4333
4333
  const SRI_RE = /^(sha1|sha256|sha384|sha512)-[A-Za-z0-9+/]+={0,2}$/;
4334
4334
  const COREPACK_RE = /^(sha1|sha224|sha256|sha384|sha512)\.[0-9a-f]+$/;
4335
4335
  const YARN_RE = /^[0-9]+(c[0-9]+)?\/[0-9a-f]+$/;
@@ -4383,6 +4383,13 @@ const IntegrityHash = Object.assign(brandedIntegrity, {
4383
4383
  });
4384
4384
  const corepackRestricted = brandedIntegrity.pipe(effect.Schema.check(effect.Schema.makeFilter((value) => isCorepack(value) ? void 0 : "Expected a corepack (<algo>.<hex>) integrity hash")));
4385
4385
  const BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4386
+ const BASE64_INVALID = 255;
4387
+ const BASE64_INDEX = (() => {
4388
+ const table = new Uint8Array("z".charCodeAt(0) + 1);
4389
+ table.fill(BASE64_INVALID);
4390
+ for (let index = 0; index < 64; index += 1) table[BASE64_ALPHABET.charCodeAt(index)] = index;
4391
+ return table;
4392
+ })();
4386
4393
  const decodeBase64 = (value) => {
4387
4394
  const firstPad = value.indexOf("=");
4388
4395
  const body = firstPad === -1 ? value : value.slice(0, firstPad);
@@ -4394,9 +4401,11 @@ const decodeBase64 = (value) => {
4394
4401
  let buffer = 0;
4395
4402
  let bits = 0;
4396
4403
  const bytes = [];
4397
- for (const char of body) {
4398
- const sextet = BASE64_ALPHABET.indexOf(char);
4399
- if (sextet < 0) return void 0;
4404
+ for (let index = 0; index < body.length; index += 1) {
4405
+ const code = body.charCodeAt(index);
4406
+ if (code >= BASE64_INDEX.length) return void 0;
4407
+ const sextet = BASE64_INDEX[code];
4408
+ if (sextet === BASE64_INVALID) return void 0;
4400
4409
  buffer = buffer << 6 | sextet;
4401
4410
  bits += 6;
4402
4411
  if (bits >= 8) {
@@ -5399,7 +5408,7 @@ var Run = class {
5399
5408
  static REDACTED = "***";
5400
5409
  };
5401
5410
  //#endregion
5402
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/ReleaseAgeGate.js
5411
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/ReleaseAgeGate.js
5403
5412
  const MS_PER_MINUTE = 6e4;
5404
5413
  /**
5405
5414
  * A source's partial contribution to a {@link ReleaseAgeGate}: the effective
@@ -5569,7 +5578,7 @@ var ReleaseAgeGate = class ReleaseAgeGate extends effect.Schema.Class("ReleaseAg
5569
5578
  }
5570
5579
  };
5571
5580
  //#endregion
5572
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/ImporterDependency.js
5581
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/ImporterDependency.js
5573
5582
  /**
5574
5583
  * One declared dependency of one workspace importer, as the lockfile records it.
5575
5584
  *
@@ -5607,7 +5616,7 @@ var ImporterDependency = class extends effect.Schema.Class("ImporterDependency")
5607
5616
  depType: DependencyField
5608
5617
  }) {};
5609
5618
  //#endregion
5610
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/LockfileImporter.js
5619
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/LockfileImporter.js
5611
5620
  /**
5612
5621
  * One workspace importer's declared dependencies, as the lockfile records them.
5613
5622
  *
@@ -5631,7 +5640,7 @@ var LockfileImporter = class extends effect.Schema.Class("LockfileImporter")({
5631
5640
  dependencies: effect.Schema.Array(ImporterDependency)
5632
5641
  }) {};
5633
5642
  //#endregion
5634
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/ResolvedPackage.js
5643
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/ResolvedPackage.js
5635
5644
  const EMPTY_DEPENDENCIES = {};
5636
5645
  const EMPTY_PEER_META = {};
5637
5646
  const EMPTY_EDGE_NAMES = [];
@@ -5721,7 +5730,7 @@ var ResolvedPackage = class extends effect.Schema.Class("ResolvedPackage")({
5721
5730
  unresolvedEdges: effect.Schema.Array(effect.Schema.String).pipe(effect.Schema.withDecodingDefaultKey(effect.Effect.succeed(EMPTY_EDGE_NAMES)), effect.Schema.withConstructorDefault(effect.Effect.succeed(EMPTY_EDGE_NAMES)))
5722
5731
  }) {};
5723
5732
  //#endregion
5724
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/WorkspaceDependency.js
5733
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/WorkspaceDependency.js
5725
5734
  /**
5726
5735
  * A directed dependency edge between two workspace packages as recorded in
5727
5736
  * the lockfile.
@@ -5743,7 +5752,7 @@ var WorkspaceDependency = class extends effect.Schema.Class("WorkspaceDependency
5743
5752
  constraint: effect.Schema.String
5744
5753
  }) {};
5745
5754
  //#endregion
5746
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/PnpmExtension.js
5755
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/PnpmExtension.js
5747
5756
  /**
5748
5757
  * Extension data specific to pnpm lockfiles, attached to `Lockfile.extension`
5749
5758
  * when the format is `"pnpm"`.
@@ -5768,7 +5777,7 @@ var PnpmExtension = class extends effect.Schema.Class("PnpmExtension")({
5768
5777
  }))
5769
5778
  }) {};
5770
5779
  //#endregion
5771
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/LockfileFormat.js
5780
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/LockfileFormat.js
5772
5781
  /**
5773
5782
  * The lockfile formats this package parses: bun's `bun.lock` (JSONC), npm's
5774
5783
  * `package-lock.json` (JSON), pnpm's `pnpm-lock.yaml` and yarn Berry's
@@ -5810,7 +5819,7 @@ const FILENAMES = {
5810
5819
  */
5811
5820
  const filenameFor = (format) => FILENAMES[format][0];
5812
5821
  //#endregion
5813
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/internal/shared.js
5822
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/internal/shared.js
5814
5823
  /**
5815
5824
  * The four dependency sections of a manifest, in a stable order — the shared
5816
5825
  * dependency-sections table (v3's `DEP_SECTIONS`). Each entry is both the
@@ -7812,7 +7821,7 @@ var JsoncModifier = class {
7812
7821
  });
7813
7822
  };
7814
7823
  //#endregion
7815
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/internal/bun.js
7824
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/internal/bun.js
7816
7825
  const DepRecord$2 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
7817
7826
  const OptionalPeers = effect.Schema.optionalKey(effect.Schema.Array(effect.Schema.String));
7818
7827
  const BunWorkspaceEntry = effect.Schema.Struct({
@@ -7989,7 +7998,7 @@ const toFields$3 = (raw) => effect.Effect.gen(function* () {
7989
7998
  };
7990
7999
  });
7991
8000
  //#endregion
7992
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/internal/npm.js
8001
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/internal/npm.js
7993
8002
  const DepRecord$1 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
7994
8003
  const PeerMetaRecord = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.Struct({ optional: effect.Schema.optionalKey(effect.Schema.Boolean) })));
7995
8004
  const NpmPackageEntry = effect.Schema.Struct({
@@ -15857,7 +15866,7 @@ function deepEqualValues(a, b) {
15857
15866
  return false;
15858
15867
  }
15859
15868
  //#endregion
15860
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/internal/documents.js
15869
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/internal/documents.js
15861
15870
  /**
15862
15871
  * An empty YAML document composes to `null` (`Yaml.parseAll("")` is `[null]`,
15863
15872
  * and the trailing document of an env-only `pnpm-lock.yaml` is `null` too).
@@ -15927,7 +15936,7 @@ const selectSoleDocument = (content) => effect.Effect.gen(function* () {
15927
15936
  };
15928
15937
  });
15929
15938
  //#endregion
15930
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/internal/pnpm.js
15939
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/internal/pnpm.js
15931
15940
  const PnpmImporterDeps = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.Struct({
15932
15941
  specifier: effect.Schema.String,
15933
15942
  version: effect.Schema.String
@@ -15936,7 +15945,8 @@ const PnpmImporter = effect.Schema.Struct({
15936
15945
  dependencies: PnpmImporterDeps,
15937
15946
  devDependencies: PnpmImporterDeps,
15938
15947
  peerDependencies: PnpmImporterDeps,
15939
- optionalDependencies: PnpmImporterDeps
15948
+ optionalDependencies: PnpmImporterDeps,
15949
+ publishDirectory: effect.Schema.optionalKey(effect.Schema.String)
15940
15950
  });
15941
15951
  /**
15942
15952
  * The version gate's own input: `lockfileVersion` and nothing else.
@@ -16011,9 +16021,23 @@ const parsePnpm = (content) => effect.Effect.gen(function* () {
16011
16021
  * resolution, which names no instance in this lockfile, from becoming a
16012
16022
  * plausible lie.
16013
16023
  *
16024
+ * A failed composition gets one second reading: the recorded version ITSELF as
16025
+ * an instance id. That is how pnpm spells an `npm:` alias — the dependency
16026
+ * `typescript-classic: npm:typescript@^6.0.3` is recorded as
16027
+ * `typescript-classic: typescript@6.0.3`, the referenced instance's own key,
16028
+ * peer suffix included when one applies. Still compose-then-verify, not a
16029
+ * guess: a plain version (`6.0.3`) can never be an instance id, because ids
16030
+ * always carry a name, so the reading admits exactly the alias shape.
16031
+ *
16032
+ * Unlike {@link resolveImporterEdges}, there is no `workspace:`-specifier
16033
+ * ancestor walk here — a snapshot body records no specifier, so that evidence
16034
+ * does not exist on this path. The publish-directory map needs no specifier:
16035
+ * the importer entry's own `publishDirectory` declaration is exact evidence,
16036
+ * available to both paths, and is consulted unconditionally.
16037
+ *
16014
16038
  * @internal
16015
16039
  */
16016
- const resolveEdges = (sections, instanceIds) => {
16040
+ const resolveEdges = (sections, instanceIds, publishDirTargets) => {
16017
16041
  const edges = /* @__PURE__ */ new Map();
16018
16042
  const unnameable = /* @__PURE__ */ new Set();
16019
16043
  for (const section of sections) {
@@ -16023,11 +16047,13 @@ const resolveEdges = (sections, instanceIds) => {
16023
16047
  if (version.startsWith(LINK_PREFIX)) {
16024
16048
  const target = resolveLinkTarget("", version.slice(LINK_PREFIX.length));
16025
16049
  if (target !== void 0 && instanceIds.has(target)) edges.set(name, target);
16050
+ else if (target !== void 0 && publishDirTargets.has(target)) edges.set(name, publishDirTargets.get(target));
16026
16051
  else unnameable.add(name);
16027
16052
  continue;
16028
16053
  }
16029
16054
  const bare = `${name}@${version}`;
16030
16055
  if (instanceIds.has(bare)) edges.set(name, bare);
16056
+ else if (instanceIds.has(version)) edges.set(name, version);
16031
16057
  else unnameable.add(name);
16032
16058
  }
16033
16059
  }
@@ -16043,6 +16069,13 @@ const LINK_PREFIX = "link:";
16043
16069
  * workspace edge can name the workspace importer's instance id.
16044
16070
  * Total: a target that walks above the root yields `undefined`.
16045
16071
  *
16072
+ * A target that normalizes to NOTHING — `link:.` recorded root-relative —
16073
+ * also yields `undefined` rather than the root importer's ".": the root
16074
+ * importer deliberately emits no `ResolvedPackage` row (its path cannot serve
16075
+ * as a package name), so mapping the empty target to "." would hand back an id
16076
+ * no row carries, and no pnpm output recording that shape has been observed.
16077
+ * The edge stays honestly unnameable instead.
16078
+ *
16046
16079
  * @internal
16047
16080
  */
16048
16081
  const resolveLinkTarget = (importerPath, target) => {
@@ -16089,22 +16122,28 @@ const owningImporter = (target, importerPaths) => {
16089
16122
  * naming another importer — normalized against this importer's own path. Both
16090
16123
  * are checked against the lockfile's instance ids before being emitted.
16091
16124
  *
16092
- * A `link:` target that is no importer gets one further chance, and only under
16093
- * a `workspace:` SPECIFIER: pnpm resolved that edge through the workspace, so
16094
- * the target directory is known to belong to a workspace package, and
16095
- * {@link owningImporter} names it. The specifier is what makes this a
16096
- * resolution rather than a guess a hand-written `link:../vendor/stub`
16097
- * specifier names a directory pnpm never claimed was a workspace package, and
16098
- * attributing it to whichever importer happens to contain it would answer with
16099
- * the wrong package's peers instead of admitting it could not name the edge.
16100
- *
16101
- * The snapshot path ({@link resolveEdges}) deliberately does NOT do this: a
16102
- * snapshot body records `name: link:<path>` with no specifier beside it, so the
16103
- * evidence this rule turns on is not available there.
16125
+ * A `link:` target that is no importer gets two further chances. First the
16126
+ * publish-directory map: an importer that DECLARES `publishDirectory` has told
16127
+ * the lockfile exactly which build directory its links point at, so a target
16128
+ * matching a declared publish directory names that importer on evidence, no
16129
+ * specifier required {@link resolveEdges} consults the same map for the same
16130
+ * reason. Then, and only under a `workspace:` SPECIFIER, the ancestor walk:
16131
+ * pnpm resolved that edge through the workspace, so the target directory is
16132
+ * known to belong to a workspace package, and {@link owningImporter} names it.
16133
+ * The specifier is what makes the walk a resolution rather than a guess — a
16134
+ * hand-written `link:../vendor/stub` specifier names a directory pnpm never
16135
+ * claimed was a workspace package, and attributing it to whichever importer
16136
+ * happens to contain it would answer with the wrong package's peers instead of
16137
+ * admitting it could not name the edge. The snapshot path has no specifier and
16138
+ * therefore no walk; the publish-directory map is the evidence it does get.
16139
+ *
16140
+ * A failed `name@version` composition gets the same alias reading as
16141
+ * {@link resolveEdges}: the recorded version itself as an instance id, which is
16142
+ * how pnpm spells `npm:` aliases.
16104
16143
  *
16105
16144
  * @internal
16106
16145
  */
16107
- const resolveImporterEdges = (importer, importerPath, instanceIds, importerPaths) => {
16146
+ const resolveImporterEdges = (importer, importerPath, instanceIds, importerPaths, publishDirTargets) => {
16108
16147
  const edges = /* @__PURE__ */ new Map();
16109
16148
  const unnameable = /* @__PURE__ */ new Set();
16110
16149
  for (const group of importerDepGroups(importer)) {
@@ -16113,13 +16152,14 @@ const resolveImporterEdges = (importer, importerPath, instanceIds, importerPaths
16113
16152
  if (name === "") continue;
16114
16153
  if (info.version.startsWith(LINK_PREFIX)) {
16115
16154
  const target = resolveLinkTarget(importerPath, info.version.slice(5));
16116
- const owner = target === void 0 ? void 0 : instanceIds.has(target) ? target : info.specifier.startsWith(WORKSPACE_PREFIX) ? owningImporter(target, importerPaths) : void 0;
16155
+ const owner = target === void 0 ? void 0 : instanceIds.has(target) ? target : publishDirTargets.get(target) ?? (info.specifier.startsWith(WORKSPACE_PREFIX) ? owningImporter(target, importerPaths) : void 0);
16117
16156
  if (owner !== void 0) edges.set(name, owner);
16118
16157
  else unnameable.add(name);
16119
16158
  continue;
16120
16159
  }
16121
16160
  const bare = `${name}@${info.version}`;
16122
16161
  if (instanceIds.has(bare)) edges.set(name, bare);
16162
+ else if (instanceIds.has(info.version)) edges.set(name, info.version);
16123
16163
  else unnameable.add(name);
16124
16164
  }
16125
16165
  }
@@ -16175,6 +16215,13 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16175
16215
  ...Object.keys(raw.importers)
16176
16216
  ]);
16177
16217
  const importerPaths = new Set(Object.keys(raw.importers).filter((path) => path !== "." && path !== ""));
16218
+ const publishDirTargets = /* @__PURE__ */ new Map();
16219
+ for (const [importerPath, importer] of Object.entries(raw.importers)) {
16220
+ if (importerPath === "") continue;
16221
+ if (importer.publishDirectory === void 0) continue;
16222
+ const key = resolveLinkTarget(importerPath, importer.publishDirectory);
16223
+ if (key !== void 0) publishDirTargets.set(key, importerPath);
16224
+ }
16178
16225
  const emitted = /* @__PURE__ */ new Set();
16179
16226
  for (const [importerPath, importer] of Object.entries(raw.importers)) {
16180
16227
  if (importerPath === "." || importerPath === "") continue;
@@ -16184,7 +16231,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16184
16231
  instanceId: importerPath,
16185
16232
  isWorkspace: true,
16186
16233
  relativePath: importerPath,
16187
- ...resolveImporterEdges(importer, importerPath, instanceIds, importerPaths)
16234
+ ...resolveImporterEdges(importer, importerPath, instanceIds, importerPaths, publishDirTargets)
16188
16235
  }));
16189
16236
  }
16190
16237
  const emit = (instanceId, meta, edges) => effect.Effect.gen(function* () {
@@ -16202,7 +16249,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16202
16249
  ...integrity !== void 0 ? { integrity } : {},
16203
16250
  isWorkspace: false,
16204
16251
  ...peerDeclarations(meta?.peerDependencies, meta?.peerDependenciesMeta),
16205
- ...resolveEdges(edges, instanceIds)
16252
+ ...resolveEdges(edges, instanceIds, publishDirTargets)
16206
16253
  }));
16207
16254
  });
16208
16255
  if (snapshots) for (const [key, snapshot] of Object.entries(snapshots)) {
@@ -16229,7 +16276,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16229
16276
  };
16230
16277
  });
16231
16278
  //#endregion
16232
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/internal/yarn.js
16279
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/internal/yarn.js
16233
16280
  const YarnLockfileRaw = effect.Schema.Record(effect.Schema.String, effect.Schema.Unknown);
16234
16281
  const DepRecord = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
16235
16282
  const YarnEntry = effect.Schema.Struct({
@@ -16405,7 +16452,7 @@ const cleanYarnDeps = (deps) => {
16405
16452
  return Object.fromEntries(Object.entries(deps).map(([name, value]) => [name, value.startsWith("npm:") ? value.slice(4) : value]));
16406
16453
  };
16407
16454
  //#endregion
16408
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/Lockfile.js
16455
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/Lockfile.js
16409
16456
  const EMPTY_IMPORTERS = [];
16410
16457
  /**
16411
16458
  * Failure of `Lockfile.parse`: the given content is not a valid lockfile of
@@ -16654,7 +16701,7 @@ var Lockfile = class Lockfile extends effect.Schema.Class("Lockfile")({
16654
16701
  }
16655
16702
  };
16656
16703
  //#endregion
16657
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/LockfileIntegrity.js
16704
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/LockfileIntegrity.js
16658
16705
  /**
16659
16706
  * The minimal manifest shape {@link LockfileIntegrity.compare} checks a
16660
16707
  * lockfile against: a package name plus the four optional dependency maps.
@@ -19467,7 +19514,7 @@ var Package = class Package extends effect.Schema.Class("Package")({
19467
19514
  }
19468
19515
  };
19469
19516
  //#endregion
19470
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspacePackage.js
19517
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspacePackage.js
19471
19518
  const EMPTY$1 = Object.freeze(Object.create(null));
19472
19519
  const EMPTY_MANIFEST = Object.freeze(Object.create(null));
19473
19520
  /**
@@ -20065,7 +20112,7 @@ var Walker$1 = class {
20065
20112
  static findRoot = findRoot$1;
20066
20113
  };
20067
20114
  //#endregion
20068
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceRoot.js
20115
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceRoot.js
20069
20116
  /**
20070
20117
  * The marker filenames {@link WorkspaceRoot} probes for, in priority order.
20071
20118
  *
@@ -20252,7 +20299,7 @@ var WorkspaceRoot = class WorkspaceRoot extends effect.Context.Service()("@effec
20252
20299
  static layerTest = (root) => effect.Layer.effect(WorkspaceRoot, WorkspaceRoot.makeTest(root)).pipe(effect.Layer.provide(effect.Path.layer));
20253
20300
  };
20254
20301
  //#endregion
20255
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/limits.js
20302
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/limits.js
20256
20303
  /**
20257
20304
  * Hard ceiling on directories the enumerator will visit for one pattern set.
20258
20305
  * Guards the pathological case a depth cap alone does not: a wide, shallow
@@ -20270,7 +20317,7 @@ const MAX_ENUMERATION_ENTRIES = 1e5;
20270
20317
  */
20271
20318
  const PRUNED_DIRECTORIES = /* @__PURE__ */ new Set([".git", "node_modules"]);
20272
20319
  //#endregion
20273
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/traverse.js
20320
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/traverse.js
20274
20321
  /** Directory names never descended into. */
20275
20322
  const isPruned = (entry) => PRUNED_DIRECTORIES.has(entry);
20276
20323
  /** Join root-relative POSIX segments; `""` is the root itself. */
@@ -20360,7 +20407,7 @@ var Traversal = class {
20360
20407
  }
20361
20408
  };
20362
20409
  //#endregion
20363
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/enumerate.js
20410
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/enumerate.js
20364
20411
  /** Strip a trailing slash from `GlobPattern.enumerationPrefix` to get a relative directory. */
20365
20412
  const baseOf = (pattern) => pattern.enumerationPrefix.replace(/\/$/, "");
20366
20413
  /**
@@ -20430,7 +20477,7 @@ const enumerate = (root, globs, options) => effect.Effect.gen(function* () {
20430
20477
  return results;
20431
20478
  });
20432
20479
  //#endregion
20433
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/patterns.js
20480
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/patterns.js
20434
20481
  const stringsOf = (value) => Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : void 0;
20435
20482
  /** The `packages:` list of a `pnpm-workspace.yaml` document. Total on a parsed document. */
20436
20483
  const pnpmPatternsOf = (document) => {
@@ -20487,7 +20534,7 @@ const readPatterns = (root) => effect.Effect.gen(function* () {
20487
20534
  return manifestPatternsOf(manifest);
20488
20535
  });
20489
20536
  //#endregion
20490
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceDiscovery.js
20537
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceDiscovery.js
20491
20538
  /**
20492
20539
  * Raised when a workspace member's `package.json` cannot be read, parsed, or
20493
20540
  * used — it is missing, malformed, or lacks a `name` or `version`.
@@ -20943,7 +20990,7 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends effect.Context.Service
20943
20990
  };
20944
20991
  const isStringRecord$2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((entry) => typeof entry === "string");
20945
20992
  //#endregion
20946
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/DependencyGraph.js
20993
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/DependencyGraph.js
20947
20994
  /**
20948
20995
  * Raised when the workspace dependency graph cannot be topologically ordered
20949
20996
  * because it contains a cycle.
@@ -24639,7 +24686,7 @@ var Git = class Git extends effect.Context.Service()("@effected/git/Git") {
24639
24686
  static layerTest = (overrides = {}) => effect.Layer.succeed(Git, Git.makeTest(overrides));
24640
24687
  };
24641
24688
  //#endregion
24642
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/ChangeDetector.js
24689
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/ChangeDetector.js
24643
24690
  /**
24644
24691
  * Which git refs to compare, and whether to fold in the working tree.
24645
24692
  *
@@ -24895,7 +24942,7 @@ function resolveFromCatalog(catalogs, wantedDependency) {
24895
24942
  };
24896
24943
  }
24897
24944
  //#endregion
24898
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/catalogs.js
24945
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/catalogs.js
24899
24946
  /** Project a pnpm-workspace manifest's `catalog` / `catalogs` fields into a `Catalogs` map. */
24900
24947
  const inlineCatalogs = (manifest) => {
24901
24948
  if (manifest.catalog === void 0 && manifest.catalogs === void 0) return {};
@@ -25424,7 +25471,7 @@ var ConfigDependencyHooks = class ConfigDependencyHooks extends effect.Context.S
25424
25471
  }));
25425
25472
  };
25426
25473
  //#endregion
25427
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/PackageManagerName.js
25474
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/PackageManagerName.js
25428
25475
  /**
25429
25476
  * The four package managers this package understands.
25430
25477
  *
@@ -25799,7 +25846,7 @@ var PackageManagerDetector = class PackageManagerDetector extends effect.Context
25799
25846
  static layerTest = (overrides = {}) => effect.Layer.succeed(PackageManagerDetector, PackageManagerDetector.makeTest(overrides));
25800
25847
  };
25801
25848
  //#endregion
25802
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/LockfileReader.js
25849
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/LockfileReader.js
25803
25850
  /**
25804
25851
  * Raised when the workspace's lockfile cannot be read off disk.
25805
25852
  *
@@ -25979,7 +26026,7 @@ var LockfileReader = class LockfileReader extends effect.Context.Service()("@eff
25979
26026
  static layerTest = (overrides = {}) => effect.Layer.succeed(LockfileReader, LockfileReader.makeTest(overrides));
25980
26027
  };
25981
26028
  //#endregion
25982
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/Publishability.js
26029
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/Publishability.js
25983
26030
  /** The public npm registry, used when `publishConfig.registry` says nothing. */
25984
26031
  const DEFAULT_REGISTRY = "https://registry.npmjs.org/";
25985
26032
  /**
@@ -26138,7 +26185,7 @@ var PublishabilityDetector = class extends effect.Context.Service()("@effected/w
26138
26185
  static layerNone = effect.Layer.succeed(this, this.none);
26139
26186
  };
26140
26187
  //#endregion
26141
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/importerVersions.js
26188
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/internal/importerVersions.js
26142
26189
  /**
26143
26190
  * Strip pnpm's peer-disambiguation suffix from a recorded importer version.
26144
26191
  *
@@ -26224,7 +26271,7 @@ const unanimousVersionOf = (index, dependency) => {
26224
26271
  return agreed;
26225
26272
  };
26226
26273
  //#endregion
26227
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceCatalogs.js
26274
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceCatalogs.js
26228
26275
  /**
26229
26276
  * An immutable, fully-normalized catalog collection — the one catalog
26230
26277
  * resolution semantic in the package.
@@ -26661,7 +26708,8 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26661
26708
  }),
26662
26709
  importerVersions: effect.Effect.fn("WorkspaceCatalogs.importerVersions")(function* () {
26663
26710
  return (yield* memo).importerVersions;
26664
- })
26711
+ }),
26712
+ refresh: () => invalidate
26665
26713
  };
26666
26714
  });
26667
26715
  /**
@@ -26726,6 +26774,11 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26726
26774
  * the importer index from the lockfile's importer blocks — neither is in a
26727
26775
  * `CatalogSet`) and always die unless stubbed.
26728
26776
  *
26777
+ * `refresh` defaults to `Effect.void` honestly: the double holds no memo,
26778
+ * so "drop the memoized assembly" is genuinely a no-op — the stubs answer
26779
+ * fresh on every call already. This mirrors `WorkspaceDiscovery.makeTest`'s
26780
+ * `refresh`.
26781
+ *
26729
26782
  * @example
26730
26783
  * ```ts
26731
26784
  * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
@@ -26745,6 +26798,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26745
26798
  peerDependencyRules: () => unstubbed$1("peerDependencyRules"),
26746
26799
  releaseAgeGate: () => unstubbed$1("releaseAgeGate"),
26747
26800
  importerVersions: () => unstubbed$1("importerVersions"),
26801
+ refresh: () => effect.Effect.void,
26748
26802
  ...overrides
26749
26803
  };
26750
26804
  };
@@ -26794,7 +26848,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26794
26848
  }));
26795
26849
  };
26796
26850
  //#endregion
26797
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
26851
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
26798
26852
  const EMPTY = Object.freeze(Object.create(null));
26799
26853
  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)));
26800
26854
  /**
@@ -27017,7 +27071,7 @@ var WorkspaceStateSnapshot = class extends effect.Schema.Class("WorkspaceStateSn
27017
27071
  }
27018
27072
  };
27019
27073
  //#endregion
27020
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceSnapshots.js
27074
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/WorkspaceSnapshots.js
27021
27075
  /** Whether `value` is a non-null, non-array object. */
27022
27076
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
27023
27077
  /** Whether every value in a record is a string — a usable dependency map. */
@@ -27294,7 +27348,7 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends effect.Context.Service
27294
27348
  static layerTest = (overrides = {}) => effect.Layer.succeed(WorkspaceSnapshots, WorkspaceSnapshots.makeTest(overrides));
27295
27349
  };
27296
27350
  //#endregion
27297
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/Workspaces.js
27351
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/Workspaces.js
27298
27352
  const compose = (options, catalogsFactory) => {
27299
27353
  const roots = WorkspaceRoot.layer;
27300
27354
  const detector = PackageManagerDetector.layer;
@@ -5236,7 +5236,7 @@ declare class UnsatisfiableConstraintError extends UnsatisfiableConstraintError_
5236
5236
  get message(): string;
5237
5237
  }
5238
5238
  //#endregion
5239
- //#region ../../node_modules/.pnpm/@effected+npm@0.11.0_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/index.d.ts
5239
+ //#region ../../node_modules/.pnpm/@effected+npm@0.11.1_@effected+semver@0.5.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/npm/index.d.ts
5240
5240
  //#region src/CatalogAssemblyError.d.ts
5241
5241
  declare const CatalogAssemblyError_base: Schema.Class<CatalogAssemblyError, Schema.TaggedStruct<"CatalogAssemblyError", {
5242
5242
  /**
@@ -5829,7 +5829,7 @@ declare class GlobPattern extends GlobPattern_base {
5829
5829
  static readonly FromString: Schema.Codec<GlobPattern, string>;
5830
5830
  }
5831
5831
  //#endregion
5832
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_b5e24f85b508eca09bd100b8bd2084bb/node_modules/@effected/lockfiles/index.d.ts
5832
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.6.2_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__@effected+npm@0.11_ef94318d813876db7fdc8ffae2f92869/node_modules/@effected/lockfiles/index.d.ts
5833
5833
  //#region src/BunExtension.d.ts
5834
5834
  declare const BunExtension_base: Schema.Class<BunExtension, Schema.Struct<{
5835
5835
  readonly _tag: Schema.tag<"bun">;
@@ -6903,7 +6903,7 @@ declare class Package extends Package_base {
6903
6903
  toJsonString(options?: PackageFormatOptions): string;
6904
6904
  }
6905
6905
  //#endregion
6906
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.15.1_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/index.d.ts
6906
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.17.0_@effected+jsonc@0.7.0_effect@4.0.0-rc.109__effect@4.0.0-rc.109/node_modules/@effected/workspaces/index.d.ts
6907
6907
  //#region src/WorkspacePackage.d.ts
6908
6908
  declare const PublishConfig_base: Schema.Class<PublishConfig, Schema.Struct<{
6909
6909
  /** Scoped-package visibility. Its presence overrides `private`. */
@@ -8487,6 +8487,26 @@ interface WorkspaceCatalogsShape {
8487
8487
  * nothing rather than failing.
8488
8488
  */
8489
8489
  readonly importerVersions: () => Effect.Effect<ImporterVersions, CatalogAssemblyFailure>;
8490
+ /**
8491
+ * Discard the memoized assembly so the **next** read re-assembles — the same
8492
+ * single read and hook replay as the first, over the workspace as it stands
8493
+ * then.
8494
+ *
8495
+ * @remarks
8496
+ * The explicit memoization boundary for a tool that **mutates the workspace
8497
+ * mid-run** — installs, bumps a config dependency, regenerates the lockfile.
8498
+ * Release-age gating wants the before-state, a post-install peer check the
8499
+ * after-state, and one infinite memo cannot serve both without this call in
8500
+ * between; without it, `peerDependencyRules` keeps answering from the
8501
+ * pre-mutation hook replay and the checker reports findings the new rules
8502
+ * suppress.
8503
+ *
8504
+ * Unconditional and infallible: the memo is already success-only (a failed
8505
+ * or interrupted assembly retries by itself), so `refresh` exists solely to
8506
+ * discard a *successful* assembly that mutation has made stale. Calling it
8507
+ * before any read is harmless.
8508
+ */
8509
+ readonly refresh: () => Effect.Effect<void>;
8490
8510
  }
8491
8511
  /**
8492
8512
  * Options for the {@link WorkspaceCatalogs} layer.
@@ -8592,6 +8612,11 @@ declare class WorkspaceCatalogs extends WorkspaceCatalogs_base {
8592
8612
  * the importer index from the lockfile's importer blocks — neither is in a
8593
8613
  * `CatalogSet`) and always die unless stubbed.
8594
8614
  *
8615
+ * `refresh` defaults to `Effect.void` honestly: the double holds no memo,
8616
+ * so "drop the memoized assembly" is genuinely a no-op — the stubs answer
8617
+ * fresh on every call already. This mirrors `WorkspaceDiscovery.makeTest`'s
8618
+ * `refresh`.
8619
+ *
8595
8620
  * @example
8596
8621
  * ```ts
8597
8622
  * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";