@datadog/esbuild-plugin 3.2.12-dev.0 → 3.2.12-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.js +1 -1
- package/dist/src/index.mjs +1 -1
- package/package.json +1 -1
package/dist/src/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("unplugin"),t=require("chalk"),n=require("async-retry"),o=require("buffer"),r=require("fs/promises"),i=require("fs"),s=require("json-stream-stringify"),a=require("path"),u=require("stream"),c=require("eslint-scope"),d=require("node:module"),l=require("crypto"),p=require("os"),f=require("jszip"),m=require("glob"),g=require("esbuild"),h=require("rollup/parseAst"),y=require("node:async_hooks"),b=require("p-queue"),w=require("@jridgewell/remapping"),v=require("pretty-bytes"),$=require("perf_hooks"),k=require("@datadog/js-instrumentation-wasm"),x=require("simple-git"),E=require("magic-string");function S(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var I=S(c);const j="__datadog-helper-file",A=new RegExp(j),D=["development","production","test"],P=["datadoghq.com","us3.datadoghq.com","us5.datadoghq.com","datadoghq.eu","ddog-gov.com","us2.ddog-gov.com","ap1.datadoghq.com","ap2.datadoghq.com","datad0g.com"],M=P[0],C="datadog-build-plugins",O=t.bold.green,N=t.bold.yellow,T=["API_KEY","APP_KEY","SOURCEMAP_INTAKE_URL","APPS_PACKAGE_DIR","OAUTH_ACCESS_TOKEN","SITE"],R=e=>process.env[`DATADOG_${e}`]||process.env[`DD_${e}`],_=e=>{const t=[];return process.env[`DD_${e}`]&&t.push(`DD_${e}`),process.env[`DATADOG_${e}`]&&t.push(`DATADOG_${e}`),t},F=(e,t,n)=>{if(void 0===e)return;const o=(e=>{if("string"!=typeof e)return;const t=e.toLowerCase(),n=P.find((e=>e===t));if(n)return{site:n};const o=P.filter((e=>t.endsWith(`.${e}`)));if(!o.length)return;const r=o.reduce(((e,t)=>t.length>e.length?t:e)),i=t.slice(0,t.length-r.length-1);return i&&/^[a-z0-9-]+$/.test(i)?{site:r,subdomain:i}:void 0})(e);if(o)return o;n.push(`${t} "${e}" is not a supported Datadog site. See the site parameters in https://docs.datadoghq.com/getting_started/site/.`)},L=e=>null===e||"object"!=typeof e?"":Object.entries(e).map((([e,t])=>`${e}: ${"string"==typeof t?t:JSON.stringify(t)}`)).join(", "),q=[400,401,403,404,405,409,413],z=async e=>{const{auth:t,url:o,method:r="GET",getData:i,type:s="text",signal:a}=e,u={retries:0===e.retries?0:e.retries||5,onRetry:e.onRetry,maxTimeout:e.maxTimeout,minTimeout:e.minTimeout};return n((async(e,n)=>{let u;try{const e={method:r,duplex:"half",signal:a};let n={"X-Datadog-Origin":"build-plugins"};if(t&&"accessToken"in t?t.accessToken&&(n.Authorization=`Bearer ${t.accessToken}`):(t?.apiKey&&(n["DD-API-KEY"]=t.apiKey),t?.appKey&&(n["DD-APPLICATION-KEY"]=t.appKey)),"function"==typeof i){const{data:t,headers:o}=await i();e.body=t,n={...n,...o}}u=await fetch(o,{...e,headers:n})}catch(t){return e(t),{}}if(!u.ok){let t=`HTTP ${u.status} ${u.statusText}`;try{const e=(e=>{try{const t=JSON.parse(e);if(null!==t&&"object"==typeof t)if("errors"in t&&Array.isArray(t.errors)){const e=t.errors.map(L).filter((e=>e.length>0)).join("\n");if(e)return e}else{const e=L(t);if(e)return e}}catch{}return e})(await u.text());e&&(t+=`\n${e}`)}catch{}if(q.includes(u.status))return e(new Error(t)),{};throw new Error(t)}try{let e;return e="json"===s?await u.json():await u.text(),e}catch(t){return e(t),{}}}),u)},B=e=>({message:t,context:n})=>z({retries:2,minTimeout:100,url:"https://browser-http-intake.logs.datadoghq.com/v1/input/pub44d5f4eb86e1392037b7501f7adc540e",method:"POST",type:"json",getData:async()=>{const o={ddsource:e.packageName||C,message:t,service:"build-plugins",team:"language-foundations",env:e.env,version:e.version,bundler:{name:e.bundler.name,version:e.bundler.version},metadata:e.metadata,...n};return{data:JSON.stringify(o),headers:{"Content-Type":"application/json"}}}}),V=e=>e.replace(/^@dd\/(datadog-|internal-)?|^datadog-|-plugin$/g,""),U=e=>e.includes(j),W=e=>{const t={bundler:e.bundler,errors:e.errors,metadata:e.metadata,warnings:e.warnings,logs:e.logs,timings:e.timings,start:e.start,end:e.end,duration:e.duration,writeDuration:e.writeDuration,entries:[],inputs:[],outputs:[]};for(const n of e.entries||[]){const e={...n,inputs:[],outputs:[]};n.inputs&&(e.inputs=n.inputs.map((e=>e.filepath))),n.outputs&&(e.outputs=n.outputs.map((e=>e.filepath))),t.entries.push(e)}for(const n of e.inputs||[]){const e={...n,dependencies:[],dependents:[]};if(n.dependencies)for(const t of n.dependencies)e.dependencies.push(t.filepath);if(n.dependents)for(const t of n.dependents)e.dependents.push(t.filepath);t.inputs.push(e)}for(const n of e.outputs||[]){const e={...n,inputs:[]};n.inputs&&(e.inputs=n.inputs.map((e=>e.filepath))),t.outputs.push(e)}return t},K=e=>{const t=!!e.errorTracking?.sourcemaps,n=e.enableGit??!0;return t&&n},H=e=>{const t=Math.floor(e/1e3/60/60/24),n=new Date(e-24*t*60*60*1e3),o=n.getUTCHours(),r=n.getUTCMinutes(),i=n.getUTCSeconds(),s=n.getUTCMilliseconds(),a=`${t?`${t}d `:""}${o?`${o}h `:""}${r?`${r}m `:""}${i?`${i}s`:""}`.trim();return`${a}${!a||s?` ${s}ms`:""}`.trim()},J=(e,t=60,n="[...]")=>{if(e.length<=t)return e;const o=Math.max(4,t-n.length),r=Math.min(10,Math.floor(o/2)),i=o-r;return`${e.slice(0,r)}${n}${e.slice(-i)}`},G=(e="")=>{try{if(!e||e.startsWith("git@"))return e;const t=new URL(e),n="/"===t.pathname?"":t.pathname;return`${t.protocol?`${t.protocol}//`:""}${t.host}${n}`}catch{return e}},Y=e=>e.trim().toLowerCase().replace(/[^a-z0-9_:./-]+/g,"_").replace(/^_+|_+$/g,"")||"unknown",Q=e=>Object.entries(e).map((([e,n])=>` - ${e}: ${t.bold.green((e=>{if(void 0===e)return"undefined";if(null===e)return"null";if(Array.isArray(e))return e.join(", ");if("object"==typeof e)try{return JSON.stringify(e,null,2)}catch{return String(e)}return e?.toString()??""})(n))}`)).join("\n"),X={debug:0,info:1,warn:2,error:3,none:4},Z=e=>e.split(">").map(V).join(">"),ee=(e,n,o,r)=>{const i=Z(e);return(s,a="debug",{forward:u,context:c}={})=>{let d=t.dim,l=console.log;"error"===a?(d=t.red,l=console.error):"warn"===a?(d=t.yellow,l=console.warn):"info"===a&&(d=t.cyan,l=console.log);const p=`[${n.metadata?.name?`${n.metadata.name}|`:""}${a}|${n.bundler.name}|${i}]`,f="string"==typeof s?s:JSON.stringify(s,null,2);if(o.logs.push({bundler:n.bundler.name,pluginName:e,type:a,message:f,time:Date.now()}),"error"===a&&o.errors.push(f),"warn"===a&&o.warnings.push(f),u){const t=async()=>{try{const t=B(n);await t({message:f,context:{plugin:e,status:a,...c}})}catch(t){ee(e,n,o,r)(`Error forwarding log: ${t}`,"debug")}};o.queue.push(t())}X[a]>=X[r]&&l(`${d(p)} ${f}`)}},te=(e,n,o)=>(r,i={})=>{const{level:s="debug",start:a=!0,log:u=!0,tags:c=[]}=i,d={pluginName:e,label:r,spans:[],tags:[...c,`plugin:${e}`,`level:${s}`],logLevel:s,total:0};n.push(d);const l=()=>d.spans.filter((e=>!e.end)),p=n=>{l().length||(!d.spans.length&&u&&o(t.dim(`[${t.cyan(r)}] : start`),"debug"),d.spans.push({start:n||Date.now(),tags:[`plugin:${e}`]}))},f=(e,n=!0)=>{const i=l();if(i?.length){i.length>1&&o(`Timer ${t.cyan(r)} has more than one ongoing span.`,"debug");for(const t of i)t.end=e||Date.now()}else n&&o(`Timer ${t.cyan(r)} cannot be paused, no ongoing span.`,"debug")};if(a){let e;"number"==typeof a&&(e=a),p(e)}return{timer:d,resume:p,end:e=>{f(e,!1);const n=d.spans.reduce(((e,t)=>e+(t.end-t.start)),0);d.total=n,u&&o(`[${t.cyan(r)}] : ${t.cyan(H(n))}`,s)},pause:f,tag:(e,t={})=>{const{span:n=!1}=t;if(n){const t=l();for(const n of t)n.tags.push(...e)}else d.tags.push(...e)}}},ne=(e,t,n="warn")=>o=>{const r=ee(o,e,t,n);return{getLogger:r=>ne(e,t,n)(`${Z(o)}>${r}`),time:te(o,t.timings,r),error:(e,t)=>r(e,"error",t),warn:(e,t)=>r(e,"warn",t),info:(e,t)=>r(e,"info",t),debug:(e,t)=>r(e,"debug",t)}},oe=["buildEnd","buildStart","load","resolveId","transform","watchChange","writeBundle","buildRoot","init","buildReport","bundlerReport","git"],re=(e,t,n,o)=>{const r=n=>function(...r){const i=o.time(`${e} | ${t}`,{log:!1,tags:["type:hook",`hook:${t}`]}),s=n.apply(this,r);return s instanceof Promise?s.finally((()=>{i.end()})):(i.end(),s)};return"object"==typeof n&&null!==n&&"handler"in n?{...n,handler:r(n.handler)}:r(n)},ie=(e,t,n)=>{const o=e.getLogger(C);return e=>{const r=o.time(`hook | init ${n}`,{log:!1}),i=t(e).map((e=>((e,t)=>{const n={...e},o=V(e.name);for(const r of oe){const i=e[r];i&&(n[r]=re(o,r,i,t))}return n})(e,o))),s=i.map((e=>`plugin:${e.name}`));return r.tag(s),r.end(),i}},se=new Set,ae=(e,t,n)=>{const o=e[t];if(o&&"object"==typeof o&&"enable"in o){const e=o.enable;if("boolean"!=typeof e&&void 0!==e&&(se.has(t)||(se.add(t),n.warn(`\`${t}.enable\` should be a boolean, got ${typeof e}. Non-boolean values are coerced today but will be rejected in the next major.`))),void 0!==e)return!!e}return!!o},ue="apps",ce="datadog-apps-plugin",de="datadog-app-assets.zip",le=/\.backend\.(ts|tsx|js|jsx)$/,pe="?dd-local-exec",fe=new RegExp(`${le.source.slice(0,-1)}(\\?.*)?$`),me=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"],ge=e=>{const t=e?.maxRetries??10,n=e?.timeoutMs??4e4;if(!Number.isInteger(t)||t<1)throw new Error("apps.longPolling.maxRetries must be an integer >= 1.");if(!Number.isFinite(n)||n<=0)throw new Error("apps.longPolling.timeoutMs must be a positive number.");return{maxRetries:t,timeoutMs:n,jitter:e?.jitter??!0,exponentialBackoff:e?.exponentialBackoff??!0}},he=async e=>r.rm(e,{force:!0,maxRetries:3,recursive:!0}),ye=async e=>r.mkdir(e,{recursive:!0}),be=(e,t)=>{var n;n=a.dirname(e),i.mkdirSync(n,{recursive:!0}),i.writeFileSync(e,t,{encoding:"utf-8"})},we=e=>r.readFile(e,{encoding:"utf-8"}),ve=e=>{try{return i.existsSync(e)}catch(e){if("ENOENT"===e.code)return!1;throw e}},$e=async(e,t)=>{if("function"==typeof i.openAsBlob){const n=await i.openAsBlob(e,{type:t.contentType});return new o.File([n],t.filename)}{const n=u.Readable.toWeb(i.createReadStream(e)),r=await new Response(n).blob();return new o.File([r],t.filename,{type:t.contentType})}},ke=async e=>{const t={empty:!1,exists:!0};try{const{size:n}=await r.stat(e);0===n&&(t.empty=!0)}catch(e){if("ENOENT"!==e.code)throw e;t.exists=!1}return t};var xe=(e=>(e[e.BEFORE=0]="BEFORE",e[e.MIDDLE=1]="MIDDLE",e[e.AFTER=2]="AFTER",e))(xe||{});const Ee="Set DD_API_KEY and DD_APP_KEY for API-key auth, or set DD_OAUTH_ACCESS_TOKEN (or DATADOG_OAUTH_ACCESS_TOKEN) — e.g. by starting the dev server with `datadog-apps dev`.";class Se extends Error{constructor(){super(`Missing authentication. ${Ee}`),this.statusCode=400,this.name="MissingAuthenticationError"}}function Ie(e,t){if(!function(e){return"Program"===e.type}(e))throw new Error(`Expected a Program node from this.parse() for ${t}, got ${e.type}`);return e}function je(e,t){return"object"==typeof e&&null!==e&&"type"in e&&e.type===t}function Ae(e){return je(e,"Literal")&&"value"in e&&"string"==typeof e.value}function De(e){return"type"===e.importKind||"type"===e.exportKind}function Pe(e){return je(e,"VariableDeclarator")}function Me(e){return Ae(e)?e.value:function(e){return!!(je(e,"TemplateLiteral")&&"expressions"in e&&"quasis"in e)&&Array.isArray(e.expressions)&&0===e.expressions.length&&Array.isArray(e.quasis)&&1===e.quasis.length}(e)?e.quasis[0].value.cooked??void 0:void 0}function Ce(e,t){return function(e,t){const n=Ie(e,t),o=function(e){const t=new Map;for(const n of e.body)if("FunctionDeclaration"===n.type&&n.id)t.set(n.id.name,{kind:"function"});else if("ClassDeclaration"===n.type&&n.id)t.set(n.id.name,{kind:"class"});else if("VariableDeclaration"===n.type)for(const e of n.declarations)"Identifier"===e.id.type&&t.set(e.id.name,{kind:"variable",init:e.init});else if("ImportDeclaration"===n.type)for(const e of n.specifiers)t.set(e.local.name,{kind:"import"});return t}(n),r=[];for(const e of n.body){if("ExportDefaultDeclaration"===e.type)throw new Error(`Default exports are not supported in .backend.ts files. Use a named export instead: ${t}`);if("ExportAllDeclaration"===e.type)throw new Error(`"export *" is not supported in .backend.ts files. Use explicit named exports instead: ${t}`);if("ExportNamedDeclaration"!==e.type)continue;e.declaration&&r.push(...Te(e.declaration,t).map((e=>({kind:"local",name:e,localName:e}))));const n="string"==typeof e.source?.value?e.source.value:null;for(const i of e.specifiers){if("Identifier"!==i.exported.type)continue;if("default"===i.exported.name)throw new Error(`Default exports are not supported in .backend.ts files. Use a named export instead: ${t}`);const e="Identifier"===i.local.type?i.local.name:"string"==typeof i.local.value?i.local.value:null;e&&(n?r.push({kind:"re-export",name:i.exported.name,localName:e,source:n}):("Identifier"===i.local.type&&Re(e,o,t),r.push({kind:"local",name:i.exported.name,localName:e})))}}return r}(e,t).map((e=>e.name))}const Oe=new Set(["ArrayExpression","Literal","ObjectExpression","TemplateLiteral"]);function Ne(e){return null==e||Oe.has(e.type)}function Te(e,t){if("FunctionDeclaration"===e.type&&e.id)return[e.id.name];if("ClassDeclaration"===e.type)throw new Error(`Class exports are not supported in .backend.ts files. Only function exports are allowed: ${t}`);if("VariableDeclaration"===e.type)return e.declarations.flatMap((e=>{if("Identifier"!==e.id.type)throw new Error(`Destructured exports are not supported in backend files. Use individual named exports instead: ${t}`);if(Ne(e.init))throw new Error(`Non-function export "${e.id.name}" in backend file ${t}. Only function exports are supported — use "export function ${e.id.name}(…) { }" instead.`);return[e.id.name]}));throw new Error(`Unsupported export declaration type "${e.type}" in backend file ${t}. Only function and variable exports are allowed.`)}function Re(e,t,n){const o=t.get(e);if(o){if("class"===o.kind)throw new Error(`Class exports are not supported in .backend.ts files. Only function exports are allowed: ${n}`);if("variable"===o.kind&&Ne(o.init))throw new Error(`Non-function export "${e}" in backend file ${n}. Only function exports are supported — use "export function ${e}(…) { }" instead.`)}}function _e(e,t,n){const o={state:t},r=e=>{n._?.(e,o),function(e,t){return t[e.type]}(e,n)?.(e,o);for(const t of Object.keys(e))"type"!==t&&i(e[t])},i=e=>{if(Array.isArray(e))for(const t of e)Fe(t)&&r(t);else Fe(e)&&r(e)};r(e)}function Fe(e){return"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type}function Le(e){_e(e,null,{_(e){const t=e;t.range||"number"!=typeof t.start||"number"!=typeof t.end||(t.range=[t.start,t.end])}});const t=I.analyze(e,{ecmaVersion:2022,ignoreEval:!0,sourceType:"module"}),n=new Map;for(const e of t.scopes)for(const t of e.references)n.set(t.identifier,t);return{scopeManager:t,referencesByIdentifier:n,moduleScope:Ve(t)}}function qe(e,t){return t.referencesByIdentifier.get(e)?.resolved??void 0}function ze(e){return e.defs.some((e=>"ImportBinding"===e.type))}function Be(e,t){return t.moduleScope.set.get(e)}function Ve(e){return e.scopes.find((e=>"module"===e.type))??e.globalScope}function Ue(e,t,n){const o={scopeAnalysis:t,unsupportedAliases:We(e,t)},r=[];return _e(e,o,{CallExpression(e,{state:t}){(function(e,t,n){const o=e.callee;if("Identifier"===o.type){if(Ge(o,t.unsupportedAliases,t.scopeAnalysis))throw Ze(n,"action-catalog call aliases");if(Ge(o,t.scopeAnalysis.actionFunctions,t.scopeAnalysis)){if(e.optional)throw Ze(n,"optional action-catalog calls");return!0}return!1}if("MemberExpression"!==o.type)return!1;if(!Ke(o,t.scopeAnalysis))return!1;if(e.optional||Je(o))throw Ze(n,"optional or computed action-catalog namespace calls");return!0})(e,t,n)&&r.push(e)}}),r}function We(e,t){const n=new Set;return _e(e,t,{VariableDeclarator(e,{state:t}){for(const o of function(e,t){if("Identifier"===e.id.type&&"Identifier"===e.init?.type&&Ge(e.init,t.actionFunctions,t))return Qe(e,t,[e.id.name]);if("Identifier"===e.id.type&&"MemberExpression"===e.init?.type&&Ke(e.init,t))return Qe(e,t,[e.id.name]);if("ObjectPattern"!==e.id.type||"Identifier"!==e.init?.type||!Ge(e.init,t.actionNamespaces,t))return[];const n=e.id.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:Xe(e.value))).map((e=>e.name));return Qe(e,t,n)}(e,t))n.add(o)},AssignmentExpression(e,{state:t}){for(const o of function(e,t){if("Identifier"===e.left.type&&"Identifier"===e.right.type&&Ge(e.right,t.actionFunctions,t))return Ye([e.left],t);if("Identifier"===e.left.type&&"MemberExpression"===e.right.type&&Ke(e.right,t))return Ye([e.left],t);if("ObjectPattern"!==e.left.type||"Identifier"!==e.right.type||!Ge(e.right,t.actionNamespaces,t))return[];const n=e.left.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:Xe(e.value)));return Ye(n,t)}(e,t))n.add(o)}}),n}function Ke(e,t){const n=He(e);return!!n&&Ge(n,t.actionNamespaces,t)}function He(e){return"Identifier"===e.object.type?e.object:"MemberExpression"===e.object.type?He(e.object):void 0}function Je(e){return!(!e.optional&&!e.computed)||"MemberExpression"===e.object.type&&Je(e.object)}function Ge(e,t,n){return function(e,t,n){const o=qe(e,n);return!!o&&t.has(o)}(e,t,n.moduleScope)}function Ye(e,t){return e.flatMap((e=>{const n=qe(e,t.moduleScope);return n?[n]:[]}))}function Qe(e,t,n){const o=new Set(n);return t.moduleScope.scopeManager.getDeclaredVariables(e).filter((e=>o.has(e.name)))}function Xe(e){switch(e.type){case"Identifier":return[e];case"ObjectPattern":return e.properties.flatMap((e=>"RestElement"===e.type?Xe(e.argument):Xe(e.value)));case"ArrayPattern":return e.elements.flatMap((e=>e?Xe(e):[]));case"RestElement":return Xe(e.argument);case"AssignmentPattern":return Xe(e.left);case"MemberExpression":return[]}}function Ze(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const et="@datadog/action-catalog";function tt(e,t,n){const o=e.get(t);if(!o)return ut(t,[],n.name);const r=qe(n,o.scopeAnalysis);return r?function(e,t){return t.defs.some((t=>t.name===e))}(n,r)?ct(t,[],n.name):rt({modules:e,visitedExports:new Set},t,r,[]):ct(t,[],n.name)}function nt(e,t,n,o){const r=e.modules.get(t);if(!r)return function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-module-record",requestKind:"export",exportName:n,message:`Module '${e}' was not collected while resolving export '${n}'.`,hops:t}}(t,o,n);if("default"===n)return st(t,o,n);const i=`${t}\0${n}`;if(e.visitedExports.has(i))return function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"cycle",exportName:n,message:`Resolving export '${n}' from module '${e}' would cycle through the module graph.`,hops:t}}(t,o,n);e.visitedExports.add(i);try{const t=r.exportsByName.get(n);return t?function(e,t,n,o,r){if("unsupported"===o.kind)return function(e,t,n,o){return{kind:"unsupported",moduleId:e,reason:"unsupported-export",exportName:n,exportReason:o,message:`Export '${n}' from module '${e}' is unsupported: ${o}.`,hops:t}}(t.id,r,n,o.reason);if("re-export"===o.kind)return"default"===o.importedName?st(t.id,r,n):nt(e,o.resolvedId,o.importedName,[...r,{kind:"re-export",moduleId:t.id,exportName:n,sourceModuleId:o.resolvedId,sourceExportName:o.importedName}]);return rt(e,t.id,o.variable,[...r,{kind:"local-export",moduleId:t.id,exportName:n,localName:o.variable.name}])}(e,r,n,t,o):function(e,t,n,o){let r;for(const i of t.starExports){const s=nt(e,i.resolvedId,n,[...o,{kind:"star-export",moduleId:t.id,exportName:n,sourceModuleId:i.resolvedId}]);if("unsupported"===s.kind){if("missing-export"===s.reason)continue;return s}if(!r||!ot(r,s)){if(r)return it(t.id,o,n);r=s}}return r??function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-export",exportName:n,message:`Module '${e}' does not expose export '${n}'.`,hops:t}}(t.id,o,n)}(e,r,n,o)}finally{e.visitedExports.delete(i)}}function ot(e,t){return e.moduleId===t.moduleId&&e.variable===t.variable}function rt(e,t,n,o){const r=e.modules.get(t);if(!r)return ut(t,o,n.name);const i=r.importsByVariable.get(n);if(i)return function(e,t,n,o,r){if("default"===o.kind)return at(t,r,n);if("namespace"===o.kind)return function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"namespace-import",variableName:n,message:`Variable '${n}' in module '${e}' is an unsupported namespace import.`,hops:t}}(t,r,n);if("default"===o.importedName)return at(t,r,n);return nt(e,o.resolvedId,o.importedName,[...r,{kind:"import",moduleId:t,localName:n,exportName:o.importedName,sourceModuleId:o.resolvedId}])}(e,r.id,n.name,i,o);const s=r.topLevelBindingsByVariable.get(n);return s?"const"===s.kind?{kind:"local",moduleId:r.id,variable:n,binding:s,hops:o}:"mutable"===s.kind?function(e,t,n,o){return{kind:"unsupported",moduleId:e,reason:"mutable-binding",variableName:n,declarationKind:o,message:`Variable '${n}' in module '${e}' is declared with mutable '${o}'.`,hops:t}}(r.id,o,n.name,s.declarationKind):function(e,t,n,o){return{kind:"unsupported",moduleId:e,reason:"unsupported-binding",variableName:n,bindingReason:o,message:`Variable '${n}' in module '${e}' has unsupported binding: ${o}.`,hops:t}}(r.id,o,n.name,s.reason):function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-static-binding",variableName:n,message:`Variable '${n}' in module '${e}' does not have a recorded top-level static binding.`,hops:t}}(r.id,o,n.name)}function it(e,t,n){return{kind:"unsupported",moduleId:e,reason:"ambiguous-star-export",exportName:n,message:`Module '${e}' exposes ambiguous star exports for '${n}'.`,hops:t}}function st(e,t,n){return{kind:"unsupported",moduleId:e,reason:"default-export",exportName:n,message:`Export '${n}' from module '${e}' resolves through an unsupported default export.`,hops:t}}function at(e,t,n){return{kind:"unsupported",moduleId:e,reason:"default-import",variableName:n,message:`Variable '${n}' in module '${e}' is an unsupported default import.`,hops:t}}function ut(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-module-record",requestKind:"variable",variableName:n,message:`Module '${e}' was not collected while resolving variable '${n}'.`,hops:t}}function ct(e,t,n){return{kind:"unsupported",moduleId:e,reason:"unresolved-identifier",variableName:n,message:`Identifier '${n}' in module '${e}' is not a resolvable reference.`,hops:t}}function dt(e,t,n){const o=$t(n);switch(o.type){case"Literal":return function(e,t){if("string"==typeof t.value)return{kind:"resolved",moduleId:e,value:t.value};return function(e,t){return{kind:"unsupported",moduleId:e,reason:"non-string-literal",valueType:t,message:`Literal value type '${t}' in module '${e}' is not a string.`}}(e,typeof t.value)}(t,o);case"TemplateLiteral":return function(e,t){if(t.expressions.length>0)return function(e){return{kind:"unsupported",moduleId:e,reason:"dynamic-template-literal",message:`Dynamic template literals in module '${e}' cannot be resolved to static strings.`}}(e);return{kind:"resolved",moduleId:e,value:t.quasis.map((e=>e.value.cooked??e.value.raw)).join("")}}(t,o);case"Identifier":return function(e,t,n){const o=tt(e.modules,t,n);if("unsupported"===o.kind)return Pt(o,n.name);if(!o.binding.expression)return Mt(o.moduleId,o.variable.name);if(e.seenVariables.has(o.variable))return St(o.moduleId,o.variable.name);e.seenVariables.add(o.variable);try{return dt(e,o.moduleId,o.binding.expression)}finally{e.seenVariables.delete(o.variable)}}(e,t,o);case"MemberExpression":return function(e,t,n){const o=lt(e,t,n);if("unsupported"===o.kind)return o;return dt(e,o.moduleId,o.expression)}(e,t,o);default:return function(e,t){return{kind:"unsupported",moduleId:e,reason:"unsupported-expression",expressionType:t,message:`Expression type '${t}' in module '${e}' cannot be resolved to a static string.`}}(t,o.type)}}function lt(e,t,n){if(n.optional)return function(e){return{kind:"unsupported",moduleId:e,reason:"optional-member-expression",message:`Optional member expressions in module '${e}' cannot be resolved to static strings.`}}(t);if(n.computed)return function(e){return{kind:"unsupported",moduleId:e,reason:"computed-member-expression",message:`Computed member expressions in module '${e}' cannot be resolved to static strings.`}}(t);if("Identifier"!==n.property.type)return function(e,t){return{kind:"unsupported",moduleId:e,reason:"non-static-member-property",propertyType:t,message:`Member property type '${t}' in module '${e}' is not statically named.`}}(t,n.property.type);const o=pt(e,t,n.object);return"unsupported"===o.kind?o:function(e,t,n){let o;for(const r of t.properties){if("SpreadElement"===r.type)return Dt(e);if(r.computed)return Et(e);if(vt(r)===n){if(o)return It(e,n);if("init"!==r.kind)return xt(e,n);if(!ft(r))return At(e,n,r.value.type);o=r}}if(!o)return function(e,t){return{kind:"unsupported",moduleId:e,reason:"missing-object-property",propertyName:t,message:`Static object in module '${e}' does not have property '${t}'.`}}(e,n);return{kind:"resolved",moduleId:e,expression:o.value}}(o.moduleId,o.expression,n.property.name)}function pt(e,t,n){if("Super"===n.type)return jt(t,n.type);const o=$t(n);if("ObjectExpression"===o.type)return{kind:"resolved",moduleId:t,expression:o};if("MemberExpression"===o.type){const n=lt(e,t,o);return"unsupported"===n.kind?n:pt(e,n.moduleId,n.expression)}if("Identifier"!==o.type)return jt(t,o.type);const r=tt(e.modules,t,o);if("unsupported"===r.kind)return Pt(r,o.name);if(!r.binding.expression)return Mt(r.moduleId,r.variable.name);if(e.mutatedImportedObjectVariables.has(r.variable))return function(e,t){return{kind:"unsupported",moduleId:e,reason:"imported-object-mutation",variableName:t,message:`Imported object '${t}' from module '${e}' is mutated in the module graph.`}}(r.moduleId,r.variable.name);if(e.seenVariables.has(r.variable))return St(r.moduleId,r.variable.name);e.seenVariables.add(r.variable);try{return pt(e,r.moduleId,r.binding.expression)}finally{e.seenVariables.delete(r.variable)}}function ft(e){const{value:t}=e;return"ObjectPattern"!==t.type&&"ArrayPattern"!==t.type&&"RestElement"!==t.type&&"AssignmentPattern"!==t.type}function mt(e){const t=new Set;for(const n of e.values())_e(n.ast,{modules:e,mutatedVariables:t,record:n},{AssignmentExpression(e,{state:t}){ht(e.left,t)},UpdateExpression(e,{state:t}){ht(e.argument,t)},UnaryExpression(e,{state:t}){"delete"===e.operator&&ht(e.argument,t)},ForInStatement(e,{state:t}){gt(e.left,t)},ForOfStatement(e,{state:t}){gt(e.left,t)}});return t}function gt(e,t){"VariableDeclaration"!==e.type&&ht(e,t)}function ht(e,t){if("Identifier"!==e.type)if("MemberExpression"!==e.type)if("ObjectPattern"!==e.type)if("ArrayPattern"!==e.type)"RestElement"!==e.type?"AssignmentPattern"===e.type&&ht(e.left,t):ht(e.argument,t);else for(const n of e.elements)n&&ht(n,t);else for(const n of e.properties)ht("RestElement"===n.type?n.argument:n.value,t);else{const n=wt(e);n&&yt(n,t)}else yt(e,t)}function yt(e,t){const n=bt(t,e,new Set);n&&t.mutatedVariables.add(n)}function bt(e,t,n){const o=qe(t,e.record.scopeAnalysis);if(!o||n.has(o))return;if(n.add(o),ze(o)){const n=tt(e.modules,e.record.id,t);return"local"===n.kind?n.variable:void 0}const r=function(e){for(const t of e.defs){const e=t.node;if("VariableDeclarator"===e.type&&e.init)return e.init}return}(o);if(!r)return;const i=function(e){const t=$t(e);if("Identifier"===t.type)return t;if("MemberExpression"===t.type)return wt(t);return}(r);return i?bt(e,i,n):void 0}function wt(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?wt(e.object):void 0}function vt(e){return"Identifier"===e.key.type?e.key.name:"Literal"===e.key.type&&"string"==typeof e.key.value?e.key.value:void 0}function $t(e){let t=e;for(;kt(t);)t=t.expression;return t}function kt(e){const t=e.type;return("TSAsExpression"===t||"TSSatisfiesExpression"===t||"TSNonNullExpression"===t||"TSTypeAssertion"===t)&&!!e.expression}function xt(e,t){return{kind:"unsupported",moduleId:e,reason:"accessor-object-property",propertyName:t,message:`Static object property '${t}' in module '${e}' is an accessor.`}}function Et(e){return{kind:"unsupported",moduleId:e,reason:"computed-object-property",message:`Computed object properties in module '${e}' cannot be resolved to static strings.`}}function St(e,t){return{kind:"unsupported",moduleId:e,reason:"cycle",variableName:t,message:`Resolving variable '${t}' in module '${e}' would cycle through static string values.`}}function It(e,t){return{kind:"unsupported",moduleId:e,reason:"duplicate-object-property",propertyName:t,message:`Static object in module '${e}' has duplicate property '${t}'.`}}function jt(e,t){return{kind:"unsupported",moduleId:e,reason:"non-object-member-value",expressionType:t,message:`Expression type '${t}' in module '${e}' is not a static object value.`}}function At(e,t,n){return{kind:"unsupported",moduleId:e,reason:"unsupported-object-property-value",propertyName:t,valueType:n,message:`Static object property '${t}' in module '${e}' has unsupported value type '${n}'.`}}function Dt(e){return{kind:"unsupported",moduleId:e,reason:"object-spread",message:`Object spreads in module '${e}' cannot be resolved to static strings.`}}function Pt(e,t){return{kind:"unsupported",moduleId:e.moduleId,reason:"static-definition-unsupported",variableName:t,definition:e,message:`Variable '${t}' could not be resolved to a static definition: ${e.message}`}}function Mt(e,t){return{kind:"unsupported",moduleId:e,reason:"uninitialized-const",variableName:t,message:`Const variable '${t}' in module '${e}' does not have an initializer.`}}const Ct=new Set(["node_modules",".yarn"]);function Ot(e,t,n,o=[]){if(!Xt(e,t))return null;const r=Ie(n,e),i=Le(r),s=function(e,t){const n=Nt(e);return t.map(((e,t)=>({source:n[t]??e,resolvedId:e})))}(r,o);return{id:e,ast:r,scopeAnalysis:i,staticDependencies:s,unsupportedDependencies:Yt(r),importsByVariable:Tt(r,i,s),exportsByName:Rt(r,i,s),starExports:Lt(r,s),topLevelBindingsByVariable:qt(r,i)}}function Nt(e){return e.body.flatMap((e=>("ImportDeclaration"===e.type||"ExportNamedDeclaration"===e.type||"ExportAllDeclaration"===e.type)&&e.source&&Ae(e.source)?[e.source.value]:[]))}function Tt(e,t,n){const o=new Map;for(const r of e.body){if("ImportDeclaration"!==r.type||!Ae(r.source))continue;const e=Gt(n,r.source.value);for(const n of r.specifiers){const[r]=t.scopeManager.getDeclaredVariables(n);r&&("ImportSpecifier"!==n.type?o.set(r,{kind:"ImportDefaultSpecifier"===n.type?"default":"namespace",resolvedId:e}):o.set(r,{kind:"named",importedName:Ht(n.imported),resolvedId:e}))}}return o}function Rt(e,t,n){const o=new Map;for(const r of e.body)"ExportNamedDeclaration"!==r.type?"ExportDefaultDeclaration"!==r.type?"ExportAllDeclaration"===r.type&&Ft(r,n,o):o.set("default",{kind:"unsupported",reason:"default export"}):_t(r,t,n,o);return o}function _t(e,t,n,o){if(e.declaration)!function(e,t,n){if(!e)return;if("VariableDeclaration"===e.type){for(const o of e.declarations){const e=t.scopeManager.getDeclaredVariables(o);if("Identifier"!==o.id.type){for(const t of e)n.set(t.name,{kind:"unsupported",reason:"binding pattern export"});continue}const[r]=e;r&&n.set(o.id.name,{kind:"local",variable:r})}return}if(("FunctionDeclaration"===e.type||"ClassDeclaration"===e.type)&&e.id){const[o]=t.scopeManager.getDeclaredVariables(e);o&&n.set(e.id.name,{kind:"local",variable:o})}}(e.declaration,t,o);else if(e.source&&Ae(e.source)){const t=Gt(n,e.source.value);for(const n of e.specifiers){if("ExportSpecifier"!==n.type)continue;const e=Ht(n.exported);"default"!==e?o.set(e,{kind:"re-export",importedName:Ht(n.local),resolvedId:t}):o.set(e,{kind:"unsupported",reason:"default re-export",resolvedId:t})}}else for(const n of e.specifiers){if("ExportSpecifier"!==n.type)continue;const e=Ht(n.exported);if("default"===e){o.set(e,{kind:"unsupported",reason:"default export"});continue}const r=Be(Ht(n.local),t);o.set(e,r?{kind:"local",variable:r}:{kind:"unsupported",reason:"unresolved local export"})}}function Ft(e,t,n){const o=Jt(e);o&&Ae(e.source)&&n.set(o,{kind:"unsupported",reason:"namespace re-export",resolvedId:Gt(t,e.source.value)})}function Lt(e,t){return e.body.flatMap((e=>"ExportAllDeclaration"!==e.type||Jt(e)||!Ae(e.source)?[]:[{resolvedId:Gt(t,e.source.value)}]))}function qt(e,t){const n=new Map;for(const o of e.body)zt(o,t,n);return function(e,t,n){_e(e,{scopeAnalysis:t,bindings:n},{AssignmentExpression(e,{state:t}){Ut(e.left,t.scopeAnalysis,t.bindings)},UpdateExpression(e,{state:t}){Ut(e.argument,t.scopeAnalysis,t.bindings)},UnaryExpression(e,{state:t}){"delete"===e.operator&&Ut(e.argument,t.scopeAnalysis,t.bindings)},ForInStatement(e,{state:t}){Vt(e.left,t.scopeAnalysis,t.bindings)},ForOfStatement(e,{state:t}){Vt(e.left,t.scopeAnalysis,t.bindings)}})}(e,t,n),n}function zt(e,t,n){if("VariableDeclaration"===e.type)return void Bt(e,t,n);if("ExportNamedDeclaration"===e.type&&"VariableDeclaration"===e.declaration?.type)return void Bt(e.declaration,t,n);const o="ExportNamedDeclaration"===e.type||"ExportDefaultDeclaration"===e.type?e.declaration:e;if(o&&("FunctionDeclaration"===o.type||"ClassDeclaration"===o.type)&&o.id){const[e]=t.scopeManager.getDeclaredVariables(o);e&&n.set(e,{kind:"unsupported",reason:`${o.type} binding`})}}function Bt(e,t,n){for(const o of e.declarations){const r=t.scopeManager.getDeclaredVariables(o);if("Identifier"!==o.id.type){for(const e of r)n.set(e,{kind:"unsupported",reason:"binding pattern"});continue}const[i]=r;i&&("const"===e.kind?n.set(i,{kind:"const",expression:o.init??null}):n.set(i,{kind:"mutable",declarationKind:e.kind}))}}function Vt(e,t,n){"VariableDeclaration"!==e.type&&Ut(e,t,n)}function Ut(e,t,n){if("Identifier"!==e.type)if("MemberExpression"!==e.type)if("ObjectPattern"!==e.type)if("ArrayPattern"!==e.type)"RestElement"!==e.type?"AssignmentPattern"===e.type&&Ut(e.left,t,n):Ut(e.argument,t,n);else for(const o of e.elements)o&&Ut(o,t,n);else for(const o of e.properties)Ut("RestElement"===o.type?o.argument:o.value,t,n);else{const o=Kt(e);o&&Wt(o,t,n,"mutated object binding")}else Wt(e,t,n,"reassigned binding")}function Wt(e,t,n,o){const r=qe(e,t);if(!r||ze(r)||!n.has(r))return;const i=n.get(r);"mutable"!==i?.kind&&n.set(r,{kind:"unsupported",reason:o})}function Kt(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?Kt(e.object):void 0}function Ht(e){return"Identifier"===e.type?e.name:String(e.value)}function Jt(e){const t=e.exported;return t?Ht(t):void 0}function Gt(e,t){return e.find((e=>e.source===t))?.resolvedId??t}function Yt(e){const t=[];return _e(e,t,{ImportExpression(e,{state:t}){const n=function(e){return en(e.source,"non-literal dynamic import")}(e);Qt(n)&&t.push({specifier:n,kind:"dynamic-import"})},CallExpression(e,{state:t}){if(function(e){return"Import"===e.callee.type}(e)){const n=function(e){return en(e.arguments[0],"non-literal dynamic import")}(e);Qt(n)&&t.push({specifier:n,kind:"dynamic-import"})}else(function(e){if("Identifier"!==e.callee.type||"require"!==e.callee.name)return!1;const[t]=e.arguments;return!t||!Ae(t)||tn(t.value)})(e)&&t.push({specifier:Zt(e),kind:"require"})}}),t}function Qt(e){return"non-literal dynamic import"===e||tn(e)}function Xt(e,t){if(!me.some((t=>e.endsWith(t))))return!1;const n=a.relative(a.resolve(t),e);return!n.startsWith("..")&&!a.isAbsolute(n)&&!n.split(a.sep).some((e=>Ct.has(e)))}function Zt(e){return en(e.arguments[0],"local require")}function en(e,t){return Ae(e)?e.value:t}function tn(e){return e.startsWith(".")||e.startsWith("/")}function nn(e,t){return new Error(`Unsupported local module graph for ${e}: ${t} could hide an action-catalog connectionId.`)}function on(e,t,n){const o=new Set;return function(e,t,n,o){const r=[e],i=new Set;for(;r.length>0;){const s=r.shift();if(i.has(s))continue;i.add(s);const a=t.get(s);if(!a)throw nn(e,`missing module record for ${s}`);o({entryId:e,moduleId:s,record:a});for(const t of a.unsupportedDependencies)throw nn(e,`${t.kind} ${t.specifier}`);for(const o of a.staticDependencies){const i=o.resolvedId;if(Xt(i,n)){if(!t.has(i))throw nn(e,`uncollected local import ${i} from ${a.id}`);r.push(i)}}}}(e,t,n,(({record:e})=>{const n=function(e){const t=new Set,n=new Set;for(const r of e.body)if("ImportDeclaration"===r.type&&"string"==typeof(o=r.source.value)&&(o===et||o.startsWith(`${et}/`))&&!De(r))for(const e of r.specifiers)De(e)||("ImportNamespaceSpecifier"===e.type?n.add(e.local.name):t.add(e.local.name));var o;return{functions:t,namespaces:n}}(e.ast),r=function(e,t){const n=new Set,o=new Set;for(const r of e.scopeManager.scopes)for(const e of r.variables)ze(e)&&(t.functions.has(e.name)&&n.add(e),t.namespaces.has(e.name)&&o.add(e));return{moduleScope:e,actionFunctions:n,actionNamespaces:o}}(e.scopeAnalysis,n);for(const n of Ue(e.ast,r,e.id)){const r=rn(n,t,e);void 0!==r&&o.add(r)}})),[...o].sort()}function rn(e,t,n){const[o]=e.arguments;if(!o||"ObjectExpression"!==o.type)throw un(n.id,"non-object action-catalog call arguments");const r=function(e,t){let n;for(const o of e.properties){if("SpreadElement"===o.type)throw un(t,"spread object arguments");if(o.computed)throw un(t,"computed object property keys");if(an(o)){if(n)throw un(t,"multiple connectionId properties");if("init"!==o.kind)throw un(t,"accessor connectionId properties");if(!sn(o))throw un(t,"destructuring pattern in connectionId value");n=o}}return n}(o,n.id);if(!r)return;const i=function(e,t,n){return dt({modules:e,mutatedImportedObjectVariables:mt(e),seenVariables:new Set},t,n)}(t,n.id,r.value);if("resolved"===i.kind)return i.value;throw s=n.id,a=`static string resolution ${function(e){return"static-definition-unsupported"===e.reason?`${e.reason}/${e.definition.reason}`:e.reason}(i)}: ${i.message}`,new Error(`Unsupported action-catalog connectionId in ${s}: ${a}.`);var s,a}function sn(e){const{value:t}=e;return"ObjectPattern"!==t.type&&"ArrayPattern"!==t.type&&"RestElement"!==t.type&&"AssignmentPattern"!==t.type}function an(e){return"connectionId"===function(e){if("Identifier"===e.key.type)return e.key.name;if("Literal"===e.key.type&&"string"==typeof e.key.value)return e.key.value;return}(e)}function un(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const cn=new Set(d.builtinModules);function dn(e){return 0===e.length||e.some((e=>!De(e)))}function ln(e,t){const n=Me(e);if(void 0!==n&&function(e){return e.startsWith("node:")||cn.has(e)}(n))throw new Error(`Importing Node built-in module "${n}" is not supported in backend function code. Backend functions run in a restricted environment: for networking, filesystem, or process access, use an Action Platform action ($.Actions or an @datadog/action-catalog typed wrapper) instead; for pure utility modules (e.g. path, url, util), use a runtime-independent package instead: ${t}`)}function pn(e){return"globalThis"===e||"global"===e}let fn=new Set;function mn(e,t,n=new Set){if("MemberExpression"===e.type){const o=gn(e,t);return!(!o||!pn(o))&&mn(e.object,t,n)}if("Identifier"!==e.type)return!1;const o=qe(e,t);if(!o)return pn(e.name);if(fn.has(o))return!0;if(n.has(o)||1!==o.defs.length)return!1;n.add(o);const[r]=o.defs;if("Variable"!==r.type||"const"!==r.parent.kind)return!1;if(!Pe(r.node))return!1;const{id:i,init:s}=r.node;if(!s)return!1;if("Identifier"===i.type)return mn(s,t,n);if("ObjectPattern"===i.type){const e=n=>n.properties.some((n=>{if("Property"!==n.type)return!1;if(!pn(yn(n,t)??""))return!1;const o=hn(n.value);return o===r.name||"ObjectPattern"===o.type&&e(o)}));if(e(i))return mn(s,t,n)}return!1}function gn(e,t){return e.computed?bn(e.property,t):"Identifier"===e.property.type?e.property.name:void 0}function hn(e){return"AssignmentPattern"===e.type?e.left:e}function yn(e,t){return e.computed||"Identifier"!==e.key.type?bn(e.key,t):e.key.name}function bn(e,t,n=new Set){const o=Me(e);if(void 0!==o)return o;if("Identifier"!==e.type)return;const r=qe(e,t);if(!r||n.has(r)||1!==r.defs.length)return;n.add(r);const[i]=r.defs;if("Variable"!==i.type||"const"!==i.parent.kind)return;if(!Pe(i.node))return;const{id:s,init:a}=i.node;return"Identifier"===s.type&&a?bn(a,t,n):void 0}const wn=[{object:"Object",property:"assign"},{object:"Object",property:"values"},{object:"Object",property:"entries"},{object:"Object",property:"getOwnPropertyDescriptors"}];function vn(e,t,n,o){fn=new Set;for(const[e,r]of t.referencesByIdentifier)n.has(e.name)&&!r.resolved&&o.onNamedAccess(e.name);const r=e=>{for(const i of e.properties){if("RestElement"===i.type){o.onBulkCopy();continue}const e=yn(i,t);e&&n.has(e)&&o.onNamedAccess(e);const s=hn(i.value);e&&pn(e)&&"ObjectPattern"===s.type&&r(s)}},i=(e,n)=>{n&&mn(n,t)&&r(e)};_e(e,null,{MemberExpression(e){if(!mn(e.object,t))return;const r=gn(e,t);r&&n.has(r)&&o.onNamedAccess(r)},VariableDeclarator(e){"ObjectPattern"===e.id.type&&i(e.id,e.init)},AssignmentExpression(e){"ObjectPattern"===e.left.type&&i(e.left,e.right)},AssignmentPattern(e){"ObjectPattern"===e.left.type&&i(e.left,e.right)},ForOfStatement(e){if("ArrayExpression"!==e.right.type)return;let n,o;if("VariableDeclaration"===e.left.type){if(1!==e.left.declarations.length)return;const[r]=e.left.declarations;if("ObjectPattern"===r.id.type)n=r.id;else{if("Identifier"!==r.id.type||"const"!==e.left.kind)return;o=function(e,t){return t.scopeManager.getDeclaredVariables(e)[0]}(r,t)}}else{if("ObjectPattern"!==e.left.type)return;n=e.left}e.right.elements.some((e=>null!==e&&"SpreadElement"!==e.type&&mn(e,t)))&&(n?r(n):o&&fn.add(o))},ObjectExpression(e){for(const n of e.properties)"SpreadElement"===n.type&&mn(n.argument,t)&&o.onBulkCopy()},CallExpression(e){const n=function(e,t){if("MemberExpression"!==e.type||"Identifier"!==e.object.type)return;const n=gn(e,t);if(!n)return;const o=e.object.name;return wn.find((e=>e.object===o&&e.property===n))}(e.callee,t);if(!n)return;("assign"===n.property?e.arguments.slice(1):e.arguments).some((e=>"SpreadElement"!==e.type&&mn(e,t)))&&o.onBulkCopy()}})}const $n=new Set(["fetch","XMLHttpRequest","WebSocket","EventSource"]);function kn(e,t,n){const o=Ie(e,t);vn(o,n??Le(o),$n,{onNamedAccess(e){!function(e,t){throw new Error(`Using "${e}" is not supported in backend function code. Backend functions cannot make raw network requests in production — use an Action Platform action ($.Actions or an @datadog/action-catalog typed wrapper) instead: ${t}`)}(e,t)},onBulkCopy(){throw new Error(`Copying every property of "globalThis"/"global" at once (a rest destructure, an object spread, or a call like Object.assign/Object.values) is not supported in backend function code — it copies every ambient global, including network-capable ones (${Array.from($n).join(", ")}), into a plain object: ${t}`)}})}const xn=new Set(["crypto","Intl"]),En=new Map;function Sn(e,t,n,o){!function(e,t){const n=Ie(e,t);for(const e of n.body)"ImportDeclaration"!==e.type||De(e)||!dn(e.specifiers)?"ExportNamedDeclaration"===e.type&&e.source&&!De(e)&&dn(e.specifiers)?ln(e.source,t):"ExportAllDeclaration"!==e.type||De(e)||ln(e.source,t):ln(e.source,t);_e(n,null,{ImportExpression(e){ln(e.source,t)}})}(e,t),kn(e,t,o),function(e,t,n,o){const r=Ie(e,t),i=o??Le(r);let s=En.get(t);s||(En.size>=500&&En.clear(),s=new Set,En.set(t,s));const a=e=>{s.has(e)||(s.add(e),function(e,t,n){n.warn(`"${e}" is used in ${t}. Its exact behavior can differ between local execution (Node) and production (Deno) — verify locale-/implementation-sensitive results with "npm run dev:verify" before publishing.`)}(e,t,n))};vn(r,i,xn,{onNamedAccess:a,onBulkCopy(){for(const e of xn)a(e)}})}(e,t,n,o)}function In(e){const t=e.relativePath.split(a.sep).join("/");return`${l.createHash("sha256").update(t).digest("hex")}.${e.name}`}function jn(e){const t=[];for(const{exportName:n,queryName:o}of e)t.push(`export async function ${n}(...args) {`),t.push(` return globalThis.DD_APPS_RUNTIME.executeBackendFunction(${JSON.stringify(o)}, args);`),t.push("}"),t.push("");return t.join("\n")}function An(e,t){try{return require.resolve(e,{paths:[t]}),!0}catch{return!1}}function Dn(e){return An("@datadog/action-catalog/action-execution",e)}function Pn(e){return An("@datadog/apps-backend/runtime/jsFunctionWithActions",e)}function Mn(e,t,n){const o=[],r=Pn(n);return o.push(`import { ${e} } from ${JSON.stringify(t)};`),r&&o.push("import { buildRuntimeFromJsFunctionWithActions } from '@datadog/apps-backend/runtime/jsFunctionWithActions';\nimport { setBackend } from '@datadog/apps-backend/runtime';"),Dn(n)&&o.push("import { setExecuteActionImplementation } from '@datadog/action-catalog/action-execution';"),o.push(""),o.push('/** @param {import("./context.types").Context} $ */'),o.push("export async function main($) {"),o.push(" globalThis.$ = $;"),o.push(""),r&&(o.push(" // Supply the backend runtime context"),o.push(" if (typeof buildRuntimeFromJsFunctionWithActions === 'function' && typeof setBackend === 'function') {\n setBackend(buildRuntimeFromJsFunctionWithActions($));\n }"),o.push("")),o.push(" // Register the $.Actions-based implementation for executeAction"),o.push(" if (typeof setExecuteActionImplementation === 'function') {\n setExecuteActionImplementation(async (actionId, request) => {\n const actionPath = actionId.replace(/^com\\.datadoghq\\./, '');\n const pathParts = actionPath.split('.');\n let actionFn = $.Actions;\n for (const part of pathParts) {\n if (!actionFn) throw new Error('Action not found: ' + actionId);\n actionFn = actionFn[part];\n }\n if (typeof actionFn !== 'function') throw new Error('Action is not a function: ' + actionId);\n return actionFn(request);\n });\n }"),o.push(""),o.push(" const args = $.backendFunctionArgs ?? [];"),o.push(` const result = await ${e}(...args);`),o.push(" return result;"),o.push("}"),o.join("\n")}const Cn=/^(?:\0|virtual:)/;function On(e){return e.split("?")[0]}function Nn(e){return Cn.test(e)}function Tn(e,t){const n=function(e){const t=new Map;return{plugin:{name:"dd-backend-module-graph-collector",moduleParsed(n){const o=On(n.id);if(Nn(o))return;if(!Xt(o,e))return;if("string"!=typeof n.code)return;let r;try{r=this.parse(n.code)}catch(e){throw nn(o,`unparseable module source (${e instanceof Error?e.message:String(e)})`)}const i=Ot(o,e,r,function(e){return e.importedIdResolutions?.map((({id:e})=>e))??[...e.importedIds]}(n).map(On));i&&t.set(i.id,i)}},getModuleRecords:()=>t}}(t);return{plugin:n.plugin,getAllowedConnectionIds:()=>on(e,n.getModuleRecords(),t),getModuleRecords:n.getModuleRecords}}function Rn(e,t,n){return{name:"dd-backend-static-checks",moduleParsed(o){const r=On(o.id);if(Nn(r)||!Xt(r,e))return;const i=n().get(r);let s,a;if(i)s=i.ast,a=i.scopeAnalysis;else{if("string"!=typeof o.code)return;try{s=this.parse(o.code)}catch(e){const t=e instanceof Error?e.message:String(e);throw new Error(`Unsupported module source for ${r}: ${`unparseable module source (${t})`} could hide a Node-builtin import or restricted-global access.`)}a=Le(Ie(s,r))}Sn(s,r,t,a)}}}function _n(e,t){return{name:e,enforce:"pre",resolveId:e=>t[e]?{id:e,moduleSideEffects:!0}:null,load:e=>t[e]?t[e]:null}}function Fn(e,t,n=[]){return{configFile:!1,root:e,logLevel:"silent",build:{minify:!1,target:"esnext",ssr:!0,rollupOptions:{output:{format:"es",exports:"named",inlineDynamicImports:!0},preserveEntrySignatures:"exports-only",treeshake:!1,onwarn(e,t){"MODULE_LEVEL_DIRECTIVE"!==e.code&&t(e)}}},resolve:{extensions:[...me,".json"]},ssr:{noExternal:!0},plugins:[_n("dd-backend-resolve",t),...n]}}const Ln=async(e,t)=>{const n=(await Promise.all(e.map((e=>m.glob(e,{absolute:!0,cwd:t,nodir:!0}))))).flat(),o=Array.from(new Set(n)).map((e=>a.relative(t,e))),r=(e=>{if(0===e.length)return"";const t=e[0].split(a.sep);let n="";for(let o=0;o<t.length-1;o++){const r=t.slice(0,o+1).join(a.sep);if(!e.every((e=>e.startsWith(`${r}${a.sep}`))))break;n=r}return n})(o);return o.map(((e,t)=>{const o=r?e.slice(r.length+1):e;return{absolutePath:n[t],relativePath:o.split(a.sep).join("/")}}))};async function qn(e){const t=await r.mkdtemp(a.join(p.tmpdir(),"dd-apps-manifest-")),n=a.join(t,"manifest.json");try{await r.writeFile(n,JSON.stringify(function(e){const t={};for(const n of e)t[In(n)]={allowedConnectionIds:[...n.allowedConnectionIds]};return{backend:{functions:t}}}(e),null,2))}catch(e){throw await he(t),e}return{manifestAsset:{absolutePath:n,relativePath:"manifest.json"},cleanup:()=>he(t)}}async function zn({backendOutputs:e,backendFunctions:t,context:n,options:o}){const s=n.getLogger(ce),{buildRoot:u,bundler:{outDir:c}}=n,d=a.join(c,de),l=a.resolve(R("APPS_PACKAGE_DIR")||c),p=a.join(l,de);await Promise.all([r.rm(p,{force:!0}),r.rm(d,{force:!0})]);const m=a.relative(u,c),g=await Ln([...o.include,`${m}/**/*`],u);if(0===g.length&&0===e.size)return void s.debug("No assets to package.");let h;await r.mkdir(l,{recursive:!0});try{const n=new Set([p,d]),o=new Set(e.values()),u=[...g.filter((e=>!n.has(a.resolve(e.absolutePath)))).filter((e=>!o.has(e.absolutePath))).map((e=>({...e,relativePath:`frontend/${e.relativePath}`})))];for(const[t,n]of e)u.push({absolutePath:n,relativePath:`backend/${t}.js`});const c=await qn(t);h=c.cleanup,u.push(c.manifestAsset);const l=await(async(e,t)=>{const n=new f;for(const t of e)n.file(t.relativePath,i.createReadStream(t.absolutePath),{binary:!0,compression:"DEFLATE",compressionOptions:{level:9}});await new Promise(((e,o)=>{const r=i.createWriteStream(t),s=n.generateNodeStream({type:"nodebuffer",streamFiles:!0,compression:"DEFLATE",compressionOptions:{level:9}});s.on("error",o),r.on("error",o),r.on("close",e),s.pipe(r)}));const{size:o}=await r.stat(t);return{archivePath:t,size:o,assets:e}})(u,p);return s.info(`App package written to ${l.archivePath}.`),l.archivePath}finally{await(h?.())}}function Bn(e){return e.endsWith(".tsx")?"tsx":e.endsWith(".ts")||e.endsWith(".mts")||e.endsWith(".cts")?"ts":e.endsWith(".jsx")?"jsx":"js"}function Vn(e){return e.endsWith(pe)?e.slice(0,-14):e}function Un(e){return On(Vn(e))}function Wn(e,t){return t?Math.min(250*2**(e-1),2e3):250}const Kn=new y.AsyncLocalStorage,Hn=Reflect.has(globalThis,"$"),Jn=new y.AsyncLocalStorage,Gn=new y.AsyncLocalStorage;let Yn=Reflect.get(globalThis,"$");function Qn(){Object.getOwnPropertyDescriptor(globalThis,"$")?.get!==Xn&&Object.defineProperty(globalThis,"$",{configurable:!0,enumerable:!0,get:Xn,set:Zn})}function Xn(){const e=Kn.getStore();if(e)return e.value;const t=Jn.getStore();return t?t.assigned?t.value:Hn?Yn:void 0:Yn}function Zn(e){const t=Kn.getStore();if(t)return void(t.value=e);const n=Jn.getStore();if(n)return n.assigned=!0,void(n.value=e);Yn=e}Qn();const eo=new y.AsyncLocalStorage;function to(e){return"object"==typeof e&&null!==e}const no=ge(void 0);function oo(e){const t=e.maxRetries*e.timeoutMs+function(e){let t=0;for(let n=1;n<e.maxRetries;n++)t+=Wn(n,e.exponentialBackoff);return t}(e);return{actionCallTimeoutMs:2*t,totalExecutionTimeoutMs:1.2*t}}function ro(e,t){return Gn.run(new Set,(()=>Jn.run({assigned:!1,value:void 0},(()=>e(t)))))}function io(e,t,n){const{inputs:o,connectionId:r}=e;if("object"!=typeof o||!o)throw new Error(`Action ${n} must have an inputs field`);return function(e,t,n){if(void 0!==e&&!t.includes(e))throw new Error(`Action ${n} used connection "${e}", which is not in this function's allowed connections: [${t.join(", ")}]`)}(r,t,n),{inputs:o,connectionId:r}}let so=Promise.resolve();function ao(e,t){return new Error(`Execution of "${e}" already concluded; refusing to ${t} as this stale execution to avoid using a newer execution's identity.`)}const uo=function(){let e=0,t=null;return{start(){const n=++e;return t=n,{isCurrent:()=>t===n,concludeIfCurrent:()=>t===n&&(t=null,!0)}}}}();function co(e,t,n=[]){return new Proxy((function(){}),{get(o,r){if("then"===r||"toJSON"===r)return;const i=n.concat(String(r));return co(e,t,i)},async apply(o,r,i){if(0===i.length)throw new Error(`No arguments provided to action $.Actions.${n.join(".")}`);const s=to(i[0])?i[0]:{},{inputs:a,connectionId:u}=io(s,t,`$.Actions.${n.join(".")}`),c=`com.datadoghq.${n.join(".")}`;return e(c,a,u)}})}function lo(e,t,n){return new Promise(((o,r)=>{const i=setTimeout((()=>{r(new Error(`${n} timed out after ${t}ms`))}),t);e.then((e=>{clearTimeout(i),o(e)}),(e=>{clearTimeout(i),r(e)}))}))}function po(e,t,n,o,r,i){if(!e(r))return Promise.resolve();const s=t.get(o);if(s)return s;const a=n(o,i).catch((e=>{throw t.delete(o),e}));return t.set(o,a),a}const fo=new WeakMap;async function mo(e,t){const n=e("@datadog/action-catalog/action-execution"),o=(await lo(n,t,"Loading @datadog/action-catalog/action-execution")).setExecuteActionImplementation;"function"==typeof o&&o((async(e,t)=>{const n=eo.getStore();if(!n)throw new Error(`No active local execution to run "${e}" under.`);if(n.isAbandoned())throw ao(n.functionName,`run "${e}"`);const o=to(t)?t:{},{inputs:r,connectionId:i}=io(o,n.allowedConnectionIds,`"${e}"`);return n.executeAction(e,r,i)}))}const go=new WeakMap;async function ho(e,t){const n=Promise.all([e("@datadog/apps-backend/runtime/jsFunctionWithActions"),e("@datadog/apps-backend/runtime")]),[o,r]=await lo(n,t,"Loading @datadog/apps-backend/runtime"),i=o.buildRuntimeFromJsFunctionWithActions,s=r.setBackend;if("function"!=typeof i||"function"!=typeof s)return;const a=new WeakMap;s(new Proxy({},{get(e,t){const n=eo.getStore();if(!n)throw new Error("No active local execution to resolve an apps-backend accessor under.");if(n.isAbandoned())throw ao(n.functionName,"resolve a further apps-backend accessor");let o=a.get(n);if(void 0===o&&(o=i(n.$),a.set(n,o)),!to(o))return;const r=o[String(t)];return"function"==typeof r?r.bind(o):r}}))}class yo extends Error{}function bo(e,t){return"object"==typeof e&&null!==e&&!t.has(e)&&(Object.getOwnPropertySymbols(e).length>0||(t.add(e),Object.values(e).some((e=>bo(e,t)))))}function wo(e,t){if(bo(e,new Set))throw new Error(`Local execution of "${t.name}" returned a value with a Symbol-keyed property, which JSON.stringify silently drops instead of serializing — return a plain JSON-compatible value instead.`);let n;try{let o=!0;n=JSON.stringify(e,((e,n)=>{const r=o;if(o=!1,n instanceof Map||n instanceof Set)throw new yo(`Local execution of "${t.name}" returned a ${n.constructor.name}${e?` (at "${e}")`:""}, which JSON.stringify silently flattens to "{}" instead of serializing its entries — return a plain array or object instead.`);if("number"==typeof n&&!Number.isFinite(n))throw new yo(`Local execution of "${t.name}" returned ${n}${e?` (at "${e}")`:""}, which JSON.stringify silently converts to "null" instead of throwing — return a finite number instead.`);if(!r&&("function"==typeof n||"symbol"==typeof n||void 0===n))throw new yo(`Local execution of "${t.name}" returned a ${typeof n} (at "${e}"), which JSON.stringify silently drops instead of serializing — return a plain JSON-compatible value instead.`);return n}))}catch(e){if(e instanceof yo)throw e;throw new Error(`Local execution of "${t.name}" returned a value that can't be serialized to JSON: ${e instanceof Error?e.message:String(e)}`)}if(void 0!==n)return JSON.parse(n);if(void 0!==e)throw new Error(`Local execution of "${t.name}" returned a ${typeof e} value, which JSON.stringify silently drops instead of serializing — return a plain JSON-compatible value instead.`)}async function vo(e,t,n,o,r,i,s,a=1e4,u=no){const c=`${e.relativePath}/${e.name}`;return function(e){const t=so.then(e);return so=t.then((()=>{}),(()=>{})),t}((async()=>{const d=i(e.absolutePath),l=await lo(d,a,`Resolving allowed connections for "${c}"`),p=e.absolutePath+pe,f=ro(r,p),m=await lo(f,a,`Loading "${c}"`);return async function(e,t,n,o,r,i,s,a,u){i.debug(`Executing "${e.name}" in-process with args`);const{actionCallTimeoutMs:c,totalExecutionTimeoutMs:d}=oo(u),l=uo.start();let p,f,m,g=0;const h=()=>{p=setTimeout((()=>{w(),f?.(new Error(`Local execution of "${e.name}" timed out after ${s}ms`))}),s)},y=()=>{clearTimeout(m),m=setTimeout((()=>{w(),f?.(new Error(`Local execution of "${e.name}" exceeded the absolute ${d}ms execution ceiling, regardless of any $.Actions call in flight.`))}),d)},b=async(t,n,r)=>{if(!l.isCurrent())throw ao(e.name,`run "${t}"`);g+=1,clearTimeout(p),y();try{const e=o(t,n,r);return await lo(e,c,`$.Actions call to "${t}"`)}finally{g-=1,0===g&&l.isCurrent()&&h()}},w=()=>{l.concludeIfCurrent()},v={backendFunctionArgs:n,Actions:co(b,e.allowedConnectionIds),Source:{initiator:{id:"local-dev",orgId:"local-dev-org"},runAsUser:{id:"local-dev",orgId:"local-dev-org"}}},$={executeAction:b,allowedConnectionIds:e.allowedConnectionIds,isAbandoned:()=>!l.isCurrent(),functionName:e.name,$:v},k=async()=>{try{const o=(a??await ro(r,e.absolutePath+pe))[e.name];if("function"!=typeof o)throw new Error(`"${e.name}" is not a function exported from ${e.absolutePath}`);return Qn(),await Kn.run({value:v},(()=>eo.run($,(async()=>{const i=function(e,t,n){return po(Dn,fo,mo,e,t,n)}(r,t,s),a=function(e,t,n){return po(Pn,go,ho,e,t,n)}(r,t,s);if(await Promise.all([i,a]),!l.isCurrent())throw new Error(`Execution of "${e.name}" was abandoned after timing out before it could start.`);return{data:wo(await o(...n),e)}}))))}finally{w()}},x=new Promise(((e,t)=>{f=t,h()}));y();const E=k();let S=!1;E.catch((t=>{if(!S)return;const n=t instanceof Error?t.message:String(t);i.debug(`"${e.name}" failed after its caller had already stopped waiting: ${n}`)}));try{return await Promise.race([E,x])}finally{S=!0,clearTimeout(p),clearTimeout(m)}}({...e,allowedConnectionIds:l},t,n,o,r,s,a,m,u)}))}function $o(e){return new Promise((t=>{setTimeout(t,e)}))}function ko(e){return null!==e&&"object"==typeof e&&"name"in e&&("TimeoutError"===e.name||"AbortError"===e.name)}function xo(e,t){const n=Wn(e,t.exponentialBackoff);return t.jitter?n/2+Math.random()*(n/2):n}function Eo(e){return`${e.relativePath}/${e.name}`}async function So(e,t,n,o){const r=Eo(t),i=`virtual:dd-backend-dev:${r}`,s=function(e,t,n){return Mn(e,t,n??process.cwd())}(t.name,t.absolutePath,n),a=Tn(t.absolutePath,n);o.debug(`Bundling backend function "${r}" from ${t.absolutePath}`);const u=Rn(n,o,a.getModuleRecords),c=Fn(n,{[i]:s},[a.plugin,u]),d=await e({...c,build:{...c.build,write:!1,rollupOptions:{...c.build.rollupOptions,input:i,output:c.build.rollupOptions.output}}}),l=Array.isArray(d)?d[0]:d;if(!("output"in l))throw new Error(`Unexpected vite.build result for "${r}"`);const p="chunk"===l.output[0].type?l.output[0].code:"",f={...t,allowedConnectionIds:a.getAllowedConnectionIds()};return o.debug(`Bundled "${r}" (${p.length} bytes)`),{func:f,code:p}}async function Io(e,t,n,o,r,i){const s=`https://api.${n.site}/api/v2/app-builder/queries/preview-async`;i.debug(`Calling Datadog API: ${s}`);const a=JSON.stringify({data:{type:"queries",attributes:{query:{id:l.randomUUID(),name:t,type:"action",properties:{spec:e,onlyTriggerManually:!0}},template_params:{}}}}),u=await o({url:s,method:"POST",type:"json",getData:()=>({data:a,headers:{"Content-Type":"application/json"}})}),c=u.data?.id;if(!c)throw new Error("No receipt ID returned from Datadog API");return i.debug(`Query execution started with receipt: ${c}`),async function(e,t,n,o,r){const i=`https://api.${t.site}/api/v2/app-builder/queries/execution-long-polling/${e}`,{maxRetries:s,timeoutMs:a}=o;for(let e=0;e<s;e++){if(e>0){const t=xo(e,o);r.debug(`Waiting ${Math.round(t)}ms before long-poll retry...`),await $o(t)}let t;r.debug(`Long-poll attempt ${e+1}/${s}...`);try{t=await n({url:i,type:"json",signal:AbortSignal.timeout(a)})}catch(t){if(!ko(t))throw t;r.debug(`Long-poll attempt ${e+1} timed out after ${a}ms`);continue}if(t.errors?.length){const e=t.errors.map((e=>e.detail||e.title)).join("; ");throw new Error(`Query execution failed: ${e}`)}const u=t.data?.attributes;if(r.debug(`Long-poll response, done: ${u?.done}`),u?.done){if(void 0===u.outputs||null===u.outputs)throw new Error("Query execution completed without outputs");return u.outputs}}throw new Error("Query execution timed out")}(c,n,o,r,i)}function jo(e,t,n){e.statusCode=t,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({success:!1,error:n}))}function Ao(e,t){e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({success:!0,result:t}))}function Do(e,t,n){t?n(t).catch((()=>jo(e,500,"Unexpected error"))):jo(e,400,`Auth credentials not configured. ${Ee}`)}function Po(e,t,n,o){const r=t instanceof Mo?t.statusCode:500,i=t instanceof Error?t.message:"Internal server error";n&&o&&n.debug(`Error handling ${o}: ${i}`),jo(e,r,i)}class Mo extends Error{constructor(e,t){super(t),this.statusCode=e}}async function Co(e,t){const{functionName:n,args:o=[]}=await function(e){return new Promise(((t,n)=>{let o="";e.on("data",(e=>{o+=e.toString()})),e.on("end",(()=>{try{t(JSON.parse(o))}catch{n(new Error("Invalid JSON body"))}})),e.on("error",n)}))}(e);if(!n||"string"!=typeof n)throw new Mo(400,"Missing or invalid functionName");const r=t.get(n);if(!r)throw new Mo(404,`Backend function "${n}" not found`);return{func:r,args:o}}async function Oo(e,t,n){const{func:o,args:r}=await Co(e,t);return{...await n(o),args:r}}async function No(e,t,n,o,r,i,s,a,u,c){try{const{func:d,args:l}=await Co(e,n),p=Eo(d);c.debug(`Executing action locally: ${p} with args`);const f=function(e,t,n,o){return async(r,i,s)=>{try{const a=await Io(void 0!==s?{fqn:r,inputs:i,connectionId:s}:{fqn:r,inputs:i},r,e,t,n,o);return o.info(`$.Actions call to "${r}" succeeded: ${JSON.stringify(a)}`),a}catch(e){const t=e instanceof Error?e.message:String(e);throw o.error(`$.Actions call to "${r}" failed: ${t}`),e}}}(o,r,i,c);Ao(t,await vo(d,u,l,f,s,a,c,1e4,i))}catch(e){Po(t,e,c,"executeAction")}}async function To(e,t,n,o,r,i,s,a){try{const{func:u,code:c,args:d}=await Oo(e,n,o),l=Eo(u);a.debug(`Executing action via cloud: ${l} with args`);const p=await async function(e,t,n,o,r,i,s){const a=Eo(t),u=await Io({fqn:"com.datadoghq.datatransformation.jsFunctionWithActions",inputs:{script:e,allowedConnectionIds:t.allowedConnectionIds,context:{backendFunctionArgs:n}}},a,o,r,i,s);if("object"!=typeof u||null===u||!("data"in u))throw new Error('Query execution completed without a "data" field in its outputs');return u}(c,u,d,r,i,s,a);Ao(t,p)}catch(e){Po(t,e,a,"executeActionViaCloud")}}function Ro(e,t,n,o,r,i,s,a,u){const c=t=>So(e,t,a,u),d=n();return d.length>0&&u.info(`Dev server middleware active for ${d.length} backend function(s): ${d.map((e=>e.name)).join(", ")}`),(e,d,l)=>{if("POST"!==e.method)return void l();const p=(f=n(),new Map(f.map((e=>[In(e),e]))));var f;"/__dd/debugBundle"===e.url?async function(e,t,n,o){try{const{code:r}=await Oo(e,n,o);t.statusCode=200,t.setHeader("Content-Type","text/plain"),t.end(r)}catch(e){Po(t,e)}}(e,d,p,c).catch((()=>{jo(d,500,"Unexpected error")})):"/__dd/executeAction"===e.url?Do(d,i,(n=>No(e,d,p,r,n,s,t,o,a,u))):"/__dd/executeActionViaCloud"===e.url?Do(d,i,(t=>To(e,d,p,c,r,t,s,u))):l()}}const _o=a.join(__dirname,"./apps-runtime.mjs"),Fo=({bundler:e,context:t,options:n})=>{const o=t.getLogger(ce),{auth:i}=t;t.inject({type:"file",position:xe.MIDDLE,value:_o});const{setBackendFunctions:s,getBackendFunctions:u}=function(){const e=new Map;return{setBackendFunctions(t,n){e.set(t,n)},getBackendFunctions:()=>Array.from(e.values()).flat()}}();let c=!1;return{config:()=>({ssr:{noExternal:["@datadog/apps-backend","@datadog/action-catalog"]}}),resolveId:{order:"pre",async handler(e,n,o){if(!0!==o.ssr)return null;const r=Gn.getStore();if(!(!!n&&(n.endsWith(pe)||!!r&&r.has(n))))return null;const i=await this.resolve(e,n,{...o,skipSelf:!0});if(!i||i.external)return i;if(i.id.endsWith(pe))return i;if(!Xt(i.id,t.buildRoot))return i;const s=i.id+pe;return le.test(i.id)||r?.add(s),{...i,id:s}}},transform:{filter:{id:{include:[fe],exclude:[/node_modules/,/[/\\]dist[/\\]/]}},handler(e,n,r){if(n.endsWith(pe)&&r?.ssr)return null;const i=n.indexOf("?"),u=-1===i?n:n.slice(0,i),c=this.parse(e),d=Le(Ie(c,u));Sn(c,u,o,d);const l=Ce(c,u);if(0===l.length)return-1===i&&(o.warn(`Backend file ${u} has no exported functions. Did you forget to add a named export?`),s(u,[])),{code:"",map:null};const{functions:p,proxyCode:f}=function(e,t,n){const o=a.relative(n,t).replace(le,""),r=[],i=[];for(const n of e){const e={relativePath:o,name:n,absolutePath:t,allowedConnectionIds:[]};r.push(e),i.push({exportName:n,queryName:In(e)})}return{functions:r,proxyCode:jn(i)}}(l,u,t.buildRoot);return s(u,p),o.debug(`Generated proxy for ${u} with ${p.length} export(s)`),{code:f,map:null}}},async closeBundle(){if(c)return void o.debug("Skipping app packaging: dev server session.");let i,s=new Map,d=u();if(d.length>0){const n=await async function(e,t,n,o){const i=await r.mkdtemp(a.join(p.tmpdir(),"dd-apps-backend-")),s=new Map,u=new Map;o.debug(`Building ${t.length} backend function(s) via vite.build()`);try{for(const r of t){const t=In(r),c=`\0dd-backend:${t}`,d=Mn(r.name,r.absolutePath,n),l=Tn(r.absolutePath,n),p=Rn(n,o,l.getModuleRecords),f=Fn(n,{[c]:d},[l.plugin,p]),m=await e({...f,build:{...f.build,write:!0,outDir:i,emptyOutDir:!1,rollupOptions:{...f.build.rollupOptions,input:{[t]:c},output:{...f.build.rollupOptions.output,entryFileNames:"[name].js"}}}}),g=Array.isArray(m)?m[0]:m;if("output"in g)for(const e of g.output){if("chunk"!==e.type||!e.isEntry)continue;const n=a.resolve(i,e.fileName);s.set(t,n),o.debug(`Backend function "${t}" output: ${n}`)}u.set(r.absolutePath,l.getAllowedConnectionIds())}}catch(e){try{await he(i)}catch(e){o.warn(`Failed to clean up temp output directory "${i}": ${e}`)}throw e}return{outDir:i,outputs:s,functions:t.map((e=>({...e,allowedConnectionIds:u.get(e.absolutePath)})))}}(e.build,d,t.buildRoot,o);i=n.outDir,s=n.outputs,d=n.functions}try{await zn({backendOutputs:s,backendFunctions:d,context:t,options:n})}finally{i&&await he(i)}},configureServer(r){let s;c=!0;try{s=(()=>{const e=R("API_KEY"),t=R("APP_KEY");if(e&&t)return n=>z({...n,auth:{apiKey:e,appKey:t}});const n=R("OAUTH_ACCESS_TOKEN");if(n)return e=>z({...e,auth:{accessToken:n}});throw new Se})()}catch(e){if(!(e instanceof Se))throw e;o.warn(`No authentication configured. Both the /__dd/executeAction and /__dd/executeActionViaCloud endpoints will be unavailable. ${Ee}`)}const a=r.ssrLoadModule.bind(r),d=Ro(e.build,a,u,(async e=>{const n=await async function(e,t,n,o){const r=new Map,i=new Set,s=[],a=t+pe;await e.transformRequest(a,{ssr:!0});const u=e.moduleGraph.getModuleById(a);for(u&&s.push(u);s.length>0;){const t=s.shift(),a=t.id?Un(t.id):void 0;if(!a||!t.file)continue;if(!Xt(a,n))continue;if(t.id&&Vn(t.id).includes("?"))throw nn(a,`Vite resource query on module id "${t.id}"`);if(i.has(a))continue;let u,c;i.add(a);try{u=await we(t.file)}catch(e){const t=e instanceof Error?e.message:String(e);throw nn(a,`unreadable module source (${t})`)}try{const e=await g.transform(u,{loader:Bn(a),format:"esm"});c=h.parseAst(e.code)}catch(e){const t=e instanceof Error?e.message:String(e);throw nn(a,`unparseable module source (${t})`)}const d=Nt(c),l=t.file,p=(await Promise.all(d.map((t=>e.pluginContainer.resolveId(t,l??void 0,{ssr:!0}))))).map(((e,t)=>{if(!e)throw nn(a,`unresolvable import specifier "${d[t]}"`);return Un(e.id)})),f=Ot(a,n,c,p);f&&(Sn(f.ast,f.id,o,f.scopeAnalysis),r.set(f.id,f));for(const n of t.importedModules)n.id&&await e.transformRequest(n.id,{ssr:!0}),s.push(n)}return r}(r,e,t.buildRoot,o);return on(e,n,t.buildRoot)}),i,s,n.longPolling,t.buildRoot,o);r.middlewares.use(d)}}},Lo=({options:e,context:t,bundler:n})=>{const o=t.getLogger(ce),r=(e=>{const t=e[ue]||{};return{include:t.include||[],longPolling:ge(t.longPolling)}})(e);return"vite"!==t.bundler.name?(o.warn(`The apps plugin only supports Vite; skipping under '${t.bundler.name}'.`),[]):[{name:ce,enforce:"post",vite:Fo({bundler:n,context:t,options:r})}]},qo="errorTracking",zo="datadog-error-tracking-plugin",Bo=(e,n,o)=>{if(".map"!==a.extname(o))throw new Error(`The file ${t.green.bold(o)} is not a sourcemap.`);const r=o.replace(/\.map$/,""),i=a.relative(n,r),s=((e,t)=>{if(e.startsWith("/"))return a.join(e,t);try{const n=e.replace(/\/*$/,"/"),o=new URL(n),r=t.replace(/^[\\/]*/,"");return new URL(r,o).href}catch{return`${e}${t}`}})(e,i);return{minifiedFilePath:r,minifiedUrl:s,relativePath:i}},Vo=/"?ddDebugId"?:"([0-9a-fA-F-]{36})"/,Uo=async e=>(async e=>{const t=await r.open(e,"r");try{const e=Buffer.alloc(1024);let o="",r=0;for(;;){const{bytesRead:i}=await t.read(e,0,1024,r);if(0===i)return;const s=o+e.toString("utf-8",0,i),a=(n=s,Vo.exec(n)?.[1]);if(a)return a;o=s.slice(-64),r+=i}}finally{await t.close()}var n})(e).catch((()=>{})),Wo=/[/]+|[\\]+/g,Ko=/^[/]+|^[\\]+|[/]+$|[\\]+$/g,Ho=(e,t)=>{const n=e.replace(Ko,"").split(Wo),o=t.replace(Ko,"").split(Wo),r=n.join("/");let i="";for(let e=0;e<o.length;e+=1){const t=o.slice(-e).join("/");r.startsWith(t)&&(i=t)}return i},Jo=async(e,t,n,o,r)=>{const i=await(async(e,t)=>{const[n,o]=await Promise.all([ke(e.minifiedFilePath),ke(e.sourcemapFilePath)]);return{file:n,sourcemap:o,repeatedPrefix:Ho(e.relativePath,t)}})(e,n),s=[],u=[],c=new Map([["event",{type:"string",options:{contentType:"application/json",filename:"event"},value:JSON.stringify({...t,debug_id:r,minified_url:e.minifiedUrl})}],["source_map",{type:"file",path:e.sourcemapFilePath,options:{filename:"source_map",contentType:"application/json"}}],["minified_file",{type:"file",path:e.minifiedFilePath,options:{filename:"minified_file",contentType:"application/javascript"}}]]);if(o)try{c.set("repository",{type:"string",options:{contentType:"application/json",filename:"repository"},value:JSON.stringify({data:[{files:o.trackedFilesMatcher.matchSourcemap(e.sourcemapFilePath,(t=>{u.push(`${a.basename(e.sourcemapFilePath)}: "${t}"`)})),hash:o.hash,repository_url:o.remote}],version:1})})}catch(t){u.push(`Could not attach git data for sourcemap ${e.sourcemapFilePath}: ${t.message}`)}return i.file.empty&&s.push(`Minified file is empty: ${e.minifiedFilePath}`),i.file.exists||s.push(`Minified file not found: ${e.minifiedFilePath}`),i.sourcemap.empty&&s.push(`Sourcemap file is empty: ${e.sourcemapFilePath}`),i.sourcemap.exists||s.push(`Sourcemap file not found: ${e.sourcemapFilePath}`),i.repeatedPrefix&&u.push(`The minified file path contains a repeated pattern with the minified path prefix: ${i.repeatedPrefix}`),{content:c,errors:s,warnings:u}},Go=e=>{const t=e.message.match(/HTTP (\d{3})/);return t?`status_code:${t[1]}`:"status_code:unknown"},Yo=e=>{const t=Go(e);return"status_code:unknown"!==t?`error_type:http_${t.replace("status_code:","")}`:`error_type:${Y(e.name||"unknown")}`},Qo=(e,t,n)=>{const o=((e,t)=>`${e}|${t.join("|")}`)(t,n),r=e.metrics.get(o);r?r.value++:e.metrics.set(o,{name:t,value:1,tags:n})},Xo=(e,t,n)=>{Qo(e,"retry",[...e.baseTags,`attempt:${n}`,Go(t),Yo(t)])},Zo=(e,t)=>{Qo(e,"failure",[...e.baseTags,Go(t),Yo(t)])},er=(e,t)=>{if(!t.sendMetrics)return;if(!e.metrics.size)return;const n=(e=>{const t=Math.floor(Date.now()/1e3);return Array.from(e.metrics.values()).map((e=>({metric:`sourcemaps.upload.${e.name}`,type:"count",points:[[t,e.value]],tags:e.tags})))})(e);for(const e of n)t.addMetric(e)},tr=t.green.bold,nr=t.yellow.bold,or=t.red.bold,rr=(e,t={})=>async()=>(async e=>{const{getForm:t,defaultHeaders:n={},zip:o=!0}=e,r=await t(),i=new Request("fake://url",{method:"POST",body:r});return{data:o?i.body.pipeThrough(new CompressionStream("gzip")):i.body,headers:{"Content-Encoding":o?"gzip":"multipart/form-data",...n,...Object.fromEntries(i.headers.entries())}}})({getForm:async()=>{const t=new FormData;for(const[n,o]of e.content){const e="file"===o.type?await $e(o.path,o.options):new Blob([o.value],{type:o.options.contentType});t.append(n,e,o.options.filename)}return t},defaultHeaders:t,zip:!0}),ir=async(e,t,n,o)=>{const r=[],i=[];if(!n.apiKey)return r.push({error:new Error("No authentication token provided")}),{errors:r,warnings:i};if(0===e.length)return i.push("No sourcemaps to upload"),{errors:r,warnings:i};const s=o.time("Queue uploads"),a=new(b.default?b.default:b)({concurrency:t.maxConcurrency}),u=(c=n.site,R("SOURCEMAP_INTAKE_URL")||`https://sourcemap-intake.${c}/api/v2/srcmap`);var c;const d={"DD-EVP-ORIGIN":`${(l={bundler:n.bundlerName,plugin:"sourcemaps",version:n.version}).bundler}-build-plugin_${l.plugin}`,"DD-EVP-ORIGIN-VERSION":l.version};var l;const p=(e=>({metrics:new Map,baseTags:[`service:${e.service}`]}))(t),f=Q({...t,intakeUrl:u,outDir:n.outDir,defaultHeaders:`\n${JSON.stringify(d,null,2)}`}),m=`\nUploading ${tr(e.length.toString())} sourcemaps with configuration:\n${f}`;o.debug(m);const g=[];for(const s of e){const e={sourcemap:s.content.get("source_map")?.path.replace(n.outDir,"."),file:s.content.get("minified_file")?.path.replace(n.outDir,".")};g.push(a.add((async()=>{try{await z({auth:{apiKey:n.apiKey},url:u,method:"POST",getData:rr(s,d),onRetry:(t,n)=>{Xo(p,t,n);const r=`Failed to upload ${nr(e.sourcemap)} | ${nr(e.file)}:\n ${t.message}\nRetrying ${n}/5`;i.push(r),o.debug(r)}})}catch(n){if(Zo(p,n),r.push({metadata:e,error:n}),!0===t.bailOnError)throw n}})))}s.end(),o.debug(`Queued ${tr(e.length.toString())} uploads.`);try{await Promise.all(g),await a.onIdle()}finally{er(p,n)}return{warnings:i,errors:r}},sr=async(e,t,n)=>{const o=n.time("get sourcemaps files"),r=((e,t)=>{if(!t.outputs||0===t.outputs.length)throw new Error("No output files found.");return t.outputs.filter((e=>e.filepath.endsWith(".map"))).map((e=>e.filepath)).map((n=>({...Bo(e.minifiedPathPrefix,t.outDir,n),sourcemapFilePath:n,minifiedPathPrefix:e.minifiedPathPrefix})))})(e.sourcemaps,{outDir:t.outDir,outputs:t.outputs});o.end();const i=n.time("send sourcemaps");await(async(e,t,n,o)=>{const r=Date.now(),i=t.minifiedPathPrefix,s={git_repository_url:n.git?.remote,git_commit_sha:n.git?.hash,plugin_version:n.version,project_path:n.outDir,service:t.service,type:"js_sourcemap",version:t.releaseVersion},a=o.time("Compute payloads"),u=new(b.default?b.default:b)({concurrency:t.maxConcurrency});let c=0;const d=await u.addAll(e.map((e=>async()=>{const t=await Uo(e.minifiedFilePath);return t&&(c+=1),Jo(e,s,i,n.git,t)})));a.end(),o.debug(`Extracted debug_id for ${tr(`${c}/${e.length}`)} sourcemaps.`);const l=d.map((e=>e.errors)).flat(),p=d.map((e=>e.warnings)).flat();if(p.length>0&&o.warn(`Warnings while preparing payloads:\n - ${p.join("\n - ")}`),l.length>0){const e=`Failed to prepare payloads, aborting upload :\n - ${l.join("\n - ")}`;if(o.error(e),!0===t.bailOnError)throw new Error(e);return}const f=o.time("Upload sourcemaps"),{errors:m,warnings:g}=await ir(d,t,{apiKey:n.apiKey,bundlerName:n.bundlerName,version:n.version,outDir:n.outDir,site:n.site,sendMetrics:n.sendMetrics,addMetric:n.addMetric},o);if(f.end(),o.debug(`Done uploading ${tr(`${e.length-m.length}/${e.length}`)} sourcemaps in ${tr(H(Date.now()-r))}.`),m.length>0){const e=`Failed to upload some sourcemaps:\n - ${m.map((({metadata:e,error:t})=>{const n=t.cause||t.stack||t.message;return e?`${or(e.file)} | ${or(e.sourcemap)} :\n${n}`:n})).join("\n - ")}`;if(o.error(e),!0===t.bailOnError)throw new Error(e)}g.length>0&&o.warn(`Warnings while uploading sourcemaps:\n - ${g.join("\n - ")}`)})(r,e.sourcemaps,{addMetric:t.addMetric,apiKey:t.apiKey,bundlerName:t.bundlerName,git:t.git,outDir:t.outDir,sendMetrics:t.sendMetrics,site:t.site,version:t.version},n),i.end()},ar=e=>{const n=t.bold.red,o=e[qo]||{},r={errors:[]};if(o.sourcemaps){const t=o.sourcemaps,i=t.releaseVersion||e.metadata?.version;i||r.errors.push(`${n("sourcemaps.releaseVersion")} is required (set it directly or via ${n("metadata.version")}).`),t.releaseVersion&&e.metadata?.version&&t.releaseVersion!==e.metadata.version&&r.errors.push(`${n("sourcemaps.releaseVersion")} must match ${n("metadata.version")} when both are configured.`),t.service||r.errors.push(`${n("sourcemaps.service")} is required.`),t.minifiedPathPrefix||r.errors.push(`${n("sourcemaps.minifiedPathPrefix")} is required.`),t.minifiedPathPrefix&&!(e=>{let t;try{t=new URL(e).host}catch{}return!(!t&&!e.startsWith("/"))})(t.minifiedPathPrefix)&&r.errors.push(`${n("sourcemaps.minifiedPathPrefix")} must be a valid URL or start with '/'.`),i&&(r.config={bailOnError:!1,dryRun:!1,maxConcurrency:20,...t,releaseVersion:i})}return r},ur=({options:e,context:t})=>{const n=t.getLogger(zo),o=n.time("validate options"),r=((e,t)=>{const n=[],o=ar(e);if(n.push(...o.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${zo}.`);return{...e[qo],sourcemaps:o.config}})(e,n);o.end();const i=ae(e,"metrics",n);let s,a,u,c=!1;const d=async()=>{r.sourcemaps&&!c&&(u||(u=(async()=>{await t.artifactsReady,c=!0;const e=n.time("sourcemaps process");await sr(r,{apiKey:t.auth.apiKey,bundlerName:t.bundler.name,git:s,addMetric:t.addMetric,outDir:t.bundler.outDir,outputs:a?.outputs||[],sendMetrics:i,site:t.auth.site,version:t.version},n),e.end()})()),await u)},l=async()=>{if(t.artifactsPending){const e=d();t.queue(e)}else await d()};return[{name:zo,enforce:"post",async git(e){s=e,a&&await l()},async buildReport(t){a=t,!s&&K(e)||await l()},async asyncTrueEnd(){c||await d()}}]},cr="liveDebugger",dr="datadog-live-debugger-plugin",lr="if(typeof globalThis.$dd_probes==='undefined'){globalThis.$dd_probes=function(){}}",pr="__DD_LIVE_DEBUGGER_BUILD__",fr=e=>void 0===e?lr:`${lr};if(typeof globalThis.${pr}==='undefined'){globalThis.${pr}={version:${JSON.stringify(e)}}}`;function mr(e){return"function"==typeof e?e:e.default}function gr(e,t,n,o,r){const i=a.relative(t,e).replace(/\\/g,"/"),s=hr(n,r);if(s)return`${i};${s}`;const u=function(e){const t=e.node.loc?.start.line??0,n=e.node.loc?.start.column??0;return`${t}:${n}`}(n);return`${i};<anonymous>@${u}:${o}`}function hr(e,t){const n=e.node,o=e.parent;return"id"in n&&t.isIdentifier(n.id)?n.id.name:t.isObjectMethod(n)||t.isClassMethod(n)||t.isClassPrivateMethod(n)?wr(n.key,t):t.isVariableDeclarator(o)&&t.isIdentifier(o.id)?o.id.name:t.isAssignmentExpression(o)?function(e,t){if(t.isIdentifier(e))return e.name;if(t.isMemberExpression(e)||t.isOptionalMemberExpression(e)){const n=yr(e.object,t),o=br(e.property,e.computed,t);if(n&&o)return`${n}.${o}`}return null}(o.left,t):t.isObjectProperty(o)||t.isClassProperty(o)||t.isClassPrivateProperty(o)?wr(o.key,t):null}function yr(e,t){if(t.isIdentifier(e))return e.name;if(t.isThisExpression(e))return"this";if(t.isMemberExpression(e)||t.isOptionalMemberExpression(e)){const n=yr(e.object,t),o=br(e.property,e.computed,t);if(n&&o)return`${n}.${o}`}return null}function br(e,t,n){return n.isPrivateName(e)&&n.isIdentifier(e.id)?`#${e.id.name}`:t?null:n.isIdentifier(e)?e.name:null}function wr(e,t){return t.isIdentifier(e)?e.name:t.isStringLiteral(e)||t.isNumericLiteral(e)||t.isBigIntLiteral(e)?String(e.value):t.isPrivateName(e)&&t.isIdentifier(e.id)?`#${e.id.name}`:null}function vr(e,t){if(e.node.leadingComments)for(const n of e.node.leadingComments)if(n.value.includes(t))return!0;return!1}function $r(e,t){const n=[];if(t.isBlockStatement(e.body)){const o=e.params.flatMap((e=>jr(e,t))),r=new Set(o),i="id"in e&&t.isIdentifier(e.id)?e.id.name:"";for(const o of e.body.body)if(t.isVariableDeclaration(o)){const e=o.end;if(null==e)continue;for(const s of o.declarations)for(const o of jr(s.id,t))r.has(o)||o===i||n.push({name:o,declarationEnd:e,temporalDeadZones:[]})}}const o=n.length>25?n.slice(0,25):n;if(t.isBlockStatement(e.body)){const n=o.map((({name:e})=>e)),r=new Set(n),i=function(e,t,n){const o=new Map;for(const r of e.body)kr(r,t,o,n);return o}(e.body,r,t);for(const e of o)e.temporalDeadZones=i.get(e.name)??[]}return o}function kr(e,t,n,o){o.isFunctionDeclaration(e)||o.isClassDeclaration(e)||(o.isBlockStatement(e)?xr(e,t,n,o):o.isIfStatement(e)?(kr(e.consequent,t,n,o),e.alternate&&kr(e.alternate,t,n,o)):o.isForStatement(e)||o.isForInStatement(e)||o.isForOfStatement(e)||o.isWhileStatement(e)||o.isDoWhileStatement(e)?kr(e.body,t,n,o):o.isSwitchStatement(e)?function(e,t,n,o){for(const r of e.cases){Er(r.consequent,e.start,t,n,o);for(const e of r.consequent)kr(e,t,n,o)}}(e,t,n,o):o.isTryStatement(e)?(xr(e.block,t,n,o),e.handler&&xr(e.handler.body,t,n,o),e.finalizer&&xr(e.finalizer,t,n,o)):(o.isLabeledStatement(e)||o.isWithStatement(e))&&kr(e.body,t,n,o))}function xr(e,t,n,o){Er(e.body,e.start,t,n,o);for(const r of e.body)kr(r,t,n,o)}function Er(e,t,n,o,r){if(null!=t)for(const i of e)r.isVariableDeclaration(i)&&"var"!==i.kind?Sr(i,t,n,o,r):r.isClassDeclaration(i)&&i.id&&Ir(i.id.name,t,i.end,n,o)}function Sr(e,t,n,o,r){for(const i of e.declarations)for(const s of jr(i.id,r))Ir(s,t,e.end,n,o)}function Ir(e,t,n,o,r){if(null==n||!o.has(e))return;const i=r.get(e)??[];i.push({start:t,end:n}),r.set(e,i)}function jr(e,t){return t.isIdentifier(e)?[e.name]:t.isRestElement(e)?t.isIdentifier(e.argument)?[e.argument.name]:jr(e.argument,t):t.isAssignmentPattern(e)?jr(e.left,t):t.isObjectPattern(e)?e.properties.flatMap((e=>t.isRestElement(e)?jr(e.argument,t):jr(e.value,t))):t.isArrayPattern(e)?e.elements.flatMap((e=>e?jr(e,t):[])):t.isTSParameterProperty(e)&&t.isIdentifier(e.parameter)?[e.parameter.name]:[]}const Ar=["@babel/parser","@babel/traverse","@babel/types","magic-string"];let Dr,Pr,Mr,Cr,Or=!1;function Nr(e){try{return function(e){switch(e){case"@babel/parser":return require("@babel/parser");case"@babel/traverse":return require("@babel/traverse");case"@babel/types":return require("@babel/types");case"magic-string":return require("magic-string");default:throw new Error(`Unknown peer dependency: ${e}`)}}(e)}catch(e){throw function(e){if(!function(e){if(!(e instanceof Error))return!1;const t=e.code;if("MODULE_NOT_FOUND"!==t&&"ERR_MODULE_NOT_FOUND"!==t)return!1;return Ar.some((t=>e.message.includes(t)))}(e))return e instanceof Error?e:new Error(String(e));const t=Ar.find((t=>e.message.includes(t))),n=t??Ar.join(", ");return new Error(`Datadog Live Debugger could not load "${n}". It is an optional peer dependency that must be installed in your project when the \`liveDebugger\` plugin is enabled. Install the peer dependencies with: \`npm install --save-dev ${Ar.join(" ")}\` (or the yarn/pnpm/bun equivalent). Underlying error: ${e.message}`)}(e)}}const Tr=/\bfunction\b|=>|\bclass\b|\)\s*\{/;function Rr(e){const{code:t,filePath:n,buildRoot:o,honorSkipComments:r,functionTypes:i,namedOnly:s}=e;let a=0,u=0,c=0,d=0,l=0;if(function(e){return/['"][^'"]*(?:@css-module:|\?worker\b|\?sprite\b|dynamic!)[^'"]*['"]/.test(e)}(t))return{code:t,failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:1,skippedUnsupportedCount:d,totalFunctions:l};if(!Tr.test(t))return{code:t,failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:0,skippedUnsupportedCount:d,totalFunctions:l};Or||(Dr=Nr("@babel/parser").parse,Pr=mr(Nr("@babel/traverse")),Mr=Nr("@babel/types"),Cr=mr(Nr("magic-string")),Or=!0);const p=Dr(t,{sourceType:"unambiguous",plugins:["jsx","typescript"],sourceFilename:n}),f=[],m=new Map,g=new Set,h=new Map,y=new Map;let b=0;if(Pr(p,{Function(e){l++;const t=function(e,t){if(t.isClassMethod(e.node)&&"constructor"===e.node.kind&&Vr(e,t))return e.node;return}(e,Mr);if(t&&(m.set(t,t.body.start),h.set(t,function(e,t){const n=[];for(const o of e)Lr(o,n,t);return n}(t.body.body,Mr))),!function(e,t){const n=e.node;return!(n.generator||t.isClassMethod(n)&&"constructor"===n.kind)}(e,Mr))return void d++;if(r&&function(e,t,n){let o=e;for(;o;){if(vr(o,t))return!0;if(n.isStatement(o.node)||n.isExportDeclaration(o.node)){if(o.parentPath&&n.isExportDeclaration(o.parentPath.node))return vr(o.parentPath,t);break}o=o.parentPath}return!1}(e,"@dd-no-instrumentation",Mr))return void c++;if(i&&!i.includes(function(e,t){if(t.isFunctionDeclaration(e))return"functionDeclaration";if(t.isArrowFunctionExpression(e))return"arrowFunction";if(t.isObjectMethod(e))return"objectMethod";if(t.isClassPrivateMethod(e))return"classPrivateMethod";if(t.isClassMethod(e))return"classMethod";return"functionExpression"}(e.node,Mr)))return void d++;if(s&&!hr(e,Mr))return void d++;let p=0;if(!hr(e,Mr)){const t=e.parentPath?.node;t&&(p=y.get(t)||0,y.set(t,p+1))}const w=gr(n,o,e,p,Mr);try{const t=e.node,n=b++,o=`$dd_p${n}`,r=function(e,t){const n=[];for(const o of e.params)for(const e of jr(o,t))"this"!==e&&n.push(e);return n.length>25?n.slice(0,25):n}(t,Mr),i=$r(t,Mr),s=Mr.isArrowFunctionExpression(t)&&!Mr.isBlockStatement(t.body),a=s&&Mr.isSequenceExpression(t.body),c=function(e,t){if(t.isFunction(e.node)&&!t.isArrowFunctionExpression(e.node))return;let n=e.parentPath;for(;n;){const e=n.node;if(t.isClassMethod(e)&&"constructor"===e.kind){if(!Vr(n,t))return;return{node:e,parent:n.parent,parentPath:n.parentPath}}if(t.isFunction(e)){if(t.isArrowFunctionExpression(e)){n=n.parentPath;continue}return}n=n.parentPath}return}(e,Mr),d=null!=c;c&&(g.add(c.node),m.set(c.node,c.node.body.start));const l=[],p=s||!Mr.isBlockStatement(t.body)||!Kr(t.body.body,Mr);let h;if(!s&&Mr.isBlockStatement(t.body)&&Wr(t.body.body,l,Mr),!s&&Mr.isBlockStatement(t.body)&&t.body.directives.length>0){h=t.body.directives[t.body.directives.length-1].end}f.push({bodyStart:t.body.start,bodyEnd:t.body.end,functionEnd:t.end,isExpressionBody:s,hasSequenceExpressionBody:a,aliasesExpressionBodySuperCall:d&&s&&Br(t.body,Mr),needsTrailingReturn:p,useThisAlias:d,bodyParenStart:s&&"number"==typeof t.body.extra?.parenStart?t.body.extra.parenStart:void 0,directivesEnd:h,functionId:w,probeVarName:o,probeIdx:String(n),entryVars:r,localVars:i,returns:l}),u++}catch(e){a++}}}),0===u)return{code:t,failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:0,skippedUnsupportedCount:d,totalFunctions:l};const w=new Cr(t),v=function(e){const t=new Set;for(const n of e)n.aliasesExpressionBodySuperCall&&t.add(zr({start:n.bodyStart,end:n.bodyEnd}));return t}(f),$=function(e,t,n,o){const r=[];for(const i of e){const e=t.get(i);null!=e&&r.push({bodyStart:e,superCalls:(n.get(i)??[]).filter((e=>!o.has(zr(e))))})}return r}(g,m,h,v);for(let e=f.length-1;e>=0;e--)_r(w,t,f[e]);for(const e of $)Fr(w,t,e);return{code:w.toString(),map:w.generateMap({source:n,hires:!0}),failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:0,skippedUnsupportedCount:d,totalFunctions:l}}function _r(e,t,n){const{probeVarName:o,probeIdx:r,functionId:i,entryVars:s,localVars:a,returns:u,bodyStart:c,bodyEnd:d,functionEnd:l,isExpressionBody:p,hasSequenceExpressionBody:f,aliasesExpressionBodySuperCall:m,useThisAlias:g,bodyParenStart:h,directivesEnd:y}=n,b=`$dd_e${r}`,w=`$dd_rv${r}`,v=g?"$dd_t":"this",$=s.join(", "),k=""!==$,x=k?`, ${b}()`:"";const E=`const ${o} = $dd_probes('${i.replace(/['\\\n\r\u2028\u2029]/g,(e=>{switch(e){case"'":return"\\'";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e}}))}');`,S=k?`const ${b} = () => ({${$}});`:"",I=`if (${o}) $dd_entry(${o}, ${v}${x});`,j=`catch(e) { if (${o}) $dd_throw(${o}, e, ${v}${x}); throw e; }`;if(p){if(null!=h){const n=function(e,t,n){const o=[];for(let r=t;r<n;r++)"("===e[r]&&o.push(r);return o}(t,h,c),o=function(e,t,n){const o=[];for(let r=n-1;r>=t;r--)")"===e[r]&&o.push(r);return o}(t,d,l),r=Math.min(n.length,o.length);for(let t=0;t<r;t++){const r=n[t],i=o[t];e.remove(r,r+1),e.remove(i,i+1)}}const n=["{",E,S,"try {",I,m?`const ${w} = ($dd_t = `:`const ${w} = `].filter(Boolean).join("\n");let r=f?");":";";m&&(r=f?"));":");");const i=[r,`if (${o}) $dd_return(${o}, ${w}, ${v}${Ur(b,k,a,d)});`,`return ${w};`,`} ${j}`,"}"].join("\n");if(d-c>=2){const o=f?`${n}(${t[c]}`:n+t[c];e.update(c,c+1,o),e.update(d-1,d,t[d-1]+i)}else e.update(c,d,n+t.slice(c,d)+i)}else{const r=[E,S,"try {",`let ${w};`,I].filter(Boolean).join("\n");for(const t of u){const n=Ur(b,k,a,t.start);if(null!=t.argStart&&null!=t.argEnd){const r=t.hasSequenceExpressionArgument?`(${w} = (`:`(${w} = `,i=t.hasSequenceExpressionArgument?")":"";e.appendLeft(t.argStart,r),e.appendLeft(t.argEnd,`${i}, ${o} ? $dd_return(${o}, ${w}, ${v}${n}) : ${w})`)}else e.appendLeft(t.start,`if (${o}) $dd_return(${o}, undefined, ${v}${n}); `)}if(null!=y){const n=y-1;e.update(n,y,`${t[n]}\n${r}`)}else e.update(c,c+1,`${t[c]}${r}`);const i=Ur(b,k,a,d),s=`\n${n.needsTrailingReturn?`if (${o}) $dd_return(${o}, undefined, ${v}${i});\n`:""}} ${j}\n`;e.update(d-1,d,`${s}${t[d-1]}`)}}function Fr(e,t,n){e.update(n.bodyStart,n.bodyStart+1,`${t[n.bodyStart]}let $dd_t;`);for(const t of n.superCalls)e.appendLeft(t.start,"($dd_t = "),e.appendLeft(t.end,")")}function Lr(e,t,n){Br(e,n)&&t.push({start:e.start,end:e.end});const o=Object.values(e);for(const e of o)if(Array.isArray(e))for(const o of e)qr(o,t,n);else qr(e,t,n)}function qr(e,t,n){n.isNode(e)&&(n.isFunction(e)&&!n.isArrowFunctionExpression(e)||Lr(e,t,n))}function zr(e){return`${e.start}:${e.end}`}function Br(e,t){return t.isCallExpression(e)&&t.isSuper(e.callee)}function Vr(e,t){const n=e.parentPath?.parentPath;if(!n)return!1;const o=n.node;return(t.isClassDeclaration(o)||t.isClassExpression(o))&&null!=o.superClass}function Ur(e,t,n,o){const r=function(e,t){const n=e.filter((({declarationEnd:e,temporalDeadZones:n})=>e<=t&&!function(e,t){return e.some((({start:e,end:n})=>e<=t&&t<n))}(n,t))).map((({name:e})=>e));if(0===n.length)return;return`{${n.join(", ")}}`}(n,o);return t&&r?`, ${e}(), ${r}`:t?`, ${e}()`:r?`, undefined, ${r}`:""}function Wr(e,t,n){for(const o of e)if(n.isReturnStatement(o))t.push({start:o.start,end:o.end,argStart:o.argument?.start??void 0,argEnd:o.argument?.end??void 0,hasSequenceExpressionArgument:n.isSequenceExpression(o.argument)});else if(!n.isFunctionDeclaration(o)&&!n.isClassDeclaration(o))if(n.isBlockStatement(o))Wr(o.body,t,n);else if(n.isIfStatement(o))Wr([o.consequent],t,n),o.alternate&&Wr([o.alternate],t,n);else if(n.isForStatement(o)||n.isForInStatement(o)||n.isForOfStatement(o)||n.isWhileStatement(o)||n.isDoWhileStatement(o))Wr([o.body],t,n);else if(n.isSwitchStatement(o))for(const e of o.cases)Wr(e.consequent,t,n);else n.isTryStatement(o)?(Wr(o.block.body,t,n),o.handler&&Wr(o.handler.body.body,t,n),o.finalizer&&Wr(o.finalizer.body,t,n)):(n.isLabeledStatement(o)||n.isWithStatement(o))&&Wr([o.body],t,n)}function Kr(e,t){if(0===e.length)return!1;const n=e[e.length-1];if(t.isReturnStatement(n))return!0;if(t.isIfStatement(n)&&n.alternate){const e=t.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent],o=t.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];return Kr(e,t)&&Kr(o,t)}return!1}const Hr=["functionDeclaration","functionExpression","arrowFunction","objectMethod","classMethod","classPrivateMethod"],Jr=t.bold.red,Gr=Number(process.env.DD_LD_LIMIT)||1/0,Yr=(e,t)=>{const n=t.getLogger(dr);let o=0,r=0,i=0,s=0,a=0,u=0,c=0,d=0;return{name:dr,enforce:"post",transform:{filter:{id:{include:e.include,exclude:e.exclude}},handler(l,p){if(e.include.length>0){if(!e.include.some((e=>"string"==typeof e?p.includes(e):e.test(p))))return{code:l}}for(const t of e.exclude){if("string"==typeof t?p.includes(t):t.test(p))return{code:l}}if(d>=Gr)return{code:l};try{const f=Rr({code:l,filePath:p,buildRoot:t.buildRoot,honorSkipComments:e.honorSkipComments,functionTypes:e.functionTypes,namedOnly:e.namedOnly});if(o+=f.instrumentedCount,c+=f.totalFunctions,r+=f.failedCount,i+=f.skippedByCommentCount,s+=f.skippedFileCount,a+=f.skippedUnsupportedCount,f.totalFunctions>0&&d++,0===f.instrumentedCount)return{code:l};u++;const m=function(e){const t=e.getNativeBuildContext?.();return t?.inputSourceMap}(this),g=f.map&&m?function(e,t,n,o){try{return w(e,((e,n)=>1===n.depth?t:null))}catch(t){return o.error(`Failed to compose source map for ${n}: ${t}`,{forward:!0}),e}}(f.map,m,p,n):f.map;return{code:f.code,map:g}}catch(e){return n.error(`Instrumentation Error in ${p}: ${e}`,{forward:!0}),{code:l}}}},buildEnd:()=>{c>0&&n.info(`Live Debugger: ${o}/${c} functions instrumented across ${u}/${d} files`,{forward:!0,context:{failedCount:r,skippedByCommentCount:i,skippedFileCount:s,skippedUnsupportedCount:a,totalFilesWithFunctions:d,instrumentedCount:o,totalFunctions:c,transformedFileCount:u}})}}},Qr=({options:e,context:t})=>{const n=((e,t)=>{const n=e[cr]||{},o=e.metadata?.version,r=[];if(void 0!==n.include)if(Array.isArray(n.include)){for(const e of n.include)if("string"!=typeof e&&!(e instanceof RegExp)){r.push(`${Jr("include")} patterns must be strings or RegExp`);break}}else r.push(`${Jr("include")} must be an array of strings or RegExp`);if(void 0!==n.exclude)if(Array.isArray(n.exclude)){for(const e of n.exclude)if("string"!=typeof e&&!(e instanceof RegExp)){r.push(`${Jr("exclude")} patterns must be strings or RegExp`);break}}else r.push(`${Jr("exclude")} must be an array of strings or RegExp`);if(void 0!==n.honorSkipComments&&"boolean"!=typeof n.honorSkipComments&&r.push(`${Jr("honorSkipComments")} must be a boolean`),void 0!==n.functionTypes)if(Array.isArray(n.functionTypes)){for(const e of n.functionTypes)if(!Hr.includes(e)){r.push(`${Jr("functionTypes")} contains invalid value "${e}". Valid values: ${Hr.join(", ")}`);break}}else r.push(`${Jr("functionTypes")} must be an array of FunctionKind values`);if(void 0!==n.namedOnly&&"boolean"!=typeof n.namedOnly&&r.push(`${Jr("namedOnly")} must be a boolean`),r.length)throw t.error(`\n - ${r.join("\n - ")}`),new Error(`Invalid configuration for ${dr}.`);return{version:o,include:n.include||[/\.[jt]sx?$/],exclude:n.exclude||[/\/node_modules\//,/\.min\.js$/,/\/pyodide-lib\//,/^vite\//,/\0/,/commonjsHelpers\.js$/,/__vite-browser-external/,/@datadog\/browser-/,/browser-sdk\/packages\//],honorSkipComments:n.honorSkipComments??!0,functionTypes:n.functionTypes,namedOnly:n.namedOnly??!1}})(e,t.getLogger(dr));return t.inject({type:"code",position:xe.BEFORE,injectIntoAllChunks:!0,value:fr(n.version)}),[Yr(n,t)]};const Xr=[e=>/modules\.tree\.(count|size)$/.test(e.metric)?null:e,e=>e.tags.some((e=>/^assetName:.*\.map$/.test(e)||/^moduleName:\/node_modules/.test(e)))?null:e,e=>{const t={size:1e5,count:10,duration:1e3};/^sourcemaps\.upload\.(failure|retry)$/.test(e.metric)&&(t.count=0),/(entries|loaders|warnings|errors)\.count$/.test(e.metric)&&(t.count=0),/(modules\.(dependencies|dependents)$)/.test(e.metric)&&(t.count=30),/modules\.tree\.count$/.test(e.metric)&&(t.count=150),/modules\.tree\.size$/.test(e.metric)&&(t.size=15e5),/entries\.size$/.test(e.metric)&&(t.size=0),/entries\.modules\.count$/.test(e.metric)&&(t.count=0);return(e.points.length?e.points.reduce(((e,t)=>e+t[1]),0)/e.points.length:0)>t[e.type]?e:null}],Zr="metrics",ei="datadog-metrics-plugin",ti=e=>Math.floor((e||Date.now())/1e3),ni=(e,t)=>{const n=[`bundler:${Y(e.bundler.name)}`,`plugin_version:${Y(e.version)}`,`site:${Y(e.auth.site)}`];return e.build.metadata.name&&n.push(`build_name:${Y(e.build.metadata.name)}`),e.build.metadata.version&&n.push(`build_version:${Y(e.build.metadata.version)}`),[...n,...t]},oi=(e,t,n)=>({...e,tags:[...e.tags,...t],metric:n?`${n}.${e.metric}`:e.metric}),ri=(e,t,n,o,r)=>{const i=new Set;for(const t of e){let e={...t,toSend:!0};if(n?.length)for(const t of n){const n=t({metric:e.metric,type:e.type,points:e.points,tags:e.tags});n?e={...n,toSend:e.toSend}:e.toSend=!1}i.add(oi(e,o,r))}const s=Array.from(i).filter((e=>e.toSend)).length;return i.add(oi({metric:"metrics.count",type:"count",points:[[t,s+1]],tags:[],toSend:!0},o,r)),i},ii=(e="")=>e.endsWith("/")?e:`${e}/`,si=(e,t)=>{let n=e;return e.split(ii(t)),n.split("!").pop().replace(/(.*)?\/node_modules\//,"/node_modules/").replace(/^((\.)*\/)+/,"")},ai=(e,t)=>e.split("!").pop().replace(ii(t),"./"),ui=(e,t,n)=>{let o=e.name||e.userRequest;return o||(o=((e,t)=>{let n=e.userRequest;if(!n){let o;o=t.moduleGraph&&"function"==typeof t.moduleGraph.getIssuer?t.moduleGraph.getIssuer(e):e.issuer,n=o?.userRequest,n||(n=e._identifier?.split("!").pop())}return n||"unknown"})(e,t)),ai(o||"no-name",n)},ci=e=>e.replace(/^.*\/node_modules\/(@[a-z0-9][\w-.]+\/[a-z0-9][\w-.]*|[^/]+).*$/,"$1"),di=e=>e.map((e=>({type:e?.constructor?.name??typeof e,name:e?.name,value:"string"==typeof e?e:void 0}))),li=t.bold.red,pi=t.bold.cyan,fi=e=>(t,n)=>{let o,r;return"function"==typeof e?(o=e(t),r=e(n)):(o=t[e],r=n[e]),o>r?-1:o<r?1:0},mi=(e,t)=>{if(!t||!t.size)return[];const n=Array.from(t.values());n.sort(fi("duration"));const o={name:`${e} duration`,values:n.map((e=>({name:e.name,value:H(e.duration)}))),top:!0};n.sort(fi("increment"));return[o,{name:`${e} hits`,values:n.map((e=>({name:e.name,value:e.increment.toString()}))),top:!0}]},gi=(e,t,n)=>{const o=[];var r;n&&(o.push(...mi("Loader",n.loaders)),o.push(...mi("Tapable",n.tapables)),o.push(...mi("Module",n.modules))),o.push(...(e=>{const t={name:"Module total dependents",values:[],top:!0},n={name:"Module total dependencies",values:[],top:!0},o={name:"Module size",values:[],top:!0},r={name:"Module aggregated size",values:[],top:!0},i=new Set,s=W(e.build),a=new Map,u=new Map,c=new Map;for(const e of s.inputs||[]){if("map"===e.type)continue;const t=new Set(e.dependencies),n=new Set(e.dependents);for(const n of t)c.has(n)||c.set(n,new Set),c.get(n).add(e.filepath);for(const t of n)u.has(t)||u.set(t,new Set),u.get(t).add(e.filepath);if(u.has(e.filepath)){const n=u.get(e.filepath);for(const e of n)t.add(e)}if(c.has(e.filepath)){const t=c.get(e.filepath);for(const e of t)n.add(e)}u.set(e.filepath,t),c.set(e.filepath,n),a.set(e.filepath,{name:e.name,size:e.size,dependencies:t,dependents:n})}for(const[e,t]of a){const n=u.get(e)||new Set,o=c.get(e)||new Set;let r=t.size;for(const e of n)r+=a.get(e)?.size||0;i.add({name:t.name,size:t.size,aggregatedSize:r,dependents:o,dependencies:n})}if(!i.size)return[t,n,o];const d=Array.from(i);return d.sort(fi((e=>e.dependents.size))),t.values=d.map((e=>({name:e.name,value:e.dependents.size.toString()}))),d.sort(fi((e=>e.dependencies.size))),n.values=d.map((e=>({name:e.name,value:e.dependencies.size.toString()}))),d.sort(fi("size")),o.values=d.map((e=>({name:e.name,value:v(e.size)}))),d.sort(fi("aggregatedSize")),r.values=d.map((e=>({name:e.name,value:v(e.aggregatedSize||e.size)}))),[t,n,o,r]})(e)),o.push(...(r=e,[{name:"Asset size",values:(r.build.outputs||[]).filter((e=>"map"!==e.type)).sort(fi((e=>e.size))).map((e=>({name:e.name,value:v(e.size)}))),top:!0},{name:"Entry aggregated size",values:(r.build.entries||[]).sort(fi((e=>e.size))).map((e=>({name:e.name,value:v(e.size)}))),top:!0},{name:"Entry number of modules",values:(r.build.entries||[]).sort(fi((e=>e.size))).map((e=>({name:e.name,value:e.inputs.length.toString()})))||[],top:!0}])),o.push(...(e=>{const t={name:"General Numbers",values:[],top:!1},n=e.build.inputs?e.build.inputs.length:0,o=e.build.outputs?e.build.outputs.length:0,r=e.build.warnings.length,i=e.build.errors.length,s=e.build.entries?e.build.entries.length:0;return e.build.start&&t.values.push({name:"Overhead duration",value:H(e.build.start-e.start)}),e.build.duration&&t.values.push({name:"Build duration",value:H(e.build.duration)}),e.build.writeDuration&&t.values.push({name:"Write duration",value:H(e.build.writeDuration)}),t.values.push({name:"Number of modules",value:n.toString()},{name:"Number of assets",value:o.toString()},{name:"Number of entries",value:s.toString()},{name:"Number of warnings",value:r.toString()},{name:"Number of errors",value:i.toString()}),[t]})(e));const i=(e=>{let t="";for(const t of e){t.top&&t.values.length>=5&&(t.values=t.values.slice(0,5),t.name=`Top 5 ${t.name}`);for(const e of t.values)e.name=J(e.name,60)}const n=Math.max(...e.map((e=>e.name.length))),o=Math.max(...e.flatMap((e=>e.values.map((e=>e.name.length))))),r=Math.max(...e.flatMap((e=>e.values.map((e=>e.value.length))))),i=Math.max(n+4,o+r+4);for(const n of e){if(0===n.values.length)continue;const e=i-(n.name.length+4);t+=`\n== ${n.name} ${"=".repeat(e)}=\n`;for(const e of n.values){const n=r-e.value.length;t+=` [${li(e.value)}] ${" ".repeat(n)}${pi(e.name)}\n`}}return t})(o);t.info(i)},hi="api/v1/series",yi=t.bold.green,bi=(e,t,n)=>{if(!t.apiKey)return void n.info("Won't send metrics to Datadog: missing API Key.");if(!e.size)return void n.debug("No metrics to send.");const o=Array.from(e).filter((e=>e.toSend)).map((e=>({...e,toSend:void 0}))),r=new Map;for(const e of o)r.has(e.metric)||r.set(e.metric,0),r.set(e.metric,r.get(e.metric)+1);const i=Array.from(r.entries()).sort((([e],[t])=>e.localeCompare(t))).map((([e,t])=>`${e} - ${t}`));return n.debug(`\nSending ${o.length} metrics with configuration:\n - intake: ${yi(`https://api.${t.site}/${hi}`)}\n\nMetrics:\n - ${i.join("\n - ")}`),z({method:"POST",url:`https://api.${t.site}/${hi}?api_key=${t.apiKey}`,getData:()=>({data:JSON.stringify({series:o})})}).catch((e=>{n.error(`Error sending metrics ${e}`)}))},wi=["onStart","onLoad","onResolve","onEnd"],vi=new Map,$i=new Map,ki=new Map,xi=(e,t,n)=>{const o=Object.assign({},e);for(const r of wi)o[r]=async(o,i)=>{const s=$i.get(t)||{name:t,increment:0,duration:0,events:{}};s.events[r]=s.events[r]||{name:r,values:[]};const a="onLoad"===r;return(0,e[r])(o,(async(...e)=>{const o=ai(e[0].path,n),u=ki.get(o)||{name:o,increment:0,duration:0,events:{}};u.events[r]=u.events[r]||{name:r,values:[]};const c=$.performance.now();try{return await i(...e)}finally{const n=$.performance.now(),i=n-c,d={start:c,end:n,duration:i,context:di(e)};if(s.events[r].values.push(d),s.duration+=i,s.increment+=1,$i.set(t,s),u.events[r].values.push(d),u.duration+=i,u.increment+=1,ki.set(o,u),a){const e=vi.get(t)||{name:t,increment:0,duration:0,events:{}};e.events[r]=e.events[r]||{name:r,values:[]},e.events[r].values.push(d),e.duration+=i,e.increment+=1,vi.set(t,e)}}}))};return o},Ei=(e,t)=>({setup:n=>{n.initialOptions.metafile=!0;const o=t.time("wrapping plugins");((e,t)=>{const n=e.initialOptions.plugins;if(n){const e=n.map((e=>({...e})));for(const o of n){const n=o.setup;o.setup=async r=>{const i=xi(r,o.name,t);await n({...i,initialOptions:{...i.initialOptions,plugins:e}})}}}})(n,e.buildRoot),o.end(),n.onEnd((async n=>{if(!n.metafile)return void t.warn("Missing metafile, can't proceed with modules data.");const o=t.time("getting plugins results"),{plugins:r,loaders:i,modules:s}={plugins:$i,modules:ki,loaders:vi};o.end(),await e.asyncHook("timings",{tapables:r,loaders:i,modules:s})}))}});class Si{constructor(e){this.started={},this.finished=[],this.cwd=e}startModule(e,t){const n=ui(e,t,this.cwd),o=(e=>(e.loaders||[]).map((e=>e.loader||e)).map(ci))(e);o.length||o.push("no-loader"),this.started[n]={module:si(n),timings:{start:$.performance.now(),duration:0,end:0},loaders:o}}doneModule(e,t){const n=ui(e,t,this.cwd),o=this.started[n];o&&(o.timings.end=$.performance.now(),o.timings.duration=o.timings.end-o.timings.start,this.finished.push(o),delete this.started[n])}getResults(){const e=new Map,t=new Map;for(const n of this.finished){const o=n.timings.end-n.timings.start,r=t.get(n.module)||{name:n.module,increment:0,duration:0,events:{}},i=n.loaders.join(",");r.events[i]=r.events[i]||{name:i,values:[]},r.events[i].values.push(n.timings),r.increment+=1,r.duration+=o,t.set(n.module,r);for(const t of n.loaders){const n=e.get(t)||{name:t,increment:0,duration:0,events:{}};n.increment+=1,n.duration+=o,e.set(t,n)}}return{loaders:e,modules:t}}}class Ii{constructor(e){this.monitoredTaps={},this.tapables=[],this.hooks={},this.timings=new Map,this.ignoredHooks=["normalModuleLoader"],this.cwd=e}saveResult(e,t,n,o,r,i){const s=this.timings.get(t)||{name:t,duration:0,increment:0,events:{}};s.events[n]||(s.events[n]={name:n,values:[]}),s.events[n].values.push({start:r,end:i,duration:i-r,context:o,type:e}),s.duration+=i-r,s.increment+=1,this.timings.set(t,s)}getResults(){const e=this.timings;for(const[t,n]of this.timings){const o=n;o.duration=Object.values(n.events).map((e=>e.values.reduce(((e,t)=>e+t.end-t.start),0))).reduce(((e,t)=>e+t),0),e.set(t,o)}return{monitoredTaps:this.monitoredTaps,tapables:this.tapables,hooks:this.hooks,timings:e}}getPromiseTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=$.performance.now(),s=t.apply(this,r),a=()=>{this.saveResult(e,n,o,di(r),i,$.performance.now())};return s.then(a,a),s}}getAsyncTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=$.performance.now(),s=r.pop();return t.apply(this,[...r,(...t)=>(this.saveResult(e,n,o,di(r),i,$.performance.now()),s(...t))])}}getDefaultTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=$.performance.now(),s=t.apply(this,r);return this.saveResult(e,n,o,di(r),i,$.performance.now()),s}}getTapPatch(e,t,n,o){switch(e){case"promise":return this.getPromiseTapPatch(e,t,n,o);case"async":return this.getAsyncTapPatch(e,t,n,o);default:return this.getDefaultTapPatch(e,t,n,o)}}newTap(e,t,n,o){return(r,i)=>{const s="string"==typeof(a=r)?a:a.name;var a;const u=`${t}-${s}`;if(this.monitoredTaps[u])return n.call(o,r,i);this.monitoredTaps[u]=!0;const c=this.getTapPatch(e,i,s,t);return n.call(o,r,c)}}replaceTaps(e,t){t.tap=this.newTap("default",e,t.tap,t),t.tapAsync=this.newTap("async",e,t.tapAsync,t),t.tapPromise=this.newTap("promise",e,t.tapPromise,t)}patchHook(e,t,n){n._fakeHook||e.includes(ei)||(this.hooks[e]||(this.hooks[e]=[]),this.hooks[e].includes(t)||(this.hooks[e].push(t),this.replaceTaps(t,n)))}patchHooks(e){const t=e.constructor.name,n=Object.keys(e.hooks).filter((e=>!this.ignoredHooks.includes(e)&&!this.hooks[t]?.includes(e)));for(const o of n)this.patchHook(t,o,e.hooks[o])}checkNewHooks(){for(const e of this.tapables)this.patchHooks(e)}throughHooks(e){this.tapables.includes(e)||this.tapables.push(e),this.patchHooks(e)}}const ji=e=>async t=>{const n=e.getLogger(ei),o={name:ei},r=new Ii(e.buildRoot),i=new Si(e.buildRoot),s=n.time("parse compiler hooks");r.throughHooks(t),s.end(),t.hooks.thisCompilation.tap(o,(e=>{const t=n.time("parse compilation hooks");r.throughHooks(e),t.end(),e.hooks.buildModule.tap(o,(t=>{i.startModule(t,e)})),e.hooks.succeedModule.tap(o,(t=>{i.doneModule(t,e)})),e.hooks.failedModule&&e.hooks.failedModule.tap(o,(t=>{i.doneModule(t,e)}))})),t.hooks.afterEmit.tapPromise(o,(async()=>{const{timings:t}=r.getResults(),{loaders:n,modules:o}=i.getResults();await e.asyncHook("timings",{tapables:t,loaders:n,modules:o})}))},Ai={filters:Xr},Di=({options:e,context:t,stores:n})=>{const o=t.getLogger(ei);let r=0;((e,t)=>{e.addMetric=e=>{t.metrics.add(e)}})(t,n);const i=((e,t)=>{const n=e[Zr],o=ti(n?.timestamp);let r=!1===n?.enableDefaultPrefix?"":`build.${t}`;return n?.prefix&&(r+=r?`.${n.prefix}`:n.prefix),{enableDefaultPrefix:!0,enableTracing:!1,filters:Xr,tags:[],...e[Zr],timestamp:o,prefix:r.toLowerCase().replace(/(^\.*|\.*$)/g,"")}})(e,t.bundler.name),s=[],a={name:ei,enforce:"pre",esbuild:Ei(t,o),webpack:ji(t),rspack:ji(t)},u=o.time("build",{start:!1}),c=i.enableTracing&&["esbuild","webpack","rspack"].includes(t.bundler.name);let d,l;const p=async()=>{if(!n.metrics.size)return;const e=o.time("aggregating collected metrics"),r=(()=>{const e=new Set(n.metrics);n.metrics.clear();const o=ni(t,i.tags);return ri(e,i.timestamp,i.filters,o,i.prefix)})();await t.asyncHook("metrics",r),e.end();const s=o.time("sending collected metrics to Datadog");await bi(r,{apiKey:t.auth.apiKey,site:t.auth.site},o),s.end()},f=async()=>{t.build.end=Date.now(),t.build.duration=t.build.end-t.build.start,t.build.writeDuration=t.build.end-r;const e=o.time("aggregating metrics"),n=i.timestamp,s=o.time("aggregate universal metrics"),a=((e,t)=>{const n=new Set,o=e.inputs||[],r=e.outputs||[],i=e.entries||[],s=e.warnings.length,a=e.errors.length,u=e.duration,c=new Map,d=new Map,l=new Map;for(const e of i){for(const t of e.inputs)c.has(t.filepath)||c.set(t.filepath,[]),c.get(t.filepath).push(e.name);for(const t of e.outputs){const n=t.filepath.replace(/\.map$/,"");l.has(n)||l.set(n,[]),l.get(n).push(e.name)}}for(const e of r)for(const t of e.inputs)d.has(t.filepath)||d.set(t.filepath,[]),d.get(t.filepath).push(e.name);n.add({metric:"assets.count",type:"count",points:[[t,r.length]],tags:[]}).add({metric:"entries.count",type:"count",points:[[t,i.length]],tags:[]}).add({metric:"errors.count",type:"count",points:[[t,a]],tags:[]}).add({metric:"modules.count",type:"count",points:[[t,o.length]],tags:[]}).add({metric:"warnings.count",type:"count",points:[[t,s]],tags:[]}),u&&n.add({metric:"compilation.duration",type:"duration",points:[[t,u]],tags:[]});for(const e of o){const o=[`moduleName:${e.name}`,`moduleType:${e.type}`];c.has(e.filepath)&&o.push(...c.get(e.filepath).map((e=>`entryName:${e}`))),d.has(e.filepath)&&o.push(...d.get(e.filepath).map((e=>`assetName:${e}`))),n.add({metric:"modules.size",type:"size",points:[[t,e.size]],tags:o}).add({metric:"modules.dependencies",type:"count",points:[[t,e.dependencies.size]],tags:o}).add({metric:"modules.dependents",type:"count",points:[[t,e.dependents.size]],tags:o})}for(const e of r){const o=[`assetName:${e.name}`,`assetType:${e.type}`],r=e.filepath.replace(/\.map$/,"");l.has(r)&&o.push(...l.get(r).map((e=>`entryName:${e}`))),n.add({metric:"assets.size",type:"size",points:[[t,e.size]],tags:o}).add({metric:"assets.modules.count",type:"count",points:[[t,e.inputs.length]],tags:o})}for(const e of i){const o=[`entryName:${e.name}`];n.add({metric:"entries.size",type:"size",points:[[t,e.size]],tags:o}).add({metric:"entries.modules.count",type:"count",points:[[t,e.inputs.length]],tags:o}).add({metric:"entries.assets.count",type:"count",points:[[t,e.outputs.length]],tags:o})}return n})(l,n);s.end();const u=o.time("aggregate plugins metrics"),c=((e,t)=>{const n=new Set;if(!e)return n;n.add({metric:"plugins.count",type:"count",points:[[t,e.size]],tags:[]});for(const o of e.values()){let e=0,r=0;for(const i of Object.values(o.events)){let s=0;r+=i.values.length;for(const t of i.values){const n=t.end-t.start;s+=n,e+=n}n.add({metric:"plugins.hooks.duration",type:"duration",points:[[t,s]],tags:[`pluginName:${o.name}`,`hookName:${i.name}`]}).add({metric:"plugins.hooks.increment",type:"count",points:[[t,i.values.length]],tags:[`pluginName:${o.name}`,`hookName:${i.name}`]})}n.add({metric:"plugins.duration",type:"duration",points:[[t,e]],tags:[`pluginName:${o.name}`]}).add({metric:"plugins.increment",type:"count",points:[[t,r]],tags:[`pluginName:${o.name}`]})}return n})(d?.tapables,n);u.end();const p=o.time("aggregate loaders metrics"),f=((e,t)=>{const n=new Set;if(!e)return n;n.add({metric:"loaders.count",type:"count",points:[[t,e.size]],tags:[]});for(const o of e.values())n.add({metric:"loaders.duration",type:"duration",points:[[t,o.duration]],tags:[`loaderName:${o.name}`]}).add({metric:"loaders.increment",type:"count",points:[[t,o.increment]],tags:[`loaderName:${o.name}`]});return n})(d?.loaders,n);p.end();const m=new Set([...a,...c,...f]),g=ni(t,i.tags),h=ri(m,n,i.filters,g,i.prefix);await t.asyncHook("metrics",h),e.end();const y=o.time("outputing report");gi(t,o,d),y.end();const b=o.time("sending metrics to Datadog");await bi(h,{apiKey:t.auth.apiKey,site:t.auth.site},o),b.end()},m={name:"datadog-universal-metrics-plugin",enforce:"post",buildStart(){u.resume(),t.build.start=t.build.start||Date.now(),e[Zr]?.timestamp||(i.timestamp=ti(t.build.start))},buildEnd(){u.end(),r=Date.now()},async timings(e){d=e,l&&await f()},async buildReport(e){l=e,!d&&c||await f()},async flush(){await p()}};return i.enableTracing&&s.push(a),s.push(m),s},Pi="output",Mi="datadog-output-plugin",Ci=(e,t)=>"string"==typeof t?t.replace(/(\.json)?$/,".json"):!0===t?`${e}.json`:t,Oi=e=>{const t=void 0===e;return{build:Ci("build",e?.build??t),bundler:Ci("bundler",e?.bundler??t),dependencies:Ci("dependencies",e?.dependencies??t),errors:Ci("errors",e?.errors??t),logs:Ci("logs",e?.logs??t),metrics:Ci("metrics",e?.metrics??t),timings:Ci("timings",e?.timings??t),warnings:Ci("warnings",e?.warnings??t)}},Ni=(e,t)=>n=>{n.hooks.done.tap("bundler-outputs",(n=>{t((()=>{const t=e.time("stats serialization"),o=n.toJson({all:!1,assets:!0,children:!0,chunks:!0,chunkGroupAuxiliary:!0,chunkGroupChildren:!0,chunkGroups:!0,chunkRelations:!0,entrypoints:!0,errors:!0,ids:!0,modules:!0,nestedModules:!0,relatedAssets:!0,warnings:!0,reasons:!1,chunkModules:!1});return t.end(),o}))}))},Ti=e=>{const t=new Set;return{buildStart(){t.clear()},writeBundle(e,n){t.add(n)},closeBundle(){e((()=>Array.from(t)))}}},Ri=({options:e,context:t})=>{const n=t.getLogger(Mi),o=(e=>({path:"./",...e[Pi],files:Oi(e[Pi]?.files)}))(e),r=(e,r)=>{const u=o.files[e];if(!r||!1===u)return;t.queue((async()=>{const e=n.time(`output ${u}`),c=((e,t,n)=>{const o=a.isAbsolute(t)?t:a.resolve(e,t);return a.resolve(o,n)})(t.bundler.outDir,o.path,u);let d;try{const e="function"==typeof r?await r():r;await(async(e,t)=>{await ye(a.dirname(e));const n=i.createWriteStream(e),o=new s.JsonStreamStringify(t,void 0,2),r=new Promise(((e,t)=>{o.on("end",(()=>{e()})),o.on("error",(e=>{t(e)}))}));return o.pipe(n),r})(c,e)}catch(e){d=e}d?n.error(`Failed writing ${u}: ${d}`):n.debug(`Wrote "./${a.relative(t.buildRoot,c)}"`),e.end()})())};return[{name:Mi,buildReport(e){const t=n.time("serialize report"),o=W(e);t.end(),r("build",{bundler:o.bundler,metadata:o.metadata,start:o.start,end:o.end,duration:o.duration,writeDuration:o.writeDuration,entries:o.entries,outputs:o.outputs}),r("logs",o.logs),r("timings",o.timings),r("dependencies",o.inputs),r("errors",o.errors),r("warnings",o.warnings)},metrics(e){r("metrics",(()=>Array.from(e)))},esbuild:{setup(e){e.onEnd((e=>{r("bundler",e.metafile)}))}},rspack:Ni(n,(e=>{r("bundler",e)})),rollup:Ti((e=>{r("bundler",e)})),vite:Ti((e=>{r("bundler",e)})),webpack:Ni(n,(e=>{r("bundler",e)}))}]},_i="rum",Fi="datadog-rum-plugin",Li=["8","9","a","b"],qi=(e,t)=>{let n;e.debugId&&(n=t?(e=>{const t=l.createHash("sha256").update(e).digest("hex").slice(0,32),n=`${t.slice(0,12)}4${t.slice(13)}`,o=n.charCodeAt(16)%4,r=`${n.slice(0,16)}${Li[o]}${n.slice(17)}`;return[r.slice(0,8),r.slice(8,12),r.slice(12,16),r.slice(16,20),r.slice(20,32)].join("-")})(t.sourceOrHash):l.randomUUID());const o={ddDebugId:n,service:e.service,version:e.version};return{code:`(function(c,n){try{if(typeof window==='undefined')return;var w=window,m=w[n]=w[n]||{},s=new Error().stack;s&&(m[s]=c)}catch(e){}})(${JSON.stringify(o)},${JSON.stringify("DD_SOURCE_CODE_CONTEXT")});`,debugId:n}},zi="datadog-rum-privacy-plugin";const Bi=(e,t)=>{const n=t.getLogger(zi),o=function(e,t){const n={privacy:{addToDictionaryHelper:{expression:{code:e}}}};return["esbuild","webpack","rspack"].includes(t)&&(n.output={...n.output,inlineSourceMap:!1,embedCodeInSourceMap:!0}),n}(e.helperCodeExpression,t.bundler.name);let r=0,i=0;return{name:zi,enforce:"post",transform:{filter:{id:{include:e.include,exclude:e.exclude}},handler(e,t){try{const n=function(e){if("rspack"===e?.framework||"webpack"===e?.framework)switch(typeof e.inputSourceMap){case"undefined":return;case"string":return e.inputSourceMap;default:return JSON.stringify(e.inputSourceMap)}}(this.getNativeBuildContext?.()),s=k.instrument({id:t,code:e,map:n},o);return 0===s.privacyDictionarySize?{code:e}:(r+=s.privacyDictionarySize,i++,s)}catch(t){return n.error(`Instrumentation Error: ${t}`,{forward:!0}),{code:e}}}},buildEnd:()=>{n.debug(`Privacy dictionary will include ${r} entries across ${i} files`,{forward:!0,context:{dictionaryEntryCount:r,fileCount:i}})}}},Vi=e=>`DD_RUM.init({${JSON.stringify(e.sdk).replace(/(^{|}$)/g,"")}});\n`,Ui=(e,t)=>{const n=e.sdk;if(n.clientToken)return Vi(e);if(!t.auth.apiKey||!t.auth.appKey)throw new Error('Missing "auth.apiKey" and/or "auth.appKey" to fetch "rum.sdk.clientToken".');return async()=>{let o;try{const e=await z({url:`https://api.${t.auth.site}/api/v2/rum/applications/${n.applicationId}`,type:"json",auth:t.auth});o=e.data?.attributes?.client_token}catch(e){throw new Error(`Could not fetch the clientToken: ${e.message}`)}if(!o)throw new Error("Missing clientToken in the API response.");return Vi({...e,sdk:{clientToken:o,...n}})}},Wi=e=>{const n=t.bold.red,o=e[_i]||{},r={errors:[]};if(!o.sdk)return r;o.sdk.applicationId||r.errors.push(`Missing ${n("applicationId")} in the SDK configuration.`),e.auth.apiKey&&e.auth.appKey||o.sdk.clientToken||r.errors.push(`Missing ${n('"auth.apiKey"')} and/or ${n('"auth.appKey"')} to fetch missing client token.`);const i={applicationId:"unknown_application_id",allowUntrustedEvents:!1,compressIntakeRequests:!1,defaultPrivacyLevel:"mask",enablePrivacyForActionName:!1,sessionReplaySampleRate:0,sessionSampleRate:100,silentMultipleInit:!1,site:e.auth.site||"datadoghq.com",startSessionReplayRecordingManually:!1,storeContextsAcrossPages:!1,telemetrySampleRate:20,traceSampleRate:100,trackingConsent:"granted",trackLongTasks:!1,trackResources:!1,trackUserInteractions:!1,trackViewsManually:!1};return r.config={...i,...o.sdk},r},Ki=e=>{const t=e[_i]||{},n={errors:[]};if(t.privacy){const e={exclude:[/\/node_modules\//,/\.preval\./,/^[!@#$%^&*()=+~`-]/],include:[/\.(?:c|m)?(?:j|t)sx?$/],addToDictionaryFunctionName:"$",helperCodeExpression:"/*__PURE__*/((q='$DD_A_Q',g=globalThis)=>(g[q]=g[q]||[],(v=>(g[q].push(v),v))))()"};n.config={...e,...t.privacy}}return n},Hi=e=>{const n=t.bold.red,o=e[_i]||{},r={errors:[]};if(!o.sourceCodeContext)return r;const i=o.sourceCodeContext;return i?.debugId||i?.service&&"string"==typeof i.service||r.errors.push(`Missing ${n('"rum.sourceCodeContext.service"')}.`),r.config={...i,version:i.version||e.metadata?.version},r},Ji=({options:e,context:t})=>{const n=((e,t)=>{const n=[],o=Wi(e),r=Ki(e),i=Hi(e);if(n.push(...o.errors),n.push(...r.errors),n.push(...i.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${Fi}.`);const s={...e[_i],sdk:void 0,privacy:void 0,sourceCodeContext:void 0};return o.config&&(s.sdk=o.config),r.config&&(s.privacy=r.config,t.debug(`datadog-rum-privacy plugin options: ${JSON.stringify(s.privacy,((e,t)=>t instanceof RegExp?t.toString():t))}`,{forward:!0})),i.config&&(s.sourceCodeContext=i.config),s})(e,t.getLogger(Fi)),o=[],r=n.sourceCodeContext;if(r&&t.inject({type:"code",position:xe.BEFORE,injectIntoAllChunks:!0,value:e=>{const{code:t}=qi(r,e);return t}}),n.sdk&&(t.inject({type:"file",position:xe.MIDDLE,value:a.join(__dirname,"./rum-browser-sdk.js")}),t.inject({type:"code",position:xe.MIDDLE,value:Ui(n,t)})),n.privacy){t.inject({type:"file",position:xe.BEFORE,value:a.join(__dirname,"./privacy-helpers.js")});const e=Bi(n.privacy,t);o.push(e)}return o},Gi="datadog-analytics-plugin",Yi=({context:e})=>{const t=e.getLogger(Gi);return[{name:Gi,async buildStart(){"production"===e.env&&e.queue((async()=>{try{await e.sendLog({message:"Build started",context:{plugins:e.pluginNames}})}catch(e){t.debug(`Could not submit data to Datadog: ${e}`)}})())}}]},Qi="datadog-async-queue-plugin",Xi=e=>{const{context:t,stores:n}=e,o=t.getLogger(Qi),r=[];return t.queue=e=>{const t=e.catch((e=>{r.push(e.message||e.toString())}));n.queue.push(t)},[{name:Qi,asyncTrueEnd:async()=>{await Promise.all(n.queue),r.length>0&&o.error(`Error occurred while processing async queue:\n ${r.join("\n ")}`)}}]},Zi=async(e,t,n)=>{const o=[],r=e.initialOptions.entryPoints,i=[],s=[];if(Array.isArray(r))for(const e of r){const t=e&&"object"==typeof e?e.in:e;i.push({path:t})}else r&&"object"==typeof r&&i.push(...Object.entries(r).map((([e,t])=>({name:e,path:t}))));const a=i.flatMap((e=>{return(t=e.path,t.includes("*")?m.glob.sync(t):[t]).map((t=>[e,t]));var t})).map((async([n,r])=>{const i=await e.resolve(r,{kind:"entry-point",resolveDir:t.buildRoot});i.errors.length&&s.push(...i.errors.map((e=>e.text))),i.path&&o.push({name:n.name,resolved:i.path,original:n.path})}));for(const e of s)n.error(e);return await Promise.all(a),o},es=(e,t)=>U(t)?j:t.startsWith(e)||a.isAbsolute(t)?t:a.resolve(e,t),ts=(e,t)=>{const n=[...e].map((e=>es(t||process.cwd(),e).split(a.sep))),o=n.length?Math.min(...n.map((e=>e.length))):0,r=[];for(let e=0;e<o;e++){const t=n[0][e];if(!n.every((n=>n[e]===t)))break;r.push(t)}return r.length>0&&r.join(a.sep)||a.sep},ns=/\.(?!.*(?:\.|\/|\\))(\w{1,})/g,os=/(\?|%3F|\|)+/gi,rs=e=>{return"unknown"===e?e:e.includes("webpack/runtime")?"runtime":(t=as(e),ns.lastIndex=0,ns.exec(t)?.[1]||"unknown");var t},is=["unknown","commonjsHelpers.js",`vite${a.sep}preload-helper.js`],ss=(e,t,n)=>{const o=new Set;for(const n of e){const e=as(n);U(n)||e===t||is.includes(e)||o.add(e)}return o},as=e=>e.split("!").pop().split(os).shift().replace(/^[^\w\s.,!@#$%^&*()=+~`\-/\\]+/,""),us=(e,t)=>U(t)?j:"unknown"===t?t:t.includes("webpack/runtime")?t.replace("webpack/runtime/","").replace(/ +/g,"-"):((e,t)=>{const n=t.split(a.sep),o=e.split(a.sep).filter(((e,t)=>e===n[t])).join(a.sep);return e.replace(o,"")})(t.split("!").pop(),e).split("node_modules").pop().split(os).shift().replace(/^((\.\.?)?[/\\])+/g,""),cs=(e,t)=>Object.fromEntries(Object.entries(e).map((([e,n])=>[es(t,e),n]))),ds=(e,t)=>({setup(n){const o=new Map;let r=[];const i=t.time("build report",{start:!1});n.onStart((async()=>{o.clear(),r=[],i.resume();const s=t.time("process entries");r.push(...await Zi(n,e,t));for(const t of r){const n=us(e.bundler.outDir,t.resolved);t.name?o.set(n,t.name):o.set(n,n)}s.end(),i.pause()})),n.onEnd((async n=>{i.resume();const r=t.time("collecting errors and warnings"),s=e.bundler.outDir,u=e.buildRoot;for(const t of n.errors)e.build.errors.push(t.text);for(const t of n.warnings)e.build.warnings.push(t.text);if(r.end(),!n.metafile){const n="Missing metafile from build report.";return e.build.warnings.push(n),void t.warn(n)}const c=[],d=[],l=[],p=[],f=[],m={},g={},h=t.time("indexing metafile data"),y=cs(n.metafile.inputs,u),b=cs(n.metafile.outputs,u);h.end();const w=e=>{if(!U(e))return e;const t=y[es(u,e)];if(!t)return e;const n=t.imports.find((e=>!U(e.path)));return n?n.path:e},v=t.time("looping through inputs");for(const[e,t]of Object.entries(n.metafile.inputs)){if(U(e))continue;const n=es(u,e),o={name:us(s,e),filepath:n,dependents:new Set,dependencies:new Set,size:t.bytes,type:rs(e)};m[n]=o,c.push(o)}v.end();const $=t.time("looping through outputs");for(const[e,r]of Object.entries(n.metafile.outputs)){const n=es(u,e),i=us(s,n),a=[];for(const e of Object.keys(r.inputs)){if(U(e))continue;const n=m[es(u,e)];n?a.push(n):t.debug(`Input ${e} not found for output ${i}`)}if(r.entryPoint&&!a.length){const e=m[es(u,r.entryPoint)];if(!e){t.debug(`Input ${r.entryPoint} not found for output ${i}`);continue}a.push(e)}const c={name:i,filepath:n,inputs:a,size:r.bytes,type:rs(n)};if(g[n]=c,"map"===c.type&&p.push(c),d.push(c),!r.entryPoint)continue;const f=m[es(u,w(r.entryPoint))];if(f){if(!o.get(f.name))continue;const e={...c,name:o.get(f.name)||f.name,outputs:[c],size:c.size};l.push(e)}}$.end();const k=t.time("looping through sourcemaps");for(const e of p){const n=g[e.filepath.replace(/\.map$/,"")];n?e.inputs.push(n):t.debug(`Could not find output for sourcemap ${e.name}`)}k.end();const x={inputs:{report:m,meta:y},outputs:{report:g,meta:b}},E=/(<runtime>|https:|file:|data:|#)/g,S=e=>!U(e)&&!e.match(E),I=(e,n,o={})=>{if(!S(e))return o;const r=n.report[e];if(!r)return t.debug(`Could not find report's ${e}`),o;if(o[r.filepath])return o;o[r.filepath]=r;const i=n.meta[e];if(!i)return t.debug(`Could not find metafile's ${e}`),o;if(!i.imports||!i.imports.length)return o;for(const t of i.imports){const i=t.path.match(/^\.\.?\//),d=i?a.dirname(e):u,l=es(d,t.path);if(t.external){if(S(t.path)){const e=i?l:t.path,n=x.inputs.report[e]||{filepath:e,name:us(s,t.path),size:0,type:"external",dependencies:new Set,dependents:new Set};"dependencies"in r&&(n.dependents.add(r),r.dependencies.add(n)),"inputs"in r&&!r.inputs.includes(n)&&r.inputs.push(n),c.includes(n)||c.push(n),x.inputs.report[e]=n,o[n.filepath]=n}}else I(l,n,o)}return o},j=t.time("looping through entries");for(const e of l){const t={},n={};for(const n of e.inputs)I(n.filepath,x.inputs,t);for(const t of e.outputs)I(t.filepath,x.outputs,n);e.inputs=Object.values(t),e.outputs=Object.values(n),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),f.push(e)}j.end();const A=t.time("aggregate dependencies and dependents");for(const e of c){if("external"===e.type)continue;const n=x.inputs.meta[e.filepath];if(n)for(const o of n.imports){if(!S(o.path))continue;const n=o.path.match(/^\.?\.\//),r=n?a.dirname(e.filepath):u,i=es(r,o.path);let s;if(o.external){const e=n?i:o.path;s=x.inputs.report[e]}else s=x.inputs.report[i];s?(e.dependencies.add(s),s.dependents.add(e)):t.debug(`Could not find input file of ${o.path} imported from ${e.name}`)}else t.debug(`Could not find metafile's ${e.name}`)}A.end(),e.build.outputs=d,e.build.inputs=c,e.build.entries=f,i.end(),await e.asyncHook("buildReport",e.build)}))}}),ls=(e,t)=>{const n=t.time("module parsing",{start:!1}),o=t.time("build report",{start:!1}),r=t.time("filling entries",{start:!1}),s=t.time("filling inputs and outputs",{start:!1}),a=t.time("completing dependencies and dependents",{start:!1}),u=t.time("filling dependencies and dependents",{start:!1}),c=t.time("filling sourcemaps inputs",{start:!1}),d=new Map,l=new Map,p=new Map,f=new Map;return{buildStart(){f.clear(),d.clear(),l.clear(),p.clear()},onLog(t,n){"warn"===t&&e.build.warnings.push(n.message||n.toString())},renderError(t){t&&e.build.errors.push(t.message)},moduleParsed(e){n.resume();const t=as(e.id),o=f.get(t)||{dependencies:new Set,dependents:new Set},r=ss(new Set([...e.dynamicallyImportedIds,...e.importedIds]),t),i=ss(new Set([...e.dynamicImporters,...e.importers]),t);for(const e of i)o.dependents.add(e);for(const e of r)o.dependencies.add(e);f.set(t,o),n.tag([`module:${t}`],{span:!0}),n.pause()},writeBundle(n,m){o.resume();const g=n.dir?es(e.buildRoot,n.dir):e.bundler.outDir,h=new Set,y=new Set,b=new Map;a.resume();for(const[e,{dependencies:t,dependents:n}]of f){for(const n of t){const t=as(n),o=f.get(t)||{dependencies:new Set,dependents:new Set};o.dependents.has(e)||(o.dependents.add(e),f.set(t,o))}for(const t of n){const n=as(t),o=f.get(n)||{dependencies:new Set,dependents:new Set};o.dependencies.has(e)||(o.dependencies.add(e),f.set(n,o))}}a.end(),s.resume();for(const[e,n]of Object.entries(m)){const o=es(g,e),r="code"in n?Buffer.byteLength(n.code,"utf8"):Buffer.byteLength(n.source,"utf8"),s=l.get(o)||{name:e,filepath:o,inputs:[],size:r,type:rs(e)};if("map"===s.type&&y.add(s),"modules"in n)for(const[e,t]of Object.entries(n.modules)){if(as(e)!==e)continue;let n=t.originalLength;if(!n&&0!==n)try{n=i.statSync(e).size}catch(e){n=t.renderedLength}const o=d.get(e)||{name:us(g,e),dependencies:new Set,dependents:new Set,filepath:e,size:n,type:rs(e)};s.inputs.push(o),d.set(o.filepath,o)}if("imports"in n)for(const e of n.imports){const n=as(e);if(!f.has(n)){b.set(es(g,n),s);continue}if(d.has(n)){t.debug(`Input report already there for ${n} from ${s.name}.`);continue}const o=d.get(n)||{name:us(g,e),dependencies:new Set,dependents:new Set,filepath:n,size:0,type:"external"};s.inputs.push(o),d.set(o.filepath,o)}"isEntry"in n&&n.isEntry&&h.add({...s,name:n.name,size:0,outputs:[s]}),l.set(s.filepath,s)}s.end();for(const[e,n]of b){const o=l.get(e);o?n.inputs.includes(o)||n.inputs.push(o):t.debug(`Could not find the output report for ${e}.`)}u.resume();for(const[e,n]of d){const o=f.get(e);if(o){for(const e of o.dependencies){const o=d.get(e);o?n.dependencies.add(o):t.debug(`Could not find input for dependency ${us(g,e)} of ${n.name}`)}for(const e of o.dependents){const o=d.get(e);o?n.dependents.add(o):t.debug(`Could not find input for dependent ${us(g,e)} of ${n.name}`)}}else t.debug(`Could not find the import report for ${n.name}.`)}if(u.end(),y.size){c.resume();for(const e of y){const n=e.filepath.replace(/\.map$/,""),o=l.get(n);o?e.inputs.push(o):t.debug(`Could not find output for sourcemap ${e.name}`)}c.end()}const w=(e,n=new Map)=>{if(n.has(e))return n;const o=us(g,e),r=l.get(e);if(!r)return d.has(o)||t.debug(`Could not find output for ${o}`),n;n.set(e,r);const i=m[us(g,e)];if(!i)return t.debug(`Could not find asset for ${o}`),n;const s=[];"imports"in i&&s.push(...i.imports),"dynamicImports"in i&&s.push(...i.dynamicImports);for(const e of s)w(es(g,e),n);return n};r.resume();for(const e of h){const n=w(e.filepath);e.outputs=Array.from(n.values()),e.inputs=Array.from(new Set(e.outputs.flatMap((e=>e.inputs)))),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),p.has(e.filepath)&&t.debug(`Entry "${e.name}":"${us(g,e.filepath)}" already reported.`),p.set(e.filepath,e)}r.pause(),o.pause()},async closeBundle(){e.build.inputs=Array.from(d.values()),e.build.outputs=Array.from(l.values()),e.build.entries=Array.from(p.values()),r.end(),o.end(),await e.asyncHook("buildReport",e.build)}}},ps=(e,t,n)=>o=>{let r=[],i=[],s=[];const a=new Map,u=new Map,c=new Map,d=new Map,l=[],p=new Map,f=n.time("build report",{start:!1}),m=e=>!(!e||e.startsWith("webpack/runtime")||e.startsWith("multi ")||U(e)),g=e=>e.replace(/(^external[^"]+"|"$)/g,""),h=e=>{const t=(e=>{const t=e.identifier();return{identifier:()=>t,dependencies:"dependencies"in e?[...e.dependencies]:[],blocks:"blocks"in e?[...e.blocks]:[],externalType:"externalType"in e?e.externalType:void 0,external:"external"in e?e.external:void 0}})(e),n=(e=>{const t=new Set,n=["rawRequest","resource","request","userRequest"],o=e=>{const n=as(e);t.add(n),n.startsWith("external ")&&t.add(g(n))};o(e.identifier());for(const t of n){const n=e[t];t&&t in e&&"string"==typeof n&&o(n)}return t})(e);for(const e of n)if(d.has(e)){const n=d.get(e);n.dependencies.push(...t.dependencies||[]),n.blocks.push(...t.blocks||[])}else d.set(e,t)},y=(e,t=[])=>{if("dependencies"in e)for(const n of e.dependencies)t.push(n),y(n,t);if("blocks"in e)for(const n of e.blocks)y(n,t);return t},b=(e,t)=>{if("request"in t&&t.request){const n=as(t.request);if(d.has(n))return d.get(n);if(e.context){const t=es(as(e.context),n);if(d.has(t))return d.get(t)}}},w=e=>!(!("externalType"in e)||!e.externalType)||(!(!("external"in e)||!e.external)||!!e.identifier?.().startsWith("external "));o.hooks.thisCompilation.tap(t,(o=>{r=[],i=[],s=[],a.clear(),u.clear(),d.clear(),p.clear(),o.hooks.finishModules.tap(t,(t=>{f.resume();const o=n.time("dependency graph"),i=n.time("indexing modules");for(const e of t)h(e);i.end();const s=n.time("building inputs");for(const n of t){const t=n.identifier(),o=us(e.bundler.outDir,t),i=new Set(y(n).map((e=>{const o=b(n,e);if(!o?.identifier())return!1;const r=o.identifier();return!!m(r)&&(r!==t&&(w(o)?g(r):r))})).filter(Boolean));if(!m(t))continue;const s=p.get(t)||{dependents:new Set,dependencies:new Set};for(const e of i){const n=p.get(e)||{dependencies:new Set,dependents:new Set};n.dependents.add(t),s.dependencies.add(e),p.set(e,n)}p.set(t,s);const u=w(n)?{size:0,name:g(o),dependencies:new Set,dependents:new Set,filepath:t,type:"external"}:{size:n.size()||0,name:o,dependencies:new Set,dependents:new Set,filepath:t,type:rs(t)};r.push(u),a.set(t,u),w(n)&&a.set(g(t),u)}s.end();const u=n.time("assigning dependencies and dependents");for(const e of r){const t=p.get(e.filepath);if(t){for(const o of t.dependencies){const t=a.get(o);t?e.dependencies.add(t):n.debug(`Could not find input of dependency ${o}`)}for(const o of t.dependents){const t=a.get(o);t?e.dependents.add(t):n.debug(`Could not find input of dependent ${o}`)}}else n.debug(`Could not find dependency report for ${e.name}`)}u.end(),o.end(),f.pause()}))})),o.hooks.afterEmit.tapPromise(t,(async t=>{f.resume();const o=t.chunks,d=t.getAssets(),p=t=>[...t.files||[],...t.auxiliaryFiles||[]].map((t=>es(e.bundler.outDir,t))),g=n.time("indexing chunks"),h=t.chunkGraph;for(const e of o){const t=p(e),n=(h?.getChunkModules(e)||[]).flatMap((e=>"modules"in e&&Array.isArray(e.modules)?e.modules.map((e=>e.identifier())):e.identifier())).filter(m);for(const e of t){if("map"===rs(e))continue;const t=c.get(e)||new Set;for(const e of n)t.add(e);c.set(e,t)}}g.end();const y=n.time("building outputs");for(const t of d){const o={size:t.source.size()||0,name:t.name,inputs:[],filepath:es(e.bundler.outDir,t.name),type:rs(t.name)};if(u.set(o.filepath,o),i.push(o),"map"===o.type){l.push(o);continue}const r=c.get(o.filepath);if(r)for(const e of r){const t=a.get(e);t?o.inputs.push(t):n.debug(`Could not find input of ${e}`)}else n.debug(`Could not find modules for ${o.name}`)}y.end();const b=n.time("filling sourcemaps inputs");for(const e of l){const t=u.get(e.filepath.replace(/\.map$/,""));t?e.inputs.push(t):n.debug(`Output not found for sourcemap ${e.name}`)}b.end();const w=n.time("building entries"),v=(e,t=new Set)=>{if(t.has(e))return new Set;t.add(e);const n=new Set(e.chunks);for(const o of e.childrenIterable||[]){const e=v(o,t);for(const t of e)n.add(t)}return n};for(const[o,r]of t.entrypoints){const t=new Map,i=new Map;let a=0;const c=v(r),d=Array.from(c).flatMap(p),l=r.chunks.filter((e=>h.getChunkEntryModulesIterable(e)||!1)).flatMap((e=>Array.from(e.files))).filter((e=>e.includes(o)||r.name&&e.includes(r.name))).find((e=>"js"===rs(e)));for(const e of d){const o=u.get(e);if(e&&o){if("map"!==o.type&&!t.has(o.name)){t.set(o.name,o);for(const e of o.inputs)i.has(e.filepath)||i.set(e.filepath,e);a+=o.size}}else n.debug(`Could not find output of ${JSON.stringify(e)}`)}const f={name:o,filepath:l?es(e.bundler.outDir,l):"unknown",size:a,inputs:Array.from(i.values()),outputs:Array.from(t.values()),type:l?rs(l):"unknown"};s.push(f)}w.end();for(const n of t.errors)e.build.errors.push(n.message);for(const n of t.warnings)e.build.warnings.push(n.message);e.build.inputs=r,e.build.outputs=i,e.build.entries=s,f.end(),await e.asyncHook("buildReport",e.build)}))},fs="datadog-build-report-plugin",ms=e=>{const{context:t}=e,n=t.getLogger(fs);return[{name:fs,enforce:"post",esbuild:ds(t,n),rspack:ps(t,fs,n),webpack:ps(t,fs,n),vite:ls(t,n),rollup:ls(t,n)}]},gs="datadog-bundler-report-plugin",hs=(e,t)=>t?a.isAbsolute(t)?t:a.resolve(e,t):"",ys=e=>{if(!e)return[];return(Array.isArray(e)?e:[e]).map((e=>e.dir?e.dir:e.file?a.dirname(e.file):void 0)).filter(Boolean)},bs=e=>t=>{e.bundler.rawConfig=t.options,t.options.output?.path&&(e.bundler.outDir=hs(process.cwd(),t.options.output.path)),e.hook("bundlerReport",e.bundler),t.options.context&&(e.buildRoot=t.options.context),e.hook("buildRoot",e.buildRoot)},ws=e=>({configResolved(t){e.bundler.rawConfig=t;let n=t.build?.outDir??"dist";const o=t.build?.rollupOptions?.output,r=ys(o);e.buildRoot=t.root??process.cwd(),o&&r.length&&(n=ts(r,process.cwd())),e.bundler.outDir=hs(e.buildRoot,n),e.hook("buildRoot",e.buildRoot),e.hook("bundlerReport",e.bundler)}}),vs=e=>{const{context:t}=e,n=t.getLogger(gs);return[{name:gs,enforce:"pre",esbuild:{setup(e){t.bundler.rawConfig=e.initialOptions,e.initialOptions.absWorkingDir&&(t.buildRoot=e.initialOptions.absWorkingDir),e.initialOptions.outdir&&(t.bundler.outDir=hs(t.buildRoot,e.initialOptions.outdir)),e.initialOptions.outfile&&(t.bundler.outDir=hs(t.buildRoot,a.dirname(e.initialOptions.outfile))),t.hook("buildRoot",t.buildRoot),t.hook("bundlerReport",t.bundler),e.initialOptions.metafile=!0}},webpack:bs(t),rspack:bs(t),vite:ws(t),rollup:{options(e){let n;if("output"in e){const t=ys(e.output);n=ts(t,process.cwd())}const o=(e=>{const t=new Set;if(e.input){const n=Array.isArray(e.input)?e.input:"object"==typeof e.input?Object.values(e.input):[e.input];for(const e of n){if("string"!=typeof e)throw new Error("Invalid input type");t.add(a.dirname(e))}}return Array.from(t)})(e);if(n){t.bundler.outDir=es(process.cwd(),n);const e=ts([n,...o],process.cwd());t.buildRoot=e===a.sep?process.cwd():e}else t.buildRoot=ts(o,process.cwd()),t.bundler.outDir=a.resolve(process.cwd(),"dist");t.hook("buildRoot",t.buildRoot)},buildStart(e){t.bundler.rawConfig=e},renderStart(e){t.bundler.rawConfig.outputs=t.bundler.rawConfig.outputs||[],t.bundler.rawConfig.outputs.push(e),t.hook("bundlerReport",t.bundler);const o=ys(e);ts(o,process.cwd()).startsWith(t.bundler.outDir)||n.warn("The output directory has been changed by a plugin and may introduce some inconsistencies in the build report.")}}}]},$s="datadog-custom-hooks-plugin",ks=e=>{const{context:t}=e,n=t.getLogger($s),o=e=>(o,...r)=>{const i=n.time(`execution | ${o}`,{tags:["type:custom-hook",`hook:${o}`]}),s=[],a=[];for(const n of t.plugins){if(!(o in n))continue;const t=n[o];if("function"==typeof t)try{const i=t(...r);i instanceof Promise&&(e||s.push(`Plugin "${n.name}" returned a promise on the non async hook "${o}".`),a.push(i))}catch(e){s.push(`Plugin "${n.name}" errored on hook "${o}". [${e}]`)}else s.push(`Plugin "${n.name}" has an invalid hook type for "${o}". [${typeof t}]`)}if(s.length>0){for(const e of s)n.error(e);throw new Error("Some plugins errored during the hook execution.")}return Promise.all(a).finally((()=>i.end()))};return t.hook=o(!1),t.asyncHook=o(!0),[{name:$s,enforce:"pre"}]};class xs{constructor(e){this.trackedFilenames=new Map;for(const t of e){const e=this.getFilename(t),n=this.trackedFilenames.get(e);n?n.push(t):this.trackedFilenames.set(e,new Array(t))}}displaySource(e){return e.length<=40?e:`[...]${e.slice(-35)}`}matchSourcemap(e,t){const n=(o=e,i.readFileSync(o,{encoding:"utf-8"}));var o;const r=JSON.parse(n);if(!r.sources)return void t("Missing 'sources' field in sourcemap.");const s=r.sources;if(0===s.length)return void t("Empty 'sources' field in sourcemap.");const a=this.matchSources(s);if(0!==a.length)return a;t(`${s.map(this.displaySource).join(", ")} not in the tracked files.`)}matchSources(e){let t=[];const n=new Set;for(const o of e){const e=this.getFilename(o);if(n.has(e))continue;n.add(e);const r=this.trackedFilenames.get(e);r&&(t=t.concat(r))}return t}rawTrackedFilesList(){let e=[];return this.trackedFilenames.forEach((t=>{e=e.concat(t)})),e}getFilename(e){let t=e.lastIndexOf("/");-1===t?t=0:t++;let n=e.lastIndexOf("?");return(-1===n||n<=t)&&(n=e.length),e.substring(t,n)}}const Es=async e=>{const t=await e.getRemotes(!0);if(0===t.length)throw new Error("No git remotes available");const n=await Ss(e);for(const e of t)if(e.name===n)return G(e.refs.push);return G(t[0].refs.push)},Ss=async e=>{try{return(await e.getConfig("clone.defaultRemoteName"))?.value??"origin"}catch(e){return"origin"}},Is=async e=>e.revparse("HEAD"),js=async e=>(await e.raw("ls-files")).split(/\r\n|\r|\n/),As=async e=>e.branch(),Ds=async e=>e.show(["-s","--format=%s"]),Ps=async e=>e.show(["-s","--format=%an,%ae,%aI,%cn,%ce,%cI"]),Ms="datadog-git-plugin",Cs=e=>{const{options:t,context:n}=e,o=n.getLogger(Ms),r=o.time("get git information",{start:!1}),i=async e=>{try{const t=await(async e=>{const t={baseDir:e||process.cwd(),binary:"git",maxConcurrentProcesses:3};try{const e=x.simpleGit(t),n=await e.revparse("--show-toplevel");t.baseDir=n}catch{}return x.simpleGit(t)})(a.dirname(e));if(0===(await t.getRemotes(!0)).length)return o.warn("No git remotes available, skipping git plugin. This is expected for a repository that has not been pushed yet."),void r.end();const i=await(async e=>{const t=[Is(e),As(e),Ds(e),Ps(e),js(e),Es(e)],[n,o,r,i,s,a]=await Promise.all(t),[u,c,d,l,p,f]=i.split(",").map((e=>e.trim()));return{commit:{author:{name:u,email:c,date:d},committer:{name:l,email:p,date:f},message:r.trim(),hash:n},hash:n,branch:o.current,remote:a.trim(),trackedFilesMatcher:new xs(s)}})(t);n.git=i,r.end(),await n.asyncHook("git",n.git)}catch(e){o.error(`Could not get git information: ${e.message}`)}};return[{name:Ms,enforce:"pre",buildRoot(e){if(K(t))try{r.resume();const t=((e,t)=>{let n,o=es(process.cwd(),e);for(;!n;){const e=a.resolve(o,t);if(ve(e)&&(n=e),o=o.split(a.sep).slice(0,-1).join(a.sep),[a.sep,""].includes(o))break}return n})(e,".git");if(!t)return o.warn("No .git directory found, skipping git plugin."),void r.end();n.queue(i(t))}catch(e){o.error(`Could not get git information: ${e.message}`)}}}]},Os="datadog-injection-plugin",Ns=/^https?:\/\//,Ts=[".mjs",".mjsx",".js",".ts",".tsx",".jsx"],Rs=t.bold.yellow;function _s(e){return e.some((e=>e.position===xe.BEFORE||e.position===xe.AFTER))}function Fs(e){return e.some((e=>e.injectIntoAllChunks))}const Ls=(e,t,n)=>{const o=e.filter((e=>e.position===t&&(!n||n.isEntry||e.injectIntoAllChunks))).map((e=>Ks(e.value)?e.value(n):e.value)).filter(Boolean);if(0===o.length)return"";return`// begin injection by Datadog build plugins\n${o.map((e=>`(() => {${e}})();`)).join("\n\n")}\n// end injection by Datadog build plugins`},qs=async(e,t,n=process.cwd())=>{const o=Ks(e.value)?await e.value():e.value;try{if("file"===e.type){const e=o;return await(e.match(Ns)?(async(e,t=5e3)=>{let n;return Promise.race([z({retries:2,minTimeout:100,url:e}).finally((()=>{t&&clearTimeout(n)})),new Promise(((e,o)=>{n=setTimeout((()=>{o(new Error("Timeout"))}),t)}))])})(e):(async(e,t=process.cwd())=>{const n=es(t,e);return we(n)})(e,n))}return o}catch(r){const i=`${e.type} - ${J(o)}`;return e.fallback?(t.debug(`Fallback for "${i}": ${r.toString()}`),qs(e.fallback,t,n)):(t.warn(`Failed "${i}": ${r.toString()}`),"")}},zs=async(e,t,n,o=process.cwd())=>{const r=t.filter(Ws).map((e=>{const t=e.value;return{...e,value:e=>t(e)}})),i=t.filter((e=>!Ws(e))),s=await Promise.all(i.map((async t=>({...t,value:await qs(t,e,o)})))),a=e=>({...e,position:e.position??xe.BEFORE});n.push(...r.map(a),...s.map(a))},Bs=e=>e instanceof Error&&"code"in e,Vs=e=>Ts.includes(e),Us=(e,t,n)=>{e.warn(`"${Rs(t)}" files are not supported (${Rs(n)}).`)},Ws=e=>"function"==typeof e.value&&1===e.value.length,Ks=e=>"function"==typeof e,Hs=i.promises,Js=(e,t,n)=>({setup(o){const{onStart:s,onResolve:u,onLoad:c,onEnd:d,esbuild:l,initialOptions:f}=o,m=[],g=`${t.bundler.name}.${xe.MIDDLE}.${j}.js`,h=i.realpathSync(p.tmpdir()),y=a.resolve(h,g),b=new RegExp(`${g}$`),w=f.inject;f.inject=w?[...w]:[],f.inject.push(y),s((async()=>{m.push(...await Zi(o,t,e)),o.initialOptions.inject=w;try{await(async(e,t)=>{await ye(a.dirname(e)),await r.writeFile(e,t,{encoding:"utf-8"})})(y,"")}catch(t){e.error(`Could not create the files: ${t.message}`)}})),u({filter:b},(async e=>({path:e.path,namespace:Os}))),c({filter:b,namespace:Os},(async()=>({contents:Ls(n,xe.MIDDLE)||" ",resolveDir:t.buildRoot,loader:"js"}))),d((async o=>{if(!o.metafile){const n=new Error("Missing metafile from build result.");return e.warn(n.message),void t.markArtifactsReady(n)}if(_s(n))try{const r=[];for(const[i,s]of Object.entries(o.metafile.outputs)){const o=Boolean(s.entryPoint&&m.some((e=>e.resolved.endsWith(s.entryPoint))));if(!o&&!Fs(n))continue;const u=es(t.buildRoot,i),{base:c,ext:d}=a.parse(u);Vs(d)?r.push((async()=>{try{const e=`${u}.map`,t=await Hs.readFile(u,"utf-8"),r=await Hs.readFile(e,"utf-8").catch((()=>!1)),i=a.basename(u),s=Ls(n,xe.BEFORE,{sourceOrHash:t,fileName:i,isEntry:o}),c=Ls(n,xe.AFTER,{sourceOrHash:t,fileName:i,isEntry:o});if(!s&&!c)return;const d=t.replace(/\n?\/\/# sourceMappingURL=.*$/m,""),p=r?`${d}\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(r).toString("base64")}`:d,f=await l.transform(p,{loader:"default",banner:s,footer:c,sourcemap:r?"external":void 0,sourcefile:i});await Promise.all([Hs.writeFile(u,f.code),r&&f.map?Hs.writeFile(e,f.map):null])}catch(t){if(!Bs(t)||"ENOENT"!==t.code)throw t;e.warn(`Could not inject content in ${u}: ${t}`)}})()):Us(e,d,c)}await Promise.all(r),t.markArtifactsReady()}catch(e){throw t.markArtifactsReady(e),e}}))}}),Gs=j,Ys="?inject-proxy",Qs=(e,t)=>({renderChunk:{order:"post",handler(n,o){const{base:r,ext:i}=a.parse(o.fileName);if(!Vs(i))return Us(e,i,r),null;const s=Ls(t,xe.BEFORE,{sourceOrHash:n,fileName:o.fileName,isEntry:o.isEntry}),u=Ls(t,xe.AFTER,{sourceOrHash:n,fileName:o.fileName,isEntry:o.isEntry});if(!s&&!u)return null;const c=new E(n);return s&&c.prepend(`${s}\n`),u&&c.append(`\n${u}`),{code:c.toString(),map:c.generateMap({file:o.fileName,hires:"boundary"})}}},async resolveId(e,n,o){if(U(e))return{id:e,moduleSideEffects:!0};if(o.isEntry&&Ls(t,xe.MIDDLE)){if(e.endsWith(".html"))return null;const t=await this.resolve(e,n,o);if(!t||t.external)return t;return(await this.load(t)).moduleSideEffects=!0,`${t.id}${Ys}`}return null},load(e){if(U(e))return Ls(t,xe.MIDDLE);if(e.endsWith(Ys)){const t=e.slice(0,-13),n=this.getModuleInfo(t);let o=`import ${JSON.stringify(Gs)};\nexport * from ${JSON.stringify(t)};`;return n?.hasDefaultExport&&(o+=`export { default } from ${JSON.stringify(t)};`),o}return null}}),Xs=(e,t,n,o,r)=>s=>{const u=new WeakMap,c=e.sources.ConcatSource,d=n.bundler.name,l=a.resolve(n.buildRoot,"node_modules",".cache","datadog-build-plugins",`${d}.${xe.MIDDLE}.${j}.js`);be(l,"");s.hooks.shutdown.tap(Os,(()=>{var e;e=l,i.rmSync(e,{force:!0,maxRetries:3,recursive:!0})}));const p=async()=>{await zs(t,o,r,n.buildRoot)};s.hooks.beforeRun.tapPromise(Os,p),s.hooks.watchRun.tapPromise(Os,p),s.hooks.compilation.tap(Os,(n=>{const o=e.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS;n.hooks.processAssets.tap({name:Os,stage:o},(()=>{for(const e of n.chunks){const o=e.canBeInitial(),i=e.contentHash?.javascript??e.hash;for(const s of e.files){const{base:e,ext:d}=a.parse(s);if(!Vs(d)){Us(t,d,e);continue}const l=e,p=Ls(r,xe.BEFORE,{sourceOrHash:i,fileName:l,isEntry:o}),f=Ls(r,xe.AFTER,{sourceOrHash:i,fileName:l,isEntry:o});""===p&&""===f||n.updateAsset(s,(e=>{const t=u.get(e);if(!t||t.banner!==p||t.footer!==f){const t=new c(p,"\n",e,"\n",f);return u.set(e,{source:t,banner:p,footer:f}),t}return t.source}))}}}))}));const f=(e=>{const n={import:[l]},o=e=>{for(const[n,o]of Object.entries(e))"object"==typeof o?(o.import=o.import||[],o.import.unshift(l)):"string"==typeof o?e[n]=[l,o]:Array.isArray(o)?o.unshift(l):t.error("Invalid entry type: "+typeof o)};return e?"function"==typeof e?async()=>{const t=await e();return o(t),t}:"object"!=typeof e?"string"==typeof e?[n,e]:(t.error("Invalid entry type: "+typeof e),e):(o(e),e):{ddHelper:n}})(s.options.entry);s.options.entry=f},Zs=e=>{const{bundler:t,context:n}=e,o=n.getLogger(Os),r=[],i=[];n.inject=e=>{r.push(e)};const s={name:Os,enforce:"post",esbuild:Js(o,n,i),webpack:Xs(t,o,n,r,i),rspack:Xs(t,o,n,r,i),rollup:Qs(o,i),vite:{...Qs(o,i),enforce:"pre",transformIndexHtml:{order:"pre",handler:()=>Ls(i,xe.MIDDLE)?[{tag:"script",attrs:{type:"module",src:"/@id/__datadog-helper-file"},injectTo:"head-prepend"}]:[]}}};var a;return a=n.bundler.name,["rspack","webpack"].includes(a)?s.load={filter:{id:A},handler:()=>({code:Ls(i,xe.MIDDLE)})}:s.buildStart=async()=>{await zs(o,r,i,n.buildRoot),"esbuild"===n.bundler.name&&_s(i)&&n.markArtifactsPending()},[s]},ea="datadog-true-end-plugin",ta=e=>{const{context:t}=e,n=async()=>{await t.asyncHook("asyncTrueEnd")},o=async()=>{await t.asyncHook("flush")},r=()=>{t.hook("syncTrueEnd")},i=async()=>{r(),await n(),await o()},s=e=>{e.hooks.shutdown.tapPromise(ea,i)},a={async writeBundle(){},async closeBundle(){await i()}};return[{name:ea,enforce:"post",webpack:s,esbuild:{setup(e){e.onEnd((async()=>{await n(),await o()})),e.onDispose((()=>{r()}))}},vite:a,rollup:a,rspack:s}]},na={[Zr]:Ai},oa=t.bold.red;var ra="3.2.12-dev.0";const ia=(({bundler:t,version:n})=>{const o=Date.now();return e.createUnplugin(((e,r)=>{const i=Date.now(),s=((e={})=>{const t=(e=>{const t=[];return void 0===e||void 0!==e.version&&"string"!=typeof e.version&&t.push("metadata.version must be a string"),t})(e.metadata),n=R("SITE"),o=F(n,"DATADOG_SITE/DD_SITE",t)??F(e.auth?.site,"auth.site",t),r={site:o?.site??M};if(t.length)throw new Error(`Invalid Datadog plugin configuration:\n - ${t.join("\n - ")}`);return Object.defineProperty(r,"apiKey",{value:R("API_KEY")||e.auth?.apiKey,enumerable:!1}),Object.defineProperty(r,"appKey",{value:R("APP_KEY")||e.auth?.appKey,enumerable:!1}),{enableGit:!0,logLevel:"warn",metadata:{},...e,auth:r}})(e);"esbuild"===r.framework&&(r.esbuildHostName=C);const a=process.env.BUILD_PLUGINS_ENV||"production",u=D.includes(a)?a:"development",c=t.rspackVersion||t.version||t.VERSION,d=r.framework,l={bundler:{name:d,version:c},env:u,metadata:s.metadata||{},packageName:`@datadog/${d}-plugin`,version:n},p={errors:[],logs:[],metrics:new Set,queue:[],timings:[],warnings:[]},f=(({start:e,options:t,data:n,stores:o})=>{const r=process.cwd(),i={errors:o.errors,warnings:o.warnings,logs:o.logs,metadata:n.metadata,timings:o.timings,bundler:n.bundler},s={addMetric:()=>{throw new Error("AddMetric function called before it was initialized.")},artifactsPending:!1,artifactsReady:Promise.resolve(),auth:t.auth,pluginNames:[],bundler:{...i.bundler,outDir:r},build:i,buildRoot:r,env:n.env,getLogger:ne(n,o,t.logLevel),asyncHook:()=>{throw new Error("AsyncHook function called before it was initialized.")},hook:()=>{throw new Error("Hook function called before it was initialized.")},inject:()=>{throw new Error("Inject function called before it was initialized.")},markArtifactsPending:()=>{},markArtifactsReady:()=>{},plugins:[],queue:()=>{throw new Error("Queue function called before it was initialized.")},sendLog:B(n),start:e,version:n.version};let a,u;return s.markArtifactsPending=()=>{a||u||(s.artifactsReady=new Promise(((e,t)=>{a=e,u=t})),s.artifactsPending=!0,s.artifactsReady.catch((()=>{})))},s.markArtifactsReady=e=>{const t=a,n=u;a=void 0,u=void 0,s.artifactsPending=!1,void 0===e?t?.():n?.(e)},s})({start:o,options:s,data:l,stores:p}),m=f.getLogger("factory"),g=m.time("Plugins initialization",{start:i});f.pluginNames.push(C);const h=[];h.push(["analytics",Yi],["async-queue",Xi],["build-report",ms],["bundler-report",vs],["custom-hooks",ks],["git",Cs],["injection",Zs],["true-end",ta]),s.customPlugins&&h.push(["custom",s.customPlugins]);const y=[["apps",ue,Lo],["error-tracking",qo,ur],["live-debugger",cr,Qr],["metrics",Zr,Di],["output",Pi,Ri],["rum",_i,Ji]];for(const[e,t,n]of y)ae(s,t,m)&&h.push([e,n]);for(const[e,n]of h)f.plugins.push(...ie(f,n,e)({bundler:t,context:f,options:s,data:l,stores:p}));return(e=>{const t=[];for(const n of T){const o=_(n);if(o.length>1&&!o.every((e=>process.env[e]===process.env[o[0]]))){const r=o.map((e=>N(e))).join(" and "),i=N(`DATADOG_${n}`);e.warn(`Conflicting keys ${r}, will use ${i}`),t.push(`${r} (using ${i})`)}else if(o.length){const e=o.map((e=>O(e))).join(" and ");t.push(`${e} (same value)`)}}t.length&&e.info(`Overrides from environment:\n - ${t.join("\n - ")}`)})(m),f.pluginNames.push(...f.plugins.map((e=>e.name))),(e=>{const t=new Set(e.filter((t=>e.filter((e=>e===t)).length>1)));if(t.size>0)throw new Error(`Duplicate plugin names: ${oa(Array.from(t).join(", "))}`)})(f.pluginNames),f.hook("init",f),g.end(),f.plugins}))})({bundler:g,version:ra}).esbuild,sa=ra,aa=na;exports.datadogEsbuildPlugin=ia,exports.helpers=aa,exports.version=sa;
|
|
1
|
+
"use strict";var e=require("unplugin"),t=require("chalk"),n=require("async-retry"),o=require("buffer"),r=require("fs/promises"),i=require("fs"),s=require("json-stream-stringify"),a=require("path"),u=require("stream"),c=require("eslint-scope"),d=require("node:module"),l=require("crypto"),p=require("os"),f=require("jszip"),m=require("glob"),g=require("esbuild"),h=require("rollup/parseAst"),y=require("node:async_hooks"),b=require("p-queue"),w=require("@jridgewell/remapping"),v=require("pretty-bytes"),$=require("perf_hooks"),k=require("@datadog/js-instrumentation-wasm"),x=require("simple-git"),E=require("magic-string");function S(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var I=S(c);const j="__datadog-helper-file",A=new RegExp(j),D=["development","production","test"],P=["datadoghq.com","us3.datadoghq.com","us5.datadoghq.com","datadoghq.eu","ddog-gov.com","us2.ddog-gov.com","ap1.datadoghq.com","ap2.datadoghq.com","datad0g.com"],M=P[0],C="datadog-build-plugins",O=t.bold.green,N=t.bold.yellow,T=["API_KEY","APP_KEY","SOURCEMAP_INTAKE_URL","APPS_PACKAGE_DIR","OAUTH_ACCESS_TOKEN","SITE"],R=e=>process.env[`DATADOG_${e}`]||process.env[`DD_${e}`],_=e=>{const t=[];return process.env[`DD_${e}`]&&t.push(`DD_${e}`),process.env[`DATADOG_${e}`]&&t.push(`DATADOG_${e}`),t},F=(e,t,n)=>{if(void 0===e)return;const o=(e=>{if("string"!=typeof e)return;const t=e.toLowerCase(),n=P.find((e=>e===t));if(n)return{site:n};const o=P.filter((e=>t.endsWith(`.${e}`)));if(!o.length)return;const r=o.reduce(((e,t)=>t.length>e.length?t:e)),i=t.slice(0,t.length-r.length-1);return i&&/^[a-z0-9-]+$/.test(i)?{site:r,subdomain:i}:void 0})(e);if(o)return o;n.push(`${t} "${e}" is not a supported Datadog site. See the site parameters in https://docs.datadoghq.com/getting_started/site/.`)},L=e=>null===e||"object"!=typeof e?"":Object.entries(e).map((([e,t])=>`${e}: ${"string"==typeof t?t:JSON.stringify(t)}`)).join(", "),q=[400,401,403,404,405,409,413],z=async e=>{const{auth:t,url:o,method:r="GET",getData:i,type:s="text",signal:a}=e,u={retries:0===e.retries?0:e.retries||5,onRetry:e.onRetry,maxTimeout:e.maxTimeout,minTimeout:e.minTimeout};return n((async(e,n)=>{let u;try{const e={method:r,duplex:"half",signal:a};let n={"X-Datadog-Origin":"build-plugins"};if(t&&"accessToken"in t?t.accessToken&&(n.Authorization=`Bearer ${t.accessToken}`):(t?.apiKey&&(n["DD-API-KEY"]=t.apiKey),t?.appKey&&(n["DD-APPLICATION-KEY"]=t.appKey)),"function"==typeof i){const{data:t,headers:o}=await i();e.body=t,n={...n,...o}}u=await fetch(o,{...e,headers:n})}catch(t){return e(t),{}}if(!u.ok){let t=`HTTP ${u.status} ${u.statusText}`;try{const e=(e=>{try{const t=JSON.parse(e);if(null!==t&&"object"==typeof t)if("errors"in t&&Array.isArray(t.errors)){const e=t.errors.map(L).filter((e=>e.length>0)).join("\n");if(e)return e}else{const e=L(t);if(e)return e}}catch{}return e})(await u.text());e&&(t+=`\n${e}`)}catch{}if(q.includes(u.status))return e(new Error(t)),{};throw new Error(t)}try{let e;return e="json"===s?await u.json():await u.text(),e}catch(t){return e(t),{}}}),u)},B=e=>({message:t,context:n})=>z({retries:2,minTimeout:100,url:"https://browser-http-intake.logs.datadoghq.com/v1/input/pub44d5f4eb86e1392037b7501f7adc540e",method:"POST",type:"json",getData:async()=>{const o={ddsource:e.packageName||C,message:t,service:"build-plugins",team:"language-foundations",env:e.env,version:e.version,bundler:{name:e.bundler.name,version:e.bundler.version},metadata:e.metadata,...n};return{data:JSON.stringify(o),headers:{"Content-Type":"application/json"}}}}),V=e=>e.replace(/^@dd\/(datadog-|internal-)?|^datadog-|-plugin$/g,""),U=e=>e.includes(j),W=e=>{const t={bundler:e.bundler,errors:e.errors,metadata:e.metadata,warnings:e.warnings,logs:e.logs,timings:e.timings,start:e.start,end:e.end,duration:e.duration,writeDuration:e.writeDuration,entries:[],inputs:[],outputs:[]};for(const n of e.entries||[]){const e={...n,inputs:[],outputs:[]};n.inputs&&(e.inputs=n.inputs.map((e=>e.filepath))),n.outputs&&(e.outputs=n.outputs.map((e=>e.filepath))),t.entries.push(e)}for(const n of e.inputs||[]){const e={...n,dependencies:[],dependents:[]};if(n.dependencies)for(const t of n.dependencies)e.dependencies.push(t.filepath);if(n.dependents)for(const t of n.dependents)e.dependents.push(t.filepath);t.inputs.push(e)}for(const n of e.outputs||[]){const e={...n,inputs:[]};n.inputs&&(e.inputs=n.inputs.map((e=>e.filepath))),t.outputs.push(e)}return t},K=e=>{const t=!!e.errorTracking?.sourcemaps,n=e.enableGit??!0;return t&&n},H=e=>{const t=Math.floor(e/1e3/60/60/24),n=new Date(e-24*t*60*60*1e3),o=n.getUTCHours(),r=n.getUTCMinutes(),i=n.getUTCSeconds(),s=n.getUTCMilliseconds(),a=`${t?`${t}d `:""}${o?`${o}h `:""}${r?`${r}m `:""}${i?`${i}s`:""}`.trim();return`${a}${!a||s?` ${s}ms`:""}`.trim()},J=(e,t=60,n="[...]")=>{if(e.length<=t)return e;const o=Math.max(4,t-n.length),r=Math.min(10,Math.floor(o/2)),i=o-r;return`${e.slice(0,r)}${n}${e.slice(-i)}`},G=(e="")=>{try{if(!e||e.startsWith("git@"))return e;const t=new URL(e),n="/"===t.pathname?"":t.pathname;return`${t.protocol?`${t.protocol}//`:""}${t.host}${n}`}catch{return e}},Y=e=>e.trim().toLowerCase().replace(/[^a-z0-9_:./-]+/g,"_").replace(/^_+|_+$/g,"")||"unknown",Q=e=>Object.entries(e).map((([e,n])=>` - ${e}: ${t.bold.green((e=>{if(void 0===e)return"undefined";if(null===e)return"null";if(Array.isArray(e))return e.join(", ");if("object"==typeof e)try{return JSON.stringify(e,null,2)}catch{return String(e)}return e?.toString()??""})(n))}`)).join("\n"),X={debug:0,info:1,warn:2,error:3,none:4},Z=e=>e.split(">").map(V).join(">"),ee=(e,n,o,r)=>{const i=Z(e);return(s,a="debug",{forward:u,context:c}={})=>{let d=t.dim,l=console.log;"error"===a?(d=t.red,l=console.error):"warn"===a?(d=t.yellow,l=console.warn):"info"===a&&(d=t.cyan,l=console.log);const p=`[${n.metadata?.name?`${n.metadata.name}|`:""}${a}|${n.bundler.name}|${i}]`,f="string"==typeof s?s:JSON.stringify(s,null,2);if(o.logs.push({bundler:n.bundler.name,pluginName:e,type:a,message:f,time:Date.now()}),"error"===a&&o.errors.push(f),"warn"===a&&o.warnings.push(f),u){const t=async()=>{try{const t=B(n);await t({message:f,context:{plugin:e,status:a,...c}})}catch(t){ee(e,n,o,r)(`Error forwarding log: ${t}`,"debug")}};o.queue.push(t())}X[a]>=X[r]&&l(`${d(p)} ${f}`)}},te=(e,n,o)=>(r,i={})=>{const{level:s="debug",start:a=!0,log:u=!0,tags:c=[]}=i,d={pluginName:e,label:r,spans:[],tags:[...c,`plugin:${e}`,`level:${s}`],logLevel:s,total:0};n.push(d);const l=()=>d.spans.filter((e=>!e.end)),p=n=>{l().length||(!d.spans.length&&u&&o(t.dim(`[${t.cyan(r)}] : start`),"debug"),d.spans.push({start:n||Date.now(),tags:[`plugin:${e}`]}))},f=(e,n=!0)=>{const i=l();if(i?.length){i.length>1&&o(`Timer ${t.cyan(r)} has more than one ongoing span.`,"debug");for(const t of i)t.end=e||Date.now()}else n&&o(`Timer ${t.cyan(r)} cannot be paused, no ongoing span.`,"debug")};if(a){let e;"number"==typeof a&&(e=a),p(e)}return{timer:d,resume:p,end:e=>{f(e,!1);const n=d.spans.reduce(((e,t)=>e+(t.end-t.start)),0);d.total=n,u&&o(`[${t.cyan(r)}] : ${t.cyan(H(n))}`,s)},pause:f,tag:(e,t={})=>{const{span:n=!1}=t;if(n){const t=l();for(const n of t)n.tags.push(...e)}else d.tags.push(...e)}}},ne=(e,t,n="warn")=>o=>{const r=ee(o,e,t,n);return{getLogger:r=>ne(e,t,n)(`${Z(o)}>${r}`),time:te(o,t.timings,r),error:(e,t)=>r(e,"error",t),warn:(e,t)=>r(e,"warn",t),info:(e,t)=>r(e,"info",t),debug:(e,t)=>r(e,"debug",t)}},oe=["buildEnd","buildStart","load","resolveId","transform","watchChange","writeBundle","buildRoot","init","buildReport","bundlerReport","git"],re=(e,t,n,o)=>{const r=n=>function(...r){const i=o.time(`${e} | ${t}`,{log:!1,tags:["type:hook",`hook:${t}`]}),s=n.apply(this,r);return s instanceof Promise?s.finally((()=>{i.end()})):(i.end(),s)};return"object"==typeof n&&null!==n&&"handler"in n?{...n,handler:r(n.handler)}:r(n)},ie=(e,t,n)=>{const o=e.getLogger(C);return e=>{const r=o.time(`hook | init ${n}`,{log:!1}),i=t(e).map((e=>((e,t)=>{const n={...e},o=V(e.name);for(const r of oe){const i=e[r];i&&(n[r]=re(o,r,i,t))}return n})(e,o))),s=i.map((e=>`plugin:${e.name}`));return r.tag(s),r.end(),i}},se=new Set,ae=(e,t,n)=>{const o=e[t];if(o&&"object"==typeof o&&"enable"in o){const e=o.enable;if("boolean"!=typeof e&&void 0!==e&&(se.has(t)||(se.add(t),n.warn(`\`${t}.enable\` should be a boolean, got ${typeof e}. Non-boolean values are coerced today but will be rejected in the next major.`))),void 0!==e)return!!e}return!!o},ue="apps",ce="datadog-apps-plugin",de="datadog-app-assets.zip",le=/\.backend\.(ts|tsx|js|jsx)$/,pe="?dd-local-exec",fe=new RegExp(`${le.source.slice(0,-1)}(\\?.*)?$`),me=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"],ge=e=>{const t=e?.maxRetries??10,n=e?.timeoutMs??4e4;if(!Number.isInteger(t)||t<1)throw new Error("apps.longPolling.maxRetries must be an integer >= 1.");if(!Number.isFinite(n)||n<=0)throw new Error("apps.longPolling.timeoutMs must be a positive number.");return{maxRetries:t,timeoutMs:n,jitter:e?.jitter??!0,exponentialBackoff:e?.exponentialBackoff??!0}},he=async e=>r.rm(e,{force:!0,maxRetries:3,recursive:!0}),ye=async e=>r.mkdir(e,{recursive:!0}),be=(e,t)=>{var n;n=a.dirname(e),i.mkdirSync(n,{recursive:!0}),i.writeFileSync(e,t,{encoding:"utf-8"})},we=e=>r.readFile(e,{encoding:"utf-8"}),ve=e=>{try{return i.existsSync(e)}catch(e){if("ENOENT"===e.code)return!1;throw e}},$e=async(e,t)=>{if("function"==typeof i.openAsBlob){const n=await i.openAsBlob(e,{type:t.contentType});return new o.File([n],t.filename)}{const n=u.Readable.toWeb(i.createReadStream(e)),r=await new Response(n).blob();return new o.File([r],t.filename,{type:t.contentType})}},ke=async e=>{const t={empty:!1,exists:!0};try{const{size:n}=await r.stat(e);0===n&&(t.empty=!0)}catch(e){if("ENOENT"!==e.code)throw e;t.exists=!1}return t};var xe=(e=>(e[e.BEFORE=0]="BEFORE",e[e.MIDDLE=1]="MIDDLE",e[e.AFTER=2]="AFTER",e))(xe||{});const Ee="Set DD_API_KEY and DD_APP_KEY for API-key auth, or set DD_OAUTH_ACCESS_TOKEN (or DATADOG_OAUTH_ACCESS_TOKEN) — e.g. by starting the dev server with `datadog-apps dev`.";class Se extends Error{constructor(){super(`Missing authentication. ${Ee}`),this.statusCode=400,this.name="MissingAuthenticationError"}}function Ie(e,t){if(!function(e){return"Program"===e.type}(e))throw new Error(`Expected a Program node from this.parse() for ${t}, got ${e.type}`);return e}function je(e,t){return"object"==typeof e&&null!==e&&"type"in e&&e.type===t}function Ae(e){return je(e,"Literal")&&"value"in e&&"string"==typeof e.value}function De(e){return"type"===e.importKind||"type"===e.exportKind}function Pe(e){return je(e,"VariableDeclarator")}function Me(e){return Ae(e)?e.value:function(e){return!!(je(e,"TemplateLiteral")&&"expressions"in e&&"quasis"in e)&&Array.isArray(e.expressions)&&0===e.expressions.length&&Array.isArray(e.quasis)&&1===e.quasis.length}(e)?e.quasis[0].value.cooked??void 0:void 0}function Ce(e,t){return function(e,t){const n=Ie(e,t),o=function(e){const t=new Map;for(const n of e.body)if("FunctionDeclaration"===n.type&&n.id)t.set(n.id.name,{kind:"function"});else if("ClassDeclaration"===n.type&&n.id)t.set(n.id.name,{kind:"class"});else if("VariableDeclaration"===n.type)for(const e of n.declarations)"Identifier"===e.id.type&&t.set(e.id.name,{kind:"variable",init:e.init});else if("ImportDeclaration"===n.type)for(const e of n.specifiers)t.set(e.local.name,{kind:"import"});return t}(n),r=[];for(const e of n.body){if("ExportDefaultDeclaration"===e.type)throw new Error(`Default exports are not supported in .backend.ts files. Use a named export instead: ${t}`);if("ExportAllDeclaration"===e.type)throw new Error(`"export *" is not supported in .backend.ts files. Use explicit named exports instead: ${t}`);if("ExportNamedDeclaration"!==e.type)continue;e.declaration&&r.push(...Te(e.declaration,t).map((e=>({kind:"local",name:e,localName:e}))));const n="string"==typeof e.source?.value?e.source.value:null;for(const i of e.specifiers){if("Identifier"!==i.exported.type)continue;if("default"===i.exported.name)throw new Error(`Default exports are not supported in .backend.ts files. Use a named export instead: ${t}`);const e="Identifier"===i.local.type?i.local.name:"string"==typeof i.local.value?i.local.value:null;e&&(n?r.push({kind:"re-export",name:i.exported.name,localName:e,source:n}):("Identifier"===i.local.type&&Re(e,o,t),r.push({kind:"local",name:i.exported.name,localName:e})))}}return r}(e,t).map((e=>e.name))}const Oe=new Set(["ArrayExpression","Literal","ObjectExpression","TemplateLiteral"]);function Ne(e){return null==e||Oe.has(e.type)}function Te(e,t){if("FunctionDeclaration"===e.type&&e.id)return[e.id.name];if("ClassDeclaration"===e.type)throw new Error(`Class exports are not supported in .backend.ts files. Only function exports are allowed: ${t}`);if("VariableDeclaration"===e.type)return e.declarations.flatMap((e=>{if("Identifier"!==e.id.type)throw new Error(`Destructured exports are not supported in backend files. Use individual named exports instead: ${t}`);if(Ne(e.init))throw new Error(`Non-function export "${e.id.name}" in backend file ${t}. Only function exports are supported — use "export function ${e.id.name}(…) { }" instead.`);return[e.id.name]}));throw new Error(`Unsupported export declaration type "${e.type}" in backend file ${t}. Only function and variable exports are allowed.`)}function Re(e,t,n){const o=t.get(e);if(o){if("class"===o.kind)throw new Error(`Class exports are not supported in .backend.ts files. Only function exports are allowed: ${n}`);if("variable"===o.kind&&Ne(o.init))throw new Error(`Non-function export "${e}" in backend file ${n}. Only function exports are supported — use "export function ${e}(…) { }" instead.`)}}function _e(e,t,n){const o={state:t},r=e=>{n._?.(e,o),function(e,t){return t[e.type]}(e,n)?.(e,o);for(const t of Object.keys(e))"type"!==t&&i(e[t])},i=e=>{if(Array.isArray(e))for(const t of e)Fe(t)&&r(t);else Fe(e)&&r(e)};r(e)}function Fe(e){return"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type}function Le(e){_e(e,null,{_(e){const t=e;t.range||"number"!=typeof t.start||"number"!=typeof t.end||(t.range=[t.start,t.end])}});const t=I.analyze(e,{ecmaVersion:2022,ignoreEval:!0,sourceType:"module"}),n=new Map;for(const e of t.scopes)for(const t of e.references)n.set(t.identifier,t);return{scopeManager:t,referencesByIdentifier:n,moduleScope:Ve(t)}}function qe(e,t){return t.referencesByIdentifier.get(e)?.resolved??void 0}function ze(e){return e.defs.some((e=>"ImportBinding"===e.type))}function Be(e,t){return t.moduleScope.set.get(e)}function Ve(e){return e.scopes.find((e=>"module"===e.type))??e.globalScope}function Ue(e,t,n){const o={scopeAnalysis:t,unsupportedAliases:We(e,t)},r=[];return _e(e,o,{CallExpression(e,{state:t}){(function(e,t,n){const o=e.callee;if("Identifier"===o.type){if(Ge(o,t.unsupportedAliases,t.scopeAnalysis))throw Ze(n,"action-catalog call aliases");if(Ge(o,t.scopeAnalysis.actionFunctions,t.scopeAnalysis)){if(e.optional)throw Ze(n,"optional action-catalog calls");return!0}return!1}if("MemberExpression"!==o.type)return!1;if(!Ke(o,t.scopeAnalysis))return!1;if(e.optional||Je(o))throw Ze(n,"optional or computed action-catalog namespace calls");return!0})(e,t,n)&&r.push(e)}}),r}function We(e,t){const n=new Set;return _e(e,t,{VariableDeclarator(e,{state:t}){for(const o of function(e,t){if("Identifier"===e.id.type&&"Identifier"===e.init?.type&&Ge(e.init,t.actionFunctions,t))return Qe(e,t,[e.id.name]);if("Identifier"===e.id.type&&"MemberExpression"===e.init?.type&&Ke(e.init,t))return Qe(e,t,[e.id.name]);if("ObjectPattern"!==e.id.type||"Identifier"!==e.init?.type||!Ge(e.init,t.actionNamespaces,t))return[];const n=e.id.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:Xe(e.value))).map((e=>e.name));return Qe(e,t,n)}(e,t))n.add(o)},AssignmentExpression(e,{state:t}){for(const o of function(e,t){if("Identifier"===e.left.type&&"Identifier"===e.right.type&&Ge(e.right,t.actionFunctions,t))return Ye([e.left],t);if("Identifier"===e.left.type&&"MemberExpression"===e.right.type&&Ke(e.right,t))return Ye([e.left],t);if("ObjectPattern"!==e.left.type||"Identifier"!==e.right.type||!Ge(e.right,t.actionNamespaces,t))return[];const n=e.left.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:Xe(e.value)));return Ye(n,t)}(e,t))n.add(o)}}),n}function Ke(e,t){const n=He(e);return!!n&&Ge(n,t.actionNamespaces,t)}function He(e){return"Identifier"===e.object.type?e.object:"MemberExpression"===e.object.type?He(e.object):void 0}function Je(e){return!(!e.optional&&!e.computed)||"MemberExpression"===e.object.type&&Je(e.object)}function Ge(e,t,n){return function(e,t,n){const o=qe(e,n);return!!o&&t.has(o)}(e,t,n.moduleScope)}function Ye(e,t){return e.flatMap((e=>{const n=qe(e,t.moduleScope);return n?[n]:[]}))}function Qe(e,t,n){const o=new Set(n);return t.moduleScope.scopeManager.getDeclaredVariables(e).filter((e=>o.has(e.name)))}function Xe(e){switch(e.type){case"Identifier":return[e];case"ObjectPattern":return e.properties.flatMap((e=>"RestElement"===e.type?Xe(e.argument):Xe(e.value)));case"ArrayPattern":return e.elements.flatMap((e=>e?Xe(e):[]));case"RestElement":return Xe(e.argument);case"AssignmentPattern":return Xe(e.left);case"MemberExpression":return[]}}function Ze(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const et="@datadog/action-catalog";function tt(e,t,n){const o=e.get(t);if(!o)return ut(t,[],n.name);const r=qe(n,o.scopeAnalysis);return r?function(e,t){return t.defs.some((t=>t.name===e))}(n,r)?ct(t,[],n.name):rt({modules:e,visitedExports:new Set},t,r,[]):ct(t,[],n.name)}function nt(e,t,n,o){const r=e.modules.get(t);if(!r)return function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-module-record",requestKind:"export",exportName:n,message:`Module '${e}' was not collected while resolving export '${n}'.`,hops:t}}(t,o,n);if("default"===n)return st(t,o,n);const i=`${t}\0${n}`;if(e.visitedExports.has(i))return function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"cycle",exportName:n,message:`Resolving export '${n}' from module '${e}' would cycle through the module graph.`,hops:t}}(t,o,n);e.visitedExports.add(i);try{const t=r.exportsByName.get(n);return t?function(e,t,n,o,r){if("unsupported"===o.kind)return function(e,t,n,o){return{kind:"unsupported",moduleId:e,reason:"unsupported-export",exportName:n,exportReason:o,message:`Export '${n}' from module '${e}' is unsupported: ${o}.`,hops:t}}(t.id,r,n,o.reason);if("re-export"===o.kind)return"default"===o.importedName?st(t.id,r,n):nt(e,o.resolvedId,o.importedName,[...r,{kind:"re-export",moduleId:t.id,exportName:n,sourceModuleId:o.resolvedId,sourceExportName:o.importedName}]);return rt(e,t.id,o.variable,[...r,{kind:"local-export",moduleId:t.id,exportName:n,localName:o.variable.name}])}(e,r,n,t,o):function(e,t,n,o){let r;for(const i of t.starExports){const s=nt(e,i.resolvedId,n,[...o,{kind:"star-export",moduleId:t.id,exportName:n,sourceModuleId:i.resolvedId}]);if("unsupported"===s.kind){if("missing-export"===s.reason)continue;return s}if(!r||!ot(r,s)){if(r)return it(t.id,o,n);r=s}}return r??function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-export",exportName:n,message:`Module '${e}' does not expose export '${n}'.`,hops:t}}(t.id,o,n)}(e,r,n,o)}finally{e.visitedExports.delete(i)}}function ot(e,t){return e.moduleId===t.moduleId&&e.variable===t.variable}function rt(e,t,n,o){const r=e.modules.get(t);if(!r)return ut(t,o,n.name);const i=r.importsByVariable.get(n);if(i)return function(e,t,n,o,r){if("default"===o.kind)return at(t,r,n);if("namespace"===o.kind)return function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"namespace-import",variableName:n,message:`Variable '${n}' in module '${e}' is an unsupported namespace import.`,hops:t}}(t,r,n);if("default"===o.importedName)return at(t,r,n);return nt(e,o.resolvedId,o.importedName,[...r,{kind:"import",moduleId:t,localName:n,exportName:o.importedName,sourceModuleId:o.resolvedId}])}(e,r.id,n.name,i,o);const s=r.topLevelBindingsByVariable.get(n);return s?"const"===s.kind?{kind:"local",moduleId:r.id,variable:n,binding:s,hops:o}:"mutable"===s.kind?function(e,t,n,o){return{kind:"unsupported",moduleId:e,reason:"mutable-binding",variableName:n,declarationKind:o,message:`Variable '${n}' in module '${e}' is declared with mutable '${o}'.`,hops:t}}(r.id,o,n.name,s.declarationKind):function(e,t,n,o){return{kind:"unsupported",moduleId:e,reason:"unsupported-binding",variableName:n,bindingReason:o,message:`Variable '${n}' in module '${e}' has unsupported binding: ${o}.`,hops:t}}(r.id,o,n.name,s.reason):function(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-static-binding",variableName:n,message:`Variable '${n}' in module '${e}' does not have a recorded top-level static binding.`,hops:t}}(r.id,o,n.name)}function it(e,t,n){return{kind:"unsupported",moduleId:e,reason:"ambiguous-star-export",exportName:n,message:`Module '${e}' exposes ambiguous star exports for '${n}'.`,hops:t}}function st(e,t,n){return{kind:"unsupported",moduleId:e,reason:"default-export",exportName:n,message:`Export '${n}' from module '${e}' resolves through an unsupported default export.`,hops:t}}function at(e,t,n){return{kind:"unsupported",moduleId:e,reason:"default-import",variableName:n,message:`Variable '${n}' in module '${e}' is an unsupported default import.`,hops:t}}function ut(e,t,n){return{kind:"unsupported",moduleId:e,reason:"missing-module-record",requestKind:"variable",variableName:n,message:`Module '${e}' was not collected while resolving variable '${n}'.`,hops:t}}function ct(e,t,n){return{kind:"unsupported",moduleId:e,reason:"unresolved-identifier",variableName:n,message:`Identifier '${n}' in module '${e}' is not a resolvable reference.`,hops:t}}function dt(e,t,n){const o=$t(n);switch(o.type){case"Literal":return function(e,t){if("string"==typeof t.value)return{kind:"resolved",moduleId:e,value:t.value};return function(e,t){return{kind:"unsupported",moduleId:e,reason:"non-string-literal",valueType:t,message:`Literal value type '${t}' in module '${e}' is not a string.`}}(e,typeof t.value)}(t,o);case"TemplateLiteral":return function(e,t){if(t.expressions.length>0)return function(e){return{kind:"unsupported",moduleId:e,reason:"dynamic-template-literal",message:`Dynamic template literals in module '${e}' cannot be resolved to static strings.`}}(e);return{kind:"resolved",moduleId:e,value:t.quasis.map((e=>e.value.cooked??e.value.raw)).join("")}}(t,o);case"Identifier":return function(e,t,n){const o=tt(e.modules,t,n);if("unsupported"===o.kind)return Pt(o,n.name);if(!o.binding.expression)return Mt(o.moduleId,o.variable.name);if(e.seenVariables.has(o.variable))return St(o.moduleId,o.variable.name);e.seenVariables.add(o.variable);try{return dt(e,o.moduleId,o.binding.expression)}finally{e.seenVariables.delete(o.variable)}}(e,t,o);case"MemberExpression":return function(e,t,n){const o=lt(e,t,n);if("unsupported"===o.kind)return o;return dt(e,o.moduleId,o.expression)}(e,t,o);default:return function(e,t){return{kind:"unsupported",moduleId:e,reason:"unsupported-expression",expressionType:t,message:`Expression type '${t}' in module '${e}' cannot be resolved to a static string.`}}(t,o.type)}}function lt(e,t,n){if(n.optional)return function(e){return{kind:"unsupported",moduleId:e,reason:"optional-member-expression",message:`Optional member expressions in module '${e}' cannot be resolved to static strings.`}}(t);if(n.computed)return function(e){return{kind:"unsupported",moduleId:e,reason:"computed-member-expression",message:`Computed member expressions in module '${e}' cannot be resolved to static strings.`}}(t);if("Identifier"!==n.property.type)return function(e,t){return{kind:"unsupported",moduleId:e,reason:"non-static-member-property",propertyType:t,message:`Member property type '${t}' in module '${e}' is not statically named.`}}(t,n.property.type);const o=pt(e,t,n.object);return"unsupported"===o.kind?o:function(e,t,n){let o;for(const r of t.properties){if("SpreadElement"===r.type)return Dt(e);if(r.computed)return Et(e);if(vt(r)===n){if(o)return It(e,n);if("init"!==r.kind)return xt(e,n);if(!ft(r))return At(e,n,r.value.type);o=r}}if(!o)return function(e,t){return{kind:"unsupported",moduleId:e,reason:"missing-object-property",propertyName:t,message:`Static object in module '${e}' does not have property '${t}'.`}}(e,n);return{kind:"resolved",moduleId:e,expression:o.value}}(o.moduleId,o.expression,n.property.name)}function pt(e,t,n){if("Super"===n.type)return jt(t,n.type);const o=$t(n);if("ObjectExpression"===o.type)return{kind:"resolved",moduleId:t,expression:o};if("MemberExpression"===o.type){const n=lt(e,t,o);return"unsupported"===n.kind?n:pt(e,n.moduleId,n.expression)}if("Identifier"!==o.type)return jt(t,o.type);const r=tt(e.modules,t,o);if("unsupported"===r.kind)return Pt(r,o.name);if(!r.binding.expression)return Mt(r.moduleId,r.variable.name);if(e.mutatedImportedObjectVariables.has(r.variable))return function(e,t){return{kind:"unsupported",moduleId:e,reason:"imported-object-mutation",variableName:t,message:`Imported object '${t}' from module '${e}' is mutated in the module graph.`}}(r.moduleId,r.variable.name);if(e.seenVariables.has(r.variable))return St(r.moduleId,r.variable.name);e.seenVariables.add(r.variable);try{return pt(e,r.moduleId,r.binding.expression)}finally{e.seenVariables.delete(r.variable)}}function ft(e){const{value:t}=e;return"ObjectPattern"!==t.type&&"ArrayPattern"!==t.type&&"RestElement"!==t.type&&"AssignmentPattern"!==t.type}function mt(e){const t=new Set;for(const n of e.values())_e(n.ast,{modules:e,mutatedVariables:t,record:n},{AssignmentExpression(e,{state:t}){ht(e.left,t)},UpdateExpression(e,{state:t}){ht(e.argument,t)},UnaryExpression(e,{state:t}){"delete"===e.operator&&ht(e.argument,t)},ForInStatement(e,{state:t}){gt(e.left,t)},ForOfStatement(e,{state:t}){gt(e.left,t)}});return t}function gt(e,t){"VariableDeclaration"!==e.type&&ht(e,t)}function ht(e,t){if("Identifier"!==e.type)if("MemberExpression"!==e.type)if("ObjectPattern"!==e.type)if("ArrayPattern"!==e.type)"RestElement"!==e.type?"AssignmentPattern"===e.type&&ht(e.left,t):ht(e.argument,t);else for(const n of e.elements)n&&ht(n,t);else for(const n of e.properties)ht("RestElement"===n.type?n.argument:n.value,t);else{const n=wt(e);n&&yt(n,t)}else yt(e,t)}function yt(e,t){const n=bt(t,e,new Set);n&&t.mutatedVariables.add(n)}function bt(e,t,n){const o=qe(t,e.record.scopeAnalysis);if(!o||n.has(o))return;if(n.add(o),ze(o)){const n=tt(e.modules,e.record.id,t);return"local"===n.kind?n.variable:void 0}const r=function(e){for(const t of e.defs){const e=t.node;if("VariableDeclarator"===e.type&&e.init)return e.init}return}(o);if(!r)return;const i=function(e){const t=$t(e);if("Identifier"===t.type)return t;if("MemberExpression"===t.type)return wt(t);return}(r);return i?bt(e,i,n):void 0}function wt(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?wt(e.object):void 0}function vt(e){return"Identifier"===e.key.type?e.key.name:"Literal"===e.key.type&&"string"==typeof e.key.value?e.key.value:void 0}function $t(e){let t=e;for(;kt(t);)t=t.expression;return t}function kt(e){const t=e.type;return("TSAsExpression"===t||"TSSatisfiesExpression"===t||"TSNonNullExpression"===t||"TSTypeAssertion"===t)&&!!e.expression}function xt(e,t){return{kind:"unsupported",moduleId:e,reason:"accessor-object-property",propertyName:t,message:`Static object property '${t}' in module '${e}' is an accessor.`}}function Et(e){return{kind:"unsupported",moduleId:e,reason:"computed-object-property",message:`Computed object properties in module '${e}' cannot be resolved to static strings.`}}function St(e,t){return{kind:"unsupported",moduleId:e,reason:"cycle",variableName:t,message:`Resolving variable '${t}' in module '${e}' would cycle through static string values.`}}function It(e,t){return{kind:"unsupported",moduleId:e,reason:"duplicate-object-property",propertyName:t,message:`Static object in module '${e}' has duplicate property '${t}'.`}}function jt(e,t){return{kind:"unsupported",moduleId:e,reason:"non-object-member-value",expressionType:t,message:`Expression type '${t}' in module '${e}' is not a static object value.`}}function At(e,t,n){return{kind:"unsupported",moduleId:e,reason:"unsupported-object-property-value",propertyName:t,valueType:n,message:`Static object property '${t}' in module '${e}' has unsupported value type '${n}'.`}}function Dt(e){return{kind:"unsupported",moduleId:e,reason:"object-spread",message:`Object spreads in module '${e}' cannot be resolved to static strings.`}}function Pt(e,t){return{kind:"unsupported",moduleId:e.moduleId,reason:"static-definition-unsupported",variableName:t,definition:e,message:`Variable '${t}' could not be resolved to a static definition: ${e.message}`}}function Mt(e,t){return{kind:"unsupported",moduleId:e,reason:"uninitialized-const",variableName:t,message:`Const variable '${t}' in module '${e}' does not have an initializer.`}}const Ct=new Set(["node_modules",".yarn"]);function Ot(e,t,n,o=[]){if(!Xt(e,t))return null;const r=Ie(n,e),i=Le(r),s=function(e,t){const n=Nt(e);return t.map(((e,t)=>({source:n[t]??e,resolvedId:e})))}(r,o);return{id:e,ast:r,scopeAnalysis:i,staticDependencies:s,unsupportedDependencies:Yt(r),importsByVariable:Tt(r,i,s),exportsByName:Rt(r,i,s),starExports:Lt(r,s),topLevelBindingsByVariable:qt(r,i)}}function Nt(e){return e.body.flatMap((e=>("ImportDeclaration"===e.type||"ExportNamedDeclaration"===e.type||"ExportAllDeclaration"===e.type)&&e.source&&Ae(e.source)?[e.source.value]:[]))}function Tt(e,t,n){const o=new Map;for(const r of e.body){if("ImportDeclaration"!==r.type||!Ae(r.source))continue;const e=Gt(n,r.source.value);for(const n of r.specifiers){const[r]=t.scopeManager.getDeclaredVariables(n);r&&("ImportSpecifier"!==n.type?o.set(r,{kind:"ImportDefaultSpecifier"===n.type?"default":"namespace",resolvedId:e}):o.set(r,{kind:"named",importedName:Ht(n.imported),resolvedId:e}))}}return o}function Rt(e,t,n){const o=new Map;for(const r of e.body)"ExportNamedDeclaration"!==r.type?"ExportDefaultDeclaration"!==r.type?"ExportAllDeclaration"===r.type&&Ft(r,n,o):o.set("default",{kind:"unsupported",reason:"default export"}):_t(r,t,n,o);return o}function _t(e,t,n,o){if(e.declaration)!function(e,t,n){if(!e)return;if("VariableDeclaration"===e.type){for(const o of e.declarations){const e=t.scopeManager.getDeclaredVariables(o);if("Identifier"!==o.id.type){for(const t of e)n.set(t.name,{kind:"unsupported",reason:"binding pattern export"});continue}const[r]=e;r&&n.set(o.id.name,{kind:"local",variable:r})}return}if(("FunctionDeclaration"===e.type||"ClassDeclaration"===e.type)&&e.id){const[o]=t.scopeManager.getDeclaredVariables(e);o&&n.set(e.id.name,{kind:"local",variable:o})}}(e.declaration,t,o);else if(e.source&&Ae(e.source)){const t=Gt(n,e.source.value);for(const n of e.specifiers){if("ExportSpecifier"!==n.type)continue;const e=Ht(n.exported);"default"!==e?o.set(e,{kind:"re-export",importedName:Ht(n.local),resolvedId:t}):o.set(e,{kind:"unsupported",reason:"default re-export",resolvedId:t})}}else for(const n of e.specifiers){if("ExportSpecifier"!==n.type)continue;const e=Ht(n.exported);if("default"===e){o.set(e,{kind:"unsupported",reason:"default export"});continue}const r=Be(Ht(n.local),t);o.set(e,r?{kind:"local",variable:r}:{kind:"unsupported",reason:"unresolved local export"})}}function Ft(e,t,n){const o=Jt(e);o&&Ae(e.source)&&n.set(o,{kind:"unsupported",reason:"namespace re-export",resolvedId:Gt(t,e.source.value)})}function Lt(e,t){return e.body.flatMap((e=>"ExportAllDeclaration"!==e.type||Jt(e)||!Ae(e.source)?[]:[{resolvedId:Gt(t,e.source.value)}]))}function qt(e,t){const n=new Map;for(const o of e.body)zt(o,t,n);return function(e,t,n){_e(e,{scopeAnalysis:t,bindings:n},{AssignmentExpression(e,{state:t}){Ut(e.left,t.scopeAnalysis,t.bindings)},UpdateExpression(e,{state:t}){Ut(e.argument,t.scopeAnalysis,t.bindings)},UnaryExpression(e,{state:t}){"delete"===e.operator&&Ut(e.argument,t.scopeAnalysis,t.bindings)},ForInStatement(e,{state:t}){Vt(e.left,t.scopeAnalysis,t.bindings)},ForOfStatement(e,{state:t}){Vt(e.left,t.scopeAnalysis,t.bindings)}})}(e,t,n),n}function zt(e,t,n){if("VariableDeclaration"===e.type)return void Bt(e,t,n);if("ExportNamedDeclaration"===e.type&&"VariableDeclaration"===e.declaration?.type)return void Bt(e.declaration,t,n);const o="ExportNamedDeclaration"===e.type||"ExportDefaultDeclaration"===e.type?e.declaration:e;if(o&&("FunctionDeclaration"===o.type||"ClassDeclaration"===o.type)&&o.id){const[e]=t.scopeManager.getDeclaredVariables(o);e&&n.set(e,{kind:"unsupported",reason:`${o.type} binding`})}}function Bt(e,t,n){for(const o of e.declarations){const r=t.scopeManager.getDeclaredVariables(o);if("Identifier"!==o.id.type){for(const e of r)n.set(e,{kind:"unsupported",reason:"binding pattern"});continue}const[i]=r;i&&("const"===e.kind?n.set(i,{kind:"const",expression:o.init??null}):n.set(i,{kind:"mutable",declarationKind:e.kind}))}}function Vt(e,t,n){"VariableDeclaration"!==e.type&&Ut(e,t,n)}function Ut(e,t,n){if("Identifier"!==e.type)if("MemberExpression"!==e.type)if("ObjectPattern"!==e.type)if("ArrayPattern"!==e.type)"RestElement"!==e.type?"AssignmentPattern"===e.type&&Ut(e.left,t,n):Ut(e.argument,t,n);else for(const o of e.elements)o&&Ut(o,t,n);else for(const o of e.properties)Ut("RestElement"===o.type?o.argument:o.value,t,n);else{const o=Kt(e);o&&Wt(o,t,n,"mutated object binding")}else Wt(e,t,n,"reassigned binding")}function Wt(e,t,n,o){const r=qe(e,t);if(!r||ze(r)||!n.has(r))return;const i=n.get(r);"mutable"!==i?.kind&&n.set(r,{kind:"unsupported",reason:o})}function Kt(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?Kt(e.object):void 0}function Ht(e){return"Identifier"===e.type?e.name:String(e.value)}function Jt(e){const t=e.exported;return t?Ht(t):void 0}function Gt(e,t){return e.find((e=>e.source===t))?.resolvedId??t}function Yt(e){const t=[];return _e(e,t,{ImportExpression(e,{state:t}){const n=function(e){return en(e.source,"non-literal dynamic import")}(e);Qt(n)&&t.push({specifier:n,kind:"dynamic-import"})},CallExpression(e,{state:t}){if(function(e){return"Import"===e.callee.type}(e)){const n=function(e){return en(e.arguments[0],"non-literal dynamic import")}(e);Qt(n)&&t.push({specifier:n,kind:"dynamic-import"})}else(function(e){if("Identifier"!==e.callee.type||"require"!==e.callee.name)return!1;const[t]=e.arguments;return!t||!Ae(t)||tn(t.value)})(e)&&t.push({specifier:Zt(e),kind:"require"})}}),t}function Qt(e){return"non-literal dynamic import"===e||tn(e)}function Xt(e,t){if(!me.some((t=>e.endsWith(t))))return!1;const n=a.relative(a.resolve(t),e);return!n.startsWith("..")&&!a.isAbsolute(n)&&!n.split(a.sep).some((e=>Ct.has(e)))}function Zt(e){return en(e.arguments[0],"local require")}function en(e,t){return Ae(e)?e.value:t}function tn(e){return e.startsWith(".")||e.startsWith("/")}function nn(e,t){return new Error(`Unsupported local module graph for ${e}: ${t} could hide an action-catalog connectionId.`)}function on(e,t,n){const o=new Set;return function(e,t,n,o){const r=[e],i=new Set;for(;r.length>0;){const s=r.shift();if(i.has(s))continue;i.add(s);const a=t.get(s);if(!a)throw nn(e,`missing module record for ${s}`);o({entryId:e,moduleId:s,record:a});for(const t of a.unsupportedDependencies)throw nn(e,`${t.kind} ${t.specifier}`);for(const o of a.staticDependencies){const i=o.resolvedId;if(Xt(i,n)){if(!t.has(i))throw nn(e,`uncollected local import ${i} from ${a.id}`);r.push(i)}}}}(e,t,n,(({record:e})=>{const n=function(e){const t=new Set,n=new Set;for(const r of e.body)if("ImportDeclaration"===r.type&&"string"==typeof(o=r.source.value)&&(o===et||o.startsWith(`${et}/`))&&!De(r))for(const e of r.specifiers)De(e)||("ImportNamespaceSpecifier"===e.type?n.add(e.local.name):t.add(e.local.name));var o;return{functions:t,namespaces:n}}(e.ast),r=function(e,t){const n=new Set,o=new Set;for(const r of e.scopeManager.scopes)for(const e of r.variables)ze(e)&&(t.functions.has(e.name)&&n.add(e),t.namespaces.has(e.name)&&o.add(e));return{moduleScope:e,actionFunctions:n,actionNamespaces:o}}(e.scopeAnalysis,n);for(const n of Ue(e.ast,r,e.id)){const r=rn(n,t,e);void 0!==r&&o.add(r)}})),[...o].sort()}function rn(e,t,n){const[o]=e.arguments;if(!o||"ObjectExpression"!==o.type)throw un(n.id,"non-object action-catalog call arguments");const r=function(e,t){let n;for(const o of e.properties){if("SpreadElement"===o.type)throw un(t,"spread object arguments");if(o.computed)throw un(t,"computed object property keys");if(an(o)){if(n)throw un(t,"multiple connectionId properties");if("init"!==o.kind)throw un(t,"accessor connectionId properties");if(!sn(o))throw un(t,"destructuring pattern in connectionId value");n=o}}return n}(o,n.id);if(!r)return;const i=function(e,t,n){return dt({modules:e,mutatedImportedObjectVariables:mt(e),seenVariables:new Set},t,n)}(t,n.id,r.value);if("resolved"===i.kind)return i.value;throw s=n.id,a=`static string resolution ${function(e){return"static-definition-unsupported"===e.reason?`${e.reason}/${e.definition.reason}`:e.reason}(i)}: ${i.message}`,new Error(`Unsupported action-catalog connectionId in ${s}: ${a}.`);var s,a}function sn(e){const{value:t}=e;return"ObjectPattern"!==t.type&&"ArrayPattern"!==t.type&&"RestElement"!==t.type&&"AssignmentPattern"!==t.type}function an(e){return"connectionId"===function(e){if("Identifier"===e.key.type)return e.key.name;if("Literal"===e.key.type&&"string"==typeof e.key.value)return e.key.value;return}(e)}function un(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const cn=new Set(d.builtinModules);function dn(e){return 0===e.length||e.some((e=>!De(e)))}function ln(e,t){const n=Me(e);if(void 0!==n&&function(e){return e.startsWith("node:")||cn.has(e)}(n))throw new Error(`Importing Node built-in module "${n}" is not supported in backend function code. Backend functions run in a restricted environment: for networking, filesystem, or process access, use an Action Platform action ($.Actions or an @datadog/action-catalog typed wrapper) instead; for pure utility modules (e.g. path, url, util), use a runtime-independent package instead: ${t}`)}function pn(e){return"globalThis"===e||"global"===e}let fn=new Set;function mn(e,t,n=new Set){if("MemberExpression"===e.type){const o=gn(e,t);return!(!o||!pn(o))&&mn(e.object,t,n)}if("Identifier"!==e.type)return!1;const o=qe(e,t);if(!o)return pn(e.name);if(fn.has(o))return!0;if(n.has(o)||1!==o.defs.length)return!1;n.add(o);const[r]=o.defs;if("Variable"!==r.type||"const"!==r.parent.kind)return!1;if(!Pe(r.node))return!1;const{id:i,init:s}=r.node;if(!s)return!1;if("Identifier"===i.type)return mn(s,t,n);if("ObjectPattern"===i.type){const e=n=>n.properties.some((n=>{if("Property"!==n.type)return!1;if(!pn(yn(n,t)??""))return!1;const o=hn(n.value);return o===r.name||"ObjectPattern"===o.type&&e(o)}));if(e(i))return mn(s,t,n)}return!1}function gn(e,t){return e.computed?bn(e.property,t):"Identifier"===e.property.type?e.property.name:void 0}function hn(e){return"AssignmentPattern"===e.type?e.left:e}function yn(e,t){return e.computed||"Identifier"!==e.key.type?bn(e.key,t):e.key.name}function bn(e,t,n=new Set){const o=Me(e);if(void 0!==o)return o;if("Identifier"!==e.type)return;const r=qe(e,t);if(!r||n.has(r)||1!==r.defs.length)return;n.add(r);const[i]=r.defs;if("Variable"!==i.type||"const"!==i.parent.kind)return;if(!Pe(i.node))return;const{id:s,init:a}=i.node;return"Identifier"===s.type&&a?bn(a,t,n):void 0}const wn=[{object:"Object",property:"assign"},{object:"Object",property:"values"},{object:"Object",property:"entries"},{object:"Object",property:"getOwnPropertyDescriptors"}];function vn(e,t,n,o){fn=new Set;for(const[e,r]of t.referencesByIdentifier)n.has(e.name)&&!r.resolved&&o.onNamedAccess(e.name);const r=e=>{for(const i of e.properties){if("RestElement"===i.type){o.onBulkCopy();continue}const e=yn(i,t);e&&n.has(e)&&o.onNamedAccess(e);const s=hn(i.value);e&&pn(e)&&"ObjectPattern"===s.type&&r(s)}},i=(e,n)=>{n&&mn(n,t)&&r(e)};_e(e,null,{MemberExpression(e){if(!mn(e.object,t))return;const r=gn(e,t);r&&n.has(r)&&o.onNamedAccess(r)},VariableDeclarator(e){"ObjectPattern"===e.id.type&&i(e.id,e.init)},AssignmentExpression(e){"ObjectPattern"===e.left.type&&i(e.left,e.right)},AssignmentPattern(e){"ObjectPattern"===e.left.type&&i(e.left,e.right)},ForOfStatement(e){if("ArrayExpression"!==e.right.type)return;let n,o;if("VariableDeclaration"===e.left.type){if(1!==e.left.declarations.length)return;const[r]=e.left.declarations;if("ObjectPattern"===r.id.type)n=r.id;else{if("Identifier"!==r.id.type||"const"!==e.left.kind)return;o=function(e,t){return t.scopeManager.getDeclaredVariables(e)[0]}(r,t)}}else{if("ObjectPattern"!==e.left.type)return;n=e.left}e.right.elements.some((e=>null!==e&&"SpreadElement"!==e.type&&mn(e,t)))&&(n?r(n):o&&fn.add(o))},ObjectExpression(e){for(const n of e.properties)"SpreadElement"===n.type&&mn(n.argument,t)&&o.onBulkCopy()},CallExpression(e){const n=function(e,t){if("MemberExpression"!==e.type||"Identifier"!==e.object.type)return;const n=gn(e,t);if(!n)return;const o=e.object.name;return wn.find((e=>e.object===o&&e.property===n))}(e.callee,t);if(!n)return;("assign"===n.property?e.arguments.slice(1):e.arguments).some((e=>"SpreadElement"!==e.type&&mn(e,t)))&&o.onBulkCopy()}})}const $n=new Set(["fetch","XMLHttpRequest","WebSocket","EventSource"]);function kn(e,t,n){const o=Ie(e,t);vn(o,n??Le(o),$n,{onNamedAccess(e){!function(e,t){throw new Error(`Using "${e}" is not supported in backend function code. Backend functions cannot make raw network requests in production — use an Action Platform action ($.Actions or an @datadog/action-catalog typed wrapper) instead: ${t}`)}(e,t)},onBulkCopy(){throw new Error(`Copying every property of "globalThis"/"global" at once (a rest destructure, an object spread, or a call like Object.assign/Object.values) is not supported in backend function code — it copies every ambient global, including network-capable ones (${Array.from($n).join(", ")}), into a plain object: ${t}`)}})}const xn=new Set(["crypto","Intl"]),En=new Map;function Sn(e,t,n,o){!function(e,t){const n=Ie(e,t);for(const e of n.body)"ImportDeclaration"!==e.type||De(e)||!dn(e.specifiers)?"ExportNamedDeclaration"===e.type&&e.source&&!De(e)&&dn(e.specifiers)?ln(e.source,t):"ExportAllDeclaration"!==e.type||De(e)||ln(e.source,t):ln(e.source,t);_e(n,null,{ImportExpression(e){ln(e.source,t)}})}(e,t),kn(e,t,o),function(e,t,n,o){const r=Ie(e,t),i=o??Le(r);let s=En.get(t);s||(En.size>=500&&En.clear(),s=new Set,En.set(t,s));const a=e=>{s.has(e)||(s.add(e),function(e,t,n){n.warn(`"${e}" is used in ${t}. Its exact behavior can differ between local execution (Node) and production (Deno) — verify locale-/implementation-sensitive results with "npm run dev:verify" before publishing.`)}(e,t,n))};vn(r,i,xn,{onNamedAccess:a,onBulkCopy(){for(const e of xn)a(e)}})}(e,t,n,o)}function In(e){const t=e.relativePath.split(a.sep).join("/");return`${l.createHash("sha256").update(t).digest("hex")}.${e.name}`}function jn(e){const t=[];for(const{exportName:n,queryName:o}of e)t.push(`export async function ${n}(...args) {`),t.push(` return globalThis.DD_APPS_RUNTIME.executeBackendFunction(${JSON.stringify(o)}, args);`),t.push("}"),t.push("");return t.join("\n")}function An(e,t){try{return require.resolve(e,{paths:[t]}),!0}catch{return!1}}function Dn(e){return An("@datadog/action-catalog/action-execution",e)}function Pn(e){return An("@datadog/apps-backend/runtime/jsFunctionWithActions",e)}function Mn(e,t,n){const o=[],r=Pn(n);return o.push(`import { ${e} } from ${JSON.stringify(t)};`),r&&o.push("import { buildRuntimeFromJsFunctionWithActions } from '@datadog/apps-backend/runtime/jsFunctionWithActions';\nimport { setBackend } from '@datadog/apps-backend/runtime';"),Dn(n)&&o.push("import { setExecuteActionImplementation } from '@datadog/action-catalog/action-execution';"),o.push(""),o.push('/** @param {import("./context.types").Context} $ */'),o.push("export async function main($) {"),o.push(" globalThis.$ = $;"),o.push(""),r&&(o.push(" // Supply the backend runtime context"),o.push(" if (typeof buildRuntimeFromJsFunctionWithActions === 'function' && typeof setBackend === 'function') {\n setBackend(buildRuntimeFromJsFunctionWithActions($));\n }"),o.push("")),o.push(" // Register the $.Actions-based implementation for executeAction"),o.push(" if (typeof setExecuteActionImplementation === 'function') {\n setExecuteActionImplementation(async (actionId, request) => {\n const actionPath = actionId.replace(/^com\\.datadoghq\\./, '');\n const pathParts = actionPath.split('.');\n let actionFn = $.Actions;\n for (const part of pathParts) {\n if (!actionFn) throw new Error('Action not found: ' + actionId);\n actionFn = actionFn[part];\n }\n if (typeof actionFn !== 'function') throw new Error('Action is not a function: ' + actionId);\n return actionFn(request);\n });\n }"),o.push(""),o.push(" const args = $.backendFunctionArgs ?? [];"),o.push(` const result = await ${e}(...args);`),o.push(" return result;"),o.push("}"),o.join("\n")}const Cn=/^(?:\0|virtual:)/;function On(e){return e.split("?")[0]}function Nn(e){return Cn.test(e)}function Tn(e,t){const n=function(e){const t=new Map;return{plugin:{name:"dd-backend-module-graph-collector",moduleParsed(n){const o=On(n.id);if(Nn(o))return;if(!Xt(o,e))return;if("string"!=typeof n.code)return;let r;try{r=this.parse(n.code)}catch(e){throw nn(o,`unparseable module source (${e instanceof Error?e.message:String(e)})`)}const i=Ot(o,e,r,function(e){return e.importedIdResolutions?.map((({id:e})=>e))??[...e.importedIds]}(n).map(On));i&&t.set(i.id,i)}},getModuleRecords:()=>t}}(t);return{plugin:n.plugin,getAllowedConnectionIds:()=>on(e,n.getModuleRecords(),t),getModuleRecords:n.getModuleRecords}}function Rn(e,t,n){return{name:"dd-backend-static-checks",moduleParsed(o){const r=On(o.id);if(Nn(r)||!Xt(r,e))return;const i=n().get(r);let s,a;if(i)s=i.ast,a=i.scopeAnalysis;else{if("string"!=typeof o.code)return;try{s=this.parse(o.code)}catch(e){const t=e instanceof Error?e.message:String(e);throw new Error(`Unsupported module source for ${r}: ${`unparseable module source (${t})`} could hide a Node-builtin import or restricted-global access.`)}a=Le(Ie(s,r))}Sn(s,r,t,a)}}}function _n(e,t){return{name:e,enforce:"pre",resolveId:e=>t[e]?{id:e,moduleSideEffects:!0}:null,load:e=>t[e]?t[e]:null}}function Fn(e,t,n=[]){return{configFile:!1,root:e,logLevel:"silent",build:{minify:!1,target:"esnext",ssr:!0,rollupOptions:{output:{format:"es",exports:"named",inlineDynamicImports:!0},preserveEntrySignatures:"exports-only",treeshake:!1,onwarn(e,t){"MODULE_LEVEL_DIRECTIVE"!==e.code&&t(e)}}},resolve:{extensions:[...me,".json"]},ssr:{noExternal:!0},plugins:[_n("dd-backend-resolve",t),...n]}}const Ln=async(e,t)=>{const n=(await Promise.all(e.map((e=>m.glob(e,{absolute:!0,cwd:t,nodir:!0}))))).flat(),o=Array.from(new Set(n)).map((e=>a.relative(t,e))),r=(e=>{if(0===e.length)return"";const t=e[0].split(a.sep);let n="";for(let o=0;o<t.length-1;o++){const r=t.slice(0,o+1).join(a.sep);if(!e.every((e=>e.startsWith(`${r}${a.sep}`))))break;n=r}return n})(o);return o.map(((e,t)=>{const o=r?e.slice(r.length+1):e;return{absolutePath:n[t],relativePath:o.split(a.sep).join("/")}}))};async function qn(e){const t=await r.mkdtemp(a.join(p.tmpdir(),"dd-apps-manifest-")),n=a.join(t,"manifest.json");try{await r.writeFile(n,JSON.stringify(function(e){const t={};for(const n of e)t[In(n)]={allowedConnectionIds:[...n.allowedConnectionIds]};return{backend:{functions:t}}}(e),null,2))}catch(e){throw await he(t),e}return{manifestAsset:{absolutePath:n,relativePath:"manifest.json"},cleanup:()=>he(t)}}async function zn({backendOutputs:e,backendFunctions:t,context:n,options:o}){const s=n.getLogger(ce),{buildRoot:u,bundler:{outDir:c}}=n,d=a.join(c,de),l=a.resolve(R("APPS_PACKAGE_DIR")||c),p=a.join(l,de);await Promise.all([r.rm(p,{force:!0}),r.rm(d,{force:!0})]);const m=a.relative(u,c),g=await Ln([...o.include,`${m}/**/*`],u);if(0===g.length&&0===e.size)return void s.debug("No assets to package.");let h;await r.mkdir(l,{recursive:!0});try{const n=new Set([p,d]),o=new Set(e.values()),u=[...g.filter((e=>!n.has(a.resolve(e.absolutePath)))).filter((e=>!o.has(e.absolutePath))).map((e=>({...e,relativePath:`frontend/${e.relativePath}`})))];for(const[t,n]of e)u.push({absolutePath:n,relativePath:`backend/${t}.js`});const c=await qn(t);h=c.cleanup,u.push(c.manifestAsset);const l=await(async(e,t)=>{const n=new f;for(const t of e)n.file(t.relativePath,i.createReadStream(t.absolutePath),{binary:!0,compression:"DEFLATE",compressionOptions:{level:9}});await new Promise(((e,o)=>{const r=i.createWriteStream(t),s=n.generateNodeStream({type:"nodebuffer",streamFiles:!0,compression:"DEFLATE",compressionOptions:{level:9}});s.on("error",o),r.on("error",o),r.on("close",e),s.pipe(r)}));const{size:o}=await r.stat(t);return{archivePath:t,size:o,assets:e}})(u,p);return s.info(`App package written to ${l.archivePath}.`),l.archivePath}finally{await(h?.())}}function Bn(e){return e.endsWith(".tsx")?"tsx":e.endsWith(".ts")||e.endsWith(".mts")||e.endsWith(".cts")?"ts":e.endsWith(".jsx")?"jsx":"js"}function Vn(e){return e.endsWith(pe)?e.slice(0,-14):e}function Un(e){return On(Vn(e))}function Wn(e,t){return t?Math.min(250*2**(e-1),2e3):250}const Kn=new y.AsyncLocalStorage,Hn=Reflect.has(globalThis,"$"),Jn=new y.AsyncLocalStorage,Gn=new y.AsyncLocalStorage;let Yn=Reflect.get(globalThis,"$");function Qn(){Object.getOwnPropertyDescriptor(globalThis,"$")?.get!==Xn&&Object.defineProperty(globalThis,"$",{configurable:!0,enumerable:!0,get:Xn,set:Zn})}function Xn(){const e=Kn.getStore();if(e)return e.value;const t=Jn.getStore();return t?t.assigned?t.value:Hn?Yn:void 0:Yn}function Zn(e){const t=Kn.getStore();if(t)return void(t.value=e);const n=Jn.getStore();if(n)return n.assigned=!0,void(n.value=e);Yn=e}Qn();const eo=new y.AsyncLocalStorage;function to(e){return"object"==typeof e&&null!==e}const no=ge(void 0);function oo(e){const t=e.maxRetries*e.timeoutMs+function(e){let t=0;for(let n=1;n<e.maxRetries;n++)t+=Wn(n,e.exponentialBackoff);return t}(e);return{actionCallTimeoutMs:2*t,totalExecutionTimeoutMs:1.2*t}}function ro(e,t){return Gn.run(new Set,(()=>Jn.run({assigned:!1,value:void 0},(()=>e(t)))))}function io(e,t,n){const{inputs:o,connectionId:r}=e;if("object"!=typeof o||!o)throw new Error(`Action ${n} must have an inputs field`);return function(e,t,n){if(void 0!==e&&!t.includes(e))throw new Error(`Action ${n} used connection "${e}", which is not in this function's allowed connections: [${t.join(", ")}]`)}(r,t,n),{inputs:o,connectionId:r}}let so=Promise.resolve();function ao(e,t){return new Error(`Execution of "${e}" already concluded; refusing to ${t} as this stale execution to avoid using a newer execution's identity.`)}const uo=function(){let e=0,t=null;return{start(){const n=++e;return t=n,{isCurrent:()=>t===n,concludeIfCurrent:()=>t===n&&(t=null,!0)}}}}();function co(e,t,n=[]){return new Proxy((function(){}),{get(o,r){if("then"===r||"toJSON"===r)return;const i=n.concat(String(r));return co(e,t,i)},async apply(o,r,i){if(0===i.length)throw new Error(`No arguments provided to action $.Actions.${n.join(".")}`);const s=to(i[0])?i[0]:{},{inputs:a,connectionId:u}=io(s,t,`$.Actions.${n.join(".")}`),c=`com.datadoghq.${n.join(".")}`;return e(c,a,u)}})}function lo(e,t,n){return new Promise(((o,r)=>{const i=setTimeout((()=>{r(new Error(`${n} timed out after ${t}ms`))}),t);e.then((e=>{clearTimeout(i),o(e)}),(e=>{clearTimeout(i),r(e)}))}))}function po(e,t,n,o,r,i){if(!e(r))return Promise.resolve();const s=t.get(o);if(s)return s;const a=n(o,i).catch((e=>{throw t.delete(o),e}));return t.set(o,a),a}const fo=new WeakMap;async function mo(e,t){const n=e("@datadog/action-catalog/action-execution"),o=(await lo(n,t,"Loading @datadog/action-catalog/action-execution")).setExecuteActionImplementation;"function"==typeof o&&o((async(e,t)=>{const n=eo.getStore();if(!n)throw new Error(`No active local execution to run "${e}" under.`);if(n.isAbandoned())throw ao(n.functionName,`run "${e}"`);const o=to(t)?t:{},{inputs:r,connectionId:i}=io(o,n.allowedConnectionIds,`"${e}"`);return n.executeAction(e,r,i)}))}const go=new WeakMap;async function ho(e,t){const n=Promise.all([e("@datadog/apps-backend/runtime/jsFunctionWithActions"),e("@datadog/apps-backend/runtime")]),[o,r]=await lo(n,t,"Loading @datadog/apps-backend/runtime"),i=o.buildRuntimeFromJsFunctionWithActions,s=r.setBackend;if("function"!=typeof i||"function"!=typeof s)return;const a=new WeakMap;s(new Proxy({},{get(e,t){const n=eo.getStore();if(!n)throw new Error("No active local execution to resolve an apps-backend accessor under.");if(n.isAbandoned())throw ao(n.functionName,"resolve a further apps-backend accessor");let o=a.get(n);if(void 0===o&&(o=i(n.$),a.set(n,o)),!to(o))return;const r=o[String(t)];return"function"==typeof r?r.bind(o):r}}))}class yo extends Error{}function bo(e,t){return"object"==typeof e&&null!==e&&!t.has(e)&&(Object.getOwnPropertySymbols(e).length>0||(t.add(e),Object.values(e).some((e=>bo(e,t)))))}function wo(e,t){if(bo(e,new Set))throw new Error(`Local execution of "${t.name}" returned a value with a Symbol-keyed property, which JSON.stringify silently drops instead of serializing — return a plain JSON-compatible value instead.`);let n;try{let o=!0;n=JSON.stringify(e,((e,n)=>{const r=o;if(o=!1,n instanceof Map||n instanceof Set)throw new yo(`Local execution of "${t.name}" returned a ${n.constructor.name}${e?` (at "${e}")`:""}, which JSON.stringify silently flattens to "{}" instead of serializing its entries — return a plain array or object instead.`);if("number"==typeof n&&!Number.isFinite(n))throw new yo(`Local execution of "${t.name}" returned ${n}${e?` (at "${e}")`:""}, which JSON.stringify silently converts to "null" instead of throwing — return a finite number instead.`);if(!r&&("function"==typeof n||"symbol"==typeof n||void 0===n))throw new yo(`Local execution of "${t.name}" returned a ${typeof n} (at "${e}"), which JSON.stringify silently drops instead of serializing — return a plain JSON-compatible value instead.`);return n}))}catch(e){if(e instanceof yo)throw e;throw new Error(`Local execution of "${t.name}" returned a value that can't be serialized to JSON: ${e instanceof Error?e.message:String(e)}`)}if(void 0!==n)return JSON.parse(n);if(void 0!==e)throw new Error(`Local execution of "${t.name}" returned a ${typeof e} value, which JSON.stringify silently drops instead of serializing — return a plain JSON-compatible value instead.`)}async function vo(e,t,n,o,r,i,s,a=1e4,u=no){const c=`${e.relativePath}/${e.name}`;return function(e){const t=so.then(e);return so=t.then((()=>{}),(()=>{})),t}((async()=>{const d=i(e.absolutePath),l=await lo(d,a,`Resolving allowed connections for "${c}"`),p=e.absolutePath+pe,f=ro(r,p),m=await lo(f,a,`Loading "${c}"`);return async function(e,t,n,o,r,i,s,a,u){i.debug(`Executing "${e.name}" in-process with args`);const{actionCallTimeoutMs:c,totalExecutionTimeoutMs:d}=oo(u),l=uo.start();let p,f,m,g=0;const h=()=>{p=setTimeout((()=>{w(),f?.(new Error(`Local execution of "${e.name}" timed out after ${s}ms`))}),s)},y=()=>{clearTimeout(m),m=setTimeout((()=>{w(),f?.(new Error(`Local execution of "${e.name}" exceeded the absolute ${d}ms execution ceiling, regardless of any $.Actions call in flight.`))}),d)},b=async(t,n,r)=>{if(!l.isCurrent())throw ao(e.name,`run "${t}"`);g+=1,clearTimeout(p),y();try{const e=o(t,n,r);return await lo(e,c,`$.Actions call to "${t}"`)}finally{g-=1,0===g&&l.isCurrent()&&h()}},w=()=>{l.concludeIfCurrent()},v={backendFunctionArgs:n,Actions:co(b,e.allowedConnectionIds),Source:{initiator:{id:"local-dev",orgId:"local-dev-org"},runAsUser:{id:"local-dev",orgId:"local-dev-org"}}},$={executeAction:b,allowedConnectionIds:e.allowedConnectionIds,isAbandoned:()=>!l.isCurrent(),functionName:e.name,$:v},k=async()=>{try{const o=(a??await ro(r,e.absolutePath+pe))[e.name];if("function"!=typeof o)throw new Error(`"${e.name}" is not a function exported from ${e.absolutePath}`);return Qn(),await Kn.run({value:v},(()=>eo.run($,(async()=>{const i=function(e,t,n){return po(Dn,fo,mo,e,t,n)}(r,t,s),a=function(e,t,n){return po(Pn,go,ho,e,t,n)}(r,t,s);if(await Promise.all([i,a]),!l.isCurrent())throw new Error(`Execution of "${e.name}" was abandoned after timing out before it could start.`);return{data:wo(await o(...n),e)}}))))}finally{w()}},x=new Promise(((e,t)=>{f=t,h()}));y();const E=k();let S=!1;E.catch((t=>{if(!S)return;const n=t instanceof Error?t.message:String(t);i.debug(`"${e.name}" failed after its caller had already stopped waiting: ${n}`)}));try{return await Promise.race([E,x])}finally{S=!0,clearTimeout(p),clearTimeout(m)}}({...e,allowedConnectionIds:l},t,n,o,r,s,a,m,u)}))}function $o(e){return new Promise((t=>{setTimeout(t,e)}))}function ko(e){return null!==e&&"object"==typeof e&&"name"in e&&("TimeoutError"===e.name||"AbortError"===e.name)}function xo(e,t){const n=Wn(e,t.exponentialBackoff);return t.jitter?n/2+Math.random()*(n/2):n}function Eo(e){return`${e.relativePath}/${e.name}`}async function So(e,t,n,o){const r=Eo(t),i=`virtual:dd-backend-dev:${r}`,s=function(e,t,n){return Mn(e,t,n??process.cwd())}(t.name,t.absolutePath,n),a=Tn(t.absolutePath,n);o.debug(`Bundling backend function "${r}" from ${t.absolutePath}`);const u=Rn(n,o,a.getModuleRecords),c=Fn(n,{[i]:s},[a.plugin,u]),d=await e({...c,build:{...c.build,write:!1,rollupOptions:{...c.build.rollupOptions,input:i,output:c.build.rollupOptions.output}}}),l=Array.isArray(d)?d[0]:d;if(!("output"in l))throw new Error(`Unexpected vite.build result for "${r}"`);const p="chunk"===l.output[0].type?l.output[0].code:"",f={...t,allowedConnectionIds:a.getAllowedConnectionIds()};return o.debug(`Bundled "${r}" (${p.length} bytes)`),{func:f,code:p}}async function Io(e,t,n,o,r,i){const s=`https://api.${n.site}/api/v2/app-builder/queries/preview-async`;i.debug(`Calling Datadog API: ${s}`);const a=JSON.stringify({data:{type:"queries",attributes:{query:{id:l.randomUUID(),name:t,type:"action",properties:{spec:e,onlyTriggerManually:!0}},template_params:{}}}}),u=await o({url:s,method:"POST",type:"json",getData:()=>({data:a,headers:{"Content-Type":"application/json"}})}),c=u.data?.id;if(!c)throw new Error("No receipt ID returned from Datadog API");return i.debug(`Query execution started with receipt: ${c}`),async function(e,t,n,o,r){const i=`https://api.${t.site}/api/v2/app-builder/queries/execution-long-polling/${e}`,{maxRetries:s,timeoutMs:a}=o;for(let e=0;e<s;e++){if(e>0){const t=xo(e,o);r.debug(`Waiting ${Math.round(t)}ms before long-poll retry...`),await $o(t)}let t;r.debug(`Long-poll attempt ${e+1}/${s}...`);try{t=await n({url:i,type:"json",signal:AbortSignal.timeout(a)})}catch(t){if(!ko(t))throw t;r.debug(`Long-poll attempt ${e+1} timed out after ${a}ms`);continue}if(t.errors?.length){const e=t.errors.map((e=>e.detail||e.title)).join("; ");throw new Error(`Query execution failed: ${e}`)}const u=t.data?.attributes;if(r.debug(`Long-poll response, done: ${u?.done}`),u?.done){if(void 0===u.outputs||null===u.outputs)throw new Error("Query execution completed without outputs");return u.outputs}}throw new Error("Query execution timed out")}(c,n,o,r,i)}function jo(e,t,n){e.statusCode=t,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({success:!1,error:n}))}function Ao(e,t){e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({success:!0,result:t}))}function Do(e,t,n){t?n(t).catch((()=>jo(e,500,"Unexpected error"))):jo(e,400,`Auth credentials not configured. ${Ee}`)}function Po(e,t,n,o){const r=t instanceof Mo?t.statusCode:500,i=t instanceof Error?t.message:"Internal server error";n&&o&&n.debug(`Error handling ${o}: ${i}`),jo(e,r,i)}class Mo extends Error{constructor(e,t){super(t),this.statusCode=e}}async function Co(e,t){const{functionName:n,args:o=[]}=await function(e){return new Promise(((t,n)=>{let o="";e.on("data",(e=>{o+=e.toString()})),e.on("end",(()=>{try{t(JSON.parse(o))}catch{n(new Error("Invalid JSON body"))}})),e.on("error",n)}))}(e);if(!n||"string"!=typeof n)throw new Mo(400,"Missing or invalid functionName");const r=t.get(n);if(!r)throw new Mo(404,`Backend function "${n}" not found`);return{func:r,args:o}}async function Oo(e,t,n){const{func:o,args:r}=await Co(e,t);return{...await n(o),args:r}}async function No(e,t,n,o,r,i,s,a,u,c){try{const{func:d,args:l}=await Co(e,n),p=Eo(d);c.debug(`Executing action locally: ${p} with args`);const f=function(e,t,n,o){return async(r,i,s)=>{try{const a=await Io(void 0!==s?{fqn:r,inputs:i,connectionId:s}:{fqn:r,inputs:i},r,e,t,n,o);return o.info(`$.Actions call to "${r}" succeeded: ${JSON.stringify(a)}`),a}catch(e){const t=e instanceof Error?e.message:String(e);throw o.error(`$.Actions call to "${r}" failed: ${t}`),e}}}(o,r,i,c);Ao(t,await vo(d,u,l,f,s,a,c,1e4,i))}catch(e){Po(t,e,c,"executeAction")}}async function To(e,t,n,o,r,i,s,a){try{const{func:u,code:c,args:d}=await Oo(e,n,o),l=Eo(u);a.debug(`Executing action via cloud: ${l} with args`);const p=await async function(e,t,n,o,r,i,s){const a=Eo(t),u=await Io({fqn:"com.datadoghq.datatransformation.jsFunctionWithActions",inputs:{script:e,allowedConnectionIds:t.allowedConnectionIds,context:{backendFunctionArgs:n}}},a,o,r,i,s);if("object"!=typeof u||null===u||!("data"in u))throw new Error('Query execution completed without a "data" field in its outputs');return u}(c,u,d,r,i,s,a);Ao(t,p)}catch(e){Po(t,e,a,"executeActionViaCloud")}}function Ro(e,t,n,o,r,i,s,a,u){const c=t=>So(e,t,a,u),d=n();return d.length>0&&u.info(`Dev server middleware active for ${d.length} backend function(s): ${d.map((e=>e.name)).join(", ")}`),(e,d,l)=>{if("POST"!==e.method)return void l();const p=(f=n(),new Map(f.map((e=>[In(e),e]))));var f;"/__dd/debugBundle"===e.url?async function(e,t,n,o){try{const{code:r}=await Oo(e,n,o);t.statusCode=200,t.setHeader("Content-Type","text/plain"),t.end(r)}catch(e){Po(t,e)}}(e,d,p,c).catch((()=>{jo(d,500,"Unexpected error")})):"/__dd/executeAction"===e.url?Do(d,i,(n=>No(e,d,p,r,n,s,t,o,a,u))):"/__dd/executeActionViaCloud"===e.url?Do(d,i,(t=>To(e,d,p,c,r,t,s,u))):l()}}const _o=a.join(__dirname,"./apps-runtime.mjs"),Fo=({bundler:e,context:t,options:n})=>{const o=t.getLogger(ce),{auth:i}=t;t.inject({type:"file",position:xe.MIDDLE,value:_o});const{setBackendFunctions:s,getBackendFunctions:u}=function(){const e=new Map;return{setBackendFunctions(t,n){e.set(t,n)},getBackendFunctions:()=>Array.from(e.values()).flat()}}();let c=!1;return{config:()=>({ssr:{noExternal:["@datadog/apps-backend","@datadog/action-catalog"]}}),resolveId:{order:"pre",async handler(e,n,o){if(!0!==o.ssr)return null;const r=Gn.getStore();if(!(!!n&&(n.endsWith(pe)||!!r&&r.has(n))))return null;const i=await this.resolve(e,n,{...o,skipSelf:!0});if(!i||i.external)return i;if(i.id.endsWith(pe))return i;if(!Xt(i.id,t.buildRoot))return i;const s=i.id+pe;return le.test(i.id)||r?.add(s),{...i,id:s}}},transform:{filter:{id:{include:[fe],exclude:[/node_modules/,/[/\\]dist[/\\]/]}},handler(e,n,r){if(n.endsWith(pe)&&r?.ssr)return null;const i=n.indexOf("?"),u=-1===i?n:n.slice(0,i),c=this.parse(e),d=Le(Ie(c,u));Sn(c,u,o,d);const l=Ce(c,u);if(0===l.length)return-1===i&&(o.warn(`Backend file ${u} has no exported functions. Did you forget to add a named export?`),s(u,[])),{code:"",map:null};const{functions:p,proxyCode:f}=function(e,t,n){const o=a.relative(n,t).replace(le,""),r=[],i=[];for(const n of e){const e={relativePath:o,name:n,absolutePath:t,allowedConnectionIds:[]};r.push(e),i.push({exportName:n,queryName:In(e)})}return{functions:r,proxyCode:jn(i)}}(l,u,t.buildRoot);return s(u,p),o.debug(`Generated proxy for ${u} with ${p.length} export(s)`),{code:f,map:null}}},async closeBundle(){if(c)return void o.debug("Skipping app packaging: dev server session.");let i,s=new Map,d=u();if(d.length>0){const n=await async function(e,t,n,o){const i=await r.mkdtemp(a.join(p.tmpdir(),"dd-apps-backend-")),s=new Map,u=new Map;o.debug(`Building ${t.length} backend function(s) via vite.build()`);try{for(const r of t){const t=In(r),c=`\0dd-backend:${t}`,d=Mn(r.name,r.absolutePath,n),l=Tn(r.absolutePath,n),p=Rn(n,o,l.getModuleRecords),f=Fn(n,{[c]:d},[l.plugin,p]),m=await e({...f,build:{...f.build,write:!0,outDir:i,emptyOutDir:!1,rollupOptions:{...f.build.rollupOptions,input:{[t]:c},output:{...f.build.rollupOptions.output,entryFileNames:"[name].js"}}}}),g=Array.isArray(m)?m[0]:m;if("output"in g)for(const e of g.output){if("chunk"!==e.type||!e.isEntry)continue;const n=a.resolve(i,e.fileName);s.set(t,n),o.debug(`Backend function "${t}" output: ${n}`)}u.set(r.absolutePath,l.getAllowedConnectionIds())}}catch(e){try{await he(i)}catch(e){o.warn(`Failed to clean up temp output directory "${i}": ${e}`)}throw e}return{outDir:i,outputs:s,functions:t.map((e=>({...e,allowedConnectionIds:u.get(e.absolutePath)})))}}(e.build,d,t.buildRoot,o);i=n.outDir,s=n.outputs,d=n.functions}try{await zn({backendOutputs:s,backendFunctions:d,context:t,options:n})}finally{i&&await he(i)}},configureServer(r){let s;c=!0;try{s=(()=>{const e=R("API_KEY"),t=R("APP_KEY");if(e&&t)return n=>z({...n,auth:{apiKey:e,appKey:t}});const n=R("OAUTH_ACCESS_TOKEN");if(n)return e=>z({...e,auth:{accessToken:n}});throw new Se})()}catch(e){if(!(e instanceof Se))throw e;o.warn(`No authentication configured. Both the /__dd/executeAction and /__dd/executeActionViaCloud endpoints will be unavailable. ${Ee}`)}const a=r.ssrLoadModule.bind(r),d=Ro(e.build,a,u,(async e=>{const n=await async function(e,t,n,o){const r=new Map,i=new Set,s=[],a=t+pe;await e.transformRequest(a,{ssr:!0});const u=e.moduleGraph.getModuleById(a);for(u&&s.push(u);s.length>0;){const t=s.shift(),a=t.id?Un(t.id):void 0;if(!a||!t.file)continue;if(!Xt(a,n))continue;if(t.id&&Vn(t.id).includes("?"))throw nn(a,`Vite resource query on module id "${t.id}"`);if(i.has(a))continue;let u,c;i.add(a);try{u=await we(t.file)}catch(e){const t=e instanceof Error?e.message:String(e);throw nn(a,`unreadable module source (${t})`)}try{const e=await g.transform(u,{loader:Bn(a),format:"esm"});c=h.parseAst(e.code)}catch(e){const t=e instanceof Error?e.message:String(e);throw nn(a,`unparseable module source (${t})`)}const d=Nt(c),l=t.file,p=(await Promise.all(d.map((t=>e.pluginContainer.resolveId(t,l??void 0,{ssr:!0}))))).map(((e,t)=>{if(!e)throw nn(a,`unresolvable import specifier "${d[t]}"`);return Un(e.id)})),f=Ot(a,n,c,p);f&&(Sn(f.ast,f.id,o,f.scopeAnalysis),r.set(f.id,f));for(const n of t.importedModules)n.id&&await e.transformRequest(n.id,{ssr:!0}),s.push(n)}return r}(r,e,t.buildRoot,o);return on(e,n,t.buildRoot)}),i,s,n.longPolling,t.buildRoot,o);r.middlewares.use(d)}}},Lo=({options:e,context:t,bundler:n})=>{const o=t.getLogger(ce),r=(e=>{const t=e[ue]||{};return{include:t.include||[],longPolling:ge(t.longPolling)}})(e);return"vite"!==t.bundler.name?(o.warn(`The apps plugin only supports Vite; skipping under '${t.bundler.name}'.`),[]):[{name:ce,enforce:"post",vite:Fo({bundler:n,context:t,options:r})}]},qo="errorTracking",zo="datadog-error-tracking-plugin",Bo=(e,n,o)=>{if(".map"!==a.extname(o))throw new Error(`The file ${t.green.bold(o)} is not a sourcemap.`);const r=o.replace(/\.map$/,""),i=a.relative(n,r),s=((e,t)=>{if(e.startsWith("/"))return a.join(e,t);try{const n=e.replace(/\/*$/,"/"),o=new URL(n),r=t.replace(/^[\\/]*/,"");return new URL(r,o).href}catch{return`${e}${t}`}})(e,i);return{minifiedFilePath:r,minifiedUrl:s,relativePath:i}},Vo=/"?ddDebugId"?:"([0-9a-fA-F-]{36})"/,Uo=async e=>(async e=>{const t=await r.open(e,"r");try{const e=Buffer.alloc(1024);let o="",r=0;for(;;){const{bytesRead:i}=await t.read(e,0,1024,r);if(0===i)return;const s=o+e.toString("utf-8",0,i),a=(n=s,Vo.exec(n)?.[1]);if(a)return a;o=s.slice(-64),r+=i}}finally{await t.close()}var n})(e).catch((()=>{})),Wo=/[/]+|[\\]+/g,Ko=/^[/]+|^[\\]+|[/]+$|[\\]+$/g,Ho=(e,t)=>{const n=e.replace(Ko,"").split(Wo),o=t.replace(Ko,"").split(Wo),r=n.join("/");let i="";for(let e=0;e<o.length;e+=1){const t=o.slice(-e).join("/");r.startsWith(t)&&(i=t)}return i},Jo=async(e,t,n,o,r)=>{const i=await(async(e,t)=>{const[n,o]=await Promise.all([ke(e.minifiedFilePath),ke(e.sourcemapFilePath)]);return{file:n,sourcemap:o,repeatedPrefix:Ho(e.relativePath,t)}})(e,n),s=[],u=[],c=new Map([["event",{type:"string",options:{contentType:"application/json",filename:"event"},value:JSON.stringify({...t,debug_id:r,minified_url:e.minifiedUrl})}],["source_map",{type:"file",path:e.sourcemapFilePath,options:{filename:"source_map",contentType:"application/json"}}],["minified_file",{type:"file",path:e.minifiedFilePath,options:{filename:"minified_file",contentType:"application/javascript"}}]]);if(o)try{c.set("repository",{type:"string",options:{contentType:"application/json",filename:"repository"},value:JSON.stringify({data:[{files:o.trackedFilesMatcher.matchSourcemap(e.sourcemapFilePath,(t=>{u.push(`${a.basename(e.sourcemapFilePath)}: "${t}"`)})),hash:o.hash,repository_url:o.remote}],version:1})})}catch(t){u.push(`Could not attach git data for sourcemap ${e.sourcemapFilePath}: ${t.message}`)}return i.file.empty&&s.push(`Minified file is empty: ${e.minifiedFilePath}`),i.file.exists||s.push(`Minified file not found: ${e.minifiedFilePath}`),i.sourcemap.empty&&s.push(`Sourcemap file is empty: ${e.sourcemapFilePath}`),i.sourcemap.exists||s.push(`Sourcemap file not found: ${e.sourcemapFilePath}`),i.repeatedPrefix&&u.push(`The minified file path contains a repeated pattern with the minified path prefix: ${i.repeatedPrefix}`),{content:c,errors:s,warnings:u}},Go=e=>{const t=e.message.match(/HTTP (\d{3})/);return t?`status_code:${t[1]}`:"status_code:unknown"},Yo=e=>{const t=Go(e);return"status_code:unknown"!==t?`error_type:http_${t.replace("status_code:","")}`:`error_type:${Y(e.name||"unknown")}`},Qo=(e,t,n)=>{const o=((e,t)=>`${e}|${t.join("|")}`)(t,n),r=e.metrics.get(o);r?r.value++:e.metrics.set(o,{name:t,value:1,tags:n})},Xo=(e,t,n)=>{Qo(e,"retry",[...e.baseTags,`attempt:${n}`,Go(t),Yo(t)])},Zo=(e,t)=>{Qo(e,"failure",[...e.baseTags,Go(t),Yo(t)])},er=(e,t)=>{if(!t.sendMetrics)return;if(!e.metrics.size)return;const n=(e=>{const t=Math.floor(Date.now()/1e3);return Array.from(e.metrics.values()).map((e=>({metric:`sourcemaps.upload.${e.name}`,type:"count",points:[[t,e.value]],tags:e.tags})))})(e);for(const e of n)t.addMetric(e)},tr=t.green.bold,nr=t.yellow.bold,or=t.red.bold,rr=(e,t={})=>async()=>(async e=>{const{getForm:t,defaultHeaders:n={},zip:o=!0}=e,r=await t(),i=new Request("fake://url",{method:"POST",body:r});return{data:o?i.body.pipeThrough(new CompressionStream("gzip")):i.body,headers:{"Content-Encoding":o?"gzip":"multipart/form-data",...n,...Object.fromEntries(i.headers.entries())}}})({getForm:async()=>{const t=new FormData;for(const[n,o]of e.content){const e="file"===o.type?await $e(o.path,o.options):new Blob([o.value],{type:o.options.contentType});t.append(n,e,o.options.filename)}return t},defaultHeaders:t,zip:!0}),ir=async(e,t,n,o)=>{const r=[],i=[];if(!n.apiKey)return r.push({error:new Error("No authentication token provided")}),{errors:r,warnings:i};if(0===e.length)return i.push("No sourcemaps to upload"),{errors:r,warnings:i};const s=o.time("Queue uploads"),a=new(b.default?b.default:b)({concurrency:t.maxConcurrency}),u=(c=n.site,R("SOURCEMAP_INTAKE_URL")||`https://sourcemap-intake.${c}/api/v2/srcmap`);var c;const d={"DD-EVP-ORIGIN":`${(l={bundler:n.bundlerName,plugin:"sourcemaps",version:n.version}).bundler}-build-plugin_${l.plugin}`,"DD-EVP-ORIGIN-VERSION":l.version};var l;const p=(e=>({metrics:new Map,baseTags:[`service:${e.service}`]}))(t),f=Q({...t,intakeUrl:u,outDir:n.outDir,defaultHeaders:`\n${JSON.stringify(d,null,2)}`}),m=`\nUploading ${tr(e.length.toString())} sourcemaps with configuration:\n${f}`;o.debug(m);const g=[];for(const s of e){const e={sourcemap:s.content.get("source_map")?.path.replace(n.outDir,"."),file:s.content.get("minified_file")?.path.replace(n.outDir,".")};g.push(a.add((async()=>{try{await z({auth:{apiKey:n.apiKey},url:u,method:"POST",getData:rr(s,d),onRetry:(t,n)=>{Xo(p,t,n);const r=`Failed to upload ${nr(e.sourcemap)} | ${nr(e.file)}:\n ${t.message}\nRetrying ${n}/5`;i.push(r),o.debug(r)}})}catch(n){if(Zo(p,n),r.push({metadata:e,error:n}),!0===t.bailOnError)throw n}})))}s.end(),o.debug(`Queued ${tr(e.length.toString())} uploads.`);try{await Promise.all(g),await a.onIdle()}finally{er(p,n)}return{warnings:i,errors:r}},sr=async(e,t,n)=>{const o=n.time("get sourcemaps files"),r=((e,t)=>{if(!t.outputs||0===t.outputs.length)throw new Error("No output files found.");return t.outputs.filter((e=>e.filepath.endsWith(".map"))).map((e=>e.filepath)).map((n=>({...Bo(e.minifiedPathPrefix,t.outDir,n),sourcemapFilePath:n,minifiedPathPrefix:e.minifiedPathPrefix})))})(e.sourcemaps,{outDir:t.outDir,outputs:t.outputs});o.end();const i=n.time("send sourcemaps");await(async(e,t,n,o)=>{const r=Date.now(),i=t.minifiedPathPrefix,s={git_repository_url:n.git?.remote,git_commit_sha:n.git?.hash,plugin_version:n.version,project_path:n.outDir,service:t.service,type:"js_sourcemap",version:t.releaseVersion},a=o.time("Compute payloads"),u=new(b.default?b.default:b)({concurrency:t.maxConcurrency});let c=0;const d=await u.addAll(e.map((e=>async()=>{const t=await Uo(e.minifiedFilePath);return t&&(c+=1),Jo(e,s,i,n.git,t)})));a.end(),o.debug(`Extracted debug_id for ${tr(`${c}/${e.length}`)} sourcemaps.`);const l=d.map((e=>e.errors)).flat(),p=d.map((e=>e.warnings)).flat();if(p.length>0&&o.warn(`Warnings while preparing payloads:\n - ${p.join("\n - ")}`),l.length>0){const e=`Failed to prepare payloads, aborting upload :\n - ${l.join("\n - ")}`;if(o.error(e),!0===t.bailOnError)throw new Error(e);return}const f=o.time("Upload sourcemaps"),{errors:m,warnings:g}=await ir(d,t,{apiKey:n.apiKey,bundlerName:n.bundlerName,version:n.version,outDir:n.outDir,site:n.site,sendMetrics:n.sendMetrics,addMetric:n.addMetric},o);if(f.end(),o.debug(`Done uploading ${tr(`${e.length-m.length}/${e.length}`)} sourcemaps in ${tr(H(Date.now()-r))}.`),m.length>0){const e=`Failed to upload some sourcemaps:\n - ${m.map((({metadata:e,error:t})=>{const n=t.cause||t.stack||t.message;return e?`${or(e.file)} | ${or(e.sourcemap)} :\n${n}`:n})).join("\n - ")}`;if(o.error(e),!0===t.bailOnError)throw new Error(e)}g.length>0&&o.warn(`Warnings while uploading sourcemaps:\n - ${g.join("\n - ")}`)})(r,e.sourcemaps,{addMetric:t.addMetric,apiKey:t.apiKey,bundlerName:t.bundlerName,git:t.git,outDir:t.outDir,sendMetrics:t.sendMetrics,site:t.site,version:t.version},n),i.end()},ar=e=>{const n=t.bold.red,o=e[qo]||{},r={errors:[]};if(o.sourcemaps){const t=o.sourcemaps,i=t.releaseVersion||e.metadata?.version;i||r.errors.push(`${n("sourcemaps.releaseVersion")} is required (set it directly or via ${n("metadata.version")}).`),t.releaseVersion&&e.metadata?.version&&t.releaseVersion!==e.metadata.version&&r.errors.push(`${n("sourcemaps.releaseVersion")} must match ${n("metadata.version")} when both are configured.`),t.service||r.errors.push(`${n("sourcemaps.service")} is required.`),t.minifiedPathPrefix||r.errors.push(`${n("sourcemaps.minifiedPathPrefix")} is required.`),t.minifiedPathPrefix&&!(e=>{let t;try{t=new URL(e).host}catch{}return!(!t&&!e.startsWith("/"))})(t.minifiedPathPrefix)&&r.errors.push(`${n("sourcemaps.minifiedPathPrefix")} must be a valid URL or start with '/'.`),i&&(r.config={bailOnError:!1,dryRun:!1,maxConcurrency:20,...t,releaseVersion:i})}return r},ur=({options:e,context:t})=>{const n=t.getLogger(zo),o=n.time("validate options"),r=((e,t)=>{const n=[],o=ar(e);if(n.push(...o.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${zo}.`);return{...e[qo],sourcemaps:o.config}})(e,n);o.end();const i=ae(e,"metrics",n);let s,a,u,c=!1;const d=async()=>{r.sourcemaps&&!c&&(u||(u=(async()=>{await t.artifactsReady,c=!0;const e=n.time("sourcemaps process");await sr(r,{apiKey:t.auth.apiKey,bundlerName:t.bundler.name,git:s,addMetric:t.addMetric,outDir:t.bundler.outDir,outputs:a?.outputs||[],sendMetrics:i,site:t.auth.site,version:t.version},n),e.end()})()),await u)},l=async()=>{if(t.artifactsPending){const e=d();t.queue(e)}else await d()};return[{name:zo,enforce:"post",async git(e){s=e,a&&await l()},async buildReport(t){a=t,!s&&K(e)||await l()},async asyncTrueEnd(){c||await d()}}]},cr="liveDebugger",dr="datadog-live-debugger-plugin",lr="if(typeof globalThis.$dd_probes==='undefined'){globalThis.$dd_probes=function(){}}",pr="__DD_LIVE_DEBUGGER_BUILD__",fr=e=>void 0===e?lr:`${lr};if(typeof globalThis.${pr}==='undefined'){globalThis.${pr}={version:${JSON.stringify(e)}}}`;function mr(e){return"function"==typeof e?e:e.default}function gr(e,t,n,o,r){const i=a.relative(t,e).replace(/\\/g,"/"),s=hr(n,r);if(s)return`${i};${s}`;const u=function(e){const t=e.node.loc?.start.line??0,n=e.node.loc?.start.column??0;return`${t}:${n}`}(n);return`${i};<anonymous>@${u}:${o}`}function hr(e,t){const n=e.node,o=e.parent;return"id"in n&&t.isIdentifier(n.id)?n.id.name:t.isObjectMethod(n)||t.isClassMethod(n)||t.isClassPrivateMethod(n)?wr(n.key,t):t.isVariableDeclarator(o)&&t.isIdentifier(o.id)?o.id.name:t.isAssignmentExpression(o)?function(e,t){if(t.isIdentifier(e))return e.name;if(t.isMemberExpression(e)||t.isOptionalMemberExpression(e)){const n=yr(e.object,t),o=br(e.property,e.computed,t);if(n&&o)return`${n}.${o}`}return null}(o.left,t):t.isObjectProperty(o)||t.isClassProperty(o)||t.isClassPrivateProperty(o)?wr(o.key,t):null}function yr(e,t){if(t.isIdentifier(e))return e.name;if(t.isThisExpression(e))return"this";if(t.isMemberExpression(e)||t.isOptionalMemberExpression(e)){const n=yr(e.object,t),o=br(e.property,e.computed,t);if(n&&o)return`${n}.${o}`}return null}function br(e,t,n){return n.isPrivateName(e)&&n.isIdentifier(e.id)?`#${e.id.name}`:t?null:n.isIdentifier(e)?e.name:null}function wr(e,t){return t.isIdentifier(e)?e.name:t.isStringLiteral(e)||t.isNumericLiteral(e)||t.isBigIntLiteral(e)?String(e.value):t.isPrivateName(e)&&t.isIdentifier(e.id)?`#${e.id.name}`:null}function vr(e,t){if(e.node.leadingComments)for(const n of e.node.leadingComments)if(n.value.includes(t))return!0;return!1}function $r(e,t){const n=[];if(t.isBlockStatement(e.body)){const o=e.params.flatMap((e=>jr(e,t))),r=new Set(o),i="id"in e&&t.isIdentifier(e.id)?e.id.name:"";for(const o of e.body.body)if(t.isVariableDeclaration(o)){const e=o.end;if(null==e)continue;for(const s of o.declarations)for(const o of jr(s.id,t))r.has(o)||o===i||n.push({name:o,declarationEnd:e,temporalDeadZones:[]})}}const o=n.length>25?n.slice(0,25):n;if(t.isBlockStatement(e.body)){const n=o.map((({name:e})=>e)),r=new Set(n),i=function(e,t,n){const o=new Map;for(const r of e.body)kr(r,t,o,n);return o}(e.body,r,t);for(const e of o)e.temporalDeadZones=i.get(e.name)??[]}return o}function kr(e,t,n,o){o.isFunctionDeclaration(e)||o.isClassDeclaration(e)||(o.isBlockStatement(e)?xr(e,t,n,o):o.isIfStatement(e)?(kr(e.consequent,t,n,o),e.alternate&&kr(e.alternate,t,n,o)):o.isForStatement(e)||o.isForInStatement(e)||o.isForOfStatement(e)||o.isWhileStatement(e)||o.isDoWhileStatement(e)?kr(e.body,t,n,o):o.isSwitchStatement(e)?function(e,t,n,o){for(const r of e.cases){Er(r.consequent,e.start,t,n,o);for(const e of r.consequent)kr(e,t,n,o)}}(e,t,n,o):o.isTryStatement(e)?(xr(e.block,t,n,o),e.handler&&xr(e.handler.body,t,n,o),e.finalizer&&xr(e.finalizer,t,n,o)):(o.isLabeledStatement(e)||o.isWithStatement(e))&&kr(e.body,t,n,o))}function xr(e,t,n,o){Er(e.body,e.start,t,n,o);for(const r of e.body)kr(r,t,n,o)}function Er(e,t,n,o,r){if(null!=t)for(const i of e)r.isVariableDeclaration(i)&&"var"!==i.kind?Sr(i,t,n,o,r):r.isClassDeclaration(i)&&i.id&&Ir(i.id.name,t,i.end,n,o)}function Sr(e,t,n,o,r){for(const i of e.declarations)for(const s of jr(i.id,r))Ir(s,t,e.end,n,o)}function Ir(e,t,n,o,r){if(null==n||!o.has(e))return;const i=r.get(e)??[];i.push({start:t,end:n}),r.set(e,i)}function jr(e,t){return t.isIdentifier(e)?[e.name]:t.isRestElement(e)?t.isIdentifier(e.argument)?[e.argument.name]:jr(e.argument,t):t.isAssignmentPattern(e)?jr(e.left,t):t.isObjectPattern(e)?e.properties.flatMap((e=>t.isRestElement(e)?jr(e.argument,t):jr(e.value,t))):t.isArrayPattern(e)?e.elements.flatMap((e=>e?jr(e,t):[])):t.isTSParameterProperty(e)&&t.isIdentifier(e.parameter)?[e.parameter.name]:[]}const Ar=["@babel/parser","@babel/traverse","@babel/types","magic-string"];let Dr,Pr,Mr,Cr,Or=!1;function Nr(e){try{return function(e){switch(e){case"@babel/parser":return require("@babel/parser");case"@babel/traverse":return require("@babel/traverse");case"@babel/types":return require("@babel/types");case"magic-string":return require("magic-string");default:throw new Error(`Unknown peer dependency: ${e}`)}}(e)}catch(e){throw function(e){if(!function(e){if(!(e instanceof Error))return!1;const t=e.code;if("MODULE_NOT_FOUND"!==t&&"ERR_MODULE_NOT_FOUND"!==t)return!1;return Ar.some((t=>e.message.includes(t)))}(e))return e instanceof Error?e:new Error(String(e));const t=Ar.find((t=>e.message.includes(t))),n=t??Ar.join(", ");return new Error(`Datadog Live Debugger could not load "${n}". It is an optional peer dependency that must be installed in your project when the \`liveDebugger\` plugin is enabled. Install the peer dependencies with: \`npm install --save-dev ${Ar.join(" ")}\` (or the yarn/pnpm/bun equivalent). Underlying error: ${e.message}`)}(e)}}const Tr=/\bfunction\b|=>|\bclass\b|\)\s*\{/;function Rr(e){const{code:t,filePath:n,buildRoot:o,honorSkipComments:r,functionTypes:i,namedOnly:s}=e;let a=0,u=0,c=0,d=0,l=0;if(function(e){return/['"][^'"]*(?:@css-module:|\?worker\b|\?sprite\b|dynamic!)[^'"]*['"]/.test(e)}(t))return{code:t,failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:1,skippedUnsupportedCount:d,totalFunctions:l};if(!Tr.test(t))return{code:t,failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:0,skippedUnsupportedCount:d,totalFunctions:l};Or||(Dr=Nr("@babel/parser").parse,Pr=mr(Nr("@babel/traverse")),Mr=Nr("@babel/types"),Cr=mr(Nr("magic-string")),Or=!0);const p=Dr(t,{sourceType:"unambiguous",plugins:["jsx","typescript"],sourceFilename:n}),f=[],m=new Map,g=new Set,h=new Map,y=new Map;let b=0;if(Pr(p,{Function(e){l++;const t=function(e,t){if(t.isClassMethod(e.node)&&"constructor"===e.node.kind&&Vr(e,t))return e.node;return}(e,Mr);if(t&&(m.set(t,t.body.start),h.set(t,function(e,t){const n=[];for(const o of e)Lr(o,n,t);return n}(t.body.body,Mr))),!function(e,t){const n=e.node;return!(n.generator||t.isClassMethod(n)&&"constructor"===n.kind)}(e,Mr))return void d++;if(r&&function(e,t,n){let o=e;for(;o;){if(vr(o,t))return!0;if(n.isStatement(o.node)||n.isExportDeclaration(o.node)){if(o.parentPath&&n.isExportDeclaration(o.parentPath.node))return vr(o.parentPath,t);break}o=o.parentPath}return!1}(e,"@dd-no-instrumentation",Mr))return void c++;if(i&&!i.includes(function(e,t){if(t.isFunctionDeclaration(e))return"functionDeclaration";if(t.isArrowFunctionExpression(e))return"arrowFunction";if(t.isObjectMethod(e))return"objectMethod";if(t.isClassPrivateMethod(e))return"classPrivateMethod";if(t.isClassMethod(e))return"classMethod";return"functionExpression"}(e.node,Mr)))return void d++;if(s&&!hr(e,Mr))return void d++;let p=0;if(!hr(e,Mr)){const t=e.parentPath?.node;t&&(p=y.get(t)||0,y.set(t,p+1))}const w=gr(n,o,e,p,Mr);try{const t=e.node,n=b++,o=`$dd_p${n}`,r=function(e,t){const n=[];for(const o of e.params)for(const e of jr(o,t))"this"!==e&&n.push(e);return n.length>25?n.slice(0,25):n}(t,Mr),i=$r(t,Mr),s=Mr.isArrowFunctionExpression(t)&&!Mr.isBlockStatement(t.body),a=s&&Mr.isSequenceExpression(t.body),c=function(e,t){if(t.isFunction(e.node)&&!t.isArrowFunctionExpression(e.node))return;let n=e.parentPath;for(;n;){const e=n.node;if(t.isClassMethod(e)&&"constructor"===e.kind){if(!Vr(n,t))return;return{node:e,parent:n.parent,parentPath:n.parentPath}}if(t.isFunction(e)){if(t.isArrowFunctionExpression(e)){n=n.parentPath;continue}return}n=n.parentPath}return}(e,Mr),d=null!=c;c&&(g.add(c.node),m.set(c.node,c.node.body.start));const l=[],p=s||!Mr.isBlockStatement(t.body)||!Kr(t.body.body,Mr);let h;if(!s&&Mr.isBlockStatement(t.body)&&Wr(t.body.body,l,Mr),!s&&Mr.isBlockStatement(t.body)&&t.body.directives.length>0){h=t.body.directives[t.body.directives.length-1].end}f.push({bodyStart:t.body.start,bodyEnd:t.body.end,functionEnd:t.end,isExpressionBody:s,hasSequenceExpressionBody:a,aliasesExpressionBodySuperCall:d&&s&&Br(t.body,Mr),needsTrailingReturn:p,useThisAlias:d,bodyParenStart:s&&"number"==typeof t.body.extra?.parenStart?t.body.extra.parenStart:void 0,directivesEnd:h,functionId:w,probeVarName:o,probeIdx:String(n),entryVars:r,localVars:i,returns:l}),u++}catch(e){a++}}}),0===u)return{code:t,failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:0,skippedUnsupportedCount:d,totalFunctions:l};const w=new Cr(t),v=function(e){const t=new Set;for(const n of e)n.aliasesExpressionBodySuperCall&&t.add(zr({start:n.bodyStart,end:n.bodyEnd}));return t}(f),$=function(e,t,n,o){const r=[];for(const i of e){const e=t.get(i);null!=e&&r.push({bodyStart:e,superCalls:(n.get(i)??[]).filter((e=>!o.has(zr(e))))})}return r}(g,m,h,v);for(let e=f.length-1;e>=0;e--)_r(w,t,f[e]);for(const e of $)Fr(w,t,e);return{code:w.toString(),map:w.generateMap({source:n,hires:!0}),failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:0,skippedUnsupportedCount:d,totalFunctions:l}}function _r(e,t,n){const{probeVarName:o,probeIdx:r,functionId:i,entryVars:s,localVars:a,returns:u,bodyStart:c,bodyEnd:d,functionEnd:l,isExpressionBody:p,hasSequenceExpressionBody:f,aliasesExpressionBodySuperCall:m,useThisAlias:g,bodyParenStart:h,directivesEnd:y}=n,b=`$dd_e${r}`,w=`$dd_rv${r}`,v=g?"$dd_t":"this",$=s.join(", "),k=""!==$,x=k?`, ${b}()`:"";const E=`const ${o} = $dd_probes('${i.replace(/['\\\n\r\u2028\u2029]/g,(e=>{switch(e){case"'":return"\\'";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e}}))}');`,S=k?`const ${b} = () => ({${$}});`:"",I=`if (${o}) $dd_entry(${o}, ${v}${x});`,j=`catch(e) { if (${o}) $dd_throw(${o}, e, ${v}${x}); throw e; }`;if(p){if(null!=h){const n=function(e,t,n){const o=[];for(let r=t;r<n;r++)"("===e[r]&&o.push(r);return o}(t,h,c),o=function(e,t,n){const o=[];for(let r=n-1;r>=t;r--)")"===e[r]&&o.push(r);return o}(t,d,l),r=Math.min(n.length,o.length);for(let t=0;t<r;t++){const r=n[t],i=o[t];e.remove(r,r+1),e.remove(i,i+1)}}const n=["{",E,S,"try {",I,m?`const ${w} = ($dd_t = `:`const ${w} = `].filter(Boolean).join("\n");let r=f?");":";";m&&(r=f?"));":");");const i=[r,`if (${o}) $dd_return(${o}, ${w}, ${v}${Ur(b,k,a,d)});`,`return ${w};`,`} ${j}`,"}"].join("\n");if(d-c>=2){const o=f?`${n}(${t[c]}`:n+t[c];e.update(c,c+1,o),e.update(d-1,d,t[d-1]+i)}else e.update(c,d,n+t.slice(c,d)+i)}else{const r=[E,S,"try {",`let ${w};`,I].filter(Boolean).join("\n");for(const t of u){const n=Ur(b,k,a,t.start);if(null!=t.argStart&&null!=t.argEnd){const r=t.hasSequenceExpressionArgument?`(${w} = (`:`(${w} = `,i=t.hasSequenceExpressionArgument?")":"";e.appendLeft(t.argStart,r),e.appendLeft(t.argEnd,`${i}, ${o} ? $dd_return(${o}, ${w}, ${v}${n}) : ${w})`)}else e.appendLeft(t.start,`if (${o}) $dd_return(${o}, undefined, ${v}${n}); `)}if(null!=y){const n=y-1;e.update(n,y,`${t[n]}\n${r}`)}else e.update(c,c+1,`${t[c]}${r}`);const i=Ur(b,k,a,d),s=`\n${n.needsTrailingReturn?`if (${o}) $dd_return(${o}, undefined, ${v}${i});\n`:""}} ${j}\n`;e.update(d-1,d,`${s}${t[d-1]}`)}}function Fr(e,t,n){e.update(n.bodyStart,n.bodyStart+1,`${t[n.bodyStart]}let $dd_t;`);for(const t of n.superCalls)e.appendLeft(t.start,"($dd_t = "),e.appendLeft(t.end,")")}function Lr(e,t,n){Br(e,n)&&t.push({start:e.start,end:e.end});const o=Object.values(e);for(const e of o)if(Array.isArray(e))for(const o of e)qr(o,t,n);else qr(e,t,n)}function qr(e,t,n){n.isNode(e)&&(n.isFunction(e)&&!n.isArrowFunctionExpression(e)||Lr(e,t,n))}function zr(e){return`${e.start}:${e.end}`}function Br(e,t){return t.isCallExpression(e)&&t.isSuper(e.callee)}function Vr(e,t){const n=e.parentPath?.parentPath;if(!n)return!1;const o=n.node;return(t.isClassDeclaration(o)||t.isClassExpression(o))&&null!=o.superClass}function Ur(e,t,n,o){const r=function(e,t){const n=e.filter((({declarationEnd:e,temporalDeadZones:n})=>e<=t&&!function(e,t){return e.some((({start:e,end:n})=>e<=t&&t<n))}(n,t))).map((({name:e})=>e));if(0===n.length)return;return`{${n.join(", ")}}`}(n,o);return t&&r?`, ${e}(), ${r}`:t?`, ${e}()`:r?`, undefined, ${r}`:""}function Wr(e,t,n){for(const o of e)if(n.isReturnStatement(o))t.push({start:o.start,end:o.end,argStart:o.argument?.start??void 0,argEnd:o.argument?.end??void 0,hasSequenceExpressionArgument:n.isSequenceExpression(o.argument)});else if(!n.isFunctionDeclaration(o)&&!n.isClassDeclaration(o))if(n.isBlockStatement(o))Wr(o.body,t,n);else if(n.isIfStatement(o))Wr([o.consequent],t,n),o.alternate&&Wr([o.alternate],t,n);else if(n.isForStatement(o)||n.isForInStatement(o)||n.isForOfStatement(o)||n.isWhileStatement(o)||n.isDoWhileStatement(o))Wr([o.body],t,n);else if(n.isSwitchStatement(o))for(const e of o.cases)Wr(e.consequent,t,n);else n.isTryStatement(o)?(Wr(o.block.body,t,n),o.handler&&Wr(o.handler.body.body,t,n),o.finalizer&&Wr(o.finalizer.body,t,n)):(n.isLabeledStatement(o)||n.isWithStatement(o))&&Wr([o.body],t,n)}function Kr(e,t){if(0===e.length)return!1;const n=e[e.length-1];if(t.isReturnStatement(n))return!0;if(t.isIfStatement(n)&&n.alternate){const e=t.isBlockStatement(n.consequent)?n.consequent.body:[n.consequent],o=t.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];return Kr(e,t)&&Kr(o,t)}return!1}const Hr=["functionDeclaration","functionExpression","arrowFunction","objectMethod","classMethod","classPrivateMethod"],Jr=t.bold.red,Gr=Number(process.env.DD_LD_LIMIT)||1/0,Yr=(e,t)=>{const n=t.getLogger(dr);let o=0,r=0,i=0,s=0,a=0,u=0,c=0,d=0;return{name:dr,enforce:"post",transform:{filter:{id:{include:e.include,exclude:e.exclude}},handler(l,p){if(e.include.length>0){if(!e.include.some((e=>"string"==typeof e?p.includes(e):e.test(p))))return{code:l}}for(const t of e.exclude){if("string"==typeof t?p.includes(t):t.test(p))return{code:l}}if(d>=Gr)return{code:l};try{const f=Rr({code:l,filePath:p,buildRoot:t.buildRoot,honorSkipComments:e.honorSkipComments,functionTypes:e.functionTypes,namedOnly:e.namedOnly});if(o+=f.instrumentedCount,c+=f.totalFunctions,r+=f.failedCount,i+=f.skippedByCommentCount,s+=f.skippedFileCount,a+=f.skippedUnsupportedCount,f.totalFunctions>0&&d++,0===f.instrumentedCount)return{code:l};u++;const m=function(e){const t=e.getNativeBuildContext?.();return t?.inputSourceMap}(this),g=f.map&&m?function(e,t,n,o){try{return w(e,((e,n)=>1===n.depth?t:null))}catch(t){return o.error(`Failed to compose source map for ${n}: ${t}`,{forward:!0}),e}}(f.map,m,p,n):f.map;return{code:f.code,map:g}}catch(e){return n.error(`Instrumentation Error in ${p}: ${e}`,{forward:!0}),{code:l}}}},buildEnd:()=>{c>0&&n.info(`Live Debugger: ${o}/${c} functions instrumented across ${u}/${d} files`,{forward:!0,context:{failedCount:r,skippedByCommentCount:i,skippedFileCount:s,skippedUnsupportedCount:a,totalFilesWithFunctions:d,instrumentedCount:o,totalFunctions:c,transformedFileCount:u}})}}},Qr=({options:e,context:t})=>{const n=((e,t)=>{const n=e[cr]||{},o=e.metadata?.version,r=[];if(void 0!==n.include)if(Array.isArray(n.include)){for(const e of n.include)if("string"!=typeof e&&!(e instanceof RegExp)){r.push(`${Jr("include")} patterns must be strings or RegExp`);break}}else r.push(`${Jr("include")} must be an array of strings or RegExp`);if(void 0!==n.exclude)if(Array.isArray(n.exclude)){for(const e of n.exclude)if("string"!=typeof e&&!(e instanceof RegExp)){r.push(`${Jr("exclude")} patterns must be strings or RegExp`);break}}else r.push(`${Jr("exclude")} must be an array of strings or RegExp`);if(void 0!==n.honorSkipComments&&"boolean"!=typeof n.honorSkipComments&&r.push(`${Jr("honorSkipComments")} must be a boolean`),void 0!==n.functionTypes)if(Array.isArray(n.functionTypes)){for(const e of n.functionTypes)if(!Hr.includes(e)){r.push(`${Jr("functionTypes")} contains invalid value "${e}". Valid values: ${Hr.join(", ")}`);break}}else r.push(`${Jr("functionTypes")} must be an array of FunctionKind values`);if(void 0!==n.namedOnly&&"boolean"!=typeof n.namedOnly&&r.push(`${Jr("namedOnly")} must be a boolean`),r.length)throw t.error(`\n - ${r.join("\n - ")}`),new Error(`Invalid configuration for ${dr}.`);return{version:o,include:n.include||[/\.[jt]sx?$/],exclude:n.exclude||[/\/node_modules\//,/\.min\.js$/,/\/pyodide-lib\//,/^vite\//,/\0/,/commonjsHelpers\.js$/,/__vite-browser-external/,/@datadog\/browser-/,/browser-sdk\/packages\//],honorSkipComments:n.honorSkipComments??!0,functionTypes:n.functionTypes,namedOnly:n.namedOnly??!1}})(e,t.getLogger(dr));return t.inject({type:"code",position:xe.BEFORE,injectIntoAllChunks:!0,value:fr(n.version)}),[Yr(n,t)]};const Xr=[e=>/modules\.tree\.(count|size)$/.test(e.metric)?null:e,e=>e.tags.some((e=>/^assetName:.*\.map$/.test(e)||/^moduleName:\/node_modules/.test(e)))?null:e,e=>{const t={size:1e5,count:10,duration:1e3};/^sourcemaps\.upload\.(failure|retry)$/.test(e.metric)&&(t.count=0),/(entries|loaders|warnings|errors)\.count$/.test(e.metric)&&(t.count=0),/(modules\.(dependencies|dependents)$)/.test(e.metric)&&(t.count=30),/modules\.tree\.count$/.test(e.metric)&&(t.count=150),/modules\.tree\.size$/.test(e.metric)&&(t.size=15e5),/entries\.size$/.test(e.metric)&&(t.size=0),/entries\.modules\.count$/.test(e.metric)&&(t.count=0);return(e.points.length?e.points.reduce(((e,t)=>e+t[1]),0)/e.points.length:0)>t[e.type]?e:null}],Zr="metrics",ei="datadog-metrics-plugin",ti=e=>Math.floor((e||Date.now())/1e3),ni=(e,t)=>{const n=[`bundler:${Y(e.bundler.name)}`,`plugin_version:${Y(e.version)}`,`site:${Y(e.auth.site)}`];return e.build.metadata.name&&n.push(`build_name:${Y(e.build.metadata.name)}`),e.build.metadata.version&&n.push(`build_version:${Y(e.build.metadata.version)}`),[...n,...t]},oi=(e,t,n)=>({...e,tags:[...e.tags,...t],metric:n?`${n}.${e.metric}`:e.metric}),ri=(e,t,n,o,r)=>{const i=new Set;for(const t of e){let e={...t,toSend:!0};if(n?.length)for(const t of n){const n=t({metric:e.metric,type:e.type,points:e.points,tags:e.tags});n?e={...n,toSend:e.toSend}:e.toSend=!1}i.add(oi(e,o,r))}const s=Array.from(i).filter((e=>e.toSend)).length;return i.add(oi({metric:"metrics.count",type:"count",points:[[t,s+1]],tags:[],toSend:!0},o,r)),i},ii=(e="")=>e.endsWith("/")?e:`${e}/`,si=(e,t)=>{let n=e;return e.split(ii(t)),n.split("!").pop().replace(/(.*)?\/node_modules\//,"/node_modules/").replace(/^((\.)*\/)+/,"")},ai=(e,t)=>e.split("!").pop().replace(ii(t),"./"),ui=(e,t,n)=>{let o=e.name||e.userRequest;return o||(o=((e,t)=>{let n=e.userRequest;if(!n){let o;o=t.moduleGraph&&"function"==typeof t.moduleGraph.getIssuer?t.moduleGraph.getIssuer(e):e.issuer,n=o?.userRequest,n||(n=e._identifier?.split("!").pop())}return n||"unknown"})(e,t)),ai(o||"no-name",n)},ci=e=>e.replace(/^.*\/node_modules\/(@[a-z0-9][\w-.]+\/[a-z0-9][\w-.]*|[^/]+).*$/,"$1"),di=e=>e.map((e=>({type:e?.constructor?.name??typeof e,name:e?.name,value:"string"==typeof e?e:void 0}))),li=t.bold.red,pi=t.bold.cyan,fi=e=>(t,n)=>{let o,r;return"function"==typeof e?(o=e(t),r=e(n)):(o=t[e],r=n[e]),o>r?-1:o<r?1:0},mi=(e,t)=>{if(!t||!t.size)return[];const n=Array.from(t.values());n.sort(fi("duration"));const o={name:`${e} duration`,values:n.map((e=>({name:e.name,value:H(e.duration)}))),top:!0};n.sort(fi("increment"));return[o,{name:`${e} hits`,values:n.map((e=>({name:e.name,value:e.increment.toString()}))),top:!0}]},gi=(e,t,n)=>{const o=[];var r;n&&(o.push(...mi("Loader",n.loaders)),o.push(...mi("Tapable",n.tapables)),o.push(...mi("Module",n.modules))),o.push(...(e=>{const t={name:"Module total dependents",values:[],top:!0},n={name:"Module total dependencies",values:[],top:!0},o={name:"Module size",values:[],top:!0},r={name:"Module aggregated size",values:[],top:!0},i=new Set,s=W(e.build),a=new Map,u=new Map,c=new Map;for(const e of s.inputs||[]){if("map"===e.type)continue;const t=new Set(e.dependencies),n=new Set(e.dependents);for(const n of t)c.has(n)||c.set(n,new Set),c.get(n).add(e.filepath);for(const t of n)u.has(t)||u.set(t,new Set),u.get(t).add(e.filepath);if(u.has(e.filepath)){const n=u.get(e.filepath);for(const e of n)t.add(e)}if(c.has(e.filepath)){const t=c.get(e.filepath);for(const e of t)n.add(e)}u.set(e.filepath,t),c.set(e.filepath,n),a.set(e.filepath,{name:e.name,size:e.size,dependencies:t,dependents:n})}for(const[e,t]of a){const n=u.get(e)||new Set,o=c.get(e)||new Set;let r=t.size;for(const e of n)r+=a.get(e)?.size||0;i.add({name:t.name,size:t.size,aggregatedSize:r,dependents:o,dependencies:n})}if(!i.size)return[t,n,o];const d=Array.from(i);return d.sort(fi((e=>e.dependents.size))),t.values=d.map((e=>({name:e.name,value:e.dependents.size.toString()}))),d.sort(fi((e=>e.dependencies.size))),n.values=d.map((e=>({name:e.name,value:e.dependencies.size.toString()}))),d.sort(fi("size")),o.values=d.map((e=>({name:e.name,value:v(e.size)}))),d.sort(fi("aggregatedSize")),r.values=d.map((e=>({name:e.name,value:v(e.aggregatedSize||e.size)}))),[t,n,o,r]})(e)),o.push(...(r=e,[{name:"Asset size",values:(r.build.outputs||[]).filter((e=>"map"!==e.type)).sort(fi((e=>e.size))).map((e=>({name:e.name,value:v(e.size)}))),top:!0},{name:"Entry aggregated size",values:(r.build.entries||[]).sort(fi((e=>e.size))).map((e=>({name:e.name,value:v(e.size)}))),top:!0},{name:"Entry number of modules",values:(r.build.entries||[]).sort(fi((e=>e.size))).map((e=>({name:e.name,value:e.inputs.length.toString()})))||[],top:!0}])),o.push(...(e=>{const t={name:"General Numbers",values:[],top:!1},n=e.build.inputs?e.build.inputs.length:0,o=e.build.outputs?e.build.outputs.length:0,r=e.build.warnings.length,i=e.build.errors.length,s=e.build.entries?e.build.entries.length:0;return e.build.start&&t.values.push({name:"Overhead duration",value:H(e.build.start-e.start)}),e.build.duration&&t.values.push({name:"Build duration",value:H(e.build.duration)}),e.build.writeDuration&&t.values.push({name:"Write duration",value:H(e.build.writeDuration)}),t.values.push({name:"Number of modules",value:n.toString()},{name:"Number of assets",value:o.toString()},{name:"Number of entries",value:s.toString()},{name:"Number of warnings",value:r.toString()},{name:"Number of errors",value:i.toString()}),[t]})(e));const i=(e=>{let t="";for(const t of e){t.top&&t.values.length>=5&&(t.values=t.values.slice(0,5),t.name=`Top 5 ${t.name}`);for(const e of t.values)e.name=J(e.name,60)}const n=Math.max(...e.map((e=>e.name.length))),o=Math.max(...e.flatMap((e=>e.values.map((e=>e.name.length))))),r=Math.max(...e.flatMap((e=>e.values.map((e=>e.value.length))))),i=Math.max(n+4,o+r+4);for(const n of e){if(0===n.values.length)continue;const e=i-(n.name.length+4);t+=`\n== ${n.name} ${"=".repeat(e)}=\n`;for(const e of n.values){const n=r-e.value.length;t+=` [${li(e.value)}] ${" ".repeat(n)}${pi(e.name)}\n`}}return t})(o);t.info(i)},hi="api/v1/series",yi=t.bold.green,bi=(e,t,n)=>{if(!t.apiKey)return void n.info("Won't send metrics to Datadog: missing API Key.");if(!e.size)return void n.debug("No metrics to send.");const o=Array.from(e).filter((e=>e.toSend)).map((e=>({...e,toSend:void 0}))),r=new Map;for(const e of o)r.has(e.metric)||r.set(e.metric,0),r.set(e.metric,r.get(e.metric)+1);const i=Array.from(r.entries()).sort((([e],[t])=>e.localeCompare(t))).map((([e,t])=>`${e} - ${t}`));return n.debug(`\nSending ${o.length} metrics with configuration:\n - intake: ${yi(`https://api.${t.site}/${hi}`)}\n\nMetrics:\n - ${i.join("\n - ")}`),z({method:"POST",url:`https://api.${t.site}/${hi}?api_key=${t.apiKey}`,getData:()=>({data:JSON.stringify({series:o})})}).catch((e=>{n.error(`Error sending metrics ${e}`)}))},wi=["onStart","onLoad","onResolve","onEnd"],vi=new Map,$i=new Map,ki=new Map,xi=(e,t,n)=>{const o=Object.assign({},e);for(const r of wi)o[r]=async(o,i)=>{const s=$i.get(t)||{name:t,increment:0,duration:0,events:{}};s.events[r]=s.events[r]||{name:r,values:[]};const a="onLoad"===r;return(0,e[r])(o,(async(...e)=>{const o=ai(e[0].path,n),u=ki.get(o)||{name:o,increment:0,duration:0,events:{}};u.events[r]=u.events[r]||{name:r,values:[]};const c=$.performance.now();try{return await i(...e)}finally{const n=$.performance.now(),i=n-c,d={start:c,end:n,duration:i,context:di(e)};if(s.events[r].values.push(d),s.duration+=i,s.increment+=1,$i.set(t,s),u.events[r].values.push(d),u.duration+=i,u.increment+=1,ki.set(o,u),a){const e=vi.get(t)||{name:t,increment:0,duration:0,events:{}};e.events[r]=e.events[r]||{name:r,values:[]},e.events[r].values.push(d),e.duration+=i,e.increment+=1,vi.set(t,e)}}}))};return o},Ei=(e,t)=>({setup:n=>{n.initialOptions.metafile=!0;const o=t.time("wrapping plugins");((e,t)=>{const n=e.initialOptions.plugins;if(n){const e=n.map((e=>({...e})));for(const o of n){const n=o.setup;o.setup=async r=>{const i=xi(r,o.name,t);await n({...i,initialOptions:{...i.initialOptions,plugins:e}})}}}})(n,e.buildRoot),o.end(),n.onEnd((async n=>{if(!n.metafile)return void t.warn("Missing metafile, can't proceed with modules data.");const o=t.time("getting plugins results"),{plugins:r,loaders:i,modules:s}={plugins:$i,modules:ki,loaders:vi};o.end(),await e.asyncHook("timings",{tapables:r,loaders:i,modules:s})}))}});class Si{constructor(e){this.started={},this.finished=[],this.cwd=e}startModule(e,t){const n=ui(e,t,this.cwd),o=(e=>(e.loaders||[]).map((e=>e.loader||e)).map(ci))(e);o.length||o.push("no-loader"),this.started[n]={module:si(n),timings:{start:$.performance.now(),duration:0,end:0},loaders:o}}doneModule(e,t){const n=ui(e,t,this.cwd),o=this.started[n];o&&(o.timings.end=$.performance.now(),o.timings.duration=o.timings.end-o.timings.start,this.finished.push(o),delete this.started[n])}getResults(){const e=new Map,t=new Map;for(const n of this.finished){const o=n.timings.end-n.timings.start,r=t.get(n.module)||{name:n.module,increment:0,duration:0,events:{}},i=n.loaders.join(",");r.events[i]=r.events[i]||{name:i,values:[]},r.events[i].values.push(n.timings),r.increment+=1,r.duration+=o,t.set(n.module,r);for(const t of n.loaders){const n=e.get(t)||{name:t,increment:0,duration:0,events:{}};n.increment+=1,n.duration+=o,e.set(t,n)}}return{loaders:e,modules:t}}}class Ii{constructor(e){this.monitoredTaps={},this.tapables=[],this.hooks={},this.timings=new Map,this.ignoredHooks=["normalModuleLoader"],this.cwd=e}saveResult(e,t,n,o,r,i){const s=this.timings.get(t)||{name:t,duration:0,increment:0,events:{}};s.events[n]||(s.events[n]={name:n,values:[]}),s.events[n].values.push({start:r,end:i,duration:i-r,context:o,type:e}),s.duration+=i-r,s.increment+=1,this.timings.set(t,s)}getResults(){const e=this.timings;for(const[t,n]of this.timings){const o=n;o.duration=Object.values(n.events).map((e=>e.values.reduce(((e,t)=>e+t.end-t.start),0))).reduce(((e,t)=>e+t),0),e.set(t,o)}return{monitoredTaps:this.monitoredTaps,tapables:this.tapables,hooks:this.hooks,timings:e}}getPromiseTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=$.performance.now(),s=t.apply(this,r),a=()=>{this.saveResult(e,n,o,di(r),i,$.performance.now())};return s.then(a,a),s}}getAsyncTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=$.performance.now(),s=r.pop();return t.apply(this,[...r,(...t)=>(this.saveResult(e,n,o,di(r),i,$.performance.now()),s(...t))])}}getDefaultTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=$.performance.now(),s=t.apply(this,r);return this.saveResult(e,n,o,di(r),i,$.performance.now()),s}}getTapPatch(e,t,n,o){switch(e){case"promise":return this.getPromiseTapPatch(e,t,n,o);case"async":return this.getAsyncTapPatch(e,t,n,o);default:return this.getDefaultTapPatch(e,t,n,o)}}newTap(e,t,n,o){return(r,i)=>{const s="string"==typeof(a=r)?a:a.name;var a;const u=`${t}-${s}`;if(this.monitoredTaps[u])return n.call(o,r,i);this.monitoredTaps[u]=!0;const c=this.getTapPatch(e,i,s,t);return n.call(o,r,c)}}replaceTaps(e,t){t.tap=this.newTap("default",e,t.tap,t),t.tapAsync=this.newTap("async",e,t.tapAsync,t),t.tapPromise=this.newTap("promise",e,t.tapPromise,t)}patchHook(e,t,n){n._fakeHook||e.includes(ei)||(this.hooks[e]||(this.hooks[e]=[]),this.hooks[e].includes(t)||(this.hooks[e].push(t),this.replaceTaps(t,n)))}patchHooks(e){const t=e.constructor.name,n=Object.keys(e.hooks).filter((e=>!this.ignoredHooks.includes(e)&&!this.hooks[t]?.includes(e)));for(const o of n)this.patchHook(t,o,e.hooks[o])}checkNewHooks(){for(const e of this.tapables)this.patchHooks(e)}throughHooks(e){this.tapables.includes(e)||this.tapables.push(e),this.patchHooks(e)}}const ji=e=>async t=>{const n=e.getLogger(ei),o={name:ei},r=new Ii(e.buildRoot),i=new Si(e.buildRoot),s=n.time("parse compiler hooks");r.throughHooks(t),s.end(),t.hooks.thisCompilation.tap(o,(e=>{const t=n.time("parse compilation hooks");r.throughHooks(e),t.end(),e.hooks.buildModule.tap(o,(t=>{i.startModule(t,e)})),e.hooks.succeedModule.tap(o,(t=>{i.doneModule(t,e)})),e.hooks.failedModule&&e.hooks.failedModule.tap(o,(t=>{i.doneModule(t,e)}))})),t.hooks.afterEmit.tapPromise(o,(async()=>{const{timings:t}=r.getResults(),{loaders:n,modules:o}=i.getResults();await e.asyncHook("timings",{tapables:t,loaders:n,modules:o})}))},Ai={filters:Xr},Di=({options:e,context:t,stores:n})=>{const o=t.getLogger(ei);let r=0;((e,t)=>{e.addMetric=e=>{t.metrics.add(e)}})(t,n);const i=((e,t)=>{const n=e[Zr],o=ti(n?.timestamp);let r=!1===n?.enableDefaultPrefix?"":`build.${t}`;return n?.prefix&&(r+=r?`.${n.prefix}`:n.prefix),{enableDefaultPrefix:!0,enableTracing:!1,filters:Xr,tags:[],...e[Zr],timestamp:o,prefix:r.toLowerCase().replace(/(^\.*|\.*$)/g,"")}})(e,t.bundler.name),s=[],a={name:ei,enforce:"pre",esbuild:Ei(t,o),webpack:ji(t),rspack:ji(t)},u=o.time("build",{start:!1}),c=i.enableTracing&&["esbuild","webpack","rspack"].includes(t.bundler.name);let d,l;const p=async()=>{if(!n.metrics.size)return;const e=o.time("aggregating collected metrics"),r=(()=>{const e=new Set(n.metrics);n.metrics.clear();const o=ni(t,i.tags);return ri(e,i.timestamp,i.filters,o,i.prefix)})();await t.asyncHook("metrics",r),e.end();const s=o.time("sending collected metrics to Datadog");await bi(r,{apiKey:t.auth.apiKey,site:t.auth.site},o),s.end()},f=async()=>{t.build.end=Date.now(),t.build.duration=t.build.end-t.build.start,t.build.writeDuration=t.build.end-r;const e=o.time("aggregating metrics"),n=i.timestamp,s=o.time("aggregate universal metrics"),a=((e,t)=>{const n=new Set,o=e.inputs||[],r=e.outputs||[],i=e.entries||[],s=e.warnings.length,a=e.errors.length,u=e.duration,c=new Map,d=new Map,l=new Map;for(const e of i){for(const t of e.inputs)c.has(t.filepath)||c.set(t.filepath,[]),c.get(t.filepath).push(e.name);for(const t of e.outputs){const n=t.filepath.replace(/\.map$/,"");l.has(n)||l.set(n,[]),l.get(n).push(e.name)}}for(const e of r)for(const t of e.inputs)d.has(t.filepath)||d.set(t.filepath,[]),d.get(t.filepath).push(e.name);n.add({metric:"assets.count",type:"count",points:[[t,r.length]],tags:[]}).add({metric:"entries.count",type:"count",points:[[t,i.length]],tags:[]}).add({metric:"errors.count",type:"count",points:[[t,a]],tags:[]}).add({metric:"modules.count",type:"count",points:[[t,o.length]],tags:[]}).add({metric:"warnings.count",type:"count",points:[[t,s]],tags:[]}),u&&n.add({metric:"compilation.duration",type:"duration",points:[[t,u]],tags:[]});for(const e of o){const o=[`moduleName:${e.name}`,`moduleType:${e.type}`];c.has(e.filepath)&&o.push(...c.get(e.filepath).map((e=>`entryName:${e}`))),d.has(e.filepath)&&o.push(...d.get(e.filepath).map((e=>`assetName:${e}`))),n.add({metric:"modules.size",type:"size",points:[[t,e.size]],tags:o}).add({metric:"modules.dependencies",type:"count",points:[[t,e.dependencies.size]],tags:o}).add({metric:"modules.dependents",type:"count",points:[[t,e.dependents.size]],tags:o})}for(const e of r){const o=[`assetName:${e.name}`,`assetType:${e.type}`],r=e.filepath.replace(/\.map$/,"");l.has(r)&&o.push(...l.get(r).map((e=>`entryName:${e}`))),n.add({metric:"assets.size",type:"size",points:[[t,e.size]],tags:o}).add({metric:"assets.modules.count",type:"count",points:[[t,e.inputs.length]],tags:o})}for(const e of i){const o=[`entryName:${e.name}`];n.add({metric:"entries.size",type:"size",points:[[t,e.size]],tags:o}).add({metric:"entries.modules.count",type:"count",points:[[t,e.inputs.length]],tags:o}).add({metric:"entries.assets.count",type:"count",points:[[t,e.outputs.length]],tags:o})}return n})(l,n);s.end();const u=o.time("aggregate plugins metrics"),c=((e,t)=>{const n=new Set;if(!e)return n;n.add({metric:"plugins.count",type:"count",points:[[t,e.size]],tags:[]});for(const o of e.values()){let e=0,r=0;for(const i of Object.values(o.events)){let s=0;r+=i.values.length;for(const t of i.values){const n=t.end-t.start;s+=n,e+=n}n.add({metric:"plugins.hooks.duration",type:"duration",points:[[t,s]],tags:[`pluginName:${o.name}`,`hookName:${i.name}`]}).add({metric:"plugins.hooks.increment",type:"count",points:[[t,i.values.length]],tags:[`pluginName:${o.name}`,`hookName:${i.name}`]})}n.add({metric:"plugins.duration",type:"duration",points:[[t,e]],tags:[`pluginName:${o.name}`]}).add({metric:"plugins.increment",type:"count",points:[[t,r]],tags:[`pluginName:${o.name}`]})}return n})(d?.tapables,n);u.end();const p=o.time("aggregate loaders metrics"),f=((e,t)=>{const n=new Set;if(!e)return n;n.add({metric:"loaders.count",type:"count",points:[[t,e.size]],tags:[]});for(const o of e.values())n.add({metric:"loaders.duration",type:"duration",points:[[t,o.duration]],tags:[`loaderName:${o.name}`]}).add({metric:"loaders.increment",type:"count",points:[[t,o.increment]],tags:[`loaderName:${o.name}`]});return n})(d?.loaders,n);p.end();const m=new Set([...a,...c,...f]),g=ni(t,i.tags),h=ri(m,n,i.filters,g,i.prefix);await t.asyncHook("metrics",h),e.end();const y=o.time("outputing report");gi(t,o,d),y.end();const b=o.time("sending metrics to Datadog");await bi(h,{apiKey:t.auth.apiKey,site:t.auth.site},o),b.end()},m={name:"datadog-universal-metrics-plugin",enforce:"post",buildStart(){u.resume(),t.build.start=t.build.start||Date.now(),e[Zr]?.timestamp||(i.timestamp=ti(t.build.start))},buildEnd(){u.end(),r=Date.now()},async timings(e){d=e,l&&await f()},async buildReport(e){l=e,!d&&c||await f()},async flush(){await p()}};return i.enableTracing&&s.push(a),s.push(m),s},Pi="output",Mi="datadog-output-plugin",Ci=(e,t)=>"string"==typeof t?t.replace(/(\.json)?$/,".json"):!0===t?`${e}.json`:t,Oi=e=>{const t=void 0===e;return{build:Ci("build",e?.build??t),bundler:Ci("bundler",e?.bundler??t),dependencies:Ci("dependencies",e?.dependencies??t),errors:Ci("errors",e?.errors??t),logs:Ci("logs",e?.logs??t),metrics:Ci("metrics",e?.metrics??t),timings:Ci("timings",e?.timings??t),warnings:Ci("warnings",e?.warnings??t)}},Ni=(e,t)=>n=>{n.hooks.done.tap("bundler-outputs",(n=>{t((()=>{const t=e.time("stats serialization"),o=n.toJson({all:!1,assets:!0,children:!0,chunks:!0,chunkGroupAuxiliary:!0,chunkGroupChildren:!0,chunkGroups:!0,chunkRelations:!0,entrypoints:!0,errors:!0,ids:!0,modules:!0,nestedModules:!0,relatedAssets:!0,warnings:!0,reasons:!1,chunkModules:!1});return t.end(),o}))}))},Ti=e=>{const t=new Set;return{buildStart(){t.clear()},writeBundle(e,n){t.add(n)},closeBundle(){e((()=>Array.from(t)))}}},Ri=({options:e,context:t})=>{const n=t.getLogger(Mi),o=(e=>({path:"./",...e[Pi],files:Oi(e[Pi]?.files)}))(e),r=(e,r)=>{const u=o.files[e];if(!r||!1===u)return;t.queue((async()=>{const e=n.time(`output ${u}`),c=((e,t,n)=>{const o=a.isAbsolute(t)?t:a.resolve(e,t);return a.resolve(o,n)})(t.bundler.outDir,o.path,u);let d;try{const e="function"==typeof r?await r():r;await(async(e,t)=>{await ye(a.dirname(e));const n=i.createWriteStream(e),o=new s.JsonStreamStringify(t,void 0,2),r=new Promise(((e,t)=>{o.on("end",(()=>{e()})),o.on("error",(e=>{t(e)}))}));return o.pipe(n),r})(c,e)}catch(e){d=e}d?n.error(`Failed writing ${u}: ${d}`):n.debug(`Wrote "./${a.relative(t.buildRoot,c)}"`),e.end()})())};return[{name:Mi,buildReport(e){const t=n.time("serialize report"),o=W(e);t.end(),r("build",{bundler:o.bundler,metadata:o.metadata,start:o.start,end:o.end,duration:o.duration,writeDuration:o.writeDuration,entries:o.entries,outputs:o.outputs}),r("logs",o.logs),r("timings",o.timings),r("dependencies",o.inputs),r("errors",o.errors),r("warnings",o.warnings)},metrics(e){r("metrics",(()=>Array.from(e)))},esbuild:{setup(e){e.onEnd((e=>{r("bundler",e.metafile)}))}},rspack:Ni(n,(e=>{r("bundler",e)})),rollup:Ti((e=>{r("bundler",e)})),vite:Ti((e=>{r("bundler",e)})),webpack:Ni(n,(e=>{r("bundler",e)}))}]},_i="rum",Fi="datadog-rum-plugin",Li=["8","9","a","b"],qi=(e,t)=>{let n;e.debugId&&(n=t?(e=>{const t=l.createHash("sha256").update(e).digest("hex").slice(0,32),n=`${t.slice(0,12)}4${t.slice(13)}`,o=n.charCodeAt(16)%4,r=`${n.slice(0,16)}${Li[o]}${n.slice(17)}`;return[r.slice(0,8),r.slice(8,12),r.slice(12,16),r.slice(16,20),r.slice(20,32)].join("-")})(t.sourceOrHash):l.randomUUID());const o={ddDebugId:n,service:e.service,version:e.version};return{code:`(function(c,n){try{if(typeof window==='undefined')return;var w=window,m=w[n]=w[n]||{},s=new Error().stack;s&&(m[s]=c)}catch(e){}})(${JSON.stringify(o)},${JSON.stringify("DD_SOURCE_CODE_CONTEXT")});`,debugId:n}},zi="datadog-rum-privacy-plugin";const Bi=(e,t)=>{const n=t.getLogger(zi),o=function(e,t){const n={privacy:{addToDictionaryHelper:{expression:{code:e}}}};return["esbuild","webpack","rspack"].includes(t)&&(n.output={...n.output,inlineSourceMap:!1,embedCodeInSourceMap:!0}),n}(e.helperCodeExpression,t.bundler.name);let r=0,i=0;return{name:zi,enforce:"post",transform:{filter:{id:{include:e.include,exclude:e.exclude}},handler(e,t){try{const n=function(e){if("rspack"===e?.framework||"webpack"===e?.framework)switch(typeof e.inputSourceMap){case"undefined":return;case"string":return e.inputSourceMap;default:return JSON.stringify(e.inputSourceMap)}}(this.getNativeBuildContext?.()),s=k.instrument({id:t,code:e,map:n},o);return 0===s.privacyDictionarySize?{code:e}:(r+=s.privacyDictionarySize,i++,s)}catch(t){return n.error(`Instrumentation Error: ${t}`,{forward:!0}),{code:e}}}},buildEnd:()=>{n.debug(`Privacy dictionary will include ${r} entries across ${i} files`,{forward:!0,context:{dictionaryEntryCount:r,fileCount:i}})}}},Vi=e=>`DD_RUM.init({${JSON.stringify(e.sdk).replace(/(^{|}$)/g,"")}});\n`,Ui=(e,t)=>{const n=e.sdk;if(n.clientToken)return Vi(e);if(!t.auth.apiKey||!t.auth.appKey)throw new Error('Missing "auth.apiKey" and/or "auth.appKey" to fetch "rum.sdk.clientToken".');return async()=>{let o;try{const e=await z({url:`https://api.${t.auth.site}/api/v2/rum/applications/${n.applicationId}`,type:"json",auth:t.auth});o=e.data?.attributes?.client_token}catch(e){throw new Error(`Could not fetch the clientToken: ${e.message}`)}if(!o)throw new Error("Missing clientToken in the API response.");return Vi({...e,sdk:{clientToken:o,...n}})}},Wi=e=>{const n=t.bold.red,o=e[_i]||{},r={errors:[]};if(!o.sdk)return r;o.sdk.applicationId||r.errors.push(`Missing ${n("applicationId")} in the SDK configuration.`),e.auth.apiKey&&e.auth.appKey||o.sdk.clientToken||r.errors.push(`Missing ${n('"auth.apiKey"')} and/or ${n('"auth.appKey"')} to fetch missing client token.`);const i={applicationId:"unknown_application_id",allowUntrustedEvents:!1,compressIntakeRequests:!1,defaultPrivacyLevel:"mask",enablePrivacyForActionName:!1,sessionReplaySampleRate:0,sessionSampleRate:100,silentMultipleInit:!1,site:e.auth.site||"datadoghq.com",startSessionReplayRecordingManually:!1,storeContextsAcrossPages:!1,telemetrySampleRate:20,traceSampleRate:100,trackingConsent:"granted",trackLongTasks:!1,trackResources:!1,trackUserInteractions:!1,trackViewsManually:!1};return r.config={...i,...o.sdk},r},Ki=e=>{const t=e[_i]||{},n={errors:[]};if(t.privacy){const e={exclude:[/\/node_modules\//,/\.preval\./,/^[!@#$%^&*()=+~`-]/],include:[/\.(?:c|m)?(?:j|t)sx?$/],addToDictionaryFunctionName:"$",helperCodeExpression:"/*__PURE__*/((q='$DD_A_Q',g=globalThis)=>(g[q]=g[q]||[],(v=>(g[q].push(v),v))))()"};n.config={...e,...t.privacy}}return n},Hi=e=>{const n=t.bold.red,o=e[_i]||{},r={errors:[]};if(!o.sourceCodeContext)return r;const i=o.sourceCodeContext;return i?.debugId||i?.service&&"string"==typeof i.service||r.errors.push(`Missing ${n('"rum.sourceCodeContext.service"')}.`),r.config={...i,version:i.version||e.metadata?.version},r},Ji=({options:e,context:t})=>{const n=((e,t)=>{const n=[],o=Wi(e),r=Ki(e),i=Hi(e);if(n.push(...o.errors),n.push(...r.errors),n.push(...i.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${Fi}.`);const s={...e[_i],sdk:void 0,privacy:void 0,sourceCodeContext:void 0};return o.config&&(s.sdk=o.config),r.config&&(s.privacy=r.config,t.debug(`datadog-rum-privacy plugin options: ${JSON.stringify(s.privacy,((e,t)=>t instanceof RegExp?t.toString():t))}`,{forward:!0})),i.config&&(s.sourceCodeContext=i.config),s})(e,t.getLogger(Fi)),o=[],r=n.sourceCodeContext;if(r&&t.inject({type:"code",position:xe.BEFORE,injectIntoAllChunks:!0,value:e=>{const{code:t}=qi(r,e);return t}}),n.sdk&&(t.inject({type:"file",position:xe.MIDDLE,value:a.join(__dirname,"./rum-browser-sdk.js")}),t.inject({type:"code",position:xe.MIDDLE,value:Ui(n,t)})),n.privacy){t.inject({type:"file",position:xe.BEFORE,value:a.join(__dirname,"./privacy-helpers.js")});const e=Bi(n.privacy,t);o.push(e)}return o},Gi="datadog-analytics-plugin",Yi=({context:e})=>{const t=e.getLogger(Gi);return[{name:Gi,async buildStart(){"production"===e.env&&e.queue((async()=>{try{await e.sendLog({message:"Build started",context:{plugins:e.pluginNames}})}catch(e){t.debug(`Could not submit data to Datadog: ${e}`)}})())}}]},Qi="datadog-async-queue-plugin",Xi=e=>{const{context:t,stores:n}=e,o=t.getLogger(Qi),r=[];return t.queue=e=>{const t=e.catch((e=>{r.push(e.message||e.toString())}));n.queue.push(t)},[{name:Qi,asyncTrueEnd:async()=>{await Promise.all(n.queue),r.length>0&&o.error(`Error occurred while processing async queue:\n ${r.join("\n ")}`)}}]},Zi=async(e,t,n)=>{const o=[],r=e.initialOptions.entryPoints,i=[],s=[];if(Array.isArray(r))for(const e of r){const t=e&&"object"==typeof e?e.in:e;i.push({path:t})}else r&&"object"==typeof r&&i.push(...Object.entries(r).map((([e,t])=>({name:e,path:t}))));const a=i.flatMap((e=>{return(t=e.path,t.includes("*")?m.glob.sync(t):[t]).map((t=>[e,t]));var t})).map((async([n,r])=>{const i=await e.resolve(r,{kind:"entry-point",resolveDir:t.buildRoot});i.errors.length&&s.push(...i.errors.map((e=>e.text))),i.path&&o.push({name:n.name,resolved:i.path,original:n.path})}));for(const e of s)n.error(e);return await Promise.all(a),o},es=(e,t)=>U(t)?j:t.startsWith(e)||a.isAbsolute(t)?t:a.resolve(e,t),ts=(e,t)=>{const n=[...e].map((e=>es(t||process.cwd(),e).split(a.sep))),o=n.length?Math.min(...n.map((e=>e.length))):0,r=[];for(let e=0;e<o;e++){const t=n[0][e];if(!n.every((n=>n[e]===t)))break;r.push(t)}return r.length>0&&r.join(a.sep)||a.sep},ns=/\.(?!.*(?:\.|\/|\\))(\w{1,})/g,os=/(\?|%3F|\|)+/gi,rs=e=>{return"unknown"===e?e:e.includes("webpack/runtime")?"runtime":(t=as(e),ns.lastIndex=0,ns.exec(t)?.[1]||"unknown");var t},is=["unknown","commonjsHelpers.js",`vite${a.sep}preload-helper.js`],ss=(e,t,n)=>{const o=new Set;for(const n of e){const e=as(n);U(n)||e===t||is.includes(e)||o.add(e)}return o},as=e=>e.split("!").pop().split(os).shift().replace(/^[^\w\s.,!@#$%^&*()=+~`\-/\\]+/,""),us=(e,t)=>U(t)?j:"unknown"===t?t:t.includes("webpack/runtime")?t.replace("webpack/runtime/","").replace(/ +/g,"-"):((e,t)=>{const n=t.split(a.sep),o=e.split(a.sep).filter(((e,t)=>e===n[t])).join(a.sep);return e.replace(o,"")})(t.split("!").pop(),e).split("node_modules").pop().split(os).shift().replace(/^((\.\.?)?[/\\])+/g,""),cs=(e,t)=>Object.fromEntries(Object.entries(e).map((([e,n])=>[es(t,e),n]))),ds=(e,t)=>({setup(n){const o=new Map;let r=[];const i=t.time("build report",{start:!1});n.onStart((async()=>{o.clear(),r=[],i.resume();const s=t.time("process entries");r.push(...await Zi(n,e,t));for(const t of r){const n=us(e.bundler.outDir,t.resolved);t.name?o.set(n,t.name):o.set(n,n)}s.end(),i.pause()})),n.onEnd((async n=>{i.resume();const r=t.time("collecting errors and warnings"),s=e.bundler.outDir,u=e.buildRoot;for(const t of n.errors)e.build.errors.push(t.text);for(const t of n.warnings)e.build.warnings.push(t.text);if(r.end(),!n.metafile){const n="Missing metafile from build report.";return e.build.warnings.push(n),void t.warn(n)}const c=[],d=[],l=[],p=[],f=[],m={},g={},h=t.time("indexing metafile data"),y=cs(n.metafile.inputs,u),b=cs(n.metafile.outputs,u);h.end();const w=e=>{if(!U(e))return e;const t=y[es(u,e)];if(!t)return e;const n=t.imports.find((e=>!U(e.path)));return n?n.path:e},v=t.time("looping through inputs");for(const[e,t]of Object.entries(n.metafile.inputs)){if(U(e))continue;const n=es(u,e),o={name:us(s,e),filepath:n,dependents:new Set,dependencies:new Set,size:t.bytes,type:rs(e)};m[n]=o,c.push(o)}v.end();const $=t.time("looping through outputs");for(const[e,r]of Object.entries(n.metafile.outputs)){const n=es(u,e),i=us(s,n),a=[];for(const e of Object.keys(r.inputs)){if(U(e))continue;const n=m[es(u,e)];n?a.push(n):t.debug(`Input ${e} not found for output ${i}`)}if(r.entryPoint&&!a.length){const e=m[es(u,r.entryPoint)];if(!e){t.debug(`Input ${r.entryPoint} not found for output ${i}`);continue}a.push(e)}const c={name:i,filepath:n,inputs:a,size:r.bytes,type:rs(n)};if(g[n]=c,"map"===c.type&&p.push(c),d.push(c),!r.entryPoint)continue;const f=m[es(u,w(r.entryPoint))];if(f){if(!o.get(f.name))continue;const e={...c,name:o.get(f.name)||f.name,outputs:[c],size:c.size};l.push(e)}}$.end();const k=t.time("looping through sourcemaps");for(const e of p){const n=g[e.filepath.replace(/\.map$/,"")];n?e.inputs.push(n):t.debug(`Could not find output for sourcemap ${e.name}`)}k.end();const x={inputs:{report:m,meta:y},outputs:{report:g,meta:b}},E=/(<runtime>|https:|file:|data:|#)/g,S=e=>!U(e)&&!e.match(E),I=(e,n,o={})=>{if(!S(e))return o;const r=n.report[e];if(!r)return t.debug(`Could not find report's ${e}`),o;if(o[r.filepath])return o;o[r.filepath]=r;const i=n.meta[e];if(!i)return t.debug(`Could not find metafile's ${e}`),o;if(!i.imports||!i.imports.length)return o;for(const t of i.imports){const i=t.path.match(/^\.\.?\//),d=i?a.dirname(e):u,l=es(d,t.path);if(t.external){if(S(t.path)){const e=i?l:t.path,n=x.inputs.report[e]||{filepath:e,name:us(s,t.path),size:0,type:"external",dependencies:new Set,dependents:new Set};"dependencies"in r&&(n.dependents.add(r),r.dependencies.add(n)),"inputs"in r&&!r.inputs.includes(n)&&r.inputs.push(n),c.includes(n)||c.push(n),x.inputs.report[e]=n,o[n.filepath]=n}}else I(l,n,o)}return o},j=t.time("looping through entries");for(const e of l){const t={},n={};for(const n of e.inputs)I(n.filepath,x.inputs,t);for(const t of e.outputs)I(t.filepath,x.outputs,n);e.inputs=Object.values(t),e.outputs=Object.values(n),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),f.push(e)}j.end();const A=t.time("aggregate dependencies and dependents");for(const e of c){if("external"===e.type)continue;const n=x.inputs.meta[e.filepath];if(n)for(const o of n.imports){if(!S(o.path))continue;const n=o.path.match(/^\.?\.\//),r=n?a.dirname(e.filepath):u,i=es(r,o.path);let s;if(o.external){const e=n?i:o.path;s=x.inputs.report[e]}else s=x.inputs.report[i];s?(e.dependencies.add(s),s.dependents.add(e)):t.debug(`Could not find input file of ${o.path} imported from ${e.name}`)}else t.debug(`Could not find metafile's ${e.name}`)}A.end(),e.build.outputs=d,e.build.inputs=c,e.build.entries=f,i.end(),await e.asyncHook("buildReport",e.build)}))}}),ls=(e,t)=>{const n=t.time("module parsing",{start:!1}),o=t.time("build report",{start:!1}),r=t.time("filling entries",{start:!1}),s=t.time("filling inputs and outputs",{start:!1}),a=t.time("completing dependencies and dependents",{start:!1}),u=t.time("filling dependencies and dependents",{start:!1}),c=t.time("filling sourcemaps inputs",{start:!1}),d=new Map,l=new Map,p=new Map,f=new Map;return{buildStart(){f.clear(),d.clear(),l.clear(),p.clear()},onLog(t,n){"warn"===t&&e.build.warnings.push(n.message||n.toString())},renderError(t){t&&e.build.errors.push(t.message)},moduleParsed(e){n.resume();const t=as(e.id),o=f.get(t)||{dependencies:new Set,dependents:new Set},r=ss(new Set([...e.dynamicallyImportedIds,...e.importedIds]),t),i=ss(new Set([...e.dynamicImporters,...e.importers]),t);for(const e of i)o.dependents.add(e);for(const e of r)o.dependencies.add(e);f.set(t,o),n.tag([`module:${t}`],{span:!0}),n.pause()},writeBundle(n,m){o.resume();const g=n.dir?es(e.buildRoot,n.dir):e.bundler.outDir,h=new Set,y=new Set,b=new Map;a.resume();for(const[e,{dependencies:t,dependents:n}]of f){for(const n of t){const t=as(n),o=f.get(t)||{dependencies:new Set,dependents:new Set};o.dependents.has(e)||(o.dependents.add(e),f.set(t,o))}for(const t of n){const n=as(t),o=f.get(n)||{dependencies:new Set,dependents:new Set};o.dependencies.has(e)||(o.dependencies.add(e),f.set(n,o))}}a.end(),s.resume();for(const[e,n]of Object.entries(m)){const o=es(g,e),r="code"in n?Buffer.byteLength(n.code,"utf8"):Buffer.byteLength(n.source,"utf8"),s=l.get(o)||{name:e,filepath:o,inputs:[],size:r,type:rs(e)};if("map"===s.type&&y.add(s),"modules"in n)for(const[e,t]of Object.entries(n.modules)){if(as(e)!==e)continue;let n=t.originalLength;if(!n&&0!==n)try{n=i.statSync(e).size}catch(e){n=t.renderedLength}const o=d.get(e)||{name:us(g,e),dependencies:new Set,dependents:new Set,filepath:e,size:n,type:rs(e)};s.inputs.push(o),d.set(o.filepath,o)}if("imports"in n)for(const e of n.imports){const n=as(e);if(!f.has(n)){b.set(es(g,n),s);continue}if(d.has(n)){t.debug(`Input report already there for ${n} from ${s.name}.`);continue}const o=d.get(n)||{name:us(g,e),dependencies:new Set,dependents:new Set,filepath:n,size:0,type:"external"};s.inputs.push(o),d.set(o.filepath,o)}"isEntry"in n&&n.isEntry&&h.add({...s,name:n.name,size:0,outputs:[s]}),l.set(s.filepath,s)}s.end();for(const[e,n]of b){const o=l.get(e);o?n.inputs.includes(o)||n.inputs.push(o):t.debug(`Could not find the output report for ${e}.`)}u.resume();for(const[e,n]of d){const o=f.get(e);if(o){for(const e of o.dependencies){const o=d.get(e);o?n.dependencies.add(o):t.debug(`Could not find input for dependency ${us(g,e)} of ${n.name}`)}for(const e of o.dependents){const o=d.get(e);o?n.dependents.add(o):t.debug(`Could not find input for dependent ${us(g,e)} of ${n.name}`)}}else t.debug(`Could not find the import report for ${n.name}.`)}if(u.end(),y.size){c.resume();for(const e of y){const n=e.filepath.replace(/\.map$/,""),o=l.get(n);o?e.inputs.push(o):t.debug(`Could not find output for sourcemap ${e.name}`)}c.end()}const w=(e,n=new Map)=>{if(n.has(e))return n;const o=us(g,e),r=l.get(e);if(!r)return d.has(o)||t.debug(`Could not find output for ${o}`),n;n.set(e,r);const i=m[us(g,e)];if(!i)return t.debug(`Could not find asset for ${o}`),n;const s=[];"imports"in i&&s.push(...i.imports),"dynamicImports"in i&&s.push(...i.dynamicImports);for(const e of s)w(es(g,e),n);return n};r.resume();for(const e of h){const n=w(e.filepath);e.outputs=Array.from(n.values()),e.inputs=Array.from(new Set(e.outputs.flatMap((e=>e.inputs)))),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),p.has(e.filepath)&&t.debug(`Entry "${e.name}":"${us(g,e.filepath)}" already reported.`),p.set(e.filepath,e)}r.pause(),o.pause()},async closeBundle(){e.build.inputs=Array.from(d.values()),e.build.outputs=Array.from(l.values()),e.build.entries=Array.from(p.values()),r.end(),o.end(),await e.asyncHook("buildReport",e.build)}}},ps=(e,t,n)=>o=>{let r=[],i=[],s=[];const a=new Map,u=new Map,c=new Map,d=new Map,l=[],p=new Map,f=n.time("build report",{start:!1}),m=e=>!(!e||e.startsWith("webpack/runtime")||e.startsWith("multi ")||U(e)),g=e=>e.replace(/(^external[^"]+"|"$)/g,""),h=e=>{const t=(e=>{const t=e.identifier();return{identifier:()=>t,dependencies:"dependencies"in e?[...e.dependencies]:[],blocks:"blocks"in e?[...e.blocks]:[],externalType:"externalType"in e?e.externalType:void 0,external:"external"in e?e.external:void 0}})(e),n=(e=>{const t=new Set,n=["rawRequest","resource","request","userRequest"],o=e=>{const n=as(e);t.add(n),n.startsWith("external ")&&t.add(g(n))};o(e.identifier());for(const t of n){const n=e[t];t&&t in e&&"string"==typeof n&&o(n)}return t})(e);for(const e of n)if(d.has(e)){const n=d.get(e);n.dependencies.push(...t.dependencies||[]),n.blocks.push(...t.blocks||[])}else d.set(e,t)},y=(e,t=[])=>{if("dependencies"in e)for(const n of e.dependencies)t.push(n),y(n,t);if("blocks"in e)for(const n of e.blocks)y(n,t);return t},b=(e,t)=>{if("request"in t&&t.request){const n=as(t.request);if(d.has(n))return d.get(n);if(e.context){const t=es(as(e.context),n);if(d.has(t))return d.get(t)}}},w=e=>!(!("externalType"in e)||!e.externalType)||(!(!("external"in e)||!e.external)||!!e.identifier?.().startsWith("external "));o.hooks.thisCompilation.tap(t,(o=>{r=[],i=[],s=[],a.clear(),u.clear(),d.clear(),p.clear(),o.hooks.finishModules.tap(t,(t=>{f.resume();const o=n.time("dependency graph"),i=n.time("indexing modules");for(const e of t)h(e);i.end();const s=n.time("building inputs");for(const n of t){const t=n.identifier(),o=us(e.bundler.outDir,t),i=new Set(y(n).map((e=>{const o=b(n,e);if(!o?.identifier())return!1;const r=o.identifier();return!!m(r)&&(r!==t&&(w(o)?g(r):r))})).filter(Boolean));if(!m(t))continue;const s=p.get(t)||{dependents:new Set,dependencies:new Set};for(const e of i){const n=p.get(e)||{dependencies:new Set,dependents:new Set};n.dependents.add(t),s.dependencies.add(e),p.set(e,n)}p.set(t,s);const u=w(n)?{size:0,name:g(o),dependencies:new Set,dependents:new Set,filepath:t,type:"external"}:{size:n.size()||0,name:o,dependencies:new Set,dependents:new Set,filepath:t,type:rs(t)};r.push(u),a.set(t,u),w(n)&&a.set(g(t),u)}s.end();const u=n.time("assigning dependencies and dependents");for(const e of r){const t=p.get(e.filepath);if(t){for(const o of t.dependencies){const t=a.get(o);t?e.dependencies.add(t):n.debug(`Could not find input of dependency ${o}`)}for(const o of t.dependents){const t=a.get(o);t?e.dependents.add(t):n.debug(`Could not find input of dependent ${o}`)}}else n.debug(`Could not find dependency report for ${e.name}`)}u.end(),o.end(),f.pause()}))})),o.hooks.afterEmit.tapPromise(t,(async t=>{f.resume();const o=t.chunks,d=t.getAssets(),p=t=>[...t.files||[],...t.auxiliaryFiles||[]].map((t=>es(e.bundler.outDir,t))),g=n.time("indexing chunks"),h=t.chunkGraph;for(const e of o){const t=p(e),n=(h?.getChunkModules(e)||[]).flatMap((e=>"modules"in e&&Array.isArray(e.modules)?e.modules.map((e=>e.identifier())):e.identifier())).filter(m);for(const e of t){if("map"===rs(e))continue;const t=c.get(e)||new Set;for(const e of n)t.add(e);c.set(e,t)}}g.end();const y=n.time("building outputs");for(const t of d){const o={size:t.source.size()||0,name:t.name,inputs:[],filepath:es(e.bundler.outDir,t.name),type:rs(t.name)};if(u.set(o.filepath,o),i.push(o),"map"===o.type){l.push(o);continue}const r=c.get(o.filepath);if(r)for(const e of r){const t=a.get(e);t?o.inputs.push(t):n.debug(`Could not find input of ${e}`)}else n.debug(`Could not find modules for ${o.name}`)}y.end();const b=n.time("filling sourcemaps inputs");for(const e of l){const t=u.get(e.filepath.replace(/\.map$/,""));t?e.inputs.push(t):n.debug(`Output not found for sourcemap ${e.name}`)}b.end();const w=n.time("building entries"),v=(e,t=new Set)=>{if(t.has(e))return new Set;t.add(e);const n=new Set(e.chunks);for(const o of e.childrenIterable||[]){const e=v(o,t);for(const t of e)n.add(t)}return n};for(const[o,r]of t.entrypoints){const t=new Map,i=new Map;let a=0;const c=v(r),d=Array.from(c).flatMap(p),l=r.chunks.filter((e=>h.getChunkEntryModulesIterable(e)||!1)).flatMap((e=>Array.from(e.files))).filter((e=>e.includes(o)||r.name&&e.includes(r.name))).find((e=>"js"===rs(e)));for(const e of d){const o=u.get(e);if(e&&o){if("map"!==o.type&&!t.has(o.name)){t.set(o.name,o);for(const e of o.inputs)i.has(e.filepath)||i.set(e.filepath,e);a+=o.size}}else n.debug(`Could not find output of ${JSON.stringify(e)}`)}const f={name:o,filepath:l?es(e.bundler.outDir,l):"unknown",size:a,inputs:Array.from(i.values()),outputs:Array.from(t.values()),type:l?rs(l):"unknown"};s.push(f)}w.end();for(const n of t.errors)e.build.errors.push(n.message);for(const n of t.warnings)e.build.warnings.push(n.message);e.build.inputs=r,e.build.outputs=i,e.build.entries=s,f.end(),await e.asyncHook("buildReport",e.build)}))},fs="datadog-build-report-plugin",ms=e=>{const{context:t}=e,n=t.getLogger(fs);return[{name:fs,enforce:"post",esbuild:ds(t,n),rspack:ps(t,fs,n),webpack:ps(t,fs,n),vite:ls(t,n),rollup:ls(t,n)}]},gs="datadog-bundler-report-plugin",hs=(e,t)=>t?a.isAbsolute(t)?t:a.resolve(e,t):"",ys=e=>{if(!e)return[];return(Array.isArray(e)?e:[e]).map((e=>e.dir?e.dir:e.file?a.dirname(e.file):void 0)).filter(Boolean)},bs=e=>t=>{e.bundler.rawConfig=t.options,t.options.output?.path&&(e.bundler.outDir=hs(process.cwd(),t.options.output.path)),e.hook("bundlerReport",e.bundler),t.options.context&&(e.buildRoot=t.options.context),e.hook("buildRoot",e.buildRoot)},ws=e=>({configResolved(t){e.bundler.rawConfig=t;let n=t.build?.outDir??"dist";const o=t.build?.rollupOptions?.output,r=ys(o);e.buildRoot=t.root??process.cwd(),o&&r.length&&(n=ts(r,process.cwd())),e.bundler.outDir=hs(e.buildRoot,n),e.hook("buildRoot",e.buildRoot),e.hook("bundlerReport",e.bundler)}}),vs=e=>{const{context:t}=e,n=t.getLogger(gs);return[{name:gs,enforce:"pre",esbuild:{setup(e){t.bundler.rawConfig=e.initialOptions,e.initialOptions.absWorkingDir&&(t.buildRoot=e.initialOptions.absWorkingDir),e.initialOptions.outdir&&(t.bundler.outDir=hs(t.buildRoot,e.initialOptions.outdir)),e.initialOptions.outfile&&(t.bundler.outDir=hs(t.buildRoot,a.dirname(e.initialOptions.outfile))),t.hook("buildRoot",t.buildRoot),t.hook("bundlerReport",t.bundler),e.initialOptions.metafile=!0}},webpack:bs(t),rspack:bs(t),vite:ws(t),rollup:{options(e){let n;if("output"in e){const t=ys(e.output);n=ts(t,process.cwd())}const o=(e=>{const t=new Set;if(e.input){const n=Array.isArray(e.input)?e.input:"object"==typeof e.input?Object.values(e.input):[e.input];for(const e of n){if("string"!=typeof e)throw new Error("Invalid input type");t.add(a.dirname(e))}}return Array.from(t)})(e);if(n){t.bundler.outDir=es(process.cwd(),n);const e=ts([n,...o],process.cwd());t.buildRoot=e===a.sep?process.cwd():e}else t.buildRoot=ts(o,process.cwd()),t.bundler.outDir=a.resolve(process.cwd(),"dist");t.hook("buildRoot",t.buildRoot)},buildStart(e){t.bundler.rawConfig=e},renderStart(e){t.bundler.rawConfig.outputs=t.bundler.rawConfig.outputs||[],t.bundler.rawConfig.outputs.push(e),t.hook("bundlerReport",t.bundler);const o=ys(e);ts(o,process.cwd()).startsWith(t.bundler.outDir)||n.warn("The output directory has been changed by a plugin and may introduce some inconsistencies in the build report.")}}}]},$s="datadog-custom-hooks-plugin",ks=e=>{const{context:t}=e,n=t.getLogger($s),o=e=>(o,...r)=>{const i=n.time(`execution | ${o}`,{tags:["type:custom-hook",`hook:${o}`]}),s=[],a=[];for(const n of t.plugins){if(!(o in n))continue;const t=n[o];if("function"==typeof t)try{const i=t(...r);i instanceof Promise&&(e||s.push(`Plugin "${n.name}" returned a promise on the non async hook "${o}".`),a.push(i))}catch(e){s.push(`Plugin "${n.name}" errored on hook "${o}". [${e}]`)}else s.push(`Plugin "${n.name}" has an invalid hook type for "${o}". [${typeof t}]`)}if(s.length>0){for(const e of s)n.error(e);throw new Error("Some plugins errored during the hook execution.")}return Promise.all(a).finally((()=>i.end()))};return t.hook=o(!1),t.asyncHook=o(!0),[{name:$s,enforce:"pre"}]};class xs{constructor(e){this.trackedFilenames=new Map;for(const t of e){const e=this.getFilename(t),n=this.trackedFilenames.get(e);n?n.push(t):this.trackedFilenames.set(e,new Array(t))}}displaySource(e){return e.length<=40?e:`[...]${e.slice(-35)}`}matchSourcemap(e,t){const n=(o=e,i.readFileSync(o,{encoding:"utf-8"}));var o;const r=JSON.parse(n);if(!r.sources)return void t("Missing 'sources' field in sourcemap.");const s=r.sources;if(0===s.length)return void t("Empty 'sources' field in sourcemap.");const a=this.matchSources(s);if(0!==a.length)return a;t(`${s.map(this.displaySource).join(", ")} not in the tracked files.`)}matchSources(e){let t=[];const n=new Set;for(const o of e){const e=this.getFilename(o);if(n.has(e))continue;n.add(e);const r=this.trackedFilenames.get(e);r&&(t=t.concat(r))}return t}rawTrackedFilesList(){let e=[];return this.trackedFilenames.forEach((t=>{e=e.concat(t)})),e}getFilename(e){let t=e.lastIndexOf("/");-1===t?t=0:t++;let n=e.lastIndexOf("?");return(-1===n||n<=t)&&(n=e.length),e.substring(t,n)}}const Es=async e=>{const t=await e.getRemotes(!0);if(0===t.length)throw new Error("No git remotes available");const n=await Ss(e);for(const e of t)if(e.name===n)return G(e.refs.push);return G(t[0].refs.push)},Ss=async e=>{try{return(await e.getConfig("clone.defaultRemoteName"))?.value??"origin"}catch(e){return"origin"}},Is=async e=>e.revparse("HEAD"),js=async e=>(await e.raw("ls-files")).split(/\r\n|\r|\n/),As=async e=>e.branch(),Ds=async e=>e.show(["-s","--format=%s"]),Ps=async e=>e.show(["-s","--format=%an,%ae,%aI,%cn,%ce,%cI"]),Ms="datadog-git-plugin",Cs=e=>{const{options:t,context:n}=e,o=n.getLogger(Ms),r=o.time("get git information",{start:!1}),i=async e=>{try{const t=await(async e=>{const t={baseDir:e||process.cwd(),binary:"git",maxConcurrentProcesses:3};try{const e=x.simpleGit(t),n=await e.revparse("--show-toplevel");t.baseDir=n}catch{}return x.simpleGit(t)})(a.dirname(e));if(0===(await t.getRemotes(!0)).length)return o.warn("No git remotes available, skipping git plugin. This is expected for a repository that has not been pushed yet."),void r.end();const i=await(async e=>{const t=[Is(e),As(e),Ds(e),Ps(e),js(e),Es(e)],[n,o,r,i,s,a]=await Promise.all(t),[u,c,d,l,p,f]=i.split(",").map((e=>e.trim()));return{commit:{author:{name:u,email:c,date:d},committer:{name:l,email:p,date:f},message:r.trim(),hash:n},hash:n,branch:o.current,remote:a.trim(),trackedFilesMatcher:new xs(s)}})(t);n.git=i,r.end(),await n.asyncHook("git",n.git)}catch(e){o.error(`Could not get git information: ${e.message}`)}};return[{name:Ms,enforce:"pre",buildRoot(e){if(K(t))try{r.resume();const t=((e,t)=>{let n,o=es(process.cwd(),e);for(;!n;){const e=a.resolve(o,t);if(ve(e)&&(n=e),o=o.split(a.sep).slice(0,-1).join(a.sep),[a.sep,""].includes(o))break}return n})(e,".git");if(!t)return o.warn("No .git directory found, skipping git plugin."),void r.end();n.queue(i(t))}catch(e){o.error(`Could not get git information: ${e.message}`)}}}]},Os="datadog-injection-plugin",Ns=/^https?:\/\//,Ts=[".mjs",".mjsx",".js",".ts",".tsx",".jsx"],Rs=t.bold.yellow;function _s(e){return e.some((e=>e.position===xe.BEFORE||e.position===xe.AFTER))}function Fs(e){return e.some((e=>e.injectIntoAllChunks))}const Ls=(e,t,n)=>{const o=e.filter((e=>e.position===t&&(!n||n.isEntry||e.injectIntoAllChunks))).map((e=>Ks(e.value)?e.value(n):e.value)).filter(Boolean);if(0===o.length)return"";return`// begin injection by Datadog build plugins\n${o.map((e=>`(() => {${e}})();`)).join("\n\n")}\n// end injection by Datadog build plugins`},qs=async(e,t,n=process.cwd())=>{const o=Ks(e.value)?await e.value():e.value;try{if("file"===e.type){const e=o;return await(e.match(Ns)?(async(e,t=5e3)=>{let n;return Promise.race([z({retries:2,minTimeout:100,url:e}).finally((()=>{t&&clearTimeout(n)})),new Promise(((e,o)=>{n=setTimeout((()=>{o(new Error("Timeout"))}),t)}))])})(e):(async(e,t=process.cwd())=>{const n=es(t,e);return we(n)})(e,n))}return o}catch(r){const i=`${e.type} - ${J(o)}`;return e.fallback?(t.debug(`Fallback for "${i}": ${r.toString()}`),qs(e.fallback,t,n)):(t.warn(`Failed "${i}": ${r.toString()}`),"")}},zs=async(e,t,n,o=process.cwd())=>{const r=t.filter(Ws).map((e=>{const t=e.value;return{...e,value:e=>t(e)}})),i=t.filter((e=>!Ws(e))),s=await Promise.all(i.map((async t=>({...t,value:await qs(t,e,o)})))),a=e=>({...e,position:e.position??xe.BEFORE});n.push(...r.map(a),...s.map(a))},Bs=e=>e instanceof Error&&"code"in e,Vs=e=>Ts.includes(e),Us=(e,t,n)=>{e.warn(`"${Rs(t)}" files are not supported (${Rs(n)}).`)},Ws=e=>"function"==typeof e.value&&1===e.value.length,Ks=e=>"function"==typeof e,Hs=i.promises,Js=(e,t,n)=>({setup(o){const{onStart:s,onResolve:u,onLoad:c,onEnd:d,esbuild:l,initialOptions:f}=o,m=[],g=`${t.bundler.name}.${xe.MIDDLE}.${j}.js`,h=i.realpathSync(p.tmpdir()),y=a.resolve(h,g),b=new RegExp(`${g}$`),w=f.inject;f.inject=w?[...w]:[],f.inject.push(y),s((async()=>{m.push(...await Zi(o,t,e)),o.initialOptions.inject=w;try{await(async(e,t)=>{await ye(a.dirname(e)),await r.writeFile(e,t,{encoding:"utf-8"})})(y,"")}catch(t){e.error(`Could not create the files: ${t.message}`)}})),u({filter:b},(async e=>({path:e.path,namespace:Os}))),c({filter:b,namespace:Os},(async()=>({contents:Ls(n,xe.MIDDLE)||" ",resolveDir:t.buildRoot,loader:"js"}))),d((async o=>{if(!o.metafile){const n=new Error("Missing metafile from build result.");return e.warn(n.message),void t.markArtifactsReady(n)}if(_s(n))try{const r=[];for(const[i,s]of Object.entries(o.metafile.outputs)){const o=Boolean(s.entryPoint&&m.some((e=>e.resolved.endsWith(s.entryPoint))));if(!o&&!Fs(n))continue;const u=es(t.buildRoot,i),{base:c,ext:d}=a.parse(u);Vs(d)?r.push((async()=>{try{const e=`${u}.map`,t=await Hs.readFile(u,"utf-8"),r=await Hs.readFile(e,"utf-8").catch((()=>!1)),i=a.basename(u),s=Ls(n,xe.BEFORE,{sourceOrHash:t,fileName:i,isEntry:o}),c=Ls(n,xe.AFTER,{sourceOrHash:t,fileName:i,isEntry:o});if(!s&&!c)return;const d=t.replace(/\n?\/\/# sourceMappingURL=.*$/m,""),p=r?`${d}\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(r).toString("base64")}`:d,f=await l.transform(p,{loader:"default",banner:s,footer:c,sourcemap:r?"external":void 0,sourcefile:i});await Promise.all([Hs.writeFile(u,f.code),r&&f.map?Hs.writeFile(e,f.map):null])}catch(t){if(!Bs(t)||"ENOENT"!==t.code)throw t;e.warn(`Could not inject content in ${u}: ${t}`)}})()):Us(e,d,c)}await Promise.all(r),t.markArtifactsReady()}catch(e){throw t.markArtifactsReady(e),e}}))}}),Gs=j,Ys="?inject-proxy",Qs=(e,t)=>({renderChunk:{order:"post",handler(n,o){const{base:r,ext:i}=a.parse(o.fileName);if(!Vs(i))return Us(e,i,r),null;const s=Ls(t,xe.BEFORE,{sourceOrHash:n,fileName:o.fileName,isEntry:o.isEntry}),u=Ls(t,xe.AFTER,{sourceOrHash:n,fileName:o.fileName,isEntry:o.isEntry});if(!s&&!u)return null;const c=new E(n);return s&&c.prepend(`${s}\n`),u&&c.append(`\n${u}`),{code:c.toString(),map:c.generateMap({file:o.fileName,hires:"boundary"})}}},async resolveId(e,n,o){if(U(e))return{id:e,moduleSideEffects:!0};if(o.isEntry&&Ls(t,xe.MIDDLE)){if(e.endsWith(".html"))return null;const t=await this.resolve(e,n,o);if(!t||t.external)return t;return(await this.load(t)).moduleSideEffects=!0,`${t.id}${Ys}`}return null},load(e){if(U(e))return Ls(t,xe.MIDDLE);if(e.endsWith(Ys)){const t=e.slice(0,-13),n=this.getModuleInfo(t);let o=`import ${JSON.stringify(Gs)};\nexport * from ${JSON.stringify(t)};`;return n?.hasDefaultExport&&(o+=`export { default } from ${JSON.stringify(t)};`),o}return null}}),Xs=(e,t,n,o,r)=>s=>{const u=new WeakMap,c=e.sources.ConcatSource,d=n.bundler.name,l=a.resolve(n.buildRoot,"node_modules",".cache","datadog-build-plugins",`${d}.${xe.MIDDLE}.${j}.js`);be(l,"");s.hooks.shutdown.tap(Os,(()=>{var e;e=l,i.rmSync(e,{force:!0,maxRetries:3,recursive:!0})}));const p=async()=>{await zs(t,o,r,n.buildRoot)};s.hooks.beforeRun.tapPromise(Os,p),s.hooks.watchRun.tapPromise(Os,p),s.hooks.compilation.tap(Os,(n=>{const o=e.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS;n.hooks.processAssets.tap({name:Os,stage:o},(()=>{for(const e of n.chunks){const o=e.canBeInitial(),i=e.contentHash?.javascript??e.hash;for(const s of e.files){const{base:e,ext:d}=a.parse(s);if(!Vs(d)){Us(t,d,e);continue}const l=e,p=Ls(r,xe.BEFORE,{sourceOrHash:i,fileName:l,isEntry:o}),f=Ls(r,xe.AFTER,{sourceOrHash:i,fileName:l,isEntry:o});""===p&&""===f||n.updateAsset(s,(e=>{const t=u.get(e);if(!t||t.banner!==p||t.footer!==f){const t=new c(p,"\n",e,"\n",f);return u.set(e,{source:t,banner:p,footer:f}),t}return t.source}))}}}))}));const f=(e=>{const n={import:[l]},o=e=>{for(const[n,o]of Object.entries(e))"object"==typeof o?(o.import=o.import||[],o.import.unshift(l)):"string"==typeof o?e[n]=[l,o]:Array.isArray(o)?o.unshift(l):t.error("Invalid entry type: "+typeof o)};return e?"function"==typeof e?async()=>{const t=await e();return o(t),t}:"object"!=typeof e?"string"==typeof e?[n,e]:(t.error("Invalid entry type: "+typeof e),e):(o(e),e):{ddHelper:n}})(s.options.entry);s.options.entry=f},Zs=e=>{const{bundler:t,context:n}=e,o=n.getLogger(Os),r=[],i=[];n.inject=e=>{r.push(e)};const s={name:Os,enforce:"post",esbuild:Js(o,n,i),webpack:Xs(t,o,n,r,i),rspack:Xs(t,o,n,r,i),rollup:Qs(o,i),vite:{...Qs(o,i),enforce:"pre",transformIndexHtml:{order:"pre",handler:()=>Ls(i,xe.MIDDLE)?[{tag:"script",attrs:{type:"module",src:"/@id/__datadog-helper-file"},injectTo:"head-prepend"}]:[]}}};var a;return a=n.bundler.name,["rspack","webpack"].includes(a)?s.load={filter:{id:A},handler:()=>({code:Ls(i,xe.MIDDLE)})}:s.buildStart=async()=>{await zs(o,r,i,n.buildRoot),"esbuild"===n.bundler.name&&_s(i)&&n.markArtifactsPending()},[s]},ea="datadog-true-end-plugin",ta=e=>{const{context:t}=e,n=async()=>{await t.asyncHook("asyncTrueEnd")},o=async()=>{await t.asyncHook("flush")},r=()=>{t.hook("syncTrueEnd")},i=async()=>{r(),await n(),await o()},s=e=>{e.hooks.shutdown.tapPromise(ea,i)},a={async writeBundle(){},async closeBundle(){await i()}};return[{name:ea,enforce:"post",webpack:s,esbuild:{setup(e){e.onEnd((async()=>{await n(),await o()})),e.onDispose((()=>{r()}))}},vite:a,rollup:a,rspack:s}]},na={[Zr]:Ai},oa=t.bold.red;var ra="3.2.12-dev.1";const ia=(({bundler:t,version:n})=>{const o=Date.now();return e.createUnplugin(((e,r)=>{const i=Date.now(),s=((e={})=>{const t=(e=>{const t=[];return void 0===e||void 0!==e.version&&"string"!=typeof e.version&&t.push("metadata.version must be a string"),t})(e.metadata),n=R("SITE"),o=F(n,"DATADOG_SITE/DD_SITE",t)??F(e.auth?.site,"auth.site",t),r={site:o?.site??M};if(t.length)throw new Error(`Invalid Datadog plugin configuration:\n - ${t.join("\n - ")}`);return Object.defineProperty(r,"apiKey",{value:R("API_KEY")||e.auth?.apiKey,enumerable:!1}),Object.defineProperty(r,"appKey",{value:R("APP_KEY")||e.auth?.appKey,enumerable:!1}),{enableGit:!0,logLevel:"warn",metadata:{},...e,auth:r}})(e);"esbuild"===r.framework&&(r.esbuildHostName=C);const a=process.env.BUILD_PLUGINS_ENV||"production",u=D.includes(a)?a:"development",c=t.rspackVersion||t.version||t.VERSION,d=r.framework,l={bundler:{name:d,version:c},env:u,metadata:s.metadata||{},packageName:`@datadog/${d}-plugin`,version:n},p={errors:[],logs:[],metrics:new Set,queue:[],timings:[],warnings:[]},f=(({start:e,options:t,data:n,stores:o})=>{const r=process.cwd(),i={errors:o.errors,warnings:o.warnings,logs:o.logs,metadata:n.metadata,timings:o.timings,bundler:n.bundler},s={addMetric:()=>{throw new Error("AddMetric function called before it was initialized.")},artifactsPending:!1,artifactsReady:Promise.resolve(),auth:t.auth,pluginNames:[],bundler:{...i.bundler,outDir:r},build:i,buildRoot:r,env:n.env,getLogger:ne(n,o,t.logLevel),asyncHook:()=>{throw new Error("AsyncHook function called before it was initialized.")},hook:()=>{throw new Error("Hook function called before it was initialized.")},inject:()=>{throw new Error("Inject function called before it was initialized.")},markArtifactsPending:()=>{},markArtifactsReady:()=>{},plugins:[],queue:()=>{throw new Error("Queue function called before it was initialized.")},sendLog:B(n),start:e,version:n.version};let a,u;return s.markArtifactsPending=()=>{a||u||(s.artifactsReady=new Promise(((e,t)=>{a=e,u=t})),s.artifactsPending=!0,s.artifactsReady.catch((()=>{})))},s.markArtifactsReady=e=>{const t=a,n=u;a=void 0,u=void 0,s.artifactsPending=!1,void 0===e?t?.():n?.(e)},s})({start:o,options:s,data:l,stores:p}),m=f.getLogger("factory"),g=m.time("Plugins initialization",{start:i});f.pluginNames.push(C);const h=[];h.push(["analytics",Yi],["async-queue",Xi],["build-report",ms],["bundler-report",vs],["custom-hooks",ks],["git",Cs],["injection",Zs],["true-end",ta]),s.customPlugins&&h.push(["custom",s.customPlugins]);const y=[["apps",ue,Lo],["error-tracking",qo,ur],["live-debugger",cr,Qr],["metrics",Zr,Di],["output",Pi,Ri],["rum",_i,Ji]];for(const[e,t,n]of y)ae(s,t,m)&&h.push([e,n]);for(const[e,n]of h)f.plugins.push(...ie(f,n,e)({bundler:t,context:f,options:s,data:l,stores:p}));return(e=>{const t=[];for(const n of T){const o=_(n);if(o.length>1&&!o.every((e=>process.env[e]===process.env[o[0]]))){const r=o.map((e=>N(e))).join(" and "),i=N(`DATADOG_${n}`);e.warn(`Conflicting keys ${r}, will use ${i}`),t.push(`${r} (using ${i})`)}else if(o.length){const e=o.map((e=>O(e))).join(" and ");t.push(`${e} (same value)`)}}t.length&&e.info(`Overrides from environment:\n - ${t.join("\n - ")}`)})(m),f.pluginNames.push(...f.plugins.map((e=>e.name))),(e=>{const t=new Set(e.filter((t=>e.filter((e=>e===t)).length>1)));if(t.size>0)throw new Error(`Duplicate plugin names: ${oa(Array.from(t).join(", "))}`)})(f.pluginNames),f.hook("init",f),g.end(),f.plugins}))})({bundler:g,version:ra}).esbuild,sa=ra,aa=na;exports.datadogEsbuildPlugin=ia,exports.helpers=aa,exports.version=sa;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|