@savvy-web/silk 2.1.1 → 2.1.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.
@@ -8176,8 +8176,20 @@ interface DepsRegenOptions {
8176
8176
  readonly cwd: string;
8177
8177
  /** Override the base branch used to compute the merge-base when `from` is omitted. */
8178
8178
  readonly base?: string;
8179
- /** Restrict regeneration to a single workspace package. */
8179
+ /** Restrict regeneration to a single workspace package. Unioned with {@link DepsRegenOptions.packages}. */
8180
8180
  readonly package?: string;
8181
+ /**
8182
+ * Restrict regeneration to these workspace packages. Like `package`, an
8183
+ * explicit target bypasses the versionable gate but NOT the changeset
8184
+ * ignore list. Unioned with `package` when both are set.
8185
+ */
8186
+ readonly packages?: ReadonlyArray<string>;
8187
+ /**
8188
+ * Drop these packages from scope entirely — no changesets are written for
8189
+ * them and none of their stale pure-dependency changesets are deleted.
8190
+ * Applies to both repo-wide and explicitly-targeted runs (exclude wins).
8191
+ */
8192
+ readonly exclude?: ReadonlyArray<string>;
8181
8193
  /**
8182
8194
  * When `true`, retain `devDependency` rows (the `deps detect` path);
8183
8195
  * when falsy (the `deps regen` default), drop them unconditionally.
@@ -9246,20 +9258,74 @@ declare class VersionFiles {
9246
9258
  */
9247
9259
  static detectIndent(content: string): string;
9248
9260
  /**
9249
- * Update JSON file at specified JSONPath locations.
9261
+ * Update a JSON (or JSONC) file at specified JSONPath locations,
9262
+ * preserving the original formatting byte-for-byte.
9250
9263
  *
9251
9264
  * @remarks
9252
- * Reads the file, detects its indentation style and trailing newline
9253
- * preference, applies all JSONPath updates via {@link jsonPathSet},
9254
- * and writes the result back preserving the original formatting.
9255
- * Returns `undefined` if no JSONPath locations matched (no write occurs).
9265
+ * The write is performed with `jsonc-effect`'s format-preserving
9266
+ * `modify`/`applyEdits` rather than a `JSON.parse`/`JSON.stringify`
9267
+ * round-trip (which always explodes inline arrays one-element-per-line and
9268
+ * drops comments). Each JSONPath expression is resolved to concrete
9269
+ * `(string | number)[]` paths against the parsed document, and each
9270
+ * concrete path becomes a minimal text edit that touches only the target
9271
+ * value's span — so inline arrays, comments,
9272
+ * indentation, and the trailing-newline preference all survive; a one-line
9273
+ * version bump produces a one-line diff.
9274
+ *
9275
+ * Insertion semantics: a concrete, wildcard-free JSONPath whose leaf
9276
+ * property does not exist yet is inserted after the last sibling using the
9277
+ * document's detected indent (the one case where indent detection still
9278
+ * matters). Wildcard expressions only ever update existing matches. Returns
9279
+ * `undefined` (no write) when nothing was updated or inserted.
9256
9280
  *
9257
9281
  * @param filePath - Absolute path to the JSON file
9258
9282
  * @param jsonPaths - JSONPath expressions to update
9259
9283
  * @param version - New version string
9260
9284
  * @returns Update result, or `undefined` if no changes were made
9285
+ *
9286
+ * @see {@link jsonPathResolve} for concrete-path enumeration
9287
+ * @see {@link VersionFiles.applyVersionEdit} for the per-path edit
9261
9288
  */
9262
9289
  static updateFile(filePath: string, jsonPaths: readonly string[], version: string): VersionFileUpdate | undefined;
9290
+ /**
9291
+ * Compute the full update for a document without touching the filesystem:
9292
+ * the edited content, the previous values at every matched path, and how
9293
+ * many locations actually changed.
9294
+ *
9295
+ * @remarks
9296
+ * This is the single decision path shared by {@link VersionFiles.updateFile}
9297
+ * and the dry-run branches of the two process methods, so a preview reports
9298
+ * exactly the files a real run would write — including pending inserts of a
9299
+ * not-yet-existing wildcard-free leaf, and excluding same-value no-ops.
9300
+ *
9301
+ * @param original - Document text as read from disk
9302
+ * @param jsonPaths - JSONPath expressions to update
9303
+ * @param version - New version string
9304
+ * @returns The updated content, previous values, and changed-location count
9305
+ */
9306
+ private static computeUpdate;
9307
+ /**
9308
+ * Compute the format-preserving edit for a single concrete path, returning
9309
+ * the updated document, or `undefined` when nothing changed.
9310
+ *
9311
+ * @remarks
9312
+ * Delegates to `jsonc-effect`'s {@link modify} + {@link applyEdits}
9313
+ * (requires `jsonc-effect >= 0.3.1`, whose edit spans touch only the target
9314
+ * value), so every other byte of the document is preserved. When the leaf
9315
+ * of a wildcard-free path does not exist, `modify` inserts the property
9316
+ * after the last sibling using the supplied formatting options — the only
9317
+ * case where the detected indent matters. A path whose parent is missing or
9318
+ * not an object cannot be navigated; the resulting modification error is
9319
+ * caught and reported as "no change" so the file is left alone.
9320
+ *
9321
+ * @param content - Current document text
9322
+ * @param concretePath - A wildcard-free `(string | number)[]` path
9323
+ * @param version - New version string
9324
+ * @param indentUnit - One indentation level, for inserted text
9325
+ * @param eol - End-of-line sequence, for inserted text
9326
+ * @returns The updated document, or `undefined` if the path was unchanged
9327
+ */
9328
+ private static applyVersionEdit;
9263
9329
  /**
9264
9330
  * Orchestrate the full version file update flow.
9265
9331
  *
@@ -8176,8 +8176,20 @@ interface DepsRegenOptions {
8176
8176
  readonly cwd: string;
8177
8177
  /** Override the base branch used to compute the merge-base when `from` is omitted. */
8178
8178
  readonly base?: string;
8179
- /** Restrict regeneration to a single workspace package. */
8179
+ /** Restrict regeneration to a single workspace package. Unioned with {@link DepsRegenOptions.packages}. */
8180
8180
  readonly package?: string;
8181
+ /**
8182
+ * Restrict regeneration to these workspace packages. Like `package`, an
8183
+ * explicit target bypasses the versionable gate but NOT the changeset
8184
+ * ignore list. Unioned with `package` when both are set.
8185
+ */
8186
+ readonly packages?: ReadonlyArray<string>;
8187
+ /**
8188
+ * Drop these packages from scope entirely — no changesets are written for
8189
+ * them and none of their stale pure-dependency changesets are deleted.
8190
+ * Applies to both repo-wide and explicitly-targeted runs (exclude wins).
8191
+ */
8192
+ readonly exclude?: ReadonlyArray<string>;
8181
8193
  /**
8182
8194
  * When `true`, retain `devDependency` rows (the `deps detect` path);
8183
8195
  * when falsy (the `deps regen` default), drop them unconditionally.
@@ -9246,20 +9258,74 @@ declare class VersionFiles {
9246
9258
  */
9247
9259
  static detectIndent(content: string): string;
9248
9260
  /**
9249
- * Update JSON file at specified JSONPath locations.
9261
+ * Update a JSON (or JSONC) file at specified JSONPath locations,
9262
+ * preserving the original formatting byte-for-byte.
9250
9263
  *
9251
9264
  * @remarks
9252
- * Reads the file, detects its indentation style and trailing newline
9253
- * preference, applies all JSONPath updates via {@link jsonPathSet},
9254
- * and writes the result back preserving the original formatting.
9255
- * Returns `undefined` if no JSONPath locations matched (no write occurs).
9265
+ * The write is performed with `jsonc-effect`'s format-preserving
9266
+ * `modify`/`applyEdits` rather than a `JSON.parse`/`JSON.stringify`
9267
+ * round-trip (which always explodes inline arrays one-element-per-line and
9268
+ * drops comments). Each JSONPath expression is resolved to concrete
9269
+ * `(string | number)[]` paths against the parsed document, and each
9270
+ * concrete path becomes a minimal text edit that touches only the target
9271
+ * value's span — so inline arrays, comments,
9272
+ * indentation, and the trailing-newline preference all survive; a one-line
9273
+ * version bump produces a one-line diff.
9274
+ *
9275
+ * Insertion semantics: a concrete, wildcard-free JSONPath whose leaf
9276
+ * property does not exist yet is inserted after the last sibling using the
9277
+ * document's detected indent (the one case where indent detection still
9278
+ * matters). Wildcard expressions only ever update existing matches. Returns
9279
+ * `undefined` (no write) when nothing was updated or inserted.
9256
9280
  *
9257
9281
  * @param filePath - Absolute path to the JSON file
9258
9282
  * @param jsonPaths - JSONPath expressions to update
9259
9283
  * @param version - New version string
9260
9284
  * @returns Update result, or `undefined` if no changes were made
9285
+ *
9286
+ * @see {@link jsonPathResolve} for concrete-path enumeration
9287
+ * @see {@link VersionFiles.applyVersionEdit} for the per-path edit
9261
9288
  */
9262
9289
  static updateFile(filePath: string, jsonPaths: readonly string[], version: string): VersionFileUpdate | undefined;
9290
+ /**
9291
+ * Compute the full update for a document without touching the filesystem:
9292
+ * the edited content, the previous values at every matched path, and how
9293
+ * many locations actually changed.
9294
+ *
9295
+ * @remarks
9296
+ * This is the single decision path shared by {@link VersionFiles.updateFile}
9297
+ * and the dry-run branches of the two process methods, so a preview reports
9298
+ * exactly the files a real run would write — including pending inserts of a
9299
+ * not-yet-existing wildcard-free leaf, and excluding same-value no-ops.
9300
+ *
9301
+ * @param original - Document text as read from disk
9302
+ * @param jsonPaths - JSONPath expressions to update
9303
+ * @param version - New version string
9304
+ * @returns The updated content, previous values, and changed-location count
9305
+ */
9306
+ private static computeUpdate;
9307
+ /**
9308
+ * Compute the format-preserving edit for a single concrete path, returning
9309
+ * the updated document, or `undefined` when nothing changed.
9310
+ *
9311
+ * @remarks
9312
+ * Delegates to `jsonc-effect`'s {@link modify} + {@link applyEdits}
9313
+ * (requires `jsonc-effect >= 0.3.1`, whose edit spans touch only the target
9314
+ * value), so every other byte of the document is preserved. When the leaf
9315
+ * of a wildcard-free path does not exist, `modify` inserts the property
9316
+ * after the last sibling using the supplied formatting options — the only
9317
+ * case where the detected indent matters. A path whose parent is missing or
9318
+ * not an object cannot be navigated; the resulting modification error is
9319
+ * caught and reported as "no change" so the file is left alone.
9320
+ *
9321
+ * @param content - Current document text
9322
+ * @param concretePath - A wildcard-free `(string | number)[]` path
9323
+ * @param version - New version string
9324
+ * @param indentUnit - One indentation level, for inserted text
9325
+ * @param eol - End-of-line sequence, for inserted text
9326
+ * @returns The updated document, or `undefined` if the path was unchanged
9327
+ */
9328
+ private static applyVersionEdit;
9263
9329
  /**
9264
9330
  * Orchestrate the full version file update flow.
9265
9331
  *