@datadog/webpack-plugin 3.2.12 → 3.4.0-dev.0
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.d.ts +64 -31
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +1 -1
- package/dist/src/index.mjs.map +1 -1
- package/package.json +5 -5
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("child_process"),d=require("crypto"),l=require("http"),p=require("os"),f=require("eslint-scope"),m=require("jszip"),h=require("glob"),g=require("pretty-bytes"),y=require("p-queue"),b=require("@jridgewell/remapping"),w=require("perf_hooks"),v=require("@datadog/js-instrumentation-wasm"),$=require("simple-git"),k=require("magic-string"),x=require("webpack");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 E=S(f);const I="__datadog-helper-file",D=new RegExp(I),A=["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"],j=P[0],M="datadog-build-plugins",O=t.bold.green,C=t.bold.yellow,T=["API_KEY","APP_KEY","SOURCEMAP_INTAKE_URL","APPS_INTAKE_URL","APPS_PUBLISH","APPS_UPLOAD_ASSETS","APPS_VERSION_NAME","APPS_AUTH_METHOD","SITE"],N=e=>process.env[`DATADOG_${e}`]||process.env[`DD_${e}`],R=(e,t)=>{if(void 0===e)return t;const n=e.toLowerCase();return!!["1","true","yes","on"].includes(n)||!["0","false","no","off"].includes(n)&&t},_=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/.`)},z=e=>null===e||"object"!=typeof e?"":Object.entries(e).map((([e,t])=>`${e}: ${"string"==typeof t?t:JSON.stringify(t)}`)).join(", "),L=e=>({"DD-EVP-ORIGIN":`${e.bundler}-build-plugin_${e.plugin}`,"DD-EVP-ORIGIN-VERSION":e.version}),q=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())}}},U=[400,401,403,404,405,409,413],B=async e=>{const{auth:t,url:o,method:r="GET",getData:i,type:s="text"}=e,a={retries:0===e.retries?0:e.retries||5,onRetry:e.onRetry,maxTimeout:e.maxTimeout,minTimeout:e.minTimeout};return n((async(e,n)=>{let a;try{const e={method:r,duplex:"half"};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}}a=await fetch(o,{...e,headers:n})}catch(t){return e(t),{}}if(!a.ok){let t=`HTTP ${a.status} ${a.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(z).filter((e=>e.length>0)).join("\n");if(e)return e}else{const e=z(t);if(e)return e}}catch{}return e})(await a.text());e&&(t+=`\n${e}`)}catch{}if(U.includes(a.status))return e(new Error(t)),{};throw new Error(t)}try{let e;return e="json"===s?await a.json():await a.text(),e}catch(t){return e(t),{}}}),a)},V=e=>({message:t,context:n})=>B({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||M,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"}}}}),H=e=>e.replace(/^@dd\/(datadog-|internal-)?|^datadog-|-plugin$/g,""),K=e=>e.includes(I),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},J=e=>{const t=!!e.errorTracking?.sourcemaps,n=e.enableGit??!0;return t&&n},G=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()},Y=(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)}`},Q=(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}},Z=e=>e.trim().toLowerCase().replace(/[^a-z0-9_:./-]+/g,"_").replace(/^_+|_+$/g,"")||"unknown",X=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"),ee={debug:0,info:1,warn:2,error:3,none:4},te=e=>e.split(">").map(H).join(">"),ne=(e,n,o,r)=>{const i=te(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=V(n);await t({message:f,context:{plugin:e,status:a,...c}})}catch(t){ne(e,n,o,r)(`Error forwarding log: ${t}`,"debug")}};o.queue.push(t())}ee[a]>=ee[r]&&l(`${d(p)} ${f}`)}},oe=(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(G(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)}}},re=(e,t,n="warn")=>o=>{const r=ne(o,e,t,n);return{getLogger:r=>re(e,t,n)(`${te(o)}>${r}`),time:oe(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)}},ie=["buildEnd","buildStart","load","resolveId","transform","watchChange","writeBundle","buildRoot","init","buildReport","bundlerReport","git"],se=(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)},ae=(e,t,n)=>{const o=e.getLogger(M);return e=>{const r=o.time(`hook | init ${n}`,{log:!1}),i=t(e).map((e=>((e,t)=>{const n={...e},o=H(e.name);for(const r of ie){const i=e[r];i&&(n[r]=se(o,r,i,t))}return n})(e,o))),s=i.map((e=>`plugin:${e.name}`));return r.tag(s),r.end(),i}},ue=new Set,ce=(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&&(ue.has(t)||(ue.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},de="apps",le="datadog-apps-plugin",pe="api/unstable/app-builder-code/apps",fe="datadog-apps-assets.zip",me=/\.backend\.(ts|tsx|js|jsx)$/,he=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"],ge=["apiKey","oauth"],ye=e=>{const t=e[de]||{},n=(e=>{if(void 0!==e){if(ge.includes(e))return e;throw new Error(`apps.authOverrides.method must be one of: ${ge.join(", ")}`)}})(N("APPS_AUTH_METHOD")||t.authOverrides?.method)||((e=>Boolean((N("API_KEY")||e.auth?.apiKey)&&(N("APP_KEY")||e.auth?.appKey)))(e)?"apiKey":"oauth");return{include:t.include||[],dryRun:t.dryRun??!R(N("APPS_UPLOAD_ASSETS"),!1),identifier:t.identifier?.trim(),name:t.name?.trim()||e.metadata?.name?.trim(),...null!=t.description&&{description:t.description},...null!=t.selfService&&{selfService:t.selfService},...null!=t.permissions&&{permissions:t.permissions},authOverrides:{method:n}}},be=async e=>r.rm(e,{force:!0,maxRetries:3,recursive:!0}),we=async e=>r.mkdir(e,{recursive:!0}),ve=(e,t)=>{var n;n=a.dirname(e),i.mkdirSync(n,{recursive:!0}),i.writeFileSync(e,t,{encoding:"utf-8"})},$e=e=>i.readFileSync(e,{encoding:"utf-8"}),ke=e=>{try{return i.existsSync(e)}catch(e){if("ENOENT"===e.code)return!1;throw e}},xe=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})}},Se=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 Ee=(e=>(e[e.BEFORE=0]="BEFORE",e[e.MIDDLE=1]="MIDDLE",e[e.AFTER=2]="AFTER",e))(Ee||{});const Ie=()=>import("oauth4webapi"),De=t.cyan.bold,Ae=e=>e.toString("base64url"),Pe=(e,t)=>{const n=(e=>"datad0g.com"===e?"f4bacdd2-0c8c-49f5-bf3e-a62ba3ec02e6":"e17b9ffa-3daf-4124-ba1b-4ac8c547d506")(e);return{authorizationUrl:`https://${t?`${t}.${e}`:`app.${e}`}/oauth2/v1/authorize`,cacheTokens:!0,clientId:n,openBrowser:!0,redirectUri:"http://localhost:8060",timeoutMs:3e5,tokenUrl:`https://api.${e}/oauth2/v1/token`}},je=e=>({client_id:e}),Me=e=>({issuer:new URL(e.authorizationUrl).origin,authorization_endpoint:e.authorizationUrl,token_endpoint:e.tokenUrl}),Oe=(e,t)=>`${e}:${t.clientId}:${((e,t)=>d.createHash("sha256").update([t.clientId,e,t.authorizationUrl,t.tokenUrl].join("|")).digest("hex").slice(0,16))(e,t)}`,Ce=(e,t,n)=>{e.writeHead(t,{"Content-Type":"text/html; charset=UTF-8"}),e.end(n)},Te=(e,t,n=Date.now())=>({accessToken:e.access_token,expiresAt:"number"==typeof e.expires_in?n+1e3*e.expires_in:void 0,expiresIn:e.expires_in,refreshToken:e.refresh_token,scope:e.scope,site:t,tokenType:e.token_type}),Ne=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),Re=e=>e instanceof Error?e.message:String(e),_e=e=>{const t=Re(e).toLowerCase();return"NoEntry"===(e=>Ne(e)&&"string"==typeof e.code?e.code:void 0)(e)||t.includes("noentry")||t.includes("no matching entry")||t.includes("not found")},Fe=async(e,t)=>{const{AsyncEntry:n}=await import("@napi-rs/keyring");return new n("datadog-build-plugins:oauth",Oe(e,t))},ze=(e,t)=>new Error(`Could not ${e} Datadog OAuth token in the OS credential store. ${t instanceof Error?t.message:String(t)}`),Le=async(e,t)=>{try{const n=await Fe(e,t),o=await n.getPassword();if(!o)return;const r=JSON.parse(o);return(e=>{if(Ne(e)&&1===e.version&&Ne(e.token)&&"string"==typeof e.token.accessToken&&"string"==typeof e.token.clientId&&"string"==typeof e.token.site)return e})(r)?.token}catch(e){if(_e(e))return;throw ze("read",e)}},qe=async(e,t,n,o=e.site)=>{if(t.cacheTokens)try{await(async(e,t,n)=>{try{const o=await Fe(e,n),r={version:1,token:t};await o.setPassword(JSON.stringify(r))}catch(e){throw ze("save",e)}})(o,((e,t)=>({accessToken:e.accessToken,clientId:t,expiresAt:e.expiresAt,refreshToken:e.refreshToken,scope:e.scope,site:e.site,tokenType:e.tokenType}))(e,t.clientId),t),n.debug("Saved Datadog OAuth token to the OS credential store.")}catch(e){n.warn(`Could not save Datadog OAuth token to the OS credential store; continuing without a persistent cache. ${Re(e)}`)}},Ue=async(e,t,n)=>{if(t.cacheTokens)try{await(async(e,t)=>{try{const n=await Fe(e,t);await n.deletePassword()}catch(e){if(!_e(e))throw ze("delete",e)}})(e,t)}catch(e){n.warn(`Could not delete cached Datadog OAuth token. ${Re(e)}`)}},Be=async(e,t,n)=>{if(!t.cacheTokens)return;let o;try{o=await Le(e,t)}catch(e){n.warn(`Could not read cached Datadog OAuth token; starting browser authorization. ${Re(e)}`)}if(o){if(void 0===(r=o).expiresAt||r.expiresAt>Date.now()+3e5)return n.debug("Using cached Datadog OAuth access token."),(e=>({accessToken:e.accessToken,expiresAt:e.expiresAt,refreshToken:e.refreshToken,scope:e.scope,site:e.site,tokenType:e.tokenType}))(o);var r;if(o.refreshToken)try{n.debug("Refreshing cached Datadog OAuth access token.");const r=await(async(e,t,n)=>{const o=await Ie(),r=Me(t),i=je(t.clientId),s=await o.refreshTokenGrantRequest(r,i,o.None(),n),a=await o.processRefreshTokenResponse(r,i,s);return Te({...a,refresh_token:a.refresh_token||n},e)})(e,t,o.refreshToken);return await qe(r,t,n),r}catch(o){return n.warn(`Cached Datadog OAuth token could not be refreshed; starting browser authorization. ${o instanceof Error?o.message:String(o)}`),void await Ue(e,t,n)}}},Ve=async(e,t,n)=>{const o=await Ie(),r=Me(t),i=je(t.clientId),s=Ae(d.randomBytes(32)),a=await(async e=>(await Ie()).calculatePKCECodeChallenge(e))(s),u=Ae(d.randomBytes(32)),p=(e=>{const t=new URL(e.authorizationUrl);return t.searchParams.set("redirect_uri",e.redirectUri),t.searchParams.set("client_id",e.clientId),t.searchParams.set("response_type","code"),t.searchParams.set("code_challenge",e.codeChallenge),t.searchParams.set("code_challenge_method","S256"),t.searchParams.set("state",e.state),t})({authorizationUrl:t.authorizationUrl,clientId:t.clientId,codeChallenge:a,redirectUri:t.redirectUri,state:u}),f=(async e=>{const t=new URL(e.redirectUri),n=Number(t.port||80);if("http:"!==t.protocol)throw new Error("OAuth redirect URI must use http for the local OAuth callback.");if(!Number.isInteger(n)||n<=0)throw new Error("OAuth redirect URI must include a valid port.");let o,r=!1;const i=l.createServer();try{return await new Promise(((s,a)=>{const u=e=>{r||(r=!0,e())};i.on("request",((n,o)=>{const r=new URL(n.url||"/",t.origin);if(r.pathname!==t.pathname)return void Ce(o,404,"Not found.");let i;try{i=e.oauth.validateAuthResponse(e.authorizationServer,e.client,r,e.state)}catch(e){return Ce(o,400,"OAuth authorization failed. You may now close this tab."),void u((()=>a(e instanceof Error?e:new Error(String(e)))))}if(!i.get("code"))return Ce(o,400,"Missing OAuth authorization code. You may now close this tab."),void u((()=>a(new Error("Missing OAuth authorization code."))));Ce(o,200,"OAuth authorization complete. You may now close this tab."),u((()=>s({callbackParameters:i})))})),i.once("error",(e=>u((()=>a(e))))),o=setTimeout((()=>{u((()=>a(new Error(`Timed out waiting for OAuth callback after ${e.timeoutMs}ms.`))))}),e.timeoutMs);try{const e="localhost"===t.hostname?void 0:t.hostname;i.listen(n,e)}catch(e){u((()=>a(e instanceof Error?e:new Error(String(e)))))}}))}finally{o&&clearTimeout(o),i.listening&&(i.close(),i.closeAllConnections?.(),i.closeIdleConnections?.())}})({authorizationServer:r,client:i,oauth:o,redirectUri:t.redirectUri,state:u,timeoutMs:t.timeoutMs});n.info(`Authorize Datadog Apps upload:\n ${De(p.toString())}`),t.openBrowser&&((e,t)=>{const n="darwin"===process.platform?{command:"open",args:[e]}:"win32"===process.platform?{command:"cmd",args:["/c","start","",e]}:{command:"xdg-open",args:[e]};try{const e=c.spawn(n.command,n.args,{detached:!0,stdio:"ignore"});e.once("error",(e=>{t.warn(`Could not open browser automatically: ${Re(e)}`)})),e.unref()}catch(e){t.warn(`Could not open browser automatically: ${Re(e)}`)}})(p.toString(),n);return(async e=>{const t=await Ie(),n=Me(e),o=je(e.clientId),r=await t.authorizationCodeGrantRequest(n,o,t.None(),e.callbackParameters,e.redirectUri,e.codeVerifier),i=await t.processAuthorizationCodeResponse(n,o,r);return Te(i,e.site)})({callbackParameters:(await f).callbackParameters,clientId:t.clientId,codeVerifier:s,redirectUri:t.redirectUri,site:e,tokenUrl:t.tokenUrl,authorizationUrl:t.authorizationUrl})},He=new Map,Ke=async(e,t,n)=>{const o=Pe(e,n),r=`${e}:${n??""}:${o.clientId}`;let i=He.get(r);return i||(i=(async(e,t,n)=>{const o=await Be(e,t,n);return o?{persistAfterSuccessfulRequest:!1,token:o}:{persistAfterSuccessfulRequest:!0,token:await Ve(e,t,n)}})(e,o,t).catch((e=>{throw He.delete(r),e})),He.set(r,i)),i},We='Set apps.authOverrides.method: "oauth" or DD_APPS_AUTH_METHOD=oauth to use OAuth, or set DD_API_KEY and DD_APP_KEY to use API/App key auth.';class Je extends Error{constructor(){super(`Missing authentication. ${We}`),this.statusCode=400,this.name="MissingAuthenticationError"}}const Ge=(e,t,n)=>{if("oauth"===e)return e=>(async({auth:e,log:t,...n})=>{const{site:o,siteSubdomain:r}=e,{persistAfterSuccessfulRequest:i,token:s}=await Ke(o,t,r);if(!s.accessToken)throw new Error("OAuth authentication did not return an access token.");const a=await B({...n,auth:{accessToken:s.accessToken}});return i&&await qe(s,Pe(o,r),t,o),a})({...e,auth:t,log:n});if(t.apiKey&&t.appKey)return e=>B({...e,auth:{apiKey:t.apiKey,appKey:t.appKey}});throw new Je};function Ye(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 Qe(e){return"object"==typeof e&&null!==e&&"Literal"===e.type&&"string"==typeof e.value}function Ze(e){return"type"===e.importKind||"type"===e.exportKind}function Xe(e,t){return function(e,t){const n=Ye(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(...nt(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&&ot(e,o,t),r.push({kind:"local",name:i.exported.name,localName:e})))}}return r}(e,t).map((e=>e.name))}const et=new Set(["ArrayExpression","Literal","ObjectExpression","TemplateLiteral"]);function tt(e){return null==e||et.has(e.type)}function nt(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(tt(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 ot(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&&tt(o.init))throw new Error(`Non-function export "${e}" in backend file ${n}. Only function exports are supported — use "export function ${e}(…) { }" instead.`)}}function rt(e){const t=e.relativePath.split(a.sep).join("/");return`${d.createHash("sha256").update(t).digest("hex")}.${e.name}`}function it(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 st(e,t){try{return require.resolve(e,{paths:[t]}),!0}catch{return!1}}function at(e,t,n){const o=[],r=st("@datadog/apps-backend/runtime/jsFunctionWithActions",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';"),function(e){return st("@datadog/action-catalog/action-execution",e)}(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")}function ut(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)ct(t)&&r(t);else ct(e)&&r(e)};r(e)}function ct(e){return"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type}function dt(e){ut(e,null,{_(e){const t=e;t.range||"number"!=typeof t.start||"number"!=typeof t.end||(t.range=[t.start,t.end])}});const t=E.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:mt(t)}}function lt(e,t){return t.referencesByIdentifier.get(e)?.resolved??void 0}function pt(e){return e.defs.some((e=>"ImportBinding"===e.type))}function ft(e,t){return t.moduleScope.set.get(e)}function mt(e){return e.scopes.find((e=>"module"===e.type))??e.globalScope}function ht(e,t,n){const o={scopeAnalysis:t,unsupportedAliases:gt(e,t)},r=[];return ut(e,o,{CallExpression(e,{state:t}){(function(e,t,n){const o=e.callee;if("Identifier"===o.type){if(vt(o,t.unsupportedAliases,t.scopeAnalysis))throw St(n,"action-catalog call aliases");if(vt(o,t.scopeAnalysis.actionFunctions,t.scopeAnalysis)){if(e.optional)throw St(n,"optional action-catalog calls");return!0}return!1}if("MemberExpression"!==o.type)return!1;if(!yt(o,t.scopeAnalysis))return!1;if(e.optional||wt(o))throw St(n,"optional or computed action-catalog namespace calls");return!0})(e,t,n)&&r.push(e)}}),r}function gt(e,t){const n=new Set;return ut(e,t,{VariableDeclarator(e,{state:t}){for(const o of function(e,t){if("Identifier"===e.id.type&&"Identifier"===e.init?.type&&vt(e.init,t.actionFunctions,t))return kt(e,t,[e.id.name]);if("Identifier"===e.id.type&&"MemberExpression"===e.init?.type&&yt(e.init,t))return kt(e,t,[e.id.name]);if("ObjectPattern"!==e.id.type||"Identifier"!==e.init?.type||!vt(e.init,t.actionNamespaces,t))return[];const n=e.id.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:xt(e.value))).map((e=>e.name));return kt(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&&vt(e.right,t.actionFunctions,t))return $t([e.left],t);if("Identifier"===e.left.type&&"MemberExpression"===e.right.type&&yt(e.right,t))return $t([e.left],t);if("ObjectPattern"!==e.left.type||"Identifier"!==e.right.type||!vt(e.right,t.actionNamespaces,t))return[];const n=e.left.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:xt(e.value)));return $t(n,t)}(e,t))n.add(o)}}),n}function yt(e,t){const n=bt(e);return!!n&&vt(n,t.actionNamespaces,t)}function bt(e){return"Identifier"===e.object.type?e.object:"MemberExpression"===e.object.type?bt(e.object):void 0}function wt(e){return!(!e.optional&&!e.computed)||"MemberExpression"===e.object.type&&wt(e.object)}function vt(e,t,n){return function(e,t,n){const o=lt(e,n);return!!o&&t.has(o)}(e,t,n.moduleScope)}function $t(e,t){return e.flatMap((e=>{const n=lt(e,t.moduleScope);return n?[n]:[]}))}function kt(e,t,n){const o=new Set(n);return t.moduleScope.scopeManager.getDeclaredVariables(e).filter((e=>o.has(e.name)))}function xt(e){switch(e.type){case"Identifier":return[e];case"ObjectPattern":return e.properties.flatMap((e=>"RestElement"===e.type?xt(e.argument):xt(e.value)));case"ArrayPattern":return e.elements.flatMap((e=>e?xt(e):[]));case"RestElement":return xt(e.argument);case"AssignmentPattern":return xt(e.left);case"MemberExpression":return[]}}function St(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const Et="@datadog/action-catalog";function It(e,t,n){const o=e.get(t);if(!o)return Ct(t,[],n.name);const r=lt(n,o.scopeAnalysis);return r?function(e,t){return t.defs.some((t=>t.name===e))}(n,r)?Tt(t,[],n.name):Pt({modules:e,visitedExports:new Set},t,r,[]):Tt(t,[],n.name)}function Dt(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 Mt(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?Mt(t.id,r,n):Dt(e,o.resolvedId,o.importedName,[...r,{kind:"re-export",moduleId:t.id,exportName:n,sourceModuleId:o.resolvedId,sourceExportName:o.importedName}]);return Pt(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=Dt(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||!At(r,s)){if(r)return jt(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 At(e,t){return e.moduleId===t.moduleId&&e.variable===t.variable}function Pt(e,t,n,o){const r=e.modules.get(t);if(!r)return Ct(t,o,n.name);const i=r.importsByVariable.get(n);if(i)return function(e,t,n,o,r){if("default"===o.kind)return Ot(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 Ot(t,r,n);return Dt(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 jt(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 Mt(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 Ot(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 Ct(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 Tt(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 Nt(e,t,n){const o=Kt(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=It(e.modules,t,n);if("unsupported"===o.kind)return tn(o,n.name);if(!o.binding.expression)return nn(o.moduleId,o.variable.name);if(e.seenVariables.has(o.variable))return Yt(o.moduleId,o.variable.name);e.seenVariables.add(o.variable);try{return Nt(e,o.moduleId,o.binding.expression)}finally{e.seenVariables.delete(o.variable)}}(e,t,o);case"MemberExpression":return function(e,t,n){const o=Rt(e,t,n);if("unsupported"===o.kind)return o;return Nt(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 Rt(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=_t(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 en(e);if(r.computed)return Gt(e);if(Ht(r)===n){if(o)return Qt(e,n);if("init"!==r.kind)return Jt(e,n);if(!Ft(r))return Xt(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 _t(e,t,n){if("Super"===n.type)return Zt(t,n.type);const o=Kt(n);if("ObjectExpression"===o.type)return{kind:"resolved",moduleId:t,expression:o};if("MemberExpression"===o.type){const n=Rt(e,t,o);return"unsupported"===n.kind?n:_t(e,n.moduleId,n.expression)}if("Identifier"!==o.type)return Zt(t,o.type);const r=It(e.modules,t,o);if("unsupported"===r.kind)return tn(r,o.name);if(!r.binding.expression)return nn(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 Yt(r.moduleId,r.variable.name);e.seenVariables.add(r.variable);try{return _t(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 zt(e){const t=new Set;for(const n of e.values())ut(n.ast,{modules:e,mutatedVariables:t,record:n},{AssignmentExpression(e,{state:t}){qt(e.left,t)},UpdateExpression(e,{state:t}){qt(e.argument,t)},UnaryExpression(e,{state:t}){"delete"===e.operator&&qt(e.argument,t)},ForInStatement(e,{state:t}){Lt(e.left,t)},ForOfStatement(e,{state:t}){Lt(e.left,t)}});return t}function Lt(e,t){"VariableDeclaration"!==e.type&&qt(e,t)}function qt(e,t){if("Identifier"!==e.type)if("MemberExpression"!==e.type)if("ObjectPattern"!==e.type)if("ArrayPattern"!==e.type)"RestElement"!==e.type?"AssignmentPattern"===e.type&&qt(e.left,t):qt(e.argument,t);else for(const n of e.elements)n&&qt(n,t);else for(const n of e.properties)qt("RestElement"===n.type?n.argument:n.value,t);else{const n=Vt(e);n&&Ut(n,t)}else Ut(e,t)}function Ut(e,t){const n=Bt(t,e,new Set);n&&t.mutatedVariables.add(n)}function Bt(e,t,n){const o=lt(t,e.record.scopeAnalysis);if(!o||n.has(o))return;if(n.add(o),pt(o)){const n=It(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=Kt(e);if("Identifier"===t.type)return t;if("MemberExpression"===t.type)return Vt(t);return}(r);return i?Bt(e,i,n):void 0}function Vt(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?Vt(e.object):void 0}function Ht(e){return"Identifier"===e.key.type?e.key.name:"Literal"===e.key.type&&"string"==typeof e.key.value?e.key.value:void 0}function Kt(e){let t=e;for(;Wt(t);)t=t.expression;return t}function Wt(e){const t=e.type;return("TSAsExpression"===t||"TSSatisfiesExpression"===t||"TSNonNullExpression"===t||"TSTypeAssertion"===t)&&!!e.expression}function Jt(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 Gt(e){return{kind:"unsupported",moduleId:e,reason:"computed-object-property",message:`Computed object properties in module '${e}' cannot be resolved to static strings.`}}function Yt(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 Qt(e,t){return{kind:"unsupported",moduleId:e,reason:"duplicate-object-property",propertyName:t,message:`Static object in module '${e}' has duplicate property '${t}'.`}}function Zt(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 Xt(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 en(e){return{kind:"unsupported",moduleId:e,reason:"object-spread",message:`Object spreads in module '${e}' cannot be resolved to static strings.`}}function tn(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 nn(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 on=new Set(["node_modules",".yarn"]);function rn(e,t,n,o=[]){if(!xn(e,t))return null;const r=Ye(n,e),i=dt(r),s=function(e,t){const n=function(e){return e.body.flatMap((e=>("ImportDeclaration"===e.type||"ExportNamedDeclaration"===e.type||"ExportAllDeclaration"===e.type)&&e.source&&Qe(e.source)?[e.source.value]:[]))}(e);return t.map(((e,t)=>({source:n[t]??e,resolvedId:e})))}(r,o);return{id:e,ast:r,scopeAnalysis:i,staticDependencies:s,unsupportedDependencies:$n(r),importsByVariable:sn(r,i,s),exportsByName:an(r,i,s),starExports:dn(r,s),topLevelBindingsByVariable:ln(r,i)}}function sn(e,t,n){const o=new Map;for(const r of e.body){if("ImportDeclaration"!==r.type||!Qe(r.source))continue;const e=vn(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:bn(n.imported),resolvedId:e}))}}return o}function an(e,t,n){const o=new Map;for(const r of e.body)"ExportNamedDeclaration"!==r.type?"ExportDefaultDeclaration"!==r.type?"ExportAllDeclaration"===r.type&&cn(r,n,o):o.set("default",{kind:"unsupported",reason:"default export"}):un(r,t,n,o);return o}function un(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&&Qe(e.source)){const t=vn(n,e.source.value);for(const n of e.specifiers){if("ExportSpecifier"!==n.type)continue;const e=bn(n.exported);"default"!==e?o.set(e,{kind:"re-export",importedName:bn(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=bn(n.exported);if("default"===e){o.set(e,{kind:"unsupported",reason:"default export"});continue}const r=ft(bn(n.local),t);o.set(e,r?{kind:"local",variable:r}:{kind:"unsupported",reason:"unresolved local export"})}}function cn(e,t,n){const o=wn(e);o&&Qe(e.source)&&n.set(o,{kind:"unsupported",reason:"namespace re-export",resolvedId:vn(t,e.source.value)})}function dn(e,t){return e.body.flatMap((e=>"ExportAllDeclaration"!==e.type||wn(e)||!Qe(e.source)?[]:[{resolvedId:vn(t,e.source.value)}]))}function ln(e,t){const n=new Map;for(const o of e.body)pn(o,t,n);return function(e,t,n){ut(e,{scopeAnalysis:t,bindings:n},{AssignmentExpression(e,{state:t}){hn(e.left,t.scopeAnalysis,t.bindings)},UpdateExpression(e,{state:t}){hn(e.argument,t.scopeAnalysis,t.bindings)},UnaryExpression(e,{state:t}){"delete"===e.operator&&hn(e.argument,t.scopeAnalysis,t.bindings)},ForInStatement(e,{state:t}){mn(e.left,t.scopeAnalysis,t.bindings)},ForOfStatement(e,{state:t}){mn(e.left,t.scopeAnalysis,t.bindings)}})}(e,t,n),n}function pn(e,t,n){if("VariableDeclaration"===e.type)return void fn(e,t,n);if("ExportNamedDeclaration"===e.type&&"VariableDeclaration"===e.declaration?.type)return void fn(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 fn(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 mn(e,t,n){"VariableDeclaration"!==e.type&&hn(e,t,n)}function hn(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&&hn(e.left,t,n):hn(e.argument,t,n);else for(const o of e.elements)o&&hn(o,t,n);else for(const o of e.properties)hn("RestElement"===o.type?o.argument:o.value,t,n);else{const o=yn(e);o&&gn(o,t,n,"mutated object binding")}else gn(e,t,n,"reassigned binding")}function gn(e,t,n,o){const r=lt(e,t);if(!r||pt(r)||!n.has(r))return;const i=n.get(r);"mutable"!==i?.kind&&n.set(r,{kind:"unsupported",reason:o})}function yn(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?yn(e.object):void 0}function bn(e){return"Identifier"===e.type?e.name:String(e.value)}function wn(e){const t=e.exported;return t?bn(t):void 0}function vn(e,t){return e.find((e=>e.source===t))?.resolvedId??t}function $n(e){const t=[];return ut(e,t,{ImportExpression(e,{state:t}){const n=function(e){return En(e.source,"non-literal dynamic import")}(e);kn(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);kn(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||!Qe(t)||In(t.value)})(e)&&t.push({specifier:Sn(e),kind:"require"})}}),t}function kn(e){return"non-literal dynamic import"===e||In(e)}function xn(e,t){if(!he.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=>on.has(e)))}function Sn(e){return En(e.arguments[0],"local require")}function En(e,t){return Qe(e)?e.value:t}function In(e){return e.startsWith(".")||e.startsWith("/")}function Dn(e,t){return new Error(`Unsupported local module graph for ${e}: ${t} could hide an action-catalog connectionId.`)}function An(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 Dn(e,`missing module record for ${s}`);o({entryId:e,moduleId:s,record:a});for(const t of a.unsupportedDependencies)throw Dn(e,`${t.kind} ${t.specifier}`);for(const o of a.staticDependencies){const i=o.resolvedId;if(xn(i,n)){if(!t.has(i))throw Dn(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}/`))&&!Ze(r))for(const e of r.specifiers)Ze(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)pt(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 ht(e.ast,r,e.id)){const r=Pn(n,t,e);r&&o.add(r)}})),[...o].sort()}function Pn(e,t,n){const[o]=e.arguments;if(!o||"ObjectExpression"!==o.type)throw On(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 On(t,"spread object arguments");if(o.computed)throw On(t,"computed object property keys");if(Mn(o)){if(n)throw On(t,"multiple connectionId properties");if("init"!==o.kind)throw On(t,"accessor connectionId properties");if(!jn(o))throw On(t,"destructuring pattern in connectionId value");n=o}}return n}(o,n.id);if(!r)return;const i=function(e,t,n){return Nt({modules:e,mutatedImportedObjectVariables:zt(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 jn(e){const{value:t}=e;return"ObjectPattern"!==t.type&&"ArrayPattern"!==t.type&&"RestElement"!==t.type&&"AssignmentPattern"!==t.type}function Mn(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 On(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const Cn=/^(?:\0|virtual:)/;function Tn(e){const t=new Map;return{plugin:{name:"dd-backend-module-graph-collector",moduleParsed(n){const o=Nn(n.id);if(r=o,Cn.test(r))return;var r;if(!xn(o,e))return;if("string"!=typeof n.code)return;let i;try{i=this.parse(n.code)}catch(e){throw Dn(o,`unparseable module source (${e instanceof Error?e.message:String(e)})`)}const s=rn(o,e,i,function(e){return e.importedIdResolutions?.map((({id:e})=>e))??[...e.importedIds]}(n).map(Nn));s&&t.set(s.id,s)}},getModuleRecords:()=>t}}function Nn(e){return e.split("?")[0]}function Rn(e,t){const n=Tn(t);return{plugin:n.plugin,getAllowedConnectionIds:()=>An(e,n.getModuleRecords(),t)}}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",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:[...he,".json"]},plugins:[_n("dd-backend-resolve",t),...n]}}function zn(e){return`${e.relativePath}/${e.name}`}async function Ln(e,t,n,o){const r=zn(t),i=`virtual:dd-backend-dev:${r}`,s=function(e,t,n){return at(e,t,n??process.cwd())}(t.name,t.absolutePath,n),a=Rn(t.absolutePath,n);o.debug(`Bundling backend function "${r}" from ${t.absolutePath}`);const u=Fn(n,{[i]:s},[a.plugin]),c=await e({...u,build:{...u.build,write:!1,rollupOptions:{...u.build.rollupOptions,input:i,output:u.build.rollupOptions.output}}}),d=Array.isArray(c)?c[0]:c;if(!("output"in d))throw new Error(`Unexpected vite.build result for "${r}"`);const l="chunk"===d.output[0].type?d.output[0].code:"",p={...t,allowedConnectionIds:a.getAllowedConnectionIds()};return o.debug(`Bundled "${r}" (${l.length} bytes)`),{func:p,code:l}}async function qn(e,t,n,o,r,i){const s=`https://api.${o.site}/api/v2/app-builder/queries/preview-async`,a=zn(t);i.debug(`Calling Datadog API: ${s}`);const u=JSON.stringify({data:{type:"queries",attributes:{query:{id:d.randomUUID(),name:a,type:"action",properties:{spec:{fqn:"com.datadoghq.datatransformation.jsFunctionWithActions",inputs:{script:e,allowedConnectionIds:t.allowedConnectionIds,context:{backendFunctionArgs:n}}},onlyTriggerManually:!0}},template_params:{}}}}),c=await r({url:s,method:"POST",type:"json",getData:()=>({data:u,headers:{"Content-Type":"application/json"}})}),l=c.data?.id;if(!l)throw new Error("No receipt ID returned from Datadog API");return i.debug(`Query execution started with receipt: ${l}`),async function(e,t,n,o){const r=`https://api.${t.site}/api/v2/app-builder/queries/execution-long-polling/${e}`,i=10;for(let e=0;e<i;e++){o.debug(`Long-poll attempt ${e+1}/${i}...`);const t=await n({url:r,type:"json"});if(t.errors?.length){const e=t.errors.map((e=>e.detail||e.title)).join("; ");throw new Error(`Query execution failed: ${e}`)}const s=t.data?.attributes;if(o.debug(`Long-poll response, done: ${s?.done}`),s?.done){if(!s.outputs)throw new Error("Query execution completed without outputs");return s.outputs}}throw new Error("Query execution timed out")}(l,o,r,i)}function Un(e,t,n){e.statusCode=t,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({success:!1,error:n}))}class Bn extends Error{constructor(e,t){super(t),this.statusCode=e}}async function Vn(e,t,n){const{functionName:o,args:r=[]}=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(!o||"string"!=typeof o)throw new Bn(400,"Missing or invalid functionName");const i=t.get(o);if(!i)throw new Bn(404,`Backend function "${o}" not found`);return{...await n(i),args:r}}function Hn(e,t,n,o,r,i){const s=t=>Ln(e,t,r,i),a=t();return a.length>0&&i.info(`Dev server middleware active for ${a.length} backend function(s): ${a.map((e=>e.name)).join(", ")}`),o||i.warn(`Auth credentials not configured. The /__dd/executeAction endpoint will be unavailable. ${We}`),(e,r,a)=>{if("POST"!==e.method)return void a();const u=(c=t(),new Map(c.map((e=>[rt(e),e]))));var c;if("/__dd/debugBundle"===e.url)(async function(e,t,n,o){try{const{code:r}=await Vn(e,n,o);t.statusCode=200,t.setHeader("Content-Type","text/plain"),t.end(r)}catch(e){Un(t,e instanceof Bn?e.statusCode:500,e instanceof Error?e.message:"Internal server error")}})(e,r,u,s).catch((()=>{Un(r,500,"Unexpected error")}));else if("/__dd/executeAction"===e.url){if(!o)return void Un(r,400,`Auth credentials not configured. ${We}`);(async function(e,t,n,o,r,i,s){try{const{func:a,code:u,args:c}=await Vn(e,n,o),d=zn(a);s.debug(`Executing action: ${d} with args`);const l=await qn(u,a,c,r,i,s);t.statusCode=200,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({success:!0,result:l}))}catch(e){const n=e instanceof Bn?e.statusCode:500,o=e instanceof Error?e.message:"Internal server error";s.debug(`Error handling executeAction: ${o}`),Un(t,n,o)}})(e,r,u,s,n,o,i).catch((()=>{Un(r,500,"Unexpected error")}))}else a()}}const Kn=async(e,t)=>{const n=(await Promise.all(e.map((e=>h.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("/")}}))},Wn=(e,t)=>K(t)?I:t.startsWith(e)||a.isAbsolute(t)?t:a.resolve(e,t),Jn=(e,t)=>{let n,o=Wn(process.cwd(),e);for(;!n;){const e=a.resolve(o,t);if(ke(e)&&(n=e),o=o.split(a.sep).slice(0,-1).join(a.sep),[a.sep,""].includes(o))break}return n},Gn=(e,t)=>{const n=[...e].map((e=>Wn(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},Yn=t.bold.red,Qn=t.bold.yellow,Zn=e=>{const t=Jn(e,"package.json");if(t)try{const e=$e(t);return JSON.parse(e)}catch(e){return}},Xn=(e,t,n)=>{if(n?.name&&n?.identifier)return{identifier:n?.identifier,name:n.name};const o=Zn(e);o||t.warn(Qn("No package.json found to infer the app name."));const r=n?.name||o?.name?.trim();r||t.error(Yn("Unable to determine the app name to compute the app identifier."));const i=((e,t)=>{const n=e||(e=>{if(e&&e.repository)return"string"==typeof e.repository?e.repository:"url"in e.repository?e.repository.url:void 0})(t);if(!n)return;const o=Q(n.trim());return o?o.replace(/\.git$/,""):void 0})(n?.url,o);i||t.error(Yn("Unable to determine the git remote to compute the app identifier."));const s=n?.identifier||((e,t)=>{if(!e||!t)return;const n=`${e}:${t}`;return d.createHash("sha256").update(n).digest("hex").slice(0,32)})(i,r);return s&&r||t.error(Yn("Unable to compute the app identifier.")),{identifier:s,name:r}},eo=t.green.bold,to=t.yellow.bold,no=t.cyan.bold,oo=t.bold,ro=(e,t,n,o,r)=>{if(o)return o;if(!r)return;return`https://${n??"app"}.${t}${"upload"===e?`/app-builder/apps/edit/${r}?viewMode=preview`:`/app-builder/apps/${r}`}`},io=(e,t)=>`Could not resolve the App Builder URL for this ${e} — find "${t}" in your App Builder apps list to view it.`,so=(e,t={},n)=>async()=>{const o=await xe(e,{contentType:"application/zip",filename:fe});return q({getForm:()=>{const e=new FormData;e.append("name",n),e.append("bundle",o,fe);const t=N("APPS_VERSION_NAME")?.trim();return t&&e.append("version",t),e},defaultHeaders:t,zip:!1})},ao=async(e,t,n)=>{const o=[],r=[],i=t.doAuthenticatedRequest;if(!t.identifier)return o.push(new Error("No app identifier provided")),{errors:o,warnings:r};const s=(a=t.site,c=t.identifier,N("APPS_INTAKE_URL")||`https://api.${a}/${pe}/${c}/upload`);var a,c;const d=L({bundler:t.bundlerName,plugin:"apps",version:t.version}),l=X({identifier:t.identifier,intakeUrl:s,defaultHeaders:`\n${JSON.stringify(d,null,2)}`}),p=`an archive of:\n - ${eo(e.assets.length.toString())} files\n - ${eo(g(e.size))}\n\nWith the configuration:\n${l}`;if(t.dryRun)return n.error(`\n${no("Dry run enabled")}\n\nSkipping assets upload.\nWould have uploaded ${p}`),{errors:o,warnings:r};try{const o=await i({url:s,method:"POST",type:"json",getData:so(e.archivePath,d,t.name),onRetry:(e,t)=>{const o=`Failed to upload archive (attempt ${to(`${t}/5`)}): ${e.message}`;r.push(o),n.warn(o)}});n.debug(`Uploaded ${p}\n`);const a=ro("upload",t.site,t.siteSubdomain,o.app_builder_url,o.app_builder_id);if(a)n.info(`Your application is available at:\n ${no(a)}`);else{const e=io("upload",t.name);r.push(e),n.warn(e)}const c=R(N("APPS_PUBLISH"),!0);if(o.version_id&&c){const e=((e,t)=>`https://api.${e}/${pe}/${t}/release/live`)(t.site,t.identifier),s=await i({url:e,method:"PUT",type:"json",getData:async()=>({data:u.Readable.from(JSON.stringify({version_id:o.version_id})),headers:{"Content-Type":"application/json",...d}}),onRetry:(e,t)=>{const o=`Failed to release version (attempt ${to(`${t}/5`)}): ${e.message}`;r.push(o),n.warn(o)}}),a=ro("release",t.site,t.siteSubdomain,s.app_builder_url,s.app_builder_id??o.app_builder_id);if(a)n.info(`Published uploaded version ${oo(o.version_id)} to live.\n ${no(a)}`);else{n.info(`Published uploaded version ${oo(o.version_id)} to live.`);const e=io("release",t.name);r.push(e),n.warn(e)}}else o.version_id&&!c&&n.info(`Uploaded version ${oo(o.version_id)} as a draft (publish skipped).`)}catch(e){const t=e instanceof Error?e:new Error(String(e));o.push(t)}return{errors:o,warnings:r}},uo=t.yellow.bold,co=t.red.bold,lo="manifest.json";async function po(e,t){const n=await r.mkdtemp(a.join(p.tmpdir(),"dd-apps-manifest-")),o=a.join(n,lo);try{await r.writeFile(o,JSON.stringify(function(e,t){const n={};for(const t of e)n[rt(t)]={allowedConnectionIds:[...t.allowedConnectionIds]};const o={backend:{functions:n}};null!=t.description&&(o.description=t.description),null!=t.selfService&&(o.selfService=t.selfService);const r=t.permissions?.protectionLevel??null,i=t.permissions?.runAs??null;return null==r&&null==i||(o.permissions={...null!=r&&{protectionLevel:r},...null!=i&&{runAs:i}}),o}(e,t),null,2))}catch(e){throw await be(n),e}return{manifestAsset:{absolutePath:o,relativePath:lo},cleanup:()=>be(n)}}const fo=async({backendOutputs:e,backendFunctions:t,context:n,doAuthenticatedRequest:o,options:s})=>{const u=n.getLogger(le),{auth:c,buildRoot:d,bundler:{name:l,outDir:f},git:h,version:g}=n,y=u.time("handle assets");let b,w,v;try{const n=u.time("resolve identifier"),{name:y,identifier:v}=Xn(d,u,{url:h?.remote,name:s.name,identifier:s.identifier});if(!v||!y)throw new Error("Missing apps identification.\nEither:\n - pass an 'options.apps.identifier' and 'options.apps.name' to your plugin's configuration.\n - have a 'name' and a 'repository' in your 'package.json'.\n - have a valid remote url on your git project.\n");n.end();const $=a.relative(d,f),k=[...s.include,`${$}/**/*`],x=await Kn(k,d);if(!x.length)return void u.debug("No assets to upload.");const S=new Set(e.values()),E=x.filter((e=>!S.has(e.absolutePath))).map((e=>({...e,relativePath:`frontend/${e.relativePath}`})));for(const[t,n]of e)E.push({absolutePath:n,relativePath:`backend/${t}.js`});const{manifestAsset:I,cleanup:D}=await po(t,s);w=D,E.push(I);const A=u.time("archive assets"),P=await(async e=>{const t=await r.mkdtemp(a.join(p.tmpdir(),"dd-apps-")),n=a.join(t,fe),o=new m;for(const t of e)o.file(t.relativePath,i.createReadStream(t.absolutePath),{binary:!0,compression:"DEFLATE",compressionOptions:{level:9}});await new Promise(((e,t)=>{const r=i.createWriteStream(n),s=o.generateNodeStream({type:"nodebuffer",streamFiles:!0,compression:"DEFLATE",compressionOptions:{level:9}});s.on("error",t),r.on("error",t),r.on("close",e),s.pipe(r)}));const{size:s}=await r.stat(n);return{archivePath:n,size:s,assets:e}})(E);A.end(),b=a.dirname(P.archivePath);const j=u.time("upload assets"),{errors:M,warnings:O}=await ao(P,{bundlerName:l,doAuthenticatedRequest:o,dryRun:s.dryRun,identifier:v,name:y,site:c.site,siteSubdomain:c.siteSubdomain,version:g},u);if(j.end(),O.length>0&&u.warn(`${uo("Warnings while uploading assets:")}\n - ${O.join("\n - ")}`),M.length>0){const e=M.map((e=>{const t=e.cause instanceof Error?e.cause.message:e.cause,n=e.message||e.stack||String(e);return t?`${t}\n${n}`:n})).join("\n - ");throw new Error(` - ${e}`)}}catch(e){v=e,u.error(`${co("Failed to upload assets:")}\n${e?.message||e}`)}if(b&&await be(b),w&&await w(),y.end(),v)throw v};const mo=a.join(__dirname,"./apps-runtime.mjs"),ho=async()=>{throw new Error("Dry run should not perform authenticated requests.")},go=({bundler:e,context:t,options:n})=>{const o=t.getLogger(le),{auth:i}=t;t.inject({type:"file",position:Ee.MIDDLE,value:mo});const{setBackendFunctions:s,getBackendFunctions:u}=function(){const e=new Map;return{setBackendFunctions(t,n){e.set(t,n)},getBackendFunctions:()=>Array.from(e.values()).flat()}}();return{transform:{filter:{id:{include:[me],exclude:[/node_modules/,/[/\\]dist[/\\]/]}},handler(e,n){const r=Xe(this.parse(e),n);if(0===r.length)return o.warn(`Backend file ${n} has no exported functions. Did you forget to add a named export?`),s(n,[]),{code:"",map:null};const{functions:i,proxyCode:u}=function(e,t,n){const o=a.relative(n,t).replace(me,""),r=[],i=[];for(const n of e){const e={relativePath:o,name:n,absolutePath:t,allowedConnectionIds:[]};r.push(e),i.push({exportName:n,queryName:rt(e)})}return{functions:r,proxyCode:it(i)}}(r,n,t.buildRoot);return s(n,i),o.debug(`Generated proxy for ${n} with ${i.length} export(s)`),{code:u,map:null}}},async closeBundle(){let s,c=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()`);for(const r of t){const t=rt(r),c=`\0dd-backend:${t}`,d=at(r.name,r.absolutePath,n),l=Rn(r.absolutePath,n),p=Fn(n,{[c]:d},[l.plugin]),f=await e({...p,build:{...p.build,write:!0,outDir:i,emptyOutDir:!1,rollupOptions:{...p.build.rollupOptions,input:{[t]:c},output:{...p.build.rollupOptions.output,entryFileNames:"[name].js"}}}}),m=Array.isArray(f)?f[0]:f;if("output"in m)for(const e of m.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())}return{outDir:i,outputs:s,functions:t.map((e=>({...e,allowedConnectionIds:u.get(e.absolutePath)})))}}(e.build,d,t.buildRoot,o);s=n.outDir,c=n.outputs,d=n.functions}try{const e=n.dryRun?ho:Ge(n.authOverrides.method,i,o);await fo({backendOutputs:c,backendFunctions:d,context:t,doAuthenticatedRequest:e,options:n})}finally{s&&await be(s)}},configureServer(r){let s;try{s=Ge(n.authOverrides.method,i,o)}catch(e){if(!(e instanceof Je))throw e}r.middlewares.use(Hn(e.build,u,i,s,t.buildRoot,o))}}},yo=({options:e,context:t,bundler:n})=>{const o=t.getLogger(le),r=ye(e);return"vite"!==t.bundler.name?(o.warn(`The apps plugin only supports Vite; skipping under '${t.bundler.name}'.`),[]):[{name:le,enforce:"post",vite:go({bundler:n,context:t,options:r})}]},bo="errorTracking",wo="datadog-error-tracking-plugin",vo=(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}},$o=/"?ddDebugId"?:"([0-9a-fA-F-]{36})"/,ko=async e=>{const t=await(async e=>{const t=await r.open(e,"r");try{const e=Buffer.alloc(1024),{bytesRead:n}=await t.read(e,0,1024,0);return e.toString("utf-8",0,n)}finally{await t.close()}})(e).catch((()=>{}));return t?(e=>$o.exec(e)?.[1])(t):void 0},xo=/[/]+|[\\]+/g,So=/^[/]+|^[\\]+|[/]+$|[\\]+$/g,Eo=(e,t)=>{const n=e.replace(So,"").split(xo),o=t.replace(So,"").split(xo),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},Io=async(e,t,n,o,r)=>{const i=await(async(e,t)=>{const[n,o]=await Promise.all([Se(e.minifiedFilePath),Se(e.sourcemapFilePath)]);return{file:n,sourcemap:o,repeatedPrefix:Eo(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}},Do=e=>{const t=e.message.match(/HTTP (\d{3})/);return t?`status_code:${t[1]}`:"status_code:unknown"},Ao=e=>{const t=Do(e);return"status_code:unknown"!==t?`error_type:http_${t.replace("status_code:","")}`:`error_type:${Z(e.name||"unknown")}`},Po=(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})},jo=(e,t,n)=>{Po(e,"retry",[...e.baseTags,`attempt:${n}`,Do(t),Ao(t)])},Mo=(e,t)=>{Po(e,"failure",[...e.baseTags,Do(t),Ao(t)])},Oo=(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)},Co=t.green.bold,To=t.yellow.bold,No=t.red.bold,Ro=(e,t={})=>async()=>q({getForm:async()=>{const t=new FormData;for(const[n,o]of e.content){const e="file"===o.type?await xe(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}),_o=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(y.default?y.default:y)({concurrency:t.maxConcurrency}),u=(c=n.site,N("SOURCEMAP_INTAKE_URL")||`https://sourcemap-intake.${c}/api/v2/srcmap`);var c;const d=L({bundler:n.bundlerName,plugin:"sourcemaps",version:n.version}),l=(e=>({metrics:new Map,baseTags:[`service:${e.service}`]}))(t),p=X({...t,intakeUrl:u,outDir:n.outDir,defaultHeaders:`\n${JSON.stringify(d,null,2)}`}),f=`\nUploading ${Co(e.length.toString())} sourcemaps with configuration:\n${p}`;o.debug(f);const m=[];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,".")};m.push(a.add((async()=>{try{await B({auth:{apiKey:n.apiKey},url:u,method:"POST",getData:Ro(s,d),onRetry:(t,n)=>{jo(l,t,n);const r=`Failed to upload ${To(e.sourcemap)} | ${To(e.file)}:\n ${t.message}\nRetrying ${n}/5`;i.push(r),o.debug(r)}})}catch(n){if(Mo(l,n),r.push({metadata:e,error:n}),!0===t.bailOnError)throw n}})))}s.end(),o.debug(`Queued ${Co(e.length.toString())} uploads.`);try{await Promise.all(m),await a.onIdle()}finally{Oo(l,n)}return{warnings:i,errors:r}},Fo=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=>({...vo(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(y.default?y.default:y)({concurrency:t.maxConcurrency});let c=0;const d=await u.addAll(e.map((e=>async()=>{const t=await ko(e.minifiedFilePath);return t&&(c+=1),Io(e,s,i,n.git,t)})));a.end(),o.debug(`Extracted debug_id for ${Co(`${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:h}=await _o(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 ${Co(`${e.length-m.length}/${e.length}`)} sourcemaps in ${Co(G(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?`${No(e.file)} | ${No(e.sourcemap)} :\n${n}`:n})).join("\n - ")}`;if(o.error(e),!0===t.bailOnError)throw new Error(e)}h.length>0&&o.warn(`Warnings while uploading sourcemaps:\n - ${h.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()},zo=e=>{const n=t.bold.red,o=e[bo]||{},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},Lo=({options:e,context:t})=>{const n=t.getLogger(wo),o=n.time("validate options"),r=((e,t)=>{const n=[],o=zo(e);if(n.push(...o.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${wo}.`);return{...e[bo],sourcemaps:o.config}})(e,n);o.end();const i=ce(e,"metrics",n);let s,a,u=!1;const c=async()=>{if(!r.sourcemaps||u)return;u=!0;const e=n.time("sourcemaps process");await Fo(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()};return[{name:wo,enforce:"post",async git(e){s=e,a&&await c()},async buildReport(t){a=t,!s&&J(e)||await c()},async asyncTrueEnd(){u||await c()}}]},qo="liveDebugger",Uo="datadog-live-debugger-plugin",Bo="if(typeof globalThis.$dd_probes==='undefined'){globalThis.$dd_probes=function(){}}",Vo="__DD_LIVE_DEBUGGER_BUILD__",Ho=e=>void 0===e?Bo:`${Bo};if(typeof globalThis.${Vo}==='undefined'){globalThis.${Vo}={version:${JSON.stringify(e)}}}`;function Ko(e){return"function"==typeof e?e:e.default}function Wo(e,t,n,o,r){const i=a.relative(t,e).replace(/\\/g,"/"),s=Jo(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 Jo(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)?Qo(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=Go(e.object,t),o=Yo(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)?Qo(o.key,t):null}function Go(e,t){if(t.isIdentifier(e))return e.name;if(t.isThisExpression(e))return"this";if(t.isMemberExpression(e)||t.isOptionalMemberExpression(e)){const n=Go(e.object,t),o=Yo(e.property,e.computed,t);if(n&&o)return`${n}.${o}`}return null}function Yo(e,t,n){return n.isPrivateName(e)&&n.isIdentifier(e.id)?`#${e.id.name}`:t?null:n.isIdentifier(e)?e.name:null}function Qo(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 Zo(e,t){if(e.node.leadingComments)for(const n of e.node.leadingComments)if(n.value.includes(t))return!0;return!1}function Xo(e,t){const n=[];if(t.isBlockStatement(e.body)){const o=e.params.flatMap((e=>ir(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 ir(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)er(r,t,o,n);return o}(e.body,r,t);for(const e of o)e.temporalDeadZones=i.get(e.name)??[]}return o}function er(e,t,n,o){o.isFunctionDeclaration(e)||o.isClassDeclaration(e)||(o.isBlockStatement(e)?tr(e,t,n,o):o.isIfStatement(e)?(er(e.consequent,t,n,o),e.alternate&&er(e.alternate,t,n,o)):o.isForStatement(e)||o.isForInStatement(e)||o.isForOfStatement(e)||o.isWhileStatement(e)||o.isDoWhileStatement(e)?er(e.body,t,n,o):o.isSwitchStatement(e)?function(e,t,n,o){for(const r of e.cases){nr(r.consequent,e.start,t,n,o);for(const e of r.consequent)er(e,t,n,o)}}(e,t,n,o):o.isTryStatement(e)?(tr(e.block,t,n,o),e.handler&&tr(e.handler.body,t,n,o),e.finalizer&&tr(e.finalizer,t,n,o)):(o.isLabeledStatement(e)||o.isWithStatement(e))&&er(e.body,t,n,o))}function tr(e,t,n,o){nr(e.body,e.start,t,n,o);for(const r of e.body)er(r,t,n,o)}function nr(e,t,n,o,r){if(null!=t)for(const i of e)r.isVariableDeclaration(i)&&"var"!==i.kind?or(i,t,n,o,r):r.isClassDeclaration(i)&&i.id&&rr(i.id.name,t,i.end,n,o)}function or(e,t,n,o,r){for(const i of e.declarations)for(const s of ir(i.id,r))rr(s,t,e.end,n,o)}function rr(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 ir(e,t){return t.isIdentifier(e)?[e.name]:t.isRestElement(e)?t.isIdentifier(e.argument)?[e.argument.name]:ir(e.argument,t):t.isAssignmentPattern(e)?ir(e.left,t):t.isObjectPattern(e)?e.properties.flatMap((e=>t.isRestElement(e)?ir(e.argument,t):ir(e.value,t))):t.isArrayPattern(e)?e.elements.flatMap((e=>e?ir(e,t):[])):t.isTSParameterProperty(e)&&t.isIdentifier(e.parameter)?[e.parameter.name]:[]}const sr=["@babel/parser","@babel/traverse","@babel/types","magic-string"];let ar,ur,cr,dr,lr=!1;function pr(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 sr.some((t=>e.message.includes(t)))}(e))return e instanceof Error?e:new Error(String(e));const t=sr.find((t=>e.message.includes(t))),n=t??sr.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 ${sr.join(" ")}\` (or the yarn/pnpm/bun equivalent). Underlying error: ${e.message}`)}(e)}}const fr=/\bfunction\b|=>|\bclass\b|\)\s*\{/;function mr(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(!fr.test(t))return{code:t,failedCount:a,instrumentedCount:u,skippedByCommentCount:c,skippedFileCount:0,skippedUnsupportedCount:d,totalFunctions:l};lr||(ar=pr("@babel/parser").parse,ur=Ko(pr("@babel/traverse")),cr=pr("@babel/types"),dr=Ko(pr("magic-string")),lr=!0);const p=ar(t,{sourceType:"unambiguous",plugins:["jsx","typescript"],sourceFilename:n}),f=[],m=new Map,h=new Set,g=new Map,y=new Map;let b=0;if(ur(p,{Function(e){l++;const t=function(e,t){if(t.isClassMethod(e.node)&&"constructor"===e.node.kind&&$r(e,t))return e.node;return}(e,cr);if(t&&(m.set(t,t.body.start),g.set(t,function(e,t){const n=[];for(const o of e)yr(o,n,t);return n}(t.body.body,cr))),!function(e,t){const n=e.node;return!(n.generator||t.isClassMethod(n)&&"constructor"===n.kind)}(e,cr))return void d++;if(r&&function(e,t,n){let o=e;for(;o;){if(Zo(o,t))return!0;if(n.isStatement(o.node)||n.isExportDeclaration(o.node)){if(o.parentPath&&n.isExportDeclaration(o.parentPath.node))return Zo(o.parentPath,t);break}o=o.parentPath}return!1}(e,"@dd-no-instrumentation",cr))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,cr)))return void d++;if(s&&!Jo(e,cr))return void d++;let p=0;if(!Jo(e,cr)){const t=e.parentPath?.node;t&&(p=y.get(t)||0,y.set(t,p+1))}const w=Wo(n,o,e,p,cr);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 ir(o,t))"this"!==e&&n.push(e);return n.length>25?n.slice(0,25):n}(t,cr),i=Xo(t,cr),s=cr.isArrowFunctionExpression(t)&&!cr.isBlockStatement(t.body),a=s&&cr.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(!$r(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,cr),d=null!=c;c&&(h.add(c.node),m.set(c.node,c.node.body.start));const l=[],p=s||!cr.isBlockStatement(t.body)||!Sr(t.body.body,cr);let g;if(!s&&cr.isBlockStatement(t.body)&&xr(t.body.body,l,cr),!s&&cr.isBlockStatement(t.body)&&t.body.directives.length>0){g=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&&vr(t.body,cr),needsTrailingReturn:p,useThisAlias:d,bodyParenStart:s&&"number"==typeof t.body.extra?.parenStart?t.body.extra.parenStart:void 0,directivesEnd:g,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 dr(t),v=function(e){const t=new Set;for(const n of e)n.aliasesExpressionBodySuperCall&&t.add(wr({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(wr(e))))})}return r}(h,m,g,v);for(let e=f.length-1;e>=0;e--)hr(w,t,f[e]);for(const e of $)gr(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 hr(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:h,bodyParenStart:g,directivesEnd:y}=n,b=`$dd_e${r}`,w=`$dd_rv${r}`,v=h?"$dd_t":"this",$=s.join(", "),k=""!==$,x=k?`, ${b}()`:"";const S=`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}}))}');`,E=k?`const ${b} = () => ({${$}});`:"",I=`if (${o}) $dd_entry(${o}, ${v}${x});`,D=`catch(e) { if (${o}) $dd_throw(${o}, e, ${v}${x}); throw e; }`;if(p){if(null!=g){const n=function(e,t,n){const o=[];for(let r=t;r<n;r++)"("===e[r]&&o.push(r);return o}(t,g,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=["{",S,E,"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}${kr(b,k,a,d)});`,`return ${w};`,`} ${D}`,"}"].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=[S,E,"try {",`let ${w};`,I].filter(Boolean).join("\n");for(const t of u){const n=kr(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=kr(b,k,a,d),s=`\n${n.needsTrailingReturn?`if (${o}) $dd_return(${o}, undefined, ${v}${i});\n`:""}} ${D}\n`;e.update(d-1,d,`${s}${t[d-1]}`)}}function gr(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 yr(e,t,n){vr(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)br(o,t,n);else br(e,t,n)}function br(e,t,n){n.isNode(e)&&(n.isFunction(e)&&!n.isArrowFunctionExpression(e)||yr(e,t,n))}function wr(e){return`${e.start}:${e.end}`}function vr(e,t){return t.isCallExpression(e)&&t.isSuper(e.callee)}function $r(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 kr(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 xr(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))xr(o.body,t,n);else if(n.isIfStatement(o))xr([o.consequent],t,n),o.alternate&&xr([o.alternate],t,n);else if(n.isForStatement(o)||n.isForInStatement(o)||n.isForOfStatement(o)||n.isWhileStatement(o)||n.isDoWhileStatement(o))xr([o.body],t,n);else if(n.isSwitchStatement(o))for(const e of o.cases)xr(e.consequent,t,n);else n.isTryStatement(o)?(xr(o.block.body,t,n),o.handler&&xr(o.handler.body.body,t,n),o.finalizer&&xr(o.finalizer.body,t,n)):(n.isLabeledStatement(o)||n.isWithStatement(o))&&xr([o.body],t,n)}function Sr(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 Sr(e,t)&&Sr(o,t)}return!1}const Er=["functionDeclaration","functionExpression","arrowFunction","objectMethod","classMethod","classPrivateMethod"],Ir=t.bold.red,Dr=Number(process.env.DD_LD_LIMIT)||1/0,Ar=(e,t)=>{const n=t.getLogger(Uo);let o=0,r=0,i=0,s=0,a=0,u=0,c=0,d=0;return{name:Uo,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>=Dr)return{code:l};try{const f=mr({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),h=f.map&&m?function(e,t,n,o){try{return b(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:h}}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}})}}},Pr=({options:e,context:t})=>{const n=((e,t)=>{const n=e[qo]||{},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(`${Ir("include")} patterns must be strings or RegExp`);break}}else r.push(`${Ir("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(`${Ir("exclude")} patterns must be strings or RegExp`);break}}else r.push(`${Ir("exclude")} must be an array of strings or RegExp`);if(void 0!==n.honorSkipComments&&"boolean"!=typeof n.honorSkipComments&&r.push(`${Ir("honorSkipComments")} must be a boolean`),void 0!==n.functionTypes)if(Array.isArray(n.functionTypes)){for(const e of n.functionTypes)if(!Er.includes(e)){r.push(`${Ir("functionTypes")} contains invalid value "${e}". Valid values: ${Er.join(", ")}`);break}}else r.push(`${Ir("functionTypes")} must be an array of FunctionKind values`);if(void 0!==n.namedOnly&&"boolean"!=typeof n.namedOnly&&r.push(`${Ir("namedOnly")} must be a boolean`),r.length)throw t.error(`\n - ${r.join("\n - ")}`),new Error(`Invalid configuration for ${Uo}.`);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(Uo));return t.inject({type:"code",position:Ee.BEFORE,injectIntoAllChunks:!0,value:Ho(n.version)}),[Ar(n,t)]};const jr=[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}],Mr="metrics",Or="datadog-metrics-plugin",Cr=e=>Math.floor((e||Date.now())/1e3),Tr=(e,t)=>{const n=[`bundler:${Z(e.bundler.name)}`,`plugin_version:${Z(e.version)}`,`site:${Z(e.auth.site)}`];return e.build.metadata.name&&n.push(`build_name:${Z(e.build.metadata.name)}`),e.build.metadata.version&&n.push(`build_version:${Z(e.build.metadata.version)}`),[...n,...t]},Nr=(e,t,n)=>({...e,tags:[...e.tags,...t],metric:n?`${n}.${e.metric}`:e.metric}),Rr=(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(Nr(e,o,r))}const s=Array.from(i).filter((e=>e.toSend)).length;return i.add(Nr({metric:"metrics.count",type:"count",points:[[t,s+1]],tags:[],toSend:!0},o,r)),i},_r=(e="")=>e.endsWith("/")?e:`${e}/`,Fr=(e,t)=>{let n=e;return e.split(_r(t)),n.split("!").pop().replace(/(.*)?\/node_modules\//,"/node_modules/").replace(/^((\.)*\/)+/,"")},zr=(e,t)=>e.split("!").pop().replace(_r(t),"./"),Lr=(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)),zr(o||"no-name",n)},qr=e=>e.replace(/^.*\/node_modules\/(@[a-z0-9][\w-.]+\/[a-z0-9][\w-.]*|[^/]+).*$/,"$1"),Ur=e=>e.map((e=>({type:e?.constructor?.name??typeof e,name:e?.name,value:"string"==typeof e?e:void 0}))),Br=t.bold.red,Vr=t.bold.cyan,Hr=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},Kr=(e,t)=>{if(!t||!t.size)return[];const n=Array.from(t.values());n.sort(Hr("duration"));const o={name:`${e} duration`,values:n.map((e=>({name:e.name,value:G(e.duration)}))),top:!0};n.sort(Hr("increment"));return[o,{name:`${e} hits`,values:n.map((e=>({name:e.name,value:e.increment.toString()}))),top:!0}]},Wr=(e,t,n)=>{const o=[];var r;n&&(o.push(...Kr("Loader",n.loaders)),o.push(...Kr("Tapable",n.tapables)),o.push(...Kr("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(Hr((e=>e.dependents.size))),t.values=d.map((e=>({name:e.name,value:e.dependents.size.toString()}))),d.sort(Hr((e=>e.dependencies.size))),n.values=d.map((e=>({name:e.name,value:e.dependencies.size.toString()}))),d.sort(Hr("size")),o.values=d.map((e=>({name:e.name,value:g(e.size)}))),d.sort(Hr("aggregatedSize")),r.values=d.map((e=>({name:e.name,value:g(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(Hr((e=>e.size))).map((e=>({name:e.name,value:g(e.size)}))),top:!0},{name:"Entry aggregated size",values:(r.build.entries||[]).sort(Hr((e=>e.size))).map((e=>({name:e.name,value:g(e.size)}))),top:!0},{name:"Entry number of modules",values:(r.build.entries||[]).sort(Hr((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:G(e.build.start-e.start)}),e.build.duration&&t.values.push({name:"Build duration",value:G(e.build.duration)}),e.build.writeDuration&&t.values.push({name:"Write duration",value:G(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=Y(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+=` [${Br(e.value)}] ${" ".repeat(n)}${Vr(e.name)}\n`}}return t})(o);t.info(i)},Jr="api/v1/series",Gr=t.bold.green,Yr=(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: ${Gr(`https://api.${t.site}/${Jr}`)}\n\nMetrics:\n - ${i.join("\n - ")}`),B({method:"POST",url:`https://api.${t.site}/${Jr}?api_key=${t.apiKey}`,getData:()=>({data:JSON.stringify({series:o})})}).catch((e=>{n.error(`Error sending metrics ${e}`)}))},Qr=["onStart","onLoad","onResolve","onEnd"],Zr=new Map,Xr=new Map,ei=new Map,ti=(e,t,n)=>{const o=Object.assign({},e);for(const r of Qr)o[r]=async(o,i)=>{const s=Xr.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=zr(e[0].path,n),u=ei.get(o)||{name:o,increment:0,duration:0,events:{}};u.events[r]=u.events[r]||{name:r,values:[]};const c=w.performance.now();try{return await i(...e)}finally{const n=w.performance.now(),i=n-c,d={start:c,end:n,duration:i,context:Ur(e)};if(s.events[r].values.push(d),s.duration+=i,s.increment+=1,Xr.set(t,s),u.events[r].values.push(d),u.duration+=i,u.increment+=1,ei.set(o,u),a){const e=Zr.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,Zr.set(t,e)}}}))};return o},ni=(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=ti(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:Xr,modules:ei,loaders:Zr};o.end(),await e.asyncHook("timings",{tapables:r,loaders:i,modules:s})}))}});class oi{constructor(e){this.started={},this.finished=[],this.cwd=e}startModule(e,t){const n=Lr(e,t,this.cwd),o=(e=>(e.loaders||[]).map((e=>e.loader||e)).map(qr))(e);o.length||o.push("no-loader"),this.started[n]={module:Fr(n),timings:{start:w.performance.now(),duration:0,end:0},loaders:o}}doneModule(e,t){const n=Lr(e,t,this.cwd),o=this.started[n];o&&(o.timings.end=w.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 ri{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=w.performance.now(),s=t.apply(this,r),a=()=>{this.saveResult(e,n,o,Ur(r),i,w.performance.now())};return s.then(a,a),s}}getAsyncTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=w.performance.now(),s=r.pop();return t.apply(this,[...r,(...t)=>(this.saveResult(e,n,o,Ur(r),i,w.performance.now()),s(...t))])}}getDefaultTapPatch(e,t,n,o){return(...r)=>{this.checkNewHooks();const i=w.performance.now(),s=t.apply(this,r);return this.saveResult(e,n,o,Ur(r),i,w.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(Or)||(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 ii=e=>async t=>{const n=e.getLogger(Or),o={name:Or},r=new ri(e.buildRoot),i=new oi(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})}))},si={filters:jr},ai=({options:e,context:t,stores:n})=>{const o=t.getLogger(Or);let r=0;((e,t)=>{e.addMetric=e=>{t.metrics.add(e)}})(t,n);const i=((e,t)=>{const n=e[Mr],o=Cr(n?.timestamp);let r=!1===n?.enableDefaultPrefix?"":`build.${t}`;return n?.prefix&&(r+=r?`.${n.prefix}`:n.prefix),{enableDefaultPrefix:!0,enableTracing:!1,filters:jr,tags:[],...e[Mr],timestamp:o,prefix:r.toLowerCase().replace(/(^\.*|\.*$)/g,"")}})(e,t.bundler.name),s=[],a={name:Or,enforce:"pre",esbuild:ni(t,o),webpack:ii(t),rspack:ii(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=Tr(t,i.tags);return Rr(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 Yr(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]),h=Tr(t,i.tags),g=Rr(m,n,i.filters,h,i.prefix);await t.asyncHook("metrics",g),e.end();const y=o.time("outputing report");Wr(t,o,d),y.end();const b=o.time("sending metrics to Datadog");await Yr(g,{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[Mr]?.timestamp||(i.timestamp=Cr(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},ui="output",ci="datadog-output-plugin",di=(e,t)=>"string"==typeof t?t.replace(/(\.json)?$/,".json"):!0===t?`${e}.json`:t,li=e=>{const t=void 0===e;return{build:di("build",e?.build??t),bundler:di("bundler",e?.bundler??t),dependencies:di("dependencies",e?.dependencies??t),errors:di("errors",e?.errors??t),logs:di("logs",e?.logs??t),metrics:di("metrics",e?.metrics??t),timings:di("timings",e?.timings??t),warnings:di("warnings",e?.warnings??t)}},pi=(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}))}))},fi=e=>{const t=new Set;return{buildStart(){t.clear()},writeBundle(e,n){t.add(n)},closeBundle(){e((()=>Array.from(t)))}}},mi=({options:e,context:t})=>{const n=t.getLogger(ci),o=(e=>({path:"./",...e[ui],files:li(e[ui]?.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 we(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:ci,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:pi(n,(e=>{r("bundler",e)})),rollup:fi((e=>{r("bundler",e)})),vite:fi((e=>{r("bundler",e)})),webpack:pi(n,(e=>{r("bundler",e)}))}]},hi="rum",gi="datadog-rum-plugin",yi=["8","9","a","b"],bi=(e,t)=>{const n={service:e.service,version:e.version};e.debugId&&(n.ddDebugId=t?(e=>{const t=d.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)}${yi[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):d.randomUUID());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(n)},${JSON.stringify("DD_SOURCE_CODE_CONTEXT")});`,debugId:n.ddDebugId}},wi="datadog-rum-privacy-plugin";const vi=(e,t)=>{const n=t.getLogger(wi),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:wi,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=v.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}})}}},$i=e=>`DD_RUM.init({${JSON.stringify(e.sdk).replace(/(^{|}$)/g,"")}});\n`,ki=(e,t)=>{const n=e.sdk;if(n.clientToken)return $i(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 B({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 $i({...e,sdk:{clientToken:o,...n}})}},xi=e=>{const n=t.bold.red,o=e[hi]||{},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},Si=e=>{const t=e[hi]||{},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},Ei=e=>{const n=t.bold.red,o=e[hi]||{},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},Ii=({options:e,context:t})=>{const n=((e,t)=>{const n=[],o=xi(e),r=Si(e),i=Ei(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 ${gi}.`);const s={...e[hi],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(gi)),o=[],r=n.sourceCodeContext;if(r&&t.inject({type:"code",position:Ee.BEFORE,injectIntoAllChunks:!0,value:e=>{const{code:t}=bi(r,e);return t}}),n.sdk&&(t.inject({type:"file",position:Ee.MIDDLE,value:a.join(__dirname,"./rum-browser-sdk.js")}),t.inject({type:"code",position:Ee.MIDDLE,value:ki(n,t)})),n.privacy){t.inject({type:"file",position:Ee.BEFORE,value:a.join(__dirname,"./privacy-helpers.js")});const e=vi(n.privacy,t);o.push(e)}return o},Di="datadog-analytics-plugin",Ai=({context:e})=>{const t=e.getLogger(Di);return[{name:Di,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}`)}})())}}]},Pi="datadog-async-queue-plugin",ji=e=>{const{context:t,stores:n}=e,o=t.getLogger(Pi),r=[];return t.queue=e=>{const t=e.catch((e=>{r.push(e.message||e.toString())}));n.queue.push(t)},[{name:Pi,asyncTrueEnd:async()=>{await Promise.all(n.queue),r.length>0&&o.error(`Error occurred while processing async queue:\n ${r.join("\n ")}`)}}]},Mi=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("*")?h.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},Oi=/\.(?!.*(?:\.|\/|\\))(\w{1,})/g,Ci=/(\?|%3F|\|)+/gi,Ti=e=>{return"unknown"===e?e:e.includes("webpack/runtime")?"runtime":(t=_i(e),Oi.lastIndex=0,Oi.exec(t)?.[1]||"unknown");var t},Ni=["unknown","commonjsHelpers.js",`vite${a.sep}preload-helper.js`],Ri=(e,t,n)=>{const o=new Set;for(const n of e){const e=_i(n);K(n)||e===t||Ni.includes(e)||o.add(e)}return o},_i=e=>e.split("!").pop().split(Ci).shift().replace(/^[^\w\s.,!@#$%^&*()=+~`\-/\\]+/,""),Fi=(e,t)=>K(t)?I:"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(Ci).shift().replace(/^((\.\.?)?[/\\])+/g,""),zi=(e,t)=>Object.fromEntries(Object.entries(e).map((([e,n])=>[Wn(t,e),n]))),Li=(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 Mi(n,e,t));for(const t of r){const n=Fi(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={},h={},g=t.time("indexing metafile data"),y=zi(n.metafile.inputs,u),b=zi(n.metafile.outputs,u);g.end();const w=e=>{if(!K(e))return e;const t=y[Wn(u,e)];if(!t)return e;const n=t.imports.find((e=>!K(e.path)));return n?n.path:e},v=t.time("looping through inputs");for(const[e,t]of Object.entries(n.metafile.inputs)){if(K(e))continue;const n=Wn(u,e),o={name:Fi(s,e),filepath:n,dependents:new Set,dependencies:new Set,size:t.bytes,type:Ti(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=Wn(u,e),i=Fi(s,n),a=[];for(const e of Object.keys(r.inputs)){if(K(e))continue;const n=m[Wn(u,e)];n?a.push(n):t.debug(`Input ${e} not found for output ${i}`)}if(r.entryPoint&&!a.length){const e=m[Wn(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:Ti(n)};if(h[n]=c,"map"===c.type&&p.push(c),d.push(c),!r.entryPoint)continue;const f=m[Wn(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=h[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:h,meta:b}},S=/(<runtime>|https:|file:|data:|#)/g,E=e=>!K(e)&&!e.match(S),I=(e,n,o={})=>{if(!E(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=Wn(d,t.path);if(t.external){if(E(t.path)){const e=i?l:t.path,n=x.inputs.report[e]||{filepath:e,name:Fi(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},D=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)}D.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(!E(o.path))continue;const n=o.path.match(/^\.?\.\//),r=n?a.dirname(e.filepath):u,i=Wn(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)}))}}),qi=(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=_i(e.id),o=f.get(t)||{dependencies:new Set,dependents:new Set},r=Ri(new Set([...e.dynamicallyImportedIds,...e.importedIds]),t),i=Ri(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 h=n.dir?Wn(e.buildRoot,n.dir):e.bundler.outDir,g=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=_i(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=_i(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=Wn(h,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:Ti(e)};if("map"===s.type&&y.add(s),"modules"in n)for(const[e,t]of Object.entries(n.modules)){if(_i(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:Fi(h,e),dependencies:new Set,dependents:new Set,filepath:e,size:n,type:Ti(e)};s.inputs.push(o),d.set(o.filepath,o)}if("imports"in n)for(const e of n.imports){const n=_i(e);if(!f.has(n)){b.set(Wn(h,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:Fi(h,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&&g.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 ${Fi(h,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 ${Fi(h,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=Fi(h,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[Fi(h,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(Wn(h,e),n);return n};r.resume();for(const e of g){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}":"${Fi(h,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)}}},Ui=(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 ")||K(e)),h=e=>e.replace(/(^external[^"]+"|"$)/g,""),g=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=_i(e);t.add(n),n.startsWith("external ")&&t.add(h(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=_i(t.request);if(d.has(n))return d.get(n);if(e.context){const t=Wn(_i(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)g(e);i.end();const s=n.time("building inputs");for(const n of t){const t=n.identifier(),o=Fi(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)?h(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:h(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:Ti(t)};r.push(u),a.set(t,u),w(n)&&a.set(h(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=>Wn(e.bundler.outDir,t))),h=n.time("indexing chunks"),g=t.chunkGraph;for(const e of o){const t=p(e),n=(g?.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"===Ti(e))continue;const t=c.get(e)||new Set;for(const e of n)t.add(e);c.set(e,t)}}h.end();const y=n.time("building outputs");for(const t of d){const o={size:t.source.size()||0,name:t.name,inputs:[],filepath:Wn(e.bundler.outDir,t.name),type:Ti(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=>g.getChunkEntryModulesIterable(e)||!1)).flatMap((e=>Array.from(e.files))).filter((e=>e.includes(o)||r.name&&e.includes(r.name))).find((e=>"js"===Ti(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?Wn(e.bundler.outDir,l):"unknown",size:a,inputs:Array.from(i.values()),outputs:Array.from(t.values()),type:l?Ti(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)}))},Bi="datadog-build-report-plugin",Vi=e=>{const{context:t}=e,n=t.getLogger(Bi);return[{name:Bi,enforce:"post",esbuild:Li(t,n),rspack:Ui(t,Bi,n),webpack:Ui(t,Bi,n),vite:qi(t,n),rollup:qi(t,n)}]},Hi="datadog-bundler-report-plugin",Ki=(e,t)=>t?a.isAbsolute(t)?t:a.resolve(e,t):"",Wi=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)},Ji=e=>t=>{e.bundler.rawConfig=t.options,t.options.output?.path&&(e.bundler.outDir=Ki(process.cwd(),t.options.output.path)),e.hook("bundlerReport",e.bundler),t.options.context&&(e.buildRoot=t.options.context),e.hook("buildRoot",e.buildRoot)},Gi=e=>({configResolved(t){e.bundler.rawConfig=t;let n=t.build?.outDir??"dist";const o=t.build?.rollupOptions?.output,r=Wi(o);e.buildRoot=t.root??process.cwd(),o&&r.length&&(n=Gn(r,process.cwd())),e.bundler.outDir=Ki(e.buildRoot,n),e.hook("buildRoot",e.buildRoot),e.hook("bundlerReport",e.bundler)}}),Yi=e=>{const{context:t}=e,n=t.getLogger(Hi);return[{name:Hi,enforce:"pre",esbuild:{setup(e){t.bundler.rawConfig=e.initialOptions,e.initialOptions.absWorkingDir&&(t.buildRoot=e.initialOptions.absWorkingDir),e.initialOptions.outdir&&(t.bundler.outDir=Ki(t.buildRoot,e.initialOptions.outdir)),e.initialOptions.outfile&&(t.bundler.outDir=Ki(t.buildRoot,a.dirname(e.initialOptions.outfile))),t.hook("buildRoot",t.buildRoot),t.hook("bundlerReport",t.bundler),e.initialOptions.metafile=!0}},webpack:Ji(t),rspack:Ji(t),vite:Gi(t),rollup:{options(e){let n;if("output"in e){const t=Wi(e.output);n=Gn(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=Wn(process.cwd(),n);const e=Gn([n,...o],process.cwd());t.buildRoot=e===a.sep?process.cwd():e}else t.buildRoot=Gn(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=Wi(e);Gn(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.")}}}]},Qi="datadog-custom-hooks-plugin",Zi=e=>{const{context:t}=e,n=t.getLogger(Qi),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:Qi,enforce:"pre"}]};class Xi{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=$e(e),o=JSON.parse(n);if(!o.sources)return void t("Missing 'sources' field in sourcemap.");const r=o.sources;if(0===r.length)return void t("Empty 'sources' field in sourcemap.");const i=this.matchSources(r);if(0!==i.length)return i;t(`${r.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 ts(e);for(const e of t)if(e.name===n)return Q(e.refs.push);return Q(t[0].refs.push)},ts=async e=>{try{return(await e.getConfig("clone.defaultRemoteName"))?.value??"origin"}catch(e){return"origin"}},ns=async e=>e.revparse("HEAD"),os=async e=>(await e.raw("ls-files")).split(/\r\n|\r|\n/),rs=async e=>e.branch(),is=async e=>e.show(["-s","--format=%s"]),ss=async e=>e.show(["-s","--format=%an,%ae,%aI,%cn,%ce,%cI"]),as="datadog-git-plugin",us=e=>{const{options:t,context:n}=e,o=n.getLogger(as),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=$.simpleGit(t),n=await e.revparse("--show-toplevel");t.baseDir=n}catch{}return $.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=[ns(e),rs(e),is(e),ss(e),os(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 Xi(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:as,enforce:"pre",buildRoot(e){if(J(t))try{r.resume();const t=Jn(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}`)}}}]},cs="datadog-injection-plugin",ds=/^https?:\/\//,ls=[".mjs",".mjsx",".js",".ts",".tsx",".jsx"],ps=t.bold.yellow,fs=async(e,t=process.cwd())=>(e=>r.readFile(e,{encoding:"utf-8"}))(Wn(t,e));function ms(e){return e.some((e=>e.injectIntoAllChunks))}const hs=(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`},gs=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(ds)?(async(e,t=5e3)=>{let n;return Promise.race([B({retries:2,minTimeout:100,url:e}).finally((()=>{t&&clearTimeout(n)})),new Promise(((e,o)=>{n=setTimeout((()=>{o(new Error("Timeout"))}),t)}))])})(e):fs(e,n))}return o}catch(r){const i=`${e.type} - ${Y(o)}`;return e.fallback?(t.debug(`Fallback for "${i}": ${r.toString()}`),gs(e.fallback,t,n)):(t.warn(`Failed "${i}": ${r.toString()}`),"")}},ys=async(e,t,n,o=process.cwd())=>{const r=t.filter($s).map((e=>{const t=e.value;return{...e,value:e=>t(e)}})),i=t.filter((e=>!$s(e))),s=await Promise.all(i.map((async t=>({...t,value:await gs(t,e,o)})))),a=e=>({...e,position:e.position??Ee.BEFORE});n.push(...r.map(a),...s.map(a))},bs=e=>e instanceof Error&&"code"in e,ws=e=>ls.includes(e),vs=(e,t,n)=>{e.warn(`"${ps(t)}" files are not supported (${ps(n)}).`)},$s=e=>"function"==typeof e.value&&1===e.value.length,ks=e=>"function"==typeof e,xs=i.promises,Ss=(e,t,n)=>({setup(o){const{onStart:s,onResolve:u,onLoad:c,onEnd:d,esbuild:l,initialOptions:f}=o,m=[],h=`${t.bundler.name}.${Ee.MIDDLE}.${I}.js`,g=i.realpathSync(p.tmpdir()),y=a.resolve(g,h),b=new RegExp(`${h}$`),w=f.inject;f.inject=w?[...w]:[],f.inject.push(y),s((async()=>{m.push(...await Mi(o,t,e)),o.initialOptions.inject=w;try{await(async(e,t)=>{await we(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:cs}))),c({filter:b,namespace:cs},(async()=>({contents:hs(n,Ee.MIDDLE)||" ",resolveDir:t.buildRoot,loader:"js"}))),d((async o=>{if(!o.metafile)return void e.warn("Missing metafile from build result.");if(!function(e){return e.some((e=>e.position===Ee.BEFORE||e.position===Ee.AFTER))}(n))return;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&&!ms(n))continue;const u=Wn(t.buildRoot,i),{base:c,ext:d}=a.parse(u);ws(d)?r.push((async()=>{try{const e=`${u}.map`,t=await xs.readFile(u,"utf-8"),r=await xs.readFile(e,"utf-8").catch((()=>!1)),i=a.basename(u),s=hs(n,Ee.BEFORE,{sourceOrHash:t,fileName:i,isEntry:o}),c=hs(n,Ee.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([xs.writeFile(u,f.code),r&&f.map?xs.writeFile(e,f.map):null])}catch(t){if(!bs(t)||"ENOENT"!==t.code)throw t;e.warn(`Could not inject content in ${u}: ${t}`)}})()):vs(e,d,c)}await Promise.all(r)}))}}),Es=I,Is="?inject-proxy",Ds=(e,t)=>({renderChunk(n,o){const{base:r,ext:i}=a.parse(o.fileName);if(!ws(i))return vs(e,i,r),null;const s=hs(t,Ee.BEFORE,{sourceOrHash:n,fileName:o.fileName,isEntry:o.isEntry}),u=hs(t,Ee.AFTER,{sourceOrHash:n,fileName:o.fileName,isEntry:o.isEntry});if(!s&&!u)return null;const c=new k(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(K(e))return{id:e,moduleSideEffects:!0};if(o.isEntry&&hs(t,Ee.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}${Is}`}return null},load(e){if(K(e))return hs(t,Ee.MIDDLE);if(e.endsWith(Is)){const t=e.slice(0,-13),n=this.getModuleInfo(t);let o=`import ${JSON.stringify(Es)};\nexport * from ${JSON.stringify(t)};`;return n?.hasDefaultExport&&(o+=`export { default } from ${JSON.stringify(t)};`),o}return null}}),As=(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}.${Ee.MIDDLE}.${I}.js`);ve(l,"");s.hooks.shutdown.tap(cs,(()=>{var e;e=l,i.rmSync(e,{force:!0,maxRetries:3,recursive:!0})}));const p=async()=>{await ys(t,o,r,n.buildRoot)};s.hooks.beforeRun.tapPromise(cs,p),s.hooks.watchRun.tapPromise(cs,p),s.hooks.compilation.tap(cs,(n=>{const o=e.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS;n.hooks.processAssets.tap({name:cs,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(!ws(d)){vs(t,d,e);continue}const l=e,p=hs(r,Ee.BEFORE,{sourceOrHash:i,fileName:l,isEntry:o}),f=hs(r,Ee.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},Ps=e=>{const{bundler:t,context:n}=e,o=n.getLogger(cs),r=[],i=[];n.inject=e=>{r.push(e)};const s={name:cs,enforce:"post",esbuild:Ss(o,n,i),webpack:As(t,o,n,r,i),rspack:As(t,o,n,r,i),rollup:Ds(o,i),vite:{...Ds(o,i),enforce:"pre",transformIndexHtml:{order:"pre",handler:()=>hs(i,Ee.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:D},handler:()=>({code:hs(i,Ee.MIDDLE)})}:s.buildStart=async()=>{await ys(o,r,i,n.buildRoot)},[s]},js="datadog-true-end-plugin",Ms=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(js,i)},a={async writeBundle(){},async closeBundle(){await i()}};return[{name:js,enforce:"post",webpack:s,esbuild:{setup(e){e.onEnd((async()=>{await n(),await o()})),e.onDispose((()=>{r()}))}},vite:a,rollup:a,rspack:s}]},Os={[Mr]:si},Cs=t.bold.red;var Ts="3.2.12";const Ns=(({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=N("SITE"),o=F(n,"DATADOG_SITE/DD_SITE",t)??F(e.auth?.site,"auth.site",t),r={site:o?.site??j,siteSubdomain:o?.subdomain};if(t.length)throw new Error(`Invalid Datadog plugin configuration:\n - ${t.join("\n - ")}`);return Object.defineProperty(r,"apiKey",{value:N("API_KEY")||e.auth?.apiKey,enumerable:!1}),Object.defineProperty(r,"appKey",{value:N("APP_KEY")||e.auth?.appKey,enumerable:!1}),{enableGit:!0,logLevel:"warn",metadata:{},...e,auth:r}})(e);"esbuild"===r.framework&&(r.esbuildHostName=M);const a=process.env.BUILD_PLUGINS_ENV||"production",u=A.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};return{addMetric:()=>{throw new Error("AddMetric function called before it was initialized.")},auth:t.auth,pluginNames:[],bundler:{...i.bundler,outDir:r},build:i,buildRoot:r,env:n.env,getLogger:re(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.")},plugins:[],queue:()=>{throw new Error("Queue function called before it was initialized.")},sendLog:V(n),start:e,version:n.version}})({start:o,options:s,data:l,stores:p}),m=f.getLogger("factory"),h=m.time("Plugins initialization",{start:i});f.pluginNames.push(M);const g=[];g.push(["analytics",Ai],["async-queue",ji],["build-report",Vi],["bundler-report",Yi],["custom-hooks",Zi],["git",us],["injection",Ps],["true-end",Ms]),s.customPlugins&&g.push(["custom",s.customPlugins]);const y=[["apps",de,yo],["error-tracking",bo,Lo],["live-debugger",qo,Pr],["metrics",Mr,ai],["output",ui,mi],["rum",hi,Ii]];for(const[e,t,n]of y)ce(s,t,m)&&g.push([e,n]);for(const[e,n]of g)f.plugins.push(...ae(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=>C(e))).join(" and "),i=C(`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: ${Cs(Array.from(t).join(", "))}`)})(f.pluginNames),f.hook("init",f),h.end(),f.plugins}))})({bundler:x,version:Ts}).webpack,Rs=Ts,_s=Os;exports.datadogWebpackPlugin=Ns,exports.helpers=_s,exports.version=Rs;
|
|
1
|
+
"use strict";var e=require("unplugin"),t=require("chalk"),n=require("async-retry"),r=require("buffer"),o=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("node:path"),h=require("esbuild"),y=require("rollup/parseAst"),b=require("node:async_hooks"),w=require("p-queue"),v=require("@jridgewell/remapping"),$=require("picomatch"),k=require("pretty-bytes"),x=require("perf_hooks"),E=require("@datadog/js-instrumentation-wasm"),S=require("simple-git"),I=require("magic-string"),j=require("webpack"),A=require("child_process"),P=require("dgram"),C=require("dns"),O=require("net"),D=require("node:events"),R=require("node:stream"),N=require("node:util"),M=require("worker_threads"),T=require("url");function F(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var _=F(c);const L="__datadog-helper-file",q=new RegExp(L),z=["development","production","test"],B=["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"],V=B[0],W="datadog-build-plugins",U=t.bold.green,K=t.bold.yellow,H=["API_KEY","APP_KEY","SOURCEMAP_INTAKE_URL","APPS_PACKAGE_DIR","OAUTH_ACCESS_TOKEN","SITE"],J=e=>process.env[`DATADOG_${e}`]||process.env[`DD_${e}`],G=e=>{const t=[];return process.env[`DD_${e}`]&&t.push(`DD_${e}`),process.env[`DATADOG_${e}`]&&t.push(`DATADOG_${e}`),t},Y=(e,t,n)=>{if(void 0===e)return;const r=(e=>{if("string"!=typeof e)return;const t=e.toLowerCase(),n=B.find((e=>e===t));if(n)return{site:n};const r=B.filter((e=>t.endsWith(`.${e}`)));if(!r.length)return;const o=r.reduce(((e,t)=>t.length>e.length?t:e)),i=t.slice(0,t.length-o.length-1);return i&&/^[a-z0-9-]+$/.test(i)?{site:o,subdomain:i}:void 0})(e);if(r)return r;n.push(`${t} "${e}" is not a supported Datadog site. See the site parameters in https://docs.datadoghq.com/getting_started/site/.`)},Q=(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=((e,t)=>{if(void 0===e.sourcemaps)return e;if(null===e.sourcemaps||"object"!=typeof e.sourcemaps||Array.isArray(e.sourcemaps))return t.push("sourcemaps must be an object"),e;const n=e.sourcemaps,r=n;if(!0!==r.debugId&&t.push("sourcemaps.debugId must be true"),void 0!==r.upload&&"boolean"!=typeof r.upload&&t.push("sourcemaps.upload must be a boolean"),!0!==r.upload&&["bailOnError","dryRun","maxConcurrency"].some((e=>void 0!==r[e]))&&t.push("sourcemaps.bailOnError, sourcemaps.dryRun, and sourcemaps.maxConcurrency require sourcemaps.upload to be true"),!1===e.rum?.sourceCodeContext?.debugId&&t.push("rum.sourceCodeContext.debugId cannot be false when sourcemaps.debugId is true"),!1===e.rum?.enable&&t.push("rum.enable cannot be false when sourcemaps is configured"),void 0!==e.errorTracking?.sourcemaps&&t.push("sourcemaps cannot be combined with errorTracking.sourcemaps"),!0===r.upload&&!1===e.errorTracking?.enable&&t.push("errorTracking.enable cannot be false when sourcemaps.upload is true"),t.length>0)return e;const o={...e,rum:{...e.rum,sourceCodeContext:{...e.rum?.sourceCodeContext,debugId:!0}}};return!0===n.upload&&(o.errorTracking={...e.errorTracking,sourcemaps:{debugId:!0,...void 0!==n.bailOnError&&{bailOnError:n.bailOnError},...void 0!==n.dryRun&&{dryRun:n.dryRun},...void 0!==n.maxConcurrency&&{maxConcurrency:n.maxConcurrency}}}),o})(e,t),r=J("SITE"),o=Y(r,"DATADOG_SITE/DD_SITE",t)??Y(n.auth?.site,"auth.site",t),i={site:o?.site??V};if(t.length)throw new Error(`Invalid Datadog plugin configuration:\n - ${t.join("\n - ")}`);return Object.defineProperty(i,"apiKey",{value:J("API_KEY")||n.auth?.apiKey,enumerable:!1}),Object.defineProperty(i,"appKey",{value:J("APP_KEY")||n.auth?.appKey,enumerable:!1}),{enableGit:!0,logLevel:"warn",metadata:{},...n,auth:i}},Z=e=>null===e||"object"!=typeof e?"":Object.entries(e).map((([e,t])=>`${e}: ${"string"==typeof t?t:JSON.stringify(t)}`)).join(", "),X=[400,401,403,404,405,409,413],ee=async e=>{const{auth:t,url:r,method:o="GET",getData:i,type:s="text",onResponse:a,signal:u,fetchImpl:c=fetch}=e,d={retries:0===e.retries?0:e.retries||5,onRetry:e.onRetry,maxTimeout:e.maxTimeout,minTimeout:e.minTimeout};return n((async(e,n)=>{let d;try{const e={method:o,duplex:"half",signal:u};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:r}=await i();e.body=t,n={...n,...r}}d=await c(r,{...e,headers:n})}catch(t){return e(t),{}}if(!d.ok){let t=`HTTP ${d.status} ${d.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(Z).filter((e=>e.length>0)).join("\n");if(e)return e}else{const e=Z(t);if(e)return e}}catch{}return e})(await d.text());e&&(t+=`\n${e}`)}catch{}if(X.includes(d.status))return e(new Error(t)),{};throw new Error(t)}a?.(d);try{let e;return e="json"===s?await d.json():await d.text(),e}catch(t){return e(t),{}}}),d)},te=e=>({message:t,context:n})=>ee({retries:2,minTimeout:100,url:"https://browser-http-intake.logs.datadoghq.com/v1/input/pub44d5f4eb86e1392037b7501f7adc540e",method:"POST",type:"json",getData:async()=>{const r={ddsource:e.packageName||W,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(r),headers:{"Content-Type":"application/json"}}}}),ne=e=>e.replace(/^@dd\/(datadog-|internal-)?|^datadog-|-plugin$/g,""),re=e=>e.includes(L),oe=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},ie=e=>{const t=!!e.errorTracking?.sourcemaps,n=e.enableGit??!0;return t&&n},se=e=>{const t=Math.floor(e/1e3/60/60/24),n=new Date(e-24*t*60*60*1e3),r=n.getUTCHours(),o=n.getUTCMinutes(),i=n.getUTCSeconds(),s=n.getUTCMilliseconds(),a=`${t?`${t}d `:""}${r?`${r}h `:""}${o?`${o}m `:""}${i?`${i}s`:""}`.trim();return`${a}${!a||s?` ${s}ms`:""}`.trim()},ae=(e,t=60,n="[...]")=>{if(e.length<=t)return e;const r=Math.max(4,t-n.length),o=Math.min(10,Math.floor(r/2)),i=r-o;return`${e.slice(0,o)}${n}${e.slice(-i)}`},ue=(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}},ce=e=>e.trim().toLowerCase().replace(/[^a-z0-9_:./-]+/g,"_").replace(/^_+|_+$/g,"")||"unknown",de=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"),le={debug:0,info:1,warn:2,error:3,none:4},pe=e=>e.split(">").map(ne).join(">"),fe=(e,n,r,o)=>{const i=pe(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(r.logs.push({bundler:n.bundler.name,pluginName:e,type:a,message:f,time:Date.now()}),"error"===a&&r.errors.push(f),"warn"===a&&r.warnings.push(f),u){const t=async()=>{try{const t=te(n);await t({message:f,context:{plugin:e,status:a,...c}})}catch(t){fe(e,n,r,o)(`Error forwarding log: ${t}`,"debug")}};r.queue.push(t())}le[a]>=le[o]&&l(`${d(p)} ${f}`)}},me=(e,n,r)=>(o,i={})=>{const{level:s="debug",start:a=!0,log:u=!0,tags:c=[]}=i,d={pluginName:e,label:o,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&&r(t.dim(`[${t.cyan(o)}] : 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&&r(`Timer ${t.cyan(o)} has more than one ongoing span.`,"debug");for(const t of i)t.end=e||Date.now()}else n&&r(`Timer ${t.cyan(o)} 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&&r(`[${t.cyan(o)}] : ${t.cyan(se(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)}}},ge=(e,t,n="warn")=>r=>{const o=fe(r,e,t,n);return{getLogger:o=>ge(e,t,n)(`${pe(r)}>${o}`),time:me(r,t.timings,o),error:(e,t)=>o(e,"error",t),warn:(e,t)=>o(e,"warn",t),info:(e,t)=>o(e,"info",t),debug:(e,t)=>o(e,"debug",t)}},he=["buildEnd","buildStart","load","resolveId","transform","watchChange","writeBundle","buildRoot","init","buildReport","bundlerReport","git"],ye=(e,t,n,r)=>{const o=n=>function(...o){const i=r.time(`${e} | ${t}`,{log:!1,tags:["type:hook",`hook:${t}`]}),s=n.apply(this,o);return s instanceof Promise?s.finally((()=>{i.end()})):(i.end(),s)};return"object"==typeof n&&null!==n&&"handler"in n?{...n,handler:o(n.handler)}:o(n)},be=(e,t,n)=>{const r=e.getLogger(W);return e=>{const o=r.time(`hook | init ${n}`,{log:!1}),i=t(e).map((e=>((e,t)=>{const n={...e},r=ne(e.name);for(const o of he){const i=e[o];i&&(n[o]=ye(r,o,i,t))}return n})(e,r))),s=i.map((e=>`plugin:${e.name}`));return o.tag(s),o.end(),i}},we=new Set,ve=(e,t,n)=>{const r=e[t];if(r&&"object"==typeof r&&"enable"in r){const e=r.enable;if("boolean"!=typeof e&&void 0!==e&&(we.has(t)||(we.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!!r},$e="apps",ke="datadog-apps-plugin",xe="datadog-app-assets.zip",Ee=/\.backend\.(ts|tsx|js|jsx)$/,Se="?dd-local-exec",Ie=new RegExp(`${Ee.source.slice(0,-1)}(\\?.*)?$`),je=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"],Ae=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}},Pe=async e=>o.rm(e,{force:!0,maxRetries:3,recursive:!0}),Ce=async e=>o.mkdir(e,{recursive:!0}),Oe=(e,t)=>{var n;n=a.dirname(e),i.mkdirSync(n,{recursive:!0}),i.writeFileSync(e,t,{encoding:"utf-8"})},De=e=>o.readFile(e,{encoding:"utf-8"}),Re=e=>{try{return i.existsSync(e)}catch(e){if("ENOENT"===e.code)return!1;throw e}},Ne=async(e,t)=>{if("function"==typeof i.openAsBlob){const n=await i.openAsBlob(e,{type:t.contentType});return new r.File([n],t.filename)}{const n=u.Readable.toWeb(i.createReadStream(e)),o=await new Response(n).blob();return new r.File([o],t.filename,{type:t.contentType})}},Me=async e=>{const t={empty:!1,exists:!0};try{const{size:n}=await o.stat(e);0===n&&(t.empty=!0)}catch(e){if("ENOENT"!==e.code)throw e;t.exists=!1}return t};var Te=(e=>(e[e.BEFORE=0]="BEFORE",e[e.MIDDLE=1]="MIDDLE",e[e.AFTER=2]="AFTER",e))(Te||{});let Fe;function _e(){return Fe??(Fe=Promise.resolve().then((function(){return Eu})).catch((e=>{throw Fe=void 0,e}))),Fe}const Le="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 qe extends Error{constructor(){super(`Missing authentication. ${Le}`),this.statusCode=400,this.name="MissingAuthenticationError"}}function ze(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 Be(e,t){return"object"==typeof e&&null!==e&&"type"in e&&e.type===t}function Ve(e){return Be(e,"Literal")&&"value"in e&&"string"==typeof e.value}function We(e){return"type"===e.importKind||"type"===e.exportKind}function Ue(e){return Be(e,"VariableDeclarator")}function Ke(e){return Ve(e)?e.value:function(e){return!!(Be(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 He(e,t){return function(e,t){const n=ze(e,t),r=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),o=[];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&&o.push(...Ye(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?o.push({kind:"re-export",name:i.exported.name,localName:e,source:n}):("Identifier"===i.local.type&&Qe(e,r,t),o.push({kind:"local",name:i.exported.name,localName:e})))}}return o}(e,t).map((e=>e.name))}const Je=new Set(["ArrayExpression","Literal","ObjectExpression","TemplateLiteral"]);function Ge(e){return null==e||Je.has(e.type)}function Ye(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(Ge(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 Qe(e,t,n){const r=t.get(e);if(r){if("class"===r.kind)throw new Error(`Class exports are not supported in .backend.ts files. Only function exports are allowed: ${n}`);if("variable"===r.kind&&Ge(r.init))throw new Error(`Non-function export "${e}" in backend file ${n}. Only function exports are supported — use "export function ${e}(…) { }" instead.`)}}function Ze(e,t,n){const r={state:t},o=e=>{n._?.(e,r),function(e,t){return t[e.type]}(e,n)?.(e,r);for(const t of Object.keys(e))"type"!==t&&i(e[t])},i=e=>{if(Array.isArray(e))for(const t of e)Xe(t)&&o(t);else Xe(e)&&o(e)};o(e)}function Xe(e){return"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type}function et(e){Ze(e,null,{_(e){const t=e;t.range||"number"!=typeof t.start||"number"!=typeof t.end||(t.range=[t.start,t.end])}});const t=_.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:ot(t)}}function tt(e,t){return t.referencesByIdentifier.get(e)?.resolved??void 0}function nt(e){return e.defs.some((e=>"ImportBinding"===e.type))}function rt(e,t){return t.moduleScope.set.get(e)}function ot(e){return e.scopes.find((e=>"module"===e.type))??e.globalScope}function it(e,t,n){const r={scopeAnalysis:t,unsupportedAliases:st(e,t)},o=[];return Ze(e,r,{CallExpression(e,{state:t}){(function(e,t,n){const r=e.callee;if("Identifier"===r.type){if(dt(r,t.unsupportedAliases,t.scopeAnalysis))throw mt(n,"action-catalog call aliases");if(dt(r,t.scopeAnalysis.actionFunctions,t.scopeAnalysis)){if(e.optional)throw mt(n,"optional action-catalog calls");return!0}return!1}if("MemberExpression"!==r.type)return!1;if(!at(r,t.scopeAnalysis))return!1;if(e.optional||ct(r))throw mt(n,"optional or computed action-catalog namespace calls");return!0})(e,t,n)&&o.push(e)}}),o}function st(e,t){const n=new Set;return Ze(e,t,{VariableDeclarator(e,{state:t}){for(const r of function(e,t){if("Identifier"===e.id.type&&"Identifier"===e.init?.type&&dt(e.init,t.actionFunctions,t))return pt(e,t,[e.id.name]);if("Identifier"===e.id.type&&"MemberExpression"===e.init?.type&&at(e.init,t))return pt(e,t,[e.id.name]);if("ObjectPattern"!==e.id.type||"Identifier"!==e.init?.type||!dt(e.init,t.actionNamespaces,t))return[];const n=e.id.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:ft(e.value))).map((e=>e.name));return pt(e,t,n)}(e,t))n.add(r)},AssignmentExpression(e,{state:t}){for(const r of function(e,t){if("Identifier"===e.left.type&&"Identifier"===e.right.type&&dt(e.right,t.actionFunctions,t))return lt([e.left],t);if("Identifier"===e.left.type&&"MemberExpression"===e.right.type&&at(e.right,t))return lt([e.left],t);if("ObjectPattern"!==e.left.type||"Identifier"!==e.right.type||!dt(e.right,t.actionNamespaces,t))return[];const n=e.left.properties.flatMap((e=>"RestElement"===e.type||e.computed?[]:ft(e.value)));return lt(n,t)}(e,t))n.add(r)}}),n}function at(e,t){const n=ut(e);return!!n&&dt(n,t.actionNamespaces,t)}function ut(e){return"Identifier"===e.object.type?e.object:"MemberExpression"===e.object.type?ut(e.object):void 0}function ct(e){return!(!e.optional&&!e.computed)||"MemberExpression"===e.object.type&&ct(e.object)}function dt(e,t,n){return function(e,t,n){const r=tt(e,n);return!!r&&t.has(r)}(e,t,n.moduleScope)}function lt(e,t){return e.flatMap((e=>{const n=tt(e,t.moduleScope);return n?[n]:[]}))}function pt(e,t,n){const r=new Set(n);return t.moduleScope.scopeManager.getDeclaredVariables(e).filter((e=>r.has(e.name)))}function ft(e){switch(e.type){case"Identifier":return[e];case"ObjectPattern":return e.properties.flatMap((e=>"RestElement"===e.type?ft(e.argument):ft(e.value)));case"ArrayPattern":return e.elements.flatMap((e=>e?ft(e):[]));case"RestElement":return ft(e.argument);case"AssignmentPattern":return ft(e.left);case"MemberExpression":return[]}}function mt(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const gt="@datadog/action-catalog";function ht(e,t,n){const r=e.get(t);if(!r)return xt(t,[],n.name);const o=tt(n,r.scopeAnalysis);return o?function(e,t){return t.defs.some((t=>t.name===e))}(n,o)?Et(t,[],n.name):wt({modules:e,visitedExports:new Set},t,o,[]):Et(t,[],n.name)}function yt(e,t,n,r){const o=e.modules.get(t);if(!o)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,r,n);if("default"===n)return $t(t,r,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,r,n);e.visitedExports.add(i);try{const t=o.exportsByName.get(n);return t?function(e,t,n,r,o){if("unsupported"===r.kind)return function(e,t,n,r){return{kind:"unsupported",moduleId:e,reason:"unsupported-export",exportName:n,exportReason:r,message:`Export '${n}' from module '${e}' is unsupported: ${r}.`,hops:t}}(t.id,o,n,r.reason);if("re-export"===r.kind)return"default"===r.importedName?$t(t.id,o,n):yt(e,r.resolvedId,r.importedName,[...o,{kind:"re-export",moduleId:t.id,exportName:n,sourceModuleId:r.resolvedId,sourceExportName:r.importedName}]);return wt(e,t.id,r.variable,[...o,{kind:"local-export",moduleId:t.id,exportName:n,localName:r.variable.name}])}(e,o,n,t,r):function(e,t,n,r){let o;for(const i of t.starExports){const s=yt(e,i.resolvedId,n,[...r,{kind:"star-export",moduleId:t.id,exportName:n,sourceModuleId:i.resolvedId}]);if("unsupported"===s.kind){if("missing-export"===s.reason)continue;return s}if(!o||!bt(o,s)){if(o)return vt(t.id,r,n);o=s}}return o??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,r,n)}(e,o,n,r)}finally{e.visitedExports.delete(i)}}function bt(e,t){return e.moduleId===t.moduleId&&e.variable===t.variable}function wt(e,t,n,r){const o=e.modules.get(t);if(!o)return xt(t,r,n.name);const i=o.importsByVariable.get(n);if(i)return function(e,t,n,r,o){if("default"===r.kind)return kt(t,o,n);if("namespace"===r.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,o,n);if("default"===r.importedName)return kt(t,o,n);return yt(e,r.resolvedId,r.importedName,[...o,{kind:"import",moduleId:t,localName:n,exportName:r.importedName,sourceModuleId:r.resolvedId}])}(e,o.id,n.name,i,r);const s=o.topLevelBindingsByVariable.get(n);return s?"const"===s.kind?{kind:"local",moduleId:o.id,variable:n,binding:s,hops:r}:"mutable"===s.kind?function(e,t,n,r){return{kind:"unsupported",moduleId:e,reason:"mutable-binding",variableName:n,declarationKind:r,message:`Variable '${n}' in module '${e}' is declared with mutable '${r}'.`,hops:t}}(o.id,r,n.name,s.declarationKind):function(e,t,n,r){return{kind:"unsupported",moduleId:e,reason:"unsupported-binding",variableName:n,bindingReason:r,message:`Variable '${n}' in module '${e}' has unsupported binding: ${r}.`,hops:t}}(o.id,r,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}}(o.id,r,n.name)}function vt(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 $t(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 kt(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 xt(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 Et(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 St(e,t,n){const r=Tt(n);switch(r.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,r);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,r);case"Identifier":return function(e,t,n){const r=ht(e.modules,t,n);if("unsupported"===r.kind)return Ut(r,n.name);if(!r.binding.expression)return Kt(r.moduleId,r.variable.name);if(e.seenVariables.has(r.variable))return qt(r.moduleId,r.variable.name);e.seenVariables.add(r.variable);try{return St(e,r.moduleId,r.binding.expression)}finally{e.seenVariables.delete(r.variable)}}(e,t,r);case"MemberExpression":return function(e,t,n){const r=It(e,t,n);if("unsupported"===r.kind)return r;return St(e,r.moduleId,r.expression)}(e,t,r);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,r.type)}}function It(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 r=jt(e,t,n.object);return"unsupported"===r.kind?r:function(e,t,n){let r;for(const o of t.properties){if("SpreadElement"===o.type)return Wt(e);if(o.computed)return Lt(e);if(Mt(o)===n){if(r)return zt(e,n);if("init"!==o.kind)return _t(e,n);if(!At(o))return Vt(e,n,o.value.type);r=o}}if(!r)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:r.value}}(r.moduleId,r.expression,n.property.name)}function jt(e,t,n){if("Super"===n.type)return Bt(t,n.type);const r=Tt(n);if("ObjectExpression"===r.type)return{kind:"resolved",moduleId:t,expression:r};if("MemberExpression"===r.type){const n=It(e,t,r);return"unsupported"===n.kind?n:jt(e,n.moduleId,n.expression)}if("Identifier"!==r.type)return Bt(t,r.type);const o=ht(e.modules,t,r);if("unsupported"===o.kind)return Ut(o,r.name);if(!o.binding.expression)return Kt(o.moduleId,o.variable.name);if(e.mutatedImportedObjectVariables.has(o.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.`}}(o.moduleId,o.variable.name);if(e.seenVariables.has(o.variable))return qt(o.moduleId,o.variable.name);e.seenVariables.add(o.variable);try{return jt(e,o.moduleId,o.binding.expression)}finally{e.seenVariables.delete(o.variable)}}function At(e){const{value:t}=e;return"ObjectPattern"!==t.type&&"ArrayPattern"!==t.type&&"RestElement"!==t.type&&"AssignmentPattern"!==t.type}function Pt(e){const t=new Set;for(const n of e.values())Ze(n.ast,{modules:e,mutatedVariables:t,record:n},{AssignmentExpression(e,{state:t}){Ot(e.left,t)},UpdateExpression(e,{state:t}){Ot(e.argument,t)},UnaryExpression(e,{state:t}){"delete"===e.operator&&Ot(e.argument,t)},ForInStatement(e,{state:t}){Ct(e.left,t)},ForOfStatement(e,{state:t}){Ct(e.left,t)}});return t}function Ct(e,t){"VariableDeclaration"!==e.type&&Ot(e,t)}function Ot(e,t){if("Identifier"!==e.type)if("MemberExpression"!==e.type)if("ObjectPattern"!==e.type)if("ArrayPattern"!==e.type)"RestElement"!==e.type?"AssignmentPattern"===e.type&&Ot(e.left,t):Ot(e.argument,t);else for(const n of e.elements)n&&Ot(n,t);else for(const n of e.properties)Ot("RestElement"===n.type?n.argument:n.value,t);else{const n=Nt(e);n&&Dt(n,t)}else Dt(e,t)}function Dt(e,t){const n=Rt(t,e,new Set);n&&t.mutatedVariables.add(n)}function Rt(e,t,n){const r=tt(t,e.record.scopeAnalysis);if(!r||n.has(r))return;if(n.add(r),nt(r)){const n=ht(e.modules,e.record.id,t);return"local"===n.kind?n.variable:void 0}const o=function(e){for(const t of e.defs){const e=t.node;if("VariableDeclarator"===e.type&&e.init)return e.init}return}(r);if(!o)return;const i=function(e){const t=Tt(e);if("Identifier"===t.type)return t;if("MemberExpression"===t.type)return Nt(t);return}(o);return i?Rt(e,i,n):void 0}function Nt(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?Nt(e.object):void 0}function Mt(e){return"Identifier"===e.key.type?e.key.name:"Literal"===e.key.type&&"string"==typeof e.key.value?e.key.value:void 0}function Tt(e){let t=e;for(;Ft(t);)t=t.expression;return t}function Ft(e){const t=e.type;return("TSAsExpression"===t||"TSSatisfiesExpression"===t||"TSNonNullExpression"===t||"TSTypeAssertion"===t)&&!!e.expression}function _t(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 Lt(e){return{kind:"unsupported",moduleId:e,reason:"computed-object-property",message:`Computed object properties in module '${e}' cannot be resolved to static strings.`}}function qt(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 zt(e,t){return{kind:"unsupported",moduleId:e,reason:"duplicate-object-property",propertyName:t,message:`Static object in module '${e}' has duplicate property '${t}'.`}}function Bt(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 Vt(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 Wt(e){return{kind:"unsupported",moduleId:e,reason:"object-spread",message:`Object spreads in module '${e}' cannot be resolved to static strings.`}}function Ut(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 Kt(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 Ht=new Set(["node_modules",".yarn"]);function Jt(e,t,n,r=[]){if(!mn(e,t))return null;const o=ze(n,e),i=et(o),s=function(e,t){const n=Gt(e);return t.map(((e,t)=>({source:n[t]??e,resolvedId:e})))}(o,r);return{id:e,ast:o,scopeAnalysis:i,staticDependencies:s,unsupportedDependencies:pn(o),importsByVariable:Yt(o,i,s),exportsByName:Qt(o,i,s),starExports:en(o,s),topLevelBindingsByVariable:tn(o,i)}}function Gt(e){return e.body.flatMap((e=>("ImportDeclaration"===e.type||"ExportNamedDeclaration"===e.type||"ExportAllDeclaration"===e.type)&&e.source&&Ve(e.source)?[e.source.value]:[]))}function Yt(e,t,n){const r=new Map;for(const o of e.body){if("ImportDeclaration"!==o.type||!Ve(o.source))continue;const e=ln(n,o.source.value);for(const n of o.specifiers){const[o]=t.scopeManager.getDeclaredVariables(n);o&&("ImportSpecifier"!==n.type?r.set(o,{kind:"ImportDefaultSpecifier"===n.type?"default":"namespace",resolvedId:e}):r.set(o,{kind:"named",importedName:cn(n.imported),resolvedId:e}))}}return r}function Qt(e,t,n){const r=new Map;for(const o of e.body)"ExportNamedDeclaration"!==o.type?"ExportDefaultDeclaration"!==o.type?"ExportAllDeclaration"===o.type&&Xt(o,n,r):r.set("default",{kind:"unsupported",reason:"default export"}):Zt(o,t,n,r);return r}function Zt(e,t,n,r){if(e.declaration)!function(e,t,n){if(!e)return;if("VariableDeclaration"===e.type){for(const r of e.declarations){const e=t.scopeManager.getDeclaredVariables(r);if("Identifier"!==r.id.type){for(const t of e)n.set(t.name,{kind:"unsupported",reason:"binding pattern export"});continue}const[o]=e;o&&n.set(r.id.name,{kind:"local",variable:o})}return}if(("FunctionDeclaration"===e.type||"ClassDeclaration"===e.type)&&e.id){const[r]=t.scopeManager.getDeclaredVariables(e);r&&n.set(e.id.name,{kind:"local",variable:r})}}(e.declaration,t,r);else if(e.source&&Ve(e.source)){const t=ln(n,e.source.value);for(const n of e.specifiers){if("ExportSpecifier"!==n.type)continue;const e=cn(n.exported);"default"!==e?r.set(e,{kind:"re-export",importedName:cn(n.local),resolvedId:t}):r.set(e,{kind:"unsupported",reason:"default re-export",resolvedId:t})}}else for(const n of e.specifiers){if("ExportSpecifier"!==n.type)continue;const e=cn(n.exported);if("default"===e){r.set(e,{kind:"unsupported",reason:"default export"});continue}const o=rt(cn(n.local),t);r.set(e,o?{kind:"local",variable:o}:{kind:"unsupported",reason:"unresolved local export"})}}function Xt(e,t,n){const r=dn(e);r&&Ve(e.source)&&n.set(r,{kind:"unsupported",reason:"namespace re-export",resolvedId:ln(t,e.source.value)})}function en(e,t){return e.body.flatMap((e=>"ExportAllDeclaration"!==e.type||dn(e)||!Ve(e.source)?[]:[{resolvedId:ln(t,e.source.value)}]))}function tn(e,t){const n=new Map;for(const r of e.body)nn(r,t,n);return function(e,t,n){Ze(e,{scopeAnalysis:t,bindings:n},{AssignmentExpression(e,{state:t}){sn(e.left,t.scopeAnalysis,t.bindings)},UpdateExpression(e,{state:t}){sn(e.argument,t.scopeAnalysis,t.bindings)},UnaryExpression(e,{state:t}){"delete"===e.operator&&sn(e.argument,t.scopeAnalysis,t.bindings)},ForInStatement(e,{state:t}){on(e.left,t.scopeAnalysis,t.bindings)},ForOfStatement(e,{state:t}){on(e.left,t.scopeAnalysis,t.bindings)}})}(e,t,n),n}function nn(e,t,n){if("VariableDeclaration"===e.type)return void rn(e,t,n);if("ExportNamedDeclaration"===e.type&&"VariableDeclaration"===e.declaration?.type)return void rn(e.declaration,t,n);const r="ExportNamedDeclaration"===e.type||"ExportDefaultDeclaration"===e.type?e.declaration:e;if(r&&("FunctionDeclaration"===r.type||"ClassDeclaration"===r.type)&&r.id){const[e]=t.scopeManager.getDeclaredVariables(r);e&&n.set(e,{kind:"unsupported",reason:`${r.type} binding`})}}function rn(e,t,n){for(const r of e.declarations){const o=t.scopeManager.getDeclaredVariables(r);if("Identifier"!==r.id.type){for(const e of o)n.set(e,{kind:"unsupported",reason:"binding pattern"});continue}const[i]=o;i&&("const"===e.kind?n.set(i,{kind:"const",expression:r.init??null}):n.set(i,{kind:"mutable",declarationKind:e.kind}))}}function on(e,t,n){"VariableDeclaration"!==e.type&&sn(e,t,n)}function sn(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&&sn(e.left,t,n):sn(e.argument,t,n);else for(const r of e.elements)r&&sn(r,t,n);else for(const r of e.properties)sn("RestElement"===r.type?r.argument:r.value,t,n);else{const r=un(e);r&&an(r,t,n,"mutated object binding")}else an(e,t,n,"reassigned binding")}function an(e,t,n,r){const o=tt(e,t);if(!o||nt(o)||!n.has(o))return;const i=n.get(o);"mutable"!==i?.kind&&n.set(o,{kind:"unsupported",reason:r})}function un(e){return"Identifier"===e.type?e:"MemberExpression"===e.type?un(e.object):void 0}function cn(e){return"Identifier"===e.type?e.name:String(e.value)}function dn(e){const t=e.exported;return t?cn(t):void 0}function ln(e,t){return e.find((e=>e.source===t))?.resolvedId??t}function pn(e){const t=[];return Ze(e,t,{ImportExpression(e,{state:t}){const n=function(e){return hn(e.source,"non-literal dynamic import")}(e);fn(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 hn(e.arguments[0],"non-literal dynamic import")}(e);fn(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||!Ve(t)||yn(t.value)})(e)&&t.push({specifier:gn(e),kind:"require"})}}),t}function fn(e){return"non-literal dynamic import"===e||yn(e)}function mn(e,t){if(!je.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=>Ht.has(e)))}function gn(e){return hn(e.arguments[0],"local require")}function hn(e,t){return Ve(e)?e.value:t}function yn(e){return e.startsWith(".")||e.startsWith("/")}function bn(e,t){return new Error(`Unsupported local module graph for ${e}: ${t} could hide an action-catalog connectionId.`)}function wn(e,t,n){const r=new Set;return function(e,t,n,r){const o=[e],i=new Set;for(;o.length>0;){const s=o.shift();if(i.has(s))continue;i.add(s);const a=t.get(s);if(!a)throw bn(e,`missing module record for ${s}`);r({entryId:e,moduleId:s,record:a});for(const t of a.unsupportedDependencies)throw bn(e,`${t.kind} ${t.specifier}`);for(const r of a.staticDependencies){const i=r.resolvedId;if(mn(i,n)){if(!t.has(i))throw bn(e,`uncollected local import ${i} from ${a.id}`);o.push(i)}}}}(e,t,n,(({record:e})=>{const n=function(e){const t=new Set,n=new Set;for(const o of e.body)if("ImportDeclaration"===o.type&&"string"==typeof(r=o.source.value)&&(r===gt||r.startsWith(`${gt}/`))&&!We(o))for(const e of o.specifiers)We(e)||("ImportNamespaceSpecifier"===e.type?n.add(e.local.name):t.add(e.local.name));var r;return{functions:t,namespaces:n}}(e.ast),o=function(e,t){const n=new Set,r=new Set;for(const o of e.scopeManager.scopes)for(const e of o.variables)nt(e)&&(t.functions.has(e.name)&&n.add(e),t.namespaces.has(e.name)&&r.add(e));return{moduleScope:e,actionFunctions:n,actionNamespaces:r}}(e.scopeAnalysis,n);for(const n of it(e.ast,o,e.id)){const o=vn(n,t,e);void 0!==o&&r.add(o)}})),[...r].sort()}function vn(e,t,n){const[r]=e.arguments;if(!r||"ObjectExpression"!==r.type)throw xn(n.id,"non-object action-catalog call arguments");const o=function(e,t){let n;for(const r of e.properties){if("SpreadElement"===r.type)throw xn(t,"spread object arguments");if(r.computed)throw xn(t,"computed object property keys");if(kn(r)){if(n)throw xn(t,"multiple connectionId properties");if("init"!==r.kind)throw xn(t,"accessor connectionId properties");if(!$n(r))throw xn(t,"destructuring pattern in connectionId value");n=r}}return n}(r,n.id);if(!o)return;const i=function(e,t,n){return St({modules:e,mutatedImportedObjectVariables:Pt(e),seenVariables:new Set},t,n)}(t,n.id,o.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 $n(e){const{value:t}=e;return"ObjectPattern"!==t.type&&"ArrayPattern"!==t.type&&"RestElement"!==t.type&&"AssignmentPattern"!==t.type}function kn(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 xn(e,t){return new Error(`Unsupported action-catalog call in ${e}: ${t} could hide a connectionId.`)}const En=new Set(d.builtinModules);function Sn(e){return 0===e.length||e.some((e=>!We(e)))}function In(e,t){const n=Ke(e);if(void 0!==n&&function(e){return e.startsWith("node:")||En.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 jn(e){return"globalThis"===e||"global"===e}let An=new Set;function Pn(e,t,n=new Set){if("MemberExpression"===e.type){const r=Cn(e,t);return!(!r||!jn(r))&&Pn(e.object,t,n)}if("Identifier"!==e.type)return!1;const r=tt(e,t);if(!r)return jn(e.name);if(An.has(r))return!0;if(n.has(r)||1!==r.defs.length)return!1;n.add(r);const[o]=r.defs;if("Variable"!==o.type||"const"!==o.parent.kind)return!1;if(!Ue(o.node))return!1;const{id:i,init:s}=o.node;if(!s)return!1;if("Identifier"===i.type)return Pn(s,t,n);if("ObjectPattern"===i.type){const e=n=>n.properties.some((n=>{if("Property"!==n.type)return!1;if(!jn(Dn(n,t)??""))return!1;const r=On(n.value);return r===o.name||"ObjectPattern"===r.type&&e(r)}));if(e(i))return Pn(s,t,n)}return!1}function Cn(e,t){return e.computed?Rn(e.property,t):"Identifier"===e.property.type?e.property.name:void 0}function On(e){return"AssignmentPattern"===e.type?e.left:e}function Dn(e,t){return e.computed||"Identifier"!==e.key.type?Rn(e.key,t):e.key.name}function Rn(e,t,n=new Set){const r=Ke(e);if(void 0!==r)return r;if("Identifier"!==e.type)return;const o=tt(e,t);if(!o||n.has(o)||1!==o.defs.length)return;n.add(o);const[i]=o.defs;if("Variable"!==i.type||"const"!==i.parent.kind)return;if(!Ue(i.node))return;const{id:s,init:a}=i.node;return"Identifier"===s.type&&a?Rn(a,t,n):void 0}const Nn=[{object:"Object",property:"assign"},{object:"Object",property:"values"},{object:"Object",property:"entries"},{object:"Object",property:"getOwnPropertyDescriptors"}];function Mn(e,t,n,r){An=new Set;for(const[e,o]of t.referencesByIdentifier)n.has(e.name)&&!o.resolved&&r.onNamedAccess(e.name);const o=e=>{for(const i of e.properties){if("RestElement"===i.type){r.onBulkCopy();continue}const e=Dn(i,t);e&&n.has(e)&&r.onNamedAccess(e);const s=On(i.value);e&&jn(e)&&"ObjectPattern"===s.type&&o(s)}},i=(e,n)=>{n&&Pn(n,t)&&o(e)};Ze(e,null,{MemberExpression(e){if(!Pn(e.object,t))return;const o=Cn(e,t);o&&n.has(o)&&r.onNamedAccess(o)},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,r;if("VariableDeclaration"===e.left.type){if(1!==e.left.declarations.length)return;const[o]=e.left.declarations;if("ObjectPattern"===o.id.type)n=o.id;else{if("Identifier"!==o.id.type||"const"!==e.left.kind)return;r=function(e,t){return t.scopeManager.getDeclaredVariables(e)[0]}(o,t)}}else{if("ObjectPattern"!==e.left.type)return;n=e.left}e.right.elements.some((e=>null!==e&&"SpreadElement"!==e.type&&Pn(e,t)))&&(n?o(n):r&&An.add(r))},ObjectExpression(e){for(const n of e.properties)"SpreadElement"===n.type&&Pn(n.argument,t)&&r.onBulkCopy()},CallExpression(e){const n=function(e,t){if("MemberExpression"!==e.type||"Identifier"!==e.object.type)return;const n=Cn(e,t);if(!n)return;const r=e.object.name;return Nn.find((e=>e.object===r&&e.property===n))}(e.callee,t);if(!n)return;("assign"===n.property?e.arguments.slice(1):e.arguments).some((e=>"SpreadElement"!==e.type&&Pn(e,t)))&&r.onBulkCopy()}})}const Tn=new Set(["fetch","XMLHttpRequest","WebSocket","EventSource"]);function Fn(e,t,n){const r=ze(e,t);Mn(r,n??et(r),Tn,{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(Tn).join(", ")}), into a plain object: ${t}`)}})}const _n=new Set(["crypto","Intl"]),Ln=new Map;function qn(e,t,n,r){!function(e,t){const n=ze(e,t);for(const e of n.body)"ImportDeclaration"!==e.type||We(e)||!Sn(e.specifiers)?"ExportNamedDeclaration"===e.type&&e.source&&!We(e)&&Sn(e.specifiers)?In(e.source,t):"ExportAllDeclaration"!==e.type||We(e)||In(e.source,t):In(e.source,t);Ze(n,null,{ImportExpression(e){In(e.source,t)}})}(e,t),Fn(e,t,r),function(e,t,n,r){const o=ze(e,t),i=r??et(o);let s=Ln.get(t);s||(Ln.size>=500&&Ln.clear(),s=new Set,Ln.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))};Mn(o,i,_n,{onNamedAccess:a,onBulkCopy(){for(const e of _n)a(e)}})}(e,t,n,r)}function zn(e){const t=e.relativePath.split(a.sep).join("/");return`${l.createHash("sha256").update(t).digest("hex")}.${e.name}`}function Bn(e){const t=[];for(const{exportName:n,queryName:r}of e)t.push(`export async function ${n}(...args) {`),t.push(` return globalThis.DD_APPS_RUNTIME.executeBackendFunction(${JSON.stringify(r)}, args);`),t.push("}"),t.push("");return t.join("\n")}function Vn(e,t){try{return require.resolve(e,{paths:[t]}),!0}catch{return!1}}function Wn(e){return Vn("@datadog/action-catalog/action-execution",e)}function Un(e){return Vn("@datadog/apps-backend/runtime/jsFunctionWithActions",e)}function Kn(e,t,n){const r=[],o=Un(n);return r.push(`import { ${e} } from ${JSON.stringify(t)};`),o&&r.push("import { buildRuntimeFromJsFunctionWithActions } from '@datadog/apps-backend/runtime/jsFunctionWithActions';\nimport { setBackend } from '@datadog/apps-backend/runtime';"),Wn(n)&&r.push("import { setExecuteActionImplementation } from '@datadog/action-catalog/action-execution';"),r.push(""),r.push('/** @param {import("./context.types").Context} $ */'),r.push("export async function main($) {"),r.push(" globalThis.$ = $;"),r.push(""),o&&(r.push(" // Supply the backend runtime context"),r.push(" if (typeof buildRuntimeFromJsFunctionWithActions === 'function' && typeof setBackend === 'function') {\n setBackend(buildRuntimeFromJsFunctionWithActions($));\n }"),r.push("")),r.push(" // Register the $.Actions-based implementation for executeAction"),r.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 }"),r.push(""),r.push(" const args = $.backendFunctionArgs ?? [];"),r.push(` const result = await ${e}(...args);`),r.push(" return result;"),r.push("}"),r.join("\n")}const Hn=/^(?:\0|virtual:)/;function Jn(e){return e.split("?")[0]}function Gn(e){return Hn.test(e)}function Yn(e,t){const n=function(e){const t=new Map;return{plugin:{name:"dd-backend-module-graph-collector",moduleParsed(n){const r=Jn(n.id);if(Gn(r))return;if(!mn(r,e))return;if("string"!=typeof n.code)return;let o;try{o=this.parse(n.code)}catch(e){throw bn(r,`unparseable module source (${e instanceof Error?e.message:String(e)})`)}const i=Jt(r,e,o,function(e){return e.importedIdResolutions?.map((({id:e})=>e))??[...e.importedIds]}(n).map(Jn));i&&t.set(i.id,i)}},getModuleRecords:()=>t}}(t);return{plugin:n.plugin,getAllowedConnectionIds:()=>wn(e,n.getModuleRecords(),t),getModuleRecords:n.getModuleRecords}}function Qn(e,t,n){return{name:"dd-backend-static-checks",moduleParsed(r){const o=Jn(r.id);if(Gn(o)||!mn(o,e))return;const i=n().get(o);let s,a;if(i)s=i.ast,a=i.scopeAnalysis;else{if("string"!=typeof r.code)return;try{s=this.parse(r.code)}catch(e){const t=e instanceof Error?e.message:String(e);throw new Error(`Unsupported module source for ${o}: ${`unparseable module source (${t})`} could hide a Node-builtin import or restricted-global access.`)}a=et(ze(s,o))}qn(s,o,t,a)}}}function Zn(e,t){return{name:e,enforce:"pre",resolveId:e=>t[e]?{id:e,moduleSideEffects:!0}:null,load:e=>t[e]?t[e]:null}}function Xn(e,t,n=[]){return{configFile:!1,envFile:!1,envPrefix:[],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:[...je,".json"]},ssr:{noExternal:!0},plugins:[Zn("dd-backend-resolve",t),...n]}}const er=async(e,t)=>{const n=(await Promise.all(e.map((e=>m.glob(e,{absolute:!0,cwd:t,nodir:!0}))))).flat(),r=Array.from(new Set(n)).map((e=>a.relative(t,e))),o=(e=>{if(0===e.length)return"";const t=e[0].split(a.sep);let n="";for(let r=0;r<t.length-1;r++){const o=t.slice(0,r+1).join(a.sep);if(!e.every((e=>e.startsWith(`${o}${a.sep}`))))break;n=o}return n})(r);return r.map(((e,t)=>{const r=o?e.slice(o.length+1):e;return{absolutePath:n[t],relativePath:r.split(a.sep).join("/")}}))},tr="datadog-app.local.json";async function nr(e){const t=g.join(e,tr);let n,r;try{n=await De(t)}catch(e){if(function(e){return"object"==typeof e&&null!==e&&"code"in e}(e)&&"ENOENT"===e.code)return{};throw e}try{r=JSON.parse(n)}catch{throw new Error(`${tr} is not valid JSON.`)}if("object"!=typeof r||null===r||Array.isArray(r))throw new Error(`${tr} must be a flat JSON object mapping env var names to string values.`);const o=Object.create(null);for(const[e,t]of Object.entries(r)){if("string"!=typeof t)throw new Error(`${tr}'s "${e}" value must be a string, got ${typeof t}.`);o[e]=t}return o}function rr(e){return"object"==typeof e&&null!==e&&"code"in e}async function or(e,t){if(a.basename(e).toLowerCase()===tr)return!0;if(!t)return!1;try{const n=await o.stat(e);return n.dev===t.dev&&n.ino===t.ino}catch(e){if(rr(e)&&"ENOENT"===e.code)return!1;throw e}}async function ir(e){const t=await o.mkdtemp(a.join(p.tmpdir(),"dd-apps-manifest-")),n=a.join(t,"manifest.json");try{await o.writeFile(n,JSON.stringify(function(e){const t={};for(const n of e)t[zn(n)]={allowedConnectionIds:[...n.allowedConnectionIds]};return{backend:{functions:t}}}(e),null,2))}catch(e){throw await Pe(t),e}return{manifestAsset:{absolutePath:n,relativePath:"manifest.json"},cleanup:()=>Pe(t)}}async function sr({backendOutputs:e,backendFunctions:t,context:n,options:r}){const s=n.getLogger(ke),{buildRoot:u,bundler:{outDir:c}}=n,d=a.join(c,xe),l=a.resolve(J("APPS_PACKAGE_DIR")||c),p=a.join(l,xe);await Promise.all([o.rm(p,{force:!0}),o.rm(d,{force:!0})]);const m=a.relative(u,c),g=await er([...r.include,`${m}/**/*`],u);if(0===g.length&&0===e.size)return void s.debug("No assets to package.");let h;await o.mkdir(l,{recursive:!0});try{const n=new Set([p,d]),r=new Set(e.values()),c=g.filter((e=>!n.has(a.resolve(e.absolutePath)))).filter((e=>!r.has(e.absolutePath))),l=await async function(e){try{const t=await o.stat(a.join(e,tr));return{dev:t.dev,ino:t.ino}}catch(e){if(rr(e)&&"ENOENT"===e.code)return;throw e}}(u),m=(await Promise.all(c.map((async e=>({asset:e,isCredentialsAsset:await or(e.absolutePath,l)}))))).filter((({isCredentialsAsset:e})=>!e)),y=[...m.map((({asset:e})=>({...e,relativePath:`frontend/${e.relativePath}`})))];for(const[t,n]of e)y.push({absolutePath:n,relativePath:`backend/${t}.js`});const b=await ir(t);h=b.cleanup,y.push(b.manifestAsset);const w=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,r)=>{const o=i.createWriteStream(t),s=n.generateNodeStream({type:"nodebuffer",streamFiles:!0,compression:"DEFLATE",compressionOptions:{level:9}});s.on("error",r),o.on("error",r),o.on("close",e),s.pipe(o)}));const{size:r}=await o.stat(t);return{archivePath:t,size:r,assets:e}})(y,p);return s.info(`App package written to ${w.archivePath}.`),w.archivePath}finally{await(h?.())}}function ar(e){return e.endsWith(".tsx")?"tsx":e.endsWith(".ts")||e.endsWith(".mts")||e.endsWith(".cts")?"ts":e.endsWith(".jsx")?"jsx":"js"}function ur(e){return e.endsWith(Se)?e.slice(0,-14):e}function cr(e){return Jn(ur(e))}function dr(){let e=0,t=null;return{start(){const n=++e;return t=n,{isCurrent:()=>t===n,concludeIfCurrent:()=>t===n&&(t=null,!0)}},hasActiveScope:()=>null!==t,forceInvalidate(){t=null}}}function lr(e,t){return t?Math.min(250*2**(e-1),2e3):250}function pr(e){let t;return()=>(t??(t=e().catch((e=>{throw t=void 0,e}))),t)}const fr=pr((()=>Promise.resolve().then((function(){return Eu})))),mr=pr((()=>Promise.resolve().then((function(){return sc})))),gr=new b.AsyncLocalStorage,hr=Reflect.has(globalThis,"$"),yr=new b.AsyncLocalStorage,br=new b.AsyncLocalStorage;let wr=Reflect.get(globalThis,"$");function vr(){Object.getOwnPropertyDescriptor(globalThis,"$")?.get!==$r&&Object.defineProperty(globalThis,"$",{configurable:!0,enumerable:!0,get:$r,set:kr})}function $r(){const e=gr.getStore();if(e)return e.value;const t=yr.getStore();return t?t.assigned?t.value:hr?wr:void 0:wr}function kr(e){const t=gr.getStore();if(t)return void(t.value=e);const n=yr.getStore();if(n)return n.assigned=!0,void(n.value=e);wr=e}vr();const xr=new b.AsyncLocalStorage;function Er(e){return"object"==typeof e&&null!==e}function Sr(e,t){if(!Er(e)||Array.isArray(e))throw new Error(`The preview runtime context ${t} must be an object.`);if("string"!=typeof e.id||0===e.id.length)throw new Error(`The preview runtime context ${t} must have a non-empty string "id" field.`);if("string"!=typeof e.orgId||0===e.orgId.length)throw new Error(`The preview runtime context ${t} must have a non-empty string "orgId" field.`);if(void 0!==e.email&&null!==e.email&&"string"!=typeof e.email)throw new Error(`The preview runtime context ${t} must have a string "email" field when provided.`);if(void 0!==e.name&&null!==e.name&&"string"!=typeof e.name)throw new Error(`The preview runtime context ${t} must have a string "name" field when provided.`)}const Ir=Ae(void 0);function jr(e){const t=e.maxRetries*e.timeoutMs+function(e){let t=0;for(let n=1;n<e.maxRetries;n++)t+=lr(n,e.exponentialBackoff);return t}(e);return{actionCallTimeoutMs:2*t,totalExecutionTimeoutMs:1.2*t}}async function Ar(e,t,n,r){const[{buildScopedEnv:o,runWithScopedEnv:i},s]=await Promise.all([mr(),nr(n),fr()]),a=o(s);return br.run(new Set,(()=>yr.run({assigned:!1,value:void 0},(()=>i(a,(()=>e(t)),r)))))}function Pr(e,t,n){const{inputs:r,connectionId:o}=e;if("object"!=typeof r||!r)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(", ")}]`)}(o,t,n),{inputs:r,connectionId:o}}async function Cr(e,t,n,r,o){const{inputs:i,connectionId:s}=Pr(n,r,o),a=function(e,t){const n=`Inputs to action ${t}`,r=Br(e,n);if(null===r||"object"!=typeof r||Array.isArray(r))throw new Error(`${n} must be a plain object after JSON round-tripping, but a custom toJSON() changed its top-level shape to ${Array.isArray(r)?"an array":null===r?"null":typeof r} — return a plain JSON-compatible object instead.`);return r}(i,o),{runAllowed:u}=await fr();return u((()=>e(t,a,s)))}let Or=Promise.resolve();function Dr(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 Rr=dr();function Nr(e,t,n=[]){return new Proxy((function(){}),{get(r,o){if("then"===o||"toJSON"===o)return;const i=n.concat(String(o));return Nr(e,t,i)},async apply(r,o,i){const s=n.join(".");if(0===i.length)throw new Error(`No arguments provided to action $.Actions.${s}`);const a=Er(i[0])?i[0]:{};return Cr(e,`com.datadoghq.${s}`,a,t,`$.Actions.${s}`)}})}function Mr(e,t,n){return new Promise(((r,o)=>{const i=setTimeout((()=>{o(new Error(`${n} timed out after ${t}ms`))}),t);e.then((e=>{clearTimeout(i),r(e)}),(e=>{clearTimeout(i),o(e)}))}))}function Tr(e,t,n,r,o,i){if(!e(o))return Promise.resolve();const s=t.get(r);if(s)return s;const a=n(r,i).catch((e=>{throw t.delete(r),e}));return t.set(r,a),a}const Fr=new WeakMap;async function _r(e,t){const n=e("@datadog/action-catalog/action-execution"),r=(await Mr(n,t,"Loading @datadog/action-catalog/action-execution")).setExecuteActionImplementation;"function"==typeof r&&r((async(e,t)=>{const n=xr.getStore();if(!n)throw new Error(`No active local execution to run "${e}" under.`);if(n.isAbandoned())throw Dr(n.functionName,`run "${e}"`);const r=Er(t)?t:{};return Cr(n.executeAction,e,r,n.allowedConnectionIds,`"${e}"`)}))}const Lr=new WeakMap;async function qr(e,t){const n=Promise.all([e("@datadog/apps-backend/runtime/jsFunctionWithActions"),e("@datadog/apps-backend/runtime")]),[r,o]=await Mr(n,t,"Loading @datadog/apps-backend/runtime"),i=r.buildRuntimeFromJsFunctionWithActions,s=o.setBackend;if("function"!=typeof i||"function"!=typeof s)return;const a=new WeakMap;s(new Proxy({},{get(e,t){const n=xr.getStore();if(!n)throw new Error("No active local execution to resolve an apps-backend accessor under.");if(n.isAbandoned())throw Dr(n.functionName,"resolve a further apps-backend accessor");let r=a.get(n);if(void 0===r&&(r=i(n.$),a.set(n,r)),!Er(r))return;const o=r[String(t)];return"function"==typeof o?o.bind(r):o}}))}class zr extends Error{}function Br(e,t){let n;try{let r=!0;n=JSON.stringify(e,(function(e,n){const o=r;if(r=!1,null!==n&&"object"==typeof n&&Object.getOwnPropertySymbols(n).length>0)throw new zr(`${t} contains a Symbol-keyed property${e?` (at "${e}")`:""}, which JSON.stringify silently drops instead of serializing — use a plain JSON-compatible value instead.`);if(n instanceof Map||n instanceof Set)throw new zr(`${t} contains a ${n.constructor.name}${e?` (at "${e}")`:""}, which JSON.stringify silently flattens to "{}" instead of serializing its entries — use a plain array or object instead.`);if("number"==typeof n&&!Number.isFinite(n))throw new zr(`${t} contains ${n}${e?` (at "${e}")`:""}, which JSON.stringify silently converts to "null" instead of throwing — use a finite number instead.`);if(!o&&void 0===n&&Array.isArray(this))throw new zr(`${t} contains undefined inside an array (at index ${e}), which JSON.stringify silently converts to null instead of dropping it — use null explicitly instead.`);if(!o&&("function"==typeof n||"symbol"==typeof n)&&Array.isArray(this))throw new zr(`${t} contains a ${typeof n} inside an array (at index ${e}), which JSON.stringify silently converts to null instead of dropping it — use null explicitly instead.`);if(!(o||"function"!=typeof n&&"symbol"!=typeof n||Array.isArray(this)))throw new zr(`${t} contains a ${typeof n} (at "${e}"), which JSON.stringify silently drops instead of serializing — use a plain JSON-compatible value instead.`);return n}))}catch(e){if(e instanceof zr)throw e;throw new Error(`${t} 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(`${t} is a ${typeof e} value, which JSON.stringify silently drops instead of serializing — use a plain JSON-compatible value instead.`)}async function Vr(e,t,n,r,o,i,s,a,u=1e4,c=Ir){const d=`${e.relativePath}/${e.name}`;return function(e){const t=Or.then(e);return Or=t.then((()=>{}),(()=>{})),t}((async()=>{const l=await o();!function(e){if(!Er(e)||Array.isArray(e))throw new Error("The preview runtime context must be an object.");const t=e.Source;if(!Er(t)||Array.isArray(t))throw new Error('The preview runtime context must have a "Source" object.');Sr(t.initiator,"Source.initiator"),Sr(t.runAsUser,"Source.runAsUser")}(l);const p=s(e.absolutePath),f=await Mr(p,u,`Resolving allowed connections for "${d}"`),m=e.absolutePath+Se;let g;const h=Ar(i,m,t,(e=>{g=e}));let y;try{y=await Mr(h,u,`Loading "${d}"`)}catch(e){throw g?.abandon(),e}return async function(e,t,n,r,o,i,s,a,u,c){s.debug(`Executing "${e.name}" in-process with args`);const{actionCallTimeoutMs:d,totalExecutionTimeoutMs:l}=jr(c),p=Rr.start();let f,m,g,h,y,b=0;const w=e=>{x(),h?.abandonIfCurrent(),y?.abandon(),m?.(e)},v=()=>{f=setTimeout((()=>{w(new Error(`Local execution of "${e.name}" timed out after ${a}ms`))}),a)},$=()=>{clearTimeout(g),g=setTimeout((()=>{w(new Error(`Local execution of "${e.name}" exceeded the absolute ${l}ms execution ceiling, regardless of any $.Actions call in flight.`))}),l)},k=async(t,n,o)=>{if(!p.isCurrent())throw Dr(e.name,`run "${t}"`);b+=1,clearTimeout(f),$();try{const e=r(t,n,o);return await Mr(e,d,`$.Actions call to "${t}"`)}finally{b-=1,0===b&&p.isCurrent()&&v()}},x=()=>{p.concludeIfCurrent()},E={...o,backendFunctionArgs:n,Actions:Nr(k,e.allowedConnectionIds)},S={executeAction:k,allowedConnectionIds:e.allowedConnectionIds,isAbandoned:()=>!p.isCurrent(),functionName:e.name,$:E},I=async()=>{try{const r=(u??await Ar(i,e.absolutePath+Se,t))[e.name];if("function"!=typeof r)throw new Error(`"${e.name}" is not a function exported from ${e.absolutePath}`);return vr(),await gr.run({value:E},(()=>xr.run(S,(async()=>{const o=()=>{if(!p.isCurrent())throw new Error(`Execution of "${e.name}" was abandoned after timing out before it could start.`)};o();const s=fr(),u=mr(),c=nr(t),[{runBlocked:d},{buildScopedEnv:l,runWithScopedEnv:f},m]=await Promise.all([s,u,c]);o();const g=l(m),b=await f(g,(()=>d((async()=>{const s=function(e,t,n){return Tr(Wn,Fr,_r,e,t,n)}(i,t,a),u=function(e,t,n){return Tr(Un,Lr,qr,e,t,n)}(i,t,a);await Promise.all([s,u]),o();return function(e,t){return Br(e,`Local execution of "${t.name}"'s return value`)}(await r(...n),e)}),(e=>{h=e}))),(e=>{y=e}));return{data:b}}))))}finally{x()}},j=new Promise(((e,t)=>{m=t,v()}));$();const A=I();let P=!1;A.catch((t=>{if(!P)return;const n=t instanceof Error?t.message:String(t);s.debug(`"${e.name}" failed after its caller had already stopped waiting: ${n}`)}));try{return await Promise.race([A,j])}finally{P=!0,clearTimeout(f),clearTimeout(g)}}({...e,allowedConnectionIds:f},t,n,r,l,i,a,u,y,c)}))}function Wr(e,t){return new Promise(((n,r)=>{const o=setTimeout((()=>{t?.removeEventListener("abort",i),n()}),e),i=()=>{clearTimeout(o),r(t?.reason)};t?.addEventListener("abort",i,{once:!0}),t?.aborted&&i()}))}function Ur(e){return null!==e&&"object"==typeof e&&"name"in e&&("TimeoutError"===e.name||"AbortError"===e.name)}function Kr(e,t){const n=lr(e,t.exponentialBackoff);return t.jitter?n/2+Math.random()*(n/2):n}function Hr(e){return`${e.relativePath}/${e.name}`}async function Jr(e,t,n,r){const o=Hr(t),i=`virtual:dd-backend-dev:${o}`,s=function(e,t,n){return Kn(e,t,n??process.cwd())}(t.name,t.absolutePath,n),a=Yn(t.absolutePath,n);r.debug(`Bundling backend function "${o}" from ${t.absolutePath}`);const u=Qn(n,r,a.getModuleRecords),c=Xn(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 "${o}"`);const p="chunk"===l.output[0].type?l.output[0].code:"",f={...t,allowedConnectionIds:a.getAllowedConnectionIds()};return r.debug(`Bundled "${o}" (${p.length} bytes)`),{func:f,code:p}}async function Gr(e,t,n,r,o,i,s){const a=`https://api.${n.site}/api/v2/app-builder/queries/preview-async`;i.debug(`Calling Datadog API: ${a}`);const u=JSON.stringify({data:{type:"queries",attributes:{query:{id:l.randomUUID(),name:t,type:"action",properties:{spec:e,onlyTriggerManually:!0}},template_params:{}}}}),c=await r({url:a,method:"POST",type:"json",signal:s,getData:()=>({data:u,headers:{"Content-Type":"application/json"}})}),d=c.data?.id;if(!d)throw new Error("No receipt ID returned from Datadog API");return i.debug(`Query execution started with receipt: ${d}`),async function(e,t,n,r,o,i){const s=`https://api.${t.site}/api/v2/app-builder/queries/execution-long-polling/${e}`,{maxRetries:a,timeoutMs:u}=r;for(let e=0;e<a;e++){if(e>0){const t=Kr(e,r);o.debug(`Waiting ${Math.round(t)}ms before long-poll retry...`),await Wr(t,i)}let t;o.debug(`Long-poll attempt ${e+1}/${a}...`);try{const e=AbortSignal.timeout(u),r=i?AbortSignal.any([i,e]):e;t=await n({url:s,type:"json",signal:r})}catch(t){if(i?.aborted)throw i.reason;if(!Ur(t))throw t;o.debug(`Long-poll attempt ${e+1} timed out after ${u}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 c=t.data?.attributes;if(o.debug(`Long-poll response, done: ${c?.done}`),c?.done){if(void 0===c.outputs||null===c.outputs)throw new Error("Query execution completed without outputs");return c.outputs}}throw new Error("Query execution timed out")}(d,n,r,o,i,s)}function Yr(e,t,n){e.statusCode=t,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({success:!1,error:n}))}function Qr(e,t){e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({success:!0,result:t}))}function Zr(e,t,n){t?n(t).catch((()=>Yr(e,500,"Unexpected error"))):Yr(e,400,`Auth credentials not configured. ${Le}`)}function Xr(e,t,n,r){const o=t instanceof eo?t.statusCode:500,i=t instanceof Error?t.message:"Internal server error";n&&r&&n.debug(`Error handling ${r}: ${i}`),Yr(e,o,i)}class eo extends Error{constructor(e,t){super(t),this.statusCode=e}}async function to(e,t){const{functionName:n,args:r=[]}=await function(e){return new Promise(((t,n)=>{let r="";e.on("data",(e=>{r+=e.toString()})),e.on("end",(()=>{try{t(JSON.parse(r))}catch{n(new Error("Invalid JSON body"))}})),e.on("error",n)}))}(e);if(!n||"string"!=typeof n)throw new eo(400,"Missing or invalid functionName");const o=t.get(n);if(!o)throw new eo(404,`Backend function "${n}" not found`);return{func:o,args:r}}async function no(e,t,n){const{func:r,args:o}=await to(e,t);return{...await n(r),args:o}}async function ro(e,t,n,r,o,i,s,a,u,c){try{const{func:d,args:l}=await to(e,n),p=Hr(d);c.debug(`Executing action locally: ${p} with args`);const f=function(e,t,n,r){return async(o,i,s)=>{try{const a=await Gr(void 0!==s?{fqn:o,inputs:i,connectionId:s}:{fqn:o,inputs:i},o,e,t,n,r);return r.info(`$.Actions call to "${o}" succeeded: ${JSON.stringify(a)}`),a}catch(e){const t=e instanceof Error?e.message:String(e);throw r.error(`$.Actions call to "${o}" failed: ${t}`),e}}}(r,o,i,c),m=function(e,t,n,r){return async()=>{const o=new AbortController,i=new Error("Runtime context hydration timed out after 60000ms");let s;const a=new Promise(((e,t)=>{s=setTimeout((()=>{o.abort(i),t(i)}),6e4)}));try{const i=await Promise.race([Gr({fqn:"com.datadoghq.datatransformation.jsFunctionWithActions",inputs:{script:"export async function main($) {\n return $;\n}",allowedConnectionIds:[],context:{}}},"Datadog Apps local runtime context",e,t,n,r,o.signal),a]);if("object"!=typeof i||null===i||!("data"in i))throw new Error('Runtime context hydration completed without a "data" field in its outputs');return i.data}catch(e){if(o.signal.aborted)throw o.signal.reason;throw e}finally{void 0!==s&&clearTimeout(s)}}}(r,o,i,c);Qr(t,await Vr(d,u,l,f,m,s,a,c,1e4,i))}catch(e){Xr(t,e,c,"executeAction")}}async function oo(e,t,n,r,o,i,s,a){try{const{func:u,code:c,args:d}=await no(e,n,r),l=Hr(u);a.debug(`Executing action via cloud: ${l} with args`);const p=await async function(e,t,n,r,o,i,s){const a=Hr(t),u=await Gr({fqn:"com.datadoghq.datatransformation.jsFunctionWithActions",inputs:{script:e,allowedConnectionIds:t.allowedConnectionIds,context:{backendFunctionArgs:n}}},a,r,o,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,o,i,s,a);Qr(t,p)}catch(n){Xr(t,n,a,e.url??"executeActionViaCloud")}}function io(e,t,n,r,o,i,s,a,u,c){const d=t=>Jr(e,t,a,u),l="dev-verify"===c,p=n();return p.length>0&&u.info(`Dev server middleware active for ${p.length} backend function(s): ${p.map((e=>e.name)).join(", ")}`),(e,c,p)=>{if("POST"!==e.method)return void p();const f=(m=n(),new Map(m.map((e=>[zn(e),e]))));var m;"/__dd/debugBundle"===e.url?async function(e,t,n,r){try{const{code:o}=await no(e,n,r);t.statusCode=200,t.setHeader("Content-Type","text/plain"),t.end(o)}catch(e){Xr(t,e)}}(e,c,f,d).catch((()=>{Yr(c,500,"Unexpected error")})):"/__dd/executeActionViaCloud"===e.url||"/__dd/executeAction"===e.url&&l?function(e,t,n,r,o,i,s,a){Zr(t,i,(i=>oo(e,t,n,r,o,i,s,a)))}(e,c,f,d,o,i,s,u):"/__dd/executeAction"===e.url?Zr(c,i,(n=>ro(e,c,f,o,n,s,t,r,a,u))):p()}}const so=a.join(__dirname,"./apps-runtime.mjs"),ao=[".env",".env.*","*.{crt,pem}","**/.git/**"],uo=({bundler:e,context:t,options:n})=>{const r=t.getLogger(ke),{auth:i}=t;t.inject({type:"file",position:Te.MIDDLE,value:so});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"]},server:{fs:{deny:[...ao,tr]}}}),resolveId:{order:"pre",async handler(e,n,r){const o=e.replace(/[?#].*$/,"");if(a.basename(o).toLowerCase()===tr)throw new Error(`${tr} cannot be imported directly — read Custom Credentials via process.env instead.`);if(!0!==r.ssr)return null;const i=br.getStore();if(!(!!n&&(n.endsWith(Se)||!!i&&i.has(n))))return null;const s=await this.resolve(e,n,{...r,skipSelf:!0});if(!s||s.external)return s;if(s.id.endsWith(Se))return s;if(!mn(s.id,t.buildRoot))return s;const u=s.id+Se;return Ee.test(s.id)||i?.add(u),{...s,id:u}}},transform:{filter:{id:{include:[Ie],exclude:[/node_modules/,/[/\\]dist[/\\]/]}},handler(e,n,o){if(n.endsWith(Se)&&o?.ssr)return null;const i=n.indexOf("?"),u=-1===i?n:n.slice(0,i),c=this.parse(e),d=et(ze(c,u));qn(c,u,r,d);const l=He(c,u);if(0===l.length)return-1===i&&(r.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 r=a.relative(n,t).replace(Ee,""),o=[],i=[];for(const n of e){const e={relativePath:r,name:n,absolutePath:t,allowedConnectionIds:[]};o.push(e),i.push({exportName:n,queryName:zn(e)})}return{functions:o,proxyCode:Bn(i)}}(l,u,t.buildRoot);return s(u,p),r.debug(`Generated proxy for ${u} with ${p.length} export(s)`),{code:f,map:null}}},async closeBundle(){if(c)return void r.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,r){const i=await o.mkdtemp(a.join(p.tmpdir(),"dd-apps-backend-")),s=new Map,u=new Map;r.debug(`Building ${t.length} backend function(s) via vite.build()`);try{for(const o of t){const t=zn(o),c=`\0dd-backend:${t}`,d=Kn(o.name,o.absolutePath,n),l=Yn(o.absolutePath,n),p=Qn(n,r,l.getModuleRecords),f=Xn(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),r.debug(`Backend function "${t}" output: ${n}`)}u.set(o.absolutePath,l.getAllowedConnectionIds())}}catch(e){try{await Pe(i)}catch(e){r.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,r);i=n.outDir,s=n.outputs,d=n.functions}try{await sr({backendOutputs:s,backendFunctions:d,context:t,options:n})}finally{i&&await Pe(i)}},configureServer(o){let s;c=!0;try{s=(()=>{const e=J("API_KEY"),t=J("APP_KEY");if(e&&t)return async n=>{const{trustedFetch:r}=await _e();return ee({...n,auth:{apiKey:e,appKey:t},fetchImpl:r})};const n=J("OAUTH_ACCESS_TOKEN");if(n)return async e=>{const{trustedFetch:t}=await _e();return ee({...e,auth:{accessToken:n},fetchImpl:t})};throw new qe})()}catch(e){if(!(e instanceof qe))throw e;r.warn(`No authentication configured. Both the /__dd/executeAction and /__dd/executeActionViaCloud endpoints will be unavailable. ${Le}`)}const a=o.ssrLoadModule.bind(o),d=io(e.build,a,u,(async e=>{const n=await async function(e,t,n,r){const o=new Map,i=new Set,s=[],a=t+Se;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?cr(t.id):void 0;if(!a||!t.file)continue;if(!mn(a,n))continue;if(t.id&&ur(t.id).includes("?"))throw bn(a,`Vite resource query on module id "${t.id}"`);if(i.has(a))continue;let u,c;i.add(a);try{u=await De(t.file)}catch(e){const t=e instanceof Error?e.message:String(e);throw bn(a,`unreadable module source (${t})`)}try{const e=await h.transform(u,{loader:ar(a),format:"esm"});c=y.parseAst(e.code)}catch(e){const t=e instanceof Error?e.message:String(e);throw bn(a,`unparseable module source (${t})`)}const d=Gt(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 bn(a,`unresolvable import specifier "${d[t]}"`);return cr(e.id)})),f=Jt(a,n,c,p);f&&(qn(f.ast,f.id,r,f.scopeAnalysis),o.set(f.id,f));for(const n of t.importedModules)n.id&&await e.transformRequest(n.id,{ssr:!0}),s.push(n)}return o}(o,e,t.buildRoot,r);return wn(e,n,t.buildRoot)}),i,s,n.longPolling,t.buildRoot,r,o.config.mode);o.middlewares.use(d)}}},co=({options:e,context:t,bundler:n})=>{const r=t.getLogger(ke),o=(e=>{const t=e[$e]||{};return{include:t.include||[],longPolling:Ae(t.longPolling)}})(e);return"vite"!==t.bundler.name?(r.warn(`The apps plugin only supports Vite; skipping under '${t.bundler.name}'.`),[]):[{name:ke,enforce:"post",vite:uo({bundler:n,context:t,options:o})}]},lo="errorTracking",po="datadog-error-tracking-plugin",fo=(e,n,r)=>{if(".map"!==a.extname(r))throw new Error(`The file ${t.green.bold(r)} is not a sourcemap.`);const o=r.replace(/\.map$/,""),i=a.relative(n,o),s=e?((e,t)=>{if(e.startsWith("/"))return a.join(e,t);try{const n=e.replace(/\/*$/,"/"),r=new URL(n),o=t.replace(/^[\\/]*/,"");return new URL(o,r).href}catch{return`${e}${t}`}})(e,i):i.split(a.sep).join("/");return{minifiedFilePath:o,minifiedUrl:s,relativePath:i}},mo=/"?ddDebugId"?:"([0-9a-fA-F-]{36})"/,go=async e=>(async e=>{const t=await o.open(e,"r");try{const e=Buffer.alloc(1024);let r="",o=0;for(;;){const{bytesRead:i}=await t.read(e,0,1024,o);if(0===i)return;const s=r+e.toString("utf-8",0,i),a=(n=s,mo.exec(n)?.[1]);if(a)return a;r=s.slice(-64),o+=i}}finally{await t.close()}var n})(e).catch((()=>{})),ho=/[/]+|[\\]+/g,yo=/^[/]+|^[\\]+|[/]+$|[\\]+$/g,bo=(e,t)=>{const n=e.replace(yo,"").split(ho),r=t.replace(yo,"").split(ho),o=n.join("/");let i="";for(let e=0;e<r.length;e+=1){const t=r.slice(-e).join("/");o.startsWith(t)&&(i=t)}return i},wo=async(e,t,n,r,o)=>{const i=await(async(e,t)=>{const[n,r]=await Promise.all([Me(e.minifiedFilePath),Me(e.sourcemapFilePath)]);return{file:n,sourcemap:r,repeatedPrefix:t?bo(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:o,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(r)try{c.set("repository",{type:"string",options:{contentType:"application/json",filename:"repository"},value:JSON.stringify({data:[{files:r.trackedFilesMatcher.matchSourcemap(e.sourcemapFilePath,(t=>{u.push(`${a.basename(e.sourcemapFilePath)}: "${t}"`)})),hash:r.hash,repository_url:r.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}},vo=e=>{const t=e.message.match(/HTTP (\d{3})/);return t?`status_code:${t[1]}`:"status_code:unknown"},$o=e=>{const t=vo(e);return"status_code:unknown"!==t?`error_type:http_${t.replace("status_code:","")}`:`error_type:${ce(e.name||"unknown")}`},ko=(e,t,n)=>{const r=((e,t)=>`${e}|${t.join("|")}`)(t,n),o=e.metrics.get(r);o?o.value++:e.metrics.set(r,{name:t,value:1,tags:n})},xo=(e,t,n)=>{ko(e,"retry",[...e.baseTags,`attempt:${n}`,vo(t),$o(t)])},Eo=(e,t)=>{ko(e,"failure",[...e.baseTags,vo(t),$o(t)])},So=(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)},Io=t.green.bold,jo=t.yellow.bold,Ao=t.red.bold,Po=(e,t={})=>async()=>(async e=>{const{getForm:t,defaultHeaders:n={},zip:r=!0}=e,o=await t(),i=new Request("fake://url",{method:"POST",body:o});return{data:r?i.body.pipeThrough(new CompressionStream("gzip")):i.body,headers:{"Content-Encoding":r?"gzip":"multipart/form-data",...n,...Object.fromEntries(i.headers.entries())}}})({getForm:async()=>{const t=new FormData;for(const[n,r]of e.content){const e="file"===r.type?await Ne(r.path,r.options):new Blob([r.value],{type:r.options.contentType});t.append(n,e,r.options.filename)}return t},defaultHeaders:t,zip:!0}),Co=async(e,t,n,r)=>{const o=[],i=[];if(!n.apiKey)return o.push({error:new Error("No authentication token provided")}),{errors:o,warnings:i};if(0===e.length)return i.push("No sourcemaps to upload"),{errors:o,warnings:i};const s=r.time("Queue uploads"),a=new(w.default?w.default:w)({concurrency:t.maxConcurrency}),u=(c=n.site,J("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:!1===e.debugId?[`service:${e.service}`]:["matching:debug_id"]}))(t),f=de({...t,intakeUrl:u,outDir:n.outDir,defaultHeaders:`\n${JSON.stringify(d,null,2)}`}),m=`\nUploading ${Io(e.length.toString())} sourcemaps with configuration:\n${f}`;r.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 ee({auth:{apiKey:n.apiKey},url:u,method:"POST",getData:Po(s,d),onRetry:(t,n)=>{xo(p,t,n);const o=`Failed to upload ${jo(e.sourcemap)} | ${jo(e.file)}:\n ${t.message}\nRetrying ${n}/5`;i.push(o),r.debug(o)}})}catch(n){if(Eo(p,n),o.push({metadata:e,error:n}),!0===t.bailOnError)throw n}})))}s.end(),r.debug(`Queued ${Io(e.length.toString())} uploads.`);try{await Promise.all(g),await a.onIdle()}finally{So(p,n)}return{warnings:i,errors:o}},Oo=async(e,t,n)=>{const r=n.time("get sourcemaps files"),o=((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=>{const r=!1===e.debugId?e.minifiedPathPrefix:void 0;return{...fo(r,t.outDir,n),sourcemapFilePath:n,minifiedPathPrefix:r}}))})(e.sourcemaps,{outDir:t.outDir,outputs:t.outputs});r.end();const i=n.time("send sourcemaps");await(async(e,t,n,r)=>{const o=Date.now(),i=!1===t.debugId?t.minifiedPathPrefix:void 0,s={git_repository_url:n.git?.remote,git_commit_sha:n.git?.hash,plugin_version:n.version,project_path:n.outDir,type:"js_sourcemap",...!1===t.debugId?{service:t.service,version:t.releaseVersion}:{}},a=r.time("Compute payloads"),u=new(w.default?w.default:w)({concurrency:t.maxConcurrency}),c=await u.addAll(e.map((e=>async()=>{const t=await go(e.minifiedFilePath);return{sourcemap:e,debugId:t}}))),d=c.filter((({debugId:e})=>e)).length;if(r.debug(`Extracted debug_id for ${Io(`${d}/${e.length}`)} sourcemaps.`),t.debugId&&e.length>0&&0===d){a.end();const e="No debug ID found in any minified file. Aborting upload.";if(r.error(e),!0===t.bailOnError)throw new Error(e);return}const l=t.debugId?c.filter((({debugId:e})=>!e)):[],p=t.debugId?c.filter((({debugId:e})=>e)):c,f=await u.addAll(p.map((({sourcemap:e,debugId:t})=>async()=>wo(e,s,i,n.git,t))));a.end();const m=f.map((e=>e.errors)).flat(),g=[...l.map((({sourcemap:e})=>`Skipping sourcemap ${e.sourcemapFilePath} because no debug ID was found in ${e.minifiedFilePath}`)),...f.map((e=>e.warnings)).flat()];if(g.length>0&&r.warn(`Warnings while preparing payloads:\n - ${g.join("\n - ")}`),m.length>0){const e=`Failed to prepare payloads, aborting upload :\n - ${m.join("\n - ")}`;if(r.error(e),!0===t.bailOnError)throw new Error(e);return}const h=r.time("Upload sourcemaps"),{errors:y,warnings:b}=await Co(f,t,{apiKey:n.apiKey,bundlerName:n.bundlerName,version:n.version,outDir:n.outDir,site:n.site,sendMetrics:n.sendMetrics,addMetric:n.addMetric},r);if(h.end(),r.debug(`Done uploading ${Io(`${f.length-y.length}/${f.length}`)} sourcemaps in ${Io(se(Date.now()-o))}.`),y.length>0){const e=`Failed to upload some sourcemaps:\n - ${y.map((({metadata:e,error:t})=>{const n=t.cause||t.stack||t.message;return e?`${Ao(e.file)} | ${Ao(e.sourcemap)} :\n${n}`:n})).join("\n - ")}`;if(r.error(e),!0===t.bailOnError)throw new Error(e)}b.length>0&&r.warn(`Warnings while uploading sourcemaps:\n - ${b.join("\n - ")}`)})(o,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()},Do=e=>{const n=t.bold.red,r=e[lo]||{},o={errors:[]};if(!r.sourcemaps)return o;const i=r.sourcemaps;if(!0===i.debugId)return!1===e.rum?.enable&&o.errors.push(`${n("rum")} must be enabled to upload source maps by debug ID.`),e.rum?.sourceCodeContext?.debugId||o.errors.push(`${n("rum.sourceCodeContext.debugId")} must be enabled to upload source maps by debug ID.`),void 0===i.service&&void 0===i.releaseVersion&&void 0===i.minifiedPathPrefix||o.errors.push(`${n("sourcemaps.service")}, ${n("sourcemaps.releaseVersion")}, and ${n("sourcemaps.minifiedPathPrefix")} cannot be used when ${n("sourcemaps.debugId")} is enabled.`),e.auth?.apiKey||o.errors.push(`${n("auth.apiKey")} is required to upload source maps by debug ID.`),0===o.errors.length&&(o.config={bailOnError:!1,dryRun:!1,maxConcurrency:20,...i}),o;const s=i.releaseVersion||e.metadata?.version;return s||o.errors.push(`${n("sourcemaps.releaseVersion")} is required (set it directly or via ${n("metadata.version")}).`),i.releaseVersion&&e.metadata?.version&&i.releaseVersion!==e.metadata.version&&o.errors.push(`${n("sourcemaps.releaseVersion")} must match ${n("metadata.version")} when both are configured.`),i.service||o.errors.push(`${n("sourcemaps.service")} is required.`),i.minifiedPathPrefix||o.errors.push(`${n("sourcemaps.minifiedPathPrefix")} is required.`),i.minifiedPathPrefix&&!(e=>{let t;try{t=new URL(e).host}catch{}return!(!t&&!e.startsWith("/"))})(i.minifiedPathPrefix)&&o.errors.push(`${n("sourcemaps.minifiedPathPrefix")} must be a valid URL or start with '/'.`),s&&(o.config={bailOnError:!1,dryRun:!1,maxConcurrency:20,...i,debugId:!1,releaseVersion:s}),o},Ro=({options:e,context:t})=>{const n=t.getLogger(po),r=n.time("validate options"),o=((e,t)=>{const n=[],r=Do(e);if(n.push(...r.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${po}.`);return{...e[lo],sourcemaps:r.config}})(e,n);r.end();const i=ve(e,"metrics",n);let s,a,u,c=!1;const d=async()=>{o.sourcemaps&&!c&&(u||(u=(async()=>{await t.artifactsReady,c=!0;const e=n.time("sourcemaps process");await Oo(o,{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:po,enforce:"post",async git(e){s=e,a&&await l()},async buildReport(t){a=t,!s&&ie(e)||await l()},async asyncTrueEnd(){c||await d()}}]},No="liveDebugger",Mo="datadog-live-debugger-plugin",To=[".js",".jsx",".ts",".tsx",".mjs",".cjs",".mts",".cts"],Fo=/\\/g,_o=/^(?:[A-Z]:[\\/]|\\\\)/i,Lo=/[?#]/,qo=e=>e.replace(Fo,"/"),zo=e=>{if(e instanceof RegExp)return t=>{const n=qo(t),r=e.test(n);return e.lastIndex=0,r};const t=(e=>{if(e.startsWith("**")||a.isAbsolute(e)||_o.test(e))return qo(e);const t=a.resolve(e);return qo(t)})(e),n=$(t,{dot:!0});return e=>{const t=qo(e);return n(t)}},Bo=e=>{const t=((e,t)=>{const n=e.map(zo),r=t.map(zo);return e=>!r.some((t=>t(e)))&&(0===n.length||n.some((t=>t(e))))})(e.include,e.exclude),n=(e=>{if("all"===e)return()=>!0;const t=e.map((e=>e.toLowerCase()));return e=>{const[n]=e.split(Lo),r=n.toLowerCase();return t.some((e=>r.endsWith(e)))}})(e.fileExtensions);return e=>n(e)&&t(e)},Vo=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Wo="if(typeof globalThis.$dd_probes==='undefined'){globalThis.$dd_probes=function(){}}",Uo="__DD_LIVE_DEBUGGER_BUILD__",Ko=e=>void 0===e?Wo:`${Wo};if(typeof globalThis.${Uo}==='undefined'){globalThis.${Uo}={version:${JSON.stringify(e)}}}`;function Ho(e){return"function"==typeof e?e:e.default}function Jo(e,t,n,r,o){const i=a.relative(t,e).replace(/\\/g,"/"),s=Go(n,o);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}:${r}`}function Go(e,t){const n=e.node,r=e.parent;return"id"in n&&t.isIdentifier(n.id)?n.id.name:t.isObjectMethod(n)||t.isClassMethod(n)||t.isClassPrivateMethod(n)?Zo(n.key,t):t.isVariableDeclarator(r)&&t.isIdentifier(r.id)?r.id.name:t.isAssignmentExpression(r)?function(e,t){if(t.isIdentifier(e))return e.name;if(t.isMemberExpression(e)||t.isOptionalMemberExpression(e)){const n=Yo(e.object,t),r=Qo(e.property,e.computed,t);if(n&&r)return`${n}.${r}`}return null}(r.left,t):t.isObjectProperty(r)||t.isClassProperty(r)||t.isClassPrivateProperty(r)?Zo(r.key,t):null}function Yo(e,t){if(t.isIdentifier(e))return e.name;if(t.isThisExpression(e))return"this";if(t.isMemberExpression(e)||t.isOptionalMemberExpression(e)){const n=Yo(e.object,t),r=Qo(e.property,e.computed,t);if(n&&r)return`${n}.${r}`}return null}function Qo(e,t,n){return n.isPrivateName(e)&&n.isIdentifier(e.id)?`#${e.id.name}`:t?null:n.isIdentifier(e)?e.name:null}function Zo(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 Xo(e,t){if(e.node.leadingComments)for(const n of e.node.leadingComments)if(n.value.includes(t))return!0;return!1}function ei(e,t){const n=[];if(t.isBlockStatement(e.body)){const r=e.params.flatMap((e=>si(e,t))),o=new Set(r),i="id"in e&&t.isIdentifier(e.id)?e.id.name:"";for(const r of e.body.body)if(t.isVariableDeclaration(r)){const e=r.end;if(null==e)continue;for(const s of r.declarations)for(const r of si(s.id,t))o.has(r)||r===i||n.push({name:r,declarationEnd:e,temporalDeadZones:[]})}}const r=n.length>25?n.slice(0,25):n;if(t.isBlockStatement(e.body)){const n=r.map((({name:e})=>e)),o=new Set(n),i=function(e,t,n){const r=new Map;for(const o of e.body)ti(o,t,r,n);return r}(e.body,o,t);for(const e of r)e.temporalDeadZones=i.get(e.name)??[]}return r}function ti(e,t,n,r){r.isFunctionDeclaration(e)||r.isClassDeclaration(e)||(r.isBlockStatement(e)?ni(e,t,n,r):r.isIfStatement(e)?(ti(e.consequent,t,n,r),e.alternate&&ti(e.alternate,t,n,r)):r.isForStatement(e)||r.isForInStatement(e)||r.isForOfStatement(e)||r.isWhileStatement(e)||r.isDoWhileStatement(e)?ti(e.body,t,n,r):r.isSwitchStatement(e)?function(e,t,n,r){for(const o of e.cases){ri(o.consequent,e.start,t,n,r);for(const e of o.consequent)ti(e,t,n,r)}}(e,t,n,r):r.isTryStatement(e)?(ni(e.block,t,n,r),e.handler&&ni(e.handler.body,t,n,r),e.finalizer&&ni(e.finalizer,t,n,r)):(r.isLabeledStatement(e)||r.isWithStatement(e))&&ti(e.body,t,n,r))}function ni(e,t,n,r){ri(e.body,e.start,t,n,r);for(const o of e.body)ti(o,t,n,r)}function ri(e,t,n,r,o){if(null!=t)for(const i of e)o.isVariableDeclaration(i)&&"var"!==i.kind?oi(i,t,n,r,o):o.isClassDeclaration(i)&&i.id&&ii(i.id.name,t,i.end,n,r)}function oi(e,t,n,r,o){for(const i of e.declarations)for(const s of si(i.id,o))ii(s,t,e.end,n,r)}function ii(e,t,n,r,o){if(null==n||!r.has(e))return;const i=o.get(e)??[];i.push({start:t,end:n}),o.set(e,i)}function si(e,t){return t.isIdentifier(e)?[e.name]:t.isRestElement(e)?t.isIdentifier(e.argument)?[e.argument.name]:si(e.argument,t):t.isAssignmentPattern(e)?si(e.left,t):t.isObjectPattern(e)?e.properties.flatMap((e=>t.isRestElement(e)?si(e.argument,t):si(e.value,t))):t.isArrayPattern(e)?e.elements.flatMap((e=>e?si(e,t):[])):t.isTSParameterProperty(e)&&t.isIdentifier(e.parameter)?[e.parameter.name]:[]}const ai=["@babel/parser","@babel/traverse","@babel/types","magic-string"];let ui,ci,di,li,pi=!1;function fi(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 ai.some((t=>e.message.includes(t)))}(e))return e instanceof Error?e:new Error(String(e));const t=ai.find((t=>e.message.includes(t))),n=t??ai.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 ${ai.join(" ")}\` (or the yarn/pnpm/bun equivalent). Underlying error: ${e.message}`)}(e)}}const mi=/\bfunction\b|=>|\bclass\b|\)\s*\{/;function gi(e){return"modern"===e?["jsx","typescript","decorators","decoratorAutoAccessors"]:["jsx","typescript","decorators-legacy"]}function hi(e){const{code:t,filePath:n,buildRoot:r,honorSkipComments:o,functionTypes:i,namedOnly:s,decorators:a}=e;let u=0,c=0,d=0,l=0,p=0;if(function(e){return/['"][^'"]*(?:@css-module:|\?worker\b|\?sprite\b|dynamic!)[^'"]*['"]/.test(e)}(t))return{code:t,failedCount:u,instrumentedCount:c,skippedByCommentCount:d,skippedFileCount:1,skippedUnsupportedCount:l,totalFunctions:p};if(!mi.test(t))return{code:t,failedCount:u,instrumentedCount:c,skippedByCommentCount:d,skippedFileCount:0,skippedUnsupportedCount:l,totalFunctions:p};pi||(ui=fi("@babel/parser").parse,ci=Ho(fi("@babel/traverse")),di=fi("@babel/types"),li=Ho(fi("magic-string")),pi=!0);const f=ui(t,{sourceType:"unambiguous",plugins:gi(a),sourceFilename:n}),m=[],g=new Map,h=new Set,y=new Map,b=new Map;let w=0;if(ci(f,{Function(e){p++;const t=function(e,t){if(t.isClassMethod(e.node)&&"constructor"===e.node.kind&&xi(e,t))return e.node;return}(e,di);if(t&&(g.set(t,t.body.start),y.set(t,function(e,t){const n=[];for(const r of e)wi(r,n,t);return n}(t.body.body,di))),!function(e,t){const n=e.node;return!(n.generator||t.isClassMethod(n)&&"constructor"===n.kind)}(e,di))return void l++;if(o&&function(e,t,n){let r=e;for(;r;){if(Xo(r,t))return!0;if(n.isStatement(r.node)||n.isExportDeclaration(r.node)){if(r.parentPath&&n.isExportDeclaration(r.parentPath.node))return Xo(r.parentPath,t);break}r=r.parentPath}return!1}(e,"@dd-no-instrumentation",di))return void d++;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,di)))return void l++;if(s&&!Go(e,di))return void l++;let a=0;if(!Go(e,di)){const t=e.parentPath?.node;t&&(a=b.get(t)||0,b.set(t,a+1))}const f=Jo(n,r,e,a,di);try{const t=e.node,n=w++,r=`$dd_p${n}`,o=function(e,t){const n=[];for(const r of e.params)for(const e of si(r,t))"this"!==e&&n.push(e);return n.length>25?n.slice(0,25):n}(t,di),i=ei(t,di),s=di.isArrowFunctionExpression(t)&&!di.isBlockStatement(t.body),a=s&&di.isSequenceExpression(t.body),u=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(!xi(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,di),d=null!=u;u&&(h.add(u.node),g.set(u.node,u.node.body.start));const l=[],p=s||!di.isBlockStatement(t.body)||!ji(t.body.body,di);let y;if(!s&&di.isBlockStatement(t.body)&&Ii(t.body.body,l,di),!s&&di.isBlockStatement(t.body)&&t.body.directives.length>0){y=t.body.directives[t.body.directives.length-1].end}m.push({bodyStart:t.body.start,bodyEnd:t.body.end,functionEnd:t.end,isExpressionBody:s,hasSequenceExpressionBody:a,aliasesExpressionBodySuperCall:d&&s&&ki(t.body,di),needsTrailingReturn:p,useThisAlias:d,bodyParenStart:s&&"number"==typeof t.body.extra?.parenStart?t.body.extra.parenStart:void 0,directivesEnd:y,functionId:f,probeVarName:r,probeIdx:String(n),entryVars:o,localVars:i,returns:l}),c++}catch(e){u++}}}),0===c)return{code:t,failedCount:u,instrumentedCount:c,skippedByCommentCount:d,skippedFileCount:0,skippedUnsupportedCount:l,totalFunctions:p};const v=new li(t),$=function(e){const t=new Set;for(const n of e)n.aliasesExpressionBodySuperCall&&t.add($i({start:n.bodyStart,end:n.bodyEnd}));return t}(m),k=function(e,t,n,r){const o=[];for(const i of e){const e=t.get(i);null!=e&&o.push({bodyStart:e,superCalls:(n.get(i)??[]).filter((e=>!r.has($i(e))))})}return o}(h,g,y,$);for(let e=m.length-1;e>=0;e--)yi(v,t,m[e]);for(const e of k)bi(v,t,e);return{code:v.toString(),map:v.generateMap({source:n,hires:!0}),failedCount:u,instrumentedCount:c,skippedByCommentCount:d,skippedFileCount:0,skippedUnsupportedCount:l,totalFunctions:p}}function yi(e,t,n){const{probeVarName:r,probeIdx:o,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_rv${o}`,w=g?"$dd_t":"this",v=s.join(", "),$=""!==v,k=`{${v}}`,x=$?`, ${k}`:"";const E=`let ${r} = $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=`if (${r}) ${r} = $dd_entry(${r}, ${w}${x});`,I=`catch(e) { if (${r}) $dd_throw(${r}, e, ${w}${x}); throw e; }`;if(p){if(null!=h){const n=function(e,t,n){return Si(e,t,n,"(")}(t,h,c),r=function(e,t,n){return Si(e,t,n,")")}(t,d,l),o=Math.min(n.length,r.length);for(let t=0;t<o;t++){const o=n[t],i=r[t];e.update(o,o+1,""),e.update(i,i+1,"")}}const n=["{",E,"try {",S,m?`const ${b} = ($dd_t = `:`const ${b} = `].filter(Boolean).join("\n");let o=f?");":";";m&&(o=f?"));":");");const i=[o,`if (${r}) $dd_return(${r}, ${b}, ${w}${Ei(k,$,a,d)});`,`return ${b};`,`} ${I}`,"}"].join("\n");if(d-c>=2){const r=f?`${n}(${t[c]}`:n+t[c];e.update(c,c+1,r),e.appendRight(d,i)}else e.update(c,d,n+t.slice(c,d)+i)}else{const o=[E,"try {",`let ${b};`,S].filter(Boolean).join("\n");for(const t of u){const n=Ei(k,$,a,t.start);if(null!=t.argStart&&null!=t.argEnd){const o=t.hasSequenceExpressionArgument?`(${b} = (`:`(${b} = `,i=t.hasSequenceExpressionArgument?")":"";e.appendLeft(t.argStart,o),e.appendRight(t.argEnd,`${i}, ${r} ? $dd_return(${r}, ${b}, ${w}${n}) : ${b})`)}else e.appendLeft(t.start,`if (${r}) $dd_return(${r}, undefined, ${w}${n}); `)}if(null!=y){const n=y-1;e.update(n,y,`${t[n]}\n${o}`)}else e.update(c,c+1,`${t[c]}${o}`);const i=Ei(k,$,a,d),s=`\n${n.needsTrailingReturn?`if (${r}) $dd_return(${r}, undefined, ${w}${i});\n`:""}} ${I}\n`;e.update(d-1,d,`${s}${t[d-1]}`)}}function bi(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 wi(e,t,n){ki(e,n)&&t.push({start:e.start,end:e.end});const r=Object.values(e);for(const e of r)if(Array.isArray(e))for(const r of e)vi(r,t,n);else vi(e,t,n)}function vi(e,t,n){n.isNode(e)&&(n.isFunction(e)&&!n.isArrowFunctionExpression(e)||wi(e,t,n))}function $i(e){return`${e.start}:${e.end}`}function ki(e,t){return t.isCallExpression(e)&&t.isSuper(e.callee)}function xi(e,t){const n=e.parentPath?.parentPath;if(!n)return!1;const r=n.node;return(t.isClassDeclaration(r)||t.isClassExpression(r))&&null!=r.superClass}function Ei(e,t,n,r){const o=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,r);return t&&o?`, ${e}, ${o}`:t?`, ${e}`:o?`, undefined, ${o}`:""}function Si(e,t,n,r){const o=[];let i=t;for(;i<n;){const t=e[i];if("/"===t){const t=e[i+1];if("/"===t){for(i+=2;i<n&&"\n"!==e[i];)i++;continue}if("*"===t){for(i+=2;i<n&&("*"!==e[i]||"/"!==e[i+1]);)i++;i+=2;continue}}else t===r&&o.push(i);i++}return o}function Ii(e,t,n){for(const r of e)if(n.isReturnStatement(r))t.push({start:r.start,end:r.end,argStart:r.argument?.start??void 0,argEnd:r.argument?.end??void 0,hasSequenceExpressionArgument:n.isSequenceExpression(r.argument)});else if(!n.isFunctionDeclaration(r)&&!n.isClassDeclaration(r))if(n.isBlockStatement(r))Ii(r.body,t,n);else if(n.isIfStatement(r))Ii([r.consequent],t,n),r.alternate&&Ii([r.alternate],t,n);else if(n.isForStatement(r)||n.isForInStatement(r)||n.isForOfStatement(r)||n.isWhileStatement(r)||n.isDoWhileStatement(r))Ii([r.body],t,n);else if(n.isSwitchStatement(r))for(const e of r.cases)Ii(e.consequent,t,n);else n.isTryStatement(r)?(Ii(r.block.body,t,n),r.handler&&Ii(r.handler.body.body,t,n),r.finalizer&&Ii(r.finalizer.body,t,n)):(n.isLabeledStatement(r)||n.isWithStatement(r))&&Ii([r.body],t,n)}function ji(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],r=t.isBlockStatement(n.alternate)?n.alternate.body:[n.alternate];return ji(e,t)&&ji(r,t)}return!1}const Ai=["functionDeclaration","functionExpression","arrowFunction","objectMethod","classMethod","classPrivateMethod"],Pi=["legacy","modern"],Ci=t.bold.red,Oi=/[\\/?#]/,Di=(e,t)=>{const n=e[No]||{},r=e.metadata?.version,o=[];if(void 0!==n.include)if(Array.isArray(n.include)){for(const e of n.include)if("string"!=typeof e&&!(e instanceof RegExp)){o.push(`${Ci("include")} patterns must be strings or RegExp`);break}}else o.push(`${Ci("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)){o.push(`${Ci("exclude")} patterns must be strings or RegExp`);break}}else o.push(`${Ci("exclude")} must be an array of strings or RegExp`);if(void 0!==n.fileExtensions&&"all"!==n.fileExtensions)if(Array.isArray(n.fileExtensions)){if(0===n.fileExtensions.length)o.push(`${Ci("fileExtensions")} must contain at least one extension`);else for(const e of n.fileExtensions)if("string"!=typeof e||e.length<2||!e.startsWith(".")||Oi.test(e)){o.push(`${Ci("fileExtensions")} values must begin with "." and contain no path or query separators`);break}}else o.push(`${Ci("fileExtensions")} must be an array of strings or "all"`);if(void 0!==n.honorSkipComments&&"boolean"!=typeof n.honorSkipComments&&o.push(`${Ci("honorSkipComments")} must be a boolean`),void 0!==n.functionTypes)if(Array.isArray(n.functionTypes)){for(const e of n.functionTypes)if(!Ai.includes(e)){o.push(`${Ci("functionTypes")} contains invalid value "${e}". Valid values: ${Ai.join(", ")}`);break}}else o.push(`${Ci("functionTypes")} must be an array of FunctionKind values`);if(void 0!==n.namedOnly&&"boolean"!=typeof n.namedOnly&&o.push(`${Ci("namedOnly")} must be a boolean`),void 0===n.decorators||Pi.includes(n.decorators)||o.push(`${Ci("decorators")} must be one of: ${Pi.join(", ")}`),o.length)throw t.error(`\n - ${o.join("\n - ")}`),new Error(`Invalid configuration for ${Mo}.`);const i=n.fileExtensions??To,s="all"===i?i:(e=>{const t=e.map((e=>e.toLowerCase()));return[...new Set(t)]})(i);return{version:r,include:n.include??[],exclude:n.exclude||[/\/node_modules\//,/\.min\.js$/,/\/pyodide-lib\//,/^vite\//,/\0/,/commonjsHelpers\.js$/,/__vite-browser-external/,/@datadog\/browser-/,/browser-sdk\/packages\//],fileExtensions:s,honorSkipComments:n.honorSkipComments??!0,functionTypes:n.functionTypes,namedOnly:n.namedOnly??!1,decorators:n.decorators??"legacy"}},Ri=Number(process.env.DD_LD_LIMIT)||1/0,Ni=(e,t)=>{const n=t.getLogger(Mo),r=Bo(e),o=(e=>{if("all"===e)return;const t=e.map(Vo);return new RegExp(`(?:${t.join("|")})(?:[?#].*)?$`,"i")})(e.fileExtensions),i=o?[o]:e.include;let s=0,a=0,u=0,c=0,d=0,l=0,p=0,f=0;return{name:Mo,enforce:"post",transform:{filter:{id:{include:i,exclude:e.exclude}},handler(o,i){if(!r(i))return{code:o};if(f>=Ri)return{code:o};try{const r=hi({code:o,filePath:i,buildRoot:t.buildRoot,honorSkipComments:e.honorSkipComments,functionTypes:e.functionTypes,namedOnly:e.namedOnly,decorators:e.decorators});if(s+=r.instrumentedCount,p+=r.totalFunctions,a+=r.failedCount,u+=r.skippedByCommentCount,c+=r.skippedFileCount,d+=r.skippedUnsupportedCount,r.totalFunctions>0&&f++,0===r.instrumentedCount)return{code:o};l++;const m=function(e){const t=e.getNativeBuildContext?.();return t?.inputSourceMap}(this),g=r.map&&m?function(e,t,n,r){try{return v(e,((e,n)=>1===n.depth?t:null))}catch(t){return r.error(`Failed to compose source map for ${n}: ${t}`,{forward:!0}),e}}(r.map,m,i,n):r.map;return{code:r.code,map:g}}catch(e){return n.error(`Instrumentation Error in ${i}: ${e}`,{forward:!0}),{code:o}}}},buildEnd:()=>{p>0&&n.info(`Live Debugger: ${s}/${p} functions instrumented across ${l}/${f} files`,{forward:!0,context:{failedCount:a,skippedByCommentCount:u,skippedFileCount:c,skippedUnsupportedCount:d,totalFilesWithFunctions:f,instrumentedCount:s,totalFunctions:p,transformedFileCount:l}})}}},Mi=({options:e,context:t})=>{const n=t.getLogger(Mo),r=Di(e,n);return t.inject({type:"code",position:Te.BEFORE,injectIntoAllChunks:!0,value:Ko(r.version)}),[Ni(r,t)]};const Ti=[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}],Fi="metrics",_i="datadog-metrics-plugin",Li=e=>Math.floor((e||Date.now())/1e3),qi=(e,t)=>{const n=[`bundler:${ce(e.bundler.name)}`,`plugin_version:${ce(e.version)}`,`site:${ce(e.auth.site)}`];return e.build.metadata.name&&n.push(`build_name:${ce(e.build.metadata.name)}`),e.build.metadata.version&&n.push(`build_version:${ce(e.build.metadata.version)}`),[...n,...t]},zi=(e,t,n)=>({...e,tags:[...e.tags,...t],metric:n?`${n}.${e.metric}`:e.metric}),Bi=(e,t,n,r,o)=>{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(zi(e,r,o))}const s=Array.from(i).filter((e=>e.toSend)).length;return i.add(zi({metric:"metrics.count",type:"count",points:[[t,s+1]],tags:[],toSend:!0},r,o)),i},Vi=(e="")=>e.endsWith("/")?e:`${e}/`,Wi=(e,t)=>{let n=e;return e.split(Vi(t)),n.split("!").pop().replace(/(.*)?\/node_modules\//,"/node_modules/").replace(/^((\.)*\/)+/,"")},Ui=(e,t)=>e.split("!").pop().replace(Vi(t),"./"),Ki=(e,t,n)=>{let r=e.name||e.userRequest;return r||(r=((e,t)=>{let n=e.userRequest;if(!n){let r;r=t.moduleGraph&&"function"==typeof t.moduleGraph.getIssuer?t.moduleGraph.getIssuer(e):e.issuer,n=r?.userRequest,n||(n=e._identifier?.split("!").pop())}return n||"unknown"})(e,t)),Ui(r||"no-name",n)},Hi=e=>e.replace(/^.*\/node_modules\/(@[a-z0-9][\w-.]+\/[a-z0-9][\w-.]*|[^/]+).*$/,"$1"),Ji=e=>e.map((e=>({type:e?.constructor?.name??typeof e,name:e?.name,value:"string"==typeof e?e:void 0}))),Gi=t.bold.red,Yi=t.bold.cyan,Qi=e=>(t,n)=>{let r,o;return"function"==typeof e?(r=e(t),o=e(n)):(r=t[e],o=n[e]),r>o?-1:r<o?1:0},Zi=(e,t)=>{if(!t||!t.size)return[];const n=Array.from(t.values());n.sort(Qi("duration"));const r={name:`${e} duration`,values:n.map((e=>({name:e.name,value:se(e.duration)}))),top:!0};n.sort(Qi("increment"));return[r,{name:`${e} hits`,values:n.map((e=>({name:e.name,value:e.increment.toString()}))),top:!0}]},Xi=(e,t,n)=>{const r=[];var o;n&&(r.push(...Zi("Loader",n.loaders)),r.push(...Zi("Tapable",n.tapables)),r.push(...Zi("Module",n.modules))),r.push(...(e=>{const t={name:"Module total dependents",values:[],top:!0},n={name:"Module total dependencies",values:[],top:!0},r={name:"Module size",values:[],top:!0},o={name:"Module aggregated size",values:[],top:!0},i=new Set,s=oe(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,r=c.get(e)||new Set;let o=t.size;for(const e of n)o+=a.get(e)?.size||0;i.add({name:t.name,size:t.size,aggregatedSize:o,dependents:r,dependencies:n})}if(!i.size)return[t,n,r];const d=Array.from(i);return d.sort(Qi((e=>e.dependents.size))),t.values=d.map((e=>({name:e.name,value:e.dependents.size.toString()}))),d.sort(Qi((e=>e.dependencies.size))),n.values=d.map((e=>({name:e.name,value:e.dependencies.size.toString()}))),d.sort(Qi("size")),r.values=d.map((e=>({name:e.name,value:k(e.size)}))),d.sort(Qi("aggregatedSize")),o.values=d.map((e=>({name:e.name,value:k(e.aggregatedSize||e.size)}))),[t,n,r,o]})(e)),r.push(...(o=e,[{name:"Asset size",values:(o.build.outputs||[]).filter((e=>"map"!==e.type)).sort(Qi((e=>e.size))).map((e=>({name:e.name,value:k(e.size)}))),top:!0},{name:"Entry aggregated size",values:(o.build.entries||[]).sort(Qi((e=>e.size))).map((e=>({name:e.name,value:k(e.size)}))),top:!0},{name:"Entry number of modules",values:(o.build.entries||[]).sort(Qi((e=>e.size))).map((e=>({name:e.name,value:e.inputs.length.toString()})))||[],top:!0}])),r.push(...(e=>{const t={name:"General Numbers",values:[],top:!1},n=e.build.inputs?e.build.inputs.length:0,r=e.build.outputs?e.build.outputs.length:0,o=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:se(e.build.start-e.start)}),e.build.duration&&t.values.push({name:"Build duration",value:se(e.build.duration)}),e.build.writeDuration&&t.values.push({name:"Write duration",value:se(e.build.writeDuration)}),t.values.push({name:"Number of modules",value:n.toString()},{name:"Number of assets",value:r.toString()},{name:"Number of entries",value:s.toString()},{name:"Number of warnings",value:o.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=ae(e.name,60)}const n=Math.max(...e.map((e=>e.name.length))),r=Math.max(...e.flatMap((e=>e.values.map((e=>e.name.length))))),o=Math.max(...e.flatMap((e=>e.values.map((e=>e.value.length))))),i=Math.max(n+4,r+o+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=o-e.value.length;t+=` [${Gi(e.value)}] ${" ".repeat(n)}${Yi(e.name)}\n`}}return t})(r);t.info(i)},es="api/v1/series",ts=t.bold.green,ns=(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 r=Array.from(e).filter((e=>e.toSend)).map((e=>({...e,toSend:void 0}))),o=new Map;for(const e of r)o.has(e.metric)||o.set(e.metric,0),o.set(e.metric,o.get(e.metric)+1);const i=Array.from(o.entries()).sort((([e],[t])=>e.localeCompare(t))).map((([e,t])=>`${e} - ${t}`));return n.debug(`\nSending ${r.length} metrics with configuration:\n - intake: ${ts(`https://api.${t.site}/${es}`)}\n\nMetrics:\n - ${i.join("\n - ")}`),ee({method:"POST",url:`https://api.${t.site}/${es}?api_key=${t.apiKey}`,getData:()=>({data:JSON.stringify({series:r})})}).catch((e=>{n.error(`Error sending metrics ${e}`)}))},rs=["onStart","onLoad","onResolve","onEnd"],os=new Map,is=new Map,ss=new Map,as=(e,t,n)=>{const r=Object.assign({},e);for(const o of rs)r[o]=async(r,i)=>{const s=is.get(t)||{name:t,increment:0,duration:0,events:{}};s.events[o]=s.events[o]||{name:o,values:[]};const a="onLoad"===o;return(0,e[o])(r,(async(...e)=>{const r=Ui(e[0].path,n),u=ss.get(r)||{name:r,increment:0,duration:0,events:{}};u.events[o]=u.events[o]||{name:o,values:[]};const c=x.performance.now();try{return await i(...e)}finally{const n=x.performance.now(),i=n-c,d={start:c,end:n,duration:i,context:Ji(e)};if(s.events[o].values.push(d),s.duration+=i,s.increment+=1,is.set(t,s),u.events[o].values.push(d),u.duration+=i,u.increment+=1,ss.set(r,u),a){const e=os.get(t)||{name:t,increment:0,duration:0,events:{}};e.events[o]=e.events[o]||{name:o,values:[]},e.events[o].values.push(d),e.duration+=i,e.increment+=1,os.set(t,e)}}}))};return r},us=(e,t)=>({setup:n=>{n.initialOptions.metafile=!0;const r=t.time("wrapping plugins");((e,t)=>{const n=e.initialOptions.plugins;if(n){const e=n.map((e=>({...e})));for(const r of n){const n=r.setup;r.setup=async o=>{const i=as(o,r.name,t);await n({...i,initialOptions:{...i.initialOptions,plugins:e}})}}}})(n,e.buildRoot),r.end(),n.onEnd((async n=>{if(!n.metafile)return void t.warn("Missing metafile, can't proceed with modules data.");const r=t.time("getting plugins results"),{plugins:o,loaders:i,modules:s}={plugins:is,modules:ss,loaders:os};r.end(),await e.asyncHook("timings",{tapables:o,loaders:i,modules:s})}))}});class cs{constructor(e){this.started={},this.finished=[],this.cwd=e}startModule(e,t){const n=Ki(e,t,this.cwd),r=(e=>(e.loaders||[]).map((e=>e.loader||e)).map(Hi))(e);r.length||r.push("no-loader"),this.started[n]={module:Wi(n),timings:{start:x.performance.now(),duration:0,end:0},loaders:r}}doneModule(e,t){const n=Ki(e,t,this.cwd),r=this.started[n];r&&(r.timings.end=x.performance.now(),r.timings.duration=r.timings.end-r.timings.start,this.finished.push(r),delete this.started[n])}getResults(){const e=new Map,t=new Map;for(const n of this.finished){const r=n.timings.end-n.timings.start,o=t.get(n.module)||{name:n.module,increment:0,duration:0,events:{}},i=n.loaders.join(",");o.events[i]=o.events[i]||{name:i,values:[]},o.events[i].values.push(n.timings),o.increment+=1,o.duration+=r,t.set(n.module,o);for(const t of n.loaders){const n=e.get(t)||{name:t,increment:0,duration:0,events:{}};n.increment+=1,n.duration+=r,e.set(t,n)}}return{loaders:e,modules:t}}}class ds{constructor(e){this.monitoredTaps={},this.tapables=[],this.hooks={},this.timings=new Map,this.ignoredHooks=["normalModuleLoader"],this.cwd=e}saveResult(e,t,n,r,o,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:o,end:i,duration:i-o,context:r,type:e}),s.duration+=i-o,s.increment+=1,this.timings.set(t,s)}getResults(){const e=this.timings;for(const[t,n]of this.timings){const r=n;r.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,r)}return{monitoredTaps:this.monitoredTaps,tapables:this.tapables,hooks:this.hooks,timings:e}}getPromiseTapPatch(e,t,n,r){return(...o)=>{this.checkNewHooks();const i=x.performance.now(),s=t.apply(this,o),a=()=>{this.saveResult(e,n,r,Ji(o),i,x.performance.now())};return s.then(a,a),s}}getAsyncTapPatch(e,t,n,r){return(...o)=>{this.checkNewHooks();const i=x.performance.now(),s=o.pop();return t.apply(this,[...o,(...t)=>(this.saveResult(e,n,r,Ji(o),i,x.performance.now()),s(...t))])}}getDefaultTapPatch(e,t,n,r){return(...o)=>{this.checkNewHooks();const i=x.performance.now(),s=t.apply(this,o);return this.saveResult(e,n,r,Ji(o),i,x.performance.now()),s}}getTapPatch(e,t,n,r){switch(e){case"promise":return this.getPromiseTapPatch(e,t,n,r);case"async":return this.getAsyncTapPatch(e,t,n,r);default:return this.getDefaultTapPatch(e,t,n,r)}}newTap(e,t,n,r){return(o,i)=>{const s="string"==typeof(a=o)?a:a.name;var a;const u=`${t}-${s}`;if(this.monitoredTaps[u])return n.call(r,o,i);this.monitoredTaps[u]=!0;const c=this.getTapPatch(e,i,s,t);return n.call(r,o,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(_i)||(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 r of n)this.patchHook(t,r,e.hooks[r])}checkNewHooks(){for(const e of this.tapables)this.patchHooks(e)}throughHooks(e){this.tapables.includes(e)||this.tapables.push(e),this.patchHooks(e)}}const ls=e=>async t=>{const n=e.getLogger(_i),r={name:_i},o=new ds(e.buildRoot),i=new cs(e.buildRoot),s=n.time("parse compiler hooks");o.throughHooks(t),s.end(),t.hooks.thisCompilation.tap(r,(e=>{const t=n.time("parse compilation hooks");o.throughHooks(e),t.end(),e.hooks.buildModule.tap(r,(t=>{i.startModule(t,e)})),e.hooks.succeedModule.tap(r,(t=>{i.doneModule(t,e)})),e.hooks.failedModule&&e.hooks.failedModule.tap(r,(t=>{i.doneModule(t,e)}))})),t.hooks.afterEmit.tapPromise(r,(async()=>{const{timings:t}=o.getResults(),{loaders:n,modules:r}=i.getResults();await e.asyncHook("timings",{tapables:t,loaders:n,modules:r})}))},ps={filters:Ti},fs=({options:e,context:t,stores:n})=>{const r=t.getLogger(_i);let o=0;((e,t)=>{e.addMetric=e=>{t.metrics.add(e)}})(t,n);const i=((e,t)=>{const n=e[Fi],r=Li(n?.timestamp);let o=!1===n?.enableDefaultPrefix?"":`build.${t}`;return n?.prefix&&(o+=o?`.${n.prefix}`:n.prefix),{enableDefaultPrefix:!0,enableTracing:!1,filters:Ti,tags:[],...e[Fi],timestamp:r,prefix:o.toLowerCase().replace(/(^\.*|\.*$)/g,"")}})(e,t.bundler.name),s=[],a={name:_i,enforce:"pre",esbuild:us(t,r),webpack:ls(t),rspack:ls(t)},u=r.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=r.time("aggregating collected metrics"),o=(()=>{const e=new Set(n.metrics);n.metrics.clear();const r=qi(t,i.tags);return Bi(e,i.timestamp,i.filters,r,i.prefix)})();await t.asyncHook("metrics",o),e.end();const s=r.time("sending collected metrics to Datadog");await ns(o,{apiKey:t.auth.apiKey,site:t.auth.site},r),s.end()},f=async()=>{t.build.end=Date.now(),t.build.duration=t.build.end-t.build.start,t.build.writeDuration=t.build.end-o;const e=r.time("aggregating metrics"),n=i.timestamp,s=r.time("aggregate universal metrics"),a=((e,t)=>{const n=new Set,r=e.inputs||[],o=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 o)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,o.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,r.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 r){const r=[`moduleName:${e.name}`,`moduleType:${e.type}`];c.has(e.filepath)&&r.push(...c.get(e.filepath).map((e=>`entryName:${e}`))),d.has(e.filepath)&&r.push(...d.get(e.filepath).map((e=>`assetName:${e}`))),n.add({metric:"modules.size",type:"size",points:[[t,e.size]],tags:r}).add({metric:"modules.dependencies",type:"count",points:[[t,e.dependencies.size]],tags:r}).add({metric:"modules.dependents",type:"count",points:[[t,e.dependents.size]],tags:r})}for(const e of o){const r=[`assetName:${e.name}`,`assetType:${e.type}`],o=e.filepath.replace(/\.map$/,"");l.has(o)&&r.push(...l.get(o).map((e=>`entryName:${e}`))),n.add({metric:"assets.size",type:"size",points:[[t,e.size]],tags:r}).add({metric:"assets.modules.count",type:"count",points:[[t,e.inputs.length]],tags:r})}for(const e of i){const r=[`entryName:${e.name}`];n.add({metric:"entries.size",type:"size",points:[[t,e.size]],tags:r}).add({metric:"entries.modules.count",type:"count",points:[[t,e.inputs.length]],tags:r}).add({metric:"entries.assets.count",type:"count",points:[[t,e.outputs.length]],tags:r})}return n})(l,n);s.end();const u=r.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 r of e.values()){let e=0,o=0;for(const i of Object.values(r.events)){let s=0;o+=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:${r.name}`,`hookName:${i.name}`]}).add({metric:"plugins.hooks.increment",type:"count",points:[[t,i.values.length]],tags:[`pluginName:${r.name}`,`hookName:${i.name}`]})}n.add({metric:"plugins.duration",type:"duration",points:[[t,e]],tags:[`pluginName:${r.name}`]}).add({metric:"plugins.increment",type:"count",points:[[t,o]],tags:[`pluginName:${r.name}`]})}return n})(d?.tapables,n);u.end();const p=r.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 r of e.values())n.add({metric:"loaders.duration",type:"duration",points:[[t,r.duration]],tags:[`loaderName:${r.name}`]}).add({metric:"loaders.increment",type:"count",points:[[t,r.increment]],tags:[`loaderName:${r.name}`]});return n})(d?.loaders,n);p.end();const m=new Set([...a,...c,...f]),g=qi(t,i.tags),h=Bi(m,n,i.filters,g,i.prefix);await t.asyncHook("metrics",h),e.end();const y=r.time("outputing report");Xi(t,r,d),y.end();const b=r.time("sending metrics to Datadog");await ns(h,{apiKey:t.auth.apiKey,site:t.auth.site},r),b.end()},m={name:"datadog-universal-metrics-plugin",enforce:"post",buildStart(){u.resume(),t.build.start=t.build.start||Date.now(),e[Fi]?.timestamp||(i.timestamp=Li(t.build.start))},buildEnd(){u.end(),o=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},ms="output",gs="datadog-output-plugin",hs=(e,t)=>"string"==typeof t?t.replace(/(\.json)?$/,".json"):!0===t?`${e}.json`:t,ys=e=>{const t=void 0===e;return{build:hs("build",e?.build??t),bundler:hs("bundler",e?.bundler??t),dependencies:hs("dependencies",e?.dependencies??t),errors:hs("errors",e?.errors??t),logs:hs("logs",e?.logs??t),metrics:hs("metrics",e?.metrics??t),timings:hs("timings",e?.timings??t),warnings:hs("warnings",e?.warnings??t)}},bs=(e,t)=>n=>{n.hooks.done.tap("bundler-outputs",(n=>{t((()=>{const t=e.time("stats serialization"),r=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(),r}))}))},ws=e=>{const t=new Set;return{buildStart(){t.clear()},writeBundle(e,n){t.add(n)},closeBundle(){e((()=>Array.from(t)))}}},vs=({options:e,context:t})=>{const n=t.getLogger(gs),r=(e=>({path:"./",...e[ms],files:ys(e[ms]?.files)}))(e),o=(e,o)=>{const u=r.files[e];if(!o||!1===u)return;t.queue((async()=>{const e=n.time(`output ${u}`),c=((e,t,n)=>{const r=a.isAbsolute(t)?t:a.resolve(e,t);return a.resolve(r,n)})(t.bundler.outDir,r.path,u);let d;try{const e="function"==typeof o?await o():o;await(async(e,t)=>{await Ce(a.dirname(e));const n=i.createWriteStream(e),r=new s.JsonStreamStringify(t,void 0,2),o=new Promise(((e,t)=>{r.on("end",(()=>{e()})),r.on("error",(e=>{t(e)}))}));return r.pipe(n),o})(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:gs,buildReport(e){const t=n.time("serialize report"),r=oe(e);t.end(),o("build",{bundler:r.bundler,metadata:r.metadata,start:r.start,end:r.end,duration:r.duration,writeDuration:r.writeDuration,entries:r.entries,outputs:r.outputs}),o("logs",r.logs),o("timings",r.timings),o("dependencies",r.inputs),o("errors",r.errors),o("warnings",r.warnings)},metrics(e){o("metrics",(()=>Array.from(e)))},esbuild:{setup(e){e.onEnd((e=>{o("bundler",e.metafile)}))}},rspack:bs(n,(e=>{o("bundler",e)})),rollup:ws((e=>{o("bundler",e)})),vite:ws((e=>{o("bundler",e)})),webpack:bs(n,(e=>{o("bundler",e)}))}]},$s="rum",ks="datadog-rum-plugin",xs=["8","9","a","b"],Es=(e,t)=>{let n;!0===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)}`,r=n.charCodeAt(16)%4,o=`${n.slice(0,16)}${xs[r]}${n.slice(17)}`;return[o.slice(0,8),o.slice(8,12),o.slice(12,16),o.slice(16,20),o.slice(20,32)].join("-")})(t.sourceOrHash):l.randomUUID());const r={service:e.service,version:e.version,ddDebugId:n};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(r)},${JSON.stringify("DD_SOURCE_CODE_CONTEXT")});`,debugId:n}},Ss="datadog-rum-privacy-plugin";const Is=(e,t)=>{const n=t.getLogger(Ss),r=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 o=0,i=0;return{name:Ss,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=E.instrument({id:t,code:e,map:n},r);return 0===s.privacyDictionarySize?{code:e}:(o+=s.privacyDictionarySize,i++,s)}catch(t){return n.error(`Instrumentation Error: ${t}`,{forward:!0}),{code:e}}}},buildEnd:()=>{n.debug(`Privacy dictionary will include ${o} entries across ${i} files`,{forward:!0,context:{dictionaryEntryCount:o,fileCount:i}})}}},js=e=>`DD_RUM.init({${JSON.stringify(e.sdk).replace(/(^{|}$)/g,"")}});\n`,As=(e,t)=>{const n=e.sdk;if(n.clientToken)return js(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 r;try{const e=await ee({url:`https://api.${t.auth.site}/api/v2/rum/applications/${n.applicationId}`,type:"json",auth:t.auth});r=e.data?.attributes?.client_token}catch(e){throw new Error(`Could not fetch the clientToken: ${e.message}`)}if(!r)throw new Error("Missing clientToken in the API response.");return js({...e,sdk:{clientToken:r,...n}})}},Ps=e=>{const n=t.bold.red,r=e[$s]||{},o={errors:[]};if(!r.sdk)return o;r.sdk.applicationId||o.errors.push(`Missing ${n("applicationId")} in the SDK configuration.`),e.auth.apiKey&&e.auth.appKey||r.sdk.clientToken||o.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 o.config={...i,...r.sdk},o},Cs=e=>{const t=e[$s]||{},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},Os=e=>{const n=t.bold.red,r=e[$s]||{},o={errors:[]};if(!r.sourceCodeContext)return o;const i=r.sourceCodeContext;return!0===i.debugId?(o.config={...i,version:i.version||(i.service?e.metadata?.version:void 0)},o):(i.service&&"string"==typeof i.service||o.errors.push(`Missing ${n('"rum.sourceCodeContext.service"')}.`),0===o.errors.length&&(o.config={...i,version:i.version||e.metadata?.version}),o)},Ds=({options:e,context:t})=>{const n=((e,t)=>{const n=[],r=Ps(e),o=Cs(e),i=Os(e);if(n.push(...r.errors),n.push(...o.errors),n.push(...i.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${ks}.`);const s={...e[$s],sdk:void 0,privacy:void 0,sourceCodeContext:void 0};return r.config&&(s.sdk=r.config),o.config&&(s.privacy=o.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(ks)),r=[],o=n.sourceCodeContext;if(o&&t.inject({type:"code",position:Te.BEFORE,injectIntoAllChunks:!0,value:e=>{const{code:t}=Es(o,e);return t}}),n.sdk&&(t.inject({type:"file",position:Te.MIDDLE,value:a.join(__dirname,"./rum-browser-sdk.js")}),t.inject({type:"code",position:Te.MIDDLE,value:As(n,t)})),n.privacy){t.inject({type:"file",position:Te.BEFORE,value:a.join(__dirname,"./privacy-helpers.js")});const e=Is(n.privacy,t);r.push(e)}return r},Rs="datadog-analytics-plugin",Ns=({context:e})=>{const t=e.getLogger(Rs);return[{name:Rs,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}`)}})())}}]},Ms="datadog-async-queue-plugin",Ts=e=>{const{context:t,stores:n}=e,r=t.getLogger(Ms),o=[];return t.queue=e=>{const t=e.catch((e=>{o.push(e.message||e.toString())}));n.queue.push(t)},[{name:Ms,asyncTrueEnd:async()=>{await Promise.all(n.queue),o.length>0&&r.error(`Error occurred while processing async queue:\n ${o.join("\n ")}`)}}]},Fs=async(e,t,n)=>{const r=[],o=e.initialOptions.entryPoints,i=[],s=[];if(Array.isArray(o))for(const e of o){const t=e&&"object"==typeof e?e.in:e;i.push({path:t})}else o&&"object"==typeof o&&i.push(...Object.entries(o).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,o])=>{const i=await e.resolve(o,{kind:"entry-point",resolveDir:t.buildRoot});i.errors.length&&s.push(...i.errors.map((e=>e.text))),i.path&&r.push({name:n.name,resolved:i.path,original:n.path})}));for(const e of s)n.error(e);return await Promise.all(a),r},_s=(e,t)=>re(t)?L:t.startsWith(e)||a.isAbsolute(t)?t:a.resolve(e,t),Ls=(e,t)=>{const n=[...e].map((e=>_s(t||process.cwd(),e).split(a.sep))),r=n.length?Math.min(...n.map((e=>e.length))):0,o=[];for(let e=0;e<r;e++){const t=n[0][e];if(!n.every((n=>n[e]===t)))break;o.push(t)}return o.length>0&&o.join(a.sep)||a.sep},qs=/\.(?!.*(?:\.|\/|\\))(\w{1,})/g,zs=/(\?|%3F|\|)+/gi,Bs=e=>{return"unknown"===e?e:e.includes("webpack/runtime")?"runtime":(t=Us(e),qs.lastIndex=0,qs.exec(t)?.[1]||"unknown");var t},Vs=["unknown","commonjsHelpers.js",`vite${a.sep}preload-helper.js`],Ws=(e,t,n)=>{const r=new Set;for(const n of e){const e=Us(n);re(n)||e===t||Vs.includes(e)||r.add(e)}return r},Us=e=>e.split("!").pop().split(zs).shift().replace(/^[^\w\s.,!@#$%^&*()=+~`\-/\\]+/,""),Ks=(e,t)=>re(t)?L:"unknown"===t?t:t.includes("webpack/runtime")?t.replace("webpack/runtime/","").replace(/ +/g,"-"):((e,t)=>{const n=t.split(a.sep),r=e.split(a.sep).filter(((e,t)=>e===n[t])).join(a.sep);return e.replace(r,"")})(t.split("!").pop(),e).split("node_modules").pop().split(zs).shift().replace(/^((\.\.?)?[/\\])+/g,""),Hs=(e,t)=>Object.fromEntries(Object.entries(e).map((([e,n])=>[_s(t,e),n]))),Js=(e,t)=>({setup(n){const r=new Map;let o=[];const i=t.time("build report",{start:!1});n.onStart((async()=>{r.clear(),o=[],i.resume();const s=t.time("process entries");o.push(...await Fs(n,e,t));for(const t of o){const n=Ks(e.bundler.outDir,t.resolved);t.name?r.set(n,t.name):r.set(n,n)}s.end(),i.pause()})),n.onEnd((async n=>{i.resume();const o=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(o.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=Hs(n.metafile.inputs,u),b=Hs(n.metafile.outputs,u);h.end();const w=e=>{if(!re(e))return e;const t=y[_s(u,e)];if(!t)return e;const n=t.imports.find((e=>!re(e.path)));return n?n.path:e},v=t.time("looping through inputs");for(const[e,t]of Object.entries(n.metafile.inputs)){if(re(e))continue;const n=_s(u,e),r={name:Ks(s,e),filepath:n,dependents:new Set,dependencies:new Set,size:t.bytes,type:Bs(e)};m[n]=r,c.push(r)}v.end();const $=t.time("looping through outputs");for(const[e,o]of Object.entries(n.metafile.outputs)){const n=_s(u,e),i=Ks(s,n),a=[];for(const e of Object.keys(o.inputs)){if(re(e))continue;const n=m[_s(u,e)];n?a.push(n):t.debug(`Input ${e} not found for output ${i}`)}if(o.entryPoint&&!a.length){const e=m[_s(u,o.entryPoint)];if(!e){t.debug(`Input ${o.entryPoint} not found for output ${i}`);continue}a.push(e)}const c={name:i,filepath:n,inputs:a,size:o.bytes,type:Bs(n)};if(g[n]=c,"map"===c.type&&p.push(c),d.push(c),!o.entryPoint)continue;const f=m[_s(u,w(o.entryPoint))];if(f){if(!r.get(f.name))continue;const e={...c,name:r.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=>!re(e)&&!e.match(E),I=(e,n,r={})=>{if(!S(e))return r;const o=n.report[e];if(!o)return t.debug(`Could not find report's ${e}`),r;if(r[o.filepath])return r;r[o.filepath]=o;const i=n.meta[e];if(!i)return t.debug(`Could not find metafile's ${e}`),r;if(!i.imports||!i.imports.length)return r;for(const t of i.imports){const i=t.path.match(/^\.\.?\//),d=i?a.dirname(e):u,l=_s(d,t.path);if(t.external){if(S(t.path)){const e=i?l:t.path,n=x.inputs.report[e]||{filepath:e,name:Ks(s,t.path),size:0,type:"external",dependencies:new Set,dependents:new Set};"dependencies"in o&&(n.dependents.add(o),o.dependencies.add(n)),"inputs"in o&&!o.inputs.includes(n)&&o.inputs.push(n),c.includes(n)||c.push(n),x.inputs.report[e]=n,r[n.filepath]=n}}else I(l,n,r)}return r},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 r of n.imports){if(!S(r.path))continue;const n=r.path.match(/^\.?\.\//),o=n?a.dirname(e.filepath):u,i=_s(o,r.path);let s;if(r.external){const e=n?i:r.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 ${r.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)}))}}),Gs=(e,t)=>{const n=t.time("module parsing",{start:!1}),r=t.time("build report",{start:!1}),o=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=Us(e.id),r=f.get(t)||{dependencies:new Set,dependents:new Set},o=Ws(new Set([...e.dynamicallyImportedIds,...e.importedIds]),t),i=Ws(new Set([...e.dynamicImporters,...e.importers]),t);for(const e of i)r.dependents.add(e);for(const e of o)r.dependencies.add(e);f.set(t,r),n.tag([`module:${t}`],{span:!0}),n.pause()},writeBundle(n,m){r.resume();const g=n.dir?_s(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=Us(n),r=f.get(t)||{dependencies:new Set,dependents:new Set};r.dependents.has(e)||(r.dependents.add(e),f.set(t,r))}for(const t of n){const n=Us(t),r=f.get(n)||{dependencies:new Set,dependents:new Set};r.dependencies.has(e)||(r.dependencies.add(e),f.set(n,r))}}a.end(),s.resume();for(const[e,n]of Object.entries(m)){const r=_s(g,e),o="code"in n?Buffer.byteLength(n.code,"utf8"):Buffer.byteLength(n.source,"utf8"),s=l.get(r)||{name:e,filepath:r,inputs:[],size:o,type:Bs(e)};if("map"===s.type&&y.add(s),"modules"in n)for(const[e,t]of Object.entries(n.modules)){if(Us(e)!==e)continue;let n=t.originalLength;if(!n&&0!==n)try{n=i.statSync(e).size}catch(e){n=t.renderedLength}const r=d.get(e)||{name:Ks(g,e),dependencies:new Set,dependents:new Set,filepath:e,size:n,type:Bs(e)};s.inputs.push(r),d.set(r.filepath,r)}if("imports"in n)for(const e of n.imports){const n=Us(e);if(!f.has(n)){b.set(_s(g,n),s);continue}if(d.has(n)){t.debug(`Input report already there for ${n} from ${s.name}.`);continue}const r=d.get(n)||{name:Ks(g,e),dependencies:new Set,dependents:new Set,filepath:n,size:0,type:"external"};s.inputs.push(r),d.set(r.filepath,r)}"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 r=l.get(e);r?n.inputs.includes(r)||n.inputs.push(r):t.debug(`Could not find the output report for ${e}.`)}u.resume();for(const[e,n]of d){const r=f.get(e);if(r){for(const e of r.dependencies){const r=d.get(e);r?n.dependencies.add(r):t.debug(`Could not find input for dependency ${Ks(g,e)} of ${n.name}`)}for(const e of r.dependents){const r=d.get(e);r?n.dependents.add(r):t.debug(`Could not find input for dependent ${Ks(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$/,""),r=l.get(n);r?e.inputs.push(r):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 r=Ks(g,e),o=l.get(e);if(!o)return d.has(r)||t.debug(`Could not find output for ${r}`),n;n.set(e,o);const i=m[Ks(g,e)];if(!i)return t.debug(`Could not find asset for ${r}`),n;const s=[];"imports"in i&&s.push(...i.imports),"dynamicImports"in i&&s.push(...i.dynamicImports);for(const e of s)w(_s(g,e),n);return n};o.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}":"${Ks(g,e.filepath)}" already reported.`),p.set(e.filepath,e)}o.pause(),r.pause()},async closeBundle(){e.build.inputs=Array.from(d.values()),e.build.outputs=Array.from(l.values()),e.build.entries=Array.from(p.values()),o.end(),r.end(),await e.asyncHook("buildReport",e.build)}}},Ys=(e,t,n)=>r=>{let o=[],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 ")||re(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"],r=e=>{const n=Us(e);t.add(n),n.startsWith("external ")&&t.add(g(n))};r(e.identifier());for(const t of n){const n=e[t];t&&t in e&&"string"==typeof n&&r(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=Us(t.request);if(d.has(n))return d.get(n);if(e.context){const t=_s(Us(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 "));r.hooks.thisCompilation.tap(t,(r=>{o=[],i=[],s=[],a.clear(),u.clear(),d.clear(),p.clear(),r.hooks.finishModules.tap(t,(t=>{f.resume();const r=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(),r=Ks(e.bundler.outDir,t),i=new Set(y(n).map((e=>{const r=b(n,e);if(!r?.identifier())return!1;const o=r.identifier();return!!m(o)&&(o!==t&&(w(r)?g(o):o))})).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(r),dependencies:new Set,dependents:new Set,filepath:t,type:"external"}:{size:n.size()||0,name:r,dependencies:new Set,dependents:new Set,filepath:t,type:Bs(t)};o.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 o){const t=p.get(e.filepath);if(t){for(const r of t.dependencies){const t=a.get(r);t?e.dependencies.add(t):n.debug(`Could not find input of dependency ${r}`)}for(const r of t.dependents){const t=a.get(r);t?e.dependents.add(t):n.debug(`Could not find input of dependent ${r}`)}}else n.debug(`Could not find dependency report for ${e.name}`)}u.end(),r.end(),f.pause()}))})),r.hooks.afterEmit.tapPromise(t,(async t=>{f.resume();const r=t.chunks,d=t.getAssets(),p=t=>[...t.files||[],...t.auxiliaryFiles||[]].map((t=>_s(e.bundler.outDir,t))),g=n.time("indexing chunks"),h=t.chunkGraph;for(const e of r){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"===Bs(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 r={size:t.source.size()||0,name:t.name,inputs:[],filepath:_s(e.bundler.outDir,t.name),type:Bs(t.name)};if(u.set(r.filepath,r),i.push(r),"map"===r.type){l.push(r);continue}const o=c.get(r.filepath);if(o)for(const e of o){const t=a.get(e);t?r.inputs.push(t):n.debug(`Could not find input of ${e}`)}else n.debug(`Could not find modules for ${r.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 r of e.childrenIterable||[]){const e=v(r,t);for(const t of e)n.add(t)}return n};for(const[r,o]of t.entrypoints){const t=new Map,i=new Map;let a=0;const c=v(o),d=Array.from(c).flatMap(p),l=o.chunks.filter((e=>h.getChunkEntryModulesIterable(e)||!1)).flatMap((e=>Array.from(e.files))).filter((e=>e.includes(r)||o.name&&e.includes(o.name))).find((e=>"js"===Bs(e)));for(const e of d){const r=u.get(e);if(e&&r){if("map"!==r.type&&!t.has(r.name)){t.set(r.name,r);for(const e of r.inputs)i.has(e.filepath)||i.set(e.filepath,e);a+=r.size}}else n.debug(`Could not find output of ${JSON.stringify(e)}`)}const f={name:r,filepath:l?_s(e.bundler.outDir,l):"unknown",size:a,inputs:Array.from(i.values()),outputs:Array.from(t.values()),type:l?Bs(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=o,e.build.outputs=i,e.build.entries=s,f.end(),await e.asyncHook("buildReport",e.build)}))},Qs="datadog-build-report-plugin",Zs=e=>{const{context:t}=e,n=t.getLogger(Qs);return[{name:Qs,enforce:"post",esbuild:Js(t,n),rspack:Ys(t,Qs,n),webpack:Ys(t,Qs,n),vite:Gs(t,n),rollup:Gs(t,n)}]},Xs="datadog-bundler-report-plugin",ea=(e,t)=>t?a.isAbsolute(t)?t:a.resolve(e,t):"",ta=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)},na=e=>t=>{e.bundler.rawConfig=t.options,t.options.output?.path&&(e.bundler.outDir=ea(process.cwd(),t.options.output.path)),e.hook("bundlerReport",e.bundler),t.options.context&&(e.buildRoot=t.options.context),e.hook("buildRoot",e.buildRoot)},ra=e=>({configResolved(t){e.bundler.rawConfig=t;let n=t.build?.outDir??"dist";const r=t.build?.rollupOptions?.output,o=ta(r);e.buildRoot=t.root??process.cwd(),r&&o.length&&(n=Ls(o,process.cwd())),e.bundler.outDir=ea(e.buildRoot,n),e.hook("buildRoot",e.buildRoot),e.hook("bundlerReport",e.bundler)}}),oa=e=>{const{context:t}=e,n=t.getLogger(Xs);return[{name:Xs,enforce:"pre",esbuild:{setup(e){t.bundler.rawConfig=e.initialOptions,e.initialOptions.absWorkingDir&&(t.buildRoot=e.initialOptions.absWorkingDir),e.initialOptions.outdir&&(t.bundler.outDir=ea(t.buildRoot,e.initialOptions.outdir)),e.initialOptions.outfile&&(t.bundler.outDir=ea(t.buildRoot,a.dirname(e.initialOptions.outfile))),t.hook("buildRoot",t.buildRoot),t.hook("bundlerReport",t.bundler),e.initialOptions.metafile=!0}},webpack:na(t),rspack:na(t),vite:ra(t),rollup:{options(e){let n;if("output"in e){const t=ta(e.output);n=Ls(t,process.cwd())}const r=(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=_s(process.cwd(),n);const e=Ls([n,...r],process.cwd());t.buildRoot=e===a.sep?process.cwd():e}else t.buildRoot=Ls(r,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 r=ta(e);Ls(r,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.")}}}]},ia="datadog-custom-hooks-plugin",sa=e=>{const{context:t}=e,n=t.getLogger(ia),r=e=>(r,...o)=>{const i=n.time(`execution | ${r}`,{tags:["type:custom-hook",`hook:${r}`]}),s=[],a=[];for(const n of t.plugins){if(!(r in n))continue;const t=n[r];if("function"==typeof t)try{const i=t(...o);i instanceof Promise&&(e||s.push(`Plugin "${n.name}" returned a promise on the non async hook "${r}".`),a.push(i))}catch(e){s.push(`Plugin "${n.name}" errored on hook "${r}". [${e}]`)}else s.push(`Plugin "${n.name}" has an invalid hook type for "${r}". [${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=r(!1),t.asyncHook=r(!0),[{name:ia,enforce:"pre"}]};class aa{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=(r=e,i.readFileSync(r,{encoding:"utf-8"}));var r;const o=JSON.parse(n);if(!o.sources)return void t("Missing 'sources' field in sourcemap.");const s=o.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 r of e){const e=this.getFilename(r);if(n.has(e))continue;n.add(e);const o=this.trackedFilenames.get(e);o&&(t=t.concat(o))}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 ua=async e=>{const t=await e.getRemotes(!0);if(0===t.length)throw new Error("No git remotes available");const n=await ca(e);for(const e of t)if(e.name===n)return ue(e.refs.push);return ue(t[0].refs.push)},ca=async e=>{try{return(await e.getConfig("clone.defaultRemoteName"))?.value??"origin"}catch(e){return"origin"}},da=async e=>e.revparse("HEAD"),la=async e=>(await e.raw("ls-files")).split(/\r\n|\r|\n/),pa=async e=>e.branch(),fa=async e=>e.show(["-s","--format=%s"]),ma=async e=>e.show(["-s","--format=%an,%ae,%aI,%cn,%ce,%cI"]),ga="datadog-git-plugin",ha=e=>{const{options:t,context:n}=e,r=n.getLogger(ga),o=r.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=S.simpleGit(t),n=await e.revparse("--show-toplevel");t.baseDir=n}catch{}return S.simpleGit(t)})(a.dirname(e));if(0===(await t.getRemotes(!0)).length)return r.warn("No git remotes available, skipping git plugin. This is expected for a repository that has not been pushed yet."),void o.end();const i=await(async e=>{const t=[da(e),pa(e),fa(e),ma(e),la(e),ua(e)],[n,r,o,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:o.trim(),hash:n},hash:n,branch:r.current,remote:a.trim(),trackedFilesMatcher:new aa(s)}})(t);n.git=i,o.end(),await n.asyncHook("git",n.git)}catch(e){r.error(`Could not get git information: ${e.message}`)}};return[{name:ga,enforce:"pre",buildRoot(e){if(ie(t))try{o.resume();const t=((e,t)=>{let n,r=_s(process.cwd(),e);for(;!n;){const e=a.resolve(r,t);if(Re(e)&&(n=e),r=r.split(a.sep).slice(0,-1).join(a.sep),[a.sep,""].includes(r))break}return n})(e,".git");if(!t)return r.warn("No .git directory found, skipping git plugin."),void o.end();n.queue(i(t))}catch(e){r.error(`Could not get git information: ${e.message}`)}}}]},ya="datadog-injection-plugin",ba=/^https?:\/\//,wa=[".mjs",".mjsx",".js",".ts",".tsx",".jsx"],va=t.bold.yellow;function $a(e){return e.some((e=>e.position===Te.BEFORE||e.position===Te.AFTER))}function ka(e){return e.some((e=>e.injectIntoAllChunks))}const xa=(e,t,n)=>{const r=e.filter((e=>e.position===t&&(!n||n.isEntry||e.injectIntoAllChunks))).map((e=>Ca(e.value)?e.value(n):e.value)).filter(Boolean);if(0===r.length)return"";return`// begin injection by Datadog build plugins\n${r.map((e=>`(() => {${e}})();`)).join("\n\n")}\n// end injection by Datadog build plugins`},Ea=async(e,t,n=process.cwd())=>{const r=Ca(e.value)?await e.value():e.value;try{if("file"===e.type){const e=r;return await(e.match(ba)?(async(e,t=5e3)=>{let n;return Promise.race([ee({retries:2,minTimeout:100,url:e}).finally((()=>{t&&clearTimeout(n)})),new Promise(((e,r)=>{n=setTimeout((()=>{r(new Error("Timeout"))}),t)}))])})(e):(async(e,t=process.cwd())=>{const n=_s(t,e);return De(n)})(e,n))}return r}catch(o){const i=`${e.type} - ${ae(r)}`;return e.fallback?(t.debug(`Fallback for "${i}": ${o.toString()}`),Ea(e.fallback,t,n)):(t.warn(`Failed "${i}": ${o.toString()}`),"")}},Sa=async(e,t,n,r=process.cwd())=>{const o=t.filter(Pa).map((e=>{const t=e.value;return{...e,value:e=>t(e)}})),i=t.filter((e=>!Pa(e))),s=await Promise.all(i.map((async t=>({...t,value:await Ea(t,e,r)})))),a=e=>({...e,position:e.position??Te.BEFORE});n.push(...o.map(a),...s.map(a))},Ia=e=>e instanceof Error&&"code"in e,ja=e=>wa.includes(e),Aa=(e,t,n)=>{e.warn(`"${va(t)}" files are not supported (${va(n)}).`)},Pa=e=>"function"==typeof e.value&&1===e.value.length,Ca=e=>"function"==typeof e,Oa=i.promises,Da=(e,t,n)=>({setup(r){const{onStart:s,onResolve:u,onLoad:c,onEnd:d,esbuild:l,initialOptions:f}=r,m=[],g=`${t.bundler.name}.${Te.MIDDLE}.${L}.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 Fs(r,t,e)),r.initialOptions.inject=w;try{await(async(e,t)=>{await Ce(a.dirname(e)),await o.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:ya}))),c({filter:b,namespace:ya},(async()=>({contents:xa(n,Te.MIDDLE)||" ",resolveDir:t.buildRoot,loader:"js"}))),d((async r=>{if(!r.metafile){const n=new Error("Missing metafile from build result.");return e.warn(n.message),void t.markArtifactsReady(n)}if($a(n))try{const o=[];for(const[i,s]of Object.entries(r.metafile.outputs)){const r=Boolean(s.entryPoint&&m.some((e=>e.resolved.endsWith(s.entryPoint))));if(!r&&!ka(n))continue;const u=_s(t.buildRoot,i),{base:c,ext:d}=a.parse(u);ja(d)?o.push((async()=>{try{const e=`${u}.map`,t=await Oa.readFile(u,"utf-8"),o=await Oa.readFile(e,"utf-8").catch((()=>!1)),i=a.basename(u),s=xa(n,Te.BEFORE,{sourceOrHash:t,fileName:i,isEntry:r}),c=xa(n,Te.AFTER,{sourceOrHash:t,fileName:i,isEntry:r});if(!s&&!c)return;const d=t.replace(/\n?\/\/# sourceMappingURL=.*$/m,""),p=o?`${d}\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(o).toString("base64")}`:d,f=await l.transform(p,{loader:"default",banner:s,footer:c,sourcemap:o?"external":void 0,sourcefile:i});await Promise.all([Oa.writeFile(u,f.code),o&&f.map?Oa.writeFile(e,f.map):null])}catch(t){if(!Ia(t)||"ENOENT"!==t.code)throw t;e.warn(`Could not inject content in ${u}: ${t}`)}})()):Aa(e,d,c)}await Promise.all(o),t.markArtifactsReady()}catch(e){throw t.markArtifactsReady(e),e}}))}}),Ra=L,Na="?inject-proxy",Ma=(e,t)=>({renderChunk:{order:"post",handler(n,r){const{base:o,ext:i}=a.parse(r.fileName);if(!ja(i))return Aa(e,i,o),null;const s=xa(t,Te.BEFORE,{sourceOrHash:n,fileName:r.fileName,isEntry:r.isEntry}),u=xa(t,Te.AFTER,{sourceOrHash:n,fileName:r.fileName,isEntry:r.isEntry});if(!s&&!u)return null;const c=new I(n);return s&&c.prepend(`${s}\n`),u&&c.append(`\n${u}`),{code:c.toString(),map:c.generateMap({file:r.fileName,hires:"boundary"})}}},async resolveId(e,n,r){if(re(e))return{id:e,moduleSideEffects:!0};if(r.isEntry&&xa(t,Te.MIDDLE)){if(e.endsWith(".html"))return null;const t=await this.resolve(e,n,r);if(!t||t.external)return t;return(await this.load(t)).moduleSideEffects=!0,`${t.id}${Na}`}return null},load(e){if(re(e))return xa(t,Te.MIDDLE);if(e.endsWith(Na)){const t=e.slice(0,-13),n=this.getModuleInfo(t);let r=`import ${JSON.stringify(Ra)};\nexport * from ${JSON.stringify(t)};`;return n?.hasDefaultExport&&(r+=`export { default } from ${JSON.stringify(t)};`),r}return null}}),Ta=(e,t,n,r,o)=>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}.${Te.MIDDLE}.${L}.js`);Oe(l,"");s.hooks.shutdown.tap(ya,(()=>{var e;e=l,i.rmSync(e,{force:!0,maxRetries:3,recursive:!0})}));const p=async()=>{await Sa(t,r,o,n.buildRoot)};s.hooks.beforeRun.tapPromise(ya,p),s.hooks.watchRun.tapPromise(ya,p),s.hooks.compilation.tap(ya,(n=>{const r=e.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS;n.hooks.processAssets.tap({name:ya,stage:r},(()=>{for(const e of n.chunks){const r=e.canBeInitial(),i=e.contentHash?.javascript??e.hash;for(const s of e.files){const{base:e,ext:d}=a.parse(s);if(!ja(d)){Aa(t,d,e);continue}const l=e,p=xa(o,Te.BEFORE,{sourceOrHash:i,fileName:l,isEntry:r}),f=xa(o,Te.AFTER,{sourceOrHash:i,fileName:l,isEntry:r});""===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]},r=e=>{for(const[n,r]of Object.entries(e))"object"==typeof r?(r.import=r.import||[],r.import.unshift(l)):"string"==typeof r?e[n]=[l,r]:Array.isArray(r)?r.unshift(l):t.error("Invalid entry type: "+typeof r)};return e?"function"==typeof e?async()=>{const t=await e();return r(t),t}:"object"!=typeof e?"string"==typeof e?[n,e]:(t.error("Invalid entry type: "+typeof e),e):(r(e),e):{ddHelper:n}})(s.options.entry);s.options.entry=f},Fa=e=>{const{bundler:t,context:n}=e,r=n.getLogger(ya),o=[],i=[];n.inject=e=>{o.push(e)};const s={name:ya,enforce:"post",esbuild:Da(r,n,i),webpack:Ta(t,r,n,o,i),rspack:Ta(t,r,n,o,i),rollup:Ma(r,i),vite:{...Ma(r,i),enforce:"pre",transformIndexHtml:{order:"pre",handler:()=>xa(i,Te.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:q},handler:()=>({code:xa(i,Te.MIDDLE)})}:s.buildStart=async()=>{await Sa(r,o,i,n.buildRoot),"esbuild"===n.bundler.name&&$a(i)&&n.markArtifactsPending()},[s]},_a="datadog-true-end-plugin",La=e=>{const{context:t}=e,n=async()=>{await t.asyncHook("asyncTrueEnd")},r=async()=>{await t.asyncHook("flush")},o=()=>{t.hook("syncTrueEnd")},i=async()=>{o(),await n(),await r()},s=e=>{e.hooks.shutdown.tapPromise(_a,i)},a={async writeBundle(){},async closeBundle(){await i()}};return[{name:_a,enforce:"post",webpack:s,esbuild:{setup(e){e.onEnd((async()=>{await n(),await r()})),e.onDispose((()=>{o()}))}},vite:a,rollup:a,rspack:s}]},qa={[Fi]:ps},za=t.bold.red;var Ba="3.4.0-dev.0";const Va=(({bundler:t,version:n})=>{const r=Date.now();return e.createUnplugin(((e,o)=>{const i=Date.now(),s=Q(e);"esbuild"===o.framework&&(o.esbuildHostName=W);const a=process.env.BUILD_PLUGINS_ENV||"production",u=z.includes(a)?a:"development",c=t.rspackVersion||t.version||t.VERSION,d=o.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:r})=>{const o=process.cwd(),i={errors:r.errors,warnings:r.warnings,logs:r.logs,metadata:n.metadata,timings:r.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:o},build:i,buildRoot:o,env:n.env,getLogger:ge(n,r,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:te(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:r,options:s,data:l,stores:p}),m=f.getLogger("factory"),g=m.time("Plugins initialization",{start:i});f.pluginNames.push(W);const h=[];h.push(["analytics",Ns],["async-queue",Ts],["build-report",Zs],["bundler-report",oa],["custom-hooks",sa],["git",ha],["injection",Fa],["true-end",La]),s.customPlugins&&h.push(["custom",s.customPlugins]);const y=[["apps",$e,co],["error-tracking",lo,Ro],["live-debugger",No,Mi],["metrics",Fi,fs],["output",ms,vs],["rum",$s,Ds]];for(const[e,t,n]of y)ve(s,t,m)&&h.push([e,n]);for(const[e,n]of h)f.plugins.push(...be(f,n,e)({bundler:t,context:f,options:s,data:l,stores:p}));return(e=>{const t=[];for(const n of H){const r=G(n);if(r.length>1&&!r.every((e=>process.env[e]===process.env[r[0]]))){const o=r.map((e=>K(e))).join(" and "),i=K(`DATADOG_${n}`);e.warn(`Conflicting keys ${o}, will use ${i}`),t.push(`${o} (using ${i})`)}else if(r.length){const e=r.map((e=>U(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: ${za(Array.from(t).join(", "))}`)})(f.pluginNames),f.hook("init",f),g.end(),f.plugins}))})({bundler:j,version:Ba}).webpack,Wa=Ba,Ua=qa;function Ka(e,t,n,r){return function(...o){let i;if("reject"===r)try{i=t(...o)}catch(e){return Promise.reject(e)}else i=t(...o);if(!i)return e().apply(this,o);if("reject"===r)return Promise.reject(new Error(n));throw new Error(n)}}function Ha(e,t){const n=e[e.length-1];"function"==typeof n&&process.nextTick(n,t)}function Ja(e,t,n){const r=Symbol.for(t),o=e;return Object.prototype.hasOwnProperty.call(o,r)||Object.defineProperty(o,r,{value:n(),writable:!1,configurable:!1,enumerable:!1}),o[r]}const Ga="Network access is not allowed directly in backend functions — use $.Actions instead.",Ya="Spawning a subprocess is not allowed in backend functions.";function Qa(e){return Ja(O,`@dd/apps-plugin/network-guard ${e}`,(()=>{const e=new b.AsyncLocalStorage;return{isActive:()=>!0===e.getStore(),run:t=>e.run(!0,t)}}))}const Za=Qa("blockedContext"),Xa=Qa("allowedContext");function eu(){return Za.isActive()&&!Xa.isActive()}const tu=Symbol.for("@dd/apps-plugin/network-guard installed"),nu=void 0!==process.env.JEST_WORKER_ID;function ru(e,t){return!!nu&&(e===globalThis||e===O.Socket.prototype&&("write"===t||"end"===t))}function ou(e,t,n){const r=Object.getOwnPropertyDescriptor(e,t)?.get;if(r?.[tu])return;let o=e[t];if(void 0===o)return;const i=new WeakMap;function s(){const e=o,t=n((()=>e));return null===t||"object"!=typeof t&&"function"!=typeof t||i.set(t,o),t}let a=s();const u=()=>a;u[tu]=!0,Object.defineProperty(e,t,{configurable:ru(e,t),enumerable:!0,get:u,set:function(n){this===e||null===this||"object"!=typeof this&&"function"!=typeof this?(o=i.has(n)?i.get(n):n,a=s()):Object.defineProperty(this,t,{value:n,writable:!0,configurable:!0,enumerable:!0})}})}function iu(e,t,...n){const r=e[e.length-1];return"function"==typeof r&&(process.nextTick(r,t,...n),!0)}function su(e,t){process.nextTick((()=>{e.listenerCount("error")>0&&e.emit("error",t)}))}const au=process.stdout,uu=process.stderr;const cu=globalThis.fetch;function du(e,t){return function(...n){return eu()&&(r=this)!==au&&r!==uu?(function(e,t){const n=new Error(Ga);iu(t,n),process.nextTick((()=>{e.listenerCount("error")>0&&e.destroy(n)}))}(this,n),t(this)):e().apply(this,n);var r}}function lu(e){return function(...t){return eu()?(su(this,new Error(Ga)),this):e().apply(this,t)}}function pu(e){return function(...t){if(!eu())return e().apply(this,t);const n=new Error(Ga);!iu(t,n)&&this instanceof D.EventEmitter&&su(this,n)}}function fu(e){return Ka(e,(()=>eu()),Ga,"reject")}function mu(e,t=Ga){const n=e();if(void 0!==n)return new Proxy(n,{construct(n,r,o){if(eu())throw new Error(t);const i=e();return Reflect.construct(i,r,o)}})}function gu(e){return mu(e)}function hu(e){return mu(e)}function yu(e){return mu(e,"Spawning a worker thread is not allowed in backend functions.")}function bu(e){return Ka(e,(()=>eu()),Ya,"throw")}function wu(e){const t=new D.EventEmitter;t.pid=void 0,t.exitCode=null,t.signalCode=null,t.killed=!1,t.connected=!1,t.channel=void 0;const n=new R.Readable({read(){}});n.push(null);const r=new R.Readable({read(){}});return r.push(null),t.stdout=n,t.stderr=r,t.stdin=new R.Writable({write(e,t,n){n()}}),t.kill=()=>!1,t.ref=()=>t,t.unref=()=>t,t.disconnect=()=>{},t.send=(...e)=>{const n=new Error("channel closed");return iu(e,n)||su(t,n),!1},su(t,e),t}function vu(e){return function(...t){return eu()?wu(new Error(Ya)):e().apply(this,t)}}function $u(e){const t=function(e){return function(...t){if(!eu())return e().apply(this,t);const n=new Error(Ya);return iu(t,n,"",""),wu(n)}}(e);return Object.defineProperty(t,N.promisify.custom,{configurable:!0,writable:!0,value:(...e)=>{let n;const r=new Promise(((r,o)=>{n=t(...e,((e,t,n)=>{if(e){const r=Object.assign(e,{stdout:t,stderr:n});o(r)}else r({stdout:t,stderr:n})}))}));return r.child=n,r}}),t}ou(O.Socket.prototype,"connect",(e=>Ka(e,(()=>eu()),Ga,"throw"))),ou(O.Socket.prototype,"write",(function(e){return du(e,(()=>!1))})),ou(O.Socket.prototype,"end",(function(e){return du(e,(e=>e))})),ou(globalThis,"fetch",fu),ou(P.Socket.prototype,"send",pu),ou(P.Socket.prototype,"connect",lu),ou(O.Server.prototype,"listen",lu),ou(P.Socket.prototype,"bind",lu),ou(globalThis,"WebSocket",gu),ou(globalThis,"EventSource",hu);const ku=["resolve","resolve4","resolve6","resolveAny","resolveCaa","resolveCname","resolveMx","resolveNaptr","resolveNs","resolvePtr","resolveSoa","resolveSrv","resolveTlsa","resolveTxt","reverse"];for(const e of ku)ou(C,e,pu),ou(C.Resolver.prototype,e,pu),ou(C.promises,e,fu),ou(C.promises.Resolver.prototype,e,fu);ou(A,"spawn",vu),ou(A,"spawnSync",(function(e){return function(...t){return eu()?{pid:0,output:null,stdout:void 0,stderr:void 0,status:null,signal:null,error:new Error(Ya)}:e().apply(this,t)}})),ou(A,"exec",$u),ou(A,"execSync",bu),ou(A,"execFile",$u),ou(A,"execFileSync",bu),ou(A,"fork",vu);ou(A.ChildProcess.prototype,"spawn",(function(e){return function(...t){return eu()?(su(this,new Error(Ya)),-1):e().apply(this,t)}})),ou(M,"Worker",yu),d.syncBuiltinESMExports();const xu=dr();var Eu=Object.freeze({__proto__:null,forceReset:function(){xu.forceInvalidate()},guardEventSource:hu,guardWebSocket:gu,guardWorker:yu,installGuardedProperty:ou,runAllowed:async function(e){return xu.hasActiveScope()?Xa.run(e):e()},runBlocked:async function(e,t){const n=xu.start();t?.({abandonIfCurrent:()=>n.concludeIfCurrent()});try{return await Za.run(e)}finally{n.concludeIfCurrent()}},trustedFetch:cu});const Su=i.realpathSync,Iu=i.readlinkSync,ju=["PATH","HOME","NODE_ENV","TMPDIR"];const Au=Ja(i,"@dd/apps-plugin/env-guard shared-state",(()=>{const e=new b.AsyncLocalStorage,t=b.AsyncLocalStorage.prototype.getStore.bind(e);let n=process.env;const r=[],o=new Set;let i,s,a=!1;const u=Object.getOwnPropertyDescriptor(process.report,"excludeEnv");let c,d;if(u?.get&&u.set)c=u.get.bind(process.report),d=u.set.bind(process.report);else{let e=process.report.excludeEnv;c=()=>e,d=t=>{e=t}}function l(){0===o.size&&(d(i),i=void 0)}return Object.defineProperty(process.report,"excludeEnv",{configurable:!1,enumerable:!0,get:c,set:e=>{if(void 0!==t())throw new Error("Reassigning process.report.excludeEnv is not allowed in backend functions — it would let a backend function's own diagnostic report include the dev server's real environment. This is armed automatically for the duration of the function's execution.");if(o.size>0){const t=c();return d(e),d(t),void(i=e)}d(e)}}),{getCurrentEnv:function(){return t()??n},isInsideScope:()=>void 0!==t(),setRealEnvIfOutsideScope:e=>{if(void 0!==t())throw new Error("Reassigning process.env is not allowed in backend functions — it would corrupt the dev server's real environment for every future execution. Use $.Source or a declared Custom Credential instead.");if("object"!=typeof e||null===e)throw new Error("Reassigning process.env to a non-object value is not allowed — it would permanently break every future process.env access.");r.push(n),n=e},restoreRealEnvFromHistory:()=>{r.length>0&&(n=r.pop())},runInScope:(t,n)=>e.run(t,n),armScope:()=>{const e=Symbol("env-guard scope token");return 0===o.size&&(i=c(),d(!0)),o.add(e),e},disarmScope:e=>{o.delete(e)&&l()},forceResetAllScopes:()=>{o.size>0&&(o.clear(),l())},getExcludeEnv:c,getCachedNativeFdGetter:()=>s,setCachedNativeFdGetterOnce:e=>{a||(s=e,a=!0)}}})),Pu=Symbol.for("@dd/apps-plugin/env-guard/scoped-env-proxy"),Cu=Symbol.for("@dd/apps-plugin/env-guard/file-handle-read-guard");function Ou(e){return"object"==typeof e&&null!==e&&!0===Reflect.get(e,Pu)}function Du(e){return(t,...n)=>{const r=Au.getCurrentEnv();return e(r,...n)}}const Ru={};function Nu(){if(Ou(process.env))return;const e=new Proxy(Ru,{get:(e,t,n)=>{if(t===Pu)return!0;const r=Au.getCurrentEnv();return Reflect.get(r,t,n)},set:(e,t,n)=>Reflect.set(Au.getCurrentEnv(),t,n),has:(e,t)=>{const n=Au.getCurrentEnv();return t===Pu||Reflect.has(n,t)},deleteProperty:Du(Reflect.deleteProperty),ownKeys:Du(Reflect.ownKeys),getOwnPropertyDescriptor:Du(Reflect.getOwnPropertyDescriptor),defineProperty:(e,t,n)=>{if(!1===n.configurable)throw new Error(`Cannot define a non-configurable property (${String(t)}) on process.env: local execution's environment scoping requires every property to stay configurable.`);return Reflect.defineProperty(Au.getCurrentEnv(),t,n)},setPrototypeOf:Du(Reflect.setPrototypeOf),getPrototypeOf:Du(Reflect.getPrototypeOf),preventExtensions:()=>!1});Object.defineProperty(process,"env",{configurable:!1,enumerable:!0,get:()=>e,set:e=>{Ou(e)?Au.restoreRealEnvFromHistory():Au.setRealEnvIfOutsideScope(e)}})}Nu();const Mu=/^\/proc\/(self|thread-self|\d+)(\/task\/\d+)?\/environ$/;function Tu(e){return"object"==typeof e&&null!==e&&"code"in e}function Fu(e){const t=function(e){if("string"==typeof e)return e;if(Buffer.isBuffer(e))return Buffer.prototype.toString.call(e);if(e instanceof URL)return T.fileURLToPath(e);if("number"==typeof e&&"linux"===process.platform)try{return Iu(`/proc/self/fd/${e}`)}catch(e){if(Tu(e)&&"ENOENT"===e.code)return;throw e}}(e);if(void 0===t)return!1;let n;try{n=Su(t)}catch(e){if(!Tu(e)||"ENOENT"!==e.code)throw e;n=a.posix.normalize(t)}return Mu.test(n)}const _u="Reading /proc/.../environ is not allowed in backend functions — it exposes the dev server's real, unscoped environment. Use $.Source or a declared Custom Credential instead.";function Lu(e){if(!Au.isInsideScope())return!1;return Fu(zu(e))}function qu(e){if(Lu(e))throw new Error(_u)}function zu(e){return"object"==typeof e&&null!==e&&"fd"in e?Gu(Au.getCachedNativeFdGetter(),e):e}function Bu(e,t){const n=new Set(t),r={};for(const t of Object.keys(e))n.has(t)||(r[t]=e[t]);for(const n of t)n in e&&(r[n]=e[n]);return r}function Vu(e,t){if(qu(e),!Au.isInsideScope())return t;if("object"!=typeof t||null===t||!("fd"in t))return t;const n=Bu(t,["fd"]);return qu(zu(n.fd)),n}function Wu(e){return Ka((()=>e),(e=>Lu(e)),_u,"throw")}function Uu(e,t){const n=Ka((()=>e),(e=>Lu(e)),_u,"reject");if(!t)return n;return async function(...e){const r=await n.apply(this,e);return t(r),r}}function Ku(e){return t=()=>e,n=e=>Lu(e),r=_u,function(...e){let o;try{o=n(...e)}catch(t){return void Ha(e,t instanceof Error?t:new Error(String(t)))}if(!o)return t().apply(this,e);Ha(e,new Error(r))};var t,n,r}function Hu(e,t){const n=e[t];if("function"==typeof n&&!n[Cu])return n}function Ju(e){e[Cu]=!0}function Gu(e,t){if(!e)return t.fd;const n=e.call(t);if(t.fd!==n)throw new Error(_u);return n}function Yu(e,t,n){const r=Hu(e,t);if(!r)return;const o=function(...e){if(!Au.isInsideScope())return r.apply(this,e);let t;try{t=Gu(n,this)}catch(e){return Promise.reject(e)}return Lu(t)?Promise.reject(new Error(_u)):async function(e,t,n){const r=Object.prototype.hasOwnProperty.call(e,"fd")?Object.getOwnPropertyDescriptor(e,"fd"):void 0;Object.defineProperty(e,"fd",{value:t,configurable:!0,enumerable:!0});try{return await n()}finally{r?Object.defineProperty(e,"fd",r):delete e.fd}}(this,t,(async()=>r.apply(this,e)))};Ju(o),e[t]=o}function Qu(e,t,n){const r=Hu(e,t);if(!r)return;const o=function(...e){if(!Au.isInsideScope())return r.apply(this,e);if(Lu(Gu(n,this)))throw new Error(_u);return r.apply(this,e)};Ju(o),e[t]=o}var Zu;i.readFileSync=Wu(i.readFileSync),i.readFile=Ku(i.readFile),i.promises.readFile=Uu(i.promises.readFile),i.createReadStream=(Zu=i.createReadStream,(...e)=>{const t=Vu(e[0],e[1]),n=[e[0],t];return Zu(...n)}),i.openSync=Wu(i.openSync),i.open=Ku(i.open),i.promises.open=Uu(i.promises.open,(function(e){if("object"!=typeof e||null===e)return;const t=Object.getPrototypeOf(e),n=Object.getOwnPropertyDescriptor(t,"fd")?.get;Au.setCachedNativeFdGetterOnce(n),Yu(t,"read",n),Yu(t,"readFile",n),Yu(t,"readv",n),Qu(t,"createReadStream",n),Qu(t,"readableWebStream",n),Qu(t,"readLines",n)})),"function"==typeof i.openAsBlob&&(i.openAsBlob=Uu(i.openAsBlob)),i.read=Ku(i.read),i.readSync=Wu(i.readSync),i.readv=Ku(i.readv),i.readvSync=Wu(i.readvSync),i.copyFileSync=Wu(i.copyFileSync),i.copyFile=Ku(i.copyFile),i.promises.copyFile=Uu(i.promises.copyFile);function Xu(e){if(!Au.isInsideScope())return e;if("object"!=typeof e||null===e)return e;const t=Bu(e,["recursive","dereference"]);if(!0===t.recursive&&!0===t.dereference)throw new Error("Copying /proc/.../environ, or recursively copying with dereference: true, is not allowed in backend functions — both can expose the dev server's real, unscoped environment. Use $.Source or a declared Custom Credential instead.");return t}const ec=i.cpSync,tc=i.cp,nc=i.promises.cp;function rc(e,t){return(...n)=>t(e,...n)}i.cpSync=function(e,t,n){qu(e);const r=Xu(n);return ec.apply(this,[e,t,r])},i.cp=function(e,t,...n){let r;try{qu(e);const o=n.length>1,i=o?Xu(n[0]):void 0;r=o?[e,t,i,...n.slice(1)]:[e,t,...n]}catch(r){return void Ha([e,t,...n],r instanceof Error?r:new Error(String(r)))}return tc.apply(this,r)},i.promises.cp=async function(e,t,n){qu(e);const r=Xu(n);return nc.apply(this,[e,t,r])},i.ReadStream=new Proxy(i.ReadStream,{construct(e,t,n){const r=Vu(t[0],t[1]);return Reflect.construct(e,[t[0],r],n)}}),i.FileReadStream=i.ReadStream;const oc=process.report.getReport.bind(process.report);process.report.getReport=rc(oc,((e,...t)=>{const n=e(...t);return Au.isInsideScope()&&function(e){return"environmentVariables"in e}(n)&&delete n.environmentVariables,n}));const ic=process.report.writeReport.bind(process.report);process.report.writeReport=rc(ic,((e,...t)=>{if(Au.isInsideScope()){const e=t[0];if("string"==typeof e){if(function(e){try{return!i.statSync(e).isFile()}catch(e){if(Tu(e)&&"ENOENT"===e.code)return!1;throw e}}(e))throw new Error("process.report.writeReport() to a non-regular destination (a pipe, socket, or similar) is not allowed in backend functions — Node would write its real, unscoped report there before this file's own redaction could ever run. Use $.Source or a declared Custom Credential instead.");const n=t[1],r=oc(n);return delete r.environmentVariables,i.writeFileSync(e,JSON.stringify(r,null,2)),e}}const n=e(...t);if(Au.isInsideScope()){const e=i.readFileSync(n,"utf8"),t=JSON.parse(e);delete t.environmentVariables;const r=JSON.stringify(t,null,2);i.writeFileSync(n,r)}return n})),d.syncBuiltinESMExports();var sc=Object.freeze({__proto__:null,SAFE_ENV_KEYS:ju,buildScopedEnv:function(e){const t={};for(const e of ju){const n=process.env[e];void 0!==n&&(t[e]=n)}const n={...t,...e};return"win32"!==process.platform?n:new Proxy(n,{get(e,t,n){if("string"==typeof t&&!(t in e)){const r=ju.find((e=>e.toLowerCase()===t.toLowerCase()));if(r)return Reflect.get(e,r,n)}return Reflect.get(e,t,n)},has:(e,t)=>"string"!=typeof t||t in e?Reflect.has(e,t):ju.some((e=>e.toLowerCase()===t.toLowerCase())),set(e,t,n){if("string"==typeof t&&!(t in e)){const r=ju.find((e=>e.toLowerCase()===t.toLowerCase()));if(r)return Reflect.set(e,r,n)}return Reflect.set(e,t,n)}})},forceResetEnv:function(){Au.forceResetAllScopes()},runWithScopedEnv:async function(e,t,n){Nu();const r=Au.armScope();n?.({abandon:()=>Au.disarmScope(r)});try{return await Au.runInScope(e,t)}finally{Au.disarmScope(r)}}});exports.datadogWebpackPlugin=Va,exports.helpers=Ua,exports.version=Wa;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|