From 0d846915a7edb6f8065e4189990f6481f192ea82 Mon Sep 17 00:00:00 2001 From: rafiarrafif Date: Tue, 24 Jun 2025 07:46:24 +0700 Subject: [PATCH] add:eslint | add eslint for code formatter --- bun.lockb | Bin 82831 -> 126504 bytes eslint.config.mjs | 17 +++++++++++++ package.json | 7 +++++- src/helpers/callback/httpResponse.ts | 36 +++++++++++++-------------- 4 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 eslint.config.mjs diff --git a/bun.lockb b/bun.lockb index c7e7dac4e38dab11fdf4a49ca186c708550c02ef..68a7243d884a066e89d6f952c39942dbd7a8f498 100644 GIT binary patch delta 39363 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

i7Boi!oFY3)H-~{k0PUlLzyW~v z7Y)G+nEeHQkYbq_n#`IwYap*<4X0eoJU+YT)sV_I`bYnQahmupnFR&W8dgR1^-+CZ zd~DXmy*4&9KEf3dscFrG;bu1PSrZ=-6|IdF;e*k~Sn)$XXp2Z4%wmG9=P!LHge{Ldwc#Grqu^Nr_M6y1>N(;) z=&@jNDg{$vJ-fNKp2=vAa20i90iiUs|iGSoWe>-O2P4Ph< zau|YX$$Fm?(e{An%Q*v*q$N2<)5Hl8lmdgkqAw^&zVpG9ENXnjQ&@Ar0aG1|v`8!^ z&wkflB(0+A(DLPh2crH^R@WSt>2{Fy2&neNX+fbYK7ZN9rqOJ`NOdu5DC=F%dIhv9 z?6bLr-JAD-8?=y6xT1^ihhk-{=RQA|);b)Vo5NTy7Araq$0XvZkbE1G(BtU0(M#%1M7vnT6_#hWm_HorwMo1& zoK0uhqD3nFv0emixv}y4zrXE&U8-ZaIJ?C#D8yM$h?k_|^WYT)kDh>TwZ;i$qFHUa%b3eO{(IQ~sG*j;j zF%^1o)+?jyeL}@%QO_Tp#9=t_&w7v4Y1Ooa%@emqNXMeE23jTYK6PO|VA^*n#<6(I zFO&*0aICjcM{*igJ@wJnEz%V^ilZVp16@oJqchNj z^(3i!=h^Fy9avdgx+14#g;)-SIO`2lwSO+T81=W|6YTIc8cxJ$hXd6CSjBtw%Av7` zwpVAn&61Pi8#HAp!rOz@$Q6km^khAz8d~Xe+_oRQJhG=)n%7z)m-Hk#*>SPU1OLoc zD`2t)c4&j8w$Ed0ZoX1m20r2|E>IXF&`A^F9>KOST~y0NC(Ci!_(FZ;&rcQG4LM`x z3ak;GGtr4dOvr?~TZE5OzQ{-mtdn#N|9@*LSk? zrIprgfC3F4mdas*CT4g4tOK@tAH9GY^N6_?Dwd7H_P3sXed71@3O+aeL+ORw#tv}` z##vu+6%_PnC(eonqnY!G^2X}P(YoBI&Dr0kFRSRvdNnqPy?nmw?d5r>G0!UNz1gqX zY-3(Xmvc6DNED4`udsF78fCN5jO`cm$Kb5l&_X>7yFK0Kq*1*ihA}OQwsE93Ph1$o zGJ~uaUe#~Rs2p7Y+^!oTaotLjOjpJGi7UeluQ1f#LPs+!}gO>fsd2N-VmV22PUJOh z+PyYbUX7S3e-WI|f|Wjf1yB*)=gNRsnGZ#|;?5xJCEnxt0~@@SoQQ9dFdW&G%ufzQ zBD4T)P70#{Upm%nySJV>F@1gSyWTctetKzzv0~-3EZS7G-H8?7Kg$B^dE*SPjoneT zXj|YjVUw~e8U)3Oc{8D5J@9M2zH{g5wt4eytQFc|W8tZvv|-t@nJwZU-9kP7%h0Mf zYS(#!_l<2f7J`_dZ^;%eac(B-(%zD-$9125wrAdv*5AyU@!2_ov8jt<2@A`brQr2(1^F5_(gVFJZxK~YPJdu>k*(|K$owU ztsj55qGmvX_>9_G&jz!0v|SxrY0Tvc4f(PVV>v%#MAxWA=k`_9Jf9$1&W2|zuwne6 zv9@bgO1{zbTZ@w%Nm1-aorwN5_hq+X-SlwY6SE zURgBmdZ}^i?FtR+&1B2b0p2$bjOtoZ6Wv)zs4pbHc|>%JUR#+ck&z#%?S6ob9Y4^1fl){|oW;+!z1= diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..b87e67e --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,17 @@ +import js from "@eslint/js"; +import globals from "globals"; +import tseslint from "typescript-eslint"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + { + files: ["src/**/*.{js,mjs,cjs,ts,mts,cts}"], + plugins: { js }, + extends: ["js/recommended"], + }, + { + files: ["src/**/*.{js,mjs,cjs,ts,mts,cts}"], + languageOptions: { globals: globals.node }, + }, + tseslint.configs.recommended, +]); diff --git a/package.json b/package.json index 54a28cd..5c89849 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "build": "bun build ./src/index.ts --compile --target bun --minify-whitespace --minify-syntax --minify-identifiers --outfile dist/server", "dev": "bun run --watch src/index.ts", "map": "madge --image structure.svg src/index.ts", + "lint": "bunx eslint", "route:sync": "bun run ./scripts/sync-routes.ts", "env:publish": "bun run ./scripts/create-example-env.ts" }, @@ -27,8 +28,12 @@ "ua-parser-js": "^2.0.3" }, "devDependencies": { + "@eslint/js": "^9.29.0", "bun-types": "latest", - "prisma": "^6.7.0" + "eslint": "^9.29.0", + "globals": "^16.2.0", + "prisma": "^6.7.0", + "typescript-eslint": "^8.34.1" }, "module": "src/index.js" } diff --git a/src/helpers/callback/httpResponse.ts b/src/helpers/callback/httpResponse.ts index 98d687b..69fd05a 100644 --- a/src/helpers/callback/httpResponse.ts +++ b/src/helpers/callback/httpResponse.ts @@ -1,3 +1,5 @@ +import { Context } from "elysia"; + /** * Returns a standardized response for write operations (POST, PUT, DELETE). * Only includes data in the response during development. @@ -9,21 +11,19 @@ * * @returns An object with `status`, `message`, and optionally `data` (in development only). */ -export function returnWriteResponse( - set: any, +export function returnWriteResponse( + set: Context["set"], status: number, message?: string, - data?: any + data?: T ) { set.status = status; - const response: Record = { + return { status, message, + ...(process.env.APP_ENV === "development" && { data }), }; - if (process.env.APP_ENV === "development") response.data = data; - - return response; } /** @@ -37,11 +37,11 @@ export function returnWriteResponse( * * @returns An object with `status`, `message`, and `data`. */ -export function returnReadResponse( - set: any, +export function returnReadResponse( + set: Context["set"], status: number, message: string, - data: any + data: T ) { set.status = status; return { @@ -61,20 +61,20 @@ export function returnReadResponse( * * @returns An object with `status`, `message`, and optionally `error_details` (in development only). */ -export function returnErrorResponse( - set: any, +export function returnErrorResponse( + set: Context["set"], status: number, message: string, - errorDetails?: any + errorDetails?: T ) { set.status = status; - const response: Record = { + return { status: "error", message, + ...(process.env.APP_ENV === "development" && + errorDetails && { + error_details: errorDetails, + }), }; - if (process.env.APP_ENV === "development" && errorDetails) - response.error_details = errorDetails; - - return response; }