putitoutthere 0.3.19 → 0.3.21
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.
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +4 -0
- package/dist/action.js.map +1 -1
- package/dist/cli-bin.js +5 -2
- package/dist/cli-bin.js.map +1 -1
- package/dist/handlers/crates.d.ts +3 -18
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +4 -108
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/scan-dirty-outside-manifest.d.ts +21 -0
- package/dist/handlers/scan-dirty-outside-manifest.d.ts.map +1 -0
- package/dist/handlers/scan-dirty-outside-manifest.js +104 -0
- package/dist/handlers/scan-dirty-outside-manifest.js.map +1 -0
- package/dist/is-within-dir.d.ts +11 -0
- package/dist/is-within-dir.d.ts.map +1 -0
- package/dist/is-within-dir.js +13 -0
- package/dist/is-within-dir.js.map +1 -0
- package/dist/utils/bound-capture.d.ts +12 -0
- package/dist/utils/bound-capture.d.ts.map +1 -0
- package/dist/utils/bound-capture.js +22 -0
- package/dist/utils/bound-capture.js.map +1 -0
- package/dist/utils/exec-capture.d.ts +1 -0
- package/dist/utils/exec-capture.d.ts.map +1 -1
- package/dist/utils/exec-capture.js +18 -3
- package/dist/utils/exec-capture.js.map +1 -1
- package/dist/utils/flush-stdio.d.ts +16 -0
- package/dist/utils/flush-stdio.d.ts.map +1 -0
- package/dist/utils/flush-stdio.js +24 -0
- package/dist/utils/flush-stdio.js.map +1 -0
- package/package.json +7 -7
package/dist/action.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoE1C"}
|
package/dist/action.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { pathToFileURL } from 'node:url';
|
|
11
11
|
import { run } from './cli.js';
|
|
12
|
+
import { flushStdio } from './utils/flush-stdio.js';
|
|
12
13
|
export async function main() {
|
|
13
14
|
const command = process.env.INPUT_COMMAND ?? '';
|
|
14
15
|
const workingDirectory = process.env.INPUT_WORKING_DIRECTORY ?? '';
|
|
@@ -20,6 +21,7 @@ export async function main() {
|
|
|
20
21
|
const failOnError = (process.env.INPUT_FAIL_ON_ERROR ?? 'true').toLowerCase() !== 'false';
|
|
21
22
|
if (!command) {
|
|
22
23
|
process.stderr.write('putitoutthere action: missing required input `command`\n');
|
|
24
|
+
await flushStdio();
|
|
23
25
|
process.exit(1);
|
|
24
26
|
}
|
|
25
27
|
// #276: write-version uses a different argv shape — `--path` (the
|
|
@@ -84,8 +86,10 @@ export async function main() {
|
|
|
84
86
|
const code = await run(argv);
|
|
85
87
|
if (code !== 0 && !failOnError) {
|
|
86
88
|
process.stderr.write(`putitoutthere action: ignoring non-zero exit (fail_on_error=false): ${code}\n`);
|
|
89
|
+
await flushStdio();
|
|
87
90
|
process.exit(0);
|
|
88
91
|
}
|
|
92
|
+
await flushStdio();
|
|
89
93
|
process.exit(code);
|
|
90
94
|
}
|
|
91
95
|
// Entry-point guard. Compare via `pathToFileURL` so the guard fires on
|
package/dist/action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-bin.js
CHANGED
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
* `./cli.js`) does not inline this file's top-level invocation. See #201.
|
|
6
6
|
*/
|
|
7
7
|
import { run } from './cli.js';
|
|
8
|
-
|
|
8
|
+
import { flushStdio } from './utils/flush-stdio.js';
|
|
9
|
+
run(process.argv).then(async (code) => {
|
|
10
|
+
await flushStdio();
|
|
9
11
|
process.exit(code);
|
|
10
|
-
}, (err) => {
|
|
12
|
+
}, async (err) => {
|
|
11
13
|
process.stderr.write(`putitoutthere: fatal: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
14
|
+
await flushStdio();
|
|
12
15
|
process.exit(4);
|
|
13
16
|
});
|
|
14
17
|
//# sourceMappingURL=cli-bin.js.map
|
package/dist/cli-bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-bin.js","sourceRoot":"","sources":["../src/cli-bin.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-bin.js","sourceRoot":"","sources":["../src/cli-bin.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,UAAU,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,EACD,KAAK,EAAE,GAAY,EAAE,EAAE;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC9E,CAAC;IACF,MAAM,UAAU,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CACF,CAAC"}
|
|
@@ -26,17 +26,9 @@
|
|
|
26
26
|
* reads it off the ExecError and writes to a file with no line cut.
|
|
27
27
|
*
|
|
28
28
|
* --allow-dirty is required for our writeVersion-then-publish model
|
|
29
|
-
* (#135),
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* working tree via `git status --porcelain` and refuse to publish
|
|
33
|
-
* if anything is dirty outside the manifests writeVersion just wrote.
|
|
34
|
-
* "Manifests", plural, for two reasons: an inheriting crate's version
|
|
35
|
-
* lives at the workspace root (#639), and bumping a crate also moves the
|
|
36
|
-
* in-repo requirements that point at it (#640), which live in other
|
|
37
|
-
* crates' files. Either way the write can land outside the package
|
|
38
|
-
* directory entirely. If we can't scan (e.g. no git repo), we fall back
|
|
39
|
-
* to cargo's own --allow-dirty behavior.
|
|
29
|
+
* (#135), so `scanDirtyOutsideManifest` restores a narrowed version of
|
|
30
|
+
* cargo's own dirty-check before we invoke it. A null scan (e.g. no git
|
|
31
|
+
* repo) means we can't verify, and we fall back to cargo's --allow-dirty.
|
|
40
32
|
*
|
|
41
33
|
* OIDC: the crates-io-auth-action GHA step exchanges the OIDC JWT for
|
|
42
34
|
* a short-lived CARGO_REGISTRY_TOKEN in the env. The handler doesn't
|
|
@@ -44,13 +36,6 @@
|
|
|
44
36
|
* up (same for classic token fallback).
|
|
45
37
|
*/
|
|
46
38
|
import type { Handler } from '../types.js';
|
|
47
|
-
/**
|
|
48
|
-
* Return paths of dirty working-tree files that are NOT the package's
|
|
49
|
-
* managed Cargo.toml. Returns null if we can't determine (not inside
|
|
50
|
-
* a git work tree, git command missing, etc) — callers treat null as
|
|
51
|
-
* "can't verify, fall through to cargo's own --allow-dirty behavior."
|
|
52
|
-
*/
|
|
53
|
-
export declare function scanDirtyOutsideManifest(cwd: string, pkgPath: string, artifactsRoot?: string, siblingPackagePaths?: readonly string[], managedManifestPaths?: readonly string[]): Promise<string[] | null>;
|
|
54
39
|
export declare function relativeOrSelf(base: string, target: string): string;
|
|
55
40
|
export declare const crates: Handler;
|
|
56
41
|
//# sourceMappingURL=crates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crates.d.ts","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"crates.d.ts","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAKH,OAAO,KAAK,EAAO,OAAO,EAA+B,MAAM,aAAa,CAAC;AA0Q7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOnE;AA6CD,eAAO,MAAM,MAAM,EAAE,OAOpB,CAAC"}
|
package/dist/handlers/crates.js
CHANGED
|
@@ -26,17 +26,9 @@
|
|
|
26
26
|
* reads it off the ExecError and writes to a file with no line cut.
|
|
27
27
|
*
|
|
28
28
|
* --allow-dirty is required for our writeVersion-then-publish model
|
|
29
|
-
* (#135),
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* working tree via `git status --porcelain` and refuse to publish
|
|
33
|
-
* if anything is dirty outside the manifests writeVersion just wrote.
|
|
34
|
-
* "Manifests", plural, for two reasons: an inheriting crate's version
|
|
35
|
-
* lives at the workspace root (#639), and bumping a crate also moves the
|
|
36
|
-
* in-repo requirements that point at it (#640), which live in other
|
|
37
|
-
* crates' files. Either way the write can land outside the package
|
|
38
|
-
* directory entirely. If we can't scan (e.g. no git repo), we fall back
|
|
39
|
-
* to cargo's own --allow-dirty behavior.
|
|
29
|
+
* (#135), so `scanDirtyOutsideManifest` restores a narrowed version of
|
|
30
|
+
* cargo's own dirty-check before we invoke it. A null scan (e.g. no git
|
|
31
|
+
* repo) means we can't verify, and we fall back to cargo's --allow-dirty.
|
|
40
32
|
*
|
|
41
33
|
* OIDC: the crates-io-auth-action GHA step exchanges the OIDC JWT for
|
|
42
34
|
* a short-lived CARGO_REGISTRY_TOKEN in the env. The handler doesn't
|
|
@@ -52,7 +44,7 @@ import { toError } from '../to-error.js';
|
|
|
52
44
|
import { USER_AGENT } from '../version.js';
|
|
53
45
|
import { execCapture } from '../utils/exec-capture.js';
|
|
54
46
|
import { elideMiddle } from '../utils/elide-middle.js';
|
|
55
|
-
import {
|
|
47
|
+
import { scanDirtyOutsideManifest } from './scan-dirty-outside-manifest.js';
|
|
56
48
|
import { writeDependentVersionReqs } from '../write-dependent-version-reqs.js';
|
|
57
49
|
import { writeResolvedCargoVersion } from '../write-resolved-cargo-version.js';
|
|
58
50
|
import { ExecError } from '../utils/exec-error.js';
|
|
@@ -271,102 +263,6 @@ function isRateLimited(stderr) {
|
|
|
271
263
|
function crateNameFor(pkg) {
|
|
272
264
|
return pkg.crate ?? pkg.name;
|
|
273
265
|
}
|
|
274
|
-
/**
|
|
275
|
-
* Return paths of dirty working-tree files that are NOT the package's
|
|
276
|
-
* managed Cargo.toml. Returns null if we can't determine (not inside
|
|
277
|
-
* a git work tree, git command missing, etc) — callers treat null as
|
|
278
|
-
* "can't verify, fall through to cargo's own --allow-dirty behavior."
|
|
279
|
-
*/
|
|
280
|
-
export async function scanDirtyOutsideManifest(cwd, pkgPath, artifactsRoot, siblingPackagePaths, managedManifestPaths) {
|
|
281
|
-
// Confirm we're inside a git work tree. If not, bail and let cargo's
|
|
282
|
-
// own --allow-dirty handling take over.
|
|
283
|
-
try {
|
|
284
|
-
const topOut = (await execCapture('git', ['rev-parse', '--show-toplevel'], {
|
|
285
|
-
cwd,
|
|
286
|
-
})).stdout;
|
|
287
|
-
if (!topOut.trim()) {
|
|
288
|
-
return null;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
catch {
|
|
292
|
-
return null;
|
|
293
|
-
}
|
|
294
|
-
// Ask git for the managed file's path relative to the repo root, so
|
|
295
|
-
// we can string-compare against porcelain output directly without
|
|
296
|
-
// fighting platform path conventions (macOS /private/ symlinks,
|
|
297
|
-
// Windows 8.3 short names + case-insensitive FS).
|
|
298
|
-
const managedRels = new Set();
|
|
299
|
-
try {
|
|
300
|
-
const rel = (await execCapture('git', ['ls-files', '--full-name', '--', 'Cargo.toml'], {
|
|
301
|
-
cwd: pkgPath,
|
|
302
|
-
})).stdout.trim();
|
|
303
|
-
managedRels.add(rel);
|
|
304
|
-
}
|
|
305
|
-
catch {
|
|
306
|
-
// Cargo.toml not tracked (e.g. first release on a fresh tree).
|
|
307
|
-
// Fall through; an empty set means nothing is allowed dirty. (An
|
|
308
|
-
// untracked manifest yields an empty `rel`, which porcelain can never
|
|
309
|
-
// name either, so it is harmless in the set.)
|
|
310
|
-
}
|
|
311
|
-
// #639: whatever writeVersion actually wrote. For a crate that inherits
|
|
312
|
-
// its version the bump lands in the workspace root's Cargo.toml, which is
|
|
313
|
-
// outside the package directory and would otherwise read as a stray edit
|
|
314
|
-
// and refuse the publish.
|
|
315
|
-
for (const rel of repoRelativePaths(cwd, managedManifestPaths)) {
|
|
316
|
-
managedRels.add(rel);
|
|
317
|
-
}
|
|
318
|
-
let porcelain;
|
|
319
|
-
try {
|
|
320
|
-
porcelain = (await execCapture('git', ['status', '--porcelain'], {
|
|
321
|
-
cwd,
|
|
322
|
-
})).stdout;
|
|
323
|
-
}
|
|
324
|
-
catch {
|
|
325
|
-
return null;
|
|
326
|
-
}
|
|
327
|
-
// Reusable workflow's `actions/download-artifact@v4` step creates
|
|
328
|
-
// `artifacts/` under cwd unconditionally — even for fixtures whose
|
|
329
|
-
// packages don't upload anything (crates-only). That entry is engine-
|
|
330
|
-
// managed scratch space, not a stray edit; skip it.
|
|
331
|
-
let artifactsRel = '';
|
|
332
|
-
if (artifactsRoot !== undefined && artifactsRoot !== '') {
|
|
333
|
-
const r = relative(cwd, artifactsRoot);
|
|
334
|
-
artifactsRel = r === '' ? '' : r.replace(/\\/g, '/');
|
|
335
|
-
}
|
|
336
|
-
// Sibling package directories — anything inside them is workflow
|
|
337
|
-
// state from another handler (e.g. node_modules/ + package-lock.json
|
|
338
|
-
// + dist/ from the npm `Build npm packages` step). cargo only packs
|
|
339
|
-
// files inside its own package dir, so these can't end up in the
|
|
340
|
-
// crate tarball regardless of whether they're "dirty" by git's view.
|
|
341
|
-
const siblingRels = repoRelativePaths(cwd, siblingPackagePaths);
|
|
342
|
-
const unexpected = [];
|
|
343
|
-
for (const raw of porcelain.split('\n')) {
|
|
344
|
-
if (raw.length < 4) {
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
|
-
// Porcelain v1: "XY path" or "XY old -> new" for renames. Index 3+
|
|
348
|
-
// is the path; strip quoting if git applied any.
|
|
349
|
-
const rest = raw.slice(3);
|
|
350
|
-
const path = rest.includes(' -> ') ? rest.split(' -> ').pop() : rest;
|
|
351
|
-
const normalized = path.startsWith('"') && path.endsWith('"') ? path.slice(1, -1) : path;
|
|
352
|
-
if (managedRels.has(normalized)) {
|
|
353
|
-
continue;
|
|
354
|
-
}
|
|
355
|
-
if (artifactsRel !== '' &&
|
|
356
|
-
(normalized === artifactsRel ||
|
|
357
|
-
normalized === `${artifactsRel}/` ||
|
|
358
|
-
normalized.startsWith(`${artifactsRel}/`))) {
|
|
359
|
-
continue;
|
|
360
|
-
}
|
|
361
|
-
if (siblingRels.some((s) => normalized === s ||
|
|
362
|
-
normalized === `${s}/` ||
|
|
363
|
-
normalized.startsWith(`${s}/`))) {
|
|
364
|
-
continue;
|
|
365
|
-
}
|
|
366
|
-
unexpected.push(normalized);
|
|
367
|
-
}
|
|
368
|
-
return unexpected;
|
|
369
|
-
}
|
|
370
266
|
export function relativeOrSelf(base, target) {
|
|
371
267
|
const r = relative(base, target);
|
|
372
268
|
// Normalise to forward slashes: `node:path`'s relative() yields backslashes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crates.js","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crates.js","sourceRoot":"","sources":["../../src/handlers/crates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The narrowed dirty-tree check the crates handler runs before cargo (#135).
|
|
3
|
+
*
|
|
4
|
+
* `--allow-dirty` is required for our writeVersion-then-publish model, but
|
|
5
|
+
* cargo's default dirty-check is exactly the safety net that catches shipping
|
|
6
|
+
* uncommitted stray edits. This restores a narrower version of it: scan the
|
|
7
|
+
* working tree via `git status --porcelain` and refuse to publish if anything
|
|
8
|
+
* is dirty outside the manifests writeVersion just wrote. "Manifests", plural,
|
|
9
|
+
* for two reasons: an inheriting crate's version lives at the workspace root
|
|
10
|
+
* (#639), and bumping a crate also moves the in-repo requirements that point at
|
|
11
|
+
* it (#640), which live in other crates' files. Either way the write can land
|
|
12
|
+
* outside the package directory entirely.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Return paths of dirty working-tree files that are NOT the package's
|
|
16
|
+
* managed Cargo.toml. Returns null if we can't determine (not inside
|
|
17
|
+
* a git work tree, git command missing, etc) — callers treat null as
|
|
18
|
+
* "can't verify, fall through to cargo's own --allow-dirty behavior."
|
|
19
|
+
*/
|
|
20
|
+
export declare function scanDirtyOutsideManifest(cwd: string, pkgPath: string, artifactsRoot?: string, siblingPackagePaths?: readonly string[], managedManifestPaths?: readonly string[]): Promise<string[] | null>;
|
|
21
|
+
//# sourceMappingURL=scan-dirty-outside-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-dirty-outside-manifest.d.ts","sourceRoot":"","sources":["../../src/handlers/scan-dirty-outside-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,EACvC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GACvC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAmE1B"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The narrowed dirty-tree check the crates handler runs before cargo (#135).
|
|
3
|
+
*
|
|
4
|
+
* `--allow-dirty` is required for our writeVersion-then-publish model, but
|
|
5
|
+
* cargo's default dirty-check is exactly the safety net that catches shipping
|
|
6
|
+
* uncommitted stray edits. This restores a narrower version of it: scan the
|
|
7
|
+
* working tree via `git status --porcelain` and refuse to publish if anything
|
|
8
|
+
* is dirty outside the manifests writeVersion just wrote. "Manifests", plural,
|
|
9
|
+
* for two reasons: an inheriting crate's version lives at the workspace root
|
|
10
|
+
* (#639), and bumping a crate also moves the in-repo requirements that point at
|
|
11
|
+
* it (#640), which live in other crates' files. Either way the write can land
|
|
12
|
+
* outside the package directory entirely.
|
|
13
|
+
*/
|
|
14
|
+
import { execCapture } from '../utils/exec-capture.js';
|
|
15
|
+
import { isWithinDir } from '../is-within-dir.js';
|
|
16
|
+
import { repoRelativePaths } from '../repo-relative-paths.js';
|
|
17
|
+
/**
|
|
18
|
+
* Return paths of dirty working-tree files that are NOT the package's
|
|
19
|
+
* managed Cargo.toml. Returns null if we can't determine (not inside
|
|
20
|
+
* a git work tree, git command missing, etc) — callers treat null as
|
|
21
|
+
* "can't verify, fall through to cargo's own --allow-dirty behavior."
|
|
22
|
+
*/
|
|
23
|
+
export async function scanDirtyOutsideManifest(cwd, pkgPath, artifactsRoot, siblingPackagePaths, managedManifestPaths) {
|
|
24
|
+
// Confirm we're inside a git work tree. If not, bail and let cargo's
|
|
25
|
+
// own --allow-dirty handling take over.
|
|
26
|
+
try {
|
|
27
|
+
const topOut = (await execCapture('git', ['rev-parse', '--show-toplevel'], {
|
|
28
|
+
cwd,
|
|
29
|
+
})).stdout;
|
|
30
|
+
if (!topOut.trim()) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
// Ask git for the managed file's path relative to the repo root, so
|
|
38
|
+
// we can string-compare against porcelain output directly without
|
|
39
|
+
// fighting platform path conventions (macOS /private/ symlinks,
|
|
40
|
+
// Windows 8.3 short names + case-insensitive FS).
|
|
41
|
+
const managedRels = new Set();
|
|
42
|
+
try {
|
|
43
|
+
const rel = (await execCapture('git', ['ls-files', '--full-name', '--', 'Cargo.toml'], {
|
|
44
|
+
cwd: pkgPath,
|
|
45
|
+
})).stdout.trim();
|
|
46
|
+
managedRels.add(rel);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Cargo.toml not tracked (e.g. first release on a fresh tree).
|
|
50
|
+
// Fall through; an empty set means nothing is allowed dirty. (An
|
|
51
|
+
// untracked manifest yields an empty `rel`, which porcelain can never
|
|
52
|
+
// name either, so it is harmless in the set.)
|
|
53
|
+
}
|
|
54
|
+
// #639: whatever writeVersion actually wrote. For a crate that inherits
|
|
55
|
+
// its version the bump lands in the workspace root's Cargo.toml, which is
|
|
56
|
+
// outside the package directory and would otherwise read as a stray edit
|
|
57
|
+
// and refuse the publish.
|
|
58
|
+
for (const rel of repoRelativePaths(cwd, managedManifestPaths)) {
|
|
59
|
+
managedRels.add(rel);
|
|
60
|
+
}
|
|
61
|
+
let porcelain;
|
|
62
|
+
try {
|
|
63
|
+
porcelain = (await execCapture('git', ['status', '--porcelain'], {
|
|
64
|
+
cwd,
|
|
65
|
+
})).stdout;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
// Directories whose whole contents are workflow state rather than stray
|
|
71
|
+
// edits. `artifacts/` is engine-managed scratch the reusable workflow's
|
|
72
|
+
// download-artifact step creates under cwd unconditionally, even for
|
|
73
|
+
// crates-only fixtures that upload nothing (#244). A sibling package
|
|
74
|
+
// directory holds another handler's install output (node_modules/,
|
|
75
|
+
// package-lock.json, dist/ from the npm build step); cargo only packs
|
|
76
|
+
// files inside its own package dir, so neither can reach the tarball.
|
|
77
|
+
// Anything at or outside cwd drops out here, which is what retires the
|
|
78
|
+
// "artifacts root is the repo root" and "sibling is elsewhere" cases.
|
|
79
|
+
const skipRoots = [
|
|
80
|
+
...repoRelativePaths(cwd, artifactsRoot === undefined ? undefined : [artifactsRoot]),
|
|
81
|
+
...repoRelativePaths(cwd, siblingPackagePaths),
|
|
82
|
+
];
|
|
83
|
+
const unexpected = [];
|
|
84
|
+
for (const raw of porcelain.split('\n')) {
|
|
85
|
+
if (raw.length < 4) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
// Porcelain v1: "XY path" or "XY old -> new" for renames. Index 3+ is
|
|
89
|
+
// the path, and splitting on the rename arrow leaves a non-rename row
|
|
90
|
+
// untouched. Strip quoting if git applied any.
|
|
91
|
+
const rest = raw.slice(3);
|
|
92
|
+
const path = rest.split(' -> ').pop();
|
|
93
|
+
const normalized = path.startsWith('"') && path.endsWith('"') ? path.slice(1, -1) : path;
|
|
94
|
+
if (managedRels.has(normalized)) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (skipRoots.some((root) => isWithinDir(normalized, root))) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
unexpected.push(normalized);
|
|
101
|
+
}
|
|
102
|
+
return unexpected;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=scan-dirty-outside-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-dirty-outside-manifest.js","sourceRoot":"","sources":["../../src/handlers/scan-dirty-outside-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory containment over repo-relative, forward-slashed paths — the form
|
|
3
|
+
* `git status --porcelain` and `repoRelativePaths` both speak.
|
|
4
|
+
*
|
|
5
|
+
* Callers pass directories that came out of `repoRelativePaths`, which never
|
|
6
|
+
* yields an empty string, so there is no "empty means the whole tree" case to
|
|
7
|
+
* defend against here.
|
|
8
|
+
*/
|
|
9
|
+
/** Whether `path` names `dir` itself or anything inside it. */
|
|
10
|
+
export declare function isWithinDir(path: string, dir: string): boolean;
|
|
11
|
+
//# sourceMappingURL=is-within-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-within-dir.d.ts","sourceRoot":"","sources":["../src/is-within-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory containment over repo-relative, forward-slashed paths — the form
|
|
3
|
+
* `git status --porcelain` and `repoRelativePaths` both speak.
|
|
4
|
+
*
|
|
5
|
+
* Callers pass directories that came out of `repoRelativePaths`, which never
|
|
6
|
+
* yields an empty string, so there is no "empty means the whole tree" case to
|
|
7
|
+
* defend against here.
|
|
8
|
+
*/
|
|
9
|
+
/** Whether `path` names `dir` itself or anything inside it. */
|
|
10
|
+
export function isWithinDir(path, dir) {
|
|
11
|
+
return path === dir || path.startsWith(`${dir}/`);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=is-within-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-within-dir.js","sourceRoot":"","sources":["../src/is-within-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+DAA+D;AAC/D,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAW;IACnD,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bound a captured stream to `ceiling` characters, keeping both ends and
|
|
3
|
+
* saying how much went. A stream that just stops is indistinguishable from a
|
|
4
|
+
* tool that fell silent; diagnosis lives at the tail, and the failing phase is
|
|
5
|
+
* named at the head.
|
|
6
|
+
*
|
|
7
|
+
* The banner leads the result rather than sitting at the cut, so it survives
|
|
8
|
+
* the job-summary render's head-only truncation (`verbose.ts`): a reader who
|
|
9
|
+
* gets only the first slice still learns the stream was elided.
|
|
10
|
+
*/
|
|
11
|
+
export declare function boundCapture(text: string, ceiling: number): string;
|
|
12
|
+
//# sourceMappingURL=bound-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bound-capture.d.ts","sourceRoot":"","sources":["../../src/utils/bound-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUlE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bound a captured stream to `ceiling` characters, keeping both ends and
|
|
3
|
+
* saying how much went. A stream that just stops is indistinguishable from a
|
|
4
|
+
* tool that fell silent; diagnosis lives at the tail, and the failing phase is
|
|
5
|
+
* named at the head.
|
|
6
|
+
*
|
|
7
|
+
* The banner leads the result rather than sitting at the cut, so it survives
|
|
8
|
+
* the job-summary render's head-only truncation (`verbose.ts`): a reader who
|
|
9
|
+
* gets only the first slice still learns the stream was elided.
|
|
10
|
+
*/
|
|
11
|
+
export function boundCapture(text, ceiling) {
|
|
12
|
+
if (text.length <= ceiling) {
|
|
13
|
+
return text;
|
|
14
|
+
}
|
|
15
|
+
const head = Math.floor(ceiling / 2);
|
|
16
|
+
const tail = ceiling - head;
|
|
17
|
+
return [
|
|
18
|
+
`[putitoutthere] capture ceiling reached: dropped ${text.length - ceiling} bytes`,
|
|
19
|
+
`${text.slice(0, head)}${text.slice(text.length - tail)}`,
|
|
20
|
+
].join('\n');
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=bound-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bound-capture.js","sourceRoot":"","sources":["../../src/utils/bound-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAe;IACxD,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IAC5B,OAAO;QACL,oDAAoD,IAAI,CAAC,MAAM,GAAG,OAAO,QAAQ;QACjF,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;KAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-capture.d.ts","sourceRoot":"","sources":["../../src/utils/exec-capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exec-capture.d.ts","sourceRoot":"","sources":["../../src/utils/exec-capture.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IAGjC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAgCrB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
|
+
import { boundCapture } from './bound-capture.js';
|
|
2
3
|
import { ExecError } from './exec-error.js';
|
|
3
4
|
/**
|
|
4
5
|
* Async replacement for
|
|
@@ -10,15 +11,29 @@ import { ExecError } from './exec-error.js';
|
|
|
10
11
|
* explicit and tests are simple.
|
|
11
12
|
*/
|
|
12
13
|
export function execCapture(cmd, args, opts = {}) {
|
|
14
|
+
// Default of 8 MiB: a cold `cargo publish --verbose` of a mid-sized crate
|
|
15
|
+
// was measured at ~380KB of stderr (#651), so an ordinary build stays whole
|
|
16
|
+
// and the elision path stays theoretical.
|
|
17
|
+
const ceiling = opts.maxBuffer ?? 8 * 1024 * 1024;
|
|
13
18
|
return new Promise((resolve, reject) => {
|
|
14
|
-
execFile(cmd, [...args],
|
|
19
|
+
execFile(cmd, [...args],
|
|
20
|
+
// Infinity, not `ceiling`: execFile's overflow policy is to raise
|
|
21
|
+
// ERR_CHILD_PROCESS_STDIO_MAXBUFFER and SIGTERM the child, so a real
|
|
22
|
+
// number here kills a publish for being verbose and reports a failure
|
|
23
|
+
// the tool never produced (#664). Bound what we keep instead.
|
|
24
|
+
{ encoding: 'utf8', cwd: opts.cwd, env: opts.env, maxBuffer: Infinity }, (err, stdout, stderr) => {
|
|
25
|
+
const out = boundCapture(stdout, ceiling);
|
|
26
|
+
const errOut = boundCapture(stderr, ceiling);
|
|
15
27
|
if (err) {
|
|
16
28
|
const code = err.code;
|
|
17
29
|
const status = typeof code === 'number' ? code : null;
|
|
18
|
-
reject(new ExecError(err.message,
|
|
30
|
+
reject(new ExecError(boundCapture(err.message, ceiling), out, errOut, status, {
|
|
31
|
+
cause: err,
|
|
32
|
+
command: [cmd, ...args],
|
|
33
|
+
}));
|
|
19
34
|
return;
|
|
20
35
|
}
|
|
21
|
-
resolve({ stdout, stderr });
|
|
36
|
+
resolve({ stdout: out, stderr: errOut });
|
|
22
37
|
});
|
|
23
38
|
});
|
|
24
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-capture.js","sourceRoot":"","sources":["../../src/utils/exec-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"exec-capture.js","sourceRoot":"","sources":["../../src/utils/exec-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgB5C;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,IAAuB,EACvB,OAA2B,EAAE;IAE7B,0EAA0E;IAC1E,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,GAAG,EACH,CAAC,GAAG,IAAI,CAAC;QACT,kEAAkE;QAClE,qEAAqE;QACrE,sEAAsE;QACtE,8DAA8D;QAC9D,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EACvE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,IAAI,GAAa,GAA0B,CAAC,IAAI,CAAC;gBACvD,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtD,MAAM,CACJ,IAAI,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;oBACrE,KAAK,EAAE,GAAG;oBACV,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBACxB,CAAC,CACH,CAAC;gBACF,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drain stdout and stderr so a following `process.exit` cannot truncate them.
|
|
3
|
+
*
|
|
4
|
+
* Writes to a pipe are asynchronous and `process.exit` drops whatever is still
|
|
5
|
+
* queued, so a multi-megabyte failure dump reaches the runner cut off around
|
|
6
|
+
* 146KB — losing the tail, which is exactly where the failing tool prints its
|
|
7
|
+
* error (#664). Assigning `process.exitCode` would also flush, but then exit
|
|
8
|
+
* waits on every lingering handle (undici keeps sockets pooled after `fetch`),
|
|
9
|
+
* so drain explicitly and keep the hard exit.
|
|
10
|
+
*
|
|
11
|
+
* The zero-length write is a position marker, not output: stream writes
|
|
12
|
+
* complete in order, so its callback fires only once everything queued ahead
|
|
13
|
+
* of it has reached the fd.
|
|
14
|
+
*/
|
|
15
|
+
export declare function flushStdio(): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=flush-stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flush-stdio.d.ts","sourceRoot":"","sources":["../../src/utils/flush-stdio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAQhD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drain stdout and stderr so a following `process.exit` cannot truncate them.
|
|
3
|
+
*
|
|
4
|
+
* Writes to a pipe are asynchronous and `process.exit` drops whatever is still
|
|
5
|
+
* queued, so a multi-megabyte failure dump reaches the runner cut off around
|
|
6
|
+
* 146KB — losing the tail, which is exactly where the failing tool prints its
|
|
7
|
+
* error (#664). Assigning `process.exitCode` would also flush, but then exit
|
|
8
|
+
* waits on every lingering handle (undici keeps sockets pooled after `fetch`),
|
|
9
|
+
* so drain explicitly and keep the hard exit.
|
|
10
|
+
*
|
|
11
|
+
* The zero-length write is a position marker, not output: stream writes
|
|
12
|
+
* complete in order, so its callback fires only once everything queued ahead
|
|
13
|
+
* of it has reached the fd.
|
|
14
|
+
*/
|
|
15
|
+
export async function flushStdio() {
|
|
16
|
+
for (const stream of [process.stdout, process.stderr]) {
|
|
17
|
+
await new Promise((resolve) => {
|
|
18
|
+
stream.write('', () => {
|
|
19
|
+
resolve();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=flush-stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flush-stdio.js","sourceRoot":"","sources":["../../src/utils/flush-stdio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "putitoutthere",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.21",
|
|
4
4
|
"description": "Polyglot release orchestrator for crates.io, PyPI, and npm",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -41,20 +41,20 @@
|
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@eslint/js": "^10.0.1",
|
|
43
43
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
44
|
-
"@types/node": "^26.
|
|
44
|
+
"@types/node": "^26.6.1",
|
|
45
45
|
"@vercel/ncc": "^0.45.0",
|
|
46
46
|
"@vitest/coverage-v8": "^4.1.11",
|
|
47
|
-
"eslint": "^10.
|
|
47
|
+
"eslint": "^10.10.0",
|
|
48
48
|
"msw": "^2.15.0",
|
|
49
49
|
"typescript": "^6.0.3",
|
|
50
|
-
"typescript-eslint": "^8.
|
|
51
|
-
"vite": "^8.
|
|
50
|
+
"typescript-eslint": "^8.70.0",
|
|
51
|
+
"vite": "^8.3.0",
|
|
52
52
|
"vitest": "^4.1.11",
|
|
53
|
-
"yaml": "^2.
|
|
53
|
+
"yaml": "^2.9.1"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"minimatch": "^10.2.6",
|
|
57
57
|
"smol-toml": "^1.8.0",
|
|
58
|
-
"zod": "^4.
|
|
58
|
+
"zod": "^4.5.4"
|
|
59
59
|
}
|
|
60
60
|
}
|