diff --git a/package-lock.json b/package-lock.json index 584578f..070ea56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@aws-crypto/sha256-browser": "^5.2.0", "@aws-crypto/sha256-js": "^5.2.0", "@aws-sdk/client-s3": "^3.928.0", - "@aws-sdk/s3-request-presigner": "^3.310.0", + "@aws-sdk/s3-request-presigner": "^3.928.0", "@aws/lambda-invoke-store": "^0.2.1", "@nestjs/common": "^10.3.0", "@nestjs/config": "^3.1.1", @@ -31,18 +31,27 @@ "@types/http-status": "^1.1.2", "ajv": "8.12.0", "aws-lambda": "^1.0.7", + "aws-sdk": "^2.1692.0", "bcrypt": "^6.0.0", "bcryptjs": "^2.4.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", "date-fns": "^4.1.0", + "dayjs": "^1.11.19", + "docx": "^9.6.0", + "docxtemplater": "^3.68.3", "fast-xml-parser": "^5.3.1", + "fs": "^0.0.1-security", "helmet": "^7.1.0", "http-status": "^2.1.0", "moment": "^2.30.1", + "number-to-words": "^1.2.4", "passport": "^0.7.0", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", + "path": "^0.12.7", + "pdf-lib": "^1.17.1", + "pizzip": "^3.2.0", "prisma": "^7.0.1", "reflect-metadata": "^0.1.13", "rxjs": "^7.8.1", @@ -73,6 +82,7 @@ "prettier": "^3.2.5", "serverless-esbuild": "^1.55.1", "serverless-offline": "^14.4.0", + "serverless-plugin-split-stacks": "^1.14.0", "source-map-support": "^0.5.21", "supertest": "^6.3.4", "ts-jest": "^29.1.2", @@ -4650,6 +4660,24 @@ "dev": true, "license": "MIT" }, + "node_modules/@pdf-lib/standard-fonts": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz", + "integrity": "sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.6" + } + }, + "node_modules/@pdf-lib/upng": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pdf-lib/upng/-/upng-1.0.1.tgz", + "integrity": "sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.10" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -5751,6 +5779,13 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "license": "MIT" }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -6546,6 +6581,15 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", + "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", + "license": "MIT", + "engines": { + "node": ">=14.6" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -6624,6 +6668,16 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -6964,6 +7018,19 @@ "dev": true, "license": "MIT" }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -6992,6 +7059,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-info": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/aws-info/-/aws-info-1.3.0.tgz", + "integrity": "sha512-dYE3J2GQOMXjirx54IonDisZ6Ok4vBSYjNklNAGGDj2FzGHkWpGOlGAn5/BC8TRh8ttmYRy+Fsmxc8EJMnzSCg==", + "dev": true, + "license": "MIT" + }, "node_modules/aws-lambda": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", @@ -7257,6 +7331,16 @@ "baseline-browser-mapping": "dist/cli.js" } }, + "node_modules/basic-ftp": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", + "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/bcrypt": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", @@ -8386,7 +8470,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, "license": "MIT" }, "node_modules/cors": { @@ -8539,6 +8622,12 @@ "url": "https://github.com/sponsors/kossnocorp" } }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -8633,6 +8722,21 @@ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "license": "MIT" }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -8763,6 +8867,50 @@ "node": ">=6.0.0" } }, + "node_modules/docx": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/docx/-/docx-9.6.0.tgz", + "integrity": "sha512-y6EaJJMDvt4P7wgGQB9KsZf4wsRkQMJfkc9LlNufRshggI5BT35hGNkXBCAeEoI3MLMwApKguxzjdqqVcBCqNA==", + "license": "MIT", + "dependencies": { + "@types/node": "^25.2.3", + "hash.js": "^1.1.7", + "jszip": "^3.10.1", + "nanoid": "^5.1.3", + "xml": "^1.0.1", + "xml-js": "^1.6.8" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/docx/node_modules/@types/node": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/docx/node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "license": "MIT" + }, + "node_modules/docxtemplater": { + "version": "3.68.3", + "resolved": "https://registry.npmjs.org/docxtemplater/-/docxtemplater-3.68.3.tgz", + "integrity": "sha512-hTZfGcHgN60A09w68Qj0EQRCnF5kf2/ohFlZlUVqAOozCFwx9QMm8naCTvmTsXafuO3nG9qpS4pQWSjFdaCWfQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.9.8" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -9031,6 +9179,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/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", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eslint": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", @@ -10022,6 +10203,12 @@ "node": ">= 0.8" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", + "license": "ISC" + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -10199,6 +10386,31 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/giget": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", @@ -10437,6 +10649,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -10499,6 +10721,20 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/http-status": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-status/-/http-status-2.1.0.tgz", @@ -10514,6 +10750,20 @@ "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", "license": "MIT" }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -10556,7 +10806,6 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, "license": "MIT" }, "node_modules/import-fresh": { @@ -10661,6 +10910,16 @@ "node": ">=12.0.0" } }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -11986,7 +12245,6 @@ "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", @@ -11999,7 +12257,6 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -12015,14 +12272,12 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, "license": "MIT" }, "node_modules/jszip/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -12149,7 +12404,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, "license": "MIT", "dependencies": { "immediate": "~3.0.5" @@ -12548,6 +12802,12 @@ "node": ">=6" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -12698,6 +12958,24 @@ "node": ">=12" } }, + "node_modules/nanoid": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -12722,6 +13000,16 @@ "dev": true, "license": "MIT" }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/nock": { "version": "13.5.6", "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz", @@ -12873,6 +13161,12 @@ "node": ">=8" } }, + "node_modules/number-to-words": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/number-to-words/-/number-to-words-1.2.4.tgz", + "integrity": "sha512-/fYevVkXRcyBiZDg6yzZbm0RuaD6i0qRfn8yr+6D0KgBMOndFPxuW10qCHpzs50nN8qKuv78k8MuotZhcVX6Pw==", + "license": "MIT" + }, "node_modules/nypm": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", @@ -13118,6 +13412,40 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "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", @@ -13128,7 +13456,6 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { @@ -13219,6 +13546,16 @@ "node": ">= 0.4.0" } }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -13293,6 +13630,21 @@ "node": ">=8" } }, + "node_modules/path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/path/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -13304,6 +13656,24 @@ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" }, + "node_modules/pdf-lib": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", + "integrity": "sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==", + "license": "MIT", + "dependencies": { + "@pdf-lib/standard-fonts": "^1.0.0", + "@pdf-lib/upng": "^1.0.1", + "pako": "^1.0.11", + "tslib": "^1.11.1" + } + }, + "node_modules/pdf-lib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/perfect-debounce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", @@ -13438,6 +13808,21 @@ "node": ">= 6" } }, + "node_modules/pizzip": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pizzip/-/pizzip-3.2.0.tgz", + "integrity": "sha512-X4NPNICxCfIK8VYhF6wbksn81vTiziyLbvKuORVAmolvnUzl1A1xmz9DAWKxPRq9lZg84pJOOAMq3OE61bD8IQ==", + "license": "(MIT OR GPL-3.0)", + "dependencies": { + "pako": "^2.1.0" + } + }, + "node_modules/pizzip/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -13689,11 +14074,19 @@ } } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "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==", - "dev": true, "license": "MIT" }, "node_modules/prompts": { @@ -13756,6 +14149,36 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/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==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -14756,6 +15179,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/serverless-plugin-split-stacks": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/serverless-plugin-split-stacks/-/serverless-plugin-split-stacks-1.14.0.tgz", + "integrity": "sha512-VksNqvJUPnGHqef0jHNiN0BzTVr0Hy0cWaLxCG75HiQ3vnIog8qeyiu7uWH6LKNhJnGP1jiTNh0YcheCN8kaKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "aws-info": "^1.2.0", + "lodash": "^4.17.21", + "proxy-agent": "^6.3.1", + "semver": "^7.3.5", + "throat": "^6.0.1" + }, + "peerDependencies": { + "serverless": "1 || 2 || 3 || 4" + } + }, "node_modules/serverless/node_modules/rimraf": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", @@ -14792,7 +15232,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, "license": "MIT" }, "node_modules/setprototypeof": { @@ -14923,6 +15362,47 @@ "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/sorted-array-functions": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", @@ -15504,6 +15984,13 @@ "dev": true, "license": "MIT" }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "dev": true, + "license": "MIT" + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -17076,6 +17563,30 @@ } } }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "license": "MIT" + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xml-js/node_modules/sax": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" + }, "node_modules/xml2js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3933168..05ca05d 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,6 +1,5 @@ generator client { provider = "prisma-client-js" - engineType = "binary" binaryTargets = ["native", "rhel-openssl-3.0.x"] // Lambda Node 18/20 (Amazon Linux) target previewFeatures = ["multiSchema"] engineType = "library" diff --git a/serverless.host.yml b/serverless.host.yml new file mode 100644 index 0000000..b6ee540 --- /dev/null +++ b/serverless.host.yml @@ -0,0 +1,13 @@ +service: minglar-host + +useDotenv: ${file(./serverless/common.yml):useDotenv} +params: ${file(./serverless/common.yml):params} +provider: ${file(./serverless/common.yml):provider} +build: ${file(./serverless/common.yml):build} +package: ${file(./serverless/common.yml):package} +plugins: ${file(./serverless/common.yml):plugins} +custom: ${file(./serverless/common.yml):custom} + +functions: + - ${file(./serverless/functions/host.yml)} + diff --git a/serverless.minglaradmin.yml b/serverless.minglaradmin.yml new file mode 100644 index 0000000..8a6090d --- /dev/null +++ b/serverless.minglaradmin.yml @@ -0,0 +1,13 @@ +service: minglar-admin + +useDotenv: ${file(./serverless/common.yml):useDotenv} +params: ${file(./serverless/common.yml):params} +provider: ${file(./serverless/common.yml):provider} +build: ${file(./serverless/common.yml):build} +package: ${file(./serverless/common.yml):package} +plugins: ${file(./serverless/common.yml):plugins} +custom: ${file(./serverless/common.yml):custom} + +functions: + - ${file(./serverless/functions/minglaradmin.yml)} + diff --git a/serverless.prepopulate.yml b/serverless.prepopulate.yml new file mode 100644 index 0000000..cec2b45 --- /dev/null +++ b/serverless.prepopulate.yml @@ -0,0 +1,13 @@ +service: minglar-prepopulate + +useDotenv: ${file(./serverless/common.yml):useDotenv} +params: ${file(./serverless/common.yml):params} +provider: ${file(./serverless/common.yml):provider} +build: ${file(./serverless/common.yml):build} +package: ${file(./serverless/common.yml):package} +plugins: ${file(./serverless/common.yml):plugins} +custom: ${file(./serverless/common.yml):custom} + +functions: + - ${file(./serverless/functions/prepopulate.yml)} + diff --git a/serverless.prisma-layer.yml b/serverless.prisma-layer.yml new file mode 100644 index 0000000..3cca108 --- /dev/null +++ b/serverless.prisma-layer.yml @@ -0,0 +1,32 @@ +service: minglar-prisma-layer + +useDotenv: true + +params: + dev: + stage: dev + test: + stage: test + uat: + stage: uat + +provider: + name: aws + runtime: nodejs22.x + region: ap-south-1 + stage: ${opt:stage, 'dev'} + deploymentBucket: + # use a fixed bucket name to prevent Serverless from creating/quashing a resource + name: serverless-framework-deployments-ap-south-1-50264b8e-d2b9 + # optionally uncomment below to enable serverless to create if missing + # serverSideEncryption: AES256 + versionFunctions: false + +layers: + prisma: + path: layers/prisma + name: ${self:service}-prisma-layer-${sls:stage} + description: Prisma 7 client with pg driver adapter (no binary engines) + compatibleRuntimes: + - nodejs22.x + retain: false diff --git a/serverless.user.yml b/serverless.user.yml new file mode 100644 index 0000000..3162d77 --- /dev/null +++ b/serverless.user.yml @@ -0,0 +1,13 @@ +service: minglar-user + +useDotenv: ${file(./serverless/common.yml):useDotenv} +params: ${file(./serverless/common.yml):params} +provider: ${file(./serverless/common.yml):provider} +build: ${file(./serverless/common.yml):build} +package: ${file(./serverless/common.yml):package} +plugins: ${file(./serverless/common.yml):plugins} +custom: ${file(./serverless/common.yml):custom} + +functions: + - ${file(./serverless/functions/user.yml)} + diff --git a/serverless.yml b/serverless.yml index 3427180..121a257 100644 --- a/serverless.yml +++ b/serverless.yml @@ -1,3 +1,4 @@ +# Legacy monolith config. For new deployments use serverless.*.yml files. service: minglarDev @@ -146,7 +147,6 @@ functions: - ${file(./serverless/functions/host.yml)} - ${file(./serverless/functions/minglaradmin.yml)} - ${file(./serverless/functions/prepopulate.yml)} - - ${file(./serverless/functions/pqq.yml)} - ${file(./serverless/functions/user.yml)} plugins: @@ -159,11 +159,6 @@ custom: # split-stacks configuration to avoid CloudFormation resource limit splitStacks: + perFunction: true perType: true - # You can fine‑tune to exclude resource types that don't need splitting - exclude: - - AWS::Lambda::Permission - - AWS::Logs::LogGroup - - AWS::IAM::Role - - AWS::IAM::Policy # keep deployment bucket in main stack to avoid dependency errors - - AWS::S3::Bucket \ No newline at end of file + perGroupFunction: false diff --git a/serverless/common.yml b/serverless/common.yml new file mode 100644 index 0000000..16372ba --- /dev/null +++ b/serverless/common.yml @@ -0,0 +1,134 @@ +useDotenv: true + +params: + dev: + stage: dev + test: + stage: test + uat: + stage: uat + +provider: + name: aws + runtime: nodejs22.x + region: ap-south-1 + stage: ${opt:stage, 'dev'} + deploymentBucket: + # use a fixed bucket name to prevent Serverless from creating/quashing a resource + name: serverless-framework-deployments-ap-south-1-50264b8e-d2b9 + # optionally uncomment below to enable serverless to create if missing + # serverSideEncryption: AES256 + versionFunctions: false + memorySize: 512 + # Apply Prisma layer to all functions + # Reference the layer defined in the dedicated layer stack + layers: + - ${cf:minglar-prisma-layer-${sls:stage}.PrismaLambdaLayerQualifiedArn} + apiGateway: + binaryMediaTypes: + - '*/*' + minimumCompressionSize: 1024 + + 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} + JWT_ACCESS_EXPIRATION_MINUTES: ${env:JWT_ACCESS_EXPIRATION_MINUTES} + JWT_REFRESH_EXPIRATION_DAYS: ${env:JWT_REFRESH_EXPIRATION_DAYS} + JWT_RESET_PASSWORD_EXPIRATION_MINUTES: ${env:JWT_RESET_PASSWORD_EXPIRATION_MINUTES} + JWT_VERIFY_EMAIL_EXPIRATION_MINUTES: ${env:JWT_VERIFY_EMAIL_EXPIRATION_MINUTES} + SALT_ROUNDS: ${env:SALT_ROUNDS} + NODE_ENV: ${env:NODE_ENV} + S3_BUCKET_NAME: ${env:S3_BUCKET_NAME} + MINGLAR_ADMIN_NAME: ${env:MINGLAR_ADMIN_NAME} + MINGLAR_ADMIN_EMAIL: ${env:MINGLAR_ADMIN_EMAIL} + AM_INVITATION_LINK: ${env:AM_INVITATION_LINK} + HOST_LINK: ${env:HOST_LINK} + HOST_LINK_PQ: ${env:HOST_LINK_PQ} + + iam: + role: + statements: + - Effect: Allow + Action: + - s3:PutObject + - s3:GetObject + - s3:DeleteObject + - s3:ListBucket + Resource: + - 'arn:aws:s3:::${env:S3_BUCKET_NAME}' + - 'arn:aws:s3:::${env:S3_BUCKET_NAME}/*' + +build: + esbuild: + bundle: true + minify: true + sourcemap: false + target: node20 + platform: node + # Mark as external so they're not bundled into the JS + external: + - '@prisma/client' + - '.prisma/client' + - '.prisma' + - '@prisma/adapter-pg' + - 'pg' + - 'zod' + - '@aws-sdk/*' + - '@smithy/*' + - '@aws-crypto/*' + # Exclude prevents npm install of these packages in the zip + exclude: + - 'aws-sdk' + - '@aws-sdk/*' + - '@smithy/*' + - '@aws-crypto/*' + - '@prisma/adapter-pg' + - '@prisma/client' + - '.prisma' + - '.prisma/client' + - 'pg' + - 'zod' + - 'pg-*' + - 'postgres-*' + - 'pgpass' + - 'split2' + - 'xtend' + +package: + individually: true + patterns: + - '!node_modules/**' + - '!node_modules/@prisma/**' + - '!node_modules/.prisma/**' + - '!**/*.test.js' + - '!**/*.spec.js' + - '!**/test/**' + - '!**/__tests__/**' + - '!package-lock.json' + - '!yarn.lock' + - '!README.md' + - '!*.config.js' + - '!.git/**' + - '!.github/**' + +plugins: + - serverless-offline + +custom: + serverless-offline: + reloadHandler: true diff --git a/serverless/functions/host.yml b/serverless/functions/host.yml index 9b19ed0..ba81f1d 100644 --- a/serverless/functions/host.yml +++ b/serverless/functions/host.yml @@ -14,7 +14,7 @@ getHosts: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host + path: / method: get verifyOTP: @@ -30,7 +30,7 @@ verifyOTP: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Host_Admin/onboarding/verify-otp + path: /Host_Admin/onboarding/verify-otp method: post login: @@ -46,7 +46,7 @@ login: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Host_Admin/onboarding/login + path: /Host_Admin/onboarding/login method: post signUp: @@ -62,7 +62,7 @@ signUp: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Host_Admin/onboarding/registration + path: /Host_Admin/onboarding/registration method: post createPassword: @@ -78,7 +78,7 @@ createPassword: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Host_Admin/onboarding/create-password + path: /Host_Admin/onboarding/create-password method: post updateBankDetails: @@ -94,7 +94,7 @@ updateBankDetails: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Host_Admin/onboarding/add-payment-details + path: /Host_Admin/onboarding/add-payment-details method: post saveActivity_ForPQQ: @@ -110,7 +110,7 @@ saveActivity_ForPQQ: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/add-activity + path: /Activity_Hub/OnBoarding/add-activity method: post getHostById: @@ -126,7 +126,7 @@ getHostById: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/getById + path: /getById method: get getPQQ_ByQuestionId: @@ -142,7 +142,7 @@ getPQQ_ByQuestionId: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/get-pqq-question-details + path: /Activity_Hub/OnBoarding/get-pqq-question-details method: get getPQQ_LastUpdatedQuestion: @@ -158,7 +158,7 @@ getPQQ_LastUpdatedQuestion: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/get-latest-pqq-question-details + path: /Activity_Hub/OnBoarding/get-latest-pqq-question-details method: get prePopulateNewActivity: @@ -174,7 +174,7 @@ prePopulateNewActivity: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/prepopulate-new-activity + path: /Activity_Hub/OnBoarding/prepopulate-new-activity method: get createNewActivity: @@ -191,7 +191,7 @@ createNewActivity: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/create-new-activity + path: /Activity_Hub/OnBoarding/create-new-activity method: patch showSuggestion: @@ -207,7 +207,7 @@ showSuggestion: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/get-suggestion + path: /get-suggestion method: get getAllActivitySuggestion: @@ -223,7 +223,7 @@ getAllActivitySuggestion: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/get-Activity-suggestion + path: /get-Activity-suggestion method: get getAllHostActivity: @@ -239,7 +239,7 @@ getAllHostActivity: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/get-all-host-activity + path: /Activity_Hub/OnBoarding/get-all-host-activity method: get acceptAggrement: @@ -255,7 +255,7 @@ acceptAggrement: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Host_Admin/onboarding/accept-agreement + path: /Host_Admin/onboarding/accept-agreement method: patch getLatestAgreement: @@ -271,7 +271,7 @@ getLatestAgreement: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Host_Admin/onboarding/get-latest-agreement + path: /Host_Admin/onboarding/get-latest-agreement method: get getStepperInfo: @@ -305,7 +305,7 @@ updateHostProfile: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/profile + path: /profile method: patch # Functions with S3/AWS SDK dependencies @@ -320,7 +320,7 @@ submitCompanyDetails: - 'src/common/**' events: - httpApi: - path: /host/Host_Admin/onboarding/add-company-details + path: /Host_Admin/onboarding/add-company-details method: patch submitPQQ_Answer: @@ -336,7 +336,7 @@ submitPQQ_Answer: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/submit-pqq-answer + path: /Activity_Hub/OnBoarding/submit-pqq-answer method: patch updatePQQ_LastAnswer: @@ -352,7 +352,7 @@ updatePQQ_LastAnswer: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/submit-final-pqq-answer + path: /Activity_Hub/OnBoarding/submit-final-pqq-answer method: post submitPQQForReview: @@ -368,7 +368,7 @@ submitPQQForReview: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/submit-pqq-for-review + path: /Activity_Hub/OnBoarding/submit-pqq-for-review method: patch getAllPQQwithSubmittedAns: @@ -383,7 +383,7 @@ getAllPQQwithSubmittedAns: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/get-all-pqq-ques-submited-ans + path: /Activity_Hub/OnBoarding/get-all-pqq-ques-submited-ans method: get getAllDetailsOfActivityAndVenue: @@ -398,7 +398,7 @@ getAllDetailsOfActivityAndVenue: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/get-all-details-activity-venue/{activityXid} + path: /Activity_Hub/OnBoarding/get-all-details-activity-venue/{activityXid} method: get updateSuggestionAsReviewed: @@ -413,7 +413,7 @@ updateSuggestionAsReviewed: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /host/Activity_Hub/OnBoarding/update-suggestion-reviewed + path: /Activity_Hub/OnBoarding/update-suggestion-reviewed method: patch resendOTPmail: @@ -554,4 +554,34 @@ openCanceledSlotForActivity: events: - httpApi: path: /scheduling/open-canceled-slot - method: patch \ No newline at end of file + method: patch + +createActivityAndAllQuestionsEntry: + handler: src/modules/host/handlers/Activity_Hub/OnBoarding/createActivityAndAllQuestionsEntry.handler + memorySize: 384 + package: + patterns: + - 'src/modules/host/handlers/Activity_Hub/OnBoarding/createActivityAndAllQuestionsEntry**' + - ${file(./serverless/patterns/base.yml):pattern1} + - ${file(./serverless/patterns/base.yml):pattern2} + - ${file(./serverless/patterns/base.yml):pattern3} + - ${file(./serverless/patterns/base.yml):pattern4} + events: + - httpApi: + path: /Activity_Hub/OnBoarding/create-activity + method: post + +submitPQAnswer: + handler: src/modules/host/handlers/Activity_Hub/OnBoarding/submitPQAnswer.handler + memorySize: 384 + package: + patterns: + - 'src/modules/host/handlers/Activity_Hub/OnBoarding/submitPQAnswer**' + - ${file(./serverless/patterns/base.yml):pattern1} + - ${file(./serverless/patterns/base.yml):pattern2} + - ${file(./serverless/patterns/base.yml):pattern3} + - ${file(./serverless/patterns/base.yml):pattern4} + events: + - httpApi: + path: /Activity_Hub/OnBoarding/submit-pq-answer + method: patch diff --git a/serverless/functions/pqq.yml b/serverless/functions/pqq.yml deleted file mode 100644 index eabfb3f..0000000 --- a/serverless/functions/pqq.yml +++ /dev/null @@ -1,29 +0,0 @@ -createActivityAndAllQuestionsEntry: - handler: src/modules/host/handlers/Activity_Hub/OnBoarding/createActivityAndAllQuestionsEntry.handler - memorySize: 384 - package: - patterns: - - 'src/modules/host/handlers/Activity_Hub/OnBoarding/createActivityAndAllQuestionsEntry**' - - ${file(./serverless/patterns/base.yml):pattern1} - - ${file(./serverless/patterns/base.yml):pattern2} - - ${file(./serverless/patterns/base.yml):pattern3} - - ${file(./serverless/patterns/base.yml):pattern4} - events: - - httpApi: - path: /host/Activity_Hub/OnBoarding/create-activity - method: post - -submitPQAnswer: - handler: src/modules/host/handlers/Activity_Hub/OnBoarding/submitPQAnswer.handler - memorySize: 384 - package: - patterns: - - 'src/modules/host/handlers/Activity_Hub/OnBoarding/submitPQAnswer**' - - ${file(./serverless/patterns/base.yml):pattern1} - - ${file(./serverless/patterns/base.yml):pattern2} - - ${file(./serverless/patterns/base.yml):pattern3} - - ${file(./serverless/patterns/base.yml):pattern4} - events: - - httpApi: - path: /host/Activity_Hub/OnBoarding/submit-pq-answer - method: patch diff --git a/serverless/functions/user.yml b/serverless/functions/user.yml index a2c56fd..2b87151 100644 --- a/serverless/functions/user.yml +++ b/serverless/functions/user.yml @@ -13,7 +13,7 @@ registerUser: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/register + path: /register method: post submitPersonalInfo: @@ -28,7 +28,7 @@ submitPersonalInfo: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/submit-personal-info + path: /submit-personal-info method: post verifyOtpForUser: @@ -43,7 +43,7 @@ verifyOtpForUser: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/verify-otp + path: /verify-otp method: post generateAccessFromRefreshToken: @@ -58,7 +58,7 @@ generateAccessFromRefreshToken: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/generate-access-from-refresh + path: /generate-access-from-refresh method: post @@ -74,7 +74,7 @@ setPasscodeForMobile: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/set-passcode + path: /set-passcode method: post @@ -90,7 +90,7 @@ verifyPasscode: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/verify-passcode + path: /verify-passcode method: post setUserInterest: @@ -105,7 +105,7 @@ setUserInterest: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/set-interests + path: /set-interests method: post setUserLocationss: @@ -120,7 +120,7 @@ setUserLocationss: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/set-location-user + path: /set-location-user method: post getLandingPageDetails: @@ -135,7 +135,7 @@ getLandingPageDetails: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/get-landing-page-details + path: /activities/get-landing-page-details method: get getSurpriseMePageDetails: @@ -150,7 +150,7 @@ getSurpriseMePageDetails: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/get-surprise-me-page-details + path: /activities/get-surprise-me-page-details method: get getActivityDetailsById: @@ -165,7 +165,7 @@ getActivityDetailsById: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/get-activity-details-by-id/{activity_xid} + path: /activities/get-activity-details-by-id/{activity_xid} method: get checkAvailabilityDetails: @@ -180,7 +180,7 @@ checkAvailabilityDetails: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/check-availability/{activity_xid} + path: /activities/check-availability/{activity_xid} method: get searchActivities: @@ -195,7 +195,7 @@ searchActivities: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/specific-search + path: /activities/specific-search method: get searchSchoolsAndCompanies: @@ -210,7 +210,7 @@ searchSchoolsAndCompanies: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/connections/search-schools-companies + path: /connections/search-schools-companies method: get searchCities: @@ -225,7 +225,7 @@ searchCities: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/connections/search-cities + path: /connections/search-cities method: get addSchoolCompanyDetail: @@ -240,7 +240,7 @@ addSchoolCompanyDetail: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/connections/add-school-company + path: /connections/add-school-company method: post removeConnectionDetails: @@ -255,7 +255,7 @@ removeConnectionDetails: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/connections/remove-connection-details + path: /connections/remove-connection-details method: delete getAllConnectionOfUser: @@ -270,7 +270,7 @@ getAllConnectionOfUser: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/connections/get-all-connections-details + path: /connections/get-all-connections-details method: get getActivityFromConnectionsInterest: @@ -285,7 +285,7 @@ getActivityFromConnectionsInterest: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/connections/get-activity-from-connections-interest + path: /connections/get-activity-from-connections-interest method: get viewMoreActivitiesByInterest: @@ -300,7 +300,7 @@ viewMoreActivitiesByInterest: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/view-more-activities + path: /activities/view-more-activities method: get viewMoreActivitiesUpperSection: @@ -315,7 +315,7 @@ viewMoreActivitiesUpperSection: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/view-more-activities-upper-section + path: /activities/view-more-activities-upper-section method: get getRandomActiveActivity: @@ -330,7 +330,7 @@ getRandomActiveActivity: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/get-random-active-activity + path: /activities/get-random-active-activity method: get getNearbyActivities: @@ -345,7 +345,7 @@ getNearbyActivities: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/get-nearby-activities + path: /activities/get-nearby-activities method: get addActivityToBucketInterested: @@ -360,7 +360,7 @@ addActivityToBucketInterested: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/add-to-bucket-interested + path: /activities/add-to-bucket-interested method: post removeActivityFromBucketInterested: @@ -375,7 +375,7 @@ removeActivityFromBucketInterested: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/remove-from-bucket-interested + path: /activities/remove-from-bucket-interested method: post getFilteredLandingPageAllDetails: @@ -390,5 +390,5 @@ getFilteredLandingPageAllDetails: - ${file(./serverless/patterns/base.yml):pattern4} events: - httpApi: - path: /user/activities/get-filtered-landing-page-details + path: /activities/get-filtered-landing-page-details method: get \ No newline at end of file