@grafana/faro-core 1.14.0 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/faro-core.iife.js +1 -1
- package/dist/bundle/types/api/utils.d.ts +2 -0
- package/dist/bundle/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/bundle/types/transports/initialize.d.ts +2 -4
- package/dist/bundle/types/transports/types.d.ts +0 -1
- package/dist/bundle/types/version.d.ts +1 -1
- package/dist/cjs/api/exceptions/initialize.js +10 -2
- package/dist/cjs/api/exceptions/initialize.js.map +1 -1
- package/dist/cjs/api/utils.js +11 -0
- package/dist/cjs/api/utils.js.map +1 -0
- package/dist/cjs/transports/initialize.js +1 -35
- package/dist/cjs/transports/initialize.js.map +1 -1
- package/dist/cjs/transports/registerInitial.js +0 -1
- package/dist/cjs/transports/registerInitial.js.map +1 -1
- package/dist/cjs/transports/types.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/api/exceptions/initialize.js +10 -2
- package/dist/esm/api/exceptions/initialize.js.map +1 -1
- package/dist/esm/api/utils.js +7 -0
- package/dist/esm/api/utils.js.map +1 -0
- package/dist/esm/transports/initialize.js +0 -28
- package/dist/esm/transports/initialize.js.map +1 -1
- package/dist/esm/transports/registerInitial.js +0 -1
- package/dist/esm/transports/registerInitial.js.map +1 -1
- package/dist/esm/transports/types.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/spec/core/src/api/exceptions/initialize.js +10 -2
- package/dist/spec/core/src/api/exceptions/initialize.js.map +1 -1
- package/dist/spec/core/src/api/exceptions/initialize.test.js +21 -0
- package/dist/spec/core/src/api/exceptions/initialize.test.js.map +1 -1
- package/dist/spec/core/src/api/utils.js +11 -0
- package/dist/spec/core/src/api/utils.js.map +1 -0
- package/dist/spec/core/src/api/utils.test.js +20 -0
- package/dist/spec/core/src/api/utils.test.js.map +1 -0
- package/dist/spec/core/src/transports/initialize.js +1 -35
- package/dist/spec/core/src/transports/initialize.js.map +1 -1
- package/dist/spec/core/src/transports/registerInitial.js +0 -1
- package/dist/spec/core/src/transports/registerInitial.js.map +1 -1
- package/dist/spec/core/src/transports/transports.test.js +0 -16
- package/dist/spec/core/src/transports/transports.test.js.map +1 -1
- package/dist/spec/core/src/transports/types.js.map +1 -1
- package/dist/spec/core/src/version.js +1 -1
- package/dist/spec/core/src/version.js.map +1 -1
- package/dist/types/api/utils.d.ts +2 -0
- package/dist/types/core/src/api/utils.d.ts +2 -0
- package/dist/types/core/src/api/utils.test.d.ts +1 -0
- package/dist/types/core/src/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/core/src/transports/initialize.d.ts +2 -4
- package/dist/types/core/src/transports/types.d.ts +0 -1
- package/dist/types/core/src/version.d.ts +1 -1
- package/dist/types/testUtils/mockTransport.d.ts +1 -1
- package/dist/types/transports/initialize.d.ts +2 -4
- package/dist/types/transports/types.d.ts +0 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type SendFn<P = APIEvent> = (items: Array<TransportItem<P>>) => void;\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(items: TransportItem | TransportItem[]): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n // returns wether the transport supports processing of a batches of items\n isBatched(): boolean;\n}\n\nexport type BodyKey = 'exceptions' | 'logs' | 'measurements' | 'traces' | 'events';\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type SendFn<P = APIEvent> = (items: Array<TransportItem<P>>) => void;\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(items: TransportItem | TransportItem[]): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n // returns wether the transport supports processing of a batches of items\n isBatched(): boolean;\n}\n\nexport type BodyKey = 'exceptions' | 'logs' | 'measurements' | 'traces' | 'events';\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n execute: (transportItem: TransportItem) => void;\n getBeforeSendHooks: () => BeforeSendHook[];\n isPaused: () => boolean;\n remove: (...transports: Transport[]) => void;\n removeBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n transports: Transport[];\n pause: () => void;\n unpause: () => void;\n}\n\nexport interface BatchExecutorOptions {\n readonly enabled?: boolean;\n // If no new signal arrives after \"batchSendTimeout\" ms, send the payload. If set to 0, timeout is disabled\n readonly sendTimeout?: number;\n // Buffer \"sendLimit\" is the number of signals before sending the payload\n readonly itemLimit?: number;\n readonly paused?: boolean;\n}\n"]}
|
package/dist/esm/version.js
CHANGED
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.14.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.14.1';\n"]}
|
|
@@ -15,6 +15,7 @@ exports.initializeExceptionsAPI = void 0;
|
|
|
15
15
|
var transports_1 = require("../../transports");
|
|
16
16
|
var utils_1 = require("../../utils");
|
|
17
17
|
var date_1 = require("../../utils/date");
|
|
18
|
+
var utils_2 = require("../utils");
|
|
18
19
|
var const_1 = require("./const");
|
|
19
20
|
var stacktraceParser;
|
|
20
21
|
function initializeExceptionsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) {
|
|
@@ -27,13 +28,16 @@ function initializeExceptionsAPI(_unpatchedConsole, internalLogger, config, meta
|
|
|
27
28
|
stacktraceParser = newStacktraceParser !== null && newStacktraceParser !== void 0 ? newStacktraceParser : stacktraceParser;
|
|
28
29
|
};
|
|
29
30
|
var getStacktraceParser = function () { return stacktraceParser; };
|
|
31
|
+
var _b = config.ignoreErrors, ignoreErrors = _b === void 0 ? [] : _b;
|
|
30
32
|
var pushError = function (error, _a) {
|
|
31
33
|
var _b = _a === void 0 ? {} : _a, skipDedupe = _b.skipDedupe, stackFrames = _b.stackFrames, type = _b.type, context = _b.context, spanContext = _b.spanContext, timestampOverwriteMs = _b.timestampOverwriteMs;
|
|
32
|
-
|
|
34
|
+
if (isErrorIgnored(ignoreErrors, error)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
33
37
|
var item = {
|
|
34
38
|
meta: metas.value,
|
|
35
39
|
payload: {
|
|
36
|
-
type: type,
|
|
40
|
+
type: type || error.name || const_1.defaultExceptionType,
|
|
37
41
|
value: error.message,
|
|
38
42
|
timestamp: timestampOverwriteMs ? (0, date_1.timestampToIsoString)(timestampOverwriteMs) : (0, utils_1.getCurrentTimestamp)(),
|
|
39
43
|
trace: spanContext
|
|
@@ -89,4 +93,8 @@ function parseCause(error) {
|
|
|
89
93
|
}
|
|
90
94
|
return cause == null ? {} : { cause: cause };
|
|
91
95
|
}
|
|
96
|
+
function isErrorIgnored(ignoreErrors, error) {
|
|
97
|
+
var message = error.message, name = error.name, stack = error.stack;
|
|
98
|
+
return (0, utils_2.shouldIgnoreEvent)(ignoreErrors, message + ' ' + name + ' ' + stack);
|
|
99
|
+
}
|
|
92
100
|
//# sourceMappingURL=initialize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../src/api/exceptions/initialize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,+CAAqD;AAGrD,qCASqB;AACrB,yCAAwD;
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../src/api/exceptions/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Config, Patterns } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItemType } from '../../transports';\nimport type { TransportItem, Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\nimport {\n deepEqual,\n getCurrentTimestamp,\n isArray,\n isError,\n isNull,\n isObject,\n stringifyExternalJson,\n stringifyObjectValues,\n} from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nimport type { TracesAPI } from '../traces';\nimport { shouldIgnoreEvent } from '../utils';\n\nimport { defaultExceptionType } from './const';\nimport type { ErrorWithIndexProperties, ExceptionEvent, ExceptionsAPI, StacktraceParser } from './types';\n\nlet stacktraceParser: StacktraceParser | undefined;\n\nexport function initializeExceptionsAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n tracesApi: TracesAPI\n): ExceptionsAPI {\n internalLogger.debug('Initializing exceptions API');\n\n let lastPayload: Pick<ExceptionEvent, 'type' | 'value' | 'stacktrace' | 'context'> | null = null;\n\n stacktraceParser = config.parseStacktrace ?? stacktraceParser;\n\n const changeStacktraceParser: ExceptionsAPI['changeStacktraceParser'] = (newStacktraceParser) => {\n internalLogger.debug('Changing stacktrace parser');\n\n stacktraceParser = newStacktraceParser ?? stacktraceParser;\n };\n\n const getStacktraceParser: ExceptionsAPI['getStacktraceParser'] = () => stacktraceParser;\n\n const { ignoreErrors = [] } = config;\n\n const pushError: ExceptionsAPI['pushError'] = (\n error,\n { skipDedupe, stackFrames, type, context, spanContext, timestampOverwriteMs } = {}\n ) => {\n if (isErrorIgnored(ignoreErrors, error)) {\n return;\n }\n\n const item: TransportItem<ExceptionEvent> = {\n meta: metas.value,\n payload: {\n type: type || error.name || defaultExceptionType,\n value: error.message,\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n context: stringifyObjectValues({\n ...parseCause(error),\n ...(context ?? {}),\n }),\n },\n type: TransportItemType.EXCEPTION,\n };\n\n stackFrames = stackFrames ?? (error.stack ? stacktraceParser?.(error).frames : undefined);\n\n if (stackFrames?.length) {\n item.payload.stacktrace = {\n frames: stackFrames,\n };\n }\n\n const testingPayload = {\n type: item.payload.type,\n value: item.payload.value,\n stackTrace: item.payload.stacktrace,\n context: item.payload.context,\n };\n\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping error push because it is the same as the last one\\n', item.payload);\n\n return;\n }\n\n lastPayload = testingPayload;\n\n internalLogger.debug('Pushing exception\\n', item);\n\n transports.execute(item);\n };\n\n changeStacktraceParser(config.parseStacktrace);\n\n return {\n changeStacktraceParser,\n getStacktraceParser,\n pushError,\n };\n}\n\nfunction parseCause(error: ErrorWithIndexProperties): {} | { cause: string } {\n let cause = error.cause;\n\n if (isError(cause)) {\n cause = error.cause.toString();\n // typeof operator on null returns \"object\". This is a well-known quirk in JavaScript and is considered a bug that cannot be fixed due to backward compatibility issues.\n // MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof#typeof_null\n } else if (cause !== null && (isObject(error.cause) || isArray(error.cause))) {\n cause = stringifyExternalJson(error.cause);\n } else if (cause != null) {\n cause = error.cause.toString();\n }\n\n return cause == null ? {} : { cause };\n}\n\nfunction isErrorIgnored(ignoreErrors: Patterns, error: ErrorWithIndexProperties): boolean {\n const { message, name, stack } = error;\n return shouldIgnoreEvent(ignoreErrors, message + ' ' + name + ' ' + stack);\n}\n"]}
|
|
@@ -225,6 +225,27 @@ describe('api.exceptions', function () {
|
|
|
225
225
|
});
|
|
226
226
|
});
|
|
227
227
|
});
|
|
228
|
+
describe('config.ignoreErrors', function () {
|
|
229
|
+
it('will filter out errors by string or regex', function () {
|
|
230
|
+
var _a;
|
|
231
|
+
var transport = new testUtils_1.MockTransport();
|
|
232
|
+
var api = (0, initialize_1.initializeFaro)((0, testUtils_1.mockConfig)({
|
|
233
|
+
transports: [transport],
|
|
234
|
+
ignoreErrors: ['Error: ResizeObserver', /FetchError[:\s\w\/]*pwc/, 'chrome-extension://mock-extension-id'],
|
|
235
|
+
})).api;
|
|
236
|
+
api.pushError(new Error('Error: ResizeObserver loop limit exceeded'));
|
|
237
|
+
api.pushError(new Error('FetchError: 404 \n Instantiating https://pwc.grafana.net/public/react-router-dom'));
|
|
238
|
+
api.pushError(new Error('FetchError: 404 \n Instantiating https://pwc.grafana.net/public/@emotion/css'));
|
|
239
|
+
var typeErrorMsg = 'TypeError: _.viz is undefined';
|
|
240
|
+
api.pushError(new Error(typeErrorMsg));
|
|
241
|
+
var mockErrorWithStacktrace = new Error('Mock error for testing');
|
|
242
|
+
mockErrorWithStacktrace.name = 'MockError';
|
|
243
|
+
mockErrorWithStacktrace.stack = "MockError: Mock error for testing\n at mockFunction (chrome-extension://mock-extension-id/mock-file.js:10:15)\n at anotherFunction (chrome-extension://mock-extension-id/mock-file.js:20:5)\n at Object.<anonymous> (chrome-extension://mock-extension-id/mock-file.js:30:3)";
|
|
244
|
+
api.pushError(mockErrorWithStacktrace);
|
|
245
|
+
expect(transport.items).toHaveLength(1);
|
|
246
|
+
expect(((_a = transport.items[0]) === null || _a === void 0 ? void 0 : _a.payload).value).toEqual(typeErrorMsg);
|
|
247
|
+
});
|
|
248
|
+
});
|
|
228
249
|
});
|
|
229
250
|
});
|
|
230
251
|
//# sourceMappingURL=initialize.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.test.js","sourceRoot":"","sources":["../../../../../../src/api/exceptions/initialize.test.ts"],"names":[],"mappings":";;AAAA,+CAAkD;AAClD,6CAA4D;AAC5D,+CAAqD;AAKrD,QAAQ,CAAC,gBAAgB,EAAE;IACzB,SAAS,SAAS,CAAC,EAAkD;YAAlD,qBAAkC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAA,EAAhD,MAAM,YAAA;QACzB,IAAM,SAAS,GAAG,IAAI,yBAAa,EAAE,CAAC;QACtC,IAAM,MAAM,GAAG,IAAA,sBAAU,EAAC;YACxB,MAAM,QAAA;YACN,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB,CAAC,CAAC;QAEK,IAAA,GAAG,GAAK,IAAA,2BAAc,EAAC,MAAM,CAAC,IAA3B,CAA4B;QAEvC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,WAAW,EAAE;QACpB,IAAI,GAAQ,CAAC;QACb,IAAI,SAAwB,CAAC;QAE7B,UAAU,CAAC;;YACT,KAAmB,SAAS,EAAE,EAA7B,GAAG,QAAA,EAAE,SAAS,QAAA,CAAgB;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE;YACzB,IAAM,MAAM,GAA0B;gBACpC;oBACE,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,EAAE;iBACX;aACF,CAAC;YAEF,IAAM,iBAAiB,GAAG;gBACxB,OAAO,EAAE,sBAAsB;gBAC/B,mBAAmB,EAAE,qBAAqB;aAC3C,CAAC;YAEF,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;gBACzC,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;aAC3B,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAExC,IAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,OAAO,CAAC,8BAAiB,CAAC,SAAS,CAAC,CAAC;YAE3D,IAAM,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAyB,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE;;YAC5B,IAAM,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAExC,IAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,OAAO,CAAC,8BAAiB,CAAC,SAAS,CAAC,CAAC;YAE3D,IAAM,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAyB,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;YAEnC,IAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;YAClC,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,CAAC,CAAC,0CAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE;YACpB,EAAE,CAAC,wBAAwB,EAAE;gBAC3B,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kEAAkE,EAAE;gBACrE,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEjC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8DAA8D,EAAE;gBACjE,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBACxB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gFAAgF,EAAE;gBACnF,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;gBAC5B,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4DAA4D,EAAE;gBAC/D,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;gBAC5B,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE;;gBACxC,KAAmB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAA9C,GAAG,QAAA,EAAE,SAAS,QAAA,CAAiC;gBAEhD,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE;gBAC3C,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE;oBACnB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2FAA2F,EAAE;gBAC9F,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE;;gBAChD,IAAM,WAAW,GAAoC;oBACnD,OAAO,EAAE,aAAa;oBACtB,MAAM,EAAE,YAAY;iBACrB,CAAC;gBAEF,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEhC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,CAAC,CAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,CAAA,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;oBAC1E,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,YAAY;iBACtB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qDAAqD,EAAE;;gBACxD,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3E,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,CAAC,CAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,CAAA,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACrG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mCAAmC,EAAE;;gBACtC,qDAAqD;gBACrD,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,qDAAqD;gBACrD,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrD,qDAAqD;gBACrD,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzD,qDAAqD;gBACrD,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAC1E,qDAAqD;gBACrD,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,qDAAqD;gBACrD,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACxD,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBAElC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAEtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,MAAM,CAAC,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3F,MAAM,CAAC,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC7F,MAAM,CAAC,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;gBACjG,MAAM,CAAC,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;gBAC7G,MAAM,CAAC,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC7E,MAAM,CAAC,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC7E,MAAM,CAAC,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE;;gBAChD,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE;oBAC7C,OAAO,EAAE;wBACP,mBAAmB;wBACnB,CAAC,EAAE,CAAC;wBACJ,CAAC,EAAE,KAAK;wBACR,mBAAmB;wBACnB,CAAC,EAAE,IAAI;wBACP,mBAAmB;wBACnB,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;wBACf,mBAAmB;wBACnB,CAAC,EAAE,IAAI;wBACP,mBAAmB;wBACnB,CAAC,EAAE,SAAS;wBACZ,mBAAmB;wBACnB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;qBACb;iBACF,CAAC,CAAC;gBAEH,IAAM,OAAO,GAAG,MAAC,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,OAA0B,0CAAE,OAAO,CAAC;gBACzE,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;oBAC5B,CAAC,EAAE,GAAG;oBACN,CAAC,EAAE,KAAK;oBACR,CAAC,EAAE,MAAM;oBACT,CAAC,EAAE,aAAa;oBAChB,CAAC,EAAE,MAAM;oBACT,CAAC,EAAE,WAAW;oBACd,CAAC,EAAE,SAAS;iBACb,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,KAAK;oBACzC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { initializeFaro } from '../../initialize';\nimport { mockConfig, MockTransport } from '../../testUtils';\nimport { TransportItemType } from '../../transports';\nimport type { API } from '../types';\n\nimport type { ExceptionEvent, ExceptionStackFrame, PushErrorOptions } from './types';\n\ndescribe('api.exceptions', () => {\n function createAPI({ dedupe }: { dedupe: boolean } = { dedupe: true }): [API, MockTransport] {\n const transport = new MockTransport();\n const config = mockConfig({\n dedupe,\n transports: [transport],\n });\n\n const { api } = initializeFaro(config);\n\n return [api, transport];\n }\n\n describe('pushError', () => {\n let api: API;\n let transport: MockTransport;\n\n beforeEach(() => {\n [api, transport] = createAPI();\n });\n\n it('error with overrides', () => {\n const frames: ExceptionStackFrame[] = [\n {\n filename: 'foo.js',\n function: 'FooFn',\n colno: 4,\n lineno: 23,\n },\n {\n filename: 'bar.js',\n function: 'BarFn',\n colno: 6,\n lineno: 52,\n },\n ];\n\n const additionalContext = {\n message: 'React error boundary',\n componentStackTrace: 'componentStackTrace',\n };\n\n api.pushError(new Error('test exception'), {\n stackFrames: frames,\n type: 'TestError',\n context: additionalContext,\n });\n\n expect(transport.items).toHaveLength(1);\n\n const payload = transport.items[0];\n expect(payload?.payload).toBeTruthy();\n expect(payload?.type).toEqual(TransportItemType.EXCEPTION);\n\n const evt = payload?.payload as ExceptionEvent;\n expect(evt.type).toEqual('TestError');\n expect(evt.value).toEqual('test exception');\n expect(evt.stacktrace).toEqual({ frames });\n expect(evt.context).toEqual(additionalContext);\n });\n\n it('error without overrides', () => {\n const err = new Error('test');\n api.pushError(err);\n expect(transport.items).toHaveLength(1);\n\n const payload = transport.items[0];\n expect(payload?.meta.app?.name).toEqual('test');\n expect(payload?.payload).toBeTruthy();\n expect(payload?.type).toEqual(TransportItemType.EXCEPTION);\n\n const evt = payload?.payload as ExceptionEvent;\n expect(evt.type).toEqual('Error');\n expect(evt.value).toEqual('test');\n expect(evt.timestamp).toBeTruthy();\n\n const stacktrace = evt.stacktrace;\n expect(stacktrace).toBeTruthy();\n expect(stacktrace?.frames.length).toBeGreaterThan(3);\n expect(stacktrace?.frames[0]?.filename).toEqual('Error: test');\n });\n\n describe('Filtering', () => {\n it('filters the same event', () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n });\n\n it(\"doesn't filter events with same message and different stacktrace\", () => {\n const error1 = new Error('test');\n const error2 = new Error('test');\n\n api.pushError(error1);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error2);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter events with other message and same stacktrace\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n error.message = 'test2';\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter events with same message and same stacktrace but different type\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n error.name = 'Another Type';\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"filters an event and doesn't filter the next different one\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n error.name = 'Another Type';\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter when dedupe is false\", () => {\n [api, transport] = createAPI({ dedupe: false });\n\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter when skipDedupe is true\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error, {\n skipDedupe: true,\n });\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter events with same message, same stacktrace, same type but different context\", () => {\n const error = new Error('test');\n\n api.pushError(error, { context: { foo: 'bar' } });\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error, { context: { bar: 'baz' } });\n expect(transport.items).toHaveLength(2);\n });\n\n it('uses traceId and spanId from custom context', () => {\n const spanContext: PushErrorOptions['spanContext'] = {\n traceId: 'my-trace-id',\n spanId: 'my-span-id',\n };\n\n const error = new Error('test');\n\n api.pushError(error, { spanContext });\n expect(transport.items).toHaveLength(1);\n expect((transport.items[0]?.payload as ExceptionEvent).trace).toStrictEqual({\n trace_id: 'my-trace-id',\n span_id: 'my-span-id',\n });\n });\n\n it('Sets the timestamp to the provided custom timestamp', () => {\n api.pushEvent('test', undefined, undefined, { timestampOverwriteMs: 123 });\n expect(transport.items).toHaveLength(1);\n expect((transport.items[0]?.payload as ExceptionEvent).timestamp).toBe('1970-01-01T00:00:00.123Z');\n });\n\n it('Adds error cause to error context', () => {\n // @ts-expect-error cause is missing in TS type Error\n const error = new Error('test', { cause: 'foo' });\n // @ts-expect-error cause is missing in TS type Error\n const error2 = new Error('test2', { cause: [1, 3] });\n // @ts-expect-error cause is missing in TS type Error\n const error3 = new Error('test3', { cause: { a: 'b' } });\n // @ts-expect-error cause is missing in TS type Error\n const error4 = new Error('test4', { cause: new Error('original error') });\n // @ts-expect-error cause is missing in TS type Error\n const error5 = new Error('test5', { cause: null });\n // @ts-expect-error cause is missing in TS type Error\n const error6 = new Error('test6', { cause: undefined });\n const error7 = new Error('test6');\n\n api.pushError(error);\n api.pushError(error2);\n api.pushError(error3);\n api.pushError(error4);\n api.pushError(error5);\n api.pushError(error6);\n api.pushError(error7);\n\n expect(transport.items).toHaveLength(7);\n\n expect((transport.items[0]?.payload as ExceptionEvent)?.context).toEqual({ cause: 'foo' });\n expect((transport.items[1]?.payload as ExceptionEvent)?.context).toEqual({ cause: '[1,3]' });\n expect((transport.items[2]?.payload as ExceptionEvent)?.context).toEqual({ cause: '{\"a\":\"b\"}' });\n expect((transport.items[3]?.payload as ExceptionEvent)?.context).toEqual({ cause: 'Error: original error' });\n expect((transport.items[4]?.payload as ExceptionEvent)?.context).toEqual({});\n expect((transport.items[5]?.payload as ExceptionEvent)?.context).toEqual({});\n expect((transport.items[5]?.payload as ExceptionEvent)?.context).toEqual({});\n });\n\n it('stringifies all values added to the context', () => {\n api.pushError(new Error('Error with context'), {\n context: {\n // @ts-expect-error\n a: 1,\n b: 'foo',\n // @ts-expect-error\n c: true,\n // @ts-expect-error\n d: { e: 'bar' },\n // @ts-expect-error\n g: null,\n // @ts-expect-error\n h: undefined,\n // @ts-expect-error\n i: [1, 2, 3],\n },\n });\n\n const context = (transport.items[0]?.payload as ExceptionEvent)?.context;\n expect(context).toStrictEqual({\n a: '1',\n b: 'foo',\n c: 'true',\n d: '{\"e\":\"bar\"}',\n g: 'null',\n h: 'undefined',\n i: '[1,2,3]',\n });\n\n Object.values(context ?? {}).forEach((value) => {\n expect(typeof value).toBe('string');\n });\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"initialize.test.js","sourceRoot":"","sources":["../../../../../../src/api/exceptions/initialize.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { initializeFaro } from '../../initialize';\nimport { mockConfig, MockTransport } from '../../testUtils';\nimport { TransportItemType } from '../../transports';\nimport type { API } from '../types';\n\nimport type { ExceptionEvent, ExceptionStackFrame, PushErrorOptions } from './types';\n\ndescribe('api.exceptions', () => {\n function createAPI({ dedupe }: { dedupe: boolean } = { dedupe: true }): [API, MockTransport] {\n const transport = new MockTransport();\n const config = mockConfig({\n dedupe,\n transports: [transport],\n });\n\n const { api } = initializeFaro(config);\n\n return [api, transport];\n }\n\n describe('pushError', () => {\n let api: API;\n let transport: MockTransport;\n\n beforeEach(() => {\n [api, transport] = createAPI();\n });\n\n it('error with overrides', () => {\n const frames: ExceptionStackFrame[] = [\n {\n filename: 'foo.js',\n function: 'FooFn',\n colno: 4,\n lineno: 23,\n },\n {\n filename: 'bar.js',\n function: 'BarFn',\n colno: 6,\n lineno: 52,\n },\n ];\n\n const additionalContext = {\n message: 'React error boundary',\n componentStackTrace: 'componentStackTrace',\n };\n\n api.pushError(new Error('test exception'), {\n stackFrames: frames,\n type: 'TestError',\n context: additionalContext,\n });\n\n expect(transport.items).toHaveLength(1);\n\n const payload = transport.items[0];\n expect(payload?.payload).toBeTruthy();\n expect(payload?.type).toEqual(TransportItemType.EXCEPTION);\n\n const evt = payload?.payload as ExceptionEvent;\n expect(evt.type).toEqual('TestError');\n expect(evt.value).toEqual('test exception');\n expect(evt.stacktrace).toEqual({ frames });\n expect(evt.context).toEqual(additionalContext);\n });\n\n it('error without overrides', () => {\n const err = new Error('test');\n api.pushError(err);\n expect(transport.items).toHaveLength(1);\n\n const payload = transport.items[0];\n expect(payload?.meta.app?.name).toEqual('test');\n expect(payload?.payload).toBeTruthy();\n expect(payload?.type).toEqual(TransportItemType.EXCEPTION);\n\n const evt = payload?.payload as ExceptionEvent;\n expect(evt.type).toEqual('Error');\n expect(evt.value).toEqual('test');\n expect(evt.timestamp).toBeTruthy();\n\n const stacktrace = evt.stacktrace;\n expect(stacktrace).toBeTruthy();\n expect(stacktrace?.frames.length).toBeGreaterThan(3);\n expect(stacktrace?.frames[0]?.filename).toEqual('Error: test');\n });\n\n describe('Filtering', () => {\n it('filters the same event', () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n });\n\n it(\"doesn't filter events with same message and different stacktrace\", () => {\n const error1 = new Error('test');\n const error2 = new Error('test');\n\n api.pushError(error1);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error2);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter events with other message and same stacktrace\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n error.message = 'test2';\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter events with same message and same stacktrace but different type\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n error.name = 'Another Type';\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"filters an event and doesn't filter the next different one\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n error.name = 'Another Type';\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter when dedupe is false\", () => {\n [api, transport] = createAPI({ dedupe: false });\n\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error);\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter when skipDedupe is true\", () => {\n const error = new Error('test');\n\n api.pushError(error);\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error, {\n skipDedupe: true,\n });\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter events with same message, same stacktrace, same type but different context\", () => {\n const error = new Error('test');\n\n api.pushError(error, { context: { foo: 'bar' } });\n expect(transport.items).toHaveLength(1);\n\n api.pushError(error, { context: { bar: 'baz' } });\n expect(transport.items).toHaveLength(2);\n });\n\n it('uses traceId and spanId from custom context', () => {\n const spanContext: PushErrorOptions['spanContext'] = {\n traceId: 'my-trace-id',\n spanId: 'my-span-id',\n };\n\n const error = new Error('test');\n\n api.pushError(error, { spanContext });\n expect(transport.items).toHaveLength(1);\n expect((transport.items[0]?.payload as ExceptionEvent).trace).toStrictEqual({\n trace_id: 'my-trace-id',\n span_id: 'my-span-id',\n });\n });\n\n it('Sets the timestamp to the provided custom timestamp', () => {\n api.pushEvent('test', undefined, undefined, { timestampOverwriteMs: 123 });\n expect(transport.items).toHaveLength(1);\n expect((transport.items[0]?.payload as ExceptionEvent).timestamp).toBe('1970-01-01T00:00:00.123Z');\n });\n\n it('Adds error cause to error context', () => {\n // @ts-expect-error cause is missing in TS type Error\n const error = new Error('test', { cause: 'foo' });\n // @ts-expect-error cause is missing in TS type Error\n const error2 = new Error('test2', { cause: [1, 3] });\n // @ts-expect-error cause is missing in TS type Error\n const error3 = new Error('test3', { cause: { a: 'b' } });\n // @ts-expect-error cause is missing in TS type Error\n const error4 = new Error('test4', { cause: new Error('original error') });\n // @ts-expect-error cause is missing in TS type Error\n const error5 = new Error('test5', { cause: null });\n // @ts-expect-error cause is missing in TS type Error\n const error6 = new Error('test6', { cause: undefined });\n const error7 = new Error('test6');\n\n api.pushError(error);\n api.pushError(error2);\n api.pushError(error3);\n api.pushError(error4);\n api.pushError(error5);\n api.pushError(error6);\n api.pushError(error7);\n\n expect(transport.items).toHaveLength(7);\n\n expect((transport.items[0]?.payload as ExceptionEvent)?.context).toEqual({ cause: 'foo' });\n expect((transport.items[1]?.payload as ExceptionEvent)?.context).toEqual({ cause: '[1,3]' });\n expect((transport.items[2]?.payload as ExceptionEvent)?.context).toEqual({ cause: '{\"a\":\"b\"}' });\n expect((transport.items[3]?.payload as ExceptionEvent)?.context).toEqual({ cause: 'Error: original error' });\n expect((transport.items[4]?.payload as ExceptionEvent)?.context).toEqual({});\n expect((transport.items[5]?.payload as ExceptionEvent)?.context).toEqual({});\n expect((transport.items[5]?.payload as ExceptionEvent)?.context).toEqual({});\n });\n\n it('stringifies all values added to the context', () => {\n api.pushError(new Error('Error with context'), {\n context: {\n // @ts-expect-error\n a: 1,\n b: 'foo',\n // @ts-expect-error\n c: true,\n // @ts-expect-error\n d: { e: 'bar' },\n // @ts-expect-error\n g: null,\n // @ts-expect-error\n h: undefined,\n // @ts-expect-error\n i: [1, 2, 3],\n },\n });\n\n const context = (transport.items[0]?.payload as ExceptionEvent)?.context;\n expect(context).toStrictEqual({\n a: '1',\n b: 'foo',\n c: 'true',\n d: '{\"e\":\"bar\"}',\n g: 'null',\n h: 'undefined',\n i: '[1,2,3]',\n });\n\n Object.values(context ?? {}).forEach((value) => {\n expect(typeof value).toBe('string');\n });\n });\n });\n\n describe('config.ignoreErrors', () => {\n it('will filter out errors by string or regex', () => {\n const transport = new MockTransport();\n\n const { api } = initializeFaro(\n mockConfig({\n transports: [transport],\n ignoreErrors: ['Error: ResizeObserver', /FetchError[:\\s\\w\\/]*pwc/, 'chrome-extension://mock-extension-id'],\n })\n );\n\n api.pushError(new Error('Error: ResizeObserver loop limit exceeded'));\n api.pushError(new Error('FetchError: 404 \\n Instantiating https://pwc.grafana.net/public/react-router-dom'));\n api.pushError(new Error('FetchError: 404 \\n Instantiating https://pwc.grafana.net/public/@emotion/css'));\n\n const typeErrorMsg = 'TypeError: _.viz is undefined';\n api.pushError(new Error(typeErrorMsg));\n\n const mockErrorWithStacktrace = new Error('Mock error for testing');\n mockErrorWithStacktrace.name = 'MockError';\n mockErrorWithStacktrace.stack = `MockError: Mock error for testing\n at mockFunction (chrome-extension://mock-extension-id/mock-file.js:10:15)\n at anotherFunction (chrome-extension://mock-extension-id/mock-file.js:20:5)\n at Object.<anonymous> (chrome-extension://mock-extension-id/mock-file.js:30:3)`;\n api.pushError(mockErrorWithStacktrace);\n\n expect(transport.items).toHaveLength(1);\n expect((transport.items[0]?.payload as ExceptionEvent).value).toEqual(typeErrorMsg);\n });\n });\n });\n});\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldIgnoreEvent = void 0;
|
|
4
|
+
var is_1 = require("../utils/is");
|
|
5
|
+
function shouldIgnoreEvent(patterns, msg) {
|
|
6
|
+
return patterns.some(function (pattern) {
|
|
7
|
+
return (0, is_1.isString)(pattern) ? msg.includes(pattern) : !!msg.match(pattern);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
exports.shouldIgnoreEvent = shouldIgnoreEvent;
|
|
11
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/api/utils.ts"],"names":[],"mappings":";;;AACA,kCAAuC;AAEvC,SAAgB,iBAAiB,CAAC,QAAkB,EAAE,GAAW;IAC/D,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAC,OAAO;QAC3B,OAAO,IAAA,aAAQ,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,8CAIC","sourcesContent":["import type { Patterns } from '../config/types';\nimport { isString } from '../utils/is';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var utils_1 = require("./utils");
|
|
4
|
+
describe('api/utils', function () {
|
|
5
|
+
it('should ignore event', function () {
|
|
6
|
+
var patterns = ['pattern1', 'pattern2'];
|
|
7
|
+
var msg = 'message pattern1';
|
|
8
|
+
var result = (0, utils_1.shouldIgnoreEvent)(patterns, msg);
|
|
9
|
+
expect(result).toBe(true);
|
|
10
|
+
patterns = ['pattern1', /foo/];
|
|
11
|
+
msg = 'This is a foo example';
|
|
12
|
+
result = (0, utils_1.shouldIgnoreEvent)(patterns, msg);
|
|
13
|
+
expect(result).toBe(true);
|
|
14
|
+
patterns = ['pattern1', /foo/];
|
|
15
|
+
msg = "This example doesn't match";
|
|
16
|
+
result = (0, utils_1.shouldIgnoreEvent)(patterns, msg);
|
|
17
|
+
expect(result).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../../src/api/utils.test.ts"],"names":[],"mappings":";;AAEA,iCAA4C;AAE5C,QAAQ,CAAC,WAAW,EAAE;IACpB,EAAE,CAAC,qBAAqB,EAAE;QACxB,IAAI,QAAQ,GAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,GAAG,GAAG,kBAAkB,CAAC;QAC7B,IAAI,MAAM,GAAG,IAAA,yBAAiB,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1B,QAAQ,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC/B,GAAG,GAAG,uBAAuB,CAAC;QAC9B,MAAM,GAAG,IAAA,yBAAiB,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1B,QAAQ,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC/B,GAAG,GAAG,4BAA4B,CAAC;QACnC,MAAM,GAAG,IAAA,yBAAiB,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import type { Patterns } from '..';\n\nimport { shouldIgnoreEvent } from './utils';\n\ndescribe('api/utils', () => {\n it('should ignore event', () => {\n let patterns: Patterns = ['pattern1', 'pattern2'];\n let msg = 'message pattern1';\n let result = shouldIgnoreEvent(patterns, msg);\n expect(result).toBe(true);\n\n patterns = ['pattern1', /foo/];\n msg = 'This is a foo example';\n result = shouldIgnoreEvent(patterns, msg);\n expect(result).toBe(true);\n\n patterns = ['pattern1', /foo/];\n msg = \"This example doesn't match\";\n result = shouldIgnoreEvent(patterns, msg);\n expect(result).toBe(false);\n });\n});\n"]}
|
|
@@ -9,29 +9,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
9
9
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.initializeTransports =
|
|
13
|
-
var utils_1 = require("../utils");
|
|
12
|
+
exports.initializeTransports = void 0;
|
|
14
13
|
var batchExecutor_1 = require("./batchExecutor");
|
|
15
|
-
var const_1 = require("./const");
|
|
16
|
-
function shouldIgnoreEvent(patterns, msg) {
|
|
17
|
-
return patterns.some(function (pattern) {
|
|
18
|
-
return (0, utils_1.isString)(pattern) ? msg.includes(pattern) : !!msg.match(pattern);
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
exports.shouldIgnoreEvent = shouldIgnoreEvent;
|
|
22
|
-
function createBeforeSendHookFromIgnorePatterns(patterns) {
|
|
23
|
-
return function (item) {
|
|
24
|
-
if (item.type === const_1.TransportItemType.EXCEPTION && item.payload) {
|
|
25
|
-
var evt = item.payload;
|
|
26
|
-
var msg = "".concat(evt.type, ": ").concat(evt.value);
|
|
27
|
-
if (shouldIgnoreEvent(patterns, msg)) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return item;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
exports.createBeforeSendHookFromIgnorePatterns = createBeforeSendHookFromIgnorePatterns;
|
|
35
14
|
function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
36
15
|
var _a;
|
|
37
16
|
internalLogger.debug('Initializing transports');
|
|
@@ -70,18 +49,6 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
70
49
|
}
|
|
71
50
|
});
|
|
72
51
|
};
|
|
73
|
-
var addIgnoreErrorsPatterns = function () {
|
|
74
|
-
var ignoreErrorsPatterns = [];
|
|
75
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
76
|
-
ignoreErrorsPatterns[_i] = arguments[_i];
|
|
77
|
-
}
|
|
78
|
-
internalLogger.debug('Adding ignoreErrorsPatterns\n', ignoreErrorsPatterns);
|
|
79
|
-
ignoreErrorsPatterns.forEach(function (ignoreErrorsPattern) {
|
|
80
|
-
if (ignoreErrorsPattern) {
|
|
81
|
-
beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
52
|
var applyBeforeSendHooks = function (items) {
|
|
86
53
|
var filteredItems = items;
|
|
87
54
|
for (var _i = 0, beforeSendHooks_1 = beforeSendHooks; _i < beforeSendHooks_1.length; _i++) {
|
|
@@ -191,7 +158,6 @@ function initializeTransports(unpatchedConsole, internalLogger, config, metas) {
|
|
|
191
158
|
return {
|
|
192
159
|
add: add,
|
|
193
160
|
addBeforeSendHooks: addBeforeSendHooks,
|
|
194
|
-
addIgnoreErrorsPatterns: addIgnoreErrorsPatterns,
|
|
195
161
|
getBeforeSendHooks: getBeforeSendHooks,
|
|
196
162
|
execute: execute,
|
|
197
163
|
isPaused: isPaused,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n // prevent all beforeSend hooks being executed twice if batching is enabled.\n if (config.batching?.enabled && transports.every((transport) => transport.isBatched())) {\n return;\n }\n\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (config.batching?.enabled) {\n batchExecutor?.addItem(item);\n }\n\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../src/transports/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransportItem } from '..';\nimport type { Config } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\nimport { BatchExecutor } from './batchExecutor';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n // prevent all beforeSend hooks being executed twice if batching is enabled.\n if (config.batching?.enabled && transports.every((transport) => transport.isBatched())) {\n return;\n }\n\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (config.batching?.enabled) {\n batchExecutor?.addItem(item);\n }\n\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n"]}
|
|
@@ -5,7 +5,6 @@ function registerInitialTransports(faro) {
|
|
|
5
5
|
var _a;
|
|
6
6
|
(_a = faro.transports).add.apply(_a, faro.config.transports);
|
|
7
7
|
faro.transports.addBeforeSendHooks(faro.config.beforeSend);
|
|
8
|
-
faro.transports.addIgnoreErrorsPatterns(faro.config.ignoreErrors);
|
|
9
8
|
}
|
|
10
9
|
exports.registerInitialTransports = registerInitialTransports;
|
|
11
10
|
//# sourceMappingURL=registerInitial.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../../../src/transports/registerInitial.ts"],"names":[],"mappings":";;;AAEA,SAAgB,yBAAyB,CAAC,IAAU;;IAClD,CAAA,KAAA,IAAI,CAAC,UAAU,CAAA,CAAC,GAAG,WAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IAC/C,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"registerInitial.js","sourceRoot":"","sources":["../../../../../src/transports/registerInitial.ts"],"names":[],"mappings":";;;AAEA,SAAgB,yBAAyB,CAAC,IAAU;;IAClD,CAAA,KAAA,IAAI,CAAC,UAAU,CAAA,CAAC,GAAG,WAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IAC/C,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC;AAHD,8DAGC","sourcesContent":["import type { Faro } from '../sdk';\n\nexport function registerInitialTransports(faro: Faro): void {\n faro.transports.add(...faro.config.transports);\n faro.transports.addBeforeSendHooks(faro.config.beforeSend);\n}\n"]}
|
|
@@ -67,22 +67,6 @@ var MockTransport = /** @class */ (function (_super) {
|
|
|
67
67
|
}(base_1.BaseTransport));
|
|
68
68
|
var sendMock = jest.spyOn(MockTransport.prototype, 'send');
|
|
69
69
|
describe('transports', function () {
|
|
70
|
-
describe('config.ignoreErrors', function () {
|
|
71
|
-
it('will filter out errors by string or regex', function () {
|
|
72
|
-
var _a;
|
|
73
|
-
var transport = new MockTransport();
|
|
74
|
-
var transports = (0, initialize_1.initializeFaro)((0, testUtils_1.mockConfig)({
|
|
75
|
-
transports: [transport],
|
|
76
|
-
ignoreErrors: ['Error: ResizeObserver', /FetchError[:\s\w\/]*pwc/],
|
|
77
|
-
})).transports;
|
|
78
|
-
transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));
|
|
79
|
-
transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));
|
|
80
|
-
transports.execute(makeExceptionTransportItem('FetchError', '404 \n Instantiating https://pwc.grafana.net/public/react-router-dom'));
|
|
81
|
-
transports.execute(makeExceptionTransportItem('FetchError', '404 \n Instantiating https://pwc.grafana.net/public/@emotion/css'));
|
|
82
|
-
expect(transport.sentItems).toHaveLength(1);
|
|
83
|
-
expect(((_a = transport.sentItems[0]) === null || _a === void 0 ? void 0 : _a.payload).type).toEqual('TypeError');
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
70
|
describe('config.beforeSend', function () {
|
|
87
71
|
it('will not send events that are rejected by beforeSend hook', function () {
|
|
88
72
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.test.js","sourceRoot":"","sources":["../../../../../src/transports/transports.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @jest-environment jsdom\n */\nimport type { ExceptionEvent } from '../api';\nimport { initializeFaro } from '../initialize';\nimport { mockConfig } from '../testUtils';\nimport { getCurrentTimestamp } from '../utils';\nimport { VERSION } from '../version';\n\nimport { BaseTransport } from './base';\nimport { TransportItemType } from './const';\nimport type { Transport, TransportItem } from './types';\n\nclass MockSingleTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(item: TransportItem): void | Promise<void> {\n this.sentItems.push(item);\n }\n}\n\nconst sendSingleMock = jest.spyOn(MockSingleTransport.prototype, 'send');\n\nclass MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-single-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(items: TransportItem[]): void | Promise<void> {\n this.sentItems.push(...items);\n }\n\n override isBatched(): boolean {\n return true;\n }\n}\n\nconst sendMock = jest.spyOn(MockTransport.prototype, 'send');\n\ndescribe('transports', () => {\n describe('config.ignoreErrors', () => {\n it('will filter out errors by string or regex', () => {\n const transport = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n ignoreErrors: ['Error: ResizeObserver', /FetchError[:\\s\\w\\/]*pwc/],\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));\n transports.execute(\n makeExceptionTransportItem(\n 'FetchError',\n '404 \\n Instantiating https://pwc.grafana.net/public/react-router-dom'\n )\n );\n transports.execute(\n makeExceptionTransportItem('FetchError', '404 \\n Instantiating https://pwc.grafana.net/public/@emotion/css')\n );\n expect(transport.sentItems).toHaveLength(1);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('TypeError');\n });\n });\n\n describe('config.beforeSend', () => {\n it('will not send events that are rejected by beforeSend hook', () => {\n const transport = new MockTransport();\n const hookedItems: TransportItem[] = [];\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n hookedItems.push(item);\n\n if (item.type === TransportItemType.EXCEPTION && (item.payload as ErrorEvent).type === 'TypeError') {\n return null;\n }\n\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));\n\n expect(transport.sentItems).toHaveLength(1);\n expect(hookedItems).toHaveLength(2);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('Error');\n });\n\n it('events can be modified by beforeSend hook', () => {\n const transport = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION) {\n return {\n ...item,\n payload: {\n ...item.payload,\n type: 'NewType',\n },\n };\n }\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport.sentItems).toHaveLength(1);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('NewType');\n });\n\n it('Only call beforeSentHooks once in batched mode.', () => {\n const transport = new MockTransport();\n\n const mockBeforeSend = jest.fn((item) => item);\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: mockBeforeSend,\n batching: {\n enabled: true,\n sendTimeout: 1,\n itemLimit: 1,\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(mockBeforeSend).toHaveBeenCalledTimes(1);\n });\n\n it('Call beforeSentHooks two times if in batched mode but with an existing transport which is not batched', () => {\n const transport = new MockTransport();\n\n const nonBachedTransport = new MockTransport();\n nonBachedTransport.isBatched = () => false;\n (nonBachedTransport.name as any) = 'non-batched-transport';\n\n const mockBeforeSend = jest.fn((item) => item);\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport, nonBachedTransport],\n beforeSend: mockBeforeSend,\n batching: {\n enabled: true,\n sendTimeout: 1,\n itemLimit: 1,\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(mockBeforeSend).toHaveBeenCalledTimes(2);\n });\n });\n\n describe('multiple transports of the same type', () => {\n const transport1 = new MockTransport();\n const transport2 = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport1, transport2],\n })\n );\n\n it('will all be added and receive events', () => {\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(1);\n });\n\n it('one of them can be removed by instance', () => {\n transports.remove(transport1);\n transports.execute(makeExceptionTransportItem('Error', 'Kaboom'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(2);\n });\n });\n\n describe('test batched transports and single item ones', () => {\n beforeAll(() => {\n jest.useFakeTimers();\n });\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('single item transports with batching enabled', () => {\n const transport = new MockSingleTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendSingleMock).toHaveBeenCalledTimes(2);\n expect(sendSingleMock.mock.calls).toEqual([[item1], [item2]]);\n });\n\n it('multiple item transports', () => {\n const transport = new MockTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendMock).toHaveBeenCalledWith([item1, item2]);\n });\n });\n});\n\nfunction makeExceptionTransportItem(type: string, value: string): TransportItem<ExceptionEvent> {\n return {\n type: TransportItemType.EXCEPTION,\n payload: {\n type,\n value,\n timestamp: getCurrentTimestamp(),\n stacktrace: {\n frames: [],\n },\n },\n meta: {},\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transports.test.js","sourceRoot":"","sources":["../../../../../src/transports/transports.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @jest-environment jsdom\n */\nimport type { ExceptionEvent } from '../api';\nimport { initializeFaro } from '../initialize';\nimport { mockConfig } from '../testUtils';\nimport { getCurrentTimestamp } from '../utils';\nimport { VERSION } from '../version';\n\nimport { BaseTransport } from './base';\nimport { TransportItemType } from './const';\nimport type { Transport, TransportItem } from './types';\n\nclass MockSingleTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(item: TransportItem): void | Promise<void> {\n this.sentItems.push(item);\n }\n}\n\nconst sendSingleMock = jest.spyOn(MockSingleTransport.prototype, 'send');\n\nclass MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-single-mock';\n readonly version = VERSION;\n\n sentItems: TransportItem[] = [];\n\n send(items: TransportItem[]): void | Promise<void> {\n this.sentItems.push(...items);\n }\n\n override isBatched(): boolean {\n return true;\n }\n}\n\nconst sendMock = jest.spyOn(MockTransport.prototype, 'send');\n\ndescribe('transports', () => {\n describe('config.beforeSend', () => {\n it('will not send events that are rejected by beforeSend hook', () => {\n const transport = new MockTransport();\n const hookedItems: TransportItem[] = [];\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n hookedItems.push(item);\n\n if (item.type === TransportItemType.EXCEPTION && (item.payload as ErrorEvent).type === 'TypeError') {\n return null;\n }\n\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n transports.execute(makeExceptionTransportItem('TypeError', '_.viz is undefined'));\n\n expect(transport.sentItems).toHaveLength(1);\n expect(hookedItems).toHaveLength(2);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('Error');\n });\n\n it('events can be modified by beforeSend hook', () => {\n const transport = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION) {\n return {\n ...item,\n payload: {\n ...item.payload,\n type: 'NewType',\n },\n };\n }\n return item;\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport.sentItems).toHaveLength(1);\n expect((transport.sentItems[0]?.payload as ErrorEvent).type).toEqual('NewType');\n });\n\n it('Only call beforeSentHooks once in batched mode.', () => {\n const transport = new MockTransport();\n\n const mockBeforeSend = jest.fn((item) => item);\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport],\n beforeSend: mockBeforeSend,\n batching: {\n enabled: true,\n sendTimeout: 1,\n itemLimit: 1,\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(mockBeforeSend).toHaveBeenCalledTimes(1);\n });\n\n it('Call beforeSentHooks two times if in batched mode but with an existing transport which is not batched', () => {\n const transport = new MockTransport();\n\n const nonBachedTransport = new MockTransport();\n nonBachedTransport.isBatched = () => false;\n (nonBachedTransport.name as any) = 'non-batched-transport';\n\n const mockBeforeSend = jest.fn((item) => item);\n\n const { transports } = initializeFaro(\n mockConfig({\n transports: [transport, nonBachedTransport],\n beforeSend: mockBeforeSend,\n batching: {\n enabled: true,\n sendTimeout: 1,\n itemLimit: 1,\n },\n })\n );\n\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(mockBeforeSend).toHaveBeenCalledTimes(2);\n });\n });\n\n describe('multiple transports of the same type', () => {\n const transport1 = new MockTransport();\n const transport2 = new MockTransport();\n\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport1, transport2],\n })\n );\n\n it('will all be added and receive events', () => {\n transports.execute(makeExceptionTransportItem('Error', 'ResizeObserver loop limit exceeded'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(1);\n });\n\n it('one of them can be removed by instance', () => {\n transports.remove(transport1);\n transports.execute(makeExceptionTransportItem('Error', 'Kaboom'));\n expect(transport1.sentItems).toHaveLength(1);\n expect(transport2.sentItems).toHaveLength(2);\n });\n });\n\n describe('test batched transports and single item ones', () => {\n beforeAll(() => {\n jest.useFakeTimers();\n });\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('single item transports with batching enabled', () => {\n const transport = new MockSingleTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendSingleMock).toHaveBeenCalledTimes(2);\n expect(sendSingleMock.mock.calls).toEqual([[item1], [item2]]);\n });\n\n it('multiple item transports', () => {\n const transport = new MockTransport();\n const { transports } = initializeFaro(\n mockConfig({\n isolate: true,\n instrumentations: [],\n transports: [transport],\n batching: {\n enabled: true,\n sendTimeout: 1,\n },\n })\n );\n\n const item1 = makeExceptionTransportItem('Error', 'Kaboom');\n const item2 = makeExceptionTransportItem('Error', 'Kaboom');\n\n transports.execute(item1);\n transports.execute(item2);\n jest.advanceTimersByTime(1);\n\n expect(sendMock).toHaveBeenCalledWith([item1, item2]);\n });\n });\n});\n\nfunction makeExceptionTransportItem(type: string, value: string): TransportItem<ExceptionEvent> {\n return {\n type: TransportItemType.EXCEPTION,\n payload: {\n type,\n value,\n timestamp: getCurrentTimestamp(),\n stacktrace: {\n frames: [],\n },\n },\n meta: {},\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type SendFn<P = APIEvent> = (items: Array<TransportItem<P>>) => void;\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(items: TransportItem | TransportItem[]): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n // returns wether the transport supports processing of a batches of items\n isBatched(): boolean;\n}\n\nexport type BodyKey = 'exceptions' | 'logs' | 'measurements' | 'traces' | 'events';\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type SendFn<P = APIEvent> = (items: Array<TransportItem<P>>) => void;\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(items: TransportItem | TransportItem[]): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n // returns wether the transport supports processing of a batches of items\n isBatched(): boolean;\n}\n\nexport type BodyKey = 'exceptions' | 'logs' | 'measurements' | 'traces' | 'events';\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n execute: (transportItem: TransportItem) => void;\n getBeforeSendHooks: () => BeforeSendHook[];\n isPaused: () => boolean;\n remove: (...transports: Transport[]) => void;\n removeBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n transports: Transport[];\n pause: () => void;\n unpause: () => void;\n}\n\nexport interface BatchExecutorOptions {\n readonly enabled?: boolean;\n // If no new signal arrives after \"batchSendTimeout\" ms, send the payload. If set to 0, timeout is disabled\n readonly sendTimeout?: number;\n // Buffer \"sendLimit\" is the number of signals before sending the payload\n readonly itemLimit?: number;\n readonly paused?: boolean;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.14.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.14.1';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -4,7 +4,7 @@ import type { Transport, TransportItem } from '../transports';
|
|
|
4
4
|
export declare class MockTransport extends BaseTransport implements Transport {
|
|
5
5
|
private ignoreURLs;
|
|
6
6
|
readonly name = "@grafana/transport-mock";
|
|
7
|
-
readonly version = "1.14.
|
|
7
|
+
readonly version = "1.14.1";
|
|
8
8
|
items: TransportItem[];
|
|
9
9
|
constructor(ignoreURLs?: Patterns);
|
|
10
10
|
send(items: TransportItem[]): void | Promise<void>;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import type { Config
|
|
1
|
+
import type { Config } from '../config';
|
|
2
2
|
import type { InternalLogger } from '../internalLogger';
|
|
3
3
|
import type { Metas } from '../metas';
|
|
4
4
|
import type { UnpatchedConsole } from '../unpatchedConsole';
|
|
5
|
-
import type {
|
|
6
|
-
export declare function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean;
|
|
7
|
-
export declare function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook;
|
|
5
|
+
import type { Transports } from './types';
|
|
8
6
|
export declare function initializeTransports(unpatchedConsole: UnpatchedConsole, internalLogger: InternalLogger, config: Config, metas: Metas): Transports;
|
|
@@ -28,7 +28,6 @@ export interface TransportBody {
|
|
|
28
28
|
export interface Transports {
|
|
29
29
|
add: (...transports: Transport[]) => void;
|
|
30
30
|
addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;
|
|
31
|
-
addIgnoreErrorsPatterns: (...ignoreErrorsPatterns: Array<Patterns | undefined>) => void;
|
|
32
31
|
execute: (transportItem: TransportItem) => void;
|
|
33
32
|
getBeforeSendHooks: () => BeforeSendHook[];
|
|
34
33
|
isPaused: () => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.14.
|
|
1
|
+
export declare const VERSION = "1.14.1";
|
|
@@ -4,7 +4,7 @@ import type { Transport, TransportItem } from '../transports';
|
|
|
4
4
|
export declare class MockTransport extends BaseTransport implements Transport {
|
|
5
5
|
private ignoreURLs;
|
|
6
6
|
readonly name = "@grafana/transport-mock";
|
|
7
|
-
readonly version = "1.14.
|
|
7
|
+
readonly version = "1.14.1";
|
|
8
8
|
items: TransportItem[];
|
|
9
9
|
constructor(ignoreURLs?: Patterns);
|
|
10
10
|
send(items: TransportItem[]): void | Promise<void>;
|