UNPKG

@datadog/browser-logs

Version:
67 lines 4.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.startLogs = startLogs; const browser_core_1 = require("@datadog/browser-core"); const logsSessionManager_1 = require("../domain/logsSessionManager"); const assembly_1 = require("../domain/assembly"); const consoleCollection_1 = require("../domain/console/consoleCollection"); const reportCollection_1 = require("../domain/report/reportCollection"); const networkErrorCollection_1 = require("../domain/networkError/networkErrorCollection"); const runtimeErrorCollection_1 = require("../domain/runtimeError/runtimeErrorCollection"); const lifeCycle_1 = require("../domain/lifeCycle"); const loggerCollection_1 = require("../domain/logger/loggerCollection"); const startLogsBatch_1 = require("../transport/startLogsBatch"); const startLogsBridge_1 = require("../transport/startLogsBridge"); const internalContext_1 = require("../domain/contexts/internalContext"); const reportError_1 = require("../domain/reportError"); const rumInternalContext_1 = require("../domain/contexts/rumInternalContext"); const sessionContext_1 = require("../domain/contexts/sessionContext"); const trackingConsentContext_1 = require("../domain/contexts/trackingConsentContext"); const LOGS_STORAGE_KEY = 'logs'; function startLogs(configuration, getCommonContext, // `startLogs` and its subcomponents assume tracking consent is granted initially and starts // collecting logs unconditionally. As such, `startLogs` should be called with a // `trackingConsentState` set to "granted". trackingConsentState, bufferedDataObservable, hooks) { const lifeCycle = new lifeCycle_1.LifeCycle(); const cleanupTasks = []; lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (log) => (0, browser_core_1.sendToExtension)('logs', log)); const reportError = (0, reportError_1.startReportError)(lifeCycle); const pageMayExitObservable = (0, browser_core_1.createPageMayExitObservable)(configuration); const session = configuration.sessionStoreStrategyType && !(0, browser_core_1.canUseEventBridge)() && !(0, browser_core_1.willSyntheticsInjectRum)() ? (0, logsSessionManager_1.startLogsSessionManager)(configuration, trackingConsentState) : (0, logsSessionManager_1.startLogsSessionManagerStub)(configuration); (0, trackingConsentContext_1.startTrackingConsentContext)(hooks, trackingConsentState); // Start user and account context first to allow overrides from global context (0, sessionContext_1.startSessionContext)(hooks, configuration, session); const accountContext = (0, browser_core_1.startAccountContext)(hooks, configuration, LOGS_STORAGE_KEY); const userContext = (0, browser_core_1.startUserContext)(hooks, configuration, session, LOGS_STORAGE_KEY); const globalContext = (0, browser_core_1.startGlobalContext)(hooks, configuration, LOGS_STORAGE_KEY, false); (0, rumInternalContext_1.startRUMInternalContext)(hooks); (0, networkErrorCollection_1.startNetworkErrorCollection)(configuration, lifeCycle); (0, runtimeErrorCollection_1.startRuntimeErrorCollection)(configuration, lifeCycle, bufferedDataObservable); bufferedDataObservable.unbuffer(); (0, consoleCollection_1.startConsoleCollection)(configuration, lifeCycle); (0, reportCollection_1.startReportCollection)(configuration, lifeCycle); const { handleLog } = (0, loggerCollection_1.startLoggerCollection)(lifeCycle); (0, assembly_1.startLogsAssembly)(configuration, lifeCycle, hooks, getCommonContext, reportError); if (!(0, browser_core_1.canUseEventBridge)()) { const { stop: stopLogsBatch } = (0, startLogsBatch_1.startLogsBatch)(configuration, lifeCycle, reportError, pageMayExitObservable, session); cleanupTasks.push(() => stopLogsBatch()); } else { (0, startLogsBridge_1.startLogsBridge)(lifeCycle); } const internalContext = (0, internalContext_1.startInternalContext)(session); return { handleLog, getInternalContext: internalContext.get, accountContext, globalContext, userContext, stop: () => { cleanupTasks.forEach((task) => task()); }, }; } //# sourceMappingURL=startLogs.js.map