[{"data":1,"prerenderedAt":2057},["ShallowReactive",2],{"navigation":3,"docs-path-index":268,"-docs-modules-telemetry-api":348,"-docs-modules-telemetry-api-surround":2052},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":56},"Docs","i-lucide-book-marked","\u002Fdocs","docs",[10,26,57,229,250],{"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":56},"Core features","i-lucide-square-function","\u002Fdocs\u002Fcore-features","docs\u002F2.core-features",[32,36,40,44,48,52],{"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",{"title":53,"path":54,"stem":55},"Introspection","\u002Fdocs\u002Fcore-features\u002Fintrospection","docs\u002F2.core-features\u002F5.introspection",false,{"title":58,"icon":59,"defaultOpen":60,"path":61,"stem":62,"children":63,"page":56},"Modules","i-lucide-boxes",true,"\u002Fdocs\u002Fmodules","docs\u002F3.modules",[64,81,92,108,127,142,150,165,176,191,210,218],{"title":65,"icon":56,"defaultOpen":56,"path":66,"stem":67,"children":68,"page":56},"Auth","\u002Fdocs\u002Fmodules\u002Fauth","docs\u002F3.modules\u002F1.auth",[69,73,77],{"title":70,"path":71,"stem":72},"Overview","\u002Fdocs\u002Fmodules\u002Fauth\u002Foverview","docs\u002F3.modules\u002F1.auth\u002F0.overview",{"title":74,"path":75,"stem":76},"Decorators","\u002Fdocs\u002Fmodules\u002Fauth\u002Fdecorators","docs\u002F3.modules\u002F1.auth\u002F1.decorators",{"title":78,"path":79,"stem":80},"API Reference","\u002Fdocs\u002Fmodules\u002Fauth\u002Fapi","docs\u002F3.modules\u002F1.auth\u002F2.api",{"title":82,"icon":56,"defaultOpen":56,"path":83,"stem":84,"children":85,"page":56},"Devtools","\u002Fdocs\u002Fmodules\u002Fdevtools","docs\u002F3.modules\u002F10.devtools",[86,89],{"title":70,"path":87,"stem":88},"\u002Fdocs\u002Fmodules\u002Fdevtools\u002Foverview","docs\u002F3.modules\u002F10.devtools\u002F0.overview",{"title":33,"path":90,"stem":91},"\u002Fdocs\u002Fmodules\u002Fdevtools\u002Fconfiguration","docs\u002F3.modules\u002F10.devtools\u002F1.configuration",{"title":93,"path":94,"stem":95,"children":96,"page":56},"Telemetry","\u002Fdocs\u002Fmodules\u002Ftelemetry","docs\u002F3.modules\u002F11.telemetry",[97,100,104],{"title":70,"path":98,"stem":99},"\u002Fdocs\u002Fmodules\u002Ftelemetry\u002Foverview","docs\u002F3.modules\u002F11.telemetry\u002F0.overview",{"title":101,"path":102,"stem":103},"API","\u002Fdocs\u002Fmodules\u002Ftelemetry\u002Fapi","docs\u002F3.modules\u002F11.telemetry\u002F1.api",{"title":105,"path":106,"stem":107},"Instrumentation","\u002Fdocs\u002Fmodules\u002Ftelemetry\u002Finstrumentation","docs\u002F3.modules\u002F11.telemetry\u002F2.instrumentation",{"title":109,"path":110,"stem":111,"children":112,"page":56},"Queue","\u002Fdocs\u002Fmodules\u002Fqueue","docs\u002F3.modules\u002F12.queue",[113,116,120,124],{"title":70,"path":114,"stem":115},"\u002Fdocs\u002Fmodules\u002Fqueue\u002Foverview","docs\u002F3.modules\u002F12.queue\u002F0.overview",{"title":117,"path":118,"stem":119},"Consumers","\u002Fdocs\u002Fmodules\u002Fqueue\u002Fconsumers","docs\u002F3.modules\u002F12.queue\u002F1.consumers",{"title":121,"path":122,"stem":123},"Strategies","\u002Fdocs\u002Fmodules\u002Fqueue\u002Fstrategies","docs\u002F3.modules\u002F12.queue\u002F2.strategies",{"title":101,"path":125,"stem":126},"\u002Fdocs\u002Fmodules\u002Fqueue\u002Fapi","docs\u002F3.modules\u002F12.queue\u002F3.api",{"title":128,"icon":56,"defaultOpen":56,"path":129,"stem":130,"children":131,"page":56},"Logger","\u002Fdocs\u002Fmodules\u002Flogger","docs\u002F3.modules\u002F2.logger",[132,135,139],{"title":70,"path":133,"stem":134},"\u002Fdocs\u002Fmodules\u002Flogger\u002Foverview","docs\u002F3.modules\u002F2.logger\u002F0.overview",{"title":136,"path":137,"stem":138},"Drains & Adapters","\u002Fdocs\u002Fmodules\u002Flogger\u002Fdrivers","docs\u002F3.modules\u002F2.logger\u002F1.drivers",{"title":101,"path":140,"stem":141},"\u002Fdocs\u002Fmodules\u002Flogger\u002Fapi","docs\u002F3.modules\u002F2.logger\u002F2.api",{"title":143,"icon":56,"defaultOpen":56,"path":144,"stem":145,"children":146,"page":56},"Serverless","\u002Fdocs\u002Fmodules\u002Fserverless","docs\u002F3.modules\u002F3.serverless",[147],{"title":70,"path":148,"stem":149},"\u002Fdocs\u002Fmodules\u002Fserverless\u002Foverview","docs\u002F3.modules\u002F3.serverless\u002F0.overview",{"title":151,"icon":56,"defaultOpen":56,"path":152,"stem":153,"children":154,"page":56},"Storage","\u002Fdocs\u002Fmodules\u002Fstorage","docs\u002F3.modules\u002F4.storage",[155,158,162],{"title":70,"path":156,"stem":157},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Foverview","docs\u002F3.modules\u002F4.storage\u002F0.overview",{"title":159,"path":160,"stem":161},"Drivers","\u002Fdocs\u002Fmodules\u002Fstorage\u002Fdrivers","docs\u002F3.modules\u002F4.storage\u002F1.drivers",{"title":101,"path":163,"stem":164},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fapi","docs\u002F3.modules\u002F4.storage\u002F2.api",{"title":166,"icon":56,"defaultOpen":56,"path":167,"stem":168,"children":169,"page":56},"Web Sockets","\u002Fdocs\u002Fmodules\u002Fweb-sockets","docs\u002F3.modules\u002F5.web-sockets",[170,173],{"title":70,"path":171,"stem":172},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Foverview","docs\u002F3.modules\u002F5.web-sockets\u002F0.overview",{"title":101,"path":174,"stem":175},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Fapi","docs\u002F3.modules\u002F5.web-sockets\u002F1.api",{"title":177,"icon":56,"defaultOpen":56,"path":178,"stem":179,"children":180,"page":56},"Schema","\u002Fdocs\u002Fmodules\u002Fschema","docs\u002F3.modules\u002F6.schema",[181,184,187],{"title":70,"path":182,"stem":183},"\u002Fdocs\u002Fmodules\u002Fschema\u002Foverview","docs\u002F3.modules\u002F6.schema\u002F0.overview",{"title":74,"path":185,"stem":186},"\u002Fdocs\u002Fmodules\u002Fschema\u002Fdecorators","docs\u002F3.modules\u002F6.schema\u002F1.decorators",{"title":188,"path":189,"stem":190},"Scalar","\u002Fdocs\u002Fmodules\u002Fschema\u002Fscalar","docs\u002F3.modules\u002F6.schema\u002F2.scalar",{"title":192,"icon":56,"defaultOpen":56,"path":193,"stem":194,"children":195,"page":56},"Nitro","\u002Fdocs\u002Fmodules\u002Fnitro","docs\u002F3.modules\u002F7.nitro",[196,199,202,206],{"title":70,"path":197,"stem":198},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Foverview","docs\u002F3.modules\u002F7.nitro\u002F0.overview",{"title":151,"path":200,"stem":201},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Fstorage","docs\u002F3.modules\u002F7.nitro\u002F1.storage",{"title":203,"path":204,"stem":205},"File-Based Routes","\u002Fdocs\u002Fmodules\u002Fnitro\u002Ffile-based-routes","docs\u002F3.modules\u002F7.nitro\u002F2.file-based-routes",{"title":207,"path":208,"stem":209},"Middleware","\u002Fdocs\u002Fmodules\u002Fnitro\u002Fmiddleware","docs\u002F3.modules\u002F7.nitro\u002F3.middleware",{"title":211,"icon":56,"defaultOpen":56,"path":212,"stem":213,"children":214,"page":56},"Vite","\u002Fdocs\u002Fmodules\u002Fvite","docs\u002F3.modules\u002F8.vite",[215],{"title":70,"path":216,"stem":217},"\u002Fdocs\u002Fmodules\u002Fvite\u002Foverview","docs\u002F3.modules\u002F8.vite\u002F0.overview",{"title":219,"icon":56,"defaultOpen":56,"path":220,"stem":221,"children":222,"page":56},"Cache","\u002Fdocs\u002Fmodules\u002Fcache","docs\u002F3.modules\u002F9.cache",[223,226],{"title":70,"path":224,"stem":225},"\u002Fdocs\u002Fmodules\u002Fcache\u002Foverview","docs\u002F3.modules\u002F9.cache\u002F0.overview",{"title":101,"path":227,"stem":228},"\u002Fdocs\u002Fmodules\u002Fcache\u002Fapi","docs\u002F3.modules\u002F9.cache\u002F1.api",{"title":230,"icon":231,"path":232,"stem":233,"children":234,"page":56},"Deployment","i-lucide-cloud-upload","\u002Fdocs\u002Fdeployment","docs\u002F4.deployment",[235,238,242,246],{"title":70,"path":236,"stem":237},"\u002Fdocs\u002Fdeployment\u002Foverview","docs\u002F4.deployment\u002F0.overview",{"title":239,"path":240,"stem":241},"Vercel","\u002Fdocs\u002Fdeployment\u002Fvercel","docs\u002F4.deployment\u002F1.vercel",{"title":243,"path":244,"stem":245},"AWS Lambda","\u002Fdocs\u002Fdeployment\u002Faws-lambda","docs\u002F4.deployment\u002F2.aws-lambda",{"title":247,"path":248,"stem":249},"Azure Functions","\u002Fdocs\u002Fdeployment\u002Fazure-functions","docs\u002F4.deployment\u002F3.azure-functions",{"title":251,"icon":252,"path":253,"stem":254,"children":255,"page":56},"Advanced","i-lucide-brain","\u002Fdocs\u002Fadvanced","docs\u002F99.advanced",[256,260,264],{"title":257,"path":258,"stem":259},"Custom Decorator","\u002Fdocs\u002Fadvanced\u002Fcustom-decorator","docs\u002F99.advanced\u002F1.custom-decorator",{"title":261,"path":262,"stem":263},"Plugins","\u002Fdocs\u002Fadvanced\u002Fcustom-plugin","docs\u002F99.advanced\u002F2.custom-plugin",{"title":265,"path":266,"stem":267},"Custom CLI Command","\u002Fdocs\u002Fadvanced\u002Fcustom-cli-command","docs\u002F99.advanced\u002F3.custom-cli-command",[269,271,273,274,275,276,278,279,280,281,282,283,284,286,288,289,290,291,293,294,295,296,297,298,299,300,301,302,304,305,306,307,309,310,312,313,314,315,317,318,319,321,322,323,324,326,327,328,329,330,332,333,335,336,337,339,340,341,342,343,345,346,347],{"path":270},"\u002Fdocs\u002F.navigation",{"path":272},"\u002Fdocs\u002Fgetting-started\u002F.navigation",{"path":12},{"path":19},{"path":23},{"path":277},"\u002Fdocs\u002Fcore-features\u002F.navigation",{"path":34},{"path":38},{"path":42},{"path":46},{"path":50},{"path":54},{"path":285},"\u002Fdocs\u002Fmodules\u002F.navigation",{"path":287},"\u002Fdocs\u002Fmodules\u002Fauth\u002F.navigation",{"path":71},{"path":75},{"path":79},{"path":292},"\u002Fdocs\u002Fmodules\u002Fdevtools\u002F.navigation",{"path":87},{"path":90},{"path":98},{"path":102},{"path":106},{"path":114},{"path":118},{"path":122},{"path":125},{"path":303},"\u002Fdocs\u002Fmodules\u002Flogger\u002F.navigation",{"path":133},{"path":137},{"path":140},{"path":308},"\u002Fdocs\u002Fmodules\u002Fserverless\u002F.navigation",{"path":148},{"path":311},"\u002Fdocs\u002Fmodules\u002Fstorage\u002F.navigation",{"path":156},{"path":160},{"path":163},{"path":316},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002F.navigation",{"path":171},{"path":174},{"path":320},"\u002Fdocs\u002Fmodules\u002Fschema\u002F.navigation",{"path":182},{"path":185},{"path":189},{"path":325},"\u002Fdocs\u002Fmodules\u002Fnitro\u002F.navigation",{"path":197},{"path":200},{"path":204},{"path":208},{"path":331},"\u002Fdocs\u002Fmodules\u002Fvite\u002F.navigation",{"path":216},{"path":334},"\u002Fdocs\u002Fmodules\u002Fcache\u002F.navigation",{"path":224},{"path":227},{"path":338},"\u002Fdocs\u002Fdeployment\u002F.navigation",{"path":236},{"path":240},{"path":244},{"path":248},{"path":344},"\u002Fdocs\u002Fadvanced\u002F.navigation",{"path":258},{"path":262},{"path":266},{"id":349,"title":101,"body":350,"description":2046,"extension":2047,"links":2048,"meta":2049,"navigation":60,"path":102,"seo":2050,"stem":103,"__hash__":2051},"docs\u002Fdocs\u002F3.modules\u002F11.telemetry\u002F1.api.md",{"type":351,"value":352,"toc":2024},"minimark",[353,357,454,482,486,493,616,619,678,685,827,831,878,881,885,946,952,956,998,1007,1011,1021,1099,1102,1105,1173,1199,1202,1209,1263,1266,1269,1276,1279,1282,1286,1313,1347,1357,1361,1380,1386,1390,1421,1424,1428,1477,1507,1712,1715,1727,1764,1771,1774,1778,1790,1793,1998,2020],[354,355,356],"p",{},"The package publishes one entry point per job rather than a single barrel, so an import says what it reaches for and nothing pulls in the SDK by accident.",[358,359,360,373],"table",{},[361,362,363],"thead",{},[364,365,366,370],"tr",{},[367,368,369],"th",{},"Import",[367,371,372],{},"What it is for",[374,375,376,394,404,414,424,434,444],"tbody",{},[364,377,378,385],{},[379,380,381],"td",{},[382,383,384],"code",{},"@vercube\u002Ftelemetry",[379,386,387,388,390,391],{},"The ",[382,389,93],{}," token and ",[382,392,393],{},"TelemetryPlugin",[364,395,396,401],{},[379,397,398],{},[382,399,400],{},"@vercube\u002Ftelemetry\u002Fapi",[379,402,403],{},"The OpenTelemetry API",[364,405,406,411],{},[379,407,408],{},[382,409,410],{},"@vercube\u002Ftelemetry\u002Fattributes",[379,412,413],{},"Span and metric attribute keys",[364,415,416,421],{},[379,417,418],{},[382,419,420],{},"@vercube\u002Ftelemetry\u002Finstrument",[379,422,423],{},"Instrumenting a library of your own",[364,425,426,431],{},[379,427,428],{},[382,429,430],{},"@vercube\u002Ftelemetry\u002Fsdk",[379,432,433],{},"Tracer and meter provider wiring",[364,435,436,441],{},[379,437,438],{},[382,439,440],{},"@vercube\u002Ftelemetry\u002Fotlp",[379,442,443],{},"OTLP serializers and exporters",[364,445,446,451],{},[379,447,448],{},[382,449,450],{},"@vercube\u002Ftelemetry\u002Ftesting",[379,452,453],{},"In-memory providers for tests",[354,455,456,457,460,461,464,465,464,468,464,471,464,474,477,478,481],{},"This is also the only package in the framework that depends on ",[382,458,459],{},"@opentelemetry\u002F*",". ",[382,462,463],{},"@vercube\u002Fstorage",", ",[382,466,467],{},"@vercube\u002Fcache",[382,469,470],{},"@vercube\u002Fqueue",[382,472,473],{},"@vercube\u002Fauth",[382,475,476],{},"@vercube\u002Fws"," and ",[382,479,480],{},"@vercube\u002Fdevtools"," all instrument themselves through the subpaths above, so the OpenTelemetry version in use is decided in one place.",[483,484,93],"h2",{"id":485},"telemetry",[354,487,488,489,492],{},"The dependency-injection token, bound only when telemetry is enabled. Inject it with ",[382,490,491],{},"@InjectOptional"," from code that must also run without it.",[494,495,500],"pre",{"className":496,"code":497,"language":498,"meta":499,"style":499},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Inject } from '@vercube\u002Fdi';\nimport { Telemetry } from '@vercube\u002Ftelemetry';\n\nclass ReportService {\n  @Inject(Telemetry)\n  private gTelemetry!: Telemetry;\n}\n","ts","",[382,501,502,538,560,566,580,593,610],{"__ignoreMap":499},[503,504,507,511,515,519,522,525,528,532,535],"span",{"class":505,"line":506},"line",1,[503,508,510],{"class":509},"s7zQu","import",[503,512,514],{"class":513},"sMK4o"," {",[503,516,518],{"class":517},"sTEyZ"," Inject",[503,520,521],{"class":513}," }",[503,523,524],{"class":509}," from",[503,526,527],{"class":513}," '",[503,529,531],{"class":530},"sfazB","@vercube\u002Fdi",[503,533,534],{"class":513},"'",[503,536,537],{"class":513},";\n",[503,539,541,543,545,548,550,552,554,556,558],{"class":505,"line":540},2,[503,542,510],{"class":509},[503,544,514],{"class":513},[503,546,547],{"class":517}," Telemetry",[503,549,521],{"class":513},[503,551,524],{"class":509},[503,553,527],{"class":513},[503,555,384],{"class":530},[503,557,534],{"class":513},[503,559,537],{"class":513},[503,561,563],{"class":505,"line":562},3,[503,564,565],{"emptyLinePlaceholder":60},"\n",[503,567,569,573,577],{"class":505,"line":568},4,[503,570,572],{"class":571},"spNyl","class",[503,574,576],{"class":575},"sBMFI"," ReportService",[503,578,579],{"class":513}," {\n",[503,581,583,586,590],{"class":505,"line":582},5,[503,584,585],{"class":513},"  @",[503,587,589],{"class":588},"s2Zo4","Inject",[503,591,592],{"class":517},"(Telemetry)\n",[503,594,596,599,603,606,608],{"class":505,"line":595},6,[503,597,598],{"class":571},"  private",[503,600,602],{"class":601},"swJcz"," gTelemetry",[503,604,605],{"class":513},"!:",[503,607,547],{"class":575},[503,609,537],{"class":513},[503,611,613],{"class":505,"line":612},7,[503,614,615],{"class":513},"}\n",[617,618,503],"h3",{"id":503},[494,620,622],{"className":496,"code":621,"language":498,"meta":499,"style":499},"span\u003CT>(name: string, fn: (span: Span) => T, options?: SpanOptions): T\n",[382,623,624],{"__ignoreMap":499},[503,625,626,628,631,634,637,640,643,646,649,652,655,658,661,664,667,669,672,675],{"class":505,"line":506},[503,627,503],{"class":588},[503,629,630],{"class":513},"\u003C",[503,632,633],{"class":575},"T",[503,635,636],{"class":513},">",[503,638,639],{"class":517},"(name: string",[503,641,642],{"class":513},",",[503,644,645],{"class":517}," fn: ",[503,647,648],{"class":513},"(",[503,650,503],{"class":651},"sHdIc",[503,653,654],{"class":513},":",[503,656,657],{"class":575}," Span",[503,659,660],{"class":513},")",[503,662,663],{"class":571}," =>",[503,665,666],{"class":517}," T",[503,668,642],{"class":513},[503,670,671],{"class":517}," options",[503,673,674],{"class":513},"?:",[503,676,677],{"class":517}," SpanOptions): T\n",[354,679,680,681,684],{},"Runs ",[382,682,683],{},"fn"," inside a new span that ends when the work settles. The return value is passed through unchanged, so wrapping synchronous code does not make it asynchronous.",[494,686,688],{"className":496,"code":687,"language":498,"meta":499,"style":499},"const total = this.gTelemetry.span('report.total', (span) => {\n  span.setAttribute('report.rows', rows.length);\n  return rows.reduce((sum, row) => sum + row.amount, 0);\n});\n",[382,689,690,734,767,818],{"__ignoreMap":499},[503,691,692,695,698,701,704,707,710,712,714,716,719,721,723,726,728,730,732],{"class":505,"line":506},[503,693,694],{"class":571},"const",[503,696,697],{"class":517}," total ",[503,699,700],{"class":513},"=",[503,702,703],{"class":513}," this.",[503,705,706],{"class":517},"gTelemetry",[503,708,709],{"class":513},".",[503,711,503],{"class":588},[503,713,648],{"class":517},[503,715,534],{"class":513},[503,717,718],{"class":530},"report.total",[503,720,534],{"class":513},[503,722,642],{"class":513},[503,724,725],{"class":513}," (",[503,727,503],{"class":651},[503,729,660],{"class":513},[503,731,663],{"class":571},[503,733,579],{"class":513},[503,735,736,739,741,744,746,748,751,753,755,758,760,763,765],{"class":505,"line":540},[503,737,738],{"class":517},"  span",[503,740,709],{"class":513},[503,742,743],{"class":588},"setAttribute",[503,745,648],{"class":601},[503,747,534],{"class":513},[503,749,750],{"class":530},"report.rows",[503,752,534],{"class":513},[503,754,642],{"class":513},[503,756,757],{"class":517}," rows",[503,759,709],{"class":513},[503,761,762],{"class":517},"length",[503,764,660],{"class":601},[503,766,537],{"class":513},[503,768,769,772,774,776,779,781,783,786,788,791,793,795,798,801,803,805,808,810,814,816],{"class":505,"line":562},[503,770,771],{"class":509},"  return",[503,773,757],{"class":517},[503,775,709],{"class":513},[503,777,778],{"class":588},"reduce",[503,780,648],{"class":601},[503,782,648],{"class":513},[503,784,785],{"class":651},"sum",[503,787,642],{"class":513},[503,789,790],{"class":651}," row",[503,792,660],{"class":513},[503,794,663],{"class":571},[503,796,797],{"class":517}," sum",[503,799,800],{"class":513}," +",[503,802,790],{"class":517},[503,804,709],{"class":513},[503,806,807],{"class":517},"amount",[503,809,642],{"class":513},[503,811,813],{"class":812},"sbssI"," 0",[503,815,660],{"class":601},[503,817,537],{"class":513},[503,819,820,823,825],{"class":505,"line":568},[503,821,822],{"class":513},"}",[503,824,660],{"class":517},[503,826,537],{"class":513},[617,828,830],{"id":829},"activespan-traceid-spanid","activeSpan, traceId, spanId",[494,832,834],{"className":496,"code":833,"language":498,"meta":499,"style":499},"activeSpan(): Span | undefined\nget traceId(): string | undefined\nget spanId(): string | undefined\n",[382,835,836,850,865],{"__ignoreMap":499},[503,837,838,841,844,847],{"class":505,"line":506},[503,839,840],{"class":588},"activeSpan",[503,842,843],{"class":517},"(): Span ",[503,845,846],{"class":513},"|",[503,848,849],{"class":513}," undefined\n",[503,851,852,855,858,861,863],{"class":505,"line":540},[503,853,854],{"class":517},"get ",[503,856,857],{"class":588},"traceId",[503,859,860],{"class":517},"(): string ",[503,862,846],{"class":513},[503,864,849],{"class":513},[503,866,867,869,872,874,876],{"class":505,"line":562},[503,868,854],{"class":517},[503,870,871],{"class":588},"spanId",[503,873,860],{"class":517},[503,875,846],{"class":513},[503,877,849],{"class":513},[354,879,880],{},"The span active on the current async execution path, and its ids in lowercase hex. Useful for putting a trace id into an error response so a user can quote it in a bug report.",[617,882,884],{"id":883},"inject-extract","inject, extract",[494,886,888],{"className":496,"code":887,"language":498,"meta":499,"style":499},"inject(carrier: Headers | Record\u003Cstring, string>): void\nextract(headers: Headers | Record\u003Cstring, string>): Context\n",[382,889,890,921],{"__ignoreMap":499},[503,891,892,895,898,900,903,905,908,910,913,915,918],{"class":505,"line":506},[503,893,894],{"class":588},"inject",[503,896,897],{"class":517},"(carrier: Headers ",[503,899,846],{"class":513},[503,901,902],{"class":517}," Record",[503,904,630],{"class":513},[503,906,907],{"class":517},"string",[503,909,642],{"class":513},[503,911,912],{"class":517}," string",[503,914,636],{"class":513},[503,916,917],{"class":517},"): ",[503,919,920],{"class":513},"void\n",[503,922,923,926,929,931,933,935,937,939,941,943],{"class":505,"line":540},[503,924,925],{"class":588},"extract",[503,927,928],{"class":517},"(headers: Headers ",[503,930,846],{"class":513},[503,932,902],{"class":517},[503,934,630],{"class":513},[503,936,907],{"class":517},[503,938,642],{"class":513},[503,940,912],{"class":517},[503,942,636],{"class":513},[503,944,945],{"class":517},"): Context\n",[354,947,948,949,951],{},"Write W3C trace context headers for the active span into a carrier, or read them back into a context usable as a span parent. ",[382,950,925],{}," is what lets a background worker continue the trace of the request that queued its job.",[617,953,955],{"id":954},"onflush-flush","onFlush, flush",[494,957,959],{"className":496,"code":958,"language":498,"meta":499,"style":499},"onFlush(flush: () => Promise\u003Cvoid>): void\nflush(): Promise\u003Cvoid>\n",[382,960,961,984],{"__ignoreMap":499},[503,962,963,966,969,972,974,977,980,982],{"class":505,"line":506},[503,964,965],{"class":588},"onFlush",[503,967,968],{"class":517},"(flush: ",[503,970,971],{"class":513},"()",[503,973,663],{"class":571},[503,975,976],{"class":575}," Promise",[503,978,979],{"class":513},"\u003Cvoid>",[503,981,917],{"class":517},[503,983,920],{"class":513},[503,985,986,989,992,995],{"class":505,"line":540},[503,987,988],{"class":588},"flush",[503,990,991],{"class":517},"(): ",[503,993,994],{"class":575},"Promise",[503,996,997],{"class":513},"\u003Cvoid>\n",[354,999,1000,1003,1004,1006],{},[382,1001,1002],{},"flush()"," pushes out everything buffered by batching exporters and drains. Call it before a process that may be frozen or killed goes away. ",[382,1005,965],{}," registers additional work to run when it does.",[617,1008,1010],{"id":1009},"tracer-meter","tracer, meter",[354,1012,1013,1014,477,1017,1020],{},"The underlying OpenTelemetry ",[382,1015,1016],{},"Tracer",[382,1018,1019],{},"Meter",", for anything the wrapper does not cover, such as creating your own counters and histograms.",[494,1022,1024],{"className":496,"code":1023,"language":498,"meta":499,"style":499},"const refunds = this.gTelemetry.meter.createCounter('billing.refunds');\nrefunds.add(1, { 'billing.reason': reason });\n",[382,1025,1026,1062],{"__ignoreMap":499},[503,1027,1028,1030,1033,1035,1037,1039,1041,1044,1046,1049,1051,1053,1056,1058,1060],{"class":505,"line":506},[503,1029,694],{"class":571},[503,1031,1032],{"class":517}," refunds ",[503,1034,700],{"class":513},[503,1036,703],{"class":513},[503,1038,706],{"class":517},[503,1040,709],{"class":513},[503,1042,1043],{"class":517},"meter",[503,1045,709],{"class":513},[503,1047,1048],{"class":588},"createCounter",[503,1050,648],{"class":517},[503,1052,534],{"class":513},[503,1054,1055],{"class":530},"billing.refunds",[503,1057,534],{"class":513},[503,1059,660],{"class":517},[503,1061,537],{"class":513},[503,1063,1064,1067,1069,1072,1074,1077,1079,1081,1083,1086,1088,1090,1093,1095,1097],{"class":505,"line":540},[503,1065,1066],{"class":517},"refunds",[503,1068,709],{"class":513},[503,1070,1071],{"class":588},"add",[503,1073,648],{"class":517},[503,1075,1076],{"class":812},"1",[503,1078,642],{"class":513},[503,1080,514],{"class":513},[503,1082,527],{"class":513},[503,1084,1085],{"class":601},"billing.reason",[503,1087,534],{"class":513},[503,1089,654],{"class":513},[503,1091,1092],{"class":517}," reason ",[503,1094,822],{"class":513},[503,1096,660],{"class":517},[503,1098,537],{"class":513},[483,1100,400],{"id":1101},"vercubetelemetryapi",[354,1103,1104],{},"The OpenTelemetry API, re-exported in full. Use it to annotate spans without adding a dependency of your own.",[494,1106,1108],{"className":496,"code":1107,"language":498,"meta":499,"style":499},"import { SpanKind, trace } from '@vercube\u002Ftelemetry\u002Fapi';\n\ntrace.getActiveSpan()?.setAttribute('invoice.id', id);\n",[382,1109,1110,1136,1140],{"__ignoreMap":499},[503,1111,1112,1114,1116,1119,1121,1124,1126,1128,1130,1132,1134],{"class":505,"line":506},[503,1113,510],{"class":509},[503,1115,514],{"class":513},[503,1117,1118],{"class":517}," SpanKind",[503,1120,642],{"class":513},[503,1122,1123],{"class":517}," trace",[503,1125,521],{"class":513},[503,1127,524],{"class":509},[503,1129,527],{"class":513},[503,1131,400],{"class":530},[503,1133,534],{"class":513},[503,1135,537],{"class":513},[503,1137,1138],{"class":505,"line":540},[503,1139,565],{"emptyLinePlaceholder":60},[503,1141,1142,1145,1147,1150,1152,1155,1157,1159,1161,1164,1166,1168,1171],{"class":505,"line":562},[503,1143,1144],{"class":517},"trace",[503,1146,709],{"class":513},[503,1148,1149],{"class":588},"getActiveSpan",[503,1151,971],{"class":517},[503,1153,1154],{"class":513},"?.",[503,1156,743],{"class":588},[503,1158,648],{"class":517},[503,1160,534],{"class":513},[503,1162,1163],{"class":530},"invoice.id",[503,1165,534],{"class":513},[503,1167,642],{"class":513},[503,1169,1170],{"class":517}," id)",[503,1172,537],{"class":513},[354,1174,1175,1176,1179,1180,464,1183,464,1186,464,1188,464,1190,464,1193,464,1196,709],{},"Anything ",[382,1177,1178],{},"@opentelemetry\u002Fapi"," exports is available here, including the types: ",[382,1181,1182],{},"Span",[382,1184,1185],{},"Context",[382,1187,1016],{},[382,1189,1019],{},[382,1191,1192],{},"Attributes",[382,1194,1195],{},"Counter",[382,1197,1198],{},"Histogram",[483,1200,410],{"id":1201},"vercubetelemetryattributes",[354,1203,1204,1205,1208],{},"The attribute keys the framework writes. The HTTP names follow the stable OpenTelemetry semantic conventions, the ",[382,1206,1207],{},"vercube.*"," names are this framework's own.",[494,1210,1212],{"className":496,"code":1211,"language":498,"meta":499,"style":499},"import { HTTP_ROUTE, VERCUBE_CONTROLLER } from '@vercube\u002Ftelemetry\u002Fattributes';\n\nconst route = span.attributes[HTTP_ROUTE];\n",[382,1213,1214,1240,1244],{"__ignoreMap":499},[503,1215,1216,1218,1220,1223,1225,1228,1230,1232,1234,1236,1238],{"class":505,"line":506},[503,1217,510],{"class":509},[503,1219,514],{"class":513},[503,1221,1222],{"class":517}," HTTP_ROUTE",[503,1224,642],{"class":513},[503,1226,1227],{"class":517}," VERCUBE_CONTROLLER",[503,1229,521],{"class":513},[503,1231,524],{"class":509},[503,1233,527],{"class":513},[503,1235,410],{"class":530},[503,1237,534],{"class":513},[503,1239,537],{"class":513},[503,1241,1242],{"class":505,"line":540},[503,1243,565],{"emptyLinePlaceholder":60},[503,1245,1246,1248,1251,1253,1256,1258,1261],{"class":505,"line":562},[503,1247,694],{"class":571},[503,1249,1250],{"class":517}," route ",[503,1252,700],{"class":513},[503,1254,1255],{"class":517}," span",[503,1257,709],{"class":513},[503,1259,1260],{"class":517},"attributes[HTTP_ROUTE]",[503,1262,537],{"class":513},[354,1264,1265],{},"Reading a span rather than producing one is what this is for, so it does not pull in the plugin.",[483,1267,420],{"id":1268},"vercubetelemetryinstrument",[354,1270,1271,1272,709],{},"The toolkit for instrumenting a library. See ",[1273,1274,1275],"a",{"href":106},"Instrumenting your own code",[483,1277,430],{"id":1278},"vercubetelemetrysdk",[354,1280,1281],{},"Everything that needs the OpenTelemetry SDK lives behind this subpath, so the application entry stays free of it.",[617,1283,1285],{"id":1284},"startnodetelemetry","startNodeTelemetry",[494,1287,1289],{"className":496,"code":1288,"language":498,"meta":499,"style":499},"startNodeTelemetry(options?: NodeTelemetryOptions): Promise\u003CNodeTelemetry>\n",[382,1290,1291],{"__ignoreMap":499},[503,1292,1293,1295,1298,1300,1303,1305,1307,1310],{"class":505,"line":506},[503,1294,1285],{"class":588},[503,1296,1297],{"class":517},"(options",[503,1299,674],{"class":513},[503,1301,1302],{"class":517}," NodeTelemetryOptions): ",[503,1304,994],{"class":575},[503,1306,630],{"class":513},[503,1308,1309],{"class":517},"NodeTelemetry",[503,1311,1312],{"class":513},">\n",[354,1314,1315,1316,464,1319,464,1322,464,1325,464,1328,464,1331,464,1334,464,1337,477,1340,1343,1344,709],{},"Wires a Node tracer provider and registers it globally. Accepts ",[382,1317,1318],{},"serviceName",[382,1320,1321],{},"serviceVersion",[382,1323,1324],{},"environment",[382,1326,1327],{},"resourceAttributes",[382,1329,1330],{},"sampler",[382,1332,1333],{},"endpoint",[382,1335,1336],{},"headers",[382,1338,1339],{},"exporter",[382,1341,1342],{},"spanProcessors",". Returns a handle with ",[382,1345,1346],{},"shutdown()",[354,1348,1349,1350,1352,1353,1356],{},"The context manager and the propagator are deliberately not replaced: ",[382,1351,393],{}," already installed ones backed by Vercube's request context, and letting the SDK swap them in would open a second ",[382,1354,1355],{},"AsyncLocalStorage"," frame per request.",[617,1358,1360],{"id":1359},"addspanprocessor","addSpanProcessor",[494,1362,1364],{"className":496,"code":1363,"language":498,"meta":499,"style":499},"addSpanProcessor(processor: SpanProcessor): () => void\n",[382,1365,1366],{"__ignoreMap":499},[503,1367,1368,1370,1373,1375,1377],{"class":505,"line":506},[503,1369,1360],{"class":588},[503,1371,1372],{"class":517},"(processor: SpanProcessor): ",[503,1374,971],{"class":513},[503,1376,663],{"class":571},[503,1378,1379],{"class":513}," void\n",[354,1381,1382,1383,1385],{},"Adds a span processor whether or not a provider exists yet. This is how a package can observe spans without owning the SDK setup, and it works the same whether the application called ",[382,1384,1285],{}," first, later, or never.",[617,1387,1389],{"id":1388},"addmetricreader-ensuremeterprovider","addMetricReader, ensureMeterProvider",[494,1391,1393],{"className":496,"code":1392,"language":498,"meta":499,"style":499},"addMetricReader(reader: IMetricReader): () => void\nensureMeterProvider(options?: NodeTelemetryOptions): MeterProvider\n",[382,1394,1395,1409],{"__ignoreMap":499},[503,1396,1397,1400,1403,1405,1407],{"class":505,"line":506},[503,1398,1399],{"class":588},"addMetricReader",[503,1401,1402],{"class":517},"(reader: IMetricReader): ",[503,1404,971],{"class":513},[503,1406,663],{"class":571},[503,1408,1379],{"class":513},[503,1410,1411,1414,1416,1418],{"class":505,"line":540},[503,1412,1413],{"class":588},"ensureMeterProvider",[503,1415,1297],{"class":517},[503,1417,674],{"class":513},[503,1419,1420],{"class":517}," NodeTelemetryOptions): MeterProvider\n",[354,1422,1423],{},"Metric readers have to be registered before the provider is built, and instruments have to be created after it exists. The OpenTelemetry metrics API has no proxy meter, so an instrument created before a provider is registered stays a no-op for the life of the process.",[617,1425,1427],{"id":1426},"sdk-re-exports","SDK re-exports",[354,1429,1430,1431,464,1434,464,1437,464,1440,464,1443,464,1446,464,1449,464,1452,464,1455,1458,1459,464,1462,464,1465,464,1468,464,1471,464,1474,709],{},"The SDK classes and types a consumer needs to build a pipeline of its own: ",[382,1432,1433],{},"NodeTracerProvider",[382,1435,1436],{},"BasicTracerProvider",[382,1438,1439],{},"MeterProvider",[382,1441,1442],{},"BatchSpanProcessor",[382,1444,1445],{},"SimpleSpanProcessor",[382,1447,1448],{},"InMemorySpanExporter",[382,1450,1451],{},"InMemoryMetricExporter",[382,1453,1454],{},"PeriodicExportingMetricReader",[382,1456,1457],{},"AggregationTemporality",", and the types ",[382,1460,1461],{},"ReadableSpan",[382,1463,1464],{},"SpanProcessor",[382,1466,1467],{},"SpanExporter",[382,1469,1470],{},"IMetricReader",[382,1472,1473],{},"ResourceMetrics",[382,1475,1476],{},"Sampler",[354,1478,1479,1480,1483,1484,1486,1487,1490,1491,1494,1495,1498,1499,464,1501,1504,1505,709],{},"The SDK's mutable span class is re-exported as the type alias ",[382,1481,1482],{},"SdkSpan",", because it is a different thing from the API's ",[382,1485,1182],{}," interface and the two are not interchangeable. It is ",[382,1488,1489],{},"export type",", so it is available to ",[382,1492,1493],{},"import type"," and has no runtime binding. ",[382,1496,1497],{},"SpanProcessor.onStart"," receives an ",[382,1500,1482],{},[382,1502,1503],{},"onEnd"," receives a ",[382,1506,1461],{},[494,1508,1510],{"className":496,"code":1509,"language":498,"meta":499,"style":499},"import { JsonTraceSerializer } from '@vercube\u002Ftelemetry\u002Fotlp';\nimport type { ReadableSpan, SdkSpan, SpanProcessor } from '@vercube\u002Ftelemetry\u002Fsdk';\n\nclass MyProcessor implements SpanProcessor {\n  public onStart(_span: SdkSpan): void {}\n  public onEnd(span: ReadableSpan): void {\n    void JsonTraceSerializer.serializeRequest([span]);\n  }\n  public async forceFlush(): Promise\u003Cvoid> {}\n  public async shutdown(): Promise\u003Cvoid> {}\n}\n",[382,1511,1512,1533,1567,1571,1585,1611,1632,1654,1660,1685,1707],{"__ignoreMap":499},[503,1513,1514,1516,1518,1521,1523,1525,1527,1529,1531],{"class":505,"line":506},[503,1515,510],{"class":509},[503,1517,514],{"class":513},[503,1519,1520],{"class":517}," JsonTraceSerializer",[503,1522,521],{"class":513},[503,1524,524],{"class":509},[503,1526,527],{"class":513},[503,1528,440],{"class":530},[503,1530,534],{"class":513},[503,1532,537],{"class":513},[503,1534,1535,1537,1540,1542,1545,1547,1550,1552,1555,1557,1559,1561,1563,1565],{"class":505,"line":540},[503,1536,510],{"class":509},[503,1538,1539],{"class":509}," type",[503,1541,514],{"class":513},[503,1543,1544],{"class":517}," ReadableSpan",[503,1546,642],{"class":513},[503,1548,1549],{"class":517}," SdkSpan",[503,1551,642],{"class":513},[503,1553,1554],{"class":517}," SpanProcessor",[503,1556,521],{"class":513},[503,1558,524],{"class":509},[503,1560,527],{"class":513},[503,1562,430],{"class":530},[503,1564,534],{"class":513},[503,1566,537],{"class":513},[503,1568,1569],{"class":505,"line":562},[503,1570,565],{"emptyLinePlaceholder":60},[503,1572,1573,1575,1578,1581,1583],{"class":505,"line":568},[503,1574,572],{"class":571},[503,1576,1577],{"class":575}," MyProcessor",[503,1579,1580],{"class":571}," implements",[503,1582,1554],{"class":575},[503,1584,579],{"class":513},[503,1586,1587,1590,1593,1595,1598,1600,1602,1605,1608],{"class":505,"line":582},[503,1588,1589],{"class":571},"  public",[503,1591,1592],{"class":601}," onStart",[503,1594,648],{"class":513},[503,1596,1597],{"class":651},"_span",[503,1599,654],{"class":513},[503,1601,1549],{"class":575},[503,1603,1604],{"class":513},"):",[503,1606,1607],{"class":575}," void",[503,1609,1610],{"class":513}," {}\n",[503,1612,1613,1615,1618,1620,1622,1624,1626,1628,1630],{"class":505,"line":595},[503,1614,1589],{"class":571},[503,1616,1617],{"class":601}," onEnd",[503,1619,648],{"class":513},[503,1621,503],{"class":651},[503,1623,654],{"class":513},[503,1625,1544],{"class":575},[503,1627,1604],{"class":513},[503,1629,1607],{"class":575},[503,1631,579],{"class":513},[503,1633,1634,1637,1639,1641,1644,1647,1649,1652],{"class":505,"line":612},[503,1635,1636],{"class":513},"    void",[503,1638,1520],{"class":517},[503,1640,709],{"class":513},[503,1642,1643],{"class":588},"serializeRequest",[503,1645,1646],{"class":601},"([",[503,1648,503],{"class":517},[503,1650,1651],{"class":601},"])",[503,1653,537],{"class":513},[503,1655,1657],{"class":505,"line":1656},8,[503,1658,1659],{"class":513},"  }\n",[503,1661,1663,1665,1668,1671,1674,1676,1678,1681,1683],{"class":505,"line":1662},9,[503,1664,1589],{"class":571},[503,1666,1667],{"class":571}," async",[503,1669,1670],{"class":601}," forceFlush",[503,1672,1673],{"class":513},"():",[503,1675,976],{"class":575},[503,1677,630],{"class":513},[503,1679,1680],{"class":575},"void",[503,1682,636],{"class":513},[503,1684,1610],{"class":513},[503,1686,1688,1690,1692,1695,1697,1699,1701,1703,1705],{"class":505,"line":1687},10,[503,1689,1589],{"class":571},[503,1691,1667],{"class":571},[503,1693,1694],{"class":601}," shutdown",[503,1696,1673],{"class":513},[503,1698,976],{"class":575},[503,1700,630],{"class":513},[503,1702,1680],{"class":575},[503,1704,636],{"class":513},[503,1706,1610],{"class":513},[503,1708,1710],{"class":505,"line":1709},11,[503,1711,615],{"class":513},[483,1713,440],{"id":1714},"vercubetelemetryotlp",[354,1716,1717,477,1720,1723,1724,1726],{},[382,1718,1719],{},"JsonTraceSerializer",[382,1721,1722],{},"JsonMetricsSerializer"," turn collected signals into the OTLP\u002FJSON wire format without sending them anywhere, which is what a consumer shipping its own transport needs. ",[382,1725,480],{}," uses them to push spans over its own bus.",[494,1728,1730],{"className":496,"code":1729,"language":498,"meta":499,"style":499},"createOtlpTraceExporter(options: OtlpExporterOptions): Promise\u003CSpanExporter>\ncreateOtlpMetricExporter(options: OtlpExporterOptions): Promise\u003CPushMetricExporter>\n",[382,1731,1732,1748],{"__ignoreMap":499},[503,1733,1734,1737,1740,1742,1744,1746],{"class":505,"line":506},[503,1735,1736],{"class":588},"createOtlpTraceExporter",[503,1738,1739],{"class":517},"(options: OtlpExporterOptions): ",[503,1741,994],{"class":575},[503,1743,630],{"class":513},[503,1745,1467],{"class":517},[503,1747,1312],{"class":513},[503,1749,1750,1753,1755,1757,1759,1762],{"class":505,"line":540},[503,1751,1752],{"class":588},"createOtlpMetricExporter",[503,1754,1739],{"class":517},[503,1756,994],{"class":575},[503,1758,630],{"class":513},[503,1760,1761],{"class":517},"PushMetricExporter",[503,1763,1312],{"class":513},[354,1765,1766,1767,1770],{},"Both take ",[382,1768,1769],{},"{ endpoint, headers? }"," and append the OTLP signal path for you. The exporter packages are optional peer dependencies loaded on demand, so a missing one produces a message telling you what to install rather than a module-resolution error at import time.",[483,1772,450],{"id":1773},"vercubetelemetrytesting",[617,1775,1777],{"id":1776},"createtesttelemetry","createTestTelemetry",[494,1779,1781],{"className":496,"code":1780,"language":498,"meta":499,"style":499},"createTestTelemetry(): TestTelemetry\n",[382,1782,1783],{"__ignoreMap":499},[503,1784,1785,1787],{"class":505,"line":506},[503,1786,1777],{"class":588},[503,1788,1789],{"class":517},"(): TestTelemetry\n",[354,1791,1792],{},"Registers in-memory tracer and meter providers plus a context manager, and hands back everything a test needs to assert on what was recorded.",[494,1794,1796],{"className":496,"code":1795,"language":498,"meta":499,"style":499},"import { createTestTelemetry } from '@vercube\u002Ftelemetry\u002Ftesting';\n\nconst telemetry = createTestTelemetry();\n\nafterEach(() => telemetry.reset());\nafterAll(() => telemetry.shutdown());\n\nit('traces the request', async () => {\n  await app.fetch(new Request('http:\u002F\u002Flocalhost\u002Fusers\u002F1'));\n\n  expect(telemetry.span('GET \u002Fusers\u002F:id')).toBeDefined();\n});\n",[382,1797,1798,1819,1823,1838,1842,1866,1888,1892,1917,1952,1956,1989],{"__ignoreMap":499},[503,1799,1800,1802,1804,1807,1809,1811,1813,1815,1817],{"class":505,"line":506},[503,1801,510],{"class":509},[503,1803,514],{"class":513},[503,1805,1806],{"class":517}," createTestTelemetry",[503,1808,521],{"class":513},[503,1810,524],{"class":509},[503,1812,527],{"class":513},[503,1814,450],{"class":530},[503,1816,534],{"class":513},[503,1818,537],{"class":513},[503,1820,1821],{"class":505,"line":540},[503,1822,565],{"emptyLinePlaceholder":60},[503,1824,1825,1827,1830,1832,1834,1836],{"class":505,"line":562},[503,1826,694],{"class":571},[503,1828,1829],{"class":517}," telemetry ",[503,1831,700],{"class":513},[503,1833,1806],{"class":588},[503,1835,971],{"class":517},[503,1837,537],{"class":513},[503,1839,1840],{"class":505,"line":568},[503,1841,565],{"emptyLinePlaceholder":60},[503,1843,1844,1847,1849,1851,1853,1856,1858,1861,1864],{"class":505,"line":582},[503,1845,1846],{"class":588},"afterEach",[503,1848,648],{"class":517},[503,1850,971],{"class":513},[503,1852,663],{"class":571},[503,1854,1855],{"class":517}," telemetry",[503,1857,709],{"class":513},[503,1859,1860],{"class":588},"reset",[503,1862,1863],{"class":517},"())",[503,1865,537],{"class":513},[503,1867,1868,1871,1873,1875,1877,1879,1881,1884,1886],{"class":505,"line":595},[503,1869,1870],{"class":588},"afterAll",[503,1872,648],{"class":517},[503,1874,971],{"class":513},[503,1876,663],{"class":571},[503,1878,1855],{"class":517},[503,1880,709],{"class":513},[503,1882,1883],{"class":588},"shutdown",[503,1885,1863],{"class":517},[503,1887,537],{"class":513},[503,1889,1890],{"class":505,"line":612},[503,1891,565],{"emptyLinePlaceholder":60},[503,1893,1894,1897,1899,1901,1904,1906,1908,1910,1913,1915],{"class":505,"line":1656},[503,1895,1896],{"class":588},"it",[503,1898,648],{"class":517},[503,1900,534],{"class":513},[503,1902,1903],{"class":530},"traces the request",[503,1905,534],{"class":513},[503,1907,642],{"class":513},[503,1909,1667],{"class":571},[503,1911,1912],{"class":513}," ()",[503,1914,663],{"class":571},[503,1916,579],{"class":513},[503,1918,1919,1922,1925,1927,1930,1932,1935,1938,1940,1942,1945,1947,1950],{"class":505,"line":1662},[503,1920,1921],{"class":509},"  await",[503,1923,1924],{"class":517}," app",[503,1926,709],{"class":513},[503,1928,1929],{"class":588},"fetch",[503,1931,648],{"class":601},[503,1933,1934],{"class":513},"new",[503,1936,1937],{"class":588}," Request",[503,1939,648],{"class":601},[503,1941,534],{"class":513},[503,1943,1944],{"class":530},"http:\u002F\u002Flocalhost\u002Fusers\u002F1",[503,1946,534],{"class":513},[503,1948,1949],{"class":601},"))",[503,1951,537],{"class":513},[503,1953,1954],{"class":505,"line":1687},[503,1955,565],{"emptyLinePlaceholder":60},[503,1957,1958,1961,1963,1965,1967,1969,1971,1973,1976,1978,1980,1982,1985,1987],{"class":505,"line":1709},[503,1959,1960],{"class":588},"  expect",[503,1962,648],{"class":601},[503,1964,485],{"class":517},[503,1966,709],{"class":513},[503,1968,503],{"class":588},[503,1970,648],{"class":601},[503,1972,534],{"class":513},[503,1974,1975],{"class":530},"GET \u002Fusers\u002F:id",[503,1977,534],{"class":513},[503,1979,1949],{"class":601},[503,1981,709],{"class":513},[503,1983,1984],{"class":588},"toBeDefined",[503,1986,971],{"class":601},[503,1988,537],{"class":513},[503,1990,1992,1994,1996],{"class":505,"line":1991},12,[503,1993,822],{"class":513},[503,1995,660],{"class":517},[503,1997,537],{"class":513},[354,1999,2000,2003,2004,2007,2008,2011,2012,2015,2016,2019],{},[382,2001,2002],{},"spans()"," returns finished spans, ",[382,2005,2006],{},"span(name)"," finds one, ",[382,2009,2010],{},"collect()"," collects the registered instruments, ",[382,2013,2014],{},"settle()"," waits for spans whose end was deferred (body capture defers it), and ",[382,2017,2018],{},"reset()"," clears everything between tests.",[2021,2022,2023],"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":499,"searchDepth":506,"depth":540,"links":2025},[2026,2033,2034,2035,2036,2042,2043],{"id":485,"depth":540,"text":93,"children":2027},[2028,2029,2030,2031,2032],{"id":503,"depth":562,"text":503},{"id":829,"depth":562,"text":830},{"id":883,"depth":562,"text":884},{"id":954,"depth":562,"text":955},{"id":1009,"depth":562,"text":1010},{"id":1101,"depth":540,"text":400},{"id":1201,"depth":540,"text":410},{"id":1268,"depth":540,"text":420},{"id":1278,"depth":540,"text":430,"children":2037},[2038,2039,2040,2041],{"id":1284,"depth":562,"text":1285},{"id":1359,"depth":562,"text":1360},{"id":1388,"depth":562,"text":1389},{"id":1426,"depth":562,"text":1427},{"id":1714,"depth":540,"text":440},{"id":1773,"depth":540,"text":450,"children":2044},[2045],{"id":1776,"depth":562,"text":1777},"The Telemetry token and the package's entry points","md",null,{},{"title":101,"description":2046},"k9NMnsFPrb8t45ztmM5H4bN49EUJikCgEPAKEqOxnmk",[2053,2055],{"title":70,"path":98,"stem":99,"description":2054,"children":-1},"OpenTelemetry tracing, metrics and log correlation for Vercube applications",{"title":105,"path":106,"stem":107,"description":2056,"children":-1},"Producing spans and metrics from a library of your own",1791443501195]