UNPKG

hud-sdk

Version:

Hud's Node SDK

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