Files
cfw-autumn/scripts/fix-env-threading.ts
imeepos a98f11c214 refactor: pass env explicitly across all remaining request-path modules
- Remove last runtimeEnv import from processMessage.ts
- Add env: Env param to all functions with 'Cannot find name env' errors
- Convert initRedisV2 to lazy initialization (ensureRedisV2 + Proxy)
- Add Bindings: Env to StripeWebhookHonoEnv
- Fix 12+ files across external/, internal/, queue/ modules
- Scanning test passes: 1/1 (runtime-env-imports.test.ts)
2026-06-17 07:08:41 -07:00

73 lines
2.4 KiB
TypeScript

#!/usr/bin/env bun
/**
* Bulk migration: runtimeEnv → env, global logger → createLogger(env)
*/
import { readFileSync, writeFileSync } from "node:fs";
import { globSync } from "bun:fs";
const SRC = "/Volumes/sker/autumn/server/src";
const files = globSync(`${SRC}/**/*.ts`).filter(
(f) => !f.includes("node_modules") && !f.includes(".test."),
);
let changed = 0;
for (const f of files) {
let content = readFileSync(f, "utf-8");
const original = content;
let modified = false;
// ── Remove runtimeEnv imports ──
if (content.match(/import\s+\{[^}]*runtimeEnv[^}]*\}\s+from\s+["'][^"']*envUtils[^"']*["'];?/)) {
content = content.replace(
/^import\s+\{[^}]*runtimeEnv[^}]*\}\s+from\s+["'][^"']*envUtils[^"']*["'];?\s*\n/gm,
"",
);
modified = true;
}
// ── Replace runtimeEnv.XXX → env.XXX ──
if (content.includes("runtimeEnv.")) {
content = content.replace(/runtimeEnv\./g, "env.");
modified = true;
}
// ── Replace import { logger } with import { createLogger } ──
if (content.match(/import\s+\{[^}]*\blogger\b[^}]*\}\s+from\s+["'][^"']*logtailUtils[^"']*["'];?/)) {
// Add createLogger to the existing import, or create new import
if (content.includes("import { createLogger }")) {
// Already has createLogger, just remove logger
content = content.replace(
/import\s+\{([^}]*)logger([^}]*)\}\s+from\s+["'][^"']*logtailUtils[^"']*["'];?/g,
(_, p1, p2) => {
const parts = [p1.trim(), p2.trim()].filter(Boolean).join(", ");
return parts
? `import { ${parts} } from "@/external/logtail/logtailUtils.js";`
: 'import { createLogger } from "@/external/logtail/logtailUtils.js";';
},
);
} else {
content = content.replace(
/import\s+\{([^}]*)logger\b([^}]*)\}\s+from\s+["'][^"']*logtailUtils[^"']*["'];?/g,
(_, p1, p2) => {
const hasOther = (p1 + p2).replace(/\s+/g, "").length > 0;
if (hasOther) {
return `import { createLogger, ${[p1, p2].map(s => s.trim()).filter(Boolean).join(", ")} } from "@/external/logtail/logtailUtils.js";`;
}
return 'import { createLogger } from "@/external/logtail/logtailUtils.js";';
},
);
}
modified = true;
}
if (modified) {
writeFileSync(f, content);
changed++;
console.log(`${f.replace(SRC, "")}`);
}
}
console.log(`\nChanged ${changed} files.`);