@datadog/rollup-plugin 2.5.4-dev-1 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.d.ts +6 -16
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +4 -4
- package/dist/src/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/src/index.mjs
CHANGED
|
@@ -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{
|
|
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 w from"os";import{createRequire as y}from"module";import b from"rollup";
|
|
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 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(
|
|
9
|
+
const v="__datadog-helper-file",$=["development","production","test"],k="datadog-build-plugins",S=async(e,t)=>{await(async e=>n.mkdir(e,{recursive:!0}))(r.dirname(e)),await n.writeFile(e,t,{encoding:"utf-8"})},D=(e,t)=>{var n;n=r.dirname(e),o.mkdirSync(n,{recursive:!0}),o.writeFileSync(e,t,{encoding:"utf-8"})},E=e=>e.replace(/^@dd\/(datadog-|internal-)?|^datadog-|-plugin$/g,""),P=e=>e.includes(v),M=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()},x=(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)}`},T=(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}};let j=0;const z=()=>`${Date.now()}.${performance.now()}.${++j}`,O={debug:0,info:1,warn:2,error:3,none:4},N=(e,n="warn")=>s=>{const o=(e=>e.split(">").map(E).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 p=`[${e.metadata?.name?`${e.metadata.name}|`:""}${r}|${e.bundler.fullName}|${o}]`,c="string"==typeof i?i:JSON.stringify(i,null,2);e.logs.push({bundler:e.bundler.fullName,pluginName:s,type:r,message:c,time:Date.now()}),"error"===r&&e.errors.push(c),"warn"===r&&e.warnings.push(c),O[r]>=O[n]&&u(`${a(p)} ${c}`)};return{getLogger:t=>N(e,n)(`${o}>${t}`),time:(n,o={})=>{const{level:r="debug",start:a=!0,log:u=!0,tags:p=[]}=o,c={pluginName:s,label:n,spans:[],tags:[...p,`plugin:${s}`,`level:${r}`],logLevel:r,total:0};e.timings.push(c);const l=()=>c.spans.filter((e=>!e.end)),d=e=>{l().length||(!c.spans.length&&u&&i(t.dim(`[${t.cyan(n)}] : start`),"debug"),c.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:c,resume:d,end:e=>{m(e);const s=c.spans.reduce(((e,t)=>e+(t.end-t.start)),0);c.total=s,u&&i(`[${t.cyan(n)}] : ${t.cyan(M(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 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(`${e} | ${t}`,{log:!1,tags:["type:hook",`hook:${t}`]}),r=n(...o);return r instanceof Promise?r.finally((()=>{i.end()})):(i.end(),r)},A=(e,t,n)=>{const s=e.getLogger(k);return e=>{const o=s.time(`hook | init ${n}`,{log:!1}),i=t(e).map((e=>((e,t)=>{const n={...e},s=E(e.name);for(const o of R){const i=e[o];i&&(n[o]=I(s,o,i,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={"X-Datadog-Origin":"build-plugins"};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)},B=/[/]+|[\\]+/g,K=/^[/]+|^[\\]+|[/]+$|[\\]+$/g,W=(e,t)=>{const n=e.replace(K,"").split(B),s=t.replace(K,"").split(B),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:W(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-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({auth:{apiKey:n.auth.apiKey},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(M(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:
|
|
11
11
|
${i}
|
|
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}).rollup,Mn=Cn,Bn=Un;export{Nn as datadogRollupPlugin,Bn as helpers,Mn as version};
|
|
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));n.add(me({metric:"metrics.count",type:"count",value:n.size+1,tags:[]},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 S(e,n)})(r.join(c,`${t}.json`),s.content),n.debug(`Wrote ${t}.json in ${M(Date.now()-o)}`)}catch(s){n.error(`Failed to write ${t}.json in ${M(Date.now()-o)}`),e[t]=s}}));await Promise.all(s),n.debug(`Wrote files in ${M(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:M(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,metadata:e.metadata,warnings:e.warnings,logs:e.logs,timings:e.timings,start:e.start,end:e.end,duration:e.duration,writeDuration:e.writeDuration,entries:[],inputs:[],outputs:[]};for(const n of e.entries||[]){const e={...n,inputs:[],outputs:[]};n.inputs&&(e.inputs=n.inputs.map((e=>e.filepath))),n.outputs&&(e.outputs=n.outputs.map((e=>e.filepath))),t.entries.push(e)}for(const n of e.inputs||[]){const e={...n,dependencies:[],dependents:[]};if(n.dependencies)for(const t of n.dependencies)e.dependencies.push(t.filepath);if(n.dependents)for(const t of n.dependents)e.dependents.push(t.filepath);t.inputs.push(e)}for(const n of e.outputs||[]){const e={...n,inputs:[]};n.inputs&&(e.inputs=n.inputs.map((e=>e.filepath))),t.outputs.push(e)}return t})(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:M(e.build.start-e.start)}),e.build.duration&&t.values.push({name:"Build duration",value:M(e.build.duration)}),e.build.writeDuration&&t.values.push({name:"Write duration",value:M(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=x(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,Te=new Map,je=(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=Te.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,Te.set(s,a)}}))};return s},ze=(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=je(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:Te};s.end(),e.report={timings:{tapables:o,modules:i}}}))}});class Oe{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 Oe(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:ze(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()).sort((([e],[t])=>e.localeCompare(t))).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,metadata:t.build.metadata,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)=>P(t)?v:t.startsWith(e)||r.isAbsolute(t)?t:r.resolve(e,t),He=/\.(?!.*(?:\.|\/|\\))(\w{1,})/g,Be=/(\?|%3F|\|)+/gi,Ke=e=>{return"unknown"===e?e:e.includes("webpack/runtime")?"runtime":(t=Ue(e),He.lastIndex=0,He.exec(t)?.[1]||"unknown");var t},We=["unknown","commonjsHelpers.js",`vite${r.sep}preload-helper.js`],qe=(e,t,n)=>{const s=new Set;for(const n of e){const e=Ue(n);P(n)||e===t||We.includes(e)||s.add(e)}return s},Ue=e=>e.split("!").pop().split(Be).shift().replace(/^[^\w\s.,!@#$%^&*()=+~`\-/\\]+/,""),Ge=(e,t)=>P(t)?v:"unknown"===t?t:t.includes("webpack/runtime")?t.replace("webpack/runtime/","").replace(/ +/g,"-"):((e,t)=>{const n=t.split(r.sep),s=e.split(r.sep).filter(((e,t)=>e===n[t])).join(r.sep);return e.replace(s,"")})(t.split("!").pop(),_e(e.cwd,e.bundler.outDir)).split("node_modules").pop().split(Be).shift().replace(/^((\.\.?)?[/\\])+/g,""),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(!P(e))return e;const t=g[_e(a,e)];if(!t)return e;const n=t.imports.find((e=>!P(e.path)));return n?n.path:e},b=t.time("looping through inputs");for(const[t,s]of Object.entries(n.metafile.inputs)){if(P(t))continue;const n=_e(a,t),o={name:Ge(e,t),filepath:n,dependents:new Set,dependencies:new Set,size:s.bytes,type:Ke(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(P(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:Ke(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=>!P(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},M=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)}M.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("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=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.tag([`module:${t}`],{span:!0}),n.pause()},writeBundle(n,o){const i=t.time("build report"),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,i]of Object.entries(o)){const o={name:n,filepath:_e(e.bundler.outDir,n),inputs:[],size:"code"in i?Buffer.byteLength(i.code,"utf8"):Buffer.byteLength(i.source,"utf8"),type:Ke(n)};if("map"===o.type&&p.push(o),"modules"in i)for(const[t,n]of Object.entries(i.modules)){if(Ue(t)!==t)continue;const s={name:Ge(e,t),dependencies:new Set,dependents:new Set,filepath:t,size:n.originalLength,type:Ke(t)};o.inputs.push(s),d[s.filepath]=s,r.push(s)}if("imports"in i)for(const n of i.imports){const i=Ue(n);if(!s[i]){c[_e(e.bundler.outDir,i)]=o;continue}if(d[i]){t.debug(`Input report already there for ${i} from ${o.name}.`);continue}const a={name:Ge(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(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 i=Ge(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[Ge(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)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,i.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 ")||P(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:Ke(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"===Ke(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:Ke(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"===Ke(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?Ke(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(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=>_e(process.cwd(),e).split(r.sep))),n=t.length?Math.min(...t.map((e=>e.length))):0,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.build?.outDir&&(t.bundler.outDir=e.build.outDir),e.root?t.cwd=e.root:t.cwd=et(n,t.bundler.outDir)||t.cwd,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(`execution | ${s}`,{tags:["type:custom-hook",`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 T(e.refs.push);return T(t[0].refs.push)},at=async e=>{try{return(await e.getConfig("clone.defaultRemoteName"))?.value??"origin"}catch(e){return"origin"}},ut=async e=>e.revparse("HEAD"),pt=async e=>(await e.raw("ls-files")).split(/\r\n|\r|\n/),ct=async e=>e.branch(),lt=async e=>e.show(["-s","--format=%s"]),dt=async e=>e.show(["-s","--format=%an,%ae,%aI,%cn,%ce,%cI"]),mt="datadog-git-plugin",ft=e=>{const{options:t,context:n}=e,s=n.getLogger(mt);return[{name:mt,enforce:"pre",async buildStart(){if((e=>!!e.errorTracking?.sourcemaps&&!0!==e.errorTracking?.sourcemaps.disableGit&&!0!==e.disableGit)(t))try{const e=s.time("get git information"),t=await(async e=>{const t=[ut(e),ct(e),lt(e),dt(e),pt(e),rt(e)],[n,s,o,i,r,a]=await Promise.all(t),[u,p,c,l,d,m]=i.split(",").map((e=>e.trim()));return{commit:{author:{name:u,email:p,date:c},committer:{name:l,email:d,date:m},message:o.trim(),hash:n},hash:n,branch:s.current,remote:a.trim(),trackedFilesMatcher:new it(r)}})(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}`)}}}]},ht="datadog-injection-plugin",gt=/^https?:\/\//,wt=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(gt)?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} - ${x(i)}`;e.fallback?(t.info(`Fallback for "${s}": ${n.toString()}`),o=await wt(e.fallback,t)):(t.warn(`Failed "${s}": ${n.toString()}`),o="")}return o},yt=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`},bt=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 wt(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)},vt=o.promises,$t=(e,t,n)=>({setup(s){const{onStart:i,onResolve:a,onLoad:u,onEnd:p,esbuild:c,initialOptions:l}=s,d=[],m=`${z()}.${se.MIDDLE}.${v}.js`,f=o.realpathSync(w.tmpdir()),h=r.resolve(f,m),g=new RegExp(`${m}$`),y=l.inject;l.inject=y?[...y]:[],l.inject.push(h),i((async()=>{d.push(...await Le(s,t,e)),s.initialOptions.inject=y;try{await S(h,"")}catch(t){e.error(`Could not create the files: ${t.message}`)}})),a({filter:g},(async e=>({path:e.path,namespace:ht}))),u({filter:g,namespace:ht},(async()=>({contents:yt(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=yt(n[se.BEFORE]),i=yt(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 vt.readFile(e,"utf-8"),n=await c.transform(t,{loader:"default",banner:o,footer:i});await vt.writeFile(e,n.code)}));await Promise.all(r)}))}}),kt=v,St="?inject-proxy",Dt=e=>({banner:t=>t.isEntry?yt(e[se.BEFORE]):"",async resolveId(t,n,s){if(P(t))return{id:t,moduleSideEffects:!0};if(s.isEntry&&yt(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}${St}`}return null},load(t){if(P(t))return yt(e[se.MIDDLE]);if(t.endsWith(St)){const e=t.slice(0,-13),n=this.getModuleInfo(e);let s=`import ${JSON.stringify(kt)};\nexport * from ${JSON.stringify(e)};`;return n?.hasDefaultExport&&(s+=`export { default } from ${JSON.stringify(e)};`),s}return null},footer:t=>t.isEntry?yt(e[se.AFTER]):""}),Et=(e,t,n,s,i)=>a=>{const u=new WeakMap,p=(e=>{if(!e?.sources?.ConcatSource)return y(require.resolve("webpack"))("webpack-sources").ConcatSource;return e.sources.ConcatSource})(e),c=r.resolve(n.bundler.outDir,`${z()}.${se.MIDDLE}.${v}.js`);D(c,"");const l=()=>{var e;e=c,o.rmSync(e,{force:!0,maxRetries:3,recursive:!0})};a.hooks.shutdown?a.hooks.shutdown.tap(ht,l):(a.hooks.done.tap(ht,l),a.hooks.failed.tap(ht,l));a.hooks.beforeRun.tapPromise(ht,(async()=>{await bt(t,s,i,n.cwd)})),a.hooks.compilation.tap(ht,(t=>{const n=()=>{const e=yt(i[se.BEFORE]),n=yt(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:ht,stage:s},n)}else t.hooks.optimizeChunkAssets.tap({name:ht},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},Pt=e=>{const{bundler:t,context:n}=e,s=n.getLogger(ht),o=new Map,i={[se.BEFORE]:new Map,[se.MIDDLE]:new Map,[se.AFTER]:new Map};n.inject=e=>{o.set(z(),e)};const r={name:ht,enforce:"post",esbuild:$t(s,n,i),webpack:Et(t,s,n,o,i),rspack:Et(t,s,n,o,i),rollup:Dt(i),vite:{...Dt(i),enforce:"pre"}};var a;return a=n.bundler.fullName,["rspack","webpack4","webpack5","webpack"].includes(a)?(r.loadInclude=e=>!!P(e)||null,r.load=e=>P(e)?{code:yt(i[se.MIDDLE])}:null):r.buildStart=async()=>{await bt(s,o,i,n.cwd)},[r]},Mt="datadog-true-end-plugin",xt=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(Mt,o):(e.hooks.done.tapPromise(Mt,o),e.hooks.failed.tap(Mt,s))},r={async writeBundle(){},async closeBundle(){await o()}};return[{name:Mt,enforce:"post",webpack:i,esbuild:{setup(e){e.onEnd((async()=>{await n()})),e.onDispose((()=>{s()}))}},vite:r,rollup:r,rspack:i}]},Tt={[ce]:Ie};var jt="2.6.1";const zt=(({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=k);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",p=$.includes(u)?u:"development";return{auth:t.auth,pluginNames:[],bundler:{...a.bundler,outDir:i},build:a,cwd:i,env:p,getLogger:N(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.rspackVersion||n.version||n.VERSION,bundlerName:i.framework,version:s}),u=a.getLogger("factory").time("Plugins initialization",{start:o});a.pluginNames.push(k);const p=[];p.push(["analytics",Fe],["build-report",Ze],["bundler-report",nt],["custom-hooks",ot],["git",ft],["injection",Pt],["true-end",xt]),r.customPlugins&&p.push(["custom",r.customPlugins]),p.push(["error-tracking",ne],["rum",pe],["telemetry",Ae]);for(const[e,t]of p)a.plugins.push(...A(a,t,e)({bundler:n,context:a,options:r}));a.pluginNames.push(...a.plugins.map((e=>e.name)));const c=new Set(a.pluginNames.filter((e=>a.pluginNames.filter((t=>t===e)).length>1)));if(c.size>0)throw new Error(`Duplicate plugin names: ${t.bold.red(Array.from(c).join(", "))}`);return a.hook("init",a),u.end(),a.plugins}))})({bundler:b,version:jt}).rollup,Ot=jt,Nt=Tt;export{zt as datadogRollupPlugin,Nt as helpers,Ot as version};
|
|
13
13
|
//# sourceMappingURL=index.mjs.map
|
package/dist/src/index.mjs.map
CHANGED
|
@@ -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 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;"}
|
|
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","log"],"mappings":";;;;;;;;AAMO;ACwBSA;AACVC;AAGFC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datadog/rollup-plugin",
|
|
3
3
|
"packageManager": "yarn@4.0.2",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.6.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Datadog",
|
|
7
7
|
"description": "Datadog Rollup Plugin",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
],
|
|
47
47
|
"scripts": {
|
|
48
48
|
"buildCmd": "rollup --config rollup.config.mjs",
|
|
49
|
+
"buildBasic": "rm -rf dist-basic && rollup --config rollup.config.basic.mjs",
|
|
49
50
|
"build": "yarn clean && yarn buildCmd",
|
|
50
51
|
"clean": "rm -rf dist",
|
|
51
52
|
"prepack": "yarn build",
|
|
@@ -84,6 +85,5 @@
|
|
|
84
85
|
},
|
|
85
86
|
"peerDependencies": {
|
|
86
87
|
"rollup": ">= 3.x < 5.x"
|
|
87
|
-
}
|
|
88
|
-
"stableVersion": "2.5.3"
|
|
88
|
+
}
|
|
89
89
|
}
|