From b9ac8a1709e1e001ca6e0fc914305eb8a1057c62 Mon Sep 17 00:00:00 2001 From: Daryl Ronningen Date: Fri, 18 Jun 2021 02:26:50 -0700 Subject: [PATCH] test((logging)): added basic logger testing --- .husky/pre-commit | 3 +- .nycrc.json | 4 +- package.json | 10 +- src/index.ts | 4 +- src/{ => lib}/utils/logger.ts | 35 ++++--- src/{ => lib}/utils/types.ts | 0 tests/placeholder.test.ts | 23 ----- tests/utils/logger.test.ts | 147 ++++++++++++++++++++++++++ yarn.lock | 187 ++++++++++++++++++++++++---------- 9 files changed, 309 insertions(+), 104 deletions(-) rename src/{ => lib}/utils/logger.ts (57%) rename src/{ => lib}/utils/types.ts (100%) delete mode 100644 tests/placeholder.test.ts create mode 100644 tests/utils/logger.test.ts diff --git a/.husky/pre-commit b/.husky/pre-commit index 59d409c..dc0378c 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -yarn lint-staged -yarn test \ No newline at end of file +yarn lint-staged \ No newline at end of file diff --git a/.nycrc.json b/.nycrc.json index f33aaae..d8168b5 100644 --- a/.nycrc.json +++ b/.nycrc.json @@ -2,6 +2,6 @@ "extends": "@istanbuljs/nyc-config-typescript", "all": true, "check-coverage": true, - "include": ["src/**/*.ts"], - "reporter": ["html"] + "include": ["src/lib/**/*.ts"], + "reporter": ["html", "text"] } \ No newline at end of file diff --git a/package.json b/package.json index 8293c2c..6f98807 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@discordjs/voice": "^0.5.0", "bufferutil": "^4.0.3", "chalk": "^4.1.1", - "color-convert": "^2.0.1", + "config": "^3.3.6", "discord.js": "^13.0.0-dev.a3cbcca13da1af416c219bd64a0a6e84bb87a057", "erlpack": "^0.1.3", "ffmpeg-static": "^4.3.0", @@ -45,9 +45,9 @@ "gradient-string": "^1.2.0", "jsonschema": "^1.4.0", "luxon": "^1.27.0", + "module-alias": "^2.2.2", "node-gyp": "^8.1.0", "sodium": "^3.0.2", - "supports-color": "^9.0.1", "terminal-link": "^3.0.0", "tslib": "^2.3.0", "utf-8-validate": "^5.0.5", @@ -62,15 +62,15 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-typescript": "^8.2.1", "@types/chai": "^4.2.18", - "@types/color-convert": "^2", "@types/eslint": "^7.2.13", "@types/figlet": "^1.5.1", "@types/gradient-string": "^1", "@types/luxon": "^1", "@types/mocha": "^8.2.2", + "@types/module-alias": "^2", "@types/node": "^15.12.2", "@types/rimraf": "^3", - "@types/std-mocks": "^1", + "@types/sinon": "^10.0.2", "@types/yargs": "^17", "@typescript-eslint/eslint-plugin": "^4.27.0", "@typescript-eslint/parser": "^4.27.0", @@ -88,8 +88,8 @@ "rimraf": "^3.0.2", "rollup": "^2.52.0", "rollup-plugin-terser": "^7.0.2", + "sinon": "^11.1.1", "standard-version": "^9.3.0", - "std-mocks": "^1.0.1", "ts-node": "^10.0.0", "typescript": "^4.3.3", "typescript-eslint-language-service": "^4.1.4" diff --git a/src/index.ts b/src/index.ts index 17ce9b5..8ebc103 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,8 +17,8 @@ import { Client } from 'discord.js'; import figlet from 'figlet'; import gradient from 'gradient-string'; -import { debug, error, info } from './utils/logger'; -import { ELoggingScope } from './utils/types'; +import { debug, error, info } from './lib/utils/logger'; +import { ELoggingScope } from './lib/utils/types'; //import { token } from '../config.json'; debug('Starting bot... Please wait!', ELoggingScope.Startup); diff --git a/src/utils/logger.ts b/src/lib/utils/logger.ts similarity index 57% rename from src/utils/logger.ts rename to src/lib/utils/logger.ts index 59087e3..213dd99 100644 --- a/src/utils/logger.ts +++ b/src/lib/utils/logger.ts @@ -16,12 +16,11 @@ */ import chalk from 'chalk'; import { DateTime } from 'luxon'; -import { loglevel } from '../../config.json'; +import { loglevel } from '../../../config.json'; import type { ELoggingScope } from './types'; -const logger = new chalk.Instance({ level: 3 }); -const date = DateTime.now().toLocal().setLocale(Intl.DateTimeFormat().resolvedOptions().locale).toFormat('yyyy-LL-dd HH:mm:ss'); +chalk.Level = 3; let verboseLevel = false; let debugLevel = false; @@ -69,73 +68,79 @@ switch (loglevel.toLowerCase()) { } export function verbose(message: string, scope?: ELoggingScope): void { + const date = DateTime.now().toLocal().setLocale(Intl.DateTimeFormat().resolvedOptions().locale).toFormat('yyyy-LL-dd HH:mm:ss'); const splitMultiline = message.split('\n'); splitMultiline.forEach((val) => { if (verboseLevel) if (scope) - console.log(logger`{grey (${date})} {magenta.bold ${scope}} {white.bold [VERBOSE]}: {white ${val}}`); + console.log(chalk`{grey (${date})} {magenta.bold ${scope}} {white.bold [VERBOSE]}: {white ${val}}`); else - console.log(logger`{grey (${date})} {white.bold [VERBOSE]}: {white ${val}}`); + console.log(chalk`{grey (${date})} {white.bold [VERBOSE]}: {white ${val}}`); }); } export function debug(message: string, scope?: ELoggingScope): void { + const date = DateTime.now().toLocal().setLocale(Intl.DateTimeFormat().resolvedOptions().locale).toFormat('yyyy-LL-dd HH:mm:ss'); const splitMultiline = message.split('\n'); splitMultiline.forEach((val) => { if (debugLevel) if (scope) - console.log(logger`{grey (${date})} {magenta.bold ${scope}} {blue.bold [DEBUG]}: {blue ${val}}`); + console.log(chalk`{grey (${date})} {magenta.bold ${scope}} {blue.bold [DEBUG]}: {blue ${val}}`); else - console.log(logger`{grey (${date})} {blue.bold [DEBUG]}: {blue ${val}}`); + console.log(chalk`{grey (${date})} {blue.bold [DEBUG]}: {blue ${val}}`); }); } export function info(message: string, scope?: ELoggingScope): void { + const date = DateTime.now().toLocal().setLocale(Intl.DateTimeFormat().resolvedOptions().locale).toFormat('yyyy-LL-dd HH:mm:ss'); const splitMultiline = message.split('\n'); splitMultiline.forEach((val) => { if (infoLevel) if(scope) - console.log(logger`{grey (${date})} {magenta.bold ${scope}} {green.bold [INFO]}: {green ${val}}`); + console.log(chalk`{grey (${date})} {magenta.bold ${scope}} {green.bold [INFO]}: {green ${val}}`); else - console.log(logger`{grey (${date})} {green.bold [INFO]}: {green ${val}}`); + console.log(chalk`{grey (${date})} {green.bold [INFO]}: {green ${val}}`); }); } export function warn(message: string, scope?: ELoggingScope): void { + const date = DateTime.now().toLocal().setLocale(Intl.DateTimeFormat().resolvedOptions().locale).toFormat('yyyy-LL-dd HH:mm:ss'); const splitMultiline = message.split('\n'); splitMultiline.forEach((val) => { if (warnLevel) if (scope) - console.log(logger`{grey (${date})} {magenta.bold ${scope}} {yellow.bold [WARN]}: {yellow ${val}}`); + console.log(chalk`{grey (${date})} {magenta.bold ${scope}} {yellow.bold [WARN]}: {yellow ${val}}`); else - console.log(logger`{grey (${date})} {yellow.bold [WARN]}: {yellow ${val}}`); + console.log(chalk`{grey (${date})} {yellow.bold [WARN]}: {yellow ${val}}`); }); } export function error(message: string, scope?: ELoggingScope): void { + const date = DateTime.now().toLocal().setLocale(Intl.DateTimeFormat().resolvedOptions().locale).toFormat('yyyy-LL-dd HH:mm:ss'); const splitMultiline = message.split('\n'); splitMultiline.forEach((val) => { if (errorLevel) if (scope) - console.log(logger`{grey (${date})} {magenta.bold ${scope}} {bold.underline.rgb(255, 165, 0) [ERROR]}: {underline.rgb(255, 165, 0) ${val}}`); + console.log(chalk`{grey (${date})} {magenta.bold ${scope}} {bold.underline.rgb(255, 165, 0) [ERROR]}: {underline.rgb(255, 165, 0) ${val}}`); else - console.log(logger`{grey (${date})} {bold.underline.rgb(255, 165, 0) [ERROR]}: {underline.rgb(255, 165, 0) ${val}}`); + console.log(chalk`{grey (${date})} {bold.underline.rgb(255, 165, 0) [ERROR]}: {underline.rgb(255, 165, 0) ${val}}`); }); } export function fatal(message: string, scope?: ELoggingScope): void { + const date = DateTime.now().toLocal().setLocale(Intl.DateTimeFormat().resolvedOptions().locale).toFormat('yyyy-LL-dd HH:mm:ss'); const splitMultiline = message.split('\n'); splitMultiline.forEach((val) => { if (fatalLevel) if (scope) - console.log(logger`{grey (${date})} {magenta.bold ${scope}} {red.bold.underline [FATAL]}: {red.underline ${val}}`); + console.log(chalk`{grey (${date})} {magenta.bold ${scope}} {red.bold.underline [FATAL]}: {red.underline ${val}}`); else - console.log(logger`{grey (${date})} {red.bold.underline [FATAL]}: {red.underline ${val}}`); + console.log(chalk`{grey (${date})} {red.bold.underline [FATAL]}: {red.underline ${val}}`); }); } diff --git a/src/utils/types.ts b/src/lib/utils/types.ts similarity index 100% rename from src/utils/types.ts rename to src/lib/utils/types.ts diff --git a/tests/placeholder.test.ts b/tests/placeholder.test.ts deleted file mode 100644 index 5da8d0f..0000000 --- a/tests/placeholder.test.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of ArgonBot - * - * ArgonBot is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * ArgonBot is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with ArgonBot. If not, see . - */ -import { describe, it } from 'mocha'; - -describe('placeholder', () => { - it('placeholder', () => { - return true; - }); -}); diff --git a/tests/utils/logger.test.ts b/tests/utils/logger.test.ts new file mode 100644 index 0000000..eb93b2b --- /dev/null +++ b/tests/utils/logger.test.ts @@ -0,0 +1,147 @@ +/* + * This file is part of ArgonBot + * + * ArgonBot is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ArgonBot is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ArgonBot. If not, see . + */ +import { describe, it, beforeEach, afterEach } from 'mocha'; +import { expect } from 'chai'; +import * as sinon from 'sinon'; +import { verbose, debug, info, warn, error, fatal } from '../../src/lib/utils/logger'; +import { ELoggingScope } from '../../src/lib/utils/types'; + +describe('verbose()', () => { + let spy: sinon.SinonStub<[message?: any, ...optionalParams: any[]], void>; + beforeEach(() => { + spy = sinon.stub(console, 'log'); + }); + + it('check message is being logged', () => { + verbose('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch('Test Message')).to.be.true; + }); + + it('check if Logging Scopes are being logged', () => { + verbose('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch(/COMMAND/)).to.be.true; + }); + + afterEach(() => { + spy.restore(); + }); +}); + +describe('debug()', () => { + let spy: sinon.SinonStub<[message?: any, ...optionalParams: any[]], void>; + beforeEach(() => { + spy = sinon.stub(console, 'log'); + }); + + it('check message is being logged', () => { + debug('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch('Test Message')).to.be.true; + }); + + it('check if Logging Scopes are being logged', () => { + debug('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch(/COMMAND/)).to.be.true; + }); + + afterEach(() => { + spy.restore(); + }); +}); + +describe('info()', () => { + let spy: sinon.SinonStub<[message?: any, ...optionalParams: any[]], void>; + beforeEach(() => { + spy = sinon.stub(console, 'log'); + }); + + it('check message is being logged', () => { + info('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch('Test Message')).to.be.true; + }); + + it('check if Logging Scopes are being logged', () => { + info('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch(/COMMAND/)).to.be.true; + }); + + afterEach(() => { + spy.restore(); + }); +}); + +describe('warn()', () => { + let spy: sinon.SinonStub<[message?: any, ...optionalParams: any[]], void>; + beforeEach(() => { + spy = sinon.stub(console, 'log'); + }); + + it('check message is being logged', () => { + warn('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch('Test Message')).to.be.true; + }); + + it('check if Logging Scopes are being logged', () => { + warn('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch(/COMMAND/)).to.be.true; + }); + + afterEach(() => { + spy.restore(); + }); +}); + +describe('error()', () => { + let spy: sinon.SinonStub<[message?: any, ...optionalParams: any[]], void>; + beforeEach(() => { + spy = sinon.stub(console, 'log'); + }); + + it('check message is being logged', () => { + error('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch('Test Message')).to.be.true; + }); + + it('check if Logging Scopes are being logged', () => { + error('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch(/COMMAND/)).to.be.true; + }); + + afterEach(() => { + spy.restore(); + }); +}); + +describe('fatal()', () => { + let spy: sinon.SinonStub<[message?: any, ...optionalParams: any[]], void>; + beforeEach(() => { + spy = sinon.stub(console, 'log'); + }); + + it('check message is being logged', () => { + fatal('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch('Test Message')).to.be.true; + }); + + it('check if Logging Scopes are being logged', () => { + fatal('Test Message', ELoggingScope.Command); + expect(spy.calledWithMatch(/COMMAND/)).to.be.true; + }); + + afterEach(() => { + spy.restore(); + }); +}); diff --git a/yarn.lock b/yarn.lock index e4c5438..9ae62ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -687,6 +687,42 @@ __metadata: languageName: node linkType: hard +"@sinonjs/commons@npm:^1.6.0, @sinonjs/commons@npm:^1.7.0, @sinonjs/commons@npm:^1.8.3": + version: 1.8.3 + resolution: "@sinonjs/commons@npm:1.8.3" + dependencies: + type-detect: 4.0.8 + checksum: 6159726db5ce6bf9f2297f8427f7ca5b3dff45b31e5cee23496f1fa6ef0bb4eab878b23fb2c5e6446381f6a66aba4968ef2fc255c1180d753d4b8c271636a2e5 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^7.0.4, @sinonjs/fake-timers@npm:^7.1.0": + version: 7.1.2 + resolution: "@sinonjs/fake-timers@npm:7.1.2" + dependencies: + "@sinonjs/commons": ^1.7.0 + checksum: c84773d7973edad5511a31d2cc75023447b5cf714a84de9bb50eda45dda88a0d3bd2c30bf6e6e936da50a048d5352e2151c694e13e59b97d187ba1f329e9a00c + languageName: node + linkType: hard + +"@sinonjs/samsam@npm:^6.0.2": + version: 6.0.2 + resolution: "@sinonjs/samsam@npm:6.0.2" + dependencies: + "@sinonjs/commons": ^1.6.0 + lodash.get: ^4.4.2 + type-detect: ^4.0.8 + checksum: bc1514edf15f4fa42a1bf27024b15f87654deb2999045c0e427659ff3c734eba44661fceae3624be23cc15ee9c6ddafe5209af2192845c6b267350b54eed1495 + languageName: node + linkType: hard + +"@sinonjs/text-encoding@npm:^0.7.1": + version: 0.7.1 + resolution: "@sinonjs/text-encoding@npm:0.7.1" + checksum: 130de0bb568c5f8a611ec21d1a4e3f80ab0c5ec333010f49cfc1adc5cba6d8808699c8a587a46b0f0b016a1f4c1389bc96141e773e8460fcbb441875b2e91ba7 + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^1.1.2": version: 1.1.2 resolution: "@szmarczak/http-timer@npm:1.1.2" @@ -759,22 +795,6 @@ __metadata: languageName: node linkType: hard -"@types/color-convert@npm:^2": - version: 2.0.0 - resolution: "@types/color-convert@npm:2.0.0" - dependencies: - "@types/color-name": "*" - checksum: 027b68665dc2278cc2d83e796ada0a05a08aa5a11297e227c48c7f9f6eac518dec98578ab0072bd211963d3e4b431da70b20ea28d6c3136d0badfd3f9913baee - languageName: node - linkType: hard - -"@types/color-name@npm:*": - version: 1.1.1 - resolution: "@types/color-name@npm:1.1.1" - checksum: b71fcad728cc68abcba1d405742134410c8f8eb3c2ef18113b047afca158ad23a4f2c229bcf71a38f4a818dead375c45b20db121d0e69259c2d81e97a740daa6 - languageName: node - linkType: hard - "@types/emscripten@npm:^1.38.0": version: 1.39.4 resolution: "@types/emscripten@npm:1.39.4" @@ -883,6 +903,13 @@ __metadata: languageName: node linkType: hard +"@types/module-alias@npm:^2": + version: 2.0.0 + resolution: "@types/module-alias@npm:2.0.0" + checksum: 0830a5291406d86230c5decba7ac9736ed6978cf587223de2349bc88c3939ceca82d1ac1c10bcedb19fd304d53ea2ae7f4023f2cdf6406cfe34570d5908ae141 + languageName: node + linkType: hard + "@types/node@npm:*, @types/node@npm:^15.12.2": version: 15.12.2 resolution: "@types/node@npm:15.12.2" @@ -944,10 +971,12 @@ __metadata: languageName: node linkType: hard -"@types/std-mocks@npm:^1": - version: 1.0.0 - resolution: "@types/std-mocks@npm:1.0.0" - checksum: acbdcbe8871897f3d5536b64835038992823c021ae4669c5cbe0641df0c8f6bed652f25f7e2de3c27c648c8650acb2195194b5edea0eefbbe50d9a6681d1beef +"@types/sinon@npm:^10.0.2": + version: 10.0.2 + resolution: "@types/sinon@npm:10.0.2" + dependencies: + "@sinonjs/fake-timers": ^7.1.0 + checksum: 442e62fe1962bfaa8d80314cfc4411f5a6afd98909c18bea570c8393829e4deb0f7478e3dbd02c52da9faa8229ea82be6b8c3876c6dc82a4e948506a38a2cb1d languageName: node linkType: hard @@ -1505,15 +1534,15 @@ __metadata: "@rollup/plugin-json": ^4.1.0 "@rollup/plugin-typescript": ^8.2.1 "@types/chai": ^4.2.18 - "@types/color-convert": ^2 "@types/eslint": ^7.2.13 "@types/figlet": ^1.5.1 "@types/gradient-string": ^1 "@types/luxon": ^1 "@types/mocha": ^8.2.2 + "@types/module-alias": ^2 "@types/node": ^15.12.2 "@types/rimraf": ^3 - "@types/std-mocks": ^1 + "@types/sinon": ^10.0.2 "@types/yargs": ^17 "@typescript-eslint/eslint-plugin": ^4.27.0 "@typescript-eslint/parser": ^4.27.0 @@ -1522,7 +1551,7 @@ __metadata: bufferutil: ^4.0.3 chai: ^4.3.4 chalk: ^4.1.1 - color-convert: ^2.0.1 + config: ^3.3.6 discord.js: ^13.0.0-dev.a3cbcca13da1af416c219bd64a0a6e84bb87a057 erlpack: ^0.1.3 eslint: ^7.28.0 @@ -1536,16 +1565,16 @@ __metadata: lint-staged: ^11.0.0 luxon: ^1.27.0 mocha: ^9.0.0 + module-alias: ^2.2.2 node-gyp: ^8.1.0 nodemon: ^2.0.7 nyc: ^15.1.0 rimraf: ^3.0.2 rollup: ^2.52.0 rollup-plugin-terser: ^7.0.2 + sinon: ^11.1.1 sodium: ^3.0.2 standard-version: ^9.3.0 - std-mocks: ^1.0.1 - supports-color: ^9.0.1 terminal-link: ^3.0.0 ts-node: ^10.0.0 tslib: ^2.3.0 @@ -2238,6 +2267,15 @@ __metadata: languageName: node linkType: hard +"config@npm:^3.3.6": + version: 3.3.6 + resolution: "config@npm:3.3.6" + dependencies: + json5: ^2.1.1 + checksum: 53684cae0d1c9fa2fe6db41fa85201aa5ab92dcbe7596d63381e7e48f0cb3dea45bee812dc18ee91a3daf887ec0f3c57bf4acc555629ba7608d5a3b932e61c8e + languageName: node + linkType: hard + "configstore@npm:^5.0.1": version: 5.0.1 resolution: "configstore@npm:5.0.1" @@ -2750,7 +2788,7 @@ __metadata: languageName: node linkType: hard -"diff@npm:5.0.0": +"diff@npm:5.0.0, diff@npm:^5.0.0": version: 5.0.0 resolution: "diff@npm:5.0.0" checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 @@ -3810,13 +3848,6 @@ __metadata: languageName: node linkType: hard -"has-flag@npm:^5.0.0": - version: 5.0.0 - resolution: "has-flag@npm:5.0.0" - checksum: 06f9a9174492cbcf8e8bdf0773fbef6e7fc1b90feaf6316f2731fe731b95d94ceab960e6e5ce6d88a5ebe701c9ace556fb70501f3ee75a321d78c65eb712d5c0 - languageName: node - linkType: hard - "has-own-prop@npm:^2.0.0": version: 2.0.0 resolution: "has-own-prop@npm:2.0.0" @@ -4349,6 +4380,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:0.0.1": + version: 0.0.1 + resolution: "isarray@npm:0.0.1" + checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 + languageName: node + linkType: hard + "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -4557,7 +4595,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2": +"json5@npm:^2.1.1, json5@npm:^2.1.2": version: 2.2.0 resolution: "json5@npm:2.2.0" dependencies: @@ -4595,6 +4633,13 @@ __metadata: languageName: node linkType: hard +"just-extend@npm:^4.0.2": + version: 4.2.1 + resolution: "just-extend@npm:4.2.1" + checksum: ff9fdede240fad313efeeeb68a660b942e5586d99c0058064c78884894a2690dc09bba44c994ad4e077e45d913fef01a9240c14a72c657b53687ac58de53b39c + languageName: node + linkType: hard + "keyv@npm:^3.0.0": version: 3.1.0 resolution: "keyv@npm:3.1.0" @@ -4765,6 +4810,13 @@ __metadata: languageName: node linkType: hard +"lodash.get@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.get@npm:4.4.2" + checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545 + languageName: node + linkType: hard + "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" @@ -4793,7 +4845,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.11.1, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.5.1": +"lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.5.1": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -5190,6 +5242,13 @@ __metadata: languageName: node linkType: hard +"module-alias@npm:^2.2.2": + version: 2.2.2 + resolution: "module-alias@npm:2.2.2" + checksum: 4b5543f834b484033e5bd184096ca8276b9195e32e88883ee6ea8d3a4789d97c470d26f5fa7271bd7a26588bf67e4d27dbdb594ee327aef1c9619d855dc78342 + languageName: node + linkType: hard + "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -5250,6 +5309,19 @@ __metadata: languageName: node linkType: hard +"nise@npm:^5.1.0": + version: 5.1.0 + resolution: "nise@npm:5.1.0" + dependencies: + "@sinonjs/commons": ^1.7.0 + "@sinonjs/fake-timers": ^7.0.4 + "@sinonjs/text-encoding": ^0.7.1 + just-extend: ^4.0.2 + path-to-regexp: ^1.7.0 + checksum: e3843cc125163ce99b7fb0328edf427b981be32c6c719684582cf0a46fb5206173835a9a14dedac3c4833e415ab0e0493f9f4d4163572a3a0c95db39b093166d + languageName: node + linkType: hard + "node-addon-api@npm:*": version: 4.0.0 resolution: "node-addon-api@npm:4.0.0" @@ -5829,6 +5901,15 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^1.7.0": + version: 1.8.0 + resolution: "path-to-regexp@npm:1.8.0" + dependencies: + isarray: 0.0.1 + checksum: 709f6f083c0552514ef4780cb2e7e4cf49b0cc89a97439f2b7cc69a608982b7690fb5d1720a7473a59806508fc2dae0be751ba49f495ecf89fd8fbc62abccbcd + languageName: node + linkType: hard + "path-type@npm:^1.0.0": version: 1.1.0 resolution: "path-type@npm:1.1.0" @@ -6671,6 +6752,20 @@ __metadata: languageName: node linkType: hard +"sinon@npm:^11.1.1": + version: 11.1.1 + resolution: "sinon@npm:11.1.1" + dependencies: + "@sinonjs/commons": ^1.8.3 + "@sinonjs/fake-timers": ^7.1.0 + "@sinonjs/samsam": ^6.0.2 + diff: ^5.0.0 + nise: ^5.1.0 + supports-color: ^7.2.0 + checksum: 1c060b8d4c7b6307c67a06f96409e338fb4e23d4046557ec3ebd40836060c1f7dd0ac376069eb110799d9843bda66354edb45042d11eeff4cfe8a6cef36c95be + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -6875,15 +6970,6 @@ __metadata: languageName: node linkType: hard -"std-mocks@npm:^1.0.1": - version: 1.0.1 - resolution: "std-mocks@npm:1.0.1" - dependencies: - lodash: ^4.11.1 - checksum: b7b97a39c77e373ea243443e195030ca0e41e0f7e8ba7908993511c4346dfdee0fb0d6edc0a72d2ed4ad3a26a1a4434d7dbde65629172452f3462745a8c8433a - languageName: node - linkType: hard - "stream-buffers@npm:^3.0.2": version: 3.0.2 resolution: "stream-buffers@npm:3.0.2" @@ -7122,7 +7208,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0, supports-color@npm:^7.2.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -7131,15 +7217,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^9.0.1": - version: 9.0.1 - resolution: "supports-color@npm:9.0.1" - dependencies: - has-flag: ^5.0.0 - checksum: 56071f46f8e5d44a8a0351a5de5683d3b8b652bc84cf45585f62c342e16bbeab22172cf955fe6ac25c376933551b412b9ccf53ecd5a633a078dbf246fd00d9f4 - languageName: node - linkType: hard - "supports-hyperlinks@npm:^2.0.0, supports-hyperlinks@npm:^2.2.0": version: 2.2.0 resolution: "supports-hyperlinks@npm:2.2.0" @@ -7441,7 +7518,7 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:^4.0.0, type-detect@npm:^4.0.5": +"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15