service: minglarDev provider: name: aws runtime: nodejs20.x region: ap-south-1 versionFunctions: false apiGateway: binaryMediaTypes: - "*/*" minimumCompressionSize: 0 environment: DATABASE_URL: ${env:DATABASE_URL} DB_USERNAME: ${env:DB_USERNAME} DB_PASSWORD: ${env:DB_PASSWORD} DB_DATABASE_NAME: ${env:DB_DATABASE_NAME} DB_HOSTNAME: ${env:DB_HOSTNAME} DB_PORT: ${env:DB_PORT} BY_PASS_EMAIL: ${env:BY_PASS_EMAIL} BYPASS_OTP: ${env:BYPASS_OTP} BREVO_EMAIL_API_KEY: ${env:BREVO_EMAIL_API_KEY} BREVO_API_BASEURL: ${env:BREVO_API_BASEURL} BREVO_FROM_EMAIL: ${env:BREVO_FROM_EMAIL} BREVO_SMTP_HOST: ${env:BREVO_SMTP_HOST} BREVO_SMTP_PORT: ${env:BREVO_SMTP_PORT} BREVO_SMTP_USER: ${env:BREVO_SMTP_USER} BREVO_SMTP_PASS: ${env:BREVO_SMTP_PASS} REFRESH_TOKEN_SECRET: ${env:REFRESH_TOKEN_SECRET} JWT_SECRET: ${env:JWT_SECRET} SALT_ROUNDS: ${env:SALT_ROUNDS} NODE_ENV: ${env:NODE_ENV} S3_BUCKET_NAME: ${env:S3_BUCKET_NAME} iam: role: statements: - Effect: Allow Action: - s3:PutObject - s3:GetObject - s3:DeleteObject Resource: "arn:aws:s3:::${env:S3_BUCKET_NAME}/*" # ------------------------------------------------------------ # ESBUILD — bundles AWS SDK v3 and removes node_modules bloat # ------------------------------------------------------------ custom: esbuild: bundle: true minify: true sourcemap: false target: node20 platform: node concurrency: 10 # ❗ Prisma stays inside functions, so exclude only Prisma engine structure exclude: - ".prisma" # keeps native engine files untouched - "@aws-sdk" # prevents double bundling # ------------------------------------------------------------ # GLOBAL PACKAGE SETTINGS # ------------------------------------------------------------ package: individually: true patterns: - "!node_modules/aws-sdk/**" # AWS SDK v2 NOT needed in Node 20 - "!**/*.test.ts" - "!**/*.spec.ts" - "!**/*.log" - "!dist/**" - "!prisma/**" # prisma schema not needed in deployment # ------------------------------------------------------------ # LAMBDA FUNCTIONS — Prisma included per-function # ------------------------------------------------------------ functions: getHosts: handler: src/modules/host/handlers/host.handler package: patterns: - "src/modules/host/**" - "common/**" - "node_modules/@prisma/client/**" - "node_modules/.prisma/**" events: - httpApi: path: /host method: get verifyOtp: handler: src/modules/host/handlers/verifyOtp.handler package: patterns: - "src/modules/host/**" - "common/**" - "node_modules/@prisma/client/**" - "node_modules/.prisma/**" events: - httpApi: path: /host/verify-otp method: post loginForHost: handler: src/modules/host/handlers/loginForHost.handler package: patterns: - "src/modules/host/**" - "common/**" - "node_modules/@prisma/client/**" - "node_modules/.prisma/**" events: - httpApi: path: /host/login method: post registrationOfHost: handler: src/modules/host/handlers/registration.handler package: patterns: - "src/modules/host/**" - "common/**" - "node_modules/@prisma/client/**" - "node_modules/.prisma/**" events: - httpApi: path: /host/registration method: post createPasswordForHost: handler: src/modules/host/handlers/createPassword.handler package: patterns: - "src/modules/host/**" - "common/**" - "node_modules/@prisma/client/**" - "node_modules/.prisma/**" events: - httpApi: path: /host/create-password method: post addPaymentDetailsForHost: handler: src/modules/host/handlers/addPaymentDetails.handler package: patterns: - "src/modules/host/**" - "common/**" - "node_modules/@prisma/client/**" - "node_modules/.prisma/**" events: - httpApi: path: /host/add-payment-details method: post addCompanyDetails: handler: src/modules/host/handlers/addCompanyDetails.handler package: patterns: - "src/modules/host/**" - "common/**" - "node_modules/@prisma/client/**" - "node_modules/.prisma/**" - "node_modules/@smithy/**" - "node_modules/@aws-sdk/**" events: - httpApi: path: /host/add-company-details method: post