@sentry/core
Advanced tools
Comparing version 4.4.2 to 4.5.0
import { Scope } from '@sentry/hub'; | ||
import { Breadcrumb, SentryEvent, SentryEventHint, SentryResponse, Severity, Transport } from '@sentry/types'; | ||
import { Backend, Options } from './interfaces'; | ||
import { RequestBuffer } from './requestbuffer'; | ||
/** A class object that can instanciate Backend objects. */ | ||
@@ -15,9 +14,11 @@ export interface BackendClass<B extends Backend, O extends Options> { | ||
protected readonly options: O; | ||
/** Cached transport used internally. */ | ||
protected transport: Transport; | ||
/** Creates a new browser backend instance. */ | ||
constructor(options: O); | ||
/** Cached transport used internally. */ | ||
protected transport?: Transport; | ||
/** A simple buffer holding all requests. */ | ||
protected readonly buffer: RequestBuffer<SentryResponse>; | ||
/** | ||
* Sets up the transport so it can be used later to send requests. | ||
*/ | ||
protected setupTransport(): Transport; | ||
/** | ||
* @inheritDoc | ||
@@ -33,3 +34,3 @@ */ | ||
*/ | ||
sendEvent(_event: SentryEvent): Promise<SentryResponse>; | ||
sendEvent(event: SentryEvent): Promise<SentryResponse>; | ||
/** | ||
@@ -46,3 +47,3 @@ * @inheritDoc | ||
*/ | ||
getBuffer(): RequestBuffer<SentryResponse>; | ||
getTransport(): Transport; | ||
} |
@@ -5,4 +5,5 @@ "use strict"; | ||
var logger_1 = require("@sentry/utils/logger"); | ||
var object_1 = require("@sentry/utils/object"); | ||
var error_1 = require("./error"); | ||
var requestbuffer_1 = require("./requestbuffer"); | ||
var noop_1 = require("./transports/noop"); | ||
/** | ||
@@ -14,4 +15,2 @@ * This is the base implemention of a Backend. | ||
function BaseBackend(options) { | ||
/** A simple buffer holding all requests. */ | ||
this.buffer = new requestbuffer_1.RequestBuffer(); | ||
this.options = options; | ||
@@ -21,4 +20,11 @@ if (!this.options.dsn) { | ||
} | ||
this.transport = this.setupTransport(); | ||
} | ||
/** | ||
* Sets up the transport so it can be used later to send requests. | ||
*/ | ||
BaseBackend.prototype.setupTransport = function () { | ||
return new noop_1.NoopTransport(); | ||
}; | ||
/** | ||
* @inheritDoc | ||
@@ -46,6 +52,13 @@ */ | ||
*/ | ||
BaseBackend.prototype.sendEvent = function (_event) { | ||
BaseBackend.prototype.sendEvent = function (event) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
return tslib_1.__generator(this, function (_a) { | ||
throw new error_1.SentryError('Backend has to implement `sendEvent` method'); | ||
// TODO: Remove with v5 | ||
// tslint:disable-next-line | ||
if (this.transport.captureEvent) { | ||
// tslint:disable-next-line | ||
return [2 /*return*/, this.transport.captureEvent(event)]; | ||
} | ||
// -------------------- | ||
return [2 /*return*/, this.transport.sendEvent(object_1.serialize(event))]; | ||
}); | ||
@@ -69,4 +82,4 @@ }); | ||
*/ | ||
BaseBackend.prototype.getBuffer = function () { | ||
return this.buffer; | ||
BaseBackend.prototype.getTransport = function () { | ||
return this.transport; | ||
}; | ||
@@ -73,0 +86,0 @@ return BaseBackend; |
@@ -7,2 +7,3 @@ import { Scope } from '@sentry/hub'; | ||
import { Backend, Client, Options } from './interfaces'; | ||
import { PromiseBuffer } from './promisebuffer'; | ||
/** | ||
@@ -61,2 +62,4 @@ * Base implementation for all JavaScript SDK clients. | ||
private readonly integrations; | ||
/** A simple buffer holding all requests. */ | ||
protected readonly buffer: PromiseBuffer<SentryResponse>; | ||
/** | ||
@@ -74,8 +77,2 @@ * Initializes this client instance. | ||
/** | ||
* Internal helper function to buffer promises. | ||
* | ||
* @param promise Any promise, but in this case Promise<SentryResponse>. | ||
*/ | ||
protected buffer(promise: Promise<SentryResponse>): Promise<SentryResponse>; | ||
/** | ||
* @inheritDoc | ||
@@ -82,0 +79,0 @@ */ |
@@ -6,2 +6,3 @@ "use strict"; | ||
var async_1 = require("@sentry/utils/async"); | ||
var is_1 = require("@sentry/utils/is"); | ||
var logger_1 = require("@sentry/utils/logger"); | ||
@@ -12,2 +13,3 @@ var misc_1 = require("@sentry/utils/misc"); | ||
var integration_1 = require("./integration"); | ||
var promisebuffer_1 = require("./promisebuffer"); | ||
/** | ||
@@ -67,2 +69,4 @@ * Default maximum number of breadcrumbs added to an event. Can be overwritten | ||
function BaseClient(backendClass, options) { | ||
/** A simple buffer holding all requests. */ | ||
this.buffer = new promisebuffer_1.PromiseBuffer(); | ||
this.backend = new backendClass(options); | ||
@@ -91,16 +95,2 @@ this.options = options; | ||
/** | ||
* Internal helper function to buffer promises. | ||
* | ||
* @param promise Any promise, but in this case Promise<SentryResponse>. | ||
*/ | ||
BaseClient.prototype.buffer = function (promise) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
return tslib_1.__generator(this, function (_a) { | ||
return [2 /*return*/, this.getBackend() | ||
.getBuffer() | ||
.add(promise)]; | ||
}); | ||
}); | ||
}; | ||
/** | ||
* @inheritDoc | ||
@@ -112,3 +102,3 @@ */ | ||
return tslib_1.__generator(this, function (_a) { | ||
return [2 /*return*/, this.buffer((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { | ||
return [2 /*return*/, this.buffer.add((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { | ||
var event; | ||
@@ -134,9 +124,18 @@ return tslib_1.__generator(this, function (_a) { | ||
return tslib_1.__generator(this, function (_a) { | ||
return [2 /*return*/, this.buffer((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { | ||
var event; | ||
return tslib_1.__generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, this.getBackend().eventFromMessage(message, level, hint)]; | ||
return [2 /*return*/, this.buffer.add((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { | ||
var event, _a; | ||
return tslib_1.__generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: | ||
if (!is_1.isPrimitive(message)) return [3 /*break*/, 2]; | ||
return [4 /*yield*/, this.getBackend().eventFromMessage("" + message, level, hint)]; | ||
case 1: | ||
event = _a.sent(); | ||
_a = _b.sent(); | ||
return [3 /*break*/, 4]; | ||
case 2: return [4 /*yield*/, this.getBackend().eventFromException(message, hint)]; | ||
case 3: | ||
_a = _b.sent(); | ||
_b.label = 4; | ||
case 4: | ||
event = _a; | ||
return [2 /*return*/, this.captureEvent(event, hint, scope)]; | ||
@@ -159,3 +158,3 @@ } | ||
// This is fine... | ||
return [2 /*return*/, this.buffer((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { | ||
return [2 /*return*/, this.buffer.add((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { | ||
var _this = this; | ||
@@ -283,3 +282,3 @@ return tslib_1.__generator(this, function (_a) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var _a, beforeSend, sampleRate, prepared, finalEvent, isInternalException, exception_1, response; | ||
var _a, beforeSend, sampleRate, prepared, finalEvent, isInternalException, exception_1, response, error_1; | ||
return tslib_1.__generator(this, function (_b) { | ||
@@ -342,4 +341,7 @@ switch (_b.label) { | ||
} | ||
_b.label = 7; | ||
case 7: | ||
_b.trys.push([7, 9, , 10]); | ||
return [4 /*yield*/, send(finalEvent)]; | ||
case 7: | ||
case 8: | ||
response = _b.sent(); | ||
@@ -352,2 +354,12 @@ response.event = finalEvent; | ||
return [2 /*return*/, response]; | ||
case 9: | ||
error_1 = _b.sent(); | ||
// We have a catch here since the transport can reject the request internally. | ||
// If we do not catch this here, we will run into an endless loop. | ||
logger_1.logger.error("" + error_1); | ||
return [2 /*return*/, { | ||
reason: "" + error_1, | ||
status: types_1.Status.Failed, | ||
}]; | ||
case 10: return [2 /*return*/]; | ||
} | ||
@@ -363,5 +375,11 @@ }); | ||
return tslib_1.__generator(this, function (_a) { | ||
return [2 /*return*/, this.getBackend() | ||
.getBuffer() | ||
.drain(timeout)]; | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, Promise.all([ | ||
this.getBackend() | ||
.getTransport() | ||
.close(timeout), | ||
this.buffer.drain(timeout), | ||
])]; | ||
case 1: return [2 /*return*/, (_a.sent()).reduce(function (prev, current) { return prev && current; })]; | ||
} | ||
}); | ||
@@ -368,0 +386,0 @@ }); |
@@ -8,6 +8,7 @@ export { addBreadcrumb, captureException, captureEvent, captureMessage, configureScope, withScope, } from '@sentry/minimal'; | ||
export { SentryError } from './error'; | ||
export { RequestBuffer } from './requestbuffer'; | ||
export { PromiseBuffer } from './promisebuffer'; | ||
export { Backend, Client, LogLevel, Options } from './interfaces'; | ||
export { initAndBind, ClientClass } from './sdk'; | ||
export { NoopTransport } from './transports/noop'; | ||
import * as Integrations from './integrations'; | ||
export { Integrations }; |
@@ -26,4 +26,4 @@ "use strict"; | ||
exports.SentryError = error_1.SentryError; | ||
var requestbuffer_1 = require("./requestbuffer"); | ||
exports.RequestBuffer = requestbuffer_1.RequestBuffer; | ||
var promisebuffer_1 = require("./promisebuffer"); | ||
exports.PromiseBuffer = promisebuffer_1.PromiseBuffer; | ||
var interfaces_1 = require("./interfaces"); | ||
@@ -33,4 +33,6 @@ exports.LogLevel = interfaces_1.LogLevel; | ||
exports.initAndBind = sdk_1.initAndBind; | ||
var noop_1 = require("./transports/noop"); | ||
exports.NoopTransport = noop_1.NoopTransport; | ||
var Integrations = require("./integrations"); | ||
exports.Integrations = Integrations; | ||
//# sourceMappingURL=index.js.map |
@@ -72,5 +72,5 @@ "use strict"; | ||
// TODO: Remove in v5 | ||
logger_1.logger.warn("Integration " + getIntegrationName(integration) + ": The install method is deprecated. Use \"setupOnce\"."); | ||
// tslint:disable:deprecation | ||
if (integration.install) { | ||
logger_1.logger.warn("Integration " + getIntegrationName(integration) + ": The install method is deprecated. Use \"setupOnce\"."); | ||
integration.install(options); | ||
@@ -77,0 +77,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import { Integration, SentryEvent } from '@sentry/types'; | ||
import { Integration, SentryEvent, SentryEventHint } from '@sentry/types'; | ||
/** Patch toString calls to return proper name for wrapped functions */ | ||
@@ -19,3 +19,3 @@ export declare class ExtraErrorData implements Integration { | ||
*/ | ||
enhanceEventWithErrorData(event: SentryEvent, error: Error): SentryEvent; | ||
enhanceEventWithErrorData(event: SentryEvent, hint?: SentryEventHint): SentryEvent; | ||
/** | ||
@@ -22,0 +22,0 @@ * Extract extra information from the Error object |
@@ -24,6 +24,6 @@ "use strict"; | ||
self = hub_1.getCurrentHub().getIntegration(ExtraErrorData); | ||
if (!self || !hint || !hint.originalException) { | ||
if (!self) { | ||
return [2 /*return*/, event]; | ||
} | ||
return [2 /*return*/, this.enhanceEventWithErrorData(event, hint.originalException)]; | ||
return [2 /*return*/, self.enhanceEventWithErrorData(event, hint)]; | ||
}); | ||
@@ -35,4 +35,7 @@ }); }); | ||
*/ | ||
ExtraErrorData.prototype.enhanceEventWithErrorData = function (event, error) { | ||
var errorData = this.extractErrorData(error); | ||
ExtraErrorData.prototype.enhanceEventWithErrorData = function (event, hint) { | ||
if (!hint || !hint.originalException || !is_1.isError(hint.originalException)) { | ||
return event; | ||
} | ||
var errorData = this.extractErrorData(hint.originalException); | ||
if (errorData) { | ||
@@ -52,3 +55,3 @@ return tslib_1.__assign({}, event, { extra: tslib_1.__assign({}, event.extra, errorData) }); | ||
var name_1 = error.name || error.constructor.name; | ||
var errorKeys = Object.keys(error).filter(function (key) { return nativeKeys_1.indexOf(key) === -1; }); | ||
var errorKeys = Object.getOwnPropertyNames(error).filter(function (key) { return nativeKeys_1.indexOf(key) === -1; }); | ||
if (errorKeys.length) { | ||
@@ -55,0 +58,0 @@ var extraErrorInfo = {}; |
import { Scope } from '@sentry/hub'; | ||
import { Breadcrumb, Integration, IntegrationClass, SentryBreadcrumbHint, SentryEvent, SentryEventHint, SentryResponse, Severity, Transport, TransportClass, TransportOptions } from '@sentry/types'; | ||
import { Dsn } from './dsn'; | ||
import { RequestBuffer } from './requestbuffer'; | ||
/** Console logging verbosity for the SDK. */ | ||
@@ -37,3 +36,3 @@ export declare enum LogLevel { | ||
*/ | ||
defaultIntegrations?: boolean | Integration[]; | ||
defaultIntegrations?: false | Integration[]; | ||
/** | ||
@@ -237,6 +236,8 @@ * List of integrations that should be installed after SDK was initialized. | ||
/** | ||
* Returns the internal instance of the request buffer. | ||
* Only used internally. | ||
* Returns the transport that is used by the backend. | ||
* Please note that the transport gets lazy initialized so it will only be there once the first event has been sent. | ||
* | ||
* @returns The transport. | ||
*/ | ||
getBuffer(): RequestBuffer<SentryResponse>; | ||
getTransport(): Transport; | ||
} |
{ | ||
"name": "@sentry/core", | ||
"version": "4.4.2", | ||
"version": "4.5.0", | ||
"description": "Base implementation for all Sentry JavaScript SDKs", | ||
"repository": "git://github.com/getsentry/raven-js.git", | ||
"homepage": "https://github.com/getsentry/raven-js/tree/master/packages/core", | ||
"repository": "git://github.com/getsentry/sentry-javascript.git", | ||
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", | ||
"author": "Sentry", | ||
@@ -18,6 +18,6 @@ "license": "BSD-3-Clause", | ||
"dependencies": { | ||
"@sentry/hub": "4.4.2", | ||
"@sentry/minimal": "4.4.2", | ||
"@sentry/types": "4.4.2", | ||
"@sentry/utils": "4.4.2", | ||
"@sentry/hub": "4.5.0", | ||
"@sentry/minimal": "4.5.0", | ||
"@sentry/types": "4.5.0", | ||
"@sentry/utils": "4.5.0", | ||
"tslib": "^1.9.3" | ||
@@ -32,6 +32,10 @@ }, | ||
"tslint": "^5.11.0", | ||
"typescript": "^3.0.1" | ||
"typescript": "^3.2.0" | ||
}, | ||
"scripts": { | ||
"build": "tsc -p tsconfig.build.json", | ||
"build": "run-p build:es5 build:esm", | ||
"build:es5": "tsc -p tsconfig.build.json", | ||
"build:esm": "run-s build:esm:transpile build:esm:rewrite", | ||
"build:esm:transpile": "tsc -p tsconfig.esm.json", | ||
"build:esm:rewrite": "node ../../scripts/esm-rewrite.js", | ||
"build:watch": "tsc -p tsconfig.build.json -w --preserveWatchOutput", | ||
@@ -47,3 +51,3 @@ "clean": "rimraf dist coverage", | ||
"test": "jest", | ||
"test:watch": "jest --watch --notify" | ||
"test:watch": "jest --watch" | ||
}, | ||
@@ -70,3 +74,4 @@ "jest": { | ||
}, | ||
"gitHead": "a91da22f8bd3bddb38fab7f868326e376da82d4d" | ||
"gitHead": "a91da22f8bd3bddb38fab7f868326e376da82d4d", | ||
"sideEffects": false | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
380265
117
4665
+ Added@sentry/hub@4.5.0(transitive)
+ Added@sentry/minimal@4.5.0(transitive)
+ Added@sentry/types@4.5.0(transitive)
+ Added@sentry/utils@4.5.0(transitive)
- Removed@sentry/hub@4.4.2(transitive)
- Removed@sentry/minimal@4.4.2(transitive)
- Removed@sentry/types@4.4.2(transitive)
- Removed@sentry/utils@4.4.2(transitive)
Updated@sentry/hub@4.5.0
Updated@sentry/minimal@4.5.0
Updated@sentry/types@4.5.0
Updated@sentry/utils@4.5.0