[{"data":1,"prerenderedAt":6229},["ShallowReactive",2],{"navigation":3,"docs-path-index":208,"-docs-deployment-aws-lambda":272,"-docs-deployment-aws-lambda-surround":6224},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":52},"Docs","i-lucide-book-marked","\u002Fdocs","docs",[10,26,53,169,190],{"title":11,"path":12,"stem":13,"children":14,"icon":25},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[15,17,21],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F1.getting-started\u002F3.examples","i-lucide-rocket",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":52},"Core features","i-lucide-square-function","\u002Fdocs\u002Fcore-features","docs\u002F2.core-features",[32,36,40,44,48],{"title":33,"path":34,"stem":35},"Configuration","\u002Fdocs\u002Fcore-features\u002Fconfiguration","docs\u002F2.core-features\u002F0.configuration",{"title":37,"path":38,"stem":39},"Dependency Injection","\u002Fdocs\u002Fcore-features\u002Fcontainer","docs\u002F2.core-features\u002F1.container",{"title":41,"path":42,"stem":43},"Controllers","\u002Fdocs\u002Fcore-features\u002Fcontrollers","docs\u002F2.core-features\u002F2.controllers",{"title":45,"path":46,"stem":47},"Middlewares","\u002Fdocs\u002Fcore-features\u002Fmiddlewares","docs\u002F2.core-features\u002F3.middlewares",{"title":49,"path":50,"stem":51},"Validation","\u002Fdocs\u002Fcore-features\u002Fvalidation","docs\u002F2.core-features\u002F4.validation",false,{"title":54,"icon":55,"defaultOpen":56,"path":57,"stem":58,"children":59,"page":52},"Modules","i-lucide-boxes",true,"\u002Fdocs\u002Fmodules","docs\u002F3.modules",[60,77,93,101,116,127,142,161],{"title":61,"icon":52,"defaultOpen":52,"path":62,"stem":63,"children":64,"page":52},"Auth","\u002Fdocs\u002Fmodules\u002Fauth","docs\u002F3.modules\u002F1.auth",[65,69,73],{"title":66,"path":67,"stem":68},"Overview","\u002Fdocs\u002Fmodules\u002Fauth\u002Foverview","docs\u002F3.modules\u002F1.auth\u002F0.overview",{"title":70,"path":71,"stem":72},"Decorators","\u002Fdocs\u002Fmodules\u002Fauth\u002Fdecorators","docs\u002F3.modules\u002F1.auth\u002F1.decorators",{"title":74,"path":75,"stem":76},"API Reference","\u002Fdocs\u002Fmodules\u002Fauth\u002Fapi","docs\u002F3.modules\u002F1.auth\u002F2.api",{"title":78,"icon":52,"defaultOpen":52,"path":79,"stem":80,"children":81,"page":52},"Logger","\u002Fdocs\u002Fmodules\u002Flogger","docs\u002F3.modules\u002F2.logger",[82,85,89],{"title":66,"path":83,"stem":84},"\u002Fdocs\u002Fmodules\u002Flogger\u002Foverview","docs\u002F3.modules\u002F2.logger\u002F0.overview",{"title":86,"path":87,"stem":88},"Drains & Adapters","\u002Fdocs\u002Fmodules\u002Flogger\u002Fdrivers","docs\u002F3.modules\u002F2.logger\u002F1.drivers",{"title":90,"path":91,"stem":92},"API","\u002Fdocs\u002Fmodules\u002Flogger\u002Fapi","docs\u002F3.modules\u002F2.logger\u002F2.api",{"title":94,"icon":52,"defaultOpen":52,"path":95,"stem":96,"children":97,"page":52},"Serverless","\u002Fdocs\u002Fmodules\u002Fserverless","docs\u002F3.modules\u002F3.serverless",[98],{"title":66,"path":99,"stem":100},"\u002Fdocs\u002Fmodules\u002Fserverless\u002Foverview","docs\u002F3.modules\u002F3.serverless\u002F0.overview",{"title":102,"icon":52,"defaultOpen":52,"path":103,"stem":104,"children":105,"page":52},"Storage","\u002Fdocs\u002Fmodules\u002Fstorage","docs\u002F3.modules\u002F4.storage",[106,109,113],{"title":66,"path":107,"stem":108},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Foverview","docs\u002F3.modules\u002F4.storage\u002F0.overview",{"title":110,"path":111,"stem":112},"Drivers","\u002Fdocs\u002Fmodules\u002Fstorage\u002Fdrivers","docs\u002F3.modules\u002F4.storage\u002F1.drivers",{"title":90,"path":114,"stem":115},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fapi","docs\u002F3.modules\u002F4.storage\u002F2.api",{"title":117,"icon":52,"defaultOpen":52,"path":118,"stem":119,"children":120,"page":52},"Web Sockets","\u002Fdocs\u002Fmodules\u002Fweb-sockets","docs\u002F3.modules\u002F5.web-sockets",[121,124],{"title":66,"path":122,"stem":123},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Foverview","docs\u002F3.modules\u002F5.web-sockets\u002F0.overview",{"title":90,"path":125,"stem":126},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Fapi","docs\u002F3.modules\u002F5.web-sockets\u002F1.api",{"title":128,"icon":52,"defaultOpen":52,"path":129,"stem":130,"children":131,"page":52},"Schema","\u002Fdocs\u002Fmodules\u002Fschema","docs\u002F3.modules\u002F6.schema",[132,135,138],{"title":66,"path":133,"stem":134},"\u002Fdocs\u002Fmodules\u002Fschema\u002Foverview","docs\u002F3.modules\u002F6.schema\u002F0.overview",{"title":70,"path":136,"stem":137},"\u002Fdocs\u002Fmodules\u002Fschema\u002Fdecorators","docs\u002F3.modules\u002F6.schema\u002F1.decorators",{"title":139,"path":140,"stem":141},"Scalar","\u002Fdocs\u002Fmodules\u002Fschema\u002Fscalar","docs\u002F3.modules\u002F6.schema\u002F2.scalar",{"title":143,"icon":52,"defaultOpen":52,"path":144,"stem":145,"children":146,"page":52},"Nitro","\u002Fdocs\u002Fmodules\u002Fnitro","docs\u002F3.modules\u002F7.nitro",[147,150,153,157],{"title":66,"path":148,"stem":149},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Foverview","docs\u002F3.modules\u002F7.nitro\u002F0.overview",{"title":102,"path":151,"stem":152},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Fstorage","docs\u002F3.modules\u002F7.nitro\u002F1.storage",{"title":154,"path":155,"stem":156},"File-Based Routes","\u002Fdocs\u002Fmodules\u002Fnitro\u002Ffile-based-routes","docs\u002F3.modules\u002F7.nitro\u002F2.file-based-routes",{"title":158,"path":159,"stem":160},"Middleware","\u002Fdocs\u002Fmodules\u002Fnitro\u002Fmiddleware","docs\u002F3.modules\u002F7.nitro\u002F3.middleware",{"title":162,"icon":52,"defaultOpen":52,"path":163,"stem":164,"children":165,"page":52},"Vite","\u002Fdocs\u002Fmodules\u002Fvite","docs\u002F3.modules\u002F8.vite",[166],{"title":66,"path":167,"stem":168},"\u002Fdocs\u002Fmodules\u002Fvite\u002Foverview","docs\u002F3.modules\u002F8.vite\u002F0.overview",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":52},"Deployment","i-lucide-cloud-upload","\u002Fdocs\u002Fdeployment","docs\u002F4.deployment",[175,178,182,186],{"title":66,"path":176,"stem":177},"\u002Fdocs\u002Fdeployment\u002Foverview","docs\u002F4.deployment\u002F0.overview",{"title":179,"path":180,"stem":181},"Vercel","\u002Fdocs\u002Fdeployment\u002Fvercel","docs\u002F4.deployment\u002F1.vercel",{"title":183,"path":184,"stem":185},"AWS Lambda","\u002Fdocs\u002Fdeployment\u002Faws-lambda","docs\u002F4.deployment\u002F2.aws-lambda",{"title":187,"path":188,"stem":189},"Azure Functions","\u002Fdocs\u002Fdeployment\u002Fazure-functions","docs\u002F4.deployment\u002F3.azure-functions",{"title":191,"icon":192,"path":193,"stem":194,"children":195,"page":52},"Advanced","i-lucide-brain","\u002Fdocs\u002Fadvanced","docs\u002F99.advanced",[196,200,204],{"title":197,"path":198,"stem":199},"Custom Decorator","\u002Fdocs\u002Fadvanced\u002Fcustom-decorator","docs\u002F99.advanced\u002F1.custom-decorator",{"title":201,"path":202,"stem":203},"Plugins","\u002Fdocs\u002Fadvanced\u002Fcustom-plugin","docs\u002F99.advanced\u002F2.custom-plugin",{"title":205,"path":206,"stem":207},"Custom CLI Command","\u002Fdocs\u002Fadvanced\u002Fcustom-cli-command","docs\u002F99.advanced\u002F3.custom-cli-command",[209,211,213,214,215,216,218,219,220,221,222,223,225,227,228,229,230,232,233,234,235,237,238,240,241,242,243,245,246,247,249,250,251,252,254,255,256,257,258,260,261,263,264,265,266,267,269,270,271],{"path":210},"\u002Fdocs\u002F.navigation",{"path":212},"\u002Fdocs\u002Fgetting-started\u002F.navigation",{"path":12},{"path":19},{"path":23},{"path":217},"\u002Fdocs\u002Fcore-features\u002F.navigation",{"path":34},{"path":38},{"path":42},{"path":46},{"path":50},{"path":224},"\u002Fdocs\u002Fmodules\u002F.navigation",{"path":226},"\u002Fdocs\u002Fmodules\u002Fauth\u002F.navigation",{"path":67},{"path":71},{"path":75},{"path":231},"\u002Fdocs\u002Fmodules\u002Flogger\u002F.navigation",{"path":83},{"path":87},{"path":91},{"path":236},"\u002Fdocs\u002Fmodules\u002Fserverless\u002F.navigation",{"path":99},{"path":239},"\u002Fdocs\u002Fmodules\u002Fstorage\u002F.navigation",{"path":107},{"path":111},{"path":114},{"path":244},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002F.navigation",{"path":122},{"path":125},{"path":248},"\u002Fdocs\u002Fmodules\u002Fschema\u002F.navigation",{"path":133},{"path":136},{"path":140},{"path":253},"\u002Fdocs\u002Fmodules\u002Fnitro\u002F.navigation",{"path":148},{"path":151},{"path":155},{"path":159},{"path":259},"\u002Fdocs\u002Fmodules\u002Fvite\u002F.navigation",{"path":167},{"path":262},"\u002Fdocs\u002Fdeployment\u002F.navigation",{"path":176},{"path":180},{"path":184},{"path":188},{"path":268},"\u002Fdocs\u002Fadvanced\u002F.navigation",{"path":198},{"path":202},{"path":206},{"id":273,"title":183,"body":274,"description":6218,"extension":6219,"links":6220,"meta":6221,"navigation":56,"path":184,"seo":6222,"stem":185,"__hash__":6223},"docs\u002Fdocs\u002F4.deployment\u002F2.aws-lambda.md",{"type":275,"value":276,"toc":6178},"minimark",[277,308,311,316,445,449,452,457,464,672,677,701,705,710,909,913,927,931,934,1357,1360,1379,1383,1386,1507,1511,1514,2077,2082,2101,2105,2108,2447,2451,2455,2641,2645,3334,3338,3341,3345,3577,3581,3847,3851,3854,3935,3939,3942,3946,4332,4336,4339,4434,4438,4442,4727,4731,5103,5106,5110,5194,5198,5307,5353,5357,5361,5364,5423,5428,5466,5470,5473,5533,5838,5842,5846,5851,5877,5883,5912,5917,5942,5947,5973,5978,6002,6007,6064,6069,6093,6098,6112,6117,6139,6144,6174],[278,279,281],"tip",{"icon":280},"i-lucide-puzzle",[282,283,284,285,289,290,294,295,298,299,302,303,307],"p",{},"This guide focuses on ",[286,287,288],"strong",{},"deploying"," to AWS. For what ",[291,292,293],"code",{},"toServerlessHandler"," does and how events map to ",[291,296,297],{},"Request"," \u002F ",[291,300,301],{},"Response",", read the ",[304,305,306],"a",{"href":99},"Serverless module overview",".",[282,309,310],{},"Deploy your Vercube application to AWS Lambda with full support for API Gateway v1 and v2, automatic binary content handling, and seamless cookie management.",[312,313,315],"h2",{"id":314},"basic-setup","Basic Setup",[317,318,324],"pre",{"className":319,"code":320,"filename":321,"language":322,"meta":323,"style":323},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createApp } from '@vercube\u002Fcore';\nimport { toServerlessHandler } from '@vercube\u002Fserverless\u002Faws-lambda';\n\nconst app = createApp();\n\n\u002F\u002F Your controllers are automatically registered\nexport const handler = toServerlessHandler(app);\n","lambda.ts","ts","",[291,325,326,362,385,391,412,417,424],{"__ignoreMap":323},[327,328,331,335,339,343,346,349,352,356,359],"span",{"class":329,"line":330},"line",1,[327,332,334],{"class":333},"s7zQu","import",[327,336,338],{"class":337},"sMK4o"," {",[327,340,342],{"class":341},"sTEyZ"," createApp",[327,344,345],{"class":337}," }",[327,347,348],{"class":333}," from",[327,350,351],{"class":337}," '",[327,353,355],{"class":354},"sfazB","@vercube\u002Fcore",[327,357,358],{"class":337},"'",[327,360,361],{"class":337},";\n",[327,363,365,367,369,372,374,376,378,381,383],{"class":329,"line":364},2,[327,366,334],{"class":333},[327,368,338],{"class":337},[327,370,371],{"class":341}," toServerlessHandler",[327,373,345],{"class":337},[327,375,348],{"class":333},[327,377,351],{"class":337},[327,379,380],{"class":354},"@vercube\u002Fserverless\u002Faws-lambda",[327,382,358],{"class":337},[327,384,361],{"class":337},[327,386,388],{"class":329,"line":387},3,[327,389,390],{"emptyLinePlaceholder":56},"\n",[327,392,394,398,401,404,407,410],{"class":329,"line":393},4,[327,395,397],{"class":396},"spNyl","const",[327,399,400],{"class":341}," app ",[327,402,403],{"class":337},"=",[327,405,342],{"class":406},"s2Zo4",[327,408,409],{"class":341},"()",[327,411,361],{"class":337},[327,413,415],{"class":329,"line":414},5,[327,416,390],{"emptyLinePlaceholder":56},[327,418,420],{"class":329,"line":419},6,[327,421,423],{"class":422},"sHwdD","\u002F\u002F Your controllers are automatically registered\n",[327,425,427,430,433,436,438,440,443],{"class":329,"line":426},7,[327,428,429],{"class":333},"export",[327,431,432],{"class":396}," const",[327,434,435],{"class":341}," handler ",[327,437,403],{"class":337},[327,439,371],{"class":406},[327,441,442],{"class":341},"(app)",[327,444,361],{"class":337},[312,446,448],{"id":447},"supported-api-gateway-versions","Supported API Gateway Versions",[282,450,451],{},"The adapter automatically detects and supports both API Gateway versions:",[453,454,456],"h3",{"id":455},"api-gateway-v1-rest-api","API Gateway v1 (REST API)",[282,458,459,460,463],{},"Works with ",[291,461,462],{},"APIGatewayProxyEvent",":",[317,465,467],{"className":319,"code":466,"language":322,"meta":323,"style":323},"\u002F\u002F API Gateway v1 Event Format\n{\n  httpMethod: 'GET',\n  path: '\u002Fapi\u002Fusers',\n  headers: {\n    'content-type': 'application\u002Fjson',\n    'authorization': 'Bearer token...'\n  },\n  body: '{\"name\":\"John\"}',\n  queryStringParameters: {\n    page: '1',\n    limit: '10'\n  },\n  pathParameters: {\n    id: '123'\n  }\n}\n",[291,468,469,474,479,497,513,523,546,565,571,588,598,615,630,635,645,660,666],{"__ignoreMap":323},[327,470,471],{"class":329,"line":330},[327,472,473],{"class":422},"\u002F\u002F API Gateway v1 Event Format\n",[327,475,476],{"class":329,"line":364},[327,477,478],{"class":337},"{\n",[327,480,481,485,487,489,492,494],{"class":329,"line":387},[327,482,484],{"class":483},"sBMFI","  httpMethod",[327,486,463],{"class":337},[327,488,351],{"class":337},[327,490,491],{"class":354},"GET",[327,493,358],{"class":337},[327,495,496],{"class":337},",\n",[327,498,499,502,504,506,509,511],{"class":329,"line":393},[327,500,501],{"class":483},"  path",[327,503,463],{"class":337},[327,505,351],{"class":337},[327,507,508],{"class":354},"\u002Fapi\u002Fusers",[327,510,358],{"class":337},[327,512,496],{"class":337},[327,514,515,518,520],{"class":329,"line":414},[327,516,517],{"class":483},"  headers",[327,519,463],{"class":337},[327,521,522],{"class":337}," {\n",[327,524,525,528,531,533,537,539,542,544],{"class":329,"line":419},[327,526,527],{"class":337},"    '",[327,529,530],{"class":354},"content-type",[327,532,358],{"class":337},[327,534,536],{"class":535},"swJcz",": ",[327,538,358],{"class":337},[327,540,541],{"class":354},"application\u002Fjson",[327,543,358],{"class":337},[327,545,496],{"class":337},[327,547,548,550,553,555,557,559,562],{"class":329,"line":426},[327,549,527],{"class":337},[327,551,552],{"class":354},"authorization",[327,554,358],{"class":337},[327,556,536],{"class":535},[327,558,358],{"class":337},[327,560,561],{"class":354},"Bearer token...",[327,563,564],{"class":337},"'\n",[327,566,568],{"class":329,"line":567},8,[327,569,570],{"class":337},"  },\n",[327,572,574,577,579,581,584,586],{"class":329,"line":573},9,[327,575,576],{"class":483},"  body",[327,578,463],{"class":337},[327,580,351],{"class":337},[327,582,583],{"class":354},"{\"name\":\"John\"}",[327,585,358],{"class":337},[327,587,496],{"class":337},[327,589,591,594,596],{"class":329,"line":590},10,[327,592,593],{"class":483},"  queryStringParameters",[327,595,463],{"class":337},[327,597,522],{"class":337},[327,599,601,604,606,608,611,613],{"class":329,"line":600},11,[327,602,603],{"class":483},"    page",[327,605,463],{"class":337},[327,607,351],{"class":337},[327,609,610],{"class":354},"1",[327,612,358],{"class":337},[327,614,496],{"class":337},[327,616,618,621,623,625,628],{"class":329,"line":617},12,[327,619,620],{"class":483},"    limit",[327,622,463],{"class":337},[327,624,351],{"class":337},[327,626,627],{"class":354},"10",[327,629,564],{"class":337},[327,631,633],{"class":329,"line":632},13,[327,634,570],{"class":337},[327,636,638,641,643],{"class":329,"line":637},14,[327,639,640],{"class":483},"  pathParameters",[327,642,463],{"class":337},[327,644,522],{"class":337},[327,646,648,651,653,655,658],{"class":329,"line":647},15,[327,649,650],{"class":483},"    id",[327,652,463],{"class":337},[327,654,351],{"class":337},[327,656,657],{"class":354},"123",[327,659,564],{"class":337},[327,661,663],{"class":329,"line":662},16,[327,664,665],{"class":337},"  }\n",[327,667,669],{"class":329,"line":668},17,[327,670,671],{"class":337},"}\n",[282,673,674],{},[286,675,676],{},"Key Features:",[678,679,680,684,687,694],"ul",{},[681,682,683],"li",{},"Traditional REST API structure",[681,685,686],{},"Simple header handling",[681,688,689,690,693],{},"Cookie handling via ",[291,691,692],{},"Set-Cookie"," header",[681,695,696,697,700],{},"Binary content with ",[291,698,699],{},"isBase64Encoded"," flag",[453,702,704],{"id":703},"api-gateway-v2-http-api","API Gateway v2 (HTTP API)",[282,706,459,707,463],{},[291,708,709],{},"APIGatewayProxyEventV2",[317,711,713],{"className":319,"code":712,"language":322,"meta":323,"style":323},"\u002F\u002F API Gateway v2 Event Format\n{\n  requestContext: {\n    http: {\n      method: 'GET',\n      path: '\u002Fapi\u002Fusers'\n    }\n  },\n  headers: {\n    'content-type': 'application\u002Fjson',\n    'authorization': 'Bearer token...'\n  },\n  body: '{\"name\":\"John\"}',\n  queryStringParameters: {\n    page: '1',\n    limit: '10'\n  },\n  pathParameters: {\n    id: '123'\n  }\n}\n",[291,714,715,720,724,733,742,757,770,775,779,787,805,821,825,839,847,861,873,877,886,899,904],{"__ignoreMap":323},[327,716,717],{"class":329,"line":330},[327,718,719],{"class":422},"\u002F\u002F API Gateway v2 Event Format\n",[327,721,722],{"class":329,"line":364},[327,723,478],{"class":337},[327,725,726,729,731],{"class":329,"line":387},[327,727,728],{"class":483},"  requestContext",[327,730,463],{"class":337},[327,732,522],{"class":337},[327,734,735,738,740],{"class":329,"line":393},[327,736,737],{"class":483},"    http",[327,739,463],{"class":337},[327,741,522],{"class":337},[327,743,744,747,749,751,753,755],{"class":329,"line":414},[327,745,746],{"class":483},"      method",[327,748,463],{"class":337},[327,750,351],{"class":337},[327,752,491],{"class":354},[327,754,358],{"class":337},[327,756,496],{"class":337},[327,758,759,762,764,766,768],{"class":329,"line":419},[327,760,761],{"class":483},"      path",[327,763,463],{"class":337},[327,765,351],{"class":337},[327,767,508],{"class":354},[327,769,564],{"class":337},[327,771,772],{"class":329,"line":426},[327,773,774],{"class":337},"    }\n",[327,776,777],{"class":329,"line":567},[327,778,570],{"class":337},[327,780,781,783,785],{"class":329,"line":573},[327,782,517],{"class":483},[327,784,463],{"class":337},[327,786,522],{"class":337},[327,788,789,791,793,795,797,799,801,803],{"class":329,"line":590},[327,790,527],{"class":337},[327,792,530],{"class":354},[327,794,358],{"class":337},[327,796,536],{"class":535},[327,798,358],{"class":337},[327,800,541],{"class":354},[327,802,358],{"class":337},[327,804,496],{"class":337},[327,806,807,809,811,813,815,817,819],{"class":329,"line":600},[327,808,527],{"class":337},[327,810,552],{"class":354},[327,812,358],{"class":337},[327,814,536],{"class":535},[327,816,358],{"class":337},[327,818,561],{"class":354},[327,820,564],{"class":337},[327,822,823],{"class":329,"line":617},[327,824,570],{"class":337},[327,826,827,829,831,833,835,837],{"class":329,"line":632},[327,828,576],{"class":483},[327,830,463],{"class":337},[327,832,351],{"class":337},[327,834,583],{"class":354},[327,836,358],{"class":337},[327,838,496],{"class":337},[327,840,841,843,845],{"class":329,"line":637},[327,842,593],{"class":483},[327,844,463],{"class":337},[327,846,522],{"class":337},[327,848,849,851,853,855,857,859],{"class":329,"line":647},[327,850,603],{"class":483},[327,852,463],{"class":337},[327,854,351],{"class":337},[327,856,610],{"class":354},[327,858,358],{"class":337},[327,860,496],{"class":337},[327,862,863,865,867,869,871],{"class":329,"line":662},[327,864,620],{"class":483},[327,866,463],{"class":337},[327,868,351],{"class":337},[327,870,627],{"class":354},[327,872,564],{"class":337},[327,874,875],{"class":329,"line":668},[327,876,570],{"class":337},[327,878,880,882,884],{"class":329,"line":879},18,[327,881,640],{"class":483},[327,883,463],{"class":337},[327,885,522],{"class":337},[327,887,889,891,893,895,897],{"class":329,"line":888},19,[327,890,650],{"class":483},[327,892,463],{"class":337},[327,894,351],{"class":337},[327,896,657],{"class":354},[327,898,564],{"class":337},[327,900,902],{"class":329,"line":901},20,[327,903,665],{"class":337},[327,905,907],{"class":329,"line":906},21,[327,908,671],{"class":337},[282,910,911],{},[286,912,676],{},[678,914,915,918,921,924],{},[681,916,917],{},"Improved performance and lower cost",[681,919,920],{},"Enhanced cookie handling with cookies array",[681,922,923],{},"Streamlined event structure",[681,925,926],{},"Better WebSocket support",[312,928,930],{"id":929},"binary-content-handling","Binary Content Handling",[282,932,933],{},"Binary responses are automatically encoded as base64:",[317,935,937],{"className":319,"code":936,"language":322,"meta":323,"style":323},"@Controller('\u002Ffiles')\nexport class FileController {\n  \n  @Inject(FileService)\n  private fileService!: FileService;\n  \n  @Get('\u002Fdownload\u002F:id')\n  async downloadFile(@Param('id') id: string) {\n    const fileBuffer = await this.fileService.getFile(id);\n    \n    return new Response(fileBuffer, {\n      headers: {\n        'Content-Type': 'application\u002Fpdf',\n        'Content-Disposition': `attachment; filename=\"file-${id}.pdf\"`\n      }\n    });\n  }\n  \n  @Get('\u002Fimage\u002F:id')\n  async getImage(@Param('id') id: string) {\n    const imageBuffer = await this.fileService.getImage(id);\n    \n    return new Response(imageBuffer, {\n      headers: {\n        'Content-Type': 'image\u002Fpng'\n      }\n    });\n  }\n}\n",[291,938,939,960,972,977,988,1004,1008,1026,1065,1098,1103,1124,1133,1154,1185,1190,1199,1203,1207,1224,1255,1283,1288,1306,1315,1333,1338,1347,1352],{"__ignoreMap":323},[327,940,941,944,947,950,952,955,957],{"class":329,"line":330},[327,942,943],{"class":337},"@",[327,945,946],{"class":406},"Controller",[327,948,949],{"class":341},"(",[327,951,358],{"class":337},[327,953,954],{"class":354},"\u002Ffiles",[327,956,358],{"class":337},[327,958,959],{"class":341},")\n",[327,961,962,964,967,970],{"class":329,"line":364},[327,963,429],{"class":333},[327,965,966],{"class":396}," class",[327,968,969],{"class":483}," FileController",[327,971,522],{"class":337},[327,973,974],{"class":329,"line":387},[327,975,976],{"class":341},"  \n",[327,978,979,982,985],{"class":329,"line":393},[327,980,981],{"class":337},"  @",[327,983,984],{"class":406},"Inject",[327,986,987],{"class":341},"(FileService)\n",[327,989,990,993,996,999,1002],{"class":329,"line":414},[327,991,992],{"class":396},"  private",[327,994,995],{"class":535}," fileService",[327,997,998],{"class":337},"!:",[327,1000,1001],{"class":483}," FileService",[327,1003,361],{"class":337},[327,1005,1006],{"class":329,"line":419},[327,1007,976],{"class":341},[327,1009,1010,1012,1015,1017,1019,1022,1024],{"class":329,"line":426},[327,1011,981],{"class":337},[327,1013,1014],{"class":406},"Get",[327,1016,949],{"class":341},[327,1018,358],{"class":337},[327,1020,1021],{"class":354},"\u002Fdownload\u002F:id",[327,1023,358],{"class":337},[327,1025,959],{"class":341},[327,1027,1028,1031,1034,1037,1040,1042,1044,1047,1049,1052,1055,1057,1060,1063],{"class":329,"line":567},[327,1029,1030],{"class":396},"  async",[327,1032,1033],{"class":535}," downloadFile",[327,1035,1036],{"class":337},"(@",[327,1038,1039],{"class":406},"Param",[327,1041,949],{"class":341},[327,1043,358],{"class":337},[327,1045,1046],{"class":354},"id",[327,1048,358],{"class":337},[327,1050,1051],{"class":341},") ",[327,1053,1046],{"class":1054},"sHdIc",[327,1056,463],{"class":337},[327,1058,1059],{"class":483}," string",[327,1061,1062],{"class":337},")",[327,1064,522],{"class":337},[327,1066,1067,1070,1073,1076,1079,1082,1085,1087,1090,1092,1094,1096],{"class":329,"line":573},[327,1068,1069],{"class":396},"    const",[327,1071,1072],{"class":341}," fileBuffer",[327,1074,1075],{"class":337}," =",[327,1077,1078],{"class":333}," await",[327,1080,1081],{"class":337}," this.",[327,1083,1084],{"class":341},"fileService",[327,1086,307],{"class":337},[327,1088,1089],{"class":406},"getFile",[327,1091,949],{"class":535},[327,1093,1046],{"class":341},[327,1095,1062],{"class":535},[327,1097,361],{"class":337},[327,1099,1100],{"class":329,"line":590},[327,1101,1102],{"class":535},"    \n",[327,1104,1105,1108,1111,1114,1116,1119,1122],{"class":329,"line":600},[327,1106,1107],{"class":333},"    return",[327,1109,1110],{"class":337}," new",[327,1112,1113],{"class":406}," Response",[327,1115,949],{"class":535},[327,1117,1118],{"class":341},"fileBuffer",[327,1120,1121],{"class":337},",",[327,1123,522],{"class":337},[327,1125,1126,1129,1131],{"class":329,"line":617},[327,1127,1128],{"class":535},"      headers",[327,1130,463],{"class":337},[327,1132,522],{"class":337},[327,1134,1135,1138,1141,1143,1145,1147,1150,1152],{"class":329,"line":632},[327,1136,1137],{"class":337},"        '",[327,1139,1140],{"class":535},"Content-Type",[327,1142,358],{"class":337},[327,1144,463],{"class":337},[327,1146,351],{"class":337},[327,1148,1149],{"class":354},"application\u002Fpdf",[327,1151,358],{"class":337},[327,1153,496],{"class":337},[327,1155,1156,1158,1161,1163,1165,1168,1171,1174,1176,1179,1182],{"class":329,"line":637},[327,1157,1137],{"class":337},[327,1159,1160],{"class":535},"Content-Disposition",[327,1162,358],{"class":337},[327,1164,463],{"class":337},[327,1166,1167],{"class":337}," `",[327,1169,1170],{"class":354},"attachment; filename=\"file-",[327,1172,1173],{"class":337},"${",[327,1175,1046],{"class":341},[327,1177,1178],{"class":337},"}",[327,1180,1181],{"class":354},".pdf\"",[327,1183,1184],{"class":337},"`\n",[327,1186,1187],{"class":329,"line":647},[327,1188,1189],{"class":337},"      }\n",[327,1191,1192,1195,1197],{"class":329,"line":662},[327,1193,1194],{"class":337},"    }",[327,1196,1062],{"class":535},[327,1198,361],{"class":337},[327,1200,1201],{"class":329,"line":668},[327,1202,665],{"class":337},[327,1204,1205],{"class":329,"line":879},[327,1206,976],{"class":341},[327,1208,1209,1211,1213,1215,1217,1220,1222],{"class":329,"line":888},[327,1210,981],{"class":337},[327,1212,1014],{"class":406},[327,1214,949],{"class":341},[327,1216,358],{"class":337},[327,1218,1219],{"class":354},"\u002Fimage\u002F:id",[327,1221,358],{"class":337},[327,1223,959],{"class":341},[327,1225,1226,1228,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253],{"class":329,"line":901},[327,1227,1030],{"class":396},[327,1229,1230],{"class":535}," getImage",[327,1232,1036],{"class":337},[327,1234,1039],{"class":406},[327,1236,949],{"class":341},[327,1238,358],{"class":337},[327,1240,1046],{"class":354},[327,1242,358],{"class":337},[327,1244,1051],{"class":341},[327,1246,1046],{"class":1054},[327,1248,463],{"class":337},[327,1250,1059],{"class":483},[327,1252,1062],{"class":337},[327,1254,522],{"class":337},[327,1256,1257,1259,1262,1264,1266,1268,1270,1272,1275,1277,1279,1281],{"class":329,"line":906},[327,1258,1069],{"class":396},[327,1260,1261],{"class":341}," imageBuffer",[327,1263,1075],{"class":337},[327,1265,1078],{"class":333},[327,1267,1081],{"class":337},[327,1269,1084],{"class":341},[327,1271,307],{"class":337},[327,1273,1274],{"class":406},"getImage",[327,1276,949],{"class":535},[327,1278,1046],{"class":341},[327,1280,1062],{"class":535},[327,1282,361],{"class":337},[327,1284,1286],{"class":329,"line":1285},22,[327,1287,1102],{"class":535},[327,1289,1291,1293,1295,1297,1299,1302,1304],{"class":329,"line":1290},23,[327,1292,1107],{"class":333},[327,1294,1110],{"class":337},[327,1296,1113],{"class":406},[327,1298,949],{"class":535},[327,1300,1301],{"class":341},"imageBuffer",[327,1303,1121],{"class":337},[327,1305,522],{"class":337},[327,1307,1309,1311,1313],{"class":329,"line":1308},24,[327,1310,1128],{"class":535},[327,1312,463],{"class":337},[327,1314,522],{"class":337},[327,1316,1318,1320,1322,1324,1326,1328,1331],{"class":329,"line":1317},25,[327,1319,1137],{"class":337},[327,1321,1140],{"class":535},[327,1323,358],{"class":337},[327,1325,463],{"class":337},[327,1327,351],{"class":337},[327,1329,1330],{"class":354},"image\u002Fpng",[327,1332,564],{"class":337},[327,1334,1336],{"class":329,"line":1335},26,[327,1337,1189],{"class":337},[327,1339,1341,1343,1345],{"class":329,"line":1340},27,[327,1342,1194],{"class":337},[327,1344,1062],{"class":535},[327,1346,361],{"class":337},[327,1348,1350],{"class":329,"line":1349},28,[327,1351,665],{"class":337},[327,1353,1355],{"class":329,"line":1354},29,[327,1356,671],{"class":337},[282,1358,1359],{},"The adapter automatically:",[1361,1362,1363,1366,1369,1376],"ol",{},[681,1364,1365],{},"Detects binary content types",[681,1367,1368],{},"Encodes the body as base64",[681,1370,1371,1372,1375],{},"Sets ",[291,1373,1374],{},"isBase64Encoded: true"," in the response",[681,1377,1378],{},"API Gateway decodes it for the client",[453,1380,1382],{"id":1381},"configure-binary-media-types","Configure Binary Media Types",[282,1384,1385],{},"Tell API Gateway which content types should be treated as binary:",[317,1387,1392],{"className":1388,"code":1389,"filename":1390,"language":1391,"meta":323,"style":323},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","functions:\n  api:\n    handler: lambda.handler\n    events:\n      - http:\n          path: \u002F{proxy+}\n          method: ANY\n          binaryMediaTypes:\n            - 'image\u002F*'\n            - 'application\u002Fpdf'\n            - 'application\u002Fzip'\n            - 'application\u002Foctet-stream'\n","serverless.yml","yaml",[291,1393,1394,1402,1409,1419,1426,1436,1446,1456,1463,1475,1485,1496],{"__ignoreMap":323},[327,1395,1396,1399],{"class":329,"line":330},[327,1397,1398],{"class":535},"functions",[327,1400,1401],{"class":337},":\n",[327,1403,1404,1407],{"class":329,"line":364},[327,1405,1406],{"class":535},"  api",[327,1408,1401],{"class":337},[327,1410,1411,1414,1416],{"class":329,"line":387},[327,1412,1413],{"class":535},"    handler",[327,1415,463],{"class":337},[327,1417,1418],{"class":354}," lambda.handler\n",[327,1420,1421,1424],{"class":329,"line":393},[327,1422,1423],{"class":535},"    events",[327,1425,1401],{"class":337},[327,1427,1428,1431,1434],{"class":329,"line":414},[327,1429,1430],{"class":337},"      -",[327,1432,1433],{"class":535}," http",[327,1435,1401],{"class":337},[327,1437,1438,1441,1443],{"class":329,"line":419},[327,1439,1440],{"class":535},"          path",[327,1442,463],{"class":337},[327,1444,1445],{"class":354}," \u002F{proxy+}\n",[327,1447,1448,1451,1453],{"class":329,"line":426},[327,1449,1450],{"class":535},"          method",[327,1452,463],{"class":337},[327,1454,1455],{"class":354}," ANY\n",[327,1457,1458,1461],{"class":329,"line":567},[327,1459,1460],{"class":535},"          binaryMediaTypes",[327,1462,1401],{"class":337},[327,1464,1465,1468,1470,1473],{"class":329,"line":573},[327,1466,1467],{"class":337},"            -",[327,1469,351],{"class":337},[327,1471,1472],{"class":354},"image\u002F*",[327,1474,564],{"class":337},[327,1476,1477,1479,1481,1483],{"class":329,"line":590},[327,1478,1467],{"class":337},[327,1480,351],{"class":337},[327,1482,1149],{"class":354},[327,1484,564],{"class":337},[327,1486,1487,1489,1491,1494],{"class":329,"line":600},[327,1488,1467],{"class":337},[327,1490,351],{"class":337},[327,1492,1493],{"class":354},"application\u002Fzip",[327,1495,564],{"class":337},[327,1497,1498,1500,1502,1505],{"class":329,"line":617},[327,1499,1467],{"class":337},[327,1501,351],{"class":337},[327,1503,1504],{"class":354},"application\u002Foctet-stream",[327,1506,564],{"class":337},[312,1508,1510],{"id":1509},"cookie-handling","Cookie Handling",[282,1512,1513],{},"Cookies work seamlessly across both API Gateway versions:",[317,1515,1517],{"className":319,"code":1516,"language":322,"meta":323,"style":323},"@Controller('\u002Fauth')\nexport class AuthController {\n  \n  @Inject(AuthService)\n  private authService!: AuthService;\n  \n  @Post('\u002Flogin')\n  async login(@Body({ validationSchema: LoginSchema }) credentials: LoginDto) {\n    const token = await this.authService.generateToken(credentials);\n    \n    \u002F\u002F Set authentication cookie\n    return FastResponse.ok({ success: true })\n      .cookie('auth_token', token, {\n        httpOnly: true,\n        secure: true,\n        maxAge: 3600,\n        sameSite: 'strict'\n      });\n  }\n  \n  @Post('\u002Flogout')\n  async logout() {\n    \u002F\u002F Clear authentication cookie\n    return FastResponse.ok({ success: true })\n      .cookie('auth_token', '', {\n        httpOnly: true,\n        secure: true,\n        maxAge: 0\n      });\n  }\n  \n  @Get('\u002Fsession')\n  async getSession(@Cookie('auth_token') token: string) {\n    if (!token) {\n      throw new UnauthorizedException('Not authenticated');\n    }\n    \n    const session = await this.authService.validateToken(token);\n    return { session };\n  }\n}\n",[291,1518,1519,1536,1547,1551,1560,1574,1578,1596,1637,1666,1670,1675,1704,1729,1740,1751,1764,1778,1787,1791,1795,1812,1823,1828,1852,1875,1885,1895,1904,1912,1917,1922,1940,1974,1992,2016,2021,2026,2055,2067,2072],{"__ignoreMap":323},[327,1520,1521,1523,1525,1527,1529,1532,1534],{"class":329,"line":330},[327,1522,943],{"class":337},[327,1524,946],{"class":406},[327,1526,949],{"class":341},[327,1528,358],{"class":337},[327,1530,1531],{"class":354},"\u002Fauth",[327,1533,358],{"class":337},[327,1535,959],{"class":341},[327,1537,1538,1540,1542,1545],{"class":329,"line":364},[327,1539,429],{"class":333},[327,1541,966],{"class":396},[327,1543,1544],{"class":483}," AuthController",[327,1546,522],{"class":337},[327,1548,1549],{"class":329,"line":387},[327,1550,976],{"class":341},[327,1552,1553,1555,1557],{"class":329,"line":393},[327,1554,981],{"class":337},[327,1556,984],{"class":406},[327,1558,1559],{"class":341},"(AuthService)\n",[327,1561,1562,1564,1567,1569,1572],{"class":329,"line":414},[327,1563,992],{"class":396},[327,1565,1566],{"class":535}," authService",[327,1568,998],{"class":337},[327,1570,1571],{"class":483}," AuthService",[327,1573,361],{"class":337},[327,1575,1576],{"class":329,"line":419},[327,1577,976],{"class":341},[327,1579,1580,1582,1585,1587,1589,1592,1594],{"class":329,"line":426},[327,1581,981],{"class":337},[327,1583,1584],{"class":406},"Post",[327,1586,949],{"class":341},[327,1588,358],{"class":337},[327,1590,1591],{"class":354},"\u002Flogin",[327,1593,358],{"class":337},[327,1595,959],{"class":341},[327,1597,1598,1600,1603,1605,1608,1610,1613,1616,1618,1621,1623,1625,1628,1630,1633,1635],{"class":329,"line":567},[327,1599,1030],{"class":396},[327,1601,1602],{"class":535}," login",[327,1604,1036],{"class":337},[327,1606,1607],{"class":406},"Body",[327,1609,949],{"class":341},[327,1611,1612],{"class":337},"{",[327,1614,1615],{"class":535}," validationSchema",[327,1617,463],{"class":337},[327,1619,1620],{"class":341}," LoginSchema ",[327,1622,1178],{"class":337},[327,1624,1051],{"class":341},[327,1626,1627],{"class":1054},"credentials",[327,1629,463],{"class":337},[327,1631,1632],{"class":483}," LoginDto",[327,1634,1062],{"class":337},[327,1636,522],{"class":337},[327,1638,1639,1641,1644,1646,1648,1650,1653,1655,1658,1660,1662,1664],{"class":329,"line":573},[327,1640,1069],{"class":396},[327,1642,1643],{"class":341}," token",[327,1645,1075],{"class":337},[327,1647,1078],{"class":333},[327,1649,1081],{"class":337},[327,1651,1652],{"class":341},"authService",[327,1654,307],{"class":337},[327,1656,1657],{"class":406},"generateToken",[327,1659,949],{"class":535},[327,1661,1627],{"class":341},[327,1663,1062],{"class":535},[327,1665,361],{"class":337},[327,1667,1668],{"class":329,"line":590},[327,1669,1102],{"class":535},[327,1671,1672],{"class":329,"line":600},[327,1673,1674],{"class":422},"    \u002F\u002F Set authentication cookie\n",[327,1676,1677,1679,1682,1684,1687,1689,1691,1694,1696,1700,1702],{"class":329,"line":617},[327,1678,1107],{"class":333},[327,1680,1681],{"class":341}," FastResponse",[327,1683,307],{"class":337},[327,1685,1686],{"class":406},"ok",[327,1688,949],{"class":535},[327,1690,1612],{"class":337},[327,1692,1693],{"class":535}," success",[327,1695,463],{"class":337},[327,1697,1699],{"class":1698},"sfNiH"," true",[327,1701,345],{"class":337},[327,1703,959],{"class":535},[327,1705,1706,1709,1712,1714,1716,1719,1721,1723,1725,1727],{"class":329,"line":632},[327,1707,1708],{"class":337},"      .",[327,1710,1711],{"class":406},"cookie",[327,1713,949],{"class":535},[327,1715,358],{"class":337},[327,1717,1718],{"class":354},"auth_token",[327,1720,358],{"class":337},[327,1722,1121],{"class":337},[327,1724,1643],{"class":341},[327,1726,1121],{"class":337},[327,1728,522],{"class":337},[327,1730,1731,1734,1736,1738],{"class":329,"line":637},[327,1732,1733],{"class":535},"        httpOnly",[327,1735,463],{"class":337},[327,1737,1699],{"class":1698},[327,1739,496],{"class":337},[327,1741,1742,1745,1747,1749],{"class":329,"line":647},[327,1743,1744],{"class":535},"        secure",[327,1746,463],{"class":337},[327,1748,1699],{"class":1698},[327,1750,496],{"class":337},[327,1752,1753,1756,1758,1762],{"class":329,"line":662},[327,1754,1755],{"class":535},"        maxAge",[327,1757,463],{"class":337},[327,1759,1761],{"class":1760},"sbssI"," 3600",[327,1763,496],{"class":337},[327,1765,1766,1769,1771,1773,1776],{"class":329,"line":668},[327,1767,1768],{"class":535},"        sameSite",[327,1770,463],{"class":337},[327,1772,351],{"class":337},[327,1774,1775],{"class":354},"strict",[327,1777,564],{"class":337},[327,1779,1780,1783,1785],{"class":329,"line":879},[327,1781,1782],{"class":337},"      }",[327,1784,1062],{"class":535},[327,1786,361],{"class":337},[327,1788,1789],{"class":329,"line":888},[327,1790,665],{"class":337},[327,1792,1793],{"class":329,"line":901},[327,1794,976],{"class":341},[327,1796,1797,1799,1801,1803,1805,1808,1810],{"class":329,"line":906},[327,1798,981],{"class":337},[327,1800,1584],{"class":406},[327,1802,949],{"class":341},[327,1804,358],{"class":337},[327,1806,1807],{"class":354},"\u002Flogout",[327,1809,358],{"class":337},[327,1811,959],{"class":341},[327,1813,1814,1816,1819,1821],{"class":329,"line":1285},[327,1815,1030],{"class":396},[327,1817,1818],{"class":535}," logout",[327,1820,409],{"class":337},[327,1822,522],{"class":337},[327,1824,1825],{"class":329,"line":1290},[327,1826,1827],{"class":422},"    \u002F\u002F Clear authentication cookie\n",[327,1829,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850],{"class":329,"line":1308},[327,1831,1107],{"class":333},[327,1833,1681],{"class":341},[327,1835,307],{"class":337},[327,1837,1686],{"class":406},[327,1839,949],{"class":535},[327,1841,1612],{"class":337},[327,1843,1693],{"class":535},[327,1845,463],{"class":337},[327,1847,1699],{"class":1698},[327,1849,345],{"class":337},[327,1851,959],{"class":535},[327,1853,1854,1856,1858,1860,1862,1864,1866,1868,1871,1873],{"class":329,"line":1317},[327,1855,1708],{"class":337},[327,1857,1711],{"class":406},[327,1859,949],{"class":535},[327,1861,358],{"class":337},[327,1863,1718],{"class":354},[327,1865,358],{"class":337},[327,1867,1121],{"class":337},[327,1869,1870],{"class":337}," ''",[327,1872,1121],{"class":337},[327,1874,522],{"class":337},[327,1876,1877,1879,1881,1883],{"class":329,"line":1335},[327,1878,1733],{"class":535},[327,1880,463],{"class":337},[327,1882,1699],{"class":1698},[327,1884,496],{"class":337},[327,1886,1887,1889,1891,1893],{"class":329,"line":1340},[327,1888,1744],{"class":535},[327,1890,463],{"class":337},[327,1892,1699],{"class":1698},[327,1894,496],{"class":337},[327,1896,1897,1899,1901],{"class":329,"line":1349},[327,1898,1755],{"class":535},[327,1900,463],{"class":337},[327,1902,1903],{"class":1760}," 0\n",[327,1905,1906,1908,1910],{"class":329,"line":1354},[327,1907,1782],{"class":337},[327,1909,1062],{"class":535},[327,1911,361],{"class":337},[327,1913,1915],{"class":329,"line":1914},30,[327,1916,665],{"class":337},[327,1918,1920],{"class":329,"line":1919},31,[327,1921,976],{"class":341},[327,1923,1925,1927,1929,1931,1933,1936,1938],{"class":329,"line":1924},32,[327,1926,981],{"class":337},[327,1928,1014],{"class":406},[327,1930,949],{"class":341},[327,1932,358],{"class":337},[327,1934,1935],{"class":354},"\u002Fsession",[327,1937,358],{"class":337},[327,1939,959],{"class":341},[327,1941,1943,1945,1948,1950,1953,1955,1957,1959,1961,1963,1966,1968,1970,1972],{"class":329,"line":1942},33,[327,1944,1030],{"class":396},[327,1946,1947],{"class":535}," getSession",[327,1949,1036],{"class":337},[327,1951,1952],{"class":406},"Cookie",[327,1954,949],{"class":341},[327,1956,358],{"class":337},[327,1958,1718],{"class":354},[327,1960,358],{"class":337},[327,1962,1051],{"class":341},[327,1964,1965],{"class":1054},"token",[327,1967,463],{"class":337},[327,1969,1059],{"class":483},[327,1971,1062],{"class":337},[327,1973,522],{"class":337},[327,1975,1977,1980,1983,1986,1988,1990],{"class":329,"line":1976},34,[327,1978,1979],{"class":333},"    if",[327,1981,1982],{"class":535}," (",[327,1984,1985],{"class":337},"!",[327,1987,1965],{"class":341},[327,1989,1051],{"class":535},[327,1991,478],{"class":337},[327,1993,1995,1998,2000,2003,2005,2007,2010,2012,2014],{"class":329,"line":1994},35,[327,1996,1997],{"class":333},"      throw",[327,1999,1110],{"class":337},[327,2001,2002],{"class":406}," UnauthorizedException",[327,2004,949],{"class":535},[327,2006,358],{"class":337},[327,2008,2009],{"class":354},"Not authenticated",[327,2011,358],{"class":337},[327,2013,1062],{"class":535},[327,2015,361],{"class":337},[327,2017,2019],{"class":329,"line":2018},36,[327,2020,774],{"class":337},[327,2022,2024],{"class":329,"line":2023},37,[327,2025,1102],{"class":535},[327,2027,2029,2031,2034,2036,2038,2040,2042,2044,2047,2049,2051,2053],{"class":329,"line":2028},38,[327,2030,1069],{"class":396},[327,2032,2033],{"class":341}," session",[327,2035,1075],{"class":337},[327,2037,1078],{"class":333},[327,2039,1081],{"class":337},[327,2041,1652],{"class":341},[327,2043,307],{"class":337},[327,2045,2046],{"class":406},"validateToken",[327,2048,949],{"class":535},[327,2050,1965],{"class":341},[327,2052,1062],{"class":535},[327,2054,361],{"class":337},[327,2056,2058,2060,2062,2064],{"class":329,"line":2057},39,[327,2059,1107],{"class":333},[327,2061,338],{"class":337},[327,2063,2033],{"class":341},[327,2065,2066],{"class":337}," };\n",[327,2068,2070],{"class":329,"line":2069},40,[327,2071,665],{"class":337},[327,2073,2075],{"class":329,"line":2074},41,[327,2076,671],{"class":337},[282,2078,2079],{},[286,2080,2081],{},"How it works:",[678,2083,2084,2092],{},[681,2085,2086,2089,2090,693],{},[286,2087,2088],{},"API Gateway v1",": Cookies set via ",[291,2091,692],{},[681,2093,2094,2089,2097,2100],{},[286,2095,2096],{},"API Gateway v2",[291,2098,2099],{},"cookies"," array for better handling",[312,2102,2104],{"id":2103},"environment-variables","Environment Variables",[282,2106,2107],{},"Access Lambda-specific environment variables:",[317,2109,2111],{"className":319,"code":2110,"language":322,"meta":323,"style":323},"import { RuntimeConfig } from '@vercube\u002Fcore';\n\n@Controller('\u002Fconfig')\nexport class ConfigController {\n  \n  @Get('\u002Flambda-info')\n  getLambdaInfo() {\n    return {\n      \u002F\u002F AWS Lambda environment variables\n      region: process.env.AWS_REGION,\n      functionName: process.env.AWS_LAMBDA_FUNCTION_NAME,\n      functionVersion: process.env.AWS_LAMBDA_FUNCTION_VERSION,\n      memoryLimit: process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE,\n      logGroup: process.env.AWS_LAMBDA_LOG_GROUP_NAME,\n      logStream: process.env.AWS_LAMBDA_LOG_STREAM_NAME\n    };\n  }\n  \n  @Get('\u002Fruntime-info')\n  getRuntimeInfo() {\n    return {\n      \u002F\u002F Runtime execution details\n      requestId: process.env.AWS_REQUEST_ID,\n      executionEnv: process.env.AWS_EXECUTION_ENV,\n      runtime: process.env.AWS_LAMBDA_RUNTIME_API\n    };\n  }\n}\n",[291,2112,2113,2134,2138,2155,2166,2170,2187,2196,2202,2207,2229,2249,2269,2289,2309,2327,2332,2336,2340,2357,2366,2372,2377,2397,2417,2435,2439,2443],{"__ignoreMap":323},[327,2114,2115,2117,2119,2122,2124,2126,2128,2130,2132],{"class":329,"line":330},[327,2116,334],{"class":333},[327,2118,338],{"class":337},[327,2120,2121],{"class":341}," RuntimeConfig",[327,2123,345],{"class":337},[327,2125,348],{"class":333},[327,2127,351],{"class":337},[327,2129,355],{"class":354},[327,2131,358],{"class":337},[327,2133,361],{"class":337},[327,2135,2136],{"class":329,"line":364},[327,2137,390],{"emptyLinePlaceholder":56},[327,2139,2140,2142,2144,2146,2148,2151,2153],{"class":329,"line":387},[327,2141,943],{"class":337},[327,2143,946],{"class":406},[327,2145,949],{"class":341},[327,2147,358],{"class":337},[327,2149,2150],{"class":354},"\u002Fconfig",[327,2152,358],{"class":337},[327,2154,959],{"class":341},[327,2156,2157,2159,2161,2164],{"class":329,"line":393},[327,2158,429],{"class":333},[327,2160,966],{"class":396},[327,2162,2163],{"class":483}," ConfigController",[327,2165,522],{"class":337},[327,2167,2168],{"class":329,"line":414},[327,2169,976],{"class":341},[327,2171,2172,2174,2176,2178,2180,2183,2185],{"class":329,"line":419},[327,2173,981],{"class":337},[327,2175,1014],{"class":406},[327,2177,949],{"class":341},[327,2179,358],{"class":337},[327,2181,2182],{"class":354},"\u002Flambda-info",[327,2184,358],{"class":337},[327,2186,959],{"class":341},[327,2188,2189,2192,2194],{"class":329,"line":426},[327,2190,2191],{"class":535},"  getLambdaInfo",[327,2193,409],{"class":337},[327,2195,522],{"class":337},[327,2197,2198,2200],{"class":329,"line":567},[327,2199,1107],{"class":333},[327,2201,522],{"class":337},[327,2203,2204],{"class":329,"line":573},[327,2205,2206],{"class":422},"      \u002F\u002F AWS Lambda environment variables\n",[327,2208,2209,2212,2214,2217,2219,2222,2224,2227],{"class":329,"line":590},[327,2210,2211],{"class":535},"      region",[327,2213,463],{"class":337},[327,2215,2216],{"class":341}," process",[327,2218,307],{"class":337},[327,2220,2221],{"class":341},"env",[327,2223,307],{"class":337},[327,2225,2226],{"class":341},"AWS_REGION",[327,2228,496],{"class":337},[327,2230,2231,2234,2236,2238,2240,2242,2244,2247],{"class":329,"line":600},[327,2232,2233],{"class":535},"      functionName",[327,2235,463],{"class":337},[327,2237,2216],{"class":341},[327,2239,307],{"class":337},[327,2241,2221],{"class":341},[327,2243,307],{"class":337},[327,2245,2246],{"class":341},"AWS_LAMBDA_FUNCTION_NAME",[327,2248,496],{"class":337},[327,2250,2251,2254,2256,2258,2260,2262,2264,2267],{"class":329,"line":617},[327,2252,2253],{"class":535},"      functionVersion",[327,2255,463],{"class":337},[327,2257,2216],{"class":341},[327,2259,307],{"class":337},[327,2261,2221],{"class":341},[327,2263,307],{"class":337},[327,2265,2266],{"class":341},"AWS_LAMBDA_FUNCTION_VERSION",[327,2268,496],{"class":337},[327,2270,2271,2274,2276,2278,2280,2282,2284,2287],{"class":329,"line":632},[327,2272,2273],{"class":535},"      memoryLimit",[327,2275,463],{"class":337},[327,2277,2216],{"class":341},[327,2279,307],{"class":337},[327,2281,2221],{"class":341},[327,2283,307],{"class":337},[327,2285,2286],{"class":341},"AWS_LAMBDA_FUNCTION_MEMORY_SIZE",[327,2288,496],{"class":337},[327,2290,2291,2294,2296,2298,2300,2302,2304,2307],{"class":329,"line":637},[327,2292,2293],{"class":535},"      logGroup",[327,2295,463],{"class":337},[327,2297,2216],{"class":341},[327,2299,307],{"class":337},[327,2301,2221],{"class":341},[327,2303,307],{"class":337},[327,2305,2306],{"class":341},"AWS_LAMBDA_LOG_GROUP_NAME",[327,2308,496],{"class":337},[327,2310,2311,2314,2316,2318,2320,2322,2324],{"class":329,"line":647},[327,2312,2313],{"class":535},"      logStream",[327,2315,463],{"class":337},[327,2317,2216],{"class":341},[327,2319,307],{"class":337},[327,2321,2221],{"class":341},[327,2323,307],{"class":337},[327,2325,2326],{"class":341},"AWS_LAMBDA_LOG_STREAM_NAME\n",[327,2328,2329],{"class":329,"line":662},[327,2330,2331],{"class":337},"    };\n",[327,2333,2334],{"class":329,"line":668},[327,2335,665],{"class":337},[327,2337,2338],{"class":329,"line":879},[327,2339,976],{"class":341},[327,2341,2342,2344,2346,2348,2350,2353,2355],{"class":329,"line":888},[327,2343,981],{"class":337},[327,2345,1014],{"class":406},[327,2347,949],{"class":341},[327,2349,358],{"class":337},[327,2351,2352],{"class":354},"\u002Fruntime-info",[327,2354,358],{"class":337},[327,2356,959],{"class":341},[327,2358,2359,2362,2364],{"class":329,"line":901},[327,2360,2361],{"class":535},"  getRuntimeInfo",[327,2363,409],{"class":337},[327,2365,522],{"class":337},[327,2367,2368,2370],{"class":329,"line":906},[327,2369,1107],{"class":333},[327,2371,522],{"class":337},[327,2373,2374],{"class":329,"line":1285},[327,2375,2376],{"class":422},"      \u002F\u002F Runtime execution details\n",[327,2378,2379,2382,2384,2386,2388,2390,2392,2395],{"class":329,"line":1290},[327,2380,2381],{"class":535},"      requestId",[327,2383,463],{"class":337},[327,2385,2216],{"class":341},[327,2387,307],{"class":337},[327,2389,2221],{"class":341},[327,2391,307],{"class":337},[327,2393,2394],{"class":341},"AWS_REQUEST_ID",[327,2396,496],{"class":337},[327,2398,2399,2402,2404,2406,2408,2410,2412,2415],{"class":329,"line":1308},[327,2400,2401],{"class":535},"      executionEnv",[327,2403,463],{"class":337},[327,2405,2216],{"class":341},[327,2407,307],{"class":337},[327,2409,2221],{"class":341},[327,2411,307],{"class":337},[327,2413,2414],{"class":341},"AWS_EXECUTION_ENV",[327,2416,496],{"class":337},[327,2418,2419,2422,2424,2426,2428,2430,2432],{"class":329,"line":1317},[327,2420,2421],{"class":535},"      runtime",[327,2423,463],{"class":337},[327,2425,2216],{"class":341},[327,2427,307],{"class":337},[327,2429,2221],{"class":341},[327,2431,307],{"class":337},[327,2433,2434],{"class":341},"AWS_LAMBDA_RUNTIME_API\n",[327,2436,2437],{"class":329,"line":1335},[327,2438,2331],{"class":337},[327,2440,2441],{"class":329,"line":1340},[327,2442,665],{"class":337},[327,2444,2445],{"class":329,"line":1349},[327,2446,671],{"class":337},[312,2448,2450],{"id":2449},"serverless-framework-configuration","Serverless Framework Configuration",[453,2452,2454],{"id":2453},"basic-configuration","Basic Configuration",[317,2456,2458],{"className":1388,"code":2457,"filename":1390,"language":1391,"meta":323,"style":323},"service: vercube-api\n\nprovider:\n  name: aws\n  runtime: nodejs22.x\n  region: us-east-1\n  memorySize: 512\n  timeout: 30\n  \n  # Environment variables\n  environment:\n    NODE_ENV: production\n    DATABASE_URL: ${env:DATABASE_URL}\n    JWT_SECRET: ${env:JWT_SECRET}\n\nfunctions:\n  api:\n    handler: lambda.handler\n    events:\n      - http:\n          path: \u002F{proxy+}\n          method: ANY\n          cors: true\n",[291,2459,2460,2470,2474,2481,2491,2501,2511,2521,2531,2535,2540,2547,2557,2567,2577,2581,2587,2593,2601,2607,2615,2623,2631],{"__ignoreMap":323},[327,2461,2462,2465,2467],{"class":329,"line":330},[327,2463,2464],{"class":535},"service",[327,2466,463],{"class":337},[327,2468,2469],{"class":354}," vercube-api\n",[327,2471,2472],{"class":329,"line":364},[327,2473,390],{"emptyLinePlaceholder":56},[327,2475,2476,2479],{"class":329,"line":387},[327,2477,2478],{"class":535},"provider",[327,2480,1401],{"class":337},[327,2482,2483,2486,2488],{"class":329,"line":393},[327,2484,2485],{"class":535},"  name",[327,2487,463],{"class":337},[327,2489,2490],{"class":354}," aws\n",[327,2492,2493,2496,2498],{"class":329,"line":414},[327,2494,2495],{"class":535},"  runtime",[327,2497,463],{"class":337},[327,2499,2500],{"class":354}," nodejs22.x\n",[327,2502,2503,2506,2508],{"class":329,"line":419},[327,2504,2505],{"class":535},"  region",[327,2507,463],{"class":337},[327,2509,2510],{"class":354}," us-east-1\n",[327,2512,2513,2516,2518],{"class":329,"line":426},[327,2514,2515],{"class":535},"  memorySize",[327,2517,463],{"class":337},[327,2519,2520],{"class":1760}," 512\n",[327,2522,2523,2526,2528],{"class":329,"line":567},[327,2524,2525],{"class":535},"  timeout",[327,2527,463],{"class":337},[327,2529,2530],{"class":1760}," 30\n",[327,2532,2533],{"class":329,"line":573},[327,2534,976],{"class":341},[327,2536,2537],{"class":329,"line":590},[327,2538,2539],{"class":422},"  # Environment variables\n",[327,2541,2542,2545],{"class":329,"line":600},[327,2543,2544],{"class":535},"  environment",[327,2546,1401],{"class":337},[327,2548,2549,2552,2554],{"class":329,"line":617},[327,2550,2551],{"class":535},"    NODE_ENV",[327,2553,463],{"class":337},[327,2555,2556],{"class":354}," production\n",[327,2558,2559,2562,2564],{"class":329,"line":632},[327,2560,2561],{"class":535},"    DATABASE_URL",[327,2563,463],{"class":337},[327,2565,2566],{"class":354}," ${env:DATABASE_URL}\n",[327,2568,2569,2572,2574],{"class":329,"line":637},[327,2570,2571],{"class":535},"    JWT_SECRET",[327,2573,463],{"class":337},[327,2575,2576],{"class":354}," ${env:JWT_SECRET}\n",[327,2578,2579],{"class":329,"line":647},[327,2580,390],{"emptyLinePlaceholder":56},[327,2582,2583,2585],{"class":329,"line":662},[327,2584,1398],{"class":535},[327,2586,1401],{"class":337},[327,2588,2589,2591],{"class":329,"line":668},[327,2590,1406],{"class":535},[327,2592,1401],{"class":337},[327,2594,2595,2597,2599],{"class":329,"line":879},[327,2596,1413],{"class":535},[327,2598,463],{"class":337},[327,2600,1418],{"class":354},[327,2602,2603,2605],{"class":329,"line":888},[327,2604,1423],{"class":535},[327,2606,1401],{"class":337},[327,2608,2609,2611,2613],{"class":329,"line":901},[327,2610,1430],{"class":337},[327,2612,1433],{"class":535},[327,2614,1401],{"class":337},[327,2616,2617,2619,2621],{"class":329,"line":906},[327,2618,1440],{"class":535},[327,2620,463],{"class":337},[327,2622,1445],{"class":354},[327,2624,2625,2627,2629],{"class":329,"line":1285},[327,2626,1450],{"class":535},[327,2628,463],{"class":337},[327,2630,1455],{"class":354},[327,2632,2633,2636,2638],{"class":329,"line":1290},[327,2634,2635],{"class":535},"          cors",[327,2637,463],{"class":337},[327,2639,2640],{"class":1698}," true\n",[453,2642,2644],{"id":2643},"advanced-configuration","Advanced Configuration",[317,2646,2648],{"className":1388,"code":2647,"filename":1390,"language":1391,"meta":323,"style":323},"service: vercube-api\n\nprovider:\n  name: aws\n  runtime: nodejs22.x\n  region: us-east-1\n  \n  # Performance settings\n  memorySize: 1024\n  timeout: 60\n  \n  # VPC configuration (for database access)\n  vpc:\n    securityGroupIds:\n      - sg-xxxxxxxxx\n    subnetIds:\n      - subnet-xxxxxxxxx\n      - subnet-yyyyyyyyy\n  \n  # IAM permissions\n  iam:\n    role:\n      statements:\n        - Effect: Allow\n          Action:\n            - s3:GetObject\n            - s3:PutObject\n          Resource: 'arn:aws:s3:::my-bucket\u002F*'\n        - Effect: Allow\n          Action:\n            - dynamodb:Query\n            - dynamodb:Scan\n            - dynamodb:GetItem\n            - dynamodb:PutItem\n          Resource: 'arn:aws:dynamodb:${aws:region}:*:table\u002Fmy-table'\n  \n  # Environment variables\n  environment:\n    NODE_ENV: ${opt:stage, 'dev'}\n    DATABASE_URL: ${env:DATABASE_URL}\n    REDIS_URL: ${env:REDIS_URL}\n    JWT_SECRET: ${env:JWT_SECRET}\n    S3_BUCKET: ${env:S3_BUCKET}\n\nfunctions:\n  api:\n    handler: lambda.handler\n    \n    # Provisioned concurrency for predictable performance\n    provisionedConcurrency: 2\n    \n    # Reserved concurrent executions\n    reservedConcurrency: 100\n    \n    events:\n      - http:\n          path: \u002F{proxy+}\n          method: ANY\n          cors:\n            origin: '*'\n            headers:\n              - Content-Type\n              - Authorization\n              - X-Api-Key\n            allowCredentials: true\n          \n          # Binary media types\n          binaryMediaTypes:\n            - 'image\u002F*'\n            - 'application\u002Fpdf'\n            - 'application\u002Fzip'\n    \n    # Layer for dependencies\n    layers:\n      - arn:aws:lambda:us-east-1:xxxxx:layer:my-dependencies:1\n    \n    # Tags\n    tags:\n      Environment: ${opt:stage, 'dev'}\n      Service: vercube-api\n\n# Plugins\nplugins:\n  - serverless-offline\n  - serverless-plugin-typescript\n\n# Custom configuration\ncustom:\n  serverless-offline:\n    httpPort: 3000\n",[291,2649,2650,2658,2662,2668,2676,2684,2692,2696,2701,2710,2719,2723,2728,2735,2742,2749,2756,2763,2770,2774,2779,2786,2793,2800,2813,2820,2827,2834,2848,2858,2864,2871,2878,2885,2892,2905,2909,2913,2919,2928,2936,2946,2955,2966,2971,2978,2985,2994,2999,3005,3016,3021,3027,3038,3043,3050,3059,3068,3077,3084,3099,3107,3116,3124,3132,3142,3148,3154,3161,3172,3183,3194,3199,3205,3213,3221,3226,3232,3240,3250,3260,3265,3271,3279,3288,3296,3301,3307,3315,3323],{"__ignoreMap":323},[327,2651,2652,2654,2656],{"class":329,"line":330},[327,2653,2464],{"class":535},[327,2655,463],{"class":337},[327,2657,2469],{"class":354},[327,2659,2660],{"class":329,"line":364},[327,2661,390],{"emptyLinePlaceholder":56},[327,2663,2664,2666],{"class":329,"line":387},[327,2665,2478],{"class":535},[327,2667,1401],{"class":337},[327,2669,2670,2672,2674],{"class":329,"line":393},[327,2671,2485],{"class":535},[327,2673,463],{"class":337},[327,2675,2490],{"class":354},[327,2677,2678,2680,2682],{"class":329,"line":414},[327,2679,2495],{"class":535},[327,2681,463],{"class":337},[327,2683,2500],{"class":354},[327,2685,2686,2688,2690],{"class":329,"line":419},[327,2687,2505],{"class":535},[327,2689,463],{"class":337},[327,2691,2510],{"class":354},[327,2693,2694],{"class":329,"line":426},[327,2695,976],{"class":341},[327,2697,2698],{"class":329,"line":567},[327,2699,2700],{"class":422},"  # Performance settings\n",[327,2702,2703,2705,2707],{"class":329,"line":573},[327,2704,2515],{"class":535},[327,2706,463],{"class":337},[327,2708,2709],{"class":1760}," 1024\n",[327,2711,2712,2714,2716],{"class":329,"line":590},[327,2713,2525],{"class":535},[327,2715,463],{"class":337},[327,2717,2718],{"class":1760}," 60\n",[327,2720,2721],{"class":329,"line":600},[327,2722,976],{"class":341},[327,2724,2725],{"class":329,"line":617},[327,2726,2727],{"class":422},"  # VPC configuration (for database access)\n",[327,2729,2730,2733],{"class":329,"line":632},[327,2731,2732],{"class":535},"  vpc",[327,2734,1401],{"class":337},[327,2736,2737,2740],{"class":329,"line":637},[327,2738,2739],{"class":535},"    securityGroupIds",[327,2741,1401],{"class":337},[327,2743,2744,2746],{"class":329,"line":647},[327,2745,1430],{"class":337},[327,2747,2748],{"class":354}," sg-xxxxxxxxx\n",[327,2750,2751,2754],{"class":329,"line":662},[327,2752,2753],{"class":535},"    subnetIds",[327,2755,1401],{"class":337},[327,2757,2758,2760],{"class":329,"line":668},[327,2759,1430],{"class":337},[327,2761,2762],{"class":354}," subnet-xxxxxxxxx\n",[327,2764,2765,2767],{"class":329,"line":879},[327,2766,1430],{"class":337},[327,2768,2769],{"class":354}," subnet-yyyyyyyyy\n",[327,2771,2772],{"class":329,"line":888},[327,2773,976],{"class":341},[327,2775,2776],{"class":329,"line":901},[327,2777,2778],{"class":422},"  # IAM permissions\n",[327,2780,2781,2784],{"class":329,"line":906},[327,2782,2783],{"class":535},"  iam",[327,2785,1401],{"class":337},[327,2787,2788,2791],{"class":329,"line":1285},[327,2789,2790],{"class":535},"    role",[327,2792,1401],{"class":337},[327,2794,2795,2798],{"class":329,"line":1290},[327,2796,2797],{"class":535},"      statements",[327,2799,1401],{"class":337},[327,2801,2802,2805,2808,2810],{"class":329,"line":1308},[327,2803,2804],{"class":337},"        -",[327,2806,2807],{"class":535}," Effect",[327,2809,463],{"class":337},[327,2811,2812],{"class":354}," Allow\n",[327,2814,2815,2818],{"class":329,"line":1317},[327,2816,2817],{"class":535},"          Action",[327,2819,1401],{"class":337},[327,2821,2822,2824],{"class":329,"line":1335},[327,2823,1467],{"class":337},[327,2825,2826],{"class":354}," s3:GetObject\n",[327,2828,2829,2831],{"class":329,"line":1340},[327,2830,1467],{"class":337},[327,2832,2833],{"class":354}," s3:PutObject\n",[327,2835,2836,2839,2841,2843,2846],{"class":329,"line":1349},[327,2837,2838],{"class":535},"          Resource",[327,2840,463],{"class":337},[327,2842,351],{"class":337},[327,2844,2845],{"class":354},"arn:aws:s3:::my-bucket\u002F*",[327,2847,564],{"class":337},[327,2849,2850,2852,2854,2856],{"class":329,"line":1354},[327,2851,2804],{"class":337},[327,2853,2807],{"class":535},[327,2855,463],{"class":337},[327,2857,2812],{"class":354},[327,2859,2860,2862],{"class":329,"line":1914},[327,2861,2817],{"class":535},[327,2863,1401],{"class":337},[327,2865,2866,2868],{"class":329,"line":1919},[327,2867,1467],{"class":337},[327,2869,2870],{"class":354}," dynamodb:Query\n",[327,2872,2873,2875],{"class":329,"line":1924},[327,2874,1467],{"class":337},[327,2876,2877],{"class":354}," dynamodb:Scan\n",[327,2879,2880,2882],{"class":329,"line":1942},[327,2881,1467],{"class":337},[327,2883,2884],{"class":354}," dynamodb:GetItem\n",[327,2886,2887,2889],{"class":329,"line":1976},[327,2888,1467],{"class":337},[327,2890,2891],{"class":354}," dynamodb:PutItem\n",[327,2893,2894,2896,2898,2900,2903],{"class":329,"line":1994},[327,2895,2838],{"class":535},[327,2897,463],{"class":337},[327,2899,351],{"class":337},[327,2901,2902],{"class":354},"arn:aws:dynamodb:${aws:region}:*:table\u002Fmy-table",[327,2904,564],{"class":337},[327,2906,2907],{"class":329,"line":2018},[327,2908,976],{"class":341},[327,2910,2911],{"class":329,"line":2023},[327,2912,2539],{"class":422},[327,2914,2915,2917],{"class":329,"line":2028},[327,2916,2544],{"class":535},[327,2918,1401],{"class":337},[327,2920,2921,2923,2925],{"class":329,"line":2057},[327,2922,2551],{"class":535},[327,2924,463],{"class":337},[327,2926,2927],{"class":354}," ${opt:stage, 'dev'}\n",[327,2929,2930,2932,2934],{"class":329,"line":2069},[327,2931,2561],{"class":535},[327,2933,463],{"class":337},[327,2935,2566],{"class":354},[327,2937,2938,2941,2943],{"class":329,"line":2074},[327,2939,2940],{"class":535},"    REDIS_URL",[327,2942,463],{"class":337},[327,2944,2945],{"class":354}," ${env:REDIS_URL}\n",[327,2947,2949,2951,2953],{"class":329,"line":2948},42,[327,2950,2571],{"class":535},[327,2952,463],{"class":337},[327,2954,2576],{"class":354},[327,2956,2958,2961,2963],{"class":329,"line":2957},43,[327,2959,2960],{"class":535},"    S3_BUCKET",[327,2962,463],{"class":337},[327,2964,2965],{"class":354}," ${env:S3_BUCKET}\n",[327,2967,2969],{"class":329,"line":2968},44,[327,2970,390],{"emptyLinePlaceholder":56},[327,2972,2974,2976],{"class":329,"line":2973},45,[327,2975,1398],{"class":535},[327,2977,1401],{"class":337},[327,2979,2981,2983],{"class":329,"line":2980},46,[327,2982,1406],{"class":535},[327,2984,1401],{"class":337},[327,2986,2988,2990,2992],{"class":329,"line":2987},47,[327,2989,1413],{"class":535},[327,2991,463],{"class":337},[327,2993,1418],{"class":354},[327,2995,2997],{"class":329,"line":2996},48,[327,2998,1102],{"class":341},[327,3000,3002],{"class":329,"line":3001},49,[327,3003,3004],{"class":422},"    # Provisioned concurrency for predictable performance\n",[327,3006,3008,3011,3013],{"class":329,"line":3007},50,[327,3009,3010],{"class":535},"    provisionedConcurrency",[327,3012,463],{"class":337},[327,3014,3015],{"class":1760}," 2\n",[327,3017,3019],{"class":329,"line":3018},51,[327,3020,1102],{"class":341},[327,3022,3024],{"class":329,"line":3023},52,[327,3025,3026],{"class":422},"    # Reserved concurrent executions\n",[327,3028,3030,3033,3035],{"class":329,"line":3029},53,[327,3031,3032],{"class":535},"    reservedConcurrency",[327,3034,463],{"class":337},[327,3036,3037],{"class":1760}," 100\n",[327,3039,3041],{"class":329,"line":3040},54,[327,3042,1102],{"class":341},[327,3044,3046,3048],{"class":329,"line":3045},55,[327,3047,1423],{"class":535},[327,3049,1401],{"class":337},[327,3051,3053,3055,3057],{"class":329,"line":3052},56,[327,3054,1430],{"class":337},[327,3056,1433],{"class":535},[327,3058,1401],{"class":337},[327,3060,3062,3064,3066],{"class":329,"line":3061},57,[327,3063,1440],{"class":535},[327,3065,463],{"class":337},[327,3067,1445],{"class":354},[327,3069,3071,3073,3075],{"class":329,"line":3070},58,[327,3072,1450],{"class":535},[327,3074,463],{"class":337},[327,3076,1455],{"class":354},[327,3078,3080,3082],{"class":329,"line":3079},59,[327,3081,2635],{"class":535},[327,3083,1401],{"class":337},[327,3085,3087,3090,3092,3094,3097],{"class":329,"line":3086},60,[327,3088,3089],{"class":535},"            origin",[327,3091,463],{"class":337},[327,3093,351],{"class":337},[327,3095,3096],{"class":354},"*",[327,3098,564],{"class":337},[327,3100,3102,3105],{"class":329,"line":3101},61,[327,3103,3104],{"class":535},"            headers",[327,3106,1401],{"class":337},[327,3108,3110,3113],{"class":329,"line":3109},62,[327,3111,3112],{"class":337},"              -",[327,3114,3115],{"class":354}," Content-Type\n",[327,3117,3119,3121],{"class":329,"line":3118},63,[327,3120,3112],{"class":337},[327,3122,3123],{"class":354}," Authorization\n",[327,3125,3127,3129],{"class":329,"line":3126},64,[327,3128,3112],{"class":337},[327,3130,3131],{"class":354}," X-Api-Key\n",[327,3133,3135,3138,3140],{"class":329,"line":3134},65,[327,3136,3137],{"class":535},"            allowCredentials",[327,3139,463],{"class":337},[327,3141,2640],{"class":1698},[327,3143,3145],{"class":329,"line":3144},66,[327,3146,3147],{"class":341},"          \n",[327,3149,3151],{"class":329,"line":3150},67,[327,3152,3153],{"class":422},"          # Binary media types\n",[327,3155,3157,3159],{"class":329,"line":3156},68,[327,3158,1460],{"class":535},[327,3160,1401],{"class":337},[327,3162,3164,3166,3168,3170],{"class":329,"line":3163},69,[327,3165,1467],{"class":337},[327,3167,351],{"class":337},[327,3169,1472],{"class":354},[327,3171,564],{"class":337},[327,3173,3175,3177,3179,3181],{"class":329,"line":3174},70,[327,3176,1467],{"class":337},[327,3178,351],{"class":337},[327,3180,1149],{"class":354},[327,3182,564],{"class":337},[327,3184,3186,3188,3190,3192],{"class":329,"line":3185},71,[327,3187,1467],{"class":337},[327,3189,351],{"class":337},[327,3191,1493],{"class":354},[327,3193,564],{"class":337},[327,3195,3197],{"class":329,"line":3196},72,[327,3198,1102],{"class":341},[327,3200,3202],{"class":329,"line":3201},73,[327,3203,3204],{"class":422},"    # Layer for dependencies\n",[327,3206,3208,3211],{"class":329,"line":3207},74,[327,3209,3210],{"class":535},"    layers",[327,3212,1401],{"class":337},[327,3214,3216,3218],{"class":329,"line":3215},75,[327,3217,1430],{"class":337},[327,3219,3220],{"class":354}," arn:aws:lambda:us-east-1:xxxxx:layer:my-dependencies:1\n",[327,3222,3224],{"class":329,"line":3223},76,[327,3225,1102],{"class":341},[327,3227,3229],{"class":329,"line":3228},77,[327,3230,3231],{"class":422},"    # Tags\n",[327,3233,3235,3238],{"class":329,"line":3234},78,[327,3236,3237],{"class":535},"    tags",[327,3239,1401],{"class":337},[327,3241,3243,3246,3248],{"class":329,"line":3242},79,[327,3244,3245],{"class":535},"      Environment",[327,3247,463],{"class":337},[327,3249,2927],{"class":354},[327,3251,3253,3256,3258],{"class":329,"line":3252},80,[327,3254,3255],{"class":535},"      Service",[327,3257,463],{"class":337},[327,3259,2469],{"class":354},[327,3261,3263],{"class":329,"line":3262},81,[327,3264,390],{"emptyLinePlaceholder":56},[327,3266,3268],{"class":329,"line":3267},82,[327,3269,3270],{"class":422},"# Plugins\n",[327,3272,3274,3277],{"class":329,"line":3273},83,[327,3275,3276],{"class":535},"plugins",[327,3278,1401],{"class":337},[327,3280,3282,3285],{"class":329,"line":3281},84,[327,3283,3284],{"class":337},"  -",[327,3286,3287],{"class":354}," serverless-offline\n",[327,3289,3291,3293],{"class":329,"line":3290},85,[327,3292,3284],{"class":337},[327,3294,3295],{"class":354}," serverless-plugin-typescript\n",[327,3297,3299],{"class":329,"line":3298},86,[327,3300,390],{"emptyLinePlaceholder":56},[327,3302,3304],{"class":329,"line":3303},87,[327,3305,3306],{"class":422},"# Custom configuration\n",[327,3308,3310,3313],{"class":329,"line":3309},88,[327,3311,3312],{"class":535},"custom",[327,3314,1401],{"class":337},[327,3316,3318,3321],{"class":329,"line":3317},89,[327,3319,3320],{"class":535},"  serverless-offline",[327,3322,1401],{"class":337},[327,3324,3326,3329,3331],{"class":329,"line":3325},90,[327,3327,3328],{"class":535},"    httpPort",[327,3330,463],{"class":337},[327,3332,3333],{"class":1760}," 3000\n",[312,3335,3337],{"id":3336},"cold-start-optimization","Cold Start Optimization",[282,3339,3340],{},"Minimize cold start times for better performance:",[453,3342,3344],{"id":3343},"module-level-initialization","Module-Level Initialization",[317,3346,3348],{"className":319,"code":3347,"filename":321,"language":322,"meta":323,"style":323},"import { createApp } from '@vercube\u002Fcore';\nimport { toServerlessHandler } from '@vercube\u002Fserverless\u002Faws-lambda';\nimport { DatabaseService } from '.\u002Fservices\u002FDatabase';\n\n\u002F\u002F Initialize app at module level (happens once per container)\nconst app = createApp({\n  setup: async (app) => {\n    \u002F\u002F Bind services\n    app.container.bind(DatabaseService);\n    \n    \u002F\u002F Initialize database connection (reused across invocations)\n    const db = app.container.get(DatabaseService);\n    await db.connect();\n  }\n});\n\n\u002F\u002F Export handler (execution is fast)\nexport const handler = toServerlessHandler(app);\n",[291,3349,3350,3370,3390,3412,3416,3421,3435,3457,3462,3486,3490,3495,3524,3540,3544,3552,3556,3561],{"__ignoreMap":323},[327,3351,3352,3354,3356,3358,3360,3362,3364,3366,3368],{"class":329,"line":330},[327,3353,334],{"class":333},[327,3355,338],{"class":337},[327,3357,342],{"class":341},[327,3359,345],{"class":337},[327,3361,348],{"class":333},[327,3363,351],{"class":337},[327,3365,355],{"class":354},[327,3367,358],{"class":337},[327,3369,361],{"class":337},[327,3371,3372,3374,3376,3378,3380,3382,3384,3386,3388],{"class":329,"line":364},[327,3373,334],{"class":333},[327,3375,338],{"class":337},[327,3377,371],{"class":341},[327,3379,345],{"class":337},[327,3381,348],{"class":333},[327,3383,351],{"class":337},[327,3385,380],{"class":354},[327,3387,358],{"class":337},[327,3389,361],{"class":337},[327,3391,3392,3394,3396,3399,3401,3403,3405,3408,3410],{"class":329,"line":387},[327,3393,334],{"class":333},[327,3395,338],{"class":337},[327,3397,3398],{"class":341}," DatabaseService",[327,3400,345],{"class":337},[327,3402,348],{"class":333},[327,3404,351],{"class":337},[327,3406,3407],{"class":354},".\u002Fservices\u002FDatabase",[327,3409,358],{"class":337},[327,3411,361],{"class":337},[327,3413,3414],{"class":329,"line":393},[327,3415,390],{"emptyLinePlaceholder":56},[327,3417,3418],{"class":329,"line":414},[327,3419,3420],{"class":422},"\u002F\u002F Initialize app at module level (happens once per container)\n",[327,3422,3423,3425,3427,3429,3431,3433],{"class":329,"line":419},[327,3424,397],{"class":396},[327,3426,400],{"class":341},[327,3428,403],{"class":337},[327,3430,342],{"class":406},[327,3432,949],{"class":341},[327,3434,478],{"class":337},[327,3436,3437,3440,3442,3445,3447,3450,3452,3455],{"class":329,"line":426},[327,3438,3439],{"class":406},"  setup",[327,3441,463],{"class":337},[327,3443,3444],{"class":396}," async",[327,3446,1982],{"class":337},[327,3448,3449],{"class":1054},"app",[327,3451,1062],{"class":337},[327,3453,3454],{"class":396}," =>",[327,3456,522],{"class":337},[327,3458,3459],{"class":329,"line":567},[327,3460,3461],{"class":422},"    \u002F\u002F Bind services\n",[327,3463,3464,3467,3469,3472,3474,3477,3479,3482,3484],{"class":329,"line":573},[327,3465,3466],{"class":341},"    app",[327,3468,307],{"class":337},[327,3470,3471],{"class":341},"container",[327,3473,307],{"class":337},[327,3475,3476],{"class":406},"bind",[327,3478,949],{"class":535},[327,3480,3481],{"class":341},"DatabaseService",[327,3483,1062],{"class":535},[327,3485,361],{"class":337},[327,3487,3488],{"class":329,"line":590},[327,3489,1102],{"class":535},[327,3491,3492],{"class":329,"line":600},[327,3493,3494],{"class":422},"    \u002F\u002F Initialize database connection (reused across invocations)\n",[327,3496,3497,3499,3502,3504,3507,3509,3511,3513,3516,3518,3520,3522],{"class":329,"line":617},[327,3498,1069],{"class":396},[327,3500,3501],{"class":341}," db",[327,3503,1075],{"class":337},[327,3505,3506],{"class":341}," app",[327,3508,307],{"class":337},[327,3510,3471],{"class":341},[327,3512,307],{"class":337},[327,3514,3515],{"class":406},"get",[327,3517,949],{"class":535},[327,3519,3481],{"class":341},[327,3521,1062],{"class":535},[327,3523,361],{"class":337},[327,3525,3526,3529,3531,3533,3536,3538],{"class":329,"line":632},[327,3527,3528],{"class":333},"    await",[327,3530,3501],{"class":341},[327,3532,307],{"class":337},[327,3534,3535],{"class":406},"connect",[327,3537,409],{"class":535},[327,3539,361],{"class":337},[327,3541,3542],{"class":329,"line":637},[327,3543,665],{"class":337},[327,3545,3546,3548,3550],{"class":329,"line":647},[327,3547,1178],{"class":337},[327,3549,1062],{"class":341},[327,3551,361],{"class":337},[327,3553,3554],{"class":329,"line":662},[327,3555,390],{"emptyLinePlaceholder":56},[327,3557,3558],{"class":329,"line":668},[327,3559,3560],{"class":422},"\u002F\u002F Export handler (execution is fast)\n",[327,3562,3563,3565,3567,3569,3571,3573,3575],{"class":329,"line":879},[327,3564,429],{"class":333},[327,3566,432],{"class":396},[327,3568,435],{"class":341},[327,3570,403],{"class":337},[327,3572,371],{"class":406},[327,3574,442],{"class":341},[327,3576,361],{"class":337},[453,3578,3580],{"id":3579},"lazy-loading-heavy-dependencies","Lazy Loading Heavy Dependencies",[317,3582,3584],{"className":319,"code":3583,"language":322,"meta":323,"style":323},"export class HeavyServiceFactory {\n  private static instance: HeavyService | null = null;\n  \n  static async getInstance() {\n    if (!this.instance) {\n      \u002F\u002F Only import when needed\n      const { HeavyService } = await import('.\u002FHeavyService');\n      this.instance = new HeavyService();\n    }\n    return this.instance;\n  }\n}\n\n@Controller('\u002Fheavy')\nexport class HeavyController {\n  \n  @Get('\u002Fprocess')\n  async process() {\n    \u002F\u002F Load heavy service only when this endpoint is called\n    const service = await HeavyServiceFactory.getInstance();\n    return await service.process();\n  }\n}\n",[291,3585,3586,3597,3623,3627,3641,3657,3662,3693,3710,3714,3724,3728,3732,3736,3753,3764,3768,3785,3795,3800,3822,3839,3843],{"__ignoreMap":323},[327,3587,3588,3590,3592,3595],{"class":329,"line":330},[327,3589,429],{"class":333},[327,3591,966],{"class":396},[327,3593,3594],{"class":483}," HeavyServiceFactory",[327,3596,522],{"class":337},[327,3598,3599,3601,3604,3607,3609,3612,3615,3618,3620],{"class":329,"line":364},[327,3600,992],{"class":396},[327,3602,3603],{"class":396}," static",[327,3605,3606],{"class":535}," instance",[327,3608,463],{"class":337},[327,3610,3611],{"class":483}," HeavyService",[327,3613,3614],{"class":337}," |",[327,3616,3617],{"class":483}," null",[327,3619,1075],{"class":337},[327,3621,3622],{"class":337}," null;\n",[327,3624,3625],{"class":329,"line":387},[327,3626,976],{"class":341},[327,3628,3629,3632,3634,3637,3639],{"class":329,"line":393},[327,3630,3631],{"class":396},"  static",[327,3633,3444],{"class":396},[327,3635,3636],{"class":535}," getInstance",[327,3638,409],{"class":337},[327,3640,522],{"class":337},[327,3642,3643,3645,3647,3650,3653,3655],{"class":329,"line":414},[327,3644,1979],{"class":333},[327,3646,1982],{"class":535},[327,3648,3649],{"class":337},"!this.",[327,3651,3652],{"class":341},"instance",[327,3654,1051],{"class":535},[327,3656,478],{"class":337},[327,3658,3659],{"class":329,"line":419},[327,3660,3661],{"class":422},"      \u002F\u002F Only import when needed\n",[327,3663,3664,3667,3669,3671,3673,3675,3677,3680,3682,3684,3687,3689,3691],{"class":329,"line":426},[327,3665,3666],{"class":396},"      const",[327,3668,338],{"class":337},[327,3670,3611],{"class":341},[327,3672,345],{"class":337},[327,3674,1075],{"class":337},[327,3676,1078],{"class":333},[327,3678,3679],{"class":337}," import",[327,3681,949],{"class":535},[327,3683,358],{"class":337},[327,3685,3686],{"class":354},".\u002FHeavyService",[327,3688,358],{"class":337},[327,3690,1062],{"class":535},[327,3692,361],{"class":337},[327,3694,3695,3698,3700,3702,3704,3706,3708],{"class":329,"line":567},[327,3696,3697],{"class":337},"      this.",[327,3699,3652],{"class":341},[327,3701,1075],{"class":337},[327,3703,1110],{"class":337},[327,3705,3611],{"class":406},[327,3707,409],{"class":535},[327,3709,361],{"class":337},[327,3711,3712],{"class":329,"line":573},[327,3713,774],{"class":337},[327,3715,3716,3718,3720,3722],{"class":329,"line":590},[327,3717,1107],{"class":333},[327,3719,1081],{"class":337},[327,3721,3652],{"class":341},[327,3723,361],{"class":337},[327,3725,3726],{"class":329,"line":600},[327,3727,665],{"class":337},[327,3729,3730],{"class":329,"line":617},[327,3731,671],{"class":337},[327,3733,3734],{"class":329,"line":632},[327,3735,390],{"emptyLinePlaceholder":56},[327,3737,3738,3740,3742,3744,3746,3749,3751],{"class":329,"line":637},[327,3739,943],{"class":337},[327,3741,946],{"class":406},[327,3743,949],{"class":341},[327,3745,358],{"class":337},[327,3747,3748],{"class":354},"\u002Fheavy",[327,3750,358],{"class":337},[327,3752,959],{"class":341},[327,3754,3755,3757,3759,3762],{"class":329,"line":647},[327,3756,429],{"class":333},[327,3758,966],{"class":396},[327,3760,3761],{"class":483}," HeavyController",[327,3763,522],{"class":337},[327,3765,3766],{"class":329,"line":662},[327,3767,976],{"class":341},[327,3769,3770,3772,3774,3776,3778,3781,3783],{"class":329,"line":668},[327,3771,981],{"class":337},[327,3773,1014],{"class":406},[327,3775,949],{"class":341},[327,3777,358],{"class":337},[327,3779,3780],{"class":354},"\u002Fprocess",[327,3782,358],{"class":337},[327,3784,959],{"class":341},[327,3786,3787,3789,3791,3793],{"class":329,"line":879},[327,3788,1030],{"class":396},[327,3790,2216],{"class":535},[327,3792,409],{"class":337},[327,3794,522],{"class":337},[327,3796,3797],{"class":329,"line":888},[327,3798,3799],{"class":422},"    \u002F\u002F Load heavy service only when this endpoint is called\n",[327,3801,3802,3804,3807,3809,3811,3813,3815,3818,3820],{"class":329,"line":901},[327,3803,1069],{"class":396},[327,3805,3806],{"class":341}," service",[327,3808,1075],{"class":337},[327,3810,1078],{"class":333},[327,3812,3594],{"class":341},[327,3814,307],{"class":337},[327,3816,3817],{"class":406},"getInstance",[327,3819,409],{"class":535},[327,3821,361],{"class":337},[327,3823,3824,3826,3828,3830,3832,3835,3837],{"class":329,"line":906},[327,3825,1107],{"class":333},[327,3827,1078],{"class":333},[327,3829,3806],{"class":341},[327,3831,307],{"class":337},[327,3833,3834],{"class":406},"process",[327,3836,409],{"class":535},[327,3838,361],{"class":337},[327,3840,3841],{"class":329,"line":1285},[327,3842,665],{"class":337},[327,3844,3845],{"class":329,"line":1290},[327,3846,671],{"class":337},[453,3848,3850],{"id":3849},"provisioned-concurrency","Provisioned Concurrency",[282,3852,3853],{},"Keep functions warm to eliminate cold starts:",[317,3855,3857],{"className":1388,"code":3856,"filename":1390,"language":1391,"meta":323,"style":323},"functions:\n  api:\n    handler: lambda.handler\n    provisionedConcurrency: 5  # Keep 5 instances always warm\n    \n    # Or use auto-scaling\n    provisionedConcurrency:\n      minCapacity: 2\n      maxCapacity: 10\n      targetUtilizationPercent: 0.75\n",[291,3858,3859,3865,3871,3879,3891,3895,3900,3906,3915,3925],{"__ignoreMap":323},[327,3860,3861,3863],{"class":329,"line":330},[327,3862,1398],{"class":535},[327,3864,1401],{"class":337},[327,3866,3867,3869],{"class":329,"line":364},[327,3868,1406],{"class":535},[327,3870,1401],{"class":337},[327,3872,3873,3875,3877],{"class":329,"line":387},[327,3874,1413],{"class":535},[327,3876,463],{"class":337},[327,3878,1418],{"class":354},[327,3880,3881,3883,3885,3888],{"class":329,"line":393},[327,3882,3010],{"class":535},[327,3884,463],{"class":337},[327,3886,3887],{"class":1760}," 5",[327,3889,3890],{"class":422},"  # Keep 5 instances always warm\n",[327,3892,3893],{"class":329,"line":414},[327,3894,1102],{"class":341},[327,3896,3897],{"class":329,"line":419},[327,3898,3899],{"class":422},"    # Or use auto-scaling\n",[327,3901,3902,3904],{"class":329,"line":426},[327,3903,3010],{"class":535},[327,3905,1401],{"class":337},[327,3907,3908,3911,3913],{"class":329,"line":567},[327,3909,3910],{"class":535},"      minCapacity",[327,3912,463],{"class":337},[327,3914,3015],{"class":1760},[327,3916,3917,3920,3922],{"class":329,"line":573},[327,3918,3919],{"class":535},"      maxCapacity",[327,3921,463],{"class":337},[327,3923,3924],{"class":1760}," 10\n",[327,3926,3927,3930,3932],{"class":329,"line":590},[327,3928,3929],{"class":535},"      targetUtilizationPercent",[327,3931,463],{"class":337},[327,3933,3934],{"class":1760}," 0.75\n",[312,3936,3938],{"id":3937},"database-connections","Database Connections",[282,3940,3941],{},"Handle database connections efficiently in Lambda:",[453,3943,3945],{"id":3944},"connection-pooling","Connection Pooling",[317,3947,3949],{"className":319,"code":3948,"language":322,"meta":323,"style":323},"export class DatabaseService {\n  private static pool: Pool | null = null;\n  \n  async getPool() {\n    \u002F\u002F Reuse connection pool across invocations\n    if (DatabaseService.pool) {\n      return DatabaseService.pool;\n    }\n    \n    DatabaseService.pool = new Pool({\n      host: process.env.DB_HOST,\n      port: Number(process.env.DB_PORT),\n      user: process.env.DB_USER,\n      password: process.env.DB_PASSWORD,\n      database: process.env.DB_NAME,\n      \n      \u002F\u002F Lambda-optimized settings\n      max: 1,  \u002F\u002F Single connection per Lambda instance\n      idleTimeoutMillis: 30000,\n      connectionTimeoutMillis: 2000\n    });\n    \n    return DatabaseService.pool;\n  }\n  \n  async query(sql: string, params?: any[]) {\n    const pool = await this.getPool();\n    return await pool.query(sql, params);\n  }\n}\n",[291,3950,3951,3961,3983,3987,3998,4003,4020,4033,4037,4041,4060,4080,4107,4127,4147,4167,4172,4177,4192,4204,4214,4222,4226,4238,4242,4246,4280,4299,4324,4328],{"__ignoreMap":323},[327,3952,3953,3955,3957,3959],{"class":329,"line":330},[327,3954,429],{"class":333},[327,3956,966],{"class":396},[327,3958,3398],{"class":483},[327,3960,522],{"class":337},[327,3962,3963,3965,3967,3970,3972,3975,3977,3979,3981],{"class":329,"line":364},[327,3964,992],{"class":396},[327,3966,3603],{"class":396},[327,3968,3969],{"class":535}," pool",[327,3971,463],{"class":337},[327,3973,3974],{"class":483}," Pool",[327,3976,3614],{"class":337},[327,3978,3617],{"class":483},[327,3980,1075],{"class":337},[327,3982,3622],{"class":337},[327,3984,3985],{"class":329,"line":387},[327,3986,976],{"class":341},[327,3988,3989,3991,3994,3996],{"class":329,"line":393},[327,3990,1030],{"class":396},[327,3992,3993],{"class":535}," getPool",[327,3995,409],{"class":337},[327,3997,522],{"class":337},[327,3999,4000],{"class":329,"line":414},[327,4001,4002],{"class":422},"    \u002F\u002F Reuse connection pool across invocations\n",[327,4004,4005,4007,4009,4011,4013,4016,4018],{"class":329,"line":419},[327,4006,1979],{"class":333},[327,4008,1982],{"class":535},[327,4010,3481],{"class":341},[327,4012,307],{"class":337},[327,4014,4015],{"class":341},"pool",[327,4017,1051],{"class":535},[327,4019,478],{"class":337},[327,4021,4022,4025,4027,4029,4031],{"class":329,"line":426},[327,4023,4024],{"class":333},"      return",[327,4026,3398],{"class":341},[327,4028,307],{"class":337},[327,4030,4015],{"class":341},[327,4032,361],{"class":337},[327,4034,4035],{"class":329,"line":567},[327,4036,774],{"class":337},[327,4038,4039],{"class":329,"line":573},[327,4040,1102],{"class":535},[327,4042,4043,4046,4048,4050,4052,4054,4056,4058],{"class":329,"line":590},[327,4044,4045],{"class":341},"    DatabaseService",[327,4047,307],{"class":337},[327,4049,4015],{"class":341},[327,4051,1075],{"class":337},[327,4053,1110],{"class":337},[327,4055,3974],{"class":406},[327,4057,949],{"class":535},[327,4059,478],{"class":337},[327,4061,4062,4065,4067,4069,4071,4073,4075,4078],{"class":329,"line":600},[327,4063,4064],{"class":535},"      host",[327,4066,463],{"class":337},[327,4068,2216],{"class":341},[327,4070,307],{"class":337},[327,4072,2221],{"class":341},[327,4074,307],{"class":337},[327,4076,4077],{"class":341},"DB_HOST",[327,4079,496],{"class":337},[327,4081,4082,4085,4087,4090,4092,4094,4096,4098,4100,4103,4105],{"class":329,"line":617},[327,4083,4084],{"class":535},"      port",[327,4086,463],{"class":337},[327,4088,4089],{"class":406}," Number",[327,4091,949],{"class":535},[327,4093,3834],{"class":341},[327,4095,307],{"class":337},[327,4097,2221],{"class":341},[327,4099,307],{"class":337},[327,4101,4102],{"class":341},"DB_PORT",[327,4104,1062],{"class":535},[327,4106,496],{"class":337},[327,4108,4109,4112,4114,4116,4118,4120,4122,4125],{"class":329,"line":632},[327,4110,4111],{"class":535},"      user",[327,4113,463],{"class":337},[327,4115,2216],{"class":341},[327,4117,307],{"class":337},[327,4119,2221],{"class":341},[327,4121,307],{"class":337},[327,4123,4124],{"class":341},"DB_USER",[327,4126,496],{"class":337},[327,4128,4129,4132,4134,4136,4138,4140,4142,4145],{"class":329,"line":637},[327,4130,4131],{"class":535},"      password",[327,4133,463],{"class":337},[327,4135,2216],{"class":341},[327,4137,307],{"class":337},[327,4139,2221],{"class":341},[327,4141,307],{"class":337},[327,4143,4144],{"class":341},"DB_PASSWORD",[327,4146,496],{"class":337},[327,4148,4149,4152,4154,4156,4158,4160,4162,4165],{"class":329,"line":647},[327,4150,4151],{"class":535},"      database",[327,4153,463],{"class":337},[327,4155,2216],{"class":341},[327,4157,307],{"class":337},[327,4159,2221],{"class":341},[327,4161,307],{"class":337},[327,4163,4164],{"class":341},"DB_NAME",[327,4166,496],{"class":337},[327,4168,4169],{"class":329,"line":662},[327,4170,4171],{"class":535},"      \n",[327,4173,4174],{"class":329,"line":668},[327,4175,4176],{"class":422},"      \u002F\u002F Lambda-optimized settings\n",[327,4178,4179,4182,4184,4187,4189],{"class":329,"line":879},[327,4180,4181],{"class":535},"      max",[327,4183,463],{"class":337},[327,4185,4186],{"class":1760}," 1",[327,4188,1121],{"class":337},[327,4190,4191],{"class":422},"  \u002F\u002F Single connection per Lambda instance\n",[327,4193,4194,4197,4199,4202],{"class":329,"line":888},[327,4195,4196],{"class":535},"      idleTimeoutMillis",[327,4198,463],{"class":337},[327,4200,4201],{"class":1760}," 30000",[327,4203,496],{"class":337},[327,4205,4206,4209,4211],{"class":329,"line":901},[327,4207,4208],{"class":535},"      connectionTimeoutMillis",[327,4210,463],{"class":337},[327,4212,4213],{"class":1760}," 2000\n",[327,4215,4216,4218,4220],{"class":329,"line":906},[327,4217,1194],{"class":337},[327,4219,1062],{"class":535},[327,4221,361],{"class":337},[327,4223,4224],{"class":329,"line":1285},[327,4225,1102],{"class":535},[327,4227,4228,4230,4232,4234,4236],{"class":329,"line":1290},[327,4229,1107],{"class":333},[327,4231,3398],{"class":341},[327,4233,307],{"class":337},[327,4235,4015],{"class":341},[327,4237,361],{"class":337},[327,4239,4240],{"class":329,"line":1308},[327,4241,665],{"class":337},[327,4243,4244],{"class":329,"line":1317},[327,4245,976],{"class":341},[327,4247,4248,4250,4253,4255,4258,4260,4262,4264,4267,4270,4273,4276,4278],{"class":329,"line":1335},[327,4249,1030],{"class":396},[327,4251,4252],{"class":535}," query",[327,4254,949],{"class":337},[327,4256,4257],{"class":1054},"sql",[327,4259,463],{"class":337},[327,4261,1059],{"class":483},[327,4263,1121],{"class":337},[327,4265,4266],{"class":1054}," params",[327,4268,4269],{"class":337},"?:",[327,4271,4272],{"class":483}," any",[327,4274,4275],{"class":341},"[]",[327,4277,1062],{"class":337},[327,4279,522],{"class":337},[327,4281,4282,4284,4286,4288,4290,4292,4295,4297],{"class":329,"line":1340},[327,4283,1069],{"class":396},[327,4285,3969],{"class":341},[327,4287,1075],{"class":337},[327,4289,1078],{"class":333},[327,4291,1081],{"class":337},[327,4293,4294],{"class":406},"getPool",[327,4296,409],{"class":535},[327,4298,361],{"class":337},[327,4300,4301,4303,4305,4307,4309,4312,4314,4316,4318,4320,4322],{"class":329,"line":1349},[327,4302,1107],{"class":333},[327,4304,1078],{"class":333},[327,4306,3969],{"class":341},[327,4308,307],{"class":337},[327,4310,4311],{"class":406},"query",[327,4313,949],{"class":535},[327,4315,4257],{"class":341},[327,4317,1121],{"class":337},[327,4319,4266],{"class":341},[327,4321,1062],{"class":535},[327,4323,361],{"class":337},[327,4325,4326],{"class":329,"line":1354},[327,4327,665],{"class":337},[327,4329,4330],{"class":329,"line":1914},[327,4331,671],{"class":337},[453,4333,4335],{"id":4334},"rds-proxy","RDS Proxy",[282,4337,4338],{},"Use RDS Proxy to manage database connections:",[317,4340,4342],{"className":1388,"code":4341,"filename":1390,"language":1391,"meta":323,"style":323},"provider:\n  environment:\n    DB_HOST: my-rds-proxy.proxy-xxxxxxxxx.us-east-1.rds.amazonaws.com\n    DB_PORT: 5432\n  \n  iam:\n    role:\n      statements:\n        - Effect: Allow\n          Action:\n            - rds-db:connect\n          Resource: 'arn:aws:rds-db:us-east-1:xxxxx:dbuser:prx-xxxxx\u002F*'\n",[291,4343,4344,4350,4356,4366,4376,4380,4386,4392,4398,4408,4414,4421],{"__ignoreMap":323},[327,4345,4346,4348],{"class":329,"line":330},[327,4347,2478],{"class":535},[327,4349,1401],{"class":337},[327,4351,4352,4354],{"class":329,"line":364},[327,4353,2544],{"class":535},[327,4355,1401],{"class":337},[327,4357,4358,4361,4363],{"class":329,"line":387},[327,4359,4360],{"class":535},"    DB_HOST",[327,4362,463],{"class":337},[327,4364,4365],{"class":354}," my-rds-proxy.proxy-xxxxxxxxx.us-east-1.rds.amazonaws.com\n",[327,4367,4368,4371,4373],{"class":329,"line":393},[327,4369,4370],{"class":535},"    DB_PORT",[327,4372,463],{"class":337},[327,4374,4375],{"class":1760}," 5432\n",[327,4377,4378],{"class":329,"line":414},[327,4379,976],{"class":341},[327,4381,4382,4384],{"class":329,"line":419},[327,4383,2783],{"class":535},[327,4385,1401],{"class":337},[327,4387,4388,4390],{"class":329,"line":426},[327,4389,2790],{"class":535},[327,4391,1401],{"class":337},[327,4393,4394,4396],{"class":329,"line":567},[327,4395,2797],{"class":535},[327,4397,1401],{"class":337},[327,4399,4400,4402,4404,4406],{"class":329,"line":573},[327,4401,2804],{"class":337},[327,4403,2807],{"class":535},[327,4405,463],{"class":337},[327,4407,2812],{"class":354},[327,4409,4410,4412],{"class":329,"line":590},[327,4411,2817],{"class":535},[327,4413,1401],{"class":337},[327,4415,4416,4418],{"class":329,"line":600},[327,4417,1467],{"class":337},[327,4419,4420],{"class":354}," rds-db:connect\n",[327,4422,4423,4425,4427,4429,4432],{"class":329,"line":617},[327,4424,2838],{"class":535},[327,4426,463],{"class":337},[327,4428,351],{"class":337},[327,4430,4431],{"class":354},"arn:aws:rds-db:us-east-1:xxxxx:dbuser:prx-xxxxx\u002F*",[327,4433,564],{"class":337},[312,4435,4437],{"id":4436},"advanced-response-handling","Advanced Response Handling",[453,4439,4441],{"id":4440},"custom-headers","Custom Headers",[317,4443,4445],{"className":319,"code":4444,"language":322,"meta":323,"style":323},"@Controller('\u002Fapi')\nexport class ApiController {\n  \n  @Get('\u002Fcached-data')\n  getCachedData() {\n    return FastResponse.ok({ data: 'cached' })\n      .header('Cache-Control', 'public, max-age=3600')\n      .header('X-Custom-Header', 'custom-value');\n  }\n  \n  @Get('\u002Fstreaming-data')\n  getStreamingData() {\n    const stream = this.createDataStream();\n    \n    return new Response(stream, {\n      headers: {\n        'Content-Type': 'application\u002Fjson',\n        'Transfer-Encoding': 'chunked'\n      }\n    });\n  }\n}\n",[291,4446,4447,4464,4475,4479,4496,4505,4535,4562,4590,4594,4598,4615,4624,4642,4646,4663,4671,4689,4707,4711,4719,4723],{"__ignoreMap":323},[327,4448,4449,4451,4453,4455,4457,4460,4462],{"class":329,"line":330},[327,4450,943],{"class":337},[327,4452,946],{"class":406},[327,4454,949],{"class":341},[327,4456,358],{"class":337},[327,4458,4459],{"class":354},"\u002Fapi",[327,4461,358],{"class":337},[327,4463,959],{"class":341},[327,4465,4466,4468,4470,4473],{"class":329,"line":364},[327,4467,429],{"class":333},[327,4469,966],{"class":396},[327,4471,4472],{"class":483}," ApiController",[327,4474,522],{"class":337},[327,4476,4477],{"class":329,"line":387},[327,4478,976],{"class":341},[327,4480,4481,4483,4485,4487,4489,4492,4494],{"class":329,"line":393},[327,4482,981],{"class":337},[327,4484,1014],{"class":406},[327,4486,949],{"class":341},[327,4488,358],{"class":337},[327,4490,4491],{"class":354},"\u002Fcached-data",[327,4493,358],{"class":337},[327,4495,959],{"class":341},[327,4497,4498,4501,4503],{"class":329,"line":414},[327,4499,4500],{"class":535},"  getCachedData",[327,4502,409],{"class":337},[327,4504,522],{"class":337},[327,4506,4507,4509,4511,4513,4515,4517,4519,4522,4524,4526,4529,4531,4533],{"class":329,"line":419},[327,4508,1107],{"class":333},[327,4510,1681],{"class":341},[327,4512,307],{"class":337},[327,4514,1686],{"class":406},[327,4516,949],{"class":535},[327,4518,1612],{"class":337},[327,4520,4521],{"class":535}," data",[327,4523,463],{"class":337},[327,4525,351],{"class":337},[327,4527,4528],{"class":354},"cached",[327,4530,358],{"class":337},[327,4532,345],{"class":337},[327,4534,959],{"class":535},[327,4536,4537,4539,4542,4544,4546,4549,4551,4553,4555,4558,4560],{"class":329,"line":426},[327,4538,1708],{"class":337},[327,4540,4541],{"class":406},"header",[327,4543,949],{"class":535},[327,4545,358],{"class":337},[327,4547,4548],{"class":354},"Cache-Control",[327,4550,358],{"class":337},[327,4552,1121],{"class":337},[327,4554,351],{"class":337},[327,4556,4557],{"class":354},"public, max-age=3600",[327,4559,358],{"class":337},[327,4561,959],{"class":535},[327,4563,4564,4566,4568,4570,4572,4575,4577,4579,4581,4584,4586,4588],{"class":329,"line":567},[327,4565,1708],{"class":337},[327,4567,4541],{"class":406},[327,4569,949],{"class":535},[327,4571,358],{"class":337},[327,4573,4574],{"class":354},"X-Custom-Header",[327,4576,358],{"class":337},[327,4578,1121],{"class":337},[327,4580,351],{"class":337},[327,4582,4583],{"class":354},"custom-value",[327,4585,358],{"class":337},[327,4587,1062],{"class":535},[327,4589,361],{"class":337},[327,4591,4592],{"class":329,"line":573},[327,4593,665],{"class":337},[327,4595,4596],{"class":329,"line":590},[327,4597,976],{"class":341},[327,4599,4600,4602,4604,4606,4608,4611,4613],{"class":329,"line":600},[327,4601,981],{"class":337},[327,4603,1014],{"class":406},[327,4605,949],{"class":341},[327,4607,358],{"class":337},[327,4609,4610],{"class":354},"\u002Fstreaming-data",[327,4612,358],{"class":337},[327,4614,959],{"class":341},[327,4616,4617,4620,4622],{"class":329,"line":617},[327,4618,4619],{"class":535},"  getStreamingData",[327,4621,409],{"class":337},[327,4623,522],{"class":337},[327,4625,4626,4628,4631,4633,4635,4638,4640],{"class":329,"line":632},[327,4627,1069],{"class":396},[327,4629,4630],{"class":341}," stream",[327,4632,1075],{"class":337},[327,4634,1081],{"class":337},[327,4636,4637],{"class":406},"createDataStream",[327,4639,409],{"class":535},[327,4641,361],{"class":337},[327,4643,4644],{"class":329,"line":637},[327,4645,1102],{"class":535},[327,4647,4648,4650,4652,4654,4656,4659,4661],{"class":329,"line":647},[327,4649,1107],{"class":333},[327,4651,1110],{"class":337},[327,4653,1113],{"class":406},[327,4655,949],{"class":535},[327,4657,4658],{"class":341},"stream",[327,4660,1121],{"class":337},[327,4662,522],{"class":337},[327,4664,4665,4667,4669],{"class":329,"line":662},[327,4666,1128],{"class":535},[327,4668,463],{"class":337},[327,4670,522],{"class":337},[327,4672,4673,4675,4677,4679,4681,4683,4685,4687],{"class":329,"line":668},[327,4674,1137],{"class":337},[327,4676,1140],{"class":535},[327,4678,358],{"class":337},[327,4680,463],{"class":337},[327,4682,351],{"class":337},[327,4684,541],{"class":354},[327,4686,358],{"class":337},[327,4688,496],{"class":337},[327,4690,4691,4693,4696,4698,4700,4702,4705],{"class":329,"line":879},[327,4692,1137],{"class":337},[327,4694,4695],{"class":535},"Transfer-Encoding",[327,4697,358],{"class":337},[327,4699,463],{"class":337},[327,4701,351],{"class":337},[327,4703,4704],{"class":354},"chunked",[327,4706,564],{"class":337},[327,4708,4709],{"class":329,"line":888},[327,4710,1189],{"class":337},[327,4712,4713,4715,4717],{"class":329,"line":901},[327,4714,1194],{"class":337},[327,4716,1062],{"class":535},[327,4718,361],{"class":337},[327,4720,4721],{"class":329,"line":906},[327,4722,665],{"class":337},[327,4724,4725],{"class":329,"line":1285},[327,4726,671],{"class":337},[453,4728,4730],{"id":4729},"error-handling","Error Handling",[317,4732,4734],{"className":319,"code":4733,"language":322,"meta":323,"style":323},"import { NotFoundException, BadRequestException, InternalServerErrorException } from '@vercube\u002Fcore';\n\n@Controller('\u002Fusers')\nexport class UserController {\n  \n  @Get('\u002F:id')\n  async getUser(@Param('id') id: string) {\n    try {\n      const user = await this.userService.findById(id);\n      \n      if (!user) {\n        throw new NotFoundException(`User with ID ${id} not found`);\n      }\n      \n      return user;\n    } catch (error) {\n      if (error instanceof NotFoundException) {\n        throw error;\n      }\n      \n      \u002F\u002F Log unexpected errors\n      console.error('Error fetching user:', error);\n      throw new InternalServerErrorException('Failed to fetch user');\n    }\n  }\n}\n\n\u002F\u002F Automatically returns proper AWS response:\n\u002F\u002F {\n\u002F\u002F   statusCode: 404,\n\u002F\u002F   headers: { 'Content-Type': 'application\u002Fjson' },\n\u002F\u002F   body: '{\"statusCode\":404,\"message\":\"User with ID ... not found\"}'\n\u002F\u002F }\n",[291,4735,4736,4767,4771,4788,4799,4803,4820,4851,4858,4887,4891,4907,4939,4943,4947,4955,4971,4988,4997,5001,5005,5010,5036,5057,5061,5065,5069,5073,5078,5083,5088,5093,5098],{"__ignoreMap":323},[327,4737,4738,4740,4742,4745,4747,4750,4752,4755,4757,4759,4761,4763,4765],{"class":329,"line":330},[327,4739,334],{"class":333},[327,4741,338],{"class":337},[327,4743,4744],{"class":341}," NotFoundException",[327,4746,1121],{"class":337},[327,4748,4749],{"class":341}," BadRequestException",[327,4751,1121],{"class":337},[327,4753,4754],{"class":341}," InternalServerErrorException",[327,4756,345],{"class":337},[327,4758,348],{"class":333},[327,4760,351],{"class":337},[327,4762,355],{"class":354},[327,4764,358],{"class":337},[327,4766,361],{"class":337},[327,4768,4769],{"class":329,"line":364},[327,4770,390],{"emptyLinePlaceholder":56},[327,4772,4773,4775,4777,4779,4781,4784,4786],{"class":329,"line":387},[327,4774,943],{"class":337},[327,4776,946],{"class":406},[327,4778,949],{"class":341},[327,4780,358],{"class":337},[327,4782,4783],{"class":354},"\u002Fusers",[327,4785,358],{"class":337},[327,4787,959],{"class":341},[327,4789,4790,4792,4794,4797],{"class":329,"line":393},[327,4791,429],{"class":333},[327,4793,966],{"class":396},[327,4795,4796],{"class":483}," UserController",[327,4798,522],{"class":337},[327,4800,4801],{"class":329,"line":414},[327,4802,976],{"class":341},[327,4804,4805,4807,4809,4811,4813,4816,4818],{"class":329,"line":419},[327,4806,981],{"class":337},[327,4808,1014],{"class":406},[327,4810,949],{"class":341},[327,4812,358],{"class":337},[327,4814,4815],{"class":354},"\u002F:id",[327,4817,358],{"class":337},[327,4819,959],{"class":341},[327,4821,4822,4824,4827,4829,4831,4833,4835,4837,4839,4841,4843,4845,4847,4849],{"class":329,"line":426},[327,4823,1030],{"class":396},[327,4825,4826],{"class":535}," getUser",[327,4828,1036],{"class":337},[327,4830,1039],{"class":406},[327,4832,949],{"class":341},[327,4834,358],{"class":337},[327,4836,1046],{"class":354},[327,4838,358],{"class":337},[327,4840,1051],{"class":341},[327,4842,1046],{"class":1054},[327,4844,463],{"class":337},[327,4846,1059],{"class":483},[327,4848,1062],{"class":337},[327,4850,522],{"class":337},[327,4852,4853,4856],{"class":329,"line":567},[327,4854,4855],{"class":333},"    try",[327,4857,522],{"class":337},[327,4859,4860,4862,4865,4867,4869,4871,4874,4876,4879,4881,4883,4885],{"class":329,"line":573},[327,4861,3666],{"class":396},[327,4863,4864],{"class":341}," user",[327,4866,1075],{"class":337},[327,4868,1078],{"class":333},[327,4870,1081],{"class":337},[327,4872,4873],{"class":341},"userService",[327,4875,307],{"class":337},[327,4877,4878],{"class":406},"findById",[327,4880,949],{"class":535},[327,4882,1046],{"class":341},[327,4884,1062],{"class":535},[327,4886,361],{"class":337},[327,4888,4889],{"class":329,"line":590},[327,4890,4171],{"class":535},[327,4892,4893,4896,4898,4900,4903,4905],{"class":329,"line":600},[327,4894,4895],{"class":333},"      if",[327,4897,1982],{"class":535},[327,4899,1985],{"class":337},[327,4901,4902],{"class":341},"user",[327,4904,1051],{"class":535},[327,4906,478],{"class":337},[327,4908,4909,4912,4914,4916,4918,4921,4924,4926,4928,4930,4933,4935,4937],{"class":329,"line":617},[327,4910,4911],{"class":333},"        throw",[327,4913,1110],{"class":337},[327,4915,4744],{"class":406},[327,4917,949],{"class":535},[327,4919,4920],{"class":337},"`",[327,4922,4923],{"class":354},"User with ID ",[327,4925,1173],{"class":337},[327,4927,1046],{"class":341},[327,4929,1178],{"class":337},[327,4931,4932],{"class":354}," not found",[327,4934,4920],{"class":337},[327,4936,1062],{"class":535},[327,4938,361],{"class":337},[327,4940,4941],{"class":329,"line":632},[327,4942,1189],{"class":337},[327,4944,4945],{"class":329,"line":637},[327,4946,4171],{"class":535},[327,4948,4949,4951,4953],{"class":329,"line":647},[327,4950,4024],{"class":333},[327,4952,4864],{"class":341},[327,4954,361],{"class":337},[327,4956,4957,4959,4962,4964,4967,4969],{"class":329,"line":662},[327,4958,1194],{"class":337},[327,4960,4961],{"class":333}," catch",[327,4963,1982],{"class":535},[327,4965,4966],{"class":341},"error",[327,4968,1051],{"class":535},[327,4970,478],{"class":337},[327,4972,4973,4975,4977,4979,4982,4984,4986],{"class":329,"line":668},[327,4974,4895],{"class":333},[327,4976,1982],{"class":535},[327,4978,4966],{"class":341},[327,4980,4981],{"class":337}," instanceof",[327,4983,4744],{"class":483},[327,4985,1051],{"class":535},[327,4987,478],{"class":337},[327,4989,4990,4992,4995],{"class":329,"line":879},[327,4991,4911],{"class":333},[327,4993,4994],{"class":341}," error",[327,4996,361],{"class":337},[327,4998,4999],{"class":329,"line":888},[327,5000,1189],{"class":337},[327,5002,5003],{"class":329,"line":901},[327,5004,4171],{"class":535},[327,5006,5007],{"class":329,"line":906},[327,5008,5009],{"class":422},"      \u002F\u002F Log unexpected errors\n",[327,5011,5012,5015,5017,5019,5021,5023,5026,5028,5030,5032,5034],{"class":329,"line":1285},[327,5013,5014],{"class":341},"      console",[327,5016,307],{"class":337},[327,5018,4966],{"class":406},[327,5020,949],{"class":535},[327,5022,358],{"class":337},[327,5024,5025],{"class":354},"Error fetching user:",[327,5027,358],{"class":337},[327,5029,1121],{"class":337},[327,5031,4994],{"class":341},[327,5033,1062],{"class":535},[327,5035,361],{"class":337},[327,5037,5038,5040,5042,5044,5046,5048,5051,5053,5055],{"class":329,"line":1290},[327,5039,1997],{"class":333},[327,5041,1110],{"class":337},[327,5043,4754],{"class":406},[327,5045,949],{"class":535},[327,5047,358],{"class":337},[327,5049,5050],{"class":354},"Failed to fetch user",[327,5052,358],{"class":337},[327,5054,1062],{"class":535},[327,5056,361],{"class":337},[327,5058,5059],{"class":329,"line":1308},[327,5060,774],{"class":337},[327,5062,5063],{"class":329,"line":1317},[327,5064,665],{"class":337},[327,5066,5067],{"class":329,"line":1335},[327,5068,671],{"class":337},[327,5070,5071],{"class":329,"line":1340},[327,5072,390],{"emptyLinePlaceholder":56},[327,5074,5075],{"class":329,"line":1349},[327,5076,5077],{"class":422},"\u002F\u002F Automatically returns proper AWS response:\n",[327,5079,5080],{"class":329,"line":1354},[327,5081,5082],{"class":422},"\u002F\u002F {\n",[327,5084,5085],{"class":329,"line":1914},[327,5086,5087],{"class":422},"\u002F\u002F   statusCode: 404,\n",[327,5089,5090],{"class":329,"line":1919},[327,5091,5092],{"class":422},"\u002F\u002F   headers: { 'Content-Type': 'application\u002Fjson' },\n",[327,5094,5095],{"class":329,"line":1924},[327,5096,5097],{"class":422},"\u002F\u002F   body: '{\"statusCode\":404,\"message\":\"User with ID ... not found\"}'\n",[327,5099,5100],{"class":329,"line":1942},[327,5101,5102],{"class":422},"\u002F\u002F }\n",[312,5104,170],{"id":5105},"deployment",[453,5107,5109],{"id":5108},"deploy-to-aws","Deploy to AWS",[317,5111,5115],{"className":5112,"code":5113,"language":5114,"meta":323,"style":323},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Deploy to default stage (dev)\nserverless deploy\n\n# Deploy to production\nserverless deploy --stage prod\n\n# Deploy specific function\nserverless deploy function -f api\n\n# Deploy with verbose output\nserverless deploy --verbose\n","bash",[291,5116,5117,5122,5130,5134,5139,5152,5156,5161,5176,5180,5185],{"__ignoreMap":323},[327,5118,5119],{"class":329,"line":330},[327,5120,5121],{"class":422},"# Deploy to default stage (dev)\n",[327,5123,5124,5127],{"class":329,"line":364},[327,5125,5126],{"class":483},"serverless",[327,5128,5129],{"class":354}," deploy\n",[327,5131,5132],{"class":329,"line":387},[327,5133,390],{"emptyLinePlaceholder":56},[327,5135,5136],{"class":329,"line":393},[327,5137,5138],{"class":422},"# Deploy to production\n",[327,5140,5141,5143,5146,5149],{"class":329,"line":414},[327,5142,5126],{"class":483},[327,5144,5145],{"class":354}," deploy",[327,5147,5148],{"class":354}," --stage",[327,5150,5151],{"class":354}," prod\n",[327,5153,5154],{"class":329,"line":419},[327,5155,390],{"emptyLinePlaceholder":56},[327,5157,5158],{"class":329,"line":426},[327,5159,5160],{"class":422},"# Deploy specific function\n",[327,5162,5163,5165,5167,5170,5173],{"class":329,"line":567},[327,5164,5126],{"class":483},[327,5166,5145],{"class":354},[327,5168,5169],{"class":354}," function",[327,5171,5172],{"class":354}," -f",[327,5174,5175],{"class":354}," api\n",[327,5177,5178],{"class":329,"line":573},[327,5179,390],{"emptyLinePlaceholder":56},[327,5181,5182],{"class":329,"line":590},[327,5183,5184],{"class":422},"# Deploy with verbose output\n",[327,5186,5187,5189,5191],{"class":329,"line":600},[327,5188,5126],{"class":483},[327,5190,5145],{"class":354},[327,5192,5193],{"class":354}," --verbose\n",[453,5195,5197],{"id":5196},"environment-specific-deployments","Environment-Specific Deployments",[317,5199,5201],{"className":1388,"code":5200,"filename":1390,"language":1391,"meta":323,"style":323},"service: vercube-api\n\nprovider:\n  name: aws\n  runtime: nodejs22.x\n  region: ${opt:region, 'us-east-1'}\n  stage: ${opt:stage, 'dev'}\n  \n  environment:\n    NODE_ENV: ${self:provider.stage}\n    DATABASE_URL: ${env:DATABASE_URL_${self:provider.stage}}\n\nfunctions:\n  api:\n    handler: lambda.handler\n",[291,5202,5203,5211,5215,5221,5229,5237,5246,5255,5259,5265,5274,5283,5287,5293,5299],{"__ignoreMap":323},[327,5204,5205,5207,5209],{"class":329,"line":330},[327,5206,2464],{"class":535},[327,5208,463],{"class":337},[327,5210,2469],{"class":354},[327,5212,5213],{"class":329,"line":364},[327,5214,390],{"emptyLinePlaceholder":56},[327,5216,5217,5219],{"class":329,"line":387},[327,5218,2478],{"class":535},[327,5220,1401],{"class":337},[327,5222,5223,5225,5227],{"class":329,"line":393},[327,5224,2485],{"class":535},[327,5226,463],{"class":337},[327,5228,2490],{"class":354},[327,5230,5231,5233,5235],{"class":329,"line":414},[327,5232,2495],{"class":535},[327,5234,463],{"class":337},[327,5236,2500],{"class":354},[327,5238,5239,5241,5243],{"class":329,"line":419},[327,5240,2505],{"class":535},[327,5242,463],{"class":337},[327,5244,5245],{"class":354}," ${opt:region, 'us-east-1'}\n",[327,5247,5248,5251,5253],{"class":329,"line":426},[327,5249,5250],{"class":535},"  stage",[327,5252,463],{"class":337},[327,5254,2927],{"class":354},[327,5256,5257],{"class":329,"line":567},[327,5258,976],{"class":341},[327,5260,5261,5263],{"class":329,"line":573},[327,5262,2544],{"class":535},[327,5264,1401],{"class":337},[327,5266,5267,5269,5271],{"class":329,"line":590},[327,5268,2551],{"class":535},[327,5270,463],{"class":337},[327,5272,5273],{"class":354}," ${self:provider.stage}\n",[327,5275,5276,5278,5280],{"class":329,"line":600},[327,5277,2561],{"class":535},[327,5279,463],{"class":337},[327,5281,5282],{"class":354}," ${env:DATABASE_URL_${self:provider.stage}}\n",[327,5284,5285],{"class":329,"line":617},[327,5286,390],{"emptyLinePlaceholder":56},[327,5288,5289,5291],{"class":329,"line":632},[327,5290,1398],{"class":535},[327,5292,1401],{"class":337},[327,5294,5295,5297],{"class":329,"line":637},[327,5296,1406],{"class":535},[327,5298,1401],{"class":337},[327,5300,5301,5303,5305],{"class":329,"line":647},[327,5302,1413],{"class":535},[327,5304,463],{"class":337},[327,5306,1418],{"class":354},[317,5308,5310],{"className":5112,"code":5309,"language":5114,"meta":323,"style":323},"# Deploy to development\nserverless deploy --stage dev\n\n# Deploy to production\nserverless deploy --stage prod --region us-west-2\n",[291,5311,5312,5317,5328,5332,5336],{"__ignoreMap":323},[327,5313,5314],{"class":329,"line":330},[327,5315,5316],{"class":422},"# Deploy to development\n",[327,5318,5319,5321,5323,5325],{"class":329,"line":364},[327,5320,5126],{"class":483},[327,5322,5145],{"class":354},[327,5324,5148],{"class":354},[327,5326,5327],{"class":354}," dev\n",[327,5329,5330],{"class":329,"line":387},[327,5331,390],{"emptyLinePlaceholder":56},[327,5333,5334],{"class":329,"line":393},[327,5335,5138],{"class":422},[327,5337,5338,5340,5342,5344,5347,5350],{"class":329,"line":414},[327,5339,5126],{"class":483},[327,5341,5145],{"class":354},[327,5343,5148],{"class":354},[327,5345,5346],{"class":354}," prod",[327,5348,5349],{"class":354}," --region",[327,5351,5352],{"class":354}," us-west-2\n",[312,5354,5356],{"id":5355},"monitoring-and-debugging","Monitoring and Debugging",[453,5358,5360],{"id":5359},"cloudwatch-metrics","CloudWatch Metrics",[282,5362,5363],{},"Monitor your Lambda function performance:",[317,5365,5367],{"className":1388,"code":5366,"filename":1390,"language":1391,"meta":323,"style":323},"functions:\n  api:\n    handler: lambda.handler\n    \n    # Enable detailed CloudWatch metrics\n    tracing:\n      lambda: true\n      apiGateway: true\n",[291,5368,5369,5375,5381,5389,5393,5398,5405,5414],{"__ignoreMap":323},[327,5370,5371,5373],{"class":329,"line":330},[327,5372,1398],{"class":535},[327,5374,1401],{"class":337},[327,5376,5377,5379],{"class":329,"line":364},[327,5378,1406],{"class":535},[327,5380,1401],{"class":337},[327,5382,5383,5385,5387],{"class":329,"line":387},[327,5384,1413],{"class":535},[327,5386,463],{"class":337},[327,5388,1418],{"class":354},[327,5390,5391],{"class":329,"line":393},[327,5392,1102],{"class":341},[327,5394,5395],{"class":329,"line":414},[327,5396,5397],{"class":422},"    # Enable detailed CloudWatch metrics\n",[327,5399,5400,5403],{"class":329,"line":419},[327,5401,5402],{"class":535},"    tracing",[327,5404,1401],{"class":337},[327,5406,5407,5410,5412],{"class":329,"line":426},[327,5408,5409],{"class":535},"      lambda",[327,5411,463],{"class":337},[327,5413,2640],{"class":1698},[327,5415,5416,5419,5421],{"class":329,"line":567},[327,5417,5418],{"class":535},"      apiGateway",[327,5420,463],{"class":337},[327,5422,2640],{"class":1698},[282,5424,5425],{},[286,5426,5427],{},"Key Metrics to Monitor:",[678,5429,5430,5436,5442,5448,5454,5460],{},[681,5431,5432,5435],{},[286,5433,5434],{},"Invocations"," - Number of times function is invoked",[681,5437,5438,5441],{},[286,5439,5440],{},"Duration"," - Execution time per invocation",[681,5443,5444,5447],{},[286,5445,5446],{},"Errors"," - Number of failed invocations",[681,5449,5450,5453],{},[286,5451,5452],{},"Throttles"," - Number of throttled invocations",[681,5455,5456,5459],{},[286,5457,5458],{},"ConcurrentExecutions"," - Number of concurrent invocations",[681,5461,5462,5465],{},[286,5463,5464],{},"IteratorAge"," - For stream-based invocations",[453,5467,5469],{"id":5468},"x-ray-tracing","X-Ray Tracing",[282,5471,5472],{},"Enable AWS X-Ray for detailed tracing:",[317,5474,5476],{"className":1388,"code":5475,"filename":1390,"language":1391,"meta":323,"style":323},"provider:\n  tracing:\n    lambda: true\n    apiGateway: true\n\nfunctions:\n  api:\n    handler: lambda.handler\n",[291,5477,5478,5484,5491,5500,5509,5513,5519,5525],{"__ignoreMap":323},[327,5479,5480,5482],{"class":329,"line":330},[327,5481,2478],{"class":535},[327,5483,1401],{"class":337},[327,5485,5486,5489],{"class":329,"line":364},[327,5487,5488],{"class":535},"  tracing",[327,5490,1401],{"class":337},[327,5492,5493,5496,5498],{"class":329,"line":387},[327,5494,5495],{"class":535},"    lambda",[327,5497,463],{"class":337},[327,5499,2640],{"class":1698},[327,5501,5502,5505,5507],{"class":329,"line":393},[327,5503,5504],{"class":535},"    apiGateway",[327,5506,463],{"class":337},[327,5508,2640],{"class":1698},[327,5510,5511],{"class":329,"line":414},[327,5512,390],{"emptyLinePlaceholder":56},[327,5514,5515,5517],{"class":329,"line":419},[327,5516,1398],{"class":535},[327,5518,1401],{"class":337},[327,5520,5521,5523],{"class":329,"line":426},[327,5522,1406],{"class":535},[327,5524,1401],{"class":337},[327,5526,5527,5529,5531],{"class":329,"line":567},[327,5528,1413],{"class":535},[327,5530,463],{"class":337},[327,5532,1418],{"class":354},[317,5534,5536],{"className":319,"code":5535,"language":322,"meta":323,"style":323},"import AWSXRay from 'aws-xray-sdk-core';\nimport AWS from 'aws-sdk';\n\n\u002F\u002F Wrap AWS SDK\nconst XAWS = AWSXRay.captureAWS(AWS);\n\n@Controller('\u002Ftraced')\nexport class TracedController {\n  \n  @Get('\u002Fdata')\n  async getData() {\n    \u002F\u002F This will appear in X-Ray traces\n    const segment = AWSXRay.getSegment();\n    const subsegment = segment.addNewSubsegment('custom-operation');\n    \n    try {\n      const data = await this.processData();\n      subsegment.close();\n      return data;\n    } catch (error) {\n      subsegment.addError(error);\n      subsegment.close();\n      throw error;\n    }\n  }\n}\n",[291,5537,5538,5557,5575,5579,5584,5606,5610,5627,5638,5642,5659,5670,5675,5695,5724,5728,5734,5753,5767,5775,5789,5806,5818,5826,5830,5834],{"__ignoreMap":323},[327,5539,5540,5542,5545,5548,5550,5553,5555],{"class":329,"line":330},[327,5541,334],{"class":333},[327,5543,5544],{"class":341}," AWSXRay ",[327,5546,5547],{"class":333},"from",[327,5549,351],{"class":337},[327,5551,5552],{"class":354},"aws-xray-sdk-core",[327,5554,358],{"class":337},[327,5556,361],{"class":337},[327,5558,5559,5561,5564,5566,5568,5571,5573],{"class":329,"line":364},[327,5560,334],{"class":333},[327,5562,5563],{"class":341}," AWS ",[327,5565,5547],{"class":333},[327,5567,351],{"class":337},[327,5569,5570],{"class":354},"aws-sdk",[327,5572,358],{"class":337},[327,5574,361],{"class":337},[327,5576,5577],{"class":329,"line":387},[327,5578,390],{"emptyLinePlaceholder":56},[327,5580,5581],{"class":329,"line":393},[327,5582,5583],{"class":422},"\u002F\u002F Wrap AWS SDK\n",[327,5585,5586,5588,5591,5593,5596,5598,5601,5604],{"class":329,"line":414},[327,5587,397],{"class":396},[327,5589,5590],{"class":341}," XAWS ",[327,5592,403],{"class":337},[327,5594,5595],{"class":341}," AWSXRay",[327,5597,307],{"class":337},[327,5599,5600],{"class":406},"captureAWS",[327,5602,5603],{"class":341},"(AWS)",[327,5605,361],{"class":337},[327,5607,5608],{"class":329,"line":419},[327,5609,390],{"emptyLinePlaceholder":56},[327,5611,5612,5614,5616,5618,5620,5623,5625],{"class":329,"line":426},[327,5613,943],{"class":337},[327,5615,946],{"class":406},[327,5617,949],{"class":341},[327,5619,358],{"class":337},[327,5621,5622],{"class":354},"\u002Ftraced",[327,5624,358],{"class":337},[327,5626,959],{"class":341},[327,5628,5629,5631,5633,5636],{"class":329,"line":567},[327,5630,429],{"class":333},[327,5632,966],{"class":396},[327,5634,5635],{"class":483}," TracedController",[327,5637,522],{"class":337},[327,5639,5640],{"class":329,"line":573},[327,5641,976],{"class":341},[327,5643,5644,5646,5648,5650,5652,5655,5657],{"class":329,"line":590},[327,5645,981],{"class":337},[327,5647,1014],{"class":406},[327,5649,949],{"class":341},[327,5651,358],{"class":337},[327,5653,5654],{"class":354},"\u002Fdata",[327,5656,358],{"class":337},[327,5658,959],{"class":341},[327,5660,5661,5663,5666,5668],{"class":329,"line":600},[327,5662,1030],{"class":396},[327,5664,5665],{"class":535}," getData",[327,5667,409],{"class":337},[327,5669,522],{"class":337},[327,5671,5672],{"class":329,"line":617},[327,5673,5674],{"class":422},"    \u002F\u002F This will appear in X-Ray traces\n",[327,5676,5677,5679,5682,5684,5686,5688,5691,5693],{"class":329,"line":632},[327,5678,1069],{"class":396},[327,5680,5681],{"class":341}," segment",[327,5683,1075],{"class":337},[327,5685,5595],{"class":341},[327,5687,307],{"class":337},[327,5689,5690],{"class":406},"getSegment",[327,5692,409],{"class":535},[327,5694,361],{"class":337},[327,5696,5697,5699,5702,5704,5706,5708,5711,5713,5715,5718,5720,5722],{"class":329,"line":637},[327,5698,1069],{"class":396},[327,5700,5701],{"class":341}," subsegment",[327,5703,1075],{"class":337},[327,5705,5681],{"class":341},[327,5707,307],{"class":337},[327,5709,5710],{"class":406},"addNewSubsegment",[327,5712,949],{"class":535},[327,5714,358],{"class":337},[327,5716,5717],{"class":354},"custom-operation",[327,5719,358],{"class":337},[327,5721,1062],{"class":535},[327,5723,361],{"class":337},[327,5725,5726],{"class":329,"line":647},[327,5727,1102],{"class":535},[327,5729,5730,5732],{"class":329,"line":662},[327,5731,4855],{"class":333},[327,5733,522],{"class":337},[327,5735,5736,5738,5740,5742,5744,5746,5749,5751],{"class":329,"line":668},[327,5737,3666],{"class":396},[327,5739,4521],{"class":341},[327,5741,1075],{"class":337},[327,5743,1078],{"class":333},[327,5745,1081],{"class":337},[327,5747,5748],{"class":406},"processData",[327,5750,409],{"class":535},[327,5752,361],{"class":337},[327,5754,5755,5758,5760,5763,5765],{"class":329,"line":879},[327,5756,5757],{"class":341},"      subsegment",[327,5759,307],{"class":337},[327,5761,5762],{"class":406},"close",[327,5764,409],{"class":535},[327,5766,361],{"class":337},[327,5768,5769,5771,5773],{"class":329,"line":888},[327,5770,4024],{"class":333},[327,5772,4521],{"class":341},[327,5774,361],{"class":337},[327,5776,5777,5779,5781,5783,5785,5787],{"class":329,"line":901},[327,5778,1194],{"class":337},[327,5780,4961],{"class":333},[327,5782,1982],{"class":535},[327,5784,4966],{"class":341},[327,5786,1051],{"class":535},[327,5788,478],{"class":337},[327,5790,5791,5793,5795,5798,5800,5802,5804],{"class":329,"line":906},[327,5792,5757],{"class":341},[327,5794,307],{"class":337},[327,5796,5797],{"class":406},"addError",[327,5799,949],{"class":535},[327,5801,4966],{"class":341},[327,5803,1062],{"class":535},[327,5805,361],{"class":337},[327,5807,5808,5810,5812,5814,5816],{"class":329,"line":1285},[327,5809,5757],{"class":341},[327,5811,307],{"class":337},[327,5813,5762],{"class":406},[327,5815,409],{"class":535},[327,5817,361],{"class":337},[327,5819,5820,5822,5824],{"class":329,"line":1290},[327,5821,1997],{"class":333},[327,5823,4994],{"class":341},[327,5825,361],{"class":337},[327,5827,5828],{"class":329,"line":1308},[327,5829,774],{"class":337},[327,5831,5832],{"class":329,"line":1317},[327,5833,665],{"class":337},[327,5835,5836],{"class":329,"line":1335},[327,5837,671],{"class":337},[312,5839,5841],{"id":5840},"troubleshooting","Troubleshooting",[453,5843,5845],{"id":5844},"common-issues","Common Issues",[282,5847,5848],{},[286,5849,5850],{},"Handler not found",[317,5852,5854],{"className":5112,"code":5853,"language":5114,"meta":323,"style":323},"Error: Cannot find module 'lambda'\n",[291,5855,5856],{"__ignoreMap":323},[327,5857,5858,5861,5864,5867,5870,5872,5875],{"class":329,"line":330},[327,5859,5860],{"class":483},"Error:",[327,5862,5863],{"class":354}," Cannot",[327,5865,5866],{"class":354}," find",[327,5868,5869],{"class":354}," module",[327,5871,351],{"class":337},[327,5873,5874],{"class":354},"lambda",[327,5876,564],{"class":337},[282,5878,5879,5882],{},[286,5880,5881],{},"Solution:"," Ensure handler path matches your file structure:",[317,5884,5886],{"className":1388,"code":5885,"language":1391,"meta":323,"style":323},"functions:\n  api:\n    handler: lambda.handler  # \u003Cfilename>.\u003Cexport name>\n",[291,5887,5888,5894,5900],{"__ignoreMap":323},[327,5889,5890,5892],{"class":329,"line":330},[327,5891,1398],{"class":535},[327,5893,1401],{"class":337},[327,5895,5896,5898],{"class":329,"line":364},[327,5897,1406],{"class":535},[327,5899,1401],{"class":337},[327,5901,5902,5904,5906,5909],{"class":329,"line":387},[327,5903,1413],{"class":535},[327,5905,463],{"class":337},[327,5907,5908],{"class":354}," lambda.handler",[327,5910,5911],{"class":422},"  # \u003Cfilename>.\u003Cexport name>\n",[282,5913,5914],{},[286,5915,5916],{},"Request timeout",[317,5918,5920],{"className":5112,"code":5919,"language":5114,"meta":323,"style":323},"Task timed out after 30.00 seconds\n",[291,5921,5922],{"__ignoreMap":323},[327,5923,5924,5927,5930,5933,5936,5939],{"class":329,"line":330},[327,5925,5926],{"class":483},"Task",[327,5928,5929],{"class":354}," timed",[327,5931,5932],{"class":354}," out",[327,5934,5935],{"class":354}," after",[327,5937,5938],{"class":1760}," 30.00",[327,5940,5941],{"class":354}," seconds\n",[282,5943,5944,5946],{},[286,5945,5881],{}," Increase timeout:",[317,5948,5950],{"className":1388,"code":5949,"language":1391,"meta":323,"style":323},"functions:\n  api:\n    timeout: 60\n",[291,5951,5952,5958,5964],{"__ignoreMap":323},[327,5953,5954,5956],{"class":329,"line":330},[327,5955,1398],{"class":535},[327,5957,1401],{"class":337},[327,5959,5960,5962],{"class":329,"line":364},[327,5961,1406],{"class":535},[327,5963,1401],{"class":337},[327,5965,5966,5969,5971],{"class":329,"line":387},[327,5967,5968],{"class":535},"    timeout",[327,5970,463],{"class":337},[327,5972,2718],{"class":1760},[282,5974,5975],{},[286,5976,5977],{},"Binary content corrupted",[317,5979,5981],{"className":5112,"code":5980,"language":5114,"meta":323,"style":323},"Response body appears corrupted or truncated\n",[291,5982,5983],{"__ignoreMap":323},[327,5984,5985,5987,5990,5993,5996,5999],{"class":329,"line":330},[327,5986,301],{"class":483},[327,5988,5989],{"class":354}," body",[327,5991,5992],{"class":354}," appears",[327,5994,5995],{"class":354}," corrupted",[327,5997,5998],{"class":354}," or",[327,6000,6001],{"class":354}," truncated\n",[282,6003,6004,6006],{},[286,6005,5881],{}," Configure binary media types:",[317,6008,6010],{"className":1388,"code":6009,"language":1391,"meta":323,"style":323},"functions:\n  api:\n    events:\n      - http:\n          binaryMediaTypes:\n            - 'image\u002F*'\n            - 'application\u002Fpdf'\n",[291,6011,6012,6018,6024,6030,6038,6044,6054],{"__ignoreMap":323},[327,6013,6014,6016],{"class":329,"line":330},[327,6015,1398],{"class":535},[327,6017,1401],{"class":337},[327,6019,6020,6022],{"class":329,"line":364},[327,6021,1406],{"class":535},[327,6023,1401],{"class":337},[327,6025,6026,6028],{"class":329,"line":387},[327,6027,1423],{"class":535},[327,6029,1401],{"class":337},[327,6031,6032,6034,6036],{"class":329,"line":393},[327,6033,1430],{"class":337},[327,6035,1433],{"class":535},[327,6037,1401],{"class":337},[327,6039,6040,6042],{"class":329,"line":414},[327,6041,1460],{"class":535},[327,6043,1401],{"class":337},[327,6045,6046,6048,6050,6052],{"class":329,"line":419},[327,6047,1467],{"class":337},[327,6049,351],{"class":337},[327,6051,1472],{"class":354},[327,6053,564],{"class":337},[327,6055,6056,6058,6060,6062],{"class":329,"line":426},[327,6057,1467],{"class":337},[327,6059,351],{"class":337},[327,6061,1149],{"class":354},[327,6063,564],{"class":337},[282,6065,6066],{},[286,6067,6068],{},"Cold start too slow",[317,6070,6072],{"className":5112,"code":6071,"language":5114,"meta":323,"style":323},"Duration: 3000ms (Cold Start: 2500ms)\n",[291,6073,6074],{"__ignoreMap":323},[327,6075,6076,6079,6082,6085,6088,6091],{"class":329,"line":330},[327,6077,6078],{"class":483},"Duration:",[327,6080,6081],{"class":354}," 3000ms",[327,6083,6084],{"class":341}," (Cold ",[327,6086,6087],{"class":354},"Start:",[327,6089,6090],{"class":354}," 2500ms",[327,6092,959],{"class":341},[282,6094,6095],{},[286,6096,6097],{},"Solutions:",[678,6099,6100,6103,6106,6109],{},[681,6101,6102],{},"Reduce deployment package size",[681,6104,6105],{},"Use Lambda layers for dependencies",[681,6107,6108],{},"Enable provisioned concurrency",[681,6110,6111],{},"Lazy load heavy modules",[282,6113,6114],{},[286,6115,6116],{},"Memory limit exceeded",[317,6118,6120],{"className":5112,"code":6119,"language":5114,"meta":323,"style":323},"Process exited before completing request\n",[291,6121,6122],{"__ignoreMap":323},[327,6123,6124,6127,6130,6133,6136],{"class":329,"line":330},[327,6125,6126],{"class":483},"Process",[327,6128,6129],{"class":354}," exited",[327,6131,6132],{"class":354}," before",[327,6134,6135],{"class":354}," completing",[327,6137,6138],{"class":354}," request\n",[282,6140,6141,6143],{},[286,6142,5881],{}," Increase memory:",[317,6145,6147],{"className":1388,"code":6146,"language":1391,"meta":323,"style":323},"functions:\n  api:\n    memorySize: 1024  # or higher\n",[291,6148,6149,6155,6161],{"__ignoreMap":323},[327,6150,6151,6153],{"class":329,"line":330},[327,6152,1398],{"class":535},[327,6154,1401],{"class":337},[327,6156,6157,6159],{"class":329,"line":364},[327,6158,1406],{"class":535},[327,6160,1401],{"class":337},[327,6162,6163,6166,6168,6171],{"class":329,"line":387},[327,6164,6165],{"class":535},"    memorySize",[327,6167,463],{"class":337},[327,6169,6170],{"class":1760}," 1024",[327,6172,6173],{"class":422},"  # or higher\n",[6175,6176,6177],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":323,"searchDepth":330,"depth":364,"links":6179},[6180,6181,6185,6188,6189,6190,6194,6199,6203,6207,6211,6215],{"id":314,"depth":364,"text":315},{"id":447,"depth":364,"text":448,"children":6182},[6183,6184],{"id":455,"depth":387,"text":456},{"id":703,"depth":387,"text":704},{"id":929,"depth":364,"text":930,"children":6186},[6187],{"id":1381,"depth":387,"text":1382},{"id":1509,"depth":364,"text":1510},{"id":2103,"depth":364,"text":2104},{"id":2449,"depth":364,"text":2450,"children":6191},[6192,6193],{"id":2453,"depth":387,"text":2454},{"id":2643,"depth":387,"text":2644},{"id":3336,"depth":364,"text":3337,"children":6195},[6196,6197,6198],{"id":3343,"depth":387,"text":3344},{"id":3579,"depth":387,"text":3580},{"id":3849,"depth":387,"text":3850},{"id":3937,"depth":364,"text":3938,"children":6200},[6201,6202],{"id":3944,"depth":387,"text":3945},{"id":4334,"depth":387,"text":4335},{"id":4436,"depth":364,"text":4437,"children":6204},[6205,6206],{"id":4440,"depth":387,"text":4441},{"id":4729,"depth":387,"text":4730},{"id":5105,"depth":364,"text":170,"children":6208},[6209,6210],{"id":5108,"depth":387,"text":5109},{"id":5196,"depth":387,"text":5197},{"id":5355,"depth":364,"text":5356,"children":6212},[6213,6214],{"id":5359,"depth":387,"text":5360},{"id":5468,"depth":387,"text":5469},{"id":5840,"depth":364,"text":5841,"children":6216},[6217],{"id":5844,"depth":387,"text":5845},"Deploy your Vercube application to AWS Lambda with API Gateway","md",null,{},{"title":183,"description":6218},"1co021jMvTMYgzmU7aY5Jo14DF2zQmYAAggCO4EAMWc",[6225,6227],{"title":179,"path":180,"stem":181,"description":6226,"children":-1},"Deploy a Vercube application to Vercel using Node.js serverless functions and the Web Fetch handler.",{"title":187,"path":188,"stem":189,"description":6228,"children":-1},"Deploy your Vercube application to Azure Functions with HTTP triggers",1782807883984]