@savvy-web/silk 2.2.0 → 2.2.2

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.
@@ -295,6 +295,33 @@ const ChangesetConfigReaderLive = Layer.effect(ChangesetConfigReader, Effect.gen
295
295
  return { read };
296
296
  }));
297
297
 
298
+ //#endregion
299
+ //#region ../silk-effects/dist/dev/pkg/errors/PublishTargetBindingError.js
300
+ /**
301
+ * Raised when publishability detection selects a directory that the package's
302
+ * `dist/prod/targets.json` binding does not describe.
303
+ *
304
+ * @remarks
305
+ * The bundler's prod build writes `targets.json` naming every byte-group
306
+ * directory it produced. Once that binding exists it is authoritative: the only
307
+ * directories whose bytes may be published are the ones it lists. A detector
308
+ * that returns anything else — most often `publishConfig.directory` pointing at
309
+ * a **dev** build, because silk mode was misdetected — is about to pack an
310
+ * unresolved workspace manifest and ship it to a registry.
311
+ *
312
+ * That is the `yaml-effect@0.7.1` failure: detection picked `dist/dev/pkg`, the
313
+ * dev manifest still carried `catalog:` specifiers, and the published package
314
+ * was uninstallable (`EUNSUPPORTEDPROTOCOL`).
315
+ *
316
+ * @since 3.1.0
317
+ * @public
318
+ */
319
+ var PublishTargetBindingError = class extends Data.TaggedError("PublishTargetBindingError") {
320
+ get message() {
321
+ return `Package ${this.pkg} resolved publish directory "${this.directory}", which is not one of the directories bound by dist/prod/targets.json (${this.boundDirectories.join(", ")}). This means publishability detection did not select the prod build output — refusing to publish before packing an unresolved manifest.`;
322
+ }
323
+ };
324
+
298
325
  //#endregion
299
326
  //#region ../silk-effects/dist/dev/pkg/services/ChangesetConfig.js
300
327
  /**
@@ -372,7 +399,7 @@ const ChangesetConfigLive = Layer.effect(ChangesetConfig, Effect.gen(function* (
372
399
  }));
373
400
 
374
401
  //#endregion
375
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/CatalogAssemblyError.js
402
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/CatalogAssemblyError.js
376
403
  /**
377
404
  * Base constant for {@link CatalogAssemblyError}.
378
405
  *
@@ -400,7 +427,7 @@ var CatalogAssemblyError = class extends CatalogAssemblyErrorBase {
400
427
  };
401
428
 
402
429
  //#endregion
403
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/CatalogResolutionError.js
430
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/CatalogResolutionError.js
404
431
  /**
405
432
  * Base constant for {@link CatalogResolutionError}.
406
433
  *
@@ -427,7 +454,7 @@ var CatalogResolutionError = class extends CatalogResolutionErrorBase {
427
454
  };
428
455
 
429
456
  //#endregion
430
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/GitReadError.js
457
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/GitReadError.js
431
458
  /**
432
459
  * Base constant for {@link GitReadError}.
433
460
  *
@@ -453,7 +480,7 @@ var GitReadError = class extends GitReadErrorBase {
453
480
  };
454
481
 
455
482
  //#endregion
456
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/PackageNotFoundError.js
483
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/PackageNotFoundError.js
457
484
  /**
458
485
  * Base constant for {@link PackageNotFoundError}.
459
486
  *
@@ -505,7 +532,7 @@ var PackageNotFoundError = class extends PackageNotFoundErrorBase {
505
532
  };
506
533
 
507
534
  //#endregion
508
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/WorkspaceDiscoveryError.js
535
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/WorkspaceDiscoveryError.js
509
536
  /**
510
537
  * Base constant for {@link WorkspaceDiscoveryError}.
511
538
  *
@@ -557,7 +584,7 @@ var WorkspaceDiscoveryError = class extends WorkspaceDiscoveryErrorBase {
557
584
  };
558
585
 
559
586
  //#endregion
560
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/WorkspaceRootNotFoundError.js
587
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/errors/WorkspaceRootNotFoundError.js
561
588
  /**
562
589
  * Base constant for {@link WorkspaceRootNotFoundError}.
563
590
  *
@@ -608,7 +635,7 @@ var WorkspaceRootNotFoundError = class extends WorkspaceRootNotFoundErrorBase {
608
635
  };
609
636
 
610
637
  //#endregion
611
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/WorkspaceDiscovery.js
638
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/WorkspaceDiscovery.js
612
639
  /**
613
640
  * Service for discovering workspace packages in a monorepo.
614
641
  *
@@ -659,7 +686,7 @@ var WorkspaceRootNotFoundError = class extends WorkspaceRootNotFoundErrorBase {
659
686
  var WorkspaceDiscovery = class extends Context.Tag("@spencerbeggs/workspaces-effect/WorkspaceDiscovery")() {};
660
687
 
661
688
  //#endregion
662
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/WorkspaceRoot.js
689
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/WorkspaceRoot.js
663
690
  /**
664
691
  * Service for finding the workspace root directory.
665
692
  *
@@ -6402,7 +6429,7 @@ function parse$3(text, options) {
6402
6429
  }
6403
6430
 
6404
6431
  //#endregion
6405
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/catalog/workspace-manifest.js
6432
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/catalog/workspace-manifest.js
6406
6433
  /**
6407
6434
  * Parse a pnpm-workspace.yaml text into its catalog/config-dependency/packages
6408
6435
  * slice. Pure with respect to the filesystem.
@@ -6478,7 +6505,7 @@ function checkDefaultCatalogIsDefinedOnce(manifest) {
6478
6505
  }
6479
6506
 
6480
6507
  //#endregion
6481
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/catalog/assemble.js
6508
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/catalog/assemble.js
6482
6509
  /** Merge catalog sources; later sources win per dependency within a catalog. */
6483
6510
  function mergeCatalogs(...sources) {
6484
6511
  const result = {};
@@ -6563,7 +6590,7 @@ function resolveFromCatalog(catalogs, wantedDependency) {
6563
6590
  }
6564
6591
 
6565
6592
  //#endregion
6566
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/catalog/resolve.js
6593
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/catalog/resolve.js
6567
6594
  const DEP_FIELDS = [
6568
6595
  "dependencies",
6569
6596
  "devDependencies",
@@ -6634,7 +6661,7 @@ function resolveManifest(catalogs, workspaceVersions, manifest) {
6634
6661
  }
6635
6662
 
6636
6663
  //#endregion
6637
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/CatalogSet.js
6664
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/CatalogSet.js
6638
6665
  /**
6639
6666
  * An immutable, fully-normalized catalog collection with the one
6640
6667
  * resolution semantic shared by live and point-in-time resolution.
@@ -6725,7 +6752,7 @@ var CatalogSet = class CatalogSet extends Schema.Class("CatalogSet")({ entries:
6725
6752
  };
6726
6753
 
6727
6754
  //#endregion
6728
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/point-in-time/worktree-catalogs.js
6755
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/point-in-time/worktree-catalogs.js
6729
6756
  /**
6730
6757
  * The ONE code path that reads the working tree's catalog sources
6731
6758
  * (`pnpm-workspace.yaml` + `pnpm-lock.yaml`). Consumed by
@@ -8281,7 +8308,7 @@ minimatch.escape = escape;
8281
8308
  minimatch.unescape = unescape;
8282
8309
 
8283
8310
  //#endregion
8284
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/core.js
8311
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/core.js
8285
8312
  /**
8286
8313
  * Schema for supported package manager identifiers.
8287
8314
  *
@@ -9904,7 +9931,7 @@ function modifyImpl(text, path, value, formattingOptions) {
9904
9931
  }
9905
9932
 
9906
9933
  //#endregion
9907
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/WorkspaceStateSnapshot.js
9934
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/WorkspaceStateSnapshot.js
9908
9935
  const DepRecord = Schema.optionalWith(Schema.Record({
9909
9936
  key: Schema.String,
9910
9937
  value: Schema.String
@@ -9974,7 +10001,7 @@ var WorkspaceStateSnapshot = class extends Schema.Class("WorkspaceStateSnapshot"
9974
10001
  };
9975
10002
 
9976
10003
  //#endregion
9977
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/PointInTimeWorkspace.js
10004
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/PointInTimeWorkspace.js
9978
10005
  /**
9979
10006
  * Service for reading a monorepo's workspace state at a specific moment: any
9980
10007
  * git ref (via `git show`/`git ls-tree`, without checking the ref out) or the
@@ -10002,7 +10029,7 @@ var WorkspaceStateSnapshot = class extends Schema.Class("WorkspaceStateSnapshot"
10002
10029
  var PointInTimeWorkspace = class extends Context.Tag("@spencerbeggs/workspaces-effect/PointInTimeWorkspace")() {};
10003
10030
 
10004
10031
  //#endregion
10005
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/discovery/glob-core.js
10032
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/discovery/glob-core.js
10006
10033
  const normalize$2 = (pattern) => pattern.replace(/\/\*\*$/, "/*");
10007
10034
  const toRegex = (glob) => new RegExp(`^${glob.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]")}$`);
10008
10035
  /**
@@ -10046,7 +10073,7 @@ const compileWorkspaceGlobs = (patterns) => {
10046
10073
  };
10047
10074
 
10048
10075
  //#endregion
10049
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/point-in-time/git.js
10076
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/point-in-time/git.js
10050
10077
  /**
10051
10078
  * Stderr shapes that mean "the path is not present at this ref" rather than
10052
10079
  * "the git command failed."
@@ -10139,7 +10166,7 @@ const makeGitReader = (executor, options) => {
10139
10166
  };
10140
10167
 
10141
10168
  //#endregion
10142
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/PointInTimeWorkspaceLive.js
10169
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/PointInTimeWorkspaceLive.js
10143
10170
  /**
10144
10171
  * Live layer for the {@link PointInTimeWorkspace} service.
10145
10172
  *
@@ -10261,6 +10288,7 @@ const PointInTimeWorkspaceLive = Layer.effect(PointInTimeWorkspace, Effect.gen(f
10261
10288
  }).pipe(Effect.withSpan("PointInTimeWorkspace.at", { attributes: { ref } }));
10262
10289
  const worktree = (options) => Effect.gen(function* () {
10263
10290
  const root = yield* resolveRoot(options?.cwd);
10291
+ yield* discovery.refresh();
10264
10292
  return new WorkspaceStateSnapshot({
10265
10293
  packages: (yield* discovery.listPackages(root)).map((p) => new PackageStateSnapshot({
10266
10294
  name: p.name,
@@ -10281,7 +10309,7 @@ const PointInTimeWorkspaceLive = Layer.effect(PointInTimeWorkspace, Effect.gen(f
10281
10309
  }));
10282
10310
 
10283
10311
  //#endregion
10284
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/publish.js
10312
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/schemas/publish.js
10285
10313
  /**
10286
10314
  * Schema for package publish targets.
10287
10315
  *
@@ -10325,7 +10353,7 @@ var PublishTarget = class extends Schema.Class("PublishTarget")({
10325
10353
  }) {};
10326
10354
 
10327
10355
  //#endregion
10328
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/PublishabilityDetector.js
10356
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/services/PublishabilityDetector.js
10329
10357
  /**
10330
10358
  * Service for detecting whether a workspace package is publishable and
10331
10359
  * identifying its publish targets (npm, GitHub Packages, etc.).
@@ -10388,7 +10416,7 @@ var PublishTarget = class extends Schema.Class("PublishTarget")({
10388
10416
  var PublishabilityDetector = class extends Context.Tag("@spencerbeggs/workspaces-effect/PublishabilityDetector")() {};
10389
10417
 
10390
10418
  //#endregion
10391
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/PublishabilityDetectorLive.js
10419
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/PublishabilityDetectorLive.js
10392
10420
  /**
10393
10421
  * Default live implementation of the {@link PublishabilityDetector} service.
10394
10422
  *
@@ -10461,7 +10489,7 @@ const PublishabilityDetectorLive = Layer.succeed(PublishabilityDetector, { detec
10461
10489
  }).pipe(Effect.withSpan("PublishabilityDetector.detect", { attributes: { "workspace.package": pkg.name } })) });
10462
10490
 
10463
10491
  //#endregion
10464
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/WorkspaceDiscoveryLive.js
10492
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/WorkspaceDiscoveryLive.js
10465
10493
  /**
10466
10494
  * Live implementation of the {@link WorkspaceDiscovery} service.
10467
10495
  *
@@ -10749,7 +10777,7 @@ const WorkspaceDiscoveryLive = Layer.effect(WorkspaceDiscovery, Effect.gen(funct
10749
10777
  }));
10750
10778
 
10751
10779
  //#endregion
10752
- //#region ../../node_modules/.pnpm/workspaces-effect@2.0.2_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/WorkspaceRootLive.js
10780
+ //#region ../../node_modules/.pnpm/workspaces-effect@2.0.3_@effect+platform@0.96.2_effect@3.21.4__effect@3.21.4/node_modules/workspaces-effect/layers/WorkspaceRootLive.js
10753
10781
  /**
10754
10782
  * Live implementation of the {@link WorkspaceRoot} service.
10755
10783
  *
@@ -10970,6 +10998,17 @@ var SilkPublishability = class {
10970
10998
  * Resolve a package's publish targets via {@link SilkPublishability}, then drop any
10971
10999
  * whose built `directory` package.json is `private: true`. Returned targets keep the
10972
11000
  * detector's original (possibly package-relative) `directory`.
11001
+ *
11002
+ * @remarks
11003
+ * When the prod build has written `dist/prod/targets.json`, that binding is
11004
+ * authoritative: every surviving target's directory must be one of the group
11005
+ * directories it names. A directory outside the binding means detection did
11006
+ * not select the prod output — the `yaml-effect@0.7.1` shape, where a dev
11007
+ * manifest carrying `catalog:` specifiers was packed and published. Rather
11008
+ * than ship those bytes, fail with {@link PublishTargetBindingError}.
11009
+ *
11010
+ * Before the prod build runs there is no binding, and the detector's
11011
+ * placeholder directories are left alone.
10973
11012
  */
10974
11013
  static resolveTargets(pkg, root) {
10975
11014
  return Effect.gen(function* () {
@@ -10981,6 +11020,18 @@ var SilkPublishability = class {
10981
11020
  const dir = isAbsolute(t.directory) ? t.directory : join(pkg.path, t.directory);
10982
11021
  if (!(yield* isTargetPrivate(fs, dir))) kept.push(t);
10983
11022
  }
11023
+ const binding = yield* readTargetsBinding(fs, pkg.path);
11024
+ if (binding === null) return kept;
11025
+ const boundDirectories = binding.groups.map((g) => normalizeDir(g.dir));
11026
+ const bound = new Set(boundDirectories);
11027
+ for (const t of kept) {
11028
+ const relativeDir = normalizeDir(isAbsolute(t.directory) ? relative(pkg.path, t.directory) : t.directory);
11029
+ if (!bound.has(relativeDir)) return yield* Effect.fail(new PublishTargetBindingError({
11030
+ pkg: pkg.name,
11031
+ directory: relativeDir,
11032
+ boundDirectories
11033
+ }));
11034
+ }
10984
11035
  return kept;
10985
11036
  });
10986
11037
  }
@@ -11007,6 +11058,26 @@ var SilkPublishability = class {
11007
11058
  });
11008
11059
  }
11009
11060
  };
11061
+ /**
11062
+ * Reduce a directory to a comparable package-relative POSIX path: backslashes to
11063
+ * forward slashes, no `./` prefix, no trailing slash. `""` (the package root)
11064
+ * normalizes to `.`, matching how a root-directory target is recorded.
11065
+ *
11066
+ * @remarks
11067
+ * Trailing slashes are trimmed with an index scan rather than `/\/+$/`. That
11068
+ * regex is unanchored at the start, so the engine retries the match from every
11069
+ * position and degrades to O(n²) on a path of many slashes (CodeQL
11070
+ * `js/polynomial-redos`). `dir` reaches here from `dist/prod/targets.json`, which
11071
+ * the bundler writes but a consumer repo could hand-edit.
11072
+ */
11073
+ const normalizeDir = (dir) => {
11074
+ const slashed = dir.replaceAll("\\", "/");
11075
+ const withoutPrefix = slashed.startsWith("./") ? slashed.slice(2) : slashed;
11076
+ let end = withoutPrefix.length;
11077
+ while (end > 0 && withoutPrefix[end - 1] === "/") end -= 1;
11078
+ const normalized = withoutPrefix.slice(0, end);
11079
+ return normalized === "" ? "." : normalized;
11080
+ };
11010
11081
  /** True when a built target directory's package.json is `private: true`. Missing/unreadable/malformed → false. */
11011
11082
  const isTargetPrivate = (fs, targetDir) => fs.readFileString(join(targetDir, "package.json")).pipe(Effect.flatMap((content) => Effect.try({
11012
11083
  try: () => JSON.parse(content).private === true,
@@ -39747,6 +39818,7 @@ function makeShape$1(pit, inspector, discovery, detector, config, fs) {
39747
39818
  const plan = (options) => Effect.gen(function* () {
39748
39819
  const resolvedCwd = resolve(options.cwd);
39749
39820
  const changesetDir = join(resolvedCwd, ".changeset");
39821
+ yield* discovery.refresh();
39750
39822
  let fromRef = options.from;
39751
39823
  if (!fromRef) {
39752
39824
  let baseBranch = options.base;
@@ -1,5 +1,4 @@
1
1
  import { Changesets } from "@savvy-web/silk-effects";
2
-
3
2
  //#region src/changesets/remark.d.ts
4
3
  declare const AggregateDependencyTablesPlugin: typeof Changesets.AggregateDependencyTablesPlugin;
5
4
  declare const ContributorFootnotesPlugin: typeof Changesets.ContributorFootnotesPlugin;
package/changesets.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { Changesets } from "@savvy-web/silk-effects";
2
-
3
2
  //#region src/changesets/index.d.ts
4
3
  type LintMessage = Changesets.LintMessage;
5
4
  declare const Categories: typeof Changesets.Categories;
@@ -1,5 +1,4 @@
1
1
  import { Commitlint } from "@savvy-web/silk-effects";
2
-
3
2
  //#region src/commitlint/formatter.d.ts
4
3
  type FormatterResult = Commitlint.FormatterResult;
5
4
  type LintOutcome = Commitlint.LintOutcome;
@@ -1,5 +1,4 @@
1
1
  import { Commitlint } from "@savvy-web/silk-effects";
2
-
3
2
  //#region src/commitlint/prompt.d.ts
4
3
  type CommitType = Commitlint.CommitType;
5
4
  type PromptConfigOptions = Commitlint.PromptConfigOptions;
@@ -1,5 +1,4 @@
1
1
  import { Commitlint } from "@savvy-web/silk-effects";
2
-
3
2
  //#region src/commitlint/static.d.ts
4
3
  type CommitType = Commitlint.CommitType;
5
4
  type CommitTypeDefinition = Commitlint.CommitTypeDefinition;
package/commitlint.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { Commitlint } from "@savvy-web/silk-effects";
2
-
3
2
  //#region src/commitlint/index.d.ts
4
3
  type CommitType = Commitlint.CommitType;
5
4
  type ReleaseFormat = Commitlint.ReleaseFormat;
package/lint.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { ConfigDiscovery, ConfigDiscoveryLive, ConfigLocation, Lint } from "@savvy-web/silk-effects";
2
-
3
2
  //#region src/lint/index.d.ts
4
3
  declare const Handler: typeof Lint.Handler;
5
4
  type Handler = typeof Lint.Handler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savvy-web/silk",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "private": false,
5
5
  "description": "The single Silk Suite dev-tooling package — changeset, commitlint, lint, and biome conventions",
6
6
  "homepage": "https://github.com/savvy-web/systems/tree/main/packages/silk",
@@ -67,9 +67,9 @@
67
67
  "dependencies": {
68
68
  "@effect/platform": "^0.96.2",
69
69
  "@savvy-web/changelog": "0.1.1",
70
- "@savvy-web/cli": "1.5.3",
71
- "@savvy-web/mcp": "1.7.0",
72
- "@savvy-web/silk-effects": "3.1.0",
70
+ "@savvy-web/cli": "1.5.5",
71
+ "@savvy-web/mcp": "1.7.2",
72
+ "@savvy-web/silk-effects": "3.2.1",
73
73
  "effect": "^3.21.4",
74
74
  "semver": "^7.8.5"
75
75
  },