Archived
0
0
Fork 0

test((logging)): added basic logger testing

This commit is contained in:
Daryl Ronningen 2021-06-18 02:26:50 -07:00
parent 633ada9fc9
commit b9ac8a1709
Signed by: Daryl Ronningen
GPG key ID: FD23F0C934A5EC6B
9 changed files with 309 additions and 104 deletions

View file

@ -1,5 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn lint-staged
yarn test
yarn lint-staged

View file

@ -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"]
}

View file

@ -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"

View file

@ -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);

View file

@ -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}}`);
});
}

View file

@ -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 <https: //www.gnu.org/licenses/>.
*/
import { describe, it } from 'mocha';
describe('placeholder', () => {
it('placeholder', () => {
return true;
});
});

147
tests/utils/logger.test.ts Normal file
View file

@ -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 <https: //www.gnu.org/licenses/>.
*/
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();
});
});

187
yarn.lock
View file

@ -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