@savvy-web/silk 1.0.0 → 1.1.0

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.
@@ -77211,10 +77211,12 @@ function readRawPackageJson(fs, pkgDir) {
77211
77211
  /**
77212
77212
  * Build resolved scopes from the discovered workspace packages, keeping only
77213
77213
  * those that are a release surface (declare publishConfig that yields at least
77214
- * one publish target). Used when `.changeset/config.json` declares no explicit
77215
- * `packages` record. The changeset `ignore` list is intentionally NOT consulted
77216
- * here an ignored package still declares publishConfig and remains a valid
77217
- * changeset target.
77214
+ * one publish target). Used both when `.changeset/config.json` declares no
77215
+ * explicit `packages` record AND to augment an explicit record with the
77216
+ * remaining workspace packages it does not list (so the record annotates the
77217
+ * listed packages without shrinking the release surface). The changeset
77218
+ * `ignore` list is intentionally NOT consulted here — an ignored package still
77219
+ * declares publishConfig and remains a valid changeset target.
77218
77220
  */
77219
77221
  function buildFallbackScopes(fs, workspaces) {
77220
77222
  return effect.Effect.forEach(workspaces, (ws) => effect.Effect.gen(function* () {
@@ -77328,19 +77330,24 @@ function makeShape$2(reader, discovery, fs) {
77328
77330
  }));
77329
77331
  const hasExplicitPackages = Object.keys(decodedOptions.packages ?? {}).length > 0;
77330
77332
  let scopes;
77331
- if (hasExplicitPackages) try {
77332
- scopes = buildResolvedScopes({
77333
- options: decodedOptions,
77334
- workspaces,
77335
- projectDir,
77336
- configPath
77337
- });
77338
- checkConflicts(scopes, workspaces, projectDir, configPath);
77339
- } catch (e) {
77340
- if (e instanceof ConfigurationError) return yield* effect.Effect.fail(e);
77341
- throw e;
77342
- }
77343
- else scopes = yield* buildFallbackScopes(fs, workspaces);
77333
+ if (hasExplicitPackages) {
77334
+ let explicitScopes;
77335
+ try {
77336
+ explicitScopes = buildResolvedScopes({
77337
+ options: decodedOptions,
77338
+ workspaces,
77339
+ projectDir,
77340
+ configPath
77341
+ });
77342
+ checkConflicts(explicitScopes, workspaces, projectDir, configPath);
77343
+ } catch (e) {
77344
+ if (e instanceof ConfigurationError) return yield* effect.Effect.fail(e);
77345
+ throw e;
77346
+ }
77347
+ const explicitNames = new Set(explicitScopes.map((s) => s.name));
77348
+ const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)));
77349
+ scopes = [...explicitScopes, ...discoveredScopes];
77350
+ } else scopes = yield* buildFallbackScopes(fs, workspaces);
77344
77351
  const inspected = {
77345
77352
  configPath,
77346
77353
  projectDir,
@@ -77215,10 +77215,12 @@ function readRawPackageJson(fs, pkgDir) {
77215
77215
  /**
77216
77216
  * Build resolved scopes from the discovered workspace packages, keeping only
77217
77217
  * those that are a release surface (declare publishConfig that yields at least
77218
- * one publish target). Used when `.changeset/config.json` declares no explicit
77219
- * `packages` record. The changeset `ignore` list is intentionally NOT consulted
77220
- * here an ignored package still declares publishConfig and remains a valid
77221
- * changeset target.
77218
+ * one publish target). Used both when `.changeset/config.json` declares no
77219
+ * explicit `packages` record AND to augment an explicit record with the
77220
+ * remaining workspace packages it does not list (so the record annotates the
77221
+ * listed packages without shrinking the release surface). The changeset
77222
+ * `ignore` list is intentionally NOT consulted here — an ignored package still
77223
+ * declares publishConfig and remains a valid changeset target.
77222
77224
  */
77223
77225
  function buildFallbackScopes(fs, workspaces) {
77224
77226
  return effect.Effect.forEach(workspaces, (ws) => effect.Effect.gen(function* () {
@@ -77332,19 +77334,24 @@ function makeShape$2(reader, discovery, fs) {
77332
77334
  }));
77333
77335
  const hasExplicitPackages = Object.keys(decodedOptions.packages ?? {}).length > 0;
77334
77336
  let scopes;
77335
- if (hasExplicitPackages) try {
77336
- scopes = buildResolvedScopes({
77337
- options: decodedOptions,
77338
- workspaces,
77339
- projectDir,
77340
- configPath
77341
- });
77342
- checkConflicts(scopes, workspaces, projectDir, configPath);
77343
- } catch (e) {
77344
- if (e instanceof ConfigurationError) return yield* effect.Effect.fail(e);
77345
- throw e;
77346
- }
77347
- else scopes = yield* buildFallbackScopes(fs, workspaces);
77337
+ if (hasExplicitPackages) {
77338
+ let explicitScopes;
77339
+ try {
77340
+ explicitScopes = buildResolvedScopes({
77341
+ options: decodedOptions,
77342
+ workspaces,
77343
+ projectDir,
77344
+ configPath
77345
+ });
77346
+ checkConflicts(explicitScopes, workspaces, projectDir, configPath);
77347
+ } catch (e) {
77348
+ if (e instanceof ConfigurationError) return yield* effect.Effect.fail(e);
77349
+ throw e;
77350
+ }
77351
+ const explicitNames = new Set(explicitScopes.map((s) => s.name));
77352
+ const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)));
77353
+ scopes = [...explicitScopes, ...discoveredScopes];
77354
+ } else scopes = yield* buildFallbackScopes(fs, workspaces);
77348
77355
  const inspected = {
77349
77356
  configPath,
77350
77357
  projectDir,
package/lint.d.ts CHANGED
@@ -88,7 +88,9 @@ declare const MARKDOWNLINT_CONFIG: {
88
88
  readonly MD024: {
89
89
  readonly siblings_only: true;
90
90
  };
91
- readonly MD025: true;
91
+ readonly MD025: {
92
+ readonly front_matter_title: "";
93
+ };
92
94
  readonly MD026: true;
93
95
  readonly MD027: true;
94
96
  readonly MD028: true;
@@ -141,7 +143,7 @@ declare const MARKDOWNLINT_TEMPLATE: {
141
143
  readonly fix: true;
142
144
  readonly gitignore: true;
143
145
  readonly noBanner: true;
144
- readonly ignores: readonly ["**/node_modules", "**/.cache", "**/coverage", "**/.coverage", "**/dist", "**/CHANGELOG.md", "**/.claude/plans", "**/docs/superpowers"];
146
+ readonly ignores: readonly ["**/node_modules", "**/.cache", "**/coverage", "**/.coverage", "**/dist", "**/CHANGELOG.md", "**/.claude/plans", "**/docs/superpowers", "**/__test__/**/fixtures/**", "**/__fixtures__/**"];
145
147
  readonly customRules: readonly ["@savvy-web/silk/changesets/markdownlint"];
146
148
  readonly config: {
147
149
  readonly default: true;
@@ -171,7 +173,9 @@ declare const MARKDOWNLINT_TEMPLATE: {
171
173
  readonly MD024: {
172
174
  readonly siblings_only: true;
173
175
  };
174
- readonly MD025: true;
176
+ readonly MD025: {
177
+ readonly front_matter_title: "";
178
+ };
175
179
  readonly MD026: true;
176
180
  readonly MD027: true;
177
181
  readonly MD028: true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savvy-web/silk",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
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",
@@ -60,11 +60,13 @@
60
60
  "import": "./lint.js"
61
61
  },
62
62
  "./biome": "./public/biome/silk.jsonc",
63
+ "./tsconfig/node/root.json": "./public/tsconfig/node/root.json",
64
+ "./tsconfig/rspress/website.json": "./public/tsconfig/rspress/website.json",
63
65
  "./package.json": "./package.json"
64
66
  },
65
67
  "dependencies": {
66
68
  "@effect/platform": "^0.96.1",
67
- "@savvy-web/silk-effects": "1.1.0",
69
+ "@savvy-web/silk-effects": "1.2.0",
68
70
  "effect": "^3.21.3",
69
71
  "semver": "^7.8.4"
70
72
  },
@@ -73,8 +75,8 @@
73
75
  "@changesets/cli": "^2.31.0",
74
76
  "@commitlint/cli": "^21.0.1",
75
77
  "@commitlint/config-conventional": "^21.0.2",
76
- "@savvy-web/cli": "1.0.0",
77
- "@savvy-web/mcp": "1.0.0",
78
+ "@savvy-web/cli": "1.1.0",
79
+ "@savvy-web/mcp": "1.1.0",
78
80
  "@types/node": "^25.9.0",
79
81
  "@typescript/native-preview": "^7.0.0-dev.20260513.1",
80
82
  "commitizen": "^4.3.0",
@@ -248,10 +248,12 @@ function readRawPackageJson(fs, pkgDir) {
248
248
  /**
249
249
  * Build resolved scopes from the discovered workspace packages, keeping only
250
250
  * those that are a release surface (declare publishConfig that yields at least
251
- * one publish target). Used when `.changeset/config.json` declares no explicit
252
- * `packages` record. The changeset `ignore` list is intentionally NOT consulted
253
- * here an ignored package still declares publishConfig and remains a valid
254
- * changeset target.
251
+ * one publish target). Used both when `.changeset/config.json` declares no
252
+ * explicit `packages` record AND to augment an explicit record with the
253
+ * remaining workspace packages it does not list (so the record annotates the
254
+ * listed packages without shrinking the release surface). The changeset
255
+ * `ignore` list is intentionally NOT consulted here — an ignored package still
256
+ * declares publishConfig and remains a valid changeset target.
255
257
  */
256
258
  function buildFallbackScopes(fs, workspaces) {
257
259
  return effect.Effect.forEach(workspaces, (ws) => effect.Effect.gen(function* () {
@@ -365,19 +367,24 @@ function makeShape(reader, discovery, fs) {
365
367
  }));
366
368
  const hasExplicitPackages = Object.keys(decodedOptions.packages ?? {}).length > 0;
367
369
  let scopes;
368
- if (hasExplicitPackages) try {
369
- scopes = buildResolvedScopes({
370
- options: decodedOptions,
371
- workspaces,
372
- projectDir,
373
- configPath
374
- });
375
- checkConflicts(scopes, workspaces, projectDir, configPath);
376
- } catch (e) {
377
- if (e instanceof require_errors.ConfigurationError) return yield* effect.Effect.fail(e);
378
- throw e;
379
- }
380
- else scopes = yield* buildFallbackScopes(fs, workspaces);
370
+ if (hasExplicitPackages) {
371
+ let explicitScopes;
372
+ try {
373
+ explicitScopes = buildResolvedScopes({
374
+ options: decodedOptions,
375
+ workspaces,
376
+ projectDir,
377
+ configPath
378
+ });
379
+ checkConflicts(explicitScopes, workspaces, projectDir, configPath);
380
+ } catch (e) {
381
+ if (e instanceof require_errors.ConfigurationError) return yield* effect.Effect.fail(e);
382
+ throw e;
383
+ }
384
+ const explicitNames = new Set(explicitScopes.map((s) => s.name));
385
+ const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)));
386
+ scopes = [...explicitScopes, ...discoveredScopes];
387
+ } else scopes = yield* buildFallbackScopes(fs, workspaces);
381
388
  const inspected = {
382
389
  configPath,
383
390
  projectDir,
@@ -248,10 +248,12 @@ function readRawPackageJson(fs, pkgDir) {
248
248
  /**
249
249
  * Build resolved scopes from the discovered workspace packages, keeping only
250
250
  * those that are a release surface (declare publishConfig that yields at least
251
- * one publish target). Used when `.changeset/config.json` declares no explicit
252
- * `packages` record. The changeset `ignore` list is intentionally NOT consulted
253
- * here an ignored package still declares publishConfig and remains a valid
254
- * changeset target.
251
+ * one publish target). Used both when `.changeset/config.json` declares no
252
+ * explicit `packages` record AND to augment an explicit record with the
253
+ * remaining workspace packages it does not list (so the record annotates the
254
+ * listed packages without shrinking the release surface). The changeset
255
+ * `ignore` list is intentionally NOT consulted here — an ignored package still
256
+ * declares publishConfig and remains a valid changeset target.
255
257
  */
256
258
  function buildFallbackScopes(fs, workspaces) {
257
259
  return Effect.forEach(workspaces, (ws) => Effect.gen(function* () {
@@ -365,19 +367,24 @@ function makeShape(reader, discovery, fs) {
365
367
  }));
366
368
  const hasExplicitPackages = Object.keys(decodedOptions.packages ?? {}).length > 0;
367
369
  let scopes;
368
- if (hasExplicitPackages) try {
369
- scopes = buildResolvedScopes({
370
- options: decodedOptions,
371
- workspaces,
372
- projectDir,
373
- configPath
374
- });
375
- checkConflicts(scopes, workspaces, projectDir, configPath);
376
- } catch (e) {
377
- if (e instanceof ConfigurationError) return yield* Effect.fail(e);
378
- throw e;
379
- }
380
- else scopes = yield* buildFallbackScopes(fs, workspaces);
370
+ if (hasExplicitPackages) {
371
+ let explicitScopes;
372
+ try {
373
+ explicitScopes = buildResolvedScopes({
374
+ options: decodedOptions,
375
+ workspaces,
376
+ projectDir,
377
+ configPath
378
+ });
379
+ checkConflicts(explicitScopes, workspaces, projectDir, configPath);
380
+ } catch (e) {
381
+ if (e instanceof ConfigurationError) return yield* Effect.fail(e);
382
+ throw e;
383
+ }
384
+ const explicitNames = new Set(explicitScopes.map((s) => s.name));
385
+ const discoveredScopes = yield* buildFallbackScopes(fs, workspaces.filter((w) => !explicitNames.has(w.name)));
386
+ scopes = [...explicitScopes, ...discoveredScopes];
387
+ } else scopes = yield* buildFallbackScopes(fs, workspaces);
381
388
  const inspected = {
382
389
  configPath,
383
390
  projectDir,
@@ -107,7 +107,7 @@
107
107
  }
108
108
  }
109
109
  },
110
- "includes": ["**/turbo.json", "**/tsconfig.json", "**/tsconfig.*.json"]
110
+ "includes": ["**/turbo.json", "**/tsconfig.json", "**/tsconfig.*.json", "**/public/tsconfig/**/*.json"]
111
111
  },
112
112
  {
113
113
  "includes": ["**/*.test.ts"],
@@ -138,7 +138,8 @@
138
138
  "!**/.vitest",
139
139
  "!**/.coverage",
140
140
  "!coverage",
141
- "!**/__test__/fixtures",
141
+ "!.claude/worktrees",
142
+ "!**/__test__/**/fixtures",
142
143
  "!**/__test__/snapshots",
143
144
  "!**/__test__/**/fixtures",
144
145
  "!**/__test__/**/snapshots",
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ "composite": true,
5
+ "declaration": true,
6
+ "module": "nodenext",
7
+ "outDir": "dist",
8
+ "resolveJsonModule": true,
9
+ "strict": true,
10
+ "strictNullChecks": true,
11
+ "target": "es2025",
12
+ "types": ["node"]
13
+ },
14
+ "exclude": ["${configDir}/node_modules", "${configDir}/dist/**/*"],
15
+ "include": [
16
+ "${configDir}/types/*.ts",
17
+ "${configDir}/package.json",
18
+ "${configDir}/*.ts",
19
+ "${configDir}/*.cts",
20
+ "${configDir}/*.mts",
21
+ "${configDir}/src/**/*.ts",
22
+ "${configDir}/src/**/*.tsx",
23
+ "${configDir}/src/**/*.cts",
24
+ "${configDir}/src/**/*.mts",
25
+ "${configDir}/lib/**/*.ts",
26
+ "${configDir}/lib/**/*.tsx",
27
+ "${configDir}/lib/**/*.cts",
28
+ "${configDir}/lib/**/*.mts",
29
+ "${configDir}/__test__/**/*.ts",
30
+ "${configDir}/__test__/**/*.tsx",
31
+ "${configDir}/__test__/**/*.cts",
32
+ "${configDir}/__test__/**/*.mts",
33
+ "${configDir}/public/**/*.json"
34
+ ]
35
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
3
+ "compilerOptions": {
4
+ "allowImportingTsExtensions": true,
5
+ "isolatedModules": true,
6
+ "jsx": "react-jsx",
7
+ "lib": ["dom", "es2023"],
8
+ "module": "esnext",
9
+ "moduleDetection": "force",
10
+ "moduleResolution": "bundler",
11
+ "noEmit": true,
12
+ "noUncheckedSideEffectImports": true,
13
+ "noUnusedLocals": true,
14
+ "noUnusedParameters": true,
15
+ "resolveJsonModule": true,
16
+ "skipLibCheck": true,
17
+ "strict": true,
18
+ "target": "es2023",
19
+ "types": ["node", "react", "react-dom"],
20
+ "useDefineForClassFields": true,
21
+ "verbatimModuleSyntax": true
22
+ },
23
+ "exclude": ["${configDir}/node_modules", "${configDir}/dist", "${configDir}/.rspress"],
24
+ "include": ["${configDir}/docs", "${configDir}/theme", "${configDir}/rspress.config.ts", "${configDir}/types/*.d.ts"],
25
+ "mdx": {
26
+ "checkMdx": true
27
+ }
28
+ }