From 3daf7167058f218c442f46e2cd1cadcf1d80351b Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Wed, 6 Nov 2024 17:12:02 +0000 Subject: [PATCH 01/52] refactor: :recycle: convert browser package to typescript --- packages/browser/package.json | 10 +- packages/browser/rollup.config.npm.mjs | 33 +++++ packages/browser/src/config.js | 35 ------ packages/browser/src/config.ts | 25 ++++ packages/browser/src/get-prefixed-console.ts | 17 +++ packages/browser/src/notifier.d.ts | 2 - packages/browser/src/notifier.js | 110 ---------------- packages/browser/src/notifier.ts | 124 +++++++++++++++++++ packages/browser/tsconfig.json | 4 + 9 files changed, 212 insertions(+), 148 deletions(-) create mode 100644 packages/browser/rollup.config.npm.mjs delete mode 100644 packages/browser/src/config.js create mode 100644 packages/browser/src/config.ts create mode 100644 packages/browser/src/get-prefixed-console.ts delete mode 100644 packages/browser/src/notifier.d.ts delete mode 100644 packages/browser/src/notifier.js create mode 100644 packages/browser/src/notifier.ts create mode 100644 packages/browser/tsconfig.json diff --git a/packages/browser/package.json b/packages/browser/package.json index 5e81bc2618..2ef9110947 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -3,6 +3,13 @@ "version": "8.1.2", "main": "dist/bugsnag.js", "types": "types/bugsnag.d.ts", + "exports": { + ".": { + "types": "./types/bugsnag.d.ts", + "default": "./dist/bugsnag.js", + "import": "./dist/bugsnag.mjs" + } + }, "description": "Bugsnag error reporter for browser JavaScript", "homepage": "https://www.bugsnag.com/", "repository": { @@ -22,7 +29,8 @@ "scripts": { "size": "../../bin/size dist/bugsnag.min.js", "clean": "rm -fr dist && mkdir dist", - "build": "npm run clean && npm run build:dist && npm run build:dist:min", + "build": "npm run clean && npm run build:npm", + "build:npm": "rollup --config rollup.config.npm.mjs", "build:dist": "cross-env NODE_ENV=production bash -c '../../bin/bundle src/notifier.js --standalone=Bugsnag | ../../bin/extract-source-map dist/bugsnag.js'", "build:dist:min": "cross-env NODE_ENV=production bash -c '../../bin/bundle src/notifier.js --standalone=Bugsnag | ../../bin/minify dist/bugsnag.min.js'", "cdn-upload": "../../bin/cdn-upload dist/*" diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs new file mode 100644 index 0000000000..4b5f9ebb36 --- /dev/null +++ b/packages/browser/rollup.config.npm.mjs @@ -0,0 +1,33 @@ +import createRollupConfig from "../../.rollup/index.mjs"; + +export default createRollupConfig({ + input: "src/request.ts", + external: [ + '@bugsnag/core/client', + '@bugsnag/core/event', + '@bugsnag/core/session', + '@bugsnag/core/breadcrumb', + '@bugsnag/core/config', + '@bugsnag/core/types', + '@bugsnag/core/lib/es-utils/map', + '@bugsnag/core/lib/es-utils/keys', + '@bugsnag/core/lib/es-utils/assign', + '@bugsnag/plugin-window-onerror', + '@bugsnag/plugin-window-unhandled-rejection', + '@bugsnag/plugin-app-duration', + '@bugsnag/plugin-browser-device', + '@bugsnag/plugin-browser-context', + '@bugsnag/plugin-browser-request', + '@bugsnag/plugin-simple-throttle', + '@bugsnag/plugin-console-breadcrumbs', + '@bugsnag/plugin-network-breadcrumbs', + '@bugsnag/plugin-navigation-breadcrumbs', + '@bugsnag/plugin-interaction-breadcrumbs', + '@bugsnag/plugin-inline-script-content', + '@bugsnag/plugin-browser-session', + '@bugsnag/plugin-client-ip', + '@bugsnag/plugin-strip-query-string', + '@bugsnag/delivery-x-domain-request', + '@bugsnag/delivery-xml-http-request' + ] +}); diff --git a/packages/browser/src/config.js b/packages/browser/src/config.js deleted file mode 100644 index 12a003b5f1..0000000000 --- a/packages/browser/src/config.js +++ /dev/null @@ -1,35 +0,0 @@ -const { schema } = require('@bugsnag/core/config') -const map = require('@bugsnag/core/lib/es-utils/map') -const assign = require('@bugsnag/core/lib/es-utils/assign') - -module.exports = { - releaseStage: assign({}, schema.releaseStage, { - defaultValue: () => { - if (/^localhost(:\d+)?$/.test(window.location.host)) return 'development' - return 'production' - } - }), - appType: { - ...schema.appType, - defaultValue: () => 'browser' - }, - logger: assign({}, schema.logger, { - defaultValue: () => - // set logger based on browser capability - (typeof console !== 'undefined' && typeof console.debug === 'function') - ? getPrefixedConsole() - : undefined - }) -} - -const getPrefixedConsole = () => { - const logger = {} - const consoleLog = console.log - map(['debug', 'info', 'warn', 'error'], (method) => { - const consoleMethod = console[method] - logger[method] = typeof consoleMethod === 'function' - ? consoleMethod.bind(console, '[bugsnag]') - : consoleLog.bind(console, '[bugsnag]') - }) - return logger -} diff --git a/packages/browser/src/config.ts b/packages/browser/src/config.ts new file mode 100644 index 0000000000..1e1d304c48 --- /dev/null +++ b/packages/browser/src/config.ts @@ -0,0 +1,25 @@ +import { schema } from '@bugsnag/core/config' +import assign from '@bugsnag/core/lib/es-utils/assign' +import getPrefixedConsole from './get-prefixed-console' + +const config = { + releaseStage: assign({}, schema.releaseStage, { + defaultValue: () => { + if (/^localhost(:\d+)?$/.test(window.location.host)) return 'development' + return 'production' + } + }), + appType: { + ...schema.appType, + defaultValue: () => 'browser' + }, + logger: assign({}, schema.logger, { + defaultValue: () => + // set logger based on browser capability + (typeof console !== 'undefined' && typeof console.debug === 'function') + ? getPrefixedConsole() + : undefined + }) +} + +export default config diff --git a/packages/browser/src/get-prefixed-console.ts b/packages/browser/src/get-prefixed-console.ts new file mode 100644 index 0000000000..3abc1bf1c4 --- /dev/null +++ b/packages/browser/src/get-prefixed-console.ts @@ -0,0 +1,17 @@ +import map from 'packages/core/lib/es-utils/map' + +type LoggerMethod = 'debug' | 'info' | 'warn' | 'error' + +const getPrefixedConsole = () => { + const logger: Record = {} + const consoleLog = console.log + map(['debug', 'info', 'warn', 'error'], (method: LoggerMethod) => { + const consoleMethod = console[method] + logger[method] = typeof consoleMethod === 'function' + ? consoleMethod.bind(console, '[bugsnag]') + : consoleLog.bind(console, '[bugsnag]') + }) + return logger +} + +export default getPrefixedConsole diff --git a/packages/browser/src/notifier.d.ts b/packages/browser/src/notifier.d.ts deleted file mode 100644 index 844bfb518c..0000000000 --- a/packages/browser/src/notifier.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default } from '../types/bugsnag' -export * from '../types/bugsnag' diff --git a/packages/browser/src/notifier.js b/packages/browser/src/notifier.js deleted file mode 100644 index dcb9fb1eda..0000000000 --- a/packages/browser/src/notifier.js +++ /dev/null @@ -1,110 +0,0 @@ -const name = 'Bugsnag JavaScript' -const version = '__VERSION__' -const url = 'https://github.com/bugsnag/bugsnag-js' - -const Client = require('@bugsnag/core/client') -const Event = require('@bugsnag/core/event') -const Session = require('@bugsnag/core/session') -const Breadcrumb = require('@bugsnag/core/breadcrumb') - -const map = require('@bugsnag/core/lib/es-utils/map') -const keys = require('@bugsnag/core/lib/es-utils/keys') -const assign = require('@bugsnag/core/lib/es-utils/assign') - -// extend the base config schema with some browser-specific options -const schema = assign({}, require('@bugsnag/core/config').schema, require('./config')) - -const pluginWindowOnerror = require('@bugsnag/plugin-window-onerror') -const pluginUnhandledRejection = require('@bugsnag/plugin-window-unhandled-rejection') -const pluginApp = require('@bugsnag/plugin-app-duration') -const pluginDevice = require('@bugsnag/plugin-browser-device') -const pluginContext = require('@bugsnag/plugin-browser-context') -const pluginRequest = require('@bugsnag/plugin-browser-request') -const pluginThrottle = require('@bugsnag/plugin-simple-throttle') -const pluginConsoleBreadcrumbs = require('@bugsnag/plugin-console-breadcrumbs') -const pluginNetworkBreadcrumbs = require('@bugsnag/plugin-network-breadcrumbs') -const pluginNavigationBreadcrumbs = require('@bugsnag/plugin-navigation-breadcrumbs') -const pluginInteractionBreadcrumbs = require('@bugsnag/plugin-interaction-breadcrumbs') -const pluginInlineScriptContent = require('@bugsnag/plugin-inline-script-content') -const pluginSession = require('@bugsnag/plugin-browser-session') -const pluginIp = require('@bugsnag/plugin-client-ip') -const pluginStripQueryString = require('@bugsnag/plugin-strip-query-string') - -// delivery mechanisms -const dXDomainRequest = require('@bugsnag/delivery-x-domain-request') -const dXMLHttpRequest = require('@bugsnag/delivery-xml-http-request') - -const Bugsnag = { - _client: null, - createClient: (opts) => { - // handle very simple use case where user supplies just the api key as a string - if (typeof opts === 'string') opts = { apiKey: opts } - if (!opts) opts = {} - - const internalPlugins = [ - // add browser-specific plugins - pluginApp, - pluginDevice(), - pluginContext(), - pluginRequest(), - pluginThrottle, - pluginSession, - pluginIp, - pluginStripQueryString, - pluginWindowOnerror(), - pluginUnhandledRejection(), - pluginNavigationBreadcrumbs(), - pluginInteractionBreadcrumbs(), - pluginNetworkBreadcrumbs(), - pluginConsoleBreadcrumbs, - - // this one added last to avoid wrapping functionality before bugsnag uses it - pluginInlineScriptContent() - ] - - // configure a client with user supplied options - const bugsnag = new Client(opts, schema, internalPlugins, { name, version, url }) - - // set delivery based on browser capability (IE 8+9 have an XDomainRequest object) - bugsnag._setDelivery(window.XDomainRequest ? dXDomainRequest : dXMLHttpRequest) - - bugsnag._logger.debug('Loaded!') - bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state') - - return bugsnag._config.autoTrackSessions - ? bugsnag.startSession() - : bugsnag - }, - start: (opts) => { - if (Bugsnag._client) { - Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.') - return Bugsnag._client - } - Bugsnag._client = Bugsnag.createClient(opts) - return Bugsnag._client - }, - isStarted: () => { - return Bugsnag._client != null - } -} - -map(['resetEventCount'].concat(keys(Client.prototype)), (m) => { - if (/^_/.test(m)) return - Bugsnag[m] = function () { - if (!Bugsnag._client) return console.log(`Bugsnag.${m}() was called before Bugsnag.start()`) - Bugsnag._client._depth += 1 - const ret = Bugsnag._client[m].apply(Bugsnag._client, arguments) - Bugsnag._client._depth -= 1 - return ret - } -}) - -module.exports = Bugsnag - -module.exports.Client = Client -module.exports.Event = Event -module.exports.Session = Session -module.exports.Breadcrumb = Breadcrumb - -// Export a "default" property for compatibility with ESM imports -module.exports.default = Bugsnag diff --git a/packages/browser/src/notifier.ts b/packages/browser/src/notifier.ts new file mode 100644 index 0000000000..eab8bae571 --- /dev/null +++ b/packages/browser/src/notifier.ts @@ -0,0 +1,124 @@ +import Client from '@bugsnag/core/client' +import Event from '@bugsnag/core/event' +import Session from '@bugsnag/core/session' +import Breadcrumb from '@bugsnag/core/breadcrumb' +import { Config } from '@bugsnag/core/types' + +import map from '@bugsnag/core/lib/es-utils/map' +import keys from '@bugsnag/core/lib/es-utils/keys' +import assign from '@bugsnag/core/lib/es-utils/assign' + +// extend the base config schema with some browser-specific options +import { schema as baseConfig } from '@bugsnag/core/config' +import browserConfig from './config' + +import pluginWindowOnerror from '@bugsnag/plugin-window-onerror' +import pluginUnhandledRejection from '@bugsnag/plugin-window-unhandled-rejection' +import pluginApp from '@bugsnag/plugin-app-duration' +import pluginDevice from '@bugsnag/plugin-browser-device' +import pluginContext from '@bugsnag/plugin-browser-context' +import pluginRequest from '@bugsnag/plugin-browser-request' +import pluginThrottle from '@bugsnag/plugin-simple-throttle' +import pluginConsoleBreadcrumbs from '@bugsnag/plugin-console-breadcrumbs' +import pluginNetworkBreadcrumbs from '@bugsnag/plugin-network-breadcrumbs' +import pluginNavigationBreadcrumbs from '@bugsnag/plugin-navigation-breadcrumbs' +import pluginInteractionBreadcrumbs from '@bugsnag/plugin-interaction-breadcrumbs' +import pluginInlineScriptContent from '@bugsnag/plugin-inline-script-content' +import pluginSession from '@bugsnag/plugin-browser-session' +import pluginIp from '@bugsnag/plugin-client-ip' +import pluginStripQueryString from '@bugsnag/plugin-strip-query-string' + +// delivery mechanisms +import dXDomainRequest from '@bugsnag/delivery-x-domain-request' +import dXMLHttpRequest from '@bugsnag/delivery-xml-http-request' + +const name = 'Bugsnag JavaScript' +const version = '__VERSION__' +const url = 'https://github.com/bugsnag/bugsnag-js' + +const schema = assign({}, baseConfig, browserConfig) + +declare global { + interface Window { + XDomainRequest: unknown + } +} + +type BrowserClient = Partial & { + _client: Client | null + createClient: (opts?: Config) => Client + start: (opts?: Config) => Client + isStarted: () => boolean + _setDelivery?: (handler: typeof dXDomainRequest | typeof dXMLHttpRequest) => void +} + +const Bugsnag: BrowserClient = { + _client: null, + createClient: (opts) => { + // handle very simple use case where user supplies just the api key as a string + if (typeof opts === 'string') opts = { apiKey: opts } + if (!opts) opts = {} as unknown as Config + + const internalPlugins = [ + // add browser-specific plugins + pluginApp, + pluginDevice(), + pluginContext(), + pluginRequest(), + pluginThrottle, + pluginSession, + pluginIp, + pluginStripQueryString, + pluginWindowOnerror(), + pluginUnhandledRejection(), + pluginNavigationBreadcrumbs(), + pluginInteractionBreadcrumbs(), + pluginNetworkBreadcrumbs(), + pluginConsoleBreadcrumbs, + + // this one added last to avoid wrapping functionality before bugsnag uses it + pluginInlineScriptContent() + ] + + // configure a client with user supplied options + const bugsnag = new Client(opts, schema, internalPlugins, { name, version, url }); + + // set delivery based on browser capability (IE 8+9 have an XDomainRequest object) + (bugsnag as BrowserClient)._setDelivery?.(window.XDomainRequest ? dXDomainRequest : dXMLHttpRequest) + + bugsnag._logger.debug('Loaded!') + bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state') + + return bugsnag._config.autoTrackSessions + ? bugsnag.startSession() + : bugsnag + }, + start: (opts) => { + if (Bugsnag._client) { + Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.') + return Bugsnag._client + } + Bugsnag._client = Bugsnag.createClient(opts) + return Bugsnag._client + }, + isStarted: () => { + return Bugsnag._client != null + } +} + +type Method = keyof typeof Client.prototype + +map(['resetEventCount'].concat(keys(Client.prototype)) as Method[], (m) => { + if (/^_/.test(m)) return + Bugsnag[m] = function () { + if (!Bugsnag._client) return console.log(`Bugsnag.${m}() was called before Bugsnag.start()`) + Bugsnag._client._depth += 1 + const ret = Bugsnag._client[m].apply(Bugsnag._client, arguments) + Bugsnag._client._depth -= 1 + return ret + } +}) + +export { Client, Event, Session, Breadcrumb, Bugsnag } + +export default Bugsnag diff --git a/packages/browser/tsconfig.json b/packages/browser/tsconfig.json new file mode 100644 index 0000000000..a5cb75c562 --- /dev/null +++ b/packages/browser/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"] +} From a089f1fdb11bce4e0b54735379ff5bd74d559708 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Fri, 8 Nov 2024 12:21:51 +0000 Subject: [PATCH 02/52] refactor: :recycle: refactor plugin-navigation-breadcrumbs --- .../package.json | 13 +++++ .../rollup.config.npm.mjs | 5 ++ .../navigation-breadcrumbs.ts} | 52 ++++++++++++------- .../test/navigation-breadcrumbs.test.ts | 2 +- .../tsconfig.json | 8 +++ 5 files changed, 61 insertions(+), 19 deletions(-) create mode 100644 packages/plugin-navigation-breadcrumbs/rollup.config.npm.mjs rename packages/plugin-navigation-breadcrumbs/{navigation-breadcrumbs.js => src/navigation-breadcrumbs.ts} (59%) create mode 100644 packages/plugin-navigation-breadcrumbs/tsconfig.json diff --git a/packages/plugin-navigation-breadcrumbs/package.json b/packages/plugin-navigation-breadcrumbs/package.json index 29d32cf7e9..c99b879c8b 100644 --- a/packages/plugin-navigation-breadcrumbs/package.json +++ b/packages/plugin-navigation-breadcrumbs/package.json @@ -2,6 +2,14 @@ "name": "@bugsnag/plugin-navigation-breadcrumbs", "version": "8.1.1", "main": "navigation-breadcrumbs.js", + "types": "dist/types/navigation-breadcrumbs.d.ts", + "exports": { + ".": { + "types": "./dist/types/navigation-breadcrumbs.d.ts", + "default": "./dist/navigation-breadcrumbs.js", + "import": "./dist/navigation-breadcrumbs.mjs" + } + }, "description": "@bugsnag/js plugin to record browser navigation as breadcrumbs", "homepage": "https://www.bugsnag.com/", "repository": { @@ -14,6 +22,11 @@ "files": [ "*.js" ], + "scripts": { + "build": "npm run build:npm", + "build:npm": "rollup --config rollup.config.npm.mjs", + "clean": "rm -rf dist/*" + }, "author": "Bugsnag", "license": "MIT", "devDependencies": { diff --git a/packages/plugin-navigation-breadcrumbs/rollup.config.npm.mjs b/packages/plugin-navigation-breadcrumbs/rollup.config.npm.mjs new file mode 100644 index 0000000000..e74dd35c57 --- /dev/null +++ b/packages/plugin-navigation-breadcrumbs/rollup.config.npm.mjs @@ -0,0 +1,5 @@ +import createRollupConfig from '../../.rollup/index.mjs' + +export default createRollupConfig({ + input: 'src/navigation-breadcrumbs.ts' +}) diff --git a/packages/plugin-navigation-breadcrumbs/navigation-breadcrumbs.js b/packages/plugin-navigation-breadcrumbs/src/navigation-breadcrumbs.ts similarity index 59% rename from packages/plugin-navigation-breadcrumbs/navigation-breadcrumbs.js rename to packages/plugin-navigation-breadcrumbs/src/navigation-breadcrumbs.ts index 873215dd83..10559b8053 100644 --- a/packages/plugin-navigation-breadcrumbs/navigation-breadcrumbs.js +++ b/packages/plugin-navigation-breadcrumbs/src/navigation-breadcrumbs.ts @@ -1,14 +1,29 @@ +import { Client, Plugin } from 'packages/core/types' + +interface PluginClient extends Client { + _isBreadcrumbTypeEnabled: (type: string) => boolean +} + +type ExtendedHistory = History & { + replaceState: History['replaceState'] & { _restore?: () => void } + pushState: History['pushState'] & { _restore?: () => void } +} + +type ExtendedWindow = Window & { + history: ExtendedHistory +} + /* * Leaves breadcrumbs when navigation methods are called or events are emitted */ -module.exports = (win = window) => { - const plugin = { +export default (win = window): Plugin => { + const plugin: Plugin = { load: (client) => { if (!('addEventListener' in win)) return - if (!client._isBreadcrumbTypeEnabled('navigation')) return + if (!(client as PluginClient)._isBreadcrumbTypeEnabled('navigation')) return // returns a function that will drop a breadcrumb with a given name - const drop = name => () => client.leaveBreadcrumb(name, {}, 'navigation') + const drop = (name: string) => () => client.leaveBreadcrumb(name, {}, 'navigation') // simple drops – just names, no meta win.addEventListener('pagehide', drop('Page hidden'), true) @@ -27,15 +42,15 @@ module.exports = (win = window) => { }, true) // the only way to know about replaceState/pushState is to wrap them… >_< - if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win, true) - if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win) + if (typeof win.history.pushState === 'function') wrapHistoryFn(client, win.history, 'pushState', win, true) + if (typeof win.history.replaceState === 'function') wrapHistoryFn(client, win.history, 'replaceState', win) } } if (process.env.NODE_ENV !== 'production') { - plugin.destroy = (win = window) => { - win.history.replaceState._restore() - win.history.pushState._restore() + plugin.destroy = (win: ExtendedWindow = window) => { + if (win.history.replaceState._restore) win.history.replaceState._restore() + if (win.history.pushState._restore) win.history.pushState._restore() } } @@ -43,26 +58,27 @@ module.exports = (win = window) => { } if (process.env.NODE_ENV !== 'production') { - exports.destroy = (win = window) => { - win.history.replaceState._restore() - win.history.pushState._restore() + exports.destroy = (win: ExtendedWindow = window) => { + if (win.history.replaceState._restore) win.history.replaceState._restore() + if (win.history.pushState._restore) win.history.pushState._restore() } } // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns // just the path and hash parts, e.g. /pages/01.html?yes=no#section-2 -const relativeLocation = (url, win) => { - const a = win.document.createElement('A') +const relativeLocation = (url: string, win: Window) => { + const a = win.document.createElement('a') a.href = url return `${a.pathname}${a.search}${a.hash}` } -const stateChangeToMetadata = (win, state, title, url) => { +const stateChangeToMetadata = (win: Window, state: string, title: string, url?: string | URL | null) => { const currentPath = relativeLocation(win.location.href, win) return { title, state, prevState: getCurrentState(win), to: url || currentPath, from: currentPath } } -const wrapHistoryFn = (client, target, fn, win, resetEventCount = false) => { +type HistoryMethods = 'pushState' | 'replaceState' +const wrapHistoryFn = (client: Client, target: ExtendedHistory, fn: HistoryMethods, win: Window, resetEventCount = false) => { const orig = target[fn] target[fn] = (state, title, url) => { client.leaveBreadcrumb(`History ${fn}`, stateChangeToMetadata(win, state, title, url), 'navigation') @@ -70,14 +86,14 @@ const wrapHistoryFn = (client, target, fn, win, resetEventCount = false) => { if (resetEventCount && typeof client.resetEventCount === 'function') client.resetEventCount() // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect // to '/undefined'. therefore we only pass the url if it's not undefined. - orig.apply(target, [state, title].concat(url !== undefined ? url : [])) + orig.apply(target, [state, title].concat(url !== undefined ? url : []) as Parameters) } if (process.env.NODE_ENV !== 'production') { target[fn]._restore = () => { target[fn] = orig } } } -const getCurrentState = (win) => { +const getCurrentState = (win: Window) => { try { return win.history.state } catch (e) {} diff --git a/packages/plugin-navigation-breadcrumbs/test/navigation-breadcrumbs.test.ts b/packages/plugin-navigation-breadcrumbs/test/navigation-breadcrumbs.test.ts index 1b05070d53..0d2c34b9de 100644 --- a/packages/plugin-navigation-breadcrumbs/test/navigation-breadcrumbs.test.ts +++ b/packages/plugin-navigation-breadcrumbs/test/navigation-breadcrumbs.test.ts @@ -1,4 +1,4 @@ -import plugin from '../navigation-breadcrumbs' +import plugin from '../src/navigation-breadcrumbs' import Client from '@bugsnag/core/client' diff --git a/packages/plugin-navigation-breadcrumbs/tsconfig.json b/packages/plugin-navigation-breadcrumbs/tsconfig.json new file mode 100644 index 0000000000..a4cc3029ff --- /dev/null +++ b/packages/plugin-navigation-breadcrumbs/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"], + "compilerOptions": { + "types": ["node"] + } +} + \ No newline at end of file From c55e8e80807a07f1f46c9e8d0a840a3ebc56cd3b Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Fri, 8 Nov 2024 12:22:04 +0000 Subject: [PATCH 03/52] refactor: :recycle: refactor plugin-simple-throttle --- .../rollup.config.npm.mjs | 7 ++--- .../plugin-simple-throttle/src/throttle.ts | 27 ++++++++++++++----- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/packages/plugin-simple-throttle/rollup.config.npm.mjs b/packages/plugin-simple-throttle/rollup.config.npm.mjs index 17c25ef1a6..bb2a0d724e 100644 --- a/packages/plugin-simple-throttle/rollup.config.npm.mjs +++ b/packages/plugin-simple-throttle/rollup.config.npm.mjs @@ -1,5 +1,6 @@ -import createRollupConfig from "../../.rollup/index.mjs"; +import createRollupConfig from '../../.rollup/index.mjs' export default createRollupConfig({ - input: "src/throttle.ts" -}); + input: 'src/throttle.ts', + external: ['@bugsnag/core/lib/validators/int-range'] +}) diff --git a/packages/plugin-simple-throttle/src/throttle.ts b/packages/plugin-simple-throttle/src/throttle.ts index b2aa3e3b81..234f9102b9 100644 --- a/packages/plugin-simple-throttle/src/throttle.ts +++ b/packages/plugin-simple-throttle/src/throttle.ts @@ -1,10 +1,26 @@ -import { Plugin } from '@bugsnag/core' import intRange from '@bugsnag/core/lib/validators/int-range' +import { Client, Config, Logger, Plugin } from '@bugsnag/core' + +interface ThrottlePlugin extends Plugin { + configSchema: { + [key: string]: { + defaultValue: () => unknown + message: string + validate: (value: unknown) => boolean + } + } +} + +interface InternalClient extends Client { + _config: Config & { maxEvents: number } + _logger: Logger +} + /* * Throttles and dedupes events */ -const plugin: Plugin = { +const plugin: ThrottlePlugin = { load: (client) => { // track sent events for each init of the plugin let n = 0 @@ -12,10 +28,8 @@ const plugin: Plugin = { // add onError hook client.addOnError((event) => { // have max events been sent already? - // @ts-expect-error _config is private API - if (n >= client._config.maxEvents) { - // @ts-expect-error _config is private API - client._logger.warn(`Cancelling event send due to maxEvents per session limit of ${client._config.maxEvents} being reached`) + if (n >= (client as InternalClient)._config.maxEvents) { + (client as InternalClient)._logger.warn(`Cancelling event send due to maxEvents per session limit of ${(client as InternalClient)._config.maxEvents} being reached`) return false } n++ @@ -23,7 +37,6 @@ const plugin: Plugin = { client.resetEventCount = () => { n = 0 } }, - // @ts-expect-error _config is private API configSchema: { maxEvents: { defaultValue: () => 10, From 65d11f062acdcad64c71d007e221f3b55d172572 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Mon, 11 Nov 2024 09:54:24 +0000 Subject: [PATCH 04/52] refactor: :recycle: refactor plugin-interaction-breadcrumbs --- .../plugin-interaction-breadcrumbs/package.json | 14 +++++++++++++- .../rollup.config.npm.mjs | 5 +++++ .../interaction-breadcrumbs.ts} | 11 ++++++++--- .../test/interaction-breadcrumbs.test.ts | 2 +- .../plugin-interaction-breadcrumbs/tsconfig.json | 5 +++++ 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 packages/plugin-interaction-breadcrumbs/rollup.config.npm.mjs rename packages/plugin-interaction-breadcrumbs/{interaction-breadcrumbs.js => src/interaction-breadcrumbs.ts} (87%) create mode 100644 packages/plugin-interaction-breadcrumbs/tsconfig.json diff --git a/packages/plugin-interaction-breadcrumbs/package.json b/packages/plugin-interaction-breadcrumbs/package.json index 3d11035d01..48b40f7613 100644 --- a/packages/plugin-interaction-breadcrumbs/package.json +++ b/packages/plugin-interaction-breadcrumbs/package.json @@ -2,6 +2,14 @@ "name": "@bugsnag/plugin-interaction-breadcrumbs", "version": "8.1.1", "main": "interaction-breadcrumbs.js", + "types": "dist/types/interaction-breadcrumbs.d.ts", + "exports": { + ".": { + "types": "./dist/types/interaction-breadcrumbs.d.ts", + "default": "./dist/interaction-breadcrumbs.js", + "import": "./dist/interaction-breadcrumbs.mjs" + } + }, "description": "@bugsnag/js plugin to record UI click events as breadcrumbs", "homepage": "https://www.bugsnag.com/", "repository": { @@ -14,7 +22,11 @@ "files": [ "*.js" ], - "scripts": {}, + "scripts": { + "build": "npm run build:npm", + "build:npm": "rollup --config rollup.config.npm.mjs", + "clean": "rm -rf dist/*" + }, "author": "Bugsnag", "license": "MIT", "devDependencies": { diff --git a/packages/plugin-interaction-breadcrumbs/rollup.config.npm.mjs b/packages/plugin-interaction-breadcrumbs/rollup.config.npm.mjs new file mode 100644 index 0000000000..5683a04647 --- /dev/null +++ b/packages/plugin-interaction-breadcrumbs/rollup.config.npm.mjs @@ -0,0 +1,5 @@ +import createRollupConfig from '../../.rollup/index.mjs' + +export default createRollupConfig({ + input: 'src/interaction-breadcrumbs.ts' +}) diff --git a/packages/plugin-interaction-breadcrumbs/interaction-breadcrumbs.js b/packages/plugin-interaction-breadcrumbs/src/interaction-breadcrumbs.ts similarity index 87% rename from packages/plugin-interaction-breadcrumbs/interaction-breadcrumbs.js rename to packages/plugin-interaction-breadcrumbs/src/interaction-breadcrumbs.ts index 86c7b03086..ba1b65c961 100644 --- a/packages/plugin-interaction-breadcrumbs/interaction-breadcrumbs.js +++ b/packages/plugin-interaction-breadcrumbs/src/interaction-breadcrumbs.ts @@ -1,7 +1,10 @@ +import { Plugin } from '@bugsnag/core' +import type ClientWithInternals from 'packages/core/client' + /* * Leaves breadcrumbs when the user interacts with the DOM */ -module.exports = (win = window) => ({ +export default (win = window): Plugin => ({ load: (client) => { if (!('addEventListener' in win)) return if (!client._isBreadcrumbTypeEnabled('user')) return @@ -23,7 +26,8 @@ module.exports = (win = window) => ({ const trim = /^\s*([^\s][\s\S]{0,139}[^\s])?\s*/ -function getNodeText (el) { +// TODO: Fix Type +function getNodeText (el: any) { let text = el.textContent || el.innerText || '' if (!text && (el.type === 'submit' || el.type === 'button')) { @@ -40,7 +44,8 @@ function getNodeText (el) { } // Create a label from tagname, id and css class of the element -function getNodeSelector (el, win) { +// TODO: Fix Type +function getNodeSelector (el: any, win: Window): string { const parts = [el.tagName] if (el.id) parts.push('#' + el.id) if (el.className && el.className.length) parts.push(`.${el.className.split(' ').join('.')}`) diff --git a/packages/plugin-interaction-breadcrumbs/test/interaction-breadcrumbs.test.ts b/packages/plugin-interaction-breadcrumbs/test/interaction-breadcrumbs.test.ts index e2c198dec5..8ce1f00285 100644 --- a/packages/plugin-interaction-breadcrumbs/test/interaction-breadcrumbs.test.ts +++ b/packages/plugin-interaction-breadcrumbs/test/interaction-breadcrumbs.test.ts @@ -1,4 +1,4 @@ -import plugin from '../' +import plugin from '../src/interaction-breadcrumbs' import Client from '@bugsnag/core/client' import Breadcrumb from '@bugsnag/core/breadcrumb' diff --git a/packages/plugin-interaction-breadcrumbs/tsconfig.json b/packages/plugin-interaction-breadcrumbs/tsconfig.json new file mode 100644 index 0000000000..09758ceb4c --- /dev/null +++ b/packages/plugin-interaction-breadcrumbs/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"] +} + \ No newline at end of file From 6da01bbc020edfcafeb7879c14b44978639a53ba Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Fri, 15 Nov 2024 16:33:13 +0000 Subject: [PATCH 05/52] update types --- packages/core/config.d.ts | 115 ++++++++++++++++++ .../src/interaction-breadcrumbs.ts | 8 +- 2 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 packages/core/config.d.ts diff --git a/packages/core/config.d.ts b/packages/core/config.d.ts new file mode 100644 index 0000000000..cee871526c --- /dev/null +++ b/packages/core/config.d.ts @@ -0,0 +1,115 @@ +export interface Schema { + apiKey: { + defaultValue: () => null + message: string + validate: (value: unknown) => boolean + } + appVersion: { + defaultValue: () => undefined + message: string + validate: (value: unknown) => boolean + } + appType: { + defaultValue: () => undefined + message: string + validate: (value: unknown) => boolean + } + autoDetectErrors: { + defaultValue: () => true + message: string + validate: (value: unknown) => boolean + } + enabledErrorTypes: { + defaultValue: () => { unhandledExceptions: boolean, unhandledRejections: boolean } + message: string + allowPartialObject: boolean + validate: (value: unknown) => boolean + } + onError: { + defaultValue: () => [] + message: string + validate: (value: unknown) => boolean + } + onSession: { + defaultValue: () => [] + message: string + validate: (value: unknown) => boolean + } + onBreadcrumb: { + defaultValue: () => [] + message: string + validate: (value: unknown) => boolean + } + endpoints: { + defaultValue: (endpoints: { notify: string, sessions: string } | undefined) => { notify: string | null, sessions: string | null } + message: string + validate: (value: unknown) => boolean + } + autoTrackSessions: { + defaultValue: () => boolean + message: string + validate: (value: unknown) => boolean + } + enabledReleaseStages: { + defaultValue: () => null + message: string + validate: (value: unknown) => boolean + } + releaseStage: { + defaultValue: () => 'production' + message: string + validate: (value: unknown) => boolean + } + maxBreadcrumbs: { + defaultValue: () => 25 + message: string + validate: (value: unknown) => boolean + } + enabledBreadcrumbTypes: { + defaultValue: () => ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual'] + message: string + validate: (value: unknown) => boolean + } + context: { + defaultValue: () => undefined + message: string + validate: (value: unknown) => boolean + } + user: { + defaultValue: () => {} + message: string + validate: (value: unknown) => boolean + } + metadata: { + defaultValue: () => {} + message: string + validate: (value: unknown) => boolean + } + logger: { + defaultValue: () => undefined + message: string + validate: (value: unknown) => boolean + } + redactedKeys: { + defaultValue: () => ['password'] + message: string + validate: (value: unknown) => boolean + } + plugins: { + defaultValue: () => [] + message: string + validate: (value: unknown) => boolean + } + featureFlags: { + defaultValue: () => [] + message: string + validate: (value: unknown) => boolean + } + reportUnhandledPromiseRejectionsAsHandled: { + defaultValue: () => false + message: string + validate: (value: unknown) => boolean + } +} + +export const schema: Schema diff --git a/packages/plugin-interaction-breadcrumbs/src/interaction-breadcrumbs.ts b/packages/plugin-interaction-breadcrumbs/src/interaction-breadcrumbs.ts index ba1b65c961..d910565175 100644 --- a/packages/plugin-interaction-breadcrumbs/src/interaction-breadcrumbs.ts +++ b/packages/plugin-interaction-breadcrumbs/src/interaction-breadcrumbs.ts @@ -4,10 +4,10 @@ import type ClientWithInternals from 'packages/core/client' /* * Leaves breadcrumbs when the user interacts with the DOM */ -export default (win = window): Plugin => ({ +export default (win = window): Plugin => ({ load: (client) => { if (!('addEventListener' in win)) return - if (!client._isBreadcrumbTypeEnabled('user')) return + if (!(client as ClientWithInternals)._isBreadcrumbTypeEnabled('user')) return win.addEventListener('click', (event) => { let targetText, targetSelector @@ -16,8 +16,8 @@ export default (win = window): Plugin => ({ targetSelector = getNodeSelector(event.target, win) } catch (e) { targetText = '[hidden]' - targetSelector = '[hidden]' - client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z') + targetSelector = '[hidden]'; + (client as ClientWithInternals)._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z') } client.leaveBreadcrumb('UI click', { targetText, targetSelector }, 'user') }, true) From 7e8257aa29c2a60a963d3c0eeffbc1f2b310b617 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Mon, 18 Nov 2024 16:00:09 +0000 Subject: [PATCH 06/52] refactor: :recycle: refactor plugin-inline-script-content --- .../plugin-inline-script-content/package.json | 16 +++- .../rollup.config.npm.mjs | 6 ++ .../inline-script-content.ts} | 73 ++++++++++++++----- .../tsconfig.json | 5 ++ .../package.json | 2 +- 5 files changed, 79 insertions(+), 23 deletions(-) create mode 100644 packages/plugin-inline-script-content/rollup.config.npm.mjs rename packages/plugin-inline-script-content/{inline-script-content.js => src/inline-script-content.ts} (72%) create mode 100644 packages/plugin-inline-script-content/tsconfig.json diff --git a/packages/plugin-inline-script-content/package.json b/packages/plugin-inline-script-content/package.json index af39d4b493..9d22fed43c 100644 --- a/packages/plugin-inline-script-content/package.json +++ b/packages/plugin-inline-script-content/package.json @@ -1,7 +1,15 @@ { "name": "@bugsnag/plugin-inline-script-content", "version": "8.1.1", - "main": "inline-script-content.js", + "main": "dist/inline-script-content.js", + "types": "dist/types/inline-script-content.d.ts", + "exports": { + ".": { + "types": "./dist/types/inline-script-content.d.ts", + "default": "./dist/inline-script-content.js", + "import": "./dist/inline-script-content.mjs" + } + }, "description": "@bugsnag/js plugin to attach inline script content to error events", "homepage": "https://www.bugsnag.com/", "repository": { @@ -14,7 +22,11 @@ "files": [ "*.js" ], - "scripts": {}, + "scripts": { + "build": "npm run build:npm", + "build:npm": "rollup --config rollup.config.npm.mjs", + "clean": "rm -rf dist/*" + }, "author": "Bugsnag", "license": "MIT", "devDependencies": { diff --git a/packages/plugin-inline-script-content/rollup.config.npm.mjs b/packages/plugin-inline-script-content/rollup.config.npm.mjs new file mode 100644 index 0000000000..a472a8a594 --- /dev/null +++ b/packages/plugin-inline-script-content/rollup.config.npm.mjs @@ -0,0 +1,6 @@ +import createRollupConfig from '../../.rollup/index.mjs' + +export default createRollupConfig({ + input: 'src/inline-script-content.ts', + external: ['@bugsnag/core/lib/es-utils/map', '@bugsnag/core/lib/es-utils/reduce', '@bugsnag/core/lib/es-utils/filter'] +}) diff --git a/packages/plugin-inline-script-content/inline-script-content.js b/packages/plugin-inline-script-content/src/inline-script-content.ts similarity index 72% rename from packages/plugin-inline-script-content/inline-script-content.js rename to packages/plugin-inline-script-content/src/inline-script-content.ts index 26749c6a2f..826effeec8 100644 --- a/packages/plugin-inline-script-content/inline-script-content.js +++ b/packages/plugin-inline-script-content/src/inline-script-content.ts @@ -1,13 +1,33 @@ -const map = require('@bugsnag/core/lib/es-utils/map') -const reduce = require('@bugsnag/core/lib/es-utils/reduce') -const filter = require('@bugsnag/core/lib/es-utils/filter') +import map from '@bugsnag/core/lib/es-utils/map' +import reduce from '@bugsnag/core/lib/es-utils/reduce' +import filter from '@bugsnag/core/lib/es-utils/filter' +import type { Config, Plugin } from '@bugsnag/core/types' +import type ClientWithInternals from 'packages/core/client' const MAX_LINE_LENGTH = 200 const MAX_SCRIPT_LENGTH = 500000 -module.exports = (doc = document, win = window) => ({ +interface ExtendedConfig extends Config { + trackInlineScripts: boolean +} + +interface ExtendedDocument extends Document { + attachEvent?: unknown +} + +interface ValidationOption { + validate: (value: unknown) => boolean + defaultValue: () => unknown + message: string +} + +interface ExtendedPlugin extends Plugin { + configSchema: Record +} + +export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin => ({ load: (client) => { - if (!client._config.trackInlineScripts) return + if (!(client as ClientWithInternals)._config.trackInlineScripts) return const originalLocation = win.location.href let html = '' @@ -28,15 +48,15 @@ module.exports = (doc = document, win = window) => ({ html = getHtml() DOMContentLoaded = true } - try { prev.apply(this, arguments) } catch (e) {} + try { prev && prev.apply(this, arguments as unknown as Parameters) } catch (e) {} } - let _lastScript = null - const updateLastScript = script => { + let _lastScript: HTMLOrSVGScriptElement | null = null + const updateLastScript = (script: HTMLOrSVGScriptElement | null) => { _lastScript = script } - const getCurrentScript = () => { + const getCurrentScript = (): HTMLOrSVGScriptElement | null => { let script = doc.currentScript || _lastScript if (!script && !DOMContentLoaded) { const scripts = doc.scripts || doc.getElementsByTagName('script') @@ -45,7 +65,7 @@ module.exports = (doc = document, win = window) => ({ return script } - const addSurroundingCode = lineNumber => { + const addSurroundingCode = (lineNumber: number) => { // get whatever html has rendered at this point if (!DOMContentLoaded || !html) html = getHtml() // simulate the raw html @@ -62,12 +82,12 @@ module.exports = (doc = document, win = window) => ({ client.addOnError(event => { // remove any of our own frames that may be part the stack this // happens before the inline script check as it happens for all errors - event.errors[0].stacktrace = filter(event.errors[0].stacktrace, f => !(/__trace__$/.test(f.method))) + event.errors[0].stacktrace = filter(event.errors[0].stacktrace, f => !(/__trace__$/.test(String(f.method)))) const frame = event.errors[0].stacktrace[0] // remove hash and query string from url - const cleanUrl = (url) => url.replace(/#.*$/, '').replace(/\?.*$/, '') + const cleanUrl = (url: string) => url.replace(/#.*$/, '').replace(/\?.*$/, '') // if frame.file exists and is not the original location of the page, this can't be an inline script if (frame && frame.file && cleanUrl(frame.file) !== cleanUrl(originalLocation)) return @@ -87,6 +107,7 @@ module.exports = (doc = document, win = window) => ({ frame.code = addSurroundingCode(frame.lineNumber) } } + // @ts-expect-error second argument is private API }, true) // Proxy all the timer functions whose callback is their 0th argument. @@ -105,6 +126,10 @@ module.exports = (doc = document, win = window) => ({ ) ) + type ValidWindowProperties = 'EventTarget' | 'Window' | 'Node' | 'ChannelMergerNode' | 'EventSource' | 'FileReader' | 'HTMLUnknownElement' | 'IDBDatabase' | 'IDBRequest' | 'IDBTransaction' | 'MessagePort' | 'Notification' | 'Screen' | 'TextTrack' | 'TextTrackCue' | 'TextTrackList' | 'WebSocket' | 'Worker' | 'XMLHttpRequest' | 'XMLHttpRequestEventTarget' | 'XMLHttpRequestUpload' + + type WindowProperties = keyof Pick + // Proxy all the host objects whose prototypes have an addEventListener function map([ 'EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', @@ -112,7 +137,7 @@ module.exports = (doc = document, win = window) => ({ 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload' - ], o => { + ] as WindowProperties[], o => { if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return __proxy(win[o].prototype, 'addEventListener', original => __traceOriginalScript(original, eventTargetCallbackAccessor) @@ -122,7 +147,7 @@ module.exports = (doc = document, win = window) => ({ ) }) - function __traceOriginalScript (fn, callbackAccessor, alsoCallOriginal = false) { + function __traceOriginalScript (fn: Function, callbackAccessor: EventTargetCallbackAccessor, alsoCallOriginal = false) { return function () { // this is required for removeEventListener to remove anything added with // addEventListener before the functions started being wrapped by Bugsnag @@ -130,8 +155,8 @@ module.exports = (doc = document, win = window) => ({ try { const cba = callbackAccessor(args) const cb = cba.get() - if (alsoCallOriginal) fn.apply(this, args) - if (typeof cb !== 'function') return fn.apply(this, args) + if (alsoCallOriginal) fn.apply(fn, args) + if (typeof cb !== 'function') return fn.apply(fn, args) if (cb.__trace__) { cba.replace(cb.__trace__) } else { @@ -159,7 +184,7 @@ module.exports = (doc = document, win = window) => ({ // WebDriverException: Message: Permission denied to access property "handleEvent" } // IE8 doesn't let you call .apply() on setTimeout/setInterval - if (fn.apply) return fn.apply(this, args) + if (fn.apply) return fn.apply(fn, args) switch (args.length) { case 1: return fn(args[0]) case 2: return fn(args[0], args[1]) @@ -177,7 +202,7 @@ module.exports = (doc = document, win = window) => ({ } }) -function __proxy (host, name, replacer) { +function __proxy (host: any, name: string, replacer: (original: Function) => Function) { const original = host[name] if (!original) return original const replacement = replacer(original) @@ -185,13 +210,19 @@ function __proxy (host, name, replacer) { return original } -function eventTargetCallbackAccessor (args) { +type NestedFunction = Function & { __trace__?: NestedFunction } + +type Argument = NestedFunction & { + handleEvent?: NestedFunction +} + +function eventTargetCallbackAccessor (args: Argument[]) { const isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function' return { get: function () { return isEventHandlerObj ? args[1].handleEvent : args[1] }, - replace: function (fn) { + replace: function (fn: Function) { if (isEventHandlerObj) { args[1].handleEvent = fn } else { @@ -200,3 +231,5 @@ function eventTargetCallbackAccessor (args) { } } } + +type EventTargetCallbackAccessor = typeof eventTargetCallbackAccessor diff --git a/packages/plugin-inline-script-content/tsconfig.json b/packages/plugin-inline-script-content/tsconfig.json new file mode 100644 index 0000000000..09758ceb4c --- /dev/null +++ b/packages/plugin-inline-script-content/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"] +} + \ No newline at end of file diff --git a/packages/plugin-interaction-breadcrumbs/package.json b/packages/plugin-interaction-breadcrumbs/package.json index 48b40f7613..1549f67872 100644 --- a/packages/plugin-interaction-breadcrumbs/package.json +++ b/packages/plugin-interaction-breadcrumbs/package.json @@ -1,7 +1,7 @@ { "name": "@bugsnag/plugin-interaction-breadcrumbs", "version": "8.1.1", - "main": "interaction-breadcrumbs.js", + "main": "dist/interaction-breadcrumbs.js", "types": "dist/types/interaction-breadcrumbs.d.ts", "exports": { ".": { From 8c78faf89521f5e02baa41240edd902bcc086ca2 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Mon, 9 Dec 2024 12:28:49 +0000 Subject: [PATCH 07/52] fix rollup config --- packages/browser/rollup.config.npm.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 4b5f9ebb36..2473341e2e 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -1,7 +1,7 @@ import createRollupConfig from "../../.rollup/index.mjs"; export default createRollupConfig({ - input: "src/request.ts", + input: "src/notifier.ts", external: [ '@bugsnag/core/client', '@bugsnag/core/event', From b813a191d301cd297cda910832df75f8a7daa53b Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Wed, 11 Dec 2024 09:35:33 +0000 Subject: [PATCH 08/52] update imports --- packages/browser/package.json | 6 +-- packages/browser/rollup.config.npm.mjs | 54 +++++++++---------- packages/browser/src/get-prefixed-console.ts | 2 +- packages/browser/src/notifier.ts | 8 +-- packages/browser/test/index.test.ts | 10 ++-- .../package.json | 2 +- 6 files changed, 41 insertions(+), 41 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index 2ef9110947..6cc6cf081e 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,13 +1,13 @@ { "name": "@bugsnag/browser", "version": "8.1.2", - "main": "dist/bugsnag.js", + "main": "dist/notifier.js", "types": "types/bugsnag.d.ts", "exports": { ".": { "types": "./types/bugsnag.d.ts", - "default": "./dist/bugsnag.js", - "import": "./dist/bugsnag.mjs" + "default": "./dist/notifier.js", + "import": "./dist/notifier.mjs" } }, "description": "Bugsnag error reporter for browser JavaScript", diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 2473341e2e..6235d5fe1a 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -3,31 +3,31 @@ import createRollupConfig from "../../.rollup/index.mjs"; export default createRollupConfig({ input: "src/notifier.ts", external: [ - '@bugsnag/core/client', - '@bugsnag/core/event', - '@bugsnag/core/session', - '@bugsnag/core/breadcrumb', - '@bugsnag/core/config', - '@bugsnag/core/types', - '@bugsnag/core/lib/es-utils/map', - '@bugsnag/core/lib/es-utils/keys', - '@bugsnag/core/lib/es-utils/assign', - '@bugsnag/plugin-window-onerror', - '@bugsnag/plugin-window-unhandled-rejection', - '@bugsnag/plugin-app-duration', - '@bugsnag/plugin-browser-device', - '@bugsnag/plugin-browser-context', - '@bugsnag/plugin-browser-request', - '@bugsnag/plugin-simple-throttle', - '@bugsnag/plugin-console-breadcrumbs', - '@bugsnag/plugin-network-breadcrumbs', - '@bugsnag/plugin-navigation-breadcrumbs', - '@bugsnag/plugin-interaction-breadcrumbs', - '@bugsnag/plugin-inline-script-content', - '@bugsnag/plugin-browser-session', - '@bugsnag/plugin-client-ip', - '@bugsnag/plugin-strip-query-string', - '@bugsnag/delivery-x-domain-request', - '@bugsnag/delivery-xml-http-request' - ] + "@bugsnag/core/client", + "@bugsnag/core/event", + "@bugsnag/core/session", + "@bugsnag/core/breadcrumb", + "@bugsnag/core/config", + "@bugsnag/core/types", + "@bugsnag/core/lib/es-utils/map", + "@bugsnag/core/lib/es-utils/keys", + "@bugsnag/core/lib/es-utils/assign", + "@bugsnag/plugin-window-onerror", + "@bugsnag/plugin-window-unhandled-rejection", + "@bugsnag/plugin-app-duration", + "@bugsnag/plugin-browser-device", + "@bugsnag/plugin-browser-context", + "@bugsnag/plugin-browser-request", + "@bugsnag/plugin-simple-throttle", + "@bugsnag/plugin-console-breadcrumbs", + "@bugsnag/plugin-network-breadcrumbs", + "@bugsnag/plugin-navigation-breadcrumbs", + "@bugsnag/plugin-interaction-breadcrumbs", + "@bugsnag/plugin-inline-script-content", + "@bugsnag/plugin-browser-session", + "@bugsnag/plugin-client-ip", + "@bugsnag/plugin-strip-query-string", + "@bugsnag/delivery-x-domain-request", + "@bugsnag/delivery-xml-http-request" + ], }); diff --git a/packages/browser/src/get-prefixed-console.ts b/packages/browser/src/get-prefixed-console.ts index 3abc1bf1c4..2fcb2bc1b0 100644 --- a/packages/browser/src/get-prefixed-console.ts +++ b/packages/browser/src/get-prefixed-console.ts @@ -1,4 +1,4 @@ -import map from 'packages/core/lib/es-utils/map' +import map from '@bugsnag/core/lib/es-utils/map' type LoggerMethod = 'debug' | 'info' | 'warn' | 'error' diff --git a/packages/browser/src/notifier.ts b/packages/browser/src/notifier.ts index eab8bae571..f95b38e111 100644 --- a/packages/browser/src/notifier.ts +++ b/packages/browser/src/notifier.ts @@ -1,7 +1,7 @@ import Client from '@bugsnag/core/client' -import Event from '@bugsnag/core/event' -import Session from '@bugsnag/core/session' -import Breadcrumb from '@bugsnag/core/breadcrumb' +// import Event from '@bugsnag/core/event' +// import Session from '@bugsnag/core/session' +// import Breadcrumb from '@bugsnag/core/breadcrumb' import { Config } from '@bugsnag/core/types' import map from '@bugsnag/core/lib/es-utils/map' @@ -119,6 +119,6 @@ map(['resetEventCount'].concat(keys(Client.prototype)) as Method[], (m) => { } }) -export { Client, Event, Session, Breadcrumb, Bugsnag } +// export { Client, Event, Session, Breadcrumb, Bugsnag } export default Bugsnag diff --git a/packages/browser/test/index.test.ts b/packages/browser/test/index.test.ts index 7e39b8cb13..3834a9f5e3 100644 --- a/packages/browser/test/index.test.ts +++ b/packages/browser/test/index.test.ts @@ -1,4 +1,4 @@ -import BugsnagBrowserStatic, { Breadcrumb, BrowserConfig, Session } from '../src/notifier' +import BugsnagBrowserStatic, { Breadcrumb, BrowserConfig, Session } from '../' const DONE = window.XMLHttpRequest.DONE @@ -39,7 +39,7 @@ describe('browser notifier', () => { }) function getBugsnag (): typeof BugsnagBrowserStatic { - const Bugsnag = require('../src/notifier') as typeof BugsnagBrowserStatic + const Bugsnag = require('../src/notifier').default return Bugsnag } @@ -52,7 +52,7 @@ describe('browser notifier', () => { load: client => 10 }] }) - expect(Bugsnag.getPlugin('foobar')).toBe(10) + expect(Bugsnag.getPlugin?.('foobar')).toBe(10) }) it('notifies handled errors', (done) => { @@ -138,7 +138,7 @@ describe('browser notifier', () => { it('accepts all config options', (done) => { const Bugsnag = getBugsnag() - const completeConfig: Required = { + const completeConfig: BrowserConfig = { apiKey: API_KEY, appVersion: '1.2.3', appType: 'worker', @@ -148,7 +148,7 @@ describe('browser notifier', () => { unhandledRejections: true }, onError: [ - event => true + () => true ], onBreadcrumb: (b: Breadcrumb) => { return false diff --git a/packages/plugin-navigation-breadcrumbs/package.json b/packages/plugin-navigation-breadcrumbs/package.json index c99b879c8b..2561c83511 100644 --- a/packages/plugin-navigation-breadcrumbs/package.json +++ b/packages/plugin-navigation-breadcrumbs/package.json @@ -1,7 +1,7 @@ { "name": "@bugsnag/plugin-navigation-breadcrumbs", "version": "8.1.1", - "main": "navigation-breadcrumbs.js", + "main": "dist/navigation-breadcrumbs.js", "types": "dist/types/navigation-breadcrumbs.d.ts", "exports": { ".": { From 1c0e1e9ad305a81ebfe2da13e3974a1374410e2b Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Wed, 11 Dec 2024 10:24:56 +0000 Subject: [PATCH 09/52] fix import --- .../test/inline-script-content.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-inline-script-content/test/inline-script-content.test.ts b/packages/plugin-inline-script-content/test/inline-script-content.test.ts index afaff413de..b8b2b12e52 100644 --- a/packages/plugin-inline-script-content/test/inline-script-content.test.ts +++ b/packages/plugin-inline-script-content/test/inline-script-content.test.ts @@ -1,4 +1,4 @@ -import plugin from '../inline-script-content' +import plugin from '../' import Client from '@bugsnag/core/client' import Event from '@bugsnag/core/event' From a70287f238b1e52cc5555028adb99de6dfa8fd4e Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Wed, 11 Dec 2024 15:48:22 +0000 Subject: [PATCH 10/52] fix dist and tests --- jest.config.js | 4 +++- jest/setup/mockEventTarget.js | 40 ++++++++++++++++++++++++++++++++++ packages/browser/src/config.ts | 5 ++--- 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 jest/setup/mockEventTarget.js diff --git a/jest.config.js b/jest.config.js index 64bc93ba34..40bc65fde5 100644 --- a/jest.config.js +++ b/jest.config.js @@ -49,7 +49,9 @@ module.exports = { 'plugin-simple-throttle', 'plugin-console-breadcrumbs', 'plugin-browser-session' - ]), + ], { + setupFiles: ['/jest/setup/mockEventTarget.js'] + }), project('react native', [ 'react-native', 'delivery-react-native', diff --git a/jest/setup/mockEventTarget.js b/jest/setup/mockEventTarget.js new file mode 100644 index 0000000000..784b0d699a --- /dev/null +++ b/jest/setup/mockEventTarget.js @@ -0,0 +1,40 @@ +// copy the code from https://developer.mozilla.org/en-US/docs/Web/API/EventTarget#Simple_implementation_of_EventTarget +var EventTarget = function () { + this.listeners = {} +} + +EventTarget.prototype.listeners = null +EventTarget.prototype.addEventListener = function (type, callback) { + if (!(type in this.listeners)) { + this.listeners[type] = [] + } + this.listeners[type].push(callback) +} + +EventTarget.prototype.removeEventListener = function (type, callback) { + if (!(type in this.listeners)) { + return + } + var stack = this.listeners[type] + for (var i = 0, l = stack.length; i < l; i++) { + if (stack[i] === callback) { + stack.splice(i, 1) + return + } + } +} + +EventTarget.prototype.dispatchEvent = function (event) { + if (!(event.type in this.listeners)) { + return true + } + var stack = this.listeners[event.type].slice() + + for (var i = 0, l = stack.length; i < l; i++) { + stack[i].call(this, event) + } + return !event.defaultPrevented +} + +// make the EventTarget global +global.EventTarget = EventTarget diff --git a/packages/browser/src/config.ts b/packages/browser/src/config.ts index 1e1d304c48..fd9c49a335 100644 --- a/packages/browser/src/config.ts +++ b/packages/browser/src/config.ts @@ -9,10 +9,9 @@ const config = { return 'production' } }), - appType: { - ...schema.appType, + appType: assign({}, schema.appType, { defaultValue: () => 'browser' - }, + }), logger: assign({}, schema.logger, { defaultValue: () => // set logger based on browser capability From 066d17e1f4c25380e168ea06e3db9b887b6281b0 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Wed, 11 Dec 2024 16:00:10 +0000 Subject: [PATCH 11/52] fix dist and tests --- dockerfiles/Dockerfile.browser | 1 + 1 file changed, 1 insertion(+) diff --git a/dockerfiles/Dockerfile.browser b/dockerfiles/Dockerfile.browser index 701e8c54ac..f98bbb39e9 100644 --- a/dockerfiles/Dockerfile.browser +++ b/dockerfiles/Dockerfile.browser @@ -10,6 +10,7 @@ COPY babel.config.js lerna.json .eslintignore .eslintrc.js jest.config.js tsconf ADD min_packages.tar . COPY .rollup ./.rollup COPY bin ./bin +COPY jest ./jest COPY packages ./packages RUN npm install From d2badbd7ef9ac23170a67494966ae3d97e7c008f Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Wed, 11 Dec 2024 16:07:50 +0000 Subject: [PATCH 12/52] fix dist and tests --- dockerfiles/Dockerfile.ci | 1 + dockerfiles/Dockerfile.node | 1 + 2 files changed, 2 insertions(+) diff --git a/dockerfiles/Dockerfile.ci b/dockerfiles/Dockerfile.ci index b8560c6d7b..83cbaf1b0d 100644 --- a/dockerfiles/Dockerfile.ci +++ b/dockerfiles/Dockerfile.ci @@ -12,6 +12,7 @@ COPY .rollup ./.rollup COPY bin ./bin COPY scripts ./scripts COPY test ./test +COPY jest ./jest COPY packages ./packages RUN npm install --unsafe-perm diff --git a/dockerfiles/Dockerfile.node b/dockerfiles/Dockerfile.node index 187ec60a9d..4852f01a2e 100644 --- a/dockerfiles/Dockerfile.node +++ b/dockerfiles/Dockerfile.node @@ -10,6 +10,7 @@ COPY babel.config.js lerna.json .eslintignore .eslintrc.js jest.config.js tsconf ADD min_packages.tar . COPY .rollup ./.rollup COPY bin ./bin +COPY jest ./jest COPY packages ./packages RUN npm install From e21209b9c40212f38e1a333691b92d9f47537912 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Wed, 18 Dec 2024 17:03:13 +0000 Subject: [PATCH 13/52] browser bundling --- .rollup/index.mjs | 10 +- package-lock.json | 167 +++++++++++++++++++++++-- packages/browser/babel.config.js | 3 + packages/browser/package.json | 5 +- packages/browser/rollup.config.npm.mjs | 63 +++++----- 5 files changed, 206 insertions(+), 42 deletions(-) create mode 100644 packages/browser/babel.config.js diff --git a/.rollup/index.mjs b/.rollup/index.mjs index 24605f46b0..8c2a244a3c 100644 --- a/.rollup/index.mjs +++ b/.rollup/index.mjs @@ -14,14 +14,14 @@ const defaultOptions = () => ({ output: undefined }) -const sharedOutput = { +export const sharedOutput = { dir: 'dist', generatedCode: { preset: 'es2015', } } -function createRollupConfig (options = defaultOptions()) { +function createRollupConfig (options = defaultOptions(), overrides = {}) { const packageJson = JSON.parse(fs.readFileSync(`${process.cwd()}/package.json`)) return { @@ -59,8 +59,10 @@ function createRollupConfig (options = defaultOptions()) { emitDeclarationOnly: true, declarationDir: 'dist/types', } - }) - ] + }), + ...options.plugins + ], + ...overrides } } diff --git a/package-lock.json b/package-lock.json index 8533170476..9135a56c0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9680,6 +9680,32 @@ "nanoid": "^3.1.15" } }, + "node_modules/@rollup/plugin-babel": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-commonjs": { "version": "28.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.0.tgz", @@ -32656,8 +32682,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=12" }, @@ -38952,7 +38976,78 @@ "@bugsnag/plugin-simple-throttle": "^8.1.1", "@bugsnag/plugin-strip-query-string": "^8.1.1", "@bugsnag/plugin-window-onerror": "^8.1.1", - "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1" + "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^28.0.2", + "@rollup/plugin-node-resolve": "^16.0.0" + } + }, + "packages/browser/node_modules/@rollup/plugin-commonjs": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.2.tgz", + "integrity": "sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "packages/browser/node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz", + "integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "packages/browser/node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/browser/node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "packages/core": { @@ -39695,7 +39790,6 @@ "packages/plugin-electron-app": { "name": "@bugsnag/plugin-electron-app", "version": "8.1.1", - "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -39737,7 +39831,6 @@ "packages/plugin-electron-client-state-persistence": { "name": "@bugsnag/plugin-electron-client-state-persistence", "version": "8.1.1", - "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -42885,7 +42978,55 @@ "@bugsnag/plugin-simple-throttle": "^8.1.1", "@bugsnag/plugin-strip-query-string": "^8.1.1", "@bugsnag/plugin-window-onerror": "^8.1.1", - "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1" + "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^28.0.2", + "@rollup/plugin-node-resolve": "^16.0.0" + }, + "dependencies": { + "@rollup/plugin-commonjs": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.2.tgz", + "integrity": "sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + } + }, + "@rollup/plugin-node-resolve": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz", + "integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + } + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + } } }, "@bugsnag/core": { @@ -48859,6 +49000,16 @@ "nanoid": "^3.1.15" } }, + "@rollup/plugin-babel": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + } + }, "@rollup/plugin-commonjs": { "version": "28.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.0.tgz", @@ -66915,9 +67066,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "pify": { "version": "5.0.0", diff --git a/packages/browser/babel.config.js b/packages/browser/babel.config.js new file mode 100644 index 0000000000..235ee4504b --- /dev/null +++ b/packages/browser/babel.config.js @@ -0,0 +1,3 @@ +const babelConfig = require('../../babel.config.js') + +module.exports = babelConfig diff --git a/packages/browser/package.json b/packages/browser/package.json index 6cc6cf081e..af004a166c 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -54,7 +54,10 @@ "@bugsnag/plugin-simple-throttle": "^8.1.1", "@bugsnag/plugin-strip-query-string": "^8.1.1", "@bugsnag/plugin-window-onerror": "^8.1.1", - "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1" + "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^28.0.2", + "@rollup/plugin-node-resolve": "^16.0.0" }, "dependencies": { "@bugsnag/core": "^8.1.1" diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 6235d5fe1a..2bde912f81 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -1,33 +1,40 @@ -import createRollupConfig from "../../.rollup/index.mjs"; +import babel from '@rollup/plugin-babel'; +import commonjs from '@rollup/plugin-commonjs' +import nodeResolve from '@rollup/plugin-node-resolve' +import typescript from '@rollup/plugin-typescript' + +import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" export default createRollupConfig({ input: "src/notifier.ts", - external: [ - "@bugsnag/core/client", - "@bugsnag/core/event", - "@bugsnag/core/session", - "@bugsnag/core/breadcrumb", - "@bugsnag/core/config", - "@bugsnag/core/types", - "@bugsnag/core/lib/es-utils/map", - "@bugsnag/core/lib/es-utils/keys", - "@bugsnag/core/lib/es-utils/assign", - "@bugsnag/plugin-window-onerror", - "@bugsnag/plugin-window-unhandled-rejection", - "@bugsnag/plugin-app-duration", - "@bugsnag/plugin-browser-device", - "@bugsnag/plugin-browser-context", - "@bugsnag/plugin-browser-request", - "@bugsnag/plugin-simple-throttle", - "@bugsnag/plugin-console-breadcrumbs", - "@bugsnag/plugin-network-breadcrumbs", - "@bugsnag/plugin-navigation-breadcrumbs", - "@bugsnag/plugin-interaction-breadcrumbs", - "@bugsnag/plugin-inline-script-content", - "@bugsnag/plugin-browser-session", - "@bugsnag/plugin-client-ip", - "@bugsnag/plugin-strip-query-string", - "@bugsnag/delivery-x-domain-request", - "@bugsnag/delivery-xml-http-request" + output: [ + { + ...sharedOutput, + entryFileNames: '[name].js', + format: 'cjs' + }, + { + ...sharedOutput, + preserveModules: false, + entryFileNames: '[name].mjs', + format: 'esm' + } ], + plugins: [ + nodeResolve(), + commonjs(), + typescript({ + removeComments: true, + // don't output anything if there's a TS error + noEmitOnError: true, + // turn on declaration files and declaration maps + compilerOptions: { + declaration: true, + declarationMap: true, + emitDeclarationOnly: true, + declarationDir: 'dist/types', + } + }), + babel({ babelHelpers: 'bundled' }), + ] }); From 337ca20895c7a3c0fc4a97592766e8d691e277fa Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Wed, 18 Dec 2024 17:17:04 +0000 Subject: [PATCH 14/52] browser bundling --- .rollup/index.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.rollup/index.mjs b/.rollup/index.mjs index 8c2a244a3c..0621e2c9bf 100644 --- a/.rollup/index.mjs +++ b/.rollup/index.mjs @@ -60,7 +60,7 @@ function createRollupConfig (options = defaultOptions(), overrides = {}) { declarationDir: 'dist/types', } }), - ...options.plugins + ...(options.plugins ?? []) ], ...overrides } From 7a9ce694c132f70077e306656d0187aa2a6914ac Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Wed, 18 Dec 2024 17:44:41 +0000 Subject: [PATCH 15/52] browser bundling --- packages/browser/rollup.config.npm.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 2bde912f81..ed5564cae6 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -21,7 +21,7 @@ export default createRollupConfig({ } ], plugins: [ - nodeResolve(), + nodeResolve({ browser: true}), commonjs(), typescript({ removeComments: true, @@ -35,6 +35,6 @@ export default createRollupConfig({ declarationDir: 'dist/types', } }), - babel({ babelHelpers: 'bundled' }), + // babel({ babelHelpers: 'bundled' }), ] }); From 2b89432c3d204187d86795e916a52d6dee97abef Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 08:25:30 +0000 Subject: [PATCH 16/52] browser bundling --- packages/browser/rollup.config.npm.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index ed5564cae6..606071f85d 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -35,6 +35,6 @@ export default createRollupConfig({ declarationDir: 'dist/types', } }), - // babel({ babelHelpers: 'bundled' }), + babel({ babelHelpers: 'bundled' }), ] }); From 2d3049b99f90201f5139a730f199409a04350dda Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 09:01:07 +0000 Subject: [PATCH 17/52] browser bundling --- package-lock.json | 51 +++++++++++++++++++++++++- packages/browser/package.json | 3 +- packages/browser/rollup.config.npm.mjs | 11 +++++- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9135a56c0f..6ba2d0e209 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9816,6 +9816,28 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-typescript": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.0.tgz", @@ -35025,6 +35047,12 @@ "npm": ">= 3.0.0" } }, + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true + }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -38979,7 +39007,8 @@ "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.2", - "@rollup/plugin-node-resolve": "^16.0.0" + "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-terser": "^0.4.4" } }, "packages/browser/node_modules/@rollup/plugin-commonjs": { @@ -42981,7 +43010,8 @@ "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.2", - "@rollup/plugin-node-resolve": "^16.0.0" + "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-terser": "^0.4.4" }, "dependencies": { "@rollup/plugin-commonjs": { @@ -49084,6 +49114,17 @@ } } }, + "@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "requires": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + } + }, "@rollup/plugin-typescript": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.0.tgz", @@ -68937,6 +68978,12 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, + "smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", diff --git a/packages/browser/package.json b/packages/browser/package.json index af004a166c..e37e996912 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -57,7 +57,8 @@ "@bugsnag/plugin-window-unhandled-rejection": "^8.1.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.2", - "@rollup/plugin-node-resolve": "^16.0.0" + "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-terser": "^0.4.4" }, "dependencies": { "@bugsnag/core": "^8.1.1" diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 606071f85d..dfa9a6ba3b 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -1,6 +1,7 @@ import babel from '@rollup/plugin-babel'; import commonjs from '@rollup/plugin-commonjs' import nodeResolve from '@rollup/plugin-node-resolve' +import terser from '@rollup/plugin-terser' import typescript from '@rollup/plugin-typescript' import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" @@ -10,14 +11,20 @@ export default createRollupConfig({ output: [ { ...sharedOutput, - entryFileNames: '[name].js', + entryFileNames: 'bugsnag.js', format: 'cjs' }, { ...sharedOutput, preserveModules: false, - entryFileNames: '[name].mjs', + entryFileNames: 'bugsnag.mjs', format: 'esm' + }, { + ...sharedOutput, + entryFileNames: 'bugsnag.min.js', + format: 'cjs', + compact: true, + plugins: [terser({ ecma: 2015 })], } ], plugins: [ From 2a9479d5b394973014c266167eafd6acf38ffec7 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 09:30:32 +0000 Subject: [PATCH 18/52] browser bundling --- packages/browser/package.json | 8 +++----- packages/browser/rollup.config.npm.mjs | 8 ++++---- packages/browser/src/{notifier.ts => bugsnag.ts} | 0 3 files changed, 7 insertions(+), 9 deletions(-) rename packages/browser/src/{notifier.ts => bugsnag.ts} (100%) diff --git a/packages/browser/package.json b/packages/browser/package.json index e37e996912..2f3b760f4e 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,13 +1,13 @@ { "name": "@bugsnag/browser", "version": "8.1.2", - "main": "dist/notifier.js", + "main": "dist/bugsnag.js", "types": "types/bugsnag.d.ts", "exports": { ".": { "types": "./types/bugsnag.d.ts", - "default": "./dist/notifier.js", - "import": "./dist/notifier.mjs" + "default": "./dist/bugsnag.js", + "import": "./dist/bugsnag.mjs" } }, "description": "Bugsnag error reporter for browser JavaScript", @@ -31,8 +31,6 @@ "clean": "rm -fr dist && mkdir dist", "build": "npm run clean && npm run build:npm", "build:npm": "rollup --config rollup.config.npm.mjs", - "build:dist": "cross-env NODE_ENV=production bash -c '../../bin/bundle src/notifier.js --standalone=Bugsnag | ../../bin/extract-source-map dist/bugsnag.js'", - "build:dist:min": "cross-env NODE_ENV=production bash -c '../../bin/bundle src/notifier.js --standalone=Bugsnag | ../../bin/minify dist/bugsnag.min.js'", "cdn-upload": "../../bin/cdn-upload dist/*" }, "author": "Bugsnag", diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index dfa9a6ba3b..9fa4ee32ef 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -7,21 +7,21 @@ import typescript from '@rollup/plugin-typescript' import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" export default createRollupConfig({ - input: "src/notifier.ts", + input: "src/bugsnag.ts", output: [ { ...sharedOutput, - entryFileNames: 'bugsnag.js', + entryFileNames: '[name].js', format: 'cjs' }, { ...sharedOutput, preserveModules: false, - entryFileNames: 'bugsnag.mjs', + entryFileNames: '[name].mjs', format: 'esm' }, { ...sharedOutput, - entryFileNames: 'bugsnag.min.js', + entryFileNames: '[name].min.js', format: 'cjs', compact: true, plugins: [terser({ ecma: 2015 })], diff --git a/packages/browser/src/notifier.ts b/packages/browser/src/bugsnag.ts similarity index 100% rename from packages/browser/src/notifier.ts rename to packages/browser/src/bugsnag.ts From 1c3b2ac42e980377fb1ec1e0a6f2fda6e0b0ed85 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 09:39:19 +0000 Subject: [PATCH 19/52] browser bundling --- packages/browser/test/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser/test/index.test.ts b/packages/browser/test/index.test.ts index 3834a9f5e3..4dc87d32d5 100644 --- a/packages/browser/test/index.test.ts +++ b/packages/browser/test/index.test.ts @@ -39,7 +39,7 @@ describe('browser notifier', () => { }) function getBugsnag (): typeof BugsnagBrowserStatic { - const Bugsnag = require('../src/notifier').default + const Bugsnag = require('../src/bugsnag').default return Bugsnag } From 15ffd87847d6dd758f00db7ddb5242fbdbca9556 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 10:12:04 +0000 Subject: [PATCH 20/52] browser bundling --- packages/browser/rollup.config.npm.mjs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 9fa4ee32ef..687f8cd179 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -1,6 +1,7 @@ import babel from '@rollup/plugin-babel'; import commonjs from '@rollup/plugin-commonjs' import nodeResolve from '@rollup/plugin-node-resolve' +import replace from '@rollup/plugin-replace' import terser from '@rollup/plugin-terser' import typescript from '@rollup/plugin-typescript' @@ -43,5 +44,11 @@ export default createRollupConfig({ } }), babel({ babelHelpers: 'bundled' }), + replace({ + preventAssignment: true, + values: { + 'process.env.NODE_ENV': JSON.stringify('production') + }, + }), ] }); From c8d3e00b73a69994819a77a55ae4b065dcac8a24 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 10:39:24 +0000 Subject: [PATCH 21/52] browser bundling --- package-lock.json | 33 +++++++++++++++++++++++++++++++++ packages/browser/package.json | 1 + 2 files changed, 34 insertions(+) diff --git a/package-lock.json b/package-lock.json index 6ba2d0e209..4cf0a43a44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39008,6 +39008,7 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.2", "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4" } }, @@ -39061,6 +39062,27 @@ } } }, + "packages/browser/node_modules/@rollup/plugin-replace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz", + "integrity": "sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "packages/browser/node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -43011,6 +43033,7 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.2", "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4" }, "dependencies": { @@ -43042,6 +43065,16 @@ "resolve": "^1.22.1" } }, + "@rollup/plugin-replace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz", + "integrity": "sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + } + }, "deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", diff --git a/packages/browser/package.json b/packages/browser/package.json index 2f3b760f4e..43f5d47ef7 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -56,6 +56,7 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.2", "@rollup/plugin-node-resolve": "^16.0.0", + "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4" }, "dependencies": { From 0a8d786a8bb45bd7ba4a26bf1e3a78c93f738eb2 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 11:15:18 +0000 Subject: [PATCH 22/52] browser bundling --- packages/browser/rollup.config.npm.mjs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 687f8cd179..89c6b3d608 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -10,23 +10,29 @@ import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" export default createRollupConfig({ input: "src/bugsnag.ts", output: [ - { - ...sharedOutput, - entryFileNames: '[name].js', - format: 'cjs' - }, { ...sharedOutput, preserveModules: false, entryFileNames: '[name].mjs', format: 'esm' - }, { + }, + { ...sharedOutput, - entryFileNames: '[name].min.js', + entryFileNames: '[name].cjs', format: 'cjs', + }, + { + ...sharedOutput, + entryFileNames: '[name].js', + format: 'iife' + }, + , { + ...sharedOutput, + entryFileNames: '[name].min.js', + format: 'iife', compact: true, plugins: [terser({ ecma: 2015 })], - } + }, ], plugins: [ nodeResolve({ browser: true}), From d8b172d292cfda851c03ebaeb13df00d1a4019c6 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 11:24:09 +0000 Subject: [PATCH 23/52] browser bundling --- packages/browser/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index 43f5d47ef7..f14a571b05 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,12 +1,12 @@ { "name": "@bugsnag/browser", "version": "8.1.2", - "main": "dist/bugsnag.js", + "main": "dist/bugsnag.cjs", "types": "types/bugsnag.d.ts", "exports": { ".": { "types": "./types/bugsnag.d.ts", - "default": "./dist/bugsnag.js", + "default": "./dist/bugsnag.cjs", "import": "./dist/bugsnag.mjs" } }, From af4b603da9668a0ed6ed9c33e6495ff4af2f3eb2 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Thu, 19 Dec 2024 12:03:15 +0000 Subject: [PATCH 24/52] browser bundling --- packages/browser/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index f14a571b05..f8f370fe20 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -6,8 +6,8 @@ "exports": { ".": { "types": "./types/bugsnag.d.ts", - "default": "./dist/bugsnag.cjs", - "import": "./dist/bugsnag.mjs" + "import": "./dist/bugsnag.mjs", + "default": "./dist/bugsnag.cjs" } }, "description": "Bugsnag error reporter for browser JavaScript", From 7948b6cce3588552d6acb966b6a7e8cd227354a7 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 20 Dec 2024 09:41:33 +0000 Subject: [PATCH 25/52] browser bundling --- test/browser/features/fixtures/handled/rollup/package.json | 7 ++++--- .../features/fixtures/handled/rollup/rollup.config.js | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test/browser/features/fixtures/handled/rollup/package.json b/test/browser/features/fixtures/handled/rollup/package.json index c0cb5ae527..d145bacc0f 100644 --- a/test/browser/features/fixtures/handled/rollup/package.json +++ b/test/browser/features/fixtures/handled/rollup/package.json @@ -1,12 +1,13 @@ { "name": "bugsnag-js-fixtures-handled-rollup", "private": true, + "type": "module", "scripts": { "build": "ENTRY_NAME=a rollup -c && ENTRY_NAME=b rollup -c && ENTRY_NAME=c rollup -c" }, "dependencies": { - "rollup": "^0.59.0", - "rollup-plugin-commonjs": "^9.1.3", - "rollup-plugin-node-resolve": "^3.3.0" + "@rollup/plugin-commonjs": "^28.0.2", + "@rollup/plugin-node-resolve": "^16.0.0", + "rollup": "^4.28.1" } } diff --git a/test/browser/features/fixtures/handled/rollup/rollup.config.js b/test/browser/features/fixtures/handled/rollup/rollup.config.js index 41cc3cf6c6..03b41b7f0d 100644 --- a/test/browser/features/fixtures/handled/rollup/rollup.config.js +++ b/test/browser/features/fixtures/handled/rollup/rollup.config.js @@ -1,5 +1,5 @@ -import resolve from 'rollup-plugin-node-resolve' -import commonjs from 'rollup-plugin-commonjs' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' export default { input: `src/${process.env.ENTRY_NAME}.js`, From 4e011b624fb939218b24e2c68c82d8d9a79750b3 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 20 Dec 2024 10:30:03 +0000 Subject: [PATCH 26/52] browser bundling --- packages/browser/rollup.config.npm.mjs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 89c6b3d608..e0c1957f08 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -4,9 +4,12 @@ import nodeResolve from '@rollup/plugin-node-resolve' import replace from '@rollup/plugin-replace' import terser from '@rollup/plugin-terser' import typescript from '@rollup/plugin-typescript' +import fs from 'fs' import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" +const packageJson = JSON.parse(fs.readFileSync('./package.json')) + export default createRollupConfig({ input: "src/bugsnag.ts", output: [ @@ -24,18 +27,22 @@ export default createRollupConfig({ { ...sharedOutput, entryFileNames: '[name].js', - format: 'iife' + format: 'iife', + name: 'Bugsnag' }, , { ...sharedOutput, entryFileNames: '[name].min.js', format: 'iife', compact: true, + name: 'Bugsnag', plugins: [terser({ ecma: 2015 })], }, ], plugins: [ - nodeResolve({ browser: true}), + nodeResolve({ + browser: true + }), commonjs(), typescript({ removeComments: true, @@ -53,7 +60,8 @@ export default createRollupConfig({ replace({ preventAssignment: true, values: { - 'process.env.NODE_ENV': JSON.stringify('production') + 'process.env.NODE_ENV': JSON.stringify('production'), + values: { __VERSION__: packageJson.version }, }, }), ] From 3cea4f3ae33cf31e1f8119a009e2559b8f95ced1 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 20 Dec 2024 10:57:02 +0000 Subject: [PATCH 27/52] revert inline-script-content changes --- ...pt-content.ts => inline-script-content.js} | 73 +++++-------------- .../plugin-inline-script-content/package.json | 16 +--- .../rollup.config.npm.mjs | 6 -- .../test/inline-script-content.test.ts | 2 +- .../tsconfig.json | 5 -- 5 files changed, 23 insertions(+), 79 deletions(-) rename packages/plugin-inline-script-content/{src/inline-script-content.ts => inline-script-content.js} (72%) delete mode 100644 packages/plugin-inline-script-content/rollup.config.npm.mjs delete mode 100644 packages/plugin-inline-script-content/tsconfig.json diff --git a/packages/plugin-inline-script-content/src/inline-script-content.ts b/packages/plugin-inline-script-content/inline-script-content.js similarity index 72% rename from packages/plugin-inline-script-content/src/inline-script-content.ts rename to packages/plugin-inline-script-content/inline-script-content.js index 826effeec8..26749c6a2f 100644 --- a/packages/plugin-inline-script-content/src/inline-script-content.ts +++ b/packages/plugin-inline-script-content/inline-script-content.js @@ -1,33 +1,13 @@ -import map from '@bugsnag/core/lib/es-utils/map' -import reduce from '@bugsnag/core/lib/es-utils/reduce' -import filter from '@bugsnag/core/lib/es-utils/filter' -import type { Config, Plugin } from '@bugsnag/core/types' -import type ClientWithInternals from 'packages/core/client' +const map = require('@bugsnag/core/lib/es-utils/map') +const reduce = require('@bugsnag/core/lib/es-utils/reduce') +const filter = require('@bugsnag/core/lib/es-utils/filter') const MAX_LINE_LENGTH = 200 const MAX_SCRIPT_LENGTH = 500000 -interface ExtendedConfig extends Config { - trackInlineScripts: boolean -} - -interface ExtendedDocument extends Document { - attachEvent?: unknown -} - -interface ValidationOption { - validate: (value: unknown) => boolean - defaultValue: () => unknown - message: string -} - -interface ExtendedPlugin extends Plugin { - configSchema: Record -} - -export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin => ({ +module.exports = (doc = document, win = window) => ({ load: (client) => { - if (!(client as ClientWithInternals)._config.trackInlineScripts) return + if (!client._config.trackInlineScripts) return const originalLocation = win.location.href let html = '' @@ -48,15 +28,15 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin html = getHtml() DOMContentLoaded = true } - try { prev && prev.apply(this, arguments as unknown as Parameters) } catch (e) {} + try { prev.apply(this, arguments) } catch (e) {} } - let _lastScript: HTMLOrSVGScriptElement | null = null - const updateLastScript = (script: HTMLOrSVGScriptElement | null) => { + let _lastScript = null + const updateLastScript = script => { _lastScript = script } - const getCurrentScript = (): HTMLOrSVGScriptElement | null => { + const getCurrentScript = () => { let script = doc.currentScript || _lastScript if (!script && !DOMContentLoaded) { const scripts = doc.scripts || doc.getElementsByTagName('script') @@ -65,7 +45,7 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin return script } - const addSurroundingCode = (lineNumber: number) => { + const addSurroundingCode = lineNumber => { // get whatever html has rendered at this point if (!DOMContentLoaded || !html) html = getHtml() // simulate the raw html @@ -82,12 +62,12 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin client.addOnError(event => { // remove any of our own frames that may be part the stack this // happens before the inline script check as it happens for all errors - event.errors[0].stacktrace = filter(event.errors[0].stacktrace, f => !(/__trace__$/.test(String(f.method)))) + event.errors[0].stacktrace = filter(event.errors[0].stacktrace, f => !(/__trace__$/.test(f.method))) const frame = event.errors[0].stacktrace[0] // remove hash and query string from url - const cleanUrl = (url: string) => url.replace(/#.*$/, '').replace(/\?.*$/, '') + const cleanUrl = (url) => url.replace(/#.*$/, '').replace(/\?.*$/, '') // if frame.file exists and is not the original location of the page, this can't be an inline script if (frame && frame.file && cleanUrl(frame.file) !== cleanUrl(originalLocation)) return @@ -107,7 +87,6 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin frame.code = addSurroundingCode(frame.lineNumber) } } - // @ts-expect-error second argument is private API }, true) // Proxy all the timer functions whose callback is their 0th argument. @@ -126,10 +105,6 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin ) ) - type ValidWindowProperties = 'EventTarget' | 'Window' | 'Node' | 'ChannelMergerNode' | 'EventSource' | 'FileReader' | 'HTMLUnknownElement' | 'IDBDatabase' | 'IDBRequest' | 'IDBTransaction' | 'MessagePort' | 'Notification' | 'Screen' | 'TextTrack' | 'TextTrackCue' | 'TextTrackList' | 'WebSocket' | 'Worker' | 'XMLHttpRequest' | 'XMLHttpRequestEventTarget' | 'XMLHttpRequestUpload' - - type WindowProperties = keyof Pick - // Proxy all the host objects whose prototypes have an addEventListener function map([ 'EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', @@ -137,7 +112,7 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload' - ] as WindowProperties[], o => { + ], o => { if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return __proxy(win[o].prototype, 'addEventListener', original => __traceOriginalScript(original, eventTargetCallbackAccessor) @@ -147,7 +122,7 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin ) }) - function __traceOriginalScript (fn: Function, callbackAccessor: EventTargetCallbackAccessor, alsoCallOriginal = false) { + function __traceOriginalScript (fn, callbackAccessor, alsoCallOriginal = false) { return function () { // this is required for removeEventListener to remove anything added with // addEventListener before the functions started being wrapped by Bugsnag @@ -155,8 +130,8 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin try { const cba = callbackAccessor(args) const cb = cba.get() - if (alsoCallOriginal) fn.apply(fn, args) - if (typeof cb !== 'function') return fn.apply(fn, args) + if (alsoCallOriginal) fn.apply(this, args) + if (typeof cb !== 'function') return fn.apply(this, args) if (cb.__trace__) { cba.replace(cb.__trace__) } else { @@ -184,7 +159,7 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin // WebDriverException: Message: Permission denied to access property "handleEvent" } // IE8 doesn't let you call .apply() on setTimeout/setInterval - if (fn.apply) return fn.apply(fn, args) + if (fn.apply) return fn.apply(this, args) switch (args.length) { case 1: return fn(args[0]) case 2: return fn(args[0], args[1]) @@ -202,7 +177,7 @@ export default (doc: ExtendedDocument = document, win = window): ExtendedPlugin } }) -function __proxy (host: any, name: string, replacer: (original: Function) => Function) { +function __proxy (host, name, replacer) { const original = host[name] if (!original) return original const replacement = replacer(original) @@ -210,19 +185,13 @@ function __proxy (host: any, name: string, replacer: (original: Function) => Fun return original } -type NestedFunction = Function & { __trace__?: NestedFunction } - -type Argument = NestedFunction & { - handleEvent?: NestedFunction -} - -function eventTargetCallbackAccessor (args: Argument[]) { +function eventTargetCallbackAccessor (args) { const isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function' return { get: function () { return isEventHandlerObj ? args[1].handleEvent : args[1] }, - replace: function (fn: Function) { + replace: function (fn) { if (isEventHandlerObj) { args[1].handleEvent = fn } else { @@ -231,5 +200,3 @@ function eventTargetCallbackAccessor (args: Argument[]) { } } } - -type EventTargetCallbackAccessor = typeof eventTargetCallbackAccessor diff --git a/packages/plugin-inline-script-content/package.json b/packages/plugin-inline-script-content/package.json index 9d22fed43c..af39d4b493 100644 --- a/packages/plugin-inline-script-content/package.json +++ b/packages/plugin-inline-script-content/package.json @@ -1,15 +1,7 @@ { "name": "@bugsnag/plugin-inline-script-content", "version": "8.1.1", - "main": "dist/inline-script-content.js", - "types": "dist/types/inline-script-content.d.ts", - "exports": { - ".": { - "types": "./dist/types/inline-script-content.d.ts", - "default": "./dist/inline-script-content.js", - "import": "./dist/inline-script-content.mjs" - } - }, + "main": "inline-script-content.js", "description": "@bugsnag/js plugin to attach inline script content to error events", "homepage": "https://www.bugsnag.com/", "repository": { @@ -22,11 +14,7 @@ "files": [ "*.js" ], - "scripts": { - "build": "npm run build:npm", - "build:npm": "rollup --config rollup.config.npm.mjs", - "clean": "rm -rf dist/*" - }, + "scripts": {}, "author": "Bugsnag", "license": "MIT", "devDependencies": { diff --git a/packages/plugin-inline-script-content/rollup.config.npm.mjs b/packages/plugin-inline-script-content/rollup.config.npm.mjs deleted file mode 100644 index a472a8a594..0000000000 --- a/packages/plugin-inline-script-content/rollup.config.npm.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import createRollupConfig from '../../.rollup/index.mjs' - -export default createRollupConfig({ - input: 'src/inline-script-content.ts', - external: ['@bugsnag/core/lib/es-utils/map', '@bugsnag/core/lib/es-utils/reduce', '@bugsnag/core/lib/es-utils/filter'] -}) diff --git a/packages/plugin-inline-script-content/test/inline-script-content.test.ts b/packages/plugin-inline-script-content/test/inline-script-content.test.ts index b8b2b12e52..afaff413de 100644 --- a/packages/plugin-inline-script-content/test/inline-script-content.test.ts +++ b/packages/plugin-inline-script-content/test/inline-script-content.test.ts @@ -1,4 +1,4 @@ -import plugin from '../' +import plugin from '../inline-script-content' import Client from '@bugsnag/core/client' import Event from '@bugsnag/core/event' diff --git a/packages/plugin-inline-script-content/tsconfig.json b/packages/plugin-inline-script-content/tsconfig.json deleted file mode 100644 index 09758ceb4c..0000000000 --- a/packages/plugin-inline-script-content/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src/**/*.ts"] -} - \ No newline at end of file From c4e511d8f23bb7b6fba671b81dff00df25d12eef Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 20 Dec 2024 11:12:56 +0000 Subject: [PATCH 28/52] browser bundling --- packages/browser/src/bugsnag.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/browser/src/bugsnag.ts b/packages/browser/src/bugsnag.ts index f95b38e111..d18a4acfde 100644 --- a/packages/browser/src/bugsnag.ts +++ b/packages/browser/src/bugsnag.ts @@ -23,6 +23,7 @@ import pluginConsoleBreadcrumbs from '@bugsnag/plugin-console-breadcrumbs' import pluginNetworkBreadcrumbs from '@bugsnag/plugin-network-breadcrumbs' import pluginNavigationBreadcrumbs from '@bugsnag/plugin-navigation-breadcrumbs' import pluginInteractionBreadcrumbs from '@bugsnag/plugin-interaction-breadcrumbs' +// @ts-ignore import pluginInlineScriptContent from '@bugsnag/plugin-inline-script-content' import pluginSession from '@bugsnag/plugin-browser-session' import pluginIp from '@bugsnag/plugin-client-ip' From ccd55cf3e7d5d1b79bc9d824ab643252d7f7e095 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 20 Dec 2024 15:33:25 +0000 Subject: [PATCH 29/52] browser bundling --- packages/browser/rollup.config.npm.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index e0c1957f08..d95bb7cd31 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -27,13 +27,13 @@ export default createRollupConfig({ { ...sharedOutput, entryFileNames: '[name].js', - format: 'iife', + format: 'umd', name: 'Bugsnag' }, , { ...sharedOutput, entryFileNames: '[name].min.js', - format: 'iife', + format: 'umd', compact: true, name: 'Bugsnag', plugins: [terser({ ecma: 2015 })], From 818ceac9a70ffa4aca57ff56b22de604ab802437 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 10:16:42 +0000 Subject: [PATCH 30/52] browser bundling --- package-lock.json | 59 ++++++++- packages/browser/package.json | 3 +- packages/browser/rollup.config.npm.mjs | 169 +++++++++++++++++-------- packages/browser/src/bugsnag.ts | 19 ++- packages/browser/src/index-cjs.ts | 16 +++ packages/browser/src/index-es.ts | 4 + packages/browser/src/index-umd.ts | 16 +++ 7 files changed, 223 insertions(+), 63 deletions(-) create mode 100644 packages/browser/src/index-cjs.ts create mode 100644 packages/browser/src/index-es.ts create mode 100644 packages/browser/src/index-umd.ts diff --git a/package-lock.json b/package-lock.json index 4cf0a43a44..042b9a8c56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39009,7 +39009,8 @@ "@rollup/plugin-commonjs": "^28.0.2", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", - "@rollup/plugin-terser": "^0.4.4" + "@rollup/plugin-terser": "^0.4.4", + "rollup-plugin-dts": "^6.1.1" } }, "packages/browser/node_modules/@rollup/plugin-commonjs": { @@ -39101,6 +39102,42 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "packages/browser/node_modules/rollup-plugin-dts": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz", + "integrity": "sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.10" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.24.2" + }, + "peerDependencies": { + "rollup": "^3.29.4 || ^4", + "typescript": "^4.5 || ^5.0" + } + }, + "packages/browser/node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "packages/core": { "name": "@bugsnag/core", "version": "8.1.1", @@ -43034,7 +43071,8 @@ "@rollup/plugin-commonjs": "^28.0.2", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", - "@rollup/plugin-terser": "^0.4.4" + "@rollup/plugin-terser": "^0.4.4", + "rollup-plugin-dts": "^6.1.1" }, "dependencies": { "@rollup/plugin-commonjs": { @@ -43089,6 +43127,23 @@ "requires": { "@jridgewell/sourcemap-codec": "^1.5.0" } + }, + "rollup-plugin-dts": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz", + "integrity": "sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.24.2", + "magic-string": "^0.30.10" + } + }, + "typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "peer": true } } }, diff --git a/packages/browser/package.json b/packages/browser/package.json index f8f370fe20..0902afd240 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -57,7 +57,8 @@ "@rollup/plugin-commonjs": "^28.0.2", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", - "@rollup/plugin-terser": "^0.4.4" + "@rollup/plugin-terser": "^0.4.4", + "rollup-plugin-dts": "^6.1.1" }, "dependencies": { "@bugsnag/core": "^8.1.1" diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index d95bb7cd31..b69f44288a 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -5,64 +5,125 @@ import replace from '@rollup/plugin-replace' import terser from '@rollup/plugin-terser' import typescript from '@rollup/plugin-typescript' import fs from 'fs' +import dts from 'rollup-plugin-dts' import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" const packageJson = JSON.parse(fs.readFileSync('./package.json')) -export default createRollupConfig({ - input: "src/bugsnag.ts", - output: [ - { - ...sharedOutput, - preserveModules: false, - entryFileNames: '[name].mjs', - format: 'esm' - }, - { - ...sharedOutput, - entryFileNames: '[name].cjs', - format: 'cjs', - }, - { - ...sharedOutput, - entryFileNames: '[name].js', - format: 'umd', - name: 'Bugsnag' - }, - , { - ...sharedOutput, - entryFileNames: '[name].min.js', - format: 'umd', - compact: true, - name: 'Bugsnag', - plugins: [terser({ ecma: 2015 })], - }, - ], - plugins: [ - nodeResolve({ - browser: true - }), - commonjs(), - typescript({ - removeComments: true, - // don't output anything if there's a TS error - noEmitOnError: true, - // turn on declaration files and declaration maps - compilerOptions: { - declaration: true, - declarationMap: true, - emitDeclarationOnly: true, - declarationDir: 'dist/types', +export default [ + createRollupConfig({ + input: "src/index-es.ts", + output: [ + { + ...sharedOutput, + preserveModules: false, + entryFileNames: '[name].mjs', + format: 'esm' } - }), - babel({ babelHelpers: 'bundled' }), - replace({ - preventAssignment: true, - values: { - 'process.env.NODE_ENV': JSON.stringify('production'), - values: { __VERSION__: packageJson.version }, + ], + plugins: [ + nodeResolve({ + browser: true + }), + commonjs(), + typescript({ + removeComments: true, + // don't output anything if there's a TS error + noEmitOnError: true, + // turn on declaration files and declaration maps + compilerOptions: { + declaration: false, + } + }), + babel({ babelHelpers: 'bundled' }), + replace({ + preventAssignment: true, + values: { + 'process.env.NODE_ENV': JSON.stringify('production'), + values: { __VERSION__: packageJson.version }, + }, + }), + ] + }), + createRollupConfig({ + input: "src/index-cjs.ts", + output: [ + { + ...sharedOutput, + entryFileNames: '[name].cjs', + format: 'cjs', }, - }), - ] -}); + ], + plugins: [ + nodeResolve({ + browser: true + }), + commonjs(), + typescript({ + removeComments: true, + // don't output anything if there's a TS error + noEmitOnError: true, + // turn on declaration files and declaration maps + compilerOptions: { + declaration: false, + } + }), + babel({ babelHelpers: 'bundled' }), + replace({ + preventAssignment: true, + values: { + 'process.env.NODE_ENV': JSON.stringify('production'), + values: { __VERSION__: packageJson.version }, + }, + }), + ] + }), + createRollupConfig({ + input: "src/index-umd.ts", + output: [ + { + ...sharedOutput, + entryFileNames: 'bugsnag.js', + format: 'umd', + name: 'Bugsnag' + }, + { + ...sharedOutput, + entryFileNames: 'bugsnag.min.js', + format: 'umd', + compact: true, + name: 'Bugsnag', + plugins: [terser({ ecma: 2015 })], + }, + ], + plugins: [ + nodeResolve({ + browser: true + }), + commonjs(), + typescript({ + removeComments: true, + // don't output anything if there's a TS error + noEmitOnError: true, + compilerOptions: { + declaration: false, + } + }), + babel({ babelHelpers: 'bundled' }), + replace({ + preventAssignment: true, + values: { + 'process.env.NODE_ENV': JSON.stringify('production'), + values: { __VERSION__: packageJson.version }, + }, + }), + ] + }), + { + // path to your declaration files root + input: './dist/types/index-es.d.ts', + output: [{ file: 'dist/bugsnag.d.ts', format: 'es' }], + plugins: [dts()], + }, +]; diff --git a/packages/browser/src/bugsnag.ts b/packages/browser/src/bugsnag.ts index d18a4acfde..1f417144f0 100644 --- a/packages/browser/src/bugsnag.ts +++ b/packages/browser/src/bugsnag.ts @@ -1,8 +1,5 @@ import Client from '@bugsnag/core/client' -// import Event from '@bugsnag/core/event' -// import Session from '@bugsnag/core/session' -// import Breadcrumb from '@bugsnag/core/breadcrumb' -import { Config } from '@bugsnag/core/types' +import type { BugsnagStatic, Config } from '@bugsnag/core' import map from '@bugsnag/core/lib/es-utils/map' import keys from '@bugsnag/core/lib/es-utils/keys' @@ -120,6 +117,16 @@ map(['resetEventCount'].concat(keys(Client.prototype)) as Method[], (m) => { } }) -// export { Client, Event, Session, Breadcrumb, Bugsnag } - export default Bugsnag + +export interface BrowserConfig extends Config { + maxEvents?: number + collectUserIp?: boolean + generateAnonymousId?: boolean + trackInlineScripts?: boolean +} + +export interface BrowserBugsnagStatic extends BugsnagStatic { + start(apiKeyOrOpts: string | BrowserConfig): Client + createClient(apiKeyOrOpts: string | BrowserConfig): Client +} diff --git a/packages/browser/src/index-cjs.ts b/packages/browser/src/index-cjs.ts new file mode 100644 index 0000000000..678c2269e2 --- /dev/null +++ b/packages/browser/src/index-cjs.ts @@ -0,0 +1,16 @@ +import Client from '@bugsnag/core/client' +// @ts-ignore +import Event from '@bugsnag/core/event' +// @ts-ignore +import Session from '@bugsnag/core/session' +// @ts-ignore +import Breadcrumb from '@bugsnag/core/breadcrumb' + +import assign from '@bugsnag/core/lib/es-utils/assign' + +import Bugsnag from './bugsnag' + +export default assign(Bugsnag, { Breadcrumb, Client, Event, Session }) +export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' + +// export * from '@bugsnag/core' diff --git a/packages/browser/src/index-es.ts b/packages/browser/src/index-es.ts new file mode 100644 index 0000000000..51e863831a --- /dev/null +++ b/packages/browser/src/index-es.ts @@ -0,0 +1,4 @@ +export { default } from './bugsnag' +export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' + +// export * from '@bugsnag/core' diff --git a/packages/browser/src/index-umd.ts b/packages/browser/src/index-umd.ts new file mode 100644 index 0000000000..57809b2ad7 --- /dev/null +++ b/packages/browser/src/index-umd.ts @@ -0,0 +1,16 @@ +import Client from '@bugsnag/core/client' +// @ts-ignore +import Event from '@bugsnag/core/event' +// @ts-ignore +import Session from '@bugsnag/core/session' +// @ts-ignore +import Breadcrumb from '@bugsnag/core/breadcrumb' + +import assign from '@bugsnag/core/lib/es-utils/assign' + +import Bugsnag from './bugsnag' + +export default assign(Bugsnag, { Client, Event, Session, Breadcrumb }) +export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' + +// export * from '@bugsnag/core' From c3798912cf17a1cbc432a88ae1f8b63577be002f Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 10:28:54 +0000 Subject: [PATCH 31/52] browser bundling --- packages/browser/package.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index 0902afd240..d9c328976b 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -3,11 +3,14 @@ "version": "8.1.2", "main": "dist/bugsnag.cjs", "types": "types/bugsnag.d.ts", + "browser": { + "types/bugsnag": "./dist/bugsnag.js" + }, "exports": { ".": { - "types": "./types/bugsnag.d.ts", - "import": "./dist/bugsnag.mjs", - "default": "./dist/bugsnag.cjs" + "types": "./types/index-es.d.ts", + "import": "./dist/index-es.mjs", + "default": "./dist/index-cjs.cjs" } }, "description": "Bugsnag error reporter for browser JavaScript", @@ -16,9 +19,7 @@ "type": "git", "url": "git@github.com:bugsnag/bugsnag-js.git" }, - "browser": { - "types/bugsnag": "./dist/bugsnag.js" - }, + "publishConfig": { "access": "public" }, From 2aedd15840f10f0094d3d79512ae65dbe298397f Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 10:36:27 +0000 Subject: [PATCH 32/52] browser bundling --- packages/browser/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index d9c328976b..e9bd339514 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,7 +1,7 @@ { "name": "@bugsnag/browser", "version": "8.1.2", - "main": "dist/bugsnag.cjs", + "main": "dist/index-cjs.cjs", "types": "types/bugsnag.d.ts", "browser": { "types/bugsnag": "./dist/bugsnag.js" From 18c153ac4f4a5af8a24fb8a72c5e2f1ba8bdc730 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 11:30:00 +0000 Subject: [PATCH 33/52] browser bundling --- packages/browser/src/index-cjs.ts | 2 +- packages/browser/src/index-es.ts | 2 +- packages/browser/src/index-umd.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/browser/src/index-cjs.ts b/packages/browser/src/index-cjs.ts index 678c2269e2..cdb3bebae6 100644 --- a/packages/browser/src/index-cjs.ts +++ b/packages/browser/src/index-cjs.ts @@ -11,6 +11,6 @@ import assign from '@bugsnag/core/lib/es-utils/assign' import Bugsnag from './bugsnag' export default assign(Bugsnag, { Breadcrumb, Client, Event, Session }) -export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' +export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' // export * from '@bugsnag/core' diff --git a/packages/browser/src/index-es.ts b/packages/browser/src/index-es.ts index 51e863831a..137755ab3c 100644 --- a/packages/browser/src/index-es.ts +++ b/packages/browser/src/index-es.ts @@ -1,4 +1,4 @@ export { default } from './bugsnag' -export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' +export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' // export * from '@bugsnag/core' diff --git a/packages/browser/src/index-umd.ts b/packages/browser/src/index-umd.ts index 57809b2ad7..1a85d97508 100644 --- a/packages/browser/src/index-umd.ts +++ b/packages/browser/src/index-umd.ts @@ -11,6 +11,6 @@ import assign from '@bugsnag/core/lib/es-utils/assign' import Bugsnag from './bugsnag' export default assign(Bugsnag, { Client, Event, Session, Breadcrumb }) -export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' +export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' // export * from '@bugsnag/core' From 111682e66abff82c0b4629bb6c3f013b1a806460 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 11:40:03 +0000 Subject: [PATCH 34/52] browser bundling --- package-lock.json | 18 ++++- packages/browser/package.json | 4 +- packages/browser/rollup.config.npm.mjs | 96 ++++++++------------------ 3 files changed, 46 insertions(+), 72 deletions(-) diff --git a/package-lock.json b/package-lock.json index 042b9a8c56..658ffc8dcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39010,7 +39010,8 @@ "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", - "rollup-plugin-dts": "^6.1.1" + "rollup-plugin-dts": "^6.1.1", + "tslib": "^2.8.1" } }, "packages/browser/node_modules/@rollup/plugin-commonjs": { @@ -39124,6 +39125,12 @@ "typescript": "^4.5 || ^5.0" } }, + "packages/browser/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, "packages/browser/node_modules/typescript": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", @@ -43072,7 +43079,8 @@ "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", - "rollup-plugin-dts": "^6.1.1" + "rollup-plugin-dts": "^6.1.1", + "tslib": "^2.8.1" }, "dependencies": { "@rollup/plugin-commonjs": { @@ -43138,6 +43146,12 @@ "magic-string": "^0.30.10" } }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, "typescript": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", diff --git a/packages/browser/package.json b/packages/browser/package.json index e9bd339514..7e060557a7 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -19,7 +19,6 @@ "type": "git", "url": "git@github.com:bugsnag/bugsnag-js.git" }, - "publishConfig": { "access": "public" }, @@ -59,7 +58,8 @@ "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", - "rollup-plugin-dts": "^6.1.1" + "rollup-plugin-dts": "^6.1.1", + "tslib": "^2.8.1" }, "dependencies": { "@bugsnag/core": "^8.1.1" diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index b69f44288a..abcbc4381c 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -11,6 +11,31 @@ import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" const packageJson = JSON.parse(fs.readFileSync('./package.json')) +const plugins = [ + nodeResolve({ + browser: true + }), + commonjs(), + typescript({ + removeComments: true, + // don't output anything if there's a TS error + noEmitOnError: true, + // turn on declaration files and declaration maps + compilerOptions: { + target: 'es3', + declaration: false, + } + }), + babel({ babelHelpers: 'bundled' }), + replace({ + preventAssignment: true, + values: { + 'process.env.NODE_ENV': JSON.stringify('production'), + values: { __VERSION__: packageJson.version }, + }, + }), +] + export default [ createRollupConfig({ input: "src/index-es.ts", @@ -22,29 +47,7 @@ export default [ format: 'esm' } ], - plugins: [ - nodeResolve({ - browser: true - }), - commonjs(), - typescript({ - removeComments: true, - // don't output anything if there's a TS error - noEmitOnError: true, - // turn on declaration files and declaration maps - compilerOptions: { - declaration: false, - } - }), - babel({ babelHelpers: 'bundled' }), - replace({ - preventAssignment: true, - values: { - 'process.env.NODE_ENV': JSON.stringify('production'), - values: { __VERSION__: packageJson.version }, - }, - }), - ] + plugins }), createRollupConfig({ input: "src/index-cjs.ts", @@ -55,29 +58,7 @@ export default [ format: 'cjs', }, ], - plugins: [ - nodeResolve({ - browser: true - }), - commonjs(), - typescript({ - removeComments: true, - // don't output anything if there's a TS error - noEmitOnError: true, - // turn on declaration files and declaration maps - compilerOptions: { - declaration: false, - } - }), - babel({ babelHelpers: 'bundled' }), - replace({ - preventAssignment: true, - values: { - 'process.env.NODE_ENV': JSON.stringify('production'), - values: { __VERSION__: packageJson.version }, - }, - }), - ] + plugins }), createRollupConfig({ input: "src/index-umd.ts", @@ -97,28 +78,7 @@ export default [ plugins: [terser({ ecma: 2015 })], }, ], - plugins: [ - nodeResolve({ - browser: true - }), - commonjs(), - typescript({ - removeComments: true, - // don't output anything if there's a TS error - noEmitOnError: true, - compilerOptions: { - declaration: false, - } - }), - babel({ babelHelpers: 'bundled' }), - replace({ - preventAssignment: true, - values: { - 'process.env.NODE_ENV': JSON.stringify('production'), - values: { __VERSION__: packageJson.version }, - }, - }), - ] + plugins }), { // path to your declaration files root From 1cb15fff019db8e30516aa4b30d3419ba1bd1a30 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 12:03:20 +0000 Subject: [PATCH 35/52] trigger build From a7929369fed1cd26752d4952826c17b46fe7abb2 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 12:28:58 +0000 Subject: [PATCH 36/52] trigger build --- package-lock.json | 55 -------------------------- packages/browser/package.json | 1 - packages/browser/rollup.config.npm.mjs | 9 +---- packages/browser/types/bugsnag.d.ts | 19 --------- packages/browser/types/global.d.ts | 4 -- 5 files changed, 1 insertion(+), 87 deletions(-) delete mode 100644 packages/browser/types/bugsnag.d.ts delete mode 100644 packages/browser/types/global.d.ts diff --git a/package-lock.json b/package-lock.json index 658ffc8dcc..c7bc964f1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39010,7 +39010,6 @@ "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", - "rollup-plugin-dts": "^6.1.1", "tslib": "^2.8.1" } }, @@ -39103,48 +39102,12 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "packages/browser/node_modules/rollup-plugin-dts": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz", - "integrity": "sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==", - "dev": true, - "dependencies": { - "magic-string": "^0.30.10" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/Swatinem" - }, - "optionalDependencies": { - "@babel/code-frame": "^7.24.2" - }, - "peerDependencies": { - "rollup": "^3.29.4 || ^4", - "typescript": "^4.5 || ^5.0" - } - }, "packages/browser/node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, - "packages/browser/node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "packages/core": { "name": "@bugsnag/core", "version": "8.1.1", @@ -43079,7 +43042,6 @@ "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", - "rollup-plugin-dts": "^6.1.1", "tslib": "^2.8.1" }, "dependencies": { @@ -43136,28 +43098,11 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "rollup-plugin-dts": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz", - "integrity": "sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.24.2", - "magic-string": "^0.30.10" - } - }, "tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true - }, - "typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "dev": true, - "peer": true } } }, diff --git a/packages/browser/package.json b/packages/browser/package.json index 7e060557a7..2a2713d6fb 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -58,7 +58,6 @@ "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-replace": "^6.0.2", "@rollup/plugin-terser": "^0.4.4", - "rollup-plugin-dts": "^6.1.1", "tslib": "^2.8.1" }, "dependencies": { diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index abcbc4381c..8b0ef604d4 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -5,7 +5,6 @@ import replace from '@rollup/plugin-replace' import terser from '@rollup/plugin-terser' import typescript from '@rollup/plugin-typescript' import fs from 'fs' -import dts from 'rollup-plugin-dts' import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" @@ -79,11 +78,5 @@ export default [ }, ], plugins - }), - { - // path to your declaration files root - input: './dist/types/index-es.d.ts', - output: [{ file: 'dist/bugsnag.d.ts', format: 'es' }], - plugins: [dts()], - }, + }) ]; diff --git a/packages/browser/types/bugsnag.d.ts b/packages/browser/types/bugsnag.d.ts deleted file mode 100644 index d198264fb7..0000000000 --- a/packages/browser/types/bugsnag.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Client, Config, BugsnagStatic } from '@bugsnag/core' - -interface BrowserConfig extends Config { - maxEvents?: number - collectUserIp?: boolean - generateAnonymousId?: boolean - trackInlineScripts?: boolean -} - -export interface BrowserBugsnagStatic extends BugsnagStatic { - start(apiKeyOrOpts: string | BrowserConfig): Client - createClient(apiKeyOrOpts: string | BrowserConfig): Client -} - -declare const Bugsnag: BrowserBugsnagStatic - -export default Bugsnag -export * from '@bugsnag/core' -export { BrowserConfig } diff --git a/packages/browser/types/global.d.ts b/packages/browser/types/global.d.ts deleted file mode 100644 index 713330a3f0..0000000000 --- a/packages/browser/types/global.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import bugsnag from './bugsnag' - -export as namespace bugsnag; -export = bugsnag; From be9d4365c2c91b937ecbffcbd4993618c7ddac9b Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 12:33:34 +0000 Subject: [PATCH 37/52] trigger build --- packages/browser/src/index-cjs.ts | 2 -- packages/browser/src/index-es.ts | 2 +- packages/browser/src/index-umd.ts | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/browser/src/index-cjs.ts b/packages/browser/src/index-cjs.ts index cdb3bebae6..c905f220ef 100644 --- a/packages/browser/src/index-cjs.ts +++ b/packages/browser/src/index-cjs.ts @@ -12,5 +12,3 @@ import Bugsnag from './bugsnag' export default assign(Bugsnag, { Breadcrumb, Client, Event, Session }) export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' - -// export * from '@bugsnag/core' diff --git a/packages/browser/src/index-es.ts b/packages/browser/src/index-es.ts index 137755ab3c..6afd865308 100644 --- a/packages/browser/src/index-es.ts +++ b/packages/browser/src/index-es.ts @@ -1,4 +1,4 @@ export { default } from './bugsnag' export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' -// export * from '@bugsnag/core' +export * from '@bugsnag/core' diff --git a/packages/browser/src/index-umd.ts b/packages/browser/src/index-umd.ts index 1a85d97508..dee872af1e 100644 --- a/packages/browser/src/index-umd.ts +++ b/packages/browser/src/index-umd.ts @@ -12,5 +12,3 @@ import Bugsnag from './bugsnag' export default assign(Bugsnag, { Client, Event, Session, Breadcrumb }) export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' - -// export * from '@bugsnag/core' From 21f1b38aebbde118bd2bdfd0da34b8706908b68b Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Mon, 23 Dec 2024 13:05:05 +0000 Subject: [PATCH 38/52] browser bundling --- packages/browser/package.json | 4 ++-- packages/browser/rollup.config.npm.mjs | 1 - packages/browser/src/index-cjs.ts | 4 +++- packages/browser/src/index-es.ts | 2 +- packages/browser/src/index-umd.ts | 4 +++- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index 2a2713d6fb..e58fc7cd25 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -2,13 +2,13 @@ "name": "@bugsnag/browser", "version": "8.1.2", "main": "dist/index-cjs.cjs", - "types": "types/bugsnag.d.ts", + "types": "dist/types/index-es.d.ts", "browser": { "types/bugsnag": "./dist/bugsnag.js" }, "exports": { ".": { - "types": "./types/index-es.d.ts", + "types": "./dist/types/index-es.d.ts", "import": "./dist/index-es.mjs", "default": "./dist/index-cjs.cjs" } diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index 8b0ef604d4..a2e336edf4 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -22,7 +22,6 @@ const plugins = [ // turn on declaration files and declaration maps compilerOptions: { target: 'es3', - declaration: false, } }), babel({ babelHelpers: 'bundled' }), diff --git a/packages/browser/src/index-cjs.ts b/packages/browser/src/index-cjs.ts index c905f220ef..b7f9931e69 100644 --- a/packages/browser/src/index-cjs.ts +++ b/packages/browser/src/index-cjs.ts @@ -11,4 +11,6 @@ import assign from '@bugsnag/core/lib/es-utils/assign' import Bugsnag from './bugsnag' export default assign(Bugsnag, { Breadcrumb, Client, Event, Session }) -export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' +export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' + +export type { Client, Event, Session, Breadcrumb, Plugin } from '@bugsnag/core' diff --git a/packages/browser/src/index-es.ts b/packages/browser/src/index-es.ts index 6afd865308..7f043e3442 100644 --- a/packages/browser/src/index-es.ts +++ b/packages/browser/src/index-es.ts @@ -1,4 +1,4 @@ export { default } from './bugsnag' -export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' +export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' export * from '@bugsnag/core' diff --git a/packages/browser/src/index-umd.ts b/packages/browser/src/index-umd.ts index dee872af1e..d3e61149e3 100644 --- a/packages/browser/src/index-umd.ts +++ b/packages/browser/src/index-umd.ts @@ -11,4 +11,6 @@ import assign from '@bugsnag/core/lib/es-utils/assign' import Bugsnag from './bugsnag' export default assign(Bugsnag, { Client, Event, Session, Breadcrumb }) -export /* type */ { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' +export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' + +export type { Client, Event, Session, Breadcrumb, Plugin } from '@bugsnag/core' From 9a0c8171e3f4b331318d752e6c66a39d68073e91 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 08:39:52 +0000 Subject: [PATCH 39/52] revert mockEventTarget --- dockerfiles/Dockerfile.browser | 1 - dockerfiles/Dockerfile.ci | 1 - dockerfiles/Dockerfile.node | 1 - jest.config.js | 4 +--- jest/setup/mockEventTarget.js | 40 ---------------------------------- 5 files changed, 1 insertion(+), 46 deletions(-) delete mode 100644 jest/setup/mockEventTarget.js diff --git a/dockerfiles/Dockerfile.browser b/dockerfiles/Dockerfile.browser index f98bbb39e9..701e8c54ac 100644 --- a/dockerfiles/Dockerfile.browser +++ b/dockerfiles/Dockerfile.browser @@ -10,7 +10,6 @@ COPY babel.config.js lerna.json .eslintignore .eslintrc.js jest.config.js tsconf ADD min_packages.tar . COPY .rollup ./.rollup COPY bin ./bin -COPY jest ./jest COPY packages ./packages RUN npm install diff --git a/dockerfiles/Dockerfile.ci b/dockerfiles/Dockerfile.ci index 83cbaf1b0d..b8560c6d7b 100644 --- a/dockerfiles/Dockerfile.ci +++ b/dockerfiles/Dockerfile.ci @@ -12,7 +12,6 @@ COPY .rollup ./.rollup COPY bin ./bin COPY scripts ./scripts COPY test ./test -COPY jest ./jest COPY packages ./packages RUN npm install --unsafe-perm diff --git a/dockerfiles/Dockerfile.node b/dockerfiles/Dockerfile.node index 4852f01a2e..187ec60a9d 100644 --- a/dockerfiles/Dockerfile.node +++ b/dockerfiles/Dockerfile.node @@ -10,7 +10,6 @@ COPY babel.config.js lerna.json .eslintignore .eslintrc.js jest.config.js tsconf ADD min_packages.tar . COPY .rollup ./.rollup COPY bin ./bin -COPY jest ./jest COPY packages ./packages RUN npm install diff --git a/jest.config.js b/jest.config.js index 40bc65fde5..64bc93ba34 100644 --- a/jest.config.js +++ b/jest.config.js @@ -49,9 +49,7 @@ module.exports = { 'plugin-simple-throttle', 'plugin-console-breadcrumbs', 'plugin-browser-session' - ], { - setupFiles: ['/jest/setup/mockEventTarget.js'] - }), + ]), project('react native', [ 'react-native', 'delivery-react-native', diff --git a/jest/setup/mockEventTarget.js b/jest/setup/mockEventTarget.js deleted file mode 100644 index 784b0d699a..0000000000 --- a/jest/setup/mockEventTarget.js +++ /dev/null @@ -1,40 +0,0 @@ -// copy the code from https://developer.mozilla.org/en-US/docs/Web/API/EventTarget#Simple_implementation_of_EventTarget -var EventTarget = function () { - this.listeners = {} -} - -EventTarget.prototype.listeners = null -EventTarget.prototype.addEventListener = function (type, callback) { - if (!(type in this.listeners)) { - this.listeners[type] = [] - } - this.listeners[type].push(callback) -} - -EventTarget.prototype.removeEventListener = function (type, callback) { - if (!(type in this.listeners)) { - return - } - var stack = this.listeners[type] - for (var i = 0, l = stack.length; i < l; i++) { - if (stack[i] === callback) { - stack.splice(i, 1) - return - } - } -} - -EventTarget.prototype.dispatchEvent = function (event) { - if (!(event.type in this.listeners)) { - return true - } - var stack = this.listeners[event.type].slice() - - for (var i = 0, l = stack.length; i < l; i++) { - stack[i].call(this, event) - } - return !event.defaultPrevented -} - -// make the EventTarget global -global.EventTarget = EventTarget From 71331ce8312e00546443a720ce85ab81ac0edb8e Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 09:12:52 +0000 Subject: [PATCH 40/52] browser bundling --- packages/browser/src/bugsnag.ts | 67 +++++++++++++++++---------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/packages/browser/src/bugsnag.ts b/packages/browser/src/bugsnag.ts index 1f417144f0..d305d4036a 100644 --- a/packages/browser/src/bugsnag.ts +++ b/packages/browser/src/bugsnag.ts @@ -1,4 +1,4 @@ -import Client from '@bugsnag/core/client' +import ClientWithInternals from '@bugsnag/core/client' import type { BugsnagStatic, Config } from '@bugsnag/core' import map from '@bugsnag/core/lib/es-utils/map' @@ -36,21 +36,32 @@ const url = 'https://github.com/bugsnag/bugsnag-js' const schema = assign({}, baseConfig, browserConfig) +export interface BrowserConfig extends Config { + maxEvents?: number + collectUserIp?: boolean + generateAnonymousId?: boolean + trackInlineScripts?: boolean +} + +export interface BrowserBugsnagStatic extends BugsnagStatic { + start(apiKeyOrOpts: string | BrowserConfig): ClientWithInternals + createClient(apiKeyOrOpts: string | BrowserConfig): ClientWithInternals +} + declare global { interface Window { XDomainRequest: unknown } } -type BrowserClient = Partial & { - _client: Client | null - createClient: (opts?: Config) => Client - start: (opts?: Config) => Client +type BrowserClient = Partial & { + _client: ClientWithInternals | null + createClient: (opts?: Config) => ClientWithInternals + start: (opts?: Config) => ClientWithInternals isStarted: () => boolean - _setDelivery?: (handler: typeof dXDomainRequest | typeof dXMLHttpRequest) => void } -const Bugsnag: BrowserClient = { +const notifier: BrowserClient = { _client: null, createClient: (opts) => { // handle very simple use case where user supplies just the api key as a string @@ -79,7 +90,7 @@ const Bugsnag: BrowserClient = { ] // configure a client with user supplied options - const bugsnag = new Client(opts, schema, internalPlugins, { name, version, url }); + const bugsnag = new ClientWithInternals(opts, schema, internalPlugins, { name, version, url }); // set delivery based on browser capability (IE 8+9 have an XDomainRequest object) (bugsnag as BrowserClient)._setDelivery?.(window.XDomainRequest ? dXDomainRequest : dXMLHttpRequest) @@ -92,41 +103,31 @@ const Bugsnag: BrowserClient = { : bugsnag }, start: (opts) => { - if (Bugsnag._client) { - Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.') - return Bugsnag._client + if (notifier._client) { + notifier._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.') + return notifier._client } - Bugsnag._client = Bugsnag.createClient(opts) - return Bugsnag._client + notifier._client = notifier.createClient(opts) + return notifier._client }, isStarted: () => { - return Bugsnag._client != null + return notifier._client != null } } -type Method = keyof typeof Client.prototype +type Method = keyof typeof ClientWithInternals.prototype -map(['resetEventCount'].concat(keys(Client.prototype)) as Method[], (m) => { +map(['resetEventCount'].concat(keys(ClientWithInternals.prototype)) as Method[], (m) => { if (/^_/.test(m)) return - Bugsnag[m] = function () { - if (!Bugsnag._client) return console.log(`Bugsnag.${m}() was called before Bugsnag.start()`) - Bugsnag._client._depth += 1 - const ret = Bugsnag._client[m].apply(Bugsnag._client, arguments) - Bugsnag._client._depth -= 1 + notifier[m] = function () { + if (!notifier._client) return console.log(`Bugsnag.${m}() was called before Bugsnag.start()`) + notifier._client._depth += 1 + const ret = notifier._client[m].apply(notifier._client, arguments) + notifier._client._depth -= 1 return ret } }) -export default Bugsnag +const Bugsnag = notifier as BrowserBugsnagStatic -export interface BrowserConfig extends Config { - maxEvents?: number - collectUserIp?: boolean - generateAnonymousId?: boolean - trackInlineScripts?: boolean -} - -export interface BrowserBugsnagStatic extends BugsnagStatic { - start(apiKeyOrOpts: string | BrowserConfig): Client - createClient(apiKeyOrOpts: string | BrowserConfig): Client -} +export default Bugsnag From 005240649c0ffa8a2254ea0c1cdf7218437d203d Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 09:46:59 +0000 Subject: [PATCH 41/52] browser bundling --- test/browser/features/fixtures/handled/rollup/package.json | 7 +++---- .../features/fixtures/handled/rollup/rollup.config.js | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/test/browser/features/fixtures/handled/rollup/package.json b/test/browser/features/fixtures/handled/rollup/package.json index d145bacc0f..c0cb5ae527 100644 --- a/test/browser/features/fixtures/handled/rollup/package.json +++ b/test/browser/features/fixtures/handled/rollup/package.json @@ -1,13 +1,12 @@ { "name": "bugsnag-js-fixtures-handled-rollup", "private": true, - "type": "module", "scripts": { "build": "ENTRY_NAME=a rollup -c && ENTRY_NAME=b rollup -c && ENTRY_NAME=c rollup -c" }, "dependencies": { - "@rollup/plugin-commonjs": "^28.0.2", - "@rollup/plugin-node-resolve": "^16.0.0", - "rollup": "^4.28.1" + "rollup": "^0.59.0", + "rollup-plugin-commonjs": "^9.1.3", + "rollup-plugin-node-resolve": "^3.3.0" } } diff --git a/test/browser/features/fixtures/handled/rollup/rollup.config.js b/test/browser/features/fixtures/handled/rollup/rollup.config.js index 03b41b7f0d..41cc3cf6c6 100644 --- a/test/browser/features/fixtures/handled/rollup/rollup.config.js +++ b/test/browser/features/fixtures/handled/rollup/rollup.config.js @@ -1,5 +1,5 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' +import resolve from 'rollup-plugin-node-resolve' +import commonjs from 'rollup-plugin-commonjs' export default { input: `src/${process.env.ENTRY_NAME}.js`, From a10a0f875f76dbea39bd91e3021f3c1b547db2be Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 10:07:53 +0000 Subject: [PATCH 42/52] Revert "browser bundling" This reverts commit 005240649c0ffa8a2254ea0c1cdf7218437d203d. --- test/browser/features/fixtures/handled/rollup/package.json | 7 ++++--- .../features/fixtures/handled/rollup/rollup.config.js | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test/browser/features/fixtures/handled/rollup/package.json b/test/browser/features/fixtures/handled/rollup/package.json index c0cb5ae527..d145bacc0f 100644 --- a/test/browser/features/fixtures/handled/rollup/package.json +++ b/test/browser/features/fixtures/handled/rollup/package.json @@ -1,12 +1,13 @@ { "name": "bugsnag-js-fixtures-handled-rollup", "private": true, + "type": "module", "scripts": { "build": "ENTRY_NAME=a rollup -c && ENTRY_NAME=b rollup -c && ENTRY_NAME=c rollup -c" }, "dependencies": { - "rollup": "^0.59.0", - "rollup-plugin-commonjs": "^9.1.3", - "rollup-plugin-node-resolve": "^3.3.0" + "@rollup/plugin-commonjs": "^28.0.2", + "@rollup/plugin-node-resolve": "^16.0.0", + "rollup": "^4.28.1" } } diff --git a/test/browser/features/fixtures/handled/rollup/rollup.config.js b/test/browser/features/fixtures/handled/rollup/rollup.config.js index 41cc3cf6c6..03b41b7f0d 100644 --- a/test/browser/features/fixtures/handled/rollup/rollup.config.js +++ b/test/browser/features/fixtures/handled/rollup/rollup.config.js @@ -1,5 +1,5 @@ -import resolve from 'rollup-plugin-node-resolve' -import commonjs from 'rollup-plugin-commonjs' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' export default { input: `src/${process.env.ENTRY_NAME}.js`, From 4fb473810f99cea5b70e1649fb8a7c032deea4d8 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 10:38:03 +0000 Subject: [PATCH 43/52] Revert "Revert "browser bundling"" This reverts commit a10a0f875f76dbea39bd91e3021f3c1b547db2be. --- test/browser/features/fixtures/handled/rollup/package.json | 7 +++---- .../features/fixtures/handled/rollup/rollup.config.js | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/test/browser/features/fixtures/handled/rollup/package.json b/test/browser/features/fixtures/handled/rollup/package.json index d145bacc0f..c0cb5ae527 100644 --- a/test/browser/features/fixtures/handled/rollup/package.json +++ b/test/browser/features/fixtures/handled/rollup/package.json @@ -1,13 +1,12 @@ { "name": "bugsnag-js-fixtures-handled-rollup", "private": true, - "type": "module", "scripts": { "build": "ENTRY_NAME=a rollup -c && ENTRY_NAME=b rollup -c && ENTRY_NAME=c rollup -c" }, "dependencies": { - "@rollup/plugin-commonjs": "^28.0.2", - "@rollup/plugin-node-resolve": "^16.0.0", - "rollup": "^4.28.1" + "rollup": "^0.59.0", + "rollup-plugin-commonjs": "^9.1.3", + "rollup-plugin-node-resolve": "^3.3.0" } } diff --git a/test/browser/features/fixtures/handled/rollup/rollup.config.js b/test/browser/features/fixtures/handled/rollup/rollup.config.js index 03b41b7f0d..41cc3cf6c6 100644 --- a/test/browser/features/fixtures/handled/rollup/rollup.config.js +++ b/test/browser/features/fixtures/handled/rollup/rollup.config.js @@ -1,5 +1,5 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' +import resolve from 'rollup-plugin-node-resolve' +import commonjs from 'rollup-plugin-commonjs' export default { input: `src/${process.env.ENTRY_NAME}.js`, From 64823d5a72a6a6e422e128b1f847a883c5d9ec52 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 10:48:44 +0000 Subject: [PATCH 44/52] browser bundling --- packages/browser/package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index e58fc7cd25..e360c98d9b 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -3,9 +3,7 @@ "version": "8.1.2", "main": "dist/index-cjs.cjs", "types": "dist/types/index-es.d.ts", - "browser": { - "types/bugsnag": "./dist/bugsnag.js" - }, + "browser": "./dist/bugsnag.js", "exports": { ".": { "types": "./dist/types/index-es.d.ts", From 746d8a441b92ff2ebe265a1957884e1f3e3735d8 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 11:18:02 +0000 Subject: [PATCH 45/52] browser bundling --- packages/browser/test/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser/test/index.test.ts b/packages/browser/test/index.test.ts index 4dc87d32d5..23396e07e0 100644 --- a/packages/browser/test/index.test.ts +++ b/packages/browser/test/index.test.ts @@ -52,7 +52,7 @@ describe('browser notifier', () => { load: client => 10 }] }) - expect(Bugsnag.getPlugin?.('foobar')).toBe(10) + expect(Bugsnag.getPlugin('foobar')).toBe(10) }) it('notifies handled errors', (done) => { From b1bd4f06f1de5d20bb6780e3c5901a959816cea0 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Tue, 24 Dec 2024 11:59:42 +0000 Subject: [PATCH 46/52] disable terser --- packages/browser/rollup.config.npm.mjs | 2 +- packages/core/client.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index a2e336edf4..a973e9e3a3 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -73,7 +73,7 @@ export default [ format: 'umd', compact: true, name: 'Bugsnag', - plugins: [terser({ ecma: 2015 })], + // plugins: [terser({ ecma: 2015 })], }, ], plugins diff --git a/packages/core/client.js b/packages/core/client.js index 5e8a6988e5..4de54e2b49 100644 --- a/packages/core/client.js +++ b/packages/core/client.js @@ -67,7 +67,7 @@ class Client { }) // when notify() is called we need to know how many frames are from our own source - // this inital value is 1 not 0 because we wrap notify() to ensure it is always + // this initial value is 1 not 0 because we wrap notify() to ensure it is always // bound to have the client as its `this` value – see below. this._depth = 1 From f94feff10021abb7e95e23978df4f6304b1937c2 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 27 Dec 2024 09:33:20 +0000 Subject: [PATCH 47/52] browser bundling --- packages/browser/rollup.config.npm.mjs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index a973e9e3a3..bccf1ddd92 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -6,10 +6,15 @@ import terser from '@rollup/plugin-terser' import typescript from '@rollup/plugin-typescript' import fs from 'fs' -import createRollupConfig, { sharedOutput } from "../../.rollup/index.mjs" +import createRollupConfig, { sharedOutput as commonSharedOutput } from "../../.rollup/index.mjs" const packageJson = JSON.parse(fs.readFileSync('./package.json')) +const sharedOutput = { + ...commonSharedOutput, + strict: false, // 'use strict' in WebKit enables Tail Call Optimization, which breaks stack trace handling +} + const plugins = [ nodeResolve({ browser: true @@ -73,7 +78,7 @@ export default [ format: 'umd', compact: true, name: 'Bugsnag', - // plugins: [terser({ ecma: 2015 })], + plugins: [terser()], }, ], plugins From 0438ff1f4e550aefed8f15a48accd82957370ebe Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 27 Dec 2024 10:22:01 +0000 Subject: [PATCH 48/52] browser bundling --- bin/bundle | 26 - bin/extract-source-map | 1 - bin/minify | 8 - package-lock.json | 1170 +--------------------------------------- package.json | 9 - 5 files changed, 5 insertions(+), 1209 deletions(-) delete mode 100755 bin/bundle delete mode 100755 bin/extract-source-map delete mode 100755 bin/minify diff --git a/bin/bundle b/bin/bundle deleted file mode 100755 index cac15d6a80..0000000000 --- a/bin/bundle +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env node - -const browserify = require('browserify') -const babelConfig = require('../babel.config.js')() - -const { resolve } = require('path') - -const args = process.argv -const entry = resolve(process.cwd(), args[2]) -const forNode = args.includes('--node') -const excludes = (args.find(arg => /^--exclude=/.test(arg)) || '').replace('--exclude=', '').split(',') -const standalone = (args.find(arg => /^--standalone=/.test(arg)) || '').replace('--standalone=', '') - -const b = browserify(entry, { debug: true, standalone, node: forNode }) - .transform('babelify', { global: true, ...babelConfig }) - .transform('browserify-versionify') - .plugin('browser-pack-flat/plugin') - -if (!forNode) { - b.transform('envify', { global: true }) -} - -b - .exclude(excludes) - .bundle() - .pipe(process.stdout) diff --git a/bin/extract-source-map b/bin/extract-source-map deleted file mode 100755 index f182eae924..0000000000 --- a/bin/extract-source-map +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/.bin/exorcist "$1.map" > $1 diff --git a/bin/minify b/bin/minify deleted file mode 100755 index 55deae3fd0..0000000000 --- a/bin/minify +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env sh - -cat - | ../../node_modules/.bin/uglifyjs \ - --compress \ - --mangle \ - --ie8 \ - --source-map "includeSources,content=inline,url=$(basename "$1").map" \ - --output "$1" diff --git a/package-lock.json b/package-lock.json index c7bc964f1e..bc0b8ae449 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,14 +47,8 @@ "@typescript-eslint/parser": "^2.19.2", "aws-sdk": "^2.1303.0", "babel-jest": "^29.7.0", - "babelify": "^10.0.0", - "browser-pack-flat": "^3.2.0", - "browserify": "^17.0.1", - "browserify-versionify": "^1.0.6", "coverage-diff": "^1.6.0", - "cross-env": "^7.0.3", "electron": "*", - "envify": "^4.1.0", "eslint": "^6.8.0", "eslint-config-standard": "^14.1.0", "eslint-config-standard-with-typescript": "^13.0.0", @@ -64,7 +58,6 @@ "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "^7.18.3", "eslint-plugin-standard": "^4.0.1", - "exorcist": "^2.0.0", "form-data": "^2.3.3", "formidable": "^1.2.2", "glob": "^7.1.6", @@ -74,7 +67,6 @@ "ncp": "^2.0.0", "node-fetch": "^2.6.0", "playwright": "^1.10.0", - "proxyquire": "^2.1.3", "ps-list": "^7.2.0", "react": "^16.13.1", "react-native": "^0.63.4", @@ -86,7 +78,6 @@ "timekeeper": "^2.2.0", "ts-node": "^9.1.1", "typescript": "^3.9.7", - "uglify-js": "^3.15.1", "verdaccio": "^4.12.0", "xvfb-maybe": "^0.2.1" } @@ -12572,15 +12563,6 @@ "node": ">=0.10.0" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -12734,12 +12716,6 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -13767,18 +13743,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/babelify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", - "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/backo": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/backo/-/backo-1.1.0.tgz", @@ -14178,38 +14142,6 @@ "browser-pack": "bin/cmd.js" } }, - "node_modules/browser-pack-flat": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/browser-pack-flat/-/browser-pack-flat-3.2.0.tgz", - "integrity": "sha512-tk/LexpgMImZyDfpWSPyIlQ3frZYTyGLpW+Ytd0Fj9VW03Fil9IrKzcVKN87wZHWhP6LbdKh3STRnIkHIR+UTQ==", - "dev": true, - "dependencies": { - "combine-source-map": "^0.8.0", - "convert-source-map": "^1.5.1", - "count-lines": "^0.1.2", - "dedent": "^0.7.0", - "estree-is-member-expression": "^1.0.0", - "estree-is-require": "^1.0.0", - "esutils": "^2.0.2", - "JSONStream": "^1.3.2", - "path-parse": "^1.0.5", - "scope-analyzer": "^2.0.0", - "stream-combiner": "^0.2.2", - "through2": "^2.0.3", - "transform-ast": "^2.4.2", - "umd": "^3.0.3", - "wrap-comment": "^1.0.0" - }, - "bin": { - "browser-pack-flat": "cli.js" - } - }, - "node_modules/browser-process-hrtime": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", - "dev": true - }, "node_modules/browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", @@ -14225,68 +14157,6 @@ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, - "node_modules/browserify": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.1.tgz", - "integrity": "sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==", - "dev": true, - "dependencies": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "hasown": "^2.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "browserify": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -14393,56 +14263,6 @@ } ] }, - "node_modules/browserify-versionify": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-versionify/-/browserify-versionify-1.0.6.tgz", - "integrity": "sha1-qy3GHWoRnmJ77Eh1mNGYO3/bJ14=", - "dev": true, - "dependencies": { - "find-root": "^0.1.1", - "through2": "0.6.3" - } - }, - "node_modules/browserify-versionify/node_modules/find-root": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", - "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=", - "dev": true - }, - "node_modules/browserify-versionify/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/browserify-versionify/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/browserify-versionify/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/browserify-versionify/node_modules/through2": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.3.tgz", - "integrity": "sha1-eVKS/enyVMKjaLOPnMXRvUZjr7Y=", - "dev": true, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -14452,25 +14272,6 @@ "pako": "~1.0.5" } }, - "node_modules/browserify/node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browserify/node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, "node_modules/browserslist": { "version": "4.22.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", @@ -15948,15 +15749,6 @@ "node": ">=4" } }, - "node_modules/count-lines": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/count-lines/-/count-lines-0.1.2.tgz", - "integrity": "sha1-4zST+2hgqC9xWdgjeEP7+u/uWWI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/coverage-diff": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/coverage-diff/-/coverage-diff-1.6.0.tgz", @@ -16015,83 +15807,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-env/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-env/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -16196,12 +15911,6 @@ "node": ">=8" } }, - "node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true - }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -16409,12 +16118,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -17142,19 +16845,6 @@ "node": ">=6" } }, - "node_modules/envify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", - "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.0", - "through": "~2.3.4" - }, - "bin": { - "envify": "bin/envify" - } - }, "node_modules/envinfo": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", @@ -17414,20 +17104,6 @@ "es6-symbol": "^3.1.1" } }, - "node_modules/es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, "node_modules/es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -17443,19 +17119,6 @@ "es6-promise": "^4.0.3" } }, - "node_modules/es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, "node_modules/es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -18151,33 +17814,6 @@ "node": ">=4.0" } }, - "node_modules/estree-is-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", - "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", - "dev": true - }, - "node_modules/estree-is-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-identifier/-/estree-is-identifier-1.0.0.tgz", - "integrity": "sha512-2BDRGrkQJV/NhCAmmE33A35WAaxq3WQaGHgQuD//7orGWfpFqj8Srkwvx0TH+20yIdOF1yMQwi8anv5ISec2AQ==", - "dev": true - }, - "node_modules/estree-is-member-expression": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz", - "integrity": "sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==", - "dev": true - }, - "node_modules/estree-is-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-require/-/estree-is-require-1.0.0.tgz", - "integrity": "sha512-oWxQdSEmnUwNZsDQYiBNpVxKEhMmsJQSSxnDrwsr1MWtooCLfhgzsNGzmokdmfK0EzEIS5V4LPvqxv1Kmb1vvA==", - "dev": true, - "dependencies": { - "estree-is-identifier": "^1.0.0" - } - }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -18202,16 +17838,6 @@ "node": ">= 0.6" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "node_modules/event-pubsub": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", @@ -18288,45 +17914,6 @@ "node": ">= 0.8.0" } }, - "node_modules/exorcist": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/exorcist/-/exorcist-2.0.0.tgz", - "integrity": "sha512-+c63SvhBq/HjmbV9cu9vkDkjXFiuI4lpqOZU5Y3t5GSV2l4TQCqVli9c7nIASHxkUL4THaOZDUcb6XNBI/eYjw==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "mold-source-map": "^0.4.0" - }, - "bin": { - "exorcist": "bin/exorcist.js" - } - }, - "node_modules/exorcist/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/exorcist/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -19061,19 +18648,6 @@ "node": ">=10" } }, - "node_modules/fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "dependencies": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -20294,18 +19868,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -21668,12 +21230,6 @@ "node": ">=8" } }, - "node_modules/is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -28220,15 +27776,6 @@ "lunr": ">= 2.3.0 < 2.4.0" } }, - "node_modules/magic-string": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", - "integrity": "sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.1" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -28664,15 +28211,6 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "node_modules/merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -30557,28 +30095,6 @@ "resolve": "^1.17.0" } }, - "node_modules/module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, - "node_modules/mold-source-map": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz", - "integrity": "sha1-z2fgsxxHq5uttcnCVlGGISe7gxc=", - "dev": true, - "dependencies": { - "convert-source-map": "^1.1.0", - "through": "~2.2.7" - } - }, - "node_modules/mold-source-map/node_modules/through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", - "dev": true - }, "node_modules/moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -30663,12 +30179,6 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "node_modules/mutexify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.2.0.tgz", - "integrity": "sha512-oprzxd2zhfrJqEuB98qc1dRMMonClBQ57UPDjnbcrah4orEMTq1jq3+AcdFe5ePzdbJXI7zmdhfftIdMnhYFoQ==", - "dev": true - }, "node_modules/mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -30729,56 +30239,6 @@ "dev": true, "optional": true }, - "node_modules/nanobench": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz", - "integrity": "sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^0.1.2", - "chalk": "^1.1.3", - "mutexify": "^1.1.0", - "pretty-hrtime": "^1.0.2" - }, - "bin": { - "nanobench": "run.js", - "nanobench-compare": "compare.js" - } - }, - "node_modules/nanobench/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanobench/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanobench/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -33004,15 +32464,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -33217,17 +32668,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/proxyquire": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", - "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", - "dev": true, - "dependencies": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.1", - "resolve": "^1.11.1" - } - }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -34660,20 +34100,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/scope-analyzer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.0.5.tgz", - "integrity": "sha512-+U5H0417mnTEstCD5VwOYO7V4vYuSqwqjFap40ythe67bhMFL5C3UgPwyBv7KDJsqUBIKafOD57xMlh1rN7eaw==", - "dev": true, - "dependencies": { - "array-from": "^2.1.1", - "es6-map": "^0.1.5", - "es6-set": "^0.1.5", - "es6-symbol": "^3.1.1", - "estree-is-function": "^1.0.0", - "get-assigned-identifiers": "^1.1.0" - } - }, "node_modules/seed-random": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", @@ -35587,16 +35013,6 @@ "node": ">= 0.10.0" } }, - "node_modules/stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, "node_modules/stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -35900,18 +35316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -36665,30 +36069,6 @@ "node": ">=6" } }, - "node_modules/transform-ast": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz", - "integrity": "sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "convert-source-map": "^1.5.1", - "dash-ast": "^1.0.0", - "is-buffer": "^2.0.0", - "magic-string": "^0.23.2", - "merge-source-map": "1.0.4", - "nanobench": "^2.1.1" - } - }, - "node_modules/transform-ast/node_modules/is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/treeverse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", @@ -37253,6 +36633,7 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==", "dev": true, + "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -38701,12 +38082,6 @@ "node": ">=8" } }, - "node_modules/wrap-comment": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrap-comment/-/wrap-comment-1.0.1.tgz", - "integrity": "sha512-APccrMwl/ont0RHFTXNAQfM647duYYEfs6cngrIyTByTI0xbWnDnPSptFZhS68L4WCjt2ZxuhCFwuY6Pe88KZQ==", - "dev": true - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -39848,6 +39223,7 @@ "packages/plugin-electron-app": { "name": "@bugsnag/plugin-electron-app", "version": "8.1.1", + "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -39889,6 +39265,7 @@ "packages/plugin-electron-client-state-persistence": { "name": "@bugsnag/plugin-electron-client-state-persistence", "version": "8.1.1", + "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -51427,12 +50804,6 @@ "ansi-wrap": "0.1.0" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -51549,12 +50920,6 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, "array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -52374,13 +51739,6 @@ } } }, - "babelify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", - "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", - "dev": true, - "requires": {} - }, "backo": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/backo/-/backo-1.1.0.tgz", @@ -52710,35 +52068,6 @@ "umd": "^3.0.0" } }, - "browser-pack-flat": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/browser-pack-flat/-/browser-pack-flat-3.2.0.tgz", - "integrity": "sha512-tk/LexpgMImZyDfpWSPyIlQ3frZYTyGLpW+Ytd0Fj9VW03Fil9IrKzcVKN87wZHWhP6LbdKh3STRnIkHIR+UTQ==", - "dev": true, - "requires": { - "combine-source-map": "^0.8.0", - "convert-source-map": "^1.5.1", - "count-lines": "^0.1.2", - "dedent": "^0.7.0", - "estree-is-member-expression": "^1.0.0", - "estree-is-require": "^1.0.0", - "esutils": "^2.0.2", - "JSONStream": "^1.3.2", - "path-parse": "^1.0.5", - "scope-analyzer": "^2.0.0", - "stream-combiner": "^0.2.2", - "through2": "^2.0.3", - "transform-ast": "^2.4.2", - "umd": "^3.0.3", - "wrap-comment": "^1.0.0" - } - }, - "browser-process-hrtime": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", - "dev": true - }, "browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", @@ -52756,83 +52085,6 @@ } } }, - "browserify": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.1.tgz", - "integrity": "sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==", - "dev": true, - "requires": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "hasown": "^2.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.7.3", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "requires": { - "resolve": "^1.17.0" - } - }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - } - } - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -52926,58 +52178,6 @@ } } }, - "browserify-versionify": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-versionify/-/browserify-versionify-1.0.6.tgz", - "integrity": "sha1-qy3GHWoRnmJ77Eh1mNGYO3/bJ14=", - "dev": true, - "requires": { - "find-root": "^0.1.1", - "through2": "0.6.3" - }, - "dependencies": { - "find-root": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", - "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.3.tgz", - "integrity": "sha1-eVKS/enyVMKjaLOPnMXRvUZjr7Y=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } - } - }, "browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -54146,12 +53346,6 @@ } } }, - "count-lines": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/count-lines/-/count-lines-0.1.2.tgz", - "integrity": "sha1-4zST+2hgqC9xWdgjeEP7+u/uWWI=", - "dev": true - }, "coverage-diff": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/coverage-diff/-/coverage-diff-1.6.0.tgz", @@ -54212,58 +53406,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -54352,12 +53494,6 @@ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, - "dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -54505,12 +53641,6 @@ } } }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -55095,16 +54225,6 @@ "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", "dev": true }, - "envify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", - "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", - "dev": true, - "requires": { - "esprima": "^4.0.0", - "through": "~2.3.4" - } - }, "envinfo": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", @@ -55325,20 +54445,6 @@ "es6-symbol": "^3.1.1" } }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -55354,19 +54460,6 @@ "es6-promise": "^4.0.3" } }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -55889,33 +54982,6 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, - "estree-is-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", - "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", - "dev": true - }, - "estree-is-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-identifier/-/estree-is-identifier-1.0.0.tgz", - "integrity": "sha512-2BDRGrkQJV/NhCAmmE33A35WAaxq3WQaGHgQuD//7orGWfpFqj8Srkwvx0TH+20yIdOF1yMQwi8anv5ISec2AQ==", - "dev": true - }, - "estree-is-member-expression": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz", - "integrity": "sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==", - "dev": true - }, - "estree-is-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-require/-/estree-is-require-1.0.0.tgz", - "integrity": "sha512-oWxQdSEmnUwNZsDQYiBNpVxKEhMmsJQSSxnDrwsr1MWtooCLfhgzsNGzmokdmfK0EzEIS5V4LPvqxv1Kmb1vvA==", - "dev": true, - "requires": { - "estree-is-identifier": "^1.0.0" - } - }, "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -55934,16 +55000,6 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "event-pubsub": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", @@ -56005,32 +55061,6 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, - "exorcist": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/exorcist/-/exorcist-2.0.0.tgz", - "integrity": "sha512-+c63SvhBq/HjmbV9cu9vkDkjXFiuI4lpqOZU5Y3t5GSV2l4TQCqVli9c7nIASHxkUL4THaOZDUcb6XNBI/eYjw==", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "mold-source-map": "^0.4.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -56646,16 +55676,6 @@ } } }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - } - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -57573,15 +56593,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -58591,12 +57602,6 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -63605,15 +62610,6 @@ "lunr": ">= 2.3.0 < 2.4.0" } }, - "magic-string": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", - "integrity": "sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.1" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -63941,15 +62937,6 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -65523,30 +64510,6 @@ } } }, - "module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, - "mold-source-map": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz", - "integrity": "sha1-z2fgsxxHq5uttcnCVlGGISe7gxc=", - "dev": true, - "requires": { - "convert-source-map": "^1.1.0", - "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", - "dev": true - } - } - }, "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -65618,12 +64581,6 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "mutexify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.2.0.tgz", - "integrity": "sha512-oprzxd2zhfrJqEuB98qc1dRMMonClBQ57UPDjnbcrah4orEMTq1jq3+AcdFe5ePzdbJXI7zmdhfftIdMnhYFoQ==", - "dev": true - }, "mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -65677,45 +64634,6 @@ "dev": true, "optional": true }, - "nanobench": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz", - "integrity": "sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2", - "chalk": "^1.1.3", - "mutexify": "^1.1.0", - "pretty-hrtime": "^1.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -67372,12 +66290,6 @@ } } }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -67544,17 +66456,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "proxyquire": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", - "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", - "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.1", - "resolve": "^1.11.1" - } - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -68697,20 +67598,6 @@ } } }, - "scope-analyzer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.0.5.tgz", - "integrity": "sha512-+U5H0417mnTEstCD5VwOYO7V4vYuSqwqjFap40ythe67bhMFL5C3UgPwyBv7KDJsqUBIKafOD57xMlh1rN7eaw==", - "dev": true, - "requires": { - "array-from": "^2.1.1", - "es6-map": "^0.1.5", - "es6-set": "^0.1.5", - "es6-symbol": "^3.1.1", - "estree-is-function": "^1.0.0", - "get-assigned-identifiers": "^1.1.0" - } - }, "seed-random": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", @@ -69480,16 +68367,6 @@ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==" }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, "stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -69737,15 +68614,6 @@ "es-object-atoms": "^1.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "strip-ansi-cjs": { "version": "npm:strip-ansi@6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -70321,29 +69189,6 @@ } } }, - "transform-ast": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz", - "integrity": "sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==", - "dev": true, - "requires": { - "acorn-node": "^1.3.0", - "convert-source-map": "^1.5.1", - "dash-ast": "^1.0.0", - "is-buffer": "^2.0.0", - "magic-string": "^0.23.2", - "merge-source-map": "1.0.4", - "nanobench": "^2.1.1" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", - "dev": true - } - } - }, "treeverse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", @@ -70734,7 +69579,8 @@ "version": "3.15.1", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==", - "dev": true + "dev": true, + "optional": true }, "ultron": { "version": "1.0.2", @@ -71871,12 +70717,6 @@ } } }, - "wrap-comment": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrap-comment/-/wrap-comment-1.0.1.tgz", - "integrity": "sha512-APccrMwl/ont0RHFTXNAQfM647duYYEfs6cngrIyTByTI0xbWnDnPSptFZhS68L4WCjt2ZxuhCFwuY6Pe88KZQ==", - "dev": true - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 36818f99c5..4698d310cf 100644 --- a/package.json +++ b/package.json @@ -39,14 +39,8 @@ "@typescript-eslint/parser": "^2.19.2", "aws-sdk": "^2.1303.0", "babel-jest": "^29.7.0", - "babelify": "^10.0.0", - "browser-pack-flat": "^3.2.0", - "browserify": "^17.0.1", - "browserify-versionify": "^1.0.6", "coverage-diff": "^1.6.0", - "cross-env": "^7.0.3", "electron": "*", - "envify": "^4.1.0", "eslint": "^6.8.0", "eslint-config-standard": "^14.1.0", "eslint-config-standard-with-typescript": "^13.0.0", @@ -56,7 +50,6 @@ "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "^7.18.3", "eslint-plugin-standard": "^4.0.1", - "exorcist": "^2.0.0", "form-data": "^2.3.3", "formidable": "^1.2.2", "glob": "^7.1.6", @@ -66,7 +59,6 @@ "ncp": "^2.0.0", "node-fetch": "^2.6.0", "playwright": "^1.10.0", - "proxyquire": "^2.1.3", "ps-list": "^7.2.0", "react": "^16.13.1", "react-native": "^0.63.4", @@ -78,7 +70,6 @@ "timekeeper": "^2.2.0", "ts-node": "^9.1.1", "typescript": "^3.9.7", - "uglify-js": "^3.15.1", "verdaccio": "^4.12.0", "xvfb-maybe": "^0.2.1" }, From 79deeb773f5cdae199cd3f5c55dc418fa98d40e0 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 27 Dec 2024 10:38:11 +0000 Subject: [PATCH 49/52] Revert "browser bundling" This reverts commit 0438ff1f4e550aefed8f15a48accd82957370ebe. --- bin/bundle | 26 + bin/extract-source-map | 1 + bin/minify | 8 + package-lock.json | 1170 +++++++++++++++++++++++++++++++++++++++- package.json | 9 + 5 files changed, 1209 insertions(+), 5 deletions(-) create mode 100755 bin/bundle create mode 100755 bin/extract-source-map create mode 100755 bin/minify diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 0000000000..cac15d6a80 --- /dev/null +++ b/bin/bundle @@ -0,0 +1,26 @@ +#!/usr/bin/env node + +const browserify = require('browserify') +const babelConfig = require('../babel.config.js')() + +const { resolve } = require('path') + +const args = process.argv +const entry = resolve(process.cwd(), args[2]) +const forNode = args.includes('--node') +const excludes = (args.find(arg => /^--exclude=/.test(arg)) || '').replace('--exclude=', '').split(',') +const standalone = (args.find(arg => /^--standalone=/.test(arg)) || '').replace('--standalone=', '') + +const b = browserify(entry, { debug: true, standalone, node: forNode }) + .transform('babelify', { global: true, ...babelConfig }) + .transform('browserify-versionify') + .plugin('browser-pack-flat/plugin') + +if (!forNode) { + b.transform('envify', { global: true }) +} + +b + .exclude(excludes) + .bundle() + .pipe(process.stdout) diff --git a/bin/extract-source-map b/bin/extract-source-map new file mode 100755 index 0000000000..f182eae924 --- /dev/null +++ b/bin/extract-source-map @@ -0,0 +1 @@ +../../node_modules/.bin/exorcist "$1.map" > $1 diff --git a/bin/minify b/bin/minify new file mode 100755 index 0000000000..55deae3fd0 --- /dev/null +++ b/bin/minify @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +cat - | ../../node_modules/.bin/uglifyjs \ + --compress \ + --mangle \ + --ie8 \ + --source-map "includeSources,content=inline,url=$(basename "$1").map" \ + --output "$1" diff --git a/package-lock.json b/package-lock.json index bc0b8ae449..c7bc964f1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,8 +47,14 @@ "@typescript-eslint/parser": "^2.19.2", "aws-sdk": "^2.1303.0", "babel-jest": "^29.7.0", + "babelify": "^10.0.0", + "browser-pack-flat": "^3.2.0", + "browserify": "^17.0.1", + "browserify-versionify": "^1.0.6", "coverage-diff": "^1.6.0", + "cross-env": "^7.0.3", "electron": "*", + "envify": "^4.1.0", "eslint": "^6.8.0", "eslint-config-standard": "^14.1.0", "eslint-config-standard-with-typescript": "^13.0.0", @@ -58,6 +64,7 @@ "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "^7.18.3", "eslint-plugin-standard": "^4.0.1", + "exorcist": "^2.0.0", "form-data": "^2.3.3", "formidable": "^1.2.2", "glob": "^7.1.6", @@ -67,6 +74,7 @@ "ncp": "^2.0.0", "node-fetch": "^2.6.0", "playwright": "^1.10.0", + "proxyquire": "^2.1.3", "ps-list": "^7.2.0", "react": "^16.13.1", "react-native": "^0.63.4", @@ -78,6 +86,7 @@ "timekeeper": "^2.2.0", "ts-node": "^9.1.1", "typescript": "^3.9.7", + "uglify-js": "^3.15.1", "verdaccio": "^4.12.0", "xvfb-maybe": "^0.2.1" } @@ -12563,6 +12572,15 @@ "node": ">=0.10.0" } }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -12716,6 +12734,12 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "node_modules/array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -13743,6 +13767,18 @@ "@babel/core": "^7.0.0" } }, + "node_modules/babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/backo": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/backo/-/backo-1.1.0.tgz", @@ -14142,6 +14178,38 @@ "browser-pack": "bin/cmd.js" } }, + "node_modules/browser-pack-flat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/browser-pack-flat/-/browser-pack-flat-3.2.0.tgz", + "integrity": "sha512-tk/LexpgMImZyDfpWSPyIlQ3frZYTyGLpW+Ytd0Fj9VW03Fil9IrKzcVKN87wZHWhP6LbdKh3STRnIkHIR+UTQ==", + "dev": true, + "dependencies": { + "combine-source-map": "^0.8.0", + "convert-source-map": "^1.5.1", + "count-lines": "^0.1.2", + "dedent": "^0.7.0", + "estree-is-member-expression": "^1.0.0", + "estree-is-require": "^1.0.0", + "esutils": "^2.0.2", + "JSONStream": "^1.3.2", + "path-parse": "^1.0.5", + "scope-analyzer": "^2.0.0", + "stream-combiner": "^0.2.2", + "through2": "^2.0.3", + "transform-ast": "^2.4.2", + "umd": "^3.0.3", + "wrap-comment": "^1.0.0" + }, + "bin": { + "browser-pack-flat": "cli.js" + } + }, + "node_modules/browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, "node_modules/browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", @@ -14157,6 +14225,68 @@ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, + "node_modules/browserify": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.1.tgz", + "integrity": "sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==", + "dev": true, + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "hasown": "^2.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -14263,6 +14393,56 @@ } ] }, + "node_modules/browserify-versionify": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-versionify/-/browserify-versionify-1.0.6.tgz", + "integrity": "sha1-qy3GHWoRnmJ77Eh1mNGYO3/bJ14=", + "dev": true, + "dependencies": { + "find-root": "^0.1.1", + "through2": "0.6.3" + } + }, + "node_modules/browserify-versionify/node_modules/find-root": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", + "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=", + "dev": true + }, + "node_modules/browserify-versionify/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/browserify-versionify/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/browserify-versionify/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/browserify-versionify/node_modules/through2": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.3.tgz", + "integrity": "sha1-eVKS/enyVMKjaLOPnMXRvUZjr7Y=", + "dev": true, + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -14272,6 +14452,25 @@ "pako": "~1.0.5" } }, + "node_modules/browserify/node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify/node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, "node_modules/browserslist": { "version": "4.22.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", @@ -15749,6 +15948,15 @@ "node": ">=4" } }, + "node_modules/count-lines": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/count-lines/-/count-lines-0.1.2.tgz", + "integrity": "sha1-4zST+2hgqC9xWdgjeEP7+u/uWWI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/coverage-diff": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/coverage-diff/-/coverage-diff-1.6.0.tgz", @@ -15807,6 +16015,83 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-env/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-env/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-env/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-env/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-env/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -15911,6 +16196,12 @@ "node": ">=8" } }, + "node_modules/dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -16118,6 +16409,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -16845,6 +17142,19 @@ "node": ">=6" } }, + "node_modules/envify": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", + "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.0", + "through": "~2.3.4" + }, + "bin": { + "envify": "bin/envify" + } + }, "node_modules/envinfo": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", @@ -17104,6 +17414,20 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, "node_modules/es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -17119,6 +17443,19 @@ "es6-promise": "^4.0.3" } }, + "node_modules/es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, "node_modules/es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -17814,6 +18151,33 @@ "node": ">=4.0" } }, + "node_modules/estree-is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", + "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", + "dev": true + }, + "node_modules/estree-is-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-identifier/-/estree-is-identifier-1.0.0.tgz", + "integrity": "sha512-2BDRGrkQJV/NhCAmmE33A35WAaxq3WQaGHgQuD//7orGWfpFqj8Srkwvx0TH+20yIdOF1yMQwi8anv5ISec2AQ==", + "dev": true + }, + "node_modules/estree-is-member-expression": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz", + "integrity": "sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==", + "dev": true + }, + "node_modules/estree-is-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-require/-/estree-is-require-1.0.0.tgz", + "integrity": "sha512-oWxQdSEmnUwNZsDQYiBNpVxKEhMmsJQSSxnDrwsr1MWtooCLfhgzsNGzmokdmfK0EzEIS5V4LPvqxv1Kmb1vvA==", + "dev": true, + "dependencies": { + "estree-is-identifier": "^1.0.0" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -17838,6 +18202,16 @@ "node": ">= 0.6" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/event-pubsub": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", @@ -17914,6 +18288,45 @@ "node": ">= 0.8.0" } }, + "node_modules/exorcist": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/exorcist/-/exorcist-2.0.0.tgz", + "integrity": "sha512-+c63SvhBq/HjmbV9cu9vkDkjXFiuI4lpqOZU5Y3t5GSV2l4TQCqVli9c7nIASHxkUL4THaOZDUcb6XNBI/eYjw==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "mold-source-map": "^0.4.0" + }, + "bin": { + "exorcist": "bin/exorcist.js" + } + }, + "node_modules/exorcist/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/exorcist/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -18648,6 +19061,19 @@ "node": ">=10" } }, + "node_modules/fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "dependencies": { + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -19868,6 +20294,18 @@ "node": ">= 0.4.0" } }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -21230,6 +21668,12 @@ "node": ">=8" } }, + "node_modules/is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -27776,6 +28220,15 @@ "lunr": ">= 2.3.0 < 2.4.0" } }, + "node_modules/magic-string": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", + "integrity": "sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.1" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -28211,6 +28664,15 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "node_modules/merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "dependencies": { + "source-map": "^0.5.6" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -30095,6 +30557,28 @@ "resolve": "^1.17.0" } }, + "node_modules/module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "node_modules/mold-source-map": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz", + "integrity": "sha1-z2fgsxxHq5uttcnCVlGGISe7gxc=", + "dev": true, + "dependencies": { + "convert-source-map": "^1.1.0", + "through": "~2.2.7" + } + }, + "node_modules/mold-source-map/node_modules/through": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", + "dev": true + }, "node_modules/moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -30179,6 +30663,12 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "node_modules/mutexify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.2.0.tgz", + "integrity": "sha512-oprzxd2zhfrJqEuB98qc1dRMMonClBQ57UPDjnbcrah4orEMTq1jq3+AcdFe5ePzdbJXI7zmdhfftIdMnhYFoQ==", + "dev": true + }, "node_modules/mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -30239,6 +30729,56 @@ "dev": true, "optional": true }, + "node_modules/nanobench": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz", + "integrity": "sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^0.1.2", + "chalk": "^1.1.3", + "mutexify": "^1.1.0", + "pretty-hrtime": "^1.0.2" + }, + "bin": { + "nanobench": "run.js", + "nanobench-compare": "compare.js" + } + }, + "node_modules/nanobench/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanobench/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanobench/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -32464,6 +33004,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -32668,6 +33217,17 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, + "node_modules/proxyquire": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", + "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", + "dev": true, + "dependencies": { + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.1", + "resolve": "^1.11.1" + } + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -34100,6 +34660,20 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/scope-analyzer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.0.5.tgz", + "integrity": "sha512-+U5H0417mnTEstCD5VwOYO7V4vYuSqwqjFap40ythe67bhMFL5C3UgPwyBv7KDJsqUBIKafOD57xMlh1rN7eaw==", + "dev": true, + "dependencies": { + "array-from": "^2.1.1", + "es6-map": "^0.1.5", + "es6-set": "^0.1.5", + "es6-symbol": "^3.1.1", + "estree-is-function": "^1.0.0", + "get-assigned-identifiers": "^1.1.0" + } + }, "node_modules/seed-random": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", @@ -35013,6 +35587,16 @@ "node": ">= 0.10.0" } }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, "node_modules/stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -35316,6 +35900,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -36069,6 +36665,30 @@ "node": ">=6" } }, + "node_modules/transform-ast": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz", + "integrity": "sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==", + "dev": true, + "dependencies": { + "acorn-node": "^1.3.0", + "convert-source-map": "^1.5.1", + "dash-ast": "^1.0.0", + "is-buffer": "^2.0.0", + "magic-string": "^0.23.2", + "merge-source-map": "1.0.4", + "nanobench": "^2.1.1" + } + }, + "node_modules/transform-ast/node_modules/is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/treeverse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", @@ -36633,7 +37253,6 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==", "dev": true, - "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -38082,6 +38701,12 @@ "node": ">=8" } }, + "node_modules/wrap-comment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrap-comment/-/wrap-comment-1.0.1.tgz", + "integrity": "sha512-APccrMwl/ont0RHFTXNAQfM647duYYEfs6cngrIyTByTI0xbWnDnPSptFZhS68L4WCjt2ZxuhCFwuY6Pe88KZQ==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -39223,7 +39848,6 @@ "packages/plugin-electron-app": { "name": "@bugsnag/plugin-electron-app", "version": "8.1.1", - "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -39265,7 +39889,6 @@ "packages/plugin-electron-client-state-persistence": { "name": "@bugsnag/plugin-electron-client-state-persistence", "version": "8.1.1", - "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -50804,6 +51427,12 @@ "ansi-wrap": "0.1.0" } }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -50920,6 +51549,12 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, "array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -51739,6 +52374,13 @@ } } }, + "babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true, + "requires": {} + }, "backo": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/backo/-/backo-1.1.0.tgz", @@ -52068,6 +52710,35 @@ "umd": "^3.0.0" } }, + "browser-pack-flat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/browser-pack-flat/-/browser-pack-flat-3.2.0.tgz", + "integrity": "sha512-tk/LexpgMImZyDfpWSPyIlQ3frZYTyGLpW+Ytd0Fj9VW03Fil9IrKzcVKN87wZHWhP6LbdKh3STRnIkHIR+UTQ==", + "dev": true, + "requires": { + "combine-source-map": "^0.8.0", + "convert-source-map": "^1.5.1", + "count-lines": "^0.1.2", + "dedent": "^0.7.0", + "estree-is-member-expression": "^1.0.0", + "estree-is-require": "^1.0.0", + "esutils": "^2.0.2", + "JSONStream": "^1.3.2", + "path-parse": "^1.0.5", + "scope-analyzer": "^2.0.0", + "stream-combiner": "^0.2.2", + "through2": "^2.0.3", + "transform-ast": "^2.4.2", + "umd": "^3.0.3", + "wrap-comment": "^1.0.0" + } + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, "browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", @@ -52085,6 +52756,83 @@ } } }, + "browserify": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.1.tgz", + "integrity": "sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==", + "dev": true, + "requires": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "hasown": "^2.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.7.3", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "requires": { + "resolve": "^1.17.0" + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + } + } + }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -52178,6 +52926,58 @@ } } }, + "browserify-versionify": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-versionify/-/browserify-versionify-1.0.6.tgz", + "integrity": "sha1-qy3GHWoRnmJ77Eh1mNGYO3/bJ14=", + "dev": true, + "requires": { + "find-root": "^0.1.1", + "through2": "0.6.3" + }, + "dependencies": { + "find-root": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", + "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.3.tgz", + "integrity": "sha1-eVKS/enyVMKjaLOPnMXRvUZjr7Y=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, "browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -53346,6 +54146,12 @@ } } }, + "count-lines": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/count-lines/-/count-lines-0.1.2.tgz", + "integrity": "sha1-4zST+2hgqC9xWdgjeEP7+u/uWWI=", + "dev": true + }, "coverage-diff": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/coverage-diff/-/coverage-diff-1.6.0.tgz", @@ -53406,6 +54212,58 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -53494,6 +54352,12 @@ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -53641,6 +54505,12 @@ } } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -54225,6 +55095,16 @@ "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", "dev": true }, + "envify": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", + "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", + "dev": true, + "requires": { + "esprima": "^4.0.0", + "through": "~2.3.4" + } + }, "envinfo": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", @@ -54445,6 +55325,20 @@ "es6-symbol": "^3.1.1" } }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -54460,6 +55354,19 @@ "es6-promise": "^4.0.3" } }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -54982,6 +55889,33 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", + "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", + "dev": true + }, + "estree-is-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-identifier/-/estree-is-identifier-1.0.0.tgz", + "integrity": "sha512-2BDRGrkQJV/NhCAmmE33A35WAaxq3WQaGHgQuD//7orGWfpFqj8Srkwvx0TH+20yIdOF1yMQwi8anv5ISec2AQ==", + "dev": true + }, + "estree-is-member-expression": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz", + "integrity": "sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==", + "dev": true + }, + "estree-is-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-require/-/estree-is-require-1.0.0.tgz", + "integrity": "sha512-oWxQdSEmnUwNZsDQYiBNpVxKEhMmsJQSSxnDrwsr1MWtooCLfhgzsNGzmokdmfK0EzEIS5V4LPvqxv1Kmb1vvA==", + "dev": true, + "requires": { + "estree-is-identifier": "^1.0.0" + } + }, "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -55000,6 +55934,16 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "event-pubsub": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", @@ -55061,6 +56005,32 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, + "exorcist": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/exorcist/-/exorcist-2.0.0.tgz", + "integrity": "sha512-+c63SvhBq/HjmbV9cu9vkDkjXFiuI4lpqOZU5Y3t5GSV2l4TQCqVli9c7nIASHxkUL4THaOZDUcb6XNBI/eYjw==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "mold-source-map": "^0.4.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -55676,6 +56646,16 @@ } } }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -56593,6 +57573,15 @@ "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -57602,6 +58591,12 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -62610,6 +63605,15 @@ "lunr": ">= 2.3.0 < 2.4.0" } }, + "magic-string": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", + "integrity": "sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.1" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -62937,6 +63941,15 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -64510,6 +65523,30 @@ } } }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "mold-source-map": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz", + "integrity": "sha1-z2fgsxxHq5uttcnCVlGGISe7gxc=", + "dev": true, + "requires": { + "convert-source-map": "^1.1.0", + "through": "~2.2.7" + }, + "dependencies": { + "through": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", + "dev": true + } + } + }, "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -64581,6 +65618,12 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "mutexify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.2.0.tgz", + "integrity": "sha512-oprzxd2zhfrJqEuB98qc1dRMMonClBQ57UPDjnbcrah4orEMTq1jq3+AcdFe5ePzdbJXI7zmdhfftIdMnhYFoQ==", + "dev": true + }, "mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -64634,6 +65677,45 @@ "dev": true, "optional": true }, + "nanobench": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz", + "integrity": "sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2", + "chalk": "^1.1.3", + "mutexify": "^1.1.0", + "pretty-hrtime": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -66290,6 +67372,12 @@ } } }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -66456,6 +67544,17 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, + "proxyquire": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", + "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", + "dev": true, + "requires": { + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.1", + "resolve": "^1.11.1" + } + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -67598,6 +68697,20 @@ } } }, + "scope-analyzer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.0.5.tgz", + "integrity": "sha512-+U5H0417mnTEstCD5VwOYO7V4vYuSqwqjFap40ythe67bhMFL5C3UgPwyBv7KDJsqUBIKafOD57xMlh1rN7eaw==", + "dev": true, + "requires": { + "array-from": "^2.1.1", + "es6-map": "^0.1.5", + "es6-set": "^0.1.5", + "es6-symbol": "^3.1.1", + "estree-is-function": "^1.0.0", + "get-assigned-identifiers": "^1.1.0" + } + }, "seed-random": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", @@ -68367,6 +69480,16 @@ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==" }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, "stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -68614,6 +69737,15 @@ "es-object-atoms": "^1.0.0" } }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, "strip-ansi-cjs": { "version": "npm:strip-ansi@6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -69189,6 +70321,29 @@ } } }, + "transform-ast": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz", + "integrity": "sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==", + "dev": true, + "requires": { + "acorn-node": "^1.3.0", + "convert-source-map": "^1.5.1", + "dash-ast": "^1.0.0", + "is-buffer": "^2.0.0", + "magic-string": "^0.23.2", + "merge-source-map": "1.0.4", + "nanobench": "^2.1.1" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "dev": true + } + } + }, "treeverse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", @@ -69579,8 +70734,7 @@ "version": "3.15.1", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==", - "dev": true, - "optional": true + "dev": true }, "ultron": { "version": "1.0.2", @@ -70717,6 +71871,12 @@ } } }, + "wrap-comment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrap-comment/-/wrap-comment-1.0.1.tgz", + "integrity": "sha512-APccrMwl/ont0RHFTXNAQfM647duYYEfs6cngrIyTByTI0xbWnDnPSptFZhS68L4WCjt2ZxuhCFwuY6Pe88KZQ==", + "dev": true + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 4698d310cf..36818f99c5 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,14 @@ "@typescript-eslint/parser": "^2.19.2", "aws-sdk": "^2.1303.0", "babel-jest": "^29.7.0", + "babelify": "^10.0.0", + "browser-pack-flat": "^3.2.0", + "browserify": "^17.0.1", + "browserify-versionify": "^1.0.6", "coverage-diff": "^1.6.0", + "cross-env": "^7.0.3", "electron": "*", + "envify": "^4.1.0", "eslint": "^6.8.0", "eslint-config-standard": "^14.1.0", "eslint-config-standard-with-typescript": "^13.0.0", @@ -50,6 +56,7 @@ "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "^7.18.3", "eslint-plugin-standard": "^4.0.1", + "exorcist": "^2.0.0", "form-data": "^2.3.3", "formidable": "^1.2.2", "glob": "^7.1.6", @@ -59,6 +66,7 @@ "ncp": "^2.0.0", "node-fetch": "^2.6.0", "playwright": "^1.10.0", + "proxyquire": "^2.1.3", "ps-list": "^7.2.0", "react": "^16.13.1", "react-native": "^0.63.4", @@ -70,6 +78,7 @@ "timekeeper": "^2.2.0", "ts-node": "^9.1.1", "typescript": "^3.9.7", + "uglify-js": "^3.15.1", "verdaccio": "^4.12.0", "xvfb-maybe": "^0.2.1" }, From 63d1290453074ca6a5336ea89d9efa68aaa7532a Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 27 Dec 2024 16:34:03 +0000 Subject: [PATCH 50/52] browser bundling --- .rollup/index.mjs | 5 ++--- packages/browser/src/index-cjs.ts | 3 --- packages/browser/src/index-umd.ts | 5 +---- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/.rollup/index.mjs b/.rollup/index.mjs index 0621e2c9bf..0861ab51f4 100644 --- a/.rollup/index.mjs +++ b/.rollup/index.mjs @@ -21,7 +21,7 @@ export const sharedOutput = { } } -function createRollupConfig (options = defaultOptions(), overrides = {}) { +function createRollupConfig (options = defaultOptions()) { const packageJson = JSON.parse(fs.readFileSync(`${process.cwd()}/package.json`)) return { @@ -61,8 +61,7 @@ function createRollupConfig (options = defaultOptions(), overrides = {}) { } }), ...(options.plugins ?? []) - ], - ...overrides + ] } } diff --git a/packages/browser/src/index-cjs.ts b/packages/browser/src/index-cjs.ts index b7f9931e69..b07901f76c 100644 --- a/packages/browser/src/index-cjs.ts +++ b/packages/browser/src/index-cjs.ts @@ -11,6 +11,3 @@ import assign from '@bugsnag/core/lib/es-utils/assign' import Bugsnag from './bugsnag' export default assign(Bugsnag, { Breadcrumb, Client, Event, Session }) -export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' - -export type { Client, Event, Session, Breadcrumb, Plugin } from '@bugsnag/core' diff --git a/packages/browser/src/index-umd.ts b/packages/browser/src/index-umd.ts index d3e61149e3..b07901f76c 100644 --- a/packages/browser/src/index-umd.ts +++ b/packages/browser/src/index-umd.ts @@ -10,7 +10,4 @@ import assign from '@bugsnag/core/lib/es-utils/assign' import Bugsnag from './bugsnag' -export default assign(Bugsnag, { Client, Event, Session, Breadcrumb }) -export type { BrowserBugsnagStatic, BrowserConfig } from './bugsnag' - -export type { Client, Event, Session, Breadcrumb, Plugin } from '@bugsnag/core' +export default assign(Bugsnag, { Breadcrumb, Client, Event, Session }) From 31964150ba2b227d38982957b06e154f4f0fc516 Mon Sep 17 00:00:00 2001 From: Dan Skinner Date: Fri, 27 Dec 2024 17:17:39 +0000 Subject: [PATCH 51/52] browser bundling --- package-lock.json | 202 +------------------------ package.json | 2 - packages/browser/rollup.config.npm.mjs | 1 - 3 files changed, 2 insertions(+), 203 deletions(-) diff --git a/package-lock.json b/package-lock.json index c7bc964f1e..262f10edd4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,6 @@ "browserify": "^17.0.1", "browserify-versionify": "^1.0.6", "coverage-diff": "^1.6.0", - "cross-env": "^7.0.3", "electron": "*", "envify": "^4.1.0", "eslint": "^6.8.0", @@ -74,7 +73,6 @@ "ncp": "^2.0.0", "node-fetch": "^2.6.0", "playwright": "^1.10.0", - "proxyquire": "^2.1.3", "ps-list": "^7.2.0", "react": "^16.13.1", "react-native": "^0.63.4", @@ -16015,83 +16013,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-env/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-env/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -19061,19 +18982,6 @@ "node": ">=10" } }, - "node_modules/fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "dependencies": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -21668,12 +21576,6 @@ "node": ">=8" } }, - "node_modules/is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -30557,12 +30459,6 @@ "resolve": "^1.17.0" } }, - "node_modules/module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, "node_modules/mold-source-map": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz", @@ -33217,17 +33113,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/proxyquire": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", - "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", - "dev": true, - "dependencies": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.1", - "resolve": "^1.11.1" - } - }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -39848,6 +39733,7 @@ "packages/plugin-electron-app": { "name": "@bugsnag/plugin-electron-app", "version": "8.1.1", + "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -39889,6 +39775,7 @@ "packages/plugin-electron-client-state-persistence": { "name": "@bugsnag/plugin-electron-client-state-persistence", "version": "8.1.1", + "hasInstallScript": true, "license": "MIT", "dependencies": { "bindings": "^1.5.0" @@ -54212,58 +54099,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -56646,16 +56481,6 @@ } } }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - } - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -58591,12 +58416,6 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -65523,12 +65342,6 @@ } } }, - "module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, "mold-source-map": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz", @@ -67544,17 +67357,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "proxyquire": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", - "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", - "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.1", - "resolve": "^1.11.1" - } - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", diff --git a/package.json b/package.json index 36818f99c5..ef4ad17a17 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ "browserify": "^17.0.1", "browserify-versionify": "^1.0.6", "coverage-diff": "^1.6.0", - "cross-env": "^7.0.3", "electron": "*", "envify": "^4.1.0", "eslint": "^6.8.0", @@ -66,7 +65,6 @@ "ncp": "^2.0.0", "node-fetch": "^2.6.0", "playwright": "^1.10.0", - "proxyquire": "^2.1.3", "ps-list": "^7.2.0", "react": "^16.13.1", "react-native": "^0.63.4", diff --git a/packages/browser/rollup.config.npm.mjs b/packages/browser/rollup.config.npm.mjs index bccf1ddd92..9fbe5fd263 100644 --- a/packages/browser/rollup.config.npm.mjs +++ b/packages/browser/rollup.config.npm.mjs @@ -24,7 +24,6 @@ const plugins = [ removeComments: true, // don't output anything if there's a TS error noEmitOnError: true, - // turn on declaration files and declaration maps compilerOptions: { target: 'es3', } From 5b46af0b2d80cfe29254a026830ba33e7f418df4 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Thu, 9 Jan 2025 15:04:47 +0000 Subject: [PATCH 52/52] chore: :fire: remove TODOs --- packages/browser/src/index-cjs.ts | 3 --- packages/browser/src/index-umd.ts | 3 --- 2 files changed, 6 deletions(-) diff --git a/packages/browser/src/index-cjs.ts b/packages/browser/src/index-cjs.ts index b07901f76c..759963c6c1 100644 --- a/packages/browser/src/index-cjs.ts +++ b/packages/browser/src/index-cjs.ts @@ -1,9 +1,6 @@ import Client from '@bugsnag/core/client' -// @ts-ignore import Event from '@bugsnag/core/event' -// @ts-ignore import Session from '@bugsnag/core/session' -// @ts-ignore import Breadcrumb from '@bugsnag/core/breadcrumb' import assign from '@bugsnag/core/lib/es-utils/assign' diff --git a/packages/browser/src/index-umd.ts b/packages/browser/src/index-umd.ts index b07901f76c..759963c6c1 100644 --- a/packages/browser/src/index-umd.ts +++ b/packages/browser/src/index-umd.ts @@ -1,9 +1,6 @@ import Client from '@bugsnag/core/client' -// @ts-ignore import Event from '@bugsnag/core/event' -// @ts-ignore import Session from '@bugsnag/core/session' -// @ts-ignore import Breadcrumb from '@bugsnag/core/breadcrumb' import assign from '@bugsnag/core/lib/es-utils/assign'