sca-tool
Version:
Universal static code analysis tool for calculating API operation costs across multiple frameworks (NestJS, Express, Fastify)
159 lines (158 loc) • 4.02 kB
JSON
{
"operations": {
"findMany": 1,
"findUnique": 1,
"findFirst": 1,
"create": 1,
"createMany": 2,
"update": 1,
"updateMany": 2,
"upsert": 2,
"delete": 1,
"deleteMany": 2,
"count": 1,
"aggregate": 2,
"groupBy": 2,
"find": 1,
"findOne": 1,
"findOneBy": 1,
"findAndCount": 2,
"save": 1,
"insert": 1,
"remove": 1,
"from": 1,
"supabaseSelect": 0,
"supabaseInsert": 1,
"supabaseUpdate": 1,
"supabaseUpsert": 1,
"supabaseDelete": 1,
"single": 0,
"eq": 0,
"in": 0,
"signInWithPassword": 1,
"signUp": 1,
"signOut": 1,
"refreshSession": 1,
"updateUserById": 1,
"sendOTPEmailFor2FA": 0,
"sendOTPEmailForResettingPassword": 0,
"fetchSpecificUserWithRole": 1,
"fetchUsers": 1
},
"patterns": {
"prisma": {
"pattern": "prisma\\.(\\w+)\\.(findMany|findUnique|findFirst|create|createMany|update|updateMany|upsert|delete|deleteMany|count|aggregate|groupBy)",
"description": "Prisma ORM operations"
},
"typeorm": {
"pattern": "(\\w+Repository|\\w+)\\.((find|findOne|findOneBy|findAndCount|save|insert|update|delete|remove|createQueryBuilder)\\(|getMany|getOne|getRawMany|getRawOne)",
"description": "TypeORM operations"
},
"mongoose": {
"pattern": "(\\w+Model|\\w+)\\.(find|findById|findOne|findOneAndUpdate|findOneAndDelete|findByIdAndUpdate|findByIdAndDelete|save|create|insertMany|updateOne|updateMany|deleteOne|deleteMany|bulkWrite|populate)",
"description": "Mongoose ODM operations"
},
"supabase": {
"pattern": "(SupabaseService\\.supabase|supabase)\\.(from\\(|auth\\.|storage\\.)",
"description": "Supabase operations"
},
"supabase_query": {
"pattern": "\\.(select|insert|update|upsert|delete)\\(",
"description": "Supabase query operations"
},
"supabase_auth": {
"pattern": "\\.(signInWithPassword|signUp|signOut|refreshSession|updateUserById)\\(",
"description": "Supabase auth operations"
},
"http_client": {
"pattern": "(axios\\.|fetch\\(|httpclient\\.|\\.(get|post|put|patch|delete)\\()",
"description": "HTTP client operations"
},
"custom_service": {
"pattern": "(await )?this\\.(\\w+Service|\\w+Repository)\\.",
"description": "Custom service method calls"
},
"email_service": {
"pattern": "EmailService\\.(send|sendOTP)",
"description": "Email service operations"
}
},
"parallelExecutionPatterns": [
"Promise.all",
"Promise.allSettled",
"Promise.race",
"await Promise.all",
"await Promise.allSettled"
],
"ignorePatterns": [
"console.log",
"console.error",
"console.warn",
"JSON.stringify",
"JSON.parse",
"Math.",
"Date.",
"new Date",
"crypto.",
"bcrypt.",
"jwt.",
"uuid.",
"randomBytes",
"throw new",
"return {",
"return new",
"const ",
"let ",
"var ",
"if (",
"for (",
"while (",
"switch (",
"try {",
"catch ("
],
"costMultipliers": {
"loop": 2,
"recursion": 3,
"nested": 1.5,
"conditional": 1
},
"methodCosts": {
"login": {
"paths": [
{
"name": "Remember Me Token Valid",
"conditions": ["rememberMeToken", "token.valid"],
"expectedCost": 3
},
{
"name": "Remember Me Token Expired",
"conditions": ["rememberMeToken", "token.expired"],
"expectedCost": 4
},
{
"name": "No Remember Me Token",
"conditions": ["!rememberMeToken"],
"expectedCost": 2
}
]
},
"createUser": {
"expectedCost": 2
},
"updateUser": {
"expectedCost": 1
},
"deleteUser": {
"expectedCost": 1
}
},
"editor": {
"defaultEditor": "code",
"openInEditor": false,
"integration": {
"generateVSCodeTasks": true,
"generateEditorConfig": true
}
}
}