@savvy-web/silk 3.2.2 → 3.2.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.
@@ -1,5 +1,7 @@
1
1
  import { Brand, Context, Effect, Equal, FileSystem, Hash, HashMap, Layer, Option, Order, Path, Result, Schema } from "effect";
2
2
  import { ChildProcessSpawner } from "effect/unstable/process";
3
+ import "effect/unstable/http";
4
+ import "@effected/templates";
3
5
  //#region ../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts
4
6
  // ## Interfaces
5
7
  /**
@@ -2394,7 +2396,7 @@ declare class Processor<ParseTree extends Node$3 | undefined = undefined, HeadTr
2394
2396
  * The current processor when setting, the value at `key` when getting, or
2395
2397
  * the entire dataset when getting without key.
2396
2398
  */
2397
- data<Key extends keyof Data>(): Data$3;
2399
+ data<Key extends keyof Data$2>(): Data$3;
2398
2400
  /**
2399
2401
  * Configure the processor with info available to all plugins.
2400
2402
  * Information is stored in an object.
@@ -2454,7 +2456,7 @@ declare class Processor<ParseTree extends Node$3 | undefined = undefined, HeadTr
2454
2456
  * The current processor when setting, the value at `key` when getting, or
2455
2457
  * the entire dataset when getting without key.
2456
2458
  */
2457
- data<Key extends keyof Data>(dataset: Data$3): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
2459
+ data<Key extends keyof Data$2>(dataset: Data$3): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
2458
2460
  /**
2459
2461
  * Configure the processor with info available to all plugins.
2460
2462
  * Information is stored in an object.
@@ -2514,7 +2516,7 @@ declare class Processor<ParseTree extends Node$3 | undefined = undefined, HeadTr
2514
2516
  * The current processor when setting, the value at `key` when getting, or
2515
2517
  * the entire dataset when getting without key.
2516
2518
  */
2517
- data<Key extends keyof Data>(key: Key): Data[Key];
2519
+ data<Key extends keyof Data$2>(key: Key): Data$2[Key];
2518
2520
  /**
2519
2521
  * Configure the processor with info available to all plugins.
2520
2522
  * Information is stored in an object.
@@ -2574,7 +2576,7 @@ declare class Processor<ParseTree extends Node$3 | undefined = undefined, HeadTr
2574
2576
  * The current processor when setting, the value at `key` when getting, or
2575
2577
  * the entire dataset when getting without key.
2576
2578
  */
2577
- data<Key extends keyof Data>(key: Key, value: Data[Key]): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
2579
+ data<Key extends keyof Data$2>(key: Key, value: Data$2[Key]): Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>;
2578
2580
  /**
2579
2581
  * Freeze a processor.
2580
2582
  *
@@ -3071,7 +3073,7 @@ type Node$2 = Node$3;
3071
3073
  type Compatible = Compatible$1;
3072
3074
  type Value = Value$1;
3073
3075
  type CompileResultMap$1 = CompileResultMap;
3074
- type Data$3 = Data;
3076
+ type Data$3 = Data$2;
3075
3077
  type Settings$1 = Settings;
3076
3078
  /**
3077
3079
  * Acceptable results from compilers.
@@ -3260,7 +3262,7 @@ interface CompileResultMap {
3260
3262
  * export {} // You may not need this, but it makes sure the file is a module.
3261
3263
  * ```
3262
3264
  */
3263
- interface Data {
3265
+ interface Data$2 {
3264
3266
  settings?: Settings | undefined;
3265
3267
  }
3266
3268
  /**
@@ -3296,7 +3298,7 @@ type Label = Label$1;
3296
3298
  type Severity = Severity$1;
3297
3299
  type Plugin<Tree extends Node$3 = Node$3, Option extends unknown = unknown> = (config?: [level: Label | Severity | boolean, option?: Option] | Label | Option | Severity) => ((tree: Tree, file: VFile, next: TransformCallback<Tree>) => undefined) | undefined;
3298
3300
  //#endregion
3299
- //#region ../../node_modules/.pnpm/@effected+git@0.4.2_effect@4.0.0-beta.101/node_modules/@effected/git/index.d.ts
3301
+ //#region ../../node_modules/.pnpm/@effected+git@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/git/index.d.ts
3300
3302
  //#region src/Git.d.ts
3301
3303
  declare const GitCommandError_base: Schema.Class<GitCommandError, Schema.TaggedStruct<"GitCommandError", {
3302
3304
  /**
@@ -3648,6 +3650,65 @@ declare const Git_base: Context.ServiceClass<Git, "@effected/git/Git", GitShape>
3648
3650
  declare class Git extends Git_base {
3649
3651
  /** Resolves `ChildProcessSpawner` once, at construction — every method's `R` is `never`. */
3650
3652
  static readonly layer: Layer.Layer<Git, never, ChildProcessSpawner.ChildProcessSpawner>;
3653
+ /**
3654
+ * An in-memory test double of the service shape: stub only the methods the
3655
+ * test exercises, every other method **dies** with a defect naming itself.
3656
+ *
3657
+ * @remarks
3658
+ * Unlike `WorkspaceDiscovery.makeTest`, **no method here has an honest
3659
+ * default** — the shape is twenty-six unrelated git operations, and a
3660
+ * fabricated answer for any of them (an empty tree, a made-up sha, a silent
3661
+ * no-op `checkout`) would leak into consumer logic as fact. So every
3662
+ * unstubbed method fails loudly as a defect
3663
+ * (`Git.makeTest: <name>() was called but not stubbed`) rather than
3664
+ * succeeding with a lie or failing with a dishonest typed error — which is
3665
+ * also what makes the double a proof that a test touches *nothing but* the
3666
+ * methods it stubbed.
3667
+ *
3668
+ * The double deliberately models **none** of the live service's semantics:
3669
+ * no stderr classification, no option-injection guard (an option-like ref a
3670
+ * stub accepts would be refused live), no `LC_ALL=C` pinning, no timeout,
3671
+ * and no `./`-vs-bare path resolution on `show` — a stub answers exactly
3672
+ * what it is told and nothing else. A suite exercising any of those wants
3673
+ * `Git.layer` over a mocked `ChildProcessSpawner` (or real git) instead.
3674
+ *
3675
+ * @example
3676
+ * ```ts
3677
+ * import { Git } from "@effected/git";
3678
+ * import { Effect, Option } from "effect";
3679
+ *
3680
+ * const double = Git.makeTest({
3681
+ * show: (_cwd, _ref, path) =>
3682
+ * Effect.succeed(path === "./package.json" ? Option.some("{}") : Option.none()),
3683
+ * });
3684
+ * // `double.show(...)` answers; `double.status(...)` dies, named.
3685
+ * ```
3686
+ */
3687
+ static readonly makeTest: (overrides?: Partial<GitShape>) => GitShape;
3688
+ /**
3689
+ * The test layer: {@link Git.makeTest} behind `Layer.succeed`, so a suite
3690
+ * provides only the methods it exercises.
3691
+ *
3692
+ * @remarks
3693
+ * A parameterized layer factory mints a **fresh reference per call**, and
3694
+ * layers memoize by reference — bind the result to a `const` and reuse it
3695
+ * rather than calling `layerTest(...)` at each composition site.
3696
+ *
3697
+ * @example
3698
+ * ```ts
3699
+ * import { Git, LsTreeEntry } from "@effected/git";
3700
+ * import { Effect } from "effect";
3701
+ *
3702
+ * const TestGit = Git.layerTest({
3703
+ * lsTree: () =>
3704
+ * Effect.succeed([
3705
+ * LsTreeEntry.make({ mode: "100644", type: "blob", oid: "0".repeat(40), path: "package.json" }),
3706
+ * ]),
3707
+ * });
3708
+ * // program.pipe(Effect.provide(TestGit))
3709
+ * ```
3710
+ */
3711
+ static readonly layerTest: (overrides?: Partial<GitShape>) => Layer.Layer<Git>;
3651
3712
  }
3652
3713
  //#endregion
3653
3714
  //#region ../../node_modules/.pnpm/@effected+semver@0.2.1_effect@4.0.0-beta.101/node_modules/@effected/semver/index.d.ts
@@ -4225,7 +4286,7 @@ declare class UnsatisfiableConstraintError extends UnsatisfiableConstraintError_
4225
4286
  get message(): string;
4226
4287
  }
4227
4288
  //#endregion
4228
- //#region ../../node_modules/.pnpm/@effected+npm@0.3.1_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/index.d.ts
4289
+ //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/index.d.ts
4229
4290
  //#region src/CatalogAssemblyError.d.ts
4230
4291
  declare const CatalogAssemblyError_base: Schema.Class<CatalogAssemblyError, Schema.TaggedStruct<"CatalogAssemblyError", {
4231
4292
  /**
@@ -4567,7 +4628,9 @@ declare class ReleaseAgeGate extends ReleaseAgeGate_base {
4567
4628
  * Combine partial contributions from multiple sources into one effective
4568
4629
  * gate: **strictest age wins** (the maximum of the contributed ages,
4569
4630
  * clamped to be non-negative) and the exclude sets **union** (deduplicated,
4570
- * insertion order preserved). A contribution's absent field adds nothing; a
4631
+ * lexicographically sorted a canonical wire form, so the combined gate is
4632
+ * deterministic regardless of the order contributions arrive in). A
4633
+ * contribution's absent field adds nothing; a
4571
4634
  * negative or non-finite contributed age is ignored by the clamp. With no
4572
4635
  * contributions (or only empty ones) the result is the inert zero gate
4573
4636
  * (`ageMinutes: 0`, `exclude: []`).
@@ -4791,7 +4854,7 @@ declare class GlobPattern extends GlobPattern_base {
4791
4854
  static readonly FromString: Schema.Codec<GlobPattern, string>;
4792
4855
  }
4793
4856
  //#endregion
4794
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.10_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0_baf93f2c33d0504f713f685ac5710e50/node_modules/@effected/lockfiles/index.d.ts
4857
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/index.d.ts
4795
4858
  //#region src/BunExtension.d.ts
4796
4859
  declare const BunExtension_base: Schema.Class<BunExtension, Schema.Struct<{
4797
4860
  readonly _tag: Schema.tag<"bun">;
@@ -4819,6 +4882,7 @@ declare const ImporterDependency_base: Schema.Class<ImporterDependency, Schema.S
4819
4882
  readonly name: Schema.NonEmptyString;
4820
4883
  readonly specifier: Schema.Codec<ClassifiedSpecifier, string, never, never>;
4821
4884
  readonly version: Schema.optionalKey<Schema.String>;
4885
+ readonly peerSuffix: Schema.optionalKey<Schema.String>;
4822
4886
  readonly depType: Schema.Literals<readonly ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]>;
4823
4887
  }>, {}>;
4824
4888
  /**
@@ -4831,11 +4895,20 @@ declare const ImporterDependency_base: Schema.Class<ImporterDependency, Schema.S
4831
4895
  * `ClassifiedSpecifier` (`catalog:` / `workspace:` / range / dist-tag / raw),
4832
4896
  * while encoding round-trips the **exact original string byte-for-byte** — the
4833
4897
  * guarantee a before/after lockfile diff relies on.
4834
- * - `version` — the concrete resolved version, **populated by pnpm only**. pnpm
4835
- * records `{ specifier, version }` per importer dependency; bun and npm record
4836
- * resolved versions on their package entries instead, so for those formats
4837
- * `version` is absent and a consumer joins by `name` against
4838
- * `Lockfile.packages`.
4898
+ * - `version` — the concrete resolved version, **populated by pnpm only**:
4899
+ * comparable across refs and printable. pnpm records `{ specifier, version }`
4900
+ * per importer dependency, and the parser splits pnpm's peer-disambiguation
4901
+ * suffix off into `peerSuffix`, so `version` is always the plain version or
4902
+ * a non-registry resolution (`link:../utils`, `file:...`), passed through
4903
+ * verbatim. bun and npm record resolved versions on their package entries
4904
+ * instead, so for those formats `version` is absent and a consumer joins by
4905
+ * `name` against `Lockfile.packages`.
4906
+ * - `peerSuffix` — pnpm's peer-disambiguation context: the raw parenthesized
4907
+ * chain the lockfile recorded after the version, e.g.
4908
+ * `(effect@4.0.0-beta.101)(ioredis@5.11.1(supports-color@8.1.1))`. Present
4909
+ * only when the lockfile recorded one — never for suffix-free pnpm entries,
4910
+ * and never for the other formats, which do not record peer context per
4911
+ * importer dependency.
4839
4912
  * - `depType` — which dependency map declared it, spelled with `@effected/npm`'s
4840
4913
  * kit-wide `DependencyField` vocabulary.
4841
4914
  *
@@ -5211,7 +5284,7 @@ declare class LockfileIntegrity extends LockfileIntegrity_base {
5211
5284
  static compare(lockfile: Lockfile, manifests: ReadonlyArray<WorkspaceManifest>): LockfileIntegrity;
5212
5285
  }
5213
5286
  //#endregion
5214
- //#region ../../node_modules/.pnpm/@effected+package-json@0.5.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/index.d.ts
5287
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/index.d.ts
5215
5288
  //#region src/Dependency.d.ts
5216
5289
  declare const Dependency_base: Schema.Class<Dependency, Schema.Struct<{
5217
5290
  /** The package name. */
@@ -5399,6 +5472,75 @@ declare class Person extends Person_base {
5399
5472
  */
5400
5473
  static wireStringOf(person: Person): Option.Option<string>;
5401
5474
  }
5475
+ //#endregion
5476
+ //#region src/Repository.d.ts
5477
+ declare const Repository_base: Schema.Class<Repository, Schema.Struct<{
5478
+ /** The `type` field, when the object form carried one (`"git"`, …). */
5479
+ readonly type: Schema.optionalKey<Schema.String>;
5480
+ /** The reference exactly as written: a shorthand, a git URL, or an https URL. */
5481
+ readonly url: Schema.String;
5482
+ /** The subdirectory within the repository, for a monorepo member. */
5483
+ readonly directory: Schema.optionalKey<Schema.String>;
5484
+ /** Keys outside the documented set, preserved so encoding does not drop them. */
5485
+ readonly rest: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
5486
+ }>, {}>;
5487
+ /**
5488
+ * Where a package's source lives.
5489
+ *
5490
+ * @remarks
5491
+ * `url` is **verbatim** — exactly the string the manifest carried, shorthand
5492
+ * and all. Normalization is offered through {@link Repository.browseUrl} and
5493
+ * {@link Repository.gitUrl}, so reading a manifest never rewrites it and a
5494
+ * caller that wants the original still has it.
5495
+ *
5496
+ * @example
5497
+ * ```ts
5498
+ * // "effected/kit" → https://github.com/effected/kit
5499
+ * // "git@github.com:effected/kit.git" → https://github.com/effected/kit
5500
+ * ```
5501
+ *
5502
+ * @public
5503
+ */
5504
+ declare class Repository extends Repository_base {
5505
+ /**
5506
+ * The browsable `https://` URL, or `Option.none()` when `url` is not a form
5507
+ * this model recognizes.
5508
+ */
5509
+ get browseUrl(): Option.Option<string>;
5510
+ /** The canonical https clone URL, or none when it cannot be derived. */
5511
+ get gitUrl(): Option.Option<string>;
5512
+ /**
5513
+ * The `repository` field: the shorthand string or the object form, always
5514
+ * decoded to a {@link Repository}, and always re-encoded in the form it was
5515
+ * read from.
5516
+ */
5517
+ static readonly FromValue: Schema.Codec<Repository, string | {
5518
+ readonly [k: string]: unknown;
5519
+ }>;
5520
+ }
5521
+ declare const Bugs_base: Schema.Class<Bugs, Schema.Struct<{
5522
+ /** The issue-tracker URL. */
5523
+ readonly url: Schema.optionalKey<Schema.String>;
5524
+ /** The address to mail instead of, or alongside, filing an issue. */
5525
+ readonly email: Schema.optionalKey<Schema.String>;
5526
+ /** Keys outside the documented set, preserved so encoding does not drop them. */
5527
+ readonly rest: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
5528
+ }>, {}>;
5529
+ /**
5530
+ * Where to report problems with a package.
5531
+ *
5532
+ * @remarks
5533
+ * npm permits a bare URL string, or an object with `url`, `email`, or both —
5534
+ * an email-only entry is legal, which is why `url` is optional.
5535
+ *
5536
+ * @public
5537
+ */
5538
+ declare class Bugs extends Bugs_base {
5539
+ /** The `bugs` field: a URL string or the object form. */
5540
+ static readonly FromValue: Schema.Codec<Bugs, string | {
5541
+ readonly [k: string]: unknown;
5542
+ }>;
5543
+ }
5402
5544
  declare const PackageDecodeError_base: Schema.Class<PackageDecodeError, Schema.TaggedStruct<"PackageDecodeError", {
5403
5545
  /** The underlying `SchemaError`, preserved structurally rather than stringified. */
5404
5546
  readonly cause: Schema.Defect;
@@ -5473,7 +5615,17 @@ declare const Package_base: Schema.Class<Package, Schema.Struct<{
5473
5615
  readonly contributors: Schema.optionalKey<Schema.$Array<Schema.Codec<Person, string | {
5474
5616
  readonly [k: string]: unknown;
5475
5617
  }, never, never>>>;
5476
- readonly repository: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.$Record<Schema.String, Schema.Unknown>]>>;
5618
+ readonly maintainers: Schema.optionalKey<Schema.$Array<Schema.Codec<Person, string | {
5619
+ readonly [k: string]: unknown;
5620
+ }, never, never>>>;
5621
+ readonly keywords: Schema.optionalKey<Schema.$Array<Schema.String>>;
5622
+ readonly repository: Schema.optionalKey<Schema.Codec<Repository, string | {
5623
+ readonly [k: string]: unknown;
5624
+ }, never, never>>;
5625
+ readonly bugs: Schema.optionalKey<Schema.Codec<Bugs, string | {
5626
+ readonly [k: string]: unknown;
5627
+ }, never, never>>;
5628
+ readonly homepage: Schema.optionalKey<Schema.String>;
5477
5629
  readonly dependencies: Schema.decodeTo<Schema.HashMap<Schema.String, Schema.String>, Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.String>, never>, never, never>;
5478
5630
  readonly devDependencies: Schema.decodeTo<Schema.HashMap<Schema.String, Schema.String>, Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.String>, never>, never, never>;
5479
5631
  readonly peerDependencies: Schema.decodeTo<Schema.HashMap<Schema.String, Schema.String>, Schema.withDecodingDefaultKey<Schema.$Record<Schema.String, Schema.String>, never>, never, never>;
@@ -5659,7 +5811,7 @@ declare class Package extends Package_base {
5659
5811
  toJsonString(options?: PackageFormatOptions): string;
5660
5812
  }
5661
5813
  //#endregion
5662
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.7.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/index.d.ts
5814
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/index.d.ts
5663
5815
  //#region src/WorkspacePackage.d.ts
5664
5816
  declare const PublishConfig_base: Schema.Class<PublishConfig, Schema.Struct<{
5665
5817
  /** Scoped-package visibility. Its presence overrides `private`. */
@@ -6470,10 +6622,21 @@ declare class PackageManagerDetectionError extends PackageManagerDetectionError_
6470
6622
  * @public
6471
6623
  */
6472
6624
  type PackageManagerDetectionFailure = PackageManagerDetectionError | WorkspaceManifestError;
6473
- declare const PackageManagerDetector_base: Context.ServiceClass<PackageManagerDetector, "@effected/workspaces/PackageManagerDetector", {
6625
+ /**
6626
+ * The {@link PackageManagerDetector} service shape.
6627
+ *
6628
+ * @remarks
6629
+ * Exported so a consumer can type a bespoke double against the contract without
6630
+ * reaching into the class — the `WorkspaceDiscoveryShape` /
6631
+ * `PublishabilityDetectorShape` convention.
6632
+ *
6633
+ * @public
6634
+ */
6635
+ interface PackageManagerDetectorShape {
6474
6636
  /** Detect the package manager at a workspace root. */
6475
6637
  readonly detect: (root: string) => Effect.Effect<DetectedPackageManager, PackageManagerDetectionFailure>;
6476
- }>;
6638
+ }
6639
+ declare const PackageManagerDetector_base: Context.ServiceClass<PackageManagerDetector, "@effected/workspaces/PackageManagerDetector", PackageManagerDetectorShape>;
6477
6640
  /**
6478
6641
  * Detects which package manager owns a workspace root.
6479
6642
  *
@@ -6522,6 +6685,50 @@ declare class PackageManagerDetector extends PackageManagerDetector_base {
6522
6685
  }, never, FileSystem.FileSystem | Path.Path>;
6523
6686
  /** The live layer. */
6524
6687
  static readonly layer: Layer.Layer<PackageManagerDetector, never, FileSystem.FileSystem | Path.Path>;
6688
+ /**
6689
+ * The sanctioned in-memory double.
6690
+ *
6691
+ * @remarks
6692
+ * **`detect` has no honest default, so an unstubbed call dies** — the
6693
+ * `WorkspaceDiscovery.info` posture, for the same reason. A stand-in that
6694
+ * answered `"pnpm"` would hand a consumer a fact nothing established, and it
6695
+ * would contradict the very service it stands in for: the live detector's
6696
+ * defining property is that it [refuses to
6697
+ * guess](https://github.com/spencerbeggs/effected) when no evidence matches.
6698
+ * A double that guesses is worse than no double.
6699
+ *
6700
+ * Failing typed would be the subtler mistake: `PackageManagerDetectionError`
6701
+ * reads as a legitimate "no manager here" answer, so a consumer would branch
6702
+ * on it and proceed, never learning that the test simply forgot to stub.
6703
+ *
6704
+ * @param overrides - Members to supply; anything omitted dies on use.
6705
+ *
6706
+ * @example
6707
+ * ```ts
6708
+ * import { DetectedPackageManager, PackageManagerDetector } from "@effected/workspaces";
6709
+ * import { Effect, Option } from "effect";
6710
+ *
6711
+ * const TestDetector = PackageManagerDetector.layerTest({
6712
+ * detect: () =>
6713
+ * Effect.succeed(
6714
+ * DetectedPackageManager.make({ name: "pnpm", version: Option.none(), runtime: "node" }),
6715
+ * ),
6716
+ * });
6717
+ * ```
6718
+ */
6719
+ static readonly makeTest: (overrides?: Partial<PackageManagerDetectorShape>) => PackageManagerDetectorShape;
6720
+ /**
6721
+ * {@link PackageManagerDetector.makeTest} behind `Layer.succeed`.
6722
+ *
6723
+ * @remarks
6724
+ * A parameterized layer factory mints a **fresh reference per call**, and
6725
+ * layers memoize by reference — bind the result to a `const` and reuse it
6726
+ * rather than calling `layerTest(...)` at each composition site.
6727
+ *
6728
+ * Pairs with `WorkspaceRoot.layerTest` and `WorkspaceDiscovery.layerTest` to
6729
+ * stand up the whole discovery path with no filesystem at all.
6730
+ */
6731
+ static readonly layerTest: (overrides?: Partial<PackageManagerDetectorShape>) => Layer.Layer<PackageManagerDetector>;
6525
6732
  }
6526
6733
  //#endregion
6527
6734
  //#region src/LockfileReader.d.ts
@@ -6636,6 +6843,65 @@ declare class LockfileReader extends LockfileReader_base {
6636
6843
  * `const` and reuse it.
6637
6844
  */
6638
6845
  static readonly layer: (options?: LockfileReaderOptions) => Layer.Layer<LockfileReader, never, WorkspaceRoot | PackageManagerDetector | WorkspaceDiscovery | FileSystem.FileSystem | Path.Path>;
6846
+ /**
6847
+ * A test double satisfying the full {@link LockfileReaderShape} with no
6848
+ * filesystem, root walk, or package-manager detection.
6849
+ *
6850
+ * @remarks
6851
+ * There is **no honest default lockfile**: an empty one that looks like a
6852
+ * legitimate answer is indistinguishable from "this workspace resolves
6853
+ * nothing" — the silent-empty failure class this package documents on the
6854
+ * live paths — so `read` **dies** with an instructive defect until stubbed.
6855
+ *
6856
+ * The one derivation mirrors `WorkspaceDiscovery.makeTest`'s
6857
+ * derived-from-the-primary rule: when a `read` override is supplied,
6858
+ * `resolvedVersion` answers as the live service does — the **first** entry
6859
+ * of `lockfile.packagesNamed(name)` in lockfile order, `Option.none()` on a
6860
+ * miss — so the two stay consistent by construction. `integrity` is **not**
6861
+ * derivable: the live method compares the lockfile against the workspace
6862
+ * manifests discovery enumerates, and the double has no discovery to ask, so
6863
+ * it dies unless stubbed.
6864
+ *
6865
+ * `refresh` defaults to `Effect.void` honestly: the live contract is "drop
6866
+ * the memoized read so the next call re-reads", and this double memoizes
6867
+ * nothing — every `read()` call re-invokes the override — so there is
6868
+ * nothing to drop and the no-op is truthful, the same reasoning as
6869
+ * `WorkspaceDiscovery.makeTest`'s `refresh`.
6870
+ *
6871
+ * @example
6872
+ * ```ts
6873
+ * import { Lockfile } from "@effected/lockfiles";
6874
+ * import { LockfileReader } from "@effected/workspaces";
6875
+ * import { Effect } from "effect";
6876
+ *
6877
+ * const double = LockfileReader.makeTest({
6878
+ * read: () =>
6879
+ * Effect.succeed(
6880
+ * Lockfile.make({ format: "pnpm", lockfileVersion: "9.0", packages: [], workspaceDependencies: [] }),
6881
+ * ),
6882
+ * });
6883
+ * // `resolvedVersion` now answers consistently from that lockfile.
6884
+ * ```
6885
+ */
6886
+ static readonly makeTest: (overrides?: Partial<LockfileReaderShape>) => LockfileReaderShape;
6887
+ /**
6888
+ * The test layer: {@link LockfileReader.makeTest} behind `Layer.succeed`, so
6889
+ * a suite provides only the methods it exercises.
6890
+ *
6891
+ * @remarks
6892
+ * A parameterized layer factory mints a **fresh reference per call**, and
6893
+ * layers memoize by reference — bind the result to a `const` and reuse it
6894
+ * rather than calling `layerTest(...)` at each composition site.
6895
+ *
6896
+ * @example
6897
+ * ```ts
6898
+ * import { LockfileReader } from "@effected/workspaces";
6899
+ *
6900
+ * const TestLockfiles = LockfileReader.layerTest();
6901
+ * // program.pipe(Effect.provide(TestLockfiles)) — dies loudly if touched.
6902
+ * ```
6903
+ */
6904
+ static readonly layerTest: (overrides?: Partial<LockfileReaderShape>) => Layer.Layer<LockfileReader>;
6639
6905
  }
6640
6906
  //#endregion
6641
6907
  //#region src/Publishability.d.ts
@@ -6742,8 +7008,60 @@ declare const PublishabilityDetector_base: Context.ServiceClass<PublishabilityDe
6742
7008
  * @public
6743
7009
  */
6744
7010
  declare class PublishabilityDetector extends PublishabilityDetector_base {
6745
- /** Standard npm publishing semantics. Pure — no filesystem, no platform services. */
6746
- static readonly layer: Layer.Layer<PublishabilityDetector>;
7011
+ /**
7012
+ * Standard npm publishing semantics, **as a value**. Pure — no filesystem,
7013
+ * no platform services.
7014
+ *
7015
+ * @remarks
7016
+ * Exposed as a shape and not only as a layer, because a consumer composing
7017
+ * *around* these rules cannot reach them through a layer without re-entering
7018
+ * the very tag it is replacing. `@savvy-web/silk-effects` had to write
7019
+ * `Effect.provide(PublishabilityDetector, PublishabilityDetector.layer)`
7020
+ * **inside its own implementation of that tag** to get at this function for
7021
+ * its pass-through branch; with the value exposed that becomes
7022
+ * `PublishabilityDetector.npm.detect(pkg)`.
7023
+ *
7024
+ * @example
7025
+ * ```ts
7026
+ * import { PublishabilityDetector } from "@effected/workspaces";
7027
+ * import { Effect, Layer } from "effect";
7028
+ *
7029
+ * // A policy that defers to npm semantics for everything it does not veto.
7030
+ * const withVeto = Layer.succeed(PublishabilityDetector, {
7031
+ * detect: (pkg) =>
7032
+ * pkg.name.endsWith("-private")
7033
+ * ? Effect.succeed([])
7034
+ * : PublishabilityDetector.npm.detect(pkg),
7035
+ * });
7036
+ * ```
7037
+ */
7038
+ static readonly npm: PublishabilityDetectorShape;
7039
+ /** Nothing publishes. */
7040
+ static readonly none: PublishabilityDetectorShape;
7041
+ /**
7042
+ * {@link PublishabilityDetector.npm} as a layer.
7043
+ *
7044
+ * @remarks
7045
+ * Named for its policy rather than called `layer`, deliberately. **No
7046
+ * composite in this package provides a publishability detector**: a
7047
+ * `Workspaces.layer()` that quietly supplied npm semantics made the choice
7048
+ * invisible, and worse, made a naively-ordered override lose to it in
7049
+ * silence — `Layer.mergeAll(myDetector, Workspaces.layer())` resolved to the
7050
+ * default, because `mergeAll` is last-wins. For a service that decides
7051
+ * whether a package publishes and to which registry, that silent revert was
7052
+ * the worst available failure. The requirement now sits in `R`, so the
7053
+ * choice is made once, explicitly, and unmade wiring does not compile.
7054
+ */
7055
+ static readonly layerNpm: Layer.Layer<PublishabilityDetector>;
7056
+ /**
7057
+ * {@link PublishabilityDetector.none} as a layer: a workspace where nothing
7058
+ * publishes.
7059
+ *
7060
+ * @remarks
7061
+ * For dry runs, and for a release tool whose configuration disables
7062
+ * publishing wholesale — silk's changeset `mode: "none"` is exactly this.
7063
+ */
7064
+ static readonly layerNone: Layer.Layer<PublishabilityDetector>;
6747
7065
  }
6748
7066
  //#endregion
6749
7067
  //#region src/WorkspaceCatalogs.d.ts
@@ -6977,6 +7295,61 @@ declare class WorkspaceCatalogs extends WorkspaceCatalogs_base {
6977
7295
  * Parameterized, so bind it to a `const` and reuse it.
6978
7296
  */
6979
7297
  static readonly layerWithConfigDependencies: (options?: WorkspaceCatalogsOptions) => Layer.Layer<WorkspaceCatalogs, never, WorkspaceRoot | LockfileReader | FileSystem.FileSystem | Path.Path>;
7298
+ /**
7299
+ * A test double satisfying the full {@link WorkspaceCatalogsShape} with no
7300
+ * filesystem, lockfile read, or hook replay.
7301
+ *
7302
+ * @remarks
7303
+ * There is **no honest default catalog set**: an empty `CatalogSet` that
7304
+ * looks like a legitimate answer is the "every dependency looks newly added"
7305
+ * failure class the live assembler hard-fails to prevent, so every method
7306
+ * **dies** with an instructive defect until stubbed — a test-wiring mistake
7307
+ * fails loudly as a defect rather than succeeding with a lie or failing with
7308
+ * a dishonest typed error.
7309
+ *
7310
+ * The one derivation mirrors `WorkspaceDiscovery.makeTest`'s
7311
+ * derived-from-the-primary rule: when a `set` override is supplied,
7312
+ * `resolveSpecifier` answers from that `CatalogSet`'s own
7313
+ * {@link CatalogSet.resolveSpecifier} — exactly what the live service runs
7314
+ * over its assembled set — so the two stay consistent by construction.
7315
+ * `releaseAgeGate` and `importerVersions` are **not** derivable from a
7316
+ * catalog set (the gate comes from release-age keys and hook contributions,
7317
+ * the importer index from the lockfile's importer blocks — neither is in a
7318
+ * `CatalogSet`) and always die unless stubbed.
7319
+ *
7320
+ * @example
7321
+ * ```ts
7322
+ * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
7323
+ * import { Effect } from "effect";
7324
+ *
7325
+ * const double = WorkspaceCatalogs.makeTest({
7326
+ * set: () => Effect.succeed(CatalogSet.fromCatalogs({ default: { effect: "4.0.0" } })),
7327
+ * });
7328
+ * // `resolveSpecifier` now answers consistently from that set.
7329
+ * ```
7330
+ */
7331
+ static readonly makeTest: (overrides?: Partial<WorkspaceCatalogsShape>) => WorkspaceCatalogsShape;
7332
+ /**
7333
+ * The test layer: {@link WorkspaceCatalogs.makeTest} behind `Layer.succeed`,
7334
+ * so a suite provides only the methods it exercises.
7335
+ *
7336
+ * @remarks
7337
+ * A parameterized layer factory mints a **fresh reference per call**, and
7338
+ * layers memoize by reference — bind the result to a `const` and reuse it
7339
+ * rather than calling `layerTest(...)` at each composition site.
7340
+ *
7341
+ * @example
7342
+ * ```ts
7343
+ * import { CatalogSet, WorkspaceCatalogs } from "@effected/workspaces";
7344
+ * import { Effect } from "effect";
7345
+ *
7346
+ * const TestCatalogs = WorkspaceCatalogs.layerTest({
7347
+ * set: () => Effect.succeed(CatalogSet.empty()),
7348
+ * });
7349
+ * // program.pipe(Effect.provide(TestCatalogs))
7350
+ * ```
7351
+ */
7352
+ static readonly layerTest: (overrides?: Partial<WorkspaceCatalogsShape>) => Layer.Layer<WorkspaceCatalogs>;
6980
7353
  /**
6981
7354
  * The real implementation of `@effected/npm`'s `CatalogResolver` contract —
6982
7355
  * the one `@effected/package-json` declares but cannot fill.
@@ -7252,6 +7625,62 @@ declare class WorkspaceSnapshots extends WorkspaceSnapshots_base {
7252
7625
  * `const` and reuse it, or layer memoization does not apply.
7253
7626
  */
7254
7627
  static readonly layer: (options?: WorkspaceSnapshotsOptions) => Layer.Layer<WorkspaceSnapshots, never, Git | WorkspaceRoot | WorkspaceDiscovery | WorkspaceCatalogs>;
7628
+ /**
7629
+ * A test double satisfying the full {@link WorkspaceSnapshotsShape} with no
7630
+ * git, filesystem, discovery, or catalog assembly.
7631
+ *
7632
+ * @remarks
7633
+ * There are **no honest defaults and no derivations** here: `at(ref)` and
7634
+ * `worktree()` are two independent reads of two different sources (a git ref
7635
+ * vs. the live tree), so neither can be honestly derived from the other, and
7636
+ * a fabricated empty {@link WorkspaceStateSnapshot} on either side of a
7637
+ * before/after diff reads as every dependency newly added or removed — the
7638
+ * exact silent-empty failure class this package documents on the live paths.
7639
+ * Both methods therefore **die** with an instructive defect until stubbed; a
7640
+ * test-wiring mistake fails loudly as a defect rather than succeeding with a
7641
+ * lie.
7642
+ *
7643
+ * @example
7644
+ * ```ts
7645
+ * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
7646
+ * import { Effect } from "effect";
7647
+ *
7648
+ * const empty = WorkspaceStateSnapshot.make({
7649
+ * packages: [],
7650
+ * catalogs: CatalogSet.empty(),
7651
+ * importerVersions: {},
7652
+ * });
7653
+ * const double = WorkspaceSnapshots.makeTest({
7654
+ * at: () => Effect.succeed(empty),
7655
+ * worktree: () => Effect.succeed(empty),
7656
+ * });
7657
+ * ```
7658
+ */
7659
+ static readonly makeTest: (overrides?: Partial<WorkspaceSnapshotsShape>) => WorkspaceSnapshotsShape;
7660
+ /**
7661
+ * The test layer: {@link WorkspaceSnapshots.makeTest} behind `Layer.succeed`,
7662
+ * so a suite provides only the methods it exercises.
7663
+ *
7664
+ * @remarks
7665
+ * A parameterized layer factory mints a **fresh reference per call**, and
7666
+ * layers memoize by reference — bind the result to a `const` and reuse it
7667
+ * rather than calling `layerTest(...)` at each composition site.
7668
+ *
7669
+ * @example
7670
+ * ```ts
7671
+ * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
7672
+ * import { Effect } from "effect";
7673
+ *
7674
+ * const TestSnapshots = WorkspaceSnapshots.layerTest({
7675
+ * worktree: () =>
7676
+ * Effect.succeed(
7677
+ * WorkspaceStateSnapshot.make({ packages: [], catalogs: CatalogSet.empty(), importerVersions: {} }),
7678
+ * ),
7679
+ * });
7680
+ * // program.pipe(Effect.provide(TestSnapshots))
7681
+ * ```
7682
+ */
7683
+ static readonly layerTest: (overrides?: Partial<WorkspaceSnapshotsShape>) => Layer.Layer<WorkspaceSnapshots>;
7255
7684
  }
7256
7685
  //#endregion
7257
7686
  //#region src/Workspaces.d.ts
@@ -7272,7 +7701,7 @@ interface WorkspacesOptions {
7272
7701
  readonly maxDepth?: number;
7273
7702
  }
7274
7703
  //#endregion
7275
- //#region ../../node_modules/.pnpm/@effected+walker@0.3.2_@effected+glob@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/walker/index.d.ts
7704
+ //#region ../../node_modules/.pnpm/@effected+walker@0.3.3_@effected+glob@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/walker/index.d.ts
7276
7705
  declare const DescendError_base: Schema.Class<DescendError, Schema.TaggedStruct<"DescendError", {
7277
7706
  /** The glob pattern's source text. */
7278
7707
  readonly pattern: Schema.String;
@@ -7728,8 +8157,7 @@ type PreState = {
7728
8157
  * Delegates to the Changesets-compatible `getReleaseLine` and
7729
8158
  * `getDependencyReleaseLine` functions. Internally, these use the
7730
8159
  * {@link ChangelogService} Effect service layer, which coordinates
7731
- * the {@link GitHubService} (for commit/PR metadata) and
7732
- * {@link MarkdownService} (for AST manipulation) to produce
8160
+ * the {@link GitHubService} (for commit/PR metadata) to produce
7733
8161
  * structured changelog entries.
7734
8162
  *
7735
8163
  * @remarks
@@ -7859,7 +8287,7 @@ declare class Changelog {
7859
8287
  * }
7860
8288
  * ```
7861
8289
  */
7862
- interface Data$2 {}
8290
+ interface Data$1 {}
7863
8291
  /**
7864
8292
  * One place in a source file.
7865
8293
  */
@@ -7910,7 +8338,7 @@ interface Node$1 {
7910
8338
  /**
7911
8339
  * Info from the ecosystem.
7912
8340
  */
7913
- data?: Data$2 | undefined;
8341
+ data?: Data$1 | undefined;
7914
8342
  /**
7915
8343
  * Position of a node in a source document.
7916
8344
  *
@@ -8038,7 +8466,7 @@ interface Resource {
8038
8466
  * }
8039
8467
  * ```
8040
8468
  */
8041
- interface Data$1 extends Data$2 {}
8469
+ interface Data extends Data$1 {}
8042
8470
  // ## Content maps
8043
8471
  /**
8044
8472
  * Union of registered mdast nodes that can occur where block content is
@@ -8307,7 +8735,7 @@ interface Node extends Node$1 {
8307
8735
  /**
8308
8736
  * Info from the ecosystem.
8309
8737
  */
8310
- data?: Data$1 | undefined;
8738
+ data?: Data | undefined;
8311
8739
  }
8312
8740
  /**
8313
8741
  * Abstract mdast node that contains other mdast nodes (*children*).
@@ -8343,7 +8771,7 @@ interface Blockquote extends Parent {
8343
8771
  /**
8344
8772
  * Info associated with mdast block quote nodes by the ecosystem.
8345
8773
  */
8346
- interface BlockquoteData extends Data$1 {}
8774
+ interface BlockquoteData extends Data {}
8347
8775
  /**
8348
8776
  * Markdown break.
8349
8777
  */
@@ -8360,7 +8788,7 @@ interface Break extends Node {
8360
8788
  /**
8361
8789
  * Info associated with mdast break nodes by the ecosystem.
8362
8790
  */
8363
- interface BreakData extends Data$1 {}
8791
+ interface BreakData extends Data {}
8364
8792
  /**
8365
8793
  * Markdown code (flow) (block).
8366
8794
  */
@@ -8387,7 +8815,7 @@ interface Code extends Literal {
8387
8815
  /**
8388
8816
  * Info associated with mdast code (flow) (block) nodes by the ecosystem.
8389
8817
  */
8390
- interface CodeData extends Data$1 {}
8818
+ interface CodeData extends Data {}
8391
8819
  /**
8392
8820
  * Markdown definition.
8393
8821
  */
@@ -8404,7 +8832,7 @@ interface Definition extends Node, Association, Resource {
8404
8832
  /**
8405
8833
  * Info associated with mdast definition nodes by the ecosystem.
8406
8834
  */
8407
- interface DefinitionData extends Data$1 {}
8835
+ interface DefinitionData extends Data {}
8408
8836
  /**
8409
8837
  * Markdown GFM delete (strikethrough).
8410
8838
  */
@@ -8425,7 +8853,7 @@ interface Delete extends Parent {
8425
8853
  /**
8426
8854
  * Info associated with mdast GFM delete nodes by the ecosystem.
8427
8855
  */
8428
- interface DeleteData extends Data$1 {}
8856
+ interface DeleteData extends Data {}
8429
8857
  /**
8430
8858
  * Markdown emphasis.
8431
8859
  */
@@ -8446,7 +8874,7 @@ interface Emphasis extends Parent {
8446
8874
  /**
8447
8875
  * Info associated with mdast emphasis nodes by the ecosystem.
8448
8876
  */
8449
- interface EmphasisData extends Data$1 {}
8877
+ interface EmphasisData extends Data {}
8450
8878
  /**
8451
8879
  * Markdown GFM footnote definition.
8452
8880
  */
@@ -8467,7 +8895,7 @@ interface FootnoteDefinition extends Parent, Association {
8467
8895
  /**
8468
8896
  * Info associated with mdast GFM footnote definition nodes by the ecosystem.
8469
8897
  */
8470
- interface FootnoteDefinitionData extends Data$1 {}
8898
+ interface FootnoteDefinitionData extends Data {}
8471
8899
  /**
8472
8900
  * Markdown GFM footnote reference.
8473
8901
  */
@@ -8484,7 +8912,7 @@ interface FootnoteReference extends Association, Node {
8484
8912
  /**
8485
8913
  * Info associated with mdast GFM footnote reference nodes by the ecosystem.
8486
8914
  */
8487
- interface FootnoteReferenceData extends Data$1 {}
8915
+ interface FootnoteReferenceData extends Data {}
8488
8916
  /**
8489
8917
  * Markdown heading.
8490
8918
  */
@@ -8511,7 +8939,7 @@ interface Heading extends Parent {
8511
8939
  /**
8512
8940
  * Info associated with mdast heading nodes by the ecosystem.
8513
8941
  */
8514
- interface HeadingData extends Data$1 {}
8942
+ interface HeadingData extends Data {}
8515
8943
  /**
8516
8944
  * Markdown HTML.
8517
8945
  */
@@ -8528,7 +8956,7 @@ interface Html extends Literal {
8528
8956
  /**
8529
8957
  * Info associated with mdast HTML nodes by the ecosystem.
8530
8958
  */
8531
- interface HtmlData extends Data$1 {}
8959
+ interface HtmlData extends Data {}
8532
8960
  /**
8533
8961
  * Markdown image.
8534
8962
  */
@@ -8545,7 +8973,7 @@ interface Image extends Alternative, Node, Resource {
8545
8973
  /**
8546
8974
  * Info associated with mdast image nodes by the ecosystem.
8547
8975
  */
8548
- interface ImageData extends Data$1 {}
8976
+ interface ImageData extends Data {}
8549
8977
  /**
8550
8978
  * Markdown image reference.
8551
8979
  */
@@ -8562,7 +8990,7 @@ interface ImageReference extends Alternative, Node, Reference {
8562
8990
  /**
8563
8991
  * Info associated with mdast image reference nodes by the ecosystem.
8564
8992
  */
8565
- interface ImageReferenceData extends Data$1 {}
8993
+ interface ImageReferenceData extends Data {}
8566
8994
  /**
8567
8995
  * Markdown code (text) (inline).
8568
8996
  */
@@ -8579,7 +9007,7 @@ interface InlineCode extends Literal {
8579
9007
  /**
8580
9008
  * Info associated with mdast code (text) (inline) nodes by the ecosystem.
8581
9009
  */
8582
- interface InlineCodeData extends Data$1 {}
9010
+ interface InlineCodeData extends Data {}
8583
9011
  /**
8584
9012
  * Markdown link.
8585
9013
  */
@@ -8600,7 +9028,7 @@ interface Link extends Parent, Resource {
8600
9028
  /**
8601
9029
  * Info associated with mdast link nodes by the ecosystem.
8602
9030
  */
8603
- interface LinkData extends Data$1 {}
9031
+ interface LinkData extends Data {}
8604
9032
  /**
8605
9033
  * Markdown link reference.
8606
9034
  */
@@ -8621,7 +9049,7 @@ interface LinkReference extends Parent, Reference {
8621
9049
  /**
8622
9050
  * Info associated with mdast link reference nodes by the ecosystem.
8623
9051
  */
8624
- interface LinkReferenceData extends Data$1 {}
9052
+ interface LinkReferenceData extends Data {}
8625
9053
  /**
8626
9054
  * Markdown list.
8627
9055
  */
@@ -8656,7 +9084,7 @@ interface List extends Parent {
8656
9084
  /**
8657
9085
  * Info associated with mdast list nodes by the ecosystem.
8658
9086
  */
8659
- interface ListData extends Data$1 {}
9087
+ interface ListData extends Data {}
8660
9088
  /**
8661
9089
  * Markdown list item.
8662
9090
  */
@@ -8689,7 +9117,7 @@ interface ListItem extends Parent {
8689
9117
  /**
8690
9118
  * Info associated with mdast list item nodes by the ecosystem.
8691
9119
  */
8692
- interface ListItemData extends Data$1 {}
9120
+ interface ListItemData extends Data {}
8693
9121
  /**
8694
9122
  * Markdown paragraph.
8695
9123
  */
@@ -8710,7 +9138,7 @@ interface Paragraph extends Parent {
8710
9138
  /**
8711
9139
  * Info associated with mdast paragraph nodes by the ecosystem.
8712
9140
  */
8713
- interface ParagraphData extends Data$1 {}
9141
+ interface ParagraphData extends Data {}
8714
9142
  /**
8715
9143
  * Document fragment or a whole document.
8716
9144
  *
@@ -8729,7 +9157,7 @@ interface Root extends Parent {
8729
9157
  /**
8730
9158
  * Info associated with mdast root nodes by the ecosystem.
8731
9159
  */
8732
- interface RootData extends Data$1 {}
9160
+ interface RootData extends Data {}
8733
9161
  /**
8734
9162
  * Markdown strong.
8735
9163
  */
@@ -8750,7 +9178,7 @@ interface Strong extends Parent {
8750
9178
  /**
8751
9179
  * Info associated with mdast strong nodes by the ecosystem.
8752
9180
  */
8753
- interface StrongData extends Data$1 {}
9181
+ interface StrongData extends Data {}
8754
9182
  /**
8755
9183
  * Markdown GFM table.
8756
9184
  */
@@ -8775,7 +9203,7 @@ interface Table extends Parent {
8775
9203
  /**
8776
9204
  * Info associated with mdast GFM table nodes by the ecosystem.
8777
9205
  */
8778
- interface TableData extends Data$1 {}
9206
+ interface TableData extends Data {}
8779
9207
  /**
8780
9208
  * Markdown GFM table row.
8781
9209
  */
@@ -8796,7 +9224,7 @@ interface TableRow extends Parent {
8796
9224
  /**
8797
9225
  * Info associated with mdast GFM table row nodes by the ecosystem.
8798
9226
  */
8799
- interface TableRowData extends Data$1 {}
9227
+ interface TableRowData extends Data {}
8800
9228
  /**
8801
9229
  * Markdown GFM table cell.
8802
9230
  */
@@ -8817,7 +9245,7 @@ interface TableCell extends Parent {
8817
9245
  /**
8818
9246
  * Info associated with mdast GFM table cell nodes by the ecosystem.
8819
9247
  */
8820
- interface TableCellData extends Data$1 {}
9248
+ interface TableCellData extends Data {}
8821
9249
  /**
8822
9250
  * Markdown text.
8823
9251
  */
@@ -8834,7 +9262,7 @@ interface Text extends Literal {
8834
9262
  /**
8835
9263
  * Info associated with mdast text nodes by the ecosystem.
8836
9264
  */
8837
- interface TextData extends Data$1 {}
9265
+ interface TextData extends Data {}
8838
9266
  /**
8839
9267
  * Markdown thematic break (horizontal rule).
8840
9268
  */
@@ -8851,7 +9279,7 @@ interface ThematicBreak extends Node {
8851
9279
  /**
8852
9280
  * Info associated with mdast thematic break nodes by the ecosystem.
8853
9281
  */
8854
- interface ThematicBreakData extends Data$1 {}
9282
+ interface ThematicBreakData extends Data {}
8855
9283
  /**
8856
9284
  * Markdown YAML.
8857
9285
  */
@@ -8868,7 +9296,7 @@ interface Yaml$1 extends Literal {
8868
9296
  /**
8869
9297
  * Info associated with mdast YAML nodes by the ecosystem.
8870
9298
  */
8871
- interface YamlData extends Data$1 {}
9299
+ interface YamlData extends Data {}
8872
9300
  //#endregion
8873
9301
  //#region src/changesets/schemas/dependency-table.d.ts
8874
9302
  /**
@@ -9798,7 +10226,6 @@ declare const MarkdownParseErrorBase: new <A extends Record<string, any> = {}>(a
9798
10226
  * );
9799
10227
  * ```
9800
10228
  *
9801
- * @see {@link MarkdownService} for the Effect service that may produce this error
9802
10229
  *
9803
10230
  * @public
9804
10231
  */
@@ -10704,7 +11131,7 @@ declare class GitHubService extends GitHubService_base {}
10704
11131
  * @remarks
10705
11132
  * This layer is used by the `\@savvy-web/changesets/changelog` entry point
10706
11133
  * to resolve commit hashes into PR numbers and author attribution. It is
10707
- * composed with {@link MarkdownLive} in the changelog formatter's
11134
+ * used by the changelog formatter's
10708
11135
  * `MainLayer`.
10709
11136
  *
10710
11137
  * @example
@@ -10764,103 +11191,6 @@ declare const GitHubLive: Layer.Layer<GitHubService, never, never>;
10764
11191
  */
10765
11192
  declare function makeGitHubTest(responses: Map<string, GitHubCommitInfo>): Layer.Layer<GitHubService>;
10766
11193
  //#endregion
10767
- //#region src/changesets/services/markdown.d.ts
10768
- /**
10769
- * Service interface for markdown parsing and stringification.
10770
- *
10771
- * Describes the two operations a `MarkdownService` implementation must
10772
- * provide: parsing markdown text into an mdast AST and stringifying an
10773
- * mdast AST back to markdown text.
10774
- *
10775
- * @remarks
10776
- * Both operations are infallible (no error channel) because the underlying
10777
- * remark pipeline is configured to handle all valid markdown input. The
10778
- * `Root` type comes from the `mdast` package and represents the root node
10779
- * of a markdown abstract syntax tree.
10780
- *
10781
- * @public
10782
- */
10783
- interface MarkdownServiceShape {
10784
- /**
10785
- * Parse a markdown string into an mdast abstract syntax tree.
10786
- *
10787
- * @param content - Raw markdown text to parse
10788
- * @returns An `Effect` that resolves to an mdast `Root` node
10789
- */
10790
- readonly parse: (content: string) => Effect.Effect<Root>;
10791
- /**
10792
- * Stringify an mdast abstract syntax tree back to markdown text.
10793
- *
10794
- * @param tree - The mdast `Root` node to serialize
10795
- * @returns An `Effect` that resolves to a markdown string
10796
- */
10797
- readonly stringify: (tree: Root) => Effect.Effect<string>;
10798
- }
10799
- declare const MarkdownService_base: Context.ServiceClass<MarkdownService, "MarkdownService", MarkdownServiceShape>;
10800
- /**
10801
- * Effect service tag for markdown parsing and stringification.
10802
- *
10803
- * Provides dependency-injected access to markdown parse/stringify operations.
10804
- * Use `yield* MarkdownService` inside an `Effect.gen` block to obtain the
10805
- * service instance.
10806
- *
10807
- * @remarks
10808
- * This tag follows the standard Effect `Context.Service` pattern. The
10809
- * {@link MarkdownLive} layer provides the default implementation backed by
10810
- * the remark/unified pipeline. For testing, you can supply a custom layer
10811
- * via `Layer.succeed(MarkdownService, { parse: ..., stringify: ... })`.
10812
- *
10813
- * @example
10814
- * ```typescript
10815
- * import { Effect } from "effect";
10816
- * import { MarkdownService, MarkdownLive } from "\@savvy-web/changesets";
10817
- *
10818
- * const program = Effect.gen(function* () {
10819
- * const md = yield* MarkdownService;
10820
- * const tree = yield* md.parse("# Hello\n\nWorld");
10821
- * const output = yield* md.stringify(tree);
10822
- * console.log(output); // "# Hello\n\nWorld\n"
10823
- * });
10824
- *
10825
- * Effect.runPromise(program.pipe(Effect.provide(MarkdownLive)));
10826
- * ```
10827
- *
10828
- * @see {@link MarkdownServiceShape} for the service interface
10829
- * @see {@link MarkdownLive} for the production layer
10830
- *
10831
- * @public
10832
- */
10833
- declare class MarkdownService extends MarkdownService_base {}
10834
- /**
10835
- * Production layer for {@link MarkdownService}.
10836
- *
10837
- * Wraps the remark-pipeline utility functions (`parseMarkdown` and
10838
- * `stringifyMarkdown`) in `Effect.sync` for use in Effect programs.
10839
- * Both operations are synchronous and infallible.
10840
- *
10841
- * @remarks
10842
- * This layer is composed with {@link GitHubLive} in the
10843
- * `\@savvy-web/changesets/changelog` entry point to form the `MainLayer`
10844
- * that powers the Changesets API integration.
10845
- *
10846
- * @example
10847
- * ```typescript
10848
- * import { Effect, Layer } from "effect";
10849
- * import { MarkdownService, MarkdownLive } from "\@savvy-web/changesets";
10850
- *
10851
- * const program = Effect.gen(function* () {
10852
- * const md = yield* MarkdownService;
10853
- * const tree = yield* md.parse("**bold** text");
10854
- * return yield* md.stringify(tree);
10855
- * });
10856
- *
10857
- * Effect.runPromise(program.pipe(Effect.provide(MarkdownLive)));
10858
- * ```
10859
- *
10860
- * @public
10861
- */
10862
- declare const MarkdownLive: Layer.Layer<MarkdownService, never, never>;
10863
- //#endregion
10864
11194
  //#region src/changesets/services/changelog.d.ts
10865
11195
  /**
10866
11196
  * Service interface for changelog formatting.
@@ -10872,7 +11202,7 @@ declare const MarkdownLive: Layer.Layer<MarkdownService, never, never>;
10872
11202
  * @remarks
10873
11203
  * Both methods return `Effect.Effect` values that require additional
10874
11204
  * services in their environment (`R` channel). `formatReleaseLine` needs
10875
- * both {@link GitHubService} (for commit metadata) and {@link MarkdownService}
11205
+ * {@link GitHubService} (for commit metadata)
10876
11206
  * (for markdown parsing), while `formatDependencyReleaseLine` only needs
10877
11207
  * {@link GitHubService}.
10878
11208
  *
@@ -10887,7 +11217,7 @@ interface ChangelogServiceShape {
10887
11217
  * @param options - Validated changeset configuration options (must include `repo`)
10888
11218
  * @returns An `Effect` that resolves to a formatted markdown string
10889
11219
  */
10890
- readonly formatReleaseLine: (changeset: NewChangesetWithCommit, versionType: VersionType$1, options: ChangesetOptions) => Effect.Effect<string, never, GitHubService | MarkdownService>;
11220
+ readonly formatReleaseLine: (changeset: NewChangesetWithCommit, versionType: VersionType$1, options: ChangesetOptions) => Effect.Effect<string, never, GitHubService>;
10891
11221
  /**
10892
11222
  * Format dependency update release lines as a markdown table.
10893
11223
  *
@@ -10916,7 +11246,7 @@ declare const ChangelogService_base: Context.ServiceClass<ChangelogService, "Cha
10916
11246
  * ```typescript
10917
11247
  * import { Effect } from "effect";
10918
11248
  * import type { ChangesetOptions } from "\@savvy-web/changesets";
10919
- * import { ChangelogService, GitHubLive, MarkdownLive } from "\@savvy-web/changesets";
11249
+ * import { ChangelogService, GitHubLive } from "\@savvy-web/changesets";
10920
11250
  *
10921
11251
  * const program = Effect.gen(function* () {
10922
11252
  * const changelog = yield* ChangelogService;
@@ -12997,7 +13327,7 @@ declare const RequiredSectionsRule$2: Plugin<Root, unknown>;
12997
13327
  //#region src/changesets/remark/rules/uncategorized-content.d.ts
12998
13328
  declare const UncategorizedContentRule$2: Plugin<Root, unknown>;
12999
13329
  declare namespace index_d_exports {
13000
- export { AggregateDependencyTablesPlugin, AppliedRelease, AppliedReleaseEntrySchema, AppliedReleaseSchema, BranchAnalysis, BranchAnalysisSchema, BranchAnalyzer, BranchAnalyzerLive, BranchAnalyzerShape, BranchFileEntry, BranchFileEntrySchema, BumpType, BumpTypeSchema, Categories, Changelog, ChangelogService, ChangelogServiceShape, ChangelogTransformer, Changeset, ChangesetIOError, ChangesetLinter, ChangesetOptions, ChangesetOptionsSchema, ChangesetPreview, ChangesetPreviewSchema, ChangesetSchema, ChangesetSummarySchema, ChangesetValidationError, Classification, ClassificationReason, ClassificationReasonSchema, ClassificationSchema, CommitHashSchema, ConfigInspector, ConfigInspectorLive, ConfigInspectorShape, ConfigurationError, ContentStructureRule$2 as ContentStructureRule, ContributorFootnotesPlugin, DeduplicateItemsPlugin, DependencyAction, DependencyActionSchema, DependencyTable, DependencyTableFormatRule$2 as DependencyTableFormatRule, DependencyTableRow, DependencyTableRowSchema, DependencyTableSchema, DependencyTableType, DependencyTableTypeSchema, DependencyType, DependencyTypeSchema, DependencyUpdate, DependencyUpdateSchema, DepsRegen, DepsRegenDefault, DepsRegenLive, DepsRegenOptions, DepsRegenPlanError, DepsRegenShape, FileStatus, FileStatusSchema, GitError, GitHubApiError, GitHubCommitInfo, GitHubInfo, GitHubInfoSchema, GitHubLive, GitHubService, GitHubServiceShape, GlobSchema, HeadingHierarchyRule$2 as HeadingHierarchyRule, InspectedConfig, InspectedConfigSchema, IssueLinkRefsPlugin, IssueNumberSchema, JsonPathSchema, LegacyVersionFileConfig, LegacyVersionFileConfigSchema, LegacyVersionFilesSchema, LintMessage, MaintenanceNoteOptions, MaintenanceNotePlugin, MaintenanceReason, MaintenanceReasonSchema, MaintenanceTrigger, MaintenanceTriggerSchema, MarkdownLive, MarkdownParseError, MarkdownService, MarkdownServiceShape, ContentStructureRule$1 as MarkdownlintContentStructureRule, DependencyTableFormatRule$1 as MarkdownlintDependencyTableFormatRule, HeadingHierarchyRule$1 as MarkdownlintHeadingHierarchyRule, RequiredSectionsRule$1 as MarkdownlintRequiredSectionsRule, UncategorizedContentRule$1 as MarkdownlintUncategorizedContentRule, MergeSectionsPlugin, NonEmptyString, NormalizeFormatPlugin, PackageScope, PackageScopeSchema, PackagesRecordSchema, PendingChangeset, PendingChangesetSchema, PositiveInteger, PreviewRelease, PreviewReleaseSchema, RegenPlan, RegenResult, ReleasePlanError, ReleasePlanner, ReleasePlannerLive, ReleasePlannerShape, ReorderSectionsPlugin, RepoSchema, RequiredSectionsRule$2 as RequiredSectionsRule, ResolvedPackageScope, ResolvedPackageScopeSchema, ResolvedVersionFile, ResolvedVersionFileSchema, SectionCategory, SectionCategorySchema, SilkChangesetPreset, SilkChangesetTransformPreset, SilkChangesetsRules$1 as SilkChangesetsRules, TransformOptions, UncategorizedContentRule$2 as UncategorizedContentRule, UrlOrMarkdownLinkSchema, UsernameSchema, VERSION_RE, VersionFileConfig, VersionFileConfigSchema, VersionFileError, VersionFileUpdate, VersionFileUpdateRecordSchema, VersionFiles, VersionFilesSchema, VersionOrEmptySchema, VersionType, VersionTypeSchema, WorkspaceDependencyDiff, WorkspaceVersion, changelogFunctions, computeWorkspaceDependencyDiffs, deriveMaintenanceReason, gitMergeBase, isPureDependencyChangeset, listPublishablePackageNames, makeBranchAnalyzerTest, makeConfigInspectorTest, makeDepsRegenDefault, makeGitHubTest, makeReleasePlannerTest, serializeDependencyTableToMarkdown };
13330
+ export { AggregateDependencyTablesPlugin, AppliedRelease, AppliedReleaseEntrySchema, AppliedReleaseSchema, BranchAnalysis, BranchAnalysisSchema, BranchAnalyzer, BranchAnalyzerLive, BranchAnalyzerShape, BranchFileEntry, BranchFileEntrySchema, BumpType, BumpTypeSchema, Categories, Changelog, ChangelogService, ChangelogServiceShape, ChangelogTransformer, Changeset, ChangesetIOError, ChangesetLinter, ChangesetOptions, ChangesetOptionsSchema, ChangesetPreview, ChangesetPreviewSchema, ChangesetSchema, ChangesetSummarySchema, ChangesetValidationError, Classification, ClassificationReason, ClassificationReasonSchema, ClassificationSchema, CommitHashSchema, ConfigInspector, ConfigInspectorLive, ConfigInspectorShape, ConfigurationError, ContentStructureRule$2 as ContentStructureRule, ContributorFootnotesPlugin, DeduplicateItemsPlugin, DependencyAction, DependencyActionSchema, DependencyTable, DependencyTableFormatRule$2 as DependencyTableFormatRule, DependencyTableRow, DependencyTableRowSchema, DependencyTableSchema, DependencyTableType, DependencyTableTypeSchema, DependencyType, DependencyTypeSchema, DependencyUpdate, DependencyUpdateSchema, DepsRegen, DepsRegenDefault, DepsRegenLive, DepsRegenOptions, DepsRegenPlanError, DepsRegenShape, FileStatus, FileStatusSchema, GitError, GitHubApiError, GitHubCommitInfo, GitHubInfo, GitHubInfoSchema, GitHubLive, GitHubService, GitHubServiceShape, GlobSchema, HeadingHierarchyRule$2 as HeadingHierarchyRule, InspectedConfig, InspectedConfigSchema, IssueLinkRefsPlugin, IssueNumberSchema, JsonPathSchema, LegacyVersionFileConfig, LegacyVersionFileConfigSchema, LegacyVersionFilesSchema, LintMessage, MaintenanceNoteOptions, MaintenanceNotePlugin, MaintenanceReason, MaintenanceReasonSchema, MaintenanceTrigger, MaintenanceTriggerSchema, MarkdownParseError, ContentStructureRule$1 as MarkdownlintContentStructureRule, DependencyTableFormatRule$1 as MarkdownlintDependencyTableFormatRule, HeadingHierarchyRule$1 as MarkdownlintHeadingHierarchyRule, RequiredSectionsRule$1 as MarkdownlintRequiredSectionsRule, UncategorizedContentRule$1 as MarkdownlintUncategorizedContentRule, MergeSectionsPlugin, NonEmptyString, NormalizeFormatPlugin, PackageScope, PackageScopeSchema, PackagesRecordSchema, PendingChangeset, PendingChangesetSchema, PositiveInteger, PreviewRelease, PreviewReleaseSchema, RegenPlan, RegenResult, ReleasePlanError, ReleasePlanner, ReleasePlannerLive, ReleasePlannerShape, ReorderSectionsPlugin, RepoSchema, RequiredSectionsRule$2 as RequiredSectionsRule, ResolvedPackageScope, ResolvedPackageScopeSchema, ResolvedVersionFile, ResolvedVersionFileSchema, SectionCategory, SectionCategorySchema, SilkChangesetPreset, SilkChangesetTransformPreset, SilkChangesetsRules$1 as SilkChangesetsRules, TransformOptions, UncategorizedContentRule$2 as UncategorizedContentRule, UrlOrMarkdownLinkSchema, UsernameSchema, VERSION_RE, VersionFileConfig, VersionFileConfigSchema, VersionFileError, VersionFileUpdate, VersionFileUpdateRecordSchema, VersionFiles, VersionFilesSchema, VersionOrEmptySchema, VersionType, VersionTypeSchema, WorkspaceDependencyDiff, WorkspaceVersion, changelogFunctions, computeWorkspaceDependencyDiffs, deriveMaintenanceReason, gitMergeBase, isPureDependencyChangeset, listPublishablePackageNames, makeBranchAnalyzerTest, makeConfigInspectorTest, makeDepsRegenDefault, makeGitHubTest, makeReleasePlannerTest, serializeDependencyTableToMarkdown };
13001
13331
  }
13002
13332
  //#endregion
13003
13333
  //#region src/changesets/markdownlint.d.ts