Skip to content

Commit af092e3

Browse files
authored
feat: Tracing + Reduced Bundle Size + build updates (#2038)
* feat: Tracing Integration * feat: Update dependencies * fix: Remove opentracing package since code moved into integration * fix: Ignore tsbuildinfo * feat: Tracing integration + refactorings * fix: linter * feat: Add more options to tracing integration * ref: Small internal refactoring * meta: Changelog * feat: Move transaction to scope * fix: Changelog * fix: Tests * fix: Run yarn install * fix: Also clone span * meta: Changelog and version bump * meta: Changelog * ci: Remove saucelabs test * fix: Docs error * fix: Use utils in integrations, Remove incremental mode * fix: Linting * ref: Remove async/await syntax * feat: SpanContext to Span * feat: CR * fix: CR
1 parent 4a05f9f commit af092e3

Some content is hidden

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

75 files changed

+1413
-1466
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ packages/*/esm/
99
coverage/
1010
scratch/
1111
*.pyc
12+
*.tsbuildinfo
1213

1314
# logs
1415
yarn-error.log

.travis.yml

-9
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ cache:
2121

2222
matrix:
2323
fast_finish: true
24-
allow_failures:
25-
- script: scripts/browser-saucelabs.sh
2624

2725
stages:
2826
- Test
@@ -70,13 +68,6 @@ jobs:
7068
chrome: stable
7169
firefox: latest
7270
script: scripts/raven-js.sh
73-
- stage: Saucelabs
74-
name: '@sentry/browser - SauceLabs tests'
75-
if: fork = false
76-
node_js: '8'
77-
addons:
78-
sauce_connect: true
79-
script: scripts/browser-saucelabs.sh
8071
- stage: Deploy
8172
name: '@sentry/packages - pack and zeus upload'
8273
node_js: '8'

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
- [opentracing] ref: Removed opentracing package
6+
- [integrations] feat: Add tracing integration
7+
- [hub] feat: Add tracing related function to scope and hub (`Scope.startSpan`, `Scope.setSpan`, `Hub.traceHeaders`)
8+
- [hub] feat: Add new function to Scope `setContext`
9+
- [hub] feat: Add new function to Scope `setTransaction`
10+
311
## 5.1.3
412

513
- [browser] fix: GlobalHandler integration sometimes receives Event objects as message: Fix #1949

dangerfile.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { resolve } from 'path';
55
import tslint from 'danger-plugin-tslint';
66
import { prettyResults } from 'danger-plugin-tslint/dist/prettyResults';
77

8-
const packages = ['browser', 'core', 'hub', 'integrations', 'opentracing', 'minimal', 'node', 'types', 'utils'];
8+
const packages = ['browser', 'core', 'hub', 'integrations', 'minimal', 'node', 'types', 'utils'];
99

1010
export default async () => {
1111
if (!danger.github) {

lerna.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"lerna": "3.4.0",
3-
"version": "5.1.3",
3+
"version": "5.2.0-beta.0",
44
"packages": "packages/*",
55
"ignore": "raven-*",
66
"npmClient": "yarn",

package.json

+14-14
Original file line numberDiff line numberDiff line change
@@ -30,31 +30,31 @@
3030
"packages/utils"
3131
],
3232
"devDependencies": {
33-
"@google-cloud/storage": "^2.3.1",
33+
"@google-cloud/storage": "^2.5.0",
3434
"@strictsoftware/typedoc-plugin-monorepo": "^0.2.1",
3535
"@types/chai": "^4.1.3",
3636
"@types/jest": "^24.0.11",
3737
"@types/mocha": "^5.2.0",
38-
"@types/node": "^11.11.3",
38+
"@types/node": "^11.13.7",
3939
"@types/raven": "^2.5.1",
40-
"@types/sinon": "^7.0.10",
40+
"@types/sinon": "^7.0.11",
4141
"chai": "^4.1.2",
42-
"codecov": "^3.0.2",
43-
"danger": "^7.0.14",
42+
"codecov": "^3.3.0",
43+
"danger": "^7.1.3",
4444
"danger-plugin-tslint": "^2.0.0",
45-
"jest": "^24.5.0",
46-
"lerna": "3.13.1",
47-
"mocha": "^6.0.2",
45+
"jest": "^24.7.1",
46+
"lerna": "3.13.4",
47+
"mocha": "^6.1.4",
4848
"npm-run-all": "^4.1.2",
49-
"prettier": "^1.14.0",
49+
"prettier": "^1.17.0",
5050
"prettier-check": "^2.0.0",
51-
"replace-in-file": "^3.4.4",
51+
"replace-in-file": "^4.0.0",
5252
"rimraf": "^2.6.3",
53-
"sinon": "^7.2.7",
54-
"ts-jest": "^24.0.0",
55-
"tslint": "^5.14.0",
53+
"sinon": "^7.3.2",
54+
"ts-jest": "^24.0.2",
55+
"tslint": "^5.16.0",
5656
"typedoc": "^0.14.2",
57-
"typescript": "^3.3.3333",
57+
"typescript": "^3.4.5",
5858
"typescript-tslint-plugin": "^0.3.1"
5959
}
6060
}

packages/browser/.npmignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
!/dist/**/*
33
!/build/**/*
44
!/esm/**/*
5+
*.tsbuildinfo

packages/browser/package.json

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/browser",
3-
"version": "5.1.3",
3+
"version": "5.2.0-beta.0",
44
"description": "Official Sentry SDK for browsers",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser",
@@ -16,17 +16,17 @@
1616
"access": "public"
1717
},
1818
"dependencies": {
19-
"@sentry/core": "5.1.2",
20-
"@sentry/types": "5.1.0",
21-
"@sentry/utils": "5.1.2",
19+
"@sentry/core": "5.2.0-beta.0",
20+
"@sentry/types": "5.2.0-beta.0",
21+
"@sentry/utils": "5.2.0-beta.0",
2222
"tslib": "^1.9.3"
2323
},
2424
"devDependencies": {
2525
"@types/md5": "2.1.33",
2626
"chai": "^4.1.2",
27-
"jest": "^24.5.0",
28-
"jsdom": "^14.0.0",
29-
"karma": "^4.0.1",
27+
"jest": "^24.7.1",
28+
"jsdom": "^15.0.0",
29+
"karma": "^4.1.0",
3030
"karma-chai": "^0.1.0",
3131
"karma-chrome-launcher": "^2.2.0",
3232
"karma-failed-reporter": "0.0.3",
@@ -39,19 +39,19 @@
3939
"karma-typescript": "^4.0.0",
4040
"karma-typescript-es6-transform": "^4.0.0",
4141
"npm-run-all": "^4.1.2",
42-
"prettier": "^1.16.4",
42+
"prettier": "^1.17.0",
4343
"prettier-check": "^2.0.0",
4444
"rimraf": "^2.6.3",
45-
"rollup": "^1.6.0",
46-
"rollup-plugin-commonjs": "^9.2.1",
45+
"rollup": "^1.10.1",
46+
"rollup-plugin-commonjs": "^9.3.4",
4747
"rollup-plugin-license": "^0.8.1",
48-
"rollup-plugin-node-resolve": "^4.0.1",
48+
"rollup-plugin-node-resolve": "^4.2.3",
4949
"rollup-plugin-terser": "^4.0.4",
50-
"rollup-plugin-typescript2": "^0.20.1",
51-
"sinon": "^7.2.7",
52-
"tslint": "^5.14.0",
53-
"typescript": "^3.3.3333",
54-
"webpack": "^4.29.6"
50+
"rollup-plugin-typescript2": "^0.21.0",
51+
"sinon": "^7.3.2",
52+
"tslint": "^5.16.0",
53+
"typescript": "^3.4.5",
54+
"webpack": "^4.30.0"
5555
},
5656
"scripts": {
5757
"build": "run-s build:dist build:esm build:bundle",

packages/browser/rollup.config.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ const plugins = [
4343
include: ['*.ts+(|x)', '**/*.ts+(|x)', '../**/*.ts+(|x)'],
4444
}),
4545
resolve({
46-
module: true,
47-
browser: false,
48-
modulesOnly: false,
46+
mainFields: ['module'],
4947
}),
5048
commonjs(),
5149
];

packages/browser/src/sdk.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export function onLoad(callback: () => void): void {
124124
*
125125
* @param timeout Maximum time in ms the client should wait.
126126
*/
127-
export async function flush(timeout?: number): Promise<boolean> {
127+
export function flush(timeout?: number): Promise<boolean> {
128128
const client = getCurrentHub().getClient<BrowserClient>();
129129
if (client) {
130130
return client.flush(timeout);
@@ -138,7 +138,7 @@ export async function flush(timeout?: number): Promise<boolean> {
138138
*
139139
* @param timeout Maximum time in ms the client should wait.
140140
*/
141-
export async function close(timeout?: number): Promise<boolean> {
141+
export function close(timeout?: number): Promise<boolean> {
142142
const client = getCurrentHub().getClient<BrowserClient>();
143143
if (client) {
144144
return client.close(timeout);

packages/browser/src/transports/base.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ export abstract class BaseTransport implements Transport {
1919
/**
2020
* @inheritDoc
2121
*/
22-
public async sendEvent(_: Event): Promise<Response> {
22+
public sendEvent(_: Event): Promise<Response> {
2323
throw new SentryError('Transport Class has to implement `sendEvent` method');
2424
}
2525

2626
/**
2727
* @inheritDoc
2828
*/
29-
public async close(timeout?: number): Promise<boolean> {
29+
public close(timeout?: number): Promise<boolean> {
3030
return this._buffer.drain(timeout);
3131
}
3232
}

packages/browser/src/transports/fetch.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export class FetchTransport extends BaseTransport {
1010
/**
1111
* @inheritDoc
1212
*/
13-
public async sendEvent(event: Event): Promise<Response> {
13+
public sendEvent(event: Event): Promise<Response> {
1414
const defaultOptions: RequestInit = {
1515
body: JSON.stringify(event),
1616
method: 'POST',

packages/browser/src/transports/xhr.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export class XHRTransport extends BaseTransport {
77
/**
88
* @inheritDoc
99
*/
10-
public async sendEvent(event: Event): Promise<Response> {
10+
public sendEvent(event: Event): Promise<Response> {
1111
return this._buffer.add(
1212
new Promise<Response>((resolve, reject) => {
1313
const request = new XMLHttpRequest();

packages/browser/src/version.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export const SDK_NAME = 'sentry.javascript.browser';
2-
export const SDK_VERSION = '5.1.3';
2+
export const SDK_VERSION = '5.2.0-beta.0';

packages/browser/test/mocks/simpletransport.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Event, Response, Status } from '../../src';
22
import { BaseTransport } from '../../src/transports';
33

44
export class SimpleTransport extends BaseTransport {
5-
public async sendEvent(_: Event): Promise<Response> {
5+
public sendEvent(_: Event): Promise<Response> {
66
return this._buffer.add(
77
Promise.resolve({
88
status: Status.fromHttpCode(200),

packages/core/.npmignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*
22
!/dist/**/*
33
!/esm/**/*
4+
*.tsbuildinfo

packages/core/package.json

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/core",
3-
"version": "5.1.2",
3+
"version": "5.2.0-beta.0",
44
"description": "Base implementation for all Sentry JavaScript SDKs",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core",
@@ -16,20 +16,20 @@
1616
"access": "public"
1717
},
1818
"dependencies": {
19-
"@sentry/hub": "5.1.2",
20-
"@sentry/minimal": "5.1.2",
21-
"@sentry/types": "5.1.0",
22-
"@sentry/utils": "5.1.2",
19+
"@sentry/hub": "5.2.0-beta.0",
20+
"@sentry/minimal": "5.2.0-beta.0",
21+
"@sentry/types": "5.2.0-beta.0",
22+
"@sentry/utils": "5.2.0-beta.0",
2323
"tslib": "^1.9.3"
2424
},
2525
"devDependencies": {
26-
"jest": "^24.5.0",
26+
"jest": "^24.7.1",
2727
"npm-run-all": "^4.1.2",
28-
"prettier": "^1.16.4",
28+
"prettier": "^1.17.0",
2929
"prettier-check": "^2.0.0",
3030
"rimraf": "^2.6.3",
31-
"tslint": "^5.14.0",
32-
"typescript": "^3.3.3333"
31+
"tslint": "^5.16.0",
32+
"typescript": "^3.4.5"
3333
},
3434
"scripts": {
3535
"build": "run-p build:es5 build:esm",

packages/core/src/baseclient.ts

+16-14
Original file line numberDiff line numberDiff line change
@@ -165,24 +165,26 @@ export abstract class BaseClient<B extends Backend, O extends Options> implement
165165
/**
166166
* @inheritDoc
167167
*/
168-
public async flush(timeout?: number): Promise<boolean> {
169-
const clientReady = await this._isClientProcessing(timeout);
170-
if (this._processingInterval) {
171-
clearInterval(this._processingInterval);
172-
}
173-
const transportFlushed = await this._getBackend()
174-
.getTransport()
175-
.close(timeout);
176-
return clientReady && transportFlushed;
168+
public flush(timeout?: number): Promise<boolean> {
169+
return this._isClientProcessing(timeout).then(clientReady => {
170+
if (this._processingInterval) {
171+
clearInterval(this._processingInterval);
172+
}
173+
return this._getBackend()
174+
.getTransport()
175+
.close(timeout)
176+
.then(transportFlushed => clientReady && transportFlushed);
177+
});
177178
}
178179

179180
/**
180181
* @inheritDoc
181182
*/
182-
public async close(timeout?: number): Promise<boolean> {
183-
const result = await this.flush(timeout);
184-
this.getOptions().enabled = false;
185-
return result;
183+
public close(timeout?: number): Promise<boolean> {
184+
return this.flush(timeout).then(result => {
185+
this.getOptions().enabled = false;
186+
return result;
187+
});
186188
}
187189

188190
/**
@@ -205,7 +207,7 @@ export abstract class BaseClient<B extends Backend, O extends Options> implement
205207
}
206208

207209
/** Waits for the client to be done with processing. */
208-
protected async _isClientProcessing(timeout?: number): Promise<boolean> {
210+
protected _isClientProcessing(timeout?: number): Promise<boolean> {
209211
return new Promise<boolean>(resolve => {
210212
let ticked: number = 0;
211213
const tick: number = 1;

packages/core/src/integrations/inboundfilters.ts

+4-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';
22
import { Event, Integration } from '@sentry/types';
3-
import { getEventDescription, isRegExp, logger } from '@sentry/utils';
3+
import { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';
44

55
// "Script error." is hard coded into browsers for errors that it can't read.
66
// this is the result of a script being pulled in from an external domain and CORS.
@@ -102,7 +102,7 @@ export class InboundFilters implements Integration {
102102

103103
return this._getPossibleEventMessages(event).some(message =>
104104
// Not sure why TypeScript complains here...
105-
(options.ignoreErrors as Array<RegExp | string>).some(pattern => this._isMatchingPattern(message, pattern)),
105+
(options.ignoreErrors as Array<RegExp | string>).some(pattern => isMatchingPattern(message, pattern)),
106106
);
107107
}
108108

@@ -113,7 +113,7 @@ export class InboundFilters implements Integration {
113113
return false;
114114
}
115115
const url = this._getEventFilterUrl(event);
116-
return !url ? false : options.blacklistUrls.some(pattern => this._isMatchingPattern(url, pattern));
116+
return !url ? false : options.blacklistUrls.some(pattern => isMatchingPattern(url, pattern));
117117
}
118118

119119
/** JSDoc */
@@ -123,7 +123,7 @@ export class InboundFilters implements Integration {
123123
return true;
124124
}
125125
const url = this._getEventFilterUrl(event);
126-
return !url ? true : options.whitelistUrls.some(pattern => this._isMatchingPattern(url, pattern));
126+
return !url ? true : options.whitelistUrls.some(pattern => isMatchingPattern(url, pattern));
127127
}
128128

129129
/** JSDoc */
@@ -140,17 +140,6 @@ export class InboundFilters implements Integration {
140140
};
141141
}
142142

143-
/** JSDoc */
144-
private _isMatchingPattern(value: string, pattern: RegExp | string): boolean {
145-
if (isRegExp(pattern)) {
146-
return (pattern as RegExp).test(value);
147-
}
148-
if (typeof pattern === 'string') {
149-
return value.includes(pattern);
150-
}
151-
return false;
152-
}
153-
154143
/** JSDoc */
155144
private _getPossibleEventMessages(event: Event): string[] {
156145
if (event.message) {

0 commit comments

Comments
 (0)