Compare commits

...

3 Commits

Author SHA1 Message Date
Michael H
12cf8fb371 Merge branch 'main' into claude/minimum-release-age-minutes 2025-10-11 03:39:29 +11:00
RiskyMH
87c329698f lol 2025-10-11 03:38:24 +11:00
Claude Bot
fd1fc4a487 Change minimum-release-age to use minutes instead of seconds
This makes the API more user-friendly and consistent with pnpm, which
uses minutes for similar configuration.

Changes:
- Update bunfig.zig to parse minimumReleaseAge as minutes
- Update CLI help text to be clearer about the format
- Update all documentation to use minutes
- Update tests to use minutes instead of seconds

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 16:29:33 +00:00
6 changed files with 66 additions and 66 deletions

View File

@@ -10,4 +10,4 @@ preload = "./test/preload.ts"
[install]
linker = "isolated"
minimumReleaseAge = 1
minimumReleaseAge = 1440 # 1 day

View File

@@ -223,11 +223,11 @@ For complete documentation refer to [Package manager > Global cache](https://bun
## Minimum release age
To protect against supply chain attacks where malicious packages are quickly published, you can configure a minimum age requirement for npm packages. Package versions published more recently than the specified threshold (in seconds) will be filtered out during installation.
To protect against supply chain attacks where malicious packages are quickly published, you can configure a minimum age requirement for npm packages. Package versions published more recently than the specified threshold (in minutes) will be filtered out during installation.
```bash
# Only install package versions published at least 3 days ago
$ bun add @types/bun --minimum-release-age 259200 # seconds
$ bun add @types/bun --minimum-release-age 4320 # minutes
```
You can also configure this in `bunfig.toml`:
@@ -235,7 +235,7 @@ You can also configure this in `bunfig.toml`:
```toml
[install]
# Only install package versions published at least 3 days ago
minimumReleaseAge = 259200 # seconds
minimumReleaseAge = 4320 # minutes
# Exclude trusted packages from the age gate
minimumReleaseAgeExcludes = ["@types/node", "typescript"]
@@ -289,7 +289,7 @@ concurrentScripts = 16 # (cpu count or GOMAXPROCS) x2
linker = "hoisted"
# minimum age config
minimumReleaseAge = 259200 # seconds
minimumReleaseAge = 4320 # minutes
minimumReleaseAgeExcludes = ["@types/node", "typescript"]
```

View File

@@ -612,12 +612,12 @@ Valid values are:
### `install.minimumReleaseAge`
Configure a minimum age (in seconds) for npm package versions. Package versions published more recently than this threshold will be filtered out during installation. Default is `null` (disabled).
Configure a minimum age (in minutes) for npm package versions. Package versions published more recently than this threshold will be filtered out during installation. Default is `null` (disabled).
```toml
[install]
# Only install package versions published at least 3 days ago
minimumReleaseAge = 259200
minimumReleaseAge = 4320 # minutes
# These packages will bypass the 3-day minimum age requirement
minimumReleaseAgeExcludes = ["@types/bun", "typescript"]
```

View File

@@ -695,15 +695,15 @@ pub const Bunfig = struct {
if (install_obj.get("minimumReleaseAge")) |min_age| {
switch (min_age.data) {
.e_number => |days| {
if (days.value < 0) {
try this.addError(min_age.loc, "Expected positive number of seconds for minimumReleaseAge");
.e_number => |minutes| {
if (minutes.value < 0) {
try this.addError(min_age.loc, "Expected positive number of minutes for minimumReleaseAge");
return;
}
install.minimum_release_age_ms = days.value * std.time.ms_per_s;
install.minimum_release_age_ms = minutes.value * std.time.ms_per_min;
},
else => {
try this.addError(min_age.loc, "Expected number of seconds for minimumReleaseAge");
try this.addError(min_age.loc, "Expected number of minutes for minimumReleaseAge");
},
}
}

View File

@@ -50,7 +50,7 @@ const shared_params = [_]ParamType{
clap.parseParam("--omit <dev|optional|peer>... Exclude 'dev', 'optional', or 'peer' dependencies from install") catch unreachable,
clap.parseParam("--lockfile-only Generate a lockfile without installing dependencies") catch unreachable,
clap.parseParam("--linker <STR> Linker strategy (one of \"isolated\" or \"hoisted\")") catch unreachable,
clap.parseParam("--minimum-release-age <NUM> Only install packages published at least N seconds ago (security feature)") catch unreachable,
clap.parseParam("--minimum-release-age <NUM> Only resolve package versions that are at least this old (e.g., 1440 for 1 day)") catch unreachable,
clap.parseParam("--cpu <STR>... Override CPU architecture for optional dependencies (e.g., x64, arm64, * for all)") catch unreachable,
clap.parseParam("--os <STR>... Override operating system for optional dependencies (e.g., linux, darwin, * for all)") catch unreachable,
clap.parseParam("-h, --help Print this help menu") catch unreachable,
@@ -836,16 +836,16 @@ pub fn parse(allocator: std.mem.Allocator, comptime subcommand: Subcommand) !Com
cli.save_text_lockfile = true;
}
if (args.option("--minimum-release-age")) |min_age_secs| {
const secs = std.fmt.parseFloat(f64, min_age_secs) catch {
Output.errGeneric("Expected --minimum-release-age to be a positive number: {s}", .{min_age_secs});
if (args.option("--minimum-release-age")) |min_age_mins| {
const mins = std.fmt.parseFloat(f64, min_age_mins) catch {
Output.errGeneric("Expected --minimum-release-age to be a positive number: {s}", .{min_age_mins});
Global.crash();
};
if (secs < 0) {
Output.errGeneric("Expected --minimum-release-age to be a positive number: {s}", .{min_age_secs});
if (mins < 0) {
Output.errGeneric("Expected --minimum-release-age to be a positive number: {s}", .{min_age_mins});
Global.crash();
}
cli.minimum_release_age_ms = secs * std.time.ms_per_s;
cli.minimum_release_age_ms = mins * std.time.ms_per_min;
}
const omit_values = args.options("--omit");

View File

@@ -11,9 +11,9 @@ describe("minimum-release-age", () => {
let mockRegistryServer: Server;
let mockRegistryUrl: string;
const currentTime = Date.now();
const SECONDS_PER_DAY = 24 * 60 * 60;
const MS_PER_SECOND = 1000;
const DAY_MS = SECONDS_PER_DAY * MS_PER_SECOND;
const MINUTES_PER_DAY = 24 * 60;
const MS_PER_MINUTE = 60 * 1000;
const DAY_MS = MINUTES_PER_DAY * MS_PER_MINUTE;
// Helper to create ISO timestamp for a given number of days ago
const daysAgo = (days: number) => new Date(currentTime - days * DAY_MS).toISOString();
@@ -828,7 +828,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -851,7 +851,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${9.5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${9.5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -877,7 +877,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -905,7 +905,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${1.8 * SECONDS_PER_DAY}`, "--verbose"],
cmd: [bunExe(), "install", "--minimum-release-age", `${1.8 * MINUTES_PER_DAY}`, "--verbose"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -945,7 +945,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${1.8 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${1.8 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -984,7 +984,7 @@ describe("minimum-release-age", () => {
//
// Result: Selects 1.0.6 (gave up finding stable version)
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1011,7 +1011,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1039,7 +1039,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1064,7 +1064,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${10 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${10 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1095,7 +1095,7 @@ describe("minimum-release-age", () => {
});
await using proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1127,7 +1127,7 @@ describe("minimum-release-age", () => {
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1180,7 +1180,7 @@ describe("minimum-release-age", () => {
// - 1.1.0 (15 days): PASSES age gate, but beyond search window (3 + 7 = 10 days)
// - Should return 1.1.0 as best_version before breaking, not error!
await using proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${3 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1209,7 +1209,7 @@ describe("minimum-release-age", () => {
},
}),
"bunfig.toml": `[install]
minimumReleaseAge = ${5 * SECONDS_PER_DAY}
minimumReleaseAge = ${5 * MINUTES_PER_DAY}
minimumReleaseAgeExcludes = ["excluded-package"]
registry = "${mockRegistryUrl}"`,
});
@@ -1242,7 +1242,7 @@ registry = "${mockRegistryUrl}"`,
dependencies: { "regular-package": "*" },
}),
"bunfig.toml": `[install]
minimumReleaseAge = ${5 * SECONDS_PER_DAY}
minimumReleaseAge = ${5 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
@@ -1268,13 +1268,13 @@ registry = "${mockRegistryUrl}"`,
dependencies: { "regular-package": "*" },
}),
"bunfig.toml": `[install]
minimumReleaseAge = ${10 * SECONDS_PER_DAY}
minimumReleaseAge = ${10 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
// CLI says 5 days, bunfig says 10 days
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1297,7 +1297,7 @@ registry = "${mockRegistryUrl}"`,
dependencies: { "regular-package": "*" },
}),
"bunfig.toml": `[install]
minimumReleaseAge = ${10 * SECONDS_PER_DAY}
minimumReleaseAge = ${10 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
@@ -1321,7 +1321,7 @@ registry = "${mockRegistryUrl}"`,
// Create a fake home directory with global bunfig
using globalConfigDir = tempDir("global-config", {
".bunfig.toml": `[install]
minimumReleaseAge = ${5 * SECONDS_PER_DAY}
minimumReleaseAge = ${5 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
@@ -1357,7 +1357,7 @@ registry = "${mockRegistryUrl}"`,
// Create a fake home directory with global bunfig
using globalConfigDir = tempDir("global-config-override", {
".bunfig.toml": `[install]
minimumReleaseAge = ${10 * SECONDS_PER_DAY}
minimumReleaseAge = ${10 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
@@ -1367,7 +1367,7 @@ registry = "${mockRegistryUrl}"`,
dependencies: { "regular-package": "*" },
}),
"bunfig.toml": `[install]
minimumReleaseAge = ${5 * SECONDS_PER_DAY}
minimumReleaseAge = ${5 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
@@ -1407,7 +1407,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--verbose"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--verbose"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1440,7 +1440,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1471,7 +1471,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1497,12 +1497,12 @@ registry = "${mockRegistryUrl}"`,
dependencies: { "regular-package": "*" },
}),
"bunfig.toml": `[install]
minimumReleaseAge = ${5 * SECONDS_PER_DAY}
minimumReleaseAge = ${5 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1531,7 +1531,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1561,7 +1561,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--dry-run"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--dry-run"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1601,7 +1601,7 @@ registry = "${mockRegistryUrl}"`,
// Now update with minimum-release-age
proc = Bun.spawn({
cmd: [bunExe(), "update", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "update", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1625,7 +1625,7 @@ registry = "${mockRegistryUrl}"`,
}),
".npmrc": `registry=${mockRegistryUrl}`,
"bunfig.toml": `[install]
minimumReleaseAge = ${5 * SECONDS_PER_DAY}
minimumReleaseAge = ${5 * MINUTES_PER_DAY}
registry = "${mockRegistryUrl}"`,
});
@@ -1679,7 +1679,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1710,7 +1710,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1745,7 +1745,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1775,7 +1775,7 @@ registry = "${mockRegistryUrl}"`,
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -1828,7 +1828,7 @@ registry = "${mockRegistryUrl}"`,
"install",
"--frozen-lockfile",
"--minimum-release-age",
`${5 * SECONDS_PER_DAY}`,
`${5 * MINUTES_PER_DAY}`,
"--no-verify",
],
cwd: String(dir),
@@ -1876,7 +1876,7 @@ registry = "${mockRegistryUrl}"`,
"install",
"--frozen-lockfile",
"--minimum-release-age",
`${5 * SECONDS_PER_DAY}`,
`${5 * MINUTES_PER_DAY}`,
"--no-verify",
],
cwd: String(dir),
@@ -1942,7 +1942,7 @@ linker = "${linker}"
// - stable-package (latest): 3.2.0 is 30 days old → select 3.2.0 (passes gate, is latest)
// - stable-package (3.0.0): pinned to 3.0.0 (legacy workspace - no age check on exact versions)
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2094,7 +2094,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2119,7 +2119,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2146,7 +2146,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2175,7 +2175,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2202,7 +2202,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2235,7 +2235,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2263,7 +2263,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",
@@ -2289,7 +2289,7 @@ linker = "${linker}"
});
const proc = Bun.spawn({
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * SECONDS_PER_DAY}`, "--no-verify"],
cmd: [bunExe(), "install", "--minimum-release-age", `${5 * MINUTES_PER_DAY}`, "--no-verify"],
cwd: String(dir),
env: bunEnv,
stdout: "pipe",