From 46ccd61911ca9af3ab5b01e6f29ca214236ba598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Sun, 1 Dec 2024 21:36:10 +0000 Subject: [PATCH] Standardize serializer exports --- README.md | 2 +- src/index.js | 12 ++++++------ test/src/index.test.js | 37 +++++++++++++++++-------------------- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 44af866..61ad9d9 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ Built-in serializer functions you may use in the `serializers` option. Serializes an `Error` object. -### datadogSerializer +### datadogError Serializes an `Error` object for the purpose of sending it to Datadog, adding a `kind` property based on the error class name. diff --git a/src/index.js b/src/index.js index 522f20d..c1b9f6b 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,7 @@ */ const { cloneDeep, cloneDeepWith, escapeRegExp, get, set } = require('lodash'); -const { serializeError } = require('serialize-error'); +const { serializeError: errorSerializer } = require('serialize-error'); const stringify = require('json-stringify-safe'); const traverse = require('traverse'); @@ -194,7 +194,7 @@ module.exports.anonymizer = ( * Default serializer for Datadog. */ -function datadogSerializer(error) { +function datadogErrorSerializer(error) { return { ...error, kind: error.name || 'Error' @@ -202,10 +202,10 @@ function datadogSerializer(error) { } /** - * Module exports `defaultSerializers`. + * Module exports `serializers`. */ -module.exports.defaultSerializers = { - datadogSerializer, - error: serializeError +module.exports.serializers = { + datadogError: datadogErrorSerializer, + error: errorSerializer }; diff --git a/test/src/index.test.js b/test/src/index.test.js index 6041ee2..e7bee2d 100644 --- a/test/src/index.test.js +++ b/test/src/index.test.js @@ -4,12 +4,8 @@ * Module dependencies. */ -const { - anonymizer, - defaultSerializers: { datadogSerializer } -} = require('src'); +const { anonymizer, serializers: builtinSerializers } = require('src'); const { generateObjectSample, generateObjectSamplePaths } = require('./benchmark/samples'); -const { serializeError } = require('serialize-error'); /** * Test `Anonymizer`. @@ -536,7 +532,7 @@ describe('Anonymizer', () => { const error = new Error('foobar'); const foobar = jest.fn(() => 'bii'); const foobiz = jest.fn(() => 'bzz'); - const fooerror = jest.fn(serializeError); + const fooerror = jest.fn(builtinSerializers.error); const whitelist = ['**']; const serializers = [ { path: 'bar.foo', serializer: foobiz }, @@ -596,7 +592,8 @@ describe('Anonymizer', () => { } const error = new ValidationError('foobar'); - const serializer = jest.fn(datadogSerializer); + + const serializer = jest.fn(builtinSerializers.datadogError); const serializers = [{ path: 'error', serializer }]; const whitelist = ['error.foo', 'error.kind', 'error.message', 'error.name', 'error.stack']; const anonymize = anonymizer({ whitelist }, { serializers }); @@ -631,7 +628,7 @@ describe('Anonymizer', () => { } const error = new ErrorTwo('foobar'); - const serializer = jest.fn(datadogSerializer); + const serializer = jest.fn(builtinSerializers.datadogError); const serializers = [{ path: 'error', serializer }]; const whitelist = ['error.foo', 'error.kind', 'error.message', 'error.name', 'error.stack']; const anonymize = anonymizer({ whitelist }, { serializers }); @@ -659,7 +656,7 @@ describe('Anonymizer', () => { const error = new ValidationError('foobar'); const serializer = jest.fn(value => { - const serialized = datadogSerializer(value); + const serialized = builtinSerializers.datadogError(value); value.foo.for = 'bar'; @@ -693,7 +690,7 @@ describe('Anonymizer', () => { const error = new ValidationError('foobar'); const serializer = jest.fn(value => { - const serialized = datadogSerializer(value); + const serialized = builtinSerializers.datadogError(value); value.foo.for.bar.foo = 'bar'; @@ -737,10 +734,10 @@ describe('Anonymizer', () => { expect(serializer).toHaveBeenCalledTimes(2); }); - describe('defaultSerializers', () => { - it('should serialize errors when `serializeError()` is applied', () => { + describe('built-in', () => { + it('should serialize errors when `builtinSerializers.error()` is applied', () => { const error = new Error('foobar'); - const serializer = jest.fn(serializeError); + const serializer = jest.fn(builtinSerializers.error); const serializers = [ { path: 'e', serializer }, { path: 'err', serializer }, @@ -777,9 +774,9 @@ describe('Anonymizer', () => { expect(result.foo).toEqual('bar'); }); - it('should serialize errors when `datadogSerializer()` is applied', () => { + it('should serialize errors when `builtinSerializers.datadogError()` is applied', () => { const error = new Error('foobar'); - const serializer = jest.fn(datadogSerializer); + const serializer = jest.fn(builtinSerializers.datadogError); const serializers = [ { path: 'err', serializer }, { path: 'error', serializer } @@ -877,7 +874,7 @@ describe('Anonymizer', () => { it('should run a sample with `32768` properties in less than `150` ms', () => { const depth = 10; const data = generateObjectSample({ depth }); - const anonymize = anonymizer({ blacklist: ['*'] }); + const anonymize = anonymizer({}); const startTime = process.hrtime(); anonymize(data); @@ -893,7 +890,7 @@ describe('Anonymizer', () => { const data = generateObjectSample({ depth }); const serializer = jest.fn(() => 'bii'); const serializers = generateObjectSamplePaths({ depth }).map(path => ({ path, serializer })); - const anonymize = anonymizer({ blacklist: ['*'] }, { serializers }); + const anonymize = anonymizer({}, { serializers }); const startTime = process.hrtime(); anonymize(data); @@ -905,12 +902,12 @@ describe('Anonymizer', () => { expect(serializer).toHaveBeenCalledTimes(32768); }); - it('should call `serializeError` in all `32768` properties in less than `175` ms', () => { + it('should call `builtinSerializers.error` in all `32768` properties in less than `175` ms', () => { const depth = 10; const data = generateObjectSample({ depth, leafValue: () => new Error('foobar') }); - const serializer = jest.fn(serializeError); + const serializer = jest.fn(builtinSerializers.error); const serializers = generateObjectSamplePaths({ depth }).map(path => ({ path, serializer })); - const anonymize = anonymizer({ blacklist: ['*'] }, { serializers }); + const anonymize = anonymizer({}, { serializers }); const startTime = process.hrtime(); anonymize(data);