UNPKG

hud-sdk

Version:

Hud's Node SDK

2 lines 8.06 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 s=t();for(var r in s)("object"==typeof exports?exports:e)[r]=s[r]}}(global,()=>(()=>{"use strict";var e={523:e=>{e.exports=require("./logger")},2312:function(e,t,s){var r,n=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,n)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(r=function(e){return r=Object.getOwnPropertyNames||function(e){var t=[];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[t.length]=s);return t},r(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s=r(e),i=0;i<s.length;i++)"default"!==s[i]&&n(t,e,s[i]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.HudClient=void 0;const a=s(5809),l=s(2546),u=s(523),d=i(s(8938)),c=s(6982),g=s(6261),f=s(9023),h=s(3106),p=(0,f.promisify)(h.gzip);class _{sessionId;httpClient;extensionEventEmitter;static config={baseURL:a.hudConfig.sink.url,timeout:a.hudConfig.sink.timeout,headers:{"Content-Type":"application/json"}};static defaultRequest={version:"1.0.0",source:"node-sdk",event_version:"1.0.0"};constructor(e){this.httpClient=d.default.create(_.config),this.extensionEventEmitter=e}setSession(e){const{sessionId:t,extraHeaders:s}=e;this.sessionId=t,this.httpClient.defaults.headers.common[a.hudConfig.sink.session_attr]=t;try{for(const[e,t]of Object.entries(s))try{this.httpClient.defaults.headers.common[e]=t}catch(s){u.worker_logger.error("Failed to set extra header",{msg:s instanceof Error?s.message:void 0,stack:s instanceof Error?s.stack:void 0,key:e,value:t})}}catch(e){u.worker_logger.error("Failed to set extra headers",{msg:e instanceof Error?e.message:void 0,stack:e instanceof Error?e.stack:void 0})}}setExtensionEventEmitter(e){this.extensionEventEmitter=e}async logs(e){const t={logs:e,send_time:(new Date).toISOString()};await this._requestRelentless(a.hudConfig.endpoints.logs,t,"logs"),u.worker_logger.debug("sent logs successfully",{size:e.length})}async sessionslessLogs(e,t){const s={logs:e,send_time:(new Date).toISOString(),token:t};await this._requestRelentless(a.hudConfig.endpoints.sessionslessLogs,s,"sessionslessLogs"),u.worker_logger.debug("sent logs successfully",{size:e.length})}async send(e,t,s={}){const r={..._.defaultRequest,type:e,raw:t,send_time:(new Date).toISOString(),...s};await this._requestRelentless(a.hudConfig.endpoints.send,r,e),u.worker_logger.debug("sent event successfully",{type:e})}async batch(e,t,s={}){const r={..._.defaultRequest,type:e,arr:t,send_time:(new Date).toISOString(),...s};await this._requestRelentless(a.hudConfig.endpoints.batch,r,e),u.worker_logger.debug("sent batched events successfully",{type:e})}async getRemoteConfig(){const e=await this._requestDataRelentless(a.hudConfig.endpoints.getRemoteConfig,{},"getRemoteConfig");return u.worker_logger.info("Received remote configuration from server",{remoteConfiguration:e}),e}async getMode(e){const t={extra:e,send_time:(new Date).toISOString()},s=await this._requestDataRelentless(a.hudConfig.endpoints.getMode,t,"getMode");return u.worker_logger.info("Received mode from server "+s),s}async storeObject(e,t){const s={key:e,value:t.toString("base64")},r=await this._requestDataRelentless(a.hudConfig.endpoints.storeObject,s,"storeObject");if("reference"in r)return u.worker_logger.debug("Stored object successfully",{reference:r.reference}),r.reference;u.worker_logger.error("Failed to store object",{key:e,response:r})}async validateToken(e){const t={..._.defaultRequest,token:e,send_time:(new Date).toISOString()};try{return await this._requestRelentless(a.hudConfig.endpoints.validateToken,t,"validateToken"),!0}catch(e){if(e instanceof l.HudClientUnauthorizedError)return!1}return!1}async getUploadUrls(e,t,s){const r={..._.defaultRequest,send_time:(new Date).toISOString(),build_id:e,token:t,num_urls:s};return(await this._requestRelentless(a.hudConfig.endpoints.getUploadUrls,r,"getUploadUrls")).data.urls}async triggerReingest(e){const t={..._.defaultRequest,type:"triggerReingest",send_time:(new Date).toISOString(),build_id:e};await this._requestRelentless(a.hudConfig.endpoints.triggerReingest,t,"triggerReingest")}async completed(e,t){const s={..._.defaultRequest,build_id:e,token:t,send_time:(new Date).toISOString()};await this._requestRelentless(a.hudConfig.endpoints.completed,s,"completed")}async sendFileDeclarationsCi(e,t){u.worker_logger.debug("Sending file declarations request",{count:t.length});const s={...e,files:t},r=await this._requestRelentless(a.hudConfig.endpoints.fileDeclarationsCi,s,"fileDeclarations");return{files:r.data.files,send_all:r.data.send_all}}async sendFileDeclarations(e){u.worker_logger.debug("Sending file declarations request",{count:e.length});const t={files:e},s=await this._requestRelentless(a.hudConfig.endpoints.fileDeclarations,t,"fileDeclarations");return{files:s.data.files,send_all:s.data.send_all}}async _requestRelentless(e,t,s,r=3){const n={"X-Hud-Type":s,"X-Hud-Request-ID":(0,c.randomUUID)()},o=[];let i;for(let a=0;a<r;a++)try{const r=await this._request(e,t,s,n);return(0,l.incrementSentEventsCount)(s),r}catch(t){if(t instanceof Error&&(i=t),t instanceof d.AxiosError){if(401===t.response?.status)throw u.worker_logger.error("Unauthorized request",{endpoint:e,requestType:s}),new l.HudClientUnauthorizedError(`Unauthorized request for ${e}`);const{code:r,name:n,status:i,message:a}=t;o.push({code:r,name:n,status:i,message:a})}else if(t instanceof Error){const{name:e,message:s}=t;o.push({name:e,message:s})}await new Promise(e=>setTimeout(e,1))}throw u.worker_logger.error("Exceeded max retries to request",{endpoint:e,requestType:s,failures:o,retries:r}),new l.HudClientError(`Exceeded max retries for ${e}`,i instanceof d.AxiosError?i.code:void 0)}async _requestDataRelentless(e,t,s,r=3){return(await this._requestRelentless(e,t,s,r)).data}async _request(e,t,s,r){try{this.extensionEventEmitter&&await(0,g.once)(this.extensionEventEmitter,"eventloop");const s=await this._gzipCompress(JSON.stringify(t));return r={...r,"Content-Encoding":"gzip","Content-Type":"application/json"},await(0,l.suppressTraces)(async()=>await this.httpClient.post(e,s,{headers:r}))()}catch(t){if(t instanceof d.AxiosError){const{code:r,name:n,status:o,cause:i,message:a}=t;u.worker_logger.error(`${e} request failed`,{requestType:s,code:r,name:n,status:o,cause:i,msg:a})}else u.worker_logger.error("Caught an unexpected error",{msg:t instanceof Error?t.message:void 0,stack:t instanceof Error?t.stack:void 0});throw t}}async _gzipCompress(e){return p(e)}async initSession(e,t,s,r){const n={token:e,service:t,start_time:s.toISOString(),type:"node-sdk",version:"1.0.0",sdk_version:a.SDK_VERSION,tags:r};u.worker_logger.debug("Requesting init",{data:n});const o=await this._requestRelentless(a.hudConfig.endpoints.init,n,"init");if(o.status===a.hudConfig.throttleStatusCode)throw u.worker_logger.debug("Init request throttled"),new l.HudSessionThrottle;const i=o.data.sessionId,d=o.data.extraHeaders??{};return u.worker_logger.info("Succesfuly created session with backend",{host:_.config.baseURL,service:t,sessionId:i,extraHeaders:d,tags:r}),{sessionId:i,extraHeaders:d}}}t.HudClient=_},2546:e=>{e.exports=require("./lib")},3106:e=>{e.exports=require("zlib")},5809:e=>{e.exports=require("./config")},6261:e=>{e.exports=require("events")},6982:e=>{e.exports=require("crypto")},8938:e=>{e.exports=require("axios")},9023:e=>{e.exports=require("util")}},t={};return function s(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,s),o.exports}(2312)})()); //# sourceMappingURL=client.js.map