@savvy-web/silk-effects 9.2.0 → 9.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.
@@ -95,7 +95,7 @@ const DependencyTableTypeSchema = Schema.Literals([
95
95
  *
96
96
  * @public
97
97
  */
98
- const VERSION_RE = /^(\u2014|[~^]?\d+\.\d+\.\d+(?:[-+.][\w.+-]+)?|(?:catalog|workspace|npm|jsr|file|link|portal):[^\s|]+)$/;
98
+ const VERSION_RE = /^(\u2014|[~^]?\d+\.\d+\.\d+(?:[-+.][\w.+-]+)?|(?:catalog|workspace|npm|jsr|file|link|portal):[^\s|]+)$/u;
99
99
  /**
100
100
  * Version string or em dash (U+2014) sentinel for added/removed entries.
101
101
  *
@@ -40,7 +40,7 @@ import { Schema } from "effect";
40
40
  *
41
41
  * @public
42
42
  */
43
- const CommitHashSchema = Schema.String.check(Schema.isPattern(/^[a-f0-9]{7,}$/, { message: "Commit hash must be 7 or more lowercase hexadecimal characters (0-9, a-f). Example: \"a1b2c3d\" or a full 40-character SHA like \"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2\". Uppercase letters are not allowed" }));
43
+ const CommitHashSchema = Schema.String.check(Schema.isPattern(/^[a-f0-9]{7,}$/u, { message: "Commit hash must be 7 or more lowercase hexadecimal characters (0-9, a-f). Example: \"a1b2c3d\" or a full 40-character SHA like \"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2\". Uppercase letters are not allowed" }));
44
44
  /**
45
45
  * Semantic version bump type.
46
46
  *
@@ -52,7 +52,7 @@ function isValidUrl(value) {
52
52
  *
53
53
  * @public
54
54
  */
55
- const UsernameSchema = Schema.String.check(Schema.isPattern(/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/, { message: "Invalid GitHub username format. Usernames must contain only alphanumeric characters and hyphens, and cannot start or end with a hyphen. Example: \"octocat\" or \"my-user-123\"" }));
55
+ const UsernameSchema = Schema.String.check(Schema.isPattern(/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/u, { message: "Invalid GitHub username format. Usernames must contain only alphanumeric characters and hyphens, and cannot start or end with a hyphen. Example: \"octocat\" or \"my-user-123\"" }));
56
56
  /**
57
57
  * Schema for a GitHub issue or PR number (positive integer).
58
58
  *
@@ -23,7 +23,7 @@ import { Effect, Schema } from "effect";
23
23
  *
24
24
  */
25
25
  /** Regex for `owner/repo` format, shared between schema and validation. */
26
- const REPO_PATTERN = /^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/;
26
+ const REPO_PATTERN = /^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/u;
27
27
  /**
28
28
  * Schema for a GitHub repository in `owner/repo` format.
29
29
  *
@@ -54,7 +54,7 @@ import { Schema } from "effect";
54
54
  *
55
55
  * @public
56
56
  */
57
- const JsonPathSchema = Schema.String.check(Schema.isPattern(/^\$\.[^.]/, { message: "JSONPath must start with \"$.\" followed by a property (e.g., \"$.version\", \"$.metadata.version\")" }));
57
+ const JsonPathSchema = Schema.String.check(Schema.isPattern(/^\$\.[^.]/u, { message: "JSONPath must start with \"$.\" followed by a property (e.g., \"$.version\", \"$.metadata.version\")" }));
58
58
  /**
59
59
  * Schema for a single version file configuration entry — **new shape**.
60
60
  *
@@ -98,15 +98,19 @@ function parseDependencyTable(table) {
98
98
  return result;
99
99
  }
100
100
  /**
101
- * Create a table cell with a text node.
101
+ * Create a table cell with a text node that emits literally.
102
102
  *
103
103
  * @remarks
104
- * The cell holds a plain text node; the canonical stringifier escapes any
105
- * character that could open a markdown construct (`~0.2.1` is written as
106
- * `\~0.2.1`, `some_pkg` as `some\_pkg`, `|` as `\|`). Parsing consumes the
107
- * escapes, so cell VALUES round-trip byte-identically through
108
- * parse-and-reserialize — the escaping is a raw-byte spelling, never a
109
- * value change, and it cannot compound across cycles.
104
+ * The cell holds a text node carrying `escapeStyle: "literal"`, so the
105
+ * canonical stringifier writes the value verbatim instead of escaping
106
+ * characters that could open a markdown construct (`~0.2.1` stays `~0.2.1`,
107
+ * `some_pkg` stays `some_pkg`) — the caller vouches the dependency name and
108
+ * version-range values in a dependency table are already safe markdown
109
+ * source. Escaping that defends the table's own structure still applies
110
+ * (a cell's `|` is still written `\|`), so a value containing a pipe cannot
111
+ * break out of its cell. Parsing consumes any escapes present in the
112
+ * source (old or new spelling), so cell VALUES round-trip byte-identically
113
+ * through parse-and-reserialize regardless of which spelling produced them.
110
114
  *
111
115
  * @param text - The cell text content
112
116
  * @returns An MDAST `TableCell` node
@@ -118,7 +122,8 @@ function makeCell(text) {
118
122
  type: "tableCell",
119
123
  children: [{
120
124
  type: "text",
121
- value: text
125
+ value: text,
126
+ escapeStyle: "literal"
122
127
  }]
123
128
  };
124
129
  }
@@ -1,6 +1,6 @@
1
1
  import { readCache, writeCache } from "./cache.js";
2
2
  import { Effect } from "effect";
3
- import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
3
+ import { ChildProcess, ChildProcessSpawner } from "effect/process";
4
4
 
5
5
  //#region src/commitlint/hook/diagnostics/open-issues.ts
6
6
  /**
@@ -9,7 +9,7 @@ import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
9
9
  * @remarks
10
10
  * The `gh` invocations are not git, so they stay hand-rolled — the spawn
11
11
  * mechanism moved from promisified `node:child_process.execFile` onto
12
- * `effect/unstable/process` `ChildProcess`. Any failure (gh missing, not
12
+ * `effect/process` `ChildProcess`. Any failure (gh missing, not
13
13
  * logged in, no repo, malformed JSON) degrades to `null`, preserving the
14
14
  * never-fails contract of the v3 implementation.
15
15
  *
@@ -1,7 +1,7 @@
1
1
  import { Effect, Option } from "effect";
2
2
  import { Git } from "@effected/git";
3
3
  import { stat } from "node:fs/promises";
4
- import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
4
+ import { ChildProcess, ChildProcessSpawner } from "effect/process";
5
5
 
6
6
  //#region src/commitlint/hook/diagnostics/signing.ts
7
7
  /**
@@ -11,7 +11,7 @@ import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
11
11
  * The `git config` reads run through `@effected/git`'s `configGet`
12
12
  * (Option-shaped: an unset key is `Option.none`). The `gpg` /
13
13
  * `gpg-connect-agent` probes are not git, so they stay hand-rolled on
14
- * `effect/unstable/process` `ChildProcess`; every probe degrades to its v3
14
+ * `effect/process` `ChildProcess`; every probe degrades to its v3
15
15
  * fallback value (`keyResolves: false`, `agentResponsive: false`) on any
16
16
  * failure, and the diagnostic as a whole degrades to
17
17
  * {@link FALLBACK_DIAGNOSTIC}, preserving the never-fails contract.
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { AnalyzedWorkspace, BiomeSyncError, BiomeSyncError as BiomeSyncError$1, BiomeSyncOptions, BiomeSyncResult, BiomeSyncResult as BiomeSyncResult$1, ChangesetConfigError, ChangesetConfigError as ChangesetConfigError$1, ChangesetConfigFile, ChangesetConfigFile as ChangesetConfigFile$1, ConfigDiscoveryOptions, ConfigLocation, ConfigLocation as ConfigLocation$1, ConfigNotFoundError, ConfigSource, LIFECYCLE_SCRIPTS_CONFIG_KEY, PrBody, PublishTargetBindingError, PublishTargetBindingError as PublishTargetBindingError$1, SavvyBaseSection, SavvyHooksSection, SavvyInstallHook, SavvyInstallSection, SavvyOkfSection, SavvyToolchainSection, SilkChangesetConfigFile, SilkChangesetConfigFile as SilkChangesetConfigFile$1, SilkPublishConfig, WorkspaceAnalysis, WorkspaceAnalysis as WorkspaceAnalysis$1, WorkspaceAnalysisError, WorkspaceAnalysisError as WorkspaceAnalysisError$1, publishesBuiltLinkDirectory, savvyBasePreamble, savvyHooksHygiene, savvyInstallBlock, savvyInstallDeps, savvyOkfBlock, savvyOkfSync, savvyToolSection, savvyToolchainCheck } from "@savvy-web/silk-core";
2
2
  import { Context, Effect, FileSystem, Layer, Path, Schema } from "effect";
3
3
  import { Plugin } from "unified";
4
- import { ChildProcessSpawner } from "effect/unstable/process";
4
+ import { ChildProcessSpawner } from "effect/process";
5
5
  import { PackageManagerDetector, PublishTarget, PublishabilityDetector, WorkspaceDiscovery, WorkspaceDiscoveryFailure, WorkspacePackage, WorkspaceSnapshotAtFailure, WorkspaceSnapshotWorktreeFailure, WorkspaceSnapshots, WorkspaceStateSnapshot, WorkspacesOptions } from "@effected/workspaces";
6
6
  import { Git } from "@effected/git";
7
7
  import { GlobExpansionError } from "@effected/walker";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savvy-web/silk-effects",
3
- "version": "9.2.0",
3
+ "version": "9.2.2",
4
4
  "private": false,
5
5
  "description": "Shared Effect library for Silk Suite conventions",
6
6
  "homepage": "https://github.com/savvy-web/systems/tree/main/packages/silk-effects",
@@ -37,16 +37,16 @@
37
37
  "@changesets/get-release-plan": "^5.0.2",
38
38
  "@changesets/pre": "^3.0.0",
39
39
  "@changesets/read": "^1.0.1",
40
- "@effected/github-references": "^0.5.0",
41
- "@effected/glob": "^0.8.0",
42
- "@effected/jsonc": "^0.13.0",
43
- "@effected/markdown": "^0.12.1",
44
- "@effected/package-json": "^0.18.0",
45
- "@effected/toml": "^0.9.0",
46
- "@effected/walker": "^0.12.0",
47
- "@effected/yaml": "^0.17.0",
40
+ "@effected/github-references": "^0.6.0",
41
+ "@effected/glob": "^0.9.0",
42
+ "@effected/jsonc": "^0.14.0",
43
+ "@effected/markdown": "^0.14.0",
44
+ "@effected/package-json": "^0.19.1",
45
+ "@effected/toml": "^0.10.0",
46
+ "@effected/walker": "^0.13.0",
47
+ "@effected/yaml": "^0.18.0",
48
48
  "@manypkg/get-packages": "^3.1.0",
49
- "@savvy-web/silk-core": "0.4.7",
49
+ "@savvy-web/silk-core": "0.4.8",
50
50
  "mdast-util-heading-range": "^4.0.0",
51
51
  "mdast-util-to-string": "^4.0.0",
52
52
  "remark-gfm": "^4.0.1",
@@ -58,10 +58,10 @@
58
58
  "unist-util-visit": "^5.1.0"
59
59
  },
60
60
  "peerDependencies": {
61
- "@effected/commands": "^0.9.0",
62
- "@effected/git": "^0.17.0",
63
- "@effected/templates": "^0.8.0",
64
- "@effected/workspaces": "^0.28.0",
65
- "effect": "4.0.0-rc.117"
61
+ "@effected/commands": "^0.10.0",
62
+ "@effected/git": "^0.18.0",
63
+ "@effected/templates": "^0.9.0",
64
+ "@effected/workspaces": "^0.30.0",
65
+ "effect": "4.0.0-rc.118"
66
66
  }
67
67
  }
@@ -7,7 +7,7 @@ import { Schema } from "effect";
7
7
  * (`.repos/<name>`) without escaping the `.repos/` directory.
8
8
  * @public
9
9
  */
10
- const RepoName = Schema.String.check(Schema.isPattern(/^(?!\.{1,2}$)[A-Za-z0-9][A-Za-z0-9._-]*$/)).annotate({ identifier: "RepoName" });
10
+ const RepoName = Schema.String.check(Schema.isPattern(/^(?!\.{1,2}$)[A-Za-z0-9][A-Za-z0-9._-]*$/u)).annotate({ identifier: "RepoName" });
11
11
  /**
12
12
  * An agent-appended note: a discovered answer stamped with the pin it was written against.
13
13
  * @public
@@ -3,7 +3,7 @@ import { DryRunParseError, NotATurboRepoError, TurboExecError, TurboNotInstalled
3
3
  import { TurboDryRun } from "../schemas/DryRun.js";
4
4
  import { Context, Effect, FileSystem, Layer, Schema } from "effect";
5
5
  import { Git } from "@effected/git";
6
- import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
6
+ import { ChildProcess, ChildProcessSpawner } from "effect/process";
7
7
  import { Run, Tool, ToolDiscovery } from "@effected/commands";
8
8
 
9
9
  //#region src/turbo/services/TurboInspector.ts