hud-sdk
Version:
Hud's Node SDK
2 lines • 16.3 kB
JavaScript
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(global,()=>(()=>{"use strict";var e={523:e=>{e.exports=require("./logger")},857:e=>{e.exports=require("os")},870:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.limitedParallel=async function(e,t,r,o=!1){const n=[],i=[];return await Promise.all(Array.from({length:t},async function(){for(;e.length>0;){const t=e.shift();try{const e=await r(t);n.push(e)}catch(e){if(i.push(e),o)throw e}}})),{results:n,errors:i}}},2030:e=>{e.exports=require("./instrument")},2305:e=>{e.exports=require("form-data")},2546:e=>{e.exports=require("./lib")},2784:e=>{e.exports=require("../native/_index")},3066:function(e,t,r){var o,n=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),a=0;a<r.length;a++)"default"!==r[a]&&n(t,e,r[a]);return i(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.requestRelentless=async function(e,t,r,o=3){for(let n=0;n<o;n++)try{return await u.default.post(e,t,r)}catch(t){if(t instanceof u.AxiosError&&401===t.response?.status)throw new s.HudClientUnauthorizedError(`Unauthorized request for ${e}`);(0,l.logToHud)(`Failed request to ${e}, attempt ${n+1} of ${o}. Error: ${t}`),await new Promise(e=>setTimeout(e,1))}throw new s.HudClientExceededMaxRetries(`Exceeded max retries for ${e}`)};const s=r(2546),u=a(r(8938)),l=r(5231)},3903:e=>{e.exports=require("uuid")},4414:function(e,t,r){var o,n=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),a=0;a<r.length;a++)"default"!==r[a]&&n(t,e,r[a]);return i(t,e),t}),s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uploadSourceMap=h,t.uploadAllSourceMaps=async function(e,t){if(process.env.HUD_SKIP_SOURCEMAP_UPLOAD)(0,f.logToHud)("Skipping source map upload due to env var");else{(0,f.logToHud)(`Uploading source maps for ${e.length} files`);try{const r=[];for(const{buildId:o,filepath:n}of e){const e=`${n}.map`;try{await c.promises.access(e,c.constants.F_OK),r.push({buildId:o,filePath:e,hudKey:t})}catch{(0,f.logToHud)(`No source map found for file: ${n}`)}}await(0,p.limitedParallel)(r,10,h,!0),(0,f.logToHud)("Finished uploading source maps")}catch{return(0,f.logToUser)(l.UserErrorLogs.EsbuildFailedUploadingSourcemapUnauthorized()),void(0,f.setDontSendLogs)()}}};const u=r(5809),l=r(2546),d=s(r(2305)),c=a(r(9896)),f=r(5231),p=r(870),g=r(3066);async function h(e){const{buildId:t,filePath:r,hudKey:o}=e,n=new d.default;n.append("build_id",t),n.append("token",o);try{const e=await c.promises.readFile(r,"utf8"),t=JSON.parse(e);delete t.sourcesContent,n.append("sourcemap",JSON.stringify(t),{filename:"sourcemap",contentType:"application/json"})}catch(e){return(0,f.logToHud)(`failed parsing source map, skipping upload. Error: ${e}`),void(0,f.logToUser)(l.UserErrorLogs.EsbuildFailedParsingSourcemap())}try{await(0,g.requestRelentless)(`${u.hudConfig.sink.url}/${u.hudConfig.endpoints.sourceMap}`,n,{headers:{"Content-Type":"multipart/form-data"},timeout:u.hudConfig.esbuildUploadSourceMapTimeout})}catch(e){if(e instanceof Error&&e.message.includes("Unauthorized"))throw e;(0,f.logToHud)(`failed uploading source map. File: ${r}, Error: ${e}`),(0,f.logToUser)(l.UserErrorLogs.EsbuildFailedUploadingSourcemap(r))}}},5231:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.logToUser=function(e){let t="";t="string"==typeof e?(0,n.formatLogMessage)(`${u}${e}`):(0,n.formatLogMessage)(`${u}${e.message}`,e.errCode,e.moreInfo),console.log(t),f(t,!1)},t.logToHudDebug=function(e,t=!0){"true"===process.env.HUD_PLUGIN_DEBUG&&f(e,t)},t.logToHud=f,t.exportBuildLogs=async function(e){const t=[];for(let r=0;r<d.length;r+=o.hudConfig.esbuildPluginLogsBatchSize){const n=d.slice(r,r+o.hudConfig.esbuildPluginLogsBatchSize).map(t=>({...t,accessToken:e}));t.push(n)}await(0,a.limitedParallel)(t,10,p)},t.setDontSendLogs=function(){c=!1},t.getShouldSendLogs=function(){return c};const o=r(5809),n=r(523),i=r(6982),a=r(870),s=r(3066),u=o.hudConfig.esbuildPluginMessagePrefix,l=(0,i.randomUUID)(),d=[];let c=!0;function f(e,t=!0){"true"===process.env.HUD_PLUGIN_VERBOSE&&(t&&(e=(0,n.formatLogMessage)(`${u}${e}`)),console.log(e)),d.push({message:e,SessionID:l,timestamp:Date.now()})}async function p(e){await(0,s.requestRelentless)(o.hudConfig.pluginsLogEndpoint,{messages:e},{headers:{"x-hudx-plugin":"true","Content-Type":"application/json"}})}},5809:e=>{e.exports=require("./config")},6928:e=>{e.exports=require("path")},6932:function(e,t,r){var o,n=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),a=0;a<r.length;a++)"default"!==r[a]&&n(t,e,r[a]);return i(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.HudBuildError=void 0,t.verifyAndMarkFinalFiles=async function(e,t,r){const o=[];for(const n of e){if(!n.path.endsWith(".js")){t&&await(0,p.writeFileAndFolder)(n.path,n.contents);continue}if(!n.text.includes(s.hudConfig.esbuildGlobalVar)){t&&await(0,p.writeFileAndFolder)(n.path,n.contents);continue}const e=(0,c.v5)(n.contents,s.hudConfig.bundlerBuildUuidNamespace);o.push({filepath:n.path,buildId:e});const i=m(n.text,e);process.env.HUD_SKIP_FILE_VALIDATION||y(i,n.path,r),n.contents=new Uint8Array(Buffer.from(i,"utf8")),t&&await(0,p.writeFileAndFolder)(n.path,n.contents)}return o},t.markFileAsHudModified=m,t.markFile=function(e,t){const r=d.markFile(t,{data:{filename:e,format:"esm"},initialStatements:[b(e,!0)],suffixStatements:[b(e,!1)]});if(!r||!r.code||!r.map)throw new Error("Failed generating ast");return(0,l.appendInlineSourceMap)(r.code,r.map)},t.createMark=b,t.verifyFileContent=y;const s=r(5809),u=r(2030),l=r(2546),d=a(r(2784)),c=r(3903),f=a(r(9154)),p=r(7085),g=r(5231);class h extends Error{}function m(e,t){return`/*modifiedByHudESBuildPlugin-${t}*/${e}`}function b(e,t){const r=t?"Start":"End";return e=t?e:"",`;globalThis && (globalThis.${s.hudConfig.esbuildGlobalVar}="${r}:${e}");`}function y(e,t,r){try{(0,g.logToHud)(`Verifying file content: ${t}, with marks`),new f.Script(e),(0,g.logToHud)(`Editing in splits file content: ${t}`);const{transformedCode:o,editedChunksSizes:n}=(0,u.editInSplits)(e,t,r,!0,!0,!0,e=>!e.includes("node_modules"));if(!o)throw new h(`Failed verify file content, ${t}`);for(let e=0;e<n.length;e+=p.LOG_CHUNKS_SIZE_BATCH){const t=JSON.stringify(n.slice(e,e+p.LOG_CHUNKS_SIZE_BATCH));(0,g.logToHudDebug)(`Edited chunks sizes: ${t}`)}(0,g.logToHud)(`Verifying new file content: ${t}`),new f.Script(o),(0,g.logToHud)(`Verified new file content: ${t}`),(0,g.logToHud)(`${t}: Original code size: ${e.length}, new code size: ${o.length}`)}catch(e){throw(0,g.logToHud)(`Failed verify file content, ${t}, error: ${e}`),new h(`Failed verify file content, ${t}`)}}t.HudBuildError=h},6982:e=>{e.exports=require("crypto")},7085:function(e,t,r){var o,n=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},o(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),a=0;a<r.length;a++)"default"!==r[a]&&n(t,e,r[a]);return i(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.plugin=t.LOG_CHUNKS_SIZE_BATCH=void 0,t.writeFileAndFolder=async function(e,t){const r=f.dirname(e);try{await d.promises.stat(r)}catch{await d.promises.mkdir(r,{recursive:!0})}await d.promises.writeFile(e,t)},t.getModuleRoot=_;const s=r(8528),u=r(2030),l=r(6982),d=a(r(9896)),c=a(r(857)),f=a(r(6928)),p=r(5809),g=r(2546),h=r(9929),m=r(5231),b=r(6932),y=r(4414),w=30;async function v(e,t,r,o,n){if(!(r&&o&&n&&o.test(e)))return;const i=f.join(n,e),a=f.dirname(i);try{await d.promises.access(a)}catch{await d.promises.mkdir(a,{recursive:!0})}await d.promises.writeFile(i,t,"utf8");const s=await r(i);return s?.contents&&(t=s.contents),t}async function _(e){let t=f.dirname(e);for(let e=0;e<w&&"/"!==t;e++){const e=f.join(t,"package.json");try{return await d.promises.access(e),t}catch{t=f.dirname(t)}}}t.LOG_CHUNKS_SIZE_BATCH=p.hudConfig.esbuildPluginLogsChunkSize;const O="hud-esbuild-plugin";t.plugin=e=>({name:O,async setup(t){if("inline"===t.initialOptions.sourcemap||"both"===t.initialOptions.sourcemap)return void(0,m.logToUser)(g.UserErrorLogs.EsbuildSourceMapInline());if("node"!==t.initialOptions.platform)return void(0,m.logToUser)(g.UserErrorLogs.EsbuildUnsupportedPlatform());if("win32"===c.platform())return void(0,m.logToUser)(g.UserErrorLogs.EsbuildUnsupportedWindows());const r=e?.hudKey??process.env.HUD_KEY;if(!r)return void(0,m.logToUser)(g.UserErrorLogs.EsbuildMissingKey());const o=e?.includeModules??(0,p.getModulesToTraceFromEnv)()??[],n=(0,u.createCheckers)(o);(0,m.logToUser)("started running");const i=t.initialOptions.write??!0;t.initialOptions.write=!1;const a="esm"===t.initialOptions?.format?s.Format.esm:s.Format.cjs,{callback:w,filter:T,tempDir:S}=await async function(e){const t=e.initialOptions;if(!t.plugins)return;const r=t.plugins.findIndex(e=>e.name===O),o=t.plugins[r+1];if(!o||"datadog-esbuild"!==o.name)return;let n;(0,m.logToHud)("datadog-esbuild plugin detected");const i={...e,onLoad:(...e)=>{n=e},onStart:()=>{},onEnd:()=>{},onResolve:()=>{},onDispose:()=>{}};if(o.setup(i),!n)return void(0,m.logToHud)("datadog-esbuild plugin detected but failed receive onLoad callback");const a=f.join(c.tmpdir(),`hud-${(0,l.randomUUID)()}`);try{return await d.promises.access(a),void(0,m.logToUser)("temp dir already exists, try rerunning the build.")}catch{}return(0,m.logToHud)(`creating temp dir to be used by datadog plugin.\n\tPath: ${a}`),await d.promises.mkdir(a,{recursive:!0}),{filter:n[0].filter,callback:n[1],tempDir:a}}(t)??{},$=new Set(t.initialOptions.external||[]),U=new Map;t.onResolve({filter:/.*/},async e=>{if(e.pluginData?.hud?.calledFromHud)return;if($.has(e.path))return;const r=p.hudConfig.frameworksToPatch.get(e.path);if(!r)return;if(!r.enable||!r.enableEsbuild)return;const o={...e};delete o.path;const n=await t.resolve(e.path,{...o,pluginData:{...e.pluginData,hud:{calledFromHud:!0}}}),i=await _(n.path);i&&(U.set(i,e.path),(0,m.logToHud)(`mapping framework: ${i} => ${e.path}`))}),t.onLoad({filter:/.*\.(js|ts|cjs)$/},async e=>{try{const t=w?async t=>await w({...e,path:t}):void 0;if((0,u.skip)(e.path,n)){const r=await(0,h.getFrameworkContentSuffix)(e.path,U);if(!r)return;let o=await d.promises.readFile(e.path,"utf8");return o=await v(e.path,o,t,T,S)??o,o+=r,{contents:o,loader:e.path.endsWith("ts")?"ts":"js",resolveDir:f.dirname(e.path)}}let r=await d.promises.readFile(e.path,"utf8");return r=(0,b.markFile)(e.path,r),r=await v(e.path,r,t,T,S)??r,r+=await(0,h.getFrameworkContentSuffix)(e.path,U)??"",{contents:r,loader:e.path.endsWith("ts")?"ts":"js",resolveDir:f.dirname(e.path)}}catch(t){return(0,m.logToHud)(`failed patching file "${e.path}", fallbacking to original loader. Error: ${t}`),void(0,m.logToUser)(`failed patching file "${e.path}", fallbacking to original loader`)}}),t.onEnd(async e=>{if(!e?.outputFiles)return;let t;try{t=await(0,b.verifyAndMarkFinalFiles)(e.outputFiles,i,a),(0,m.logToUser)("finished")}catch(e){throw(0,m.logToHud)(`failed validating. Error: ${e}`),(0,m.logToUser)(g.UserErrorLogs.EsbuildFailedBundling()),e}finally{if(t)try{await(0,y.uploadAllSourceMaps)(t,r)}catch(e){(0,m.logToHud)(`failed uploading source maps. Shouldnt get here since we catch all errors in verifyAndMarkFinalFiles, error: ${e}`)}try{if(S)try{await d.promises.access(S),(0,m.logToHud)("cleaning temp dir"),await d.promises.rm(S,{recursive:!0,force:!0})}catch{}}catch(e){(0,m.logToHud)(`failed cleaning temp dir. Error: ${e}`)}try{!process.env.HUD_SKIP_BUILD_LOG_EXPORT&&(0,m.getShouldSendLogs)()&&await(0,m.exportBuildLogs)(r)}catch(e){"true"===process.env.HUD_PLUGIN_VERBOSE&&"true"===process.env.HUD_DEBUG&&(0,m.logToUser)(`Failed exporting build logs. Error: ${e}`)}}})}})},8528:e=>{e.exports=require("./dto")},8938:e=>{e.exports=require("axios")},9154:e=>{e.exports=require("vm")},9896:e=>{e.exports=require("fs")},9929:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFrameworkContentSuffix=async function(e,t){const r=[...t.entries()].find(([t,r])=>e.startsWith(t));if(!r)return;const[u,l]=r;let d=l+e.slice(u.length);(d.endsWith("index.js")||d.endsWith("index.ts"))&&(d=d.slice(0,d.length-9));const c=o.hudConfig.frameworksToPatch.get(d);if(!(c?.enable&&c?.enableEsbuild&&c?.patcher&&c?.version))return;(0,s.logToHud)(`Patching framwork: ${d}`);const f=await(0,a.getModuleRoot)(e);if(!f)return void(0,s.logToHud)(`Failed to find package.json for ${d}`);const p=(0,i.extractModuleVersion)(f);if((0,s.logToHud)(`Patching framework ${d}, version: ${p}`),(0,i.getFrameworkPatcher)(c.patcher).isSupported(f,d,c.version,c.extraInfo))return`\n ;\n try {\n const { hudRITM, infoSafeLog: hudSafeLogger } = require("hud-sdk/instrument");\n if (globalThis.hudRunningMode === ${n.HudRunningMode.enabled}) {\n if (typeof hudRITM === "function") {\n if (typeof hudSafeLogger === "function") {\n hudSafeLogger("esbuild patching ${d}");\n }\n module.exports = hudRITM(module.exports, "${d}", "hud-esbuild-folder-should-not-exists");\n }\n }\n } catch (e) {\n try {\n const { errorSafeLog: hudSafeLogger } = require("hud-sdk/internal");\n if (typeof hudSafeLogger === "function") {\n hudSafeLogger(\`esbuild patching ${f} failed: \${e}\`);\n }\n } catch {}\n }\n `;(0,s.logToHud)(`Failed to patch ${d}, unsupported version: ${p}`)};const o=r(5809),n=r(8528),i=r(2030),a=r(7085),s=r(5231)}},t={};return function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,r),i.exports}(7085)})());
//# sourceMappingURL=esbuildPlugin.js.map