Skip to content

Commit 0522d07

Browse files
authored
Merge pull request #2647 from bugsnag/integration/http-errors
[Integration] HTTP Errors
1 parent e379e7b commit 0522d07

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+10204
-185
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ packages/**/fixtures
1010
test/browser
1111
test/node
1212
test/react-native-cli/features/fixtures
13+
test/react-native/features/fixtures
1314
test/cloudflare-workers

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
## [Unreleased]
44

5+
This release adds support for notitfying failed network requests using the new `plugin-network-instrumentation` package
6+
57
### Added
68

9+
(plugin-network-instrumentation) Add new plugin to notify failed network requests [#2647](https://github.com/bugsnag/bugsnag-js/pull/2647)
710
(plugin-cloudflare-workers): Add initial support for Cloudflare Workers [#2643](https://github.com/bugsnag/bugsnag-js/pull/2643) [#2644](https://github.com/bugsnag/bugsnag-js/pull/2644)
811
(plugin-contextualize) Return callback value from contextualize plugin [#2654](https://github.com/bugsnag/bugsnag-js/pull/2654)
912

bin/local-test-util

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ async function buildNotifiers (notifier) {
121121
async function packNotifiers (notifier) {
122122
const notifiers = notifier
123123
? [ notifier ]
124-
: [ 'js', 'browser', 'node', 'web-worker', 'plugin-angular', 'plugin-react', 'plugin-vue' ]
124+
: [ 'js', 'browser', 'node', 'web-worker', 'plugin-angular', 'plugin-react', 'plugin-vue', 'plugin-network-instrumentation' ]
125125
for (const n of notifiers) {
126126
let packageLocation = `packages/${n}/`
127127
if (n === 'plugin-angular') packageLocation += 'dist/'
@@ -131,7 +131,7 @@ async function packNotifiers (notifier) {
131131

132132
async function installNotifiers (notifier) {
133133
trace('install notifiers')
134-
if (notifier && ![ 'browser', 'plugin-vue', 'plugin-react', 'web-worker' ].includes(notifier)) return
134+
if (notifier && ![ 'browser', 'plugin-vue', 'plugin-react', 'web-worker', 'plugin-network-instrumentation' ].includes(notifier)) return
135135
await ex(`npm`, [
136136
`install`,
137137
`--no-package-lock`,
@@ -144,7 +144,8 @@ async function installNotifiers (notifier) {
144144
`../../../../bugsnag-browser-${require('../packages/browser/package.json').version}.tgz`,
145145
`../../../../bugsnag-web-worker-${require('../packages/web-worker/package.json').version}.tgz`,
146146
`../../../../bugsnag-plugin-react-${require('../packages/plugin-react/package.json').version}.tgz`,
147-
`../../../../bugsnag-plugin-vue-${require('../packages/plugin-vue/package.json').version}.tgz`
147+
`../../../../bugsnag-plugin-vue-${require('../packages/plugin-vue/package.json').version}.tgz`,
148+
`../../../../bugsnag-plugin-network-instrumentation-${require('../packages/plugin-network-instrumentation/package.json').version}.tgz`
148149
]
149150
), {
150151
cwd: `${__dirname}/../test/browser/features/fixtures`

jest.config.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ module.exports = {
2929
project('web workers', ['web-worker'], {
3030
testEnvironment: '<rootDir>/jest/FixJSDOMEnvironment.js'
3131
}),
32-
project('shared plugins', ['plugin-app-duration', 'plugin-stackframe-path-normaliser']),
32+
project('shared plugins', ['plugin-app-duration', 'plugin-stackframe-path-normaliser', 'request-tracker']),
3333
project('browser', [
3434
'browser',
3535
'delivery-x-domain-request',
@@ -50,7 +50,8 @@ module.exports = {
5050
'plugin-inline-script-content',
5151
'plugin-simple-throttle',
5252
'plugin-console-breadcrumbs',
53-
'plugin-browser-session'
53+
'plugin-browser-session',
54+
'plugin-network-instrumentation'
5455
], {
5556
testEnvironment: '<rootDir>/jest/FixJSDOMEnvironment.js'
5657
}),

package-lock.json

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/core/event.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { App, Device, Event, Request, Breadcrumb, User, Session, FeatureFlag } from './types'
1+
import { App, Device, Event, Request, Response, Breadcrumb, User, Session, FeatureFlag } from './types'
22
import { Error } from './types/event'
33

44
interface HandledState {
@@ -40,6 +40,7 @@ export default class EventWithInternals extends Event {
4040
app: App
4141
device: Device
4242
request: Request
43+
response: Response
4344
breadcrumbs: Breadcrumb[]
4445
context: string | undefined
4546
correlation: { spanId: string, traceId: string } | undefined

packages/core/event.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class Event {
2323
this.app = {}
2424
this.device = {}
2525
this.request = {}
26+
this.response = {}
2627

2728
this.breadcrumbs = []
2829
this.threads = []
@@ -120,6 +121,7 @@ class Event {
120121
app: this.app,
121122
device: this.device,
122123
request: this.request,
124+
response: this.response,
123125
breadcrumbs: this.breadcrumbs,
124126
context: this.context,
125127
groupingHash: this.groupingHash,

packages/core/lib/json-payload.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ const jsonStringify = require('@bugsnag/safe-json-stringify')
22
const EVENT_REDACTION_PATHS = [
33
'events.[].metaData',
44
'events.[].breadcrumbs.[].metaData',
5-
'events.[].request'
5+
'events.[].request',
6+
'events.[].response'
67
]
78

89
module.exports.event = (event, redactedKeys) => {

packages/core/types/common.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ interface Request {
120120
[key: string]: any
121121
}
122122

123+
interface Response {
124+
statusCode: number
125+
headers: { [key: string]: unknown }
126+
body?: string
127+
bodyLength?: number
128+
}
129+
123130
export interface User {
124131
id?: string
125132
email?: string

packages/core/types/event.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
App,
44
Device,
55
Request,
6+
Response,
67
Logger,
78
User,
89
Thread,
@@ -23,6 +24,7 @@ declare class Event {
2324
public app: App
2425
public device: Device
2526
public request: Request
27+
public response: Response
2628

2729
public errors: Error[];
2830
public breadcrumbs: Breadcrumb[]

0 commit comments

Comments
 (0)