@stll/oxlint-config 1.4.0 → 1.5.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.
- package/README.md +90 -14
- package/dist/cloud-setup-cli.cjs +3 -3
- package/dist/cloud-setup-cli.mjs +3 -3
- package/dist/consumer-compat-cli.cjs +2 -2
- package/dist/consumer-compat-cli.mjs +2 -2
- package/dist/dependabot-cli.cjs +34 -10
- package/dist/dependabot-cli.cjs.map +1 -1
- package/dist/dependabot-cli.mjs +35 -11
- package/dist/dependabot-cli.mjs.map +1 -1
- package/dist/dependabot.cjs +2 -0
- package/dist/dependabot.d.cts +12 -2
- package/dist/dependabot.d.mts +12 -2
- package/dist/dependabot.mjs +2 -2
- package/dist/generated-file.cjs +2 -2
- package/dist/generated-file.mjs +2 -2
- package/dist/git-tracked-output.cjs +2 -2
- package/dist/git-tracked-output.mjs +1 -1
- package/dist/jsonc.cjs +66 -0
- package/dist/jsonc.cjs.map +1 -0
- package/dist/jsonc.mjs +61 -0
- package/dist/jsonc.mjs.map +1 -0
- package/dist/publish-artifact-syntax.cjs +2 -2
- package/dist/publish-artifact-syntax.mjs +2 -2
- package/dist/publish-build-target-vite-dts-helper2.cjs +1 -1
- package/dist/publish-build-target-vite-dts-helper2.mjs +1 -1
- package/dist/publish-contract-cli.cjs +2 -2
- package/dist/publish-contract-cli.mjs +1 -1
- package/dist/quarantine-cli.cjs +66 -0
- package/dist/quarantine-cli.cjs.map +1 -0
- package/dist/quarantine-cli.d.cts +1 -0
- package/dist/quarantine-cli.d.mts +1 -0
- package/dist/quarantine-cli.mjs +66 -0
- package/dist/quarantine-cli.mjs.map +1 -0
- package/dist/quarantine-policy.cjs +10 -0
- package/dist/quarantine-policy.d.cts +27 -0
- package/dist/quarantine-policy.d.mts +27 -0
- package/dist/quarantine-policy.mjs +1 -0
- package/dist/quarantine-policy2.cjs +399 -0
- package/dist/quarantine-policy2.cjs.map +1 -0
- package/dist/quarantine-policy2.mjs +352 -0
- package/dist/quarantine-policy2.mjs.map +1 -0
- package/dist/toolchain-changed.cjs +11 -66
- package/dist/toolchain-changed.cjs.map +1 -1
- package/dist/toolchain-changed.mjs +13 -68
- package/dist/toolchain-changed.mjs.map +1 -1
- package/dist/toolchain-check-cli.cjs +1 -0
- package/dist/toolchain-check-cli.cjs.map +1 -1
- package/dist/toolchain-check-cli.mjs +1 -0
- package/dist/toolchain-check-cli.mjs.map +1 -1
- package/dist/toolchain-dependabot.cjs +77 -3
- package/dist/toolchain-dependabot.cjs.map +1 -1
- package/dist/toolchain-dependabot.mjs +66 -4
- package/dist/toolchain-dependabot.mjs.map +1 -1
- package/dist/toolchain-guard.cjs +49 -10
- package/dist/toolchain-guard.cjs.map +1 -1
- package/dist/toolchain-guard.mjs +51 -12
- package/dist/toolchain-guard.mjs.map +1 -1
- package/dist/toolchain-inputs.cjs +104 -18
- package/dist/toolchain-inputs.cjs.map +1 -1
- package/dist/toolchain-inputs.mjs +106 -20
- package/dist/toolchain-inputs.mjs.map +1 -1
- package/dist/typecheck-parity.cjs +4 -3
- package/dist/typecheck-parity.cjs.map +1 -1
- package/dist/typecheck-parity.mjs +4 -3
- package/dist/typecheck-parity.mjs.map +1 -1
- package/dist/typecheck-probe-cli.cjs +2 -2
- package/dist/typecheck-probe-cli.mjs +2 -2
- package/package.json +13 -1
- package/toolchain.json +11 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
+
import { parse } from "smol-toml";
|
|
2
3
|
import { createHash } from "node:crypto";
|
|
3
4
|
import { subset, valid, validRange } from "semver";
|
|
4
|
-
import { parse as parse$1 } from "smol-toml";
|
|
5
5
|
import { isDeepStrictEqual } from "node:util";
|
|
6
6
|
import { parseDocument } from "yaml";
|
|
7
7
|
import picomatch from "picomatch";
|
|
@@ -697,7 +697,12 @@ const postgresStart = String.raw`
|
|
|
697
697
|
pg_pid="$(head -n 1 "$pg_data/postmaster.pid")"
|
|
698
698
|
service_process "$pg_pid" "$pg_bin/postgres"
|
|
699
699
|
[[ "$(env -u PGSERVICE -u PGSERVICEFILE -u PGOPTIONS PGHOSTADDR=127.0.0.1 PGPASSWORD="$pg_password" PGCONNECT_TIMEOUT=2 "$pg_bin/psql" -X -h 127.0.0.1 -p 55432 -U stll_cloud -d postgres -At -v ON_ERROR_STOP=1 -c "SELECT count(*) FROM pg_database WHERE datname = 'cloud_test'")" == 1 ]] || env -u PGSERVICE -u PGSERVICEFILE -u PGOPTIONS PGHOSTADDR=127.0.0.1 PGPASSWORD="$pg_password" PGCONNECT_TIMEOUT=2 "$pg_bin/createdb" -h 127.0.0.1 -p 55432 -U stll_cloud cloud_test || fail "PostgreSQL test database creation failed"
|
|
700
|
-
|
|
700
|
+
POSTGRES_HOST='127.0.0.1:55432'
|
|
701
|
+
POSTGRES_USER='stll_cloud'
|
|
702
|
+
POSTGRES_PASSWORD="$pg_password"
|
|
703
|
+
POSTGRES_DB_NAME='cloud_test'
|
|
704
|
+
POSTGRES_ADDITIONAL_CONNECTION_DATA=''
|
|
705
|
+
DATABASE_URL="postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST/$POSTGRES_DB_NAME$POSTGRES_ADDITIONAL_CONNECTION_DATA"
|
|
701
706
|
printf 'postgres: %s\n' "$pg_state"
|
|
702
707
|
`;
|
|
703
708
|
const valkeyStart = String.raw`
|
|
@@ -842,7 +847,7 @@ const resolveCloudToolchains = ({ cloud, files, rust, rustExceptions }) => {
|
|
|
842
847
|
if (source !== void 0 && selector !== void 0) throw new Error("cloud Rust requires one root rust-toolchain.toml or rust-toolchain file");
|
|
843
848
|
let declared;
|
|
844
849
|
if (source !== void 0 || selector?.trimStart().startsWith("[")) {
|
|
845
|
-
const parsed = parse
|
|
850
|
+
const parsed = parse(source ?? selector ?? "");
|
|
846
851
|
if (!record$2(parsed["toolchain"])) throw new Error("cloud Rust requires [toolchain]");
|
|
847
852
|
declared = parsed["toolchain"];
|
|
848
853
|
if (Object.keys(declared).some((key) => ![
|
|
@@ -877,7 +882,7 @@ const resolveCloudToolchains = ({ cloud, files, rust, rustExceptions }) => {
|
|
|
877
882
|
if (tool === "wasm-bindgen-cli") {
|
|
878
883
|
const lock = files["Cargo.lock"];
|
|
879
884
|
if (lock === void 0) throw new Error("wasm-bindgen-cli requires tracked root Cargo.lock");
|
|
880
|
-
const packages = parse
|
|
885
|
+
const packages = parse(lock)["package"];
|
|
881
886
|
if (!Array.isArray(packages)) throw new Error("Cargo.lock requires package entries for wasm-bindgen-cli");
|
|
882
887
|
const versions = new Set(packages.flatMap((entry) => record$2(entry) && entry["name"] === "wasm-bindgen" ? [entry["version"]] : []));
|
|
883
888
|
if (versions.size !== 1 || !versions.has(version)) throw new Error(`cloud.tools.wasm-bindgen-cli ${version} must equal the unique wasm-bindgen crate version in Cargo.lock (found ${[...versions].join(", ") || "none"})`);
|
|
@@ -1093,9 +1098,9 @@ const script = String.raw`#!/usr/bin/env bash
|
|
|
1093
1098
|
# Supported platform: Ubuntu 24.04 (noble), amd64/arm64, root or passwordless sudo.
|
|
1094
1099
|
set -euo pipefail
|
|
1095
1100
|
|
|
1096
|
-
usage() { echo 'Usage: cloud-setup.sh install|start' >&2; exit 2; }
|
|
1101
|
+
usage() { echo 'Usage: cloud-setup.sh install|start|session' >&2; exit 2; }
|
|
1097
1102
|
[[ "$#" == 1 ]] || usage
|
|
1098
|
-
case "$1" in install|start) MODE="$1" ;; *) usage ;; esac
|
|
1103
|
+
case "$1" in install|start|session) MODE="$1" ;; *) usage ;; esac
|
|
1099
1104
|
fail() { echo "cloud-setup: $*" >&2; exit 1; }
|
|
1100
1105
|
trap 'echo "cloud-setup: command failed at line $LINENO" >&2' ERR
|
|
1101
1106
|
# Each phase logs its start and duration so a stalled phase is visible in the task log.
|
|
@@ -1248,6 +1253,8 @@ process.stdout.write([...hosts].sort().join(","));
|
|
|
1248
1253
|
@INPUT_VALIDATION@
|
|
1249
1254
|
|
|
1250
1255
|
@ENV_FUNCTIONS@
|
|
1256
|
+
@ENVIRONMENT_VALUES@
|
|
1257
|
+
@SESSION_ENVIRONMENT@
|
|
1251
1258
|
|
|
1252
1259
|
@PREPARE_FUNCTION@
|
|
1253
1260
|
|
|
@@ -1260,14 +1267,38 @@ if [[ "$MODE" == install ]]; then
|
|
|
1260
1267
|
@PREPARE_STEP@
|
|
1261
1268
|
exit 0
|
|
1262
1269
|
fi
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
step
|
|
1266
|
-
step
|
|
1267
|
-
|
|
1268
|
-
step
|
|
1269
|
-
|
|
1270
|
-
|
|
1270
|
+
@ENV_INITIALIZE@
|
|
1271
|
+
start_environment() {
|
|
1272
|
+
step runtime-check runtime_ready
|
|
1273
|
+
step tool-check verify_tools
|
|
1274
|
+
step shell install_shell_environment
|
|
1275
|
+
step shell-check verify_shell_environment
|
|
1276
|
+
@ENV_VALIDATE@
|
|
1277
|
+
step state prepare_state
|
|
1278
|
+
step service-start start_services
|
|
1279
|
+
@ENV_WRITE@
|
|
1280
|
+
}
|
|
1281
|
+
if [[ "$MODE" == session ]]; then
|
|
1282
|
+
start_environment >&2
|
|
1283
|
+
else
|
|
1284
|
+
start_environment
|
|
1285
|
+
fi
|
|
1286
|
+
@SESSION_ENVIRONMENT_CALL@
|
|
1287
|
+
`;
|
|
1288
|
+
const environmentValuesFunction = String.raw`
|
|
1289
|
+
environment_values() {
|
|
1290
|
+
local emit="$1"
|
|
1291
|
+
"$emit" NODE_ENV test
|
|
1292
|
+
if [[ -n "$DATABASE_URL" ]]; then
|
|
1293
|
+
"$emit" DATABASE_URL "$DATABASE_URL"
|
|
1294
|
+
"$emit" POSTGRES_HOST "$POSTGRES_HOST"
|
|
1295
|
+
"$emit" POSTGRES_USER "$POSTGRES_USER"
|
|
1296
|
+
"$emit" POSTGRES_PASSWORD "$POSTGRES_PASSWORD"
|
|
1297
|
+
"$emit" POSTGRES_DB_NAME "$POSTGRES_DB_NAME"
|
|
1298
|
+
"$emit" POSTGRES_ADDITIONAL_CONNECTION_DATA "$POSTGRES_ADDITIONAL_CONNECTION_DATA"
|
|
1299
|
+
fi
|
|
1300
|
+
if [[ -n "$REDIS_URL" ]]; then "$emit" REDIS_URL "$REDIS_URL"; fi
|
|
1301
|
+
}
|
|
1271
1302
|
`;
|
|
1272
1303
|
const environmentFunctions = String.raw`
|
|
1273
1304
|
validate_environment() {
|
|
@@ -1283,20 +1314,26 @@ validate_environment() {
|
|
|
1283
1314
|
[[ "$first_line" == "$ENV_MARKER" ]] || fail 'Refusing to overwrite an unowned environment file'
|
|
1284
1315
|
fi
|
|
1285
1316
|
}
|
|
1317
|
+
environment_file_value() { printf '%s=%s\n' "$1" "$2"; }
|
|
1286
1318
|
write_environment() {
|
|
1287
1319
|
validate_environment
|
|
1288
1320
|
local env_path="$REPO_ROOT/$ENV_FILE" temporary
|
|
1289
1321
|
temporary="$(mktemp "$(dirname -- "$env_path")/.stll-cloud-env.XXXXXX")"
|
|
1290
1322
|
chmod 600 "$temporary"
|
|
1291
1323
|
{
|
|
1292
|
-
printf '%s\n' "$ENV_MARKER"
|
|
1293
|
-
|
|
1294
|
-
if [[ -n "$REDIS_URL" ]]; then printf 'REDIS_URL=%s\n' "$REDIS_URL"; fi
|
|
1324
|
+
printf '%s\n' "$ENV_MARKER"
|
|
1325
|
+
environment_values environment_file_value
|
|
1295
1326
|
} > "$temporary"
|
|
1296
1327
|
chown "$OUTPUT_UID:$OUTPUT_GID" "$temporary"
|
|
1297
1328
|
mv -f -- "$temporary" "$env_path"
|
|
1298
1329
|
}
|
|
1299
1330
|
`;
|
|
1331
|
+
const sessionEnvironmentFunction = String.raw`
|
|
1332
|
+
environment_shell_value() { printf 'export %s=%q\n' "$1" "$2"; }
|
|
1333
|
+
emit_session_environment() {
|
|
1334
|
+
environment_values environment_shell_value
|
|
1335
|
+
}
|
|
1336
|
+
`;
|
|
1300
1337
|
const shellQuote = (value) => `'${value.replaceAll("'", "'\\''")}'`;
|
|
1301
1338
|
const renderPrepare = (prepare, files) => {
|
|
1302
1339
|
if (prepare === void 0) return "";
|
|
@@ -1350,7 +1387,11 @@ const generateCloudSetup = ({ policy, cloud, nodeVersion, files = {}, rustExcept
|
|
|
1350
1387
|
["@NODE@", exactNode],
|
|
1351
1388
|
["@ENV_ASSIGNMENTS@", selected.envFile === void 0 ? "" : `ENV_FILE=${shellQuote(selected.envFile)}\nENV_MARKER=${shellQuote(cloudEnvironmentMarker)}`],
|
|
1352
1389
|
["@ENV_FUNCTIONS@", selected.envFile === void 0 ? "" : environmentFunctions],
|
|
1353
|
-
["@
|
|
1390
|
+
["@ENVIRONMENT_VALUES@", selected.services.length === 0 ? "" : environmentValuesFunction],
|
|
1391
|
+
["@ENV_INITIALIZE@", selected.services.length === 0 ? "" : "DATABASE_URL=''\nPOSTGRES_HOST=''\nPOSTGRES_USER=''\nPOSTGRES_PASSWORD=''\nPOSTGRES_DB_NAME=''\nPOSTGRES_ADDITIONAL_CONNECTION_DATA=''\nREDIS_URL=''"],
|
|
1392
|
+
["@ENV_VALIDATE@", selected.envFile === void 0 ? "" : "validate_environment"],
|
|
1393
|
+
["@SESSION_ENVIRONMENT@", selected.services.length === 0 ? "" : sessionEnvironmentFunction],
|
|
1394
|
+
["@SESSION_ENVIRONMENT_CALL@", selected.services.length === 0 ? "" : "if [[ \"$MODE\" == session ]]; then emit_session_environment; fi"],
|
|
1354
1395
|
["@ENV_WRITE@", selected.envFile === void 0 ? "" : "write_environment"],
|
|
1355
1396
|
["@PREPARE_FUNCTION@", renderPrepare(selected.prepare, files)],
|
|
1356
1397
|
["@PREPARE_STEP@", selected.prepare === void 0 ? "" : " step prepare prepare_sources"],
|
|
@@ -1402,6 +1443,47 @@ const sessionStartHook = (script) => ({
|
|
|
1402
1443
|
printf '%s\\n' "cloud-setup: $1" >&2
|
|
1403
1444
|
exit 0
|
|
1404
1445
|
}
|
|
1446
|
+
if [ -n "\${CLAUDE_ENV_FILE:-}" ]; then
|
|
1447
|
+
cloud_session_exports="$(${script} session)" || cloud_setup_incomplete 'startup failed; run install'
|
|
1448
|
+
else
|
|
1449
|
+
${script} start >&2 || cloud_setup_incomplete 'startup failed; run install'
|
|
1450
|
+
exit 0
|
|
1451
|
+
fi
|
|
1452
|
+
if [ -n "\${CLAUDE_ENV_FILE:-}" ]; then
|
|
1453
|
+
if [ ! -s ${cloudShellProfilePath} ]; then
|
|
1454
|
+
cloud_setup_incomplete 'cloud shell profile is unavailable; run install'
|
|
1455
|
+
fi
|
|
1456
|
+
cloud_shell_exports="$(cat ${cloudShellProfilePath})" || cloud_setup_incomplete 'cloud shell profile could not be read; run install'
|
|
1457
|
+
[ -n "$cloud_shell_exports" ] || cloud_setup_incomplete 'cloud shell profile is unavailable; run install'
|
|
1458
|
+
if [ -e "$CLAUDE_ENV_FILE" ] || [ -L "$CLAUDE_ENV_FILE" ]; then
|
|
1459
|
+
[ -f "$CLAUDE_ENV_FILE" ] && [ ! -L "$CLAUDE_ENV_FILE" ] || cloud_setup_incomplete 'session environment must be a regular file; check its path and rerun start'
|
|
1460
|
+
fi
|
|
1461
|
+
cloud_env_temporary="$(umask 077; mktemp "\${CLAUDE_ENV_FILE}.XXXXXX")" || cloud_setup_incomplete 'session environment could not be prepared; check its write access and rerun start'
|
|
1462
|
+
if [ -e "$CLAUDE_ENV_FILE" ] || [ -L "$CLAUDE_ENV_FILE" ]; then
|
|
1463
|
+
cat "$CLAUDE_ENV_FILE" > "$cloud_env_temporary" || { rm -f -- "$cloud_env_temporary"; cloud_setup_incomplete 'session environment could not be read; check its access and rerun start'; }
|
|
1464
|
+
fi
|
|
1465
|
+
if [ -n "$cloud_session_exports" ]; then
|
|
1466
|
+
cloud_session_exports="$cloud_session_exports
|
|
1467
|
+
$cloud_shell_exports"
|
|
1468
|
+
else
|
|
1469
|
+
cloud_session_exports="$cloud_shell_exports"
|
|
1470
|
+
fi
|
|
1471
|
+
printf '\\n%s\\n' "$cloud_session_exports" >> "$cloud_env_temporary" || { rm -f -- "$cloud_env_temporary"; cloud_setup_incomplete 'session environment could not be prepared; check its write access and rerun start'; }
|
|
1472
|
+
mv -f -- "$cloud_env_temporary" "$CLAUDE_ENV_FILE" || { rm -f -- "$cloud_env_temporary"; cloud_setup_incomplete 'session environment could not be persisted; check its write access and rerun start'; }
|
|
1473
|
+
fi
|
|
1474
|
+
fi`
|
|
1475
|
+
}]
|
|
1476
|
+
});
|
|
1477
|
+
const currentMainSessionStartHook = (script) => ({
|
|
1478
|
+
matcher: "",
|
|
1479
|
+
hooks: [{
|
|
1480
|
+
type: "command",
|
|
1481
|
+
command: `if [ "\${CLAUDE_CODE_REMOTE:-}" = "true" ]; then
|
|
1482
|
+
cloud_setup_incomplete() {
|
|
1483
|
+
printf '%s\\n' 'Cloud setup could not establish a verified session environment. From the repository root, run bash .agents/cloud-setup.sh install and then bash .agents/cloud-setup.sh start. Do not assume pinned tools or services are ready until start succeeds.'
|
|
1484
|
+
printf '%s\\n' "cloud-setup: $1" >&2
|
|
1485
|
+
exit 0
|
|
1486
|
+
}
|
|
1405
1487
|
${script} start >&2 || cloud_setup_incomplete 'startup failed; run install'
|
|
1406
1488
|
if [ -n "\${CLAUDE_ENV_FILE:-}" ]; then
|
|
1407
1489
|
if [ ! -s ${cloudShellProfilePath} ]; then
|
|
@@ -1415,7 +1497,11 @@ fi`
|
|
|
1415
1497
|
}]
|
|
1416
1498
|
});
|
|
1417
1499
|
const cloudSessionStartHook = sessionStartHook(`bash "$CLAUDE_PROJECT_DIR/${cloudSetupPath}"`);
|
|
1418
|
-
const previousCloudSessionStartHooks = [
|
|
1500
|
+
const previousCloudSessionStartHooks = [
|
|
1501
|
+
releasedSessionStartHook(`bash ${cloudSetupPath}`),
|
|
1502
|
+
releasedSessionStartHook(`bash "$CLAUDE_PROJECT_DIR/${cloudSetupPath}"`),
|
|
1503
|
+
currentMainSessionStartHook(`bash "$CLAUDE_PROJECT_DIR/${cloudSetupPath}"`)
|
|
1504
|
+
];
|
|
1419
1505
|
const cloudAttribution = {
|
|
1420
1506
|
commit: "",
|
|
1421
1507
|
pr: ""
|
|
@@ -1696,7 +1782,7 @@ const isDockerDefinitionPath = (file) => {
|
|
|
1696
1782
|
const isShellScript = (file, text = "") => !excludedInputPath(file) && (/\.(?:sh|bash|zsh)$/.test(file) || /^#![ \t]*(?:\/(?:[^ \t\r\n]+\/)*(?:bash|dash|ksh|zsh|sh)|\/usr\/bin\/env[ \t]+(?:-S[ \t]+)?(?:bash|dash|ksh|zsh|sh))(?=[ \t\r\n]|$)/.test(text));
|
|
1697
1783
|
/** Lockfiles establish ecosystem presence without reading their dependency graphs. */
|
|
1698
1784
|
const toolchainInputKind = (file, text = "") => {
|
|
1699
|
-
if (file === ".agents/cloud-setup.sh" || file === ".claude/settings.json" || file === "Cargo.lock") return "config";
|
|
1785
|
+
if (file === "bunfig.toml" || file === ".agents/cloud-setup.sh" || file === ".claude/settings.json" || file === "Cargo.lock") return "config";
|
|
1700
1786
|
if (githubAutomationFileKind(file) !== void 0) return "config";
|
|
1701
1787
|
if (excludedInputPath(file)) return void 0;
|
|
1702
1788
|
if (dependabotManifestEcosystem(file) !== void 0 || pythonDependencyManifestKind(file) === "pipfile-lock" || javascriptDependencyLockfiles.some((name) => file.split("/").at(-1) === name) || /(?:^|\/)uv\.lock$/.test(file)) return "presence";
|