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