Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var hub_1 = require("@sentry/hub"); var utils_1 = require("@sentry/utils"); exports.installedIntegrations = []; /** Gets integration to install */ function getIntegrationsToSetup(options) { var defaultIntegrations = (options.defaultIntegrations && tslib_1.__spread(options.defaultIntegrations)) || []; var userIntegrations = options.integrations; var integrations = []; if (Array.isArray(userIntegrations)) { var userIntegrationsNames_1 = userIntegrations.map(function (i) { return i.name; }); var pickedIntegrationsNames_1 = []; // Leave only unique default integrations, that were not overridden with provided user integrations defaultIntegrations.forEach(function (defaultIntegration) { if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 && pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) { integrations.push(defaultIntegration); pickedIntegrationsNames_1.push(defaultIntegration.name); } }); // Don't add same user integration twice userIntegrations.forEach(function (userIntegration) { if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) { integrations.push(userIntegration); pickedIntegrationsNames_1.push(userIntegration.name); } }); } else if (typeof userIntegrations === 'function') { integrations = userIntegrations(defaultIntegrations); integrations = Array.isArray(integrations) ? integrations : [integrations]; } else { integrations = tslib_1.__spread(defaultIntegrations); } // Make sure that if present, `Debug` integration will always run last var integrationsNames = integrations.map(function (i) { return i.name; }); var alwaysLastToRun = 'Debug'; if (integrationsNames.indexOf(alwaysLastToRun) !== -1) { integrations.push.apply(integrations, tslib_1.__spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1))); } return integrations; } exports.getIntegrationsToSetup = getIntegrationsToSetup; /** Setup given integration */ function setupIntegration(integration) { if (exports.installedIntegrations.indexOf(integration.name) !== -1) { return; } integration.setupOnce(hub_1.addGlobalEventProcessor, hub_1.getCurrentHub); exports.installedIntegrations.push(integration.name); utils_1.logger.log("Integration installed: " + integration.name); } exports.setupIntegration = setupIntegration; /** * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default * integrations are added unless they were already provided before. * @param integrations array of integration instances * @param withDefault should enable default integrations */ function setupIntegrations(options) { var integrations = {}; getIntegrationsToSetup(options).forEach(function (integration) { integrations[integration.name] = integration; setupIntegration(integration); }); return integrations; } exports.setupIntegrations = setupIntegrations; //# sourceMappingURL=integration.js.map