refactor: improve type safety and code quality for 9.0 score

Type Safety Improvements:
- Add isErrorResult() type guard for API responses (domain-tool.ts)
- Replace `any` with `unknown` in executeTool args (tools/index.ts)
- Add JSON.parse error handling in function calling (openai-service.ts)
- Fix nullable price handling with nullish coalescing
- Add array type guard for nameservers validation

Code Quality Improvements:
- Extract convertNamecheapDate() to eliminate duplicate functions
- Move hardcoded bank account info to environment variables
- Add JSDoc documentation to executeDepositFunction
- Fix unused variables in optimistic-lock.ts
- Handle Error.captureStackTrace for Workers environment

All TypeScript strict mode checks now pass.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-19 23:33:35 +09:00
parent f5df0c0ffe
commit 61e5185916
5 changed files with 96 additions and 50 deletions

View File

@@ -39,9 +39,11 @@ export class OptimisticLockError extends Error {
constructor(message: string) {
super(message);
this.name = 'OptimisticLockError';
// Maintain proper stack trace for debugging
if (Error.captureStackTrace) {
Error.captureStackTrace(this, OptimisticLockError);
// Maintain proper stack trace for debugging (Node.js only, not available in Workers)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
if (typeof (Error as any).captureStackTrace === 'function') {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(Error as any).captureStackTrace(this, OptimisticLockError);
}
}
}
@@ -56,12 +58,10 @@ export class OptimisticLockError extends Error {
* @throws Error if all retries exhausted or non-OptimisticLockError occurs
*/
export async function executeWithOptimisticLock<T>(
db: D1Database,
_db: D1Database,
operation: (attempt: number) => Promise<T>,
maxRetries: number = 3
): Promise<T> {
let lastError: Error | undefined;
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
logger.info(`Optimistic lock attempt ${attempt}/${maxRetries}`, { attempt });
@@ -79,7 +79,7 @@ export async function executeWithOptimisticLock<T>(
throw error;
}
lastError = error;
// Store error for logging (optimistic lock conflict)
if (attempt < maxRetries) {
// Exponential backoff: 100ms, 200ms, 400ms