@grafana/faro-core
Version:
Core package of Faro.
42 lines • 1.91 kB
JavaScript
import { initializeEventsAPI } from './events';
import { initializeExceptionsAPI } from './exceptions';
import { initializeLogsAPI } from './logs';
import { initializeMeasurementsAPI } from './measurements';
import { initializeMetaAPI } from './meta';
import { initializeTracesAPI } from './traces';
import { initializeUserActionsAPI } from './userActions';
export function initializeAPI(unpatchedConsole, internalLogger, config, metas, transports) {
internalLogger.debug('Initializing API');
// Create a deferred pushEvent function that will be set once events API is initialized
let pushEventImpl = null;
const pushEventWrapper = (name, attributes, domain, options) => {
if (pushEventImpl) {
pushEventImpl(name, attributes, domain, options);
}
else {
internalLogger.warn('pushEventImpl is not initialized. Event dropped:', { name, attributes, domain, options });
}
};
// Initialize user actions API with the wrapper function
const userActionsApi = initializeUserActionsAPI({
transports,
config,
internalLogger,
pushEvent: pushEventWrapper,
});
const tracesApi = initializeTracesAPI(unpatchedConsole, internalLogger, config, metas, transports);
const props = {
unpatchedConsole,
internalLogger,
userActionsApi,
config,
metas,
transports,
tracesApi,
};
// Initialize events API and set the actual implementation
const eventsApi = initializeEventsAPI(props);
pushEventImpl = eventsApi.pushEvent;
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, tracesApi), initializeExceptionsAPI(props)), initializeMetaAPI(props)), initializeLogsAPI(props)), initializeMeasurementsAPI(props)), eventsApi), userActionsApi);
}
//# sourceMappingURL=initialize.js.map