From fe74b2213d5da553be8cbb97231281a4f2e1a532 Mon Sep 17 00:00:00 2001 From: Muhammad Zhafran Ilham Date: Sun, 7 Jun 2026 20:17:49 +0700 Subject: [PATCH] refactor: rewrite ke codebase lama --- .env.example | 26 +- .github/workflows/deploy.yml | 83 + .../dev-deploy_internify-backend.yml | 72 + .gitignore | 196 +- .vercelignore | 26 + README.md | 1823 +++++++- docs/internify-backend.md | 220 + oldCode/controllers/admin.controller.js | 45 + oldCode/controllers/auth.controller.js | 70 + .../controllers/hasilResearch.controller.js | 178 + .../controllers/lamaranMagang.controller.js | 361 ++ .../controllers/lowonganMagang.controller.js | 261 ++ oldCode/controllers/mahasiswa.controller.js | 21 + oldCode/controllers/partnership.controller.js | 159 + oldCode/models/admin.js | 36 + oldCode/models/hasilResearch.js | 28 + oldCode/models/lamaranMagang.js | 123 + oldCode/models/lowonganMagang.js | 55 + oldCode/models/mahasiswa.js | 45 + oldCode/models/partnership.js | 28 + package-lock.json | 4123 ++++++++--------- package.json | 62 +- prisma.config.ts | 13 - .../migration.sql | 173 +- .../migration.sql | 16 + .../migration.sql | 5 + .../migration.sql | 69 - prisma/migrations/migration_lock.toml | 0 prisma/prisma.config.js | 9 + prisma/schema.prisma | 303 +- prisma/seed.ts | 48 - prisma/seed_dummy.ts | 249 - src/app.ts | 69 - src/docs/ERD.png | Bin 0 -> 422397 bytes src/docs/internify_db.sql | 111 + src/docs/swagger.js | 180 + src/docs/swagger.ts | 211 - src/helpers/db/db_connection.js | 7 + src/helpers/db/prisma.js | 24 + src/helpers/error/bad_request_error.js | 9 + src/helpers/error/common_error.js | 7 + src/helpers/error/conflict_error.js | 9 + src/helpers/error/expectation_failed_error.js | 9 + src/helpers/error/forbidden_error.js | 9 + src/helpers/error/gateway_timeout_error.js | 9 + src/helpers/error/index.js | 23 + src/helpers/error/internal_server_error.js | 9 + src/helpers/error/not_found_error.js | 9 + .../error/service_unavailable_error.js | 9 + src/helpers/error/unauthorized_error.js | 9 + src/helpers/error/validation_error.js | 8 + src/helpers/http-status/status_code.js | 21 + src/helpers/infra/global_config.js | 30 + src/helpers/utils/fileHelper.js | 53 + src/helpers/utils/imageUpload.helper.js | 57 + src/helpers/utils/mail.js | 20 + src/helpers/utils/validator.js | 25 + src/helpers/utils/wrapper.js | 95 + src/index.js | 78 + src/index.ts | 31 - src/lib/prisma.ts | 5 - src/middleware/auth.ts | 67 - src/middleware/errorHandler.ts | 27 - src/middleware/isAdmin.js | 11 + src/middleware/multer.js | 124 + src/middleware/recaptcha.js | 44 + src/middleware/upload.ts | 46 - src/middleware/verifyJWT.js | 72 + .../admin/controllers/admin.controller.js | 114 + src/modules/admin/index.js | 9 + src/modules/admin/models/admin.model.js | 75 + .../admin/repositories/admin.repository.js | 40 + src/modules/admin/services/admin.service.js | 114 + .../auth/controllers/auth.controller.js | 72 + src/modules/auth/index.js | 7 + src/modules/auth/models/auth.model.js | 74 + src/modules/auth/services/auth.service.js | 72 + .../batch/controllers/batch.controller.js | 130 + src/modules/batch/index.js | 9 + src/modules/batch/models/batch.model.js | 30 + .../batch/repositories/batch.repository.js | 85 + src/modules/batch/services/batch.service.js | 119 + .../faq/controllers/faq.controllers.js | 173 + src/modules/faq/index.js | 5 + src/modules/faq/models/faq.models.js | 26 + .../faq/repositories/faq.repositories.js | 38 + src/modules/faq/services/faq.services.js | 67 + .../controllers/feedback.controller.js | 138 + src/modules/feedback/index.js | 5 + src/modules/feedback/models/feedback.model.js | 108 + .../repositories/feedback.repository.js | 60 + .../feedback/services/feedback.service.js | 120 + .../controllers/hasilResearch.controller.js | 126 + src/modules/hasilResearch/index.js | 9 + .../models/hasilResearch.model.js | 52 + .../repositories/hasilResearch.repository.js | 34 + .../services/hasilResearch.service.js | 121 + .../controllers/lamaranMagang.controller.js | 312 ++ .../lamaranMagang/helpers/cleanUpFiles.js | 14 + .../lamaranMagang/helpers/email.helper.js | 102 + src/modules/lamaranMagang/index.js | 5 + .../models/lamaranMagang.model.js | 206 + .../repositories/lamaranMagang.repository.js | 292 ++ .../services/lamaranMagang.service.js | 311 ++ .../controllers/lowonganMagang.controller.js | 157 + .../helpers/fileUpload.helper.js | 21 + .../lowonganMagang/helpers/status.helper.js | 26 + src/modules/lowonganMagang/index.js | 11 + .../models/lowonganMagang.model.js | 128 + .../repositories/lowonganMagang.repository.js | 78 + .../services/lowonganMagang.service.js | 191 + .../controllers/mahasiswa.controller.js | 137 + src/modules/mahasiswa/index.js | 9 + .../mahasiswa/models/mahasiswa.model.js | 159 + .../repositories/mahasiswa.repository.js | 65 + .../mahasiswa/services/mahasiswa.service.js | 119 + .../controllers/partnership.controller.js | 128 + src/modules/partnership/index.js | 9 + .../partnership/models/partnership.model.js | 30 + .../repositories/partnership.repository.js | 34 + .../services/partnership.service.js | 121 + src/routes/admin.routes.js | 91 + src/routes/auth.routes.js | 95 + src/routes/auth.ts | 432 -- src/routes/batch.routes.js | 336 ++ src/routes/faq.routes.js | 254 + src/routes/faq.ts | 352 -- src/routes/feedback.routes.js | 254 + src/routes/feedback.ts | 460 -- src/routes/hasilResearch.routes.js | 286 ++ src/routes/index.ts | 151 - src/routes/lamaran.ts | 622 --- src/routes/lamaranMagang.routes.js | 686 +++ src/routes/lowongan.ts | 584 --- src/routes/lowonganMagang.routes.js | 351 ++ src/routes/mahasiswa.routes.js | 77 + src/routes/partnership.routes.js | 249 + src/routes/partnership.ts | 401 -- src/routes/research.ts | 404 -- tsconfig.json | 32 - uploads/docs/.gitkeep | 1 - uploads/docs/cv-1780226578695-76608645.pdf | 1 - .../portofolio-1780226578696-235536074.pdf | 1 - uploads/images/.gitkeep | 1 - .../images/image-1780226578634-893133582.png | 1 - vercel.json | 22 + 146 files changed, 14608 insertions(+), 6686 deletions(-) mode change 100644 => 100755 .env.example create mode 100755 .github/workflows/deploy.yml create mode 100755 .github/workflows/dev-deploy_internify-backend.yml mode change 100644 => 100755 .gitignore create mode 100755 .vercelignore mode change 100644 => 100755 README.md create mode 100755 docs/internify-backend.md create mode 100755 oldCode/controllers/admin.controller.js create mode 100755 oldCode/controllers/auth.controller.js create mode 100755 oldCode/controllers/hasilResearch.controller.js create mode 100755 oldCode/controllers/lamaranMagang.controller.js create mode 100755 oldCode/controllers/lowonganMagang.controller.js create mode 100755 oldCode/controllers/mahasiswa.controller.js create mode 100755 oldCode/controllers/partnership.controller.js create mode 100755 oldCode/models/admin.js create mode 100755 oldCode/models/hasilResearch.js create mode 100755 oldCode/models/lamaranMagang.js create mode 100755 oldCode/models/lowonganMagang.js create mode 100755 oldCode/models/mahasiswa.js create mode 100755 oldCode/models/partnership.js mode change 100644 => 100755 package-lock.json mode change 100644 => 100755 package.json delete mode 100644 prisma.config.ts rename prisma/migrations/{20260523212558_init => 20251116160821_init}/migration.sql (51%) mode change 100644 => 100755 create mode 100755 prisma/migrations/20251116170005_add_batch_index_to_lowongan/migration.sql create mode 100755 prisma/migrations/20260112094610_add_relation_batch_and_lamaran/migration.sql delete mode 100644 prisma/migrations/20260531095731_import_remaining_schemas/migration.sql mode change 100644 => 100755 prisma/migrations/migration_lock.toml create mode 100755 prisma/prisma.config.js mode change 100644 => 100755 prisma/schema.prisma delete mode 100644 prisma/seed.ts delete mode 100644 prisma/seed_dummy.ts delete mode 100644 src/app.ts create mode 100755 src/docs/ERD.png create mode 100755 src/docs/internify_db.sql create mode 100755 src/docs/swagger.js delete mode 100644 src/docs/swagger.ts create mode 100755 src/helpers/db/db_connection.js create mode 100755 src/helpers/db/prisma.js create mode 100755 src/helpers/error/bad_request_error.js create mode 100755 src/helpers/error/common_error.js create mode 100755 src/helpers/error/conflict_error.js create mode 100755 src/helpers/error/expectation_failed_error.js create mode 100755 src/helpers/error/forbidden_error.js create mode 100755 src/helpers/error/gateway_timeout_error.js create mode 100755 src/helpers/error/index.js create mode 100755 src/helpers/error/internal_server_error.js create mode 100755 src/helpers/error/not_found_error.js create mode 100755 src/helpers/error/service_unavailable_error.js create mode 100755 src/helpers/error/unauthorized_error.js create mode 100755 src/helpers/error/validation_error.js create mode 100755 src/helpers/http-status/status_code.js create mode 100755 src/helpers/infra/global_config.js create mode 100755 src/helpers/utils/fileHelper.js create mode 100755 src/helpers/utils/imageUpload.helper.js create mode 100755 src/helpers/utils/mail.js create mode 100755 src/helpers/utils/validator.js create mode 100755 src/helpers/utils/wrapper.js create mode 100755 src/index.js delete mode 100644 src/index.ts delete mode 100644 src/lib/prisma.ts delete mode 100644 src/middleware/auth.ts delete mode 100644 src/middleware/errorHandler.ts create mode 100755 src/middleware/isAdmin.js create mode 100755 src/middleware/multer.js create mode 100755 src/middleware/recaptcha.js delete mode 100644 src/middleware/upload.ts create mode 100755 src/middleware/verifyJWT.js create mode 100755 src/modules/admin/controllers/admin.controller.js create mode 100755 src/modules/admin/index.js create mode 100755 src/modules/admin/models/admin.model.js create mode 100755 src/modules/admin/repositories/admin.repository.js create mode 100755 src/modules/admin/services/admin.service.js create mode 100755 src/modules/auth/controllers/auth.controller.js create mode 100755 src/modules/auth/index.js create mode 100755 src/modules/auth/models/auth.model.js create mode 100755 src/modules/auth/services/auth.service.js create mode 100755 src/modules/batch/controllers/batch.controller.js create mode 100755 src/modules/batch/index.js create mode 100755 src/modules/batch/models/batch.model.js create mode 100755 src/modules/batch/repositories/batch.repository.js create mode 100755 src/modules/batch/services/batch.service.js create mode 100755 src/modules/faq/controllers/faq.controllers.js create mode 100755 src/modules/faq/index.js create mode 100755 src/modules/faq/models/faq.models.js create mode 100755 src/modules/faq/repositories/faq.repositories.js create mode 100755 src/modules/faq/services/faq.services.js create mode 100755 src/modules/feedback/controllers/feedback.controller.js create mode 100755 src/modules/feedback/index.js create mode 100755 src/modules/feedback/models/feedback.model.js create mode 100755 src/modules/feedback/repositories/feedback.repository.js create mode 100755 src/modules/feedback/services/feedback.service.js create mode 100755 src/modules/hasilResearch/controllers/hasilResearch.controller.js create mode 100755 src/modules/hasilResearch/index.js create mode 100755 src/modules/hasilResearch/models/hasilResearch.model.js create mode 100755 src/modules/hasilResearch/repositories/hasilResearch.repository.js create mode 100755 src/modules/hasilResearch/services/hasilResearch.service.js create mode 100755 src/modules/lamaranMagang/controllers/lamaranMagang.controller.js create mode 100755 src/modules/lamaranMagang/helpers/cleanUpFiles.js create mode 100755 src/modules/lamaranMagang/helpers/email.helper.js create mode 100755 src/modules/lamaranMagang/index.js create mode 100755 src/modules/lamaranMagang/models/lamaranMagang.model.js create mode 100755 src/modules/lamaranMagang/repositories/lamaranMagang.repository.js create mode 100755 src/modules/lamaranMagang/services/lamaranMagang.service.js create mode 100755 src/modules/lowonganMagang/controllers/lowonganMagang.controller.js create mode 100755 src/modules/lowonganMagang/helpers/fileUpload.helper.js create mode 100755 src/modules/lowonganMagang/helpers/status.helper.js create mode 100755 src/modules/lowonganMagang/index.js create mode 100755 src/modules/lowonganMagang/models/lowonganMagang.model.js create mode 100755 src/modules/lowonganMagang/repositories/lowonganMagang.repository.js create mode 100755 src/modules/lowonganMagang/services/lowonganMagang.service.js create mode 100755 src/modules/mahasiswa/controllers/mahasiswa.controller.js create mode 100755 src/modules/mahasiswa/index.js create mode 100755 src/modules/mahasiswa/models/mahasiswa.model.js create mode 100755 src/modules/mahasiswa/repositories/mahasiswa.repository.js create mode 100755 src/modules/mahasiswa/services/mahasiswa.service.js create mode 100755 src/modules/partnership/controllers/partnership.controller.js create mode 100755 src/modules/partnership/index.js create mode 100755 src/modules/partnership/models/partnership.model.js create mode 100755 src/modules/partnership/repositories/partnership.repository.js create mode 100755 src/modules/partnership/services/partnership.service.js create mode 100755 src/routes/admin.routes.js create mode 100755 src/routes/auth.routes.js delete mode 100644 src/routes/auth.ts create mode 100755 src/routes/batch.routes.js create mode 100755 src/routes/faq.routes.js delete mode 100644 src/routes/faq.ts create mode 100755 src/routes/feedback.routes.js delete mode 100644 src/routes/feedback.ts create mode 100755 src/routes/hasilResearch.routes.js delete mode 100644 src/routes/index.ts delete mode 100644 src/routes/lamaran.ts create mode 100755 src/routes/lamaranMagang.routes.js delete mode 100644 src/routes/lowongan.ts create mode 100755 src/routes/lowonganMagang.routes.js create mode 100755 src/routes/mahasiswa.routes.js create mode 100755 src/routes/partnership.routes.js delete mode 100644 src/routes/partnership.ts delete mode 100644 src/routes/research.ts delete mode 100644 tsconfig.json delete mode 100644 uploads/docs/.gitkeep delete mode 100644 uploads/docs/cv-1780226578695-76608645.pdf delete mode 100644 uploads/docs/portofolio-1780226578696-235536074.pdf delete mode 100644 uploads/images/.gitkeep delete mode 100644 uploads/images/image-1780226578634-893133582.png create mode 100755 vercel.json diff --git a/.env.example b/.env.example old mode 100644 new mode 100755 index c5130b8..4e8d86e --- a/.env.example +++ b/.env.example @@ -1,13 +1,19 @@ -# Server Configuration -PORT=5000 -NODE_ENV=development +PORT=********** +NODE_ENV=production -# Database -DATABASE_URL="mysql://db_username:db_pass@db_host:3306/internify_lms_db" +DATABASE_URL="mysql://username:password@host:3306/internify_db" -# Authentication Config -JWT_SECRET="your_jwt_secret_key_here" -JWT_EXPIRES_IN="7d" +// RSA 256 KEY PAIR FOR JWT SIGNING AND VERIFICATION (bisa digenerate dengan openssl) +JWT_PRIVATE_KEY=-----BEGIN RSA PRIVATE KEY-----\n{token}\n-----END RSA PRIVATE KEY----- +JWT_PUBLIC_KEY=-----BEGIN PUBLIC KEY-----\n{token}\n-----END PUBLIC KEY----- -# Swagger -SWAGGER_ENABLE=true \ No newline at end of file + +// UNTUK RECAPTCHA, bisa didapatkan di https://www.google.com/recaptcha/admin/create +RECAPTCHA_SECRET_KEY=********** +RECAPTCHA_SITE_KEY=********** + +SWAGGER_ENABLED=false + +// UNTUK EMAIL SERVICE +AUTH_EMAIL=********** +AUTH_PASSWORD=********** diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100755 index 0000000..a39ad33 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,83 @@ +# name: Deploy to Vercel + +# on: +# push: +# branches: +# - main +# - refactor +# pull_request: +# branches: +# - main +# - refactor + +# env: +# VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} +# VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + +# jobs: +# Deploy-Production: +# runs-on: ubuntu-latest +# if: github.ref == 'refs/heads/main' +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 + +# - name: Setup Node.js +# uses: actions/setup-node@v3 +# with: +# node-version: "18" +# cache: "npm" + +# - name: Install dependencies +# run: npm ci + +# - name: Generate Prisma Client +# run: npx prisma generate + +# - name: Run Database Migrations +# run: npx prisma migrate deploy +# env: +# DATABASE_URL: ${{ secrets.DATABASE_URL }} + +# - name: Install Vercel CLI +# run: npm install --global vercel@latest + +# - name: Pull Vercel Environment Information +# run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} + +# - name: Build Project Artifacts +# run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} + +# - name: Deploy Project Artifacts to Vercel +# run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} + +# Deploy-Preview: +# runs-on: ubuntu-latest +# if: github.ref != 'refs/heads/main' +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 + +# - name: Setup Node.js +# uses: actions/setup-node@v3 +# with: +# node-version: "18" +# cache: "npm" + +# - name: Install dependencies +# run: npm ci + +# - name: Generate Prisma Client +# run: npx prisma generate + +# - name: Install Vercel CLI +# run: npm install --global vercel@latest + +# - name: Pull Vercel Environment Information +# run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} + +# - name: Build Project Artifacts +# run: vercel build --token=${{ secrets.VERCEL_TOKEN }} + +# - name: Deploy Project Artifacts to Vercel +# run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/dev-deploy_internify-backend.yml b/.github/workflows/dev-deploy_internify-backend.yml new file mode 100755 index 0000000..b523a4e --- /dev/null +++ b/.github/workflows/dev-deploy_internify-backend.yml @@ -0,0 +1,72 @@ +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions + +# name: Build and deploy Node.js app to Azure Web App - internify-backend + +# on: +# push: +# branches: +# - Dev-Deploy +# workflow_dispatch: + +# jobs: +# build: +# runs-on: ubuntu-latest +# permissions: +# contents: read #This is required for actions/checkout + +# steps: +# - uses: actions/checkout@v4 + +# - name: Set up Node.js version +# uses: actions/setup-node@v3 +# with: +# node-version: '22.x' + +# - name: npm install, build, and test +# run: | +# npm install +# npm run build --if-present + +# - name: Zip artifact for deployment +# run: zip release.zip ./* -r + +# - name: Upload artifact for deployment job +# uses: actions/upload-artifact@v4 +# with: +# name: node-app +# path: release.zip + +# deploy: +# runs-on: ubuntu-latest +# needs: build +# environment: +# name: 'Production' +# url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} +# permissions: +# id-token: write #This is required for requesting the JWT +# contents: read #This is required for actions/checkout + +# steps: +# - name: Download artifact from build job +# uses: actions/download-artifact@v4 +# with: +# name: node-app + +# - name: Unzip artifact for deployment +# run: unzip release.zip + +# - name: Login to Azure +# uses: azure/login@v2 +# with: +# client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_1933F867B08648A1B3AC4897BD38462C }} +# tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_91C2FA1078FA401F9914699B69CE0946 }} +# subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_94677CCA0BF6460A8ECB8F7259AA880E }} + +# - name: 'Deploy to Azure Web App' +# id: deploy-to-webapp +# uses: azure/webapps-deploy@v3 +# with: +# app-name: 'internify-backend' +# slot-name: 'Production' +# package: . diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 1bf3c8a..677bd26 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,153 @@ -# Dependencies -node_modules/ - -# Production Build Output -dist/ - -# Uploads -uploads/docs/* -!uploads/docs/.gitkeep -uploads/images/* -!uploads/images/.gitkeep - -# Local Environment variables -.env -.env.local -.env.development.local -.env.test.local -.env.production.local - -# Logs -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* -*.log - -# Editor & IDE settings -.vscode/ -.idea/ -.zed/ -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# OS metadata -.DS_Store -Thumbs.db - -# Prisma -/src/generated/prisma \ No newline at end of file +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Security Keys +private.pem +public.pem + +# OS And Editor files +.DS_Store +.vscode/ +.idea/ +.zed/ + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# docs directory +src/docs/note.txt +template_db.sql + +# upload files +uploads/ +/src/generated/prisma + +# Vercel +.vercel +.vercel/*.json +.env*.local diff --git a/.vercelignore b/.vercelignore new file mode 100755 index 0000000..fd82c49 --- /dev/null +++ b/.vercelignore @@ -0,0 +1,26 @@ +node_modules + .env + .env.local + .env.development + .env.test + .git + .gitignore + *.log +npm - debug.log * + yarn - debug.log * + yarn - error.log * +.DS_Store +coverage + .nyc_output + *.orig + .idea + .vscode + *.swp + *.swo + * ~ +.prisma + .github +README.md +CICD_SETUP.md +VERCEL_DEPLOYMENT_GUIDE.md +UPLOAD_LIMITATIONS.md diff --git a/README.md b/README.md old mode 100644 new mode 100755 index a04c188..71d1b16 --- a/README.md +++ b/README.md @@ -1 +1,1822 @@ -# internify-be \ No newline at end of file +# Internify API Documentation + +[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/) + +Backend API untuk Website Penerimaan Magang HUMIC Engineering - Dibangun dengan Express.js, Prisma ORM, dan MySQL. + +--- + +## ๐Ÿ“‘ Table of Contents + +1. [Introduction](#introduction) +2. [Quick Start](#-quick-start) + - [Prerequisites](#prerequisites) + - [Installation](#installation) + - [Environment Setup](#environment-setup) + - [Database Setup](#database-setup) + - [Running the Server](#running-the-server) +3. [Project Structure](#-project-structure) +4. [Architecture](#-architecture) + - [Technology Stack](#technology-stack) + - [Module Architecture](#module-architecture-4-layer-pattern) + - [Request Flow](#request-flow) +5. [Development Guide](#-development-guide) + - [Creating a New Module](#creating-a-new-module) + - [Using Wrapper Functions](#using-wrapper-functions) + - [Validation with Joi](#validation-with-joi) + - [File Upload Handling](#file-upload-handling) +6. [API Documentation](#-api-documentation) +7. [Testing](#-testing) +8. [Deployment](#-deployment) +9. [Contributing](#-contributing) +10. [Troubleshooting](#-troubleshooting) + +--- + +## Introduction + +Project intern HUMIC Batch 4 & 5 - Website Penerimaan Magang + +**Framework:** [Express.js](https://expressjs.com/) +**ORM:** [Prisma](https://www.prisma.io/) +**Database:** MySQL +**Authentication:** JWT (RS256) + +### ๐Ÿ‘ฅ Development Team + +**Team Humic Intern Batch 4** +|**Nama**| **Role** | +|:-------|:-----------:| +|REINHARD EFRAIM SITUMEANG |UI/UX WEBSITE| +|SHAFA SALMA PERMANA|UI/UX MOBILE| +|MUHAMMAD FARIED GUNAWAN|FRONT END DEVELOPER| +|YOHANES JANUARICO ANDIAWAN|BACK END DEVELOPER | +|REIHAN RAMADHANA ANWARI |BACK END DEVELOPER | +|DELKANO MARZUKI BERUTU|MOBILE DEVELOPER | + +**Team Humic Intern Batch 5** +|**Nama**| **Role** | +|:-------|:-----------:| +|BILLY MARCELO |FRONTEND DEVELOPER| +|MAHESA BAGUS RADITYA |BACK END DEVELOPER| +|SASI AFRILIA |UI/UX WEBSITE| + +### ๐Ÿ—„๏ธ Database Structure + +![Entity Relationship Diagram](https://raw.githubusercontent.com/Ditrogen/backend-intern-humic/main/src/docs/ERD.png) +The database consists of the following tables: + +1. **mahasiswa**: Menyimpan data lengkap mahasiswa yang mendaftar magang. +2. **admin**: Digunakan untuk login dan mengelola lowongan. +3. **lowongan_magang**: Informasi detail tentang posisi magang yang tersedia. +4. **lamaran_magang**: Data lamaran yang diajukan mahasiswa. +5. **hasil_research**: Menyimpan hasil riset proyek dari mahasiswa atau tim. +6. **partnership**: Data partner/institusi yang bekerja sama. +7. **faq**: Data pertanyaan dan jawaban yang sering ditanyakan (Frequently Asked Questions). + +--- + +## ๐Ÿš€ Quick Start + +### Prerequisites + +Pastikan Anda sudah menginstall: + +- **Node.js** (v16 atau lebih tinggi) +- **npm** atau **yarn** +- **MySQL** (v8 atau lebih tinggi) +- **Git** + +### Installation + +#### 1. Clone Repository + +```bash +git clone https://github.com/Ditrogen/backend-intern-humic.git +cd backend-intern-humic +``` + +#### 2. Install Dependencies + +```bash +npm install +``` + +### Environment Setup + +#### 3. Buat File .env + +Salin file `.env.example` menjadi `.env`: + +```bash +cp .env.example .env +``` + +#### 4. Konfigurasi Environment Variables + +Edit file `.env` dan isi dengan konfigurasi Anda: + +```env +# Database Configuration +DATABASE_URL="mysql://username:password@localhost:3306/internify_db" + +# Server Configuration +PORT=9000 + +# Email Configuration (untuk notifikasi) +AUTH_EMAIL='your-email@gmail.com' +AUTH_PASSWORD='your-app-specific-password' + +# JWT Configuration +JWT_PRIVATE_KEY=-----BEGIN RSA PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END RSA PRIVATE KEY----- +JWT_PUBLIC_KEY=-----BEGIN PUBLIC KEY-----\nYOUR_PUBLIC_KEY\n-----END PUBLIC KEY----- + +# ReCaptcha Configuration +RECAPTCHA_SECRET_KEY=your-recaptcha-secret-key +RECAPTCHA_SITE_KEY=your-recaptcha-site-key +``` + +> **๐Ÿ’ก Tips:** Untuk generate RSA key pair, gunakan OpenSSL: +> +> ```bash +> # Generate private key +> openssl genrsa -out private.pem 2048 +> # Generate public key +> openssl rsa -in private.pem -pubout -out public.pem +> ``` + +### Database Setup + +#### 5. Buat Database MySQL + +```bash +mysql -u root -p +CREATE DATABASE internify_db; +EXIT; +``` + +#### 6. Generate Prisma Client + +```bash +npx prisma generate +``` + +#### 7. Run Database Migration + +```bash +npx prisma migrate dev +``` + +> Ini akan membuat semua tabel yang diperlukan berdasarkan schema Prisma. + +#### 8. (Optional) Seed Database + +Jika ada data seeder: + +```bash +npx prisma db seed +``` + +### Running the Server + +#### Development Mode + +```bash +npm run dev +``` + +Server akan berjalan di `http://localhost:9000` + +#### Production Mode + +```bash +npm start +``` + +> **โš ๏ธ Perhatian:** +> +> - Gunakan `npm run dev` untuk development +> - Gunakan `npm start` untuk production + +### Testing the API + +Setelah server berjalan, buka Swagger UI untuk testing: + +``` +http://localhost:9000/api-docs +``` + +> **๐Ÿ“ Note:** Swagger hanya tersedia jika `NODE_ENV` bukan `production` dan `SWAGGER_ENABLED` bernilai `true` + +--- + +## ๐Ÿ“š Project Structure + +``` +backend-intern-humic/ +โ”œโ”€โ”€ prisma/ +โ”‚ โ”œโ”€โ”€ schema.prisma # Prisma schema definition +โ”‚ โ”œโ”€โ”€ prisma.config.js # Prisma configuration +โ”‚ โ””โ”€โ”€ migrations/ # Database migrations +โ”œโ”€โ”€ src/ +โ”‚ โ”œโ”€โ”€ index.js # Main application entry point +โ”‚ โ”œโ”€โ”€ docs/ +โ”‚ โ”‚ โ”œโ”€โ”€ swagger.js # Swagger/OpenAPI configuration +โ”‚ โ”‚ โ””โ”€โ”€ ERD.png # Entity Relationship Diagram +โ”‚ โ”œโ”€โ”€ helpers/ +โ”‚ โ”‚ โ”œโ”€โ”€ db/ # Database connection (Prisma client) +โ”‚ โ”‚ โ”œโ”€โ”€ error/ # Custom error classes +โ”‚ โ”‚ โ”œโ”€โ”€ http-status/ # HTTP status codes +โ”‚ โ”‚ โ”œโ”€โ”€ infra/ # Infrastructure config +โ”‚ โ”‚ โ””โ”€โ”€ utils/ # Utility functions +โ”‚ โ”‚ โ”œโ”€โ”€ validator.js # Joi validation helpers +โ”‚ โ”‚ โ”œโ”€โ”€ wrapper.js # Response wrapper functions +โ”‚ โ”‚ โ””โ”€โ”€ fileHelper.js # File handling utilities +โ”‚ โ”œโ”€โ”€ middleware/ +โ”‚ โ”‚ โ”œโ”€โ”€ multer.js # File upload configuration +โ”‚ โ”‚ โ”œโ”€โ”€ recaptcha.js # ReCaptcha verification +โ”‚ โ”‚ โ””โ”€โ”€ verifyJWT.js # JWT authentication +โ”‚ โ”œโ”€โ”€ modules/ # Feature modules (MVC pattern) +โ”‚ โ”‚ โ”œโ”€โ”€ admin/ +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ controllers/ # Handle HTTP requests +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ services/ # Business logic +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ repositories/ # Database operations +โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ models/ # Joi validation schemas +โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ index.js # Module exports +โ”‚ โ”‚ โ”œโ”€โ”€ auth/ +โ”‚ โ”‚ โ”œโ”€โ”€ batch/ +โ”‚ โ”‚ โ”œโ”€โ”€ faq/ +โ”‚ โ”‚ โ”œโ”€โ”€ feedback/ +โ”‚ โ”‚ โ”œโ”€โ”€ hasilResearch/ +โ”‚ โ”‚ โ”œโ”€โ”€ lamaranMagang/ +โ”‚ โ”‚ โ”œโ”€โ”€ lowonganMagang/ +โ”‚ โ”‚ โ”œโ”€โ”€ mahasiswa/ +โ”‚ โ”‚ โ””โ”€โ”€ partnership/ +โ”‚ โ”œโ”€โ”€ routes/ # API route definitions +โ”‚ โ”‚ โ”œโ”€โ”€ admin.routes.js +โ”‚ โ”‚ โ”œโ”€โ”€ auth.routes.js +โ”‚ โ”‚ โ”œโ”€โ”€ ... +โ”‚ โ””โ”€โ”€ uploads/ # File upload directory (development) +โ”œโ”€โ”€ .env # Environment variables (not committed) +โ”œโ”€โ”€ .env.example # Environment variables template +โ”œโ”€โ”€ package.json # Node.js dependencies and scripts +โ”œโ”€โ”€ vercel.json # Vercel deployment configuration +โ””โ”€โ”€ README.md # This file +``` + +### Folder Explanation + +| Folder/File | Purpose | +| ----------------- | ----------------------------------------------- | +| `prisma/` | Prisma ORM schema, config, dan migrations | +| `src/index.js` | Entry point Express application | +| `src/helpers/` | Utility functions, error classes, DB connection | +| `src/middleware/` | Express middleware (auth, upload, validation) | +| `src/modules/` | Feature modules following 4-layer architecture | +| `src/routes/` | API endpoint definitions | +| `.env` | Environment variables (credentials, config) | +| `vercel.json` | Serverless deployment configuration | + +--- + +## ๐Ÿ›๏ธ Architecture + +### Technology Stack + +| Technology | Version | Purpose | +| -------------- | ------- | -------------------------------- | +| **Node.js** | v16+ | Runtime environment | +| **Express.js** | 4.x | Web framework | +| **Prisma** | 6.16.2 | ORM (Object-Relational Mapping) | +| **MySQL** | 8.x | Relational database | +| **JWT** | - | Authentication (RS256 signature) | +| **Joi** | - | Schema validation | +| **Multer** | - | File upload handling | +| **Nodemailer** | - | Email service | +| **Swagger** | - | API documentation | +| **Vercel** | - | Serverless deployment | + +### Module Architecture (4-Layer Pattern) + +Setiap module di folder `src/modules/` mengikuti **arsitektur 4 layer** untuk separation of concerns: + +``` +module/ +โ”œโ”€โ”€ controllers/ โ†’ Layer 1: Menangani HTTP request/response +โ”œโ”€โ”€ services/ โ†’ Layer 2: Business logic dan pemrosesan data +โ”œโ”€โ”€ repositories/ โ†’ Layer 3: Operasi database (Prisma queries) +โ”œโ”€โ”€ models/ โ†’ Layer 4: Validasi input (Joi schemas) +โ””โ”€โ”€ index.js โ†’ Module exports +``` + +#### Layer Responsibilities + +**1. Controllers** (`controllers/`) + +- Menerima HTTP request dari route +- Validasi input menggunakan Joi models +- Memanggil service layer +- Mengembalikan HTTP response dengan wrapper +- Error handling + +**2. Services** (`services/`) + +- Business logic utama +- Validasi business rules +- Memanggil repository untuk database operations +- Data transformation +- Orchestration antar repositories + +**3. Repositories** (`repositories/`) + +- Database operations (CRUD) menggunakan Prisma +- Query construction +- Data mapping +- Tidak ada business logic + +**4. Models** (`models/`) + +- Joi schema definitions +- Input validation rules +- Error messages (Indonesian) + +### Request Flow + +```mermaid +graph LR + A[Client] -->|HTTP Request| B[Route] + B --> C[Controller] + C -->|Validate| D[Joi Model] + D -->|Valid| E[Service] + E -->|Business Logic| E + E --> F[Repository] + F -->|Prisma Query| G[MySQL Database] + G -->|Data| F + F --> E + E --> C + C -->|Wrapper| H[HTTP Response] + H --> A +``` + +**Step-by-step:** + +1. **Client** mengirim HTTP request +2. **Route** menerima request dan memanggil controller +3. **Controller** validasi input menggunakan **Joi Model** +4. **Controller** memanggil **Service** +5. **Service** memproses business logic +6. **Service** memanggil **Repository** +7. **Repository** query database menggunakan **Prisma** +8. **Database** mengembalikan data ke **Repository** +9. **Repository** mengembalikan data ke **Service** +10. **Service** mengembalikan data ke **Controller** +11. **Controller** mengirim response dengan **wrapper** +12. **Client** menerima HTTP response + +### Key Features + +โœ… **JWT Authentication (RS256)** - RSA signature-based tokens dengan token expiry 1 day +โœ… **Joi Validation** - Schema validation untuk semua input dengan pesan error dalam Bahasa Indonesia +โœ… **File Upload Management** - Automatic file cleanup on errors, support multiple file types +โœ… **Automatic Status Updates** - Lowongan magang status auto-update berdasarkan tanggal +โœ… **CORS Configuration** - Configurable CORS untuk cross-origin requests +โœ… **Centralized Error Handling** - Custom error classes dengan pesan konsisten +โœ… **Response Wrapper** - Standardized API response format +โœ… **Swagger Documentation** - Interactive API documentation dengan Swagger UI + +--- + +## ๐Ÿ› ๏ธ Development Guide + +### Creating a New Module + +Ikuti langkah-langkah berikut untuk membuat module baru: + +## Cara Membuat Module (Langkah demi Langkah) + +### Langkah 1: Buat Struktur Module + +```bash +modules/ + yourModule/ + โ”œโ”€โ”€ index.js # Export semua komponen + โ”œโ”€โ”€ controllers/ + โ”‚ โ””โ”€โ”€ yourModule.controller.js + โ”œโ”€โ”€ services/ + โ”‚ โ””โ”€โ”€ yourModule.service.js + โ”œโ”€โ”€ repositories/ + โ”‚ โ””โ”€โ”€ yourModule.repository.js + โ””โ”€โ”€ models/ + โ””โ”€โ”€ yourModule.model.js +``` + +### Langkah 2: Buat Validation Model (models/) + +**File:** `models/yourModule.model.js` + +```javascript +const joi = require("joi"); + +// Validasi untuk membuat record baru +const createYourModuleModel = joi.object({ + name: joi.string().required().messages({ + "string.base": "Nama harus berupa teks.", + "any.required": "Nama wajib diisi.", + }), + email: joi.string().email().required().messages({ + "string.email": "Format email tidak valid.", + "any.required": "Email wajib diisi.", + }), + age: joi.number().min(18).messages({ + "number.base": "Umur harus berupa angka.", + "number.min": "Umur minimal 18 tahun.", + }), +}); + +// Validasi untuk update record +const updateYourModuleModel = joi.object({ + name: joi.string().messages({ + "string.base": "Nama harus berupa teks.", + }), + email: joi.string().email().messages({ + "string.email": "Format email tidak valid.", + }), + age: joi.number().min(18).messages({ + "number.base": "Umur harus berupa angka.", + "number.min": "Umur minimal 18 tahun.", + }), +}); + +module.exports = { + createYourModuleModel, + updateYourModuleModel, +}; +``` + +### Langkah 3: Buat Repository (repositories/) + +**File:** `repositories/yourModule.repository.js` + +```javascript +const prisma = require("../../../helpers/db/db_connection"); + +class YourModuleRepository { + // Buat record baru + async create(data) { + return prisma.yourModel.create({ + data: data, + }); + } + + // Ambil semua record + async findAll() { + return prisma.yourModel.findMany(); + } + + // Ambil berdasarkan ID + async findById(id) { + return prisma.yourModel.findUnique({ + where: { id: parseInt(id) }, + }); + } + + // Update berdasarkan ID + async updateById(id, data) { + return prisma.yourModel.update({ + where: { id: parseInt(id) }, + data: data, + }); + } + + // Hapus berdasarkan ID + async deleteById(id) { + return prisma.yourModel.delete({ + where: { id: parseInt(id) }, + }); + } +} + +module.exports = new YourModuleRepository(); +``` + +### Langkah 4: Buat Service (services/) + +**File:** `services/yourModule.service.js` + +```javascript +const yourModuleRepository = require("../repositories/yourModule.repository"); +const { data, error } = require("../../../helpers/utils/wrapper"); +const { NotFoundError, BadRequestError } = require("../../../helpers/error"); + +class YourModuleService { + // Buat record baru + async createYourModule(moduleData) { + try { + // Business logic di sini (contoh: cek duplikat) + const existing = await yourModuleRepository.findByEmail(moduleData.email); + + if (existing) { + return error(new BadRequestError("Email Sudah Terdaftar")); + } + + const result = await yourModuleRepository.create(moduleData); + return data(result); + } catch (err) { + return error(err); + } + } + + // Ambil semua record + async getAllYourModule() { + try { + const results = await yourModuleRepository.findAll(); + return data(results); + } catch (err) { + return error(err); + } + } + + // Ambil berdasarkan ID + async getYourModuleById(id) { + try { + const result = await yourModuleRepository.findById(id); + + if (!result) { + return error(new NotFoundError("Data Tidak Ditemukan")); + } + + return data(result); + } catch (err) { + return error(err); + } + } + + // Update berdasarkan ID + async updateYourModule(id, moduleData) { + try { + // Cek apakah data ada + const checkResult = await this.getYourModuleById(id); + if (checkResult.err) { + return checkResult; + } + + const result = await yourModuleRepository.updateById(id, moduleData); + return data(result); + } catch (err) { + return error(err); + } + } + + // Hapus berdasarkan ID + async deleteYourModule(id) { + try { + // Cek apakah data ada + const checkResult = await this.getYourModuleById(id); + if (checkResult.err) { + return checkResult; + } + + const result = await yourModuleRepository.deleteById(id); + return data(result); + } catch (err) { + return error(err); + } + } +} + +module.exports = new YourModuleService(); +``` + +### Langkah 5: Buat Controller (controllers/) + +**File:** `controllers/yourModule.controller.js` + +```javascript +const yourModuleService = require("../services/yourModule.service"); +const { + createYourModuleModel, + updateYourModuleModel, +} = require("../models/yourModule.model"); +const { response } = require("../../../helpers/utils/wrapper"); +const { isValidPayload } = require("../../../helpers/utils/validator"); +const { InternalServerError } = require("../../../helpers/error"); +const { SUCCESS, ERROR } = require("../../../helpers/http-status/status_code"); + +class YourModuleController { + // CREATE - POST /your-module-api/add + async addYourModule(req, res) { + try { + const payload = req.body; + + // Validasi input + const validatePayload = isValidPayload(payload, createYourModuleModel); + + if (validatePayload.err) { + return response( + res, + "fail", + validatePayload, + "Validasi gagal", + ERROR.EXPECTATION_FAILED, + ); + } + + // Panggil service + const result = await yourModuleService.createYourModule( + validatePayload.data, + ); + + if (result.err) { + return response(res, "fail", result); + } + + return response( + res, + "success", + result, + "Data berhasil ditambahkan", + SUCCESS.CREATED, + ); + } catch (err) { + return response( + res, + "fail", + { err: new InternalServerError(err.message) }, + "Terjadi kesalahan yang tidak terduga", + ERROR.INTERNAL_ERROR, + ); + } + } + + // READ ALL - GET /your-module-api/get + async getAllYourModule(req, res) { + try { + const result = await yourModuleService.getAllYourModule(); + + if (result.err) { + return response(res, "fail", result); + } + + return response( + res, + "success", + result, + "Data berhasil diambil", + SUCCESS.OK, + ); + } catch (err) { + return response( + res, + "fail", + { err: new InternalServerError(err.message) }, + "Terjadi kesalahan yang tidak terduga", + ERROR.INTERNAL_ERROR, + ); + } + } + + // READ ONE - GET /your-module-api/get/:id + async getYourModuleById(req, res) { + try { + const { id } = req.params; + + const result = await yourModuleService.getYourModuleById(id); + + if (result.err) { + return response(res, "fail", result); + } + + return response( + res, + "success", + result, + "Data berhasil diambil", + SUCCESS.OK, + ); + } catch (err) { + return response( + res, + "fail", + { err: new InternalServerError(err.message) }, + "Terjadi kesalahan yang tidak terduga", + ERROR.INTERNAL_ERROR, + ); + } + } + + // UPDATE - PATCH /your-module-api/update/:id + async updateYourModule(req, res) { + try { + const { id } = req.params; + const payload = req.body; + + // Validasi input + const validatePayload = isValidPayload(payload, updateYourModuleModel); + + if (validatePayload.err) { + return response( + res, + "fail", + validatePayload, + "Validasi gagal", + ERROR.EXPECTATION_FAILED, + ); + } + + // Panggil service + const result = await yourModuleService.updateYourModule( + id, + validatePayload.data, + ); + + if (result.err) { + return response(res, "fail", result); + } + + return response( + res, + "success", + result, + "Data berhasil diperbarui", + SUCCESS.OK, + ); + } catch (err) { + return response( + res, + "fail", + { err: new InternalServerError(err.message) }, + "Terjadi kesalahan yang tidak terduga", + ERROR.INTERNAL_ERROR, + ); + } + } + + // DELETE - DELETE /your-module-api/delete/:id + async deleteYourModule(req, res) { + try { + const { id } = req.params; + + const result = await yourModuleService.deleteYourModule(id); + + if (result.err) { + return response(res, "fail", result); + } + + return response( + res, + "success", + result, + "Data berhasil dihapus", + SUCCESS.OK, + ); + } catch (err) { + return response( + res, + "fail", + { err: new InternalServerError(err.message) }, + "Terjadi kesalahan yang tidak terduga", + ERROR.INTERNAL_ERROR, + ); + } + } +} + +module.exports = new YourModuleController(); +``` + +### Langkah 6: Buat Index (index.js) + +**File:** `index.js` + +```javascript +const yourModuleController = require("./controllers/yourModule.controller"); + +module.exports = { + yourModuleController, +}; +``` + +### Langkah 7: Buat Routes + +**File:** `routes/yourModule.routes.js` + +```javascript +const express = require("express"); +const { yourModuleController } = require("../modules/yourModule"); +const { verifyJWT } = require("../middleware/verifyJWT"); + +const router = express.Router(); + +// Route publik +router.get("/get", yourModuleController.getAllYourModule); +router.get("/get/:id", yourModuleController.getYourModuleById); + +// Route yang dilindungi (butuh JWT) +router.post("/add", verifyJWT, yourModuleController.addYourModule); +router.patch("/update/:id", verifyJWT, yourModuleController.updateYourModule); +router.delete("/delete/:id", verifyJWT, yourModuleController.deleteYourModule); + +module.exports = router; +``` + +### Langkah 8: Daftarkan Routes di index.js + +**File:** `src/index.js` + +```javascript +const yourModuleRoutes = require("./routes/yourModule.routes"); + +// ... kode lainnya + +app.use("/your-module-api", yourModuleRoutes); +``` + +--- + +### Using Wrapper Functions + +### Response Wrapper + +Fungsi `response` menstandarisasi semua response API. + +**Lokasi:** `helpers/utils/wrapper.js` + +**Penggunaan di Controller:** + +```javascript +const { response } = require("../../../helpers/utils/wrapper"); +const { SUCCESS, ERROR } = require("../../../helpers/http-status/status_code"); + +// Response sukses +return response( + res, // Object response Express + "success", // Status: 'success' atau 'fail' + result, // Object data dari service + "Pesan sukses custom", // Pesan opsional + SUCCESS.OK, // HTTP status code (200) +); + +// Response error +return response( + res, + "fail", + result, // Berisi { err: ErrorObject } + "Pesan error custom", // Pesan opsional + ERROR.NOT_FOUND, // HTTP status code (404) +); +``` + +### Data/Error Wrapper (Layer Service) + +Fungsi `data` dan `error` membungkus hasil service. + +**Lokasi:** `helpers/utils/wrapper.js` + +**Penggunaan di Service:** + +```javascript +const { data, error } = require('../../../helpers/utils/wrapper'); +const { NotFoundError, BadRequestError } = require('../../../helpers/error'); + +// Kembalikan data sukses +async getSomething() { + try { + const result = await repository.find(); + return data(result); // Return: { err: null, data: result } + } catch (err) { + return error(err); // Return: { err: err, data: null } + } +} + +// Kembalikan custom error +async checkSomething() { + try { + const item = await repository.findById(id); + + if (!item) { + return error(new NotFoundError('Data Tidak Ditemukan')); + } + + return data(item); + } catch (err) { + return error(err); + } +} +``` + +### Class Error yang Tersedia + +**Lokasi:** `helpers/error/` + +```javascript +const { + BadRequestError, // 400 - Input tidak valid + UnauthorizedError, // 401 - Tidak terautentikasi + ForbiddenError, // 403 - Tidak ada izin + NotFoundError, // 404 - Resource tidak ditemukan + ConflictError, // 409 - Data duplikat + ExpectationFailedError, // 417 - Validasi gagal + InternalServerError, // 500 - Server error + ServiceUnavailableError, // 503 - Service mati + GatewayTimeoutError, // 504 - Timeout +} = require("../../../helpers/error"); + +// Contoh penggunaan +return error(new BadRequestError("Email Sudah Terdaftar")); +return error(new NotFoundError("Mahasiswa Tidak Ditemukan")); +return error(new ForbiddenError("Akses Ditolak")); +``` + +### HTTP Status Code + +**Lokasi:** `helpers/http-status/status_code.js` + +```javascript +const { SUCCESS, ERROR } = require("../../../helpers/http-status/status_code"); + +// Success codes +SUCCESS.OK; // 200 +SUCCESS.CREATED; // 201 + +// Error codes +ERROR.BAD_REQUEST; // 400 +ERROR.UNAUTHORIZED; // 401 +ERROR.FORBIDDEN; // 403 +ERROR.NOT_FOUND; // 404 +ERROR.CONFLICT; // 409 +ERROR.EXPECTATION_FAILED; // 417 +ERROR.INTERNAL_ERROR; // 500 +ERROR.SERVICE_UNAVAILABLE; // 503 +ERROR.GATEWAY_TIMEOUT; // 504 +``` + +--- + +## Contoh Lengkap: Tambah Record Baru + +### 1. Client mengirim request + +```javascript +POST /your-module-api/add +Headers: { Authorization: "Bearer JWT_TOKEN" } +Body: { "name": "John", "email": "john@example.com", "age": 25 } +``` + +### 2. Route menerima dan memanggil controller + +```javascript +router.post("/add", verifyJWT, yourModuleController.addYourModule); +``` + +### 3. Controller validasi input + +```javascript +const validatePayload = isValidPayload(payload, createYourModuleModel); + +if (validatePayload.err) { + // Return validation error dengan status 417 + return response(res, "fail", validatePayload, "Validasi gagal", 417); +} +``` + +### 4. Controller memanggil service + +```javascript +const result = await yourModuleService.createYourModule(validatePayload.data); +``` + +### 5. Service memproses business logic + +```javascript +// Cek duplikat +const existing = await repository.findByEmail(data.email); +if (existing) { + return error(new BadRequestError("Email Sudah Terdaftar")); +} + +// Buat record +const result = await repository.create(data); +return data(result); +``` + +### 6. Repository query database + +```javascript +return prisma.yourModel.create({ data: data }); +``` + +### 7. Response mengalir kembali + +**Sukses:** + +```javascript +// Service return: { err: null, data: createdRecord } +// Controller cek: if (result.err) โ†’ false, lanjut +// Controller return response dengan status 201 + +Response: { + "message": "Data berhasil ditambahkan", + "data": { "id": 1, "name": "John", "email": "john@example.com" } +} +``` + +**Error:** + +```javascript +// Service return: { err: BadRequestError, data: null } +// Controller cek: if (result.err) โ†’ true +// Controller return error response + +Response: { + "message": "Email Sudah Terdaftar", + "error": "BadRequestError" +} +``` + +--- + +## Contoh Validasi + +### Validasi Input dengan Joi + +```javascript +const validatePayload = isValidPayload(payload, createYourModuleModel); + +// Sukses +validatePayload = { + err: null, + data: { name: "John", email: "john@example.com", age: 25 }, +}; + +// Validasi gagal +validatePayload = { + err: { + details: [ + { message: "Email wajib diisi" }, + { message: "Umur minimal 18 tahun" }, + ], + }, + data: null, +}; +``` + +### Response untuk Validation Error + +```javascript +if (validatePayload.err) { + return response( + res, + 'fail', + validatePayload, + 'Validasi gagal', + ERROR.EXPECTATION_FAILED // 417 + ); +} + +// Client menerima: +{ + "message": "Validasi gagal", + "errors": [ + "Email wajib diisi", + "Umur minimal 18 tahun" + ] +} +``` + +--- + +## Contoh Upload File + +### Controller dengan Upload File + +```javascript +const multer = require('../../../middleware/multer'); +const { deleteFileIfExists } = require('../../../helpers/utils/fileHelper'); + +// Route dengan multer +router.post('/add', verifyJWT, multer.single('image'), controller.add); + +// Controller +async add(req, res) { + try { + const payload = req.body; + const imageFile = req.file; // Ambil file yang diupload + + // Validasi + const validatePayload = isValidPayload(payload, createModel); + + if (validatePayload.err) { + // Hapus file yang diupload jika validasi gagal + if (imageFile?.filename) { + await deleteFileIfExists(imageFile.filename); + } + return response(res, 'fail', validatePayload, 'Validasi gagal', 417); + } + + // Panggil service dengan file + const result = await service.create(validatePayload.data, imageFile); + + if (result.err) { + // Hapus file yang diupload jika service gagal + if (imageFile?.filename) { + await deleteFileIfExists(imageFile.filename); + } + return response(res, 'fail', result); + } + + return response(res, 'success', result, 'Data berhasil ditambahkan', 201); + } catch (err) { + // Hapus file yang diupload saat terjadi error tidak terduga + if (req.file?.filename) { + await deleteFileIfExists(req.file.filename); + } + return response(res, 'fail', { err: new InternalServerError(err.message) }); + } +} +``` + +--- + +## ๐Ÿงช Testing + +### 1. Test dengan Swagger UI + +Buka Swagger documentation di browser: + +``` +http://localhost:9000/api-docs +``` + +Swagger UI menyediakan: + +- Interactive API testing +- Request/response examples +- Schema definitions +- Authentication testing + +### 2. Test dengan curl + +**Contoh Testing Endpoints:** + +```bash +# Create +curl -X POST http://localhost:9000/your-module-api/add \ + -H "Authorization: Bearer YOUR_JWT_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{"name":"John","email":"john@example.com","age":25}' + +# Get all +curl http://localhost:9000/your-module-api/get + +# Get by ID +curl http://localhost:9000/your-module-api/get/1 + +# Update +curl -X PATCH http://localhost:9000/your-module-api/update/1 \ + -H "Authorization: Bearer YOUR_JWT_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{"name":"John Updated"}' + +# Delete +curl -X DELETE http://localhost:9000/your-module-api/delete/1 \ + -H "Authorization: Bearer YOUR_JWT_TOKEN" +``` + +--- + +## ๐Ÿ“ API Documentation + +### Database Schema + +![Entity Relationship Diagram](https://raw.githubusercontent.com/Ditrogen/backend-intern-humic/main/src/docs/ERD.png) + +Database terdiri dari 7 tabel utama: + +1. **mahasiswa**: Data lengkap mahasiswa yang mendaftar magang +2. **admin**: Data admin untuk login dan mengelola lowongan +3. **lowongan_magang**: Informasi detail posisi magang yang tersedia +4. **lamaran_magang**: Data lamaran yang diajukan mahasiswa +5. **hasil_research**: Hasil riset proyek dari mahasiswa atau tim +6. **partnership**: Data partner/institusi yang bekerja sama +7. **faq**: Frequently Asked Questions + +### API Modules + +## Project Architecture + +### Technology Stack + +- **Runtime**: Node.js +- **Framework**: Express.js 4.x +- **ORM**: Prisma 6.16.2 +- **Database**: MySQL +- **Authentication**: JWT (RS256 with signature) +- **Validation**: Joi +- **File Upload**: Multer +- **Email Service**: Nodemailer +- **Documentation**: Swagger/OpenAPI +- **Deployment**: Vercel (Serverless) + +### Project Structure + +``` +src/ +โ”œโ”€โ”€ index.js # Main application entry point +โ”œโ”€โ”€ config/ # Configuration files +โ”œโ”€โ”€ docs/ # Documentation and ERD +โ”œโ”€โ”€ helpers/ # Helper utilities +โ”‚ โ”œโ”€โ”€ db/ # Database connection (Prisma) +โ”‚ โ”œโ”€โ”€ error/ # Custom error classes +โ”‚ โ”œโ”€โ”€ http-status/ # HTTP status codes +โ”‚ โ”œโ”€โ”€ infra/ # Infrastructure config +โ”‚ โ””โ”€โ”€ utils/ # Utility functions (validator, wrapper, file helper) +โ”œโ”€โ”€ middleware/ # Express middleware +โ”‚ โ”œโ”€โ”€ multer.js # File upload configuration +โ”‚ โ”œโ”€โ”€ recaptcha.js # ReCaptcha verification +โ”‚ โ””โ”€โ”€ verifyJWT.js # JWT authentication +โ”œโ”€โ”€ modules/ # Feature modules (MVC pattern) +โ”‚ โ”œโ”€โ”€ admin/ +โ”‚ โ”œโ”€โ”€ auth/ +โ”‚ โ”œโ”€โ”€ hasilResearch/ +โ”‚ โ”œโ”€โ”€ lamaranMagang/ +โ”‚ โ”œโ”€โ”€ lowonganMagang/ +โ”‚ โ”œโ”€โ”€ mahasiswa/ +โ”‚ โ””โ”€โ”€ partnership/ +โ”œโ”€โ”€ routes/ # API route definitions +โ””โ”€โ”€ uploads/ # File upload directory (local) +``` + +### Module Architecture (MVC Pattern) + +Each module follows this structure: + +``` +module/ +โ”œโ”€โ”€ index.js # Module exports +โ”œโ”€โ”€ controllers/ # Handle HTTP requests/responses +โ”œโ”€โ”€ services/ # Business logic layer +โ”œโ”€โ”€ repositories/ # Database access layer (Prisma) +โ”œโ”€โ”€ models/ # Joi validation schemas +โ””โ”€โ”€ helpers/ (optional) # Module-specific helpers +``` + +**Data Flow:** + +``` +Route โ†’ Controller โ†’ Service โ†’ Repository โ†’ Database + โ†“ +Route โ† Controller โ† Service โ† Repository +``` + +--- + +## Key Features + +### 1. **JWT Authentication (RS256)** + +- Uses RSA signature-based tokens +- Token expiry: 1 day +- Signature field for additional security +- Middleware: `verifyJWT` + +### 2. **Joi Validation** + +- All API inputs validated with Joi schemas +- Indonesian error messages +- Located in `models/` directory of each module + +### 3. **File Upload Management** + +- **Development**: Files stored in `src/uploads/` +- **Production**: Files stored in `/tmp/uploads/` (Vercel) +- Automatic file cleanup on validation/service errors +- Supports: Images (JPG, PNG), PDFs +- Max file size: 4.5MB + +### 4. **Automatic Status Updates** + +- `lowonganMagang` status automatically updates based on dates: + - `akan-datang`: Before start date + - `aktif`: Between start and end date + - `selesai`: After end date + +### 5. **CORS Configuration** + +- Open to all origins (configurable) +- Supports credentials +- Pre-flight request handling + +### 6. **Error Handling** + +- Centralized error classes +- Indonesian error messages +- Consistent error response format + +--- + +## API Modules + +### 1. **Admin Module** + +Manage admin accounts and authentication. + +**Endpoints:** + +- `POST /admin-api/add` - Create admin (requires JWT) +- `GET /admin-api/get` - Get all admins (requires JWT) + +### 2. **Auth Module** + +Authentication and authorization. + +**Endpoints:** + +- `POST /auth-api/login` - Admin login +- `GET /auth-api/me` - Get authenticated admin details (requires JWT) + +### 3. **Lowongan Magang Module** + +Manage internship vacancies. + +**Endpoints:** + +- `POST /lowongan-magang-api/add` - Create vacancy (requires JWT) +- `GET /lowongan-magang-api/get` - Get all vacancies +- `GET /lowongan-magang-api/get/id/:id` - Get vacancy by ID +- `GET /lowongan-magang-api/get/kelompok/:kelompok_peminatan` - Get by specialization +- `GET /lowongan-magang-api/get/kelompok-all` - Get all specializations +- `PATCH /lowongan-magang-api/update/:id` - Update vacancy (requires JWT) +- `DELETE /lowongan-magang-api/delete/:id` - Delete vacancy (requires JWT) + +**Features:** + +- Automatic status calculation +- Image upload support +- Filter by specialization group + +### 4. **Lamaran Magang Module** + +Manage internship applications. + +**Endpoints:** + +- `POST /lamaran-magang-api/add/:id_lowongan_magang` - Submit application (with ReCaptcha) +- `POST /lamaran-magang-api/add-mobile/:id_lowongan_magang` - Submit from mobile (no ReCaptcha) +- `GET /lamaran-magang-api/get` - Get all applications (requires JWT) +- `GET /lamaran-magang-api/get/:id_lamaran_magang` - Get application by ID (requires JWT) +- `PATCH /lamaran-magang-api/update/:id_lamaran_magang` - Update status (requires JWT) +- `GET /lamaran-magang-api/export` - Export to Excel (requires JWT) +- `DELETE /lamaran-magang-api/delete/:id` - Delete application (requires JWT) + +**Features:** + +- CV and portfolio upload (multiple files) +- Email confirmation on submission +- Excel export functionality +- Automatic file cleanup on errors + +### 5. **Mahasiswa Module** + +Manage student data. + +**Endpoints:** + +- `GET /mahasiswa-api/get` - Get all students (requires JWT) + +**Note:** Students are automatically created when submitting applications. + +### 6. **Partnership Module** + +Manage partner organizations. + +**Endpoints:** + +- `POST /partnership-api/add` - Add partner (requires JWT) +- `GET /partnership-api/get` - Get all partners +- `GET /partnership-api/get/:id` - Get partner by ID +- `PATCH /partnership-api/update/:id` - Update partner (requires JWT) +- `DELETE /partnership-api/delete/:id` - Delete partner (requires JWT) + +**Features:** + +- Logo image upload +- Automatic file cleanup on errors + +### 7. **Hasil Research Module** + +Manage research results/publications. + +**Endpoints:** + +- `POST /hasil-research-api/add` - Add research (requires JWT) +- `GET /hasil-research-api/get` - Get all research +- `GET /hasil-research-api/get/:id` - Get research by ID +- `PATCH /hasil-research-api/update/:id` - Update research (requires JWT) +- `DELETE /hasil-research-api/delete/:id` - Delete research (requires JWT) + +**Features:** + +- Image upload support +- Automatic file cleanup on errors + +### 8. **FAQ Module** + +Manage Frequently Asked Questions. + +**Endpoints:** + +- `POST /faq-api/add` - Add FAQ (requires JWT - Admin only) +- `GET /faq-api/get` - Get all FAQs (Public) +- `GET /faq-api/get/:id` - Get FAQ by ID (Public) +- `PATCH /faq-api/update/:id` - Update FAQ (requires JWT - Admin only) +- `DELETE /faq-api/delete/:id` - Delete FAQ (requires JWT - Admin only) + +--- + +### Environment Variables Reference + +Berikut penjelasan lengkap setiap environment variable: + +| Variable | Type | Required | Description | Example | +| ---------------------- | ------ | -------- | --------------------------------- | -------------------------------- | +| `DATABASE_URL` | string | Yes | MySQL connection string | `mysql://user:pass@host:3306/db` | +| `PORT` | number | Yes | Port server akan berjalan | `9000` | +| `AUTH_EMAIL` | string | Yes | Email untuk mengirim notifikasi | `admin@example.com` | +| `AUTH_PASSWORD` | string | Yes | App-specific password Gmail | `xxxx xxxx xxxx xxxx` | +| `JWT_PRIVATE_KEY` | string | Yes | RSA private key untuk signing JWT | See .env.example | +| `JWT_PUBLIC_KEY` | string | Yes | RSA public key untuk verify JWT | See .env.example | +| `RECAPTCHA_SECRET_KEY` | string | Yes | Google ReCaptcha secret key | `6Lxxxxxxx...` | +| `RECAPTCHA_SITE_KEY` | string | Yes | Google ReCaptcha site key | `6Lxxxxxxx...` | + +> **๐Ÿ“ Note:** +> +> - Untuk `AUTH_PASSWORD`, gunakan [App Password](https://support.google.com/accounts/answer/185833) dari Google +> - Untuk generate JWT keys, gunakan OpenSSL (lihat Quick Start section) +> - Untuk ReCaptcha keys, daftar di [Google ReCaptcha](https://www.google.com/recaptcha/admin) + +--- + +### Database Migration Commands + +Berikut command untuk mengelola database migrations: + +### Initial Setup + +```bash +npx prisma generate +npx prisma migrate dev --name init +``` + +### Reset Database + +```bash +npx prisma migrate reset +``` + +### Deploy to Production + +```bash +npx prisma migrate deploy +``` + +--- + +## ๐Ÿš€ Deployment + +### Deployment ke Vercel + +### 1. **Vercel Configuration** + +Create `vercel.json`: + +```json +{ + "version": 2, + "builds": [ + { + "src": "src/index.js", + "use": "@vercel/node" + } + ], + "routes": [ + { + "src": "/(.*)", + "dest": "src/index.js" + } + ] +} +``` + +### 2. **Environment Variables** + +Set all `.env` variables in Vercel dashboard. + +### 3. **Database Connection** + +Ensure `DATABASE_URL` points to your production MySQL instance. + +### 4. **Build Command** + +```bash +npm run vercel-build +``` + +### 5. **Important Notes** + +- Files uploaded to `/tmp/uploads/` (temporary) +- Serverless functions have 10-second timeout +- Cold start may affect first request + +--- + +## CI/CD Pipeline (GitHub Actions) + +Automatic migration on push to main branch. + +**Workflow:** + +1. Push to main branch +2. GitHub Actions triggers +3. Runs `prisma migrate deploy` +4. Database updated automatically + +--- + +## ๐Ÿ‘ฅ Contributing + +### Development Workflow + +### 1. **Adding a New Feature** + +```bash +# 1. Create feature branch +git checkout -b feature/new-feature + +# 2. Create module structure +modules/ + newModule/ + โ”œโ”€โ”€ index.js + โ”œโ”€โ”€ controllers/ + โ”œโ”€โ”€ services/ + โ”œโ”€โ”€ repositories/ + โ”œโ”€โ”€ models/ + +# 3. Update Prisma schema (if needed) +# Edit prisma/schema.prisma + +# 4. Run migration +npx prisma migrate dev --name add_new_feature + +# 5. Create route file +routes/newModule.routes.js + +# 6. Register route in src/index.js +app.use("/new-module-api", newModuleRoutes); + +# 7. Test locally +npm run dev + +# 8. Commit and push +git add . +git commit -m "feat: add new feature" +git push origin feature/new-feature +``` + +### 2. **Testing API Endpoints** + +Use Swagger UI: `http://localhost:9000/api-docs` + +Or use tools like: + +- Postman +- Thunder Client +- curl + +### 3. **File Upload Testing** + +```bash +# Test with curl +curl -X POST http://localhost:9000/lowongan-magang-api/add \ + -H "Authorization: Bearer YOUR_JWT_TOKEN" \ + -F "image=@/path/to/image.jpg" \ + -F "posisi=Backend Developer" \ + -F "kelompok_peminatan=Software Engineering" \ + -F "paid=paid" +``` + +--- + +--- + +## ๐Ÿ”ง Troubleshooting + +### Common Issues & Solutions + +### 1. **CORS Error** + +**Problem:** Frontend can't access API +**Solution:** Check CORS configuration in `src/index.js` + +### 2. **File Upload Fails** + +**Problem:** "File tidak ditemukan" +**Solution:** Check `fileHelper.js` upload directory configuration + +### 3. **JWT Token Invalid** + +**Problem:** "Invalid or expired token" +**Solution:** + +- Check token expiry (1 day) +- Verify JWT_PUBLIC_KEY in .env +- Ensure signature field matches + +### 4. **Prisma Client Error** + +**Problem:** "PrismaClient is unable to run in this browser environment" +**Solution:** + +```bash +npx prisma generate +``` + +### 5. **Express 5.x Route Error** + +**Problem:** "Missing parameter name" +**Solution:** Downgrade to Express 4.x (already fixed in package.json) + +--- + +--- + +### API Response Format + +### Success Response + +```json +{ + "message": "Success message", + "data": { ... } +} +``` + +### Error Response + +```json +{ + "message": "Error message", + "error": "Detailed error description" +} +``` + +### Validation Error + +```json +{ + "message": "Validation failed", + "errors": ["Field 'email' wajib diisi", "Field 'password' minimal 8 karakter"] +} +``` + +--- + +--- + +### Security Best Practices + +1. **Never commit `.env` file** +2. **Use strong JWT secrets** +3. **Validate all inputs with Joi** +4. **Sanitize file uploads** +5. **Limit file upload size (4.5MB)** +6. **Use HTTPS in production** +7. **Enable ReCaptcha for public endpoints** +8. **Implement rate limiting (recommended)** + +--- + +--- + +### Performance Optimization + +1. **File Cleanup**: Automatically removes orphaned files +2. **Index Optimization**: Database indexes on frequently queried fields +3. **Connection Pooling**: Prisma handles connection pooling +4. **Status Caching**: Status calculations cached in helpers + +--- + +--- + +### Contributing Guidelines + +### Code Style + +- Use CommonJS (`require`/`module.exports`) +- Follow existing module structure +- Use Indonesian for error messages +- Add JSDoc comments for functions +- Use meaningful variable names + +### Commit Messages + +Follow conventional commits: + +``` +feat: add new feature +fix: fix bug +docs: update documentation +refactor: refactor code +test: add tests +chore: update dependencies +``` + +### Pull Request Process + +1. Create feature branch +2. Make changes +3. Test locally +4. Update documentation +5. Create pull request +6. Wait for review +7. Merge after approval + +--- + +### Changelog + +### Version 2.0.0 (Current) + +- โœ… Prisma ORM migration +- โœ… JWT RS256 authentication +- โœ… Joi validation with Indonesian messages +- โœ… File upload with automatic cleanup +- โœ… Vercel deployment configuration +- โœ… Swagger documentation +- โœ… CI/CD with GitHub Actions +- โœ… CORS configuration +- โœ… Express 4.x compatibility + +--- + +## ๐Ÿ“š Quick Reference + +### Useful Commands + +```bash +# Development +npm run dev # Start development server +npm start # Start production server + +# Database +npx prisma generate # Generate Prisma client +npx prisma migrate dev # Create and apply migration +npx prisma migrate deploy # Deploy migrations to production +npx prisma migrate reset # Reset database +npx prisma studio # Open Prisma Studio GUI + +# Testing +curl http://localhost:9000/api-docs # Open API documentation + +# Git +git checkout -b feature/name # Create new feature branch +git add . # Stage changes +git commit -m "message" # Commit changes +git push origin branch-name # Push to remote +``` + +### Important URLs + +| Service | URL | Purpose | +| ----------------- | -------------------------------- | ------------------- | +| **Local API** | `http://localhost:9000` | Development server | +| **Swagger Docs** | `http://localhost:9000/api-docs` | API documentation | +| **Prisma Studio** | `http://localhost:5555` | Database GUI | +| **Production** | Your Vercel URL | Production endpoint | + +### Project Links + +- ๐ŸŒ **Repository**: [GitHub - Ditrogen/backend-intern-humic](https://github.com/Ditrogen/backend-intern-humic) +- ๐Ÿ“– **Prisma Docs**: [https://www.prisma.io/docs](https://www.prisma.io/docs) +- ๐Ÿ“˜ **Express Docs**: [https://expressjs.com](https://expressjs.com) +- ๐Ÿ” **JWT Info**: [https://jwt.io](https://jwt.io) + +--- + +## ๐Ÿ“„ License + +This API is licensed under the [MIT License](https://opensource.org/licenses/MIT). + +--- + +## ๐Ÿ’ฌ Support + +Jika ada pertanyaan atau masalah: + +1. Buka issue di [GitHub Issues](https://github.com/Ditrogen/backend-intern-humic/issues) +2. Hubungi team development +3. Baca dokumentasi di README ini + +--- + +**Made with โค๏ธ by HUMIC Engineering Intern Team** diff --git a/docs/internify-backend.md b/docs/internify-backend.md new file mode 100755 index 0000000..258f7fc --- /dev/null +++ b/docs/internify-backend.md @@ -0,0 +1,220 @@ +# Internify Backend Overview + +Dokumen ini merangkum struktur, alur kerja, dan komponen backend Internify (Express.js + Prisma + MySQL). Fokus hanya pada backend. + +## Ringkasan singkat + +- Backend melayani dua role utama: admin dan mahasiswa. +- Fitur inti: manajemen lowongan, lamaran, batch, data mahasiswa, partnership, hasil riset, FAQ, dan feedback. +- Arsitektur modul menerapkan pola 4 layer: route -> controller -> service -> repository -> Prisma. + +## Struktur folder utama + +``` +prisma/ Prisma schema dan migrasi +src/ + index.js Entry point server Express + docs/ Swagger config dan SQL dump lama + helpers/ Utilitas umum (wrapper, validator, error, db, mail, file) + middleware/ JWT, role guard, multer, recaptcha + modules/ Modul fitur (admin, auth, batch, dll) + routes/ Routing per fitur + uploads/ Folder upload lokal (dev) +oldCode/ Kode lama berbasis query SQL +``` + +## Entry point dan request flow + +- Entry point: `src/index.js`. +- Mendaftarkan CORS, JSON body, dan static file `/uploads`. +- Memasang route per fitur: + - `/admin-api` + - `/auth-api` + - `/lowongan-magang-api` + - `/lamaran-magang-api` + - `/mahasiswa-api` + - `/partnership-api` + - `/hasil-research-api` + - `/faq-api` + - `/feedback-api` + - `/batch-api` +- Swagger UI di `/api-docs` (aktif jika environment mengizinkan). + +Alur umum request: + +1. Route memanggil controller. +2. Controller validasi input (Joi) dan memanggil service. +3. Service menjalankan business logic dan memanggil repository. +4. Repository menjalankan query Prisma. +5. Response dibungkus dengan helper `wrapper` untuk format yang konsisten. + +## Konfigurasi dan environment + +- Template env ada di `.env.example`. +- Config global di `src/helpers/infra/global_config.js`. +- Token JWT memakai RSA key pair (RS256). +- `vercel.json` mengatur build dan route untuk Vercel. + +## Database dan Prisma + +- Prisma schema di `prisma/schema.prisma`. +- Generator Prisma client output ke `src/generated/prisma`. +- Model utama: + - Admin + - Mahasiswa + - LowonganMagang + - LamaranMagang + - Batch + - Partnership + - HasilResearch + - Faq + - Feedback + - RiwayatPelamar (statistik historis) +- Enum utama: Role, StudentRole, StatusLamaran, StatusLowongan, PaidStatus. + +## Modul dan endpoint utama + +### 1) Auth + +Tujuan: login admin dan identitas user. + +- POST `/auth-api/login` +- GET `/auth-api/me` + +### 2) Admin + +Tujuan: CRUD admin. + +- POST `/admin-api/add` +- GET `/admin-api/get` + +### 3) Batch + +Tujuan: mengelola batch aktif dan urutan batch. + +- POST `/batch-api/add` +- GET `/batch-api/` +- PUT `/batch-api/:id` +- DELETE `/batch-api/:id` +- PATCH `/batch-api/switch/:batch_number` + +### 4) Lowongan Magang + +Tujuan: CRUD lowongan, filter kelompok peminatan, status otomatis. + +- POST `/lowongan-magang-api/add` +- GET `/lowongan-magang-api/get` +- GET `/lowongan-magang-api/get/id/:id` +- GET `/lowongan-magang-api/get/kelompok/:kelompok_peminatan` +- GET `/lowongan-magang-api/get/kelompok-all` +- PATCH `/lowongan-magang-api/update/:id` +- DELETE `/lowongan-magang-api/delete/:id` + +### 5) Lamaran Magang + +Tujuan: apply magang, export, statistik. + +- POST `/lamaran-magang-api/add/:id_lowongan_magang` +- POST `/lamaran-magang-api/add-mobile/:id_lowongan_magang` +- GET `/lamaran-magang-api/get` +- GET `/lamaran-magang-api/get/:id_lamaran_magang` +- PATCH `/lamaran-magang-api/update/:id_lamaran_magang` +- GET `/lamaran-magang-api/export` +- DELETE `/lamaran-magang-api/delete/:id` +- GET `/lamaran-magang-api/statistics/dashboard` +- GET `/lamaran-magang-api/statistics/position` +- GET `/lamaran-magang-api/statistics/country` +- GET `/lamaran-magang-api/statistics/university` + +### 6) Mahasiswa + +Tujuan: list mahasiswa (admin). + +- GET `/mahasiswa-api/get` + +### 7) Partnership + +Tujuan: CRUD partnership dan upload logo. + +- POST `/partnership-api/add` +- GET `/partnership-api/get` +- GET `/partnership-api/get/:id` +- PATCH `/partnership-api/update/:id` +- DELETE `/partnership-api/delete/:id` + +### 8) Hasil Research + +Tujuan: CRUD hasil riset dan upload gambar. + +- POST `/hasil-research-api/add` +- GET `/hasil-research-api/get` +- GET `/hasil-research-api/get/:id` +- PATCH `/hasil-research-api/update/:id` +- DELETE `/hasil-research-api/delete/:id` + +### 9) FAQ + +Tujuan: CRUD FAQ. + +- GET `/faq-api/get` +- GET `/faq-api/get/:id` +- POST `/faq-api/add` +- PATCH `/faq-api/update/:id` +- DELETE `/faq-api/delete/:id` + +### 10) Feedback + +Tujuan: CRUD feedback, filter batch dan tahun, upload gambar. + +- POST `/feedback-api/add` +- GET `/feedback-api/get` +- GET `/feedback-api/get/:id` +- PATCH `/feedback-api/update/:id` +- DELETE `/feedback-api/delete/:id` + +## Middleware penting + +- `verifyJWT`: validasi JWT RSA (RS256), set `req.id`, `req.role`. +- `isAdmin`: guard role admin. +- `multer`: upload file + size check + error handler. +- `recaptcha`: verifikasi reCAPTCHA (saat ini tidak diaktifkan pada route lamaran utama). + +## Helper penting + +- `wrapper`: format response konsisten dan mapping error ke HTTP code. +- `validator`: validasi payload menggunakan Joi. +- `fileHelper`: hapus file, cek file, dan validasi path file. +- `imageUpload.helper`: normalisasi path upload. +- `mail`: transporter Nodemailer. + +## Uploads dan file storage + +- Lokasi upload dev: `src/uploads`. +- Lokasi upload production: `/tmp/uploads`. +- File yang diupload dibersihkan otomatis saat validasi gagal atau error. + +## Email + +- Email konfirmasi dan status lamaran dikirim dari module lamaran. +- Template HTML ada di `src/modules/lamaranMagang/helpers/email.helper.js`. + +## Swagger + +- Swagger config di `src/docs/swagger.js`. +- Route dokumentasi di `/api-docs`. + +## Legacy (oldCode) + +Folder `oldCode/` berisi controller dan model lama berbasis query SQL langsung. Saat ini tidak dipakai oleh entry point utama. + +## Catatan teknis penting + +- JWT menggunakan RSA key pair (RS256), bukan HS256. +- Setiap mahasiswa hanya boleh melamar satu posisi (check pada lamaran). +- Status lowongan dihitung otomatis dari durasi awal dan akhir. +- Statistik negara dan universitas menggunakan raw query karena join kompleks. +- Prisma client utama dipakai dari `helpers/db/db_connection.js`. + +## Paragraf laporan backend (siap pakai) + +Backend Internify dibangun menggunakan Express.js sebagai web framework dengan Prisma ORM dan MySQL sebagai basis data. Arsitektur modular menerapkan pola 4 layer (route, controller, service, repository) agar alur bisnis terstruktur dan mudah dirawat, sementara validasi input dilakukan dengan Joi dan response distandarkan melalui wrapper. Autentikasi admin menggunakan JWT berbasis RSA (RS256), disertai middleware role guard untuk keamanan. Fitur upload file dikelola oleh Multer dengan pengecekan ukuran serta mekanisme cleanup, dan notifikasi email dikirim menggunakan Nodemailer. Dokumentasi API disediakan melalui Swagger untuk memudahkan pengujian dan integrasi. diff --git a/oldCode/controllers/admin.controller.js b/oldCode/controllers/admin.controller.js new file mode 100755 index 0000000..216876b --- /dev/null +++ b/oldCode/controllers/admin.controller.js @@ -0,0 +1,45 @@ +import * as adminService from '../models/admin.js'; + +export const addAdmin = async (req, res) => { + const { nama_depan, nama_belakang, email, password } = req.body; + const role = 'admin'; + const requireRole = req.role; + + try { + if (requireRole !== 'admin') { + return res.status(400).json({ message: 'Only admins can access this' }); + } + + const [foundAdmin] = await adminService.getAdminByEmail(email); + if (foundAdmin.length > 0) { + return res.status(400).json({ message: 'Email already exists' }); + } + + await adminService.addAdmin( + nama_depan, + nama_belakang, + email, + password, + role + ); + return res.status(200).json({ message: 'Admin created successfully' }); + } catch (error) { + console.error(error); + return res.status(500).json({ message: 'Internal server error' }); + } +}; + +export const getAdmin = async (_req, res) => { + try { + const [admin] = await adminService.getAdmin(); + if (admin.length === 0) { + return res.status(404).json({ message: 'Admin not found' }); + } + return res.status(200).json({ + message: 'Get all admin successfully', + data: admin, + }); + } catch { + return res.status(500).json({ message: 'Internal server error' }); + } +}; diff --git a/oldCode/controllers/auth.controller.js b/oldCode/controllers/auth.controller.js new file mode 100755 index 0000000..e30febf --- /dev/null +++ b/oldCode/controllers/auth.controller.js @@ -0,0 +1,70 @@ +const adminService = require("../models/admin"); +const bcrypt = require("bcrypt"); +const jwt = require("jsonwebtoken"); + +const login = async (req, res) => { + const { email, password } = req.body; + + try { + const [foundAdmin] = await adminService.getAdminByEmail(email); + if (foundAdmin.length === 0) { + return res.status(400).json({ + message: "Invalid email or password", + }); + } + + const isPasswordValid = await bcrypt.compare( + password, + foundAdmin[0].password + ); + if (!isPasswordValid) { + return res.status(400).json({ + message: "Invalid email or password", + }); + } + + const token = jwt.sign( + { id: foundAdmin[0].id, role: foundAdmin[0].role }, + process.env.JWT_SECRET, + { expiresIn: "1h" } + ); + + return res.status(200).json({ + message: "Login successful", + token, + }); + } catch (error) { + console.error(error); + return res.status(500).json({ + message: "Internal server error", + }); + } + +} + +const me = async (req, res) => { + const id = req.id; + try { + console.log(id); + const [admin] = await adminService.getAdminById(id); + if (admin.length === 0) { + return res.status(404).json({ + message: "Admin not found", + }); + } + return res.status(200).json({ + message: "Get admin successfully", + data: admin[0], + }); + } catch (error) { + console.error(error); + return res.status(500).json({ + message: "Internal server error", + }); + } +} + +module.exports = { + login, + me, +} \ No newline at end of file diff --git a/oldCode/controllers/hasilResearch.controller.js b/oldCode/controllers/hasilResearch.controller.js new file mode 100755 index 0000000..86ff71e --- /dev/null +++ b/oldCode/controllers/hasilResearch.controller.js @@ -0,0 +1,178 @@ +const hasilResearchModel = require('../models/hasilResearch'); +const path = require('path'); +const { deleteFileIfExists } = require('../config/fileHelper'); + +const addhasilResearch = async (req, res) => { + const { nama_project } = req.body; + const { deskripsi } = req.body; + const image = req.file; + const {link_project} = req.body; + + try { + const image_path = await uploadGambar(image); + await hasilResearchModel.addhasilResearch(nama_project,deskripsi, link_project, image_path); + res.status(200).json({ + message: "Research result data successfully added", + data: { nama_project,deskripsi, image_path,link_project }, + }); + } catch (error) { + console.error("Error adding research results:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const uploadGambar = async (image) => { + try { + if (!image) { + throw new Error("Please upload an image!"); + } + + const file = `/uploads/${image.filename}`; + return file; + } catch (error) { + console.error(error.message); + throw new Error("Failed to upload image."); + } +}; + +const gethasilResearch = async (req, res) => { + try { + const [result] = await hasilResearchModel.gethasilResearch(); + if (result.length === 0) { + return res.status(404).json({ + message: "There is no research data", + }); + } + res.status(200).json({ + message: "Research data was successfully collected", + data: result, + }); + } catch (error) { + console.error("Error getting research results:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +} +const deleteHasilResearch = async (req, res) => { + try { + const { id } = req.params; + const [hasilResearch] = await hasilResearchModel.gethasilResearchById(id); + + if (hasilResearch.length === 0) { + return res.status(404).json({ + messsage: "Hasil research not found", + }); + } + + const image_path = hasilResearch[0].image_path; + + if (image_path) { + const fileName = path.basename(image_path); + await deleteFileIfExists(fileName); + } + + await hasilResearchModel.deletehasilResearch(id); + res.status(200).json({ + message: "Research result data successfully deleted", + }); + } catch (error) { + console.error("Error deleting research results :", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +} + +const gethasilResearchById = async (req, res) => { + try { + const { id } = req.params + const [hasilResearch] = await hasilResearchModel.gethasilResearchById(id); + + if (hasilResearch.length === 0) { + return res.status(404).json({ + messsage: "Hasil research not found", + }); + } + + res.status(200).json({ + message: "Research data was successfully collected", + data: hasilResearch, + }); + } catch (error) { + console.error("Error getting research results:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +} + +const updateHasilResearch = async (req, res) => { + try { + const { id } = req.params; + const { nama_project, deskripsi, link_project } = req.body; + const image = req.file; + + const [existing] = await hasilResearchModel.gethasilResearchById(id); + + if (existing.length === 0) { + return res.status(404).json({ message: "Hasil research not found" }); + } + + const currentData = existing[0]; + let image_path = existing[0].image_path; + + if (image) { + const oldFile = path.basename(image_path); + await deleteFileIfExists(oldFile); + + image_path = await uploadGambar(image); + } + + const updatedData = { + nama_project: nama_project?.trim() ? nama_project : currentData.nama_project, + deskripsi: deskripsi?.trim() ? deskripsi : currentData.deskripsi, + link_project: link_project?.trim() ? link_project : currentData.link_project, + image_path, + }; + + await hasilResearchModel.updateHasilResearch( + id, + updatedData.nama_project, + updatedData.deskripsi, + updatedData.link_project, + updatedData.image_path + ); + + return res.status(200).json({ + message: "Hasil research successfully updated", + data: { + id, + nama_project: updatedData.nama_project, + deskripsi: updatedData.deskripsi, + link_project: updatedData.link_project, + image_path: updatedData.image_path, + }, + }); + } catch (error) { + console.error("Error updating research:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +module.exports = { + addhasilResearch, + gethasilResearch, + gethasilResearchById, + updateHasilResearch, + deleteHasilResearch +} \ No newline at end of file diff --git a/oldCode/controllers/lamaranMagang.controller.js b/oldCode/controllers/lamaranMagang.controller.js new file mode 100755 index 0000000..eb6dfdb --- /dev/null +++ b/oldCode/controllers/lamaranMagang.controller.js @@ -0,0 +1,361 @@ +const mahasiswaModel = require("../models/mahasiswa"); +const lowonganMagangModel = require("../models/lowonganMagang"); +const lamaranMagangModel = require("../models/lamaranMagang"); +const transporter = require("../config/mail"); +const ExcelJS = require('exceljs'); +require("dotenv").config(); +const path = require('path'); +const { deleteFileIfExists } = require('../config/fileHelper'); + +const addLamaranMagang = async (req, res) => { + const { id_lowongan_magang } = req.params; + const { + nama_depan, + nama_belakang, + email, + kontak, + jurusan, + motivasi, + relevant_skills, + } = req.body; + + const CV = req.files.cv?.[0]; + const Portofolio = req.files.portofolio?.[0]; + const status = "diproses"; + const role = "student"; + + try { + const cv_path = await uploadCV(CV); + const portofolio_path = await uploadPortofolio(Portofolio); + + const [lowonganMagang] = await lowonganMagangModel.getLowonganMagangById( + id_lowongan_magang + ); + + if (lowonganMagang.length === 0) { + return res.status(404).json({ + message: "Internship vacancy not found.", + }); + } + + const namaBelakangFinal = nama_belakang?.trim() || null; + + const dataMahasiswa = { + nama_depan, + nama_belakang: namaBelakangFinal, + email, + kontak, + jurusan, + role, + cv_path, + portofolio_path, + motivasi, + relevant_skills, + }; + + const result = await mahasiswaModel.addMahasiswa( + nama_depan, + namaBelakangFinal, + email, + kontak, + jurusan, + role, + cv_path, + portofolio_path, + motivasi, + relevant_skills + ); + + const id_mahasiswa = result[0].insertId; + + await lamaranMagangModel.addlowonganMagang( + id_mahasiswa, + id_lowongan_magang, + status + ); + + await sendEmail(dataMahasiswa, lowonganMagang[0]); + + res.status(200).json({ + message: "Internship application submitted successfully.", + data: { + id_lowongan_magang, + dataMahasiswa, + status, + }, + }); + } catch (error) { + console.error("Error adding internship application:", error); + res.status(500).json({ + message: "Internal server error.", + error: error.message, + }); + } +}; + + +const uploadCV = async (CV) => { + try { + if (!CV) { + throw new Error("Please upload your CV."); + } + + const file = `/uploads/${CV.filename}`; + return file; + } catch (error) { + console.error(error.message); + throw new Error("Failed to upload CV."); + } +}; + +const uploadPortofolio = async (portofolio) => { + try { + if (!portofolio) { + throw new Error("Please upload your portfolio."); + } + const file = `/uploads/${portofolio.filename}`; + return file; + } catch (error) { + console.error(error.message); + throw new Error("Failed to upload portfolio."); + } +}; + +const getAllLamaranMagang = async (req, res) => { + try { + const [result] = await lamaranMagangModel.getAllLamaranMagang(); + if (result.length === 0) { + return res.status(404).json({ + message: "No internship applications found.", + }); + } + res.status(200).json({ + message: "Internship applications retrieved successfully.", + data: result, + }); + } catch (error) { + console.error("Error fetching all internship applications:", error); + res.status(500).json({ + message: "Internal server error.", + error: error.message, + }); + } +}; + +const getLamaranByID = async (req, res) => { + const { id_lamaran_magang } = req.params; + try { + const [result] = await lamaranMagangModel.getLamaranByID( + id_lamaran_magang + ); + if (result.length === 0) { + return res.status(404).json({ + message: "No internship applications found.", + }); + } + res.status(200).json({ + message: "Internship applications retrieved successfully.", + data: result, + }); + } catch (error) { + console.error("Error fetching internship applications by ID:", error); + res.status(500).json({ + message: "Internal server error.", + error: error.message, + }); + } +}; + +const updateStatusLamaran = async (req, res) => { + const { id_lamaran_magang } = req.params; + const { status } = req.body; + const role = req.role; + + try { + if (role !== "admin") { + return res.status(403).json({ + message: "Unauthorized access.", + }); + } + + const [lamaran] = await lamaranMagangModel.getDetailLamaranById( + id_lamaran_magang + ); + // console.log(lamaran[0]); + if (lamaran.length === 0) { + return res.status(404).json({ + message: "Internship application not found.", + }); + } + + await lamaranMagangModel.updateStatusLamaran(id_lamaran_magang, status); + res.status(200).json({ + message: "Internship application status successfully updated.", + }); + + await sendStatusEmail(lamaran[0], status) + } catch (error) { + console.error("Error updating internship application status:", error); + res.status(500).json({ + message: "Internal server error.", + error: error.message, + }); + } +}; + +const sendEmail = async (dataMahasiswa, dataPekerjaan) => { + try { + const fullName = `${dataMahasiswa.nama_depan}${dataMahasiswa.nama_belakang ? ' ' + dataMahasiswa.nama_belakang : ''}`; + + const mailOptions = { + from: process.env.AUTH_EMAIL, + to: dataMahasiswa.email, + subject: "Konfirmasi Penerimaan Lamaran Anda", + headers: { + "X-Priority": "1", + "X-MSMail-Priority": "High", + Importance: "high", + }, + html: ` +
+

Lamaran Anda Telah Kami Terima

+

Halo ${fullName},

+ +

Terima kasih telah mengirimkan lamaran untuk posisi ${dataPekerjaan.posisi} di Humic Engineering.

+ +

Kami telah menerima dokumen dan informasi yang Anda kirimkan, dan saat ini tim rekrutmen kami sedang meninjaunya dengan seksama.

+ +

Jika profil Anda sesuai dengan kebutuhan kami, tim kami akan menghubungi Anda untuk tahapan seleksi berikutnya. Proses ini dapat memakan waktu hingga beberapa minggu.

+ +

Kami sangat menghargai minat Anda untuk bergabung bersama tim kami.

+ +

Salam hangat,

+

Tim Rekrutmen Humic Engineering

+ +
+

Email ini dikirim secara otomatis. Jika Anda memiliki pertanyaan lebih lanjut, silakan hubungi kami melalui email resmi yang tersedia di website kami.

+
+ `, + }; + + await transporter.sendMail(mailOptions); + } catch (error) { + console.error("Error mengirim email lamaran magang:", error); + } +}; + +const sendStatusEmail = async (dataLamaran, statusLamaran) => { + try { + const isAccepted = statusLamaran === "diterima"; + const fullName = `${dataLamaran.nama_depan}${dataLamaran.nama_belakang ? ' ' + dataLamaran.nama_belakang : ''}`; + + const subject = isAccepted + ? "Selamat! Lamaran Anda Diterima" + : "Pemberitahuan Status Lamaran Anda"; + + const messageContent = isAccepted + ? ` +

Halo ${fullName},

+

Selamat! Lamaran Anda untuk posisi ${dataLamaran.posisi} di Humic Engineering telah diterima.

+

Tim kami sangat terkesan dengan profil dan kualifikasi Anda. Kami akan segera menghubungi Anda terkait tahapan selanjutnya.

+

Terima kasih telah melamar dan kami menantikan kerja sama yang luar biasa bersama Anda.

+ ` + : ` +

Halo ${fullName},

+

Terima kasih atas lamaran Anda untuk posisi ${dataLamaran.posisi} di Humic Engineering.

+

Setelah mempertimbangkan secara seksama, kami memutuskan untuk tidak melanjutkan proses lamaran Anda ke tahap berikutnya.

+

Jangan berkecil hatiโ€”kami sangat menghargai waktu dan usaha Anda. Kami mendorong Anda untuk terus mencoba dan semoga sukses dalam perjalanan karier Anda.

+ `; + + const mailOptions = { + from: process.env.AUTH_EMAIL, + to: dataLamaran.email, + subject, + headers: { + "X-Priority": "1", + "X-MSMail-Priority": "High", + Importance: "high", + }, + html: ` +
+ ${messageContent} +

Salam hangat,

+

Tim Rekrutmen Humic Engineering

+
+

Email ini dikirim secara otomatis. Untuk informasi lebih lanjut, silakan hubungi kami melalui kontak resmi.

+
+ `, + }; + + await transporter.sendMail(mailOptions); + } catch (error) { + console.error("Gagal mengirim email status lamaran:", error); + } +}; + +const exportDataToExcel = async (req, res) => { + try { + const [rows] = await lamaranMagangModel.getAllExportData(); + + const workbook = new ExcelJS.Workbook(); + const worksheet = workbook.addWorksheet('Data'); + + // Add header + const headers = Object.keys(rows[0]); + worksheet.addRow(headers); + + // Add rows + rows.forEach(row => { + worksheet.addRow(Object.values(row)); + }); + + // setting header buat file excel + res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + res.setHeader('Content-Disposition', 'attachment; filename=data.xlsx'); + + await workbook.xlsx.write(res); + res.end(); + + } catch (err) { + console.error(err); + res.status(500).send('Error generating Excel file'); + } +} + + +const deleteAllLamaranMagang = async (req, res) => { + try { + // Ambil semua mahasiswa + const [mahasiswaList] = await mahasiswaModel.getAllMahasiswa(); + + for (const mhs of mahasiswaList) { + const files = [mhs.cv_path, mhs.portofolio_path]; + for (const filePath of files) { + if (filePath) { + const fileName = path.basename(filePath); + await deleteFileIfExists(fileName); + } + } + } + + // Hapus semua lamaran & mahasiswa + await lamaranMagangModel.deleteAllLamaranMagang(); + await mahasiswaModel.deleteAllMahasiswa(); + + res.status(200).json({ + message: "All student data, applications, and files were successfully deleted.", + }); + } catch (err) { + console.error("Failed to delete all:", err); + res.status(500).json({ message: "Failed to delete all data.", error: err.message }); + } +}; + +module.exports = { + addLamaranMagang, + getAllLamaranMagang, + getLamaranByID, + updateStatusLamaran, + exportDataToExcel, + deleteAllLamaranMagang +}; diff --git a/oldCode/controllers/lowonganMagang.controller.js b/oldCode/controllers/lowonganMagang.controller.js new file mode 100755 index 0000000..da65aa0 --- /dev/null +++ b/oldCode/controllers/lowonganMagang.controller.js @@ -0,0 +1,261 @@ +const lowonganMagangService = require("../models/lowonganMagang"); +const { v4: uuidv4 } = require("uuid"); +const fs = require("fs").promises; +const path = require('path'); +const { deleteFileIfExists } = require('../helpers/utils/fileHelper'); // ganti sesuai lokasi fileHelper.js + +// Ini komentar buat penerus pengembangan proyek ini +// di db, field status_lowongan cuman di define pas add lowongan doang +// jadi pas dia get data lowongan, field status_lowongan bakal di override +// kenapa gk diapus aja fieldnya? Pertanyaan yang bagus +// itu aja fyi-nya +const addLowonganMagang = async (req, res) => { + const { + posisi, + kelompok_peminatan, + jobdesk, + lokasi, + kualifikasi, + benefit, + durasi_awal, + durasi_akhir, + paid, + } = req.body; + const require = req.role; + + const now = new Date(); + const tgl_awal = new Date(durasi_awal); + const tgl_akhir = new Date(durasi_akhir); + + let status_lowongan = "ditutup"; + if (now >= tgl_awal && now <= tgl_akhir) { + status_lowongan = "dibuka"; + } + + const image_path = req.file; + try { + if (require === "admin") { + const id = await uuidv4(); + const file = await uploadGambar(image_path); + await lowonganMagangService.addlowonganMagang( + id, + posisi, + kelompok_peminatan, + jobdesk, + lokasi, + kualifikasi, + benefit, + durasi_awal, + durasi_akhir, + status_lowongan, + paid, + file + ); + return res.status(200).json({ + message: "Internship vacancy created successfully", + }); + } + return res.status(403).json({ + message: "Access denied: Only admins can access this route", + }); + } catch (error) { + console.error(error); + return res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const uploadGambar = async (image) => { + try { + if (!image) { + throw new Error("Please upload an image!"); + } + + const file = `/uploads/${image.filename}`; + return file; + } catch (error) { + console.error(error.message); + throw new Error("Failed to upload image."); + } +}; + +const getAllLowonganMagang = async (req, res) => { + try { + const [lowonganMagang] = await lowonganMagangService.getAllLowonganMagang(); + if (lowonganMagang.length === 0) { + return res.status(404).json({ + message: "No internship vacancies found", + }); + } + + const now = new Date(); + + const updatedLowongan = lowonganMagang.map(item => { + const durasiAwal = new Date(item.durasi_awal); + const durasiAkhir = new Date(item.durasi_akhir); + + const status = now >= durasiAwal && now <= durasiAkhir ? "dibuka" : "ditutup"; + + return { + ...item, + status_lowongan: status, + }; + }); + + return res.status(200).json({ + message: "Successfully retrieved all internship vacancies", + data: updatedLowongan, + }); + } catch (error) { + return res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const getLowonganMagangById = async (req, res) => { + const { id } = req.params; + + try { + const [lowonganMagang] = await lowonganMagangService.getLowonganMagangById( + id + ); + + if (lowonganMagang.length === 0) { + return res.status(404).json({ + message: "Internship vacancy not found", + }); + } + + const now = new Date(); + const tgl_awal = new Date(lowonganMagang[0].durasi_awal); + const tgl_akhir = new Date(lowonganMagang[0].durasi_akhir); + + let status_lowongan = "ditutup"; + if (now >= tgl_awal && now <= tgl_akhir) { + status_lowongan = "dibuka"; + } + lowonganMagang[0].status_lowongan = status_lowongan + + return res.status(200).json({ + message: "Successfully retrieved internship vacancy by ID", + data: lowonganMagang[0], + }); + } catch (error) { + console.error(error); + return res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const getLowonganByKelompokPeminatan = async (req, res) => { + const { kelompok_peminatan } = req.params; + + try { + const [lowonganMagang] = await lowonganMagangService.getLowonganByKelompokPeminatan(kelompok_peminatan); + + if (lowonganMagang.length === 0) { + return res.status(404).json({ + message: "No internship vacancies found for this specialization group", + }); + } + + const now = new Date(); + + const updatedLowongan = lowonganMagang.map(item => { + const durasiAwal = new Date(item.durasi_awal); + const durasiAkhir = new Date(item.durasi_akhir); + + const status = now >= durasiAwal && now <= durasiAkhir ? "dibuka" : "ditutup"; + + return { + ...item, + status_lowongan: status, + }; + }); + + return res.status(200).json({ + message: "Successfully retrieved internship vacancies by specialization group", + data: updatedLowongan, + }); + } catch (error) { + console.error(error); + return res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +} + +const getAllKelompokPeminatan = async (req, res) => { + try { + const [kelompokPeminatan] = await lowonganMagangService.getAllKelompokPeminatan(); + if (kelompokPeminatan.length === 0) { + return res.status(404).json({ + message: "No internship specialization group found", + }); + } + return res.status(200).json({ + message: "Successfully retrieved all specialization group", + data: kelompokPeminatan.map(row => row.kelompok_peminatan), + }); + } catch (error) { + return res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const deleteLowonganMagangById = async (req, res) => { + const { id } = req.params; + const role = req.role; + + try { + if (role === "admin") { + const [lowonganMagang] = await lowonganMagangService.getLowonganMagangById(id); + + if (!lowonganMagang || lowonganMagang.length === 0) { + return res.status(404).json({ + message: "Internship vacancy not found", + }); + } + + const imagePath = lowonganMagang[0].image_path; + + if (imagePath) { + const fileName = path.basename(imagePath); // Ambil nama file dari path + await deleteFileIfExists(fileName); + } + await lowonganMagangService.deleteLowonganMagangById(id); + + return res.status(200).json({ + message: "Internship vacancy deleted successfully", + }); + } + + return res.status(403).json({ + message: "Access denied: Only admins can access this route", + }); + } catch (error) { + console.error(error); + return res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +module.exports = { + addLowonganMagang, + getAllLowonganMagang, + getLowonganMagangById, + getLowonganByKelompokPeminatan, + getAllKelompokPeminatan, + deleteLowonganMagangById, +}; diff --git a/oldCode/controllers/mahasiswa.controller.js b/oldCode/controllers/mahasiswa.controller.js new file mode 100755 index 0000000..3d9a0f7 --- /dev/null +++ b/oldCode/controllers/mahasiswa.controller.js @@ -0,0 +1,21 @@ +const mahasiswaModel = require("../models/mahasiswa"); + +const getAllMahasiswa = async (req, res) => { + try { + const [result] = await mahasiswaModel.getAllMahasiswa(); + res.status(200).json({ + message: "Student data retrieved successfully", + data: result, + }); + } catch (error) { + console.error("Error fetching all students:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +module.exports = { + getAllMahasiswa, +}; diff --git a/oldCode/controllers/partnership.controller.js b/oldCode/controllers/partnership.controller.js new file mode 100755 index 0000000..f7385fa --- /dev/null +++ b/oldCode/controllers/partnership.controller.js @@ -0,0 +1,159 @@ +const partnershipModel = require("../models/partnership"); +const path = require('path'); +const { deleteFileIfExists } = require('../config/fileHelper'); + +const addPartnership = async (req, res) => { + const { nama_partner } = req.body; + const image = req.file; + + try { + const image_path = await uploadGambar(image); + await partnershipModel.addPartnership(nama_partner, image_path); + res.status(200).json({ + message: "Partnership data successfully added", + data: { nama_partner, image_path }, + }); + } catch (error) { + console.error("Error adding partnership:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const uploadGambar = async (image) => { + try { + if (!image) { + throw new Error("Please upload an image!"); + } + + const file = `/uploads/${image.filename}`; + return file; + } catch (error) { + console.error(error.message); + throw new Error("Failed to upload image."); + } +}; + +const getPartnership = async (req, res) => { + try { + const [result] = await partnershipModel.getPartnership(); + if (result.length === 0) { + return res.status(404).json({ + message: "No partnership data", + }); + } + res.status(200).json({ + message: "Partnership data successfully retrieved", + data: result, + }); + } catch (error) { + console.error("Error getting partnership:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const deletePartnership = async (req, res) => { + try { + const { id } = req.params; + const [result] = await partnershipModel.deletePartnership(id); + if (result.affectedRows === 0) { + return res.status(404).json({ + message: "Partnership data not found", + }); + } + res.status(200).json({ + message: "Partnership data successfully deleted", + }); + } catch (error) { + console.error("Error deleting partnership:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +const getPartnershipById = async (req, res) => { + try { + const { id } = req.params + const [partnership] = await partnershipModel.getPartnershipById(id); + + if (partnership.length === 0) { + return res.status(404).json({ + messsage: "partnership not found", + }); + } + + res.status(200).json({ + message: "patnership data was successfully collected", + data: partnership, + }); + } catch (error) { + console.error("Error getting partnership results:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +} + +const updatePartnership = async (req, res) => { + try { + const { id } = req.params; + const { nama_partner } = req.body; + const image = req.file; + + const [existing] = await partnershipModel.getPartnershipById(id); + + if (existing.length === 0) { + return res.status(404).json({ message: "Partnership not found" }); + } + + const currentData = existing[0]; + let image_path = existing[0].image_path; + + if (image) { + const oldFile = path.basename(image_path); + await deleteFileIfExists(oldFile); + + image_path = await uploadGambar(image); + } + + const updatedData = { + nama_partner: nama_partner?.trim() ? nama_partner : currentData.nama_partner, + image_path, + }; + //console.log("form:",nama_partner, "db", currentData.nama_partner, "updated",updatedData.nama_partner) + + + await partnershipModel.updatePartnership( + id, + updatedData.nama_partner, + updatedData.image_path + ); + + return res.status(200).json({ + message: "Partnership successfully updated", + data: { id, nama_partner: updatedData.nama_partner, image_path: updatedData.image_path }, + }); + } catch (error) { + console.error("Error updating partnership:", error); + res.status(500).json({ + message: "Internal server error", + error: error.message, + }); + } +}; + +module.exports = { + addPartnership, + getPartnership, + getPartnershipById, + updatePartnership, + deletePartnership, +}; diff --git a/oldCode/models/admin.js b/oldCode/models/admin.js new file mode 100755 index 0000000..d01749e --- /dev/null +++ b/oldCode/models/admin.js @@ -0,0 +1,36 @@ +import db from '../helpers/db/db_connection.js'; +import bcrypt from 'bcrypt'; + +export async function addAdmin( + nama_depan, + nama_belakang, + email, + plainpassword, + role +) { + const saltRounds = 10; + const hashedPass = await bcrypt.hash(plainpassword, saltRounds); + const SQLQuery = + 'INSERT INTO admin (nama_depan, nama_belakang, email, password, role) VALUES (? ,?, ?, ?, ?)'; + return db.execute(SQLQuery, [ + nama_depan, + nama_belakang, + email, + hashedPass, + role, + ]); +} + +export function getAdmin() { + return db.execute('SELECT * FROM admin'); +} + +export function getAdminByEmail(email) { + return db.execute('SELECT * FROM admin WHERE email = ?', [email]); +} + +export function getAdminById(id) { + return db.execute('SELECT * FROM admin WHERE id = ?', [id]); +} + + diff --git a/oldCode/models/hasilResearch.js b/oldCode/models/hasilResearch.js new file mode 100755 index 0000000..36560f9 --- /dev/null +++ b/oldCode/models/hasilResearch.js @@ -0,0 +1,28 @@ +import db from '../config/db_connection.js'; + +export function addhasilResearch(nama_project, deskripsi, link_project, image_path) { + const SQLQuery = + 'INSERT INTO hasil_research (nama_project, deskripsi, link_project, image_path) VALUES (?,?,?,?)'; + return db.execute(SQLQuery, [nama_project, deskripsi, link_project, image_path]); +} + +export function gethasilResearch() { + return db.execute('SELECT * FROM hasil_research'); +} + +export function gethasilResearchById(id) { + return db.execute('SELECT * FROM hasil_research WHERE id = ?', [id]); +} + +export function updateHasilResearch(id, nama_project, deskripsi, link_project, image_path) { + const SQLQuery = ` + UPDATE hasil_research + SET nama_project = ?, deskripsi = ?, link_project = ?, image_path = ? + WHERE id = ? + `; + return db.execute(SQLQuery, [nama_project, deskripsi, link_project, image_path, id]); +} + +export function deletehasilResearch(id) { + return db.execute('DELETE FROM hasil_research WHERE id = ?', [id]); +} \ No newline at end of file diff --git a/oldCode/models/lamaranMagang.js b/oldCode/models/lamaranMagang.js new file mode 100755 index 0000000..e0098c1 --- /dev/null +++ b/oldCode/models/lamaranMagang.js @@ -0,0 +1,123 @@ +import db from '../config/db_connection.js'; + +export function addlowonganMagang(id_mahasiswa, id_lowongan_magang, status) { + const SQLQuery = + 'INSERT INTO lamaran_magang (id_mahasiswa, id_lowongan_magang, status, created_at, update_at) VALUES (?, ?, ?, NOW(), NOW())'; + return db.execute(SQLQuery, [id_mahasiswa, id_lowongan_magang, status]); +} + +export function getAllLamaranMagang() { + const SQLQuery = ` + SELECT + lm.id, + m.nama_depan, + m.nama_belakang, + l.posisi, + l.kelompok_peminatan, + lm.status, + lm.created_at + FROM + lamaran_magang lm + JOIN + mahasiswa m ON lm.id_mahasiswa = m.id + JOIN + lowongan_magang l ON lm.id_lowongan_magang = l.id; +`; + return db.execute(SQLQuery); +} + +export function getLamaranByID(id_lamaran_magang) { + const SQLQuery = ` + SELECT + m.nama_depan, + m.nama_belakang, + m.email, + m.kontak, + m.jurusan, + m.cv_path, + m.portofolio_path, + m.motivasi, + m.relevant_skills, + l.posisi, + lm.status + FROM + lamaran_magang lm + JOIN + mahasiswa m ON lm.id_mahasiswa = m.id + JOIN + lowongan_magang l ON lm.id_lowongan_magang = l.id + WHERE lm.id = ?; +`; + return db.execute(SQLQuery, [id_lamaran_magang]); +} + +export function updateStatusLamaran(id_lamaran_magang, status) { + const SQLQuery = + 'UPDATE lamaran_magang SET status = ?, update_at = NOW() WHERE id = ?'; + return db.execute(SQLQuery, [status, id_lamaran_magang]); +} + +export function getDetailLamaranById(idLamaran) { + const SQLQuery = ` + SELECT + lm.id AS id_lamaran, + lm.status, + lm.created_at, + lm.update_at, + + m.id AS id_mahasiswa, + m.nama_depan, + m.nama_belakang, + m.email, + m.kontak, + m.jurusan, + m.cv_path, + m.portofolio_path, + m.motivasi, + m.relevant_skills, + + l.id AS id_lowongan, + l.posisi, + l.kelompok_peminatan, + l.image_path, + l.jobdesk, + l.lokasi, + l.kualifikasi, + l.benefit, + l.durasi_awal, + l.durasi_akhir, + l.status_lowongan, + l.paid, + l.created_at AS created_at_lowongan + + FROM lamaran_magang lm + JOIN mahasiswa m ON lm.id_mahasiswa = m.id + JOIN lowongan_magang l ON lm.id_lowongan_magang = l.id + WHERE lm.id = ?; + `; + return db.execute(SQLQuery, [idLamaran]); +} + +export function getAllExportData() { + const SQLQuery = ` + SELECT + m.nama_depan, + m.nama_belakang, + m.email, + m.kontak, + m.jurusan, + l.posisi, + l.kelompok_peminatan + FROM + lamaran_magang lm + JOIN + mahasiswa m ON lm.id_mahasiswa = m.id + JOIN + lowongan_magang l ON lm.id_lowongan_magang = l.id; +`; + return db.execute(SQLQuery); +} + +export function deleteAllLamaranMagang() { + return db.execute('DELETE FROM lamaran_magang'); +} diff --git a/oldCode/models/lowonganMagang.js b/oldCode/models/lowonganMagang.js new file mode 100755 index 0000000..2a7df4d --- /dev/null +++ b/oldCode/models/lowonganMagang.js @@ -0,0 +1,55 @@ +import db from '../helpers/db/db_connection.js'; + +export function addlowonganMagang( + id, + posisi, + kelompok_peminatan, + jobdesk, + lokasi, + kualifikasi, + benefit, + durasi_awal, + durasi_akhir, + status_lowongan, + paid, + image_path +) { + const SQLQuery = `INSERT INTO lowongan_magang (id,posisi, kelompok_peminatan, jobdesk, lokasi, kualifikasi, benefit, durasi_awal, durasi_akhir, status_lowongan, paid,created_at,image_path) VALUES (?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(),?)`; + return db.execute(SQLQuery, [ + id, + posisi, + kelompok_peminatan, + jobdesk, + lokasi, + kualifikasi, + benefit, + durasi_awal, + durasi_akhir, + status_lowongan, + paid, + image_path, + ]); +} + +export function getAllLowonganMagang() { + return db.execute('SELECT * FROM lowongan_magang'); +} + +export function getLowonganMagangById(id) { + return db.execute('SELECT * FROM lowongan_magang WHERE id = ?', [id]); +} + +export function getLowonganByKelompokPeminatan(kelompok_peminatan) { + return db.execute( + 'SELECT * FROM lowongan_magang WHERE kelompok_peminatan = ?', + [kelompok_peminatan] + ); +} + +export function getAllKelompokPeminatan() { + return db.execute('SELECT DISTINCT kelompok_peminatan FROM lowongan_magang'); +} + +export function deleteLowonganMagangById(id) { + return db.execute('DELETE FROM lowongan_magang WHERE id = ?', [id]); +} diff --git a/oldCode/models/mahasiswa.js b/oldCode/models/mahasiswa.js new file mode 100755 index 0000000..cf66b07 --- /dev/null +++ b/oldCode/models/mahasiswa.js @@ -0,0 +1,45 @@ +import db from '../helpers/db/db_connection.js'; + +export function addMahasiswa( + nama_depan, + nama_belakang, + email, + kontak, + jurusan, + role, + cv_path, + portofolio_path, + motivasi, + relevant_skills +) { + const SQLQuery = + 'INSERT INTO mahasiswa (nama_depan, nama_belakang, email, kontak, jurusan, role, cv_path, portofolio_path, motivasi, relevant_skills) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; + return db.execute(SQLQuery, [ + nama_depan, + nama_belakang, + email, + kontak, + jurusan, + role, + cv_path, + portofolio_path, + motivasi, + relevant_skills, + ]); +} + +export function getAllMahasiswa() { + return db.execute('SELECT * FROM mahasiswa'); +} + +export function getMahasiswaById(id) { + return db.execute('SELECT * FROM mahasiswa WHERE id = ?', [id]); +} + +export function getMahasiswaByEmail(email) { + return db.execute('SELECT * FROM mahasiswa WHERE email = ?', [email]); +} + +export function deleteAllMahasiswa() { + return db.execute('DELETE FROM mahasiswa'); +} diff --git a/oldCode/models/partnership.js b/oldCode/models/partnership.js new file mode 100755 index 0000000..a97d930 --- /dev/null +++ b/oldCode/models/partnership.js @@ -0,0 +1,28 @@ +import db from '../config/db_connection.js'; + +export function addPartnership(nama_partner, image_path) { + const SQLQuery = + 'INSERT INTO partnership (nama_partner,image_path) VALUES (?, ?)'; + return db.execute(SQLQuery, [nama_partner, image_path]); +} + +export function getPartnership() { + return db.execute('SELECT * FROM partnership'); +} + +export function getPartnershipById(id) { + return db.execute('SELECT * FROM partnership WHERE id = ?', [id]); +} + +export function updatePartnership(id, nama_partner, image_path) { + const SQLQuery = ` + UPDATE partnership + SET nama_partner = ?, image_path = ? + WHERE id = ? + `; + return db.execute(SQLQuery, [nama_partner, image_path, id]); +} + +export function deletePartnership(id) { + return db.execute('DELETE FROM partnership WHERE id = ?', [id]); +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json old mode 100644 new mode 100755 index f33759f..eb989bd --- a/package-lock.json +++ b/package-lock.json @@ -1,56 +1,50 @@ { - "name": "internify-be", + "name": "be", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "internify-be", + "name": "be", "version": "1.0.0", + "hasInstallScript": true, "license": "ISC", "dependencies": { - "@prisma/client": "^6.19.3", - "bcryptjs": "^3.0.3", + "@prisma/client": "^6.16.2", + "@types/swagger-jsdoc": "^6.0.4", + "@types/swagger-ui-express": "^4.1.8", + "axios": "^1.9.0", + "bcrypt": "^5.1.1", "cors": "^2.8.5", - "dotenv": "^16.4.5", - "express": "^4.19.2", - "helmet": "^7.1.0", - "jsonwebtoken": "^9.0.3", - "morgan": "^1.10.0", - "multer": "^2.1.1", + "dotenv": "^16.5.0", + "exceljs": "^4.4.0", + "express": "^4.21.2", + "express-recaptcha": "^5.1.0", + "joi": "^18.0.1", + "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.2", + "mysql2": "^3.14.0", + "nodemailer": "^7.0.3", + "nodemon": "^3.1.10", + "qs": "^6.14.0", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", - "xlsx": "^0.18.5" + "uuid": "^11.1.0" }, "devDependencies": { - "@types/bcryptjs": "^2.4.6", - "@types/cors": "^2.8.17", - "@types/express": "^4.17.21", - "@types/jsonwebtoken": "^9.0.10", - "@types/morgan": "^1.9.9", - "@types/multer": "^2.1.0", - "@types/node": "^20.12.12", - "prisma": "^6.19.3", - "rimraf": "^5.0.7", - "ts-node-dev": "^2.0.0", - "tsx": "^4.22.3", - "typescript": "^5.4.5" + "prisma": "^6.16.2" } }, "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.0.1.tgz", - "integrity": "sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", + "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.15", + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" } }, "node_modules/@apidevtools/openapi-schemas": { @@ -69,538 +63,141 @@ "license": "MIT" }, "node_modules/@apidevtools/swagger-parser": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-12.1.0.tgz", - "integrity": "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", "license": "MIT", "dependencies": { - "@apidevtools/json-schema-ref-parser": "14.0.1", - "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", "@apidevtools/swagger-methods": "^3.0.2", - "ajv": "^8.17.1", - "ajv-draft-04": "^1.0.0", - "call-me-maybe": "^1.0.2" + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" }, "peerDependencies": { "openapi-types": ">=7" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", - "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", - "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", - "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", - "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", - "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", - "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", - "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", - "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", - "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", - "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", - "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", - "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", - "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", - "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", - "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", - "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", - "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", - "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", - "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", - "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", - "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", - "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", - "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", - "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", - "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", - "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, + "node_modules/@fast-csv/format/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/@hapi/address": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz", + "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + }, "engines": { - "node": ">=14" + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/formula": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", + "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/hoek": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/pinpoint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", + "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/tlds": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.3.tgz", + "integrity": "sha512-QIvUMB5VZ8HMLZF9A2oWr3AFM430QC8oGd0L35y2jHpuW6bIIca6x/xL7zUf4J7L9WJ3qjz+iJII8ncaeMbpSg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, "node_modules/@prisma/client": { - "version": "6.19.3", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.19.3.tgz", - "integrity": "sha512-mKq3jQFhjvko5LTJFHGilsuQs+W+T3Gm451NzuTDGQxwCzwXHYnIu2zGkRoW+Exq3Rob7yp2MfzSrdIiZVhrBg==", + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.16.2.tgz", + "integrity": "sha512-E00PxBcalMfYO/TWnXobBVUai6eW/g5OsifWQsQDzJYm7yaY+IRLo7ZLsaefi0QkTpxfuhFcQ/w180i6kX3iJw==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { @@ -620,66 +217,66 @@ } }, "node_modules/@prisma/config": { - "version": "6.19.3", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.19.3.tgz", - "integrity": "sha512-CBPT44BjlQxEt8kiMEauji2WHTDoVBOKl7UlewXmUgBPnr/oPRZC3psci5chJnYmH0ivEIog2OU9PGWoki3DLQ==", + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.16.2.tgz", + "integrity": "sha512-mKXSUrcqXj0LXWPmJsK2s3p9PN+aoAbyMx7m5E1v1FufofR1ZpPoIArjjzOIm+bJRLLvYftoNYLx1tbHgF9/yg==", "devOptional": true, "license": "Apache-2.0", "dependencies": { "c12": "3.1.0", "deepmerge-ts": "7.1.5", - "effect": "3.21.0", + "effect": "3.16.12", "empathic": "2.0.0" } }, "node_modules/@prisma/debug": { - "version": "6.19.3", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.19.3.tgz", - "integrity": "sha512-ljkJ+SgpXNktLG0Q/n4JGYCkKf0f8oYLyjImS2I8e2q2WCfdRRtWER062ZV/ixaNP2M2VKlWXVJiGzZaUgbKZw==", + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.2.tgz", + "integrity": "sha512-bo4/gA/HVV6u8YK2uY6glhNsJ7r+k/i5iQ9ny/3q5bt9ijCj7WMPUwfTKPvtEgLP+/r26Z686ly11hhcLiQ8zA==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.19.3", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.19.3.tgz", - "integrity": "sha512-RSYxtlYFl5pJ8ZePgMv0lZ9IzVCOdTPOegrs2qcbAEFrBI1G33h6wyC9kjQvo0DnYEhEVY0X4LsuFHXLKQk88g==", + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.16.2.tgz", + "integrity": "sha512-7yf3AjfPUgsg/l7JSu1iEhsmZZ/YE00yURPjTikqm2z4btM0bCl2coFtTGfeSOWbQMmq45Jab+53yGUIAT1sjA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.19.3", - "@prisma/engines-version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7", - "@prisma/fetch-engine": "6.19.3", - "@prisma/get-platform": "6.19.3" + "@prisma/debug": "6.16.2", + "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43", + "@prisma/fetch-engine": "6.16.2", + "@prisma/get-platform": "6.16.2" } }, "node_modules/@prisma/engines-version": { - "version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7.tgz", - "integrity": "sha512-03bgb1VD5gvuumNf+7fVGBzfpJPjmqV423l/WxsWk2cNQ42JD0/SsFBPhN6z8iAvdHs07/7ei77SKu7aZfq8bA==", + "version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43.tgz", + "integrity": "sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.19.3", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.19.3.tgz", - "integrity": "sha512-tKtl/qco9Nt7LU5iKhpultD8O4vMCZcU2CHjNTnRrL1QvSUr5W/GcyFPjNL87GtRrwBc7ubXXD9xy4EvLvt8JA==", + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.16.2.tgz", + "integrity": "sha512-wPnZ8DMRqpgzye758ZvfAMiNJRuYpz+rhgEBZi60ZqDIgOU2694oJxiuu3GKFeYeR/hXxso4/2oBC243t/whxQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.19.3", - "@prisma/engines-version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7", - "@prisma/get-platform": "6.19.3" + "@prisma/debug": "6.16.2", + "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43", + "@prisma/get-platform": "6.16.2" } }, "node_modules/@prisma/get-platform": { - "version": "6.19.3", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.19.3.tgz", - "integrity": "sha512-xFj1VcJ1N3MKooOQAGO0W5tsd0W2QzIvW7DD7c/8H14Zmp4jseeWAITm+w2LLoLrlhoHdPPh0NMZ8mfL6puoHA==", + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.16.2.tgz", + "integrity": "sha512-U/P36Uke5wS7r1+omtAgJpEB94tlT4SdlgaeTc6HVTTT93pXj7zZ+B/cZnmnvjcNPfWddgoDx8RLjmQwqGDYyA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.19.3" + "@prisma/debug": "6.16.2" } }, "node_modules/@scarf/scarf": { @@ -690,52 +287,15 @@ "license": "Apache-2.0" }, "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/bcryptjs": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz", - "integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==", - "dev": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", "license": "MIT" }, "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, + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "license": "MIT", "dependencies": { "@types/connect": "*", @@ -746,40 +306,26 @@ "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/express": { - "version": "4.17.25", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", - "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.1.tgz", + "integrity": "sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==", "license": "MIT", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "^1" + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.8", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", - "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", - "dev": true, + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -789,10 +335,9 @@ } }, "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, + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "license": "MIT" }, "node_modules/@types/json-schema": { @@ -801,122 +346,75 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", - "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*", - "@types/node": "*" - } - }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, "license": "MIT" }, - "node_modules/@types/morgan": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.10.tgz", - "integrity": "sha512-sS4A1zheMvsADRVfT0lYbJ4S9lmsey8Zo2F7cnbYjWHP67Q0AwMYuuzLlkIM2N8gAbb9cubhIVFwcIN2XyYCkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/multer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/multer/-/multer-2.1.0.tgz", - "integrity": "sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, "node_modules/@types/node": { - "version": "20.19.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", - "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", - "dev": true, + "version": "22.15.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", + "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } }, "node_modules/@types/qs": { - "version": "6.15.1", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", - "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", - "dev": true, + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", "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": "1.15.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", - "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "<1" - } - }, - "node_modules/@types/serve-static/node_modules/@types/send": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", - "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", - "dev": true, + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", - "dev": true, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/swagger-jsdoc": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/swagger-jsdoc/-/swagger-jsdoc-6.0.4.tgz", + "integrity": "sha512-W+Xw5epcOZrF/AooUM/PccNMSAFOKWZA5dasNyMujTwsBkU74njSJBpvCCJhHAJ95XRMzQrrW844Btu0uoetwQ==", "license": "MIT" }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true, - "license": "MIT" + "node_modules/@types/swagger-ui-express": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/swagger-ui-express/-/swagger-ui-express-4.1.8.tgz", + "integrity": "sha512-AhZV8/EIreHFmBV5wAs0gzJUNq9JbbSXgJLQubCC0jtIo6prnI9MIRRxnU4MZX9RB9yXxF1V4R7jtLl/Wcj31g==", + "license": "MIT", + "dependencies": { + "@types/express": "*", + "@types/serve-static": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" }, "node_modules/accepts": { "version": "1.3.8", @@ -931,103 +429,31 @@ "node": ">= 0.6" } }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "dev": true, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "license": "MIT", "dependencies": { - "acorn": "^8.11.0" + "debug": "4" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adler-32": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", - "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "node": ">= 6.0.0" } }, "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8" } }, "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", @@ -1043,12 +469,92 @@ "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", "license": "MIT" }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "license": "MIT", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/argparse": { "version": "2.0.1", @@ -1062,45 +568,104 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "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/axios": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, "license": "MIT" }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "safe-buffer": "5.1.2" + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 10.0.0" } }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } }, - "node_modules/bcryptjs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.3.tgz", - "integrity": "sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==", - "license": "BSD-3-Clause", - "bin": { - "bcrypt": "bin/bcrypt" + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" } }, "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" @@ -1109,45 +674,117 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", - "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "license": "MIT", "dependencies": { - "bytes": "~3.1.2", + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.15.1", - "raw-body": "~2.5.3", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", - "unpipe": "~1.0.0" + "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "dev": true, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "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" @@ -1156,6 +793,39 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -1168,6 +838,23 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -1217,6 +904,36 @@ } } }, + "node_modules/c12/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/c12/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "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", @@ -1252,33 +969,49 @@ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "license": "MIT" }, - "node_modules/cfb": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", - "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", - "license": "Apache-2.0", + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", "dependencies": { - "adler-32": "~1.3.0", - "crc-32": "~1.2.0" + "traverse": ">=0.3.0 <0.4" }, "engines": { - "node": ">=0.8" + "node": "*" } }, "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "devOptional": true, + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "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": ">= 14.16.0" + "node": ">= 8.10.0" }, "funding": { "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" } }, "node_modules/citty": { @@ -1291,35 +1024,27 @@ "consola": "^3.2.3" } }, - "node_modules/codepage": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", - "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8" + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.8" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/commander": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", @@ -1329,32 +1054,60 @@ "node": ">= 6" } }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, "license": "MIT" }, "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "engines": [ - "node >= 6.0" + "node >= 0.8" ], "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", - "readable-stream": "^3.0.2", + "readable-stream": "^2.2.2", "typedarray": "^0.0.6" } }, "node_modules/confbox": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", - "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", "devOptional": true, "license": "MIT" }, @@ -1368,6 +1121,12 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1390,24 +1149,30 @@ } }, "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "license": "MIT", "dependencies": { "object-assign": "^4", @@ -1415,10 +1180,6 @@ }, "engines": { "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/crc-32": { @@ -1433,34 +1194,54 @@ "node": ">=0.8" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" }, "engines": { - "node": ">= 8" + "node": ">= 10" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { - "ms": "2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/deepmerge-ts": { @@ -1474,12 +1255,36 @@ } }, "node_modules/defu": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", - "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "devOptional": true, "license": "MIT" }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "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", @@ -1506,14 +1311,13 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", "engines": { - "node": ">=0.3.1" + "node": ">=8" } }, "node_modules/doctrine": { @@ -1554,23 +1358,15 @@ "node": ">= 0.4" } }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", - "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", - "dev": true, - "license": "MIT", + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", "dependencies": { - "xtend": "^4.0.0" + "readable-stream": "^2.0.2" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1587,9 +1383,9 @@ "license": "MIT" }, "node_modules/effect": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/effect/-/effect-3.21.0.tgz", - "integrity": "sha512-PPN80qRokCd1f015IANNhrwOnLO7GrrMQfk4/lnZRE/8j7UPWrNNjPV0uBrZutI/nHzernbW+J0hdqQysHiSnQ==", + "version": "3.16.12", + "resolved": "https://registry.npmjs.org/effect/-/effect-3.16.12.tgz", + "integrity": "sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -1598,10 +1394,9 @@ } }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/empathic": { @@ -1623,6 +1418,15 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -1642,9 +1446,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "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" @@ -1653,46 +1457,19 @@ "node": ">= 0.4" } }, - "node_modules/esbuild": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", - "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", - "dev": true, - "hasInstallScript": true, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.0", - "@esbuild/android-arm": "0.28.0", - "@esbuild/android-arm64": "0.28.0", - "@esbuild/android-x64": "0.28.0", - "@esbuild/darwin-arm64": "0.28.0", - "@esbuild/darwin-x64": "0.28.0", - "@esbuild/freebsd-arm64": "0.28.0", - "@esbuild/freebsd-x64": "0.28.0", - "@esbuild/linux-arm": "0.28.0", - "@esbuild/linux-arm64": "0.28.0", - "@esbuild/linux-ia32": "0.28.0", - "@esbuild/linux-loong64": "0.28.0", - "@esbuild/linux-mips64el": "0.28.0", - "@esbuild/linux-ppc64": "0.28.0", - "@esbuild/linux-riscv64": "0.28.0", - "@esbuild/linux-s390x": "0.28.0", - "@esbuild/linux-x64": "0.28.0", - "@esbuild/netbsd-arm64": "0.28.0", - "@esbuild/netbsd-x64": "0.28.0", - "@esbuild/openbsd-arm64": "0.28.0", - "@esbuild/openbsd-x64": "0.28.0", - "@esbuild/openharmony-arm64": "0.28.0", - "@esbuild/sunos-x64": "0.28.0", - "@esbuild/win32-arm64": "0.28.0", - "@esbuild/win32-ia32": "0.28.0", - "@esbuild/win32-x64": "0.28.0" + "node": ">= 0.4" } }, "node_modules/escape-html": { @@ -1719,41 +1496,83 @@ "node": ">= 0.6" } }, - "node_modules/express": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", - "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", + "node_modules/exceljs": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.4.0.tgz", + "integrity": "sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==", + "license": "MIT", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.10.1", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/exceljs/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/exceljs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "~1.20.5", - "content-disposition": "~0.5.4", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "~2.4.1", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", - "qs": "~6.15.1", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", - "statuses": "~2.0.1", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -1766,10 +1585,48 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express-recaptcha": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express-recaptcha/-/express-recaptcha-5.1.0.tgz", + "integrity": "sha512-L9BSaHbwVzEAf38LNnFwEbk4qpX1LiD1z8viBGYBuxyBWWVKMgBrKDb1mNLq6uSxubJzZbyIz+0ldgTSXfxsvQ==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/exsolve": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", - "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", "devOptional": true, "license": "MIT" }, @@ -1796,33 +1653,23 @@ "node": ">=8.0.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "license": "MIT", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } }, "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" @@ -1832,37 +1679,71 @@ } }, "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "~2.4.1", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~2.0.2", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 6" } }, "node_modules/forwarded": { @@ -1874,15 +1755,6 @@ "node": ">= 0.6" } }, - "node_modules/frac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", - "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -1892,18 +1764,46 @@ "node": ">= 0.6" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, "license": "ISC" }, "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, @@ -1914,6 +1814,35 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -1923,6 +1852,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "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", @@ -1979,22 +1938,21 @@ } }, "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2004,7 +1962,6 @@ "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" @@ -2025,6 +1982,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "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==", + "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", @@ -2037,10 +2009,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "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" @@ -2049,53 +2042,84 @@ "node": ">= 0.4" } }, - "node_modules/helmet": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.2.0.tgz", - "integrity": "sha512-ZRiwvN089JfMXokizgqEPXsl2Guk094yExfoDXR0cBYWxtBbaSww/w+vT4WEJsBW2iTUi1GgZ6swmoug3Oy4Xw==", - "license": "MIT", - "engines": { - "node": ">=16.0.0" - } - }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "engines": { + "node": ">= 6" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "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==", + "license": "ISC" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -2121,7 +2145,6 @@ "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" @@ -2130,27 +2153,10 @@ "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "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" @@ -2160,7 +2166,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2170,7 +2175,6 @@ "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" @@ -2183,58 +2187,55 @@ "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/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" + "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/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, "node_modules/jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.0.tgz", + "integrity": "sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==", "devOptional": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/joi": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.1.tgz", + "integrity": "sha512-IiQpRyypSnLisQf3PwuN2eIHAsAIGZIrLZkd4zdvIar2bDyhM91ubRjy8a3eYablXsh9BeI/c7dmPYHca5qtoA==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/address": "^5.1.1", + "@hapi/formula": "^3.0.2", + "@hapi/hoek": "^11.0.7", + "@hapi/pinpoint": "^2.0.1", + "@hapi/tlds": "^1.1.1", + "@hapi/topo": "^6.0.2", + "@standard-schema/spec": "^1.0.0" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/js-yaml": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", - "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -2243,19 +2244,13 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/jsonwebtoken": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", - "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "license": "MIT", "dependencies": { - "jws": "^4.0.1", + "jws": "^3.2.2", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", @@ -2271,33 +2266,103 @@ "npm": ">=6" } }, - "node_modules/jsonwebtoken/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/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } }, "node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "license": "MIT", "dependencies": { - "buffer-equal-constant-time": "^1.0.1", + "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "node_modules/jws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "license": "MIT", "dependencies": { - "jwa": "^2.0.1", + "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "license": "ISC" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "license": "MIT" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", + "license": "MIT" + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -2310,12 +2375,31 @@ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "license": "MIT" }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "license": "MIT" + }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "license": "MIT" }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", + "license": "MIT" + }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", @@ -2334,6 +2418,12 @@ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", + "license": "MIT" + }, "node_modules/lodash.mergewith": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", @@ -2346,19 +2436,71 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "license": "MIT" }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "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-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/lru.min": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz", + "integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==", + "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/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/math-intrinsics": { "version": "1.1.0", @@ -2430,104 +2572,126 @@ } }, "node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, "bin": { "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/morgan": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", - "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", - "license": "MIT", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.1.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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/multer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", - "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "version": "1.4.5-lts.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", + "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", "license": "MIT", "dependencies": { "append-field": "^1.0.0", - "busboy": "^1.6.0", - "concat-stream": "^2.0.0", - "type-is": "^1.6.18" + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" }, "engines": { - "node": ">= 10.16.0" + "node": ">= 6.0.0" + } + }, + "node_modules/mysql2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.0.tgz", + "integrity": "sha512-8eMhmG6gt/hRkU1G+8KlGOdQi2w+CgtNoD1ksXZq9gQfkfDsX4LHaBwTe1SY0Imx//t2iZA03DFnyYKPinxSRw==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.1", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru.min": "^1.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "license": "MIT", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" } }, "node_modules/negotiator": { @@ -2539,6 +2703,32 @@ "node": ">= 0.6" } }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-fetch-native": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", @@ -2546,41 +2736,100 @@ "devOptional": true, "license": "MIT" }, + "node_modules/nodemailer": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.9.tgz", + "integrity": "sha512-9/Qm0qXIByEP8lEV2qOqcAW7bRpL8CR9jcTwk3NBnHJNmP9fIJ86g2fgmIXqHY+nj55ZEMwWqYAT2QTDpRUYiQ==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nodemon": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "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/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "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/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/nypm": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.6.tgz", - "integrity": "sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", + "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", "devOptional": true, "license": "MIT", "dependencies": { - "citty": "^0.2.2", + "citty": "^0.1.6", + "consola": "^3.4.2", "pathe": "^2.0.3", - "tinyexec": "^1.1.1" + "pkg-types": "^2.3.0", + "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" }, "engines": { - "node": ">=18" + "node": "^14.16.0 || >=16.10.0" } }, - "node_modules/nypm/node_modules/citty": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.2.tgz", - "integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==", - "devOptional": true, - "license": "MIT" - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2621,20 +2870,10 @@ "node": ">= 0.8" } }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "license": "MIT", - "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==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -2647,11 +2886,11 @@ "license": "MIT", "peer": true }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" }, "node_modules/parseurl": { "version": "1.3.3", @@ -2666,49 +2905,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/path-to-regexp": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", - "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, "node_modules/pathe": { @@ -2726,10 +2931,9 @@ "license": "MIT" }, "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, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -2739,28 +2943,27 @@ } }, "node_modules/pkg-types": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", - "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", "devOptional": true, "license": "MIT", "dependencies": { - "confbox": "^0.2.4", - "exsolve": "^1.0.8", + "confbox": "^0.2.2", + "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "node_modules/prisma": { - "version": "6.19.3", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.19.3.tgz", - "integrity": "sha512-++ZJ0ijLrDJF6hNB4t4uxg2br3fC4H9Yc9tcbjr2fcNFP3rh/SBNrAgjhsqBU4Ght8JPrVofG/ZkXfnSfnYsFg==", + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.16.2.tgz", + "integrity": "sha512-aRvldGE5UUJTtVmFiH3WfNFNiqFlAtePUxcI0UEGlnXCX7DqhiMT5TRYwncHFeA/Reca5W6ToXXyCMTeFPdSXA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { - "@prisma/config": "6.19.3", - "@prisma/engines": "6.19.3" + "@prisma/config": "6.16.2", + "@prisma/engines": "6.16.2" }, "bin": { "prisma": "build/index.js" @@ -2777,6 +2980,12 @@ } } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2790,6 +2999,17 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "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==", + "license": "MIT" + }, "node_modules/pure-rand": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", @@ -2808,9 +3028,9 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -2832,20 +3052,32 @@ } }, "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rc9": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", @@ -2858,75 +3090,79 @@ } }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", - "dev": true, + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "picomatch": "^2.2.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.10.0" } }, "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "license": "ISC", "dependencies": { - "glob": "^10.3.7" + "glob": "^7.1.3" }, "bin": { - "rimraf": "dist/esm/bin.mjs" + "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2958,10 +3194,22 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -2971,77 +3219,91 @@ } }, "node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~2.0.0", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.4.1", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~2.0.2" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/send/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==", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, "node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "~0.19.1" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "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/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -3062,13 +3324,13 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "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.4" + "object-inspect": "^1.13.3" }, "engines": { "node": ">= 0.4" @@ -3115,54 +3377,36 @@ } }, "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, + "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==", "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "license": "Apache-2.0", - "dependencies": { - "frac": "~1.1.2" + "semver": "^7.5.3" }, "engines": { - "node": ">=0.8" + "node": ">=10" + } + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -3177,38 +3421,24 @@ } }, "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -3219,58 +3449,10 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -3279,182 +3461,75 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, + "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==", "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { "node": ">=4" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/swagger-jsdoc": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.3.0.tgz", - "integrity": "sha512-I+iQjVGV3t28pOkQUJv2MncthvOtkEactOn8R76SvSYhxgtIn7FoqfDHwQaN+GBnQdXQLrhgDXseKitmJcHMsA==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", + "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==", "license": "MIT", "dependencies": { - "@apidevtools/swagger-parser": "^12.1.0", "commander": "6.2.0", "doctrine": "3.0.0", - "glob": "11.1.0", + "glob": "7.1.6", "lodash.mergewith": "^4.6.2", + "swagger-parser": "^10.0.3", "yaml": "2.0.0-1" }, "bin": { "swagger-jsdoc": "bin/swagger-jsdoc.js" }, "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/swagger-jsdoc/node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/swagger-jsdoc/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==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/swagger-jsdoc/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "node": ">=12.0.0" } }, "node_modules/swagger-jsdoc/node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "BlueOak-1.0.0", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "20 || >=22" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/swagger-jsdoc/node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "license": "BlueOak-1.0.0", + "node_modules/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^9.0.0" + "@apidevtools/swagger-parser": "10.0.3" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/swagger-jsdoc/node_modules/lru-cache": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", - "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/swagger-jsdoc/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "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/swagger-jsdoc/node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, "node_modules/swagger-ui-dist": { - "version": "5.32.6", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.6.tgz", - "integrity": "sha512-75ttZNaYCLoFPnozPZcTUU6mS3wKT8l7WLjU5zJSHFeJa23i5vtnze6IiCl4jDMPeQTXVXIgovq4M11NNfQvSA==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.21.0.tgz", + "integrity": "sha512-E0K3AB6HvQd8yQNSMR7eE5bk+323AUxjtCz/4ZNKiahOlPhPJxqn3UPIGs00cyY/dhrTDJ61L7C/a8u6zhGrZg==", "license": "Apache-2.0", "dependencies": { "@scarf/scarf": "=1.4.0" @@ -3475,21 +3550,85 @@ "express": ">=4.0.0 || >=5.0.0-beta" } }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/tinyexec": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.2.tgz", - "integrity": "sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", "devOptional": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=14.14" } }, "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" @@ -3507,223 +3646,28 @@ "node": ">=0.6" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node-dev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", - "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^10.4.0", - "tsconfig": "^7.0.0" - }, - "bin": { - "ts-node-dev": "lib/bin.js", - "tsnd": "lib/bin.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "node-notifier": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/ts-node-dev/node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/ts-node-dev/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/ts-node-dev/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11", "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ts-node-dev/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ts-node-dev/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/ts-node-dev/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsx": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.3.tgz", - "integrity": "sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.28.0" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" } }, "node_modules/type-is": { @@ -3745,26 +3689,16 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "license": "MIT" }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "license": "Apache-2.0", - "peer": true, - "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==", + "license": "MIT" }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, "license": "MIT" }, "node_modules/unpipe": { @@ -3776,6 +3710,24 @@ "node": ">= 0.8" } }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "license": "MIT", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3791,12 +3743,27 @@ "node": ">= 0.4.0" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.15.15", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", + "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } }, "node_modules/vary": { "version": "1.1.2", @@ -3807,175 +3774,58 @@ "node": ">= 0.8" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "license": "ISC", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "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==", - "dev": true, "license": "ISC" }, - "node_modules/xlsx": { - "version": "0.18.5", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", - "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", - "license": "Apache-2.0", - "dependencies": { - "adler-32": "~1.3.0", - "cfb": "~1.2.1", - "codepage": "~1.15.0", - "crc-32": "~1.2.1", - "ssf": "~0.11.2", - "wmf": "~1.0.1", - "word": "~0.3.0" - }, - "bin": { - "xlsx": "bin/xlsx.njs" - }, - "engines": { - "node": ">=0.8" - } + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, "node_modules/yaml": { "version": "2.0.0-1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", @@ -3985,14 +3835,83 @@ "node": ">= 6" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", "license": "MIT", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, "engines": { - "node": ">=6" + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/z-schema/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "license": "MIT", + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } } } diff --git a/package.json b/package.json old mode 100644 new mode 100755 index a0d1041..26b097f --- a/package.json +++ b/package.json @@ -1,47 +1,41 @@ { - "name": "internify-be", + "name": "be", "version": "1.0.0", - "description": "Internify Backend Server", - "main": "dist/index.js", + "main": "index.js", + "type": "commonjs", "scripts": { - "build": "rimraf dist && tsc", - "start": "node dist/index.js", - "dev": "ts-node-dev --respawn --transpile-only src/index.ts", - "db:generate": "prisma generate", - "db:studio": "prisma studio", - "db:migrate": "prisma migrate dev", - "db:seed": "prisma db seed", - "db:reset": "prisma migrate reset" + "dev": "nodemon ./src/index.js", + "start": "node ./src/index.js", + "build": "prisma generate && prisma migrate deploy", + "postinstall": "prisma generate", + "vercel-build": "prisma generate && prisma migrate deploy" }, - "keywords": [], "author": "", "license": "ISC", + "description": "", "dependencies": { - "@prisma/client": "^6.19.3", - "bcryptjs": "^3.0.3", + "@prisma/client": "^6.16.2", + "@types/swagger-jsdoc": "^6.0.4", + "@types/swagger-ui-express": "^4.1.8", + "axios": "^1.9.0", + "bcrypt": "^5.1.1", "cors": "^2.8.5", - "dotenv": "^16.4.5", - "express": "^4.19.2", - "helmet": "^7.1.0", - "jsonwebtoken": "^9.0.3", - "morgan": "^1.10.0", - "multer": "^2.1.1", + "dotenv": "^16.5.0", + "exceljs": "^4.4.0", + "express": "^4.21.2", + "express-recaptcha": "^5.1.0", + "joi": "^18.0.1", + "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.2", + "mysql2": "^3.14.0", + "nodemailer": "^7.0.3", + "nodemon": "^3.1.10", + "qs": "^6.14.0", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", - "xlsx": "^0.18.5" + "uuid": "^11.1.0" }, "devDependencies": { - "@types/bcryptjs": "^2.4.6", - "@types/cors": "^2.8.17", - "@types/express": "^4.17.21", - "@types/jsonwebtoken": "^9.0.10", - "@types/morgan": "^1.9.9", - "@types/multer": "^2.1.0", - "@types/node": "^20.12.12", - "prisma": "^6.19.3", - "rimraf": "^5.0.7", - "ts-node-dev": "^2.0.0", - "tsx": "^4.22.3", - "typescript": "^5.4.5" + "prisma": "^6.16.2" } -} \ No newline at end of file +} diff --git a/prisma.config.ts b/prisma.config.ts deleted file mode 100644 index ae97446..0000000 --- a/prisma.config.ts +++ /dev/null @@ -1,13 +0,0 @@ - -// This file was generated by Prisma and assumes you have installed the following: -// npm install --save-dev prisma dotenv -import 'dotenv/config'; -import { defineConfig } from 'prisma/config'; - -export default defineConfig({ - schema: 'prisma/schema.prisma', - migrations: { - path: 'prisma/migrations', - seed: 'tsx prisma/seed.ts', - }, -}); diff --git a/prisma/migrations/20260523212558_init/migration.sql b/prisma/migrations/20251116160821_init/migration.sql old mode 100644 new mode 100755 similarity index 51% rename from prisma/migrations/20260523212558_init/migration.sql rename to prisma/migrations/20251116160821_init/migration.sql index 8f1007a..6ef4c82 --- a/prisma/migrations/20260523212558_init/migration.sql +++ b/prisma/migrations/20251116160821_init/migration.sql @@ -1,43 +1,139 @@ -- CreateTable -CREATE TABLE `user` ( - `id` VARCHAR(191) NOT NULL, +CREATE TABLE `admin` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `nama_depan` VARCHAR(255) NOT NULL, + `nama_belakang` VARCHAR(255) NOT NULL, + `role` ENUM('admin') NOT NULL DEFAULT 'admin', `email` VARCHAR(255) NOT NULL, - `password_hash` TEXT NOT NULL, - `role` ENUM('ADMIN', 'STUDENT') NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - `updated_at` DATETIME(3) NOT NULL, + `password` TEXT NOT NULL, + `signature` TEXT NULL, - UNIQUE INDEX `user_email_key`(`email`), + UNIQUE INDEX `admin_email_key`(`email`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable -CREATE TABLE `admin` ( +CREATE TABLE `hasil_research` ( `id` INTEGER NOT NULL AUTO_INCREMENT, - `id_user` VARCHAR(191) NOT NULL, - `nama_depan` VARCHAR(255) NOT NULL, - `nama_belakang` VARCHAR(255) NULL, + `image_path` TEXT NOT NULL, + `nama_project` VARCHAR(255) NOT NULL, + `deskripsi` VARCHAR(255) NOT NULL, + `link_project` TEXT NOT NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `lamaran_magang` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `id_mahasiswa` INTEGER NOT NULL, + `id_lowongan_magang` VARCHAR(255) NOT NULL, + `status` ENUM('diterima', 'diproses', 'ditolak') NOT NULL, + `batch` INTEGER NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `update_at` DATETIME(3) NOT NULL, + + INDEX `lamaran_magang_id_mahasiswa_foreign`(`id_mahasiswa`), + INDEX `lamaran_magang_id_lowongan_magang_foreign`(`id_lowongan_magang`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `lowongan_magang` ( + `id` VARCHAR(255) NOT NULL, + `posisi` VARCHAR(255) NOT NULL, + `kelompok_peminatan` VARCHAR(255) NOT NULL, + `image_path` TEXT NOT NULL, + `jobdesk` TEXT NOT NULL, + `lokasi` VARCHAR(255) NOT NULL, + `kualifikasi` TEXT NOT NULL, + `benefit` TEXT NOT NULL, + `durasi_awal` DATE NOT NULL, + `durasi_akhir` DATE NOT NULL, + `batch` INTEGER NULL, + `status_lowongan` ENUM('dibuka', 'ditutup') NOT NULL, + `paid` ENUM('paid', 'unpaid') NOT NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - UNIQUE INDEX `admin_id_user_key`(`id_user`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `mahasiswa` ( `id` INTEGER NOT NULL AUTO_INCREMENT, - `id_user` VARCHAR(191) NOT NULL, `nama_depan` VARCHAR(255) NOT NULL, `nama_belakang` VARCHAR(255) NULL, + `email` VARCHAR(255) NOT NULL, `kontak` VARCHAR(255) NOT NULL, `jurusan` VARCHAR(255) NOT NULL, `universitas` VARCHAR(255) NOT NULL, `negara` VARCHAR(255) NOT NULL, + `role` ENUM('student') NOT NULL DEFAULT 'student', `cv_path` TEXT NOT NULL, `portofolio_path` TEXT NOT NULL, `motivasi` TEXT NOT NULL, `relevant_skills` VARCHAR(255) NOT NULL, - UNIQUE INDEX `mahasiswa_id_user_key`(`id_user`), + UNIQUE INDEX `mahasiswa_email_key`(`email`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `partnership` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `nama_partner` VARCHAR(255) NOT NULL, + `image_path` TEXT NOT NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `faq` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `pertanyaan` TEXT NOT NULL, + `jawaban` TEXT NOT NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `riwayat_pelamar` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `batch` INTEGER NOT NULL, + `negara` VARCHAR(255) NULL, + `posisi` VARCHAR(255) NULL, + `tahun` INTEGER NOT NULL, + `jumlah` INTEGER NOT NULL, + `pelamar_diterima` INTEGER NOT NULL, + `pelamar_ditolak` INTEGER NOT NULL, + `pelamar_diproses` INTEGER NOT NULL, + `presentase_diterima` DOUBLE NOT NULL, + `presentase_ditolak` DOUBLE NOT NULL, + `presentase_diproses` DOUBLE NOT NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + INDEX `riwayat_pelamar_batch_idx`(`batch`), + INDEX `riwayat_pelamar_negara_idx`(`negara`), + INDEX `riwayat_pelamar_posisi_idx`(`posisi`), + UNIQUE INDEX `riwayat_pelamar_batch_negara_posisi_key`(`batch`, `negara`, `posisi`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `feedback` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `nama` VARCHAR(255) NOT NULL, + `universitas` VARCHAR(255) NOT NULL, + `pesan` TEXT NOT NULL, + `batch` INTEGER NOT NULL, + `posisi` VARCHAR(255) NOT NULL, + `tahun` INTEGER NOT NULL, + `image_path` TEXT NOT NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; @@ -55,55 +151,6 @@ CREATE TABLE `batch` ( PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; --- CreateTable -CREATE TABLE `lowongan_magang` ( - `id` VARCHAR(255) NOT NULL, - `id_batch` INTEGER NOT NULL, - `posisi` VARCHAR(255) NOT NULL, - `kelompok_peminatan` VARCHAR(255) NOT NULL, - `image_path` TEXT NOT NULL, - `jobdesk` TEXT NOT NULL, - `lokasi` VARCHAR(255) NOT NULL, - `kualifikasi` TEXT NOT NULL, - `benefit` TEXT NOT NULL, - `durasi_awal` DATE NOT NULL, - `durasi_akhir` DATE NOT NULL, - `status_lowongan` ENUM('DIBUKA', 'DITUTUP') NOT NULL, - `paid` ENUM('PAID', 'UNPAID') NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - - INDEX `lowongan_magang_id_batch_foreign`(`id_batch`), - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `lamaran_magang` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `id_mahasiswa` INTEGER NOT NULL, - `id_lowongan_magang` VARCHAR(255) NOT NULL, - `status` ENUM('DITERIMA', 'DIPROSES', 'DITOLAK') NOT NULL, - `batch` INTEGER NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - `updated_at` DATETIME(3) NOT NULL, - - INDEX `lamaran_magang_id_mahasiswa_foreign`(`id_mahasiswa`), - INDEX `lamaran_magang_id_lowongan_magang_foreign`(`id_lowongan_magang`), - INDEX `lamaran_magang_batch_idx`(`batch`), - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- AddForeignKey -ALTER TABLE `admin` ADD CONSTRAINT `admin_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE `mahasiswa` ADD CONSTRAINT `mahasiswa_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE `lowongan_magang` ADD CONSTRAINT `lowongan_magang_id_batch_foreign` FOREIGN KEY (`id_batch`) REFERENCES `batch`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE `lamaran_magang` ADD CONSTRAINT `lamaran_magang_batch_foreign` FOREIGN KEY (`batch`) REFERENCES `batch`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; - -- AddForeignKey ALTER TABLE `lamaran_magang` ADD CONSTRAINT `lamaran_magang_id_mahasiswa_foreign` FOREIGN KEY (`id_mahasiswa`) REFERENCES `mahasiswa`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20251116170005_add_batch_index_to_lowongan/migration.sql b/prisma/migrations/20251116170005_add_batch_index_to_lowongan/migration.sql new file mode 100755 index 0000000..5af5b64 --- /dev/null +++ b/prisma/migrations/20251116170005_add_batch_index_to_lowongan/migration.sql @@ -0,0 +1,16 @@ +/* + Warnings: + + - You are about to drop the column `batch` on the `lowongan_magang` table. All the data in the column will be lost. + - Added the required column `id_batch` to the `lowongan_magang` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE `lowongan_magang` DROP COLUMN `batch`, + ADD COLUMN `id_batch` INTEGER NOT NULL; + +-- CreateIndex +CREATE INDEX `lowongan_magang_id_batch_foreign` ON `lowongan_magang`(`id_batch`); + +-- AddForeignKey +ALTER TABLE `lowongan_magang` ADD CONSTRAINT `lowongan_magang_id_batch_foreign` FOREIGN KEY (`id_batch`) REFERENCES `batch`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20260112094610_add_relation_batch_and_lamaran/migration.sql b/prisma/migrations/20260112094610_add_relation_batch_and_lamaran/migration.sql new file mode 100755 index 0000000..bd10293 --- /dev/null +++ b/prisma/migrations/20260112094610_add_relation_batch_and_lamaran/migration.sql @@ -0,0 +1,5 @@ +-- CreateIndex +CREATE INDEX `lamaran_magang_batch_idx` ON `lamaran_magang`(`batch`); + +-- AddForeignKey +ALTER TABLE `lamaran_magang` ADD CONSTRAINT `lamaran_magang_batch_foreign` FOREIGN KEY (`batch`) REFERENCES `batch`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20260531095731_import_remaining_schemas/migration.sql b/prisma/migrations/20260531095731_import_remaining_schemas/migration.sql deleted file mode 100644 index 964209c..0000000 --- a/prisma/migrations/20260531095731_import_remaining_schemas/migration.sql +++ /dev/null @@ -1,69 +0,0 @@ --- CreateTable -CREATE TABLE `riwayat_pelamar` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `batch` INTEGER NOT NULL, - `negara` VARCHAR(255) NULL, - `posisi` VARCHAR(255) NULL, - `tahun` INTEGER NOT NULL, - `jumlah` INTEGER NOT NULL, - `pelamar_diterima` INTEGER NOT NULL, - `pelamar_ditolak` INTEGER NOT NULL, - `pelamar_diproses` INTEGER NOT NULL, - `presentase_diterima` DOUBLE NOT NULL, - `presentase_ditolak` DOUBLE NOT NULL, - `presentase_diproses` DOUBLE NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - - INDEX `riwayat_pelamar_batch_idx`(`batch`), - INDEX `riwayat_pelamar_negara_idx`(`negara`), - INDEX `riwayat_pelamar_posisi_idx`(`posisi`), - UNIQUE INDEX `riwayat_pelamar_batch_negara_posisi_key`(`batch`, `negara`, `posisi`), - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `feedback` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `nama` VARCHAR(255) NOT NULL, - `universitas` VARCHAR(255) NOT NULL, - `pesan` TEXT NOT NULL, - `batch` INTEGER NOT NULL, - `posisi` VARCHAR(255) NOT NULL, - `tahun` INTEGER NOT NULL, - `image_path` TEXT NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `hasil_research` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `image_path` TEXT NOT NULL, - `nama_project` VARCHAR(255) NOT NULL, - `deskripsi` VARCHAR(255) NOT NULL, - `link_project` TEXT NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `partnership` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `nama_partner` VARCHAR(255) NOT NULL, - `image_path` TEXT NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `faq` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `pertanyaan` TEXT NOT NULL, - `jawaban` TEXT NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml old mode 100644 new mode 100755 diff --git a/prisma/prisma.config.js b/prisma/prisma.config.js new file mode 100755 index 0000000..250881e --- /dev/null +++ b/prisma/prisma.config.js @@ -0,0 +1,9 @@ +import { defineConfig } from '@prisma/client'; + +export default defineConfig({ + datasources: { + db: { + url: process.env.DATABASE_URL, + }, + }, +}); diff --git a/prisma/schema.prisma b/prisma/schema.prisma old mode 100644 new mode 100755 index a4178fd..1ee42f3 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,6 +1,11 @@ -//docs: https://www.prisma.io/docs/orm/v6/prisma-schema/overview +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? +// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init + generator client { - provider = "prisma-client" + provider = "prisma-client-js" output = "../src/generated/prisma" } @@ -9,147 +14,125 @@ datasource db { url = env("DATABASE_URL") } -enum Role { - ADMIN - STUDENT -} - -enum StatusLamaran { - DITERIMA - DIPROSES - DITOLAK -} - -enum PaidStatus { - PAID - UNPAID -} - -enum StatusLowongan { - DIBUKA - DITUTUP -} - -model User { - id String @id @default(cuid()) - email String @unique @db.VarChar(255) - passwordHash String @map("password_hash") @db.Text - role Role - // ... - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - - admin Admin? - mahasiswa Mahasiswa? - - @@map("user") -} - model Admin { - id Int @id @default(autoincrement()) - idUser String @unique @map("id_user") - namaDepan String @map("nama_depan") @db.VarChar(255) - namaBelakang String? @map("nama_belakang") @db.VarChar(255) - - user User @relation(fields: [idUser], references: [id], map: "admin_id_user_foreign") + id Int @id @default(autoincrement()) + nama_depan String @db.VarChar(255) + nama_belakang String @db.VarChar(255) + role Role @default(admin) + email String @unique @db.VarChar(255) + password String @db.Text + signature String? @db.Text // singature untuk identifikasi auth jwt (best practice) @@map("admin") } -model Mahasiswa { - id Int @id @default(autoincrement()) - idUser String @unique @map("id_user") - namaDepan String @map("nama_depan") @db.VarChar(255) - namaBelakang String? @map("nama_belakang") @db.VarChar(255) - kontak String @db.VarChar(255) - jurusan String @db.VarChar(255) - universitas String @db.VarChar(255) - negara String @db.VarChar(255) - cvPath String @map("cv_path") @db.Text - portofolioPath String @map("portofolio_path") @db.Text - motivasi String @db.Text - relevantSkills String @map("relevant_skills") @db.VarChar(255) +model HasilResearch { + id Int @id @default(autoincrement()) + image_path String @db.Text + nama_project String @db.VarChar(255) + deskripsi String @db.VarChar(255) + link_project String @db.Text + created_at DateTime @default(now()) - user User @relation(fields: [idUser], references: [id], map: "mahasiswa_id_user_foreign") - - lamaranMagangs LamaranMagang[] - - @@map("mahasiswa") -} - -model Batch { - id Int @id @default(autoincrement()) - batchNumber Int @unique @map("batch_number") - isActive Boolean @default(false) @map("is_active") - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - - lowonganMagangs LowonganMagang[] - lamaranMagangs LamaranMagang[] - - @@index([isActive]) - @@index([batchNumber]) - @@map("batch") -} - -model LowonganMagang { - id String @id @db.VarChar(255) - idBatch Int @map("id_batch") - posisi String @db.VarChar(255) - kelompokPeminatan String @map("kelompok_peminatan") @db.VarChar(255) - imagePath String @map("image_path") @db.Text - jobdesk String @db.Text - lokasi String @db.VarChar(255) - kualifikasi String @db.Text - benefit String @db.Text - durasiAwal DateTime @map("durasi_awal") @db.Date - durasiAkhir DateTime @map("durasi_akhir") @db.Date - statusLowongan StatusLowongan @map("status_lowongan") - paid PaidStatus - createdAt DateTime @default(now()) @map("created_at") - - batch Batch @relation(fields: [idBatch], references: [id], map: "lowongan_magang_id_batch_foreign") - - lamaranMagangs LamaranMagang[] - - @@index([idBatch], map: "lowongan_magang_id_batch_foreign") - @@map("lowongan_magang") + @@map("hasil_research") } model LamaranMagang { - id Int @id @default(autoincrement()) - idMahasiswa Int @map("id_mahasiswa") - idLowonganMagang String @map("id_lowongan_magang") @db.VarChar(255) - status StatusLamaran - batch Int? + id Int @id @default(autoincrement()) + id_mahasiswa Int + id_lowongan_magang String @db.VarChar(255) + status StatusLamaran + batch Int? - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") + created_at DateTime @default(now()) + update_at DateTime - batchData Batch? @relation(fields: [batch], references: [id], map: "lamaran_magang_batch_foreign") - mahasiswa Mahasiswa @relation(fields: [idMahasiswa], references: [id], map: "lamaran_magang_id_mahasiswa_foreign") - lowonganMagang LowonganMagang @relation(fields: [idLowonganMagang], references: [id], map: "lamaran_magang_id_lowongan_magang_foreign") + batch_data Batch? @relation(fields: [batch], references: [id], map: "lamaran_magang_batch_foreign") + mahasiswa Mahasiswa @relation(fields: [id_mahasiswa], references: [id], map: "lamaran_magang_id_mahasiswa_foreign") + lowongan_magang LowonganMagang @relation(fields: [id_lowongan_magang], references: [id], map: "lamaran_magang_id_lowongan_magang_foreign") - @@index([idMahasiswa], map: "lamaran_magang_id_mahasiswa_foreign") - @@index([idLowonganMagang], map: "lamaran_magang_id_lowongan_magang_foreign") + @@index([id_mahasiswa], map: "lamaran_magang_id_mahasiswa_foreign") + @@index([id_lowongan_magang], map: "lamaran_magang_id_lowongan_magang_foreign") @@index([batch]) @@map("lamaran_magang") } +model LowonganMagang { + id String @id @db.VarChar(255) + posisi String @db.VarChar(255) + kelompok_peminatan String @db.VarChar(255) + image_path String @db.Text + jobdesk String @db.Text + lokasi String @db.VarChar(255) + kualifikasi String @db.Text + benefit String @db.Text + durasi_awal DateTime @db.Date + durasi_akhir DateTime @db.Date + id_batch Int + batch Batch @relation(fields: [id_batch], references: [id], map: "lowongan_magang_id_batch_foreign") + status_lowongan StatusLowongan + paid PaidStatus + created_at DateTime @default(now()) + + lamaran_magang LamaranMagang[] + + @@index([id_batch], map: "lowongan_magang_id_batch_foreign") + @@map("lowongan_magang") +} + +model Mahasiswa { + id Int @id @default(autoincrement()) + nama_depan String @db.VarChar(255) + nama_belakang String? @db.VarChar(255) + email String @unique @db.VarChar(255) + kontak String @db.VarChar(255) + jurusan String @db.VarChar(255) + universitas String @db.VarChar(255) + negara String @db.VarChar(255) + role StudentRole @default(student) + cv_path String @db.Text + portofolio_path String @db.Text + motivasi String @db.Text + relevant_skills String @db.VarChar(255) + + lamaran_magang LamaranMagang[] + + @@map("mahasiswa") +} + +model Partnership { + id Int @id @default(autoincrement()) + nama_partner String @db.VarChar(255) + image_path String @db.Text + created_at DateTime @default(now()) + + @@map("partnership") +} + +model Faq { + id Int @id @default(autoincrement()) + pertanyaan String @db.Text + jawaban String @db.Text + created_at DateTime @default(now()) + + @@map("faq") +} + model RiwayatPelamar { - id Int @id @default(autoincrement()) - batch Int - negara String? @db.VarChar(255) - posisi String? @db.VarChar(255) - tahun Int - jumlah Int - pelamarDiterima Int @map("pelamar_diterima") - pelamarDitolak Int @map("pelamar_ditolak") - pelamarDiproses Int @map("pelamar_diproses") - presentaseDiterima Float @map("presentase_diterima") - presentaseDitolak Float @map("presentase_ditolak") - presentaseDiproses Float @map("presentase_diproses") - createdAt DateTime @default(now()) @map("created_at") + id Int @id @default(autoincrement()) + batch Int + negara String? @db.VarChar(255) + posisi String? @db.VarChar(255) + tahun Int + jumlah Int + pelamar_diterima Int + pelamar_ditolak Int + pelamar_diproses Int + presentase_diterima Float + presentase_ditolak Float + presentase_diproses Float + + created_at DateTime @default(now()) @@unique([batch, negara, posisi]) @@index([batch]) @@ -159,44 +142,54 @@ model RiwayatPelamar { } model Feedback { - id Int @id @default(autoincrement()) - nama String @db.VarChar(255) - universitas String @db.VarChar(255) - pesan String @db.Text + id Int @id @default(autoincrement()) + nama String @db.VarChar(255) + universitas String @db.VarChar(255) + pesan String @db.Text batch Int - posisi String @db.VarChar(255) + posisi String @db.VarChar(255) tahun Int - imagePath String @map("image_path") @db.Text - createdAt DateTime @default(now()) @map("created_at") + image_path String @db.Text + + created_at DateTime @default(now()) @@map("feedback") } -model HasilResearch { - id Int @id @default(autoincrement()) - imagePath String @map("image_path") @db.Text - namaProject String @map("nama_project") @db.VarChar(255) - deskripsi String @db.VarChar(255) - linkProject String @map("link_project") @db.Text - createdAt DateTime @default(now()) @map("created_at") +model Batch { + id Int @id @default(autoincrement()) + batch_number Int @unique + is_active Boolean @default(false) + created_at DateTime @default(now()) + updated_at DateTime @updatedAt + lowongan_magang LowonganMagang[] + lamaranMagangs LamaranMagang[] - @@map("hasil_research") + @@index([is_active]) + @@index([batch_number]) + @@map("batch") } -model Partnership { - id Int @id @default(autoincrement()) - namaPartner String @map("nama_partner") @db.VarChar(255) - imagePath String @map("image_path") @db.Text - createdAt DateTime @default(now()) @map("created_at") - - @@map("partnership") +enum Role { + admin } -model Faq { - id Int @id @default(autoincrement()) - pertanyaan String @db.Text - jawaban String @db.Text - createdAt DateTime @default(now()) @map("created_at") - - @@map("faq") +enum StudentRole { + student +} + +enum StatusLamaran { + diterima + diproses + ditolak +} + +enum StatusLowongan { + dibuka + ditutup +} + +enum PaidStatus { + paid + unpaid } diff --git a/prisma/seed.ts b/prisma/seed.ts deleted file mode 100644 index 5ec787f..0000000 --- a/prisma/seed.ts +++ /dev/null @@ -1,48 +0,0 @@ -import 'dotenv/config'; -import { PrismaClient } from '../src/generated/prisma/client'; -import bcrypt from 'bcryptjs'; - -const prisma = new PrismaClient(); - -async function main() { - console.log('Start seeding Internify database...'); - - const adminEmail = 'admin@internify.com'; - const adminPassword = 'AdminInternify123!'; - const passwordHash = await bcrypt.hash(adminPassword, 10); - - // Cek Apakah ada si Admin - const existingAdmin = await prisma.user.findUnique({ - where: { email: adminEmail } - }); - - if (!existingAdmin) { - const adminUser = await prisma.user.create({ - data: { - email: adminEmail, - passwordHash: passwordHash, - role: 'ADMIN', - admin: { - create: { - namaDepan: 'Super', - namaBelakang: 'Admin', - } - } - } - }); - console.log(`Admin user created: ${adminEmail} (password: ${adminPassword})`); - } else { - console.log(`Admin user already exists: ${adminEmail}`); - } - - console.log('Seeding finished'); -} - -main() - .catch((error) => { - console.error('Seeding failed:', error); - process.exit(1); - }) - .finally(async () => { - await prisma.$disconnect(); - }); diff --git a/prisma/seed_dummy.ts b/prisma/seed_dummy.ts deleted file mode 100644 index 8812187..0000000 --- a/prisma/seed_dummy.ts +++ /dev/null @@ -1,249 +0,0 @@ -import 'dotenv/config'; -import { PrismaClient } from '../src/generated/prisma/client'; -import bcrypt from 'bcryptjs'; - -const prisma = new PrismaClient(); - -async function main() { - console.log('=== STARTING DEVELOPER DUMMY SEEDING ==='); - - const adminEmail = 'admin@internify.com'; - const adminPassword = 'AdminInternify123!'; - const passwordHash = await bcrypt.hash(adminPassword, 10); - - let adminUser = await prisma.user.findUnique({ where: { email: adminEmail } }); - if (!adminUser) { - adminUser = await prisma.user.create({ - data: { - email: adminEmail, - passwordHash, - role: 'ADMIN', - admin: { - create: { - namaDepan: 'Super', - namaBelakang: 'Admin' - } - } - } - }); - console.log(' Admin created:', adminEmail); - } else { - console.log(' Admin already exists:', adminEmail); - } - - console.log(' Seeding Batches...'); - const batchesData = [ - { batchNumber: 1, isActive: false }, - { batchNumber: 2, isActive: false }, - { batchNumber: 3, isActive: true } // Active Batch - ]; - - const batches: any[] = []; - for (const b of batchesData) { - let dbBatch = await prisma.batch.findUnique({ where: { batchNumber: b.batchNumber } }); - if (!dbBatch) { - dbBatch = await prisma.batch.create({ data: b }); - } - batches.push(dbBatch); - } - console.log(` Seeding Batches complete! Created/Found ${batches.length} batches.`); - - const activeBatch = batches.find(b => b.isActive) || batches[2]; - - console.log(' Seeding Student Users...'); - const studentsData = [ - { - email: 'alice@example.com', - namaDepan: 'Alice', - namaBelakang: 'Smith', - kontak: '08111222333', - jurusan: 'Informatika', - universitas: 'Institut Teknologi Bandung', - negara: 'Indonesia', - cvPath: '/uploads/docs/alice-cv.pdf', - portofolioPath: '/uploads/docs/alice-portfolio.pdf', - motivasi: 'Saya sangat tertarik dengan UI/UX design dan ingin mempraktekkannya.', - relevantSkills: 'Figma, Adobe XD, User Research' - }, - { - email: 'bob@example.com', - namaDepan: 'Bob', - namaBelakang: 'Johnson', - kontak: '08222333444', - jurusan: 'Sistem Informasi', - universitas: 'Universitas Indonesia', - negara: 'Indonesia', - cvPath: '/uploads/docs/bob-cv.pdf', - portofolioPath: '/uploads/docs/bob-portfolio.pdf', - motivasi: 'Ingin mengembangkan keahlian React dan Tailwind CSS.', - relevantSkills: 'React, HTML, CSS, JavaScript' - }, - { - email: 'charlie@example.com', - namaDepan: 'Charlie', - namaBelakang: 'Brown', - kontak: '08333444555', - jurusan: 'Teknik Komputer', - universitas: 'Telkom University', - negara: 'Indonesia', - cvPath: '/uploads/docs/charlie-cv.pdf', - portofolioPath: '/uploads/docs/charlie-portfolio.pdf', - motivasi: 'Suka membangun server scalable dan merancang arsitektur API.', - relevantSkills: 'Node.js, Express, MySQL, TypeScript' - } - ]; - - const mahasiswaList: any[] = []; - for (const s of studentsData) { - let user = await prisma.user.findUnique({ - where: { email: s.email }, - include: { mahasiswa: true } - }); - - if (!user) { - const hash = await bcrypt.hash('Student123!', 10); - user = await prisma.user.create({ - data: { - email: s.email, - passwordHash: hash, - role: 'STUDENT', - mahasiswa: { - create: { - namaDepan: s.namaDepan, - namaBelakang: s.namaBelakang, - kontak: s.kontak, - jurusan: s.jurusan, - universitas: s.universitas, - negara: s.negara, - cvPath: s.cvPath, - portofolioPath: s.portofolioPath, - motivasi: s.motivasi, - relevantSkills: s.relevantSkills - } - } - }, - include: { mahasiswa: true } - }); - } - mahasiswaList.push(user.mahasiswa); - } - console.log(` Student seeding complete! Created/Found ${mahasiswaList.length} students.`); - - console.log(' Seeding Lowongan Listings...'); - const lowongansData = [ - { - id: 'lowongan-ui-ux', - posisi: 'UI/UX Designer Intern', - kelompokPeminatan: 'Design & Creative', - imagePath: '/uploads/images/ui-ux-design.png', - jobdesk: '

Mendesain antarmuka aplikasi mobile dan web, melakukan user testing, dan wireframing.

', - lokasi: 'Onsite - Bandung', - kualifikasi: 'Menguasai Figma, memiliki portofolio desain UI/UX, kreatif.', - benefit: 'Sertifikat magang resmi, uang transport harian, mentoring 1-on-1.', - paid: 'PAID' as any, - statusLowongan: 'DIBUKA' as any - }, - { - id: 'lowongan-frontend', - posisi: 'Frontend Developer Intern', - kelompokPeminatan: 'Web Engineering', - imagePath: '/uploads/images/frontend-dev.png', - jobdesk: '

Mengembangkan antarmuka responsif menggunakan React dan Tailwind CSS.

', - lokasi: 'Remote', - kualifikasi: 'Memahami React JS, ES6 JavaScript, HTML, CSS.', - benefit: 'Sertifikat magang resmi, jam kerja fleksibel, free access learning course.', - paid: 'UNPAID' as any, - statusLowongan: 'DIBUKA' as any - }, - { - id: 'lowongan-backend', - posisi: 'Backend Developer Intern', - kelompokPeminatan: 'Web Engineering', - imagePath: '/uploads/images/backend-dev.png', - jobdesk: '

Membangun REST API, mengoptimalkan query database, dan integrasi backend services.

', - lokasi: 'Hybrid - Jakarta', - kualifikasi: 'Memahami Node.js, Express, dan Relational Database seperti MySQL.', - benefit: 'Sertifikat magang resmi, konversi SKS, coworking space access.', - paid: 'PAID' as any, - statusLowongan: 'DIBUKA' as any - } - ]; - - const lowonganList: any[] = []; - for (const l of lowongansData) { - let dbLowongan = await prisma.lowonganMagang.findUnique({ where: { id: l.id } }); - if (!dbLowongan) { - dbLowongan = await prisma.lowonganMagang.create({ - data: { - id: l.id, - idBatch: activeBatch.id, - posisi: l.posisi, - kelompokPeminatan: l.kelompokPeminatan, - imagePath: l.imagePath, - jobdesk: l.jobdesk, - lokasi: l.lokasi, - kualifikasi: l.kualifikasi, - benefit: l.benefit, - durasiAwal: new Date(), - durasiAkhir: new Date(Date.now() + 90 * 24 * 60 * 60 * 1000), // 90 days from now - statusLowongan: l.statusLowongan, - paid: l.paid - } - }); - } - lowonganList.push(dbLowongan); - } - console.log(` Lowongan seeding complete! Created/Found ${lowonganList.length} listings.`); - - console.log(' Seeding Lamaran Records...'); - const lamaranData = [ - { - idMahasiswa: mahasiswaList[0].id, - idLowonganMagang: lowonganList[0].id, - status: 'DIPROSES' as any - }, - { - idMahasiswa: mahasiswaList[1].id, - idLowonganMagang: lowonganList[1].id, - status: 'DIPROSES' as any - }, - { - idMahasiswa: mahasiswaList[2].id, - idLowonganMagang: lowonganList[2].id, - status: 'DIPROSES' as any - } - ]; - - let lamaranCount = 0; - for (const lam of lamaranData) { - const existing = await prisma.lamaranMagang.findFirst({ - where: { - idMahasiswa: lam.idMahasiswa, - idLowonganMagang: lam.idLowonganMagang - } - }); - - if (!existing) { - await prisma.lamaranMagang.create({ - data: { - idMahasiswa: lam.idMahasiswa, - idLowonganMagang: lam.idLowonganMagang, - status: lam.status, - batch: activeBatch.id - } - }); - lamaranCount++; - } - } - console.log(` Lamaran seeding complete! Created ${lamaranCount} new applications.`); - - console.log('\n=== DEVELOPER SEEDING COMPLETED SUCCESSFULLY ==='); -} - -main() - .catch(e => { - console.error('Seeding failed:', e); - }) - .finally(async () => { - await prisma.$disconnect(); - }); diff --git a/src/app.ts b/src/app.ts deleted file mode 100644 index d19efaf..0000000 --- a/src/app.ts +++ /dev/null @@ -1,69 +0,0 @@ -import path from 'path'; -import express, { Request, Response, NextFunction } from 'express'; -import cors from 'cors'; -import helmet from 'helmet'; -import morgan from 'morgan'; -import routes from './routes'; -import { errorHandler, CustomError } from './middleware/errorHandler'; -import { setupSwaggerDocs } from './docs/swagger'; - -const app = express(); - -app.use(helmet({ - crossOriginResourcePolicy: { policy: 'cross-origin' } -})); -app.use(cors({ - origin: true, - credentials: true, -})); - -app.use(morgan('dev')); - -// File upload statis biar bisa diakses lewat /uploads atau /api/uploads -app.use('/uploads', express.static(path.join(__dirname, '../uploads'))); -app.use('/api/uploads', express.static(path.join(__dirname, '../uploads'))); - -app.use(express.json()); -app.use(express.urlencoded({ extended: true })); - -/** - * @swagger - * /: - * get: - * summary: Endpoint root API - * description: Endpoint dasar. - * responses: - * 200: - * description: Informasi umum API berhasil diambil - * content: - * application/json: - * schema: - * type: object - * properties: - * message: - * type: string - * example: Welcome to the Internify API - * documentation: - * type: string - * example: Check /api/health untuk status - */ -app.get('/', (_req: Request, res: Response) => { - res.status(200).json({ - message: 'Welcome to the Internify API', - documentation: 'Check /api/health untuk status', - }); -}); - -app.use('/api', routes); - -setupSwaggerDocs(app); - -app.use((req: Request, _res: Response, next: NextFunction) => { - const error: CustomError = new Error(`Not Found - ${req.originalUrl}`); - error.statusCode = 404; - next(error); -}); - -app.use(errorHandler); - -export default app; diff --git a/src/docs/ERD.png b/src/docs/ERD.png new file mode 100755 index 0000000000000000000000000000000000000000..e235d71bd271352c966622719f4e0d98c145642e GIT binary patch literal 422397 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 z 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¥L&1$rM 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

DQyJuXoQGETx;0lm4*+ciTr^yw~09X?M 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