@datadog/webpack-plugin 2.5.3 → 2.5.4-dev-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{createUnplugin as e}from"unplugin";import t from"chalk";import n,{readFile as s}from"fs/promises";import o,{promises as i}from"fs";import r from"path";import{outdent as a}from"outdent";import u from"async-retry";import{File as p}from"buffer";import c from"p-queue";import{Readable as l}from"stream";import{createGzip as d}from"zlib";import m from"pretty-bytes";import{performance as f}from"perf_hooks";import{glob as h}from"glob";import{simpleGit as g}from"simple-git";import{URL as w}from"url";import y from"os";import{createRequire as b}from"module";import v from"webpack";
1
+ import{createUnplugin as e}from"unplugin";import t from"chalk";import n,{readFile as s}from"fs/promises";import o,{promises as i}from"fs";import r from"path";import{glob as a}from"glob";import u from"crypto";import c from"async-retry";import p from"p-queue";import{outdent as l}from"outdent";import{File as d}from"buffer";import{Readable as m}from"stream";import{createGzip as f}from"zlib";import h from"pretty-bytes";import{performance as g}from"perf_hooks";import{simpleGit as I}from"simple-git";import _ from"os";import{createRequire as E}from"module";import b from"webpack";
2
2
  // -- Shims --
3
3
  import cjsUrl from 'node:url';
4
4
  import cjsPath from 'node:path';
@@ -6,8 +6,8 @@ import cjsModule from 'node:module';
6
6
  const __filename = cjsUrl.fileURLToPath(import.meta.url);
7
7
  const __dirname = cjsPath.dirname(__filename);
8
8
  const require = cjsModule.createRequire(import.meta.url);
9
- const $="__datadog-helper-file",k=["development","production","test"],S="datadog-build-plugins",D=async(e,t)=>{await(async e=>n.mkdir(e,{recursive:!0}))(r.dirname(e)),await n.writeFile(e,t,{encoding:"utf-8"})},E=(e,t)=>{var n;n=r.dirname(e),o.mkdirSync(n,{recursive:!0}),o.writeFileSync(e,t,{encoding:"utf-8"})},P=e=>e.replace(/^@dd\/(datadog-|internal-)?|^datadog-|-plugin$/g,""),M=e=>e.includes($),x=e=>{const t=Math.floor(e/1e3/60/60/24),n=new Date(e-24*t*60*60*1e3),s=n.getUTCHours(),o=n.getUTCMinutes(),i=n.getUTCSeconds(),r=n.getUTCMilliseconds(),a=`${t?`${t}d `:""}${s?`${s}h `:""}${o?`${o}m `:""}${i?`${i}s`:""}`.trim();return`${a}${!a||r?` ${r}ms`:""}`.trim()},j=(e,t=60,n="[...]")=>{if(e.length<=t)return e;const s=Math.max(4,t-n.length),o=Math.min(10,Math.floor(s/2)),i=s-o;return`${e.slice(0,o)}${n}${e.slice(-i)}`};let T=0;const O=()=>`${Date.now()}.${performance.now()}.${++T}`,z={debug:0,info:1,warn:2,error:3,none:4},N=(e,n="warn")=>s=>{const o=(e=>e.split(">").map(P).join(">"))(s),i=(s,i="debug")=>{let r=t.dim,a=console.log;"error"===i?(r=t.red,a=console.error):"warn"===i?(r=t.yellow,a=console.warn):"info"===i&&(r=t.cyan,a=console.log);const u=`[${i}|${e.bundler.fullName}|${o}]`,p="string"==typeof s?s:JSON.stringify(s,null,2);e.logs.push({bundler:e.bundler.fullName,pluginName:o,type:i,message:p,time:Date.now()}),"error"===i&&e.errors.push(p),"warn"===i&&e.warnings.push(p),z[i]>=z[n]&&a(`${r(u)} ${p}`)};return{getLogger:t=>N(e,n)(`${o}>${t}`),time:(n,s={})=>{const{level:r="debug",start:a=!0,log:u=!0,tags:p=[]}=s,c={pluginName:o,label:n,spans:[],tags:p,logLevel:r,total:0};e.timings.push(c);const l=()=>c.spans.filter((e=>!e.end)),d=()=>{!c.spans.length&&u&&i(t.dim(`[${t.cyan(n)}] : start`),"debug"),c.spans.push({start:Date.now()})},m=()=>{const e=l();if(e?.length){e.length>1&&i(`Timer ${t.cyan(n)} has more than one ongoing span.`,"debug");for(const t of e)t.end=Date.now()}else i(`Timer ${t.cyan(n)} cannot be paused, no ongoing span.`,"debug")};a&&d();return{timer:c,resume:d,end:()=>{m();const e=c.spans.reduce(((e,t)=>e+(t.end-t.start)),0);c.total=e,u&&i(`[${t.cyan(n)}] : ${t.cyan(x(e))}`,r)},pause:m,tag:(e,t={})=>{const{span:n=!1}=t;if(n){const t=l();for(const n of t)n.tags=n.tags||[],n.tags.push(...e)}else c.tags.push(...e)}}},error:e=>i(e,"error"),warn:e=>i(e,"warn"),info:e=>i(e,"info"),debug:e=>i(e,"debug")}},R=["buildEnd","buildStart","load","loadInclude","resolveId","transform","transformInclude","watchChange","writeBundle","cwd","init","buildReport","bundlerReport","git"],I=(e,t,n,s)=>(...o)=>{const i=s.time(`hook | ${e} | ${t}`,{log:!1}),r=n(...o);return r instanceof Promise?r.finally((()=>{i.end()})):(i.end(),r)},A=(e,t,n)=>{const s=e.getLogger(S);return e=>{const o=s.time(`hook | init ${n}`,{log:!1}),i=t(e).map((e=>((e,t)=>{const n={...e};for(const s of R){const o=e[s];o&&(n[s]=I(e.name,s,o,t))}return n})(e,s))),r=i.map((e=>`plugin:${e.name}`));return o.tag(r),o.end(),i}},C="errorTracking",F="datadog-error-tracking-plugin",L=(e,n,s)=>{if(".map"!==r.extname(s))throw new Error(`The file ${t.green.bold(s)} is not a sourcemap.`);const o=s.replace(/\.map$/,""),i=o.replace(n.bundler.outDir,"");return{minifiedFilePath:o,minifiedUrl:e.minifiedPathPrefix?r.join(e.minifiedPathPrefix,i):i,relativePath:i}},_=[400,403,413],H=e=>{const{auth:t,url:n,method:s="GET",getData:o,type:i="text"}=e,r={retries:0===e.retries?0:e.retries||5,onRetry:e.onRetry,maxTimeout:e.maxTimeout,minTimeout:e.minTimeout};return u((async(e,r)=>{let a;try{const e={method:s,duplex:"half"};let i={};if(t?.apiKey&&(i["DD-API-KEY"]=t.apiKey),t?.appKey&&(i["DD-APPLICATION-KEY"]=t.appKey),"function"==typeof o){const{data:t,headers:n}=await o();e.body=t,i={...i,...n}}a=await fetch(n,{...e,headers:i})}catch(t){return e(t),{}}if(!a.ok){const t=`HTTP ${a.status} ${a.statusText}`;if(_.includes(a.status))return e(new Error(t)),{};throw new Error(t)}try{let e;return e="json"===i?await a.json():await a.text(),e}catch(t){return e(t),{}}}),r)},K=/[/]+|[\\]+/g,W=/^[/]+|^[\\]+|[/]+$|[\\]+$/g,B=(e,t)=>{const n=e.replace(W,"").split(K),s=t.replace(W,"").split(K),o=n.join("/");let i="";for(let e=0;e<s.length;e+=1){const t=s.slice(-e).join("/");o.startsWith(t)&&(i=t)}return i},q=async e=>{const t={empty:!1,exists:!0};try{0===(await i.stat(e)).size&&(t.empty=!0)}catch(e){if("ENOENT"!==e.code)throw e;t.exists=!1}return t},U=async(e,t,n,s)=>{const o=await(async(e,t)=>{const[n,s]=await Promise.all([q(e.minifiedFilePath),q(e.sourcemapFilePath)]);return{file:n,sourcemap:s,repeatedPrefix:B(e.relativePath,t)}})(e,n),i=[],a=[],u=new Map([["event",{type:"string",options:{contentType:"application/json",filename:"event"},value:JSON.stringify({...t,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(s)try{u.set("repository",{type:"string",options:{contentType:"application/json",filename:"repository"},value:JSON.stringify({data:[{files:s.trackedFilesMatcher.matchSourcemap(e.sourcemapFilePath,(t=>{a.push(`${r.basename(e.sourcemapFilePath)}: "${t}"`)})),hash:s.hash,repository_url:s.remote}],version:1})})}catch(t){a.push(`Could not attach git data for sourcemap ${e.sourcemapFilePath}: ${t.message}`)}return o.file.empty&&i.push(`Minified file is empty: ${e.minifiedFilePath}`),o.file.exists||i.push(`Minified file not found: ${e.minifiedFilePath}`),o.sourcemap.empty&&i.push(`Sourcemap file is empty: ${e.sourcemapFilePath}`),o.sourcemap.exists||i.push(`Sourcemap file not found: ${e.sourcemapFilePath}`),o.repeatedPrefix&&a.push(`The minified file path contains a repeated pattern with the minified path prefix: ${o.repeatedPrefix}`),{content:u,errors:i,warnings:a}},G=t.green.bold,J=t.yellow.bold,V=t.red.bold,Y=async(e,t)=>{if("function"==typeof o.openAsBlob){const n=await o.openAsBlob(e,{type:t.contentType});return new p([n],t.filename)}{const n=l.toWeb(o.createReadStream(e)),s=await new Response(n).blob();return new p([s],t.filename,{type:t.contentType})}},Q=(e,t={})=>async()=>{const n=new FormData,s=d();for(const[t,s]of e.content){const e="file"===s.type?await Y(s.path,s.options):new Blob([s.value],{type:s.options.contentType});n.append(t,e,s.options.filename)}const o=new Request("fake://url",{method:"POST",body:n});return{data:l.fromWeb(o.body).pipe(s),headers:{"Content-Encoding":"gzip",...t,...Object.fromEntries(o.headers.entries())}}},X=async(e,t,n,s)=>{const o=Date.now(),i=t.minifiedPathPrefix,r={git_repository_url:n.git?.remote,git_commit_sha:n.git?.hash,plugin_version:n.version,project_path:n.bundler.outDir,service:t.service,type:"js_sourcemap",version:t.releaseVersion},a=await Promise.all(e.map((e=>U(e,r,i,n.git)))),u=a.map((e=>e.errors)).flat(),p=a.map((e=>e.warnings)).flat();if(p.length>0&&s.warn(`Warnings while preparing payloads:\n - ${p.join("\n - ")}`),u.length>0){const e=`Failed to prepare payloads, aborting upload :\n - ${u.join("\n - ")}`;if(s.error(e),!0===t.bailOnError)throw new Error(e);return}const{errors:l,warnings:d}=await(async(e,t,n,s)=>{const o=[],i=[];if(!n.auth?.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 r=new(c.default?c.default:c)({concurrency:t.maxConcurrency}),a={"DD-API-KEY":n.auth.apiKey,"DD-EVP-ORIGIN":`${n.bundler.fullName}-build-plugin_sourcemaps`,"DD-EVP-ORIGIN-VERSION":n.version},u=[];for(const p of e){const e={sourcemap:p.content.get("source_map")?.path.replace(n.bundler.outDir,"."),file:p.content.get("minified_file")?.path.replace(n.bundler.outDir,".")};s.debug(`Queuing ${G(e.sourcemap)} | ${G(e.file)}`),u.push(r.add((async()=>{try{await H({url:t.intakeUrl,method:"POST",getData:Q(p,a),onRetry:(t,n)=>{const o=`Failed to upload ${J(e.sourcemap)} | ${J(e.file)}:\n ${t.message}\nRetrying ${n}/5`;i.push(o),s.debug(o)}}),s.debug(`Sent ${G(e.sourcemap)} | ${G(e.file)}`)}catch(n){if(o.push({metadata:e,error:n}),!0===t.bailOnError)throw n}})))}return await Promise.all(u),await r.onIdle(),{warnings:i,errors:o}})(a,t,n,s);if(s.info(`Done uploading ${G(e.length.toString())} sourcemaps in ${G(x(Date.now()-o))}.`),l.length>0){const e=`Failed to upload some sourcemaps:\n${` - ${l.map((({metadata:e,error:t})=>e?`${V(e.file)} | ${V(e.sourcemap)} : ${t.message}`:t.message)).join("\n - ")}`}`;if(s.error(e),!0===t.bailOnError)throw new Error(e)}d.length>0&&s.warn(`Warnings while uploading sourcemaps:\n - ${d.join("\n - ")}`)},Z=async(e,n,s)=>{const o=t.green.bold,i=Object.entries(e.sourcemaps).map((([e,t])=>` - ${e}: ${o(t.toString())}`)).join("\n"),r=s.time("get sourcemaps files"),u=((e,t)=>{if(!t.build.outputs||0===t.build.outputs.length)throw new Error("No output files found.");return t.build.outputs.filter((e=>e.filepath.endsWith(".map"))).map((e=>e.filepath)).map((n=>({...L(e,t,n),sourcemapFilePath:n,minifiedPathPrefix:e.minifiedPathPrefix})))})(e.sourcemaps,n);r.end();const p=a`
10
- Uploading ${o(u.length.toString())} sourcemaps with configuration:
9
+ const y="__datadog-helper-file",w=["development","production","test"],T="datadog-build-plugins",D=async(e,t)=>{await(async e=>n.mkdir(e,{recursive:!0}))(r.dirname(e)),await n.writeFile(e,t,{encoding:"utf-8"})},R=(e,t)=>{var n;n=r.dirname(e),o.mkdirSync(n,{recursive:!0}),o.writeFileSync(e,t,{encoding:"utf-8"})},S=e=>e.replace(/^@dd\/(datadog-|internal-)?|^datadog-|-plugin$/g,""),O=e=>e.includes(y),v=e=>!!e.errorTracking?.sourcemaps&&!0!==e.errorTracking?.sourcemaps.disableGit&&!0!==e.disableGit,$=e=>{const t=Math.floor(e/1e3/60/60/24),n=new Date(e-24*t*60*60*1e3),s=n.getUTCHours(),o=n.getUTCMinutes(),i=n.getUTCSeconds(),r=n.getUTCMilliseconds(),a=`${t?`${t}d `:""}${s?`${s}h `:""}${o?`${o}m `:""}${i?`${i}s`:""}`.trim();return`${a}${!a||r?` ${r}ms`:""}`.trim()},U=(e,t=60,n="[...]")=>{if(e.length<=t)return e;const s=Math.max(4,t-n.length),o=Math.min(10,Math.floor(s/2)),i=s-o;return`${e.slice(0,o)}${n}${e.slice(-i)}`},C=(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}},N=e=>e.split(" ").map((e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())).join(" ");let M=0;const B=()=>`${Date.now()}.${performance.now()}.${++M}`,A={debug:0,info:1,warn:2,error:3,none:4},L=(e,n="warn")=>s=>{const o=(e=>e.split(">").map(S).join(">"))(s),i=(i,r="debug")=>{let a=t.dim,u=console.log;"error"===r?(a=t.red,u=console.error):"warn"===r?(a=t.yellow,u=console.warn):"info"===r&&(a=t.cyan,u=console.log);const c=`[${e.metadata?.name?`${e.metadata.name}|`:""}${r}|${e.bundler.fullName}|${o}]`,p="string"==typeof i?i:JSON.stringify(i,null,2);e.logs.push({bundler:e.bundler.fullName,pluginName:s,type:r,message:p,time:Date.now()}),"error"===r&&e.errors.push(p),"warn"===r&&e.warnings.push(p),A[r]>=A[n]&&u(`${a(c)} ${p}`)};return{getLogger:t=>L(e,n)(`${o}>${t}`),time:(n,o={})=>{const{level:r="debug",start:a=!0,log:u=!0,tags:c=[]}=o,p={pluginName:s,label:n,spans:[],tags:[...c,`plugin:${s}`,`level:${r}`],logLevel:r,total:0};e.timings.push(p);const l=()=>p.spans.filter((e=>!e.end)),d=e=>{l().length||(!p.spans.length&&u&&i(t.dim(`[${t.cyan(n)}] : start`),"debug"),p.spans.push({start:e||Date.now(),tags:[`plugin:${s}`]}))},m=e=>{const s=l();if(s?.length){s.length>1&&i(`Timer ${t.cyan(n)} has more than one ongoing span.`,"debug");for(const t of s)t.end=e||Date.now()}else i(`Timer ${t.cyan(n)} cannot be paused, no ongoing span.`,"debug")};if(a){let e;"number"==typeof a&&(e=a),d(e)}return{timer:p,resume:d,end:e=>{m(e);const s=p.spans.reduce(((e,t)=>e+(t.end-t.start)),0);p.total=s,u&&i(`[${t.cyan(n)}] : ${t.cyan($(s))}`,r)},pause:m,tag:(e,t={})=>{const{span:n=!1}=t;if(n){const t=l();for(const n of t)n.tags.push(...e)}else p.tags.push(...e)}}},error:e=>i(e,"error"),warn:e=>i(e,"warn"),info:e=>i(e,"info"),debug:e=>i(e,"debug")}},k=["buildEnd","buildStart","load","loadInclude","resolveId","transform","transformInclude","watchChange","writeBundle","cwd","init","buildReport","bundlerReport","git"],P=(e,t,n,s)=>(...o)=>{const i=s.time(`hook | ${e} | ${t}`,{log:!1}),r=n(...o);return r instanceof Promise?r.finally((()=>{i.end()})):(i.end(),r)},j=(e,t,n)=>{const s=e.getLogger(T);return e=>{const o=s.time(`hook | init ${n}`,{log:!1}),i=t(e).map((e=>((e,t)=>{const n={...e},s=S(e.name);for(const o of k){const i=e[o];i&&(n[o]=P(s,o,i,t))}return n})(e,s))),r=i.map((e=>`plugin:${e.name}`));return o.tag(r),o.end(),i}},x="ciVisibility",G="datadog-ci-visibility-plugin",H="appveyor",F="awscodepipeline",z="azurepipelines",K="bitbucket",Y="bitrise",V="buddy",J="buildkite",W="circleci",q="codefresh",X="github",Q="gitlab",Z="jenkins",ee="travisci",te="teamcity",ne="unknown",se=[X,Q,Z,W,F,z,J],oe="ci.pipeline.url",ie="ci.provider.name",re="ci.pipeline.id",ae="ci.pipeline.name",ue="ci.pipeline.number",ce="ci.workspace_path",pe="git.repository_url",le="ci.job.url",de="ci.job.name",me="ci.stage.name",fe="ci.node.name",he="ci.node.labels",ge="_dd.ci.env_vars",Ie="git.branch",_e="git.commit.author.date",Ee="git.commit.author.email",be="git.commit.author.name",ye="git.commit.committer.email",we="git.commit.committer.name",Te="git.commit.message",De="git.commit.sha",Re="git.tag",Se="build.span",Oe=async(e,t,n)=>{const s=[],o=e.initialOptions.entryPoints,i=[],r=[];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 u=i.flatMap((e=>{return(t=e.path,t.includes("*")?a.sync(t):[t]).map((t=>[e,t]));var t})).map((async([n,o])=>{const i=await e.resolve(o,{kind:"entry-point",resolveDir:t.cwd});i.errors.length&&r.push(...i.errors.map((e=>e.text))),i.path&&s.push({name:n.name,resolved:i.path,original:n.path})}));for(const e of r)n.error(e);return await Promise.all(u),s},ve=(e,t)=>O(t)?y:t.startsWith(e)||r.isAbsolute(t)?t:r.resolve(e,t),$e=/\.(?!.*(?:\.|\/|\\))(\w{1,})/g,Ue=/(\?|%3F|\|)+/gi,Ce=e=>{return"unknown"===e?e:e.includes("webpack/runtime")?"runtime":(t=Be(e),$e.lastIndex=0,$e.exec(t)?.[1]||"unknown");var t},Ne=["unknown","commonjsHelpers.js","vite/preload-helper.js"],Me=(e,t,n)=>{const s=new Set;for(const n of e){const e=Be(n);O(n)||e===t||Ne.includes(e)||s.add(e)}return s},Be=e=>e.split("!").pop().split(Ue).shift().replace(/^[^\w\s.,!@#$%^&*()=+~`\-/]+/,""),Ae=(e,t)=>O(t)?y:"unknown"===t?t:t.includes("webpack/runtime")?t.replace("webpack/runtime/","").replace(/ +/g,"-"):t.split("!").pop().replace(ve(e.cwd,e.bundler.outDir),"").replace(e.cwd,"").split("node_modules").pop().split(Ue).shift().replace(/^((\.\.?)?\/)+/,""),Le=(e,t)=>Object.fromEntries(Object.entries(e).map((([e,n])=>[ve(t,e),n]))),ke=(e,t)=>({setup(n){const s=new Map;let o=[];const i=t.time("build report",{start:!1});n.onStart((async()=>{s.clear(),o=[],i.resume();const r=t.time("process entries");o.push(...await Oe(n,e,t));for(const t of o){const n=Ae(e,t.resolved);t.name?s.set(n,t.name):s.set(n,n)}r.end(),i.pause()})),n.onEnd((n=>{i.resume();const o=t.time("collecting errors and warnings"),a=e.cwd;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 u=[],c=[],p=[],l=[],d=[],m={},f={},h=t.time("indexing metafile data"),g=Le(n.metafile.inputs,a),I=Le(n.metafile.outputs,a);h.end();const _=e=>{if(!O(e))return e;const t=g[ve(a,e)];if(!t)return e;const n=t.imports.find((e=>!O(e.path)));return n?n.path:e},E=t.time("looping through inputs");for(const[t,s]of Object.entries(n.metafile.inputs)){if(O(t))continue;const n=ve(a,t),o={name:Ae(e,t),filepath:n,dependents:new Set,dependencies:new Set,size:s.bytes,type:Ce(t)};m[n]=o,u.push(o)}E.end();const b=t.time("looping through outputs");for(const[o,i]of Object.entries(n.metafile.outputs)){const n=ve(a,o),r=Ae(e,n),u=[];for(const e of Object.keys(i.inputs)){if(O(e))continue;const n=m[ve(a,e)];n?u.push(n):t.debug(`Input ${e} not found for output ${r}`)}if(i.entryPoint&&!u.length){const e=m[ve(a,i.entryPoint)];if(!e){t.debug(`Input ${i.entryPoint} not found for output ${r}`);continue}u.push(e)}const d={name:r,filepath:n,inputs:u,size:i.bytes,type:Ce(n)};if(f[n]=d,"map"===d.type&&l.push(d),c.push(d),!i.entryPoint)continue;const h=m[ve(a,_(i.entryPoint))];if(h){if(!s.get(h.name))continue;const e={...d,name:s.get(h.name)||h.name,outputs:[d],size:d.size};p.push(e)}}b.end();const y=t.time("looping through sourcemaps");for(const e of l){const n=f[e.filepath.replace(/\.map$/,"")];n?e.inputs.push(n):t.debug(`Could not find output for sourcemap ${e.name}`)}y.end();const w={inputs:{report:m,meta:g},outputs:{report:f,meta:I}},T=/(<runtime>|https:|file:|data:|#)/g,D=e=>!O(e)&&!e.match(T),R=(n,s,o={})=>{if(!D(n))return o;const i=s.report[n];if(!i)return t.debug(`Could not find report's ${n}`),o;if(o[i.filepath])return o;o[i.filepath]=i;const c=s.meta[n];if(!c)return t.debug(`Could not find metafile's ${n}`),o;if(!c.imports||!c.imports.length)return o;for(const t of c.imports){const c=t.path.match(/^\.\.?\//),p=c?r.dirname(n):a,l=ve(p,t.path);if(t.external){if(D(t.path)){const n=c?l:t.path,s=w.inputs.report[n]||{filepath:n,name:Ae(e,t.path),size:0,type:"external",dependencies:new Set,dependents:new Set};"dependencies"in i&&(s.dependents.add(i),i.dependencies.add(s)),"inputs"in i&&!i.inputs.includes(s)&&i.inputs.push(s),u.includes(s)||u.push(s),w.inputs.report[n]=s,o[s.filepath]=s}}else R(l,s,o)}return o},S=t.time("looping through entries");for(const e of p){const t={},n={};for(const n of e.inputs)R(n.filepath,w.inputs,t);for(const t of e.outputs)R(t.filepath,w.outputs,n);e.inputs=Object.values(t),e.outputs=Object.values(n),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),d.push(e)}S.end();const v=t.time("aggregate dependencies and dependents");for(const e of u){if("external"===e.type)continue;const n=w.inputs.meta[e.filepath];if(n)for(const s of n.imports){if(!D(s.path))continue;const n=s.path.match(/^\.?\.\//),o=n?r.dirname(e.filepath):a,i=ve(o,s.path);let u;if(s.external){const e=n?i:s.path;u=w.inputs.report[e]}else u=w.inputs.report[i];u?(e.dependencies.add(u),u.dependents.add(e)):t.debug(`Could not find input file of ${s.path} imported from ${e.name}`)}else t.debug(`Could not find metafile's ${e.name}`)}v.end(),e.build.outputs=c,e.build.inputs=u,e.build.entries=d,i.end(),e.hook("buildReport",e.build)}))}}),Pe=(e,t)=>{const n=t.time("module parsing",{start:!1});let s={};return{buildStart(){s={}},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=Be(e.id),o=s[t]||{dependencies:new Set,dependents:new Set},i=Me(new Set([...e.dynamicallyImportedIds,...e.importedIds]),t),r=Me(new Set([...e.dynamicImporters,...e.importers]),t);for(const e of r)o.dependents.add(e);for(const e of i)o.dependencies.add(e);s[t]=o,n.tag([`module:${t}`],{span:!0}),n.pause()},writeBundle(n,o){const i=t.time("build report"),r=[],a=[],u=[],c=[],p={},l=[],d={},m={},f=t.time("completing dependencies and dependents");for(const[e,{dependencies:t,dependents:n}]of Object.entries(s)){for(const n of t){const t=Be(n);s[t]||(s[t]={dependencies:new Set,dependents:new Set}),s[t].dependents.has(e)||s[t].dependents.add(e)}for(const t of n){const n=Be(t);s[n]||(s[n]={dependencies:new Set,dependents:new Set}),s[n].dependencies.has(e)||s[n].dependencies.add(e)}}f.end();const h=t.time("filling inputs and outputs");for(const[n,i]of Object.entries(o)){const o={name:n,filepath:ve(e.bundler.outDir,n),inputs:[],size:"code"in i?Buffer.byteLength(i.code,"utf8"):Buffer.byteLength(i.source,"utf8"),type:Ce(n)};if("map"===o.type&&c.push(o),"modules"in i)for(const[t,n]of Object.entries(i.modules)){if(Be(t)!==t)continue;const s={name:Ae(e,t),dependencies:new Set,dependents:new Set,filepath:t,size:n.originalLength,type:Ce(t)};o.inputs.push(s),d[s.filepath]=s,r.push(s)}if("imports"in i)for(const n of i.imports){const i=Be(n);if(!s[i]){p[ve(e.bundler.outDir,i)]=o;continue}if(d[i]){t.debug(`Input report already there for ${i} from ${o.name}.`);continue}const a={name:Ae(e,n),dependencies:new Set,dependents:new Set,filepath:i,size:0,type:"external"};o.inputs.push(a),d[a.filepath]=a,r.push(a)}"isEntry"in i&&i.isEntry&&u.push({...o,name:i.name,size:0,outputs:[o]}),m[o.filepath]=o,a.push(o)}h.end();for(const[e,n]of Object.entries(p)){const s=m[e];s?n.inputs.includes(s)||n.inputs.push(s):t.debug(`Could not find the output report for ${e}.`)}const g=t.time("filling dependencies and dependents");for(const n of r){const o=s[n.filepath];if(o){for(const s of o.dependencies){const o=d[s];o?n.dependencies.add(o):t.debug(`Could not find input for dependency ${Ae(e,s)} of ${n.name}`)}for(const s of o.dependents){const o=d[s];o?n.dependents.add(o):t.debug(`Could not find input for dependent ${Ae(e,s)} of ${n.name}`)}}else t.debug(`Could not find the import report for ${n.name}.`)}if(g.end(),c.length){const e=t.time("filling sourcemaps inputs");for(const e of c){const n=e.filepath.replace(/\.map$/,""),s=m[n];s?e.inputs.push(s):t.debug(`Could not find output for sourcemap ${e.name}`)}e.end()}const I=(n,s={})=>{if(s[n])return s;const i=Ae(e,n),r=m[n];if(!r){return!!d[i]||t.debug(`Could not find output for ${i}`),s}s[n]=r;const a=o[Ae(e,n)];if(!a)return t.debug(`Could not find asset for ${i}`),s;const u=[];"imports"in a&&u.push(...a.imports),"dynamicImports"in a&&u.push(...a.dynamicImports);for(const t of u)I(ve(e.bundler.outDir,t),s);return s},_=t.time("filling entries");for(const e of u){const t=I(e.filepath);e.outputs=Object.values(t),e.inputs=Array.from(new Set(e.outputs.flatMap((e=>e.inputs)))),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),l.push(e)}_.end(),e.build.inputs=r,e.build.outputs=a,e.build.entries=l,i.end(),e.hook("buildReport",e.build)}}},je=(e,t,n)=>s=>{let o=[],i=[],r=[];const a=new Map,u=new Map,c=new Map,p=new Map,l=[],d=new Map,m=n.time("build report",{start:!1}),f=e=>!(!e||e.startsWith("webpack/runtime")||e.includes("/webpack4/buildin/")||e.startsWith("multi ")||O(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"],s=e=>{const n=Be(e);t.add(n),n.startsWith("external ")&&t.add(h(n))};s(e.identifier());for(const t of n){const n=e[t];t&&t in e&&"string"==typeof n&&s(n)}return t})(e);for(const e of n)if(p.has(e)){const n=p.get(e);n.dependencies.push(...t.dependencies||[]),n.blocks.push(...t.blocks||[])}else p.set(e,t)},I=(e,t=[])=>{if("dependencies"in e)for(const n of e.dependencies)t.push(n),I(n,t);if("blocks"in e)for(const n of e.blocks)I(n,t);return t},_=(e,t)=>{if("request"in t&&t.request){const n=Be(t.request);if(p.has(n))return p.get(n);if(e.context){const t=ve(Be(e.context),n);if(p.has(t))return p.get(t)}}},E=e=>!(!("externalType"in e)||!e.externalType)||(!(!("external"in e)||!e.external)||!!e.identifier?.().startsWith("external "));s.hooks.thisCompilation.tap(t,(s=>{o=[],i=[],r=[],a.clear(),u.clear(),p.clear(),d.clear(),s.hooks.finishModules.tap(t,(t=>{m.resume();const s=n.time("dependency graph"),i=n.time("indexing modules");for(const e of t)g(e);i.end();const r=n.time("building inputs");for(const n of t){const t=n.identifier(),s=Ae(e,t),i=new Set(I(n).map((e=>{const s=_(n,e);if(!s?.identifier())return!1;const o=s.identifier();return!!f(o)&&(o!==t&&(E(s)?h(o):o))})).filter(Boolean));if(!f(t))continue;const r=d.get(t)||{dependents:new Set,dependencies:new Set};for(const e of i){const n=d.get(e)||{dependencies:new Set,dependents:new Set};n.dependents.add(t),r.dependencies.add(e),d.set(e,n)}d.set(t,r);const u=E(n)?{size:0,name:h(s),dependencies:new Set,dependents:new Set,filepath:t,type:"external"}:{size:n.size()||0,name:s,dependencies:new Set,dependents:new Set,filepath:t,type:Ce(t)};o.push(u),a.set(t,u),E(n)&&a.set(h(t),u)}r.end();const u=n.time("assigning dependencies and dependents");for(const e of o){const t=d.get(e.filepath);if(t){for(const s of t.dependencies){const t=a.get(s);t?e.dependencies.add(t):n.debug(`Could not find input of dependency ${s}`)}for(const s of t.dependents){const t=a.get(s);t?e.dependents.add(t):n.debug(`Could not find input of dependent ${s}`)}}else n.debug(`Could not find dependency report for ${e.name}`)}u.end(),s.end(),m.pause()}))})),s.hooks.afterEmit.tap(t,(t=>{m.resume();const s=t.chunks,p=t.getAssets(),d=t=>[...t.files||[],...t.auxiliaryFiles||[]].map((t=>ve(e.bundler.outDir,t))),h=n.time("indexing chunks"),g=t.chunkGraph;for(const e of s){const t=d(e),n=(g?g?.getChunkModules(e):"getModules"in e&&"function"==typeof e.getModules?e.getModules():[]).flatMap((e=>"modules"in e&&Array.isArray(e.modules)?e.modules.map((e=>e.identifier())):e.identifier())).filter(f);for(const e of t){if("map"===Ce(e))continue;const t=c.get(e)||new Set;for(const e of n)t.add(e);c.set(e,t)}}h.end();const I=n.time("building outputs");for(const t of p){const s={size:t.source.size()||0,name:t.name,inputs:[],filepath:ve(e.bundler.outDir,t.name),type:Ce(t.name)};if(u.set(s.filepath,s),i.push(s),"map"===s.type){l.push(s);continue}const o=c.get(s.filepath);if(o)for(const e of o){const t=a.get(e);t?s.inputs.push(t):n.debug(`Could not find input of ${e}`)}else n.debug(`Could not find modules for ${s.name}`)}I.end();const _=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}`)}_.end();const E=n.time("building entries");for(const[s,o]of t.entrypoints){const t=new Map,i=new Map;let a=0;const c=o.chunks.flatMap(d),p=o.chunks.filter((e=>g?g.getChunkEntryModulesIterable(e):"hasEntryModule"in e&&"function"==typeof e.hasEntryModule&&e.hasEntryModule())).flatMap((e=>Array.from(e.files))).filter((e=>e.includes(s)||o.name&&e.includes(o.name))).find((e=>"js"===Ce(e)));for(const e of c){const s=u.get(e);if(e&&s){if("map"!==s.type&&!t.has(s.name)){t.set(s.name,s);for(const e of s.inputs)i.has(e.filepath)||i.set(e.filepath,e);a+=s.size}}else n.debug(`Could not find output of ${JSON.stringify(e)}`)}const l={name:s,filepath:p?ve(e.bundler.outDir,p):"unknown",size:a,inputs:Array.from(i.values()),outputs:Array.from(t.values()),type:p?Ce(p):"unknown"};r.push(l)}E.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=r,m.end(),e.hook("buildReport",e.build)}))},xe="datadog-build-report-plugin",Ge=e=>{const{context:t}=e,n=t.getLogger(xe);return[{name:xe,enforce:"post",esbuild:ke(t,n),rspack:je(t,xe,n),webpack:je(t,xe,n),vite:Pe(t,n),rollup:Pe(t,n)}]},He="datadog-ci-visibility-build-spans-plugin",Fe=(e,t)=>{const n=e.getLogger(He),s=n.time("Build report",{start:!1}),o=n.time("Git",{start:!1}),i=n.time("Hold",{start:e.start}),r=n.time("Total time",{start:e.start}),a=n.time("Datadog plugins initialization",{start:e.start}),u=n.time("Build",{start:!1}),c=n.time("Write",{start:!1}),p=n.time("Load",{start:!1}),l=n.time("Transform",{start:!1});let d=e.start,m=e.start;return{name:He,enforce:"pre",init(){a.end()},buildStart(){i.end(),u.resume(),v(t)&&o.resume()},git(){o.end()},loadInclude:()=>!0,load:()=>(p.resume(),null),transformInclude:()=>!0,transform:()=>(l.resume(),d=Date.now(),null),buildEnd(){p.end(),l.end(),u.end(),c.resume()},writeBundle(){m=Date.now()},buildReport(){for(const t of e.build.timings)if(t.pluginName===xe&&"build report"===t.label)for(const e of t.spans){const t=e.end||Date.now();s.resume(e.start),s.pause(t)}},asyncTrueEnd(){"esbuild"===e.bundler.fullName&&(c.timer.spans.length||c.resume(d))},syncTrueEnd(){c.end(m),r.end()}}},ze=()=>{if(process.env.GITHUB_EVENT_PATH)return(e=>{const t=o.readFileSync(e,{encoding:"utf-8"});return JSON.parse(t)})(process.env.GITHUB_EVENT_PATH)},Ke=e=>e?e.replace(/origin\/|refs\/heads\/|tags\//gm,""):e,Ye=()=>{const e=process.env;let t={};if(e.DRONE){const{DRONE_BUILD_NUMBER:n,DRONE_BUILD_LINK:s,DRONE_STEP_NAME:o,DRONE_STAGE_NAME:i,DRONE_WORKSPACE:r,DRONE_GIT_HTTP_URL:a,DRONE_COMMIT_SHA:u,DRONE_BRANCH:c,DRONE_TAG:p,DRONE_COMMIT_AUTHOR_NAME:l,DRONE_COMMIT_AUTHOR_EMAIL:d,DRONE_COMMIT_MESSAGE:m}=e;t={[ie]:"drone",[ue]:n,[oe]:s,[de]:o,[me]:i,[ce]:r,[pe]:a,[De]:u,[Ie]:c,[Re]:p,[be]:l,[Ee]:d,[Te]:m}}if(e.CIRCLECI){const{CIRCLE_BUILD_NUM:n,CIRCLE_WORKFLOW_ID:s,CIRCLE_PROJECT_REPONAME:o,CIRCLE_BUILD_URL:i,CIRCLE_WORKING_DIRECTORY:r,CIRCLE_BRANCH:a,CIRCLE_TAG:u,CIRCLE_SHA1:c,CIRCLE_REPOSITORY_URL:p,CIRCLE_JOB:l}=e,d=`https://app.circleci.com/pipelines/workflows/${s}`;t={[le]:i,[re]:s,[ae]:o,[oe]:d,[de]:l,[ie]:W,[ce]:r,[De]:c,[pe]:p,[Re]:u,[Ie]:a,[ge]:JSON.stringify({CIRCLE_WORKFLOW_ID:s,CIRCLE_BUILD_NUM:n})}}if(e.TRAVIS){const{TRAVIS_PULL_REQUEST_BRANCH:n,TRAVIS_BRANCH:s,TRAVIS_COMMIT:o,TRAVIS_REPO_SLUG:i,TRAVIS_TAG:r,TRAVIS_JOB_WEB_URL:a,TRAVIS_BUILD_ID:u,TRAVIS_BUILD_NUMBER:c,TRAVIS_BUILD_WEB_URL:p,TRAVIS_BUILD_DIR:l,TRAVIS_COMMIT_MESSAGE:d}=e;t={[le]:a,[re]:u,[ae]:i,[ue]:c,[oe]:p,[ie]:ee,[ce]:l,[De]:o,[Re]:r,[Ie]:n||s,[pe]:`https://github.com/${i}.git`,[Te]:d}}if(e.GITLAB_CI){const{CI_PIPELINE_ID:n,CI_PROJECT_PATH:s,CI_PIPELINE_IID:o,CI_PIPELINE_URL:i,CI_PROJECT_DIR:r,CI_COMMIT_REF_NAME:a,CI_COMMIT_TAG:u,CI_COMMIT_SHA:c,CI_REPOSITORY_URL:p,CI_JOB_URL:l,CI_JOB_STAGE:d,CI_JOB_NAME:m,CI_COMMIT_MESSAGE:f,CI_COMMIT_TIMESTAMP:h,CI_COMMIT_AUTHOR:g,CI_JOB_ID:I,CI_PROJECT_URL:_,CI_RUNNER_ID:E,CI_RUNNER_TAGS:b}=e,{name:y,email:w}=(e=>{if(!e)return{name:"",email:""};let t="",n="";const s=e.match(/(?:"?([^"]*)"?\s)?(?:<?(.+@[^>]+)>?)/);return s&&(t=s[1],n=s[2]),{name:t,email:n}})(g);t={[de]:m,[le]:l,[re]:n,[ae]:s,[ue]:o,[oe]:i,[ie]:Q,[ce]:r,[me]:d,[Ie]:a,[De]:c,[pe]:p,[Re]:u,[Te]:f,[be]:y,[Ee]:w,[_e]:h,[ge]:JSON.stringify({CI_PROJECT_URL:_,CI_PIPELINE_ID:n,CI_JOB_ID:I}),[he]:b,[fe]:E}}if(e.GITHUB_ACTIONS||e.GITHUB_ACTION){const{GITHUB_RUN_ID:n,GITHUB_WORKFLOW:s,GITHUB_RUN_NUMBER:o,GITHUB_WORKSPACE:i,GITHUB_HEAD_REF:r,GITHUB_JOB:a,GITHUB_REF:u,GITHUB_SHA:c,GITHUB_REPOSITORY:p,GITHUB_SERVER_URL:l,GITHUB_RUN_ATTEMPT:d,DD_GITHUB_JOB_NAME:m,GITHUB_BASE_REF:f}=e,h=`${l}/${p}.git`;let g=`${l}/${p}/actions/runs/${n}`;if(d&&(g+=`/attempts/${d}`),t={[de]:a,[le]:C(`${l}/${p}/commit/${c}/checks`),[re]:n,[ae]:s,[ue]:o,[oe]:C(g),[ie]:X,[ce]:i,[De]:c,[pe]:h,[Ie]:r||u||"",[ge]:JSON.stringify({GITHUB_SERVER_URL:C(l),GITHUB_REPOSITORY:p,GITHUB_RUN_ID:n,GITHUB_RUN_ATTEMPT:d,DD_GITHUB_JOB_NAME:m})},f){t["git.commit.base_ref"]=f,t["git.pull_request.base_branch"]=f;try{const e=ze();t["git.commit.head_sha"]=e?.pull_request?.head?.sha,t["git.pull_request.base_branch_sha"]=e?.pull_request?.base?.sha}catch(e){}}}if(e.JENKINS_URL){const{WORKSPACE:n,BUILD_TAG:s,JOB_NAME:o,BUILD_NUMBER:i,BUILD_URL:r,GIT_BRANCH:a,GIT_COMMIT:u,GIT_URL:c,GIT_URL_1:p,DD_CUSTOM_TRACE_ID:l,DD_CUSTOM_PARENT_ID:d,NODE_NAME:m,NODE_LABELS:f}=e;if(t={[re]:s,[ue]:i,[oe]:r,[ie]:Z,[ce]:n,[De]:u,[pe]:c||p,[Ie]:a,[fe]:m,[ge]:JSON.stringify({DD_CUSTOM_TRACE_ID:l,DD_CUSTOM_PARENT_ID:d})},f){let e;try{e=JSON.stringify(f.split(" ")),t[he]=e}catch(e){}}let h="";if(o){const e=o.split("/");if(e.length>1&&e[1].includes("="))h=e[0];else{const e=Ke(a);h=o.replace(`/${e}`,"")}t[ae]=h}}if(e.BUILDKITE){const{BUILDKITE_AGENT_ID:n,BUILDKITE_BRANCH:s,BUILDKITE_COMMIT:o,BUILDKITE_REPO:i,BUILDKITE_TAG:r,BUILDKITE_BUILD_ID:a,BUILDKITE_PIPELINE_SLUG:u,BUILDKITE_BUILD_NUMBER:c,BUILDKITE_BUILD_URL:p,BUILDKITE_JOB_ID:l,BUILDKITE_BUILD_CHECKOUT_PATH:d,BUILDKITE_BUILD_AUTHOR:m,BUILDKITE_BUILD_AUTHOR_EMAIL:f,BUILDKITE_MESSAGE:h}=e,g=Object.keys(e).filter((e=>e.startsWith("BUILDKITE_AGENT_META_DATA_"))).map((t=>`${t.replace("BUILDKITE_AGENT_META_DATA_","").toLowerCase()}:${e[t]}`));t={[fe]:n,[ie]:J,[re]:a,[ae]:u,[ue]:c,[oe]:p,[le]:`${p}#${l}`,[De]:o,[ce]:d,[pe]:i,[Re]:r,[Ie]:s,[be]:m,[Ee]:f,[Te]:h,[ge]:JSON.stringify({BUILDKITE_BUILD_ID:a,BUILDKITE_JOB_ID:l})},g.length&&(t[he]=JSON.stringify(g))}if(e.BITRISE_BUILD_SLUG){const{BITRISE_GIT_COMMIT:n,GIT_CLONE_COMMIT_HASH:s,BITRISEIO_GIT_BRANCH_DEST:o,BITRISE_GIT_BRANCH:i,BITRISE_BUILD_SLUG:r,BITRISE_TRIGGERED_WORKFLOW_ID:a,BITRISE_BUILD_NUMBER:u,BITRISE_BUILD_URL:c,BITRISE_SOURCE_DIR:p,GIT_REPOSITORY_URL:l,BITRISE_GIT_TAG:d,BITRISE_GIT_MESSAGE:m}=e;t={[ie]:Y,[re]:r,[ae]:a,[ue]:u,[oe]:c,[De]:n||s,[pe]:l,[ce]:p,[Re]:d,[Ie]:o||i,[Te]:m}}if(e.BITBUCKET_COMMIT){const{BITBUCKET_REPO_FULL_NAME:n,BITBUCKET_BUILD_NUMBER:s,BITBUCKET_BRANCH:o,BITBUCKET_COMMIT:i,BITBUCKET_GIT_SSH_ORIGIN:r,BITBUCKET_GIT_HTTP_ORIGIN:a,BITBUCKET_TAG:u,BITBUCKET_PIPELINE_UUID:c,BITBUCKET_CLONE_DIR:p}=e,l=`https://bitbucket.org/${n}/addon/pipelines/home#!/results/${s}`;t={[ie]:K,[De]:i,[ue]:s,[ae]:n,[le]:l,[oe]:l,[Ie]:o,[Re]:u,[pe]:r||a,[ce]:p,[re]:c&&c.replace(/{|}/gm,"")}}if(e.CF_BUILD_ID){const{CF_BUILD_ID:n,CF_PIPELINE_NAME:s,CF_BUILD_URL:o,CF_STEP_NAME:i,CF_BRANCH:r}=e;t={[ie]:q,[re]:n,[oe]:o,[ae]:s,[de]:i,[Ie]:r,[ge]:JSON.stringify({CF_BUILD_ID:n})}}if(e.TEAMCITY_VERSION){const{BUILD_URL:n,TEAMCITY_BUILDCONF_NAME:s}=e;t={[ie]:te,[le]:n,[de]:s}}if(e.TF_BUILD){const{BUILD_SOURCESDIRECTORY:n,BUILD_BUILDID:s,BUILD_DEFINITIONNAME:o,SYSTEM_TEAMFOUNDATIONSERVERURI:i,SYSTEM_TEAMPROJECTID:r,SYSTEM_JOBID:a,SYSTEM_TASKINSTANCEID:u,SYSTEM_PULLREQUEST_SOURCEBRANCH:c,BUILD_SOURCEBRANCH:p,BUILD_SOURCEBRANCHNAME:l,SYSTEM_PULLREQUEST_SOURCECOMMITID:d,SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI:m,BUILD_REPOSITORY_URI:f,BUILD_SOURCEVERSION:h,BUILD_REQUESTEDFORID:g,BUILD_REQUESTEDFOREMAIL:I,BUILD_SOURCEVERSIONMESSAGE:_,SYSTEM_STAGEDISPLAYNAME:E,SYSTEM_JOBDISPLAYNAME:b}=e;if(t={[ie]:z,[re]:s,[ae]:o,[ue]:s,[De]:d||h,[ce]:n,[pe]:m||f,[Ie]:c||p||l,[be]:g,[Ee]:I,[Te]:_,[me]:E,[de]:b,[ge]:JSON.stringify({SYSTEM_TEAMPROJECTID:r,BUILD_BUILDID:s,SYSTEM_JOBID:a})},i&&r&&s){const e=`${i}${r}/_build/results?buildId=${s}`,n=e,o=`${e}&view=logs&j=${a}&t=${u}`;t={...t,[oe]:n,[le]:o}}}if(e.APPVEYOR){const{APPVEYOR_REPO_NAME:n,APPVEYOR_REPO_PROVIDER:s,APPVEYOR_BUILD_FOLDER:o,APPVEYOR_BUILD_ID:i,APPVEYOR_BUILD_NUMBER:r,APPVEYOR_REPO_COMMIT:a,APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH:u,APPVEYOR_REPO_BRANCH:c,APPVEYOR_REPO_TAG_NAME:p,APPVEYOR_REPO_COMMIT_AUTHOR:l,APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL:d,APPVEYOR_REPO_COMMIT_MESSAGE:m,APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED:f}=e,h=`https://ci.appveyor.com/project/${n}/builds/${i}`;t={[ie]:H,[oe]:h,[re]:i,[ae]:n,[ue]:r,[le]:h,[ce]:o,[be]:l,[Ee]:d,[Te]:`${m||""}\n${f||""}`},"github"===s&&(t={...t,[pe]:`https://github.com/${n}.git`,[De]:a,[Re]:p,[Ie]:u||c})}if(e.BUDDY){const{BUDDY_PIPELINE_NAME:n,BUDDY_PIPELINE_ID:s,BUDDY_EXECUTION_ID:o,BUDDY_SCM_URL:i,BUDDY_EXECUTION_BRANCH:r,BUDDY_EXECUTION_TAG:a,BUDDY_EXECUTION_REVISION:u,BUDDY_EXECUTION_URL:c,BUDDY_EXECUTION_REVISION_MESSAGE:p,BUDDY_EXECUTION_REVISION_COMMITTER_NAME:l,BUDDY_EXECUTION_REVISION_COMMITTER_EMAIL:d}=e;t={[ie]:V,[re]:`${s||""}/${o||""}`,[ae]:n,[ue]:`${o||""}`,[oe]:c,[De]:u,[Ie]:r,[Re]:a,[pe]:i,[Te]:p,[ye]:d,[we]:l}}if(e.CF_BUILD_ID){const{CF_BUILD_ID:n,CF_PIPELINE_NAME:s,CF_BUILD_URL:o,CF_STEP_NAME:i,CF_BRANCH:r}=e;t={[ie]:"codefresh",[re]:n,[ae]:s,[oe]:o,[de]:i,[ge]:JSON.stringify({CF_BUILD_ID:n})};const a=r&&r.includes("tags/")?Re:Ie,u=Ke(r);t[a]=u}if(e.CODEBUILD_INITIATOR?.startsWith("codepipeline")){const{CODEBUILD_BUILD_ARN:n,DD_ACTION_EXECUTION_ID:s,DD_PIPELINE_EXECUTION_ID:o}=e;t={[ie]:F,[re]:o,[ge]:JSON.stringify({CODEBUILD_BUILD_ARN:n,DD_PIPELINE_EXECUTION_ID:o,DD_ACTION_EXECUTION_ID:s})}}var n;if(t[ce]&&(t[ce]=(n=t[ce])&&"string"==typeof n?"~"!==n[0]||"/"!==n[1]&&1!==n.length?n:n.replace("~",process.env.HOME??""):""),t[pe]&&(t[pe]=C(t[pe])),t[Re]&&(t[Re]=Ke(t[Re])),t[Ie]){const e=t[Ie]||"";e.startsWith("tags/")||e.includes("/tags/")?(t[Re]||(t[Re]=Ke(e)),t[Ie]=""):t[Ie]=Ke(e)}return(e=>Object.fromEntries(Object.entries(e).filter((([e,t])=>null!=t&&""!==t))))(t)},Ve=(e,t)=>{const n=(e=>e.build.metadata?.name?`"${e.build.metadata.name}"`:'"unknown build"')(t),s=`Build of ${n} with ${N(t.bundler.fullName)}`,o=[];for(const e of t.build.timings)if(e.pluginName===He)for(const t of e.spans){const i=t.end||Date.now();o.push({command:`${s} | ${e.pluginName} | ${N(e.label)}`,name:`${N(e.label)}`,start_time:new Date(t.start).toISOString(),end_time:new Date(i).toISOString(),tags:[`buildName:${n}`,...e.tags,...t.tags]})}return o.map((t=>((e,t)=>({ci_provider:e,span_id:u.randomBytes(5).toString("hex"),error_message:"",exit_code:0,measures:{},...t}))(e,t)))},Je=[400,403,413],We=e=>{const{auth:t,url:n,method:s="GET",getData:o,type:i="text"}=e,r={retries:0===e.retries?0:e.retries||5,onRetry:e.onRetry,maxTimeout:e.maxTimeout,minTimeout:e.minTimeout};return c((async(e,r)=>{let a;try{const e={method:s,duplex:"half"};let i={};if(t?.apiKey&&(i["DD-API-KEY"]=t.apiKey),t?.appKey&&(i["DD-APPLICATION-KEY"]=t.appKey),"function"==typeof o){const{data:t,headers:n}=await o();e.body=t,i={...i,...n}}a=await fetch(n,{...e,headers:i})}catch(t){return e(t),{}}if(!a.ok){const t=`HTTP ${a.status} ${a.statusText}`;if(Je.includes(a.status))return e(new Error(t)),{};throw new Error(t)}try{let e;return e="json"===i?await a.json():await a.text(),e}catch(t){return e(t),{}}}),r)},qe=(e,t)=>{const n={},s={};for(const[t,n]of Object.entries(e))n&&(s[t]=new Set(n.split(/ *, */g)));for(const e of t){const[t,...n]=e.split(/ *: */g),o=t.startsWith(Se)||s[t]?t:`${Se}.${t}`,i=n.join(":");s[o]?.has(i)||(s[o]||(s[o]=new Set),s[o].add(i))}for(const[e,t]of Object.entries(s)){const s=Array.from(t).join(",");s&&(n[e]=s)}return n},Xe=t.green.bold,Qe=t.yellow.bold,Ze=({options:e,context:t})=>{const n=t.getLogger(G),s=(e=>({disabled:!e[x],...e[x]}))(e);if(s.disabled)return[];const o=Ye();return o["build.plugin.version"]=t.version,o["build.plugin.env"]=t.env,[Fe(t,e),{name:G,enforce:"post",git:e=>{o[pe]=e.remote,o[Ie]=e.branch,o[De]=e.commit.hash,o[Te]=e.commit.message,o[be]=e.commit.author.name,o[Ee]=e.commit.author.email,o[_e]=e.commit.author.date,o[we]=e.commit.committer.name,o[ye]=e.commit.committer.email,o["git.commit.committer.date"]=e.commit.committer.date},bundlerReport:e=>{o["build.bundler.name"]=e.name,o["build.bundler.version"]=e.version},async asyncTrueEnd(){if(!e.auth?.apiKey)return void n.info("No auth options, skipping.");const s=process.env.CIRCLECI?W:process.env.GITLAB_CI?Q:process.env.GITHUB_ACTIONS||process.env.GITHUB_ACTION?X:process.env.BUILDKITE?J:process.env.BUDDY?V:process.env.TEAMCITY_VERSION?te:process.env.JENKINS_URL?Z:process.env.TF_BUILD?z:process.env.CF_BUILD_ID?q:process.env.APPVEYOR?H:process.env.BITBUCKET_COMMIT?K:process.env.BITRISE_BUILD_SLUG?Y:process.env.CODEBUILD_INITIATOR?.startsWith("codepipeline")?F:ne;if(!se.includes(s))return void n.info(`"${s}" is not a supported provider, skipping spans submission`);const i=Ve(s,t);try{const{errors:t,warnings:s}=await(async(e,t,n,s)=>{const o=[],i=[];if(!e.apiKey)return o.push("No authentication token provided."),{errors:o,warnings:i};if(0===t.length)return i.push("No spans to submit."),{errors:o,warnings:i};const r=new(p.default?p.default:p)({concurrency:20}),a=[];s.debug(`Submitting ${Xe(t.length.toString())} span${t.length<=1?"":"s"}.`);for(const u of t){s.debug(`Queuing span ${Xe(u.name)}.`);const t={...u,tags:qe(n,u.tags)};a.push(r.add((async()=>{try{await We({url:"https://app.datadoghq.com/api/intake/ci/custom_spans",auth:{apiKey:e.apiKey},method:"POST",getData:()=>{const e={data:{type:"ci_app_custom_span",attributes:t}};return{data:JSON.stringify(e),headers:{"Content-Type":"application/json"}}},onRetry:(e,t)=>{const n=`Failed to submit span ${Qe(u.name)}:\n ${e.message}\nRetrying ${t}/5`;i.push(n)}}),s.debug(`Submitted span ${Xe(u.name)}.`)}catch(e){o.push(`Failed to submit span ${Qe(u.name)}:\n ${e.message}`)}})))}return await Promise.all(a),await r.onIdle(),{warnings:i,errors:o}})(e.auth,i,o,n);s.length>0&&n.warn(`Warnings while submitting spans:\n - ${s.join("\n - ")}`),t.length&&n.warn(`Error submitting some spans:\n - ${t.join("\n - ")}`)}catch(e){n.warn(`Error submitting spans: ${e}`)}}}]},et="errorTracking",tt="datadog-error-tracking-plugin",nt=(e,n,s)=>{if(".map"!==r.extname(s))throw new Error(`The file ${t.green.bold(s)} is not a sourcemap.`);const o=s.replace(/\.map$/,""),i=o.replace(n.bundler.outDir,"");return{minifiedFilePath:o,minifiedUrl:e.minifiedPathPrefix?r.join(e.minifiedPathPrefix,i):i,relativePath:i}},st=/[/]+|[\\]+/g,ot=/^[/]+|^[\\]+|[/]+$|[\\]+$/g,it=(e,t)=>{const n=e.replace(ot,"").split(st),s=t.replace(ot,"").split(st),o=n.join("/");let i="";for(let e=0;e<s.length;e+=1){const t=s.slice(-e).join("/");o.startsWith(t)&&(i=t)}return i},rt=async e=>{const t={empty:!1,exists:!0};try{0===(await i.stat(e)).size&&(t.empty=!0)}catch(e){if("ENOENT"!==e.code)throw e;t.exists=!1}return t},at=async(e,t,n,s)=>{const o=await(async(e,t)=>{const[n,s]=await Promise.all([rt(e.minifiedFilePath),rt(e.sourcemapFilePath)]);return{file:n,sourcemap:s,repeatedPrefix:it(e.relativePath,t)}})(e,n),i=[],a=[],u=new Map([["event",{type:"string",options:{contentType:"application/json",filename:"event"},value:JSON.stringify({...t,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(s)try{u.set("repository",{type:"string",options:{contentType:"application/json",filename:"repository"},value:JSON.stringify({data:[{files:s.trackedFilesMatcher.matchSourcemap(e.sourcemapFilePath,(t=>{a.push(`${r.basename(e.sourcemapFilePath)}: "${t}"`)})),hash:s.commit.hash,repository_url:s.remote}],version:1})})}catch(t){a.push(`Could not attach git data for sourcemap ${e.sourcemapFilePath}: ${t.message}`)}return o.file.empty&&i.push(`Minified file is empty: ${e.minifiedFilePath}`),o.file.exists||i.push(`Minified file not found: ${e.minifiedFilePath}`),o.sourcemap.empty&&i.push(`Sourcemap file is empty: ${e.sourcemapFilePath}`),o.sourcemap.exists||i.push(`Sourcemap file not found: ${e.sourcemapFilePath}`),o.repeatedPrefix&&a.push(`The minified file path contains a repeated pattern with the minified path prefix: ${o.repeatedPrefix}`),{content:u,errors:i,warnings:a}},ut=t.green.bold,ct=t.yellow.bold,pt=t.red.bold,lt=async(e,t)=>{if("function"==typeof o.openAsBlob){const n=await o.openAsBlob(e,{type:t.contentType});return new d([n],t.filename)}{const n=m.toWeb(o.createReadStream(e)),s=await new Response(n).blob();return new d([s],t.filename,{type:t.contentType})}},dt=(e,t={})=>async()=>{const n=new FormData,s=f();for(const[t,s]of e.content){const e="file"===s.type?await lt(s.path,s.options):new Blob([s.value],{type:s.options.contentType});n.append(t,e,s.options.filename)}const o=new Request("fake://url",{method:"POST",body:n});return{data:m.fromWeb(o.body).pipe(s),headers:{"Content-Encoding":"gzip",...t,...Object.fromEntries(o.headers.entries())}}},mt=async(e,t,n,s)=>{const o=Date.now(),i=t.minifiedPathPrefix,r={git_repository_url:n.git?.remote,git_commit_sha:n.git?.commit?.hash,plugin_version:n.version,project_path:n.bundler.outDir,service:t.service,type:"js_sourcemap",version:t.releaseVersion},a=await Promise.all(e.map((e=>at(e,r,i,n.git)))),u=a.map((e=>e.errors)).flat(),c=a.map((e=>e.warnings)).flat();if(c.length>0&&s.warn(`Warnings while preparing payloads:\n - ${c.join("\n - ")}`),u.length>0){const e=`Failed to prepare payloads, aborting upload :\n - ${u.join("\n - ")}`;if(s.error(e),!0===t.bailOnError)throw new Error(e);return}const{errors:l,warnings:d}=await(async(e,t,n,s)=>{const o=[],i=[];if(!n.auth?.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 r=new(p.default?p.default:p)({concurrency:t.maxConcurrency}),a={"DD-EVP-ORIGIN":`${n.bundler.fullName}-build-plugin_sourcemaps`,"DD-EVP-ORIGIN-VERSION":n.version},u=[];for(const c of e){const e={sourcemap:c.content.get("source_map")?.path.replace(n.bundler.outDir,"."),file:c.content.get("minified_file")?.path.replace(n.bundler.outDir,".")};s.debug(`Queuing ${ut(e.sourcemap)} | ${ut(e.file)}`),u.push(r.add((async()=>{try{await We({auth:{apiKey:n.auth.apiKey},url:t.intakeUrl,method:"POST",getData:dt(c,a),onRetry:(t,n)=>{const o=`Failed to upload ${ct(e.sourcemap)} | ${ct(e.file)}:\n ${t.message}\nRetrying ${n}/5`;i.push(o),s.debug(o)}}),s.debug(`Sent ${ut(e.sourcemap)} | ${ut(e.file)}`)}catch(n){if(o.push({metadata:e,error:n}),!0===t.bailOnError)throw n}})))}return await Promise.all(u),await r.onIdle(),{warnings:i,errors:o}})(a,t,n,s);if(s.info(`Done uploading ${ut(e.length.toString())} sourcemaps in ${ut($(Date.now()-o))}.`),l.length>0){const e=`Failed to upload some sourcemaps:\n${` - ${l.map((({metadata:e,error:t})=>e?`${pt(e.file)} | ${pt(e.sourcemap)} : ${t.message}`:t.message)).join("\n - ")}`}`;if(s.error(e),!0===t.bailOnError)throw new Error(e)}d.length>0&&s.warn(`Warnings while uploading sourcemaps:\n - ${d.join("\n - ")}`)},ft=async(e,n,s)=>{const o=t.green.bold,i=Object.entries(e.sourcemaps).map((([e,t])=>` - ${e}: ${o(t.toString())}`)).join("\n"),r=s.time("get sourcemaps files"),a=((e,t)=>{if(!t.build.outputs||0===t.build.outputs.length)throw new Error("No output files found.");return t.build.outputs.filter((e=>e.filepath.endsWith(".map"))).map((e=>e.filepath)).map((n=>({...nt(e,t,n),sourcemapFilePath:n,minifiedPathPrefix:e.minifiedPathPrefix})))})(e.sourcemaps,n);r.end();const u=l`
10
+ Uploading ${o(a.length.toString())} sourcemaps with configuration:
11
11
  ${i}
12
- `;s.info(p);const c=s.time("send sourcemaps");await X(u,e.sourcemaps,n,s),c.end()},ee=`https://sourcemap-intake.${process.env.DATADOG_SITE||"datadoghq.com"}/api/v2/srcmap`,te=e=>{const n=t.bold.red,s=e[C]||{},o={errors:[]};if(s.sourcemaps){s.sourcemaps.releaseVersion||o.errors.push(`${n("sourcemaps.releaseVersion")} is required.`),s.sourcemaps.service||o.errors.push(`${n("sourcemaps.service")} is required.`),s.sourcemaps.minifiedPathPrefix||o.errors.push(`${n("sourcemaps.minifiedPathPrefix")} is required.`),s.sourcemaps.minifiedPathPrefix&&((e=>{let t;try{t=new URL(e).host}catch{}return!(!t&&!e.startsWith("/"))})(s.sourcemaps.minifiedPathPrefix)||o.errors.push(`${n("sourcemaps.minifiedPathPrefix")} must be a valid URL or start with '/'.`));const e={bailOnError:!1,disableGit:!1,dryRun:!1,maxConcurrency:20,intakeUrl:process.env.DATADOG_SOURCEMAP_INTAKE_URL||s.sourcemaps.intakeUrl||ee,...s.sourcemaps};o.config=e}return o},ne=({options:e,context:t})=>{const n=t.getLogger(F),s=n.time("validate options"),o=((e,t)=>{const n=[],s=te(e);if(n.push(...s.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${F}.`);const o={disabled:!e[C],...e[C],sourcemaps:void 0};return s.config&&(o.sourcemaps=s.config),o})(e,n);return s.end(),o.disabled?[]:[{name:F,enforce:"post",async writeBundle(){if(!o.disabled&&o.sourcemaps){const e=n.time("sourcemaps process");await Z(o,t,n),e.end()}}}]};var se=(e=>(e[e.BEFORE=0]="BEFORE",e[e.MIDDLE=1]="MIDDLE",e[e.AFTER=2]="AFTER",e))(se||{});const oe="rum",ie="datadog-rum-plugin",re=e=>`DD_RUM.init({${JSON.stringify(e.sdk).replace(/(^{|}$)/g,"")}});\n`,ae=(e,t)=>{const n=e.sdk;if(n.clientToken)return re(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 s;try{const e=await H({url:`https://api.datadoghq.com/api/v2/rum/applications/${n.applicationId}`,type:"json",auth:t.auth});s=e.data?.attributes?.client_token}catch(e){throw new Error(`Could not fetch the clientToken: ${e.message}`)}if(!s)throw new Error("Missing clientToken in the API response.");return re({...e,sdk:{clientToken:s,...n}})}},ue=e=>{const n=t.bold.red,s=e[oe]||{},o={errors:[]};if(s.sdk){s.sdk.applicationId||o.errors.push(`Missing ${n("applicationId")} in the SDK configuration.`),e.auth?.apiKey&&e.auth?.appKey||s.sdk.clientToken||o.errors.push(`Missing ${n('"auth.apiKey"')} and/or ${n('"auth.appKey"')} to fetch missing client token.`);const t={applicationId:"unknown_application_id",allowUntrustedEvents:!1,compressIntakeRequests:!1,defaultPrivacyLevel:"mask",enablePrivacyForActionName:!1,sessionReplaySampleRate:0,sessionSampleRate:100,silentMultipleInit:!1,site:"datadoghq.com",startSessionReplayRecordingManually:!1,storeContextsAcrossPages:!1,telemetrySampleRate:20,traceSampleRate:100,trackingConsent:"granted",trackLongTasks:!1,trackResources:!1,trackUserInteractions:!1,trackViewsManually:!1};o.config={...t,...s.sdk}}return o},pe=({options:e,context:t})=>{const n=((e,t)=>{const n=[],s=ue(e);if(n.push(...s.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${ie}.`);const o={disabled:!e[oe],...e[oe],sdk:void 0};return s.config&&(o.sdk=s.config),o})(e,t.getLogger(ie)),s=[];return n.disabled||n.sdk&&(t.inject({type:"file",position:se.MIDDLE,value:r.join(__dirname,"./rum-browser-sdk.js")}),t.inject({type:"code",position:se.MIDDLE,value:ae(n,t)})),s},ce="telemetry",le="datadog-telemetry-plugin",de=[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};return/(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),e.value>t[e.type]?e:null}],me=(e,t)=>({type:"gauge",tags:[...e.tags,...t.tags],metric:`${t.prefix?`${t.prefix}.`:""}${e.metric}`,points:[[t.timestamp,e.value]]}),fe=(e="")=>e.endsWith("/")?e:`${e}/`,he=(e,t)=>{let n=e;return e.split(fe(t)),n.split("!").pop().replace(/(.*)?\/node_modules\//,"/node_modules/").replace(/^((\.)*\/)+/,"")},ge=(e,t)=>e.split("!").pop().replace(fe(t),"./"),we=(e,t,n)=>{let s=e.name||e.userRequest;return s||(s=((e,t)=>{let n=e.userRequest;if(!n){let s;s=t.moduleGraph&&"function"==typeof t.moduleGraph.getIssuer?t.moduleGraph.getIssuer(e):e.issuer,n=s?.userRequest,n||(n=e._identifier?.split("!").pop())}return n||"unknown"})(e,t)),ge(s||"no-name",n)},ye=e=>e.replace(/^.*\/node_modules\/(@[a-z0-9][\w-.]+\/[a-z0-9][\w-.]*|[^/]+).*$/,"$1"),be=e=>e.map((e=>({type:e?.constructor?.name??typeof e,name:e?.name,value:"string"==typeof e?e:void 0}))),ve=(e,t,n,s)=>{const o=new Set;if(s){const{timings:e}=s;e&&(e.tapables&&((e,t)=>{t.add({metric:"plugins.count",type:"count",value:e.size,tags:[]});for(const n of e.values()){let e=0,s=0;for(const o of Object.values(n.events)){let i=0;s+=o.values.length;for(const t of o.values){const n=t.end-t.start;i+=n,e+=n}t.add({metric:"plugins.hooks.duration",type:"duration",value:i,tags:[`pluginName:${n.name}`,`hookName:${o.name}`]}).add({metric:"plugins.hooks.increment",type:"count",value:o.values.length,tags:[`pluginName:${n.name}`,`hookName:${o.name}`]})}t.add({metric:"plugins.duration",type:"duration",value:e,tags:[`pluginName:${n.name}`]}).add({metric:"plugins.increment",type:"count",value:s,tags:[`pluginName:${n.name}`]})}})(e.tapables,o),e.loaders&&((e,t)=>{t.add({metric:"loaders.count",type:"count",value:e.size,tags:[]});for(const n of e.values())t.add({metric:"loaders.duration",type:"duration",value:n.duration,tags:[`loaderName:${n.name}`]}).add({metric:"loaders.increment",type:"count",value:n.increment,tags:[`loaderName:${n.name}`]})})(e.loaders,o))}((e,t)=>{const n=e.build.inputs||[],s=e.build.outputs||[],o=e.build.entries||[],i=e.build.warnings.length,r=e.build.errors.length,a=e.build.duration,u=new Map,p=new Map,c=new Map;for(const e of o){for(const t of e.inputs)u.has(t.filepath)||u.set(t.filepath,[]),u.get(t.filepath).push(e.name);for(const t of e.outputs){const n=t.filepath.replace(/\.map$/,"");c.has(n)||c.set(n,[]),c.get(n).push(e.name)}}for(const e of s)for(const t of e.inputs)p.has(t.filepath)||p.set(t.filepath,[]),p.get(t.filepath).push(e.name);t.add({metric:"assets.count",type:"count",value:s.length,tags:[]}).add({metric:"entries.count",type:"count",value:o.length,tags:[]}).add({metric:"errors.count",type:"count",value:r,tags:[]}).add({metric:"modules.count",type:"count",value:n.length,tags:[]}).add({metric:"warnings.count",type:"count",value:i,tags:[]}),a&&t.add({metric:"compilation.duration",type:"duration",value:a,tags:[]});for(const e of n){const n=[`moduleName:${e.name}`,`moduleType:${e.type}`];u.has(e.filepath)&&n.push(...u.get(e.filepath).map((e=>`entryName:${e}`))),p.has(e.filepath)&&n.push(...p.get(e.filepath).map((e=>`assetName:${e}`))),t.add({metric:"modules.size",type:"size",value:e.size,tags:n}).add({metric:"modules.dependencies",type:"count",value:e.dependencies.size,tags:n}).add({metric:"modules.dependents",type:"count",value:e.dependents.size,tags:n})}for(const e of s){const n=[`assetName:${e.name}`,`assetType:${e.type}`],s=e.filepath.replace(/\.map$/,"");c.has(s)&&n.push(...c.get(s).map((e=>`entryName:${e}`))),t.add({metric:"assets.size",type:"size",value:e.size,tags:n}).add({metric:"assets.modules.count",type:"count",value:e.inputs.length,tags:n})}for(const e of o){const n=[`entryName:${e.name}`];t.add({metric:"entries.size",type:"size",value:e.size,tags:n}).add({metric:"entries.modules.count",type:"count",value:e.inputs.length,tags:n}).add({metric:"entries.assets.count",type:"count",value:e.outputs.length,tags:n})}})(e,o);for(const e of o)if(t.filters?.length){let s=e;for(const n of t.filters){if(!s)break;s=n(e)}s&&n.add(me(s,t))}else n.add(me(e,t))},$e=async(e,t,n,s)=>{if("string"!=typeof t&&"object"!=typeof t&&!t)return;const{report:o,metrics:i}=e,a=Date.now();let u="";const p={timings:!0,metrics:!0};"object"==typeof t?(u=t.destination,p.timings=t.timings||!1,p.metrics=t.metrics||!1):"string"==typeof t&&(u=t);const c=r.resolve(s,u);try{const e={},t={};p.timings&&o?.timings&&(t.timings={content:{tapables:o.timings.tapables?Array.from(o.timings.tapables.values()):null,loaders:o.timings.loaders?Array.from(o.timings.loaders.values()):null,modules:o.timings.modules?Array.from(o.timings.modules.values()):null}}),p.metrics&&(t.metrics={content:Array.from(i)});const s=Object.entries(t).map((async([t,s])=>{const o=Date.now();n.debug(`Start writing ${t}.json.`);try{await(async(e,t)=>{const n=JSON.stringify(t,null,4);return D(e,n)})(r.join(c,`${t}.json`),s.content),n.debug(`Wrote ${t}.json in ${x(Date.now()-o)}`)}catch(s){n.error(`Failed to write ${t}.json in ${x(Date.now()-o)}`),e[t]=s}}));await Promise.all(s),n.debug(`Wrote files in ${x(Date.now()-a)}.`);const u=Object.keys(e);u.length&&n.error(`Couldn't write files.\n${u.map((t=>` - ${t}: ${e[t].toString()}`))}`)}catch(e){n.error(`Couldn't write files. ${e}`)}},ke=t.bold.red,Se=t.bold.cyan,De=e=>(t,n)=>{let s,o;return"function"==typeof e?(s=e(t),o=e(n)):(s=t[e],o=n[e]),s>o?-1:s<o?1:0},Ee=(e,t)=>{if(!t||!t.size)return[];const n=Array.from(t.values());n.sort(De("duration"));const s={name:`${e} duration`,values:n.map((e=>({name:e.name,value:x(e.duration)}))),top:!0};n.sort(De("increment"));const o={name:`${e} hits`,values:n.map((e=>({name:e.name,value:e.increment.toString()}))),top:!0};return[s,o]},Pe=(e,t,n)=>{const s=[];var o;n&&(s.push(...Ee("Loader",n.timings.loaders)),s.push(...Ee("Tapable",n.timings.tapables)),s.push(...Ee("Module",n.timings.modules))),s.push(...(e=>{const t={name:"Module total dependents",values:[],top:!0},n={name:"Module total dependencies",values:[],top:!0},s={name:"Module size",values:[],top:!0},o={name:"Module aggregated size",values:[],top:!0},i=new Set,r=(e=>{const t={bundler:e.bundler,errors:e.errors,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})(e.build),a=new Map,u=new Map,p=new Map;for(const e of r.inputs||[]){if("map"===e.type)continue;const t=new Set(e.dependencies),n=new Set(e.dependents);for(const n of t)p.has(n)||p.set(n,new Set),p.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(p.has(e.filepath)){const t=p.get(e.filepath);for(const e of t)n.add(e)}u.set(e.filepath,t),p.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,s=p.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:s,dependencies:n})}if(!i.size)return[t,n,s];const c=Array.from(i);return c.sort(De((e=>e.dependents.size))),t.values=c.map((e=>({name:e.name,value:e.dependents.size.toString()}))),c.sort(De((e=>e.dependencies.size))),n.values=c.map((e=>({name:e.name,value:e.dependencies.size.toString()}))),c.sort(De("size")),s.values=c.map((e=>({name:e.name,value:m(e.size)}))),c.sort(De("aggregatedSize")),o.values=c.map((e=>({name:e.name,value:m(e.aggregatedSize||e.size)}))),[t,n,s,o]})(e)),s.push(...(o=e,[{name:"Asset size",values:(o.build.outputs||[]).filter((e=>"map"!==e.type)).sort(De((e=>e.size))).map((e=>({name:e.name,value:m(e.size)}))),top:!0},{name:"Entry aggregated size",values:(o.build.entries||[]).sort(De((e=>e.size))).map((e=>({name:e.name,value:m(e.size)}))),top:!0},{name:"Entry number of modules",values:(o.build.entries||[]).sort(De((e=>e.size))).map((e=>({name:e.name,value:e.inputs.length.toString()})))||[],top:!0}])),s.push(...(e=>{const t={name:"General Numbers",values:[],top:!1},n=e.build.inputs?e.build.inputs.length:0,s=e.build.outputs?e.build.outputs.length:0,o=e.build.warnings.length,i=e.build.errors.length,r=e.build.entries?e.build.entries.length:0;return e.build.start&&t.values.push({name:"Overhead duration",value:x(e.build.start-e.start)}),e.build.duration&&t.values.push({name:"Build duration",value:x(e.build.duration)}),e.build.writeDuration&&t.values.push({name:"Write duration",value:x(e.build.writeDuration)}),t.values.push({name:"Number of modules",value:n.toString()},{name:"Number of assets",value:s.toString()},{name:"Number of entries",value:r.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=j(e.name,60)}const n=Math.max(...e.map((e=>e.name.length))),s=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,s+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+=` [${ke(e.value)}] ${" ".repeat(n)}${Se(e.name)}\n`}}return t})(s);t.info(i)},Me=["onStart","onLoad","onResolve","onEnd"],xe=new Map,je=new Map,Te=(e,t,n)=>{const s=Object.assign({},e);for(const o of Me)s[o]=async(s,i)=>{const r=xe.get(t)||{name:t,increment:0,duration:0,events:{}};r.events[o]=r.events[o]||{name:o,values:[]};return(0,e[o])(s,(async(...e)=>{const s=ge(e[0].path,n),a=je.get(s)||{name:s,increment:0,duration:0,events:{}};a.events[o]=a.events[o]||{name:o,values:[]};const u=f.now();try{return await i(...e)}finally{const n=f.now(),i=n-u,p={start:u,end:n,duration:i,context:be(e)};r.events[o].values.push(p),r.duration+=i,r.increment+=1,xe.set(t,r),a.events[o].values.push(p),a.duration+=i,a.increment+=1,je.set(s,a)}}))};return s},Oe=(e,t,n)=>({setup:s=>{t.build.start=Date.now(),s.initialOptions.metafile=!0;const o=n.time("wrapping plugins");((e,t)=>{const n=e.initialOptions.plugins;if(n){const e=n.map((e=>({...e})));for(const s of n){if(s.name.includes(le))continue;const n=s.setup;s.setup=async o=>{const i=Te(o,s.name,t);await n({...i,initialOptions:{...i.initialOptions,plugins:e}})}}}})(s,t.cwd),o.end(),s.onEnd((async t=>{if(!t.metafile)return void n.warn("Missing metafile, can't proceed with modules data.");const s=n.time("getting plugins results"),{plugins:o,modules:i}={plugins:xe,modules:je};s.end(),e.report={timings:{tapables:o,modules:i}}}))}});class ze{constructor(e){this.started={},this.finished=[],this.cwd=e}startModule(e,t){const n=we(e,t,this.cwd),s=(e=>(e.loaders||[]).map((e=>e.loader||e)).map(ye))(e);s.length||s.push("no-loader"),this.started[n]={module:he(n),timings:{start:f.now(),duration:0,end:0},loaders:s}}doneModule(e,t){const n=we(e,t,this.cwd),s=this.started[n];s&&(s.timings.end=f.now(),s.timings.duration=s.timings.end-s.timings.start,this.finished.push(s),delete this.started[n])}getResults(){const e=new Map,t=new Map;for(const n of this.finished){const s=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+=s,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+=s,e.set(t,n)}}return{loaders:e,modules:t}}}class Ne{constructor(e){this.monitoredTaps={},this.tapables=[],this.hooks={},this.timings=new Map,this.ignoredHooks=["normalModuleLoader"],this.cwd=e}saveResult(e,t,n,s,o,i){const r=this.timings.get(t)||{name:t,duration:0,increment:0,events:{}};r.events[n]||(r.events[n]={name:n,values:[]}),r.events[n].values.push({start:o,end:i,duration:i-o,context:s,type:e}),r.duration+=i-o,r.increment+=1,this.timings.set(t,r)}getResults(){const e=this.timings;for(const[t,n]of this.timings){const s=n;s.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,s)}return{monitoredTaps:this.monitoredTaps,tapables:this.tapables,hooks:this.hooks,timings:e}}getPromiseTapPatch(e,t,n,s){return(...o)=>{this.checkNewHooks();const i=f.now(),r=t.apply(this,o),a=()=>{this.saveResult(e,n,s,be(o),i,f.now())};return r.then(a,a),r}}getAsyncTapPatch(e,t,n,s){return(...o)=>{this.checkNewHooks();const i=f.now(),r=o.pop();return t.apply(this,[...o,(...t)=>(this.saveResult(e,n,s,be(o),i,f.now()),r(...t))])}}getDefaultTapPatch(e,t,n,s){return(...o)=>{this.checkNewHooks();const i=f.now(),r=t.apply(this,o);return this.saveResult(e,n,s,be(o),i,f.now()),r}}getTapPatch(e,t,n,s){switch(e){case"promise":return this.getPromiseTapPatch(e,t,n,s);case"async":return this.getAsyncTapPatch(e,t,n,s);default:return this.getDefaultTapPatch(e,t,n,s)}}newTap(e,t,n,s){return(o,i)=>{const r="string"==typeof(a=o)?a:a.name;var a;const u=`${t}-${r}`;if(this.monitoredTaps[u])return n.call(s,o,i);this.monitoredTaps[u]=!0;const p=this.getTapPatch(e,i,r,t);return n.call(s,o,p)}}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(le)||(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 s of n)this.patchHook(t,s,e.hooks[s])}checkNewHooks(){for(const e of this.tapables)this.patchHooks(e)}throughHooks(e){this.tapables.includes(e)||this.tapables.push(e),this.patchHooks(e)}}const Re=(e,t)=>async n=>{const s=t.getLogger(le);t.build.start=Date.now();const o={name:le},i=new Ne(t.cwd),r=new ze(t.cwd),a=s.time("parse compiler hooks");i.throughHooks(n),a.end(),n.hooks.thisCompilation.tap(o,(e=>{const t=s.time("parse compilation hooks");i.throughHooks(e),t.end(),e.hooks.buildModule.tap(o,(t=>{r.startModule(t,e)})),e.hooks.succeedModule.tap(o,(t=>{r.doneModule(t,e)})),e.hooks.failedModule&&e.hooks.failedModule.tap(o,(t=>{r.doneModule(t,e)}))})),n.hooks.afterEmit.tapPromise(o,(async t=>{const{timings:n}=i.getResults(),{loaders:s,modules:o}=r.getResults();e.report={timings:{tapables:n,loaders:s,modules:o}}}))},Ie={filters:de},Ae=({options:e,context:t})=>{const n=t.getLogger(le);let s=0;const o={start:Date.now()},i=(e=>{const t=e[ce]?.endPoint||"https://app.datadoghq.com";return{disabled:!e[ce],enableTracing:!1,filters:de,output:!1,prefix:"",tags:[],...e[ce],endPoint:t.startsWith("http")?t:`https://${t}`}})(e),r=[];if(i.disabled)return r;const a={name:le,enforce:"pre",esbuild:Oe(o,t,n),webpack:Re(o,t),rspack:Re(o,t)},u=n.time("build",{start:!1}),p={name:"datadog-universal-telemetry-plugin",enforce:"post",buildStart(){u.resume(),t.build.start=t.build.start||Date.now()},buildEnd(){u.end(),s=Date.now()},async writeBundle(){t.build.end=Date.now(),t.build.duration=t.build.end-t.build.start,t.build.writeDuration=t.build.end-s;const e=new Set,r=(e=>({timestamp:Math.floor((e.timestamp||Date.now())/1e3),tags:e.tags,prefix:e.prefix,filters:e.filters}))(i),a=n.time("aggregating metrics");ve(t,r,e,o.report),a.end();const u=n.time("writing to files");await $e({report:o.report,metrics:e},i.output,n,t.bundler.outDir),u.end();const p=n.time("outputing report");Pe(t,n,o.report),p.end();const c=n.time("sending metrics to Datadog");await((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.info("No metrics to send.");const s=new Map;for(const t of e)s.has(t.metric)||s.set(t.metric,0),s.set(t.metric,s.get(t.metric)+1);const o=Array.from(s.entries()).map((([e,t])=>`${e} - ${t}`));return n.debug(`\nSending ${e.size} metrics.\nMetrics:\n - ${o.join("\n - ")}`),H({method:"POST",url:`${t.endPoint}/api/v1/series?api_key=${t.apiKey}`,getData:()=>({data:JSON.stringify({series:Array.from(e)})})}).catch((e=>{n.error(`Error sending metrics ${e}`)}))})(e,{apiKey:t.auth?.apiKey,endPoint:i.endPoint},n),c.end()}};return i.enableTracing&&r.push(a),r.push(p),r},Ce="datadog-analytics-plugin",Fe=e=>{const{context:t}=e,n=e.context.getLogger(Ce);return t.sendLog=async(e,s={})=>{if("production"===t.env)try{const n={name:t.bundler.name,version:t.bundler.version};await H({retries:2,minTimeout:100,url:"https://browser-http-intake.logs.datadoghq.com/v1/input/pub44d5f4eb86e1392037b7501f7adc540e",method:"POST",type:"json",getData:async()=>{const o={ddsource:`@datadog/${n.name}-plugin`,env:t.env,message:e,service:"build-plugins",bundler:n,plugins:t.pluginNames,version:t.version,team:"language-foundations",...s};return{data:JSON.stringify(o),headers:{"Content-Type":"application/json"}}}})}catch(e){n.debug(`Could not submit data to Datadog: ${e}`)}},[{name:Ce,async buildStart(){await t.sendLog("Build started")}}]},Le=async(e,t,n)=>{const s=[],o=e.initialOptions.entryPoints,i=[],r=[];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("*")?h.sync(t):[t]).map((t=>[e,t]));var t})).map((async([n,o])=>{const i=await e.resolve(o,{kind:"entry-point",resolveDir:t.cwd});i.errors.length&&r.push(...i.errors.map((e=>e.text))),i.path&&s.push({name:n.name,resolved:i.path,original:n.path})}));for(const e of r)n.error(e);return await Promise.all(a),s},_e=(e,t)=>M(t)?$:t.startsWith(e)||r.isAbsolute(t)?t:r.resolve(e,t),He=/\.(?!.*(?:\.|\/|\\))(\w{1,})/g,Ke=/(\?|%3F|\|)+/gi,We=e=>{return"unknown"===e?e:e.includes("webpack/runtime")?"runtime":(t=Ue(e),He.lastIndex=0,He.exec(t)?.[1]||"unknown");var t},Be=["unknown","commonjsHelpers.js","vite/preload-helper.js"],qe=(e,t,n)=>{const s=new Set;for(const n of e){const e=Ue(n);M(n)||e===t||Be.includes(e)||s.add(e)}return s},Ue=e=>e.split("!").pop().split(Ke).shift().replace(/^[^\w\s.,!@#$%^&*()=+~`\-/]+/,""),Ge=(e,t)=>M(t)?$:"unknown"===t?t:t.includes("webpack/runtime")?t.replace("webpack/runtime/","").replace(/ +/g,"-"):t.split("!").pop().replace(_e(e.cwd,e.bundler.outDir),"").replace(e.cwd,"").split("node_modules").pop().split(Ke).shift().replace(/^((\.\.?)?\/)+/,""),Je=(e,t)=>Object.fromEntries(Object.entries(e).map((([e,n])=>[_e(t,e),n]))),Ve=(e,t)=>({setup(n){const s=new Map;let o=[];const i=t.time("build report",{start:!1});n.onStart((async()=>{s.clear(),o=[],i.resume();const r=t.time("process entries");o.push(...await Le(n,e,t));for(const t of o){const n=Ge(e,t.resolved);t.name?s.set(n,t.name):s.set(n,n)}r.end(),i.pause()})),n.onEnd((n=>{i.resume();const o=t.time("collecting errors and warnings"),a=e.cwd;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 u=[],p=[],c=[],l=[],d=[],m={},f={},h=t.time("indexing metafile data"),g=Je(n.metafile.inputs,a),w=Je(n.metafile.outputs,a);h.end();const y=e=>{if(!M(e))return e;const t=g[_e(a,e)];if(!t)return e;const n=t.imports.find((e=>!M(e.path)));return n?n.path:e},b=t.time("looping through inputs");for(const[t,s]of Object.entries(n.metafile.inputs)){if(M(t))continue;const n=_e(a,t),o={name:Ge(e,t),filepath:n,dependents:new Set,dependencies:new Set,size:s.bytes,type:We(t)};m[n]=o,u.push(o)}b.end();const v=t.time("looping through outputs");for(const[o,i]of Object.entries(n.metafile.outputs)){const n=_e(a,o),r=Ge(e,n),u=[];for(const e of Object.keys(i.inputs)){if(M(e))continue;const n=m[_e(a,e)];n?u.push(n):t.debug(`Input ${e} not found for output ${r}`)}if(i.entryPoint&&!u.length){const e=m[_e(a,i.entryPoint)];if(!e){t.debug(`Input ${i.entryPoint} not found for output ${r}`);continue}u.push(e)}const d={name:r,filepath:n,inputs:u,size:i.bytes,type:We(n)};if(f[n]=d,"map"===d.type&&l.push(d),p.push(d),!i.entryPoint)continue;const h=m[_e(a,y(i.entryPoint))];if(h){if(!s.get(h.name))continue;const e={...d,name:s.get(h.name)||h.name,outputs:[d],size:d.size};c.push(e)}}v.end();const $=t.time("looping through sourcemaps");for(const e of l){const n=f[e.filepath.replace(/\.map$/,"")];n?e.inputs.push(n):t.debug(`Could not find output for sourcemap ${e.name}`)}$.end();const k={inputs:{report:m,meta:g},outputs:{report:f,meta:w}},S=/(<runtime>|https:|file:|data:|#)/g,D=e=>!M(e)&&!e.match(S),E=(n,s,o={})=>{if(!D(n))return o;const i=s.report[n];if(!i)return t.debug(`Could not find report's ${n}`),o;if(o[i.filepath])return o;o[i.filepath]=i;const p=s.meta[n];if(!p)return t.debug(`Could not find metafile's ${n}`),o;if(!p.imports||!p.imports.length)return o;for(const t of p.imports){const p=t.path.match(/^\.\.?\//),c=p?r.dirname(n):a,l=_e(c,t.path);if(t.external){if(D(t.path)){const n=p?l:t.path,s=k.inputs.report[n]||{filepath:n,name:Ge(e,t.path),size:0,type:"external",dependencies:new Set,dependents:new Set};"dependencies"in i&&(s.dependents.add(i),i.dependencies.add(s)),"inputs"in i&&!i.inputs.includes(s)&&i.inputs.push(s),u.includes(s)||u.push(s),k.inputs.report[n]=s,o[s.filepath]=s}}else E(l,s,o)}return o},P=t.time("looping through entries");for(const e of c){const t={},n={};for(const n of e.inputs)E(n.filepath,k.inputs,t);for(const t of e.outputs)E(t.filepath,k.outputs,n);e.inputs=Object.values(t),e.outputs=Object.values(n),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),d.push(e)}P.end();const x=t.time("aggregate dependencies and dependents");for(const e of u){if("external"===e.type)continue;const n=k.inputs.meta[e.filepath];if(n)for(const s of n.imports){if(!D(s.path))continue;const n=s.path.match(/^\.?\.\//),o=n?r.dirname(e.filepath):a,i=_e(o,s.path);let u;if(s.external){const e=n?i:s.path;u=k.inputs.report[e]}else u=k.inputs.report[i];u?(e.dependencies.add(u),u.dependents.add(e)):t.debug(`Could not find input file of ${s.path} imported from ${e.name}`)}else t.debug(`Could not find metafile's ${e.name}`)}x.end(),e.build.outputs=p,e.build.inputs=u,e.build.entries=d,i.end(),e.hook("buildReport",e.build)}))}}),Ye=(e,t)=>{const n=t.time("build report",{start:!1});let s={};return{buildStart(){s={}},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=Ue(e.id),o=s[t]||{dependencies:new Set,dependents:new Set},i=qe(new Set([...e.dynamicallyImportedIds,...e.importedIds]),t),r=qe(new Set([...e.dynamicImporters,...e.importers]),t);for(const e of r)o.dependents.add(e);for(const e of i)o.dependencies.add(e);s[t]=o,n.pause()},writeBundle(o,i){n.resume();const r=[],a=[],u=[],p=[],c={},l=[],d={},m={},f=t.time("completing dependencies and dependents");for(const[e,{dependencies:t,dependents:n}]of Object.entries(s)){for(const n of t){const t=Ue(n);s[t]||(s[t]={dependencies:new Set,dependents:new Set}),s[t].dependents.has(e)||s[t].dependents.add(e)}for(const t of n){const n=Ue(t);s[n]||(s[n]={dependencies:new Set,dependents:new Set}),s[n].dependencies.has(e)||s[n].dependencies.add(e)}}f.end();const h=t.time("filling inputs and outputs");for(const[n,o]of Object.entries(i)){const i={name:n,filepath:_e(e.bundler.outDir,n),inputs:[],size:"code"in o?Buffer.byteLength(o.code,"utf8"):Buffer.byteLength(o.source,"utf8"),type:We(n)};if("map"===i.type&&p.push(i),"modules"in o)for(const[t,n]of Object.entries(o.modules)){if(Ue(t)!==t)continue;const s={name:Ge(e,t),dependencies:new Set,dependents:new Set,filepath:t,size:n.originalLength,type:We(t)};i.inputs.push(s),d[s.filepath]=s,r.push(s)}if("imports"in o)for(const n of o.imports){const o=Ue(n);if(!s[o]){c[_e(e.bundler.outDir,o)]=i;continue}if(d[o]){t.debug(`Input report already there for ${o} from ${i.name}.`);continue}const a={name:Ge(e,n),dependencies:new Set,dependents:new Set,filepath:o,size:0,type:"external"};i.inputs.push(a),d[a.filepath]=a,r.push(a)}"isEntry"in o&&o.isEntry&&u.push({...i,name:o.name,size:0,outputs:[i]}),m[i.filepath]=i,a.push(i)}h.end();for(const[e,n]of Object.entries(c)){const s=m[e];s?n.inputs.includes(s)||n.inputs.push(s):t.debug(`Could not find the output report for ${e}.`)}const g=t.time("filling dependencies and dependents");for(const n of r){const o=s[n.filepath];if(o){for(const s of o.dependencies){const o=d[s];o?n.dependencies.add(o):t.debug(`Could not find input for dependency ${Ge(e,s)} of ${n.name}`)}for(const s of o.dependents){const o=d[s];o?n.dependents.add(o):t.debug(`Could not find input for dependent ${Ge(e,s)} of ${n.name}`)}}else t.debug(`Could not find the import report for ${n.name}.`)}if(g.end(),p.length){const e=t.time("filling sourcemaps inputs");for(const e of p){const n=e.filepath.replace(/\.map$/,""),s=m[n];s?e.inputs.push(s):t.debug(`Could not find output for sourcemap ${e.name}`)}e.end()}const w=(n,s={})=>{if(s[n])return s;const o=Ge(e,n),r=m[n];if(!r){return!!d[o]||t.debug(`Could not find output for ${o}`),s}s[n]=r;const a=i[Ge(e,n)];if(!a)return t.debug(`Could not find asset for ${o}`),s;const u=[];"imports"in a&&u.push(...a.imports),"dynamicImports"in a&&u.push(...a.dynamicImports);for(const t of u)w(_e(e.bundler.outDir,t),s);return s},y=t.time("filling entries");for(const e of u){const t=w(e.filepath);e.outputs=Object.values(t),e.inputs=Array.from(new Set(e.outputs.flatMap((e=>e.inputs)))),e.size=e.outputs.reduce(((e,t)=>e+t.size),0),l.push(e)}y.end(),e.build.inputs=r,e.build.outputs=a,e.build.entries=l,n.end(),e.hook("buildReport",e.build)}}},Qe=(e,t,n)=>s=>{let o=[],i=[],r=[];const a=new Map,u=new Map,p=new Map,c=new Map,l=[],d=new Map,m=n.time("build report",{start:!1}),f=e=>!(!e||e.startsWith("webpack/runtime")||e.includes("/webpack4/buildin/")||e.startsWith("multi ")||M(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"],s=e=>{const n=Ue(e);t.add(n),n.startsWith("external ")&&t.add(h(n))};s(e.identifier());for(const t of n){const n=e[t];t&&t in e&&"string"==typeof n&&s(n)}return t})(e);for(const e of n)if(c.has(e)){const n=c.get(e);n.dependencies.push(...t.dependencies||[]),n.blocks.push(...t.blocks||[])}else c.set(e,t)},w=(e,t=[])=>{if("dependencies"in e)for(const n of e.dependencies)t.push(n),w(n,t);if("blocks"in e)for(const n of e.blocks)w(n,t);return t},y=(e,t)=>{if("request"in t&&t.request){const n=Ue(t.request);if(c.has(n))return c.get(n);if(e.context){const t=_e(Ue(e.context),n);if(c.has(t))return c.get(t)}}},b=e=>!(!("externalType"in e)||!e.externalType)||(!(!("external"in e)||!e.external)||!!e.identifier?.().startsWith("external "));s.hooks.thisCompilation.tap(t,(s=>{o=[],i=[],r=[],a.clear(),u.clear(),c.clear(),d.clear(),s.hooks.finishModules.tap(t,(t=>{m.resume();const s=n.time("dependency graph"),i=n.time("indexing modules");for(const e of t)g(e);i.end();const r=n.time("building inputs");for(const n of t){const t=n.identifier(),s=Ge(e,t),i=new Set(w(n).map((e=>{const s=y(n,e);if(!s?.identifier())return!1;const o=s.identifier();return!!f(o)&&(o!==t&&(b(s)?h(o):o))})).filter(Boolean));if(!f(t))continue;const r=d.get(t)||{dependents:new Set,dependencies:new Set};for(const e of i){const n=d.get(e)||{dependencies:new Set,dependents:new Set};n.dependents.add(t),r.dependencies.add(e),d.set(e,n)}d.set(t,r);const u=b(n)?{size:0,name:h(s),dependencies:new Set,dependents:new Set,filepath:t,type:"external"}:{size:n.size()||0,name:s,dependencies:new Set,dependents:new Set,filepath:t,type:We(t)};o.push(u),a.set(t,u),b(n)&&a.set(h(t),u)}r.end();const u=n.time("assigning dependencies and dependents");for(const e of o){const t=d.get(e.filepath);if(t){for(const s of t.dependencies){const t=a.get(s);t?e.dependencies.add(t):n.debug(`Could not find input of dependency ${s}`)}for(const s of t.dependents){const t=a.get(s);t?e.dependents.add(t):n.debug(`Could not find input of dependent ${s}`)}}else n.debug(`Could not find dependency report for ${e.name}`)}u.end(),s.end(),m.pause()}))})),s.hooks.afterEmit.tap(t,(t=>{m.resume();const s=t.chunks,c=t.getAssets(),d=t=>[...t.files||[],...t.auxiliaryFiles||[]].map((t=>_e(e.bundler.outDir,t))),h=n.time("indexing chunks"),g=t.chunkGraph;for(const e of s){const t=d(e),n=(g?g?.getChunkModules(e):"getModules"in e&&"function"==typeof e.getModules?e.getModules():[]).flatMap((e=>"modules"in e&&Array.isArray(e.modules)?e.modules.map((e=>e.identifier())):e.identifier())).filter(f);for(const e of t){if("map"===We(e))continue;const t=p.get(e)||new Set;for(const e of n)t.add(e);p.set(e,t)}}h.end();const w=n.time("building outputs");for(const t of c){const s={size:t.source.size()||0,name:t.name,inputs:[],filepath:_e(e.bundler.outDir,t.name),type:We(t.name)};if(u.set(s.filepath,s),i.push(s),"map"===s.type){l.push(s);continue}const o=p.get(s.filepath);if(o)for(const e of o){const t=a.get(e);t?s.inputs.push(t):n.debug(`Could not find input of ${e}`)}else n.debug(`Could not find modules for ${s.name}`)}w.end();const y=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}`)}y.end();const b=n.time("building entries");for(const[s,o]of t.entrypoints){const t=new Map,i=new Map;let a=0;const p=o.chunks.flatMap(d),c=o.chunks.filter((e=>g?g.getChunkEntryModulesIterable(e):"hasEntryModule"in e&&"function"==typeof e.hasEntryModule&&e.hasEntryModule())).flatMap((e=>Array.from(e.files))).filter((e=>e.includes(s)||o.name&&e.includes(o.name))).find((e=>"js"===We(e)));for(const e of p){const s=u.get(e);if(e&&s){if("map"!==s.type&&!t.has(s.name)){t.set(s.name,s);for(const e of s.inputs)i.has(e.filepath)||i.set(e.filepath,e);a+=s.size}}else n.debug(`Could not find output of ${JSON.stringify(e)}`)}const l={name:s,filepath:c?_e(e.bundler.outDir,c):"unknown",size:a,inputs:Array.from(i.values()),outputs:Array.from(t.values()),type:c?We(c):"unknown"};r.push(l)}b.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=r,m.end(),e.hook("buildReport",e.build)}))},Xe="datadog-build-report-plugin",Ze=e=>{const{context:t}=e,n=t.getLogger(Xe);return[{name:Xe,enforce:"post",esbuild:Ve(t,n),rspack:Qe(t,Xe,n),webpack:Qe(t,Xe,n),vite:Ye(t,n),rollup:Ye(t,n)}]},et=(e,t)=>{const n=(e=>{let t,n=_e(process.cwd(),e),s=n.split("/").length;for(;s>0;){const e=r.resolve(n,"package.json");o.existsSync(e)&&(t=n),n=n.split("/").slice(0,-1).join("/"),s--}return t})(t);if(n)return n;const s=(e=>{const t=[...e].map((e=>_e(process.cwd(),e).split(r.sep))),n=Math.min(...t.map((e=>e.length))),s=[];for(let e=0;e<n;e++){const n=t[0][e];if(!t.every((t=>t[e]===n)))break;s.push(n)}return s.length>0&&s.join(r.sep)||r.sep})(Array.from(e));return s!==r.sep?s:void 0},tt=e=>t=>{e.bundler.rawConfig=t.options,t.options.output?.path&&(e.bundler.outDir=t.options.output.path),e.hook("bundlerReport",e.bundler),t.options.context&&(e.cwd=t.options.context),e.hook("cwd",e.cwd)},nt=e=>{const{context:t}=e,n=new Set,s=e=>{e&&(e.dir?(t.bundler.outDir=e.dir,n.add(e.dir)):e.file&&(t.bundler.outDir=r.dirname(e.file),n.add(t.bundler.outDir)),t.bundler.outDir=_e(process.cwd(),t.bundler.outDir),"vite"!==t.bundler.name&&(t.cwd=et(n,t.bundler.outDir)||t.cwd,t.hook("cwd",t.cwd)))},o=()=>({options(e){if(t.bundler.rawConfig=e,e.input)if(Array.isArray(e.input))for(const t of e.input)n.add(r.dirname(t));else if("object"==typeof e.input)for(const t of Object.values(e.input))n.add(r.dirname(t));else{if("string"!=typeof e.input)throw new Error("Invalid input type");n.add(r.dirname(e.input))}if("output"in e){const t=Array.isArray(e.output)?e.output:[e.output];for(const e of t)s(e)}t.hook("bundlerReport",t.bundler)}});return[{name:"datadog-bundler-report-plugin",enforce:"pre",esbuild:{setup(e){t.bundler.rawConfig=e.initialOptions,e.initialOptions.outdir&&(t.bundler.outDir=e.initialOptions.outdir),e.initialOptions.outfile&&(t.bundler.outDir=r.dirname(e.initialOptions.outfile)),t.hook("bundlerReport",t.bundler),e.initialOptions.absWorkingDir&&(t.cwd=e.initialOptions.absWorkingDir),t.hook("cwd",t.cwd),e.initialOptions.metafile=!0}},webpack:tt(t),rspack:tt(t),vite:{...o(),config(e){e.root?t.cwd=e.root:t.cwd=et(n,t.bundler.outDir)||t.cwd,e.build?.outDir&&(t.bundler.outDir=e.build.outDir),t.hook("cwd",t.cwd)}},rollup:o()}]},st="datadog-custom-hooks-plugin",ot=e=>{const{context:t}=e,n=t.getLogger(st),s=e=>(s,...o)=>{const i=n.time(`hook | ${s}`),r=[],a=[];for(const n of t.plugins){if(!(s in n))continue;const t=n[s];if("function"==typeof t)try{const i=t(...o);i instanceof Promise&&(e||r.push(`Plugin "${n.name}" returned a promise on the non async hook "${s}".`),a.push(i))}catch(e){r.push(`Plugin "${n.name}" errored on hook "${s}". [${e}]`)}else r.push(`Plugin "${n.name}" has an invalid hook type for "${s}". [${typeof t}]`)}if(r.length>0){for(const e of r)n.error(e);throw new Error("Some plugins errored during the hook execution.")}return Promise.all(a).finally((()=>i.end()))};return t.hook=s(!1),t.asyncHook=s(!0),[{name:st,enforce:"pre"}]};class it{constructor(e){this.trackedFilenames=new Map;for(const t of e){const e=this.getFilename(t),n=this.trackedFilenames.get(e);n?n.push(t):this.trackedFilenames.set(e,new Array(t))}}displaySource(e){return e.length<=40?e:`[...]${e.slice(-35)}`}matchSourcemap(e,t){const n=o.readFileSync(e,"utf8"),s=JSON.parse(n);if(!s.sources)return void t("Missing 'sources' field in sourcemap.");const i=s.sources;if(0===i.length)return void t("Empty 'sources' field in sourcemap.");const r=this.matchSources(i);if(0!==r.length)return r;t(`${i.map(this.displaySource).join(", ")} not in the tracked files.`)}matchSources(e){let t=[];const n=new Set;for(const s of e){const e=this.getFilename(s);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 rt=async e=>{const t=await e.getRemotes(!0);if(0===t.length)throw new Error("No git remotes available");const n=await at(e);for(const e of t)if(e.name===n)return ut(e.refs.push);return ut(t[0].refs.push)},at=async e=>{try{return(await e.getConfig("clone.defaultRemoteName"))?.value??"origin"}catch(e){return"origin"}},ut=e=>{try{const t=new w(e);return t.username="",t.password="",t.toString()}catch{return e}},pt=async e=>e.revparse("HEAD"),ct=async e=>(await e.raw("ls-files")).split(/\r\n|\r|\n/),lt="datadog-git-plugin",dt=e=>{const{options:t,context:n}=e,s=n.getLogger(lt);return[{name:lt,enforce:"pre",async buildStart(){if(t.errorTracking?.sourcemaps&&!0!==t.errorTracking?.sourcemaps.disableGit&&!0!==t.disableGit)try{const e=s.time("get git information"),t=await(async e=>{let t,n,s;return[t,n,s]=await Promise.all([rt(e),pt(e),ct(e)]),{hash:n,remote:t,trackedFilesMatcher:new it(s)}})(await(async e=>{const t={baseDir:e||process.cwd(),binary:"git",maxConcurrentProcesses:3};try{const e=g(t),n=await e.revparse("--show-toplevel");t.baseDir=n}catch{}return g(t)})(n.cwd));n.git=t,e.end(),await n.asyncHook("git",n.git)}catch(e){s.error(`Could not get git information: ${e.message}`)}}}]},mt="datadog-injection-plugin",ft=/^https?:\/\//,ht=async(e,t,n=process.cwd())=>{let o;const i=await(async e=>"function"==typeof e.value?e.value():e.value)(e);try{if("file"===e.type)o=i.match(ft)?await(async(e,t=5e3)=>{let n;return Promise.race([H({retries:2,minTimeout:100,url:e}).finally((()=>{t&&clearTimeout(n)})),new Promise(((e,s)=>{n=setTimeout((()=>{s(new Error("Timeout"))}),t)}))])})(i):await(async(e,t=process.cwd())=>{const n=_e(t,e);return s(n,{encoding:"utf-8"})})(i,n);else{if("code"!==e.type)throw new Error(`Invalid item type "${e.type}", only accepts "code" or "file".`);o=i}}catch(n){const s=`${e.type} - ${j(i)}`;e.fallback?(t.info(`Fallback for "${s}": ${n.toString()}`),o=await ht(e.fallback,t)):(t.warn(`Failed "${s}": ${n.toString()}`),o="")}return o},gt=e=>{if(0===e.size)return"";return`// begin injection by Datadog build plugins\n${Array.from(e.values()).map((e=>`(() => {${e}})();`)).join("\n\n")}\n// end injection by Datadog build plugins`},wt=async(e,t,n,s=process.cwd())=>{const o=await(async(e,t,n=process.cwd())=>{const s=new Map;for(const[o,i]of e.entries()){const e=await ht(i,t,n);e&&s.set(o,{value:e,position:i.position||se.BEFORE})}return s})(t,e,s);for(const[e,t]of o.entries())n[t.position].set(e,t.value)},yt=o.promises,bt=(e,t,n)=>({setup(s){const{onStart:i,onResolve:a,onLoad:u,onEnd:p,esbuild:c,initialOptions:l}=s,d=[],m=`${O()}.${se.MIDDLE}.${$}.js`,f=o.realpathSync(y.tmpdir()),h=r.resolve(f,m),g=new RegExp(`${m}$`),w=l.inject;l.inject=w?[...w]:[],l.inject.push(h),i((async()=>{d.push(...await Le(s,t,e)),s.initialOptions.inject=w;try{await D(h,"")}catch(t){e.error(`Could not create the files: ${t.message}`)}})),a({filter:g},(async e=>({path:e.path,namespace:mt}))),u({filter:g,namespace:mt},(async()=>({contents:gt(n[se.MIDDLE])||" ",resolveDir:t.cwd,loader:"js"}))),p((async s=>{if(!s.metafile)return void e.warn("Missing metafile from build result.");const o=gt(n[se.BEFORE]),i=gt(n[se.AFTER]);if(!o&&!i)return;const r=Object.entries(s.metafile.outputs).map((([e,n])=>{const s=n.entryPoint;if(!s)return;return d.find((e=>e.resolved.endsWith(s)))?_e(t.cwd,e):void 0})).filter(Boolean).map((async e=>{const t=await yt.readFile(e,"utf-8"),n=await c.transform(t,{loader:"default",banner:o,footer:i});await yt.writeFile(e,n.code)}));await Promise.all(r)}))}}),vt=$,$t="?inject-proxy",kt=e=>({banner:t=>t.isEntry?gt(e[se.BEFORE]):"",async resolveId(t,n,s){if(M(t))return{id:t,moduleSideEffects:!0};if(s.isEntry&&gt(e[se.MIDDLE])){const e=await this.resolve(t,n,s);if(!e||e.external)return e;return(await this.load(e)).moduleSideEffects=!0,`${e.id}${$t}`}return null},load(t){if(M(t))return gt(e[se.MIDDLE]);if(t.endsWith($t)){const e=t.slice(0,-13),n=this.getModuleInfo(e);let s=`import ${JSON.stringify(vt)};\nexport * from ${JSON.stringify(e)};`;return n?.hasDefaultExport&&(s+=`export { default } from ${JSON.stringify(e)};`),s}return null},footer:t=>t.isEntry?gt(e[se.AFTER]):""}),St=(e,t,n,s,i)=>a=>{const u=new WeakMap,p=(e=>{if(!e?.sources?.ConcatSource)return b(require.resolve("webpack"))("webpack-sources").ConcatSource;return e.sources.ConcatSource})(e),c=r.resolve(n.bundler.outDir,`${O()}.${se.MIDDLE}.${$}.js`);E(c,"");const l=()=>{var e;e=c,o.rmSync(e,{force:!0,maxRetries:3,recursive:!0})};a.hooks.shutdown?a.hooks.shutdown.tap(mt,l):(a.hooks.done.tap(mt,l),a.hooks.failed.tap(mt,l));a.hooks.beforeRun.tapPromise(mt,(async()=>{await wt(t,s,i,n.cwd)})),a.hooks.compilation.tap(mt,(t=>{const n=()=>{const e=gt(i[se.BEFORE]),n=gt(i[se.AFTER]);for(const s of t.chunks)if(s.canBeInitial())for(const o of s.files)t.updateAsset(o,(t=>{const s=u.get(t);if(!s||s.banner!==e||s.footer!==n){const s=new p(e,"\n",t,"\n",n);return u.set(t,{source:s,banner:e,footer:n}),s}return s.source}))};if(t.hooks.processAssets){const s=e.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS;t.hooks.processAssets.tap({name:mt,stage:s},n)}else t.hooks.optimizeChunkAssets.tap({name:mt},n)}));const d=(e=>{const s="webpack4"===n.bundler.fullName?c:{import:[c]},o=e=>{for(const[n,s]of Object.entries(e))"object"==typeof s?(s.import=s.import||[],s.import.unshift(c)):"string"==typeof s?e[n]=[c,s]:Array.isArray(s)?s.unshift(c):t.error("Invalid entry type: "+typeof s)};return e?"function"==typeof e?async()=>{const t=await e();return o(t),t}:"object"!=typeof e?"string"==typeof e?[s,e]:(t.error("Invalid entry type: "+typeof e),e):(o(e),e):{ddHelper:s}})(a.options.entry);a.options.entry=d},Dt=e=>{const{bundler:t,context:n}=e,s=n.getLogger(mt),o=new Map,i={[se.BEFORE]:new Map,[se.MIDDLE]:new Map,[se.AFTER]:new Map};n.inject=e=>{o.set(O(),e)};const r={name:mt,enforce:"post",esbuild:bt(s,n,i),webpack:St(t,s,n,o,i),rspack:St(t,s,n,o,i),rollup:kt(i),vite:{...kt(i),enforce:"pre"}};var a;return a=n.bundler.fullName,["rspack","webpack4","webpack5","webpack"].includes(a)?(r.loadInclude=e=>!!M(e)||null,r.load=e=>M(e)?{code:gt(i[se.MIDDLE])}:null):r.buildStart=async()=>{await wt(s,o,i,n.cwd)},[r]},Et={[ce]:Ie};var Pt="2.5.3";const Mt=(({bundler:n,version:s})=>e(((e,o)=>{const i=((e={})=>({auth:{},disableGit:!1,logLevel:"warn",...e}))(e);"esbuild"===o.framework&&(o.esbuildHostName=S);const r=(({options:e,bundlerName:t,bundlerVersion:n,version:s})=>{const o=process.cwd(),i="webpack"===t?n.split(".")[0]:"",r={errors:[],warnings:[],logs:[],timings:[],bundler:{name:t,fullName:`${t}${i}`,variant:i,version:n}},a=process.env.BUILD_PLUGINS_ENV||"production",u=k.includes(a)?a:"development";return{auth:e.auth,pluginNames:[],bundler:{...r.bundler,outDir:o},build:r,cwd:o,env:u,getLogger:N(r,e.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.")},sendLog:()=>{throw new Error("SendLog function called before it was initialized.")},plugins:[],start:Date.now(),version:s}})({options:i,bundlerVersion:n.version||n.VERSION,bundlerName:o.framework,version:s});r.pluginNames.push(S);const a=[];a.push(["analytics",Fe],["build-report",Ze],["bundler-report",nt],["custom-hooks",ot],["git",dt],["injection",Dt]),i.customPlugins&&a.push(["custom",i.customPlugins]),a.push(["error-tracking",ne],["rum",pe],["telemetry",Ae]);for(const[e,t]of a)r.plugins.push(...A(r,t,e)({bundler:n,context:r,options:i}));r.pluginNames.push(...r.plugins.map((e=>e.name)));const u=new Set(r.pluginNames.filter((e=>r.pluginNames.filter((t=>t===e)).length>1)));if(u.size>0)throw new Error(`Duplicate plugin names: ${t.bold.red(Array.from(u).join(", "))}`);return r.hook("init",r),r.plugins})))({bundler:v,version:Pt}).webpack,xt=Pt,jt=Et;export{Mt as datadogWebpackPlugin,jt as helpers,xt as version};
12
+ `;s.info(u);const c=s.time("send sourcemaps");await mt(a,e.sourcemaps,n,s),c.end()},ht=`https://sourcemap-intake.${process.env.DATADOG_SITE||"datadoghq.com"}/api/v2/srcmap`,gt=e=>{const n=t.bold.red,s=e[et]||{},o={errors:[]};if(s.sourcemaps){s.sourcemaps.releaseVersion||o.errors.push(`${n("sourcemaps.releaseVersion")} is required.`),s.sourcemaps.service||o.errors.push(`${n("sourcemaps.service")} is required.`),s.sourcemaps.minifiedPathPrefix||o.errors.push(`${n("sourcemaps.minifiedPathPrefix")} is required.`),s.sourcemaps.minifiedPathPrefix&&((e=>{let t;try{t=new URL(e).host}catch{}return!(!t&&!e.startsWith("/"))})(s.sourcemaps.minifiedPathPrefix)||o.errors.push(`${n("sourcemaps.minifiedPathPrefix")} must be a valid URL or start with '/'.`));const e={bailOnError:!1,disableGit:!1,dryRun:!1,maxConcurrency:20,intakeUrl:process.env.DATADOG_SOURCEMAP_INTAKE_URL||s.sourcemaps.intakeUrl||ht,...s.sourcemaps};o.config=e}return o},It=({options:e,context:t})=>{const n=t.getLogger(tt),s=n.time("validate options"),o=((e,t)=>{const n=[],s=gt(e);if(n.push(...s.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${tt}.`);const o={disabled:!e[et],...e[et],sourcemaps:void 0};return s.config&&(o.sourcemaps=s.config),o})(e,n);return s.end(),o.disabled?[]:[{name:tt,enforce:"post",async writeBundle(){if(!o.disabled&&o.sourcemaps){const e=n.time("sourcemaps process");await ft(o,t,n),e.end()}}}]};var _t=(e=>(e[e.BEFORE=0]="BEFORE",e[e.MIDDLE=1]="MIDDLE",e[e.AFTER=2]="AFTER",e))(_t||{});const Et="rum",bt="datadog-rum-plugin",yt=e=>`DD_RUM.init({${JSON.stringify(e.sdk).replace(/(^{|}$)/g,"")}});\n`,wt=(e,t)=>{const n=e.sdk;if(n.clientToken)return yt(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 s;try{const e=await We({url:`https://api.datadoghq.com/api/v2/rum/applications/${n.applicationId}`,type:"json",auth:t.auth});s=e.data?.attributes?.client_token}catch(e){throw new Error(`Could not fetch the clientToken: ${e.message}`)}if(!s)throw new Error("Missing clientToken in the API response.");return yt({...e,sdk:{clientToken:s,...n}})}},Tt=e=>{const n=t.bold.red,s=e[Et]||{},o={errors:[]};if(s.sdk){s.sdk.applicationId||o.errors.push(`Missing ${n("applicationId")} in the SDK configuration.`),e.auth?.apiKey&&e.auth?.appKey||s.sdk.clientToken||o.errors.push(`Missing ${n('"auth.apiKey"')} and/or ${n('"auth.appKey"')} to fetch missing client token.`);const t={applicationId:"unknown_application_id",allowUntrustedEvents:!1,compressIntakeRequests:!1,defaultPrivacyLevel:"mask",enablePrivacyForActionName:!1,sessionReplaySampleRate:0,sessionSampleRate:100,silentMultipleInit:!1,site:"datadoghq.com",startSessionReplayRecordingManually:!1,storeContextsAcrossPages:!1,telemetrySampleRate:20,traceSampleRate:100,trackingConsent:"granted",trackLongTasks:!1,trackResources:!1,trackUserInteractions:!1,trackViewsManually:!1};o.config={...t,...s.sdk}}return o},Dt=({options:e,context:t})=>{const n=((e,t)=>{const n=[],s=Tt(e);if(n.push(...s.errors),n.length)throw t.error(`\n - ${n.join("\n - ")}`),new Error(`Invalid configuration for ${bt}.`);const o={disabled:!e[Et],...e[Et],sdk:void 0};return s.config&&(o.sdk=s.config),o})(e,t.getLogger(bt)),s=[];return n.disabled||n.sdk&&(t.inject({type:"file",position:_t.MIDDLE,value:r.join(__dirname,"./rum-browser-sdk.js")}),t.inject({type:"code",position:_t.MIDDLE,value:wt(n,t)})),s},Rt="telemetry",St="datadog-telemetry-plugin",Ot=[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};return/(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),e.value>t[e.type]?e:null}],vt=(e,t)=>({type:"gauge",tags:[...e.tags,...t.tags],metric:`${t.prefix?`${t.prefix}.`:""}${e.metric}`,points:[[t.timestamp,e.value]]}),$t=(e="")=>e.endsWith("/")?e:`${e}/`,Ut=(e,t)=>{let n=e;return e.split($t(t)),n.split("!").pop().replace(/(.*)?\/node_modules\//,"/node_modules/").replace(/^((\.)*\/)+/,"")},Ct=(e,t)=>e.split("!").pop().replace($t(t),"./"),Nt=(e,t,n)=>{let s=e.name||e.userRequest;return s||(s=((e,t)=>{let n=e.userRequest;if(!n){let s;s=t.moduleGraph&&"function"==typeof t.moduleGraph.getIssuer?t.moduleGraph.getIssuer(e):e.issuer,n=s?.userRequest,n||(n=e._identifier?.split("!").pop())}return n||"unknown"})(e,t)),Ct(s||"no-name",n)},Mt=e=>e.replace(/^.*\/node_modules\/(@[a-z0-9][\w-.]+\/[a-z0-9][\w-.]*|[^/]+).*$/,"$1"),Bt=e=>e.map((e=>({type:e?.constructor?.name??typeof e,name:e?.name,value:"string"==typeof e?e:void 0}))),At=(e,t,n,s)=>{const o=new Set;if(s){const{timings:e}=s;e&&(e.tapables&&((e,t)=>{t.add({metric:"plugins.count",type:"count",value:e.size,tags:[]});for(const n of e.values()){let e=0,s=0;for(const o of Object.values(n.events)){let i=0;s+=o.values.length;for(const t of o.values){const n=t.end-t.start;i+=n,e+=n}t.add({metric:"plugins.hooks.duration",type:"duration",value:i,tags:[`pluginName:${n.name}`,`hookName:${o.name}`]}).add({metric:"plugins.hooks.increment",type:"count",value:o.values.length,tags:[`pluginName:${n.name}`,`hookName:${o.name}`]})}t.add({metric:"plugins.duration",type:"duration",value:e,tags:[`pluginName:${n.name}`]}).add({metric:"plugins.increment",type:"count",value:s,tags:[`pluginName:${n.name}`]})}})(e.tapables,o),e.loaders&&((e,t)=>{t.add({metric:"loaders.count",type:"count",value:e.size,tags:[]});for(const n of e.values())t.add({metric:"loaders.duration",type:"duration",value:n.duration,tags:[`loaderName:${n.name}`]}).add({metric:"loaders.increment",type:"count",value:n.increment,tags:[`loaderName:${n.name}`]})})(e.loaders,o))}((e,t)=>{const n=e.build.inputs||[],s=e.build.outputs||[],o=e.build.entries||[],i=e.build.warnings.length,r=e.build.errors.length,a=e.build.duration,u=new Map,c=new Map,p=new Map;for(const e of o){for(const t of e.inputs)u.has(t.filepath)||u.set(t.filepath,[]),u.get(t.filepath).push(e.name);for(const t of e.outputs){const n=t.filepath.replace(/\.map$/,"");p.has(n)||p.set(n,[]),p.get(n).push(e.name)}}for(const e of s)for(const t of e.inputs)c.has(t.filepath)||c.set(t.filepath,[]),c.get(t.filepath).push(e.name);t.add({metric:"assets.count",type:"count",value:s.length,tags:[]}).add({metric:"entries.count",type:"count",value:o.length,tags:[]}).add({metric:"errors.count",type:"count",value:r,tags:[]}).add({metric:"modules.count",type:"count",value:n.length,tags:[]}).add({metric:"warnings.count",type:"count",value:i,tags:[]}),a&&t.add({metric:"compilation.duration",type:"duration",value:a,tags:[]});for(const e of n){const n=[`moduleName:${e.name}`,`moduleType:${e.type}`];u.has(e.filepath)&&n.push(...u.get(e.filepath).map((e=>`entryName:${e}`))),c.has(e.filepath)&&n.push(...c.get(e.filepath).map((e=>`assetName:${e}`))),t.add({metric:"modules.size",type:"size",value:e.size,tags:n}).add({metric:"modules.dependencies",type:"count",value:e.dependencies.size,tags:n}).add({metric:"modules.dependents",type:"count",value:e.dependents.size,tags:n})}for(const e of s){const n=[`assetName:${e.name}`,`assetType:${e.type}`],s=e.filepath.replace(/\.map$/,"");p.has(s)&&n.push(...p.get(s).map((e=>`entryName:${e}`))),t.add({metric:"assets.size",type:"size",value:e.size,tags:n}).add({metric:"assets.modules.count",type:"count",value:e.inputs.length,tags:n})}for(const e of o){const n=[`entryName:${e.name}`];t.add({metric:"entries.size",type:"size",value:e.size,tags:n}).add({metric:"entries.modules.count",type:"count",value:e.inputs.length,tags:n}).add({metric:"entries.assets.count",type:"count",value:e.outputs.length,tags:n})}})(e,o);for(const e of o)if(t.filters?.length){let s=e;for(const n of t.filters){if(!s)break;s=n(e)}s&&n.add(vt(s,t))}else n.add(vt(e,t))},Lt=async(e,t,n,s)=>{if("string"!=typeof t&&"object"!=typeof t&&!t)return;const{report:o,metrics:i}=e,a=Date.now();let u="";const c={timings:!0,metrics:!0};"object"==typeof t?(u=t.destination,c.timings=t.timings||!1,c.metrics=t.metrics||!1):"string"==typeof t&&(u=t);const p=r.resolve(s,u);try{const e={},t={};c.timings&&o?.timings&&(t.timings={content:{tapables:o.timings.tapables?Array.from(o.timings.tapables.values()):null,loaders:o.timings.loaders?Array.from(o.timings.loaders.values()):null,modules:o.timings.modules?Array.from(o.timings.modules.values()):null}}),c.metrics&&(t.metrics={content:Array.from(i)});const s=Object.entries(t).map((async([t,s])=>{const o=Date.now();n.debug(`Start writing ${t}.json.`);try{await(async(e,t)=>{const n=JSON.stringify(t,null,4);return D(e,n)})(r.join(p,`${t}.json`),s.content),n.debug(`Wrote ${t}.json in ${$(Date.now()-o)}`)}catch(s){n.error(`Failed to write ${t}.json in ${$(Date.now()-o)}`),e[t]=s}}));await Promise.all(s),n.debug(`Wrote files in ${$(Date.now()-a)}.`);const u=Object.keys(e);u.length&&n.error(`Couldn't write files.\n${u.map((t=>` - ${t}: ${e[t].toString()}`))}`)}catch(e){n.error(`Couldn't write files. ${e}`)}},kt=t.bold.red,Pt=t.bold.cyan,jt=e=>(t,n)=>{let s,o;return"function"==typeof e?(s=e(t),o=e(n)):(s=t[e],o=n[e]),s>o?-1:s<o?1:0},xt=(e,t)=>{if(!t||!t.size)return[];const n=Array.from(t.values());n.sort(jt("duration"));const s={name:`${e} duration`,values:n.map((e=>({name:e.name,value:$(e.duration)}))),top:!0};n.sort(jt("increment"));const o={name:`${e} hits`,values:n.map((e=>({name:e.name,value:e.increment.toString()}))),top:!0};return[s,o]},Gt=(e,t,n)=>{const s=[];var o;n&&(s.push(...xt("Loader",n.timings.loaders)),s.push(...xt("Tapable",n.timings.tapables)),s.push(...xt("Module",n.timings.modules))),s.push(...(e=>{const t={name:"Module total dependents",values:[],top:!0},n={name:"Module total dependencies",values:[],top:!0},s={name:"Module size",values:[],top:!0},o={name:"Module aggregated size",values:[],top:!0},i=new Set,r=(e=>{const t={bundler:e.bundler,errors:e.errors,warnings:e.warnings,logs:e.logs,metadata:e.metadata,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})(e.build),a=new Map,u=new Map,c=new Map;for(const e of r.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,s=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:s,dependencies:n})}if(!i.size)return[t,n,s];const p=Array.from(i);return p.sort(jt((e=>e.dependents.size))),t.values=p.map((e=>({name:e.name,value:e.dependents.size.toString()}))),p.sort(jt((e=>e.dependencies.size))),n.values=p.map((e=>({name:e.name,value:e.dependencies.size.toString()}))),p.sort(jt("size")),s.values=p.map((e=>({name:e.name,value:h(e.size)}))),p.sort(jt("aggregatedSize")),o.values=p.map((e=>({name:e.name,value:h(e.aggregatedSize||e.size)}))),[t,n,s,o]})(e)),s.push(...(o=e,[{name:"Asset size",values:(o.build.outputs||[]).filter((e=>"map"!==e.type)).sort(jt((e=>e.size))).map((e=>({name:e.name,value:h(e.size)}))),top:!0},{name:"Entry aggregated size",values:(o.build.entries||[]).sort(jt((e=>e.size))).map((e=>({name:e.name,value:h(e.size)}))),top:!0},{name:"Entry number of modules",values:(o.build.entries||[]).sort(jt((e=>e.size))).map((e=>({name:e.name,value:e.inputs.length.toString()})))||[],top:!0}])),s.push(...(e=>{const t={name:"General Numbers",values:[],top:!1},n=e.build.inputs?e.build.inputs.length:0,s=e.build.outputs?e.build.outputs.length:0,o=e.build.warnings.length,i=e.build.errors.length,r=e.build.entries?e.build.entries.length:0;return e.build.start&&t.values.push({name:"Overhead duration",value:$(e.build.start-e.start)}),e.build.duration&&t.values.push({name:"Build duration",value:$(e.build.duration)}),e.build.writeDuration&&t.values.push({name:"Write duration",value:$(e.build.writeDuration)}),t.values.push({name:"Number of modules",value:n.toString()},{name:"Number of assets",value:s.toString()},{name:"Number of entries",value:r.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=U(e.name,60)}const n=Math.max(...e.map((e=>e.name.length))),s=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,s+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+=` [${kt(e.value)}] ${" ".repeat(n)}${Pt(e.name)}\n`}}return t})(s);t.info(i)},Ht=["onStart","onLoad","onResolve","onEnd"],Ft=new Map,zt=new Map,Kt=(e,t,n)=>{const s=Object.assign({},e);for(const o of Ht)s[o]=async(s,i)=>{const r=Ft.get(t)||{name:t,increment:0,duration:0,events:{}};r.events[o]=r.events[o]||{name:o,values:[]};return(0,e[o])(s,(async(...e)=>{const s=Ct(e[0].path,n),a=zt.get(s)||{name:s,increment:0,duration:0,events:{}};a.events[o]=a.events[o]||{name:o,values:[]};const u=g.now();try{return await i(...e)}finally{const n=g.now(),i=n-u,c={start:u,end:n,duration:i,context:Bt(e)};r.events[o].values.push(c),r.duration+=i,r.increment+=1,Ft.set(t,r),a.events[o].values.push(c),a.duration+=i,a.increment+=1,zt.set(s,a)}}))};return s},Yt=(e,t,n)=>({setup:s=>{t.build.start=Date.now(),s.initialOptions.metafile=!0;const o=n.time("wrapping plugins");((e,t)=>{const n=e.initialOptions.plugins;if(n){const e=n.map((e=>({...e})));for(const s of n){if(s.name.includes(St))continue;const n=s.setup;s.setup=async o=>{const i=Kt(o,s.name,t);await n({...i,initialOptions:{...i.initialOptions,plugins:e}})}}}})(s,t.cwd),o.end(),s.onEnd((async t=>{if(!t.metafile)return void n.warn("Missing metafile, can't proceed with modules data.");const s=n.time("getting plugins results"),{plugins:o,modules:i}={plugins:Ft,modules:zt};s.end(),e.report={timings:{tapables:o,modules:i}}}))}});class Vt{constructor(e){this.started={},this.finished=[],this.cwd=e}startModule(e,t){const n=Nt(e,t,this.cwd),s=(e=>(e.loaders||[]).map((e=>e.loader||e)).map(Mt))(e);s.length||s.push("no-loader"),this.started[n]={module:Ut(n),timings:{start:g.now(),duration:0,end:0},loaders:s}}doneModule(e,t){const n=Nt(e,t,this.cwd),s=this.started[n];s&&(s.timings.end=g.now(),s.timings.duration=s.timings.end-s.timings.start,this.finished.push(s),delete this.started[n])}getResults(){const e=new Map,t=new Map;for(const n of this.finished){const s=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+=s,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+=s,e.set(t,n)}}return{loaders:e,modules:t}}}class Jt{constructor(e){this.monitoredTaps={},this.tapables=[],this.hooks={},this.timings=new Map,this.ignoredHooks=["normalModuleLoader"],this.cwd=e}saveResult(e,t,n,s,o,i){const r=this.timings.get(t)||{name:t,duration:0,increment:0,events:{}};r.events[n]||(r.events[n]={name:n,values:[]}),r.events[n].values.push({start:o,end:i,duration:i-o,context:s,type:e}),r.duration+=i-o,r.increment+=1,this.timings.set(t,r)}getResults(){const e=this.timings;for(const[t,n]of this.timings){const s=n;s.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,s)}return{monitoredTaps:this.monitoredTaps,tapables:this.tapables,hooks:this.hooks,timings:e}}getPromiseTapPatch(e,t,n,s){return(...o)=>{this.checkNewHooks();const i=g.now(),r=t.apply(this,o),a=()=>{this.saveResult(e,n,s,Bt(o),i,g.now())};return r.then(a,a),r}}getAsyncTapPatch(e,t,n,s){return(...o)=>{this.checkNewHooks();const i=g.now(),r=o.pop();return t.apply(this,[...o,(...t)=>(this.saveResult(e,n,s,Bt(o),i,g.now()),r(...t))])}}getDefaultTapPatch(e,t,n,s){return(...o)=>{this.checkNewHooks();const i=g.now(),r=t.apply(this,o);return this.saveResult(e,n,s,Bt(o),i,g.now()),r}}getTapPatch(e,t,n,s){switch(e){case"promise":return this.getPromiseTapPatch(e,t,n,s);case"async":return this.getAsyncTapPatch(e,t,n,s);default:return this.getDefaultTapPatch(e,t,n,s)}}newTap(e,t,n,s){return(o,i)=>{const r="string"==typeof(a=o)?a:a.name;var a;const u=`${t}-${r}`;if(this.monitoredTaps[u])return n.call(s,o,i);this.monitoredTaps[u]=!0;const c=this.getTapPatch(e,i,r,t);return n.call(s,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(St)||(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 s of n)this.patchHook(t,s,e.hooks[s])}checkNewHooks(){for(const e of this.tapables)this.patchHooks(e)}throughHooks(e){this.tapables.includes(e)||this.tapables.push(e),this.patchHooks(e)}}const Wt=(e,t)=>async n=>{const s=t.getLogger(St);t.build.start=Date.now();const o={name:St},i=new Jt(t.cwd),r=new Vt(t.cwd),a=s.time("parse compiler hooks");i.throughHooks(n),a.end(),n.hooks.thisCompilation.tap(o,(e=>{const t=s.time("parse compilation hooks");i.throughHooks(e),t.end(),e.hooks.buildModule.tap(o,(t=>{r.startModule(t,e)})),e.hooks.succeedModule.tap(o,(t=>{r.doneModule(t,e)})),e.hooks.failedModule&&e.hooks.failedModule.tap(o,(t=>{r.doneModule(t,e)}))})),n.hooks.afterEmit.tapPromise(o,(async t=>{const{timings:n}=i.getResults(),{loaders:s,modules:o}=r.getResults();e.report={timings:{tapables:n,loaders:s,modules:o}}}))},qt={filters:Ot},Xt=({options:e,context:t})=>{const n=t.getLogger(St);let s=0;const o={start:Date.now()},i=(e=>{const t=e[Rt]?.endPoint||"https://app.datadoghq.com";return{disabled:!e[Rt],enableTracing:!1,filters:Ot,output:!1,prefix:"",tags:[],...e[Rt],endPoint:t.startsWith("http")?t:`https://${t}`}})(e),r=[];if(i.disabled)return r;const a={name:St,enforce:"pre",esbuild:Yt(o,t,n),webpack:Wt(o,t),rspack:Wt(o,t)},u=n.time("build",{start:!1}),c={name:"datadog-universal-telemetry-plugin",enforce:"post",buildStart(){u.resume(),t.build.start=t.build.start||Date.now()},buildEnd(){u.end(),s=Date.now()},async writeBundle(){t.build.end=Date.now(),t.build.duration=t.build.end-t.build.start,t.build.writeDuration=t.build.end-s;const e=new Set,r=(e=>({timestamp:Math.floor((e.timestamp||Date.now())/1e3),tags:e.tags,prefix:e.prefix,filters:e.filters}))(i),a=n.time("aggregating metrics");At(t,r,e,o.report),a.end();const u=n.time("writing to files");await Lt({report:o.report,metrics:e},i.output,n,t.bundler.outDir),u.end();const c=n.time("outputing report");Gt(t,n,o.report),c.end();const p=n.time("sending metrics to Datadog");await((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.info("No metrics to send.");const s=new Map;for(const t of e)s.has(t.metric)||s.set(t.metric,0),s.set(t.metric,s.get(t.metric)+1);const o=Array.from(s.entries()).map((([e,t])=>`${e} - ${t}`));return n.debug(`\nSending ${e.size} metrics.\nMetrics:\n - ${o.join("\n - ")}`),We({method:"POST",url:`${t.endPoint}/api/v1/series?api_key=${t.apiKey}`,getData:()=>({data:JSON.stringify({series:Array.from(e)})})}).catch((e=>{n.error(`Error sending metrics ${e}`)}))})(e,{apiKey:t.auth?.apiKey,endPoint:i.endPoint},n),p.end()}};return i.enableTracing&&r.push(a),r.push(c),r},Qt="datadog-analytics-plugin",Zt=e=>{const{context:t}=e,n=e.context.getLogger(Qt);return t.sendLog=async(e,s={})=>{if("production"===t.env)try{const n={name:t.bundler.name,version:t.bundler.version};await We({retries:2,minTimeout:100,url:"https://browser-http-intake.logs.datadoghq.com/v1/input/pub44d5f4eb86e1392037b7501f7adc540e",method:"POST",type:"json",getData:async()=>{const o={ddsource:`@datadog/${n.name}-plugin`,env:t.env,message:e,service:"build-plugins",bundler:n,plugins:t.pluginNames,version:t.version,team:"language-foundations",...s};return{data:JSON.stringify(o),headers:{"Content-Type":"application/json"}}}})}catch(e){n.debug(`Could not submit data to Datadog: ${e}`)}},[{name:Qt,async buildStart(){await t.sendLog("Build started")}}]},en=(e,t)=>{const n=(e=>{let t,n=ve(process.cwd(),e),s=n.split(r.sep).length;for(;s>0;){const e=r.resolve(n,"package.json");o.existsSync(e)&&(t=n),n=n.split(r.sep).slice(0,-1).join(r.sep),s--}return t})(t);if(n)return n;const s=(e=>{const t=[...e].map((e=>ve(process.cwd(),e).split(r.sep))),n=Math.min(...t.map((e=>e.length))),s=[];for(let e=0;e<n;e++){const n=t[0][e];if(!t.every((t=>t[e]===n)))break;s.push(n)}return s.length>0&&s.join(r.sep)||r.sep})(Array.from(e));return s!==r.sep?s:void 0},tn=e=>t=>{e.bundler.rawConfig=t.options,t.options.output?.path&&(e.bundler.outDir=t.options.output.path),e.hook("bundlerReport",e.bundler),t.options.context&&(e.cwd=t.options.context),e.hook("cwd",e.cwd)},nn=e=>{const{context:t}=e,n=new Set,s=e=>{e&&(e.dir?(t.bundler.outDir=e.dir,n.add(e.dir)):e.file&&(t.bundler.outDir=r.dirname(e.file),n.add(t.bundler.outDir)),t.bundler.outDir=ve(process.cwd(),t.bundler.outDir),"vite"!==t.bundler.name&&(t.cwd=en(n,t.bundler.outDir)||t.cwd,t.hook("cwd",t.cwd)))},o=()=>({options(e){if(t.bundler.rawConfig=e,e.input)if(Array.isArray(e.input))for(const t of e.input)n.add(r.dirname(t));else if("object"==typeof e.input)for(const t of Object.values(e.input))n.add(r.dirname(t));else{if("string"!=typeof e.input)throw new Error("Invalid input type");n.add(r.dirname(e.input))}if("output"in e){const t=Array.isArray(e.output)?e.output:[e.output];for(const e of t)s(e)}t.hook("bundlerReport",t.bundler)}});return[{name:"datadog-bundler-report-plugin",enforce:"pre",esbuild:{setup(e){t.bundler.rawConfig=e.initialOptions,e.initialOptions.outdir&&(t.bundler.outDir=e.initialOptions.outdir),e.initialOptions.outfile&&(t.bundler.outDir=r.dirname(e.initialOptions.outfile)),t.hook("bundlerReport",t.bundler),e.initialOptions.absWorkingDir&&(t.cwd=e.initialOptions.absWorkingDir),t.hook("cwd",t.cwd),e.initialOptions.metafile=!0}},webpack:tn(t),rspack:tn(t),vite:{...o(),config(e){e.root?t.cwd=e.root:t.cwd=en(n,t.bundler.outDir)||t.cwd,e.build?.outDir&&(t.bundler.outDir=e.build.outDir),t.hook("cwd",t.cwd)}},rollup:o()}]},sn="datadog-custom-hooks-plugin",on=e=>{const{context:t}=e,n=t.getLogger(sn),s=e=>(s,...o)=>{const i=n.time(`execution | ${s}`),r=[],a=[];for(const n of t.plugins){if(!(s in n))continue;const t=n[s];if("function"==typeof t)try{const i=t(...o);i instanceof Promise&&(e||r.push(`Plugin "${n.name}" returned a promise on the non async hook "${s}".`),a.push(i))}catch(e){r.push(`Plugin "${n.name}" errored on hook "${s}". [${e}]`)}else r.push(`Plugin "${n.name}" has an invalid hook type for "${s}". [${typeof t}]`)}if(r.length>0){for(const e of r)n.error(e);throw new Error("Some plugins errored during the hook execution.")}return Promise.all(a).finally((()=>i.end()))};return t.hook=s(!1),t.asyncHook=s(!0),[{name:sn,enforce:"pre"}]};class rn{constructor(e){this.trackedFilenames=new Map;for(const t of e){const e=this.getFilename(t),n=this.trackedFilenames.get(e);n?n.push(t):this.trackedFilenames.set(e,new Array(t))}}displaySource(e){return e.length<=40?e:`[...]${e.slice(-35)}`}matchSourcemap(e,t){const n=o.readFileSync(e,"utf8"),s=JSON.parse(n);if(!s.sources)return void t("Missing 'sources' field in sourcemap.");const i=s.sources;if(0===i.length)return void t("Empty 'sources' field in sourcemap.");const r=this.matchSources(i);if(0!==r.length)return r;t(`${i.map(this.displaySource).join(", ")} not in the tracked files.`)}matchSources(e){let t=[];const n=new Set;for(const s of e){const e=this.getFilename(s);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 an=async e=>{const t=await e.getRemotes(!0);if(0===t.length)throw new Error("No git remotes available");const n=await un(e);for(const e of t)if(e.name===n)return C(e.refs.push);return C(t[0].refs.push)},un=async e=>{try{return(await e.getConfig("clone.defaultRemoteName"))?.value??"origin"}catch(e){return"origin"}},cn=async e=>e.revparse("HEAD"),pn=async e=>(await e.raw("ls-files")).split(/\r\n|\r|\n/),ln=async e=>e.branch(),dn=async e=>e.show(["-s","--format=%s"]),mn=async e=>e.show(["-s","--format=%an,%ae,%aI,%cn,%ce,%cI"]),fn="datadog-git-plugin",hn=e=>{const{options:t,context:n}=e,s=n.getLogger(fn);return[{name:fn,enforce:"pre",async buildStart(){if(v(t))try{const e=s.time("get git information"),t=await(async e=>{const t=[cn(e),ln(e),dn(e),mn(e),pn(e),an(e)],[n,s,o,i,r,a]=await Promise.all(t),[u,c,p,l,d,m]=i.split(",").map((e=>e.trim()));return{commit:{author:{name:u,email:c,date:p},committer:{name:l,email:d,date:m},message:o.trim(),hash:n},branch:s.current,remote:a.trim(),trackedFilesMatcher:new rn(r)}})(await(async e=>{const t={baseDir:e||process.cwd(),binary:"git",maxConcurrentProcesses:3};try{const e=I(t),n=await e.revparse("--show-toplevel");t.baseDir=n}catch{}return I(t)})(n.cwd));n.git=t,e.end(),await n.asyncHook("git",n.git)}catch(e){s.error(`Could not get git information: ${e.message}`)}}}]},gn="datadog-injection-plugin",In=/^https?:\/\//,_n=async(e,t,n=process.cwd())=>{let o;const i=await(async e=>"function"==typeof e.value?e.value():e.value)(e);try{if("file"===e.type)o=i.match(In)?await(async(e,t=5e3)=>{let n;return Promise.race([We({retries:2,minTimeout:100,url:e}).finally((()=>{t&&clearTimeout(n)})),new Promise(((e,s)=>{n=setTimeout((()=>{s(new Error("Timeout"))}),t)}))])})(i):await(async(e,t=process.cwd())=>{const n=ve(t,e);return s(n,{encoding:"utf-8"})})(i,n);else{if("code"!==e.type)throw new Error(`Invalid item type "${e.type}", only accepts "code" or "file".`);o=i}}catch(n){const s=`${e.type} - ${U(i)}`;e.fallback?(t.info(`Fallback for "${s}": ${n.toString()}`),o=await _n(e.fallback,t)):(t.warn(`Failed "${s}": ${n.toString()}`),o="")}return o},En=e=>{if(0===e.size)return"";return`// begin injection by Datadog build plugins\n${Array.from(e.values()).map((e=>`(() => {${e}})();`)).join("\n\n")}\n// end injection by Datadog build plugins`},bn=async(e,t,n,s=process.cwd())=>{const o=await(async(e,t,n=process.cwd())=>{const s=new Map;for(const[o,i]of e.entries()){const e=await _n(i,t,n);e&&s.set(o,{value:e,position:i.position||_t.BEFORE})}return s})(t,e,s);for(const[e,t]of o.entries())n[t.position].set(e,t.value)},yn=o.promises,wn=(e,t,n)=>({setup(s){const{onStart:i,onResolve:a,onLoad:u,onEnd:c,esbuild:p,initialOptions:l}=s,d=[],m=`${B()}.${_t.MIDDLE}.${y}.js`,f=o.realpathSync(_.tmpdir()),h=r.resolve(f,m),g=new RegExp(`${m}$`),I=l.inject;l.inject=I?[...I]:[],l.inject.push(h),i((async()=>{d.push(...await Oe(s,t,e)),s.initialOptions.inject=I;try{await D(h,"")}catch(t){e.error(`Could not create the files: ${t.message}`)}})),a({filter:g},(async e=>({path:e.path,namespace:gn}))),u({filter:g,namespace:gn},(async()=>({contents:En(n[_t.MIDDLE])||" ",resolveDir:t.cwd,loader:"js"}))),c((async s=>{if(!s.metafile)return void e.warn("Missing metafile from build result.");const o=En(n[_t.BEFORE]),i=En(n[_t.AFTER]);if(!o&&!i)return;const r=Object.entries(s.metafile.outputs).map((([e,n])=>{const s=n.entryPoint;if(!s)return;return d.find((e=>e.resolved.endsWith(s)))?ve(t.cwd,e):void 0})).filter(Boolean).map((async e=>{const t=await yn.readFile(e,"utf-8"),n=await p.transform(t,{loader:"default",banner:o,footer:i});await yn.writeFile(e,n.code)}));await Promise.all(r)}))}}),Tn=y,Dn="?inject-proxy",Rn=e=>({banner:t=>t.isEntry?En(e[_t.BEFORE]):"",async resolveId(t,n,s){if(O(t))return{id:t,moduleSideEffects:!0};if(s.isEntry&&En(e[_t.MIDDLE])){const e=await this.resolve(t,n,s);if(!e||e.external)return e;return(await this.load(e)).moduleSideEffects=!0,`${e.id}${Dn}`}return null},load(t){if(O(t))return En(e[_t.MIDDLE]);if(t.endsWith(Dn)){const e=t.slice(0,-13),n=this.getModuleInfo(e);let s=`import ${JSON.stringify(Tn)};\nexport * from ${JSON.stringify(e)};`;return n?.hasDefaultExport&&(s+=`export { default } from ${JSON.stringify(e)};`),s}return null},footer:t=>t.isEntry?En(e[_t.AFTER]):""}),Sn=(e,t,n,s,i)=>a=>{const u=new WeakMap,c=(e=>{if(!e?.sources?.ConcatSource)return E(require.resolve("webpack"))("webpack-sources").ConcatSource;return e.sources.ConcatSource})(e),p=r.resolve(n.bundler.outDir,`${B()}.${_t.MIDDLE}.${y}.js`);R(p,"");const l=()=>{var e;e=p,o.rmSync(e,{force:!0,maxRetries:3,recursive:!0})};a.hooks.shutdown?a.hooks.shutdown.tap(gn,l):(a.hooks.done.tap(gn,l),a.hooks.failed.tap(gn,l));a.hooks.beforeRun.tapPromise(gn,(async()=>{await bn(t,s,i,n.cwd)})),a.hooks.compilation.tap(gn,(t=>{const n=()=>{const e=En(i[_t.BEFORE]),n=En(i[_t.AFTER]);for(const s of t.chunks)if(s.canBeInitial())for(const o of s.files)t.updateAsset(o,(t=>{const s=u.get(t);if(!s||s.banner!==e||s.footer!==n){const s=new c(e,"\n",t,"\n",n);return u.set(t,{source:s,banner:e,footer:n}),s}return s.source}))};if(t.hooks.processAssets){const s=e.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS;t.hooks.processAssets.tap({name:gn,stage:s},n)}else t.hooks.optimizeChunkAssets.tap({name:gn},n)}));const d=(e=>{const s="webpack4"===n.bundler.fullName?p:{import:[p]},o=e=>{for(const[n,s]of Object.entries(e))"object"==typeof s?(s.import=s.import||[],s.import.unshift(p)):"string"==typeof s?e[n]=[p,s]:Array.isArray(s)?s.unshift(p):t.error("Invalid entry type: "+typeof s)};return e?"function"==typeof e?async()=>{const t=await e();return o(t),t}:"object"!=typeof e?"string"==typeof e?[s,e]:(t.error("Invalid entry type: "+typeof e),e):(o(e),e):{ddHelper:s}})(a.options.entry);a.options.entry=d},On=e=>{const{bundler:t,context:n}=e,s=n.getLogger(gn),o=new Map,i={[_t.BEFORE]:new Map,[_t.MIDDLE]:new Map,[_t.AFTER]:new Map};n.inject=e=>{o.set(B(),e)};const r={name:gn,enforce:"post",esbuild:wn(s,n,i),webpack:Sn(t,s,n,o,i),rspack:Sn(t,s,n,o,i),rollup:Rn(i),vite:{...Rn(i),enforce:"pre"}};var a;return a=n.bundler.fullName,["rspack","webpack4","webpack5","webpack"].includes(a)?(r.loadInclude=e=>!!O(e)||null,r.load=e=>O(e)?{code:En(i[_t.MIDDLE])}:null):r.buildStart=async()=>{await bn(s,o,i,n.cwd)},[r]},vn="datadog-true-end-plugin",$n=e=>{const{context:t}=e,n=async()=>{await t.asyncHook("asyncTrueEnd")},s=()=>{t.hook("syncTrueEnd")},o=async()=>{s(),await n()},i=e=>{e.hooks.shutdown?e.hooks.shutdown.tapPromise(vn,o):(e.hooks.done.tapPromise(vn,o),e.hooks.failed.tap(vn,s))},r={async writeBundle(){},async closeBundle(){await o()}};return[{name:vn,enforce:"post",webpack:i,esbuild:{setup(e){e.onEnd((async()=>{await n()})),e.onDispose((()=>{s()}))}},vite:r,rollup:r,rspack:i}]},Un={[Rt]:qt};var Cn="2.5.4-dev-1";const Nn=(({bundler:n,version:s})=>{const o=Date.now();return e(((e,i)=>{const r=((e={})=>({auth:{},disableGit:!1,logLevel:"warn",metadata:{},...e}))(e);"esbuild"===i.framework&&(i.esbuildHostName=T);const a=(({start:e,options:t,bundlerName:n,bundlerVersion:s,version:o})=>{const i=process.cwd(),r="webpack"===n?s.split(".")[0]:"",a={errors:[],warnings:[],logs:[],metadata:t.metadata||{},timings:[],bundler:{name:n,fullName:`${n}${r}`,variant:r,version:s}},u=process.env.BUILD_PLUGINS_ENV||"production",c=w.includes(u)?u:"development";return{auth:t.auth,pluginNames:[],bundler:{...a.bundler,outDir:i},build:a,cwd:i,env:c,getLogger:L(a,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.")},sendLog:()=>{throw new Error("SendLog function called before it was initialized.")},plugins:[],start:e,version:o}})({start:o,options:r,bundlerVersion:n.version||n.VERSION,bundlerName:i.framework,version:s}),u=a.getLogger("factory").time("Plugins initialization",{start:o});a.pluginNames.push(T);const c=[];c.push(["analytics",Zt],["build-report",Ge],["bundler-report",nn],["custom-hooks",on],["git",hn],["injection",On],["true-end",$n]),r.customPlugins&&c.push(["custom",r.customPlugins]),c.push(["ci-visibility",Ze],["error-tracking",It],["rum",Dt],["telemetry",Xt]);for(const[e,t]of c)a.plugins.push(...j(a,t,e)({bundler:n,context:a,options:r}));a.pluginNames.push(...a.plugins.map((e=>e.name)));const p=new Set(a.pluginNames.filter((e=>a.pluginNames.filter((t=>t===e)).length>1)));if(p.size>0)throw new Error(`Duplicate plugin names: ${t.bold.red(Array.from(p).join(", "))}`);return a.hook("init",a),u.end(),a.plugins}))})({bundler:b,version:Cn}).webpack,Mn=Cn,Bn=Un;export{Nn as datadogWebpackPlugin,Bn as helpers,Mn as version};
13
13
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../factory/src/validate.ts","../../../../plugins/error-tracking/src/sourcemaps/index.ts"],"sourcesContent":["// Unless explicitly stated otherwise all files in this repository are licensed under the MIT License.\n// This product includes software developed at Datadog (https://www.datadoghq.com/).\n// Copyright 2019-Present Datadog, Inc.\n\nimport type { Options, OptionsWithDefaults } from '@dd/core/types';\n\nexport const validateOptions = (options: Options = {}): OptionsWithDefaults => {\n return {\n auth: {},\n disableGit: false,\n logLevel: 'warn',\n ...options,\n };\n};\n","// Unless explicitly stated otherwise all files in this repository are licensed under the MIT License.\n// This product includes software developed at Datadog (https://www.datadoghq.com/).\n// Copyright 2019-Present Datadog, Inc.\n\nimport type { Logger, GlobalContext } from '@dd/core/types';\nimport chalk from 'chalk';\nimport { outdent } from 'outdent';\n\nimport type { ErrorTrackingOptionsWithSourcemaps } from '../types';\n\nimport { getSourcemapsFiles } from './files';\nimport { sendSourcemaps } from './sender';\n\nexport const uploadSourcemaps = async (\n options: ErrorTrackingOptionsWithSourcemaps,\n context: GlobalContext,\n log: Logger,\n) => {\n // Show a pretty summary of the configuration.\n const green = chalk.green.bold;\n const configurationString = Object.entries(options.sourcemaps)\n .map(([key, value]) => ` - ${key}: ${green(value.toString())}`)\n .join('\\n');\n\n // Gather the sourcemaps files.\n const sourcemapsTime = log.time('get sourcemaps files');\n const sourcemaps = getSourcemapsFiles(options.sourcemaps, context);\n sourcemapsTime.end();\n\n const summary = outdent`\n Uploading ${green(sourcemaps.length.toString())} sourcemaps with configuration:\n ${configurationString}\n `;\n\n log.info(summary);\n\n // Send everything.\n const sendTime = log.time('send sourcemaps');\n await sendSourcemaps(sourcemaps, options.sourcemaps, context, log);\n sendTime.end();\n};\n"],"names":["green","configurationString","log"],"mappings":";;;;;;;;AAMO;ACwBSA;AACVC;AAGFC"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../factory/src/validate.ts","../../../../plugins/error-tracking/src/sourcemaps/index.ts"],"sourcesContent":["// Unless explicitly stated otherwise all files in this repository are licensed under the MIT License.\n// This product includes software developed at Datadog (https://www.datadoghq.com/).\n// Copyright 2019-Present Datadog, Inc.\n\nimport type { Options, OptionsWithDefaults } from '@dd/core/types';\n\nexport const validateOptions = (options: Options = {}): OptionsWithDefaults => {\n return {\n auth: {},\n disableGit: false,\n logLevel: 'warn',\n metadata: {},\n ...options,\n };\n};\n","// Unless explicitly stated otherwise all files in this repository are licensed under the MIT License.\n// This product includes software developed at Datadog (https://www.datadoghq.com/).\n// Copyright 2019-Present Datadog, Inc.\n\nimport type { Logger, GlobalContext } from '@dd/core/types';\nimport chalk from 'chalk';\nimport { outdent } from 'outdent';\n\nimport type { ErrorTrackingOptionsWithSourcemaps } from '../types';\n\nimport { getSourcemapsFiles } from './files';\nimport { sendSourcemaps } from './sender';\n\nexport const uploadSourcemaps = async (\n options: ErrorTrackingOptionsWithSourcemaps,\n context: GlobalContext,\n log: Logger,\n) => {\n // Show a pretty summary of the configuration.\n const green = chalk.green.bold;\n const configurationString = Object.entries(options.sourcemaps)\n .map(([key, value]) => ` - ${key}: ${green(value.toString())}`)\n .join('\\n');\n\n // Gather the sourcemaps files.\n const sourcemapsTime = log.time('get sourcemaps files');\n const sourcemaps = getSourcemapsFiles(options.sourcemaps, context);\n sourcemapsTime.end();\n\n const summary = outdent`\n Uploading ${green(sourcemaps.length.toString())} sourcemaps with configuration:\n ${configurationString}\n `;\n\n log.info(summary);\n\n // Send everything.\n const sendTime = log.time('send sourcemaps');\n await sendSourcemaps(sourcemaps, options.sourcemaps, context, log);\n sendTime.end();\n};\n"],"names":["green","configurationString"],"mappings":";;;;;;;;AAMO;ACwBSA;AACVC;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@datadog/webpack-plugin",
3
3
  "packageManager": "yarn@4.0.2",
4
- "version": "2.5.3",
4
+ "version": "2.5.4-dev-1",
5
5
  "license": "MIT",
6
6
  "author": "Datadog",
7
7
  "description": "Datadog Webpack Plugin",
@@ -84,5 +84,6 @@
84
84
  },
85
85
  "peerDependencies": {
86
86
  "webpack": ">= 4.x < 6.x"
87
- }
87
+ },
88
+ "stableVersion": "2.5.3"
88
89
  }