@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.
@@ -2339,7 +2339,7 @@ var GlobSet = class GlobSet extends effect.Schema.Class("GlobSet")(effect.Schema
2339
2339
  }
2340
2340
  };
2341
2341
  //#endregion
2342
- //#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
2342
+ //#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
2343
2343
  /**
2344
2344
  * Extension data specific to bun lockfiles, attached to `Lockfile.extension`
2345
2345
  * when the format is `"bun"`.
@@ -2360,7 +2360,7 @@ var BunExtension = class extends effect.Schema.Class("BunExtension")({
2360
2360
  trustedDependencies: effect.Schema.optionalKey(effect.Schema.Array(effect.Schema.String))
2361
2361
  }) {};
2362
2362
  //#endregion
2363
- //#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
2363
+ //#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
2364
2364
  /**
2365
2365
  * Contract for resolving pnpm `catalog:` dependency specifiers to concrete
2366
2366
  * version ranges.
@@ -2406,7 +2406,7 @@ var CatalogResolver = class CatalogResolver extends effect.Context.Service()("@e
2406
2406
  static noop = effect.Layer.succeed(CatalogResolver, { rangeOf: () => effect.Effect.succeed(effect.Option.none()) });
2407
2407
  };
2408
2408
  //#endregion
2409
- //#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
2409
+ //#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
2410
2410
  /**
2411
2411
  * Raised when a `catalog:` or `workspace:` specifier cannot be resolved
2412
2412
  * because the resolution mechanism itself failed — not for an ordinary
@@ -2467,7 +2467,7 @@ var WorkspaceResolver = class WorkspaceResolver extends effect.Context.Service()
2467
2467
  static noop = effect.Layer.succeed(WorkspaceResolver, { versionOf: () => effect.Effect.succeed(effect.Option.none()) });
2468
2468
  };
2469
2469
  //#endregion
2470
- //#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
2470
+ //#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
2471
2471
  /**
2472
2472
  * Raised when a workspace's catalogs cannot be assembled — a `pnpm-workspace.yaml`
2473
2473
  * that is unreadable or not valid YAML, a root `package.json` `workspaces` field
@@ -2511,7 +2511,7 @@ var CatalogAssemblyError = class extends effect.Schema.TaggedError()("CatalogAss
2511
2511
  }
2512
2512
  };
2513
2513
  //#endregion
2514
- //#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
2514
+ //#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
2515
2515
  /**
2516
2516
  * The short dependency kind: which dependency map an entry came from, named the
2517
2517
  * way consumers branch on it.
@@ -4126,7 +4126,7 @@ const isComparatorSetSubset = (sub, sup) => {
4126
4126
  return true;
4127
4127
  };
4128
4128
  //#endregion
4129
- //#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
4129
+ //#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
4130
4130
  /**
4131
4131
  * Indicates that a string could not be parsed as a valid dependency specifier.
4132
4132
  *
@@ -4333,7 +4333,7 @@ const DependencySpecifier = Object.assign(brandedSpecifier, {
4333
4333
  FromString: fromString
4334
4334
  });
4335
4335
  //#endregion
4336
- //#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
4336
+ //#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
4337
4337
  const SRI_RE = /^(sha1|sha256|sha384|sha512)-[A-Za-z0-9+/]+={0,2}$/;
4338
4338
  const COREPACK_RE = /^(sha1|sha224|sha256|sha384|sha512)\.[0-9a-f]+$/;
4339
4339
  const YARN_RE = /^[0-9]+(c[0-9]+)?\/[0-9a-f]+$/;
@@ -4387,6 +4387,13 @@ const IntegrityHash = Object.assign(brandedIntegrity, {
4387
4387
  });
4388
4388
  const corepackRestricted = brandedIntegrity.pipe(effect.Schema.check(effect.Schema.makeFilter((value) => isCorepack(value) ? void 0 : "Expected a corepack (<algo>.<hex>) integrity hash")));
4389
4389
  const BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4390
+ const BASE64_INVALID = 255;
4391
+ const BASE64_INDEX = (() => {
4392
+ const table = new Uint8Array("z".charCodeAt(0) + 1);
4393
+ table.fill(BASE64_INVALID);
4394
+ for (let index = 0; index < 64; index += 1) table[BASE64_ALPHABET.charCodeAt(index)] = index;
4395
+ return table;
4396
+ })();
4390
4397
  const decodeBase64 = (value) => {
4391
4398
  const firstPad = value.indexOf("=");
4392
4399
  const body = firstPad === -1 ? value : value.slice(0, firstPad);
@@ -4398,9 +4405,11 @@ const decodeBase64 = (value) => {
4398
4405
  let buffer = 0;
4399
4406
  let bits = 0;
4400
4407
  const bytes = [];
4401
- for (const char of body) {
4402
- const sextet = BASE64_ALPHABET.indexOf(char);
4403
- if (sextet < 0) return void 0;
4408
+ for (let index = 0; index < body.length; index += 1) {
4409
+ const code = body.charCodeAt(index);
4410
+ if (code >= BASE64_INDEX.length) return void 0;
4411
+ const sextet = BASE64_INDEX[code];
4412
+ if (sextet === BASE64_INVALID) return void 0;
4404
4413
  buffer = buffer << 6 | sextet;
4405
4414
  bits += 6;
4406
4415
  if (bits >= 8) {
@@ -5403,7 +5412,7 @@ var Run = class {
5403
5412
  static REDACTED = "***";
5404
5413
  };
5405
5414
  //#endregion
5406
- //#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
5415
+ //#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
5407
5416
  const MS_PER_MINUTE = 6e4;
5408
5417
  /**
5409
5418
  * A source's partial contribution to a {@link ReleaseAgeGate}: the effective
@@ -5573,7 +5582,7 @@ var ReleaseAgeGate = class ReleaseAgeGate extends effect.Schema.Class("ReleaseAg
5573
5582
  }
5574
5583
  };
5575
5584
  //#endregion
5576
- //#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
5585
+ //#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
5577
5586
  /**
5578
5587
  * One declared dependency of one workspace importer, as the lockfile records it.
5579
5588
  *
@@ -5611,7 +5620,7 @@ var ImporterDependency = class extends effect.Schema.Class("ImporterDependency")
5611
5620
  depType: DependencyField
5612
5621
  }) {};
5613
5622
  //#endregion
5614
- //#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
5623
+ //#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
5615
5624
  /**
5616
5625
  * One workspace importer's declared dependencies, as the lockfile records them.
5617
5626
  *
@@ -5635,7 +5644,7 @@ var LockfileImporter = class extends effect.Schema.Class("LockfileImporter")({
5635
5644
  dependencies: effect.Schema.Array(ImporterDependency)
5636
5645
  }) {};
5637
5646
  //#endregion
5638
- //#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
5647
+ //#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
5639
5648
  const EMPTY_DEPENDENCIES = {};
5640
5649
  const EMPTY_PEER_META = {};
5641
5650
  const EMPTY_EDGE_NAMES = [];
@@ -5725,7 +5734,7 @@ var ResolvedPackage = class extends effect.Schema.Class("ResolvedPackage")({
5725
5734
  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)))
5726
5735
  }) {};
5727
5736
  //#endregion
5728
- //#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
5737
+ //#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
5729
5738
  /**
5730
5739
  * A directed dependency edge between two workspace packages as recorded in
5731
5740
  * the lockfile.
@@ -5747,7 +5756,7 @@ var WorkspaceDependency = class extends effect.Schema.Class("WorkspaceDependency
5747
5756
  constraint: effect.Schema.String
5748
5757
  }) {};
5749
5758
  //#endregion
5750
- //#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
5759
+ //#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
5751
5760
  /**
5752
5761
  * Extension data specific to pnpm lockfiles, attached to `Lockfile.extension`
5753
5762
  * when the format is `"pnpm"`.
@@ -5772,7 +5781,7 @@ var PnpmExtension = class extends effect.Schema.Class("PnpmExtension")({
5772
5781
  }))
5773
5782
  }) {};
5774
5783
  //#endregion
5775
- //#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
5784
+ //#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
5776
5785
  /**
5777
5786
  * The lockfile formats this package parses: bun's `bun.lock` (JSONC), npm's
5778
5787
  * `package-lock.json` (JSON), pnpm's `pnpm-lock.yaml` and yarn Berry's
@@ -5814,7 +5823,7 @@ const FILENAMES = {
5814
5823
  */
5815
5824
  const filenameFor = (format) => FILENAMES[format][0];
5816
5825
  //#endregion
5817
- //#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
5826
+ //#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
5818
5827
  /**
5819
5828
  * The four dependency sections of a manifest, in a stable order — the shared
5820
5829
  * dependency-sections table (v3's `DEP_SECTIONS`). Each entry is both the
@@ -7816,7 +7825,7 @@ var JsoncModifier = class {
7816
7825
  });
7817
7826
  };
7818
7827
  //#endregion
7819
- //#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
7828
+ //#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
7820
7829
  const DepRecord$2 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
7821
7830
  const OptionalPeers = effect.Schema.optionalKey(effect.Schema.Array(effect.Schema.String));
7822
7831
  const BunWorkspaceEntry = effect.Schema.Struct({
@@ -7993,7 +8002,7 @@ const toFields$3 = (raw) => effect.Effect.gen(function* () {
7993
8002
  };
7994
8003
  });
7995
8004
  //#endregion
7996
- //#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
8005
+ //#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
7997
8006
  const DepRecord$1 = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
7998
8007
  const PeerMetaRecord = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.Struct({ optional: effect.Schema.optionalKey(effect.Schema.Boolean) })));
7999
8008
  const NpmPackageEntry = effect.Schema.Struct({
@@ -15861,7 +15870,7 @@ function deepEqualValues(a, b) {
15861
15870
  return false;
15862
15871
  }
15863
15872
  //#endregion
15864
- //#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
15873
+ //#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
15865
15874
  /**
15866
15875
  * An empty YAML document composes to `null` (`Yaml.parseAll("")` is `[null]`,
15867
15876
  * and the trailing document of an env-only `pnpm-lock.yaml` is `null` too).
@@ -15931,7 +15940,7 @@ const selectSoleDocument = (content) => effect.Effect.gen(function* () {
15931
15940
  };
15932
15941
  });
15933
15942
  //#endregion
15934
- //#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
15943
+ //#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
15935
15944
  const PnpmImporterDeps = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.Struct({
15936
15945
  specifier: effect.Schema.String,
15937
15946
  version: effect.Schema.String
@@ -15940,7 +15949,8 @@ const PnpmImporter = effect.Schema.Struct({
15940
15949
  dependencies: PnpmImporterDeps,
15941
15950
  devDependencies: PnpmImporterDeps,
15942
15951
  peerDependencies: PnpmImporterDeps,
15943
- optionalDependencies: PnpmImporterDeps
15952
+ optionalDependencies: PnpmImporterDeps,
15953
+ publishDirectory: effect.Schema.optionalKey(effect.Schema.String)
15944
15954
  });
15945
15955
  /**
15946
15956
  * The version gate's own input: `lockfileVersion` and nothing else.
@@ -16015,9 +16025,23 @@ const parsePnpm = (content) => effect.Effect.gen(function* () {
16015
16025
  * resolution, which names no instance in this lockfile, from becoming a
16016
16026
  * plausible lie.
16017
16027
  *
16028
+ * A failed composition gets one second reading: the recorded version ITSELF as
16029
+ * an instance id. That is how pnpm spells an `npm:` alias — the dependency
16030
+ * `typescript-classic: npm:typescript@^6.0.3` is recorded as
16031
+ * `typescript-classic: typescript@6.0.3`, the referenced instance's own key,
16032
+ * peer suffix included when one applies. Still compose-then-verify, not a
16033
+ * guess: a plain version (`6.0.3`) can never be an instance id, because ids
16034
+ * always carry a name, so the reading admits exactly the alias shape.
16035
+ *
16036
+ * Unlike {@link resolveImporterEdges}, there is no `workspace:`-specifier
16037
+ * ancestor walk here — a snapshot body records no specifier, so that evidence
16038
+ * does not exist on this path. The publish-directory map needs no specifier:
16039
+ * the importer entry's own `publishDirectory` declaration is exact evidence,
16040
+ * available to both paths, and is consulted unconditionally.
16041
+ *
16018
16042
  * @internal
16019
16043
  */
16020
- const resolveEdges = (sections, instanceIds) => {
16044
+ const resolveEdges = (sections, instanceIds, publishDirTargets) => {
16021
16045
  const edges = /* @__PURE__ */ new Map();
16022
16046
  const unnameable = /* @__PURE__ */ new Set();
16023
16047
  for (const section of sections) {
@@ -16027,11 +16051,13 @@ const resolveEdges = (sections, instanceIds) => {
16027
16051
  if (version.startsWith(LINK_PREFIX)) {
16028
16052
  const target = resolveLinkTarget("", version.slice(LINK_PREFIX.length));
16029
16053
  if (target !== void 0 && instanceIds.has(target)) edges.set(name, target);
16054
+ else if (target !== void 0 && publishDirTargets.has(target)) edges.set(name, publishDirTargets.get(target));
16030
16055
  else unnameable.add(name);
16031
16056
  continue;
16032
16057
  }
16033
16058
  const bare = `${name}@${version}`;
16034
16059
  if (instanceIds.has(bare)) edges.set(name, bare);
16060
+ else if (instanceIds.has(version)) edges.set(name, version);
16035
16061
  else unnameable.add(name);
16036
16062
  }
16037
16063
  }
@@ -16047,6 +16073,13 @@ const LINK_PREFIX = "link:";
16047
16073
  * workspace edge can name the workspace importer's instance id.
16048
16074
  * Total: a target that walks above the root yields `undefined`.
16049
16075
  *
16076
+ * A target that normalizes to NOTHING — `link:.` recorded root-relative —
16077
+ * also yields `undefined` rather than the root importer's ".": the root
16078
+ * importer deliberately emits no `ResolvedPackage` row (its path cannot serve
16079
+ * as a package name), so mapping the empty target to "." would hand back an id
16080
+ * no row carries, and no pnpm output recording that shape has been observed.
16081
+ * The edge stays honestly unnameable instead.
16082
+ *
16050
16083
  * @internal
16051
16084
  */
16052
16085
  const resolveLinkTarget = (importerPath, target) => {
@@ -16093,22 +16126,28 @@ const owningImporter = (target, importerPaths) => {
16093
16126
  * naming another importer — normalized against this importer's own path. Both
16094
16127
  * are checked against the lockfile's instance ids before being emitted.
16095
16128
  *
16096
- * A `link:` target that is no importer gets one further chance, and only under
16097
- * a `workspace:` SPECIFIER: pnpm resolved that edge through the workspace, so
16098
- * the target directory is known to belong to a workspace package, and
16099
- * {@link owningImporter} names it. The specifier is what makes this a
16100
- * resolution rather than a guess a hand-written `link:../vendor/stub`
16101
- * specifier names a directory pnpm never claimed was a workspace package, and
16102
- * attributing it to whichever importer happens to contain it would answer with
16103
- * the wrong package's peers instead of admitting it could not name the edge.
16104
- *
16105
- * The snapshot path ({@link resolveEdges}) deliberately does NOT do this: a
16106
- * snapshot body records `name: link:<path>` with no specifier beside it, so the
16107
- * evidence this rule turns on is not available there.
16129
+ * A `link:` target that is no importer gets two further chances. First the
16130
+ * publish-directory map: an importer that DECLARES `publishDirectory` has told
16131
+ * the lockfile exactly which build directory its links point at, so a target
16132
+ * matching a declared publish directory names that importer on evidence, no
16133
+ * specifier required {@link resolveEdges} consults the same map for the same
16134
+ * reason. Then, and only under a `workspace:` SPECIFIER, the ancestor walk:
16135
+ * pnpm resolved that edge through the workspace, so the target directory is
16136
+ * known to belong to a workspace package, and {@link owningImporter} names it.
16137
+ * The specifier is what makes the walk a resolution rather than a guess — a
16138
+ * hand-written `link:../vendor/stub` specifier names a directory pnpm never
16139
+ * claimed was a workspace package, and attributing it to whichever importer
16140
+ * happens to contain it would answer with the wrong package's peers instead of
16141
+ * admitting it could not name the edge. The snapshot path has no specifier and
16142
+ * therefore no walk; the publish-directory map is the evidence it does get.
16143
+ *
16144
+ * A failed `name@version` composition gets the same alias reading as
16145
+ * {@link resolveEdges}: the recorded version itself as an instance id, which is
16146
+ * how pnpm spells `npm:` aliases.
16108
16147
  *
16109
16148
  * @internal
16110
16149
  */
16111
- const resolveImporterEdges = (importer, importerPath, instanceIds, importerPaths) => {
16150
+ const resolveImporterEdges = (importer, importerPath, instanceIds, importerPaths, publishDirTargets) => {
16112
16151
  const edges = /* @__PURE__ */ new Map();
16113
16152
  const unnameable = /* @__PURE__ */ new Set();
16114
16153
  for (const group of importerDepGroups(importer)) {
@@ -16117,13 +16156,14 @@ const resolveImporterEdges = (importer, importerPath, instanceIds, importerPaths
16117
16156
  if (name === "") continue;
16118
16157
  if (info.version.startsWith(LINK_PREFIX)) {
16119
16158
  const target = resolveLinkTarget(importerPath, info.version.slice(5));
16120
- const owner = target === void 0 ? void 0 : instanceIds.has(target) ? target : info.specifier.startsWith(WORKSPACE_PREFIX) ? owningImporter(target, importerPaths) : void 0;
16159
+ const owner = target === void 0 ? void 0 : instanceIds.has(target) ? target : publishDirTargets.get(target) ?? (info.specifier.startsWith(WORKSPACE_PREFIX) ? owningImporter(target, importerPaths) : void 0);
16121
16160
  if (owner !== void 0) edges.set(name, owner);
16122
16161
  else unnameable.add(name);
16123
16162
  continue;
16124
16163
  }
16125
16164
  const bare = `${name}@${info.version}`;
16126
16165
  if (instanceIds.has(bare)) edges.set(name, bare);
16166
+ else if (instanceIds.has(info.version)) edges.set(name, info.version);
16127
16167
  else unnameable.add(name);
16128
16168
  }
16129
16169
  }
@@ -16179,6 +16219,13 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16179
16219
  ...Object.keys(raw.importers)
16180
16220
  ]);
16181
16221
  const importerPaths = new Set(Object.keys(raw.importers).filter((path) => path !== "." && path !== ""));
16222
+ const publishDirTargets = /* @__PURE__ */ new Map();
16223
+ for (const [importerPath, importer] of Object.entries(raw.importers)) {
16224
+ if (importerPath === "") continue;
16225
+ if (importer.publishDirectory === void 0) continue;
16226
+ const key = resolveLinkTarget(importerPath, importer.publishDirectory);
16227
+ if (key !== void 0) publishDirTargets.set(key, importerPath);
16228
+ }
16182
16229
  const emitted = /* @__PURE__ */ new Set();
16183
16230
  for (const [importerPath, importer] of Object.entries(raw.importers)) {
16184
16231
  if (importerPath === "." || importerPath === "") continue;
@@ -16188,7 +16235,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16188
16235
  instanceId: importerPath,
16189
16236
  isWorkspace: true,
16190
16237
  relativePath: importerPath,
16191
- ...resolveImporterEdges(importer, importerPath, instanceIds, importerPaths)
16238
+ ...resolveImporterEdges(importer, importerPath, instanceIds, importerPaths, publishDirTargets)
16192
16239
  }));
16193
16240
  }
16194
16241
  const emit = (instanceId, meta, edges) => effect.Effect.gen(function* () {
@@ -16206,7 +16253,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16206
16253
  ...integrity !== void 0 ? { integrity } : {},
16207
16254
  isWorkspace: false,
16208
16255
  ...peerDeclarations(meta?.peerDependencies, meta?.peerDependenciesMeta),
16209
- ...resolveEdges(edges, instanceIds)
16256
+ ...resolveEdges(edges, instanceIds, publishDirTargets)
16210
16257
  }));
16211
16258
  });
16212
16259
  if (snapshots) for (const [key, snapshot] of Object.entries(snapshots)) {
@@ -16233,7 +16280,7 @@ const toFields$1 = (raw) => effect.Effect.gen(function* () {
16233
16280
  };
16234
16281
  });
16235
16282
  //#endregion
16236
- //#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
16283
+ //#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
16237
16284
  const YarnLockfileRaw = effect.Schema.Record(effect.Schema.String, effect.Schema.Unknown);
16238
16285
  const DepRecord = effect.Schema.optionalKey(effect.Schema.Record(effect.Schema.String, effect.Schema.String));
16239
16286
  const YarnEntry = effect.Schema.Struct({
@@ -16409,7 +16456,7 @@ const cleanYarnDeps = (deps) => {
16409
16456
  return Object.fromEntries(Object.entries(deps).map(([name, value]) => [name, value.startsWith("npm:") ? value.slice(4) : value]));
16410
16457
  };
16411
16458
  //#endregion
16412
- //#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
16459
+ //#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
16413
16460
  const EMPTY_IMPORTERS = [];
16414
16461
  /**
16415
16462
  * Failure of `Lockfile.parse`: the given content is not a valid lockfile of
@@ -16658,7 +16705,7 @@ var Lockfile = class Lockfile extends effect.Schema.Class("Lockfile")({
16658
16705
  }
16659
16706
  };
16660
16707
  //#endregion
16661
- //#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
16708
+ //#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
16662
16709
  /**
16663
16710
  * The minimal manifest shape {@link LockfileIntegrity.compare} checks a
16664
16711
  * lockfile against: a package name plus the four optional dependency maps.
@@ -19471,7 +19518,7 @@ var Package = class Package extends effect.Schema.Class("Package")({
19471
19518
  }
19472
19519
  };
19473
19520
  //#endregion
19474
- //#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
19521
+ //#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
19475
19522
  const EMPTY$1 = Object.freeze(Object.create(null));
19476
19523
  const EMPTY_MANIFEST = Object.freeze(Object.create(null));
19477
19524
  /**
@@ -20069,7 +20116,7 @@ var Walker$1 = class {
20069
20116
  static findRoot = findRoot$1;
20070
20117
  };
20071
20118
  //#endregion
20072
- //#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
20119
+ //#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
20073
20120
  /**
20074
20121
  * The marker filenames {@link WorkspaceRoot} probes for, in priority order.
20075
20122
  *
@@ -20256,7 +20303,7 @@ var WorkspaceRoot = class WorkspaceRoot extends effect.Context.Service()("@effec
20256
20303
  static layerTest = (root) => effect.Layer.effect(WorkspaceRoot, WorkspaceRoot.makeTest(root)).pipe(effect.Layer.provide(effect.Path.layer));
20257
20304
  };
20258
20305
  //#endregion
20259
- //#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
20306
+ //#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
20260
20307
  /**
20261
20308
  * Hard ceiling on directories the enumerator will visit for one pattern set.
20262
20309
  * Guards the pathological case a depth cap alone does not: a wide, shallow
@@ -20274,7 +20321,7 @@ const MAX_ENUMERATION_ENTRIES = 1e5;
20274
20321
  */
20275
20322
  const PRUNED_DIRECTORIES = /* @__PURE__ */ new Set([".git", "node_modules"]);
20276
20323
  //#endregion
20277
- //#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
20324
+ //#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
20278
20325
  /** Directory names never descended into. */
20279
20326
  const isPruned = (entry) => PRUNED_DIRECTORIES.has(entry);
20280
20327
  /** Join root-relative POSIX segments; `""` is the root itself. */
@@ -20364,7 +20411,7 @@ var Traversal = class {
20364
20411
  }
20365
20412
  };
20366
20413
  //#endregion
20367
- //#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
20414
+ //#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
20368
20415
  /** Strip a trailing slash from `GlobPattern.enumerationPrefix` to get a relative directory. */
20369
20416
  const baseOf = (pattern) => pattern.enumerationPrefix.replace(/\/$/, "");
20370
20417
  /**
@@ -20434,7 +20481,7 @@ const enumerate = (root, globs, options) => effect.Effect.gen(function* () {
20434
20481
  return results;
20435
20482
  });
20436
20483
  //#endregion
20437
- //#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
20484
+ //#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
20438
20485
  const stringsOf = (value) => Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : void 0;
20439
20486
  /** The `packages:` list of a `pnpm-workspace.yaml` document. Total on a parsed document. */
20440
20487
  const pnpmPatternsOf = (document) => {
@@ -20491,7 +20538,7 @@ const readPatterns = (root) => effect.Effect.gen(function* () {
20491
20538
  return manifestPatternsOf(manifest);
20492
20539
  });
20493
20540
  //#endregion
20494
- //#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
20541
+ //#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
20495
20542
  /**
20496
20543
  * Raised when a workspace member's `package.json` cannot be read, parsed, or
20497
20544
  * used — it is missing, malformed, or lacks a `name` or `version`.
@@ -20947,7 +20994,7 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends effect.Context.Service
20947
20994
  };
20948
20995
  const isStringRecord$2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((entry) => typeof entry === "string");
20949
20996
  //#endregion
20950
- //#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
20997
+ //#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
20951
20998
  /**
20952
20999
  * Raised when the workspace dependency graph cannot be topologically ordered
20953
21000
  * because it contains a cycle.
@@ -24643,7 +24690,7 @@ var Git = class Git extends effect.Context.Service()("@effected/git/Git") {
24643
24690
  static layerTest = (overrides = {}) => effect.Layer.succeed(Git, Git.makeTest(overrides));
24644
24691
  };
24645
24692
  //#endregion
24646
- //#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
24693
+ //#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
24647
24694
  /**
24648
24695
  * Which git refs to compare, and whether to fold in the working tree.
24649
24696
  *
@@ -24899,7 +24946,7 @@ function resolveFromCatalog(catalogs, wantedDependency) {
24899
24946
  };
24900
24947
  }
24901
24948
  //#endregion
24902
- //#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
24949
+ //#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
24903
24950
  /** Project a pnpm-workspace manifest's `catalog` / `catalogs` fields into a `Catalogs` map. */
24904
24951
  const inlineCatalogs = (manifest) => {
24905
24952
  if (manifest.catalog === void 0 && manifest.catalogs === void 0) return {};
@@ -25428,7 +25475,7 @@ var ConfigDependencyHooks = class ConfigDependencyHooks extends effect.Context.S
25428
25475
  }));
25429
25476
  };
25430
25477
  //#endregion
25431
- //#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
25478
+ //#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
25432
25479
  /**
25433
25480
  * The four package managers this package understands.
25434
25481
  *
@@ -25803,7 +25850,7 @@ var PackageManagerDetector = class PackageManagerDetector extends effect.Context
25803
25850
  static layerTest = (overrides = {}) => effect.Layer.succeed(PackageManagerDetector, PackageManagerDetector.makeTest(overrides));
25804
25851
  };
25805
25852
  //#endregion
25806
- //#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
25853
+ //#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
25807
25854
  /**
25808
25855
  * Raised when the workspace's lockfile cannot be read off disk.
25809
25856
  *
@@ -25983,7 +26030,7 @@ var LockfileReader = class LockfileReader extends effect.Context.Service()("@eff
25983
26030
  static layerTest = (overrides = {}) => effect.Layer.succeed(LockfileReader, LockfileReader.makeTest(overrides));
25984
26031
  };
25985
26032
  //#endregion
25986
- //#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
26033
+ //#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
25987
26034
  /** The public npm registry, used when `publishConfig.registry` says nothing. */
25988
26035
  const DEFAULT_REGISTRY = "https://registry.npmjs.org/";
25989
26036
  /**
@@ -26142,7 +26189,7 @@ var PublishabilityDetector = class extends effect.Context.Service()("@effected/w
26142
26189
  static layerNone = effect.Layer.succeed(this, this.none);
26143
26190
  };
26144
26191
  //#endregion
26145
- //#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
26192
+ //#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
26146
26193
  /**
26147
26194
  * Strip pnpm's peer-disambiguation suffix from a recorded importer version.
26148
26195
  *
@@ -26228,7 +26275,7 @@ const unanimousVersionOf = (index, dependency) => {
26228
26275
  return agreed;
26229
26276
  };
26230
26277
  //#endregion
26231
- //#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
26278
+ //#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
26232
26279
  /**
26233
26280
  * An immutable, fully-normalized catalog collection — the one catalog
26234
26281
  * resolution semantic in the package.
@@ -26665,7 +26712,8 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26665
26712
  }),
26666
26713
  importerVersions: effect.Effect.fn("WorkspaceCatalogs.importerVersions")(function* () {
26667
26714
  return (yield* memo).importerVersions;
26668
- })
26715
+ }),
26716
+ refresh: () => invalidate
26669
26717
  };
26670
26718
  });
26671
26719
  /**
@@ -26730,6 +26778,11 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26730
26778
  * the importer index from the lockfile's importer blocks — neither is in a
26731
26779
  * `CatalogSet`) and always die unless stubbed.
26732
26780
  *
26781
+ * `refresh` defaults to `Effect.void` honestly: the double holds no memo,
26782
+ * so "drop the memoized assembly" is genuinely a no-op — the stubs answer
26783
+ * fresh on every call already. This mirrors `WorkspaceDiscovery.makeTest`'s
26784
+ * `refresh`.
26785
+ *
26733
26786
  * @example
26734
26787
  * ```ts
26735
26788
  * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
@@ -26749,6 +26802,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26749
26802
  peerDependencyRules: () => unstubbed$1("peerDependencyRules"),
26750
26803
  releaseAgeGate: () => unstubbed$1("releaseAgeGate"),
26751
26804
  importerVersions: () => unstubbed$1("importerVersions"),
26805
+ refresh: () => effect.Effect.void,
26752
26806
  ...overrides
26753
26807
  };
26754
26808
  };
@@ -26798,7 +26852,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends effect.Context.Service()
26798
26852
  }));
26799
26853
  };
26800
26854
  //#endregion
26801
- //#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
26855
+ //#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
26802
26856
  const EMPTY = Object.freeze(Object.create(null));
26803
26857
  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)));
26804
26858
  /**
@@ -27021,7 +27075,7 @@ var WorkspaceStateSnapshot = class extends effect.Schema.Class("WorkspaceStateSn
27021
27075
  }
27022
27076
  };
27023
27077
  //#endregion
27024
- //#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
27078
+ //#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
27025
27079
  /** Whether `value` is a non-null, non-array object. */
27026
27080
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
27027
27081
  /** Whether every value in a record is a string — a usable dependency map. */
@@ -27298,7 +27352,7 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends effect.Context.Service
27298
27352
  static layerTest = (overrides = {}) => effect.Layer.succeed(WorkspaceSnapshots, WorkspaceSnapshots.makeTest(overrides));
27299
27353
  };
27300
27354
  //#endregion
27301
- //#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
27355
+ //#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
27302
27356
  const compose = (options, catalogsFactory) => {
27303
27357
  const roots = WorkspaceRoot.layer;
27304
27358
  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";