UNPKG

rollbar

Version:

Effortlessly track and debug errors in your JavaScript applications with Rollbar. This package includes advanced error tracking features and an intuitive interface to help you identify and fix issues more quickly.

108 lines (98 loc) 2.75 kB
import * as _ from './utility.js'; function buildPayload(data) { if (!_.isType(data.context, 'string')) { var contextResult = _.stringify(data.context); if (contextResult.error) { data.context = "Error: could not serialize 'context'"; } else { data.context = contextResult.value || ''; } if (data.context.length > 255) { data.context = data.context.substr(0, 255); } } return { data: data, }; } function getTransportFromOptions(options, defaults, url) { var hostname = defaults.hostname; var protocol = defaults.protocol; var port = defaults.port; var path = defaults.path; var search = defaults.search; var timeout = options.timeout; var transport = detectTransport(options); var proxy = options.proxy; if (options.endpoint) { var opts = url.parse(options.endpoint); hostname = opts.hostname; protocol = opts.protocol; port = opts.port; path = opts.pathname; search = opts.search; } return { timeout: timeout, hostname: hostname, protocol: protocol, port: port, path: path, search: search, proxy: proxy, transport: transport, }; } function detectTransport(options) { var gWindow = (typeof window !== 'undefined' && window) || (typeof self !== 'undefined' && self); var transport = options.defaultTransport || 'xhr'; if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; return transport; } function transportOptions(transport, method) { var protocol = transport.protocol || 'https:'; var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); var hostname = transport.hostname; var path = transport.path; var timeout = transport.timeout; var transportAPI = transport.transport; if (transport.search) { path = path + transport.search; } if (transport.proxy) { path = protocol + '//' + hostname + path; hostname = transport.proxy.host || transport.proxy.hostname; port = transport.proxy.port; protocol = transport.proxy.protocol || protocol; } return { timeout: timeout, protocol: protocol, hostname: hostname, path: path, port: port, method: method, transport: transportAPI, }; } function appendPathToPath(base, path) { var baseTrailingSlash = /\/$/.test(base); var pathBeginningSlash = /^\//.test(path); if (baseTrailingSlash && pathBeginningSlash) { path = path.substring(1); } else if (!baseTrailingSlash && !pathBeginningSlash) { path = '/' + path; } return base + path; } export { buildPayload, getTransportFromOptions, transportOptions, appendPathToPath, };