From d2f22e7a03159087e72df2844318a81ef1ccddd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=B0=AC=ED=98=81?= Date: Wed, 29 Apr 2026 17:40:22 +0900 Subject: [PATCH 1/4] Update issue templates --- .github/ISSUE_TEMPLATE/-recycle--refactor.md | 34 +++++++++++++++++++ ...0-\355\205\234\355\224\214\353\246\277.md" | 7 ++-- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/-recycle--refactor.md diff --git a/.github/ISSUE_TEMPLATE/-recycle--refactor.md b/.github/ISSUE_TEMPLATE/-recycle--refactor.md new file mode 100644 index 0000000..fee3518 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/-recycle--refactor.md @@ -0,0 +1,34 @@ +--- +name: ":recycle: refactor" +about: 리팩토링 템플릿입니 +title: '' +labels: '' +assignees: '' + +--- + +## 📌 개요 (What & Why?) +- 리팩토링의 목적을 간단히 설명해주세요. + 예: 네이밍 일관성 확보 / 중복 로직 제거 / 로직 분리 등 + +## 📦 영향 범위 (Scope) +- [ ] 특정 함수 / 모듈 +- [ ] 여러 파일에 걸친 구조 변경 +- [ ] 디렉토리 구조 정리 + +## 🧩 변경 방식 (How?) +- 어떤 방식으로 리팩토링할 것인지 간략히 기술 + 예: `useEffect` → `custom hook`으로 분리 + 예: utils 함수 분리 및 단위 테스트 작성 + +## ✅ TODO +- [ ] 작업 1 +- [ ] 작업 2 +- [ ] 테스트 코드 작성 + +## 🧪 테스트 계획 (Test Plan) +- [ ] 기존 기능이 정상 동작하는지 테스트 +- [ ] 신규 유닛 테스트 또는 수동 테스트 내용 + +## 📎 참고 자료 (Optional) +- 관련 이슈/PR 링크, 문서, 커밋 해시 등 diff --git "a/.github/ISSUE_TEMPLATE/\354\233\214\355\201\254\353\266\201-\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" "b/.github/ISSUE_TEMPLATE/\354\233\214\355\201\254\353\266\201-\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" index 8352cac..4c47748 100644 --- "a/.github/ISSUE_TEMPLATE/\354\233\214\355\201\254\353\266\201-\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" +++ "b/.github/ISSUE_TEMPLATE/\354\233\214\355\201\254\353\266\201-\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" @@ -1,9 +1,10 @@ --- name: 워크북 이슈 생성 템플릿 about: 해당 이슈 생성 템플릿을 사용하여 워크북 이슈를 생성합니다. -title: "Chapter00_워크북 제목" -labels: "" -assignees: qmean +title: Chapter00_워크북 제목 +labels: '' +assignees: '' + --- From 76ac671c0a78da56af081b9991919bc0bba14d78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=B0=AC=ED=98=81?= Date: Wed, 29 Apr 2026 23:19:47 +0900 Subject: [PATCH 2/4] =?UTF-8?q?mission:=205=EC=A3=BC=EC=B0=A8=20=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission/chapter05/README.md | 359 ++++++++ mission/chapter05/images/mission-1-1-db.png | Bin 0 -> 8066 bytes .../chapter05/images/mission-1-1-postman.png | Bin 0 -> 54034 bytes mission/chapter05/images/mission-1-2-db.png | Bin 0 -> 8190 bytes .../chapter05/images/mission-1-2-postman.png | Bin 0 -> 51400 bytes mission/chapter05/images/mission-1-3-db.png | Bin 0 -> 8980 bytes .../chapter05/images/mission-1-3-postman.png | Bin 0 -> 56620 bytes mission/chapter05/images/mission-1-4-db.png | Bin 0 -> 10557 bytes .../chapter05/images/mission-1-4-error.png | Bin 0 -> 17487 bytes .../chapter05/images/mission-1-4-postman.png | Bin 0 -> 47359 bytes .../chapter05/images/password-hashing-db.png | Bin 0 -> 13549 bytes .../images/password-hashing-request.png | Bin 0 -> 66276 bytes package-lock.json | 871 +++++++++++++++++- package.json | 20 +- src/db.config.ts | 20 + src/index.js | 12 - src/index.ts | 59 ++ .../controllers/mission.controller.ts | 65 ++ src/modules/missions/dtos/mission.dto.ts | 50 + .../repositories/mission.repository.ts | 136 +++ .../missions/services/mission.service.ts | 69 ++ .../reviews/controllers/review.controller.ts | 30 + src/modules/reviews/dtos/review.dto.ts | 24 + .../reviews/repositories/review.repository.ts | 58 ++ .../reviews/services/review.service.ts | 28 + .../stores/controllers/store.controller.ts | 30 + src/modules/stores/dtos/store.dto.ts | 21 + .../stores/repositories/store.repository.ts | 58 ++ src/modules/stores/services/store.service.ts | 24 + .../users/controllers/user.controller.ts | 23 + src/modules/users/dtos/user.dto.ts | 51 + .../users/repositories/user.repository.ts | 104 +++ src/modules/users/services/user.service.ts | 46 + tsconfig.json | 25 + 34 files changed, 2165 insertions(+), 18 deletions(-) create mode 100644 mission/chapter05/README.md create mode 100644 mission/chapter05/images/mission-1-1-db.png create mode 100644 mission/chapter05/images/mission-1-1-postman.png create mode 100644 mission/chapter05/images/mission-1-2-db.png create mode 100644 mission/chapter05/images/mission-1-2-postman.png create mode 100644 mission/chapter05/images/mission-1-3-db.png create mode 100644 mission/chapter05/images/mission-1-3-postman.png create mode 100644 mission/chapter05/images/mission-1-4-db.png create mode 100644 mission/chapter05/images/mission-1-4-error.png create mode 100644 mission/chapter05/images/mission-1-4-postman.png create mode 100644 mission/chapter05/images/password-hashing-db.png create mode 100644 mission/chapter05/images/password-hashing-request.png create mode 100644 src/db.config.ts delete mode 100644 src/index.js create mode 100644 src/index.ts create mode 100644 src/modules/missions/controllers/mission.controller.ts create mode 100644 src/modules/missions/dtos/mission.dto.ts create mode 100644 src/modules/missions/repositories/mission.repository.ts create mode 100644 src/modules/missions/services/mission.service.ts create mode 100644 src/modules/reviews/controllers/review.controller.ts create mode 100644 src/modules/reviews/dtos/review.dto.ts create mode 100644 src/modules/reviews/repositories/review.repository.ts create mode 100644 src/modules/reviews/services/review.service.ts create mode 100644 src/modules/stores/controllers/store.controller.ts create mode 100644 src/modules/stores/dtos/store.dto.ts create mode 100644 src/modules/stores/repositories/store.repository.ts create mode 100644 src/modules/stores/services/store.service.ts create mode 100644 src/modules/users/controllers/user.controller.ts create mode 100644 src/modules/users/dtos/user.dto.ts create mode 100644 src/modules/users/repositories/user.repository.ts create mode 100644 src/modules/users/services/user.service.ts create mode 100644 tsconfig.json diff --git a/mission/chapter05/README.md b/mission/chapter05/README.md new file mode 100644 index 0000000..cd2a2ec --- /dev/null +++ b/mission/chapter05/README.md @@ -0,0 +1,359 @@ +## 0. GitHub 정보 + +### 작업 브랜치 + +```text +feature/chapter-05 +```` + +### GitHub 링크 + +```text +여기에 본인 GitHub PR 또는 Repository 링크 첨부 +``` + +> main 브랜치가 아닌 `feature/chapter-05` 브랜치에서 작업했다. + +--- + +## 1. 구현한 API 목록 + +| 번호 | API | Method | Endpoint | +| --- | -------------- | ------ | --------------------------------------- | +| 1-1 | 특정 지역에 가게 추가하기 | POST | `/api/v1/regions/:regionId/stores` | +| 1-2 | 가게에 리뷰 추가하기 | POST | `/api/v1/stores/:storeId/reviews` | +| 1-3 | 가게에 미션 추가하기 | POST | `/api/v1/stores/:storeId/missions` | +| 1-4 | 미션 도전하기 | POST | `/api/v1/missions/:missionId/challenge` | + +--- + +## 2. 1-1. 특정 지역에 가게 추가하기 API + +### 핵심 내용 + +특정 지역에 새로운 가게를 추가하는 API이다. +`regionId`를 Path Variable로 받아 해당 지역에 가게를 등록한다. + +### Request + +```text +POST /api/v1/regions/1/stores +``` + +### Body + +```json +{ + "name": "인하 맛집", + "address": "인천 미추홀구 인하로 100" +} +``` + +### 핵심 코드 + +```ts +app.post("/api/v1/regions/:regionId/stores", handleCreateStore); +``` + +```ts +const regionId = Number(req.params.regionId); +const store = await createStore(bodyToStore(req.body, regionId)); +``` + +### 사진 첨부 + + + + + +### 확인한 내용 + +* Postman으로 가게 추가 요청 성공 +* `stores` 테이블에 데이터 저장 확인 + +--- + +## 3. 1-2. 가게에 리뷰 추가하기 API + +### 핵심 내용 + +특정 가게에 리뷰를 추가하는 API이다. +리뷰를 추가하려는 가게가 실제로 존재하는지 검증한 뒤 리뷰를 저장한다. + +### Request + +```text +POST /api/v1/stores/1/reviews +``` + +### Body + +```json +{ + "rating": 5, + "content": "가게 분위기가 좋았습니다." +} +``` + +### 핵심 코드 + +```ts +app.post("/api/v1/stores/:storeId/reviews", handleCreateReview); +``` + +```ts +const store = await findStoreById(data.storeId); + +if (!store) { + throw new Error("존재하지 않는 가게입니다."); +} +``` + +### 사진 첨부 + + + + + +### 확인한 내용 + +* 존재하는 가게에 리뷰 추가 성공 +* 존재하지 않는 가게에 요청했을 때 오류 반환 확인 +* `reviews` 테이블에 데이터 저장 확인 + +--- + +## 4. 1-3. 가게에 미션 추가하기 API + +### 핵심 내용 + +특정 가게에 미션을 추가하는 API이다. +미션을 추가하려는 가게가 존재하는지 확인한 뒤 미션을 저장한다. + +### Request + +```text +POST /api/v1/stores/1/missions +``` + +### Body + +```json +{ + "title": "가게 방문하기", + "description": "가게에 방문한 뒤 인증하기", + "rewardPoint": 500 +} +``` + +### 핵심 코드 + +```ts +app.post("/api/v1/stores/:storeId/missions", handleCreateMission); +``` + +```ts +const store = await findStoreById(data.storeId); + +if (!store) { + throw new Error("존재하지 않는 가게입니다."); +} +``` + +### 사진 첨부 + + + + + +### 확인한 내용 + +* 존재하는 가게에 미션 추가 성공 +* `missions` 테이블에 데이터 저장 확인 + +--- + +## 5. 1-4. 미션 도전하기 API + +### 핵심 내용 + +사용자가 특정 미션을 도전 중인 미션에 추가하는 API이다. +도전하려는 미션이 존재하는지 확인하고, 이미 도전 중인 미션인지 검증한 뒤 저장한다. + +### Request + +```text +POST /api/v1/missions/1/challenge +``` + +### Body + +```json +{ + "userId": 1 +} +``` + +### 핵심 코드 + +```ts +app.post("/api/v1/missions/:missionId/challenge", handleChallengeMission); +``` + +```ts +const alreadyChallenged = await findUserMission(data.userId, data.missionId); + +if (alreadyChallenged) { + throw new Error("이미 도전 중인 미션입니다."); +} +``` + +### 사진 첨부 + + + + + + + +### 확인한 내용 + +* 존재하는 미션에 도전 성공 +* 이미 도전 중인 미션에 다시 도전했을 때 오류 반환 확인 +* `user_missions` 테이블에 데이터 저장 확인 + +--- + +## 6. Controller → Service → Repository → DB 요청 흐름 + +이번 미션에서 API 요청은 아래 흐름으로 처리되었다. + +```text +1. 사용자가 Postman으로 API 요청을 보냄 +2. Express Router가 요청 URL에 맞는 Controller 실행 +3. Controller가 Path Variable과 Request Body 확인 +4. DTO가 요청 데이터를 정리 +5. Service가 실제 비즈니스 로직 처리 +6. Repository가 DB에 SQL 쿼리 실행 +7. DB 처리 결과가 Repository로 반환 +8. Service가 응답 데이터를 정리 +9. Controller가 클라이언트에게 JSON 응답 반환 +``` + +예를 들어 미션 도전 API는 다음과 같이 동작했다. + +```text +POST /api/v1/missions/1/challenge 요청 +→ handleChallengeMission Controller 실행 +→ missionId와 userId 확인 +→ challengeMission Service 호출 +→ 사용자 존재 여부 확인 +→ 미션 존재 여부 확인 +→ 이미 도전 중인지 확인 +→ addUserMission으로 user_missions 테이블에 저장 +→ 저장된 user_mission 조회 +→ JSON 응답 반환 +``` + +--- + +## 7. 회원가입 API 비밀번호 해싱 추가 + +### 핵심 내용 + +회원가입 API에서 비밀번호를 원문 그대로 저장하지 않도록 해싱 과정을 추가했다. + +### 핵심 코드 + +```ts +import bcrypt from "bcrypt"; + +const hashedPassword = await bcrypt.hash(data.password, 10); +``` + +```ts +await addUser({ + email: data.email, + password: hashedPassword, + name: data.name, + gender: data.gender, + birth: data.birth, + address: data.address, + detailAddress: data.detailAddress, + phoneNumber: data.phoneNumber, +}); +``` + +### 사진 첨부 + + + + + +### 확인한 내용 + +* 회원가입 요청 시 password를 함께 전달 +* DB에는 원문 비밀번호가 아닌 해싱된 비밀번호 저장 확인 + +--- + +## 8. 트러블슈팅 + +### 8-1. Cannot POST 오류 + +#### 문제 + +Postman 요청 시 아래 오류가 발생했다. + +```text +Cannot POST /api/v1/users/signup +``` + +#### 원인 + +`index.ts`에 해당 API 라우트가 등록되어 있지 않았다. + +#### 해결 + +```ts +app.post("/api/v1/users/signup", handleUserSignUp); +``` + +라우트를 추가한 뒤 정상적으로 요청이 들어오는 것을 확인했다. + +--- + +### 8-2. DB 연결 문제 + +#### 문제 + +DB 연결이 되지 않았다. + +#### 원인 + +`.env` 파일에서 DB 이름과 비밀번호에 `{}`를 포함해서 작성한 것이 문제였다. + +#### 해결 + +```env +DB_HOST=localhost +DB_PORT=3306 +DB_USER=root +DB_PASSWORD=root1234! +DB_NAME=umc_week5 +``` + +중괄호를 제거한 뒤 정상적으로 DB 연결이 되었다. + +--- + +## 9. 느낀 점 + +이번 미션을 진행하면서 API 구현은 단순히 URL 하나를 만드는 것이 아니라, 요청이 Controller, Service, Repository를 거쳐 DB까지 이어지는 전체 흐름을 이해하는 과정이라는 것을 느꼈다. + +특히 리뷰 추가 API에서는 가게 존재 여부를 검증해야 했고, 미션 도전 API에서는 이미 도전 중인지 확인해야 했다. +이 과정을 통해 실제 서비스에서는 단순 저장보다 검증 로직이 중요하다는 점을 알 수 있었다. + +또 Postman으로 요청을 보내고 DB에 데이터가 저장되는 것을 직접 확인하면서, Express와 MySQL이 실제로 연결되어 동작하는 흐름을 더 구체적으로 이해할 수 있었다. + + diff --git a/mission/chapter05/images/mission-1-1-db.png b/mission/chapter05/images/mission-1-1-db.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9171e3f96b60500efd7a77b0f1a9f217408a32 GIT binary patch literal 8066 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 z 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 literal 0 HcmV?d00001 diff --git a/mission/chapter05/images/mission-1-2-db.png b/mission/chapter05/images/mission-1-2-db.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1e0c590f56681c95f3b358edadb91d36f47521 GIT binary patch literal 8190 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 M3Hdj9VtT&+1rAzL7ytkO literal 0 HcmV?d00001 diff --git a/mission/chapter05/images/mission-1-3-db.png b/mission/chapter05/images/mission-1-3-db.png new file mode 100644 index 0000000000000000000000000000000000000000..acbb21108e03536dea3f54dabcfa004b942a008c GIT binary patch literal 8980 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 NSJqalcxmiXw{ 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 literal 0 HcmV?d00001 diff --git a/mission/chapter05/images/password-hashing-request.png b/mission/chapter05/images/password-hashing-request.png new file mode 100644 index 0000000000000000000000000000000000000000..d8754a7a879fd3e77c70fa492ea1c23c82383bd8 GIT binary patch literal 66276 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%0DnCpoq&UKHe8 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 XY?RV8CMq)&0xkm`gf{ksec*opK7GY% literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 74fa13e..6de644a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,591 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "express": "^5.2.1" + "bcrypt": "^6.0.0", + "cors": "^2.8.6", + "dotenv": "^17.4.2", + "express": "^5.2.1", + "http-status-codes": "^2.3.0", + "mysql2": "^3.22.3" }, "devDependencies": { - "nodemon": "^3.1.14" + "@types/bcrypt": "^6.0.0", + "@types/cors": "^2.8.19", + "@types/dotenv": "^6.1.1", + "@types/express": "^5.0.6", + "@types/node": "^25.6.0", + "nodemon": "^3.1.14", + "tsx": "^4.21.0", + "typescript": "^6.0.3" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@types/bcrypt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-6.0.0.tgz", + "integrity": "sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/dotenv": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz", + "integrity": "sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" } }, "node_modules/accepts": { @@ -42,6 +623,15 @@ "node": ">= 8" } }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -52,6 +642,20 @@ "node": "18 || 20 || >=22" } }, + "node_modules/bcrypt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", + "integrity": "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^8.3.0", + "node-gyp-build": "^4.8.4" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -218,6 +822,23 @@ "node": ">=6.6.0" } }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -235,6 +856,15 @@ } } }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -244,6 +874,18 @@ "node": ">= 0.8" } }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -303,6 +945,48 @@ "node": ">= 0.4" } }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -437,6 +1121,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -474,6 +1167,19 @@ "node": ">= 0.4" } }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -553,6 +1259,12 @@ "url": "https://opencollective.com/express" } }, + "node_modules/http-status-codes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", + "license": "MIT" + }, "node_modules/iconv-lite": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", @@ -643,6 +1355,33 @@ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/lru.min": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", + "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -720,6 +1459,40 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/mysql2": { + "version": "3.22.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.22.3.tgz", + "integrity": "sha512-uWWxvZSRvRhtBdh2CdcuK83YcOfPdmEeEYB069bAmPnV93QApDGVPuvCQOLjlh7tYHEWdgQPrn6kosDxHBVLkA==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.2", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.2", + "long": "^5.3.2", + "lru.min": "^1.1.4", + "named-placeholders": "^1.1.6", + "sql-escaper": "^1.3.3" + }, + "engines": { + "node": ">= 8.0" + }, + "peerDependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "license": "MIT", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", @@ -729,6 +1502,26 @@ "node": ">= 0.6" } }, + "node_modules/node-addon-api": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.7.0.tgz", + "integrity": "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/nodemon": { "version": "3.1.14", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", @@ -768,6 +1561,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -905,6 +1707,16 @@ "node": ">=8.10.0" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -1076,6 +1888,21 @@ "node": ">=10" } }, + "node_modules/sql-escaper": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/sql-escaper/-/sql-escaper-1.3.3.tgz", + "integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=2.0.0", + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" + } + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -1130,6 +1957,26 @@ "nodetouch": "bin/nodetouch.js" } }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/type-is": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", @@ -1144,6 +1991,20 @@ "node": ">= 0.6" } }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -1151,6 +2012,12 @@ "dev": true, "license": "MIT" }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "license": "MIT" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 0d8dbf5..4178e27 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "node src/index.js", - "dev": "nodemon --exec node src/index.js" + "start": "tsx src/index.ts", + "dev": "nodemon --exec tsx src/index.ts" }, "repository": { "type": "git", @@ -21,9 +21,21 @@ }, "homepage": "https://github.com/inhadissolve/10th_Node.js#readme", "dependencies": { - "express": "^5.2.1" + "bcrypt": "^6.0.0", + "cors": "^2.8.6", + "dotenv": "^17.4.2", + "express": "^5.2.1", + "http-status-codes": "^2.3.0", + "mysql2": "^3.22.3" }, "devDependencies": { - "nodemon": "^3.1.14" + "@types/bcrypt": "^6.0.0", + "@types/cors": "^2.8.19", + "@types/dotenv": "^6.1.1", + "@types/express": "^5.0.6", + "@types/node": "^25.6.0", + "nodemon": "^3.1.14", + "tsx": "^4.21.0", + "typescript": "^6.0.3" } } diff --git a/src/db.config.ts b/src/db.config.ts new file mode 100644 index 0000000..8a6777d --- /dev/null +++ b/src/db.config.ts @@ -0,0 +1,20 @@ +import mysql from "mysql2/promise"; +import dotenv from "dotenv"; + +dotenv.config(); + +console.log("DB_HOST:", process.env.DB_HOST); +console.log("DB_PORT:", process.env.DB_PORT); +console.log("DB_USER:", process.env.DB_USER); +console.log("DB_NAME:", process.env.DB_NAME); + +export const pool = mysql.createPool({ + host: process.env.DB_HOST || "localhost", + user: process.env.DB_USER || "root", + port: parseInt(process.env.DB_PORT || "3306"), + database: process.env.DB_NAME || "umc_week5", + password: process.env.DB_PASSWORD || "password", + waitForConnections: true, + connectionLimit: 10, + queueLimit: 0, +}); \ No newline at end of file diff --git a/src/index.js b/src/index.js deleted file mode 100644 index d8f49d9..0000000 --- a/src/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import express from 'express' - -const app = express() -const port = 3000 - -app.get('/', (req, res) => { - res.send('Hello World!') -}) - -app.listen(port, () => { - console.log(`Example app listening on port ${port}`) -}) \ No newline at end of file diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..cbc5880 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,59 @@ +import dotenv from "dotenv"; +import express, { Express, Request, Response, NextFunction } from "express"; +import cors from "cors"; + +import { handleUserSignUp } from "./modules/users/controllers/user.controller.js"; +import { handleCreateStore } from "./modules/stores/controllers/store.controller.js"; +import { handleCreateReview } from "./modules/reviews/controllers/review.controller.js"; +import { + handleCreateMission, + handleChallengeMission, +} from "./modules/missions/controllers/mission.controller.js"; + +dotenv.config(); + +const app: Express = express(); +const port = process.env.PORT || 3000; + +/** + * 공통 미들웨어 설정 + */ +app.use(cors()); +app.use(express.static("public")); +app.use(express.json()); +app.use(express.urlencoded({ extended: false })); + +/** + * 기본 서버 확인용 API + */ +app.get("/", (req: Request, res: Response) => { + res.send("Hello World! This is TypeScript Server!"); +}); + +app.post("/api/v1/users/signup", handleUserSignUp); + +app.post("/api/v1/regions/:regionId/stores", handleCreateStore); + +app.post("/api/v1/stores/:storeId/reviews", handleCreateReview); + +app.post("/api/v1/stores/:storeId/missions", handleCreateMission); + +app.post("/api/v1/missions/:missionId/challenge", handleChallengeMission); + +/** + * 공통 에러 처리 미들웨어 + */ +app.use((err: Error, req: Request, res: Response, next: NextFunction) => { + console.error("에러 발생:", err.message); + + res.status(400).json({ + error: err.message, + }); +}); + +/** + * 서버 실행 + */ +app.listen(port, () => { + console.log(`[server]: Server is running at http://localhost:${port}`); +}); \ No newline at end of file diff --git a/src/modules/missions/controllers/mission.controller.ts b/src/modules/missions/controllers/mission.controller.ts new file mode 100644 index 0000000..8b7d2c7 --- /dev/null +++ b/src/modules/missions/controllers/mission.controller.ts @@ -0,0 +1,65 @@ +import { Request, Response, NextFunction } from "express"; +import { StatusCodes } from "http-status-codes"; +import { + bodyToMission, + bodyToMissionChallenge, +} from "../dtos/mission.dto.js"; + +import { + createMission, + challengeMission, +} from "../services/mission.service.js"; + +export const handleCreateMission = async ( + req: Request, + res: Response, + next: NextFunction +) => { + try { + console.log("미션 추가를 요청했습니다."); + console.log("params:", req.params); + console.log("body:", req.body); + + const storeId = Number(req.params.storeId); + + if (Number.isNaN(storeId)) { + throw new Error("storeId는 숫자여야 합니다."); + } + + const mission = await createMission(bodyToMission(req.body, storeId)); + + res.status(StatusCodes.CREATED).json({ + result: mission, + }); + } catch (error) { + next(error); + } +}; + +export const handleChallengeMission = async ( + req: Request, + res: Response, + next: NextFunction +) => { + try { + console.log("미션 도전을 요청했습니다."); + console.log("params:", req.params); + console.log("body:", req.body); + + const missionId = Number(req.params.missionId); + + if (Number.isNaN(missionId)) { + throw new Error("missionId는 숫자여야 합니다."); + } + + const userMission = await challengeMission( + bodyToMissionChallenge(req.body, missionId) + ); + + res.status(StatusCodes.CREATED).json({ + result: userMission, + }); + } catch (error) { + next(error); + } +}; \ No newline at end of file diff --git a/src/modules/missions/dtos/mission.dto.ts b/src/modules/missions/dtos/mission.dto.ts new file mode 100644 index 0000000..b79108d --- /dev/null +++ b/src/modules/missions/dtos/mission.dto.ts @@ -0,0 +1,50 @@ +export interface MissionCreateRequest { + title: string; + description: string; + rewardPoint: number; +} + +export const bodyToMission = ( + body: MissionCreateRequest, + storeId: number +) => { + return { + storeId, + title: body.title, + description: body.description, + rewardPoint: body.rewardPoint, + }; +}; + +export const responseFromMission = (mission: any) => { + return { + missionId: mission.id, + storeId: mission.store_id, + title: mission.title, + description: mission.description, + rewardPoint: mission.reward_point, + }; +}; + +export interface MissionChallengeRequest { + userId: number; +} + +export const bodyToMissionChallenge = ( + body: MissionChallengeRequest, + missionId: number +) => { + return { + userId: body.userId, + missionId, + }; +}; + +export const responseFromUserMission = (userMission: any) => { + return { + userMissionId: userMission.id, + userId: userMission.user_id, + missionId: userMission.mission_id, + status: userMission.status, + }; +}; \ No newline at end of file diff --git a/src/modules/missions/repositories/mission.repository.ts b/src/modules/missions/repositories/mission.repository.ts new file mode 100644 index 0000000..83a9f3f --- /dev/null +++ b/src/modules/missions/repositories/mission.repository.ts @@ -0,0 +1,136 @@ +import { pool } from "../../../db.config.js"; + +export const findStoreById = async (storeId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM stores WHERE id = ?", + [storeId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`가게 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const addMission = async (data: { + storeId: number; + title: string; + description: string; + rewardPoint: number; +}) => { + const conn = await pool.getConnection(); + + try { + const [result]: any = await conn.query( + `INSERT INTO missions + (store_id, title, description, reward_point) + VALUES (?, ?, ?, ?)`, + [data.storeId, data.title, data.description, data.rewardPoint] + ); + + return result.insertId; + } catch (err) { + throw new Error(`미션 추가 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const findMissionById = async (missionId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM missions WHERE id = ?", + [missionId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`미션 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const findUserById = async (userId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM user WHERE id = ?", + [userId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`사용자 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const findUserMission = async ( + userId: number, + missionId: number +) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + `SELECT * FROM user_missions + WHERE user_id = ? AND mission_id = ? AND status = 'IN_PROGRESS'`, + [userId, missionId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`도전 중인 미션 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const addUserMission = async (data: { + userId: number; + missionId: number; +}) => { + const conn = await pool.getConnection(); + + try { + const [result]: any = await conn.query( + `INSERT INTO user_missions + (user_id, mission_id, status) + VALUES (?, ?, 'IN_PROGRESS')`, + [data.userId, data.missionId] + ); + + return result.insertId; + } catch (err) { + throw new Error(`미션 도전 추가 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const findUserMissionById = async (userMissionId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM user_missions WHERE id = ?", + [userMissionId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`도전 미션 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; \ No newline at end of file diff --git a/src/modules/missions/services/mission.service.ts b/src/modules/missions/services/mission.service.ts new file mode 100644 index 0000000..2d96627 --- /dev/null +++ b/src/modules/missions/services/mission.service.ts @@ -0,0 +1,69 @@ +import { + addMission, + addUserMission, + findMissionById, + findStoreById, + findUserById, + findUserMission, + findUserMissionById, +} from "../repositories/mission.repository.js"; +import { + responseFromMission, + responseFromUserMission, +} from "../dtos/mission.dto.js"; + +export const createMission = async (data: { + storeId: number; + title: string; + description: string; + rewardPoint: number; +}) => { + const store = await findStoreById(data.storeId); + + if (!store) { + throw new Error("존재하지 않는 가게입니다."); + } + + if (data.rewardPoint < 0) { + throw new Error("보상 포인트는 0 이상이어야 합니다."); + } + + const missionId = await addMission(data); + + const mission = await findMissionById(missionId); + + return responseFromMission(mission); +}; + +export const challengeMission = async (data: { + userId: number; + missionId: number; +}) => { + const user = await findUserById(data.userId); + + if (!user) { + throw new Error("존재하지 않는 사용자입니다."); + } + + const mission = await findMissionById(data.missionId); + + if (!mission) { + throw new Error("존재하지 않는 미션입니다."); + } + + const alreadyChallenged = await findUserMission( + data.userId, + data.missionId + ); + + if (alreadyChallenged) { + throw new Error("이미 도전 중인 미션입니다."); + } + + const userMissionId = await addUserMission(data); + + const userMission = await findUserMissionById(userMissionId); + + return responseFromUserMission(userMission); +}; + diff --git a/src/modules/reviews/controllers/review.controller.ts b/src/modules/reviews/controllers/review.controller.ts new file mode 100644 index 0000000..064c6b9 --- /dev/null +++ b/src/modules/reviews/controllers/review.controller.ts @@ -0,0 +1,30 @@ +import { Request, Response, NextFunction } from "express"; +import { StatusCodes } from "http-status-codes"; +import { bodyToReview } from "../dtos/review.dto.js"; +import { createReview } from "../services/review.service.js"; + +export const handleCreateReview = async ( + req: Request, + res: Response, + next: NextFunction +) => { + try { + console.log("리뷰 추가를 요청했습니다."); + console.log("params:", req.params); + console.log("body:", req.body); + + const storeId = Number(req.params.storeId); + + if (Number.isNaN(storeId)) { + throw new Error("storeId는 숫자여야 합니다."); + } + + const review = await createReview(bodyToReview(req.body, storeId)); + + res.status(StatusCodes.CREATED).json({ + result: review, + }); + } catch (error) { + next(error); + } +}; \ No newline at end of file diff --git a/src/modules/reviews/dtos/review.dto.ts b/src/modules/reviews/dtos/review.dto.ts new file mode 100644 index 0000000..fb7dcdb --- /dev/null +++ b/src/modules/reviews/dtos/review.dto.ts @@ -0,0 +1,24 @@ +export interface ReviewCreateRequest { + rating: number; + content: string; +} + +export const bodyToReview = ( + body: ReviewCreateRequest, + storeId: number +) => { + return { + storeId, + rating: body.rating, + content: body.content, + }; +}; + +export const responseFromReview = (review: any) => { + return { + reviewId: review.id, + storeId: review.store_id, + rating: review.rating, + content: review.content, + }; +}; \ No newline at end of file diff --git a/src/modules/reviews/repositories/review.repository.ts b/src/modules/reviews/repositories/review.repository.ts new file mode 100644 index 0000000..2549fa0 --- /dev/null +++ b/src/modules/reviews/repositories/review.repository.ts @@ -0,0 +1,58 @@ +import { pool } from "../../../db.config.js"; + +export const findStoreById = async (storeId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM stores WHERE id = ?", + [storeId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`가게 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const addReview = async (data: { + storeId: number; + rating: number; + content: string; +}) => { + const conn = await pool.getConnection(); + + try { + const [result]: any = await conn.query( + `INSERT INTO reviews + (store_id, rating, content) + VALUES (?, ?, ?)`, + [data.storeId, data.rating, data.content] + ); + + return result.insertId; + } catch (err) { + throw new Error(`리뷰 추가 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const findReviewById = async (reviewId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM reviews WHERE id = ?", + [reviewId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`리뷰 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; \ No newline at end of file diff --git a/src/modules/reviews/services/review.service.ts b/src/modules/reviews/services/review.service.ts new file mode 100644 index 0000000..bf39ca4 --- /dev/null +++ b/src/modules/reviews/services/review.service.ts @@ -0,0 +1,28 @@ +import { + addReview, + findReviewById, + findStoreById, +} from "../repositories/review.repository.js"; +import { responseFromReview } from "../dtos/review.dto.js"; + +export const createReview = async (data: { + storeId: number; + rating: number; + content: string; +}) => { + const store = await findStoreById(data.storeId); + + if (!store) { + throw new Error("존재하지 않는 가게입니다."); + } + + if (data.rating < 1 || data.rating > 5) { + throw new Error("평점은 1점부터 5점 사이여야 합니다."); + } + + const reviewId = await addReview(data); + + const review = await findReviewById(reviewId); + + return responseFromReview(review); +}; \ No newline at end of file diff --git a/src/modules/stores/controllers/store.controller.ts b/src/modules/stores/controllers/store.controller.ts new file mode 100644 index 0000000..75e93e4 --- /dev/null +++ b/src/modules/stores/controllers/store.controller.ts @@ -0,0 +1,30 @@ +import { Request, Response, NextFunction } from "express"; +import { StatusCodes } from "http-status-codes"; +import { bodyToStore } from "../dtos/store.dto.js"; +import { createStore } from "../services/store.service.js"; + +export const handleCreateStore = async ( + req: Request, + res: Response, + next: NextFunction +) => { + try { + console.log("가게 추가를 요청했습니다."); + console.log("params:", req.params); + console.log("body:", req.body); + + const regionId = Number(req.params.regionId); + + if (Number.isNaN(regionId)) { + throw new Error("regionId는 숫자여야 합니다."); + } + + const store = await createStore(bodyToStore(req.body, regionId)); + + res.status(StatusCodes.CREATED).json({ + result: store, + }); + } catch (error) { + next(error); + } +}; \ No newline at end of file diff --git a/src/modules/stores/dtos/store.dto.ts b/src/modules/stores/dtos/store.dto.ts new file mode 100644 index 0000000..236cc3c --- /dev/null +++ b/src/modules/stores/dtos/store.dto.ts @@ -0,0 +1,21 @@ +export interface StoreCreateRequest { + name: string; + address: string; +} + +export const bodyToStore = (body: StoreCreateRequest, regionId: number) => { + return { + regionId, + name: body.name, + address: body.address, + }; +}; + +export const responseFromStore = (store: any) => { + return { + storeId: store.id, + regionId: store.region_id, + name: store.name, + address: store.address, + }; +}; \ No newline at end of file diff --git a/src/modules/stores/repositories/store.repository.ts b/src/modules/stores/repositories/store.repository.ts new file mode 100644 index 0000000..fe73f91 --- /dev/null +++ b/src/modules/stores/repositories/store.repository.ts @@ -0,0 +1,58 @@ +import { pool } from "../../../db.config.js"; + +export const findRegionById = async (regionId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM regions WHERE id = ?", + [regionId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`지역 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const addStore = async (data: { + regionId: number; + name: string; + address: string; +}) => { + const conn = await pool.getConnection(); + + try { + const [result]: any = await conn.query( + `INSERT INTO stores + (region_id, name, address) + VALUES (?, ?, ?)`, + [data.regionId, data.name, data.address] + ); + + return result.insertId; + } catch (err) { + throw new Error(`가게 추가 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const findStoreById = async (storeId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM stores WHERE id = ?", + [storeId] + ); + + return rows[0] || null; + } catch (err) { + throw new Error(`가게 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; \ No newline at end of file diff --git a/src/modules/stores/services/store.service.ts b/src/modules/stores/services/store.service.ts new file mode 100644 index 0000000..7087e8d --- /dev/null +++ b/src/modules/stores/services/store.service.ts @@ -0,0 +1,24 @@ +import { + addStore, + findRegionById, + findStoreById, +} from "../repositories/store.repository.js"; +import { responseFromStore } from "../dtos/store.dto.js"; + +export const createStore = async (data: { + regionId: number; + name: string; + address: string; +}) => { + const region = await findRegionById(data.regionId); + + if (!region) { + throw new Error("존재하지 않는 지역입니다."); + } + + const storeId = await addStore(data); + + const store = await findStoreById(storeId); + + return responseFromStore(store); +}; \ No newline at end of file diff --git a/src/modules/users/controllers/user.controller.ts b/src/modules/users/controllers/user.controller.ts new file mode 100644 index 0000000..96872be --- /dev/null +++ b/src/modules/users/controllers/user.controller.ts @@ -0,0 +1,23 @@ +import { Request, Response, NextFunction } from "express"; +import { StatusCodes } from "http-status-codes"; +import { bodyToUser } from "../dtos/user.dto.js"; +import { userSignUp } from "../services/user.service.js"; + +export const handleUserSignUp = async ( + req: Request, + res: Response, + next: NextFunction +) => { + try { + console.log("회원가입을 요청했습니다!"); + console.log("body:", req.body); + + const user = await userSignUp(bodyToUser(req.body)); + + res.status(StatusCodes.OK).json({ + result: user, + }); + } catch (error) { + next(error); + } +}; \ No newline at end of file diff --git a/src/modules/users/dtos/user.dto.ts b/src/modules/users/dtos/user.dto.ts new file mode 100644 index 0000000..4c09149 --- /dev/null +++ b/src/modules/users/dtos/user.dto.ts @@ -0,0 +1,51 @@ +export interface UserSignUpRequest { + email: string; + name: string; + gender: string; + birth: string; + address?: string; + detailAddress?: string; + phoneNumber: string; + preferences: number[]; +} + +export const bodyToUser = (body: UserSignUpRequest) => { + return { + email: body.email, + password: body.password, + name: body.name, + gender: body.gender, + birth: new Date(body.birth), + address: body.address || "", + detailAddress: body.detailAddress || "", + phoneNumber: body.phoneNumber, + preferences: body.preferences, + }; +}; + +export const responseFromUser = ({ + user, + preferences, +}: { + user: any; + preferences: any[]; +}) => { + return { + email: user.email, + name: user.name, + preferCategory: preferences.map((preference) => preference.name), + }; +}; + +export interface UserSignUpRequest { + email: string; + password: string; + name: string; + gender: string; + birth: string; + address?: string; + detailAddress?: string; + phoneNumber: string; + preferences: number[]; +} + diff --git a/src/modules/users/repositories/user.repository.ts b/src/modules/users/repositories/user.repository.ts new file mode 100644 index 0000000..77ee210 --- /dev/null +++ b/src/modules/users/repositories/user.repository.ts @@ -0,0 +1,104 @@ +import { pool } from "../../../db.config.js"; + +export const addUser = async (data: { + email: string; + password: string; + name: string; + gender: string; + birth: Date; + address: string; + detailAddress: string; + phoneNumber: string; +}) => { + const conn = await pool.getConnection(); + + try { + const [confirm]: any = await conn.query( + "SELECT * FROM user WHERE email = ?", + [data.email] + ); + + if (Array.isArray(confirm) && confirm.length > 0) { + return null; + } + + const [result]: any = await conn.query( + `INSERT INTO user + (email, password, name, gender, birth, address, detail_address, phone_number) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, + [ + data.email, + data.password, + data.name, + data.gender, + data.birth, + data.address, + data.detailAddress, + data.phoneNumber, + ] +); + + return result.insertId; + } catch (err) { + throw new Error(`사용자 추가 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const setPreference = async ( + userId: number, + foodCategoryId: number +) => { + const conn = await pool.getConnection(); + + try { + await conn.query( + `INSERT INTO user_favor_category + (user_id, food_category_id) + VALUES (?, ?)`, + [userId, foodCategoryId] + ); + } catch (err) { + throw new Error(`선호 카테고리 추가 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const getUser = async (userId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + "SELECT * FROM user WHERE id = ?", + [userId] + ); + + return rows[0]; + } catch (err) { + throw new Error(`사용자 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; + +export const getUserPreferencesByUserId = async (userId: number) => { + const conn = await pool.getConnection(); + + try { + const [rows]: any = await conn.query( + `SELECT fc.id, fc.name + FROM user_favor_category ufc + JOIN food_category fc ON ufc.food_category_id = fc.id + WHERE ufc.user_id = ?`, + [userId] + ); + + return rows; + } catch (err) { + throw new Error(`선호 카테고리 조회 중 오류가 발생했습니다: ${err}`); + } finally { + conn.release(); + } +}; \ No newline at end of file diff --git a/src/modules/users/services/user.service.ts b/src/modules/users/services/user.service.ts new file mode 100644 index 0000000..bf2fdae --- /dev/null +++ b/src/modules/users/services/user.service.ts @@ -0,0 +1,46 @@ +import { + addUser, + getUser, + getUserPreferencesByUserId, + setPreference, +} from "../repositories/user.repository.js"; +import { responseFromUser } from "../dtos/user.dto.js"; +import bcrypt from "bcrypt"; + +export const userSignUp = async (data: { + email: string; + password: string; + name: string; + gender: string; + birth: Date; + address: string; + detailAddress: string; + phoneNumber: string; + preferences: number[]; +}) => { + const hashedPassword = await bcrypt.hash(data.password, 10); + + const joinUserId = await addUser({ + email: data.email, + password: hashedPassword, + name: data.name, + gender: data.gender, + birth: data.birth, + address: data.address, + detailAddress: data.detailAddress, + phoneNumber: data.phoneNumber, + }); + + if (joinUserId === null) { + throw new Error("이미 존재하는 이메일입니다."); + } + + for (const preference of data.preferences) { + await setPreference(joinUserId, preference); + } + + const user = await getUser(joinUserId); + const preferences = await getUserPreferencesByUserId(joinUserId); + + return responseFromUser({ user, preferences }); +}; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3d72177 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + /* 프로젝트 구조 설정 */ + "rootDir": "./src", // 소스 코드(.ts)가 모여있는 폴더예요. + "outDir": "./dist", // 컴파일된 결과물(.js)이 저장될 폴더예요. + + /* 언어 및 모듈 설정 (4주차에서 배운 ESM 방식을 유지해요!) */ + "target": "ESNext", + "module": "NodeNext", // 최신 Node.js의 모듈 시스템(ESM)을 사용합니다. + "moduleResolution": "NodeNext", + "lib": ["ESNext"], // 최신 자바스크립트 표준 기능을 사용할 수 있게 해줘요. + + /* 엄격한 검사 옵션 (에러를 미리 잡는 핵심!) */ + "strict": true, + "noUncheckedIndexedAccess": true, + + /* 기타 추천 옵션 */ + "skipLibCheck": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "sourceMap": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] // 빌드 결과물(dist)도 검사에서 제외하는 게 좋아요! +} \ No newline at end of file From 0b157df14c1050cafb13aad36afcda9b6de2f074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=B0=AC=ED=98=81?= Date: Thu, 30 Apr 2026 00:02:03 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:=205=EC=A3=BC=EC=B0=A8=20=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mission/chapter05/README.md | 98 +++++++++++++++++++++++++++++++------ 1 file changed, 83 insertions(+), 15 deletions(-) diff --git a/mission/chapter05/README.md b/mission/chapter05/README.md index cd2a2ec..5b539ad 100644 --- a/mission/chapter05/README.md +++ b/mission/chapter05/README.md @@ -226,35 +226,103 @@ if (alreadyChallenged) { ## 6. Controller → Service → Repository → DB 요청 흐름 -이번 미션에서 API 요청은 아래 흐름으로 처리되었다. +이번 미션에서는 모든 API가 공통적으로 아래 흐름으로 처리되도록 구현했다. ```text -1. 사용자가 Postman으로 API 요청을 보냄 -2. Express Router가 요청 URL에 맞는 Controller 실행 -3. Controller가 Path Variable과 Request Body 확인 -4. DTO가 요청 데이터를 정리 -5. Service가 실제 비즈니스 로직 처리 -6. Repository가 DB에 SQL 쿼리 실행 -7. DB 처리 결과가 Repository로 반환 -8. Service가 응답 데이터를 정리 -9. Controller가 클라이언트에게 JSON 응답 반환 +Client(Postman) +→ Express Router +→ Controller +→ DTO +→ Service +→ Repository +→ DB +→ Repository +→ Service +→ Controller +→ Response +```` + +--- + +### 6-1. 특정 지역에 가게 추가하기 API + +```text +POST /api/v1/regions/1/stores 요청 +→ handleCreateStore Controller 실행 +→ regionId와 request body 확인 +→ bodyToStore DTO로 요청 데이터 정리 +→ createStore Service 호출 +→ findRegionById로 지역 존재 여부 확인 +→ addStore로 stores 테이블에 가게 저장 +→ findStoreById로 저장된 가게 조회 +→ responseFromStore로 응답 데이터 정리 +→ JSON 응답 반환 +``` + +이 API에서는 먼저 `regionId`에 해당하는 지역이 실제로 존재하는지 확인한 뒤, 존재할 경우에만 가게를 추가하도록 처리했다. + +--- + +### 6-2. 가게에 리뷰 추가하기 API + +```text +POST /api/v1/stores/1/reviews 요청 +→ handleCreateReview Controller 실행 +→ storeId와 request body 확인 +→ bodyToReview DTO로 요청 데이터 정리 +→ createReview Service 호출 +→ findStoreById로 가게 존재 여부 확인 +→ rating 값이 1점부터 5점 사이인지 확인 +→ addReview로 reviews 테이블에 리뷰 저장 +→ findReviewById로 저장된 리뷰 조회 +→ responseFromReview로 응답 데이터 정리 +→ JSON 응답 반환 ``` -예를 들어 미션 도전 API는 다음과 같이 동작했다. +이 API에서는 리뷰를 추가하려는 가게가 존재하는지 먼저 검증했다. +또한 평점이 잘못된 값으로 들어오는 것을 막기 위해 `rating` 범위도 함께 확인했다. + +--- + +### 6-3. 가게에 미션 추가하기 API + +```text +POST /api/v1/stores/1/missions 요청 +→ handleCreateMission Controller 실행 +→ storeId와 request body 확인 +→ bodyToMission DTO로 요청 데이터 정리 +→ createMission Service 호출 +→ findStoreById로 가게 존재 여부 확인 +→ rewardPoint가 0 이상인지 확인 +→ addMission으로 missions 테이블에 미션 저장 +→ findMissionById로 저장된 미션 조회 +→ responseFromMission으로 응답 데이터 정리 +→ JSON 응답 반환 +``` + +이 API에서는 미션을 추가하려는 가게가 실제로 존재하는지 확인한 뒤 미션을 저장했다. + +--- + +### 6-4. 미션 도전하기 API ```text POST /api/v1/missions/1/challenge 요청 → handleChallengeMission Controller 실행 → missionId와 userId 확인 +→ bodyToMissionChallenge DTO로 요청 데이터 정리 → challengeMission Service 호출 -→ 사용자 존재 여부 확인 -→ 미션 존재 여부 확인 -→ 이미 도전 중인지 확인 +→ findUserById로 사용자 존재 여부 확인 +→ findMissionById로 미션 존재 여부 확인 +→ findUserMission으로 이미 도전 중인지 확인 → addUserMission으로 user_missions 테이블에 저장 -→ 저장된 user_mission 조회 +→ findUserMissionById로 저장된 도전 미션 조회 +→ responseFromUserMission으로 응답 데이터 정리 → JSON 응답 반환 ``` +- 이 API에서는 도전하려는 미션이 존재하는지 확인했고, 사용자가 이미 같은 미션에 도전 중인지도 검증했다. +이미 도전 중인 경우에는 중복 저장되지 않도록 오류를 반환하게 했다. --- ## 7. 회원가입 API 비밀번호 해싱 추가 From 3c9db8030879f4f93d4797b43342b31d75ad6e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=B0=AC=ED=98=81?= Date: Wed, 6 May 2026 20:40:53 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix:=205=EC=A3=BC=EC=B0=A8=20=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C=20=ED=8C=8C=EC=9D=BC=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2046 ----------------- package.json | 41 - src/db.config.ts | 20 - src/index.ts | 59 - .../controllers/mission.controller.ts | 65 - src/modules/missions/dtos/mission.dto.ts | 50 - .../repositories/mission.repository.ts | 136 -- .../missions/services/mission.service.ts | 69 - .../reviews/controllers/review.controller.ts | 30 - src/modules/reviews/dtos/review.dto.ts | 24 - .../reviews/repositories/review.repository.ts | 58 - .../reviews/services/review.service.ts | 28 - .../stores/controllers/store.controller.ts | 30 - src/modules/stores/dtos/store.dto.ts | 21 - .../stores/repositories/store.repository.ts | 58 - src/modules/stores/services/store.service.ts | 24 - .../users/controllers/user.controller.ts | 23 - src/modules/users/dtos/user.dto.ts | 51 - .../users/repositories/user.repository.ts | 104 - src/modules/users/services/user.service.ts | 46 - tsconfig.json | 25 - 21 files changed, 3008 deletions(-) delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 src/db.config.ts delete mode 100644 src/index.ts delete mode 100644 src/modules/missions/controllers/mission.controller.ts delete mode 100644 src/modules/missions/dtos/mission.dto.ts delete mode 100644 src/modules/missions/repositories/mission.repository.ts delete mode 100644 src/modules/missions/services/mission.service.ts delete mode 100644 src/modules/reviews/controllers/review.controller.ts delete mode 100644 src/modules/reviews/dtos/review.dto.ts delete mode 100644 src/modules/reviews/repositories/review.repository.ts delete mode 100644 src/modules/reviews/services/review.service.ts delete mode 100644 src/modules/stores/controllers/store.controller.ts delete mode 100644 src/modules/stores/dtos/store.dto.ts delete mode 100644 src/modules/stores/repositories/store.repository.ts delete mode 100644 src/modules/stores/services/store.service.ts delete mode 100644 src/modules/users/controllers/user.controller.ts delete mode 100644 src/modules/users/dtos/user.dto.ts delete mode 100644 src/modules/users/repositories/user.repository.ts delete mode 100644 src/modules/users/services/user.service.ts delete mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 6de644a..0000000 --- a/package-lock.json +++ /dev/null @@ -1,2046 +0,0 @@ -{ - "name": "10th_node", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "10th_node", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "bcrypt": "^6.0.0", - "cors": "^2.8.6", - "dotenv": "^17.4.2", - "express": "^5.2.1", - "http-status-codes": "^2.3.0", - "mysql2": "^3.22.3" - }, - "devDependencies": { - "@types/bcrypt": "^6.0.0", - "@types/cors": "^2.8.19", - "@types/dotenv": "^6.1.1", - "@types/express": "^5.0.6", - "@types/node": "^25.6.0", - "nodemon": "^3.1.14", - "tsx": "^4.21.0", - "typescript": "^6.0.3" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", - "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@types/bcrypt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-6.0.0.tgz", - "integrity": "sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.19", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", - "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/dotenv": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz", - "integrity": "sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", - "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "^2" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", - "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.19.0" - } - }, - "node_modules/@types/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*" - } - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aws-ssl-profiles": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", - "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/bcrypt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", - "integrity": "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^8.3.0", - "node-gyp-build": "^4.8.4" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dotenv": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", - "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", - "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "license": "MIT", - "dependencies": { - "is-property": "^1.0.2" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-tsconfig": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", - "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/http-status-codes": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", - "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", - "license": "MIT" - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true, - "license": "ISC" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "license": "MIT" - }, - "node_modules/long": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "license": "Apache-2.0" - }, - "node_modules/lru.min": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", - "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", - "license": "MIT", - "engines": { - "bun": ">=1.0.0", - "deno": ">=1.30.0", - "node": ">=8.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wellwelwel" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mysql2": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.22.3.tgz", - "integrity": "sha512-uWWxvZSRvRhtBdh2CdcuK83YcOfPdmEeEYB069bAmPnV93QApDGVPuvCQOLjlh7tYHEWdgQPrn6kosDxHBVLkA==", - "license": "MIT", - "dependencies": { - "aws-ssl-profiles": "^1.1.2", - "denque": "^2.1.0", - "generate-function": "^2.3.1", - "iconv-lite": "^0.7.2", - "long": "^5.3.2", - "lru.min": "^1.1.4", - "named-placeholders": "^1.1.6", - "sql-escaper": "^1.3.3" - }, - "engines": { - "node": ">= 8.0" - }, - "peerDependencies": { - "@types/node": ">= 8" - } - }, - "node_modules/named-placeholders": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", - "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", - "license": "MIT", - "dependencies": { - "lru.min": "^1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-addon-api": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.7.0.tgz", - "integrity": "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==", - "license": "MIT", - "engines": { - "node": "^18 || ^20 || >= 21" - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/nodemon": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", - "integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^10.2.1", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.1.tgz", - "integrity": "sha512-fvU78fIjZ+SBM9YwCknCvKOUKkLVqtWDVctl0s7xIqfmfb38t2TT4ZU2gHm+Z8xGwgW+QWEU3oQSAzIbo89Ggw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true, - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sql-escaper": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/sql-escaper/-/sql-escaper-1.3.3.tgz", - "integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==", - "license": "MIT", - "engines": { - "bun": ">=1.0.0", - "deno": ">=2.0.0", - "node": ">=12.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "dev": true, - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tsx": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", - "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.27.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true, - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", - "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", - "license": "MIT" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 4178e27..0000000 --- a/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "10th_node", - "version": "1.0.0", - "description": "INHA UMC 10th_Node.js 미션, 키워드 인증 레포지터리입니다!", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "tsx src/index.ts", - "dev": "nodemon --exec tsx src/index.ts" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/inhadissolve/10th_Node.js.git" - }, - "keywords": [], - "author": "", - "license": "ISC", - "type": "module", - "bugs": { - "url": "https://github.com/inhadissolve/10th_Node.js/issues" - }, - "homepage": "https://github.com/inhadissolve/10th_Node.js#readme", - "dependencies": { - "bcrypt": "^6.0.0", - "cors": "^2.8.6", - "dotenv": "^17.4.2", - "express": "^5.2.1", - "http-status-codes": "^2.3.0", - "mysql2": "^3.22.3" - }, - "devDependencies": { - "@types/bcrypt": "^6.0.0", - "@types/cors": "^2.8.19", - "@types/dotenv": "^6.1.1", - "@types/express": "^5.0.6", - "@types/node": "^25.6.0", - "nodemon": "^3.1.14", - "tsx": "^4.21.0", - "typescript": "^6.0.3" - } -} diff --git a/src/db.config.ts b/src/db.config.ts deleted file mode 100644 index 8a6777d..0000000 --- a/src/db.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import mysql from "mysql2/promise"; -import dotenv from "dotenv"; - -dotenv.config(); - -console.log("DB_HOST:", process.env.DB_HOST); -console.log("DB_PORT:", process.env.DB_PORT); -console.log("DB_USER:", process.env.DB_USER); -console.log("DB_NAME:", process.env.DB_NAME); - -export const pool = mysql.createPool({ - host: process.env.DB_HOST || "localhost", - user: process.env.DB_USER || "root", - port: parseInt(process.env.DB_PORT || "3306"), - database: process.env.DB_NAME || "umc_week5", - password: process.env.DB_PASSWORD || "password", - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); \ No newline at end of file diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index cbc5880..0000000 --- a/src/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import dotenv from "dotenv"; -import express, { Express, Request, Response, NextFunction } from "express"; -import cors from "cors"; - -import { handleUserSignUp } from "./modules/users/controllers/user.controller.js"; -import { handleCreateStore } from "./modules/stores/controllers/store.controller.js"; -import { handleCreateReview } from "./modules/reviews/controllers/review.controller.js"; -import { - handleCreateMission, - handleChallengeMission, -} from "./modules/missions/controllers/mission.controller.js"; - -dotenv.config(); - -const app: Express = express(); -const port = process.env.PORT || 3000; - -/** - * 공통 미들웨어 설정 - */ -app.use(cors()); -app.use(express.static("public")); -app.use(express.json()); -app.use(express.urlencoded({ extended: false })); - -/** - * 기본 서버 확인용 API - */ -app.get("/", (req: Request, res: Response) => { - res.send("Hello World! This is TypeScript Server!"); -}); - -app.post("/api/v1/users/signup", handleUserSignUp); - -app.post("/api/v1/regions/:regionId/stores", handleCreateStore); - -app.post("/api/v1/stores/:storeId/reviews", handleCreateReview); - -app.post("/api/v1/stores/:storeId/missions", handleCreateMission); - -app.post("/api/v1/missions/:missionId/challenge", handleChallengeMission); - -/** - * 공통 에러 처리 미들웨어 - */ -app.use((err: Error, req: Request, res: Response, next: NextFunction) => { - console.error("에러 발생:", err.message); - - res.status(400).json({ - error: err.message, - }); -}); - -/** - * 서버 실행 - */ -app.listen(port, () => { - console.log(`[server]: Server is running at http://localhost:${port}`); -}); \ No newline at end of file diff --git a/src/modules/missions/controllers/mission.controller.ts b/src/modules/missions/controllers/mission.controller.ts deleted file mode 100644 index 8b7d2c7..0000000 --- a/src/modules/missions/controllers/mission.controller.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import { StatusCodes } from "http-status-codes"; -import { - bodyToMission, - bodyToMissionChallenge, -} from "../dtos/mission.dto.js"; - -import { - createMission, - challengeMission, -} from "../services/mission.service.js"; - -export const handleCreateMission = async ( - req: Request, - res: Response, - next: NextFunction -) => { - try { - console.log("미션 추가를 요청했습니다."); - console.log("params:", req.params); - console.log("body:", req.body); - - const storeId = Number(req.params.storeId); - - if (Number.isNaN(storeId)) { - throw new Error("storeId는 숫자여야 합니다."); - } - - const mission = await createMission(bodyToMission(req.body, storeId)); - - res.status(StatusCodes.CREATED).json({ - result: mission, - }); - } catch (error) { - next(error); - } -}; - -export const handleChallengeMission = async ( - req: Request, - res: Response, - next: NextFunction -) => { - try { - console.log("미션 도전을 요청했습니다."); - console.log("params:", req.params); - console.log("body:", req.body); - - const missionId = Number(req.params.missionId); - - if (Number.isNaN(missionId)) { - throw new Error("missionId는 숫자여야 합니다."); - } - - const userMission = await challengeMission( - bodyToMissionChallenge(req.body, missionId) - ); - - res.status(StatusCodes.CREATED).json({ - result: userMission, - }); - } catch (error) { - next(error); - } -}; \ No newline at end of file diff --git a/src/modules/missions/dtos/mission.dto.ts b/src/modules/missions/dtos/mission.dto.ts deleted file mode 100644 index b79108d..0000000 --- a/src/modules/missions/dtos/mission.dto.ts +++ /dev/null @@ -1,50 +0,0 @@ -export interface MissionCreateRequest { - title: string; - description: string; - rewardPoint: number; -} - -export const bodyToMission = ( - body: MissionCreateRequest, - storeId: number -) => { - return { - storeId, - title: body.title, - description: body.description, - rewardPoint: body.rewardPoint, - }; -}; - -export const responseFromMission = (mission: any) => { - return { - missionId: mission.id, - storeId: mission.store_id, - title: mission.title, - description: mission.description, - rewardPoint: mission.reward_point, - }; -}; - -export interface MissionChallengeRequest { - userId: number; -} - -export const bodyToMissionChallenge = ( - body: MissionChallengeRequest, - missionId: number -) => { - return { - userId: body.userId, - missionId, - }; -}; - -export const responseFromUserMission = (userMission: any) => { - return { - userMissionId: userMission.id, - userId: userMission.user_id, - missionId: userMission.mission_id, - status: userMission.status, - }; -}; \ No newline at end of file diff --git a/src/modules/missions/repositories/mission.repository.ts b/src/modules/missions/repositories/mission.repository.ts deleted file mode 100644 index 83a9f3f..0000000 --- a/src/modules/missions/repositories/mission.repository.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { pool } from "../../../db.config.js"; - -export const findStoreById = async (storeId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM stores WHERE id = ?", - [storeId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`가게 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const addMission = async (data: { - storeId: number; - title: string; - description: string; - rewardPoint: number; -}) => { - const conn = await pool.getConnection(); - - try { - const [result]: any = await conn.query( - `INSERT INTO missions - (store_id, title, description, reward_point) - VALUES (?, ?, ?, ?)`, - [data.storeId, data.title, data.description, data.rewardPoint] - ); - - return result.insertId; - } catch (err) { - throw new Error(`미션 추가 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const findMissionById = async (missionId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM missions WHERE id = ?", - [missionId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`미션 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const findUserById = async (userId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM user WHERE id = ?", - [userId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`사용자 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const findUserMission = async ( - userId: number, - missionId: number -) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - `SELECT * FROM user_missions - WHERE user_id = ? AND mission_id = ? AND status = 'IN_PROGRESS'`, - [userId, missionId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`도전 중인 미션 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const addUserMission = async (data: { - userId: number; - missionId: number; -}) => { - const conn = await pool.getConnection(); - - try { - const [result]: any = await conn.query( - `INSERT INTO user_missions - (user_id, mission_id, status) - VALUES (?, ?, 'IN_PROGRESS')`, - [data.userId, data.missionId] - ); - - return result.insertId; - } catch (err) { - throw new Error(`미션 도전 추가 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const findUserMissionById = async (userMissionId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM user_missions WHERE id = ?", - [userMissionId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`도전 미션 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; \ No newline at end of file diff --git a/src/modules/missions/services/mission.service.ts b/src/modules/missions/services/mission.service.ts deleted file mode 100644 index 2d96627..0000000 --- a/src/modules/missions/services/mission.service.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { - addMission, - addUserMission, - findMissionById, - findStoreById, - findUserById, - findUserMission, - findUserMissionById, -} from "../repositories/mission.repository.js"; -import { - responseFromMission, - responseFromUserMission, -} from "../dtos/mission.dto.js"; - -export const createMission = async (data: { - storeId: number; - title: string; - description: string; - rewardPoint: number; -}) => { - const store = await findStoreById(data.storeId); - - if (!store) { - throw new Error("존재하지 않는 가게입니다."); - } - - if (data.rewardPoint < 0) { - throw new Error("보상 포인트는 0 이상이어야 합니다."); - } - - const missionId = await addMission(data); - - const mission = await findMissionById(missionId); - - return responseFromMission(mission); -}; - -export const challengeMission = async (data: { - userId: number; - missionId: number; -}) => { - const user = await findUserById(data.userId); - - if (!user) { - throw new Error("존재하지 않는 사용자입니다."); - } - - const mission = await findMissionById(data.missionId); - - if (!mission) { - throw new Error("존재하지 않는 미션입니다."); - } - - const alreadyChallenged = await findUserMission( - data.userId, - data.missionId - ); - - if (alreadyChallenged) { - throw new Error("이미 도전 중인 미션입니다."); - } - - const userMissionId = await addUserMission(data); - - const userMission = await findUserMissionById(userMissionId); - - return responseFromUserMission(userMission); -}; - diff --git a/src/modules/reviews/controllers/review.controller.ts b/src/modules/reviews/controllers/review.controller.ts deleted file mode 100644 index 064c6b9..0000000 --- a/src/modules/reviews/controllers/review.controller.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import { StatusCodes } from "http-status-codes"; -import { bodyToReview } from "../dtos/review.dto.js"; -import { createReview } from "../services/review.service.js"; - -export const handleCreateReview = async ( - req: Request, - res: Response, - next: NextFunction -) => { - try { - console.log("리뷰 추가를 요청했습니다."); - console.log("params:", req.params); - console.log("body:", req.body); - - const storeId = Number(req.params.storeId); - - if (Number.isNaN(storeId)) { - throw new Error("storeId는 숫자여야 합니다."); - } - - const review = await createReview(bodyToReview(req.body, storeId)); - - res.status(StatusCodes.CREATED).json({ - result: review, - }); - } catch (error) { - next(error); - } -}; \ No newline at end of file diff --git a/src/modules/reviews/dtos/review.dto.ts b/src/modules/reviews/dtos/review.dto.ts deleted file mode 100644 index fb7dcdb..0000000 --- a/src/modules/reviews/dtos/review.dto.ts +++ /dev/null @@ -1,24 +0,0 @@ -export interface ReviewCreateRequest { - rating: number; - content: string; -} - -export const bodyToReview = ( - body: ReviewCreateRequest, - storeId: number -) => { - return { - storeId, - rating: body.rating, - content: body.content, - }; -}; - -export const responseFromReview = (review: any) => { - return { - reviewId: review.id, - storeId: review.store_id, - rating: review.rating, - content: review.content, - }; -}; \ No newline at end of file diff --git a/src/modules/reviews/repositories/review.repository.ts b/src/modules/reviews/repositories/review.repository.ts deleted file mode 100644 index 2549fa0..0000000 --- a/src/modules/reviews/repositories/review.repository.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { pool } from "../../../db.config.js"; - -export const findStoreById = async (storeId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM stores WHERE id = ?", - [storeId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`가게 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const addReview = async (data: { - storeId: number; - rating: number; - content: string; -}) => { - const conn = await pool.getConnection(); - - try { - const [result]: any = await conn.query( - `INSERT INTO reviews - (store_id, rating, content) - VALUES (?, ?, ?)`, - [data.storeId, data.rating, data.content] - ); - - return result.insertId; - } catch (err) { - throw new Error(`리뷰 추가 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const findReviewById = async (reviewId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM reviews WHERE id = ?", - [reviewId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`리뷰 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; \ No newline at end of file diff --git a/src/modules/reviews/services/review.service.ts b/src/modules/reviews/services/review.service.ts deleted file mode 100644 index bf39ca4..0000000 --- a/src/modules/reviews/services/review.service.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - addReview, - findReviewById, - findStoreById, -} from "../repositories/review.repository.js"; -import { responseFromReview } from "../dtos/review.dto.js"; - -export const createReview = async (data: { - storeId: number; - rating: number; - content: string; -}) => { - const store = await findStoreById(data.storeId); - - if (!store) { - throw new Error("존재하지 않는 가게입니다."); - } - - if (data.rating < 1 || data.rating > 5) { - throw new Error("평점은 1점부터 5점 사이여야 합니다."); - } - - const reviewId = await addReview(data); - - const review = await findReviewById(reviewId); - - return responseFromReview(review); -}; \ No newline at end of file diff --git a/src/modules/stores/controllers/store.controller.ts b/src/modules/stores/controllers/store.controller.ts deleted file mode 100644 index 75e93e4..0000000 --- a/src/modules/stores/controllers/store.controller.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import { StatusCodes } from "http-status-codes"; -import { bodyToStore } from "../dtos/store.dto.js"; -import { createStore } from "../services/store.service.js"; - -export const handleCreateStore = async ( - req: Request, - res: Response, - next: NextFunction -) => { - try { - console.log("가게 추가를 요청했습니다."); - console.log("params:", req.params); - console.log("body:", req.body); - - const regionId = Number(req.params.regionId); - - if (Number.isNaN(regionId)) { - throw new Error("regionId는 숫자여야 합니다."); - } - - const store = await createStore(bodyToStore(req.body, regionId)); - - res.status(StatusCodes.CREATED).json({ - result: store, - }); - } catch (error) { - next(error); - } -}; \ No newline at end of file diff --git a/src/modules/stores/dtos/store.dto.ts b/src/modules/stores/dtos/store.dto.ts deleted file mode 100644 index 236cc3c..0000000 --- a/src/modules/stores/dtos/store.dto.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface StoreCreateRequest { - name: string; - address: string; -} - -export const bodyToStore = (body: StoreCreateRequest, regionId: number) => { - return { - regionId, - name: body.name, - address: body.address, - }; -}; - -export const responseFromStore = (store: any) => { - return { - storeId: store.id, - regionId: store.region_id, - name: store.name, - address: store.address, - }; -}; \ No newline at end of file diff --git a/src/modules/stores/repositories/store.repository.ts b/src/modules/stores/repositories/store.repository.ts deleted file mode 100644 index fe73f91..0000000 --- a/src/modules/stores/repositories/store.repository.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { pool } from "../../../db.config.js"; - -export const findRegionById = async (regionId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM regions WHERE id = ?", - [regionId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`지역 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const addStore = async (data: { - regionId: number; - name: string; - address: string; -}) => { - const conn = await pool.getConnection(); - - try { - const [result]: any = await conn.query( - `INSERT INTO stores - (region_id, name, address) - VALUES (?, ?, ?)`, - [data.regionId, data.name, data.address] - ); - - return result.insertId; - } catch (err) { - throw new Error(`가게 추가 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const findStoreById = async (storeId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM stores WHERE id = ?", - [storeId] - ); - - return rows[0] || null; - } catch (err) { - throw new Error(`가게 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; \ No newline at end of file diff --git a/src/modules/stores/services/store.service.ts b/src/modules/stores/services/store.service.ts deleted file mode 100644 index 7087e8d..0000000 --- a/src/modules/stores/services/store.service.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - addStore, - findRegionById, - findStoreById, -} from "../repositories/store.repository.js"; -import { responseFromStore } from "../dtos/store.dto.js"; - -export const createStore = async (data: { - regionId: number; - name: string; - address: string; -}) => { - const region = await findRegionById(data.regionId); - - if (!region) { - throw new Error("존재하지 않는 지역입니다."); - } - - const storeId = await addStore(data); - - const store = await findStoreById(storeId); - - return responseFromStore(store); -}; \ No newline at end of file diff --git a/src/modules/users/controllers/user.controller.ts b/src/modules/users/controllers/user.controller.ts deleted file mode 100644 index 96872be..0000000 --- a/src/modules/users/controllers/user.controller.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Request, Response, NextFunction } from "express"; -import { StatusCodes } from "http-status-codes"; -import { bodyToUser } from "../dtos/user.dto.js"; -import { userSignUp } from "../services/user.service.js"; - -export const handleUserSignUp = async ( - req: Request, - res: Response, - next: NextFunction -) => { - try { - console.log("회원가입을 요청했습니다!"); - console.log("body:", req.body); - - const user = await userSignUp(bodyToUser(req.body)); - - res.status(StatusCodes.OK).json({ - result: user, - }); - } catch (error) { - next(error); - } -}; \ No newline at end of file diff --git a/src/modules/users/dtos/user.dto.ts b/src/modules/users/dtos/user.dto.ts deleted file mode 100644 index 4c09149..0000000 --- a/src/modules/users/dtos/user.dto.ts +++ /dev/null @@ -1,51 +0,0 @@ -export interface UserSignUpRequest { - email: string; - name: string; - gender: string; - birth: string; - address?: string; - detailAddress?: string; - phoneNumber: string; - preferences: number[]; -} - -export const bodyToUser = (body: UserSignUpRequest) => { - return { - email: body.email, - password: body.password, - name: body.name, - gender: body.gender, - birth: new Date(body.birth), - address: body.address || "", - detailAddress: body.detailAddress || "", - phoneNumber: body.phoneNumber, - preferences: body.preferences, - }; -}; - -export const responseFromUser = ({ - user, - preferences, -}: { - user: any; - preferences: any[]; -}) => { - return { - email: user.email, - name: user.name, - preferCategory: preferences.map((preference) => preference.name), - }; -}; - -export interface UserSignUpRequest { - email: string; - password: string; - name: string; - gender: string; - birth: string; - address?: string; - detailAddress?: string; - phoneNumber: string; - preferences: number[]; -} - diff --git a/src/modules/users/repositories/user.repository.ts b/src/modules/users/repositories/user.repository.ts deleted file mode 100644 index 77ee210..0000000 --- a/src/modules/users/repositories/user.repository.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { pool } from "../../../db.config.js"; - -export const addUser = async (data: { - email: string; - password: string; - name: string; - gender: string; - birth: Date; - address: string; - detailAddress: string; - phoneNumber: string; -}) => { - const conn = await pool.getConnection(); - - try { - const [confirm]: any = await conn.query( - "SELECT * FROM user WHERE email = ?", - [data.email] - ); - - if (Array.isArray(confirm) && confirm.length > 0) { - return null; - } - - const [result]: any = await conn.query( - `INSERT INTO user - (email, password, name, gender, birth, address, detail_address, phone_number) - VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, - [ - data.email, - data.password, - data.name, - data.gender, - data.birth, - data.address, - data.detailAddress, - data.phoneNumber, - ] -); - - return result.insertId; - } catch (err) { - throw new Error(`사용자 추가 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const setPreference = async ( - userId: number, - foodCategoryId: number -) => { - const conn = await pool.getConnection(); - - try { - await conn.query( - `INSERT INTO user_favor_category - (user_id, food_category_id) - VALUES (?, ?)`, - [userId, foodCategoryId] - ); - } catch (err) { - throw new Error(`선호 카테고리 추가 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const getUser = async (userId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - "SELECT * FROM user WHERE id = ?", - [userId] - ); - - return rows[0]; - } catch (err) { - throw new Error(`사용자 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; - -export const getUserPreferencesByUserId = async (userId: number) => { - const conn = await pool.getConnection(); - - try { - const [rows]: any = await conn.query( - `SELECT fc.id, fc.name - FROM user_favor_category ufc - JOIN food_category fc ON ufc.food_category_id = fc.id - WHERE ufc.user_id = ?`, - [userId] - ); - - return rows; - } catch (err) { - throw new Error(`선호 카테고리 조회 중 오류가 발생했습니다: ${err}`); - } finally { - conn.release(); - } -}; \ No newline at end of file diff --git a/src/modules/users/services/user.service.ts b/src/modules/users/services/user.service.ts deleted file mode 100644 index bf2fdae..0000000 --- a/src/modules/users/services/user.service.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - addUser, - getUser, - getUserPreferencesByUserId, - setPreference, -} from "../repositories/user.repository.js"; -import { responseFromUser } from "../dtos/user.dto.js"; -import bcrypt from "bcrypt"; - -export const userSignUp = async (data: { - email: string; - password: string; - name: string; - gender: string; - birth: Date; - address: string; - detailAddress: string; - phoneNumber: string; - preferences: number[]; -}) => { - const hashedPassword = await bcrypt.hash(data.password, 10); - - const joinUserId = await addUser({ - email: data.email, - password: hashedPassword, - name: data.name, - gender: data.gender, - birth: data.birth, - address: data.address, - detailAddress: data.detailAddress, - phoneNumber: data.phoneNumber, - }); - - if (joinUserId === null) { - throw new Error("이미 존재하는 이메일입니다."); - } - - for (const preference of data.preferences) { - await setPreference(joinUserId, preference); - } - - const user = await getUser(joinUserId); - const preferences = await getUserPreferencesByUserId(joinUserId); - - return responseFromUser({ user, preferences }); -}; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 3d72177..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - /* 프로젝트 구조 설정 */ - "rootDir": "./src", // 소스 코드(.ts)가 모여있는 폴더예요. - "outDir": "./dist", // 컴파일된 결과물(.js)이 저장될 폴더예요. - - /* 언어 및 모듈 설정 (4주차에서 배운 ESM 방식을 유지해요!) */ - "target": "ESNext", - "module": "NodeNext", // 최신 Node.js의 모듈 시스템(ESM)을 사용합니다. - "moduleResolution": "NodeNext", - "lib": ["ESNext"], // 최신 자바스크립트 표준 기능을 사용할 수 있게 해줘요. - - /* 엄격한 검사 옵션 (에러를 미리 잡는 핵심!) */ - "strict": true, - "noUncheckedIndexedAccess": true, - - /* 기타 추천 옵션 */ - "skipLibCheck": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "sourceMap": true - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] // 빌드 결과물(dist)도 검사에서 제외하는 게 좋아요! -} \ No newline at end of file

9-!s8#)@WKUkF0 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 literal 0 HcmV?d00001 diff --git a/mission/chapter05/images/mission-1-4-db.png b/mission/chapter05/images/mission-1-4-db.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9bfc9d6961c29761916350e6ba0a8b40685216 GIT binary patch literal 10557 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 literal 0 HcmV?d00001 diff --git a/mission/chapter05/images/mission-1-4-error.png b/mission/chapter05/images/mission-1-4-error.png new file mode 100644 index 0000000000000000000000000000000000000000..ee66fe40aaed623d2f1140ade168a05e6a87c24b GIT binary patch literal 17487 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