@savvy-web/silk 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2329,7 +2329,7 @@ var GlobSet = class GlobSet extends Schema.Class("GlobSet")(Schema.Struct({ patt
2329
2329
  };
2330
2330
 
2331
2331
  //#endregion
2332
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/BunExtension.js
2332
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/BunExtension.js
2333
2333
  /**
2334
2334
  * Extension data specific to bun lockfiles, attached to `Lockfile.extension`
2335
2335
  * when the format is `"bun"`.
@@ -4146,7 +4146,7 @@ const IntegrityHash = Object.assign(brandedIntegrity, {
4146
4146
  });
4147
4147
 
4148
4148
  //#endregion
4149
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/ImporterDependency.js
4149
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/ImporterDependency.js
4150
4150
  /**
4151
4151
  * One declared dependency of one workspace importer, as the lockfile records it.
4152
4152
  *
@@ -4175,7 +4175,7 @@ var ImporterDependency = class extends Schema.Class("ImporterDependency")({
4175
4175
  }) {};
4176
4176
 
4177
4177
  //#endregion
4178
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/LockfileImporter.js
4178
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/LockfileImporter.js
4179
4179
  /**
4180
4180
  * One workspace importer's declared dependencies, as the lockfile records them.
4181
4181
  *
@@ -4200,7 +4200,7 @@ var LockfileImporter = class extends Schema.Class("LockfileImporter")({
4200
4200
  }) {};
4201
4201
 
4202
4202
  //#endregion
4203
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/ResolvedPackage.js
4203
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/ResolvedPackage.js
4204
4204
  const EMPTY_DEPENDENCIES = {};
4205
4205
  /**
4206
4206
  * A package resolved from a lockfile.
@@ -4236,7 +4236,7 @@ var ResolvedPackage = class extends Schema.Class("ResolvedPackage")({
4236
4236
  }) {};
4237
4237
 
4238
4238
  //#endregion
4239
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/WorkspaceDependency.js
4239
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/WorkspaceDependency.js
4240
4240
  /**
4241
4241
  * A directed dependency edge between two workspace packages as recorded in
4242
4242
  * the lockfile.
@@ -4259,7 +4259,7 @@ var WorkspaceDependency = class extends Schema.Class("WorkspaceDependency")({
4259
4259
  }) {};
4260
4260
 
4261
4261
  //#endregion
4262
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/PnpmExtension.js
4262
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/PnpmExtension.js
4263
4263
  /**
4264
4264
  * Extension data specific to pnpm lockfiles, attached to `Lockfile.extension`
4265
4265
  * when the format is `"pnpm"`.
@@ -4285,7 +4285,7 @@ var PnpmExtension = class extends Schema.Class("PnpmExtension")({
4285
4285
  }) {};
4286
4286
 
4287
4287
  //#endregion
4288
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/LockfileFormat.js
4288
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/LockfileFormat.js
4289
4289
  /**
4290
4290
  * The lockfile formats this package parses: bun's `bun.lock` (JSONC), npm's
4291
4291
  * `package-lock.json` (v2/v3 JSON), pnpm's `pnpm-lock.yaml` and yarn Berry's
@@ -4320,7 +4320,7 @@ const FILENAMES = {
4320
4320
  const filenameFor = (format) => FILENAMES[format];
4321
4321
 
4322
4322
  //#endregion
4323
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/internal/shared.js
4323
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/internal/shared.js
4324
4324
  /**
4325
4325
  * The four dependency sections of a manifest, in a stable order — the shared
4326
4326
  * dependency-sections table (v3's `DEP_SECTIONS`). Each entry is both the
@@ -4447,7 +4447,7 @@ const extractWorkspaceDeps = (workspaces, workspaceNames) => {
4447
4447
  };
4448
4448
 
4449
4449
  //#endregion
4450
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/JsoncNode.js
4450
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/JsoncNode.js
4451
4451
  /**
4452
4452
  * Discriminator values for JSONC AST node types: the JSON value types
4453
4453
  * (`string`/`number`/`boolean`/`null`), the structural types
@@ -4623,7 +4623,7 @@ function evaluateNode(node, depth) {
4623
4623
  }
4624
4624
 
4625
4625
  //#endregion
4626
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/scanner.js
4626
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/scanner.js
4627
4627
  const isWhitespace = (ch) => ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch === 65279;
4628
4628
  const isLineBreak$1 = (ch) => ch === 10 || ch === 13 || ch === 8232 || ch === 8233;
4629
4629
  const isDigit$1 = (ch) => ch >= 48 && ch <= 57;
@@ -4920,7 +4920,7 @@ const createScanner$2 = (text, ignoreTrivia = false) => {
4920
4920
  };
4921
4921
 
4922
4922
  //#endregion
4923
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/skip.js
4923
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/skip.js
4924
4924
  /**
4925
4925
  * Iteratively consume the value beginning at the cursor's current token and
4926
4926
  * return its tight end offset (excludes trailing whitespace/comments).
@@ -4951,7 +4951,7 @@ const skipBalancedValue = (cursor) => {
4951
4951
  };
4952
4952
 
4953
4953
  //#endregion
4954
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/parser.js
4954
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/parser.js
4955
4955
  /**
4956
4956
  * The public parse-error code vocabulary. The facade builds its `@public`
4957
4957
  * `JsoncParseErrorCode` schema from this array; the parser produces these codes
@@ -5365,7 +5365,7 @@ const parseTree$2 = (text, flags) => {
5365
5365
  };
5366
5366
 
5367
5367
  //#endregion
5368
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/Jsonc.js
5368
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/Jsonc.js
5369
5369
  /**
5370
5370
  * The single public parse-error code vocabulary, appearing as the `code` field
5371
5371
  * of {@link JsoncParseErrorDetail}.
@@ -5504,9 +5504,56 @@ const deepEqual = (a, b, depth = 0) => {
5504
5504
  var Jsonc = class Jsonc {
5505
5505
  constructor() {}
5506
5506
  /**
5507
+ * Parse JSONC into a plain JavaScript value, synchronously, returning a
5508
+ * `Result` instead of an `Effect`. Same error-recovery semantics as
5509
+ * {@link Jsonc.parse}: every parse error is collected and the failure side
5510
+ * carries one aggregate {@link JsoncParseError}. Pure — parsing is
5511
+ * fundamentally synchronous, so non-Effect consumers (a plain config
5512
+ * loader, a build script) can call this directly instead of wrapping
5513
+ * `Effect.runSync(Effect.result(Jsonc.parse(text)))`.
5514
+ *
5515
+ * @remarks
5516
+ * {@link Jsonc.parse} is defined in terms of this function; the two never
5517
+ * diverge. Reach for the `Effect` variant inside Effect code — it carries
5518
+ * the `Jsonc.parse` tracing span — and for this one at synchronous
5519
+ * boundaries.
5520
+ *
5521
+ * @example
5522
+ * ```ts
5523
+ * import { Jsonc } from "@effected/jsonc";
5524
+ * import { Result } from "effect";
5525
+ *
5526
+ * const ok = Jsonc.parseResult('{ "port": 3000 // dev\n }');
5527
+ * if (Result.isSuccess(ok)) {
5528
+ * console.log(ok.success); // => { port: 3000 }
5529
+ * }
5530
+ *
5531
+ * const bad = Jsonc.parseResult("{ bad }");
5532
+ * if (Result.isFailure(bad)) {
5533
+ * console.log(bad.failure._tag); // => "JsoncParseError"
5534
+ * }
5535
+ * ```
5536
+ *
5537
+ * @param text - The JSONC source to parse.
5538
+ * @param options - Optional {@link JsoncParseOptions}; defaults apply for
5539
+ * omitted fields.
5540
+ * @returns A `Result` succeeding with the decoded value (`unknown`, never
5541
+ * `any`), or failing with the aggregate {@link JsoncParseError}.
5542
+ */
5543
+ static parseResult(text, options) {
5544
+ const { value, errors } = parseValue(text, toFlags(options));
5545
+ if (errors.length > 0) return Result.fail(new JsoncParseError({
5546
+ errors: toDetails(text, errors),
5547
+ input: text
5548
+ }));
5549
+ return Result.succeed(value);
5550
+ }
5551
+ /**
5507
5552
  * Parse JSONC into a plain JavaScript value. Error-recovery parsing:
5508
5553
  * collects every parse error and fails once with the aggregate
5509
- * {@link JsoncParseError}. Returns `unknown`, never `any`.
5554
+ * {@link JsoncParseError}. Returns `unknown`, never `any`. Defined in terms
5555
+ * of {@link Jsonc.parseResult} — synchronous callers can use that variant
5556
+ * directly.
5510
5557
  *
5511
5558
  * @param text - The JSONC source to parse.
5512
5559
  * @param options - Optional {@link JsoncParseOptions}; defaults apply for
@@ -5514,14 +5561,7 @@ var Jsonc = class Jsonc {
5514
5561
  * @returns An `Effect` that succeeds with the decoded value, or fails with
5515
5562
  * the aggregate {@link JsoncParseError}.
5516
5563
  */
5517
- static parse = Effect.fn("Jsonc.parse")(function* (text, options) {
5518
- const { value, errors } = parseValue(text, toFlags(options));
5519
- if (errors.length > 0) return yield* new JsoncParseError({
5520
- errors: toDetails(text, errors),
5521
- input: text
5522
- });
5523
- return value;
5524
- });
5564
+ static parse = Effect.fn("Jsonc.parse")((text, options) => Effect.fromResult(Jsonc.parseResult(text, options)));
5525
5565
  /**
5526
5566
  * Parse JSONC into an immutable {@link JsoncNode} AST. `Option.none()` for
5527
5567
  * empty input (with `allowEmptyContent`); the aggregate
@@ -5666,7 +5706,7 @@ var Jsonc = class Jsonc {
5666
5706
  };
5667
5707
 
5668
5708
  //#endregion
5669
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/JsoncEdit.js
5709
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/JsoncEdit.js
5670
5710
  /**
5671
5711
  * A range within a JSONC document, expressed as a zero-based character
5672
5712
  * `offset` and a `length` in UTF-16 code units. Pass to `JsoncFormatter.format`
@@ -5731,7 +5771,7 @@ var JsoncEdit = class extends Schema.Class("JsoncEdit")({
5731
5771
  };
5732
5772
 
5733
5773
  //#endregion
5734
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/navigate.js
5774
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/internal/navigate.js
5735
5775
  /**
5736
5776
  * Resolve `path` against `text`, returning where the target is (or where it
5737
5777
  * would be inserted). `path` must be non-empty — the whole-document case is
@@ -5859,7 +5899,7 @@ function navigate(text, path) {
5859
5899
  }
5860
5900
 
5861
5901
  //#endregion
5862
- //#region ../../node_modules/.pnpm/@effected+jsonc@0.2.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/JsoncModifier.js
5902
+ //#region ../../node_modules/.pnpm/@effected+jsonc@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/jsonc/JsoncModifier.js
5863
5903
  /**
5864
5904
  * Raised when `JsoncModifier.modify` cannot navigate the requested path: the
5865
5905
  * value at `depth` is not the container kind (`expected`) the next path segment
@@ -5988,7 +6028,7 @@ var JsoncModifier = class {
5988
6028
  };
5989
6029
 
5990
6030
  //#endregion
5991
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/internal/bun.js
6031
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/internal/bun.js
5992
6032
  const DepRecord$2 = Schema.optionalKey(Schema.Record(Schema.String, Schema.String));
5993
6033
  const BunWorkspaceEntry = Schema.Struct({
5994
6034
  name: Schema.optionalKey(Schema.String),
@@ -6082,7 +6122,7 @@ const toFields$3 = (raw) => Effect.gen(function* () {
6082
6122
  });
6083
6123
 
6084
6124
  //#endregion
6085
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/internal/npm.js
6125
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/internal/npm.js
6086
6126
  const DepRecord$1 = Schema.optionalKey(Schema.Record(Schema.String, Schema.String));
6087
6127
  const NpmPackageEntry = Schema.Struct({
6088
6128
  name: Schema.optionalKey(Schema.String),
@@ -6181,7 +6221,7 @@ const toFields$2 = (raw) => Effect.gen(function* () {
6181
6221
  });
6182
6222
 
6183
6223
  //#endregion
6184
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/YamlNode.js
6224
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/YamlNode.js
6185
6225
  /**
6186
6226
  * YAML scalar presentation styles.
6187
6227
  *
@@ -6574,7 +6614,7 @@ function nodeToValue(node, anchors, budget, counting = false) {
6574
6614
  }
6575
6615
 
6576
6616
  //#endregion
6577
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/diagnostics.js
6617
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/diagnostics.js
6578
6618
  /** Error codes emitted by the lexer stage. */
6579
6619
  const YAML_LEX_ERROR_CODES = [
6580
6620
  "UnexpectedCharacter",
@@ -6653,7 +6693,7 @@ function isFatalCode(code) {
6653
6693
  }
6654
6694
 
6655
6695
  //#endregion
6656
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/YamlDiagnostic.js
6696
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/YamlDiagnostic.js
6657
6697
  /**
6658
6698
  * Error codes emitted by the lexer stage.
6659
6699
  *
@@ -6775,7 +6815,7 @@ function lineChar(text, offset) {
6775
6815
  }
6776
6816
 
6777
6817
  //#endregion
6778
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/anchors.js
6818
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/anchors.js
6779
6819
  /**
6780
6820
  * Check if a pending anchor is being applied to an alias node (invalid in YAML 1.2 §3.2.2).
6781
6821
  * Aliases represent references to existing anchored nodes and cannot have their own anchors.
@@ -6869,7 +6909,7 @@ function collectAnchors(node, anchors) {
6869
6909
  }
6870
6910
 
6871
6911
  //#endregion
6872
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/lexer.js
6912
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/lexer.js
6873
6913
  /**
6874
6914
  * Create a new YAML scanner for the given source text.
6875
6915
  *
@@ -7827,7 +7867,7 @@ function lexAll(text) {
7827
7867
  }
7828
7868
 
7829
7869
  //#endregion
7830
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/cst-parser.js
7870
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/cst-parser.js
7831
7871
  /**
7832
7872
  * Hardening: cap CST nesting so hostile inputs cannot overflow the stack
7833
7873
  * while the tree is being BUILT. Set slightly above the composer's
@@ -8540,7 +8580,7 @@ function parseCSTAll(text) {
8540
8580
  }
8541
8581
 
8542
8582
  //#endregion
8543
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/state.js
8583
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/state.js
8544
8584
  let lineStartsText;
8545
8585
  let lineStartsCache = [];
8546
8586
  function getLineStarts(text) {
@@ -8647,7 +8687,7 @@ function exitNesting(state) {
8647
8687
  }
8648
8688
 
8649
8689
  //#endregion
8650
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/tags.js
8690
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/tags.js
8651
8691
  /**
8652
8692
  * Resolve a tag shorthand using the document's %TAG directives.
8653
8693
  * For example, with `%TAG !! tag:example.com,2000:app/`, the tag `!!int`
@@ -8734,7 +8774,7 @@ function validateTagHandlesInDocument(docCst, state) {
8734
8774
  }
8735
8775
 
8736
8776
  //#endregion
8737
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/scalars.js
8777
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/scalars.js
8738
8778
  const NULL_RE$1 = /^(?:null|Null|NULL|~)$/;
8739
8779
  const TRUE_RE$1 = /^(?:true|True|TRUE)$/;
8740
8780
  const FALSE_RE$1 = /^(?:false|False|FALSE)$/;
@@ -9613,7 +9653,7 @@ function shouldPreserveRaw(rawValue, value) {
9613
9653
  }
9614
9654
 
9615
9655
  //#endregion
9616
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/block.js
9656
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/block.js
9617
9657
  /**
9618
9658
  * Compose a block map from its CST children, with an optional external first key.
9619
9659
  *
@@ -10762,7 +10802,7 @@ function composeFlatBlockMap(children, startIdx, parentCst, state, externalFirst
10762
10802
  }
10763
10803
 
10764
10804
  //#endregion
10765
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/flow.js
10805
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/flow.js
10766
10806
  /**
10767
10807
  * Validate that flow collection entries are separated by commas.
10768
10808
  *
@@ -11155,7 +11195,7 @@ function composeFlowSeqInner(cst, state, meta, parentBlockColumn) {
11155
11195
  }
11156
11196
 
11157
11197
  //#endregion
11158
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/document.js
11198
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/composer/document.js
11159
11199
  /** The flow-composer dispatch wired into every state this module creates. */
11160
11200
  const FLOW = {
11161
11201
  composeFlowMap,
@@ -11822,7 +11862,7 @@ function composeAllDocuments(text, options) {
11822
11862
  }
11823
11863
 
11824
11864
  //#endregion
11825
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/fold.js
11865
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/fold.js
11826
11866
  /**
11827
11867
  * Column-based line folding for a single logical scalar line (YAML 1.2 flow
11828
11868
  * folding, §7.3 / §8.2.1). Breaks the content at "safe" single-space
@@ -12059,7 +12099,7 @@ function renderBlockFolded(s, indent) {
12059
12099
  }
12060
12100
 
12061
12101
  //#endregion
12062
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/stringifier.js
12102
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/internal/stringifier.js
12063
12103
  /**
12064
12104
  * Thrown by the stringifier on its failure paths (circular references). The
12065
12105
  * facade catches this and materializes the public stringify error.
@@ -12424,7 +12464,7 @@ function stringifyValue(value, options) {
12424
12464
  }
12425
12465
 
12426
12466
  //#endregion
12427
- //#region ../../node_modules/.pnpm/@effected+yaml@0.3.0_effect@4.0.0-beta.98/node_modules/@effected/yaml/Yaml.js
12467
+ //#region ../../node_modules/.pnpm/@effected+yaml@0.3.1_effect@4.0.0-beta.98/node_modules/@effected/yaml/Yaml.js
12428
12468
  /**
12429
12469
  * Options controlling parse behavior. All fields are omissible; absent fields
12430
12470
  * resolve to `strict` `true`, `maxAliasCount` `100` (the alias-based
@@ -12462,7 +12502,9 @@ var YamlParseOptions = class extends Schema.Class("YamlParseOptions")({
12462
12502
  * no-fold behavior; a positive value folds long plain, double-quoted and
12463
12503
  * block-folded (`>`) scalars at approximately that column, inserting only
12464
12504
  * semantically transparent line breaks. Block-literal (`|`) content is never
12465
- * folded — literal blocks preserve their bytes by definition.
12505
+ * folded — literal blocks preserve their bytes by definition. Folding is a
12506
+ * value-path feature only: `YamlDocument#stringify` and the `YamlFormat`
12507
+ * helpers accept these options but do not fold (see `lineWidth`).
12466
12508
  *
12467
12509
  * `indentSequences` controls the presentation of block sequences nested under
12468
12510
  * a mapping key: `false` (the default) emits them at the key's column — the
@@ -12493,6 +12535,15 @@ var YamlStringifyOptions = class extends Schema.Class("YamlStringifyOptions")({
12493
12535
  * Column at which to fold long scalars. Default `0` (and any value `<= 0`)
12494
12536
  * never wraps; a positive value folds plain, double-quoted and block-folded
12495
12537
  * (`>`) scalars at approximately that column, never block-literal (`|`).
12538
+ *
12539
+ * Takes effect only through {@link Yaml.stringify} and
12540
+ * {@link Yaml.stringifySync} — the two entry points that accept these
12541
+ * options on the value path. The schema factories ({@link Yaml.fromString},
12542
+ * {@link Yaml.schema}, {@link Yaml.YamlFromString}) encode with default
12543
+ * stringify options (`lineWidth` `0`), so their output never folds. The
12544
+ * document/node path — `YamlDocument#stringify` and the `YamlFormat`
12545
+ * helpers built on it — threads the field into its render context but
12546
+ * never reads it, so it is inert there.
12496
12547
  */
12497
12548
  lineWidth: Schema.optionalKey(Schema.Number),
12498
12549
  defaultScalarStyle: Schema.optionalKey(ScalarStyle),
@@ -12599,7 +12650,7 @@ const stringifyDefectToError = (defect, value) => {
12599
12650
  });
12600
12651
  };
12601
12652
  /**
12602
- * Synchronous single-document parse returning a {@link Result}. The pure
12653
+ * Synchronous single-document parse returning a `Result`. The pure
12603
12654
  * engine bypasses the Effect runtime entirely: the composer, the failure
12604
12655
  * collection and the alias-expansion budget all run inline, and every failure
12605
12656
  * mode (fatal diagnostics, duplicate keys, a "billion laughs" blow-up) yields
@@ -12621,7 +12672,7 @@ const parseSyncImpl = (text, options) => {
12621
12672
  }
12622
12673
  };
12623
12674
  /**
12624
- * Synchronous stringify returning a {@link Result}. Mirrors {@link Yaml.stringify}
12675
+ * Synchronous stringify returning a `Result`. Mirrors {@link Yaml.stringify}
12625
12676
  * without the Effect wrapper: a circular reference or a value nested past the
12626
12677
  * recursion budget yields a `Failure` carrying a typed {@link YamlStringifyError},
12627
12678
  * never a thrown defect.
@@ -12751,7 +12802,7 @@ var Yaml = class Yaml {
12751
12802
  return yield* stringifyOrFail(value, options);
12752
12803
  });
12753
12804
  /**
12754
- * Synchronous single-document parse, returning a {@link Result} instead of
12805
+ * Synchronous single-document parse, returning a `Result` instead of
12755
12806
  * an `Effect`. A pure escape hatch for config-time callers that cannot
12756
12807
  * `await` an Effect (a `vitest.config.ts` is the motivating case): it runs
12757
12808
  * the same engine as {@link Yaml.parse} inline.
@@ -12780,7 +12831,7 @@ var Yaml = class Yaml {
12780
12831
  return parseSyncImpl(text, options);
12781
12832
  }
12782
12833
  /**
12783
- * Synchronous stringify, returning a {@link Result} instead of an `Effect`.
12834
+ * Synchronous stringify, returning a `Result` instead of an `Effect`.
12784
12835
  * The pure counterpart to {@link Yaml.stringify} for config-time callers
12785
12836
  * that cannot `await`.
12786
12837
  *
@@ -12987,7 +13038,7 @@ function deepEqualValues(a, b) {
12987
13038
  }
12988
13039
 
12989
13040
  //#endregion
12990
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/internal/documents.js
13041
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/internal/documents.js
12991
13042
  /**
12992
13043
  * An empty YAML document composes to `null` (`Yaml.parseAll("")` is `[null]`,
12993
13044
  * and the trailing document of an env-only `pnpm-lock.yaml` is `null` too).
@@ -13058,7 +13109,7 @@ const selectSoleDocument = (content) => Effect.gen(function* () {
13058
13109
  });
13059
13110
 
13060
13111
  //#endregion
13061
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/internal/pnpm.js
13112
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/internal/pnpm.js
13062
13113
  const PnpmImporterDeps = Schema.optionalKey(Schema.Record(Schema.String, Schema.Struct({
13063
13114
  specifier: Schema.String,
13064
13115
  version: Schema.String
@@ -13185,7 +13236,7 @@ const toFields$1 = (raw) => Effect.gen(function* () {
13185
13236
  });
13186
13237
 
13187
13238
  //#endregion
13188
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/internal/yarn.js
13239
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/internal/yarn.js
13189
13240
  const YarnLockfileRaw = Schema.Record(Schema.String, Schema.Unknown);
13190
13241
  const DepRecord = Schema.optionalKey(Schema.Record(Schema.String, Schema.String));
13191
13242
  const YarnEntry = Schema.Struct({
@@ -13309,7 +13360,7 @@ const cleanYarnDeps = (deps) => {
13309
13360
  };
13310
13361
 
13311
13362
  //#endregion
13312
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/Lockfile.js
13363
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/Lockfile.js
13313
13364
  const EMPTY_IMPORTERS = [];
13314
13365
  /**
13315
13366
  * Failure of `Lockfile.parse`: the given content is not a valid lockfile of
@@ -13554,7 +13605,7 @@ var Lockfile = class Lockfile extends Schema.Class("Lockfile")({
13554
13605
  };
13555
13606
 
13556
13607
  //#endregion
13557
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.3_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__@effected+npm@0.2_2bd071ae657036cda4f0e368b3590d06/node_modules/@effected/lockfiles/LockfileIntegrity.js
13608
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.1.4_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__@effected+npm@0.2_7fc50d596abf9879356de67fd92b0252/node_modules/@effected/lockfiles/LockfileIntegrity.js
13558
13609
  /**
13559
13610
  * The minimal manifest shape {@link LockfileIntegrity.compare} checks a
13560
13611
  * lockfile against: a package name plus the four optional dependency maps.
@@ -15528,7 +15579,7 @@ var Package = class Package extends Schema.Class("Package")({
15528
15579
  };
15529
15580
 
15530
15581
  //#endregion
15531
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspacePackage.js
15582
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspacePackage.js
15532
15583
  const EMPTY$1 = Object.freeze(Object.create(null));
15533
15584
  const EMPTY_MANIFEST = Object.freeze(Object.create(null));
15534
15585
  /**
@@ -16018,7 +16069,7 @@ const Walker$1 = {
16018
16069
  };
16019
16070
 
16020
16071
  //#endregion
16021
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceRoot.js
16072
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceRoot.js
16022
16073
  /**
16023
16074
  * The marker filenames {@link WorkspaceRoot} probes for, in priority order.
16024
16075
  *
@@ -16104,7 +16155,7 @@ var WorkspaceRoot = class WorkspaceRoot extends Context.Service()("@effected/wor
16104
16155
  };
16105
16156
 
16106
16157
  //#endregion
16107
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/limits.js
16158
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/limits.js
16108
16159
  /**
16109
16160
  * Hard ceiling on directories the enumerator will visit for one pattern set.
16110
16161
  * Guards the pathological case a depth cap alone does not: a wide, shallow
@@ -16123,7 +16174,7 @@ const MAX_ENUMERATION_ENTRIES = 1e5;
16123
16174
  const PRUNED_DIRECTORIES = /* @__PURE__ */ new Set([".git", "node_modules"]);
16124
16175
 
16125
16176
  //#endregion
16126
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/traverse.js
16177
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/traverse.js
16127
16178
  /** Directory names never descended into. */
16128
16179
  const isPruned = (entry) => PRUNED_DIRECTORIES.has(entry);
16129
16180
  /** Join root-relative POSIX segments; `""` is the root itself. */
@@ -16214,7 +16265,7 @@ var Traversal = class {
16214
16265
  };
16215
16266
 
16216
16267
  //#endregion
16217
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/enumerate.js
16268
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/enumerate.js
16218
16269
  /** Strip a trailing slash from `GlobPattern.enumerationPrefix` to get a relative directory. */
16219
16270
  const baseOf = (pattern) => pattern.enumerationPrefix.replace(/\/$/, "");
16220
16271
  /**
@@ -16285,7 +16336,7 @@ const enumerate = (root, globs, options) => Effect.gen(function* () {
16285
16336
  });
16286
16337
 
16287
16338
  //#endregion
16288
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/patterns.js
16339
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/patterns.js
16289
16340
  const stringsOf = (value) => Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : void 0;
16290
16341
  /** The `packages:` list of a `pnpm-workspace.yaml` document. Total on a parsed document. */
16291
16342
  const pnpmPatternsOf = (document) => {
@@ -16343,7 +16394,7 @@ const readPatterns = (root) => Effect.gen(function* () {
16343
16394
  });
16344
16395
 
16345
16396
  //#endregion
16346
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceDiscovery.js
16397
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceDiscovery.js
16347
16398
  /**
16348
16399
  * Raised when a workspace member's `package.json` cannot be read, parsed, or
16349
16400
  * used — it is missing, malformed, or lacks a `name` or `version`.
@@ -16641,6 +16692,109 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends Context.Service()("@ef
16641
16692
  */
16642
16693
  static layer = (options) => Layer.effect(WorkspaceDiscovery, WorkspaceDiscovery.make(options));
16643
16694
  /**
16695
+ * An in-memory test double of the service shape, with every method
16696
+ * defaulted so a test stubs only what it exercises.
16697
+ *
16698
+ * @remarks
16699
+ * The defaults model an **empty workspace**, and the derived methods run
16700
+ * over the *effective* `listPackages` — the override when one is supplied —
16701
+ * so stubbing only `listPackages` yields a consistent double:
16702
+ *
16703
+ * - `listPackages` — succeeds with `[]`.
16704
+ * - `importerMap` — derived: the packages keyed by `relativePath`.
16705
+ * - `getPackage` — derived: a name lookup that fails with the service's own
16706
+ * typed {@link PackageNotFoundError} on a miss, exactly as the live
16707
+ * implementation does.
16708
+ * - `resolveFile` / `resolveFiles` — derived: longest-prefix ownership over
16709
+ * `pkg.path`, POSIX-terminated (`"/"`); supply a win32 double explicitly
16710
+ * if your fixture paths are win32.
16711
+ * - `refresh` — a no-op (`Effect.void`); there is nothing memoized to drop.
16712
+ * - `info` — **dies** with an explanatory defect. No honest default exists
16713
+ * (a fabricated root path would leak into consumer path logic), so an
16714
+ * unstubbed `info()` call is a test-wiring mistake and fails loudly as a
16715
+ * defect rather than succeeding with a lie or failing with a dishonest
16716
+ * typed error.
16717
+ *
16718
+ * @example
16719
+ * ```ts
16720
+ * import { WorkspaceDiscovery, WorkspacePackage } from "@effected/workspaces";
16721
+ * import { Effect } from "effect";
16722
+ *
16723
+ * const double = WorkspaceDiscovery.makeTest({
16724
+ * listPackages: () =>
16725
+ * Effect.succeed([
16726
+ * WorkspacePackage.make({
16727
+ * name: "@my-org/utils",
16728
+ * version: "1.0.0",
16729
+ * path: "/repo/packages/utils",
16730
+ * packageJsonPath: "/repo/packages/utils/package.json",
16731
+ * relativePath: "packages/utils",
16732
+ * }),
16733
+ * ]),
16734
+ * });
16735
+ * // `getPackage`, `importerMap`, `resolveFile(s)` now answer consistently.
16736
+ * ```
16737
+ */
16738
+ static makeTest = (overrides = {}) => {
16739
+ const listPackages = overrides.listPackages ?? (() => Effect.succeed([]));
16740
+ const ownerOf = (filePath, all) => {
16741
+ let best;
16742
+ let bestLength = 0;
16743
+ for (const pkg of all) {
16744
+ const prefix = pkg.path.endsWith("/") ? pkg.path : `${pkg.path}/`;
16745
+ if (filePath.startsWith(prefix) && prefix.length > bestLength) {
16746
+ best = pkg;
16747
+ bestLength = prefix.length;
16748
+ }
16749
+ }
16750
+ return Option.fromUndefinedOr(best);
16751
+ };
16752
+ return {
16753
+ listPackages,
16754
+ info: () => Effect.die(/* @__PURE__ */ new Error("WorkspaceDiscovery.makeTest: info() was called but not stubbed — no honest default WorkspaceInfo exists for a test double; pass an `info` override.")),
16755
+ importerMap: () => Effect.map(listPackages(), (all) => new Map(all.map((pkg) => [pkg.relativePath, pkg]))),
16756
+ getPackage: (name) => Effect.flatMap(listPackages(), (all) => {
16757
+ const found = all.find((pkg) => pkg.name === name);
16758
+ return found !== void 0 ? Effect.succeed(found) : Effect.fail(new PackageNotFoundError({
16759
+ name,
16760
+ available: all.map((pkg) => pkg.name)
16761
+ }));
16762
+ }),
16763
+ resolveFile: (filePath) => Effect.map(listPackages(), (all) => ownerOf(filePath, all)),
16764
+ resolveFiles: (filePaths) => Effect.map(listPackages(), (all) => {
16765
+ const seen = /* @__PURE__ */ new Map();
16766
+ for (const filePath of filePaths) {
16767
+ const owner = ownerOf(filePath, all);
16768
+ if (Option.isSome(owner)) seen.set(owner.value.name, owner.value);
16769
+ }
16770
+ return [...seen.values()].sort((a, b) => a.name.localeCompare(b.name));
16771
+ }),
16772
+ refresh: () => Effect.void,
16773
+ ...overrides
16774
+ };
16775
+ };
16776
+ /**
16777
+ * The test layer: {@link WorkspaceDiscovery.makeTest} behind
16778
+ * `Layer.succeed`, so a suite provides only the methods it exercises.
16779
+ *
16780
+ * @remarks
16781
+ * A parameterized layer factory mints a **fresh reference per call**, and
16782
+ * layers memoize by reference — bind the result to a `const` and reuse it
16783
+ * rather than calling `layerTest(...)` at each composition site.
16784
+ *
16785
+ * @example
16786
+ * ```ts
16787
+ * import { WorkspaceDiscovery } from "@effected/workspaces";
16788
+ * import { Effect } from "effect";
16789
+ *
16790
+ * const TestDiscovery = WorkspaceDiscovery.layerTest({
16791
+ * listPackages: () => Effect.succeed([]),
16792
+ * });
16793
+ * // program.pipe(Effect.provide(TestDiscovery))
16794
+ * ```
16795
+ */
16796
+ static layerTest = (overrides = {}) => Layer.succeed(WorkspaceDiscovery, WorkspaceDiscovery.makeTest(overrides));
16797
+ /**
16644
16798
  * The real implementation of `@effected/npm`'s `WorkspaceResolver` contract
16645
16799
  * — the one `@effected/package-json` declares but cannot fill.
16646
16800
  *
@@ -16673,7 +16827,7 @@ var WorkspaceDiscovery = class WorkspaceDiscovery extends Context.Service()("@ef
16673
16827
  const isStringRecord$2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((entry) => typeof entry === "string");
16674
16828
 
16675
16829
  //#endregion
16676
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/DependencyGraph.js
16830
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/DependencyGraph.js
16677
16831
  /**
16678
16832
  * Raised when the workspace dependency graph cannot be topologically ordered
16679
16833
  * because it contains a cycle.
@@ -18275,7 +18429,7 @@ var Git = class extends Context.Service()("@effected/git/Git") {
18275
18429
  };
18276
18430
 
18277
18431
  //#endregion
18278
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/ChangeDetector.js
18432
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/ChangeDetector.js
18279
18433
  /**
18280
18434
  * Which git refs to compare, and whether to fold in the working tree.
18281
18435
  *
@@ -18557,7 +18711,7 @@ function resolveFromCatalog(catalogs, wantedDependency) {
18557
18711
  }
18558
18712
 
18559
18713
  //#endregion
18560
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/catalogs.js
18714
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/internal/catalogs.js
18561
18715
  /** Project a pnpm-workspace manifest's `catalog` / `catalogs` fields into a `Catalogs` map. */
18562
18716
  const inlineCatalogs = (manifest) => {
18563
18717
  if (manifest.catalog === void 0 && manifest.catalogs === void 0) return {};
@@ -18622,7 +18776,7 @@ const rangeOf = (catalogs, dependency, specifier) => {
18622
18776
  };
18623
18777
 
18624
18778
  //#endregion
18625
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/ConfigDependencyHooks.js
18779
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/ConfigDependencyHooks.js
18626
18780
  /** Whether `value` is a non-null, non-array object. */
18627
18781
  const isObject$2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
18628
18782
  /**
@@ -18768,7 +18922,7 @@ var ConfigDependencyHooks = class ConfigDependencyHooks extends Context.Service(
18768
18922
  };
18769
18923
 
18770
18924
  //#endregion
18771
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/PackageManagerName.js
18925
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/PackageManagerName.js
18772
18926
  /**
18773
18927
  * The four package managers this package understands.
18774
18928
  *
@@ -19011,7 +19165,7 @@ var PackageManagerDetector = class PackageManagerDetector extends Context.Servic
19011
19165
  };
19012
19166
 
19013
19167
  //#endregion
19014
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/LockfileReader.js
19168
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/LockfileReader.js
19015
19169
  /**
19016
19170
  * Raised when the workspace's lockfile cannot be read off disk.
19017
19171
  *
@@ -19122,7 +19276,7 @@ var LockfileReader = class LockfileReader extends Context.Service()("@effected/w
19122
19276
  };
19123
19277
 
19124
19278
  //#endregion
19125
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/Publishability.js
19279
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/Publishability.js
19126
19280
  /** The public npm registry, used when `publishConfig.registry` says nothing. */
19127
19281
  const DEFAULT_REGISTRY = "https://registry.npmjs.org/";
19128
19282
  /**
@@ -19223,7 +19377,7 @@ var PublishabilityDetector = class PublishabilityDetector extends Context.Servic
19223
19377
  };
19224
19378
 
19225
19379
  //#endregion
19226
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceCatalogs.js
19380
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceCatalogs.js
19227
19381
  /**
19228
19382
  * An immutable, fully-normalized catalog collection — the one catalog
19229
19383
  * resolution semantic in the package.
@@ -19608,7 +19762,7 @@ var WorkspaceCatalogs = class WorkspaceCatalogs extends Context.Service()("@effe
19608
19762
  };
19609
19763
 
19610
19764
  //#endregion
19611
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
19765
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceStateSnapshot.js
19612
19766
  const EMPTY = Object.freeze(Object.create(null));
19613
19767
  const DependencyMap = Schema.Record(Schema.String, Schema.String).pipe(Schema.withDecodingDefaultKey(Effect.succeed(EMPTY)), Schema.withConstructorDefault(Effect.succeed(EMPTY)));
19614
19768
  /**
@@ -19774,7 +19928,7 @@ var WorkspaceStateSnapshot = class extends Schema.Class("WorkspaceStateSnapshot"
19774
19928
  };
19775
19929
 
19776
19930
  //#endregion
19777
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceSnapshots.js
19931
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/WorkspaceSnapshots.js
19778
19932
  /** Whether `value` is a non-null, non-array object. */
19779
19933
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
19780
19934
  /** Whether every value in a record is a string — a usable dependency map. */
@@ -19967,7 +20121,7 @@ var WorkspaceSnapshots = class WorkspaceSnapshots extends Context.Service()("@ef
19967
20121
  };
19968
20122
 
19969
20123
  //#endregion
19970
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.3.1_@effected+jsonc@0.2.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/Workspaces.js
20124
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.4.0_@effected+jsonc@0.3.0_effect@4.0.0-beta.98__effect@4.0.0-beta.98/node_modules/@effected/workspaces/Workspaces.js
19971
20125
  /**
19972
20126
  * Every service that needs only a filesystem: root, package-manager detection,
19973
20127
  * discovery, lockfile reading, catalogs and publishability.