From 0a1988a38761b1ae41e32babaa476b12a31e97c0 Mon Sep 17 00:00:00 2001 From: Marta Ottone Date: Fri, 10 Jun 2022 12:45:10 +0200 Subject: [PATCH] feat: replace pino with lambda-log --- .gitignore | 3 + package.json | 5 +- src/Logger/LogStore.ts | 17 +++- src/Logger/Logger.ts | 24 +++--- src/__test__/LogStore.test.ts | 40 ++++----- src/index.ts | 23 ++---- yarn.lock | 150 +++++----------------------------- 7 files changed, 82 insertions(+), 180 deletions(-) diff --git a/.gitignore b/.gitignore index 6704566..8009eb7 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,6 @@ dist # TernJS port file .tern-port + +# IDE +.vscode diff --git a/package.json b/package.json index 594e818..df4bb37 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,15 @@ "dependencies": { "@aws-sdk/client-eventbridge": "^3.47.0", "@sentry/serverless": "^6.13.3", + "@types/lambda-log": "^2.2.1", "aws-sdk": "^2.1048.0", "aws-xray-sdk": "^3.3.3", "cross-fetch": "^3.1.4", "fp-ts": "^2.11.5", "graphql": "15.7.0", "io-ts": "^2.2.16", - "mysql": "^2.18.1", - "pino": "^7.10.0" + "lambda-log": "^3.1.0", + "mysql": "^2.18.1" }, "peerDependencies": { "fp-ts": "^2.11.5", diff --git a/src/Logger/LogStore.ts b/src/Logger/LogStore.ts index b07447f..82308e8 100644 --- a/src/Logger/LogStore.ts +++ b/src/Logger/LogStore.ts @@ -23,16 +23,27 @@ export class LogStore { return `${this.logs.length}/${this.capacity}` } - public appendLog = (l: Log) => { + public appendLog = (l: Log, level = 'debug') => { if (this.logs.length >= this.capacity) { this.logger.warn( - `MAXIMUM LOG STORE CAPACITY EXEEDED (${this.capacity} logs)` + `MAXIMUM LOG STORE CAPACITY EXCEEDED (${this.capacity} logs)` ) return } if (this.areLogEnabled()) { - this.logger.debug(l[0], l[1]) + switch (level) { + case 'info': + this.logger.info(l[0], l[1]) + case 'error': + this.logger.warn(l[0], l[1]) + case 'error': + this.logger.error(l[0], l[1]) + case 'debug': + this.logger.debug(l[0], l[1]) + default: + this.logger.info(l[0], l[1]) + } } this.logs.push(l) diff --git a/src/Logger/Logger.ts b/src/Logger/Logger.ts index 9ead40f..2df9b24 100644 --- a/src/Logger/Logger.ts +++ b/src/Logger/Logger.ts @@ -1,25 +1,27 @@ -import pino from 'pino' +import * as logger from 'lambda-log' export type Log = [message: string, mergingObject?: Record] -interface LoggerOptions { - name: string +export interface LoggerOptions { + level: LogLevel } +export type LogLevel = 'info' | 'warn' | 'error' | 'debug' | 'silent' + export interface Logger { debug(...args: Log): void - warn(msg: string): void - info(msg: string): void + warn(...args: Log): void + error(...args: Log): void + info(...args: Log): void } -export const getPinoLogger = ({ name }: LoggerOptions): Logger => { - const logger = pino({ name, level: 'debug' }) - +export const getLogger = (): Logger => { return { debug: (...args: Log) => { - logger.debug(args[1], args[0]) + logger.debug(args[0], args[1]) }, - warn: (msg: string) => logger.warn(msg), - info: (msg: string) => logger.info(msg), + warn: (...args: Log) => logger.warn(args[0], args[1]), + error: (...args: Log) => logger.error(args[0], args[1]), + info: (...args: Log) => logger.info(args[0], args[1]), } } diff --git a/src/__test__/LogStore.test.ts b/src/__test__/LogStore.test.ts index 09b9082..2a04e60 100644 --- a/src/__test__/LogStore.test.ts +++ b/src/__test__/LogStore.test.ts @@ -1,34 +1,34 @@ -import { getPinoLogger } from '../Logger/Logger' +import { getLogger } from '../Logger/Logger' import { LogStore } from '../Logger/LogStore' -describe.only('LogStore', () => { +describe('LogStore', () => { it('when logging and logs are enabled, it prints the log', async () => { - const logger = getPinoLogger({ name: 'TEST' }) - const pinoDebugSpy = jest.spyOn(logger, 'debug') + const logger = getLogger() + const loggerDebugSpy = jest.spyOn(logger, 'debug') const logStore = new LogStore(logger, Infinity, () => true) logStore.appendLog(['foo baz bar', { foo: 1, baz: ['bar'] }]) - expect(pinoDebugSpy).toHaveBeenCalledWith('foo baz bar', { + expect(loggerDebugSpy).toHaveBeenCalledWith('foo baz bar', { baz: ['bar'], foo: 1, }) }) it('when logging and logs are not enabled, it does not print the log', async () => { - const logger = getPinoLogger({ name: 'TEST' }) - const pinoDebugSpy = jest.spyOn(logger, 'debug') + const logger = getLogger() + const loggerDebugSpy = jest.spyOn(logger, 'debug') const logStore = new LogStore(logger, Infinity, () => false) logStore.appendLog(['foo baz bar', { foo: 1, baz: ['bar'] }]) - expect(pinoDebugSpy).toHaveBeenCalledTimes(0) + expect(loggerDebugSpy).toHaveBeenCalledTimes(0) }) it('when logging and maximum capacity is reached, it prints a warning', async () => { - const logger = getPinoLogger({ name: 'TEST' }) + const logger = getLogger() const pinoWarnSpy = jest.spyOn(logger, 'warn') const logStore = new LogStore(logger, 3, () => false) @@ -44,8 +44,8 @@ describe.only('LogStore', () => { }) it('when resetting the store and logs are not enabled, it prints the log', async () => { - const logger = getPinoLogger({ name: 'TEST' }) - const pinoDebugSpy = jest.spyOn(logger, 'debug') + const logger = getLogger() + const loggerDebugSpy = jest.spyOn(logger, 'debug') const logStore = new LogStore(logger, 3, () => false) @@ -53,7 +53,7 @@ describe.only('LogStore', () => { logStore.appendLog(['foobazbar']) logStore.reset() - expect(pinoDebugSpy.mock.calls).toEqual([ + expect(loggerDebugSpy.mock.calls).toEqual([ [ 'foo baz bar', { @@ -66,8 +66,8 @@ describe.only('LogStore', () => { }) it('when resetting the store and logs are enabled, it does not print the log', async () => { - const logger = getPinoLogger({ name: 'TEST' }) - const pinoDebugSpy = jest.spyOn(logger, 'debug') + const logger = getLogger() + const loggerDebugSpy = jest.spyOn(logger, 'debug') const logStore = new LogStore(logger, 3, () => true) @@ -75,11 +75,11 @@ describe.only('LogStore', () => { logStore.appendLog(['foobazbar']) logStore.reset() - expect(pinoDebugSpy).toHaveBeenCalledTimes(2) + expect(loggerDebugSpy).toHaveBeenCalledTimes(2) }) it('when resetting the store, the logs store is cleared', async () => { - const logger = getPinoLogger({ name: 'TEST' }) + const logger = getLogger() const logStore = new LogStore(logger, 3, () => true) logStore.appendLog(['foo baz bar', { foo: 1, baz: ['bar'] }]) @@ -93,12 +93,14 @@ describe.only('LogStore', () => { }) it('pass message and merging object to logger.debug when logs are enabled', async () => { - const logger = getPinoLogger({ name: 'TEST' }) - const pinoDebugSpy = jest.spyOn(logger, 'debug') + const logger = getLogger() + const loggerDebugSpy = jest.spyOn(logger, 'debug') const logStore = new LogStore(logger, Infinity, () => true) logStore.appendLog(['LogMessageName', { foo: 'bar' }]) - expect(pinoDebugSpy).toHaveBeenCalledWith('LogMessageName', { foo: 'bar' }) + expect(loggerDebugSpy).toHaveBeenCalledWith('LogMessageName', { + foo: 'bar', + }) }) }) diff --git a/src/index.ts b/src/index.ts index 83ae475..98d4a9a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,7 +15,7 @@ import { traverseWithIndex } from 'fp-ts/lib/Record' import { DateFromISOString } from './codecs/DateFromISOString' import { decodeOrThrow } from './codecs/utils' import { LogStore } from './Logger/LogStore' -import { getPinoLogger } from './Logger/Logger' +import { getLogger } from './Logger/Logger' type SchemaRecord = Record> type EventLambdaConfig = { @@ -93,10 +93,7 @@ export const _eventLambda = }) => taskEither.TaskEither ) => { return wrapperFunc((event: EventBridgeEvent) => { - const logStore = new LogStore( - getPinoLogger({ name: 'framework-node' }), - 500 - ) + const logStore = new LogStore(getLogger(), 500) logStore.appendLog(['parsing event: ', { event: event.detail }]) @@ -142,7 +139,7 @@ export const _eventLambda = } logStore.appendLog([ - 'handler succeded with payload: ', + 'handler succeeded with payload: ', { success: result.right }, ]) logStore.reset() @@ -176,10 +173,7 @@ export const _httpLambda = }) => taskEither.TaskEither ) => { return wrapperFunc((event: APIGatewayProxyEvent) => { - const logStore = new LogStore( - getPinoLogger({ name: 'framework-node' }), - 500 - ) + const logStore = new LogStore(getLogger(), 500) logStore.appendLog(['parsing body: ', { body: config.body }]) const parsedBody = pipe( @@ -228,7 +222,7 @@ export const _httpLambda = } logStore.appendLog([ - 'handler succeded with payload: ', + 'handler succeeded with payload: ', { success: result.right }, ]) logStore.reset() @@ -260,10 +254,7 @@ export const _appSyncLambda = }) => taskEither.TaskEither ) => { return wrapperFunc((event: AppSyncResolverEvent) => { - const logStore = new LogStore( - getPinoLogger({ name: 'framework-node' }), - 500 - ) + const logStore = new LogStore(getLogger(), 500) logStore.appendLog(['parsing args: ', { args: config.args }]) const parsedArgs = pipe( @@ -304,7 +295,7 @@ export const _appSyncLambda = } logStore.appendLog([ - 'handler succeded with payload: ', + 'handler succeeded with payload: ', { success: result.right }, ]) logStore.reset() diff --git a/yarn.lock b/yarn.lock index 8cfbe26..e41e6e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1327,6 +1327,13 @@ jest-diff "^27.0.0" pretty-format "^27.0.0" +"@types/lambda-log@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@types/lambda-log/-/lambda-log-2.2.1.tgz#e755876162c76d92e195be89b01ac5da56558a1f" + integrity sha512-+EEBg+jwPTjqRlnNRAUr2zP3HA7Vq75hSChjDpQ/wJCAGmTZQ7ZfG0m3eR4bvVmDY/z005iIkcnOBVpwkWgXgA== + dependencies: + "@types/node" "*" + "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -1514,11 +1521,6 @@ atomic-batcher@^1.0.2: resolved "https://registry.yarnpkg.com/atomic-batcher/-/atomic-batcher-1.0.2.tgz#d16901d10ccec59516c197b9ccd8930689b813b4" integrity sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q= -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - aws-sdk@^2.1048.0: version "2.1048.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1048.0.tgz#02f2f35e0f51dd4510462e05c7a48fd4649d33f8" @@ -1986,16 +1988,6 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -duplexify@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.0" - eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -2028,13 +2020,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - entities@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -2129,10 +2114,10 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-redact@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.1.tgz#790fcff8f808c2e12fabbfb2be5cb2deda448fa0" - integrity sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A== +fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-xml-parser@3.19.0: version "3.19.0" @@ -2341,7 +2326,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2951,6 +2936,13 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +lambda-log@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lambda-log/-/lambda-log-3.1.0.tgz#dd5833dc24b2eaf665769fc801674c1b421d940e" + integrity sha512-dfkFw+e0CoFftuOjxkufhi1srIpa4dM3sbbe+0KtfjX11auNl7Kok+5/+07IffjXUuspKAFeiHlHUPAHJzcL3A== + dependencies: + fast-safe-stringify "^2.1.1" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -3173,12 +3165,7 @@ object-inspect@^1.12.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== -on-exit-leak-free@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" - integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== - -once@^1.3.0, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -3291,36 +3278,6 @@ pidtree@^0.5.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== -pino-abstract-transport@v0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" - integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== - dependencies: - duplexify "^4.1.2" - split2 "^4.0.0" - -pino-std-serializers@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" - integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== - -pino@^7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-7.10.0.tgz#c621a3acf3b7aa50a6156c1b3989d1703666b2b1" - integrity sha512-T6R92jy/APDElEuOk0gqa4nds3ZgqFbHde2X0g8XorlyPlVGlr9T5KQphtp72a3ByKOdZMg/gM/0IprpGQfTWg== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.0.0" - on-exit-leak-free "^0.2.0" - pino-abstract-transport v0.5.0 - pino-std-serializers "^4.0.0" - process-warning "^1.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.1.0" - safe-stable-stringify "^2.1.0" - sonic-boom "^2.2.1" - thread-stream "^0.15.1" - pirates@^4.0.1: version "4.0.4" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" @@ -3380,11 +3337,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-warning@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" - integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -3413,11 +3365,6 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -quick-format-unescaped@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== - react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -3436,20 +3383,6 @@ readable-stream@2.3.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -real-require@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" - integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3512,16 +3445,6 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-stable-stringify@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" - integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== - "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3619,13 +3542,6 @@ slice-ansi@^5.0.0: ansi-styles "^6.0.0" is-fullwidth-code-point "^4.0.0" -sonic-boom@^2.2.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.7.0.tgz#55c9390cc123ae4e42c044e822eb7e7246b01c9c" - integrity sha512-Ynxp0OGQG91wvDjCbFlRMHbSUmDq7dE/EgDeUJ/j+Q9x1FVkFry20cjLykxRSmlm3QS0B4JYAKE8239XKN4SHQ== - dependencies: - atomic-sleep "^1.0.0" - source-map-support@^0.5.6: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -3649,11 +3565,6 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -split2@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" - integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3676,11 +3587,6 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - string-argv@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -3712,13 +3618,6 @@ string-width@^5.0.0: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -3806,13 +3705,6 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -thread-stream@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.1.tgz#5aba24a35aa5e9e4eb66173826443d7167b34b07" - integrity sha512-SCnuIT27gc2h/F/RY2peuC7brgLy+1oXU+7yOIAITz1z5stDpXCF5rAoFcykjuK6ifbTlKAHL7Ccq8oc5Btv1w== - dependencies: - real-require "^0.1.0" - throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -3927,7 +3819,7 @@ url@0.10.3: punycode "1.3.2" querystring "0.2.0" -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=