UNPKG

@embrace-io/web-sdk

Version:
3 lines (2 loc) 6.33 kB
import{__spreadArray as r,__read as e,__awaiter as o,__generator as s,__values as a}from"tslib";import{DiagLogLevel as n,diag as t,DiagConsoleLogger as i}from"@opentelemetry/api";import{logs as p}from"@opentelemetry/api-logs";import{registerInstrumentations as m}from"@opentelemetry/instrumentation";import{Resource as c}from"@opentelemetry/resources";import{LoggerProvider as g,BatchLogRecordProcessor as l}from"@opentelemetry/sdk-logs";import{BatchSpanProcessor as u,WebTracerProvider as d}from"@opentelemetry/sdk-trace-web";import{session as f}from"../api-sessions/sessionAPI.js";import"../api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js";import"../api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js";import{user as M}from"../api-users/userAPI.js";import"../api-users/manager/NoOpUserManager/NoOpUserManager.js";import"../api-users/manager/ProxyUserManager/ProxyUserManager.js";import{EmbraceLogExporter as E}from"../exporters/EmbraceLogExporter/EmbraceLogExporter.js";import{EmbraceTraceExporter as b}from"../exporters/EmbraceTraceExporter/EmbraceTraceExporter.js";import"@opentelemetry/otlp-exporter-base";import"../transport/FetchTransport/FetchTransport.js";import"../transport/RetryingTransport/RetryingTransport.js";import{EmbraceLogManager as v}from"../managers/EmbraceLogManager/EmbraceLogManager.js";import{EmbraceSpanSessionManager as w}from"../managers/EmbraceSpanSessionManager/EmbraceSpanSessionManager.js";import{EmbraceTraceManager as P}from"../managers/EmbraceTraceManager/EmbraceTraceManager.js";import{EmbraceUserManager as S}from"../managers/EmbraceUserManager/EmbraceUserManager.js";import{EmbraceSessionBatchedSpanProcessor as h}from"../processors/EmbraceSessionBatchedSpanProcessor/EmbraceSessionBatchedSpanProcessor.js";import{IdentifiableSessionLogRecordProcessor as x}from"../processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js";import{EmbraceNetworkSpanProcessor as j}from"../processors/EmbraceNetworkSpanProcessor/EmbraceNetworkSpanProcessor.js";import{EmbraceLogRecordProcessor as y}from"../processors/EmbraceLogRecordProcessor/EmbraceLogRecordProcessor.js";import{UserLogRecordProcessor as I}from"../processors/UserLogRecordProcessor/UserLogRecordProcessor.js";import{UserSpanProcessor as D}from"../processors/UserSpanProcessor/UserSpanProcessor.js";import{getWebSDKResource as L}from"../resources/webSdkResource.js";import{isValidAppID as T}from"./utils.js";import{setupDefaultInstrumentations as R}from"./setupDefaultInstrumentations.js";import{createSessionSpanProcessor as U}from"@opentelemetry/web-common";import{log as N}from"../api-logs/logAPI.js";import"../api-logs/manager/NoOpLogManager/NoOpLogManager.js";import"../api-logs/manager/ProxyLogManager/ProxyLogManager.js";import{trace as O}from"../api-traces/traceAPI.js";import"../api-traces/manager/NoOpTraceManager/NoOpTraceManager.js";import"../api-traces/manager/ProxyTraceManager/ProxyTraceManager.js";import{registry as k}from"./registry.js";var B=function(a){var p=void 0===a?{appID:""}:a,g=p.appID,l=p.appVersion,u=p.templateBundleID,d=p.resource,f=void 0===d?c.empty():d,M=p.spanExporters,E=void 0===M?[]:M,b=p.logExporters,v=void 0===b?[]:b,w=p.spanProcessors,P=void 0===w?[]:w,S=p.propagator,h=void 0===S?null:S,x=p.defaultInstrumentationConfig,j=p.instrumentations,y=void 0===j?[]:j,I=p.contextManager,D=void 0===I?null:I,U=p.logProcessors,N=void 0===U?[]:U,O=p.logLevel,B=void 0===O?n.ERROR:O,z=p.diagLogger,C=void 0===z?t.createComponentLogger({namespace:"embrace-sdk"}):z;try{var V=k.registered();if(null!==V)return C.warn("SDK has already been successfully initialized, skipping this invocation of initSDK"),V;if(t.setLogger(new i,{logLevel:B}),u&&32!==u.length)throw new Error("templateBundleID should be 32 characters long");var q=f.merge(L({diagLogger:C,appVersion:l,templateBundleID:u,pageSessionStorage:window.sessionStorage})),H=!!g&&T(g);if(!H&&!v.length&&!E.length)throw new Error("when the embrace appID is omitted then at least one logExporter or spanExporter must be set");var J=G(),Q=J.getEmbraceUserId();if(H&&!Q)throw new Error("userID is required when using Embrace exporter");var W=A(),X=F({sendingToEmbrace:H,appID:g,enduserPseudoID:Q,resource:q,spanSessionManager:W,userManager:J,spanExporters:E,spanProcessors:P,propagator:h,contextManager:D}),Y=K({sendingToEmbrace:H,appID:g,enduserPseudoID:Q,resource:q,userManager:J,logExporters:v,logProcessors:N,spanSessionManager:W});m({instrumentations:r(r([],e(y),!1),[R(x)],!1)}),C.info("successfully initialized the SDK");var Z={flush:function(){return o(void 0,void 0,void 0,(function(){return s(this,(function(r){switch(r.label){case 0:return[4,X.forceFlush()];case 1:return r.sent(),[4,Y.forceFlush()];case 2:return r.sent(),[2]}}))}))}};return k.register(Z),Z}catch(r){var $=r instanceof Error?r.message:"Unknown error.";return C.error("failed to initialize the SDK: ".concat($)),!1}},G=function(){var r=new S;return M.setGlobalUserManager(r),r},A=function(){var r=new w;return f.setGlobalSessionManager(r),r},F=function(o){var s=o.sendingToEmbrace,a=o.appID,n=o.enduserPseudoID,t=o.resource,i=o.spanSessionManager,p=o.userManager,m=o.spanExporters,c=o.spanProcessors,g=void 0===c?[]:c,l=o.propagator,f=void 0===l?null:l,M=o.contextManager,E=void 0===M?null:M,v=new P;O.setGlobalTraceManager(v);var w=r(r([],e(g),!1),[U(i),new j,new D({userManager:p})],!1);null==m||m.forEach((function(r){w.push(new u(r))})),s&&a&&n&&w.push(new h({exporter:new b({appID:a,userID:n})}));var S=new d({resource:t,spanProcessors:w});return S.register({contextManager:E,propagator:f}),S},K=function(o){var s,n,t=o.sendingToEmbrace,i=o.appID,m=o.enduserPseudoID,c=o.resource,u=o.userManager,d=o.logExporters,f=o.logProcessors,M=o.spanSessionManager,b=new v({spanSessionManager:M});N.setGlobalLogManager(b);var w=new g({resource:c}),P=r(r([],e(f),!1),[new x({spanSessionManager:M}),new y,new I({userManager:u})],!1);null==d||d.forEach((function(r){P.push(new l(r))})),t&&i&&m&&P.push(new l(new E({appID:i,userID:m})));try{for(var S=a(P),h=S.next();!h.done;h=S.next()){var j=h.value;w.addLogRecordProcessor(j)}}catch(r){s={error:r}}finally{try{h&&!h.done&&(n=S.return)&&n.call(S)}finally{if(s)throw s.error}}return p.setGlobalLoggerProvider(w),w};export{B as initSDK}; //# sourceMappingURL=initSDK.js.map