[{"data":1,"prerenderedAt":9123},["ShallowReactive",2],{"navigation":3,"docs-path-index":208,"-docs-deployment-azure-functions":272,"-docs-deployment-azure-functions-surround":9118},[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":187,"body":274,"description":9112,"extension":9113,"links":9114,"meta":9115,"navigation":56,"path":188,"seo":9116,"stem":189,"__hash__":9117},"docs\u002Fdocs\u002F4.deployment\u002F3.azure-functions.md",{"type":275,"value":276,"toc":9059},"minimark",[277,295,298,303,709,713,723,728,941,945,1072,1076,1083,1468,1471,1490,1494,1501,2112,2117,2132,2136,2140,2143,2714,2718,2721,3106,3110,3114,3364,3368,3830,3834,4313,4317,4320,4324,4716,4720,5143,5147,5151,5270,5274,5756,5760,5764,6113,6117,6449,6452,6456,6676,6680,6778,6782,7041,7045,7049,7374,7378,7381,7463,7467,7471,7596,7600,7603,7618,7622,7684,7688,7692,7980,7984,7987,8031,8035,8038,8161,8165,8169,8174,8196,8202,8260,8265,8299,8304,8491,8496,8514,8519,8549,8554,8576,8581,8586,8605,8610,8656,8660,8665,8721,8726,8784,8789,8946,8951,9055],[278,279,281],"tip",{"icon":280},"i-lucide-puzzle",[282,283,284,285,289,290,294],"p",{},"This guide focuses on ",[286,287,288],"strong",{},"deploying"," to Azure. For adapter behavior and package setup, see the ",[291,292,293],"a",{"href":99},"Serverless module overview",".",[282,296,297],{},"Deploy your Vercube application to Azure Functions with complete support for HTTP triggers, efficient streaming, and seamless cookie management.",[299,300,302],"h2",{"id":301},"basic-setup","Basic Setup",[304,305,311],"pre",{"className":306,"code":307,"filename":308,"language":309,"meta":310,"style":310},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure\u002Ffunctions';\nimport { toServerlessHandler } from '@vercube\u002Fserverless\u002Fazure-functions';\nimport { app as vercubeApp } from '..\u002Findex';\n\nconst handler = toServerlessHandler(vercubeApp);\n\nexport async function httpTrigger(\n  request: HttpRequest,\n  context: InvocationContext\n): Promise\u003CHttpResponseInit> {\n  return await handler(request);\n}\n\napp.http('httpTrigger', {\n  methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],\n  authLevel: 'anonymous',\n  handler: httpTrigger,\n  route: '{*route}' \u002F\u002F Catch all routes\n});\n","src\u002Ffunctions\u002FhttpTrigger.ts","ts","",[312,313,314,366,389,417,423,444,449,467,483,494,515,539,545,550,574,651,668,680,699],"code",{"__ignoreMap":310},[315,316,319,323,327,331,334,337,339,342,344,347,350,353,356,360,363],"span",{"class":317,"line":318},"line",1,[315,320,322],{"class":321},"s7zQu","import",[315,324,326],{"class":325},"sMK4o"," {",[315,328,330],{"class":329},"sTEyZ"," app",[315,332,333],{"class":325},",",[315,335,336],{"class":329}," HttpRequest",[315,338,333],{"class":325},[315,340,341],{"class":329}," HttpResponseInit",[315,343,333],{"class":325},[315,345,346],{"class":329}," InvocationContext",[315,348,349],{"class":325}," }",[315,351,352],{"class":321}," from",[315,354,355],{"class":325}," '",[315,357,359],{"class":358},"sfazB","@azure\u002Ffunctions",[315,361,362],{"class":325},"'",[315,364,365],{"class":325},";\n",[315,367,369,371,373,376,378,380,382,385,387],{"class":317,"line":368},2,[315,370,322],{"class":321},[315,372,326],{"class":325},[315,374,375],{"class":329}," toServerlessHandler",[315,377,349],{"class":325},[315,379,352],{"class":321},[315,381,355],{"class":325},[315,383,384],{"class":358},"@vercube\u002Fserverless\u002Fazure-functions",[315,386,362],{"class":325},[315,388,365],{"class":325},[315,390,392,394,396,398,401,404,406,408,410,413,415],{"class":317,"line":391},3,[315,393,322],{"class":321},[315,395,326],{"class":325},[315,397,330],{"class":329},[315,399,400],{"class":321}," as",[315,402,403],{"class":329}," vercubeApp",[315,405,349],{"class":325},[315,407,352],{"class":321},[315,409,355],{"class":325},[315,411,412],{"class":358},"..\u002Findex",[315,414,362],{"class":325},[315,416,365],{"class":325},[315,418,420],{"class":317,"line":419},4,[315,421,422],{"emptyLinePlaceholder":56},"\n",[315,424,426,430,433,436,439,442],{"class":317,"line":425},5,[315,427,429],{"class":428},"spNyl","const",[315,431,432],{"class":329}," handler ",[315,434,435],{"class":325},"=",[315,437,375],{"class":438},"s2Zo4",[315,440,441],{"class":329},"(vercubeApp)",[315,443,365],{"class":325},[315,445,447],{"class":317,"line":446},6,[315,448,422],{"emptyLinePlaceholder":56},[315,450,452,455,458,461,464],{"class":317,"line":451},7,[315,453,454],{"class":321},"export",[315,456,457],{"class":428}," async",[315,459,460],{"class":428}," function",[315,462,463],{"class":438}," httpTrigger",[315,465,466],{"class":325},"(\n",[315,468,470,474,477,480],{"class":317,"line":469},8,[315,471,473],{"class":472},"sHdIc","  request",[315,475,476],{"class":325},":",[315,478,336],{"class":479},"sBMFI",[315,481,482],{"class":325},",\n",[315,484,486,489,491],{"class":317,"line":485},9,[315,487,488],{"class":472},"  context",[315,490,476],{"class":325},[315,492,493],{"class":479}," InvocationContext\n",[315,495,497,500,503,506,509,512],{"class":317,"line":496},10,[315,498,499],{"class":325},"):",[315,501,502],{"class":479}," Promise",[315,504,505],{"class":325},"\u003C",[315,507,508],{"class":479},"HttpResponseInit",[315,510,511],{"class":325},">",[315,513,514],{"class":325}," {\n",[315,516,518,521,524,527,531,534,537],{"class":317,"line":517},11,[315,519,520],{"class":321},"  return",[315,522,523],{"class":321}," await",[315,525,526],{"class":438}," handler",[315,528,530],{"class":529},"swJcz","(",[315,532,533],{"class":329},"request",[315,535,536],{"class":529},")",[315,538,365],{"class":325},[315,540,542],{"class":317,"line":541},12,[315,543,544],{"class":325},"}\n",[315,546,548],{"class":317,"line":547},13,[315,549,422],{"emptyLinePlaceholder":56},[315,551,553,556,558,561,563,565,568,570,572],{"class":317,"line":552},14,[315,554,555],{"class":329},"app",[315,557,294],{"class":325},[315,559,560],{"class":438},"http",[315,562,530],{"class":329},[315,564,362],{"class":325},[315,566,567],{"class":358},"httpTrigger",[315,569,362],{"class":325},[315,571,333],{"class":325},[315,573,514],{"class":325},[315,575,577,580,582,585,587,590,592,594,596,599,601,603,605,608,610,612,614,617,619,621,623,626,628,630,632,635,637,639,641,644,646,649],{"class":317,"line":576},15,[315,578,579],{"class":529},"  methods",[315,581,476],{"class":325},[315,583,584],{"class":329}," [",[315,586,362],{"class":325},[315,588,589],{"class":358},"GET",[315,591,362],{"class":325},[315,593,333],{"class":325},[315,595,355],{"class":325},[315,597,598],{"class":358},"POST",[315,600,362],{"class":325},[315,602,333],{"class":325},[315,604,355],{"class":325},[315,606,607],{"class":358},"PUT",[315,609,362],{"class":325},[315,611,333],{"class":325},[315,613,355],{"class":325},[315,615,616],{"class":358},"DELETE",[315,618,362],{"class":325},[315,620,333],{"class":325},[315,622,355],{"class":325},[315,624,625],{"class":358},"PATCH",[315,627,362],{"class":325},[315,629,333],{"class":325},[315,631,355],{"class":325},[315,633,634],{"class":358},"HEAD",[315,636,362],{"class":325},[315,638,333],{"class":325},[315,640,355],{"class":325},[315,642,643],{"class":358},"OPTIONS",[315,645,362],{"class":325},[315,647,648],{"class":329},"]",[315,650,482],{"class":325},[315,652,654,657,659,661,664,666],{"class":317,"line":653},16,[315,655,656],{"class":529},"  authLevel",[315,658,476],{"class":325},[315,660,355],{"class":325},[315,662,663],{"class":358},"anonymous",[315,665,362],{"class":325},[315,667,482],{"class":325},[315,669,671,674,676,678],{"class":317,"line":670},17,[315,672,673],{"class":529},"  handler",[315,675,476],{"class":325},[315,677,463],{"class":329},[315,679,482],{"class":325},[315,681,683,686,688,690,693,695],{"class":317,"line":682},18,[315,684,685],{"class":529},"  route",[315,687,476],{"class":325},[315,689,355],{"class":325},[315,691,692],{"class":358},"{*route}",[315,694,362],{"class":325},[315,696,698],{"class":697},"sHwdD"," \u002F\u002F Catch all routes\n",[315,700,702,705,707],{"class":317,"line":701},19,[315,703,704],{"class":325},"}",[315,706,536],{"class":329},[315,708,365],{"class":325},[299,710,712],{"id":711},"request-conversion","Request Conversion",[282,714,715,716,719,720,476],{},"The adapter converts Azure Functions ",[312,717,718],{},"HttpRequest"," to standard web ",[312,721,722],{},"Request",[724,725,727],"h3",{"id":726},"input-format","Input Format",[304,729,731],{"className":306,"code":730,"language":309,"meta":310,"style":310},"\u002F\u002F Azure HttpRequest\n{\n  method: 'GET',\n  url: 'https:\u002F\u002Fmyapp.azurewebsites.net\u002Fapi\u002Fusers?page=1&limit=10',\n  headers: {\n    'content-type': 'application\u002Fjson',\n    'authorization': 'Bearer token...',\n    'cookie': 'session_id=abc123; theme=dark'\n  },\n  query: {\n    page: '1',\n    limit: '10'\n  },\n  params: {\n    id: '123'\n  },\n  body: ReadableStream { ... }\n}\n",[312,732,733,738,743,758,774,783,805,825,844,849,858,874,888,892,901,915,919,937],{"__ignoreMap":310},[315,734,735],{"class":317,"line":318},[315,736,737],{"class":697},"\u002F\u002F Azure HttpRequest\n",[315,739,740],{"class":317,"line":368},[315,741,742],{"class":325},"{\n",[315,744,745,748,750,752,754,756],{"class":317,"line":391},[315,746,747],{"class":479},"  method",[315,749,476],{"class":325},[315,751,355],{"class":325},[315,753,589],{"class":358},[315,755,362],{"class":325},[315,757,482],{"class":325},[315,759,760,763,765,767,770,772],{"class":317,"line":419},[315,761,762],{"class":479},"  url",[315,764,476],{"class":325},[315,766,355],{"class":325},[315,768,769],{"class":358},"https:\u002F\u002Fmyapp.azurewebsites.net\u002Fapi\u002Fusers?page=1&limit=10",[315,771,362],{"class":325},[315,773,482],{"class":325},[315,775,776,779,781],{"class":317,"line":425},[315,777,778],{"class":479},"  headers",[315,780,476],{"class":325},[315,782,514],{"class":325},[315,784,785,788,791,793,796,798,801,803],{"class":317,"line":446},[315,786,787],{"class":325},"    '",[315,789,790],{"class":358},"content-type",[315,792,362],{"class":325},[315,794,795],{"class":529},": ",[315,797,362],{"class":325},[315,799,800],{"class":358},"application\u002Fjson",[315,802,362],{"class":325},[315,804,482],{"class":325},[315,806,807,809,812,814,816,818,821,823],{"class":317,"line":451},[315,808,787],{"class":325},[315,810,811],{"class":358},"authorization",[315,813,362],{"class":325},[315,815,795],{"class":529},[315,817,362],{"class":325},[315,819,820],{"class":358},"Bearer token...",[315,822,362],{"class":325},[315,824,482],{"class":325},[315,826,827,829,832,834,836,838,841],{"class":317,"line":469},[315,828,787],{"class":325},[315,830,831],{"class":358},"cookie",[315,833,362],{"class":325},[315,835,795],{"class":529},[315,837,362],{"class":325},[315,839,840],{"class":358},"session_id=abc123; theme=dark",[315,842,843],{"class":325},"'\n",[315,845,846],{"class":317,"line":485},[315,847,848],{"class":325},"  },\n",[315,850,851,854,856],{"class":317,"line":496},[315,852,853],{"class":479},"  query",[315,855,476],{"class":325},[315,857,514],{"class":325},[315,859,860,863,865,867,870,872],{"class":317,"line":517},[315,861,862],{"class":479},"    page",[315,864,476],{"class":325},[315,866,355],{"class":325},[315,868,869],{"class":358},"1",[315,871,362],{"class":325},[315,873,482],{"class":325},[315,875,876,879,881,883,886],{"class":317,"line":541},[315,877,878],{"class":479},"    limit",[315,880,476],{"class":325},[315,882,355],{"class":325},[315,884,885],{"class":358},"10",[315,887,843],{"class":325},[315,889,890],{"class":317,"line":547},[315,891,848],{"class":325},[315,893,894,897,899],{"class":317,"line":552},[315,895,896],{"class":479},"  params",[315,898,476],{"class":325},[315,900,514],{"class":325},[315,902,903,906,908,910,913],{"class":317,"line":576},[315,904,905],{"class":479},"    id",[315,907,476],{"class":325},[315,909,355],{"class":325},[315,911,912],{"class":358},"123",[315,914,843],{"class":325},[315,916,917],{"class":317,"line":653},[315,918,848],{"class":325},[315,920,921,924,926,929,931,934],{"class":317,"line":670},[315,922,923],{"class":479},"  body",[315,925,476],{"class":325},[315,927,928],{"class":329}," ReadableStream",[315,930,326],{"class":325},[315,932,933],{"class":325}," ...",[315,935,936],{"class":325}," }\n",[315,938,939],{"class":317,"line":682},[315,940,544],{"class":325},[724,942,944],{"id":943},"output-format","Output Format",[304,946,948],{"className":306,"code":947,"language":309,"meta":310,"style":310},"\u002F\u002F Standard Request\n{\n  method: 'GET',\n  url: 'https:\u002F\u002Fmyapp.azurewebsites.net\u002Fapi\u002Fusers?page=1&limit=10',\n  headers: Headers {\n    'content-type': 'application\u002Fjson',\n    'authorization': 'Bearer token...',\n    'cookie': 'session_id=abc123; theme=dark'\n  },\n  body: ReadableStream { ... }\n}\n",[312,949,950,955,959,973,987,998,1016,1034,1050,1054,1068],{"__ignoreMap":310},[315,951,952],{"class":317,"line":318},[315,953,954],{"class":697},"\u002F\u002F Standard Request\n",[315,956,957],{"class":317,"line":368},[315,958,742],{"class":325},[315,960,961,963,965,967,969,971],{"class":317,"line":391},[315,962,747],{"class":479},[315,964,476],{"class":325},[315,966,355],{"class":325},[315,968,589],{"class":358},[315,970,362],{"class":325},[315,972,482],{"class":325},[315,974,975,977,979,981,983,985],{"class":317,"line":419},[315,976,762],{"class":479},[315,978,476],{"class":325},[315,980,355],{"class":325},[315,982,769],{"class":358},[315,984,362],{"class":325},[315,986,482],{"class":325},[315,988,989,991,993,996],{"class":317,"line":425},[315,990,778],{"class":479},[315,992,476],{"class":325},[315,994,995],{"class":329}," Headers",[315,997,514],{"class":325},[315,999,1000,1002,1004,1006,1008,1010,1012,1014],{"class":317,"line":446},[315,1001,787],{"class":325},[315,1003,790],{"class":358},[315,1005,362],{"class":325},[315,1007,795],{"class":529},[315,1009,362],{"class":325},[315,1011,800],{"class":358},[315,1013,362],{"class":325},[315,1015,482],{"class":325},[315,1017,1018,1020,1022,1024,1026,1028,1030,1032],{"class":317,"line":451},[315,1019,787],{"class":325},[315,1021,811],{"class":358},[315,1023,362],{"class":325},[315,1025,795],{"class":529},[315,1027,362],{"class":325},[315,1029,820],{"class":358},[315,1031,362],{"class":325},[315,1033,482],{"class":325},[315,1035,1036,1038,1040,1042,1044,1046,1048],{"class":317,"line":469},[315,1037,787],{"class":325},[315,1039,831],{"class":358},[315,1041,362],{"class":325},[315,1043,795],{"class":529},[315,1045,362],{"class":325},[315,1047,840],{"class":358},[315,1049,843],{"class":325},[315,1051,1052],{"class":317,"line":485},[315,1053,848],{"class":325},[315,1055,1056,1058,1060,1062,1064,1066],{"class":317,"line":496},[315,1057,923],{"class":479},[315,1059,476],{"class":325},[315,1061,928],{"class":329},[315,1063,326],{"class":325},[315,1065,933],{"class":325},[315,1067,936],{"class":325},[315,1069,1070],{"class":317,"line":517},[315,1071,544],{"class":325},[299,1073,1075],{"id":1074},"response-conversion-with-streaming","Response Conversion with Streaming",[282,1077,1078,1079,1082],{},"Azure Functions responses use ",[312,1080,1081],{},"AsyncIterableIterator"," for efficient data streaming:",[304,1084,1086],{"className":306,"code":1085,"language":309,"meta":310,"style":310},"@Controller('\u002Fdata')\nexport class DataController {\n  \n  @Inject(DataService)\n  private dataService!: DataService;\n  \n  @Get('\u002Fexport')\n  async exportData() {\n    const data = await this.dataService.getLargeDataset();\n    \n    return new Response(JSON.stringify(data), {\n      headers: {\n        'Content-Type': 'application\u002Fjson',\n        'Content-Disposition': 'attachment; filename=\"export.json\"'\n      }\n    });\n  }\n  \n  @Get('\u002Fstream')\n  async streamData() {\n    const stream = this.dataService.createDataStream();\n    \n    return new Response(stream, {\n      headers: {\n        'Content-Type': 'application\u002Fjson',\n        'Transfer-Encoding': 'chunked'\n      }\n    });\n  }\n}\n",[312,1087,1088,1108,1120,1125,1136,1152,1156,1174,1187,1215,1220,1252,1261,1281,1299,1304,1313,1318,1322,1339,1351,1374,1379,1397,1406,1425,1444,1449,1458,1463],{"__ignoreMap":310},[315,1089,1090,1093,1096,1098,1100,1103,1105],{"class":317,"line":318},[315,1091,1092],{"class":325},"@",[315,1094,1095],{"class":438},"Controller",[315,1097,530],{"class":329},[315,1099,362],{"class":325},[315,1101,1102],{"class":358},"\u002Fdata",[315,1104,362],{"class":325},[315,1106,1107],{"class":329},")\n",[315,1109,1110,1112,1115,1118],{"class":317,"line":368},[315,1111,454],{"class":321},[315,1113,1114],{"class":428}," class",[315,1116,1117],{"class":479}," DataController",[315,1119,514],{"class":325},[315,1121,1122],{"class":317,"line":391},[315,1123,1124],{"class":329},"  \n",[315,1126,1127,1130,1133],{"class":317,"line":419},[315,1128,1129],{"class":325},"  @",[315,1131,1132],{"class":438},"Inject",[315,1134,1135],{"class":329},"(DataService)\n",[315,1137,1138,1141,1144,1147,1150],{"class":317,"line":425},[315,1139,1140],{"class":428},"  private",[315,1142,1143],{"class":529}," dataService",[315,1145,1146],{"class":325},"!:",[315,1148,1149],{"class":479}," DataService",[315,1151,365],{"class":325},[315,1153,1154],{"class":317,"line":446},[315,1155,1124],{"class":329},[315,1157,1158,1160,1163,1165,1167,1170,1172],{"class":317,"line":451},[315,1159,1129],{"class":325},[315,1161,1162],{"class":438},"Get",[315,1164,530],{"class":329},[315,1166,362],{"class":325},[315,1168,1169],{"class":358},"\u002Fexport",[315,1171,362],{"class":325},[315,1173,1107],{"class":329},[315,1175,1176,1179,1182,1185],{"class":317,"line":469},[315,1177,1178],{"class":428},"  async",[315,1180,1181],{"class":529}," exportData",[315,1183,1184],{"class":325},"()",[315,1186,514],{"class":325},[315,1188,1189,1192,1195,1198,1200,1203,1206,1208,1211,1213],{"class":317,"line":485},[315,1190,1191],{"class":428},"    const",[315,1193,1194],{"class":329}," data",[315,1196,1197],{"class":325}," =",[315,1199,523],{"class":321},[315,1201,1202],{"class":325}," this.",[315,1204,1205],{"class":329},"dataService",[315,1207,294],{"class":325},[315,1209,1210],{"class":438},"getLargeDataset",[315,1212,1184],{"class":529},[315,1214,365],{"class":325},[315,1216,1217],{"class":317,"line":496},[315,1218,1219],{"class":529},"    \n",[315,1221,1222,1225,1228,1231,1233,1236,1238,1241,1243,1246,1248,1250],{"class":317,"line":517},[315,1223,1224],{"class":321},"    return",[315,1226,1227],{"class":325}," new",[315,1229,1230],{"class":438}," Response",[315,1232,530],{"class":529},[315,1234,1235],{"class":329},"JSON",[315,1237,294],{"class":325},[315,1239,1240],{"class":438},"stringify",[315,1242,530],{"class":529},[315,1244,1245],{"class":329},"data",[315,1247,536],{"class":529},[315,1249,333],{"class":325},[315,1251,514],{"class":325},[315,1253,1254,1257,1259],{"class":317,"line":541},[315,1255,1256],{"class":529},"      headers",[315,1258,476],{"class":325},[315,1260,514],{"class":325},[315,1262,1263,1266,1269,1271,1273,1275,1277,1279],{"class":317,"line":547},[315,1264,1265],{"class":325},"        '",[315,1267,1268],{"class":529},"Content-Type",[315,1270,362],{"class":325},[315,1272,476],{"class":325},[315,1274,355],{"class":325},[315,1276,800],{"class":358},[315,1278,362],{"class":325},[315,1280,482],{"class":325},[315,1282,1283,1285,1288,1290,1292,1294,1297],{"class":317,"line":552},[315,1284,1265],{"class":325},[315,1286,1287],{"class":529},"Content-Disposition",[315,1289,362],{"class":325},[315,1291,476],{"class":325},[315,1293,355],{"class":325},[315,1295,1296],{"class":358},"attachment; filename=\"export.json\"",[315,1298,843],{"class":325},[315,1300,1301],{"class":317,"line":576},[315,1302,1303],{"class":325},"      }\n",[315,1305,1306,1309,1311],{"class":317,"line":653},[315,1307,1308],{"class":325},"    }",[315,1310,536],{"class":529},[315,1312,365],{"class":325},[315,1314,1315],{"class":317,"line":670},[315,1316,1317],{"class":325},"  }\n",[315,1319,1320],{"class":317,"line":682},[315,1321,1124],{"class":329},[315,1323,1324,1326,1328,1330,1332,1335,1337],{"class":317,"line":701},[315,1325,1129],{"class":325},[315,1327,1162],{"class":438},[315,1329,530],{"class":329},[315,1331,362],{"class":325},[315,1333,1334],{"class":358},"\u002Fstream",[315,1336,362],{"class":325},[315,1338,1107],{"class":329},[315,1340,1342,1344,1347,1349],{"class":317,"line":1341},20,[315,1343,1178],{"class":428},[315,1345,1346],{"class":529}," streamData",[315,1348,1184],{"class":325},[315,1350,514],{"class":325},[315,1352,1354,1356,1359,1361,1363,1365,1367,1370,1372],{"class":317,"line":1353},21,[315,1355,1191],{"class":428},[315,1357,1358],{"class":329}," stream",[315,1360,1197],{"class":325},[315,1362,1202],{"class":325},[315,1364,1205],{"class":329},[315,1366,294],{"class":325},[315,1368,1369],{"class":438},"createDataStream",[315,1371,1184],{"class":529},[315,1373,365],{"class":325},[315,1375,1377],{"class":317,"line":1376},22,[315,1378,1219],{"class":529},[315,1380,1382,1384,1386,1388,1390,1393,1395],{"class":317,"line":1381},23,[315,1383,1224],{"class":321},[315,1385,1227],{"class":325},[315,1387,1230],{"class":438},[315,1389,530],{"class":529},[315,1391,1392],{"class":329},"stream",[315,1394,333],{"class":325},[315,1396,514],{"class":325},[315,1398,1400,1402,1404],{"class":317,"line":1399},24,[315,1401,1256],{"class":529},[315,1403,476],{"class":325},[315,1405,514],{"class":325},[315,1407,1409,1411,1413,1415,1417,1419,1421,1423],{"class":317,"line":1408},25,[315,1410,1265],{"class":325},[315,1412,1268],{"class":529},[315,1414,362],{"class":325},[315,1416,476],{"class":325},[315,1418,355],{"class":325},[315,1420,800],{"class":358},[315,1422,362],{"class":325},[315,1424,482],{"class":325},[315,1426,1428,1430,1433,1435,1437,1439,1442],{"class":317,"line":1427},26,[315,1429,1265],{"class":325},[315,1431,1432],{"class":529},"Transfer-Encoding",[315,1434,362],{"class":325},[315,1436,476],{"class":325},[315,1438,355],{"class":325},[315,1440,1441],{"class":358},"chunked",[315,1443,843],{"class":325},[315,1445,1447],{"class":317,"line":1446},27,[315,1448,1303],{"class":325},[315,1450,1452,1454,1456],{"class":317,"line":1451},28,[315,1453,1308],{"class":325},[315,1455,536],{"class":529},[315,1457,365],{"class":325},[315,1459,1461],{"class":317,"line":1460},29,[315,1462,1317],{"class":325},[315,1464,1466],{"class":317,"line":1465},30,[315,1467,544],{"class":325},[282,1469,1470],{},"The adapter automatically:",[1472,1473,1474,1478,1484,1487],"ol",{},[1475,1476,1477],"li",{},"Reads the Response body",[1475,1479,1480,1481],{},"Converts it to ",[312,1482,1483],{},"AsyncIterableIterator\u003CUint8Array>",[1475,1485,1486],{},"Sets proper headers",[1475,1488,1489],{},"Streams data efficiently to the client",[299,1491,1493],{"id":1492},"cookie-handling","Cookie Handling",[282,1495,1496,1497,1500],{},"Cookies are properly handled through ",[312,1498,1499],{},"Set-Cookie"," headers:",[304,1502,1504],{"className":306,"code":1503,"language":309,"meta":310,"style":310},"@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('session_id', token, {\n        httpOnly: true,\n        secure: true,\n        sameSite: 'strict',\n        maxAge: 3600\n      })\n      .cookie('user_preferences', 'theme=dark', {\n        maxAge: 86400\n      });\n  }\n  \n  @Post('\u002Flogout')\n  async logout() {\n    \u002F\u002F Clear authentication cookie\n    return FastResponse.ok({ success: true })\n      .cookie('session_id', '', {\n        httpOnly: true,\n        secure: true,\n        maxAge: 0\n      });\n  }\n  \n  @Get('\u002Fsession')\n  async getSession(@Cookie('session_id') sessionId: string) {\n    if (!sessionId) {\n      throw new UnauthorizedException('No active session');\n    }\n    \n    const session = await this.authService.validateSession(sessionId);\n    return { session };\n  }\n}\n",[312,1505,1506,1523,1534,1538,1547,1561,1565,1583,1626,1655,1659,1664,1693,1717,1728,1739,1755,1766,1773,1801,1810,1818,1822,1826,1843,1854,1859,1883,1906,1916,1926,1936,1945,1950,1955,1973,2008,2026,2050,2056,2061,2090,2102,2107],{"__ignoreMap":310},[315,1507,1508,1510,1512,1514,1516,1519,1521],{"class":317,"line":318},[315,1509,1092],{"class":325},[315,1511,1095],{"class":438},[315,1513,530],{"class":329},[315,1515,362],{"class":325},[315,1517,1518],{"class":358},"\u002Fauth",[315,1520,362],{"class":325},[315,1522,1107],{"class":329},[315,1524,1525,1527,1529,1532],{"class":317,"line":368},[315,1526,454],{"class":321},[315,1528,1114],{"class":428},[315,1530,1531],{"class":479}," AuthController",[315,1533,514],{"class":325},[315,1535,1536],{"class":317,"line":391},[315,1537,1124],{"class":329},[315,1539,1540,1542,1544],{"class":317,"line":419},[315,1541,1129],{"class":325},[315,1543,1132],{"class":438},[315,1545,1546],{"class":329},"(AuthService)\n",[315,1548,1549,1551,1554,1556,1559],{"class":317,"line":425},[315,1550,1140],{"class":428},[315,1552,1553],{"class":529}," authService",[315,1555,1146],{"class":325},[315,1557,1558],{"class":479}," AuthService",[315,1560,365],{"class":325},[315,1562,1563],{"class":317,"line":446},[315,1564,1124],{"class":329},[315,1566,1567,1569,1572,1574,1576,1579,1581],{"class":317,"line":451},[315,1568,1129],{"class":325},[315,1570,1571],{"class":438},"Post",[315,1573,530],{"class":329},[315,1575,362],{"class":325},[315,1577,1578],{"class":358},"\u002Flogin",[315,1580,362],{"class":325},[315,1582,1107],{"class":329},[315,1584,1585,1587,1590,1593,1596,1598,1601,1604,1606,1609,1611,1614,1617,1619,1622,1624],{"class":317,"line":469},[315,1586,1178],{"class":428},[315,1588,1589],{"class":529}," login",[315,1591,1592],{"class":325},"(@",[315,1594,1595],{"class":438},"Body",[315,1597,530],{"class":329},[315,1599,1600],{"class":325},"{",[315,1602,1603],{"class":529}," validationSchema",[315,1605,476],{"class":325},[315,1607,1608],{"class":329}," LoginSchema ",[315,1610,704],{"class":325},[315,1612,1613],{"class":329},") ",[315,1615,1616],{"class":472},"credentials",[315,1618,476],{"class":325},[315,1620,1621],{"class":479}," LoginDto",[315,1623,536],{"class":325},[315,1625,514],{"class":325},[315,1627,1628,1630,1633,1635,1637,1639,1642,1644,1647,1649,1651,1653],{"class":317,"line":485},[315,1629,1191],{"class":428},[315,1631,1632],{"class":329}," token",[315,1634,1197],{"class":325},[315,1636,523],{"class":321},[315,1638,1202],{"class":325},[315,1640,1641],{"class":329},"authService",[315,1643,294],{"class":325},[315,1645,1646],{"class":438},"generateToken",[315,1648,530],{"class":529},[315,1650,1616],{"class":329},[315,1652,536],{"class":529},[315,1654,365],{"class":325},[315,1656,1657],{"class":317,"line":496},[315,1658,1219],{"class":529},[315,1660,1661],{"class":317,"line":517},[315,1662,1663],{"class":697},"    \u002F\u002F Set authentication cookie\n",[315,1665,1666,1668,1671,1673,1676,1678,1680,1683,1685,1689,1691],{"class":317,"line":541},[315,1667,1224],{"class":321},[315,1669,1670],{"class":329}," FastResponse",[315,1672,294],{"class":325},[315,1674,1675],{"class":438},"ok",[315,1677,530],{"class":529},[315,1679,1600],{"class":325},[315,1681,1682],{"class":529}," success",[315,1684,476],{"class":325},[315,1686,1688],{"class":1687},"sfNiH"," true",[315,1690,349],{"class":325},[315,1692,1107],{"class":529},[315,1694,1695,1698,1700,1702,1704,1707,1709,1711,1713,1715],{"class":317,"line":547},[315,1696,1697],{"class":325},"      .",[315,1699,831],{"class":438},[315,1701,530],{"class":529},[315,1703,362],{"class":325},[315,1705,1706],{"class":358},"session_id",[315,1708,362],{"class":325},[315,1710,333],{"class":325},[315,1712,1632],{"class":329},[315,1714,333],{"class":325},[315,1716,514],{"class":325},[315,1718,1719,1722,1724,1726],{"class":317,"line":552},[315,1720,1721],{"class":529},"        httpOnly",[315,1723,476],{"class":325},[315,1725,1688],{"class":1687},[315,1727,482],{"class":325},[315,1729,1730,1733,1735,1737],{"class":317,"line":576},[315,1731,1732],{"class":529},"        secure",[315,1734,476],{"class":325},[315,1736,1688],{"class":1687},[315,1738,482],{"class":325},[315,1740,1741,1744,1746,1748,1751,1753],{"class":317,"line":653},[315,1742,1743],{"class":529},"        sameSite",[315,1745,476],{"class":325},[315,1747,355],{"class":325},[315,1749,1750],{"class":358},"strict",[315,1752,362],{"class":325},[315,1754,482],{"class":325},[315,1756,1757,1760,1762],{"class":317,"line":670},[315,1758,1759],{"class":529},"        maxAge",[315,1761,476],{"class":325},[315,1763,1765],{"class":1764},"sbssI"," 3600\n",[315,1767,1768,1771],{"class":317,"line":682},[315,1769,1770],{"class":325},"      }",[315,1772,1107],{"class":529},[315,1774,1775,1777,1779,1781,1783,1786,1788,1790,1792,1795,1797,1799],{"class":317,"line":701},[315,1776,1697],{"class":325},[315,1778,831],{"class":438},[315,1780,530],{"class":529},[315,1782,362],{"class":325},[315,1784,1785],{"class":358},"user_preferences",[315,1787,362],{"class":325},[315,1789,333],{"class":325},[315,1791,355],{"class":325},[315,1793,1794],{"class":358},"theme=dark",[315,1796,362],{"class":325},[315,1798,333],{"class":325},[315,1800,514],{"class":325},[315,1802,1803,1805,1807],{"class":317,"line":1341},[315,1804,1759],{"class":529},[315,1806,476],{"class":325},[315,1808,1809],{"class":1764}," 86400\n",[315,1811,1812,1814,1816],{"class":317,"line":1353},[315,1813,1770],{"class":325},[315,1815,536],{"class":529},[315,1817,365],{"class":325},[315,1819,1820],{"class":317,"line":1376},[315,1821,1317],{"class":325},[315,1823,1824],{"class":317,"line":1381},[315,1825,1124],{"class":329},[315,1827,1828,1830,1832,1834,1836,1839,1841],{"class":317,"line":1399},[315,1829,1129],{"class":325},[315,1831,1571],{"class":438},[315,1833,530],{"class":329},[315,1835,362],{"class":325},[315,1837,1838],{"class":358},"\u002Flogout",[315,1840,362],{"class":325},[315,1842,1107],{"class":329},[315,1844,1845,1847,1850,1852],{"class":317,"line":1408},[315,1846,1178],{"class":428},[315,1848,1849],{"class":529}," logout",[315,1851,1184],{"class":325},[315,1853,514],{"class":325},[315,1855,1856],{"class":317,"line":1427},[315,1857,1858],{"class":697},"    \u002F\u002F Clear authentication cookie\n",[315,1860,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881],{"class":317,"line":1446},[315,1862,1224],{"class":321},[315,1864,1670],{"class":329},[315,1866,294],{"class":325},[315,1868,1675],{"class":438},[315,1870,530],{"class":529},[315,1872,1600],{"class":325},[315,1874,1682],{"class":529},[315,1876,476],{"class":325},[315,1878,1688],{"class":1687},[315,1880,349],{"class":325},[315,1882,1107],{"class":529},[315,1884,1885,1887,1889,1891,1893,1895,1897,1899,1902,1904],{"class":317,"line":1451},[315,1886,1697],{"class":325},[315,1888,831],{"class":438},[315,1890,530],{"class":529},[315,1892,362],{"class":325},[315,1894,1706],{"class":358},[315,1896,362],{"class":325},[315,1898,333],{"class":325},[315,1900,1901],{"class":325}," ''",[315,1903,333],{"class":325},[315,1905,514],{"class":325},[315,1907,1908,1910,1912,1914],{"class":317,"line":1460},[315,1909,1721],{"class":529},[315,1911,476],{"class":325},[315,1913,1688],{"class":1687},[315,1915,482],{"class":325},[315,1917,1918,1920,1922,1924],{"class":317,"line":1465},[315,1919,1732],{"class":529},[315,1921,476],{"class":325},[315,1923,1688],{"class":1687},[315,1925,482],{"class":325},[315,1927,1929,1931,1933],{"class":317,"line":1928},31,[315,1930,1759],{"class":529},[315,1932,476],{"class":325},[315,1934,1935],{"class":1764}," 0\n",[315,1937,1939,1941,1943],{"class":317,"line":1938},32,[315,1940,1770],{"class":325},[315,1942,536],{"class":529},[315,1944,365],{"class":325},[315,1946,1948],{"class":317,"line":1947},33,[315,1949,1317],{"class":325},[315,1951,1953],{"class":317,"line":1952},34,[315,1954,1124],{"class":329},[315,1956,1958,1960,1962,1964,1966,1969,1971],{"class":317,"line":1957},35,[315,1959,1129],{"class":325},[315,1961,1162],{"class":438},[315,1963,530],{"class":329},[315,1965,362],{"class":325},[315,1967,1968],{"class":358},"\u002Fsession",[315,1970,362],{"class":325},[315,1972,1107],{"class":329},[315,1974,1976,1978,1981,1983,1986,1988,1990,1992,1994,1996,1999,2001,2004,2006],{"class":317,"line":1975},36,[315,1977,1178],{"class":428},[315,1979,1980],{"class":529}," getSession",[315,1982,1592],{"class":325},[315,1984,1985],{"class":438},"Cookie",[315,1987,530],{"class":329},[315,1989,362],{"class":325},[315,1991,1706],{"class":358},[315,1993,362],{"class":325},[315,1995,1613],{"class":329},[315,1997,1998],{"class":472},"sessionId",[315,2000,476],{"class":325},[315,2002,2003],{"class":479}," string",[315,2005,536],{"class":325},[315,2007,514],{"class":325},[315,2009,2011,2014,2017,2020,2022,2024],{"class":317,"line":2010},37,[315,2012,2013],{"class":321},"    if",[315,2015,2016],{"class":529}," (",[315,2018,2019],{"class":325},"!",[315,2021,1998],{"class":329},[315,2023,1613],{"class":529},[315,2025,742],{"class":325},[315,2027,2029,2032,2034,2037,2039,2041,2044,2046,2048],{"class":317,"line":2028},38,[315,2030,2031],{"class":321},"      throw",[315,2033,1227],{"class":325},[315,2035,2036],{"class":438}," UnauthorizedException",[315,2038,530],{"class":529},[315,2040,362],{"class":325},[315,2042,2043],{"class":358},"No active session",[315,2045,362],{"class":325},[315,2047,536],{"class":529},[315,2049,365],{"class":325},[315,2051,2053],{"class":317,"line":2052},39,[315,2054,2055],{"class":325},"    }\n",[315,2057,2059],{"class":317,"line":2058},40,[315,2060,1219],{"class":529},[315,2062,2064,2066,2069,2071,2073,2075,2077,2079,2082,2084,2086,2088],{"class":317,"line":2063},41,[315,2065,1191],{"class":428},[315,2067,2068],{"class":329}," session",[315,2070,1197],{"class":325},[315,2072,523],{"class":321},[315,2074,1202],{"class":325},[315,2076,1641],{"class":329},[315,2078,294],{"class":325},[315,2080,2081],{"class":438},"validateSession",[315,2083,530],{"class":529},[315,2085,1998],{"class":329},[315,2087,536],{"class":529},[315,2089,365],{"class":325},[315,2091,2093,2095,2097,2099],{"class":317,"line":2092},42,[315,2094,1224],{"class":321},[315,2096,326],{"class":325},[315,2098,2068],{"class":329},[315,2100,2101],{"class":325}," };\n",[315,2103,2105],{"class":317,"line":2104},43,[315,2106,1317],{"class":325},[315,2108,2110],{"class":317,"line":2109},44,[315,2111,544],{"class":325},[282,2113,2114],{},[286,2115,2116],{},"How it works:",[2118,2119,2120,2126,2129],"ul",{},[1475,2121,2122,2123,2125],{},"Multiple cookies via multiple ",[312,2124,1499],{}," headers",[1475,2127,2128],{},"Proper cookie attribute handling (HttpOnly, Secure, SameSite)",[1475,2130,2131],{},"Cookie parsing from request headers",[299,2133,2135],{"id":2134},"azure-specific-features","Azure-Specific Features",[724,2137,2139],{"id":2138},"invocation-context","Invocation Context",[282,2141,2142],{},"Access Azure Functions execution context:",[304,2144,2146],{"className":306,"code":2145,"language":309,"meta":310,"style":310},"import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure\u002Ffunctions';\nimport { toServerlessHandler } from '@vercube\u002Fserverless\u002Fazure-functions';\nimport { app as vercubeApp } from '..\u002Findex';\n\nconst handler = toServerlessHandler(vercubeApp);\n\nexport async function httpTrigger(\n  request: HttpRequest,\n  context: InvocationContext\n): Promise\u003CHttpResponseInit> {\n  \u002F\u002F Log invocation details\n  context.log('HTTP trigger function processed request');\n  context.log('Request URL:', request.url);\n  context.log('Request method:', request.method);\n  context.log('Invocation ID:', context.invocationId);\n  \n  \u002F\u002F Set trace context\n  context.traceContext.traceparent = request.headers.get('traceparent');\n  \n  try {\n    const result = await handler(request);\n    context.log('Request completed successfully');\n    return result;\n  } catch (error) {\n    context.error('Request failed:', error);\n    throw error;\n  }\n}\n\napp.http('httpTrigger', {\n  methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],\n  authLevel: 'anonymous',\n  handler: httpTrigger,\n  route: '{*route}'\n});\n",[312,2147,2148,2180,2200,2224,2228,2242,2246,2258,2268,2276,2290,2295,2317,2348,2378,2409,2413,2418,2458,2462,2469,2490,2512,2520,2537,2563,2572,2576,2580,2584,2604,2670,2684,2694,2706],{"__ignoreMap":310},[315,2149,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178],{"class":317,"line":318},[315,2151,322],{"class":321},[315,2153,326],{"class":325},[315,2155,330],{"class":329},[315,2157,333],{"class":325},[315,2159,336],{"class":329},[315,2161,333],{"class":325},[315,2163,341],{"class":329},[315,2165,333],{"class":325},[315,2167,346],{"class":329},[315,2169,349],{"class":325},[315,2171,352],{"class":321},[315,2173,355],{"class":325},[315,2175,359],{"class":358},[315,2177,362],{"class":325},[315,2179,365],{"class":325},[315,2181,2182,2184,2186,2188,2190,2192,2194,2196,2198],{"class":317,"line":368},[315,2183,322],{"class":321},[315,2185,326],{"class":325},[315,2187,375],{"class":329},[315,2189,349],{"class":325},[315,2191,352],{"class":321},[315,2193,355],{"class":325},[315,2195,384],{"class":358},[315,2197,362],{"class":325},[315,2199,365],{"class":325},[315,2201,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222],{"class":317,"line":391},[315,2203,322],{"class":321},[315,2205,326],{"class":325},[315,2207,330],{"class":329},[315,2209,400],{"class":321},[315,2211,403],{"class":329},[315,2213,349],{"class":325},[315,2215,352],{"class":321},[315,2217,355],{"class":325},[315,2219,412],{"class":358},[315,2221,362],{"class":325},[315,2223,365],{"class":325},[315,2225,2226],{"class":317,"line":419},[315,2227,422],{"emptyLinePlaceholder":56},[315,2229,2230,2232,2234,2236,2238,2240],{"class":317,"line":425},[315,2231,429],{"class":428},[315,2233,432],{"class":329},[315,2235,435],{"class":325},[315,2237,375],{"class":438},[315,2239,441],{"class":329},[315,2241,365],{"class":325},[315,2243,2244],{"class":317,"line":446},[315,2245,422],{"emptyLinePlaceholder":56},[315,2247,2248,2250,2252,2254,2256],{"class":317,"line":451},[315,2249,454],{"class":321},[315,2251,457],{"class":428},[315,2253,460],{"class":428},[315,2255,463],{"class":438},[315,2257,466],{"class":325},[315,2259,2260,2262,2264,2266],{"class":317,"line":469},[315,2261,473],{"class":472},[315,2263,476],{"class":325},[315,2265,336],{"class":479},[315,2267,482],{"class":325},[315,2269,2270,2272,2274],{"class":317,"line":485},[315,2271,488],{"class":472},[315,2273,476],{"class":325},[315,2275,493],{"class":479},[315,2277,2278,2280,2282,2284,2286,2288],{"class":317,"line":496},[315,2279,499],{"class":325},[315,2281,502],{"class":479},[315,2283,505],{"class":325},[315,2285,508],{"class":479},[315,2287,511],{"class":325},[315,2289,514],{"class":325},[315,2291,2292],{"class":317,"line":517},[315,2293,2294],{"class":697},"  \u002F\u002F Log invocation details\n",[315,2296,2297,2299,2301,2304,2306,2308,2311,2313,2315],{"class":317,"line":541},[315,2298,488],{"class":329},[315,2300,294],{"class":325},[315,2302,2303],{"class":438},"log",[315,2305,530],{"class":529},[315,2307,362],{"class":325},[315,2309,2310],{"class":358},"HTTP trigger function processed request",[315,2312,362],{"class":325},[315,2314,536],{"class":529},[315,2316,365],{"class":325},[315,2318,2319,2321,2323,2325,2327,2329,2332,2334,2336,2339,2341,2344,2346],{"class":317,"line":547},[315,2320,488],{"class":329},[315,2322,294],{"class":325},[315,2324,2303],{"class":438},[315,2326,530],{"class":529},[315,2328,362],{"class":325},[315,2330,2331],{"class":358},"Request URL:",[315,2333,362],{"class":325},[315,2335,333],{"class":325},[315,2337,2338],{"class":329}," request",[315,2340,294],{"class":325},[315,2342,2343],{"class":329},"url",[315,2345,536],{"class":529},[315,2347,365],{"class":325},[315,2349,2350,2352,2354,2356,2358,2360,2363,2365,2367,2369,2371,2374,2376],{"class":317,"line":552},[315,2351,488],{"class":329},[315,2353,294],{"class":325},[315,2355,2303],{"class":438},[315,2357,530],{"class":529},[315,2359,362],{"class":325},[315,2361,2362],{"class":358},"Request method:",[315,2364,362],{"class":325},[315,2366,333],{"class":325},[315,2368,2338],{"class":329},[315,2370,294],{"class":325},[315,2372,2373],{"class":329},"method",[315,2375,536],{"class":529},[315,2377,365],{"class":325},[315,2379,2380,2382,2384,2386,2388,2390,2393,2395,2397,2400,2402,2405,2407],{"class":317,"line":576},[315,2381,488],{"class":329},[315,2383,294],{"class":325},[315,2385,2303],{"class":438},[315,2387,530],{"class":529},[315,2389,362],{"class":325},[315,2391,2392],{"class":358},"Invocation ID:",[315,2394,362],{"class":325},[315,2396,333],{"class":325},[315,2398,2399],{"class":329}," context",[315,2401,294],{"class":325},[315,2403,2404],{"class":329},"invocationId",[315,2406,536],{"class":529},[315,2408,365],{"class":325},[315,2410,2411],{"class":317,"line":653},[315,2412,1124],{"class":529},[315,2414,2415],{"class":317,"line":670},[315,2416,2417],{"class":697},"  \u002F\u002F Set trace context\n",[315,2419,2420,2422,2424,2427,2429,2432,2434,2436,2438,2441,2443,2446,2448,2450,2452,2454,2456],{"class":317,"line":682},[315,2421,488],{"class":329},[315,2423,294],{"class":325},[315,2425,2426],{"class":329},"traceContext",[315,2428,294],{"class":325},[315,2430,2431],{"class":329},"traceparent",[315,2433,1197],{"class":325},[315,2435,2338],{"class":329},[315,2437,294],{"class":325},[315,2439,2440],{"class":329},"headers",[315,2442,294],{"class":325},[315,2444,2445],{"class":438},"get",[315,2447,530],{"class":529},[315,2449,362],{"class":325},[315,2451,2431],{"class":358},[315,2453,362],{"class":325},[315,2455,536],{"class":529},[315,2457,365],{"class":325},[315,2459,2460],{"class":317,"line":701},[315,2461,1124],{"class":529},[315,2463,2464,2467],{"class":317,"line":1341},[315,2465,2466],{"class":321},"  try",[315,2468,514],{"class":325},[315,2470,2471,2473,2476,2478,2480,2482,2484,2486,2488],{"class":317,"line":1353},[315,2472,1191],{"class":428},[315,2474,2475],{"class":329}," result",[315,2477,1197],{"class":325},[315,2479,523],{"class":321},[315,2481,526],{"class":438},[315,2483,530],{"class":529},[315,2485,533],{"class":329},[315,2487,536],{"class":529},[315,2489,365],{"class":325},[315,2491,2492,2495,2497,2499,2501,2503,2506,2508,2510],{"class":317,"line":1376},[315,2493,2494],{"class":329},"    context",[315,2496,294],{"class":325},[315,2498,2303],{"class":438},[315,2500,530],{"class":529},[315,2502,362],{"class":325},[315,2504,2505],{"class":358},"Request completed successfully",[315,2507,362],{"class":325},[315,2509,536],{"class":529},[315,2511,365],{"class":325},[315,2513,2514,2516,2518],{"class":317,"line":1381},[315,2515,1224],{"class":321},[315,2517,2475],{"class":329},[315,2519,365],{"class":325},[315,2521,2522,2525,2528,2530,2533,2535],{"class":317,"line":1399},[315,2523,2524],{"class":325},"  }",[315,2526,2527],{"class":321}," catch",[315,2529,2016],{"class":529},[315,2531,2532],{"class":329},"error",[315,2534,1613],{"class":529},[315,2536,742],{"class":325},[315,2538,2539,2541,2543,2545,2547,2549,2552,2554,2556,2559,2561],{"class":317,"line":1408},[315,2540,2494],{"class":329},[315,2542,294],{"class":325},[315,2544,2532],{"class":438},[315,2546,530],{"class":529},[315,2548,362],{"class":325},[315,2550,2551],{"class":358},"Request failed:",[315,2553,362],{"class":325},[315,2555,333],{"class":325},[315,2557,2558],{"class":329}," error",[315,2560,536],{"class":529},[315,2562,365],{"class":325},[315,2564,2565,2568,2570],{"class":317,"line":1427},[315,2566,2567],{"class":321},"    throw",[315,2569,2558],{"class":329},[315,2571,365],{"class":325},[315,2573,2574],{"class":317,"line":1446},[315,2575,1317],{"class":325},[315,2577,2578],{"class":317,"line":1451},[315,2579,544],{"class":325},[315,2581,2582],{"class":317,"line":1460},[315,2583,422],{"emptyLinePlaceholder":56},[315,2585,2586,2588,2590,2592,2594,2596,2598,2600,2602],{"class":317,"line":1465},[315,2587,555],{"class":329},[315,2589,294],{"class":325},[315,2591,560],{"class":438},[315,2593,530],{"class":329},[315,2595,362],{"class":325},[315,2597,567],{"class":358},[315,2599,362],{"class":325},[315,2601,333],{"class":325},[315,2603,514],{"class":325},[315,2605,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668],{"class":317,"line":1928},[315,2607,579],{"class":529},[315,2609,476],{"class":325},[315,2611,584],{"class":329},[315,2613,362],{"class":325},[315,2615,589],{"class":358},[315,2617,362],{"class":325},[315,2619,333],{"class":325},[315,2621,355],{"class":325},[315,2623,598],{"class":358},[315,2625,362],{"class":325},[315,2627,333],{"class":325},[315,2629,355],{"class":325},[315,2631,607],{"class":358},[315,2633,362],{"class":325},[315,2635,333],{"class":325},[315,2637,355],{"class":325},[315,2639,616],{"class":358},[315,2641,362],{"class":325},[315,2643,333],{"class":325},[315,2645,355],{"class":325},[315,2647,625],{"class":358},[315,2649,362],{"class":325},[315,2651,333],{"class":325},[315,2653,355],{"class":325},[315,2655,634],{"class":358},[315,2657,362],{"class":325},[315,2659,333],{"class":325},[315,2661,355],{"class":325},[315,2663,643],{"class":358},[315,2665,362],{"class":325},[315,2667,648],{"class":329},[315,2669,482],{"class":325},[315,2671,2672,2674,2676,2678,2680,2682],{"class":317,"line":1938},[315,2673,656],{"class":529},[315,2675,476],{"class":325},[315,2677,355],{"class":325},[315,2679,663],{"class":358},[315,2681,362],{"class":325},[315,2683,482],{"class":325},[315,2685,2686,2688,2690,2692],{"class":317,"line":1947},[315,2687,673],{"class":529},[315,2689,476],{"class":325},[315,2691,463],{"class":329},[315,2693,482],{"class":325},[315,2695,2696,2698,2700,2702,2704],{"class":317,"line":1952},[315,2697,685],{"class":529},[315,2699,476],{"class":325},[315,2701,355],{"class":325},[315,2703,692],{"class":358},[315,2705,843],{"class":325},[315,2707,2708,2710,2712],{"class":317,"line":1957},[315,2709,704],{"class":325},[315,2711,536],{"class":329},[315,2713,365],{"class":325},[724,2715,2717],{"id":2716},"environment-variables","Environment Variables",[282,2719,2720],{},"Access Azure Functions environment variables:",[304,2722,2724],{"className":306,"code":2723,"language":309,"meta":310,"style":310},"import { RuntimeConfig } from '@vercube\u002Fcore';\n\n@Controller('\u002Fconfig')\nexport class ConfigController {\n  \n  @Get('\u002Fazure-info')\n  getAzureInfo() {\n    return {\n      \u002F\u002F Azure Functions environment variables\n      siteName: process.env.WEBSITE_SITE_NAME,\n      resourceGroup: process.env.WEBSITE_RESOURCE_GROUP,\n      region: process.env.REGION_NAME,\n      instanceId: process.env.WEBSITE_INSTANCE_ID,\n      hostname: process.env.WEBSITE_HOSTNAME,\n      \n      \u002F\u002F Function execution details\n      functionsVersion: process.env.FUNCTIONS_EXTENSION_VERSION,\n      workerRuntime: process.env.FUNCTIONS_WORKER_RUNTIME\n    };\n  }\n  \n  @Get('\u002Fapp-settings')\n  getAppSettings() {\n    return {\n      nodeEnv: process.env.NODE_ENV,\n      databaseUrl: process.env.DATABASE_URL ? 'configured' : 'not configured',\n      customSetting: process.env.CUSTOM_SETTING\n    };\n  }\n}\n",[312,2725,2726,2748,2752,2769,2780,2784,2801,2810,2816,2821,2843,2863,2883,2903,2923,2928,2933,2953,2971,2976,2980,2984,3001,3010,3016,3036,3076,3094,3098,3102],{"__ignoreMap":310},[315,2727,2728,2730,2732,2735,2737,2739,2741,2744,2746],{"class":317,"line":318},[315,2729,322],{"class":321},[315,2731,326],{"class":325},[315,2733,2734],{"class":329}," RuntimeConfig",[315,2736,349],{"class":325},[315,2738,352],{"class":321},[315,2740,355],{"class":325},[315,2742,2743],{"class":358},"@vercube\u002Fcore",[315,2745,362],{"class":325},[315,2747,365],{"class":325},[315,2749,2750],{"class":317,"line":368},[315,2751,422],{"emptyLinePlaceholder":56},[315,2753,2754,2756,2758,2760,2762,2765,2767],{"class":317,"line":391},[315,2755,1092],{"class":325},[315,2757,1095],{"class":438},[315,2759,530],{"class":329},[315,2761,362],{"class":325},[315,2763,2764],{"class":358},"\u002Fconfig",[315,2766,362],{"class":325},[315,2768,1107],{"class":329},[315,2770,2771,2773,2775,2778],{"class":317,"line":419},[315,2772,454],{"class":321},[315,2774,1114],{"class":428},[315,2776,2777],{"class":479}," ConfigController",[315,2779,514],{"class":325},[315,2781,2782],{"class":317,"line":425},[315,2783,1124],{"class":329},[315,2785,2786,2788,2790,2792,2794,2797,2799],{"class":317,"line":446},[315,2787,1129],{"class":325},[315,2789,1162],{"class":438},[315,2791,530],{"class":329},[315,2793,362],{"class":325},[315,2795,2796],{"class":358},"\u002Fazure-info",[315,2798,362],{"class":325},[315,2800,1107],{"class":329},[315,2802,2803,2806,2808],{"class":317,"line":451},[315,2804,2805],{"class":529},"  getAzureInfo",[315,2807,1184],{"class":325},[315,2809,514],{"class":325},[315,2811,2812,2814],{"class":317,"line":469},[315,2813,1224],{"class":321},[315,2815,514],{"class":325},[315,2817,2818],{"class":317,"line":485},[315,2819,2820],{"class":697},"      \u002F\u002F Azure Functions environment variables\n",[315,2822,2823,2826,2828,2831,2833,2836,2838,2841],{"class":317,"line":496},[315,2824,2825],{"class":529},"      siteName",[315,2827,476],{"class":325},[315,2829,2830],{"class":329}," process",[315,2832,294],{"class":325},[315,2834,2835],{"class":329},"env",[315,2837,294],{"class":325},[315,2839,2840],{"class":329},"WEBSITE_SITE_NAME",[315,2842,482],{"class":325},[315,2844,2845,2848,2850,2852,2854,2856,2858,2861],{"class":317,"line":517},[315,2846,2847],{"class":529},"      resourceGroup",[315,2849,476],{"class":325},[315,2851,2830],{"class":329},[315,2853,294],{"class":325},[315,2855,2835],{"class":329},[315,2857,294],{"class":325},[315,2859,2860],{"class":329},"WEBSITE_RESOURCE_GROUP",[315,2862,482],{"class":325},[315,2864,2865,2868,2870,2872,2874,2876,2878,2881],{"class":317,"line":541},[315,2866,2867],{"class":529},"      region",[315,2869,476],{"class":325},[315,2871,2830],{"class":329},[315,2873,294],{"class":325},[315,2875,2835],{"class":329},[315,2877,294],{"class":325},[315,2879,2880],{"class":329},"REGION_NAME",[315,2882,482],{"class":325},[315,2884,2885,2888,2890,2892,2894,2896,2898,2901],{"class":317,"line":547},[315,2886,2887],{"class":529},"      instanceId",[315,2889,476],{"class":325},[315,2891,2830],{"class":329},[315,2893,294],{"class":325},[315,2895,2835],{"class":329},[315,2897,294],{"class":325},[315,2899,2900],{"class":329},"WEBSITE_INSTANCE_ID",[315,2902,482],{"class":325},[315,2904,2905,2908,2910,2912,2914,2916,2918,2921],{"class":317,"line":552},[315,2906,2907],{"class":529},"      hostname",[315,2909,476],{"class":325},[315,2911,2830],{"class":329},[315,2913,294],{"class":325},[315,2915,2835],{"class":329},[315,2917,294],{"class":325},[315,2919,2920],{"class":329},"WEBSITE_HOSTNAME",[315,2922,482],{"class":325},[315,2924,2925],{"class":317,"line":576},[315,2926,2927],{"class":529},"      \n",[315,2929,2930],{"class":317,"line":653},[315,2931,2932],{"class":697},"      \u002F\u002F Function execution details\n",[315,2934,2935,2938,2940,2942,2944,2946,2948,2951],{"class":317,"line":670},[315,2936,2937],{"class":529},"      functionsVersion",[315,2939,476],{"class":325},[315,2941,2830],{"class":329},[315,2943,294],{"class":325},[315,2945,2835],{"class":329},[315,2947,294],{"class":325},[315,2949,2950],{"class":329},"FUNCTIONS_EXTENSION_VERSION",[315,2952,482],{"class":325},[315,2954,2955,2958,2960,2962,2964,2966,2968],{"class":317,"line":682},[315,2956,2957],{"class":529},"      workerRuntime",[315,2959,476],{"class":325},[315,2961,2830],{"class":329},[315,2963,294],{"class":325},[315,2965,2835],{"class":329},[315,2967,294],{"class":325},[315,2969,2970],{"class":329},"FUNCTIONS_WORKER_RUNTIME\n",[315,2972,2973],{"class":317,"line":701},[315,2974,2975],{"class":325},"    };\n",[315,2977,2978],{"class":317,"line":1341},[315,2979,1317],{"class":325},[315,2981,2982],{"class":317,"line":1353},[315,2983,1124],{"class":329},[315,2985,2986,2988,2990,2992,2994,2997,2999],{"class":317,"line":1376},[315,2987,1129],{"class":325},[315,2989,1162],{"class":438},[315,2991,530],{"class":329},[315,2993,362],{"class":325},[315,2995,2996],{"class":358},"\u002Fapp-settings",[315,2998,362],{"class":325},[315,3000,1107],{"class":329},[315,3002,3003,3006,3008],{"class":317,"line":1381},[315,3004,3005],{"class":529},"  getAppSettings",[315,3007,1184],{"class":325},[315,3009,514],{"class":325},[315,3011,3012,3014],{"class":317,"line":1399},[315,3013,1224],{"class":321},[315,3015,514],{"class":325},[315,3017,3018,3021,3023,3025,3027,3029,3031,3034],{"class":317,"line":1408},[315,3019,3020],{"class":529},"      nodeEnv",[315,3022,476],{"class":325},[315,3024,2830],{"class":329},[315,3026,294],{"class":325},[315,3028,2835],{"class":329},[315,3030,294],{"class":325},[315,3032,3033],{"class":329},"NODE_ENV",[315,3035,482],{"class":325},[315,3037,3038,3041,3043,3045,3047,3049,3051,3054,3057,3059,3062,3064,3067,3069,3072,3074],{"class":317,"line":1427},[315,3039,3040],{"class":529},"      databaseUrl",[315,3042,476],{"class":325},[315,3044,2830],{"class":329},[315,3046,294],{"class":325},[315,3048,2835],{"class":329},[315,3050,294],{"class":325},[315,3052,3053],{"class":329},"DATABASE_URL",[315,3055,3056],{"class":325}," ?",[315,3058,355],{"class":325},[315,3060,3061],{"class":358},"configured",[315,3063,362],{"class":325},[315,3065,3066],{"class":325}," :",[315,3068,355],{"class":325},[315,3070,3071],{"class":358},"not configured",[315,3073,362],{"class":325},[315,3075,482],{"class":325},[315,3077,3078,3081,3083,3085,3087,3089,3091],{"class":317,"line":1446},[315,3079,3080],{"class":529},"      customSetting",[315,3082,476],{"class":325},[315,3084,2830],{"class":329},[315,3086,294],{"class":325},[315,3088,2835],{"class":329},[315,3090,294],{"class":325},[315,3092,3093],{"class":329},"CUSTOM_SETTING\n",[315,3095,3096],{"class":317,"line":1451},[315,3097,2975],{"class":325},[315,3099,3100],{"class":317,"line":1460},[315,3101,1317],{"class":325},[315,3103,3104],{"class":317,"line":1465},[315,3105,544],{"class":325},[299,3107,3109],{"id":3108},"function-configuration","Function Configuration",[724,3111,3113],{"id":3112},"basic-hostjson","Basic host.json",[304,3115,3120],{"className":3116,"code":3117,"filename":3118,"language":3119,"meta":310,"style":310},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"version\": \"2.0\",\n  \"logging\": {\n    \"applicationInsights\": {\n      \"samplingSettings\": {\n        \"isEnabled\": true,\n        \"maxTelemetryItemsPerSecond\": 20,\n        \"excludedTypes\": \"Request\"\n      }\n    },\n    \"logLevel\": {\n      \"default\": \"Information\",\n      \"Function\": \"Information\"\n    }\n  },\n  \"extensionBundle\": {\n    \"id\": \"Microsoft.Azure.Functions.ExtensionBundle\",\n    \"version\": \"[4.*, 5.0.0)\"\n  }\n}\n","host.json","json",[312,3121,3122,3126,3149,3162,3176,3190,3205,3221,3239,3243,3248,3261,3281,3298,3302,3306,3319,3339,3356,3360],{"__ignoreMap":310},[315,3123,3124],{"class":317,"line":318},[315,3125,742],{"class":325},[315,3127,3128,3131,3134,3137,3139,3142,3145,3147],{"class":317,"line":368},[315,3129,3130],{"class":325},"  \"",[315,3132,3133],{"class":428},"version",[315,3135,3136],{"class":325},"\"",[315,3138,476],{"class":325},[315,3140,3141],{"class":325}," \"",[315,3143,3144],{"class":358},"2.0",[315,3146,3136],{"class":325},[315,3148,482],{"class":325},[315,3150,3151,3153,3156,3158,3160],{"class":317,"line":391},[315,3152,3130],{"class":325},[315,3154,3155],{"class":428},"logging",[315,3157,3136],{"class":325},[315,3159,476],{"class":325},[315,3161,514],{"class":325},[315,3163,3164,3167,3170,3172,3174],{"class":317,"line":419},[315,3165,3166],{"class":325},"    \"",[315,3168,3169],{"class":479},"applicationInsights",[315,3171,3136],{"class":325},[315,3173,476],{"class":325},[315,3175,514],{"class":325},[315,3177,3178,3181,3184,3186,3188],{"class":317,"line":425},[315,3179,3180],{"class":325},"      \"",[315,3182,3183],{"class":1764},"samplingSettings",[315,3185,3136],{"class":325},[315,3187,476],{"class":325},[315,3189,514],{"class":325},[315,3191,3192,3195,3198,3200,3202],{"class":317,"line":446},[315,3193,3194],{"class":325},"        \"",[315,3196,3197],{"class":529},"isEnabled",[315,3199,3136],{"class":325},[315,3201,476],{"class":325},[315,3203,3204],{"class":325}," true,\n",[315,3206,3207,3209,3212,3214,3216,3219],{"class":317,"line":451},[315,3208,3194],{"class":325},[315,3210,3211],{"class":529},"maxTelemetryItemsPerSecond",[315,3213,3136],{"class":325},[315,3215,476],{"class":325},[315,3217,3218],{"class":1764}," 20",[315,3220,482],{"class":325},[315,3222,3223,3225,3228,3230,3232,3234,3236],{"class":317,"line":469},[315,3224,3194],{"class":325},[315,3226,3227],{"class":529},"excludedTypes",[315,3229,3136],{"class":325},[315,3231,476],{"class":325},[315,3233,3141],{"class":325},[315,3235,722],{"class":358},[315,3237,3238],{"class":325},"\"\n",[315,3240,3241],{"class":317,"line":485},[315,3242,1303],{"class":325},[315,3244,3245],{"class":317,"line":496},[315,3246,3247],{"class":325},"    },\n",[315,3249,3250,3252,3255,3257,3259],{"class":317,"line":517},[315,3251,3166],{"class":325},[315,3253,3254],{"class":479},"logLevel",[315,3256,3136],{"class":325},[315,3258,476],{"class":325},[315,3260,514],{"class":325},[315,3262,3263,3265,3268,3270,3272,3274,3277,3279],{"class":317,"line":541},[315,3264,3180],{"class":325},[315,3266,3267],{"class":1764},"default",[315,3269,3136],{"class":325},[315,3271,476],{"class":325},[315,3273,3141],{"class":325},[315,3275,3276],{"class":358},"Information",[315,3278,3136],{"class":325},[315,3280,482],{"class":325},[315,3282,3283,3285,3288,3290,3292,3294,3296],{"class":317,"line":547},[315,3284,3180],{"class":325},[315,3286,3287],{"class":1764},"Function",[315,3289,3136],{"class":325},[315,3291,476],{"class":325},[315,3293,3141],{"class":325},[315,3295,3276],{"class":358},[315,3297,3238],{"class":325},[315,3299,3300],{"class":317,"line":552},[315,3301,2055],{"class":325},[315,3303,3304],{"class":317,"line":576},[315,3305,848],{"class":325},[315,3307,3308,3310,3313,3315,3317],{"class":317,"line":653},[315,3309,3130],{"class":325},[315,3311,3312],{"class":428},"extensionBundle",[315,3314,3136],{"class":325},[315,3316,476],{"class":325},[315,3318,514],{"class":325},[315,3320,3321,3323,3326,3328,3330,3332,3335,3337],{"class":317,"line":670},[315,3322,3166],{"class":325},[315,3324,3325],{"class":479},"id",[315,3327,3136],{"class":325},[315,3329,476],{"class":325},[315,3331,3141],{"class":325},[315,3333,3334],{"class":358},"Microsoft.Azure.Functions.ExtensionBundle",[315,3336,3136],{"class":325},[315,3338,482],{"class":325},[315,3340,3341,3343,3345,3347,3349,3351,3354],{"class":317,"line":682},[315,3342,3166],{"class":325},[315,3344,3133],{"class":479},[315,3346,3136],{"class":325},[315,3348,476],{"class":325},[315,3350,3141],{"class":325},[315,3352,3353],{"class":358},"[4.*, 5.0.0)",[315,3355,3238],{"class":325},[315,3357,3358],{"class":317,"line":701},[315,3359,1317],{"class":325},[315,3361,3362],{"class":317,"line":1341},[315,3363,544],{"class":325},[724,3365,3367],{"id":3366},"advanced-hostjson","Advanced host.json",[304,3369,3371],{"className":3116,"code":3370,"filename":3118,"language":3119,"meta":310,"style":310},"{\n  \"version\": \"2.0\",\n  \n  \"logging\": {\n    \"applicationInsights\": {\n      \"samplingSettings\": {\n        \"isEnabled\": true,\n        \"maxTelemetryItemsPerSecond\": 20\n      },\n      \"enableDependencyTracking\": true\n    },\n    \"logLevel\": {\n      \"default\": \"Information\",\n      \"Host.Results\": \"Error\",\n      \"Function.httpTrigger\": \"Debug\"\n    }\n  },\n  \n  \"http\": {\n    \"routePrefix\": \"api\",\n    \"maxOutstandingRequests\": 200,\n    \"maxConcurrentRequests\": 100,\n    \"dynamicThrottlesEnabled\": true\n  },\n  \n  \"functionTimeout\": \"00:05:00\",\n  \n  \"healthMonitor\": {\n    \"enabled\": true,\n    \"healthCheckInterval\": \"00:00:10\",\n    \"healthCheckWindow\": \"00:02:00\",\n    \"healthCheckThreshold\": 6,\n    \"counterThreshold\": 0.80\n  },\n  \n  \"extensionBundle\": {\n    \"id\": \"Microsoft.Azure.Functions.ExtensionBundle\",\n    \"version\": \"[4.*, 5.0.0)\"\n  }\n}\n",[312,3372,3373,3377,3395,3399,3411,3423,3435,3447,3460,3465,3479,3483,3495,3513,3533,3551,3555,3559,3563,3575,3595,3611,3627,3640,3644,3648,3668,3672,3685,3698,3718,3738,3754,3768,3772,3776,3788,3806,3822,3826],{"__ignoreMap":310},[315,3374,3375],{"class":317,"line":318},[315,3376,742],{"class":325},[315,3378,3379,3381,3383,3385,3387,3389,3391,3393],{"class":317,"line":368},[315,3380,3130],{"class":325},[315,3382,3133],{"class":428},[315,3384,3136],{"class":325},[315,3386,476],{"class":325},[315,3388,3141],{"class":325},[315,3390,3144],{"class":358},[315,3392,3136],{"class":325},[315,3394,482],{"class":325},[315,3396,3397],{"class":317,"line":391},[315,3398,1124],{"class":329},[315,3400,3401,3403,3405,3407,3409],{"class":317,"line":419},[315,3402,3130],{"class":325},[315,3404,3155],{"class":428},[315,3406,3136],{"class":325},[315,3408,476],{"class":325},[315,3410,514],{"class":325},[315,3412,3413,3415,3417,3419,3421],{"class":317,"line":425},[315,3414,3166],{"class":325},[315,3416,3169],{"class":479},[315,3418,3136],{"class":325},[315,3420,476],{"class":325},[315,3422,514],{"class":325},[315,3424,3425,3427,3429,3431,3433],{"class":317,"line":446},[315,3426,3180],{"class":325},[315,3428,3183],{"class":1764},[315,3430,3136],{"class":325},[315,3432,476],{"class":325},[315,3434,514],{"class":325},[315,3436,3437,3439,3441,3443,3445],{"class":317,"line":451},[315,3438,3194],{"class":325},[315,3440,3197],{"class":529},[315,3442,3136],{"class":325},[315,3444,476],{"class":325},[315,3446,3204],{"class":325},[315,3448,3449,3451,3453,3455,3457],{"class":317,"line":469},[315,3450,3194],{"class":325},[315,3452,3211],{"class":529},[315,3454,3136],{"class":325},[315,3456,476],{"class":325},[315,3458,3459],{"class":1764}," 20\n",[315,3461,3462],{"class":317,"line":485},[315,3463,3464],{"class":325},"      },\n",[315,3466,3467,3469,3472,3474,3476],{"class":317,"line":496},[315,3468,3180],{"class":325},[315,3470,3471],{"class":1764},"enableDependencyTracking",[315,3473,3136],{"class":325},[315,3475,476],{"class":325},[315,3477,3478],{"class":325}," true\n",[315,3480,3481],{"class":317,"line":517},[315,3482,3247],{"class":325},[315,3484,3485,3487,3489,3491,3493],{"class":317,"line":541},[315,3486,3166],{"class":325},[315,3488,3254],{"class":479},[315,3490,3136],{"class":325},[315,3492,476],{"class":325},[315,3494,514],{"class":325},[315,3496,3497,3499,3501,3503,3505,3507,3509,3511],{"class":317,"line":547},[315,3498,3180],{"class":325},[315,3500,3267],{"class":1764},[315,3502,3136],{"class":325},[315,3504,476],{"class":325},[315,3506,3141],{"class":325},[315,3508,3276],{"class":358},[315,3510,3136],{"class":325},[315,3512,482],{"class":325},[315,3514,3515,3517,3520,3522,3524,3526,3529,3531],{"class":317,"line":552},[315,3516,3180],{"class":325},[315,3518,3519],{"class":1764},"Host.Results",[315,3521,3136],{"class":325},[315,3523,476],{"class":325},[315,3525,3141],{"class":325},[315,3527,3528],{"class":358},"Error",[315,3530,3136],{"class":325},[315,3532,482],{"class":325},[315,3534,3535,3537,3540,3542,3544,3546,3549],{"class":317,"line":576},[315,3536,3180],{"class":325},[315,3538,3539],{"class":1764},"Function.httpTrigger",[315,3541,3136],{"class":325},[315,3543,476],{"class":325},[315,3545,3141],{"class":325},[315,3547,3548],{"class":358},"Debug",[315,3550,3238],{"class":325},[315,3552,3553],{"class":317,"line":653},[315,3554,2055],{"class":325},[315,3556,3557],{"class":317,"line":670},[315,3558,848],{"class":325},[315,3560,3561],{"class":317,"line":682},[315,3562,1124],{"class":329},[315,3564,3565,3567,3569,3571,3573],{"class":317,"line":701},[315,3566,3130],{"class":325},[315,3568,560],{"class":428},[315,3570,3136],{"class":325},[315,3572,476],{"class":325},[315,3574,514],{"class":325},[315,3576,3577,3579,3582,3584,3586,3588,3591,3593],{"class":317,"line":1341},[315,3578,3166],{"class":325},[315,3580,3581],{"class":479},"routePrefix",[315,3583,3136],{"class":325},[315,3585,476],{"class":325},[315,3587,3141],{"class":325},[315,3589,3590],{"class":358},"api",[315,3592,3136],{"class":325},[315,3594,482],{"class":325},[315,3596,3597,3599,3602,3604,3606,3609],{"class":317,"line":1353},[315,3598,3166],{"class":325},[315,3600,3601],{"class":479},"maxOutstandingRequests",[315,3603,3136],{"class":325},[315,3605,476],{"class":325},[315,3607,3608],{"class":1764}," 200",[315,3610,482],{"class":325},[315,3612,3613,3615,3618,3620,3622,3625],{"class":317,"line":1376},[315,3614,3166],{"class":325},[315,3616,3617],{"class":479},"maxConcurrentRequests",[315,3619,3136],{"class":325},[315,3621,476],{"class":325},[315,3623,3624],{"class":1764}," 100",[315,3626,482],{"class":325},[315,3628,3629,3631,3634,3636,3638],{"class":317,"line":1381},[315,3630,3166],{"class":325},[315,3632,3633],{"class":479},"dynamicThrottlesEnabled",[315,3635,3136],{"class":325},[315,3637,476],{"class":325},[315,3639,3478],{"class":325},[315,3641,3642],{"class":317,"line":1399},[315,3643,848],{"class":325},[315,3645,3646],{"class":317,"line":1408},[315,3647,1124],{"class":329},[315,3649,3650,3652,3655,3657,3659,3661,3664,3666],{"class":317,"line":1427},[315,3651,3130],{"class":325},[315,3653,3654],{"class":428},"functionTimeout",[315,3656,3136],{"class":325},[315,3658,476],{"class":325},[315,3660,3141],{"class":325},[315,3662,3663],{"class":358},"00:05:00",[315,3665,3136],{"class":325},[315,3667,482],{"class":325},[315,3669,3670],{"class":317,"line":1446},[315,3671,1124],{"class":329},[315,3673,3674,3676,3679,3681,3683],{"class":317,"line":1451},[315,3675,3130],{"class":325},[315,3677,3678],{"class":428},"healthMonitor",[315,3680,3136],{"class":325},[315,3682,476],{"class":325},[315,3684,514],{"class":325},[315,3686,3687,3689,3692,3694,3696],{"class":317,"line":1460},[315,3688,3166],{"class":325},[315,3690,3691],{"class":479},"enabled",[315,3693,3136],{"class":325},[315,3695,476],{"class":325},[315,3697,3204],{"class":325},[315,3699,3700,3702,3705,3707,3709,3711,3714,3716],{"class":317,"line":1465},[315,3701,3166],{"class":325},[315,3703,3704],{"class":479},"healthCheckInterval",[315,3706,3136],{"class":325},[315,3708,476],{"class":325},[315,3710,3141],{"class":325},[315,3712,3713],{"class":358},"00:00:10",[315,3715,3136],{"class":325},[315,3717,482],{"class":325},[315,3719,3720,3722,3725,3727,3729,3731,3734,3736],{"class":317,"line":1928},[315,3721,3166],{"class":325},[315,3723,3724],{"class":479},"healthCheckWindow",[315,3726,3136],{"class":325},[315,3728,476],{"class":325},[315,3730,3141],{"class":325},[315,3732,3733],{"class":358},"00:02:00",[315,3735,3136],{"class":325},[315,3737,482],{"class":325},[315,3739,3740,3742,3745,3747,3749,3752],{"class":317,"line":1938},[315,3741,3166],{"class":325},[315,3743,3744],{"class":479},"healthCheckThreshold",[315,3746,3136],{"class":325},[315,3748,476],{"class":325},[315,3750,3751],{"class":1764}," 6",[315,3753,482],{"class":325},[315,3755,3756,3758,3761,3763,3765],{"class":317,"line":1947},[315,3757,3166],{"class":325},[315,3759,3760],{"class":479},"counterThreshold",[315,3762,3136],{"class":325},[315,3764,476],{"class":325},[315,3766,3767],{"class":1764}," 0.80\n",[315,3769,3770],{"class":317,"line":1952},[315,3771,848],{"class":325},[315,3773,3774],{"class":317,"line":1957},[315,3775,1124],{"class":329},[315,3777,3778,3780,3782,3784,3786],{"class":317,"line":1975},[315,3779,3130],{"class":325},[315,3781,3312],{"class":428},[315,3783,3136],{"class":325},[315,3785,476],{"class":325},[315,3787,514],{"class":325},[315,3789,3790,3792,3794,3796,3798,3800,3802,3804],{"class":317,"line":2010},[315,3791,3166],{"class":325},[315,3793,3325],{"class":479},[315,3795,3136],{"class":325},[315,3797,476],{"class":325},[315,3799,3141],{"class":325},[315,3801,3334],{"class":358},[315,3803,3136],{"class":325},[315,3805,482],{"class":325},[315,3807,3808,3810,3812,3814,3816,3818,3820],{"class":317,"line":2028},[315,3809,3166],{"class":325},[315,3811,3133],{"class":479},[315,3813,3136],{"class":325},[315,3815,476],{"class":325},[315,3817,3141],{"class":325},[315,3819,3353],{"class":358},[315,3821,3238],{"class":325},[315,3823,3824],{"class":317,"line":2052},[315,3825,1317],{"class":325},[315,3827,3828],{"class":317,"line":2058},[315,3829,544],{"class":325},[724,3831,3833],{"id":3832},"function-specific-configuration","Function-Specific Configuration",[304,3835,3837],{"className":306,"code":3836,"filename":308,"language":309,"meta":310,"style":310},"import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure\u002Ffunctions';\nimport { toServerlessHandler } from '@vercube\u002Fserverless\u002Fazure-functions';\nimport { app as vercubeApp } from '..\u002Findex';\n\nconst handler = toServerlessHandler(vercubeApp);\n\nexport async function httpTrigger(\n  request: HttpRequest,\n  context: InvocationContext\n): Promise\u003CHttpResponseInit> {\n  return await handler(request);\n}\n\napp.http('httpTrigger', {\n  \u002F\u002F HTTP methods\n  methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],\n  \n  \u002F\u002F Authentication level\n  authLevel: 'anonymous', \u002F\u002F or 'function', 'admin'\n  \n  \u002F\u002F Route pattern\n  route: '{*route}',\n  \n  \u002F\u002F Handler function\n  handler: httpTrigger\n});\n\n\u002F\u002F Add more function endpoints\napp.http('adminTrigger', {\n  methods: ['GET', 'POST'],\n  authLevel: 'admin',\n  route: 'admin\u002F{*route}',\n  handler: async (request: HttpRequest) => {\n    \u002F\u002F Admin-only endpoint\n    return await handler(request);\n  }\n});\n",[312,3838,3839,3871,3891,3915,3919,3933,3937,3949,3959,3967,3981,3997,4001,4005,4025,4030,4096,4100,4105,4122,4126,4131,4145,4149,4154,4163,4171,4175,4180,4201,4227,4242,4257,4280,4285,4301,4305],{"__ignoreMap":310},[315,3840,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869],{"class":317,"line":318},[315,3842,322],{"class":321},[315,3844,326],{"class":325},[315,3846,330],{"class":329},[315,3848,333],{"class":325},[315,3850,336],{"class":329},[315,3852,333],{"class":325},[315,3854,341],{"class":329},[315,3856,333],{"class":325},[315,3858,346],{"class":329},[315,3860,349],{"class":325},[315,3862,352],{"class":321},[315,3864,355],{"class":325},[315,3866,359],{"class":358},[315,3868,362],{"class":325},[315,3870,365],{"class":325},[315,3872,3873,3875,3877,3879,3881,3883,3885,3887,3889],{"class":317,"line":368},[315,3874,322],{"class":321},[315,3876,326],{"class":325},[315,3878,375],{"class":329},[315,3880,349],{"class":325},[315,3882,352],{"class":321},[315,3884,355],{"class":325},[315,3886,384],{"class":358},[315,3888,362],{"class":325},[315,3890,365],{"class":325},[315,3892,3893,3895,3897,3899,3901,3903,3905,3907,3909,3911,3913],{"class":317,"line":391},[315,3894,322],{"class":321},[315,3896,326],{"class":325},[315,3898,330],{"class":329},[315,3900,400],{"class":321},[315,3902,403],{"class":329},[315,3904,349],{"class":325},[315,3906,352],{"class":321},[315,3908,355],{"class":325},[315,3910,412],{"class":358},[315,3912,362],{"class":325},[315,3914,365],{"class":325},[315,3916,3917],{"class":317,"line":419},[315,3918,422],{"emptyLinePlaceholder":56},[315,3920,3921,3923,3925,3927,3929,3931],{"class":317,"line":425},[315,3922,429],{"class":428},[315,3924,432],{"class":329},[315,3926,435],{"class":325},[315,3928,375],{"class":438},[315,3930,441],{"class":329},[315,3932,365],{"class":325},[315,3934,3935],{"class":317,"line":446},[315,3936,422],{"emptyLinePlaceholder":56},[315,3938,3939,3941,3943,3945,3947],{"class":317,"line":451},[315,3940,454],{"class":321},[315,3942,457],{"class":428},[315,3944,460],{"class":428},[315,3946,463],{"class":438},[315,3948,466],{"class":325},[315,3950,3951,3953,3955,3957],{"class":317,"line":469},[315,3952,473],{"class":472},[315,3954,476],{"class":325},[315,3956,336],{"class":479},[315,3958,482],{"class":325},[315,3960,3961,3963,3965],{"class":317,"line":485},[315,3962,488],{"class":472},[315,3964,476],{"class":325},[315,3966,493],{"class":479},[315,3968,3969,3971,3973,3975,3977,3979],{"class":317,"line":496},[315,3970,499],{"class":325},[315,3972,502],{"class":479},[315,3974,505],{"class":325},[315,3976,508],{"class":479},[315,3978,511],{"class":325},[315,3980,514],{"class":325},[315,3982,3983,3985,3987,3989,3991,3993,3995],{"class":317,"line":517},[315,3984,520],{"class":321},[315,3986,523],{"class":321},[315,3988,526],{"class":438},[315,3990,530],{"class":529},[315,3992,533],{"class":329},[315,3994,536],{"class":529},[315,3996,365],{"class":325},[315,3998,3999],{"class":317,"line":541},[315,4000,544],{"class":325},[315,4002,4003],{"class":317,"line":547},[315,4004,422],{"emptyLinePlaceholder":56},[315,4006,4007,4009,4011,4013,4015,4017,4019,4021,4023],{"class":317,"line":552},[315,4008,555],{"class":329},[315,4010,294],{"class":325},[315,4012,560],{"class":438},[315,4014,530],{"class":329},[315,4016,362],{"class":325},[315,4018,567],{"class":358},[315,4020,362],{"class":325},[315,4022,333],{"class":325},[315,4024,514],{"class":325},[315,4026,4027],{"class":317,"line":576},[315,4028,4029],{"class":697},"  \u002F\u002F HTTP methods\n",[315,4031,4032,4034,4036,4038,4040,4042,4044,4046,4048,4050,4052,4054,4056,4058,4060,4062,4064,4066,4068,4070,4072,4074,4076,4078,4080,4082,4084,4086,4088,4090,4092,4094],{"class":317,"line":653},[315,4033,579],{"class":529},[315,4035,476],{"class":325},[315,4037,584],{"class":329},[315,4039,362],{"class":325},[315,4041,589],{"class":358},[315,4043,362],{"class":325},[315,4045,333],{"class":325},[315,4047,355],{"class":325},[315,4049,598],{"class":358},[315,4051,362],{"class":325},[315,4053,333],{"class":325},[315,4055,355],{"class":325},[315,4057,607],{"class":358},[315,4059,362],{"class":325},[315,4061,333],{"class":325},[315,4063,355],{"class":325},[315,4065,616],{"class":358},[315,4067,362],{"class":325},[315,4069,333],{"class":325},[315,4071,355],{"class":325},[315,4073,625],{"class":358},[315,4075,362],{"class":325},[315,4077,333],{"class":325},[315,4079,355],{"class":325},[315,4081,634],{"class":358},[315,4083,362],{"class":325},[315,4085,333],{"class":325},[315,4087,355],{"class":325},[315,4089,643],{"class":358},[315,4091,362],{"class":325},[315,4093,648],{"class":329},[315,4095,482],{"class":325},[315,4097,4098],{"class":317,"line":670},[315,4099,1124],{"class":329},[315,4101,4102],{"class":317,"line":682},[315,4103,4104],{"class":697},"  \u002F\u002F Authentication level\n",[315,4106,4107,4109,4111,4113,4115,4117,4119],{"class":317,"line":701},[315,4108,656],{"class":529},[315,4110,476],{"class":325},[315,4112,355],{"class":325},[315,4114,663],{"class":358},[315,4116,362],{"class":325},[315,4118,333],{"class":325},[315,4120,4121],{"class":697}," \u002F\u002F or 'function', 'admin'\n",[315,4123,4124],{"class":317,"line":1341},[315,4125,1124],{"class":329},[315,4127,4128],{"class":317,"line":1353},[315,4129,4130],{"class":697},"  \u002F\u002F Route pattern\n",[315,4132,4133,4135,4137,4139,4141,4143],{"class":317,"line":1376},[315,4134,685],{"class":529},[315,4136,476],{"class":325},[315,4138,355],{"class":325},[315,4140,692],{"class":358},[315,4142,362],{"class":325},[315,4144,482],{"class":325},[315,4146,4147],{"class":317,"line":1381},[315,4148,1124],{"class":329},[315,4150,4151],{"class":317,"line":1399},[315,4152,4153],{"class":697},"  \u002F\u002F Handler function\n",[315,4155,4156,4158,4160],{"class":317,"line":1408},[315,4157,673],{"class":529},[315,4159,476],{"class":325},[315,4161,4162],{"class":329}," httpTrigger\n",[315,4164,4165,4167,4169],{"class":317,"line":1427},[315,4166,704],{"class":325},[315,4168,536],{"class":329},[315,4170,365],{"class":325},[315,4172,4173],{"class":317,"line":1446},[315,4174,422],{"emptyLinePlaceholder":56},[315,4176,4177],{"class":317,"line":1451},[315,4178,4179],{"class":697},"\u002F\u002F Add more function endpoints\n",[315,4181,4182,4184,4186,4188,4190,4192,4195,4197,4199],{"class":317,"line":1460},[315,4183,555],{"class":329},[315,4185,294],{"class":325},[315,4187,560],{"class":438},[315,4189,530],{"class":329},[315,4191,362],{"class":325},[315,4193,4194],{"class":358},"adminTrigger",[315,4196,362],{"class":325},[315,4198,333],{"class":325},[315,4200,514],{"class":325},[315,4202,4203,4205,4207,4209,4211,4213,4215,4217,4219,4221,4223,4225],{"class":317,"line":1465},[315,4204,579],{"class":529},[315,4206,476],{"class":325},[315,4208,584],{"class":329},[315,4210,362],{"class":325},[315,4212,589],{"class":358},[315,4214,362],{"class":325},[315,4216,333],{"class":325},[315,4218,355],{"class":325},[315,4220,598],{"class":358},[315,4222,362],{"class":325},[315,4224,648],{"class":329},[315,4226,482],{"class":325},[315,4228,4229,4231,4233,4235,4238,4240],{"class":317,"line":1928},[315,4230,656],{"class":529},[315,4232,476],{"class":325},[315,4234,355],{"class":325},[315,4236,4237],{"class":358},"admin",[315,4239,362],{"class":325},[315,4241,482],{"class":325},[315,4243,4244,4246,4248,4250,4253,4255],{"class":317,"line":1938},[315,4245,685],{"class":529},[315,4247,476],{"class":325},[315,4249,355],{"class":325},[315,4251,4252],{"class":358},"admin\u002F{*route}",[315,4254,362],{"class":325},[315,4256,482],{"class":325},[315,4258,4259,4261,4263,4265,4267,4269,4271,4273,4275,4278],{"class":317,"line":1947},[315,4260,673],{"class":438},[315,4262,476],{"class":325},[315,4264,457],{"class":428},[315,4266,2016],{"class":325},[315,4268,533],{"class":472},[315,4270,476],{"class":325},[315,4272,336],{"class":479},[315,4274,536],{"class":325},[315,4276,4277],{"class":428}," =>",[315,4279,514],{"class":325},[315,4281,4282],{"class":317,"line":1952},[315,4283,4284],{"class":697},"    \u002F\u002F Admin-only endpoint\n",[315,4286,4287,4289,4291,4293,4295,4297,4299],{"class":317,"line":1957},[315,4288,1224],{"class":321},[315,4290,523],{"class":321},[315,4292,526],{"class":438},[315,4294,530],{"class":529},[315,4296,533],{"class":329},[315,4298,536],{"class":529},[315,4300,365],{"class":325},[315,4302,4303],{"class":317,"line":1975},[315,4304,1317],{"class":325},[315,4306,4307,4309,4311],{"class":317,"line":2010},[315,4308,704],{"class":325},[315,4310,536],{"class":329},[315,4312,365],{"class":325},[299,4314,4316],{"id":4315},"database-connections","Database Connections",[282,4318,4319],{},"Handle database connections efficiently in Azure Functions:",[724,4321,4323],{"id":4322},"connection-pooling","Connection Pooling",[304,4325,4327],{"className":306,"code":4326,"language":309,"meta":310,"style":310},"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 Azure Functions optimized settings\n      max: 10,  \u002F\u002F Higher than Lambda due to concurrent request handling\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",[312,4328,4329,4340,4366,4370,4381,4386,4404,4417,4421,4425,4444,4464,4492,4512,4532,4552,4556,4561,4576,4588,4598,4606,4610,4622,4626,4630,4664,4683,4708,4712],{"__ignoreMap":310},[315,4330,4331,4333,4335,4338],{"class":317,"line":318},[315,4332,454],{"class":321},[315,4334,1114],{"class":428},[315,4336,4337],{"class":479}," DatabaseService",[315,4339,514],{"class":325},[315,4341,4342,4344,4347,4350,4352,4355,4358,4361,4363],{"class":317,"line":368},[315,4343,1140],{"class":428},[315,4345,4346],{"class":428}," static",[315,4348,4349],{"class":529}," pool",[315,4351,476],{"class":325},[315,4353,4354],{"class":479}," Pool",[315,4356,4357],{"class":325}," |",[315,4359,4360],{"class":479}," null",[315,4362,1197],{"class":325},[315,4364,4365],{"class":325}," null;\n",[315,4367,4368],{"class":317,"line":391},[315,4369,1124],{"class":329},[315,4371,4372,4374,4377,4379],{"class":317,"line":419},[315,4373,1178],{"class":428},[315,4375,4376],{"class":529}," getPool",[315,4378,1184],{"class":325},[315,4380,514],{"class":325},[315,4382,4383],{"class":317,"line":425},[315,4384,4385],{"class":697},"    \u002F\u002F Reuse connection pool across invocations\n",[315,4387,4388,4390,4392,4395,4397,4400,4402],{"class":317,"line":446},[315,4389,2013],{"class":321},[315,4391,2016],{"class":529},[315,4393,4394],{"class":329},"DatabaseService",[315,4396,294],{"class":325},[315,4398,4399],{"class":329},"pool",[315,4401,1613],{"class":529},[315,4403,742],{"class":325},[315,4405,4406,4409,4411,4413,4415],{"class":317,"line":451},[315,4407,4408],{"class":321},"      return",[315,4410,4337],{"class":329},[315,4412,294],{"class":325},[315,4414,4399],{"class":329},[315,4416,365],{"class":325},[315,4418,4419],{"class":317,"line":469},[315,4420,2055],{"class":325},[315,4422,4423],{"class":317,"line":485},[315,4424,1219],{"class":529},[315,4426,4427,4430,4432,4434,4436,4438,4440,4442],{"class":317,"line":496},[315,4428,4429],{"class":329},"    DatabaseService",[315,4431,294],{"class":325},[315,4433,4399],{"class":329},[315,4435,1197],{"class":325},[315,4437,1227],{"class":325},[315,4439,4354],{"class":438},[315,4441,530],{"class":529},[315,4443,742],{"class":325},[315,4445,4446,4449,4451,4453,4455,4457,4459,4462],{"class":317,"line":517},[315,4447,4448],{"class":529},"      host",[315,4450,476],{"class":325},[315,4452,2830],{"class":329},[315,4454,294],{"class":325},[315,4456,2835],{"class":329},[315,4458,294],{"class":325},[315,4460,4461],{"class":329},"DB_HOST",[315,4463,482],{"class":325},[315,4465,4466,4469,4471,4474,4476,4479,4481,4483,4485,4488,4490],{"class":317,"line":541},[315,4467,4468],{"class":529},"      port",[315,4470,476],{"class":325},[315,4472,4473],{"class":438}," Number",[315,4475,530],{"class":529},[315,4477,4478],{"class":329},"process",[315,4480,294],{"class":325},[315,4482,2835],{"class":329},[315,4484,294],{"class":325},[315,4486,4487],{"class":329},"DB_PORT",[315,4489,536],{"class":529},[315,4491,482],{"class":325},[315,4493,4494,4497,4499,4501,4503,4505,4507,4510],{"class":317,"line":547},[315,4495,4496],{"class":529},"      user",[315,4498,476],{"class":325},[315,4500,2830],{"class":329},[315,4502,294],{"class":325},[315,4504,2835],{"class":329},[315,4506,294],{"class":325},[315,4508,4509],{"class":329},"DB_USER",[315,4511,482],{"class":325},[315,4513,4514,4517,4519,4521,4523,4525,4527,4530],{"class":317,"line":552},[315,4515,4516],{"class":529},"      password",[315,4518,476],{"class":325},[315,4520,2830],{"class":329},[315,4522,294],{"class":325},[315,4524,2835],{"class":329},[315,4526,294],{"class":325},[315,4528,4529],{"class":329},"DB_PASSWORD",[315,4531,482],{"class":325},[315,4533,4534,4537,4539,4541,4543,4545,4547,4550],{"class":317,"line":576},[315,4535,4536],{"class":529},"      database",[315,4538,476],{"class":325},[315,4540,2830],{"class":329},[315,4542,294],{"class":325},[315,4544,2835],{"class":329},[315,4546,294],{"class":325},[315,4548,4549],{"class":329},"DB_NAME",[315,4551,482],{"class":325},[315,4553,4554],{"class":317,"line":653},[315,4555,2927],{"class":529},[315,4557,4558],{"class":317,"line":670},[315,4559,4560],{"class":697},"      \u002F\u002F Azure Functions optimized settings\n",[315,4562,4563,4566,4568,4571,4573],{"class":317,"line":682},[315,4564,4565],{"class":529},"      max",[315,4567,476],{"class":325},[315,4569,4570],{"class":1764}," 10",[315,4572,333],{"class":325},[315,4574,4575],{"class":697},"  \u002F\u002F Higher than Lambda due to concurrent request handling\n",[315,4577,4578,4581,4583,4586],{"class":317,"line":701},[315,4579,4580],{"class":529},"      idleTimeoutMillis",[315,4582,476],{"class":325},[315,4584,4585],{"class":1764}," 30000",[315,4587,482],{"class":325},[315,4589,4590,4593,4595],{"class":317,"line":1341},[315,4591,4592],{"class":529},"      connectionTimeoutMillis",[315,4594,476],{"class":325},[315,4596,4597],{"class":1764}," 2000\n",[315,4599,4600,4602,4604],{"class":317,"line":1353},[315,4601,1308],{"class":325},[315,4603,536],{"class":529},[315,4605,365],{"class":325},[315,4607,4608],{"class":317,"line":1376},[315,4609,1219],{"class":529},[315,4611,4612,4614,4616,4618,4620],{"class":317,"line":1381},[315,4613,1224],{"class":321},[315,4615,4337],{"class":329},[315,4617,294],{"class":325},[315,4619,4399],{"class":329},[315,4621,365],{"class":325},[315,4623,4624],{"class":317,"line":1399},[315,4625,1317],{"class":325},[315,4627,4628],{"class":317,"line":1408},[315,4629,1124],{"class":329},[315,4631,4632,4634,4637,4639,4642,4644,4646,4648,4651,4654,4657,4660,4662],{"class":317,"line":1427},[315,4633,1178],{"class":428},[315,4635,4636],{"class":529}," query",[315,4638,530],{"class":325},[315,4640,4641],{"class":472},"sql",[315,4643,476],{"class":325},[315,4645,2003],{"class":479},[315,4647,333],{"class":325},[315,4649,4650],{"class":472}," params",[315,4652,4653],{"class":325},"?:",[315,4655,4656],{"class":479}," any",[315,4658,4659],{"class":329},"[]",[315,4661,536],{"class":325},[315,4663,514],{"class":325},[315,4665,4666,4668,4670,4672,4674,4676,4679,4681],{"class":317,"line":1446},[315,4667,1191],{"class":428},[315,4669,4349],{"class":329},[315,4671,1197],{"class":325},[315,4673,523],{"class":321},[315,4675,1202],{"class":325},[315,4677,4678],{"class":438},"getPool",[315,4680,1184],{"class":529},[315,4682,365],{"class":325},[315,4684,4685,4687,4689,4691,4693,4696,4698,4700,4702,4704,4706],{"class":317,"line":1451},[315,4686,1224],{"class":321},[315,4688,523],{"class":321},[315,4690,4349],{"class":329},[315,4692,294],{"class":325},[315,4694,4695],{"class":438},"query",[315,4697,530],{"class":529},[315,4699,4641],{"class":329},[315,4701,333],{"class":325},[315,4703,4650],{"class":329},[315,4705,536],{"class":529},[315,4707,365],{"class":325},[315,4709,4710],{"class":317,"line":1460},[315,4711,1317],{"class":325},[315,4713,4714],{"class":317,"line":1465},[315,4715,544],{"class":325},[724,4717,4719],{"id":4718},"azure-sql-database","Azure SQL Database",[304,4721,4723],{"className":306,"code":4722,"language":309,"meta":310,"style":310},"import sql from 'mssql';\n\nexport class AzureSqlService {\n  private static pool: sql.ConnectionPool | null = null;\n  \n  async getPool() {\n    if (AzureSqlService.pool) {\n      return AzureSqlService.pool;\n    }\n    \n    const config = {\n      server: process.env.AZURE_SQL_SERVER!,\n      database: process.env.AZURE_SQL_DATABASE!,\n      authentication: {\n        type: 'azure-active-directory-default' as const\n      },\n      options: {\n        encrypt: true,\n        enableArithAbort: true\n      },\n      pool: {\n        max: 10,\n        min: 0,\n        idleTimeoutMillis: 30000\n      }\n    };\n    \n    AzureSqlService.pool = await sql.connect(config);\n    return AzureSqlService.pool;\n  }\n  \n  async query(queryText: string) {\n    const pool = await this.getPool();\n    const result = await pool.request().query(queryText);\n    return result.recordset;\n  }\n}\n",[312,4724,4725,4744,4748,4759,4785,4789,4799,4816,4828,4832,4836,4847,4868,4887,4896,4915,4919,4928,4939,4948,4952,4961,4972,4984,4994,4998,5002,5006,5035,5047,5051,5055,5074,5092,5122,5135,5139],{"__ignoreMap":310},[315,4726,4727,4729,4732,4735,4737,4740,4742],{"class":317,"line":318},[315,4728,322],{"class":321},[315,4730,4731],{"class":329}," sql ",[315,4733,4734],{"class":321},"from",[315,4736,355],{"class":325},[315,4738,4739],{"class":358},"mssql",[315,4741,362],{"class":325},[315,4743,365],{"class":325},[315,4745,4746],{"class":317,"line":368},[315,4747,422],{"emptyLinePlaceholder":56},[315,4749,4750,4752,4754,4757],{"class":317,"line":391},[315,4751,454],{"class":321},[315,4753,1114],{"class":428},[315,4755,4756],{"class":479}," AzureSqlService",[315,4758,514],{"class":325},[315,4760,4761,4763,4765,4767,4769,4772,4774,4777,4779,4781,4783],{"class":317,"line":419},[315,4762,1140],{"class":428},[315,4764,4346],{"class":428},[315,4766,4349],{"class":529},[315,4768,476],{"class":325},[315,4770,4771],{"class":479}," sql",[315,4773,294],{"class":325},[315,4775,4776],{"class":479},"ConnectionPool",[315,4778,4357],{"class":325},[315,4780,4360],{"class":479},[315,4782,1197],{"class":325},[315,4784,4365],{"class":325},[315,4786,4787],{"class":317,"line":425},[315,4788,1124],{"class":329},[315,4790,4791,4793,4795,4797],{"class":317,"line":446},[315,4792,1178],{"class":428},[315,4794,4376],{"class":529},[315,4796,1184],{"class":325},[315,4798,514],{"class":325},[315,4800,4801,4803,4805,4808,4810,4812,4814],{"class":317,"line":451},[315,4802,2013],{"class":321},[315,4804,2016],{"class":529},[315,4806,4807],{"class":329},"AzureSqlService",[315,4809,294],{"class":325},[315,4811,4399],{"class":329},[315,4813,1613],{"class":529},[315,4815,742],{"class":325},[315,4817,4818,4820,4822,4824,4826],{"class":317,"line":469},[315,4819,4408],{"class":321},[315,4821,4756],{"class":329},[315,4823,294],{"class":325},[315,4825,4399],{"class":329},[315,4827,365],{"class":325},[315,4829,4830],{"class":317,"line":485},[315,4831,2055],{"class":325},[315,4833,4834],{"class":317,"line":496},[315,4835,1219],{"class":529},[315,4837,4838,4840,4843,4845],{"class":317,"line":517},[315,4839,1191],{"class":428},[315,4841,4842],{"class":329}," config",[315,4844,1197],{"class":325},[315,4846,514],{"class":325},[315,4848,4849,4852,4854,4856,4858,4860,4862,4865],{"class":317,"line":541},[315,4850,4851],{"class":529},"      server",[315,4853,476],{"class":325},[315,4855,2830],{"class":329},[315,4857,294],{"class":325},[315,4859,2835],{"class":329},[315,4861,294],{"class":325},[315,4863,4864],{"class":329},"AZURE_SQL_SERVER",[315,4866,4867],{"class":325},"!,\n",[315,4869,4870,4872,4874,4876,4878,4880,4882,4885],{"class":317,"line":547},[315,4871,4536],{"class":529},[315,4873,476],{"class":325},[315,4875,2830],{"class":329},[315,4877,294],{"class":325},[315,4879,2835],{"class":329},[315,4881,294],{"class":325},[315,4883,4884],{"class":329},"AZURE_SQL_DATABASE",[315,4886,4867],{"class":325},[315,4888,4889,4892,4894],{"class":317,"line":552},[315,4890,4891],{"class":529},"      authentication",[315,4893,476],{"class":325},[315,4895,514],{"class":325},[315,4897,4898,4901,4903,4905,4908,4910,4912],{"class":317,"line":576},[315,4899,4900],{"class":529},"        type",[315,4902,476],{"class":325},[315,4904,355],{"class":325},[315,4906,4907],{"class":358},"azure-active-directory-default",[315,4909,362],{"class":325},[315,4911,400],{"class":321},[315,4913,4914],{"class":428}," const\n",[315,4916,4917],{"class":317,"line":653},[315,4918,3464],{"class":325},[315,4920,4921,4924,4926],{"class":317,"line":670},[315,4922,4923],{"class":529},"      options",[315,4925,476],{"class":325},[315,4927,514],{"class":325},[315,4929,4930,4933,4935,4937],{"class":317,"line":682},[315,4931,4932],{"class":529},"        encrypt",[315,4934,476],{"class":325},[315,4936,1688],{"class":1687},[315,4938,482],{"class":325},[315,4940,4941,4944,4946],{"class":317,"line":701},[315,4942,4943],{"class":529},"        enableArithAbort",[315,4945,476],{"class":325},[315,4947,3478],{"class":1687},[315,4949,4950],{"class":317,"line":1341},[315,4951,3464],{"class":325},[315,4953,4954,4957,4959],{"class":317,"line":1353},[315,4955,4956],{"class":529},"      pool",[315,4958,476],{"class":325},[315,4960,514],{"class":325},[315,4962,4963,4966,4968,4970],{"class":317,"line":1376},[315,4964,4965],{"class":529},"        max",[315,4967,476],{"class":325},[315,4969,4570],{"class":1764},[315,4971,482],{"class":325},[315,4973,4974,4977,4979,4982],{"class":317,"line":1381},[315,4975,4976],{"class":529},"        min",[315,4978,476],{"class":325},[315,4980,4981],{"class":1764}," 0",[315,4983,482],{"class":325},[315,4985,4986,4989,4991],{"class":317,"line":1399},[315,4987,4988],{"class":529},"        idleTimeoutMillis",[315,4990,476],{"class":325},[315,4992,4993],{"class":1764}," 30000\n",[315,4995,4996],{"class":317,"line":1408},[315,4997,1303],{"class":325},[315,4999,5000],{"class":317,"line":1427},[315,5001,2975],{"class":325},[315,5003,5004],{"class":317,"line":1446},[315,5005,1219],{"class":529},[315,5007,5008,5011,5013,5015,5017,5019,5021,5023,5026,5028,5031,5033],{"class":317,"line":1451},[315,5009,5010],{"class":329},"    AzureSqlService",[315,5012,294],{"class":325},[315,5014,4399],{"class":329},[315,5016,1197],{"class":325},[315,5018,523],{"class":321},[315,5020,4771],{"class":329},[315,5022,294],{"class":325},[315,5024,5025],{"class":438},"connect",[315,5027,530],{"class":529},[315,5029,5030],{"class":329},"config",[315,5032,536],{"class":529},[315,5034,365],{"class":325},[315,5036,5037,5039,5041,5043,5045],{"class":317,"line":1460},[315,5038,1224],{"class":321},[315,5040,4756],{"class":329},[315,5042,294],{"class":325},[315,5044,4399],{"class":329},[315,5046,365],{"class":325},[315,5048,5049],{"class":317,"line":1465},[315,5050,1317],{"class":325},[315,5052,5053],{"class":317,"line":1928},[315,5054,1124],{"class":329},[315,5056,5057,5059,5061,5063,5066,5068,5070,5072],{"class":317,"line":1938},[315,5058,1178],{"class":428},[315,5060,4636],{"class":529},[315,5062,530],{"class":325},[315,5064,5065],{"class":472},"queryText",[315,5067,476],{"class":325},[315,5069,2003],{"class":479},[315,5071,536],{"class":325},[315,5073,514],{"class":325},[315,5075,5076,5078,5080,5082,5084,5086,5088,5090],{"class":317,"line":1947},[315,5077,1191],{"class":428},[315,5079,4349],{"class":329},[315,5081,1197],{"class":325},[315,5083,523],{"class":321},[315,5085,1202],{"class":325},[315,5087,4678],{"class":438},[315,5089,1184],{"class":529},[315,5091,365],{"class":325},[315,5093,5094,5096,5098,5100,5102,5104,5106,5108,5110,5112,5114,5116,5118,5120],{"class":317,"line":1952},[315,5095,1191],{"class":428},[315,5097,2475],{"class":329},[315,5099,1197],{"class":325},[315,5101,523],{"class":321},[315,5103,4349],{"class":329},[315,5105,294],{"class":325},[315,5107,533],{"class":438},[315,5109,1184],{"class":529},[315,5111,294],{"class":325},[315,5113,4695],{"class":438},[315,5115,530],{"class":529},[315,5117,5065],{"class":329},[315,5119,536],{"class":529},[315,5121,365],{"class":325},[315,5123,5124,5126,5128,5130,5133],{"class":317,"line":1957},[315,5125,1224],{"class":321},[315,5127,2475],{"class":329},[315,5129,294],{"class":325},[315,5131,5132],{"class":329},"recordset",[315,5134,365],{"class":325},[315,5136,5137],{"class":317,"line":1975},[315,5138,1317],{"class":325},[315,5140,5141],{"class":317,"line":2010},[315,5142,544],{"class":325},[299,5144,5146],{"id":5145},"application-insights-integration","Application Insights Integration",[724,5148,5150],{"id":5149},"enable-application-insights","Enable Application Insights",[304,5152,5155],{"className":3116,"code":5153,"filename":5154,"language":3119,"meta":310,"style":310},"{\n  \"IsEncrypted\": false,\n  \"Values\": {\n    \"FUNCTIONS_WORKER_RUNTIME\": \"node\",\n    \"AzureWebJobsStorage\": \"\",\n    \"APPINSIGHTS_INSTRUMENTATIONKEY\": \"your-instrumentation-key\",\n    \"APPLICATIONINSIGHTS_CONNECTION_STRING\": \"InstrumentationKey=your-key;...\"\n  }\n}\n","local.settings.json",[312,5156,5157,5161,5175,5188,5208,5224,5244,5262,5266],{"__ignoreMap":310},[315,5158,5159],{"class":317,"line":318},[315,5160,742],{"class":325},[315,5162,5163,5165,5168,5170,5172],{"class":317,"line":368},[315,5164,3130],{"class":325},[315,5166,5167],{"class":428},"IsEncrypted",[315,5169,3136],{"class":325},[315,5171,476],{"class":325},[315,5173,5174],{"class":325}," false,\n",[315,5176,5177,5179,5182,5184,5186],{"class":317,"line":391},[315,5178,3130],{"class":325},[315,5180,5181],{"class":428},"Values",[315,5183,3136],{"class":325},[315,5185,476],{"class":325},[315,5187,514],{"class":325},[315,5189,5190,5192,5195,5197,5199,5201,5204,5206],{"class":317,"line":419},[315,5191,3166],{"class":325},[315,5193,5194],{"class":479},"FUNCTIONS_WORKER_RUNTIME",[315,5196,3136],{"class":325},[315,5198,476],{"class":325},[315,5200,3141],{"class":325},[315,5202,5203],{"class":358},"node",[315,5205,3136],{"class":325},[315,5207,482],{"class":325},[315,5209,5210,5212,5215,5217,5219,5222],{"class":317,"line":425},[315,5211,3166],{"class":325},[315,5213,5214],{"class":479},"AzureWebJobsStorage",[315,5216,3136],{"class":325},[315,5218,476],{"class":325},[315,5220,5221],{"class":325}," \"\"",[315,5223,482],{"class":325},[315,5225,5226,5228,5231,5233,5235,5237,5240,5242],{"class":317,"line":446},[315,5227,3166],{"class":325},[315,5229,5230],{"class":479},"APPINSIGHTS_INSTRUMENTATIONKEY",[315,5232,3136],{"class":325},[315,5234,476],{"class":325},[315,5236,3141],{"class":325},[315,5238,5239],{"class":358},"your-instrumentation-key",[315,5241,3136],{"class":325},[315,5243,482],{"class":325},[315,5245,5246,5248,5251,5253,5255,5257,5260],{"class":317,"line":451},[315,5247,3166],{"class":325},[315,5249,5250],{"class":479},"APPLICATIONINSIGHTS_CONNECTION_STRING",[315,5252,3136],{"class":325},[315,5254,476],{"class":325},[315,5256,3141],{"class":325},[315,5258,5259],{"class":358},"InstrumentationKey=your-key;...",[315,5261,3238],{"class":325},[315,5263,5264],{"class":317,"line":469},[315,5265,1317],{"class":325},[315,5267,5268],{"class":317,"line":485},[315,5269,544],{"class":325},[724,5271,5273],{"id":5272},"custom-telemetry","Custom Telemetry",[304,5275,5277],{"className":306,"code":5276,"language":309,"meta":310,"style":310},"import { TelemetryClient } from 'applicationinsights';\n\nconst telemetry = new TelemetryClient(\n  process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n);\n\n@Controller('\u002Ftracked')\nexport class TrackedController {\n  \n  @Post('\u002Forder')\n  async createOrder(@Body() order: OrderDto) {\n    const startTime = Date.now();\n    \n    try {\n      \u002F\u002F Track custom event\n      telemetry.trackEvent({\n        name: 'OrderCreated',\n        properties: {\n          userId: order.userId,\n          items: order.items.length\n        }\n      });\n      \n      const result = await this.orderService.create(order);\n      \n      \u002F\u002F Track custom metric\n      telemetry.trackMetric({\n        name: 'OrderProcessingTime',\n        value: Date.now() - startTime\n      });\n      \n      return result;\n    } catch (error) {\n      \u002F\u002F Track exception\n      telemetry.trackException({\n        exception: error,\n        properties: {\n          userId: order.userId\n        }\n      });\n      \n      throw error;\n    }\n  }\n}\n",[312,5278,5279,5301,5305,5320,5334,5340,5344,5361,5372,5376,5393,5419,5440,5444,5451,5456,5470,5486,5495,5512,5531,5536,5544,5548,5577,5581,5586,5599,5614,5635,5643,5647,5655,5669,5674,5687,5698,5706,5719,5723,5731,5735,5743,5747,5751],{"__ignoreMap":310},[315,5280,5281,5283,5285,5288,5290,5292,5294,5297,5299],{"class":317,"line":318},[315,5282,322],{"class":321},[315,5284,326],{"class":325},[315,5286,5287],{"class":329}," TelemetryClient",[315,5289,349],{"class":325},[315,5291,352],{"class":321},[315,5293,355],{"class":325},[315,5295,5296],{"class":358},"applicationinsights",[315,5298,362],{"class":325},[315,5300,365],{"class":325},[315,5302,5303],{"class":317,"line":368},[315,5304,422],{"emptyLinePlaceholder":56},[315,5306,5307,5309,5312,5314,5316,5318],{"class":317,"line":391},[315,5308,429],{"class":428},[315,5310,5311],{"class":329}," telemetry ",[315,5313,435],{"class":325},[315,5315,1227],{"class":325},[315,5317,5287],{"class":438},[315,5319,466],{"class":329},[315,5321,5322,5325,5327,5329,5331],{"class":317,"line":419},[315,5323,5324],{"class":329},"  process",[315,5326,294],{"class":325},[315,5328,2835],{"class":329},[315,5330,294],{"class":325},[315,5332,5333],{"class":329},"APPLICATIONINSIGHTS_CONNECTION_STRING\n",[315,5335,5336,5338],{"class":317,"line":425},[315,5337,536],{"class":329},[315,5339,365],{"class":325},[315,5341,5342],{"class":317,"line":446},[315,5343,422],{"emptyLinePlaceholder":56},[315,5345,5346,5348,5350,5352,5354,5357,5359],{"class":317,"line":451},[315,5347,1092],{"class":325},[315,5349,1095],{"class":438},[315,5351,530],{"class":329},[315,5353,362],{"class":325},[315,5355,5356],{"class":358},"\u002Ftracked",[315,5358,362],{"class":325},[315,5360,1107],{"class":329},[315,5362,5363,5365,5367,5370],{"class":317,"line":469},[315,5364,454],{"class":321},[315,5366,1114],{"class":428},[315,5368,5369],{"class":479}," TrackedController",[315,5371,514],{"class":325},[315,5373,5374],{"class":317,"line":485},[315,5375,1124],{"class":329},[315,5377,5378,5380,5382,5384,5386,5389,5391],{"class":317,"line":496},[315,5379,1129],{"class":325},[315,5381,1571],{"class":438},[315,5383,530],{"class":329},[315,5385,362],{"class":325},[315,5387,5388],{"class":358},"\u002Forder",[315,5390,362],{"class":325},[315,5392,1107],{"class":329},[315,5394,5395,5397,5400,5402,5404,5407,5410,5412,5415,5417],{"class":317,"line":517},[315,5396,1178],{"class":428},[315,5398,5399],{"class":529}," createOrder",[315,5401,1592],{"class":325},[315,5403,1595],{"class":438},[315,5405,5406],{"class":329},"() ",[315,5408,5409],{"class":472},"order",[315,5411,476],{"class":325},[315,5413,5414],{"class":479}," OrderDto",[315,5416,536],{"class":325},[315,5418,514],{"class":325},[315,5420,5421,5423,5426,5428,5431,5433,5436,5438],{"class":317,"line":541},[315,5422,1191],{"class":428},[315,5424,5425],{"class":329}," startTime",[315,5427,1197],{"class":325},[315,5429,5430],{"class":329}," Date",[315,5432,294],{"class":325},[315,5434,5435],{"class":438},"now",[315,5437,1184],{"class":529},[315,5439,365],{"class":325},[315,5441,5442],{"class":317,"line":547},[315,5443,1219],{"class":529},[315,5445,5446,5449],{"class":317,"line":552},[315,5447,5448],{"class":321},"    try",[315,5450,514],{"class":325},[315,5452,5453],{"class":317,"line":576},[315,5454,5455],{"class":697},"      \u002F\u002F Track custom event\n",[315,5457,5458,5461,5463,5466,5468],{"class":317,"line":653},[315,5459,5460],{"class":329},"      telemetry",[315,5462,294],{"class":325},[315,5464,5465],{"class":438},"trackEvent",[315,5467,530],{"class":529},[315,5469,742],{"class":325},[315,5471,5472,5475,5477,5479,5482,5484],{"class":317,"line":670},[315,5473,5474],{"class":529},"        name",[315,5476,476],{"class":325},[315,5478,355],{"class":325},[315,5480,5481],{"class":358},"OrderCreated",[315,5483,362],{"class":325},[315,5485,482],{"class":325},[315,5487,5488,5491,5493],{"class":317,"line":682},[315,5489,5490],{"class":529},"        properties",[315,5492,476],{"class":325},[315,5494,514],{"class":325},[315,5496,5497,5500,5502,5505,5507,5510],{"class":317,"line":701},[315,5498,5499],{"class":529},"          userId",[315,5501,476],{"class":325},[315,5503,5504],{"class":329}," order",[315,5506,294],{"class":325},[315,5508,5509],{"class":329},"userId",[315,5511,482],{"class":325},[315,5513,5514,5517,5519,5521,5523,5526,5528],{"class":317,"line":1341},[315,5515,5516],{"class":529},"          items",[315,5518,476],{"class":325},[315,5520,5504],{"class":329},[315,5522,294],{"class":325},[315,5524,5525],{"class":329},"items",[315,5527,294],{"class":325},[315,5529,5530],{"class":329},"length\n",[315,5532,5533],{"class":317,"line":1353},[315,5534,5535],{"class":325},"        }\n",[315,5537,5538,5540,5542],{"class":317,"line":1376},[315,5539,1770],{"class":325},[315,5541,536],{"class":529},[315,5543,365],{"class":325},[315,5545,5546],{"class":317,"line":1381},[315,5547,2927],{"class":529},[315,5549,5550,5553,5555,5557,5559,5561,5564,5566,5569,5571,5573,5575],{"class":317,"line":1399},[315,5551,5552],{"class":428},"      const",[315,5554,2475],{"class":329},[315,5556,1197],{"class":325},[315,5558,523],{"class":321},[315,5560,1202],{"class":325},[315,5562,5563],{"class":329},"orderService",[315,5565,294],{"class":325},[315,5567,5568],{"class":438},"create",[315,5570,530],{"class":529},[315,5572,5409],{"class":329},[315,5574,536],{"class":529},[315,5576,365],{"class":325},[315,5578,5579],{"class":317,"line":1408},[315,5580,2927],{"class":529},[315,5582,5583],{"class":317,"line":1427},[315,5584,5585],{"class":697},"      \u002F\u002F Track custom metric\n",[315,5587,5588,5590,5592,5595,5597],{"class":317,"line":1446},[315,5589,5460],{"class":329},[315,5591,294],{"class":325},[315,5593,5594],{"class":438},"trackMetric",[315,5596,530],{"class":529},[315,5598,742],{"class":325},[315,5600,5601,5603,5605,5607,5610,5612],{"class":317,"line":1451},[315,5602,5474],{"class":529},[315,5604,476],{"class":325},[315,5606,355],{"class":325},[315,5608,5609],{"class":358},"OrderProcessingTime",[315,5611,362],{"class":325},[315,5613,482],{"class":325},[315,5615,5616,5619,5621,5623,5625,5627,5629,5632],{"class":317,"line":1460},[315,5617,5618],{"class":529},"        value",[315,5620,476],{"class":325},[315,5622,5430],{"class":329},[315,5624,294],{"class":325},[315,5626,5435],{"class":438},[315,5628,5406],{"class":529},[315,5630,5631],{"class":325},"-",[315,5633,5634],{"class":329}," startTime\n",[315,5636,5637,5639,5641],{"class":317,"line":1465},[315,5638,1770],{"class":325},[315,5640,536],{"class":529},[315,5642,365],{"class":325},[315,5644,5645],{"class":317,"line":1928},[315,5646,2927],{"class":529},[315,5648,5649,5651,5653],{"class":317,"line":1938},[315,5650,4408],{"class":321},[315,5652,2475],{"class":329},[315,5654,365],{"class":325},[315,5656,5657,5659,5661,5663,5665,5667],{"class":317,"line":1947},[315,5658,1308],{"class":325},[315,5660,2527],{"class":321},[315,5662,2016],{"class":529},[315,5664,2532],{"class":329},[315,5666,1613],{"class":529},[315,5668,742],{"class":325},[315,5670,5671],{"class":317,"line":1952},[315,5672,5673],{"class":697},"      \u002F\u002F Track exception\n",[315,5675,5676,5678,5680,5683,5685],{"class":317,"line":1957},[315,5677,5460],{"class":329},[315,5679,294],{"class":325},[315,5681,5682],{"class":438},"trackException",[315,5684,530],{"class":529},[315,5686,742],{"class":325},[315,5688,5689,5692,5694,5696],{"class":317,"line":1975},[315,5690,5691],{"class":529},"        exception",[315,5693,476],{"class":325},[315,5695,2558],{"class":329},[315,5697,482],{"class":325},[315,5699,5700,5702,5704],{"class":317,"line":2010},[315,5701,5490],{"class":529},[315,5703,476],{"class":325},[315,5705,514],{"class":325},[315,5707,5708,5710,5712,5714,5716],{"class":317,"line":2028},[315,5709,5499],{"class":529},[315,5711,476],{"class":325},[315,5713,5504],{"class":329},[315,5715,294],{"class":325},[315,5717,5718],{"class":329},"userId\n",[315,5720,5721],{"class":317,"line":2052},[315,5722,5535],{"class":325},[315,5724,5725,5727,5729],{"class":317,"line":2058},[315,5726,1770],{"class":325},[315,5728,536],{"class":529},[315,5730,365],{"class":325},[315,5732,5733],{"class":317,"line":2063},[315,5734,2927],{"class":529},[315,5736,5737,5739,5741],{"class":317,"line":2092},[315,5738,2031],{"class":321},[315,5740,2558],{"class":329},[315,5742,365],{"class":325},[315,5744,5745],{"class":317,"line":2104},[315,5746,2055],{"class":325},[315,5748,5749],{"class":317,"line":2109},[315,5750,1317],{"class":325},[315,5752,5754],{"class":317,"line":5753},45,[315,5755,544],{"class":325},[299,5757,5759],{"id":5758},"advanced-response-handling","Advanced Response Handling",[724,5761,5763],{"id":5762},"custom-headers","Custom Headers",[304,5765,5767],{"className":306,"code":5766,"language":309,"meta":310,"style":310},"@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      .header('Access-Control-Allow-Origin', '*');\n  }\n  \n  @Get('\u002Fdownload')\n  downloadFile() {\n    const fileContent = Buffer.from('file content');\n    \n    return new Response(fileContent, {\n      headers: {\n        'Content-Type': 'application\u002Foctet-stream',\n        'Content-Disposition': 'attachment; filename=\"file.txt\"',\n        'Content-Length': fileContent.length.toString()\n      }\n    });\n  }\n}\n",[312,5768,5769,5786,5797,5801,5818,5827,5856,5883,5909,5937,5941,5945,5962,5971,6000,6004,6021,6029,6048,6067,6093,6097,6105,6109],{"__ignoreMap":310},[315,5770,5771,5773,5775,5777,5779,5782,5784],{"class":317,"line":318},[315,5772,1092],{"class":325},[315,5774,1095],{"class":438},[315,5776,530],{"class":329},[315,5778,362],{"class":325},[315,5780,5781],{"class":358},"\u002Fapi",[315,5783,362],{"class":325},[315,5785,1107],{"class":329},[315,5787,5788,5790,5792,5795],{"class":317,"line":368},[315,5789,454],{"class":321},[315,5791,1114],{"class":428},[315,5793,5794],{"class":479}," ApiController",[315,5796,514],{"class":325},[315,5798,5799],{"class":317,"line":391},[315,5800,1124],{"class":329},[315,5802,5803,5805,5807,5809,5811,5814,5816],{"class":317,"line":419},[315,5804,1129],{"class":325},[315,5806,1162],{"class":438},[315,5808,530],{"class":329},[315,5810,362],{"class":325},[315,5812,5813],{"class":358},"\u002Fcached-data",[315,5815,362],{"class":325},[315,5817,1107],{"class":329},[315,5819,5820,5823,5825],{"class":317,"line":425},[315,5821,5822],{"class":529},"  getCachedData",[315,5824,1184],{"class":325},[315,5826,514],{"class":325},[315,5828,5829,5831,5833,5835,5837,5839,5841,5843,5845,5847,5850,5852,5854],{"class":317,"line":446},[315,5830,1224],{"class":321},[315,5832,1670],{"class":329},[315,5834,294],{"class":325},[315,5836,1675],{"class":438},[315,5838,530],{"class":529},[315,5840,1600],{"class":325},[315,5842,1194],{"class":529},[315,5844,476],{"class":325},[315,5846,355],{"class":325},[315,5848,5849],{"class":358},"cached",[315,5851,362],{"class":325},[315,5853,349],{"class":325},[315,5855,1107],{"class":529},[315,5857,5858,5860,5863,5865,5867,5870,5872,5874,5876,5879,5881],{"class":317,"line":451},[315,5859,1697],{"class":325},[315,5861,5862],{"class":438},"header",[315,5864,530],{"class":529},[315,5866,362],{"class":325},[315,5868,5869],{"class":358},"Cache-Control",[315,5871,362],{"class":325},[315,5873,333],{"class":325},[315,5875,355],{"class":325},[315,5877,5878],{"class":358},"public, max-age=3600",[315,5880,362],{"class":325},[315,5882,1107],{"class":529},[315,5884,5885,5887,5889,5891,5893,5896,5898,5900,5902,5905,5907],{"class":317,"line":469},[315,5886,1697],{"class":325},[315,5888,5862],{"class":438},[315,5890,530],{"class":529},[315,5892,362],{"class":325},[315,5894,5895],{"class":358},"X-Custom-Header",[315,5897,362],{"class":325},[315,5899,333],{"class":325},[315,5901,355],{"class":325},[315,5903,5904],{"class":358},"custom-value",[315,5906,362],{"class":325},[315,5908,1107],{"class":529},[315,5910,5911,5913,5915,5917,5919,5922,5924,5926,5928,5931,5933,5935],{"class":317,"line":485},[315,5912,1697],{"class":325},[315,5914,5862],{"class":438},[315,5916,530],{"class":529},[315,5918,362],{"class":325},[315,5920,5921],{"class":358},"Access-Control-Allow-Origin",[315,5923,362],{"class":325},[315,5925,333],{"class":325},[315,5927,355],{"class":325},[315,5929,5930],{"class":358},"*",[315,5932,362],{"class":325},[315,5934,536],{"class":529},[315,5936,365],{"class":325},[315,5938,5939],{"class":317,"line":496},[315,5940,1317],{"class":325},[315,5942,5943],{"class":317,"line":517},[315,5944,1124],{"class":329},[315,5946,5947,5949,5951,5953,5955,5958,5960],{"class":317,"line":541},[315,5948,1129],{"class":325},[315,5950,1162],{"class":438},[315,5952,530],{"class":329},[315,5954,362],{"class":325},[315,5956,5957],{"class":358},"\u002Fdownload",[315,5959,362],{"class":325},[315,5961,1107],{"class":329},[315,5963,5964,5967,5969],{"class":317,"line":547},[315,5965,5966],{"class":529},"  downloadFile",[315,5968,1184],{"class":325},[315,5970,514],{"class":325},[315,5972,5973,5975,5978,5980,5983,5985,5987,5989,5991,5994,5996,5998],{"class":317,"line":552},[315,5974,1191],{"class":428},[315,5976,5977],{"class":329}," fileContent",[315,5979,1197],{"class":325},[315,5981,5982],{"class":329}," Buffer",[315,5984,294],{"class":325},[315,5986,4734],{"class":438},[315,5988,530],{"class":529},[315,5990,362],{"class":325},[315,5992,5993],{"class":358},"file content",[315,5995,362],{"class":325},[315,5997,536],{"class":529},[315,5999,365],{"class":325},[315,6001,6002],{"class":317,"line":576},[315,6003,1219],{"class":529},[315,6005,6006,6008,6010,6012,6014,6017,6019],{"class":317,"line":653},[315,6007,1224],{"class":321},[315,6009,1227],{"class":325},[315,6011,1230],{"class":438},[315,6013,530],{"class":529},[315,6015,6016],{"class":329},"fileContent",[315,6018,333],{"class":325},[315,6020,514],{"class":325},[315,6022,6023,6025,6027],{"class":317,"line":670},[315,6024,1256],{"class":529},[315,6026,476],{"class":325},[315,6028,514],{"class":325},[315,6030,6031,6033,6035,6037,6039,6041,6044,6046],{"class":317,"line":682},[315,6032,1265],{"class":325},[315,6034,1268],{"class":529},[315,6036,362],{"class":325},[315,6038,476],{"class":325},[315,6040,355],{"class":325},[315,6042,6043],{"class":358},"application\u002Foctet-stream",[315,6045,362],{"class":325},[315,6047,482],{"class":325},[315,6049,6050,6052,6054,6056,6058,6060,6063,6065],{"class":317,"line":701},[315,6051,1265],{"class":325},[315,6053,1287],{"class":529},[315,6055,362],{"class":325},[315,6057,476],{"class":325},[315,6059,355],{"class":325},[315,6061,6062],{"class":358},"attachment; filename=\"file.txt\"",[315,6064,362],{"class":325},[315,6066,482],{"class":325},[315,6068,6069,6071,6074,6076,6078,6080,6082,6085,6087,6090],{"class":317,"line":1341},[315,6070,1265],{"class":325},[315,6072,6073],{"class":529},"Content-Length",[315,6075,362],{"class":325},[315,6077,476],{"class":325},[315,6079,5977],{"class":329},[315,6081,294],{"class":325},[315,6083,6084],{"class":329},"length",[315,6086,294],{"class":325},[315,6088,6089],{"class":438},"toString",[315,6091,6092],{"class":529},"()\n",[315,6094,6095],{"class":317,"line":1353},[315,6096,1303],{"class":325},[315,6098,6099,6101,6103],{"class":317,"line":1376},[315,6100,1308],{"class":325},[315,6102,536],{"class":529},[315,6104,365],{"class":325},[315,6106,6107],{"class":317,"line":1381},[315,6108,1317],{"class":325},[315,6110,6111],{"class":317,"line":1399},[315,6112,544],{"class":325},[724,6114,6116],{"id":6115},"error-handling","Error Handling",[304,6118,6120],{"className":306,"code":6119,"language":309,"meta":310,"style":310},"import { NotFoundException, BadRequestException, InternalServerErrorException } from '@vercube\u002Fcore';\nimport { InvocationContext } from '@azure\u002Ffunctions';\n\nexport async function httpTrigger(\n  request: HttpRequest,\n  context: InvocationContext\n): Promise\u003CHttpResponseInit> {\n  try {\n    return await handler(request);\n  } catch (error) {\n    \u002F\u002F Log to Azure\n    context.error('Request failed:', error);\n    \n    \u002F\u002F Return appropriate error response\n    if (error instanceof NotFoundException) {\n      return {\n        status: 404,\n        jsonBody: {\n          statusCode: 404,\n          message: error.message\n        }\n      };\n    }\n    \n    return {\n      status: 500,\n      jsonBody: {\n        statusCode: 500,\n        message: 'Internal server error'\n      }\n    };\n  }\n}\n",[312,6121,6122,6153,6173,6177,6189,6199,6207,6221,6227,6243,6257,6262,6286,6290,6295,6312,6318,6330,6339,6350,6364,6368,6373,6377,6381,6387,6399,6408,6419,6433,6437,6441,6445],{"__ignoreMap":310},[315,6123,6124,6126,6128,6131,6133,6136,6138,6141,6143,6145,6147,6149,6151],{"class":317,"line":318},[315,6125,322],{"class":321},[315,6127,326],{"class":325},[315,6129,6130],{"class":329}," NotFoundException",[315,6132,333],{"class":325},[315,6134,6135],{"class":329}," BadRequestException",[315,6137,333],{"class":325},[315,6139,6140],{"class":329}," InternalServerErrorException",[315,6142,349],{"class":325},[315,6144,352],{"class":321},[315,6146,355],{"class":325},[315,6148,2743],{"class":358},[315,6150,362],{"class":325},[315,6152,365],{"class":325},[315,6154,6155,6157,6159,6161,6163,6165,6167,6169,6171],{"class":317,"line":368},[315,6156,322],{"class":321},[315,6158,326],{"class":325},[315,6160,346],{"class":329},[315,6162,349],{"class":325},[315,6164,352],{"class":321},[315,6166,355],{"class":325},[315,6168,359],{"class":358},[315,6170,362],{"class":325},[315,6172,365],{"class":325},[315,6174,6175],{"class":317,"line":391},[315,6176,422],{"emptyLinePlaceholder":56},[315,6178,6179,6181,6183,6185,6187],{"class":317,"line":419},[315,6180,454],{"class":321},[315,6182,457],{"class":428},[315,6184,460],{"class":428},[315,6186,463],{"class":438},[315,6188,466],{"class":325},[315,6190,6191,6193,6195,6197],{"class":317,"line":425},[315,6192,473],{"class":472},[315,6194,476],{"class":325},[315,6196,336],{"class":479},[315,6198,482],{"class":325},[315,6200,6201,6203,6205],{"class":317,"line":446},[315,6202,488],{"class":472},[315,6204,476],{"class":325},[315,6206,493],{"class":479},[315,6208,6209,6211,6213,6215,6217,6219],{"class":317,"line":451},[315,6210,499],{"class":325},[315,6212,502],{"class":479},[315,6214,505],{"class":325},[315,6216,508],{"class":479},[315,6218,511],{"class":325},[315,6220,514],{"class":325},[315,6222,6223,6225],{"class":317,"line":469},[315,6224,2466],{"class":321},[315,6226,514],{"class":325},[315,6228,6229,6231,6233,6235,6237,6239,6241],{"class":317,"line":485},[315,6230,1224],{"class":321},[315,6232,523],{"class":321},[315,6234,526],{"class":438},[315,6236,530],{"class":529},[315,6238,533],{"class":329},[315,6240,536],{"class":529},[315,6242,365],{"class":325},[315,6244,6245,6247,6249,6251,6253,6255],{"class":317,"line":496},[315,6246,2524],{"class":325},[315,6248,2527],{"class":321},[315,6250,2016],{"class":529},[315,6252,2532],{"class":329},[315,6254,1613],{"class":529},[315,6256,742],{"class":325},[315,6258,6259],{"class":317,"line":517},[315,6260,6261],{"class":697},"    \u002F\u002F Log to Azure\n",[315,6263,6264,6266,6268,6270,6272,6274,6276,6278,6280,6282,6284],{"class":317,"line":541},[315,6265,2494],{"class":329},[315,6267,294],{"class":325},[315,6269,2532],{"class":438},[315,6271,530],{"class":529},[315,6273,362],{"class":325},[315,6275,2551],{"class":358},[315,6277,362],{"class":325},[315,6279,333],{"class":325},[315,6281,2558],{"class":329},[315,6283,536],{"class":529},[315,6285,365],{"class":325},[315,6287,6288],{"class":317,"line":547},[315,6289,1219],{"class":529},[315,6291,6292],{"class":317,"line":552},[315,6293,6294],{"class":697},"    \u002F\u002F Return appropriate error response\n",[315,6296,6297,6299,6301,6303,6306,6308,6310],{"class":317,"line":576},[315,6298,2013],{"class":321},[315,6300,2016],{"class":529},[315,6302,2532],{"class":329},[315,6304,6305],{"class":325}," instanceof",[315,6307,6130],{"class":479},[315,6309,1613],{"class":529},[315,6311,742],{"class":325},[315,6313,6314,6316],{"class":317,"line":653},[315,6315,4408],{"class":321},[315,6317,514],{"class":325},[315,6319,6320,6323,6325,6328],{"class":317,"line":670},[315,6321,6322],{"class":529},"        status",[315,6324,476],{"class":325},[315,6326,6327],{"class":1764}," 404",[315,6329,482],{"class":325},[315,6331,6332,6335,6337],{"class":317,"line":682},[315,6333,6334],{"class":529},"        jsonBody",[315,6336,476],{"class":325},[315,6338,514],{"class":325},[315,6340,6341,6344,6346,6348],{"class":317,"line":701},[315,6342,6343],{"class":529},"          statusCode",[315,6345,476],{"class":325},[315,6347,6327],{"class":1764},[315,6349,482],{"class":325},[315,6351,6352,6355,6357,6359,6361],{"class":317,"line":1341},[315,6353,6354],{"class":529},"          message",[315,6356,476],{"class":325},[315,6358,2558],{"class":329},[315,6360,294],{"class":325},[315,6362,6363],{"class":329},"message\n",[315,6365,6366],{"class":317,"line":1353},[315,6367,5535],{"class":325},[315,6369,6370],{"class":317,"line":1376},[315,6371,6372],{"class":325},"      };\n",[315,6374,6375],{"class":317,"line":1381},[315,6376,2055],{"class":325},[315,6378,6379],{"class":317,"line":1399},[315,6380,1219],{"class":529},[315,6382,6383,6385],{"class":317,"line":1408},[315,6384,1224],{"class":321},[315,6386,514],{"class":325},[315,6388,6389,6392,6394,6397],{"class":317,"line":1427},[315,6390,6391],{"class":529},"      status",[315,6393,476],{"class":325},[315,6395,6396],{"class":1764}," 500",[315,6398,482],{"class":325},[315,6400,6401,6404,6406],{"class":317,"line":1446},[315,6402,6403],{"class":529},"      jsonBody",[315,6405,476],{"class":325},[315,6407,514],{"class":325},[315,6409,6410,6413,6415,6417],{"class":317,"line":1451},[315,6411,6412],{"class":529},"        statusCode",[315,6414,476],{"class":325},[315,6416,6396],{"class":1764},[315,6418,482],{"class":325},[315,6420,6421,6424,6426,6428,6431],{"class":317,"line":1460},[315,6422,6423],{"class":529},"        message",[315,6425,476],{"class":325},[315,6427,355],{"class":325},[315,6429,6430],{"class":358},"Internal server error",[315,6432,843],{"class":325},[315,6434,6435],{"class":317,"line":1465},[315,6436,1303],{"class":325},[315,6438,6439],{"class":317,"line":1928},[315,6440,2975],{"class":325},[315,6442,6443],{"class":317,"line":1938},[315,6444,1317],{"class":325},[315,6446,6447],{"class":317,"line":1947},[315,6448,544],{"class":325},[299,6450,170],{"id":6451},"deployment",[724,6453,6455],{"id":6454},"deploy-using-azure-cli","Deploy Using Azure CLI",[304,6457,6461],{"className":6458,"code":6459,"language":6460,"meta":310,"style":310},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Login to Azure\naz login\n\n# Create resource group\naz group create --name MyResourceGroup --location eastus\n\n# Create storage account\naz storage account create \\\n  --name mystorageaccount \\\n  --resource-group MyResourceGroup \\\n  --location eastus \\\n  --sku Standard_LRS\n\n# Create function app\naz functionapp create \\\n  --name MyFunctionApp \\\n  --resource-group MyResourceGroup \\\n  --storage-account mystorageaccount \\\n  --consumption-plan-location eastus \\\n  --runtime node \\\n  --runtime-version 18 \\\n  --functions-version 4\n\n# Deploy\nfunc azure functionapp publish MyFunctionApp\n","bash",[312,6462,6463,6468,6476,6480,6485,6507,6511,6516,6531,6541,6550,6560,6568,6572,6577,6588,6597,6605,6614,6623,6633,6643,6651,6655,6660],{"__ignoreMap":310},[315,6464,6465],{"class":317,"line":318},[315,6466,6467],{"class":697},"# Login to Azure\n",[315,6469,6470,6473],{"class":317,"line":368},[315,6471,6472],{"class":479},"az",[315,6474,6475],{"class":358}," login\n",[315,6477,6478],{"class":317,"line":391},[315,6479,422],{"emptyLinePlaceholder":56},[315,6481,6482],{"class":317,"line":419},[315,6483,6484],{"class":697},"# Create resource group\n",[315,6486,6487,6489,6492,6495,6498,6501,6504],{"class":317,"line":425},[315,6488,6472],{"class":479},[315,6490,6491],{"class":358}," group",[315,6493,6494],{"class":358}," create",[315,6496,6497],{"class":358}," --name",[315,6499,6500],{"class":358}," MyResourceGroup",[315,6502,6503],{"class":358}," --location",[315,6505,6506],{"class":358}," eastus\n",[315,6508,6509],{"class":317,"line":446},[315,6510,422],{"emptyLinePlaceholder":56},[315,6512,6513],{"class":317,"line":451},[315,6514,6515],{"class":697},"# Create storage account\n",[315,6517,6518,6520,6523,6526,6528],{"class":317,"line":469},[315,6519,6472],{"class":479},[315,6521,6522],{"class":358}," storage",[315,6524,6525],{"class":358}," account",[315,6527,6494],{"class":358},[315,6529,6530],{"class":329}," \\\n",[315,6532,6533,6536,6539],{"class":317,"line":485},[315,6534,6535],{"class":358},"  --name",[315,6537,6538],{"class":358}," mystorageaccount",[315,6540,6530],{"class":329},[315,6542,6543,6546,6548],{"class":317,"line":496},[315,6544,6545],{"class":358},"  --resource-group",[315,6547,6500],{"class":358},[315,6549,6530],{"class":329},[315,6551,6552,6555,6558],{"class":317,"line":517},[315,6553,6554],{"class":358},"  --location",[315,6556,6557],{"class":358}," eastus",[315,6559,6530],{"class":329},[315,6561,6562,6565],{"class":317,"line":541},[315,6563,6564],{"class":358},"  --sku",[315,6566,6567],{"class":358}," Standard_LRS\n",[315,6569,6570],{"class":317,"line":547},[315,6571,422],{"emptyLinePlaceholder":56},[315,6573,6574],{"class":317,"line":552},[315,6575,6576],{"class":697},"# Create function app\n",[315,6578,6579,6581,6584,6586],{"class":317,"line":576},[315,6580,6472],{"class":479},[315,6582,6583],{"class":358}," functionapp",[315,6585,6494],{"class":358},[315,6587,6530],{"class":329},[315,6589,6590,6592,6595],{"class":317,"line":653},[315,6591,6535],{"class":358},[315,6593,6594],{"class":358}," MyFunctionApp",[315,6596,6530],{"class":329},[315,6598,6599,6601,6603],{"class":317,"line":670},[315,6600,6545],{"class":358},[315,6602,6500],{"class":358},[315,6604,6530],{"class":329},[315,6606,6607,6610,6612],{"class":317,"line":682},[315,6608,6609],{"class":358},"  --storage-account",[315,6611,6538],{"class":358},[315,6613,6530],{"class":329},[315,6615,6616,6619,6621],{"class":317,"line":701},[315,6617,6618],{"class":358},"  --consumption-plan-location",[315,6620,6557],{"class":358},[315,6622,6530],{"class":329},[315,6624,6625,6628,6631],{"class":317,"line":1341},[315,6626,6627],{"class":358},"  --runtime",[315,6629,6630],{"class":358}," node",[315,6632,6530],{"class":329},[315,6634,6635,6638,6641],{"class":317,"line":1353},[315,6636,6637],{"class":358},"  --runtime-version",[315,6639,6640],{"class":1764}," 18",[315,6642,6530],{"class":329},[315,6644,6645,6648],{"class":317,"line":1376},[315,6646,6647],{"class":358},"  --functions-version",[315,6649,6650],{"class":1764}," 4\n",[315,6652,6653],{"class":317,"line":1381},[315,6654,422],{"emptyLinePlaceholder":56},[315,6656,6657],{"class":317,"line":1399},[315,6658,6659],{"class":697},"# Deploy\n",[315,6661,6662,6665,6668,6670,6673],{"class":317,"line":1408},[315,6663,6664],{"class":479},"func",[315,6666,6667],{"class":358}," azure",[315,6669,6583],{"class":358},[315,6671,6672],{"class":358}," publish",[315,6674,6675],{"class":358}," MyFunctionApp\n",[724,6677,6679],{"id":6678},"deploy-using-azure-functions-core-tools","Deploy Using Azure Functions Core Tools",[304,6681,6683],{"className":6458,"code":6682,"language":6460,"meta":310,"style":310},"# Install Azure Functions Core Tools\nnpm install -g azure-functions-core-tools@4\n\n# Initialize function app\nfunc init --worker-runtime node --language typescript\n\n# Start local development\nfunc start\n\n# Deploy to Azure\nfunc azure functionapp publish \u003CAPP_NAME>\n",[312,6684,6685,6690,6704,6708,6713,6731,6735,6740,6747,6751,6756],{"__ignoreMap":310},[315,6686,6687],{"class":317,"line":318},[315,6688,6689],{"class":697},"# Install Azure Functions Core Tools\n",[315,6691,6692,6695,6698,6701],{"class":317,"line":368},[315,6693,6694],{"class":479},"npm",[315,6696,6697],{"class":358}," install",[315,6699,6700],{"class":358}," -g",[315,6702,6703],{"class":358}," azure-functions-core-tools@4\n",[315,6705,6706],{"class":317,"line":391},[315,6707,422],{"emptyLinePlaceholder":56},[315,6709,6710],{"class":317,"line":419},[315,6711,6712],{"class":697},"# Initialize function app\n",[315,6714,6715,6717,6720,6723,6725,6728],{"class":317,"line":425},[315,6716,6664],{"class":479},[315,6718,6719],{"class":358}," init",[315,6721,6722],{"class":358}," --worker-runtime",[315,6724,6630],{"class":358},[315,6726,6727],{"class":358}," --language",[315,6729,6730],{"class":358}," typescript\n",[315,6732,6733],{"class":317,"line":446},[315,6734,422],{"emptyLinePlaceholder":56},[315,6736,6737],{"class":317,"line":451},[315,6738,6739],{"class":697},"# Start local development\n",[315,6741,6742,6744],{"class":317,"line":469},[315,6743,6664],{"class":479},[315,6745,6746],{"class":358}," start\n",[315,6748,6749],{"class":317,"line":485},[315,6750,422],{"emptyLinePlaceholder":56},[315,6752,6753],{"class":317,"line":496},[315,6754,6755],{"class":697},"# Deploy to Azure\n",[315,6757,6758,6760,6762,6764,6766,6769,6772,6775],{"class":317,"line":517},[315,6759,6664],{"class":479},[315,6761,6667],{"class":358},[315,6763,6583],{"class":358},[315,6765,6672],{"class":358},[315,6767,6768],{"class":325}," \u003C",[315,6770,6771],{"class":358},"APP_NAM",[315,6773,6774],{"class":329},"E",[315,6776,6777],{"class":325},">\n",[724,6779,6781],{"id":6780},"deploy-with-github-actions","Deploy with GitHub Actions",[304,6783,6788],{"className":6784,"code":6785,"filename":6786,"language":6787,"meta":310,"style":310},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: Deploy to Azure Functions\n\non:\n  push:\n    branches: [main]\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    \n    steps:\n      - uses: actions\u002Fcheckout@v2\n      \n      - name: Setup Node.js\n        uses: actions\u002Fsetup-node@v2\n        with:\n          node-version: '18'\n      \n      - name: Install dependencies\n        run: npm ci\n      \n      - name: Build\n        run: npm run build\n      \n      - name: Deploy to Azure Functions\n        uses: Azure\u002Ffunctions-action@v1\n        with:\n          app-name: ${{ secrets.AZURE_FUNCTIONAPP_NAME }}\n          package: .\n          publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}\n",".github\u002Fworkflows\u002Fdeploy.yml","yaml",[312,6789,6790,6800,6804,6812,6819,6834,6838,6845,6852,6862,6866,6873,6886,6890,6902,6912,6919,6933,6937,6948,6958,6962,6973,6982,6986,6996,7005,7011,7021,7031],{"__ignoreMap":310},[315,6791,6792,6795,6797],{"class":317,"line":318},[315,6793,6794],{"class":529},"name",[315,6796,476],{"class":325},[315,6798,6799],{"class":358}," Deploy to Azure Functions\n",[315,6801,6802],{"class":317,"line":368},[315,6803,422],{"emptyLinePlaceholder":56},[315,6805,6806,6809],{"class":317,"line":391},[315,6807,6808],{"class":1687},"on",[315,6810,6811],{"class":325},":\n",[315,6813,6814,6817],{"class":317,"line":419},[315,6815,6816],{"class":529},"  push",[315,6818,6811],{"class":325},[315,6820,6821,6824,6826,6828,6831],{"class":317,"line":425},[315,6822,6823],{"class":529},"    branches",[315,6825,476],{"class":325},[315,6827,584],{"class":325},[315,6829,6830],{"class":358},"main",[315,6832,6833],{"class":325},"]\n",[315,6835,6836],{"class":317,"line":446},[315,6837,422],{"emptyLinePlaceholder":56},[315,6839,6840,6843],{"class":317,"line":451},[315,6841,6842],{"class":529},"jobs",[315,6844,6811],{"class":325},[315,6846,6847,6850],{"class":317,"line":469},[315,6848,6849],{"class":529},"  deploy",[315,6851,6811],{"class":325},[315,6853,6854,6857,6859],{"class":317,"line":485},[315,6855,6856],{"class":529},"    runs-on",[315,6858,476],{"class":325},[315,6860,6861],{"class":358}," ubuntu-latest\n",[315,6863,6864],{"class":317,"line":496},[315,6865,1219],{"class":329},[315,6867,6868,6871],{"class":317,"line":517},[315,6869,6870],{"class":529},"    steps",[315,6872,6811],{"class":325},[315,6874,6875,6878,6881,6883],{"class":317,"line":541},[315,6876,6877],{"class":325},"      -",[315,6879,6880],{"class":529}," uses",[315,6882,476],{"class":325},[315,6884,6885],{"class":358}," actions\u002Fcheckout@v2\n",[315,6887,6888],{"class":317,"line":547},[315,6889,2927],{"class":329},[315,6891,6892,6894,6897,6899],{"class":317,"line":552},[315,6893,6877],{"class":325},[315,6895,6896],{"class":529}," name",[315,6898,476],{"class":325},[315,6900,6901],{"class":358}," Setup Node.js\n",[315,6903,6904,6907,6909],{"class":317,"line":576},[315,6905,6906],{"class":529},"        uses",[315,6908,476],{"class":325},[315,6910,6911],{"class":358}," actions\u002Fsetup-node@v2\n",[315,6913,6914,6917],{"class":317,"line":653},[315,6915,6916],{"class":529},"        with",[315,6918,6811],{"class":325},[315,6920,6921,6924,6926,6928,6931],{"class":317,"line":670},[315,6922,6923],{"class":529},"          node-version",[315,6925,476],{"class":325},[315,6927,355],{"class":325},[315,6929,6930],{"class":358},"18",[315,6932,843],{"class":325},[315,6934,6935],{"class":317,"line":682},[315,6936,2927],{"class":329},[315,6938,6939,6941,6943,6945],{"class":317,"line":701},[315,6940,6877],{"class":325},[315,6942,6896],{"class":529},[315,6944,476],{"class":325},[315,6946,6947],{"class":358}," Install dependencies\n",[315,6949,6950,6953,6955],{"class":317,"line":1341},[315,6951,6952],{"class":529},"        run",[315,6954,476],{"class":325},[315,6956,6957],{"class":358}," npm ci\n",[315,6959,6960],{"class":317,"line":1353},[315,6961,2927],{"class":329},[315,6963,6964,6966,6968,6970],{"class":317,"line":1376},[315,6965,6877],{"class":325},[315,6967,6896],{"class":529},[315,6969,476],{"class":325},[315,6971,6972],{"class":358}," Build\n",[315,6974,6975,6977,6979],{"class":317,"line":1381},[315,6976,6952],{"class":529},[315,6978,476],{"class":325},[315,6980,6981],{"class":358}," npm run build\n",[315,6983,6984],{"class":317,"line":1399},[315,6985,2927],{"class":329},[315,6987,6988,6990,6992,6994],{"class":317,"line":1408},[315,6989,6877],{"class":325},[315,6991,6896],{"class":529},[315,6993,476],{"class":325},[315,6995,6799],{"class":358},[315,6997,6998,7000,7002],{"class":317,"line":1427},[315,6999,6906],{"class":529},[315,7001,476],{"class":325},[315,7003,7004],{"class":358}," Azure\u002Ffunctions-action@v1\n",[315,7006,7007,7009],{"class":317,"line":1446},[315,7008,6916],{"class":529},[315,7010,6811],{"class":325},[315,7012,7013,7016,7018],{"class":317,"line":1451},[315,7014,7015],{"class":529},"          app-name",[315,7017,476],{"class":325},[315,7019,7020],{"class":358}," ${{ secrets.AZURE_FUNCTIONAPP_NAME }}\n",[315,7022,7023,7026,7028],{"class":317,"line":1460},[315,7024,7025],{"class":529},"          package",[315,7027,476],{"class":325},[315,7029,7030],{"class":1764}," .\n",[315,7032,7033,7036,7038],{"class":317,"line":1465},[315,7034,7035],{"class":529},"          publish-profile",[315,7037,476],{"class":325},[315,7039,7040],{"class":358}," ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}\n",[299,7042,7044],{"id":7043},"environment-configuration","Environment Configuration",[724,7046,7048],{"id":7047},"local-development","Local Development",[304,7050,7052],{"className":3116,"code":7051,"filename":5154,"language":3119,"meta":310,"style":310},"{\n  \"IsEncrypted\": false,\n  \"Values\": {\n    \"FUNCTIONS_WORKER_RUNTIME\": \"node\",\n    \"AzureWebJobsStorage\": \"UseDevelopmentStorage=true\",\n    \n    \u002F\u002F Application settings\n    \"NODE_ENV\": \"development\",\n    \"DATABASE_URL\": \"postgresql:\u002F\u002Flocalhost:5432\u002Fmyapp\",\n    \"REDIS_URL\": \"redis:\u002F\u002Flocalhost:6379\",\n    \"JWT_SECRET\": \"dev-secret\",\n    \n    \u002F\u002F Azure services\n    \"AZURE_STORAGE_CONNECTION_STRING\": \"...\",\n    \"COSMOS_DB_ENDPOINT\": \"...\",\n    \"COSMOS_DB_KEY\": \"...\",\n    \n    \u002F\u002F Application Insights\n    \"APPINSIGHTS_INSTRUMENTATIONKEY\": \"...\",\n    \"APPLICATIONINSIGHTS_CONNECTION_STRING\": \"...\"\n  },\n  \"Host\": {\n    \"CORS\": \"*\",\n    \"CORSCredentials\": false\n  }\n}\n",[312,7053,7054,7058,7070,7082,7100,7119,7123,7128,7147,7166,7186,7206,7210,7215,7235,7254,7273,7277,7282,7300,7316,7320,7333,7352,7366,7370],{"__ignoreMap":310},[315,7055,7056],{"class":317,"line":318},[315,7057,742],{"class":325},[315,7059,7060,7062,7064,7066,7068],{"class":317,"line":368},[315,7061,3130],{"class":325},[315,7063,5167],{"class":428},[315,7065,3136],{"class":325},[315,7067,476],{"class":325},[315,7069,5174],{"class":325},[315,7071,7072,7074,7076,7078,7080],{"class":317,"line":391},[315,7073,3130],{"class":325},[315,7075,5181],{"class":428},[315,7077,3136],{"class":325},[315,7079,476],{"class":325},[315,7081,514],{"class":325},[315,7083,7084,7086,7088,7090,7092,7094,7096,7098],{"class":317,"line":419},[315,7085,3166],{"class":325},[315,7087,5194],{"class":479},[315,7089,3136],{"class":325},[315,7091,476],{"class":325},[315,7093,3141],{"class":325},[315,7095,5203],{"class":358},[315,7097,3136],{"class":325},[315,7099,482],{"class":325},[315,7101,7102,7104,7106,7108,7110,7112,7115,7117],{"class":317,"line":425},[315,7103,3166],{"class":325},[315,7105,5214],{"class":479},[315,7107,3136],{"class":325},[315,7109,476],{"class":325},[315,7111,3141],{"class":325},[315,7113,7114],{"class":358},"UseDevelopmentStorage=true",[315,7116,3136],{"class":325},[315,7118,482],{"class":325},[315,7120,7121],{"class":317,"line":446},[315,7122,1219],{"class":329},[315,7124,7125],{"class":317,"line":451},[315,7126,7127],{"class":697},"    \u002F\u002F Application settings\n",[315,7129,7130,7132,7134,7136,7138,7140,7143,7145],{"class":317,"line":469},[315,7131,3166],{"class":325},[315,7133,3033],{"class":479},[315,7135,3136],{"class":325},[315,7137,476],{"class":325},[315,7139,3141],{"class":325},[315,7141,7142],{"class":358},"development",[315,7144,3136],{"class":325},[315,7146,482],{"class":325},[315,7148,7149,7151,7153,7155,7157,7159,7162,7164],{"class":317,"line":485},[315,7150,3166],{"class":325},[315,7152,3053],{"class":479},[315,7154,3136],{"class":325},[315,7156,476],{"class":325},[315,7158,3141],{"class":325},[315,7160,7161],{"class":358},"postgresql:\u002F\u002Flocalhost:5432\u002Fmyapp",[315,7163,3136],{"class":325},[315,7165,482],{"class":325},[315,7167,7168,7170,7173,7175,7177,7179,7182,7184],{"class":317,"line":496},[315,7169,3166],{"class":325},[315,7171,7172],{"class":479},"REDIS_URL",[315,7174,3136],{"class":325},[315,7176,476],{"class":325},[315,7178,3141],{"class":325},[315,7180,7181],{"class":358},"redis:\u002F\u002Flocalhost:6379",[315,7183,3136],{"class":325},[315,7185,482],{"class":325},[315,7187,7188,7190,7193,7195,7197,7199,7202,7204],{"class":317,"line":517},[315,7189,3166],{"class":325},[315,7191,7192],{"class":479},"JWT_SECRET",[315,7194,3136],{"class":325},[315,7196,476],{"class":325},[315,7198,3141],{"class":325},[315,7200,7201],{"class":358},"dev-secret",[315,7203,3136],{"class":325},[315,7205,482],{"class":325},[315,7207,7208],{"class":317,"line":541},[315,7209,1219],{"class":329},[315,7211,7212],{"class":317,"line":547},[315,7213,7214],{"class":697},"    \u002F\u002F Azure services\n",[315,7216,7217,7219,7222,7224,7226,7228,7231,7233],{"class":317,"line":552},[315,7218,3166],{"class":325},[315,7220,7221],{"class":479},"AZURE_STORAGE_CONNECTION_STRING",[315,7223,3136],{"class":325},[315,7225,476],{"class":325},[315,7227,3141],{"class":325},[315,7229,7230],{"class":358},"...",[315,7232,3136],{"class":325},[315,7234,482],{"class":325},[315,7236,7237,7239,7242,7244,7246,7248,7250,7252],{"class":317,"line":576},[315,7238,3166],{"class":325},[315,7240,7241],{"class":479},"COSMOS_DB_ENDPOINT",[315,7243,3136],{"class":325},[315,7245,476],{"class":325},[315,7247,3141],{"class":325},[315,7249,7230],{"class":358},[315,7251,3136],{"class":325},[315,7253,482],{"class":325},[315,7255,7256,7258,7261,7263,7265,7267,7269,7271],{"class":317,"line":653},[315,7257,3166],{"class":325},[315,7259,7260],{"class":479},"COSMOS_DB_KEY",[315,7262,3136],{"class":325},[315,7264,476],{"class":325},[315,7266,3141],{"class":325},[315,7268,7230],{"class":358},[315,7270,3136],{"class":325},[315,7272,482],{"class":325},[315,7274,7275],{"class":317,"line":670},[315,7276,1219],{"class":329},[315,7278,7279],{"class":317,"line":682},[315,7280,7281],{"class":697},"    \u002F\u002F Application Insights\n",[315,7283,7284,7286,7288,7290,7292,7294,7296,7298],{"class":317,"line":701},[315,7285,3166],{"class":325},[315,7287,5230],{"class":479},[315,7289,3136],{"class":325},[315,7291,476],{"class":325},[315,7293,3141],{"class":325},[315,7295,7230],{"class":358},[315,7297,3136],{"class":325},[315,7299,482],{"class":325},[315,7301,7302,7304,7306,7308,7310,7312,7314],{"class":317,"line":1341},[315,7303,3166],{"class":325},[315,7305,5250],{"class":479},[315,7307,3136],{"class":325},[315,7309,476],{"class":325},[315,7311,3141],{"class":325},[315,7313,7230],{"class":358},[315,7315,3238],{"class":325},[315,7317,7318],{"class":317,"line":1353},[315,7319,848],{"class":325},[315,7321,7322,7324,7327,7329,7331],{"class":317,"line":1376},[315,7323,3130],{"class":325},[315,7325,7326],{"class":428},"Host",[315,7328,3136],{"class":325},[315,7330,476],{"class":325},[315,7332,514],{"class":325},[315,7334,7335,7337,7340,7342,7344,7346,7348,7350],{"class":317,"line":1381},[315,7336,3166],{"class":325},[315,7338,7339],{"class":479},"CORS",[315,7341,3136],{"class":325},[315,7343,476],{"class":325},[315,7345,3141],{"class":325},[315,7347,5930],{"class":358},[315,7349,3136],{"class":325},[315,7351,482],{"class":325},[315,7353,7354,7356,7359,7361,7363],{"class":317,"line":1399},[315,7355,3166],{"class":325},[315,7357,7358],{"class":479},"CORSCredentials",[315,7360,3136],{"class":325},[315,7362,476],{"class":325},[315,7364,7365],{"class":325}," false\n",[315,7367,7368],{"class":317,"line":1408},[315,7369,1317],{"class":325},[315,7371,7372],{"class":317,"line":1427},[315,7373,544],{"class":325},[724,7375,7377],{"id":7376},"production-configuration","Production Configuration",[282,7379,7380],{},"Configure application settings in Azure Portal:",[304,7382,7384],{"className":6458,"code":7383,"language":6460,"meta":310,"style":310},"# Using Azure CLI\naz functionapp config appsettings set \\\n  --name MyFunctionApp \\\n  --resource-group MyResourceGroup \\\n  --settings \\\n    NODE_ENV=production \\\n    DATABASE_URL=\"postgresql:\u002F\u002F...\" \\\n    JWT_SECRET=\"production-secret\"\n",[312,7385,7386,7391,7407,7415,7423,7430,7437,7451],{"__ignoreMap":310},[315,7387,7388],{"class":317,"line":318},[315,7389,7390],{"class":697},"# Using Azure CLI\n",[315,7392,7393,7395,7397,7399,7402,7405],{"class":317,"line":368},[315,7394,6472],{"class":479},[315,7396,6583],{"class":358},[315,7398,4842],{"class":358},[315,7400,7401],{"class":358}," appsettings",[315,7403,7404],{"class":358}," set",[315,7406,6530],{"class":329},[315,7408,7409,7411,7413],{"class":317,"line":391},[315,7410,6535],{"class":358},[315,7412,6594],{"class":358},[315,7414,6530],{"class":329},[315,7416,7417,7419,7421],{"class":317,"line":419},[315,7418,6545],{"class":358},[315,7420,6500],{"class":358},[315,7422,6530],{"class":329},[315,7424,7425,7428],{"class":317,"line":425},[315,7426,7427],{"class":358},"  --settings",[315,7429,6530],{"class":329},[315,7431,7432,7435],{"class":317,"line":446},[315,7433,7434],{"class":358},"    NODE_ENV=production",[315,7436,6530],{"class":329},[315,7438,7439,7442,7444,7447,7449],{"class":317,"line":451},[315,7440,7441],{"class":358},"    DATABASE_URL=",[315,7443,3136],{"class":325},[315,7445,7446],{"class":358},"postgresql:\u002F\u002F...",[315,7448,3136],{"class":325},[315,7450,6530],{"class":329},[315,7452,7453,7456,7458,7461],{"class":317,"line":469},[315,7454,7455],{"class":358},"    JWT_SECRET=",[315,7457,3136],{"class":325},[315,7459,7460],{"class":358},"production-secret",[315,7462,3238],{"class":325},[299,7464,7466],{"id":7465},"monitoring-and-debugging","Monitoring and Debugging",[724,7468,7470],{"id":7469},"application-insights-queries","Application Insights Queries",[304,7472,7476],{"className":7473,"code":7474,"language":7475,"meta":310,"style":310},"language-kusto shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Query failed requests\nrequests\n| where success == false\n| where timestamp > ago(1h)\n| project timestamp, name, resultCode, duration\n| order by timestamp desc\n\n\u002F\u002F Query slow requests\nrequests\n| where duration > 1000\n| where timestamp > ago(1h)\n| project timestamp, name, duration, resultCode\n| order by duration desc\n\n\u002F\u002F Query exceptions\nexceptions\n| where timestamp > ago(1h)\n| project timestamp, type, outerMessage, innerMessage\n| order by timestamp desc\n\n\u002F\u002F Custom events\ncustomEvents\n| where name == \"OrderCreated\"\n| where timestamp > ago(24h)\n| summarize count() by bin(timestamp, 1h)\n","kusto",[312,7477,7478,7483,7488,7493,7498,7503,7508,7512,7517,7521,7526,7530,7535,7540,7544,7549,7554,7558,7563,7567,7571,7576,7581,7586,7591],{"__ignoreMap":310},[315,7479,7480],{"class":317,"line":318},[315,7481,7482],{},"\u002F\u002F Query failed requests\n",[315,7484,7485],{"class":317,"line":368},[315,7486,7487],{},"requests\n",[315,7489,7490],{"class":317,"line":391},[315,7491,7492],{},"| where success == false\n",[315,7494,7495],{"class":317,"line":419},[315,7496,7497],{},"| where timestamp > ago(1h)\n",[315,7499,7500],{"class":317,"line":425},[315,7501,7502],{},"| project timestamp, name, resultCode, duration\n",[315,7504,7505],{"class":317,"line":446},[315,7506,7507],{},"| order by timestamp desc\n",[315,7509,7510],{"class":317,"line":451},[315,7511,422],{"emptyLinePlaceholder":56},[315,7513,7514],{"class":317,"line":469},[315,7515,7516],{},"\u002F\u002F Query slow requests\n",[315,7518,7519],{"class":317,"line":485},[315,7520,7487],{},[315,7522,7523],{"class":317,"line":496},[315,7524,7525],{},"| where duration > 1000\n",[315,7527,7528],{"class":317,"line":517},[315,7529,7497],{},[315,7531,7532],{"class":317,"line":541},[315,7533,7534],{},"| project timestamp, name, duration, resultCode\n",[315,7536,7537],{"class":317,"line":547},[315,7538,7539],{},"| order by duration desc\n",[315,7541,7542],{"class":317,"line":552},[315,7543,422],{"emptyLinePlaceholder":56},[315,7545,7546],{"class":317,"line":576},[315,7547,7548],{},"\u002F\u002F Query exceptions\n",[315,7550,7551],{"class":317,"line":653},[315,7552,7553],{},"exceptions\n",[315,7555,7556],{"class":317,"line":670},[315,7557,7497],{},[315,7559,7560],{"class":317,"line":682},[315,7561,7562],{},"| project timestamp, type, outerMessage, innerMessage\n",[315,7564,7565],{"class":317,"line":701},[315,7566,7507],{},[315,7568,7569],{"class":317,"line":1341},[315,7570,422],{"emptyLinePlaceholder":56},[315,7572,7573],{"class":317,"line":1353},[315,7574,7575],{},"\u002F\u002F Custom events\n",[315,7577,7578],{"class":317,"line":1376},[315,7579,7580],{},"customEvents\n",[315,7582,7583],{"class":317,"line":1381},[315,7584,7585],{},"| where name == \"OrderCreated\"\n",[315,7587,7588],{"class":317,"line":1399},[315,7589,7590],{},"| where timestamp > ago(24h)\n",[315,7592,7593],{"class":317,"line":1408},[315,7594,7595],{},"| summarize count() by bin(timestamp, 1h)\n",[724,7597,7599],{"id":7598},"live-metrics","Live Metrics",[282,7601,7602],{},"Monitor your function in real-time:",[304,7604,7606],{"className":6458,"code":7605,"language":6460,"meta":310,"style":310},"# View live metrics in portal\n# Navigate to: Function App > Monitoring > Live Metrics\n",[312,7607,7608,7613],{"__ignoreMap":310},[315,7609,7610],{"class":317,"line":318},[315,7611,7612],{"class":697},"# View live metrics in portal\n",[315,7614,7615],{"class":317,"line":368},[315,7616,7617],{"class":697},"# Navigate to: Function App > Monitoring > Live Metrics\n",[724,7619,7621],{"id":7620},"log-streaming","Log Streaming",[304,7623,7625],{"className":6458,"code":7624,"language":6460,"meta":310,"style":310},"# Stream logs using Azure CLI\naz webapp log tail \\\n  --name MyFunctionApp \\\n  --resource-group MyResourceGroup\n\n# Or using Core Tools\nfunc azure functionapp logstream MyFunctionApp\n",[312,7626,7627,7632,7647,7655,7662,7666,7671],{"__ignoreMap":310},[315,7628,7629],{"class":317,"line":318},[315,7630,7631],{"class":697},"# Stream logs using Azure CLI\n",[315,7633,7634,7636,7639,7642,7645],{"class":317,"line":368},[315,7635,6472],{"class":479},[315,7637,7638],{"class":358}," webapp",[315,7640,7641],{"class":358}," log",[315,7643,7644],{"class":358}," tail",[315,7646,6530],{"class":329},[315,7648,7649,7651,7653],{"class":317,"line":391},[315,7650,6535],{"class":358},[315,7652,6594],{"class":358},[315,7654,6530],{"class":329},[315,7656,7657,7659],{"class":317,"line":419},[315,7658,6545],{"class":358},[315,7660,7661],{"class":358}," MyResourceGroup\n",[315,7663,7664],{"class":317,"line":425},[315,7665,422],{"emptyLinePlaceholder":56},[315,7667,7668],{"class":317,"line":446},[315,7669,7670],{"class":697},"# Or using Core Tools\n",[315,7672,7673,7675,7677,7679,7682],{"class":317,"line":451},[315,7674,6664],{"class":479},[315,7676,6667],{"class":358},[315,7678,6583],{"class":358},[315,7680,7681],{"class":358}," logstream",[315,7683,6675],{"class":358},[299,7685,7687],{"id":7686},"performance-optimization","Performance Optimization",[724,7689,7691],{"id":7690},"cold-start-reduction","Cold Start Reduction",[304,7693,7695],{"className":306,"code":7694,"language":309,"meta":310,"style":310},"\u002F\u002F Initialize at module level\nimport { createApp } from '@vercube\u002Fcore';\nimport { toServerlessHandler } from '@vercube\u002Fserverless\u002Fazure-functions';\n\nconst app = createApp({\n  setup: async (app) => {\n    \u002F\u002F Initialize heavy services once\n    app.container.bind(DatabaseService);\n    app.container.bind(CacheService);\n    \n    const db = app.container.get(DatabaseService);\n    await db.connect();\n  }\n});\n\nconst handler = toServerlessHandler(app);\n\nexport async function httpTrigger(\n  request: HttpRequest,\n  context: InvocationContext\n): Promise\u003CHttpResponseInit> {\n  \u002F\u002F Fast execution - just handle the request\n  return await handler(request);\n}\n",[312,7696,7697,7702,7723,7743,7747,7762,7781,7786,7809,7830,7834,7861,7876,7880,7888,7892,7907,7911,7923,7933,7941,7955,7960,7976],{"__ignoreMap":310},[315,7698,7699],{"class":317,"line":318},[315,7700,7701],{"class":697},"\u002F\u002F Initialize at module level\n",[315,7703,7704,7706,7708,7711,7713,7715,7717,7719,7721],{"class":317,"line":368},[315,7705,322],{"class":321},[315,7707,326],{"class":325},[315,7709,7710],{"class":329}," createApp",[315,7712,349],{"class":325},[315,7714,352],{"class":321},[315,7716,355],{"class":325},[315,7718,2743],{"class":358},[315,7720,362],{"class":325},[315,7722,365],{"class":325},[315,7724,7725,7727,7729,7731,7733,7735,7737,7739,7741],{"class":317,"line":391},[315,7726,322],{"class":321},[315,7728,326],{"class":325},[315,7730,375],{"class":329},[315,7732,349],{"class":325},[315,7734,352],{"class":321},[315,7736,355],{"class":325},[315,7738,384],{"class":358},[315,7740,362],{"class":325},[315,7742,365],{"class":325},[315,7744,7745],{"class":317,"line":419},[315,7746,422],{"emptyLinePlaceholder":56},[315,7748,7749,7751,7754,7756,7758,7760],{"class":317,"line":425},[315,7750,429],{"class":428},[315,7752,7753],{"class":329}," app ",[315,7755,435],{"class":325},[315,7757,7710],{"class":438},[315,7759,530],{"class":329},[315,7761,742],{"class":325},[315,7763,7764,7767,7769,7771,7773,7775,7777,7779],{"class":317,"line":446},[315,7765,7766],{"class":438},"  setup",[315,7768,476],{"class":325},[315,7770,457],{"class":428},[315,7772,2016],{"class":325},[315,7774,555],{"class":472},[315,7776,536],{"class":325},[315,7778,4277],{"class":428},[315,7780,514],{"class":325},[315,7782,7783],{"class":317,"line":451},[315,7784,7785],{"class":697},"    \u002F\u002F Initialize heavy services once\n",[315,7787,7788,7791,7793,7796,7798,7801,7803,7805,7807],{"class":317,"line":469},[315,7789,7790],{"class":329},"    app",[315,7792,294],{"class":325},[315,7794,7795],{"class":329},"container",[315,7797,294],{"class":325},[315,7799,7800],{"class":438},"bind",[315,7802,530],{"class":529},[315,7804,4394],{"class":329},[315,7806,536],{"class":529},[315,7808,365],{"class":325},[315,7810,7811,7813,7815,7817,7819,7821,7823,7826,7828],{"class":317,"line":485},[315,7812,7790],{"class":329},[315,7814,294],{"class":325},[315,7816,7795],{"class":329},[315,7818,294],{"class":325},[315,7820,7800],{"class":438},[315,7822,530],{"class":529},[315,7824,7825],{"class":329},"CacheService",[315,7827,536],{"class":529},[315,7829,365],{"class":325},[315,7831,7832],{"class":317,"line":496},[315,7833,1219],{"class":529},[315,7835,7836,7838,7841,7843,7845,7847,7849,7851,7853,7855,7857,7859],{"class":317,"line":517},[315,7837,1191],{"class":428},[315,7839,7840],{"class":329}," db",[315,7842,1197],{"class":325},[315,7844,330],{"class":329},[315,7846,294],{"class":325},[315,7848,7795],{"class":329},[315,7850,294],{"class":325},[315,7852,2445],{"class":438},[315,7854,530],{"class":529},[315,7856,4394],{"class":329},[315,7858,536],{"class":529},[315,7860,365],{"class":325},[315,7862,7863,7866,7868,7870,7872,7874],{"class":317,"line":541},[315,7864,7865],{"class":321},"    await",[315,7867,7840],{"class":329},[315,7869,294],{"class":325},[315,7871,5025],{"class":438},[315,7873,1184],{"class":529},[315,7875,365],{"class":325},[315,7877,7878],{"class":317,"line":547},[315,7879,1317],{"class":325},[315,7881,7882,7884,7886],{"class":317,"line":552},[315,7883,704],{"class":325},[315,7885,536],{"class":329},[315,7887,365],{"class":325},[315,7889,7890],{"class":317,"line":576},[315,7891,422],{"emptyLinePlaceholder":56},[315,7893,7894,7896,7898,7900,7902,7905],{"class":317,"line":653},[315,7895,429],{"class":428},[315,7897,432],{"class":329},[315,7899,435],{"class":325},[315,7901,375],{"class":438},[315,7903,7904],{"class":329},"(app)",[315,7906,365],{"class":325},[315,7908,7909],{"class":317,"line":670},[315,7910,422],{"emptyLinePlaceholder":56},[315,7912,7913,7915,7917,7919,7921],{"class":317,"line":682},[315,7914,454],{"class":321},[315,7916,457],{"class":428},[315,7918,460],{"class":428},[315,7920,463],{"class":438},[315,7922,466],{"class":325},[315,7924,7925,7927,7929,7931],{"class":317,"line":701},[315,7926,473],{"class":472},[315,7928,476],{"class":325},[315,7930,336],{"class":479},[315,7932,482],{"class":325},[315,7934,7935,7937,7939],{"class":317,"line":1341},[315,7936,488],{"class":472},[315,7938,476],{"class":325},[315,7940,493],{"class":479},[315,7942,7943,7945,7947,7949,7951,7953],{"class":317,"line":1353},[315,7944,499],{"class":325},[315,7946,502],{"class":479},[315,7948,505],{"class":325},[315,7950,508],{"class":479},[315,7952,511],{"class":325},[315,7954,514],{"class":325},[315,7956,7957],{"class":317,"line":1376},[315,7958,7959],{"class":697},"  \u002F\u002F Fast execution - just handle the request\n",[315,7961,7962,7964,7966,7968,7970,7972,7974],{"class":317,"line":1381},[315,7963,520],{"class":321},[315,7965,523],{"class":321},[315,7967,526],{"class":438},[315,7969,530],{"class":529},[315,7971,533],{"class":329},[315,7973,536],{"class":529},[315,7975,365],{"class":325},[315,7977,7978],{"class":317,"line":1399},[315,7979,544],{"class":325},[724,7981,7983],{"id":7982},"always-on-setting","Always-On Setting",[282,7985,7986],{},"Enable Always On to prevent cold starts:",[304,7988,7990],{"className":6458,"code":7989,"language":6460,"meta":310,"style":310},"# Using Azure CLI\naz functionapp config set \\\n  --name MyFunctionApp \\\n  --resource-group MyResourceGroup \\\n  --always-on true\n",[312,7991,7992,7996,8008,8016,8024],{"__ignoreMap":310},[315,7993,7994],{"class":317,"line":318},[315,7995,7390],{"class":697},[315,7997,7998,8000,8002,8004,8006],{"class":317,"line":368},[315,7999,6472],{"class":479},[315,8001,6583],{"class":358},[315,8003,4842],{"class":358},[315,8005,7404],{"class":358},[315,8007,6530],{"class":329},[315,8009,8010,8012,8014],{"class":317,"line":391},[315,8011,6535],{"class":358},[315,8013,6594],{"class":358},[315,8015,6530],{"class":329},[315,8017,8018,8020,8022],{"class":317,"line":419},[315,8019,6545],{"class":358},[315,8021,6500],{"class":358},[315,8023,6530],{"class":329},[315,8025,8026,8029],{"class":317,"line":425},[315,8027,8028],{"class":358},"  --always-on",[315,8030,3478],{"class":325},[724,8032,8034],{"id":8033},"premium-plan","Premium Plan",[282,8036,8037],{},"Use Azure Functions Premium Plan for better performance:",[304,8039,8041],{"className":6458,"code":8040,"language":6460,"meta":310,"style":310},"# Create Premium plan\naz functionapp plan create \\\n  --name MyPremiumPlan \\\n  --resource-group MyResourceGroup \\\n  --location eastus \\\n  --sku EP1 \\\n  --is-linux false\n\n# Create function app with Premium plan\naz functionapp create \\\n  --name MyFunctionApp \\\n  --resource-group MyResourceGroup \\\n  --plan MyPremiumPlan \\\n  --runtime node \\\n  --runtime-version 18\n",[312,8042,8043,8048,8061,8070,8078,8086,8095,8102,8106,8111,8121,8129,8137,8146,8154],{"__ignoreMap":310},[315,8044,8045],{"class":317,"line":318},[315,8046,8047],{"class":697},"# Create Premium plan\n",[315,8049,8050,8052,8054,8057,8059],{"class":317,"line":368},[315,8051,6472],{"class":479},[315,8053,6583],{"class":358},[315,8055,8056],{"class":358}," plan",[315,8058,6494],{"class":358},[315,8060,6530],{"class":329},[315,8062,8063,8065,8068],{"class":317,"line":391},[315,8064,6535],{"class":358},[315,8066,8067],{"class":358}," MyPremiumPlan",[315,8069,6530],{"class":329},[315,8071,8072,8074,8076],{"class":317,"line":419},[315,8073,6545],{"class":358},[315,8075,6500],{"class":358},[315,8077,6530],{"class":329},[315,8079,8080,8082,8084],{"class":317,"line":425},[315,8081,6554],{"class":358},[315,8083,6557],{"class":358},[315,8085,6530],{"class":329},[315,8087,8088,8090,8093],{"class":317,"line":446},[315,8089,6564],{"class":358},[315,8091,8092],{"class":358}," EP1",[315,8094,6530],{"class":329},[315,8096,8097,8100],{"class":317,"line":451},[315,8098,8099],{"class":358},"  --is-linux",[315,8101,7365],{"class":325},[315,8103,8104],{"class":317,"line":469},[315,8105,422],{"emptyLinePlaceholder":56},[315,8107,8108],{"class":317,"line":485},[315,8109,8110],{"class":697},"# Create function app with Premium plan\n",[315,8112,8113,8115,8117,8119],{"class":317,"line":496},[315,8114,6472],{"class":479},[315,8116,6583],{"class":358},[315,8118,6494],{"class":358},[315,8120,6530],{"class":329},[315,8122,8123,8125,8127],{"class":317,"line":517},[315,8124,6535],{"class":358},[315,8126,6594],{"class":358},[315,8128,6530],{"class":329},[315,8130,8131,8133,8135],{"class":317,"line":541},[315,8132,6545],{"class":358},[315,8134,6500],{"class":358},[315,8136,6530],{"class":329},[315,8138,8139,8142,8144],{"class":317,"line":547},[315,8140,8141],{"class":358},"  --plan",[315,8143,8067],{"class":358},[315,8145,6530],{"class":329},[315,8147,8148,8150,8152],{"class":317,"line":552},[315,8149,6627],{"class":358},[315,8151,6630],{"class":358},[315,8153,6530],{"class":329},[315,8155,8156,8158],{"class":317,"line":576},[315,8157,6637],{"class":358},[315,8159,8160],{"class":1764}," 18\n",[299,8162,8164],{"id":8163},"troubleshooting","Troubleshooting",[724,8166,8168],{"id":8167},"common-issues","Common Issues",[282,8170,8171],{},[286,8172,8173],{},"Function not triggering",[304,8175,8177],{"className":6458,"code":8176,"language":6460,"meta":310,"style":310},"Error: No HTTP triggers found\n",[312,8178,8179],{"__ignoreMap":310},[315,8180,8181,8184,8187,8190,8193],{"class":317,"line":318},[315,8182,8183],{"class":479},"Error:",[315,8185,8186],{"class":358}," No",[315,8188,8189],{"class":358}," HTTP",[315,8191,8192],{"class":358}," triggers",[315,8194,8195],{"class":358}," found\n",[282,8197,8198,8201],{},[286,8199,8200],{},"Solution:"," Ensure route configuration is correct:",[304,8203,8205],{"className":306,"code":8204,"language":309,"meta":310,"style":310},"app.http('httpTrigger', {\n  route: '{*route}',  \u002F\u002F Catch all routes\n  handler: httpTrigger\n});\n",[312,8206,8207,8227,8244,8252],{"__ignoreMap":310},[315,8208,8209,8211,8213,8215,8217,8219,8221,8223,8225],{"class":317,"line":318},[315,8210,555],{"class":329},[315,8212,294],{"class":325},[315,8214,560],{"class":438},[315,8216,530],{"class":329},[315,8218,362],{"class":325},[315,8220,567],{"class":358},[315,8222,362],{"class":325},[315,8224,333],{"class":325},[315,8226,514],{"class":325},[315,8228,8229,8231,8233,8235,8237,8239,8241],{"class":317,"line":368},[315,8230,685],{"class":529},[315,8232,476],{"class":325},[315,8234,355],{"class":325},[315,8236,692],{"class":358},[315,8238,362],{"class":325},[315,8240,333],{"class":325},[315,8242,8243],{"class":697},"  \u002F\u002F Catch all routes\n",[315,8245,8246,8248,8250],{"class":317,"line":391},[315,8247,673],{"class":529},[315,8249,476],{"class":325},[315,8251,4162],{"class":329},[315,8253,8254,8256,8258],{"class":317,"line":419},[315,8255,704],{"class":325},[315,8257,536],{"class":329},[315,8259,365],{"class":325},[282,8261,8262],{},[286,8263,8264],{},"CORS errors",[304,8266,8268],{"className":6458,"code":8267,"language":6460,"meta":310,"style":310},"Access to fetch has been blocked by CORS policy\n",[312,8269,8270],{"__ignoreMap":310},[315,8271,8272,8275,8278,8281,8284,8287,8290,8293,8296],{"class":317,"line":318},[315,8273,8274],{"class":479},"Access",[315,8276,8277],{"class":358}," to",[315,8279,8280],{"class":358}," fetch",[315,8282,8283],{"class":358}," has",[315,8285,8286],{"class":358}," been",[315,8288,8289],{"class":358}," blocked",[315,8291,8292],{"class":358}," by",[315,8294,8295],{"class":358}," CORS",[315,8297,8298],{"class":358}," policy\n",[282,8300,8301,8303],{},[286,8302,8200],{}," Configure CORS in host.json:",[304,8305,8307],{"className":3116,"code":8306,"language":3119,"meta":310,"style":310},"{\n  \"version\": \"2.0\",\n  \"extensions\": {\n    \"http\": {\n      \"routePrefix\": \"api\",\n      \"cors\": {\n        \"allowedOrigins\": [\"*\"],\n        \"allowedMethods\": [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n        \"allowedHeaders\": [\"*\"]\n      }\n    }\n  }\n}\n",[312,8308,8309,8313,8331,8344,8356,8374,8387,8409,8454,8475,8479,8483,8487],{"__ignoreMap":310},[315,8310,8311],{"class":317,"line":318},[315,8312,742],{"class":325},[315,8314,8315,8317,8319,8321,8323,8325,8327,8329],{"class":317,"line":368},[315,8316,3130],{"class":325},[315,8318,3133],{"class":428},[315,8320,3136],{"class":325},[315,8322,476],{"class":325},[315,8324,3141],{"class":325},[315,8326,3144],{"class":358},[315,8328,3136],{"class":325},[315,8330,482],{"class":325},[315,8332,8333,8335,8338,8340,8342],{"class":317,"line":391},[315,8334,3130],{"class":325},[315,8336,8337],{"class":428},"extensions",[315,8339,3136],{"class":325},[315,8341,476],{"class":325},[315,8343,514],{"class":325},[315,8345,8346,8348,8350,8352,8354],{"class":317,"line":419},[315,8347,3166],{"class":325},[315,8349,560],{"class":479},[315,8351,3136],{"class":325},[315,8353,476],{"class":325},[315,8355,514],{"class":325},[315,8357,8358,8360,8362,8364,8366,8368,8370,8372],{"class":317,"line":425},[315,8359,3180],{"class":325},[315,8361,3581],{"class":1764},[315,8363,3136],{"class":325},[315,8365,476],{"class":325},[315,8367,3141],{"class":325},[315,8369,3590],{"class":358},[315,8371,3136],{"class":325},[315,8373,482],{"class":325},[315,8375,8376,8378,8381,8383,8385],{"class":317,"line":446},[315,8377,3180],{"class":325},[315,8379,8380],{"class":1764},"cors",[315,8382,3136],{"class":325},[315,8384,476],{"class":325},[315,8386,514],{"class":325},[315,8388,8389,8391,8394,8396,8398,8400,8402,8404,8406],{"class":317,"line":451},[315,8390,3194],{"class":325},[315,8392,8393],{"class":529},"allowedOrigins",[315,8395,3136],{"class":325},[315,8397,476],{"class":325},[315,8399,584],{"class":325},[315,8401,3136],{"class":325},[315,8403,5930],{"class":358},[315,8405,3136],{"class":325},[315,8407,8408],{"class":325},"],\n",[315,8410,8411,8413,8416,8418,8420,8422,8424,8426,8428,8430,8432,8434,8436,8438,8440,8442,8444,8446,8448,8450,8452],{"class":317,"line":469},[315,8412,3194],{"class":325},[315,8414,8415],{"class":529},"allowedMethods",[315,8417,3136],{"class":325},[315,8419,476],{"class":325},[315,8421,584],{"class":325},[315,8423,3136],{"class":325},[315,8425,589],{"class":358},[315,8427,3136],{"class":325},[315,8429,333],{"class":325},[315,8431,3141],{"class":325},[315,8433,598],{"class":358},[315,8435,3136],{"class":325},[315,8437,333],{"class":325},[315,8439,3141],{"class":325},[315,8441,607],{"class":358},[315,8443,3136],{"class":325},[315,8445,333],{"class":325},[315,8447,3141],{"class":325},[315,8449,616],{"class":358},[315,8451,3136],{"class":325},[315,8453,8408],{"class":325},[315,8455,8456,8458,8461,8463,8465,8467,8469,8471,8473],{"class":317,"line":485},[315,8457,3194],{"class":325},[315,8459,8460],{"class":529},"allowedHeaders",[315,8462,3136],{"class":325},[315,8464,476],{"class":325},[315,8466,584],{"class":325},[315,8468,3136],{"class":325},[315,8470,5930],{"class":358},[315,8472,3136],{"class":325},[315,8474,6833],{"class":325},[315,8476,8477],{"class":317,"line":496},[315,8478,1303],{"class":325},[315,8480,8481],{"class":317,"line":517},[315,8482,2055],{"class":325},[315,8484,8485],{"class":317,"line":541},[315,8486,1317],{"class":325},[315,8488,8489],{"class":317,"line":547},[315,8490,544],{"class":325},[282,8492,8493],{},[286,8494,8495],{},"Request timeout",[304,8497,8499],{"className":6458,"code":8498,"language":6460,"meta":310,"style":310},"Function execution timed out\n",[312,8500,8501],{"__ignoreMap":310},[315,8502,8503,8505,8508,8511],{"class":317,"line":318},[315,8504,3287],{"class":479},[315,8506,8507],{"class":358}," execution",[315,8509,8510],{"class":358}," timed",[315,8512,8513],{"class":358}," out\n",[282,8515,8516,8518],{},[286,8517,8200],{}," Increase timeout in host.json:",[304,8520,8522],{"className":3116,"code":8521,"language":3119,"meta":310,"style":310},"{\n  \"functionTimeout\": \"00:10:00\"\n}\n",[312,8523,8524,8528,8545],{"__ignoreMap":310},[315,8525,8526],{"class":317,"line":318},[315,8527,742],{"class":325},[315,8529,8530,8532,8534,8536,8538,8540,8543],{"class":317,"line":368},[315,8531,3130],{"class":325},[315,8533,3654],{"class":428},[315,8535,3136],{"class":325},[315,8537,476],{"class":325},[315,8539,3141],{"class":325},[315,8541,8542],{"class":358},"00:10:00",[315,8544,3238],{"class":325},[315,8546,8547],{"class":317,"line":391},[315,8548,544],{"class":325},[282,8550,8551],{},[286,8552,8553],{},"Memory issues",[304,8555,8557],{"className":6458,"code":8556,"language":6460,"meta":310,"style":310},"JavaScript heap out of memory\n",[312,8558,8559],{"__ignoreMap":310},[315,8560,8561,8564,8567,8570,8573],{"class":317,"line":318},[315,8562,8563],{"class":479},"JavaScript",[315,8565,8566],{"class":358}," heap",[315,8568,8569],{"class":358}," out",[315,8571,8572],{"class":358}," of",[315,8574,8575],{"class":358}," memory\n",[282,8577,8578,8580],{},[286,8579,8200],{}," Increase memory by upgrading plan or optimizing code",[282,8582,8583],{},[286,8584,8585],{},"Connection string not found",[304,8587,8589],{"className":6458,"code":8588,"language":6460,"meta":310,"style":310},"AzureWebJobsStorage connection string not found\n",[312,8590,8591],{"__ignoreMap":310},[315,8592,8593,8595,8598,8600,8603],{"class":317,"line":318},[315,8594,5214],{"class":479},[315,8596,8597],{"class":358}," connection",[315,8599,2003],{"class":358},[315,8601,8602],{"class":358}," not",[315,8604,8195],{"class":358},[282,8606,8607,8609],{},[286,8608,8200],{}," Set storage connection string:",[304,8611,8613],{"className":3116,"code":8612,"language":3119,"meta":310,"style":310},"{\n  \"Values\": {\n    \"AzureWebJobsStorage\": \"DefaultEndpointsProtocol=https;...\"\n  }\n}\n",[312,8614,8615,8619,8631,8648,8652],{"__ignoreMap":310},[315,8616,8617],{"class":317,"line":318},[315,8618,742],{"class":325},[315,8620,8621,8623,8625,8627,8629],{"class":317,"line":368},[315,8622,3130],{"class":325},[315,8624,5181],{"class":428},[315,8626,3136],{"class":325},[315,8628,476],{"class":325},[315,8630,514],{"class":325},[315,8632,8633,8635,8637,8639,8641,8643,8646],{"class":317,"line":391},[315,8634,3166],{"class":325},[315,8636,5214],{"class":479},[315,8638,3136],{"class":325},[315,8640,476],{"class":325},[315,8642,3141],{"class":325},[315,8644,8645],{"class":358},"DefaultEndpointsProtocol=https;...",[315,8647,3238],{"class":325},[315,8649,8650],{"class":317,"line":419},[315,8651,1317],{"class":325},[315,8653,8654],{"class":317,"line":425},[315,8655,544],{"class":325},[299,8657,8659],{"id":8658},"best-practices","Best Practices",[282,8661,8662],{},[286,8663,8664],{},"Use Application Insights for monitoring",[304,8666,8668],{"className":306,"code":8667,"language":309,"meta":310,"style":310},"\u002F\u002F Always enable Application Insights\nconst telemetry = new TelemetryClient();\ntelemetry.trackEvent({ name: 'CustomEvent' });\n",[312,8669,8670,8675,8691],{"__ignoreMap":310},[315,8671,8672],{"class":317,"line":318},[315,8673,8674],{"class":697},"\u002F\u002F Always enable Application Insights\n",[315,8676,8677,8679,8681,8683,8685,8687,8689],{"class":317,"line":368},[315,8678,429],{"class":428},[315,8680,5311],{"class":329},[315,8682,435],{"class":325},[315,8684,1227],{"class":325},[315,8686,5287],{"class":438},[315,8688,1184],{"class":329},[315,8690,365],{"class":325},[315,8692,8693,8696,8698,8700,8702,8704,8706,8708,8710,8713,8715,8717,8719],{"class":317,"line":391},[315,8694,8695],{"class":329},"telemetry",[315,8697,294],{"class":325},[315,8699,5465],{"class":438},[315,8701,530],{"class":329},[315,8703,1600],{"class":325},[315,8705,6896],{"class":529},[315,8707,476],{"class":325},[315,8709,355],{"class":325},[315,8711,8712],{"class":358},"CustomEvent",[315,8714,362],{"class":325},[315,8716,349],{"class":325},[315,8718,536],{"class":329},[315,8720,365],{"class":325},[282,8722,8723],{},[286,8724,8725],{},"Handle concurrent requests efficiently",[304,8727,8729],{"className":306,"code":8728,"language":309,"meta":310,"style":310},"\u002F\u002F Use proper connection pooling\nconst pool = new Pool({\n  max: 10,  \u002F\u002F Azure Functions can handle multiple concurrent requests\n  idleTimeoutMillis: 30000\n});\n",[312,8730,8731,8736,8753,8767,8776],{"__ignoreMap":310},[315,8732,8733],{"class":317,"line":318},[315,8734,8735],{"class":697},"\u002F\u002F Use proper connection pooling\n",[315,8737,8738,8740,8743,8745,8747,8749,8751],{"class":317,"line":368},[315,8739,429],{"class":428},[315,8741,8742],{"class":329}," pool ",[315,8744,435],{"class":325},[315,8746,1227],{"class":325},[315,8748,4354],{"class":438},[315,8750,530],{"class":329},[315,8752,742],{"class":325},[315,8754,8755,8758,8760,8762,8764],{"class":317,"line":391},[315,8756,8757],{"class":529},"  max",[315,8759,476],{"class":325},[315,8761,4570],{"class":1764},[315,8763,333],{"class":325},[315,8765,8766],{"class":697},"  \u002F\u002F Azure Functions can handle multiple concurrent requests\n",[315,8768,8769,8772,8774],{"class":317,"line":419},[315,8770,8771],{"class":529},"  idleTimeoutMillis",[315,8773,476],{"class":325},[315,8775,4993],{"class":1764},[315,8777,8778,8780,8782],{"class":317,"line":425},[315,8779,704],{"class":325},[315,8781,536],{"class":329},[315,8783,365],{"class":325},[282,8785,8786],{},[286,8787,8788],{},"Implement proper error handling",[304,8790,8792],{"className":306,"code":8791,"language":309,"meta":310,"style":310},"export async function httpTrigger(\n  request: HttpRequest,\n  context: InvocationContext\n): Promise\u003CHttpResponseInit> {\n  try {\n    return await handler(request);\n  } catch (error) {\n    context.error('Error:', error);\n    return {\n      status: 500,\n      jsonBody: { error: 'Internal server error' }\n    };\n  }\n}\n",[312,8793,8794,8806,8816,8824,8838,8844,8860,8874,8898,8904,8914,8934,8938,8942],{"__ignoreMap":310},[315,8795,8796,8798,8800,8802,8804],{"class":317,"line":318},[315,8797,454],{"class":321},[315,8799,457],{"class":428},[315,8801,460],{"class":428},[315,8803,463],{"class":438},[315,8805,466],{"class":325},[315,8807,8808,8810,8812,8814],{"class":317,"line":368},[315,8809,473],{"class":472},[315,8811,476],{"class":325},[315,8813,336],{"class":479},[315,8815,482],{"class":325},[315,8817,8818,8820,8822],{"class":317,"line":391},[315,8819,488],{"class":472},[315,8821,476],{"class":325},[315,8823,493],{"class":479},[315,8825,8826,8828,8830,8832,8834,8836],{"class":317,"line":419},[315,8827,499],{"class":325},[315,8829,502],{"class":479},[315,8831,505],{"class":325},[315,8833,508],{"class":479},[315,8835,511],{"class":325},[315,8837,514],{"class":325},[315,8839,8840,8842],{"class":317,"line":425},[315,8841,2466],{"class":321},[315,8843,514],{"class":325},[315,8845,8846,8848,8850,8852,8854,8856,8858],{"class":317,"line":446},[315,8847,1224],{"class":321},[315,8849,523],{"class":321},[315,8851,526],{"class":438},[315,8853,530],{"class":529},[315,8855,533],{"class":329},[315,8857,536],{"class":529},[315,8859,365],{"class":325},[315,8861,8862,8864,8866,8868,8870,8872],{"class":317,"line":451},[315,8863,2524],{"class":325},[315,8865,2527],{"class":321},[315,8867,2016],{"class":529},[315,8869,2532],{"class":329},[315,8871,1613],{"class":529},[315,8873,742],{"class":325},[315,8875,8876,8878,8880,8882,8884,8886,8888,8890,8892,8894,8896],{"class":317,"line":469},[315,8877,2494],{"class":329},[315,8879,294],{"class":325},[315,8881,2532],{"class":438},[315,8883,530],{"class":529},[315,8885,362],{"class":325},[315,8887,8183],{"class":358},[315,8889,362],{"class":325},[315,8891,333],{"class":325},[315,8893,2558],{"class":329},[315,8895,536],{"class":529},[315,8897,365],{"class":325},[315,8899,8900,8902],{"class":317,"line":485},[315,8901,1224],{"class":321},[315,8903,514],{"class":325},[315,8905,8906,8908,8910,8912],{"class":317,"line":496},[315,8907,6391],{"class":529},[315,8909,476],{"class":325},[315,8911,6396],{"class":1764},[315,8913,482],{"class":325},[315,8915,8916,8918,8920,8922,8924,8926,8928,8930,8932],{"class":317,"line":517},[315,8917,6403],{"class":529},[315,8919,476],{"class":325},[315,8921,326],{"class":325},[315,8923,2558],{"class":529},[315,8925,476],{"class":325},[315,8927,355],{"class":325},[315,8929,6430],{"class":358},[315,8931,362],{"class":325},[315,8933,936],{"class":325},[315,8935,8936],{"class":317,"line":541},[315,8937,2975],{"class":325},[315,8939,8940],{"class":317,"line":547},[315,8941,1317],{"class":325},[315,8943,8944],{"class":317,"line":552},[315,8945,544],{"class":325},[282,8947,8948],{},[286,8949,8950],{},"Use managed identity for Azure services",[304,8952,8954],{"className":306,"code":8953,"language":309,"meta":310,"style":310},"\u002F\u002F Instead of connection strings, use managed identity\nimport { DefaultAzureCredential } from '@azure\u002Fidentity';\n\nconst credential = new DefaultAzureCredential();\nconst client = new BlobServiceClient(\n  `https:\u002F\u002F${accountName}.blob.core.windows.net`,\n  credential\n);\n",[312,8955,8956,8961,8983,8987,9004,9020,9044,9049],{"__ignoreMap":310},[315,8957,8958],{"class":317,"line":318},[315,8959,8960],{"class":697},"\u002F\u002F Instead of connection strings, use managed identity\n",[315,8962,8963,8965,8967,8970,8972,8974,8976,8979,8981],{"class":317,"line":368},[315,8964,322],{"class":321},[315,8966,326],{"class":325},[315,8968,8969],{"class":329}," DefaultAzureCredential",[315,8971,349],{"class":325},[315,8973,352],{"class":321},[315,8975,355],{"class":325},[315,8977,8978],{"class":358},"@azure\u002Fidentity",[315,8980,362],{"class":325},[315,8982,365],{"class":325},[315,8984,8985],{"class":317,"line":391},[315,8986,422],{"emptyLinePlaceholder":56},[315,8988,8989,8991,8994,8996,8998,9000,9002],{"class":317,"line":419},[315,8990,429],{"class":428},[315,8992,8993],{"class":329}," credential ",[315,8995,435],{"class":325},[315,8997,1227],{"class":325},[315,8999,8969],{"class":438},[315,9001,1184],{"class":329},[315,9003,365],{"class":325},[315,9005,9006,9008,9011,9013,9015,9018],{"class":317,"line":425},[315,9007,429],{"class":428},[315,9009,9010],{"class":329}," client ",[315,9012,435],{"class":325},[315,9014,1227],{"class":325},[315,9016,9017],{"class":438}," BlobServiceClient",[315,9019,466],{"class":329},[315,9021,9022,9025,9028,9031,9034,9036,9039,9042],{"class":317,"line":446},[315,9023,9024],{"class":325},"  `",[315,9026,9027],{"class":358},"https:\u002F\u002F",[315,9029,9030],{"class":325},"${",[315,9032,9033],{"class":329},"accountName",[315,9035,704],{"class":325},[315,9037,9038],{"class":358},".blob.core.windows.net",[315,9040,9041],{"class":325},"`",[315,9043,482],{"class":325},[315,9045,9046],{"class":317,"line":451},[315,9047,9048],{"class":329},"  credential\n",[315,9050,9051,9053],{"class":317,"line":469},[315,9052,536],{"class":329},[315,9054,365],{"class":325},[9056,9057,9058],"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 .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 .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 .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 .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":310,"searchDepth":318,"depth":368,"links":9060},[9061,9062,9066,9067,9068,9072,9077,9081,9085,9089,9094,9098,9103,9108,9111],{"id":301,"depth":368,"text":302},{"id":711,"depth":368,"text":712,"children":9063},[9064,9065],{"id":726,"depth":391,"text":727},{"id":943,"depth":391,"text":944},{"id":1074,"depth":368,"text":1075},{"id":1492,"depth":368,"text":1493},{"id":2134,"depth":368,"text":2135,"children":9069},[9070,9071],{"id":2138,"depth":391,"text":2139},{"id":2716,"depth":391,"text":2717},{"id":3108,"depth":368,"text":3109,"children":9073},[9074,9075,9076],{"id":3112,"depth":391,"text":3113},{"id":3366,"depth":391,"text":3367},{"id":3832,"depth":391,"text":3833},{"id":4315,"depth":368,"text":4316,"children":9078},[9079,9080],{"id":4322,"depth":391,"text":4323},{"id":4718,"depth":391,"text":4719},{"id":5145,"depth":368,"text":5146,"children":9082},[9083,9084],{"id":5149,"depth":391,"text":5150},{"id":5272,"depth":391,"text":5273},{"id":5758,"depth":368,"text":5759,"children":9086},[9087,9088],{"id":5762,"depth":391,"text":5763},{"id":6115,"depth":391,"text":6116},{"id":6451,"depth":368,"text":170,"children":9090},[9091,9092,9093],{"id":6454,"depth":391,"text":6455},{"id":6678,"depth":391,"text":6679},{"id":6780,"depth":391,"text":6781},{"id":7043,"depth":368,"text":7044,"children":9095},[9096,9097],{"id":7047,"depth":391,"text":7048},{"id":7376,"depth":391,"text":7377},{"id":7465,"depth":368,"text":7466,"children":9099},[9100,9101,9102],{"id":7469,"depth":391,"text":7470},{"id":7598,"depth":391,"text":7599},{"id":7620,"depth":391,"text":7621},{"id":7686,"depth":368,"text":7687,"children":9104},[9105,9106,9107],{"id":7690,"depth":391,"text":7691},{"id":7982,"depth":391,"text":7983},{"id":8033,"depth":391,"text":8034},{"id":8163,"depth":368,"text":8164,"children":9109},[9110],{"id":8167,"depth":391,"text":8168},{"id":8658,"depth":368,"text":8659},"Deploy your Vercube application to Azure Functions with HTTP triggers","md",null,{},{"title":187,"description":9112},"KzTBciPa_Fc4Bld6RfGdEEVsNzzF26ksrfoOazSu25I",[9119,9121],{"title":183,"path":184,"stem":185,"description":9120,"children":-1},"Deploy your Vercube application to AWS Lambda with API Gateway",{"title":197,"path":198,"stem":199,"description":9122,"children":-1},"Learn how to create and use custom decorators in Vercube to extend functionality and create reusable patterns",1782807884561]