fix: consistenly use static/data for 'npm run build' #661

Merged
Sainan merged 1 commits from static-data into main 2024-12-29 16:51:38 -08:00
4 changed files with 16 additions and 3 deletions

View File

@ -1,7 +1,7 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { config } from "@/src/services/configService"; import { config } from "@/src/services/configService";
import buildConfig from "@/static/data/buildConfig.json"; import { buildConfig } from "@/src/services/buildConfigService";
import { Account } from "@/src/models/loginModel"; import { Account } from "@/src/models/loginModel";
import { createAccount, isCorrectPassword, isNameTaken } from "@/src/services/loginService"; import { createAccount, isCorrectPassword, isNameTaken } from "@/src/services/loginService";

View File

@ -1,6 +1,6 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import staticWorldState from "@/static/fixed_responses/worldState.json"; import staticWorldState from "@/static/fixed_responses/worldState.json";
import buildConfig from "@/static/data/buildConfig.json"; import { buildConfig } from "@/src/services/buildConfigService";
import { IMongoDate, IOid } from "@/src/types/commonTypes"; import { IMongoDate, IOid } from "@/src/types/commonTypes";
export const worldStateController: RequestHandler = (req, res) => { export const worldStateController: RequestHandler = (req, res) => {

View File

@ -1,5 +1,5 @@
import express from "express"; import express from "express";
import buildConfig from "@/static/data/buildConfig.json"; import { buildConfig } from "@/src/services/buildConfigService";
import fs from "fs/promises"; import fs from "fs/promises";
const cacheRouter = express.Router(); const cacheRouter = express.Router();

View File

@ -0,0 +1,13 @@
import path from "path";
import fs from "fs";
const rootDir = path.join(__dirname, "../..");
const repoDir = path.basename(rootDir) == "build" ? path.join(rootDir, "..") : rootDir;
const buildConfigPath = path.join(repoDir, "static/data/buildConfig.json");
export const buildConfig = JSON.parse(fs.readFileSync(buildConfigPath, "utf-8")) as IBuildConfig;
coderabbitai[bot] commented 2024-12-29 14:56:30 -08:00 (Migrated from github.com)
Review

🛠️ Refactor suggestion

Add error handling for file reading.
Synchronous file operations may block the event loop, and any read/parse failure will throw an error immediately. Consider wrapping this in a try/catch or using asynchronous I/O.

- export const buildConfig = JSON.parse(fs.readFileSync(buildConfigPath, "utf-8")) as IBuildConfig;
+ let parsedConfig: IBuildConfig;
+ try {
+   const raw = fs.readFileSync(buildConfigPath, "utf-8");
+   parsedConfig = JSON.parse(raw) as IBuildConfig;
+ } catch (e) {
+   throw new Error(`Failed to load build config: ${e.message}`);
+ }
+ export const buildConfig = parsedConfig;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

let parsedConfig: IBuildConfig;
try {
  const raw = fs.readFileSync(buildConfigPath, "utf-8");
  parsedConfig = JSON.parse(raw) as IBuildConfig;
} catch (e) {
  throw new Error(`Failed to load build config: ${e.message}`);
}
export const buildConfig = parsedConfig;
_:hammer_and_wrench: Refactor suggestion_ **Add error handling for file reading.** Synchronous file operations may block the event loop, and any read/parse failure will throw an error immediately. Consider wrapping this in a try/catch or using asynchronous I/O. ```diff - export const buildConfig = JSON.parse(fs.readFileSync(buildConfigPath, "utf-8")) as IBuildConfig; + let parsedConfig: IBuildConfig; + try { + const raw = fs.readFileSync(buildConfigPath, "utf-8"); + parsedConfig = JSON.parse(raw) as IBuildConfig; + } catch (e) { + throw new Error(`Failed to load build config: ${e.message}`); + } + export const buildConfig = parsedConfig; ``` <!-- suggestion_start --> <details> <summary>📝 Committable suggestion</summary> > ‼️ **IMPORTANT** > Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements. `````suggestion let parsedConfig: IBuildConfig; try { const raw = fs.readFileSync(buildConfigPath, "utf-8"); parsedConfig = JSON.parse(raw) as IBuildConfig; } catch (e) { throw new Error(`Failed to load build config: ${e.message}`); } export const buildConfig = parsedConfig; ````` </details> <!-- suggestion_end --> <!-- This is an auto-generated comment by CodeRabbit -->
interface IBuildConfig {
version: string;
buildLabel: string;
matchmakingBuildId: string;
}