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