@autobe/agent
Version:
AI backend server code generator
68 lines (54 loc) • 2.23 kB
text/typescript
export namespace AutoBeRealizeAuthorizationReplaceImport {
export function replaceProviderImport(
actor: string,
content: string,
): string {
let updatedContent = content;
const actorCapitalized =
actor.charAt(0).toUpperCase() + actor.slice(1).toLowerCase();
const nestjsCommonPattern =
/import\s+{\s*[^}]*\s*}\s+from\s+"@nestjs\/common";/g;
const nestjsCommonReplacement =
'import { ForbiddenException, UnauthorizedException } from "@nestjs/common";';
const myGlobalPattern = /import\s+{\s*MyGlobal\s*}\s+from\s+[^;]+;/g;
const myGlobalReplacement = 'import { MyGlobal } from "../../MyGlobal";';
const jwtAuthorizePattern =
/import\s+{\s*jwtAuthorize\s*}\s+from\s+[^;]+;/g;
const jwtAuthorizeReplacement =
'import { jwtAuthorize } from "./jwtAuthorize";';
const payloadPattern = /import\s+{\s*\w*Payload\s*}\s+from\s+[^;]+;/g;
const payloadReplacement = `import { ${actorCapitalized}Payload } from "../../decorators/payload/${actorCapitalized}Payload";`;
// 각 패턴을 순차적으로 적용
updatedContent = updatedContent.replace(
nestjsCommonPattern,
nestjsCommonReplacement,
);
updatedContent = updatedContent.replace(
myGlobalPattern,
myGlobalReplacement,
);
updatedContent = updatedContent.replace(
jwtAuthorizePattern,
jwtAuthorizeReplacement,
);
updatedContent = updatedContent.replace(payloadPattern, payloadReplacement);
return updatedContent;
}
export function replaceDecoratorImport(
actor: string,
content: string,
): string {
let updatedContent = content;
const actorLowercase = actor.toLowerCase();
// ~Authorize로 끝나는 import 구문을 특정 경로로 변경하는 정규표현식
const authorizePattern = /import\s+{\s*\w*Authorize\s*}\s+from\s+[^;]+;/g;
// role을 기반으로 동적으로 replacement 생성
const authorizeReplacement = `import { ${actorLowercase}Authorize } from "../providers/authorize/${actorLowercase}Authorize";`;
// 패턴 적용
updatedContent = updatedContent.replace(
authorizePattern,
authorizeReplacement,
);
return updatedContent;
}
}