UNPKG

@sentry/core

Version:
65 lines (57 loc) 2.09 kB
Object.defineProperty(exports, '__esModule', { value: true }); const utils = require('@sentry/utils'); const currentScopes = require('./currentScopes.js'); const carrier = require('./carrier.js'); const debugBuild = require('./debug-build.js'); /** A class object that can instantiate Client objects. */ /** * Internal function to create a new SDK client instance. The client is * installed and then bound to the current scope. * * @param clientClass The client class to instantiate. * @param options Options to pass to the client. */ function initAndBind( clientClass, options, ) { if (options.debug === true) { if (debugBuild.DEBUG_BUILD) { utils.logger.enable(); } else { // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped utils.consoleSandbox(() => { // eslint-disable-next-line no-console console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.'); }); } } const scope = currentScopes.getCurrentScope(); scope.update(options.initialScope); const client = new clientClass(options); setCurrentClient(client); client.init(); } /** * Make the given client the current client. */ function setCurrentClient(client) { currentScopes.getCurrentScope().setClient(client); registerClientOnGlobalHub(client); } /** * Unfortunately, we still have to manually bind the client to the "hub" property set on the global * Sentry carrier object. This is because certain scripts (e.g. our loader script) obtain * the client via `window.__SENTRY__.hub.getClient()`. * * @see {@link ./asyncContext/stackStrategy.ts getAsyncContextStack} */ function registerClientOnGlobalHub(client) { const sentryGlobal = carrier.getSentryCarrier(carrier.getMainCarrier()) ; if (sentryGlobal.hub && typeof sentryGlobal.hub.getStackTop === 'function') { sentryGlobal.hub.getStackTop().client = client; } } exports.initAndBind = initAndBind; exports.setCurrentClient = setCurrentClient; //# sourceMappingURL=sdk.js.map