diff --git a/instrument.mjs b/instrument.js
similarity index 100%
rename from instrument.mjs
rename to instrument.js
diff --git a/package.json b/package.json
index 8dad6b7..c3d63f2 100644
--- a/package.json
+++ b/package.json
@@ -6,8 +6,10 @@
"type": "module",
"private": true,
"scripts": {
+ "build": "tsc -b --verbose",
+ "clean": "rm -rf dist",
"lint": "eslint .",
- "start": "node --import 'data:text/javascript,import { register } from \"node:module\"; import { pathToFileURL } from \"node:url\"; register(\"@opentelemetry/instrumentation/hook.mjs\", pathToFileURL(\"./\"));' --import ./instrument.mjs server.js",
+ "start": "node --openssl-legacy-provider --import 'data:text/javascript,import { register } from \"node:module\"; import { pathToFileURL } from \"node:url\"; register(\"@opentelemetry/instrumentation/hook.mjs\", pathToFileURL(\"./\"));' --import ./instrument.js server.js",
"test": "vitest run"
},
"keywords": [],
@@ -15,10 +17,12 @@
"license": "LGPL-3.0-or-later",
"devDependencies": {
"@eslint/js": "^9.3.0",
+ "@types/express": "^4.17.21",
"@types/node": "^20.12.12",
"@vitest/coverage-v8": "^1.6.0",
"eslint": "^9.3.0",
"globals": "^15.3.0",
+ "typescript": "^5.4.5",
"vitest": "^1.6.0"
},
"packageManager": "pnpm@9.1.4+sha256.30a1801ac4e723779efed13a21f4c39f9eb6c9fbb4ced101bce06b422593d7c9",
@@ -27,6 +31,7 @@
"@sentry/node": "^8.7.0",
"@sentry/profiling-node": "^8.7.0",
"express": "^4.19.2",
- "obsidian-main": "link:packages/main"
+ "obsidian-main": "link:packages/main",
+ "tsx": "^4.11.0"
}
}
diff --git a/packages/main/jsconfig.json b/packages/main/jsconfig.json
deleted file mode 100644
index dc20f02..0000000
--- a/packages/main/jsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "compilerOptions": {
- "module": "NodeNext",
- "moduleResolution": "NodeNext",
- "target": "ES2020",
- "checkJs": true,
- "strictNullChecks": true,
- "strictFunctionTypes": true,
- "strict": true
- },
- "exclude": ["node_modules", "**/node_modules/*"]
-}
diff --git a/packages/main/src/MainLoop.d.ts b/packages/main/src/MainLoop.d.ts
new file mode 100644
index 0000000..de6f75f
--- /dev/null
+++ b/packages/main/src/MainLoop.d.ts
@@ -0,0 +1,40 @@
+///
+import { KeypressEvent, TTask } from "./types.js";
+export declare class MainLoop {
+ /** @type {NodeJS.Timeout | undefined} */
+ _timer: NodeJS.Timeout | undefined;
+ /** @type {Array} */
+ _startTasks: Array;
+ /** @type {Array} */
+ _stopTasks: Array;
+ /** @type {Array} */
+ _loopTasks: Array;
+ /**
+ *
+ * @param {import("obsidian-main").KeypressEvent} key
+ */
+ handleKeypressEvent(key: KeypressEvent): void;
+ /**
+ *
+ * @param {"start" | "loop" | "stop"} type
+ * @param {import("obsidian-main").Task} task
+ */
+ addTask(type: "start" | "loop" | "stop", task: TTask): void;
+ /**
+ * @param {Array} tasks
+ */
+ _callTasks(tasks: Array): Promise;
+ /**
+ * Starts the main loop.
+ *
+ */
+ start(): Promise;
+ /**
+ * Stops the main loop.
+ */
+ stop(): Promise;
+ /**
+ * Body of the main loop.
+ */
+ loop(): Promise;
+}
diff --git a/packages/main/src/MainLoop.js b/packages/main/src/MainLoop.js
index 4613939..9900380 100644
--- a/packages/main/src/MainLoop.js
+++ b/packages/main/src/MainLoop.js
@@ -1,109 +1,98 @@
// obsidian-spoon is a game server
// Copyright (C) 2024 Molly Crendraven
-
// This program 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.
-
// This program 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 this program. If not, see .
-
import { emitKeypressEvents } from "node:readline";
import { _atExit } from "obsidian-main";
-
export class MainLoop {
- /** @type {NodeJS.Timeout | undefined} */
- _timer = undefined;
-
- /** @type {Array} */
- _startTasks = [];
-
- /** @type {Array} */
- _stopTasks = [];
-
- /** @type {Array} */
- _loopTasks = [];
-
- /**
- *
- * @param {import("obsidian-main").KeypressEvent} key
- */
- handleKeypressEvent(key) {
- const keyString = key.sequence;
-
- if (keyString === "x") {
- this.stop();
+ /** @type {NodeJS.Timeout | undefined} */
+ _timer = undefined;
+ /** @type {Array} */
+ _startTasks = [];
+ /** @type {Array} */
+ _stopTasks = [];
+ /** @type {Array} */
+ _loopTasks = [];
+ /**
+ *
+ * @param {import("obsidian-main").KeypressEvent} key
+ */
+ handleKeypressEvent(key) {
+ const keyString = key.sequence;
+ if (keyString === "x") {
+ this.stop();
+ }
}
- }
- /**
- *
- * @param {"start" | "loop" | "stop"} type
- * @param {import("obsidian-main").Task} task
- */
- addTask(type, task) {
- if (type === "start") {
- this._startTasks.push(task);
- } else if (type === "stop") {
- this._stopTasks.push(task);
- } else if (type === "loop") {
- this._loopTasks.push(task);
+ /**
+ *
+ * @param {"start" | "loop" | "stop"} type
+ * @param {import("obsidian-main").Task} task
+ */
+ addTask(type, task) {
+ if (type === "start") {
+ this._startTasks.push(task);
+ }
+ else if (type === "stop") {
+ this._stopTasks.push(task);
+ }
+ else if (type === "loop") {
+ this._loopTasks.push(task);
+ }
}
- }
-
- /**
- * @param {Array} tasks
- */
- async _callTasks(tasks) {
- tasks.forEach(async (task) => {
- await task();
- });
- }
-
- /**
- * Starts the main loop.
- *
- */
- async start() {
- this.timer = setTimeout(this.loop.bind(this), 1000);
- if (process.stdin.isTTY !== true) {
- return;
+ /**
+ * @param {Array} tasks
+ */
+ async _callTasks(tasks) {
+ tasks.forEach(async (task) => {
+ await task();
+ });
}
- emitKeypressEvents(process.stdin);
- process.stdin.setRawMode(true);
- process.stdin.resume();
- console.log("Press X to exit");
- process.stdin.on("keypress", (str, key) => {
- if (key !== undefined) {
- this.handleKeypressEvent(key);
- }
- });
- await this._callTasks(this._startTasks);
- }
-
- /**
- * Stops the main loop.
- */
- async stop() {
- if (this.timer !== undefined) {
- clearInterval(this.timer);
- process.stdin.setRawMode(false);
- console.log("Exiting...");
- await this._callTasks(this._stopTasks);
- _atExit();
+ /**
+ * Starts the main loop.
+ *
+ */
+ async start() {
+ this._timer = setTimeout(this.loop.bind(this), 1000);
+ if (process.stdin.isTTY !== true) {
+ return;
+ }
+ emitKeypressEvents(process.stdin);
+ process.stdin.setRawMode(true);
+ process.stdin.resume();
+ console.log("Press X to exit");
+ process.stdin.on("keypress", (str, key) => {
+ if (key !== undefined) {
+ this.handleKeypressEvent(key);
+ }
+ });
+ await this._callTasks(this._startTasks);
+ }
+ /**
+ * Stops the main loop.
+ */
+ async stop() {
+ if (this._timer !== undefined) {
+ clearInterval(this._timer);
+ process.stdin.setRawMode(false);
+ console.log("Exiting...");
+ await this._callTasks(this._stopTasks);
+ _atExit();
+ }
+ }
+ /**
+ * Body of the main loop.
+ */
+ async loop() {
+ await this._callTasks(this._loopTasks);
+ this._timer = setTimeout(this.loop.bind(this), 1000);
}
- }
-
- /**
- * Body of the main loop.
- */
- async loop() {
- await this._callTasks(this._loopTasks);
- this.timer = setTimeout(this.loop.bind(this), 1000);
- }
}
+//# sourceMappingURL=MainLoop.js.map
\ No newline at end of file
diff --git a/packages/main/src/MainLoop.js.map b/packages/main/src/MainLoop.js.map
new file mode 100644
index 0000000..3a95548
--- /dev/null
+++ b/packages/main/src/MainLoop.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"MainLoop.js","sourceRoot":"","sources":["MainLoop.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,sCAAsC;AAEtC,uEAAuE;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AAEtC,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAE/C,oEAAoE;AACpE,yEAAyE;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,MAAM,OAAO,QAAQ;IACnB,yCAAyC;IACzC,MAAM,GAA+B,SAAS,CAAC;IAE/C,kDAAkD;IAClD,WAAW,GAAiB,EAAE,CAAC;IAE/B,kDAAkD;IAClD,UAAU,GAAiB,EAAE,CAAC;IAE9B,kDAAkD;IAClD,UAAU,GAAiB,EAAE,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,CAAC,GAAkB;QACpC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE/B,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,IAA+B,EAAE,IAAW;QAClD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAmB;QAClC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/MainLoop.ts b/packages/main/src/MainLoop.ts
new file mode 100644
index 0000000..44764eb
--- /dev/null
+++ b/packages/main/src/MainLoop.ts
@@ -0,0 +1,110 @@
+// obsidian-spoon is a game server
+// Copyright (C) 2024 Molly Crendraven
+
+// This program 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.
+
+// This program 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 this program. If not, see .
+
+import { emitKeypressEvents } from "node:readline";
+import { _atExit } from "obsidian-main";
+import { KeypressEvent, TTask } from "./types.js";
+
+export class MainLoop {
+ /** @type {NodeJS.Timeout | undefined} */
+ _timer: NodeJS.Timeout | undefined = undefined;
+
+ /** @type {Array} */
+ _startTasks: Array = [];
+
+ /** @type {Array} */
+ _stopTasks: Array = [];
+
+ /** @type {Array} */
+ _loopTasks: Array = [];
+
+ /**
+ *
+ * @param {import("obsidian-main").KeypressEvent} key
+ */
+ handleKeypressEvent(key: KeypressEvent) {
+ const keyString = key.sequence;
+
+ if (keyString === "x") {
+ this.stop();
+ }
+ }
+ /**
+ *
+ * @param {"start" | "loop" | "stop"} type
+ * @param {import("obsidian-main").Task} task
+ */
+ addTask(type: "start" | "loop" | "stop", task: TTask) {
+ if (type === "start") {
+ this._startTasks.push(task);
+ } else if (type === "stop") {
+ this._stopTasks.push(task);
+ } else if (type === "loop") {
+ this._loopTasks.push(task);
+ }
+ }
+
+ /**
+ * @param {Array} tasks
+ */
+ async _callTasks(tasks: Array) {
+ tasks.forEach(async (task) => {
+ await task();
+ });
+ }
+
+ /**
+ * Starts the main loop.
+ *
+ */
+ async start() {
+ this._timer = setTimeout(this.loop.bind(this), 1000);
+ if (process.stdin.isTTY !== true) {
+ return;
+ }
+ emitKeypressEvents(process.stdin);
+ process.stdin.setRawMode(true);
+ process.stdin.resume();
+ console.log("Press X to exit");
+ process.stdin.on("keypress", (str, key) => {
+ if (key !== undefined) {
+ this.handleKeypressEvent(key);
+ }
+ });
+ await this._callTasks(this._startTasks);
+ }
+
+ /**
+ * Stops the main loop.
+ */
+ async stop() {
+ if (this._timer !== undefined) {
+ clearInterval(this._timer);
+ process.stdin.setRawMode(false);
+ console.log("Exiting...");
+ await this._callTasks(this._stopTasks);
+ _atExit();
+ }
+ }
+
+ /**
+ * Body of the main loop.
+ */
+ async loop() {
+ await this._callTasks(this._loopTasks);
+ this._timer = setTimeout(this.loop.bind(this), 1000);
+ }
+}
diff --git a/packages/main/src/NPSMessage.d.ts b/packages/main/src/NPSMessage.d.ts
new file mode 100644
index 0000000..e2e2979
--- /dev/null
+++ b/packages/main/src/NPSMessage.d.ts
@@ -0,0 +1,28 @@
+///
+import { NPSMessageHeader } from "./NPSMessageHeader.js";
+import { NPSMessagePayload } from "./NPSMessagePayload.js";
+/**
+ * Class representing an NPS message.
+ *
+ * @property {NPSMessageHeader} _header
+ * @property {NPSMessagePayload} data
+ */
+export declare class NPSMessage {
+ _header: NPSMessageHeader;
+ data: NPSMessagePayload;
+ constructor();
+ /**
+ *
+ * @param {Buffer} data
+ * @returns {NPSMessage}
+ */
+ static parse(data: Buffer): NPSMessage;
+ /**
+ * @returns Buffer
+ */
+ toBuffer(): Buffer;
+ /**
+ * @returns string
+ */
+ toString(): string;
+}
diff --git a/packages/main/src/NPSMessage.js b/packages/main/src/NPSMessage.js
index d33aa89..393f433 100644
--- a/packages/main/src/NPSMessage.js
+++ b/packages/main/src/NPSMessage.js
@@ -1,6 +1,5 @@
import { NPSMessageHeader } from "./NPSMessageHeader.js";
import { NPSMessagePayload } from "./NPSMessagePayload.js";
-
/**
* Class representing an NPS message.
*
@@ -8,44 +7,38 @@ import { NPSMessagePayload } from "./NPSMessagePayload.js";
* @property {NPSMessagePayload} data
*/
export class NPSMessage {
- constructor() {
- this._header = new NPSMessageHeader();
- this.data = new NPSMessagePayload();
- }
- /**
- *
- * @param {Buffer} data
- * @returns {NPSMessage}
- */
- static parse(data) {
- const self = new NPSMessage();
- if (data.length < 8) {
- throw new Error(`Invalid message length: ${data.length}`);
+ _header;
+ data;
+ constructor() {
+ this._header = new NPSMessageHeader();
+ this.data = new NPSMessagePayload();
+ }
+ /**
+ *
+ * @param {Buffer} data
+ * @returns {NPSMessage}
+ */
+ static parse(data) {
+ const self = new NPSMessage();
+ if (data.length < 8) {
+ throw new Error(`Invalid message length: ${data.length}`);
+ }
+ self._header = NPSMessageHeader.parse(data);
+ const expectedLength = self._header.messageLength - self._header.dataOffset;
+ self.data = NPSMessagePayload.parse(data.subarray(self._header.dataOffset), expectedLength);
+ return self;
+ }
+ /**
+ * @returns Buffer
+ */
+ toBuffer() {
+ return Buffer.concat([this._header.toBuffer(), this.data.toBuffer()]);
+ }
+ /**
+ * @returns string
+ */
+ toString() {
+ return `${this._header.toString()}, Data: ${this.data.toString()}`;
}
-
- self._header = NPSMessageHeader.parse(data);
-
- const expectedLength = self._header.messageLength - self._header.dataOffset;
-
- self.data = NPSMessagePayload.parse(
- data.subarray(self._header.dataOffset),
- expectedLength,
- );
-
- return self;
- }
-
- /**
- * @returns Buffer
- */
- toBuffer() {
- return Buffer.concat([this._header.toBuffer(), this.data.toBuffer()]);
- }
-
- /**
- * @returns string
- */
- toString() {
- return `${this._header.toString()}, Data: ${this.data.toString()}`;
- }
}
+//# sourceMappingURL=NPSMessage.js.map
\ No newline at end of file
diff --git a/packages/main/src/NPSMessage.js.map b/packages/main/src/NPSMessage.js.map
new file mode 100644
index 0000000..9bec180
--- /dev/null
+++ b/packages/main/src/NPSMessage.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"NPSMessage.js","sourceRoot":"","sources":["NPSMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACrB,OAAO,CAAmB;IAC1B,IAAI,CAAoB;IACxB;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACtC,CAAC;IACD;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAY;QACvB,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAE5E,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,CACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EACtC,cAAc,CACf,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IACrE,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/NPSMessage.ts b/packages/main/src/NPSMessage.ts
new file mode 100644
index 0000000..627d8fe
--- /dev/null
+++ b/packages/main/src/NPSMessage.ts
@@ -0,0 +1,53 @@
+import { NPSMessageHeader } from "./NPSMessageHeader.js";
+import { NPSMessagePayload } from "./NPSMessagePayload.js";
+
+/**
+ * Class representing an NPS message.
+ *
+ * @property {NPSMessageHeader} _header
+ * @property {NPSMessagePayload} data
+ */
+export class NPSMessage {
+ _header: NPSMessageHeader;
+ data: NPSMessagePayload;
+ constructor() {
+ this._header = new NPSMessageHeader();
+ this.data = new NPSMessagePayload();
+ }
+ /**
+ *
+ * @param {Buffer} data
+ * @returns {NPSMessage}
+ */
+ static parse(data: Buffer) {
+ const self = new NPSMessage();
+ if (data.length < 8) {
+ throw new Error(`Invalid message length: ${data.length}`);
+ }
+
+ self._header = NPSMessageHeader.parse(data);
+
+ const expectedLength = self._header.messageLength - self._header.dataOffset;
+
+ self.data = NPSMessagePayload.parse(
+ data.subarray(self._header.dataOffset),
+ expectedLength,
+ );
+
+ return self;
+ }
+
+ /**
+ * @returns Buffer
+ */
+ toBuffer() {
+ return Buffer.concat([this._header.toBuffer(), this.data.toBuffer()]);
+ }
+
+ /**
+ * @returns string
+ */
+ toString() {
+ return `${this._header.toString()}, Data: ${this.data.toString()}`;
+ }
+}
diff --git a/packages/main/src/NPSMessageHeader.d.ts b/packages/main/src/NPSMessageHeader.d.ts
new file mode 100644
index 0000000..3d8520d
--- /dev/null
+++ b/packages/main/src/NPSMessageHeader.d.ts
@@ -0,0 +1,31 @@
+///
+/**
+ * Class representing an NPS message header.
+ */
+export declare class NPSMessageHeader {
+ _dataStart: number;
+ messageId: number;
+ messageLength: number;
+ version: number;
+ constructor();
+ /**
+ *
+ * @param {Buffer} data
+ * @returns NPSMessageHeader
+ */
+ static parse(data: Buffer): NPSMessageHeader;
+ get dataOffset(): number;
+ /**
+ * @private
+ * @returns Buffer
+ */
+ _writeExtraData(): Buffer;
+ /**
+ * @returns Buffer
+ */
+ toBuffer(): Buffer;
+ /**
+ * @returns string
+ */
+ toString(): string;
+}
diff --git a/packages/main/src/NPSMessageHeader.js b/packages/main/src/NPSMessageHeader.js
index 41f7b01..f43f2f9 100644
--- a/packages/main/src/NPSMessageHeader.js
+++ b/packages/main/src/NPSMessageHeader.js
@@ -2,71 +2,68 @@
* Class representing an NPS message header.
*/
export class NPSMessageHeader {
- constructor() {
- this._dataStart = -1;
- this.messageId = -1;
- this.messageLength = -1;
- this.version = -1;
- }
-
- /**
- *
- * @param {Buffer} data
- * @returns NPSMessageHeader
- */
- static parse(data) {
- const self = new NPSMessageHeader();
- if (data.length < 6) {
- throw new Error("Invalid header length");
+ _dataStart;
+ messageId;
+ messageLength;
+ version;
+ constructor() {
+ this._dataStart = -1;
+ this.messageId = -1;
+ this.messageLength = -1;
+ this.version = -1;
}
- self.messageId = data.readUInt16BE(0);
- self.messageLength = data.readUInt16BE(2);
-
- self.version = data.readUInt16BE(4);
-
- if (self.version === 257) {
- self._dataStart = 12;
- } else {
- self._dataStart = 6;
+ /**
+ *
+ * @param {Buffer} data
+ * @returns NPSMessageHeader
+ */
+ static parse(data) {
+ const self = new NPSMessageHeader();
+ if (data.length < 6) {
+ throw new Error("Invalid header length");
+ }
+ self.messageId = data.readUInt16BE(0);
+ self.messageLength = data.readUInt16BE(2);
+ self.version = data.readUInt16BE(4);
+ if (self.version === 257) {
+ self._dataStart = 12;
+ }
+ else {
+ self._dataStart = 6;
+ }
+ return self;
}
-
- return self;
- }
-
- get dataOffset() {
- return this._dataStart;
- }
-
- /**
- * @private
- * @returns Buffer
- */
- _writeExtraData() {
- const buffer = Buffer.alloc(6);
- buffer.writeUInt16BE(0, 0);
- buffer.writeUInt32BE(this.messageLength, 2);
- return buffer;
- }
-
- /**
- * @returns Buffer
- */
- toBuffer() {
- const buffer = Buffer.alloc(6);
- buffer.writeUInt16BE(this.messageId, 0);
- buffer.writeUInt16BE(this.messageLength, 2);
- buffer.writeUInt16BE(this.version, 4);
-
- if (this.version === 257) {
- return Buffer.concat([buffer, this._writeExtraData()]);
+ get dataOffset() {
+ return this._dataStart;
+ }
+ /**
+ * @private
+ * @returns Buffer
+ */
+ _writeExtraData() {
+ const buffer = Buffer.alloc(6);
+ buffer.writeUInt16BE(0, 0);
+ buffer.writeUInt32BE(this.messageLength, 2);
+ return buffer;
+ }
+ /**
+ * @returns Buffer
+ */
+ toBuffer() {
+ const buffer = Buffer.alloc(6);
+ buffer.writeUInt16BE(this.messageId, 0);
+ buffer.writeUInt16BE(this.messageLength, 2);
+ buffer.writeUInt16BE(this.version, 4);
+ if (this.version === 257) {
+ return Buffer.concat([buffer, this._writeExtraData()]);
+ }
+ return buffer;
+ }
+ /**
+ * @returns string
+ */
+ toString() {
+ return `ID: ${this.messageId}, Length: ${this.messageLength}, Version: ${this.version}`;
}
- return buffer;
- }
-
- /**
- * @returns string
- */
- toString() {
- return `ID: ${this.messageId}, Length: ${this.messageLength}, Version: ${this.version}`;
- }
}
+//# sourceMappingURL=NPSMessageHeader.js.map
\ No newline at end of file
diff --git a/packages/main/src/NPSMessageHeader.js.map b/packages/main/src/NPSMessageHeader.js.map
new file mode 100644
index 0000000..45d2be7
--- /dev/null
+++ b/packages/main/src/NPSMessageHeader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"NPSMessageHeader.js","sourceRoot":"","sources":["NPSMessageHeader.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,aAAa,CAAS;IACtB,OAAO,CAAS;IAChB;QACE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAY;QACvB,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,OAAO,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,aAAa,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/NPSMessageHeader.ts b/packages/main/src/NPSMessageHeader.ts
new file mode 100644
index 0000000..8552bd0
--- /dev/null
+++ b/packages/main/src/NPSMessageHeader.ts
@@ -0,0 +1,76 @@
+/**
+ * Class representing an NPS message header.
+ */
+export class NPSMessageHeader {
+ _dataStart: number;
+ messageId: number;
+ messageLength: number;
+ version: number;
+ constructor() {
+ this._dataStart = -1;
+ this.messageId = -1;
+ this.messageLength = -1;
+ this.version = -1;
+ }
+
+ /**
+ *
+ * @param {Buffer} data
+ * @returns NPSMessageHeader
+ */
+ static parse(data: Buffer) {
+ const self = new NPSMessageHeader();
+ if (data.length < 6) {
+ throw new Error("Invalid header length");
+ }
+ self.messageId = data.readUInt16BE(0);
+ self.messageLength = data.readUInt16BE(2);
+
+ self.version = data.readUInt16BE(4);
+
+ if (self.version === 257) {
+ self._dataStart = 12;
+ } else {
+ self._dataStart = 6;
+ }
+
+ return self;
+ }
+
+ get dataOffset() {
+ return this._dataStart;
+ }
+
+ /**
+ * @private
+ * @returns Buffer
+ */
+ _writeExtraData() {
+ const buffer = Buffer.alloc(6);
+ buffer.writeUInt16BE(0, 0);
+ buffer.writeUInt32BE(this.messageLength, 2);
+ return buffer;
+ }
+
+ /**
+ * @returns Buffer
+ */
+ toBuffer() {
+ const buffer = Buffer.alloc(6);
+ buffer.writeUInt16BE(this.messageId, 0);
+ buffer.writeUInt16BE(this.messageLength, 2);
+ buffer.writeUInt16BE(this.version, 4);
+
+ if (this.version === 257) {
+ return Buffer.concat([buffer, this._writeExtraData()]);
+ }
+ return buffer;
+ }
+
+ /**
+ * @returns string
+ */
+ toString() {
+ return `ID: ${this.messageId}, Length: ${this.messageLength}, Version: ${this.version}`;
+ }
+}
diff --git a/packages/main/src/NPSMessagePayload.d.ts b/packages/main/src/NPSMessagePayload.d.ts
new file mode 100644
index 0000000..7e2a865
--- /dev/null
+++ b/packages/main/src/NPSMessagePayload.d.ts
@@ -0,0 +1,48 @@
+/**
+ * To be used as a base class for NPS message payloads.
+ *
+ * @implements {INPSPayload}
+ * @class
+ * @property {Buffer} data
+ *
+ * @example
+ * class MyPayload extends NPSMessagePayload {
+ * constructor() {
+ * super();
+ * this.myProperty = 0;
+ * }
+ *
+ * static parse(data) {
+ * this.myProperty = data.readUInt32LE(0);
+ * }
+ *
+ * toBuffer() {
+ * const buffer = Buffer.alloc(4);
+ * buffer.writeUInt32LE(this.myProperty, 0);
+ * return buffer;
+ * }
+ *
+ * toString() {
+ * return `MyPayload: ${this.myProperty}`;
+ * }
+ * }
+ */
+///
+export declare class NPSMessagePayload {
+ data: Buffer;
+ constructor();
+ /**
+ *
+ * @param {Buffer} data
+ * @returns NPSMessagePayload
+ */
+ static parse(data: Buffer, len?: number): NPSMessagePayload;
+ /**
+ * @returns Buffer
+ */
+ toBuffer(): Buffer;
+ /**
+ * @returns string
+ */
+ toString(): string;
+}
diff --git a/packages/main/src/NPSMessagePayload.js b/packages/main/src/NPSMessagePayload.js
index 7e4fdcb..81efd9b 100644
--- a/packages/main/src/NPSMessagePayload.js
+++ b/packages/main/src/NPSMessagePayload.js
@@ -1,33 +1,3 @@
-/**
- * @interface INPSPayload
- */
-/**
- * @interface INPSPayload
- * @static parse
- * @property {Buffer} data
- */
-export class INPSPayload {
- constructor() {
- this.data = Buffer.alloc(0);
- this.toBuffer = function () {
- // Intentionally empty to be overridden by subclasses
- };
- this.toString = function () {
- // Intentionally empty to be overridden by subclasses
- };
- }
-
- /**
- * @param {Buffer} data
- * @returns INPSPayload
- */
- static parse(data) {
- const self = new NPSMessagePayload();
- self.data = data;
- return self;
- }
-}
-
/**
* To be used as a base class for NPS message payloads.
*
@@ -57,39 +27,35 @@ export class INPSPayload {
* }
* }
*/
-
export class NPSMessagePayload {
- constructor() {
- this.data = Buffer.alloc(0);
- }
-
- /**
- *
- * @param {Buffer} data
- * @returns NPSMessagePayload
- */
- static parse(data, len = data.length) {
- if (data.length !== len) {
- throw new Error(
- `Invalid payload length: ${data.length}, expected: ${len}`,
- );
+ data;
+ constructor() {
+ this.data = Buffer.alloc(0);
+ }
+ /**
+ *
+ * @param {Buffer} data
+ * @returns NPSMessagePayload
+ */
+ static parse(data, len = data.length) {
+ if (data.length !== len) {
+ throw new Error(`Invalid payload length: ${data.length}, expected: ${len}`);
+ }
+ const self = new NPSMessagePayload();
+ self.data = data;
+ return self;
+ }
+ /**
+ * @returns Buffer
+ */
+ toBuffer() {
+ return this.data;
+ }
+ /**
+ * @returns string
+ */
+ toString() {
+ return this.data.toString("hex");
}
- const self = new NPSMessagePayload();
- self.data = data;
- return self;
- }
-
- /**
- * @returns Buffer
- */
- toBuffer() {
- return this.data;
- }
-
- /**
- * @returns string
- */
- toString() {
- return this.data.toString("hex");
- }
}
+//# sourceMappingURL=NPSMessagePayload.js.map
\ No newline at end of file
diff --git a/packages/main/src/NPSMessagePayload.js.map b/packages/main/src/NPSMessagePayload.js.map
new file mode 100644
index 0000000..e216420
--- /dev/null
+++ b/packages/main/src/NPSMessagePayload.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"NPSMessagePayload.js","sourceRoot":"","sources":["NPSMessagePayload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,OAAO,iBAAiB;IAC5B,IAAI,CAAS;IACb;QACE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAY,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,MAAM,eAAe,GAAG,EAAE,CAC3D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/NPSMessagePayload.ts b/packages/main/src/NPSMessagePayload.ts
new file mode 100644
index 0000000..b8bd9aa
--- /dev/null
+++ b/packages/main/src/NPSMessagePayload.ts
@@ -0,0 +1,66 @@
+/**
+ * To be used as a base class for NPS message payloads.
+ *
+ * @implements {INPSPayload}
+ * @class
+ * @property {Buffer} data
+ *
+ * @example
+ * class MyPayload extends NPSMessagePayload {
+ * constructor() {
+ * super();
+ * this.myProperty = 0;
+ * }
+ *
+ * static parse(data) {
+ * this.myProperty = data.readUInt32LE(0);
+ * }
+ *
+ * toBuffer() {
+ * const buffer = Buffer.alloc(4);
+ * buffer.writeUInt32LE(this.myProperty, 0);
+ * return buffer;
+ * }
+ *
+ * toString() {
+ * return `MyPayload: ${this.myProperty}`;
+ * }
+ * }
+ */
+
+export class NPSMessagePayload {
+ data: Buffer;
+ constructor() {
+ this.data = Buffer.alloc(0);
+ }
+
+ /**
+ *
+ * @param {Buffer} data
+ * @returns NPSMessagePayload
+ */
+ static parse(data: Buffer, len = data.length) {
+ if (data.length !== len) {
+ throw new Error(
+ `Invalid payload length: ${data.length}, expected: ${len}`
+ );
+ }
+ const self = new NPSMessagePayload();
+ self.data = data;
+ return self;
+ }
+
+ /**
+ * @returns Buffer
+ */
+ toBuffer() {
+ return this.data;
+ }
+
+ /**
+ * @returns string
+ */
+ toString() {
+ return this.data.toString("hex");
+ }
+}
diff --git a/packages/main/src/NPSUserLoginPayload.d.ts b/packages/main/src/NPSUserLoginPayload.d.ts
new file mode 100644
index 0000000..bf555c6
--- /dev/null
+++ b/packages/main/src/NPSUserLoginPayload.d.ts
@@ -0,0 +1,33 @@
+///
+import { NPSMessagePayload } from "./NPSMessagePayload.js";
+import { INPSPayload } from "./types.js";
+/**
+ * @typedef INPSPayload
+ * @type {import("./NPSMessagePayload.js").INPSPayload}
+ */
+/**
+ * @implements {INPSPayload}
+ * @extends {NPSMessagePayload}
+ * Payload for the NPSUserLogin message.
+ */
+export declare class NPSUserLoginPayload extends NPSMessagePayload implements INPSPayload {
+ ticket: string;
+ sessionKey: string;
+ gameId: string;
+ constructor();
+ /**
+ *
+ * @param {number} len
+ * @param {Buffer} data
+ * @returns {NPSUserLoginPayload}
+ */
+ static parse(data: Buffer, len?: number): NPSUserLoginPayload;
+ /**
+ * @returns {Buffer}
+ */
+ toBuffer(): Buffer;
+ /**
+ * @returns {string}
+ */
+ toString(): string;
+}
diff --git a/packages/main/src/NPSUserLoginPayload.js b/packages/main/src/NPSUserLoginPayload.js
index 3b99c89..f8cdb1a 100644
--- a/packages/main/src/NPSUserLoginPayload.js
+++ b/packages/main/src/NPSUserLoginPayload.js
@@ -1,73 +1,69 @@
import { NPSMessagePayload } from "./NPSMessagePayload.js";
-
/**
* @typedef INPSPayload
* @type {import("./NPSMessagePayload.js").INPSPayload}
*/
-
/**
* @implements {INPSPayload}
* @extends {NPSMessagePayload}
* Payload for the NPSUserLogin message.
*/
export class NPSUserLoginPayload extends NPSMessagePayload {
- constructor() {
- super();
- this.data = Buffer.alloc(0);
- this.ticket = "";
- this.sessionKey = "";
- this.gameId = "";
- }
-
- /**
- *
- * @param {number} len
- * @param {Buffer} data
- * @returns {NPSUserLoginPayload}
- */
- static parse(data, len = data.length) {
- if (data.length !== len) {
- throw new Error(
- `Invalid payload length: ${data.length}, expected: ${len}`,
- );
+ ticket;
+ sessionKey;
+ gameId;
+ constructor() {
+ super();
+ this.data = Buffer.alloc(0);
+ this.ticket = "";
+ this.sessionKey = "";
+ this.gameId = "";
}
-
- const self = new NPSUserLoginPayload();
- try {
- let offset = 0;
- let nextLen = data.readUInt16BE(0);
- self.ticket = data.toString("utf8", 2, nextLen + 2);
- offset = nextLen + 2;
- offset += 2; // Skip one empty word
- nextLen = data.readUInt16BE(offset);
- self.sessionKey = data.toString("hex", offset + 2, offset + 2 + nextLen);
- offset += nextLen + 2;
- nextLen = data.readUInt16BE(offset);
- self.gameId = data
- .subarray(offset + 2, offset + 2 + nextLen)
- .toString("utf8");
- } catch (error) {
- if (!(error instanceof Error)) {
- throw new Error(`Error parsing payload: ${error}`);
- }
- console.error(`Error parsing payload: ${error.message}`);
- throw new Error(`Error parsing payload: ${error.message}`);
+ /**
+ *
+ * @param {number} len
+ * @param {Buffer} data
+ * @returns {NPSUserLoginPayload}
+ */
+ static parse(data, len = data.length) {
+ if (data.length !== len) {
+ throw new Error(`Invalid payload length: ${data.length}, expected: ${len}`);
+ }
+ const self = new NPSUserLoginPayload();
+ try {
+ let offset = 0;
+ let nextLen = data.readUInt16BE(0);
+ self.ticket = data.toString("utf8", 2, nextLen + 2);
+ offset = nextLen + 2;
+ offset += 2; // Skip one empty word
+ nextLen = data.readUInt16BE(offset);
+ self.sessionKey = data.toString("hex", offset + 2, offset + 2 + nextLen);
+ offset += nextLen + 2;
+ nextLen = data.readUInt16BE(offset);
+ self.gameId = data
+ .subarray(offset + 2, offset + 2 + nextLen)
+ .toString("utf8");
+ }
+ catch (error) {
+ if (!(error instanceof Error)) {
+ throw new Error(`Error parsing payload: ${error}`);
+ }
+ console.error(`Error parsing payload: ${error.message}`);
+ throw new Error(`Error parsing payload: ${error.message}`);
+ }
+ return self;
+ }
+ /**
+ * @returns {Buffer}
+ */
+ toBuffer() {
+ throw new Error("Method not implemented.");
+ }
+ /**
+ * @returns {string}
+ */
+ toString() {
+ return `Ticket: ${this.ticket}, SessionKey: ${this.sessionKey}, GameId: ${this.gameId}`;
}
-
- return self;
- }
-
- /**
- * @returns {Buffer}
- */
- toBuffer() {
- throw new Error("Method not implemented.");
- }
-
- /**
- * @returns {string}
- */
- toString() {
- return `Ticket: ${this.ticket}, SessionKey: ${this.sessionKey}, GameId: ${this.gameId}`;
- }
}
+//# sourceMappingURL=NPSUserLoginPayload.js.map
\ No newline at end of file
diff --git a/packages/main/src/NPSUserLoginPayload.js.map b/packages/main/src/NPSUserLoginPayload.js.map
new file mode 100644
index 0000000..1deca5f
--- /dev/null
+++ b/packages/main/src/NPSUserLoginPayload.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"NPSUserLoginPayload.js","sourceRoot":"","sources":["NPSUserLoginPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,OAAO,mBACX,SAAQ,iBAAiB;IAGzB,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,MAAM,CAAS;IAEf;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,IAAY,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,MAAM,eAAe,GAAG,EAAE,CAC3D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC,CAAC,sBAAsB;YACnC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;YACzE,MAAM,IAAI,OAAO,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI;iBACf,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC;iBAC1C,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,WAAW,IAAI,CAAC,MAAM,iBAAiB,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1F,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/NPSUserLoginPayload.ts b/packages/main/src/NPSUserLoginPayload.ts
new file mode 100644
index 0000000..2367481
--- /dev/null
+++ b/packages/main/src/NPSUserLoginPayload.ts
@@ -0,0 +1,81 @@
+import { NPSMessagePayload } from "./NPSMessagePayload.js";
+import { INPSPayload } from "./types.js";
+
+/**
+ * @typedef INPSPayload
+ * @type {import("./NPSMessagePayload.js").INPSPayload}
+ */
+
+/**
+ * @implements {INPSPayload}
+ * @extends {NPSMessagePayload}
+ * Payload for the NPSUserLogin message.
+ */
+export class NPSUserLoginPayload
+ extends NPSMessagePayload
+ implements INPSPayload
+{
+ ticket: string;
+ sessionKey: string;
+ gameId: string;
+
+ constructor() {
+ super();
+ this.data = Buffer.alloc(0);
+ this.ticket = "";
+ this.sessionKey = "";
+ this.gameId = "";
+ }
+
+ /**
+ *
+ * @param {number} len
+ * @param {Buffer} data
+ * @returns {NPSUserLoginPayload}
+ */
+ static parse(data: Buffer, len = data.length) {
+ if (data.length !== len) {
+ throw new Error(
+ `Invalid payload length: ${data.length}, expected: ${len}`
+ );
+ }
+
+ const self = new NPSUserLoginPayload();
+ try {
+ let offset = 0;
+ let nextLen = data.readUInt16BE(0);
+ self.ticket = data.toString("utf8", 2, nextLen + 2);
+ offset = nextLen + 2;
+ offset += 2; // Skip one empty word
+ nextLen = data.readUInt16BE(offset);
+ self.sessionKey = data.toString("hex", offset + 2, offset + 2 + nextLen);
+ offset += nextLen + 2;
+ nextLen = data.readUInt16BE(offset);
+ self.gameId = data
+ .subarray(offset + 2, offset + 2 + nextLen)
+ .toString("utf8");
+ } catch (error) {
+ if (!(error instanceof Error)) {
+ throw new Error(`Error parsing payload: ${error}`);
+ }
+ console.error(`Error parsing payload: ${error.message}`);
+ throw new Error(`Error parsing payload: ${error.message}`);
+ }
+
+ return self;
+ }
+
+ /**
+ * @returns {Buffer}
+ */
+ toBuffer(): Buffer {
+ throw new Error("Method not implemented.");
+ }
+
+ /**
+ * @returns {string}
+ */
+ toString() {
+ return `Ticket: ${this.ticket}, SessionKey: ${this.sessionKey}, GameId: ${this.gameId}`;
+ }
+}
diff --git a/packages/main/src/ShardService.d.ts b/packages/main/src/ShardService.d.ts
new file mode 100644
index 0000000..f9fecd3
--- /dev/null
+++ b/packages/main/src/ShardService.d.ts
@@ -0,0 +1,15 @@
+export declare class ShardService {
+ /**
+ *
+ * @param {number} id
+ * @param {string} name
+ * @param {string} description
+ * @param {string} ip
+ * @param {string} serverGroupName
+ */
+ addShard(id: number, name: string, description: string, ip: string, serverGroupName: string): void;
+ /**
+ * @returns {string}
+ */
+ getShardList(): string;
+}
diff --git a/packages/main/src/ShardService.js b/packages/main/src/ShardService.js
index fc9b6f6..83c8cb1 100644
--- a/packages/main/src/ShardService.js
+++ b/packages/main/src/ShardService.js
@@ -1,122 +1,112 @@
/** @type {Map} */
const shards = new Map();
-
class ShardEntry {
- /**
- * @param {object} values
- * @param {number} values.id
- * @param {string} values.name
- * @param {string} values.description
- * @param {string} values.loginServerIP
- * @param {number} [values.loginServerPort]
- * @param {string} values.lobbyServerIP
- * @param {number} [values.lobbyServerPort]
- * @param {string} values.mcotsServerIP
- * @param {number} [values.statusId]
- * @param {string} [values.statusReason]
- * @param {string} values.serverGroupName
- * @param {number} [values.population]
- * @param {number} [values.maxPersonasPerUser]
- * @param {string} values.diagServerIP
- * @param {number} [values.diagServerPort]
- */
- constructor({
- id,
- name,
- description,
- loginServerIP,
- loginServerPort = 8226,
- lobbyServerIP,
- lobbyServerPort = 7003,
- mcotsServerIP,
- statusId = 0,
- statusReason = "",
- serverGroupName: serverGroupsName,
- population = 0,
- maxPersonasPerUser = 1,
- diagServerIP,
- diagServerPort = 80,
- }) {
- this.id = id;
- this.name = name;
- this.description = description;
- this.loginServerIP = loginServerIP;
- this.loginServerPort = loginServerPort;
- this.lobbyServerIP = lobbyServerIP;
- this.lobbyServerPort = lobbyServerPort;
- this.mcotsServerIP = mcotsServerIP;
- this.statusId = statusId;
- this.statusReason = statusReason;
- this.serverGroupName = serverGroupsName;
- this.population = population;
- this.maxPersonasPerUser = maxPersonasPerUser;
- this.diagServerIP = diagServerIP;
- this.diagServerPort = diagServerPort;
- }
-
- /**
- *
- * @param {number} population
- */
- setPopulation(population) {
- this.population = population;
- }
-
- /**
- * @returns {string}
- */
- formatForWeb() {
- return (
- `[${this.name}]\n` +
- `\tDescription=${this.id}\n` +
- `\tShardId=${this.id}\n` +
- `\tLoginServerIP=${this.loginServerIP}\n` +
- `\tLoginServerPort=${this.loginServerPort}\n` +
- `\tLobbyServerIP=${this.lobbyServerIP}\n` +
- `\tLobbyServerPort=${this.lobbyServerPort}\n` +
- `\tMCOTSServerIP=${this.mcotsServerIP}\n` +
- `\tStatusId=${this.statusId}\n` +
- `\tStatus_Reason=${this.statusReason}\n` +
- `\tServerGroup_Name=${this.serverGroupName}\n` +
- `\tPopulation=${this.population}\n` +
- `\tMaxPersonasPerUser=${this.maxPersonasPerUser}\n` +
- `\tDiagnosticServerHost=${this.diagServerIP}\n` +
- `\tDiagnosticServerPort=${this.diagServerPort}\n`
- );
- }
+ id;
+ name;
+ description;
+ loginServerIP;
+ loginServerPort;
+ lobbyServerIP;
+ lobbyServerPort;
+ mcotsServerIP;
+ statusId;
+ statusReason;
+ serverGroupName;
+ population;
+ maxPersonasPerUser;
+ diagServerIP;
+ diagServerPort;
+ /**
+ * @param {object} values
+ * @param {number} values.id
+ * @param {string} values.name
+ * @param {string} values.description
+ * @param {string} values.loginServerIP
+ * @param {number} [values.loginServerPort]
+ * @param {string} values.lobbyServerIP
+ * @param {number} [values.lobbyServerPort]
+ * @param {string} values.mcotsServerIP
+ * @param {number} [values.statusId]
+ * @param {string} [values.statusReason]
+ * @param {string} values.serverGroupName
+ * @param {number} [values.population]
+ * @param {number} [values.maxPersonasPerUser]
+ * @param {string} values.diagServerIP
+ * @param {number} [values.diagServerPort]
+ */
+ constructor({ id, name, description, loginServerIP, loginServerPort = 8226, lobbyServerIP, lobbyServerPort = 7003, mcotsServerIP, statusId = 0, statusReason = "", serverGroupName: serverGroupsName, population = 0, maxPersonasPerUser = 1, diagServerIP, diagServerPort = 80, }) {
+ this.id = id;
+ this.name = name;
+ this.description = description;
+ this.loginServerIP = loginServerIP;
+ this.loginServerPort = loginServerPort;
+ this.lobbyServerIP = lobbyServerIP;
+ this.lobbyServerPort = lobbyServerPort;
+ this.mcotsServerIP = mcotsServerIP;
+ this.statusId = statusId;
+ this.statusReason = statusReason;
+ this.serverGroupName = serverGroupsName;
+ this.population = population;
+ this.maxPersonasPerUser = maxPersonasPerUser;
+ this.diagServerIP = diagServerIP;
+ this.diagServerPort = diagServerPort;
+ }
+ /**
+ *
+ * @param {number} population
+ */
+ setPopulation(population) {
+ this.population = population;
+ }
+ /**
+ * @returns {string}
+ */
+ formatForWeb() {
+ return (`[${this.name}]\n` +
+ `\tDescription=${this.id}\n` +
+ `\tShardId=${this.id}\n` +
+ `\tLoginServerIP=${this.loginServerIP}\n` +
+ `\tLoginServerPort=${this.loginServerPort}\n` +
+ `\tLobbyServerIP=${this.lobbyServerIP}\n` +
+ `\tLobbyServerPort=${this.lobbyServerPort}\n` +
+ `\tMCOTSServerIP=${this.mcotsServerIP}\n` +
+ `\tStatusId=${this.statusId}\n` +
+ `\tStatus_Reason=${this.statusReason}\n` +
+ `\tServerGroup_Name=${this.serverGroupName}\n` +
+ `\tPopulation=${this.population}\n` +
+ `\tMaxPersonasPerUser=${this.maxPersonasPerUser}\n` +
+ `\tDiagnosticServerHost=${this.diagServerIP}\n` +
+ `\tDiagnosticServerPort=${this.diagServerPort}\n`);
+ }
}
-
export class ShardService {
- /**
- *
- * @param {number} id
- * @param {string} name
- * @param {string} description
- * @param {string} ip
- * @param {string} serverGroupName
- */
- addShard(id, name, description, ip, serverGroupName) {
- shards.set(
- id,
- new ShardEntry({
- id,
- name,
- description,
- loginServerIP: ip,
- lobbyServerIP: ip,
- serverGroupName,
- mcotsServerIP: ip,
- diagServerIP: ip,
- }),
- );
- }
-
- /**
- * @returns {string}
- */
- getShardList() {
- return Array.from(shards.values())
- .map((entry) => entry.formatForWeb())
- .join("\n\n");
- }
+ /**
+ *
+ * @param {number} id
+ * @param {string} name
+ * @param {string} description
+ * @param {string} ip
+ * @param {string} serverGroupName
+ */
+ addShard(id, name, description, ip, serverGroupName) {
+ shards.set(id, new ShardEntry({
+ id,
+ name,
+ description,
+ loginServerIP: ip,
+ lobbyServerIP: ip,
+ serverGroupName,
+ mcotsServerIP: ip,
+ diagServerIP: ip,
+ }));
+ }
+ /**
+ * @returns {string}
+ */
+ getShardList() {
+ return Array.from(shards.values())
+ .map((entry) => entry.formatForWeb())
+ .join("\n\n");
+ }
}
+//# sourceMappingURL=ShardService.js.map
\ No newline at end of file
diff --git a/packages/main/src/ShardService.js.map b/packages/main/src/ShardService.js.map
new file mode 100644
index 0000000..d79dca7
--- /dev/null
+++ b/packages/main/src/ShardService.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ShardService.js","sourceRoot":"","sources":["ShardService.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,MAAM,GAA6B,IAAI,GAAG,EAAE,CAAC;AAEnD,MAAM,UAAU;IACd,EAAE,CAAS;IACX,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,eAAe,CAAS;IACxB,aAAa,CAAS;IACtB,eAAe,CAAS;IACxB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,YAAY,CAAS;IACrB,eAAe,CAAS;IACxB,UAAU,CAAS;IACnB,kBAAkB,CAAS;IAC3B,YAAY,CAAS;IACrB,cAAc,CAAS;IACvB;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,EACV,EAAE,EACF,IAAI,EACJ,WAAW,EACX,aAAa,EACb,eAAe,GAAG,IAAI,EACtB,aAAa,EACb,eAAe,GAAG,IAAI,EACtB,aAAa,EACb,QAAQ,GAAG,CAAC,EACZ,YAAY,GAAG,EAAE,EACjB,eAAe,EAAE,gBAAgB,EACjC,UAAU,GAAG,CAAC,EACd,kBAAkB,GAAG,CAAC,EACtB,YAAY,EACZ,cAAc,GAAG,EAAE,GAC6T;QAChV,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,UAAkB;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CACL,IAAI,IAAI,CAAC,IAAI,KAAK;YAClB,iBAAiB,IAAI,CAAC,EAAE,IAAI;YAC5B,aAAa,IAAI,CAAC,EAAE,IAAI;YACxB,mBAAmB,IAAI,CAAC,aAAa,IAAI;YACzC,qBAAqB,IAAI,CAAC,eAAe,IAAI;YAC7C,mBAAmB,IAAI,CAAC,aAAa,IAAI;YACzC,qBAAqB,IAAI,CAAC,eAAe,IAAI;YAC7C,mBAAmB,IAAI,CAAC,aAAa,IAAI;YACzC,cAAc,IAAI,CAAC,QAAQ,IAAI;YAC/B,mBAAmB,IAAI,CAAC,YAAY,IAAI;YACxC,sBAAsB,IAAI,CAAC,eAAe,IAAI;YAC9C,gBAAgB,IAAI,CAAC,UAAU,IAAI;YACnC,wBAAwB,IAAI,CAAC,kBAAkB,IAAI;YACnD,0BAA0B,IAAI,CAAC,YAAY,IAAI;YAC/C,0BAA0B,IAAI,CAAC,cAAc,IAAI,CAClD,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAU,EAAE,IAAY,EAAE,WAAmB,EAAE,EAAU,EAAE,eAAuB;QACzF,MAAM,CAAC,GAAG,CACR,EAAE,EACF,IAAI,UAAU,CAAC;YACb,EAAE;YACF,IAAI;YACJ,WAAW;YACX,aAAa,EAAE,EAAE;YACjB,aAAa,EAAE,EAAE;YACjB,eAAe;YACf,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SACjB,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;aACpC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/ShardService.ts b/packages/main/src/ShardService.ts
new file mode 100644
index 0000000..bf80eb7
--- /dev/null
+++ b/packages/main/src/ShardService.ts
@@ -0,0 +1,139 @@
+import { IShardEntry } from "./types.js";
+
+/** @type {Map} */
+const shards: Map = new Map();
+
+class ShardEntry {
+ id: number;
+ name: string;
+ description: string;
+ loginServerIP: string;
+ loginServerPort: number;
+ lobbyServerIP: string;
+ lobbyServerPort: number;
+ mcotsServerIP: string;
+ statusId: number;
+ statusReason: string;
+ serverGroupName: string;
+ population: number;
+ maxPersonasPerUser: number;
+ diagServerIP: string;
+ diagServerPort: number;
+ /**
+ * @param {object} values
+ * @param {number} values.id
+ * @param {string} values.name
+ * @param {string} values.description
+ * @param {string} values.loginServerIP
+ * @param {number} [values.loginServerPort]
+ * @param {string} values.lobbyServerIP
+ * @param {number} [values.lobbyServerPort]
+ * @param {string} values.mcotsServerIP
+ * @param {number} [values.statusId]
+ * @param {string} [values.statusReason]
+ * @param {string} values.serverGroupName
+ * @param {number} [values.population]
+ * @param {number} [values.maxPersonasPerUser]
+ * @param {string} values.diagServerIP
+ * @param {number} [values.diagServerPort]
+ */
+ constructor({
+ id,
+ name,
+ description,
+ loginServerIP,
+ loginServerPort = 8226,
+ lobbyServerIP,
+ lobbyServerPort = 7003,
+ mcotsServerIP,
+ statusId = 0,
+ statusReason = "",
+ serverGroupName: serverGroupsName,
+ population = 0,
+ maxPersonasPerUser = 1,
+ diagServerIP,
+ diagServerPort = 80,
+ }: { id: number; name: string; description: string; loginServerIP: string; loginServerPort?: number; lobbyServerIP: string; lobbyServerPort?: number; mcotsServerIP: string; statusId?: number; statusReason?: string; serverGroupName: string; population?: number; maxPersonasPerUser?: number; diagServerIP: string; diagServerPort?: number; }) {
+ this.id = id;
+ this.name = name;
+ this.description = description;
+ this.loginServerIP = loginServerIP;
+ this.loginServerPort = loginServerPort;
+ this.lobbyServerIP = lobbyServerIP;
+ this.lobbyServerPort = lobbyServerPort;
+ this.mcotsServerIP = mcotsServerIP;
+ this.statusId = statusId;
+ this.statusReason = statusReason;
+ this.serverGroupName = serverGroupsName;
+ this.population = population;
+ this.maxPersonasPerUser = maxPersonasPerUser;
+ this.diagServerIP = diagServerIP;
+ this.diagServerPort = diagServerPort;
+ }
+
+ /**
+ *
+ * @param {number} population
+ */
+ setPopulation(population: number) {
+ this.population = population;
+ }
+
+ /**
+ * @returns {string}
+ */
+ formatForWeb(): string {
+ return (
+ `[${this.name}]\n` +
+ `\tDescription=${this.id}\n` +
+ `\tShardId=${this.id}\n` +
+ `\tLoginServerIP=${this.loginServerIP}\n` +
+ `\tLoginServerPort=${this.loginServerPort}\n` +
+ `\tLobbyServerIP=${this.lobbyServerIP}\n` +
+ `\tLobbyServerPort=${this.lobbyServerPort}\n` +
+ `\tMCOTSServerIP=${this.mcotsServerIP}\n` +
+ `\tStatusId=${this.statusId}\n` +
+ `\tStatus_Reason=${this.statusReason}\n` +
+ `\tServerGroup_Name=${this.serverGroupName}\n` +
+ `\tPopulation=${this.population}\n` +
+ `\tMaxPersonasPerUser=${this.maxPersonasPerUser}\n` +
+ `\tDiagnosticServerHost=${this.diagServerIP}\n` +
+ `\tDiagnosticServerPort=${this.diagServerPort}\n`
+ );
+ }
+}
+
+export class ShardService {
+ /**
+ *
+ * @param {number} id
+ * @param {string} name
+ * @param {string} description
+ * @param {string} ip
+ * @param {string} serverGroupName
+ */
+ addShard(id: number, name: string, description: string, ip: string, serverGroupName: string) {
+ shards.set(
+ id,
+ new ShardEntry({
+ id,
+ name,
+ description,
+ loginServerIP: ip,
+ lobbyServerIP: ip,
+ serverGroupName,
+ mcotsServerIP: ip,
+ diagServerIP: ip,
+ }),
+ );
+ }
+
+ /**
+ * @returns {string}
+ */
+ getShardList(): string {
+ return Array.from(shards.values())
+ .map((entry) => entry.formatForWeb())
+ .join("\n\n");
+ }
+}
diff --git a/packages/main/src/TCPServer.d.ts b/packages/main/src/TCPServer.d.ts
new file mode 100644
index 0000000..fe7f6d6
--- /dev/null
+++ b/packages/main/src/TCPServer.d.ts
@@ -0,0 +1,25 @@
+///
+import net from "node:net";
+import { TErrorHandler } from "./types.js";
+export declare class TCPServer {
+ port: any;
+ server: net.Server;
+ /**
+ *
+ * @param {number} port
+ * @param {function(net.Server): void} onListening
+ * @param {function(net.Socket): void} onConnection
+ * @param {errorHandler} onServerError
+ */
+ constructor(port: number, onListening: (arg0: net.Server) => void, onConnection: (arg0: net.Socket) => void, onServerError: TErrorHandler);
+ /**
+ * Start the server listening on the configured port.
+ */
+ listen(): void;
+ /**
+ *
+ * @param {errorHandler} onError
+ * @returns {Promise}
+ */
+ close(onError: TErrorHandler): Promise;
+}
diff --git a/packages/main/src/TCPServer.js b/packages/main/src/TCPServer.js
index 4511309..430b213 100644
--- a/packages/main/src/TCPServer.js
+++ b/packages/main/src/TCPServer.js
@@ -1,62 +1,55 @@
// obsidian-spoon is a game server
// Copyright (C) 2024 Molly Crendraven
-
// This program 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.
-
// This program 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 this program. If not, see .
-
import net from "node:net";
-
-/** @typedef errorHandler
- * @type {function(Error): void}
- */
export class TCPServer {
- /**
- *
- * @param {number} port
- * @param {function(net.Server): void} onListening
- * @param {function(net.Socket): void} onConnection
- * @param {errorHandler} onServerError
- */
- constructor(port, onListening, onConnection, onServerError) {
- this.port = port;
- this.server = net.createServer(onConnection);
- this.server.on("error", onServerError);
- this.server.on("listening", () => {
- onListening(this.server);
- });
- }
-
- /**
- * Start the server listening on the configured port.
- */
- listen() {
- this.server.listen(this.port);
- }
-
- /**
- *
- * @param {errorHandler} onError
- * @returns {Promise}
- */
- async close(onError) {
- return new Promise((resolve, reject) => {
- this.server.close((err) => {
- if (err) {
- onError(err);
- reject(err);
- }
- resolve();
- });
- });
- }
+ port;
+ server;
+ /**
+ *
+ * @param {number} port
+ * @param {function(net.Server): void} onListening
+ * @param {function(net.Socket): void} onConnection
+ * @param {errorHandler} onServerError
+ */
+ constructor(port, onListening, onConnection, onServerError) {
+ this.port = port;
+ this.server = net.createServer(onConnection);
+ this.server.on("error", onServerError);
+ this.server.on("listening", () => {
+ onListening(this.server);
+ });
+ }
+ /**
+ * Start the server listening on the configured port.
+ */
+ listen() {
+ this.server.listen(this.port);
+ }
+ /**
+ *
+ * @param {errorHandler} onError
+ * @returns {Promise}
+ */
+ async close(onError) {
+ return new Promise((resolve, reject) => {
+ this.server.close((err) => {
+ if (err) {
+ onError(err);
+ reject(err);
+ }
+ resolve();
+ });
+ });
+ }
}
+//# sourceMappingURL=TCPServer.js.map
\ No newline at end of file
diff --git a/packages/main/src/TCPServer.js.map b/packages/main/src/TCPServer.js.map
new file mode 100644
index 0000000..b419d72
--- /dev/null
+++ b/packages/main/src/TCPServer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TCPServer.js","sourceRoot":"","sources":["TCPServer.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,sCAAsC;AAEtC,uEAAuE;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AAEtC,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAE/C,oEAAoE;AACpE,yEAAyE;AAEzE,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,OAAO,SAAS;IACpB,IAAI,CAAM;IACV,MAAM,CAAa;IACnB;;;;;;OAMG;IACH,YACE,IAAY,EACZ,WAAuC,EACvC,YAAwC,EACxC,aAA4B;QAE5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAC/B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,OAAsB;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,GAAG,CAAC,CAAC;oBACb,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/TCPServer.ts b/packages/main/src/TCPServer.ts
new file mode 100644
index 0000000..d0adba1
--- /dev/null
+++ b/packages/main/src/TCPServer.ts
@@ -0,0 +1,67 @@
+// obsidian-spoon is a game server
+// Copyright (C) 2024 Molly Crendraven
+
+// This program 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.
+
+// This program 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 this program. If not, see .
+
+import net from "node:net";
+import { TErrorHandler } from "./types.js";
+
+export class TCPServer {
+ port: any;
+ server: net.Server;
+ /**
+ *
+ * @param {number} port
+ * @param {function(net.Server): void} onListening
+ * @param {function(net.Socket): void} onConnection
+ * @param {errorHandler} onServerError
+ */
+ constructor(
+ port: number,
+ onListening: (arg0: net.Server) => void,
+ onConnection: (arg0: net.Socket) => void,
+ onServerError: TErrorHandler
+ ) {
+ this.port = port;
+ this.server = net.createServer(onConnection);
+ this.server.on("error", onServerError);
+ this.server.on("listening", () => {
+ onListening(this.server);
+ });
+ }
+
+ /**
+ * Start the server listening on the configured port.
+ */
+ listen() {
+ this.server.listen(this.port);
+ }
+
+ /**
+ *
+ * @param {errorHandler} onError
+ * @returns {Promise}
+ */
+ async close(onError: TErrorHandler): Promise {
+ return new Promise((resolve, reject) => {
+ this.server.close((err) => {
+ if (err) {
+ onError(err);
+ reject(err);
+ }
+ resolve();
+ });
+ });
+ }
+}
diff --git a/packages/main/src/UserLoginService.d.ts b/packages/main/src/UserLoginService.d.ts
new file mode 100644
index 0000000..d1afebc
--- /dev/null
+++ b/packages/main/src/UserLoginService.d.ts
@@ -0,0 +1,36 @@
+export declare class UserLoginService {
+ /**
+ * Returns the customer ID if the user is valid, otherwise -1.
+ *
+ * @param {string} username
+ * @param {string} password
+ * @returns {number}
+ */
+ checkUser(username: string, password: string): number;
+ /**
+ * Creates a token for the given customer ID.
+ *
+ * @param {number} customerId
+ * @returns {string}
+ */
+ createToken(customerId: number): `${string}-${string}-${string}-${string}-${string}`;
+ /**
+ * Checks if the token is valid and returns the customer ID.
+ * If the token is invalid, returns -1.
+ *
+ * @param {string} token
+ * @returns {number}
+ */
+ checkToken(token: string): any;
+ /**
+ * Deletes the token.
+ *
+ * @param {string} token
+ */
+ deleteToken(token: string): void;
+ /**
+ * Deletes all tokens.
+ * @returns {Promise}
+ */
+ deleteAllTokens(): Promise;
+}
diff --git a/packages/main/src/UserLoginService.js b/packages/main/src/UserLoginService.js
index cd88efe..1dfdaef 100644
--- a/packages/main/src/UserLoginService.js
+++ b/packages/main/src/UserLoginService.js
@@ -2,65 +2,58 @@
const users = [{ username: "admin", password: "admin", customerId: 1 }];
/** @type {Map} */
const tokens = new Map();
-
export class UserLoginService {
- /**
- * Returns the customer ID if the user is valid, otherwise -1.
- *
- * @param {string} username
- * @param {string} password
- * @returns {number}
- */
- checkUser(username, password) {
- const user = users.find(
- (user) => user.username === username && user.password === password,
- );
-
- return user ? user.customerId : -1;
- }
-
- /**
- * Creates a token for the given customer ID.
- *
- * @param {number} customerId
- * @returns {string}
- */
- createToken(customerId) {
- const token = crypto.randomUUID();
- tokens.set(token, customerId);
- return token;
- }
-
- /**
- * Checks if the token is valid and returns the customer ID.
- * If the token is invalid, returns -1.
- *
- * @param {string} token
- * @returns {number}
- */
- checkToken(token) {
- const customerId = tokens.get(token);
- return customerId ?? -1;
- }
-
- /**
- * Deletes the token.
- *
- * @param {string} token
- */
- deleteToken(token) {
- tokens.delete(token);
- }
-
- /**
- * Deletes all tokens.
- * @returns {Promise}
- */
- async deleteAllTokens() {
- return new Promise((resolve) => {
- tokens.clear();
- console.log("All tokens deleted");
- resolve();
- });
- }
+ /**
+ * Returns the customer ID if the user is valid, otherwise -1.
+ *
+ * @param {string} username
+ * @param {string} password
+ * @returns {number}
+ */
+ checkUser(username, password) {
+ const user = users.find((user) => user.username === username && user.password === password);
+ return user ? user.customerId : -1;
+ }
+ /**
+ * Creates a token for the given customer ID.
+ *
+ * @param {number} customerId
+ * @returns {string}
+ */
+ createToken(customerId) {
+ const token = crypto.randomUUID();
+ tokens.set(token, customerId);
+ return token;
+ }
+ /**
+ * Checks if the token is valid and returns the customer ID.
+ * If the token is invalid, returns -1.
+ *
+ * @param {string} token
+ * @returns {number}
+ */
+ checkToken(token) {
+ const customerId = tokens.get(token);
+ return customerId ?? -1;
+ }
+ /**
+ * Deletes the token.
+ *
+ * @param {string} token
+ */
+ deleteToken(token) {
+ tokens.delete(token);
+ }
+ /**
+ * Deletes all tokens.
+ * @returns {Promise}
+ */
+ async deleteAllTokens() {
+ return new Promise((resolve) => {
+ tokens.clear();
+ console.log("All tokens deleted");
+ resolve();
+ });
+ }
}
+//# sourceMappingURL=UserLoginService.js.map
\ No newline at end of file
diff --git a/packages/main/src/UserLoginService.js.map b/packages/main/src/UserLoginService.js.map
new file mode 100644
index 0000000..682e529
--- /dev/null
+++ b/packages/main/src/UserLoginService.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"UserLoginService.js","sourceRoot":"","sources":["UserLoginService.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,kCAAkC;AAClC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAEzB,MAAM,OAAO,gBAAgB;IAC3B;;;;;;OAMG;IACH,SAAS,CAAC,QAAgB,EAAE,QAAgB;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CACnE,CAAC;QAEF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,UAAkB;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,KAAa;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,KAAa;QACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/UserLoginService.ts b/packages/main/src/UserLoginService.ts
new file mode 100644
index 0000000..8dbb645
--- /dev/null
+++ b/packages/main/src/UserLoginService.ts
@@ -0,0 +1,66 @@
+/** @type {Array<{username: string, password: string, customerId: number}>} */
+const users = [{ username: "admin", password: "admin", customerId: 1 }];
+/** @type {Map} */
+const tokens = new Map();
+
+export class UserLoginService {
+ /**
+ * Returns the customer ID if the user is valid, otherwise -1.
+ *
+ * @param {string} username
+ * @param {string} password
+ * @returns {number}
+ */
+ checkUser(username: string, password: string) {
+ const user = users.find(
+ (user) => user.username === username && user.password === password,
+ );
+
+ return user ? user.customerId : -1;
+ }
+
+ /**
+ * Creates a token for the given customer ID.
+ *
+ * @param {number} customerId
+ * @returns {string}
+ */
+ createToken(customerId: number) {
+ const token = crypto.randomUUID();
+ tokens.set(token, customerId);
+ return token;
+ }
+
+ /**
+ * Checks if the token is valid and returns the customer ID.
+ * If the token is invalid, returns -1.
+ *
+ * @param {string} token
+ * @returns {number}
+ */
+ checkToken(token: string) {
+ const customerId = tokens.get(token);
+ return customerId ?? -1;
+ }
+
+ /**
+ * Deletes the token.
+ *
+ * @param {string} token
+ */
+ deleteToken(token: string) {
+ tokens.delete(token);
+ }
+
+ /**
+ * Deletes all tokens.
+ * @returns {Promise}
+ */
+ async deleteAllTokens(): Promise {
+ return new Promise((resolve) => {
+ tokens.clear();
+ console.log("All tokens deleted");
+ resolve();
+ });
+ }
+}
diff --git a/packages/main/src/WebServer.d.ts b/packages/main/src/WebServer.d.ts
new file mode 100644
index 0000000..4a839e0
--- /dev/null
+++ b/packages/main/src/WebServer.d.ts
@@ -0,0 +1,31 @@
+///
+import http from "node:http";
+import { TErrorHandler } from "./types.js";
+/** @typedef connectionHandler
+ * @type {function(NodeJS.Socket): void}
+ */
+/** @typedef errorHandler
+ * @type {function(Error): void}
+ */
+export declare class WebServer {
+ port: number;
+ server: http.Server;
+ /**
+ *
+ * @param {number} port
+ * @param {function(http.Server): void} onListening
+ * @param {function(http.IncomingMessage, http.ServerResponse): void} onConnection
+ * @param {errorHandler} onServerError
+ */
+ constructor(port: number, onListening: (arg0: http.Server) => void, onConnection: (arg0: http.IncomingMessage, arg1: http.ServerResponse) => void, onServerError: TErrorHandler);
+ /**
+ * Start the server listening on the configured port.
+ */
+ listen(): void;
+ /**
+ *
+ * @param {errorHandler} onError
+ * @returns {Promise}
+ */
+ close(onError: TErrorHandler): Promise;
+}
diff --git a/packages/main/src/WebServer.js b/packages/main/src/WebServer.js
index 2e0886a..c00d1d6 100644
--- a/packages/main/src/WebServer.js
+++ b/packages/main/src/WebServer.js
@@ -1,73 +1,67 @@
// obsidian-spoon is a game server
// Copyright (C) 2024 Molly Crendraven
-
// This program 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.
-
// This program 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 this program. If not, see .
-
import * as Sentry from "@sentry/node";
-
import http from "node:http";
import express from "express";
-
/** @typedef connectionHandler
* @type {function(NodeJS.Socket): void}
*/
/** @typedef errorHandler
* @type {function(Error): void}
*/
-
export class WebServer {
- /**
- *
- * @param {number} port
- * @param {function(http.Server): void} onListening
- * @param {function(http.IncomingMessage, http.ServerResponse): void} onConnection
- * @param {errorHandler} onServerError
- */
- constructor(port, onListening, onConnection, onServerError) {
- this.port = port;
- const app = express();
- Sentry.setupExpressErrorHandler(app);
- app.use(onConnection);
- /** @type {http.Server} */
- this.server = http.createServer(app);
- this.server.on("error", onServerError);
- this.server.on("listening", () => {
- onListening(this.server);
- });
- }
-
- /**
- * Start the server listening on the configured port.
- */
- listen() {
- this.server.listen(this.port);
- }
-
- /**
- *
- * @param {errorHandler} onError
- * @returns {Promise}
- */
- async close(onError) {
- return new Promise((resolve, reject) => {
- this.server.close((err) => {
- if (err) {
- onError(err);
- reject(err);
- }
- resolve();
- });
- });
- }
+ port;
+ server;
+ /**
+ *
+ * @param {number} port
+ * @param {function(http.Server): void} onListening
+ * @param {function(http.IncomingMessage, http.ServerResponse): void} onConnection
+ * @param {errorHandler} onServerError
+ */
+ constructor(port, onListening, onConnection, onServerError) {
+ this.port = port;
+ const app = express();
+ Sentry.setupExpressErrorHandler(app);
+ app.use(onConnection);
+ /** @type {http.Server} */
+ this.server = http.createServer(app);
+ this.server.on("error", onServerError);
+ this.server.on("listening", () => {
+ onListening(this.server);
+ });
+ }
+ /**
+ * Start the server listening on the configured port.
+ */
+ listen() {
+ this.server.listen(this.port);
+ }
+ /**
+ *
+ * @param {errorHandler} onError
+ * @returns {Promise}
+ */
+ async close(onError) {
+ return new Promise((resolve, reject) => {
+ this.server.close((err) => {
+ if (err) {
+ onError(err);
+ reject(err);
+ }
+ resolve();
+ });
+ });
+ }
}
+//# sourceMappingURL=WebServer.js.map
\ No newline at end of file
diff --git a/packages/main/src/WebServer.js.map b/packages/main/src/WebServer.js.map
new file mode 100644
index 0000000..9bc6857
--- /dev/null
+++ b/packages/main/src/WebServer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["WebServer.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,sCAAsC;AAEtC,uEAAuE;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AAEtC,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAE/C,oEAAoE;AACpE,yEAAyE;AAEzE,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B;;GAEG;AACH;;GAEG;AAEH,MAAM,OAAO,SAAS;IACpB,IAAI,CAAS;IACb,MAAM,CAAuE;IAC7E;;;;;;OAMG;IACH,YACE,IAAY,EACZ,WAAwC,EACxC,YAGS,EACT,aAA4B;QAE5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtB,0BAA0B;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAC/B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,OAAsB;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,GAAG,CAAC,CAAC;oBACb,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
\ No newline at end of file
diff --git a/packages/main/src/WebServer.ts b/packages/main/src/WebServer.ts
new file mode 100644
index 0000000..b3e5d83
--- /dev/null
+++ b/packages/main/src/WebServer.ts
@@ -0,0 +1,84 @@
+// obsidian-spoon is a game server
+// Copyright (C) 2024 Molly Crendraven
+
+// This program 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.
+
+// This program 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 this program. If not, see .
+
+import * as Sentry from "@sentry/node";
+
+import http from "node:http";
+import express from "express";
+import { TErrorHandler } from "./types.js";
+
+/** @typedef connectionHandler
+ * @type {function(NodeJS.Socket): void}
+ */
+/** @typedef errorHandler
+ * @type {function(Error): void}
+ */
+
+export class WebServer {
+ port: number;
+ server: http.Server;
+ /**
+ *
+ * @param {number} port
+ * @param {function(http.Server): void} onListening
+ * @param {function(http.IncomingMessage, http.ServerResponse): void} onConnection
+ * @param {errorHandler} onServerError
+ */
+ constructor(
+ port: number,
+ onListening: (arg0: http.Server) => void,
+ onConnection: (
+ arg0: http.IncomingMessage,
+ arg1: http.ServerResponse
+ ) => void,
+ onServerError: TErrorHandler
+ ) {
+ this.port = port;
+ const app = express();
+ Sentry.setupExpressErrorHandler(app);
+ app.use(onConnection);
+ /** @type {http.Server} */
+ this.server = http.createServer(app);
+ this.server.on("error", onServerError);
+ this.server.on("listening", () => {
+ onListening(this.server);
+ });
+ }
+
+ /**
+ * Start the server listening on the configured port.
+ */
+ listen() {
+ this.server.listen(this.port);
+ }
+
+ /**
+ *
+ * @param {errorHandler} onError
+ * @returns {Promise}
+ */
+ async close(onError: TErrorHandler): Promise {
+ return new Promise((resolve, reject) => {
+ this.server.close((err) => {
+ if (err) {
+ onError(err);
+ reject(err);
+ }
+ resolve();
+ });
+ });
+ }
+}
diff --git a/packages/main/src/handleUserLogin.d.ts b/packages/main/src/handleUserLogin.d.ts
new file mode 100644
index 0000000..d4456df
--- /dev/null
+++ b/packages/main/src/handleUserLogin.d.ts
@@ -0,0 +1,8 @@
+import { NPSUserLoginPayload } from "./NPSUserLoginPayload.js";
+import { TClientCallback } from "./types.js";
+/**
+ *
+ * @param {import("./NPSUserLoginPayload.js").NPSUserLoginPayload} payload
+ * @param {TClientCallback} clientCallback
+ */
+export declare function handleUserLogin(payload: NPSUserLoginPayload, clientCallback: TClientCallback): void;
diff --git a/packages/main/src/handleUserLogin.js b/packages/main/src/handleUserLogin.js
new file mode 100644
index 0000000..0516592
--- /dev/null
+++ b/packages/main/src/handleUserLogin.js
@@ -0,0 +1,10 @@
+/**
+ *
+ * @param {import("./NPSUserLoginPayload.js").NPSUserLoginPayload} payload
+ * @param {TClientCallback} clientCallback
+ */
+export function handleUserLogin(payload, clientCallback) {
+ const userLoginPayload = payload;
+ console.log(`User login: ${userLoginPayload.toString()}`);
+}
+//# sourceMappingURL=handleUserLogin.js.map
\ No newline at end of file
diff --git a/packages/main/src/handleUserLogin.js.map b/packages/main/src/handleUserLogin.js.map
new file mode 100644
index 0000000..152be12
--- /dev/null
+++ b/packages/main/src/handleUserLogin.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"handleUserLogin.js","sourceRoot":"","sources":["handleUserLogin.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAA4B,EAAE,cAA+B;IAC3F,MAAM,gBAAgB,GAAG,OAAO,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,eAAe,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC"}
\ No newline at end of file
diff --git a/packages/main/src/handleUserLogin.ts b/packages/main/src/handleUserLogin.ts
new file mode 100644
index 0000000..f2ceb84
--- /dev/null
+++ b/packages/main/src/handleUserLogin.ts
@@ -0,0 +1,12 @@
+import { NPSUserLoginPayload } from "./NPSUserLoginPayload.js";
+import { TClientCallback } from "./types.js";
+
+/**
+ *
+ * @param {import("./NPSUserLoginPayload.js").NPSUserLoginPayload} payload
+ * @param {TClientCallback} clientCallback
+ */
+export function handleUserLogin(payload: NPSUserLoginPayload, clientCallback: TClientCallback) {
+ const userLoginPayload = payload;
+ console.log(`User login: ${userLoginPayload.toString()}`);
+}
diff --git a/packages/main/src/index.d.ts b/packages/main/src/index.d.ts
index 9d0deb8..d807c68 100644
--- a/packages/main/src/index.d.ts
+++ b/packages/main/src/index.d.ts
@@ -1,19 +1,12 @@
-declare module "obsidian-main" {
- export default function main(): void;
-
- export interface KeypressEvent {
- sequence: string;
- name: string;
- ctrl: boolean;
- meta: boolean;
- shift: boolean;
- }
-
- export type Task = () => Promise | void | any;
-
- export interface IShardEntry {
- formatForWeb(): string;
- }
-
- export function _atExit(exitCode = 0): void;
-}
+/**
+ *
+ * @param {Error} err
+ */
+declare function onServerError(err: Error): void;
+/**
+ *
+ * @param {number} exitCode
+ */
+declare function _atExit(exitCode?: number): Promise;
+declare function main(): void;
+export { main, _atExit, onServerError };
diff --git a/packages/main/src/index.js b/packages/main/src/index.js
index 91c5b1d..26d753e 100644
--- a/packages/main/src/index.js
+++ b/packages/main/src/index.js
@@ -1,19 +1,15 @@
// probable-spoon is a game server
// Copyright (C) 2024 Molly Crendraven
-
// This program 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.
-
// This program 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 this program. If not, see .
-
import { MainLoop } from "./MainLoop.js";
import { ShardService } from "./ShardService.js";
import { TCPServer } from "./TCPServer.js";
@@ -21,152 +17,108 @@ import { UserLoginService } from "./UserLoginService.js";
import { WebServer } from "./WebServer.js";
import { onNPSData } from "./nps.js";
import { onWebRequest } from "./web.js";
-import crypto from "node:crypto";
+import * as crypto from "node:crypto";
import * as Sentry from "@sentry/node";
-
/**
* @param {import("node:net").Socket} socket
- * @param {(port:number, data: Buffer, sendToClient: (data: Buffer) => void) => void} onData
+ * @param {TOnDataHandler} onData
*/
function onSocketConnection(socket, onData) {
- console.log("Connection established");
-
- const connectionId = crypto.randomUUID();
-
- Sentry.setTag("connection_id", connectionId);
-
- /**
- * Callback for sending data to the client.
- * @param {Buffer} data
- */
- const sendToClient = (data) => {
- socket.write(data);
- };
-
- socket.on("data", (data) => {
- onData(socket.localPort ?? -1, data, sendToClient);
- });
+ console.log("Connection established");
+ const connectionId = crypto.randomUUID();
+ Sentry.setTag("connection_id", connectionId);
+ /**
+ * Callback for sending data to the client.
+ * @param {Buffer} data
+ */
+ const sendToClient = (data) => {
+ socket.write(data);
+ };
+ socket.on("data", (data) => {
+ onData(socket.localPort ?? -1, data, sendToClient);
+ });
}
-
/**
*
* @param {Error} err
*/
-export function onServerError(err) {
- console.error(`Server error: ${err.message}`);
+function onServerError(err) {
+ console.error(`Server error: ${err.message}`);
}
-
/**
*
* @param {Error | undefined} err
*/
-function onClose(err = undefined) {
- if (err) {
- console.error(`Server close error: ${err.message}`);
- }
- console.log("Server closed");
+function onClose(err) {
+ if (err) {
+ console.error(`Server close error: ${err.message}`);
+ }
+ console.log("Server closed");
}
-
/**
*
* @param {import("net").Server} s
* @returns string
*/
function getPort(s) {
- const address = s.address();
- if (address === null || typeof address === "string") {
- return String(address);
- }
- return String(address.port);
+ const address = s.address();
+ if (address === null || typeof address === "string") {
+ return String(address);
+ }
+ return String(address.port);
}
-
/**
* @param {import("node:http").Server} s
*/
function onWebListening(s) {
- const port = getPort(s);
- console.log(`Web server listening on port ${port}`);
- s.on("close", () => {
- console.log(`Server on port ${port} closed`);
- });
+ const port = getPort(s);
+ console.log(`Web server listening on port ${port}`);
+ s.on("close", () => {
+ console.log(`Server on port ${port} closed`);
+ });
}
-
/**
* @param {import("net").Server} s
*/
function onSocketListening(s) {
- const port = getPort(s);
-
- console.log(`Server listening on port ${port}`);
- s.on("close", () => {
- console.log(`Server on port ${port} closed`);
- });
- s.on("error", (/** @type {Error} */ err) => {
- console.error(`Server on port ${port} errored: ${err.message}`);
- });
+ const port = getPort(s);
+ console.log(`Server listening on port ${port}`);
+ s.on("close", () => {
+ console.log(`Server on port ${port} closed`);
+ });
+ s.on("error", (err) => {
+ console.error(`Server on port ${port} errored: ${err.message}`);
+ });
}
-
/**
*
* @param {number} exitCode
*/
-export async function _atExit(exitCode = 0) {
- console.log("Goodbye, world!");
- process.exit(exitCode);
+async function _atExit(exitCode = 0) {
+ console.log("Goodbye, world!");
+ process.exit(exitCode);
}
-
// === MAIN ===
-
-export default function main() {
- process.on("exit", (/** @type {number} **/ code) => {
- console.log(`Server exited with code ${code}`);
- });
-
- console.log("Starting obsidian...");
- const authServer = new WebServer(
- 3000,
- onWebListening,
- onWebRequest,
- onServerError,
- );
- const loginServer = new TCPServer(
- 8226,
- onSocketListening,
- (socket) => onSocketConnection(socket, onNPSData),
- onServerError,
- );
- const personaServer = new TCPServer(
- 8228,
- onSocketListening,
- (socket) => onSocketConnection(socket, onNPSData),
- onServerError,
- );
-
- const shardService = new ShardService();
- shardService.addShard(
- 1,
- "Rusty Motors",
- "A test shard",
- "10.10.5.20",
- "Group - 1",
- );
-
- const userLoginService = new UserLoginService();
-
- const mainLoop = new MainLoop();
- mainLoop.addTask("start", authServer.listen.bind(authServer));
- mainLoop.addTask("start", loginServer.listen.bind(loginServer));
- mainLoop.addTask("start", personaServer.listen.bind(personaServer));
- mainLoop.addTask("stop", authServer.close.bind(authServer, onClose));
- mainLoop.addTask("stop", loginServer.close.bind(loginServer, onServerError));
- mainLoop.addTask(
- "stop",
- personaServer.close.bind(personaServer, onServerError),
- );
- mainLoop.addTask(
- "stop",
- userLoginService.deleteAllTokens.bind(userLoginService),
- );
-
- mainLoop.start();
+function main() {
+ process.on("exit", (/** @type {number} **/ code) => {
+ console.log(`Server exited with code ${code}`);
+ });
+ console.log("Starting obsidian...");
+ const authServer = new WebServer(3000, onWebListening, onWebRequest, onServerError);
+ const loginServer = new TCPServer(8226, onSocketListening, (socket) => onSocketConnection(socket, onNPSData), onServerError);
+ const personaServer = new TCPServer(8228, onSocketListening, (socket) => onSocketConnection(socket, onNPSData), onServerError);
+ const shardService = new ShardService();
+ shardService.addShard(1, "Rusty Motors", "A test shard", "10.10.5.20", "Group - 1");
+ const userLoginService = new UserLoginService();
+ const mainLoop = new MainLoop();
+ mainLoop.addTask("start", authServer.listen.bind(authServer));
+ mainLoop.addTask("start", loginServer.listen.bind(loginServer));
+ mainLoop.addTask("start", personaServer.listen.bind(personaServer));
+ mainLoop.addTask("stop", authServer.close.bind(authServer, onClose));
+ mainLoop.addTask("stop", loginServer.close.bind(loginServer, onServerError));
+ mainLoop.addTask("stop", personaServer.close.bind(personaServer, onServerError));
+ mainLoop.addTask("stop", userLoginService.deleteAllTokens.bind(userLoginService));
+ mainLoop.start();
}
+export { main, _atExit, onServerError };
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/packages/main/src/index.js.map b/packages/main/src/index.js.map
new file mode 100644
index 0000000..8afb864
--- /dev/null
+++ b/packages/main/src/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,sCAAsC;AAEtC,uEAAuE;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AAEtC,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAE/C,oEAAoE;AACpE,yEAAyE;AAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAUvC;;;GAGG;AACH,SAAS,kBAAkB,CAAC,MAAkB,EAAE,MAAsB;IACpE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAEzC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAE7C;;;OAGG;IACH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;QACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAU;IAC/B,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,CAAa;IAC5B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,CAAc;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACjB,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,CAAa;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAExB,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACjB,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,aAAa,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,OAAO,CAAC,QAAQ,GAAG,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,eAAe;AAEf,SAAS,IAAI;IACX,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAE;QACjD,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,SAAS,CAC9B,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,aAAa,CACd,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,SAAS,CAC/B,IAAI,EACJ,iBAAiB,EACjB,CAAC,MAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,EAC7D,aAAa,CACd,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,SAAS,CACjC,IAAI,EACJ,iBAAiB,EACjB,CAAC,MAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,EAC7D,aAAa,CACd,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,YAAY,CAAC,QAAQ,CACnB,CAAC,EACD,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,CACZ,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEhD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,OAAO,CACd,MAAM,EACN,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CACvD,CAAC;IACF,QAAQ,CAAC,OAAO,CACd,MAAM,EACN,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CACxD,CAAC;IAEF,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC"}
\ No newline at end of file
diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts
new file mode 100644
index 0000000..e8bf0fa
--- /dev/null
+++ b/packages/main/src/index.ts
@@ -0,0 +1,182 @@
+// probable-spoon is a game server
+// Copyright (C) 2024 Molly Crendraven
+
+// This program 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.
+
+// This program 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 this program. If not, see .
+
+import { MainLoop } from "./MainLoop.js";
+import { ShardService } from "./ShardService.js";
+import { TCPServer } from "./TCPServer.js";
+import { UserLoginService } from "./UserLoginService.js";
+import { WebServer } from "./WebServer.js";
+import { onNPSData } from "./nps.js";
+import { onWebRequest } from "./web.js";
+import * as crypto from "node:crypto";
+import * as Sentry from "@sentry/node";
+import * as net from "node:net";
+import * as http from "node:http";
+
+type TOnDataHandler = (
+ port: number,
+ data: Buffer,
+ sendToClient: (data: Buffer) => void
+) => void;
+
+/**
+ * @param {import("node:net").Socket} socket
+ * @param {TOnDataHandler} onData
+ */
+function onSocketConnection(socket: net.Socket, onData: TOnDataHandler) {
+ console.log("Connection established");
+
+ const connectionId = crypto.randomUUID();
+
+ Sentry.setTag("connection_id", connectionId);
+
+ /**
+ * Callback for sending data to the client.
+ * @param {Buffer} data
+ */
+ const sendToClient = (data: Buffer) => {
+ socket.write(data);
+ };
+
+ socket.on("data", (data) => {
+ onData(socket.localPort ?? -1, data, sendToClient);
+ });
+}
+
+/**
+ *
+ * @param {Error} err
+ */
+function onServerError(err: Error) {
+ console.error(`Server error: ${err.message}`);
+}
+
+/**
+ *
+ * @param {Error | undefined} err
+ */
+function onClose(err?: Error) {
+ if (err) {
+ console.error(`Server close error: ${err.message}`);
+ }
+ console.log("Server closed");
+}
+
+/**
+ *
+ * @param {import("net").Server} s
+ * @returns string
+ */
+function getPort(s: net.Server) {
+ const address = s.address();
+ if (address === null || typeof address === "string") {
+ return String(address);
+ }
+ return String(address.port);
+}
+
+/**
+ * @param {import("node:http").Server} s
+ */
+function onWebListening(s: http.Server) {
+ const port = getPort(s);
+ console.log(`Web server listening on port ${port}`);
+ s.on("close", () => {
+ console.log(`Server on port ${port} closed`);
+ });
+}
+
+/**
+ * @param {import("net").Server} s
+ */
+function onSocketListening(s: net.Server) {
+ const port = getPort(s);
+
+ console.log(`Server listening on port ${port}`);
+ s.on("close", () => {
+ console.log(`Server on port ${port} closed`);
+ });
+ s.on("error", (err: Error) => {
+ console.error(`Server on port ${port} errored: ${err.message}`);
+ });
+}
+
+/**
+ *
+ * @param {number} exitCode
+ */
+async function _atExit(exitCode = 0) {
+ console.log("Goodbye, world!");
+ process.exit(exitCode);
+}
+
+// === MAIN ===
+
+function main() {
+ process.on("exit", (/** @type {number} **/ code) => {
+ console.log(`Server exited with code ${code}`);
+ });
+
+ console.log("Starting obsidian...");
+ const authServer = new WebServer(
+ 3000,
+ onWebListening,
+ onWebRequest,
+ onServerError
+ );
+ const loginServer = new TCPServer(
+ 8226,
+ onSocketListening,
+ (socket: net.Socket) => onSocketConnection(socket, onNPSData),
+ onServerError
+ );
+ const personaServer = new TCPServer(
+ 8228,
+ onSocketListening,
+ (socket: net.Socket) => onSocketConnection(socket, onNPSData),
+ onServerError
+ );
+
+ const shardService = new ShardService();
+ shardService.addShard(
+ 1,
+ "Rusty Motors",
+ "A test shard",
+ "10.10.5.20",
+ "Group - 1"
+ );
+
+ const userLoginService = new UserLoginService();
+
+ const mainLoop = new MainLoop();
+ mainLoop.addTask("start", authServer.listen.bind(authServer));
+ mainLoop.addTask("start", loginServer.listen.bind(loginServer));
+ mainLoop.addTask("start", personaServer.listen.bind(personaServer));
+ mainLoop.addTask("stop", authServer.close.bind(authServer, onClose));
+ mainLoop.addTask("stop", loginServer.close.bind(loginServer, onServerError));
+ mainLoop.addTask(
+ "stop",
+ personaServer.close.bind(personaServer, onServerError)
+ );
+ mainLoop.addTask(
+ "stop",
+ userLoginService.deleteAllTokens.bind(userLoginService)
+ );
+
+ mainLoop.start();
+}
+
+export { main, _atExit, onServerError };
diff --git a/packages/main/src/nps.d.ts b/packages/main/src/nps.d.ts
new file mode 100644
index 0000000..c3e9033
--- /dev/null
+++ b/packages/main/src/nps.d.ts
@@ -0,0 +1,9 @@
+///
+import { TClientCallback } from "./types.js";
+/**
+ * @param {number} port
+ * @param {Buffer} data
+ * @param {(data: Buffer) => void} sendToClient
+ */
+declare function onNPSData(port: number, data: Buffer, sendToClient: TClientCallback): void;
+export { onNPSData };
diff --git a/packages/main/src/nps.js b/packages/main/src/nps.js
index 302ffdf..1b78a1f 100644
--- a/packages/main/src/nps.js
+++ b/packages/main/src/nps.js
@@ -1,36 +1,25 @@
import { NPSMessage } from "./NPSMessage.js";
-import { NPSUserLoginPayload } from "./NPSUserLoginPayload.js";
-
-/**
- * @typedef INPSPayload
- * @type {import("./NPSMessagePayload.js").INPSPayload}
- */
-
-/** @type {Map INPSPayload>} */
-const payloadMap = new Map();
-
-payloadMap.set(1281, NPSUserLoginPayload.parse);
-
+import { getPayloadHandler, getPayloadParser } from "./payloadMap.js";
/**
* @param {number} port
* @param {Buffer} data
* @param {(data: Buffer) => void} sendToClient
*/
-export function onNPSData(port, data, sendToClient) {
- const message = NPSMessage.parse(data);
- console.log(`Received message on port ${port}: ${message.toString()}`);
-
- const messageType = payloadMap.get(message._header.messageId);
-
- if (!messageType) {
- console.error(`Unknown message type: ${message._header.messageId}`);
- return;
- }
-
- const payload = messageType(
- message.data.data,
- message._header.messageLength - message._header.dataOffset,
- );
-
- console.log(`Parsed payload: ${payload.toString()}`);
+function onNPSData(port, data, sendToClient) {
+ const message = NPSMessage.parse(data);
+ console.log(`Received message on port ${port}: ${message.toString()}`);
+ const messageType = getPayloadParser(message._header.messageId);
+ if (!messageType) {
+ console.error(`Unknown message type: ${message._header.messageId}`);
+ return;
+ }
+ const payload = messageType(message.data.data, message._header.messageLength - message._header.dataOffset);
+ const handler = getPayloadHandler(message._header.messageId);
+ if (!handler) {
+ console.error(`Unknown message type: ${message._header.messageId}`);
+ return;
+ }
+ handler(payload, sendToClient);
}
+export { onNPSData };
+//# sourceMappingURL=nps.js.map
\ No newline at end of file
diff --git a/packages/main/src/nps.js.map b/packages/main/src/nps.js.map
new file mode 100644
index 0000000..a0646c8
--- /dev/null
+++ b/packages/main/src/nps.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"nps.js","sourceRoot":"","sources":["nps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGtE;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,YAA6B;IAC1E,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEvE,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CACzB,OAAO,CAAC,IAAI,CAAC,IAAI,EACjB,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAC3D,CAAC;IAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,SAAS,EAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/main/src/nps.ts b/packages/main/src/nps.ts
new file mode 100644
index 0000000..e54142e
--- /dev/null
+++ b/packages/main/src/nps.ts
@@ -0,0 +1,36 @@
+import { NPSMessage } from "./NPSMessage.js";
+import { getPayloadHandler, getPayloadParser } from "./payloadMap.js";
+import { TClientCallback } from "./types.js";
+
+/**
+ * @param {number} port
+ * @param {Buffer} data
+ * @param {(data: Buffer) => void} sendToClient
+ */
+function onNPSData(port: number, data: Buffer, sendToClient: TClientCallback) {
+ const message = NPSMessage.parse(data);
+ console.log(`Received message on port ${port}: ${message.toString()}`);
+
+ const messageType = getPayloadParser(message._header.messageId);
+
+ if (!messageType) {
+ console.error(`Unknown message type: ${message._header.messageId}`);
+ return;
+ }
+
+ const payload = messageType(
+ message.data.data,
+ message._header.messageLength - message._header.dataOffset
+ );
+
+ const handler = getPayloadHandler(message._header.messageId);
+
+ if (!handler) {
+ console.error(`Unknown message type: ${message._header.messageId}`);
+ return;
+ }
+
+ handler(payload, sendToClient);
+}
+
+export { onNPSData}
diff --git a/packages/main/src/payloadMap.d.ts b/packages/main/src/payloadMap.d.ts
new file mode 100644
index 0000000..cc0d798
--- /dev/null
+++ b/packages/main/src/payloadMap.d.ts
@@ -0,0 +1,13 @@
+/**
+ *
+ * @param {number} messageId
+ * @returns {((data: Buffer, len: number) => INPSPayload) | undefined}
+ */
+declare function getPayloadParser(messageId: number): any;
+/**
+ *
+ * @param {number} messageId
+ * @returns {((payload: INPSPayload, clientCallback: (data: Buffer) => void) => void) | undefined}
+ */
+declare function getPayloadHandler(messageId: number): any;
+export { getPayloadParser, getPayloadHandler };
diff --git a/packages/main/src/payloadMap.js b/packages/main/src/payloadMap.js
new file mode 100644
index 0000000..e2189e6
--- /dev/null
+++ b/packages/main/src/payloadMap.js
@@ -0,0 +1,40 @@
+import { NPSUserLoginPayload } from "./NPSUserLoginPayload.js";
+import { handleUserLogin } from "./handleUserLogin.js";
+/**
+ * @typedef INPSPayload
+ * @type {import("./NPSMessagePayload.js").INPSPayload}
+ */
+/** @type {Map INPSPayload>} */
+const payloadParserMap = new Map();
+payloadParserMap.set(1281, NPSUserLoginPayload.parse);
+/** @type {Map void) => void) | undefined>} */
+const payloadHandlerMap = new Map();
+payloadHandlerMap.set(1281, handleUserLogin);
+/**
+ *
+ * @param {number} messageId
+ * @returns {((data: Buffer, len: number) => INPSPayload) | undefined}
+ */
+function getPayloadParser(messageId) {
+ const payloadParser = payloadParserMap.get(messageId);
+ if (!payloadParser) {
+ console.error(`Unknown message type: ${messageId}, no parser found`);
+ return;
+ }
+ return payloadParser;
+}
+/**
+ *
+ * @param {number} messageId
+ * @returns {((payload: INPSPayload, clientCallback: (data: Buffer) => void) => void) | undefined}
+ */
+function getPayloadHandler(messageId) {
+ const payloadHandler = payloadHandlerMap.get(messageId);
+ if (!payloadHandler) {
+ console.error(`Unknown message type: ${messageId}, no handler found`);
+ return;
+ }
+ return payloadHandler;
+}
+export { getPayloadParser, getPayloadHandler };
+//# sourceMappingURL=payloadMap.js.map
\ No newline at end of file
diff --git a/packages/main/src/payloadMap.js.map b/packages/main/src/payloadMap.js.map
new file mode 100644
index 0000000..4b0c3a8
--- /dev/null
+++ b/packages/main/src/payloadMap.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"payloadMap.js","sourceRoot":"","sources":["payloadMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEtD,gHAAgH;AAChH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AACpC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAE7C;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,SAAiB;IACzC,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEtD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,yBAAyB,SAAS,mBAAmB,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAExD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,yBAAyB,SAAS,oBAAoB,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/main/src/payloadMap.ts b/packages/main/src/payloadMap.ts
new file mode 100644
index 0000000..c484f8e
--- /dev/null
+++ b/packages/main/src/payloadMap.ts
@@ -0,0 +1,48 @@
+import { NPSUserLoginPayload } from "./NPSUserLoginPayload.js";
+import { handleUserLogin } from "./handleUserLogin.js";
+
+/**
+ * @typedef INPSPayload
+ * @type {import("./NPSMessagePayload.js").INPSPayload}
+ */
+/** @type {Map INPSPayload>} */
+const payloadParserMap = new Map();
+payloadParserMap.set(1281, NPSUserLoginPayload.parse);
+
+/** @type {Map void) => void) | undefined>} */
+const payloadHandlerMap = new Map();
+payloadHandlerMap.set(1281, handleUserLogin);
+
+/**
+ *
+ * @param {number} messageId
+ * @returns {((data: Buffer, len: number) => INPSPayload) | undefined}
+ */
+function getPayloadParser(messageId: number) {
+ const payloadParser = payloadParserMap.get(messageId);
+
+ if (!payloadParser) {
+ console.error(`Unknown message type: ${messageId}, no parser found`);
+ return;
+ }
+
+ return payloadParser;
+}
+
+/**
+ *
+ * @param {number} messageId
+ * @returns {((payload: INPSPayload, clientCallback: (data: Buffer) => void) => void) | undefined}
+ */
+function getPayloadHandler(messageId: number) {
+ const payloadHandler = payloadHandlerMap.get(messageId);
+
+ if (!payloadHandler) {
+ console.error(`Unknown message type: ${messageId}, no handler found`);
+ return;
+ }
+
+ return payloadHandler;
+}
+
+export { getPayloadParser, getPayloadHandler}
diff --git a/packages/main/src/types.d.ts b/packages/main/src/types.d.ts
new file mode 100644
index 0000000..63f66fd
--- /dev/null
+++ b/packages/main/src/types.d.ts
@@ -0,0 +1,18 @@
+///
+export interface INPSPayload {
+ toBuffer(): Buffer;
+ toString(): string;
+}
+export type TClientCallback = (data: Buffer) => void;
+export type TErrorHandler = (error: Error) => void;
+export interface KeypressEvent {
+ sequence: string;
+ name: string;
+ ctrl: boolean;
+ meta: boolean;
+ shift: boolean;
+}
+export type TTask = () => Promise | void | any;
+export interface IShardEntry {
+ formatForWeb(): string;
+}
diff --git a/packages/main/src/types.js b/packages/main/src/types.js
new file mode 100644
index 0000000..718fd38
--- /dev/null
+++ b/packages/main/src/types.js
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/packages/main/src/types.js.map b/packages/main/src/types.js.map
new file mode 100644
index 0000000..8da0887
--- /dev/null
+++ b/packages/main/src/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/packages/main/src/types.ts b/packages/main/src/types.ts
new file mode 100644
index 0000000..dfcfd02
--- /dev/null
+++ b/packages/main/src/types.ts
@@ -0,0 +1,22 @@
+export interface INPSPayload {
+ toBuffer(): Buffer;
+ toString(): string;
+}
+
+export type TClientCallback = (data: Buffer) => void;
+
+export type TErrorHandler = (error: Error) => void;
+
+export interface KeypressEvent {
+ sequence: string;
+ name: string;
+ ctrl: boolean;
+ meta: boolean;
+ shift: boolean;
+}
+
+export type TTask = () => Promise | void | any;
+
+export interface IShardEntry {
+ formatForWeb(): string;
+}
diff --git a/packages/main/src/web.d.ts b/packages/main/src/web.d.ts
new file mode 100644
index 0000000..eb287f6
--- /dev/null
+++ b/packages/main/src/web.d.ts
@@ -0,0 +1,8 @@
+///
+import { IncomingMessage, ServerResponse } from "node:http";
+/**
+ * @param {import("node:http").IncomingMessage} req
+ * @param {import("node:http").ServerResponse} res
+ */
+declare function onWebRequest(req: IncomingMessage, res: ServerResponse): void;
+export { onWebRequest };
diff --git a/packages/main/src/web.js b/packages/main/src/web.js
index 0539190..ac7bb8a 100644
--- a/packages/main/src/web.js
+++ b/packages/main/src/web.js
@@ -1,40 +1,33 @@
import { ShardService } from "./ShardService.js";
import { UserLoginService } from "./UserLoginService.js";
-
/**
*
* @param {import("node:http").ServerResponse} res
* @param {string} ticket
*/
function sendTicket(res, ticket) {
- res.statusCode = 200;
- res.setHeader("Content-Type", "text/plain");
- res.end(`Valid=TRUE\nTicket=${ticket}`);
+ res.statusCode = 200;
+ res.setHeader("Content-Type", "text/plain");
+ res.end(`Valid=TRUE\nTicket=${ticket}`);
}
-
/**
*
* @param {import("node:http").ServerResponse} res
* @param {number} statusCode
* @param {string} message
*/
-
function sendError(res, statusCode, message) {
- res.statusCode = statusCode;
- res.setHeader("Content-Type", "text/plain");
- res.end(
- `reasoncode=INV-200\nreasontext=${message}\nreasonurl=https://rusty-motors.com`,
- );
+ res.statusCode = statusCode;
+ res.setHeader("Content-Type", "text/plain");
+ res.end(`reasoncode=INV-200\nreasontext=${message}\nreasonurl=https://rusty-motors.com`);
}
-
/**
* @param {import("node:http").IncomingMessage} req
* @param {import("node:http").ServerResponse} res
*/
function homePage(req, res) {
- res.end("Hello, world!");
+ res.end("Hello, world!");
}
-
/**
* @param {import("node:http").IncomingMessage} req
* @param {import("node:http").ServerResponse} res
@@ -42,51 +35,43 @@ function homePage(req, res) {
* @param {string} password
*/
function authLogin(req, res, username, password) {
- const userLoginService = new UserLoginService();
- const customerId = userLoginService.checkUser(username, password);
-
- if (customerId === -1) {
- return sendError(res, 401, "Invalid username or password");
- }
-
- const token = userLoginService.createToken(customerId);
- return sendTicket(res, token);
+ const userLoginService = new UserLoginService();
+ const customerId = userLoginService.checkUser(username, password);
+ if (customerId === -1) {
+ return sendError(res, 401, "Invalid username or password");
+ }
+ const token = userLoginService.createToken(customerId);
+ return sendTicket(res, token);
}
-
/**
* @param {import("node:http").IncomingMessage} req
* @param {import("node:http").ServerResponse} res
*/
function getShardList(req, res) {
- const shardService = new ShardService();
-
- res.statusCode = 200;
- res.setHeader("Content-Type", "text/plain");
-
- res.end(shardService.getShardList());
+ const shardService = new ShardService();
+ res.statusCode = 200;
+ res.setHeader("Content-Type", "text/plain");
+ res.end(shardService.getShardList());
}
-
/**
* @param {import("node:http").IncomingMessage} req
* @param {import("node:http").ServerResponse} res
*/
-export function onWebRequest(req, res) {
- console.log(`Request URL: ${req.url}`);
- const url = new URL(`http://${process.env.HOST ?? "localhost"}${req.url}`);
-
- if (url.pathname === "/") {
- return homePage(req, res);
- }
-
- if (url.pathname === "/AuthLogin") {
- const username = url.searchParams.get("username") ?? "";
- const password = url.searchParams.get("password") ?? "";
-
- return authLogin(req, res, username, password);
- }
-
- if (url.pathname === "/ShardList/") {
- return getShardList(req, res);
- }
- res.end("Hello, world!");
+function onWebRequest(req, res) {
+ console.log(`Request URL: ${req.url}`);
+ const url = new URL(`http://${process.env.HOST ?? "localhost"}${req.url}`);
+ if (url.pathname === "/") {
+ return homePage(req, res);
+ }
+ if (url.pathname === "/AuthLogin") {
+ const username = url.searchParams.get("username") ?? "";
+ const password = url.searchParams.get("password") ?? "";
+ return authLogin(req, res, username, password);
+ }
+ if (url.pathname === "/ShardList/") {
+ return getShardList(req, res);
+ }
+ res.end("Hello, world!");
}
+export { onWebRequest };
+//# sourceMappingURL=web.js.map
\ No newline at end of file
diff --git a/packages/main/src/web.js.map b/packages/main/src/web.js.map
new file mode 100644
index 0000000..845bbb7
--- /dev/null
+++ b/packages/main/src/web.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"web.js","sourceRoot":"","sources":["web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;GAIG;AACH,SAAS,UAAU,CAAC,GAAmB,EAAE,MAAc;IACrD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;IACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC5C,GAAG,CAAC,GAAG,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AAEH,SAAS,SAAS,CAAC,GAAmB,EAAE,UAAkB,EAAE,OAAe;IACzE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;IAC5B,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC5C,GAAG,CAAC,GAAG,CACL,kCAAkC,OAAO,sCAAsC,CAChF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,GAAoB,EAAE,GAAmB;IACzD,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,GAAoB,EAAE,GAAmB,EAAE,QAAgB,EAAE,QAAgB;IAC9F,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAElE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvD,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAoB,EAAE,GAAmB;IAC7D,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAExC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;IACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAE5C,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAoB,EAAE,GAAmB;IAC7D,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3E,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAExD,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC3B,CAAC;AAED,OAAO,EAAE,YAAY,EAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/main/src/web.ts b/packages/main/src/web.ts
new file mode 100644
index 0000000..c97312a
--- /dev/null
+++ b/packages/main/src/web.ts
@@ -0,0 +1,95 @@
+import { IncomingMessage, ServerResponse } from "node:http";
+import { ShardService } from "./ShardService.js";
+import { UserLoginService } from "./UserLoginService.js";
+
+/**
+ *
+ * @param {import("node:http").ServerResponse} res
+ * @param {string} ticket
+ */
+function sendTicket(res: ServerResponse, ticket: string) {
+ res.statusCode = 200;
+ res.setHeader("Content-Type", "text/plain");
+ res.end(`Valid=TRUE\nTicket=${ticket}`);
+}
+
+/**
+ *
+ * @param {import("node:http").ServerResponse} res
+ * @param {number} statusCode
+ * @param {string} message
+ */
+
+function sendError(res: ServerResponse, statusCode: number, message: string) {
+ res.statusCode = statusCode;
+ res.setHeader("Content-Type", "text/plain");
+ res.end(
+ `reasoncode=INV-200\nreasontext=${message}\nreasonurl=https://rusty-motors.com`,
+ );
+}
+
+/**
+ * @param {import("node:http").IncomingMessage} req
+ * @param {import("node:http").ServerResponse} res
+ */
+function homePage(req: IncomingMessage, res: ServerResponse) {
+ res.end("Hello, world!");
+}
+
+/**
+ * @param {import("node:http").IncomingMessage} req
+ * @param {import("node:http").ServerResponse} res
+ * @param {string} username
+ * @param {string} password
+ */
+function authLogin(req: IncomingMessage, res: ServerResponse, username: string, password: string) {
+ const userLoginService = new UserLoginService();
+ const customerId = userLoginService.checkUser(username, password);
+
+ if (customerId === -1) {
+ return sendError(res, 401, "Invalid username or password");
+ }
+
+ const token = userLoginService.createToken(customerId);
+ return sendTicket(res, token);
+}
+
+/**
+ * @param {import("node:http").IncomingMessage} req
+ * @param {import("node:http").ServerResponse} res
+ */
+function getShardList(req: IncomingMessage, res: ServerResponse) {
+ const shardService = new ShardService();
+
+ res.statusCode = 200;
+ res.setHeader("Content-Type", "text/plain");
+
+ res.end(shardService.getShardList());
+}
+
+/**
+ * @param {import("node:http").IncomingMessage} req
+ * @param {import("node:http").ServerResponse} res
+ */
+function onWebRequest(req: IncomingMessage, res: ServerResponse) {
+ console.log(`Request URL: ${req.url}`);
+ const url = new URL(`http://${process.env.HOST ?? "localhost"}${req.url}`);
+
+ if (url.pathname === "/") {
+ return homePage(req, res);
+ }
+
+ if (url.pathname === "/AuthLogin") {
+ const username = url.searchParams.get("username") ?? "";
+ const password = url.searchParams.get("password") ?? "";
+
+ return authLogin(req, res, username, password);
+ }
+
+ if (url.pathname === "/ShardList/") {
+ return getShardList(req, res);
+ }
+ res.end("Hello, world!");
+}
+
+export { onWebRequest}
diff --git a/packages/main/tsconfig.json b/packages/main/tsconfig.json
new file mode 100644
index 0000000..efa4a6f
--- /dev/null
+++ b/packages/main/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "NodeNext",
+ "target": "ES2022",
+ "allowJs": false,
+ "strictNullChecks": true,
+ "strictFunctionTypes": true,
+ "strict": true,
+ "rootDir": "src",
+ "declaration": true,
+ "sourceMap": true
+ },
+ "exclude": ["node_modules", "**/node_modules/*", "dist"],
+ "include": ["src"],
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cd1c759..fde4012 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,19 +1,20 @@
-lockfileVersion: "9.0"
+lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
+
.:
dependencies:
- "@opentelemetry/instrumentation":
+ '@opentelemetry/instrumentation':
specifier: ^0.51.1
version: 0.51.1(@opentelemetry/api@1.8.0)
- "@sentry/node":
+ '@sentry/node':
specifier: ^8.7.0
version: 8.7.0
- "@sentry/profiling-node":
+ '@sentry/profiling-node':
specifier: ^8.7.0
version: 8.7.0
express:
@@ -22,14 +23,20 @@ importers:
obsidian-main:
specifier: link:packages/main
version: link:packages/main
+ tsx:
+ specifier: ^4.11.0
+ version: 4.11.0
devDependencies:
- "@eslint/js":
+ '@eslint/js':
specifier: ^9.3.0
version: 9.4.0
- "@types/node":
+ '@types/express':
+ specifier: ^4.17.21
+ version: 4.17.21
+ '@types/node':
specifier: ^20.12.12
version: 20.13.0
- "@vitest/coverage-v8":
+ '@vitest/coverage-v8':
specifier: ^1.6.0
version: 1.6.0(vitest@1.6.0(@types/node@20.13.0))
eslint:
@@ -38,2560 +45,1506 @@ importers:
globals:
specifier: ^15.3.0
version: 15.3.0
+ typescript:
+ specifier: ^5.4.5
+ version: 5.4.5
vitest:
specifier: ^1.6.0
version: 1.6.0(@types/node@20.13.0)
packages:
- "@ampproject/remapping@2.3.0":
- resolution:
- {
- integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==,
- }
- engines: { node: ">=6.0.0" }
-
- "@babel/helper-string-parser@7.24.6":
- resolution:
- {
- integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==,
- }
- engines: { node: ">=6.9.0" }
-
- "@babel/helper-validator-identifier@7.24.6":
- resolution:
- {
- integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==,
- }
- engines: { node: ">=6.9.0" }
-
- "@babel/parser@7.24.6":
- resolution:
- {
- integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==,
- }
- engines: { node: ">=6.0.0" }
+
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@babel/helper-string-parser@7.24.6':
+ resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.24.6':
+ resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.24.6':
+ resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==}
+ engines: {node: '>=6.0.0'}
hasBin: true
- "@babel/types@7.24.6":
- resolution:
- {
- integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==,
- }
- engines: { node: ">=6.9.0" }
-
- "@bcoe/v8-coverage@0.2.3":
- resolution:
- {
- integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==,
- }
-
- "@esbuild/aix-ppc64@0.20.2":
- resolution:
- {
- integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==,
- }
- engines: { node: ">=12" }
+ '@babel/types@7.24.6':
+ resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@bcoe/v8-coverage@0.2.3':
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+
+ '@esbuild/aix-ppc64@0.20.2':
+ resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
+ engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
- "@esbuild/android-arm64@0.20.2":
- resolution:
- {
- integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==,
- }
- engines: { node: ">=12" }
+ '@esbuild/android-arm64@0.20.2':
+ resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
+ engines: {node: '>=12'}
cpu: [arm64]
os: [android]
- "@esbuild/android-arm@0.20.2":
- resolution:
- {
- integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==,
- }
- engines: { node: ">=12" }
+ '@esbuild/android-arm@0.20.2':
+ resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
+ engines: {node: '>=12'}
cpu: [arm]
os: [android]
- "@esbuild/android-x64@0.20.2":
- resolution:
- {
- integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==,
- }
- engines: { node: ">=12" }
+ '@esbuild/android-x64@0.20.2':
+ resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [android]
- "@esbuild/darwin-arm64@0.20.2":
- resolution:
- {
- integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==,
- }
- engines: { node: ">=12" }
+ '@esbuild/darwin-arm64@0.20.2':
+ resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
+ engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
- "@esbuild/darwin-x64@0.20.2":
- resolution:
- {
- integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==,
- }
- engines: { node: ">=12" }
+ '@esbuild/darwin-x64@0.20.2':
+ resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
- "@esbuild/freebsd-arm64@0.20.2":
- resolution:
- {
- integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==,
- }
- engines: { node: ">=12" }
+ '@esbuild/freebsd-arm64@0.20.2':
+ resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
+ engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
- "@esbuild/freebsd-x64@0.20.2":
- resolution:
- {
- integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==,
- }
- engines: { node: ">=12" }
+ '@esbuild/freebsd-x64@0.20.2':
+ resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
- "@esbuild/linux-arm64@0.20.2":
- resolution:
- {
- integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-arm64@0.20.2':
+ resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
+ engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
- "@esbuild/linux-arm@0.20.2":
- resolution:
- {
- integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-arm@0.20.2':
+ resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
+ engines: {node: '>=12'}
cpu: [arm]
os: [linux]
- "@esbuild/linux-ia32@0.20.2":
- resolution:
- {
- integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-ia32@0.20.2':
+ resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
+ engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
- "@esbuild/linux-loong64@0.20.2":
- resolution:
- {
- integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-loong64@0.20.2':
+ resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
+ engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
- "@esbuild/linux-mips64el@0.20.2":
- resolution:
- {
- integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-mips64el@0.20.2':
+ resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
+ engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
- "@esbuild/linux-ppc64@0.20.2":
- resolution:
- {
- integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-ppc64@0.20.2':
+ resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
+ engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
- "@esbuild/linux-riscv64@0.20.2":
- resolution:
- {
- integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-riscv64@0.20.2':
+ resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
+ engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
- "@esbuild/linux-s390x@0.20.2":
- resolution:
- {
- integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-s390x@0.20.2':
+ resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
+ engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
- "@esbuild/linux-x64@0.20.2":
- resolution:
- {
- integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==,
- }
- engines: { node: ">=12" }
+ '@esbuild/linux-x64@0.20.2':
+ resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [linux]
- "@esbuild/netbsd-x64@0.20.2":
- resolution:
- {
- integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==,
- }
- engines: { node: ">=12" }
+ '@esbuild/netbsd-x64@0.20.2':
+ resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
- "@esbuild/openbsd-x64@0.20.2":
- resolution:
- {
- integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==,
- }
- engines: { node: ">=12" }
+ '@esbuild/openbsd-x64@0.20.2':
+ resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
- "@esbuild/sunos-x64@0.20.2":
- resolution:
- {
- integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==,
- }
- engines: { node: ">=12" }
+ '@esbuild/sunos-x64@0.20.2':
+ resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
- "@esbuild/win32-arm64@0.20.2":
- resolution:
- {
- integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==,
- }
- engines: { node: ">=12" }
+ '@esbuild/win32-arm64@0.20.2':
+ resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
+ engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
- "@esbuild/win32-ia32@0.20.2":
- resolution:
- {
- integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==,
- }
- engines: { node: ">=12" }
+ '@esbuild/win32-ia32@0.20.2':
+ resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
+ engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
- "@esbuild/win32-x64@0.20.2":
- resolution:
- {
- integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==,
- }
- engines: { node: ">=12" }
+ '@esbuild/win32-x64@0.20.2':
+ resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
+ engines: {node: '>=12'}
cpu: [x64]
os: [win32]
- "@eslint-community/eslint-utils@4.4.0":
- resolution:
- {
- integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ '@eslint-community/eslint-utils@4.4.0':
+ resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- "@eslint-community/regexpp@4.10.0":
- resolution:
- {
- integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==,
- }
- engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
-
- "@eslint/config-array@0.15.1":
- resolution:
- {
- integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
-
- "@eslint/eslintrc@3.1.0":
- resolution:
- {
- integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
-
- "@eslint/js@9.4.0":
- resolution:
- {
- integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
-
- "@eslint/object-schema@2.1.3":
- resolution:
- {
- integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
-
- "@humanwhocodes/module-importer@1.0.1":
- resolution:
- {
- integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==,
- }
- engines: { node: ">=12.22" }
-
- "@humanwhocodes/retry@0.3.0":
- resolution:
- {
- integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==,
- }
- engines: { node: ">=18.18" }
-
- "@istanbuljs/schema@0.1.3":
- resolution:
- {
- integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==,
- }
- engines: { node: ">=8" }
-
- "@jest/schemas@29.6.3":
- resolution:
- {
- integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
-
- "@jridgewell/gen-mapping@0.3.5":
- resolution:
- {
- integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==,
- }
- engines: { node: ">=6.0.0" }
-
- "@jridgewell/resolve-uri@3.1.2":
- resolution:
- {
- integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==,
- }
- engines: { node: ">=6.0.0" }
-
- "@jridgewell/set-array@1.2.1":
- resolution:
- {
- integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==,
- }
- engines: { node: ">=6.0.0" }
-
- "@jridgewell/sourcemap-codec@1.4.15":
- resolution:
- {
- integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==,
- }
-
- "@jridgewell/trace-mapping@0.3.25":
- resolution:
- {
- integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==,
- }
-
- "@nodelib/fs.scandir@2.1.5":
- resolution:
- {
- integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
- }
- engines: { node: ">= 8" }
-
- "@nodelib/fs.stat@2.0.5":
- resolution:
- {
- integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
- }
- engines: { node: ">= 8" }
-
- "@nodelib/fs.walk@1.2.8":
- resolution:
- {
- integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
- }
- engines: { node: ">= 8" }
-
- "@opentelemetry/api-logs@0.51.1":
- resolution:
- {
- integrity: sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==,
- }
- engines: { node: ">=14" }
-
- "@opentelemetry/api@1.8.0":
- resolution:
- {
- integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==,
- }
- engines: { node: ">=8.0.0" }
-
- "@opentelemetry/context-async-hooks@1.24.1":
- resolution:
- {
- integrity: sha512-R5r6DO4kgEOVBxFXhXjwospLQkv+sYxwCfjvoZBe7Zm6KKXAV9kDSJhi/D1BweowdZmO+sdbENLs374gER8hpQ==,
- }
- engines: { node: ">=14" }
+ '@eslint-community/regexpp@4.10.0':
+ resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/config-array@0.15.1':
+ resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/eslintrc@3.1.0':
+ resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/js@9.4.0':
+ resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.3':
+ resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/retry@0.3.0':
+ resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
+ engines: {node: '>=18.18'}
+
+ '@istanbuljs/schema@0.1.3':
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+
+ '@jest/schemas@29.6.3':
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.4.15':
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@opentelemetry/api-logs@0.51.1':
+ resolution: {integrity: sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/api@1.8.0':
+ resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==}
+ engines: {node: '>=8.0.0'}
+
+ '@opentelemetry/context-async-hooks@1.24.1':
+ resolution: {integrity: sha512-R5r6DO4kgEOVBxFXhXjwospLQkv+sYxwCfjvoZBe7Zm6KKXAV9kDSJhi/D1BweowdZmO+sdbENLs374gER8hpQ==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
-
- "@opentelemetry/core@1.24.1":
- resolution:
- {
- integrity: sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': '>=1.0.0 <1.9.0'
+
+ '@opentelemetry/core@1.24.1':
+ resolution: {integrity: sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
-
- "@opentelemetry/instrumentation-connect@0.36.1":
- resolution:
- {
- integrity: sha512-xI5Q/CMmzBmHshPnzzjD19ptFaYO/rQWzokpNio4QixZYWhJsa35QgRvN9FhPkwgtuJIbt/CWWAufJ3egJNHEA==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': '>=1.0.0 <1.9.0'
+
+ '@opentelemetry/instrumentation-connect@0.36.1':
+ resolution: {integrity: sha512-xI5Q/CMmzBmHshPnzzjD19ptFaYO/rQWzokpNio4QixZYWhJsa35QgRvN9FhPkwgtuJIbt/CWWAufJ3egJNHEA==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-express@0.39.0":
- resolution:
- {
- integrity: sha512-AG8U7z7D0JcBu/7dDcwb47UMEzj9/FMiJV2iQZqrsZnxR3FjB9J9oIH2iszJYci2eUdp2WbdvtpD9RV/zmME5A==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-express@0.39.0':
+ resolution: {integrity: sha512-AG8U7z7D0JcBu/7dDcwb47UMEzj9/FMiJV2iQZqrsZnxR3FjB9J9oIH2iszJYci2eUdp2WbdvtpD9RV/zmME5A==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-fastify@0.36.1":
- resolution:
- {
- integrity: sha512-3Nfm43PI0I+3EX+1YbSy6xbDu276R1Dh1tqAk68yd4yirnIh52Kd5B+nJ8CgHA7o3UKakpBjj6vSzi5vNCzJIA==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-fastify@0.36.1':
+ resolution: {integrity: sha512-3Nfm43PI0I+3EX+1YbSy6xbDu276R1Dh1tqAk68yd4yirnIh52Kd5B+nJ8CgHA7o3UKakpBjj6vSzi5vNCzJIA==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-graphql@0.40.0":
- resolution:
- {
- integrity: sha512-LVRdEHWACWOczv2imD+mhUrLMxsEjPPi32vIZJT57zygR5aUiA4em8X3aiGOCycgbMWkIu8xOSGSxdx3JmzN+w==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-graphql@0.40.0':
+ resolution: {integrity: sha512-LVRdEHWACWOczv2imD+mhUrLMxsEjPPi32vIZJT57zygR5aUiA4em8X3aiGOCycgbMWkIu8xOSGSxdx3JmzN+w==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-hapi@0.38.0":
- resolution:
- {
- integrity: sha512-ZcOqEuwuutTDYIjhDIStix22ECblG/i9pHje23QGs4Q4YS4RMaZ5hKCoQJxW88Z4K7T53rQkdISmoXFKDV8xMg==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-hapi@0.38.0':
+ resolution: {integrity: sha512-ZcOqEuwuutTDYIjhDIStix22ECblG/i9pHje23QGs4Q4YS4RMaZ5hKCoQJxW88Z4K7T53rQkdISmoXFKDV8xMg==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-http@0.51.1":
- resolution:
- {
- integrity: sha512-6b3nZnFFEz/3xZ6w8bVxctPUWIPWiXuPQ725530JgxnN1cvYFd8CJ75PrHZNjynmzSSnqBkN3ef4R9N+RpMh8Q==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-http@0.51.1':
+ resolution: {integrity: sha512-6b3nZnFFEz/3xZ6w8bVxctPUWIPWiXuPQ725530JgxnN1cvYFd8CJ75PrHZNjynmzSSnqBkN3ef4R9N+RpMh8Q==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-ioredis@0.40.0":
- resolution:
- {
- integrity: sha512-Jv/fH7KhpWe4KBirsiqeUJIYrsdR2iu2l4nWhfOlRvaZ+zYIiLEzTQR6QhBbyRoAbU4OuYJzjWusOmmpGBnwng==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-ioredis@0.40.0':
+ resolution: {integrity: sha512-Jv/fH7KhpWe4KBirsiqeUJIYrsdR2iu2l4nWhfOlRvaZ+zYIiLEzTQR6QhBbyRoAbU4OuYJzjWusOmmpGBnwng==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-koa@0.40.0":
- resolution:
- {
- integrity: sha512-dJc3H/bKMcgUYcQpLF+1IbmUKus0e5Fnn/+ru/3voIRHwMADT3rFSUcGLWSczkg68BCgz0vFWGDTvPtcWIFr7A==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-koa@0.40.0':
+ resolution: {integrity: sha512-dJc3H/bKMcgUYcQpLF+1IbmUKus0e5Fnn/+ru/3voIRHwMADT3rFSUcGLWSczkg68BCgz0vFWGDTvPtcWIFr7A==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-mongodb@0.43.0":
- resolution:
- {
- integrity: sha512-bMKej7Y76QVUD3l55Q9YqizXybHUzF3pujsBFjqbZrRn2WYqtsDtTUlbCK7fvXNPwFInqZ2KhnTqd0gwo8MzaQ==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mongodb@0.43.0':
+ resolution: {integrity: sha512-bMKej7Y76QVUD3l55Q9YqizXybHUzF3pujsBFjqbZrRn2WYqtsDtTUlbCK7fvXNPwFInqZ2KhnTqd0gwo8MzaQ==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-mongoose@0.38.1":
- resolution:
- {
- integrity: sha512-zaeiasdnRjXe6VhYCBMdkmAVh1S5MmXC/0spet+yqoaViGnYst/DOxPvhwg3yT4Yag5crZNWsVXnA538UjP6Ow==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mongoose@0.38.1':
+ resolution: {integrity: sha512-zaeiasdnRjXe6VhYCBMdkmAVh1S5MmXC/0spet+yqoaViGnYst/DOxPvhwg3yT4Yag5crZNWsVXnA538UjP6Ow==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-mysql2@0.38.1":
- resolution:
- {
- integrity: sha512-qkpHMgWSDTYVB1vlZ9sspf7l2wdS5DDq/rbIepDwX5BA0N0068JTQqh0CgAh34tdFqSCnWXIhcyOXC2TtRb0sg==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mysql2@0.38.1':
+ resolution: {integrity: sha512-qkpHMgWSDTYVB1vlZ9sspf7l2wdS5DDq/rbIepDwX5BA0N0068JTQqh0CgAh34tdFqSCnWXIhcyOXC2TtRb0sg==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-mysql@0.38.1":
- resolution:
- {
- integrity: sha512-+iBAawUaTfX/HAlvySwozx0C2B6LBfNPXX1W8Z2On1Uva33AGkw2UjL9XgIg1Pj4eLZ9R4EoJ/aFz+Xj4E/7Fw==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-mysql@0.38.1':
+ resolution: {integrity: sha512-+iBAawUaTfX/HAlvySwozx0C2B6LBfNPXX1W8Z2On1Uva33AGkw2UjL9XgIg1Pj4eLZ9R4EoJ/aFz+Xj4E/7Fw==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-nestjs-core@0.37.1":
- resolution:
- {
- integrity: sha512-ebYQjHZEmGHWEALwwDGhSQVLBaurFnuLIkZD5igPXrt7ohfF4lc5/4al1LO+vKc0NHk8SJWStuRueT86ISA8Vg==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-nestjs-core@0.37.1':
+ resolution: {integrity: sha512-ebYQjHZEmGHWEALwwDGhSQVLBaurFnuLIkZD5igPXrt7ohfF4lc5/4al1LO+vKc0NHk8SJWStuRueT86ISA8Vg==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation-pg@0.41.0":
- resolution:
- {
- integrity: sha512-BSlhpivzBD77meQNZY9fS4aKgydA8AJBzv2dqvxXFy/Hq64b7HURgw/ztbmwFeYwdF5raZZUifiiNSMLpOJoSA==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-pg@0.41.0':
+ resolution: {integrity: sha512-BSlhpivzBD77meQNZY9fS4aKgydA8AJBzv2dqvxXFy/Hq64b7HURgw/ztbmwFeYwdF5raZZUifiiNSMLpOJoSA==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation@0.43.0":
- resolution:
- {
- integrity: sha512-S1uHE+sxaepgp+t8lvIDuRgyjJWisAb733198kwQTUc9ZtYQ2V2gmyCtR1x21ePGVLoMiX/NWY7WA290hwkjJQ==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.43.0':
+ resolution: {integrity: sha512-S1uHE+sxaepgp+t8lvIDuRgyjJWisAb733198kwQTUc9ZtYQ2V2gmyCtR1x21ePGVLoMiX/NWY7WA290hwkjJQ==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/instrumentation@0.51.1":
- resolution:
- {
- integrity: sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.51.1':
+ resolution: {integrity: sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.3.0
-
- "@opentelemetry/redis-common@0.36.2":
- resolution:
- {
- integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==,
- }
- engines: { node: ">=14" }
-
- "@opentelemetry/resources@1.24.1":
- resolution:
- {
- integrity: sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/redis-common@0.36.2':
+ resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/resources@1.24.1':
+ resolution: {integrity: sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
-
- "@opentelemetry/sdk-metrics@1.24.1":
- resolution:
- {
- integrity: sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': '>=1.0.0 <1.9.0'
+
+ '@opentelemetry/sdk-metrics@1.24.1':
+ resolution: {integrity: sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ">=1.3.0 <1.9.0"
-
- "@opentelemetry/sdk-trace-base@1.24.1":
- resolution:
- {
- integrity: sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': '>=1.3.0 <1.9.0'
+
+ '@opentelemetry/sdk-trace-base@1.24.1':
+ resolution: {integrity: sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
-
- "@opentelemetry/semantic-conventions@1.24.1":
- resolution:
- {
- integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==,
- }
- engines: { node: ">=14" }
-
- "@opentelemetry/sql-common@0.40.1":
- resolution:
- {
- integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==,
- }
- engines: { node: ">=14" }
+ '@opentelemetry/api': '>=1.0.0 <1.9.0'
+
+ '@opentelemetry/semantic-conventions@1.24.1':
+ resolution: {integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/sql-common@0.40.1':
+ resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==}
+ engines: {node: '>=14'}
peerDependencies:
- "@opentelemetry/api": ^1.1.0
-
- "@prisma/instrumentation@5.14.0":
- resolution:
- {
- integrity: sha512-DeybWvIZzu/mUsOYP9MVd6AyBj+MP7xIMrcuIn25MX8FiQX39QBnET5KhszTAip/ToctUuDwSJ46QkIoyo3RFA==,
- }
-
- "@rollup/rollup-android-arm-eabi@4.18.0":
- resolution:
- {
- integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==,
- }
+ '@opentelemetry/api': ^1.1.0
+
+ '@prisma/instrumentation@5.14.0':
+ resolution: {integrity: sha512-DeybWvIZzu/mUsOYP9MVd6AyBj+MP7xIMrcuIn25MX8FiQX39QBnET5KhszTAip/ToctUuDwSJ46QkIoyo3RFA==}
+
+ '@rollup/rollup-android-arm-eabi@4.18.0':
+ resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==}
cpu: [arm]
os: [android]
- "@rollup/rollup-android-arm64@4.18.0":
- resolution:
- {
- integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==,
- }
+ '@rollup/rollup-android-arm64@4.18.0':
+ resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==}
cpu: [arm64]
os: [android]
- "@rollup/rollup-darwin-arm64@4.18.0":
- resolution:
- {
- integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==,
- }
+ '@rollup/rollup-darwin-arm64@4.18.0':
+ resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==}
cpu: [arm64]
os: [darwin]
- "@rollup/rollup-darwin-x64@4.18.0":
- resolution:
- {
- integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==,
- }
+ '@rollup/rollup-darwin-x64@4.18.0':
+ resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==}
cpu: [x64]
os: [darwin]
- "@rollup/rollup-linux-arm-gnueabihf@4.18.0":
- resolution:
- {
- integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==,
- }
+ '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
+ resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==}
cpu: [arm]
os: [linux]
- "@rollup/rollup-linux-arm-musleabihf@4.18.0":
- resolution:
- {
- integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==,
- }
+ '@rollup/rollup-linux-arm-musleabihf@4.18.0':
+ resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==}
cpu: [arm]
os: [linux]
- "@rollup/rollup-linux-arm64-gnu@4.18.0":
- resolution:
- {
- integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==,
- }
+ '@rollup/rollup-linux-arm64-gnu@4.18.0':
+ resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==}
cpu: [arm64]
os: [linux]
- "@rollup/rollup-linux-arm64-musl@4.18.0":
- resolution:
- {
- integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==,
- }
+ '@rollup/rollup-linux-arm64-musl@4.18.0':
+ resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==}
cpu: [arm64]
os: [linux]
- "@rollup/rollup-linux-powerpc64le-gnu@4.18.0":
- resolution:
- {
- integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==,
- }
+ '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
+ resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==}
cpu: [ppc64]
os: [linux]
- "@rollup/rollup-linux-riscv64-gnu@4.18.0":
- resolution:
- {
- integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==,
- }
+ '@rollup/rollup-linux-riscv64-gnu@4.18.0':
+ resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==}
cpu: [riscv64]
os: [linux]
- "@rollup/rollup-linux-s390x-gnu@4.18.0":
- resolution:
- {
- integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==,
- }
+ '@rollup/rollup-linux-s390x-gnu@4.18.0':
+ resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==}
cpu: [s390x]
os: [linux]
- "@rollup/rollup-linux-x64-gnu@4.18.0":
- resolution:
- {
- integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==,
- }
+ '@rollup/rollup-linux-x64-gnu@4.18.0':
+ resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==}
cpu: [x64]
os: [linux]
- "@rollup/rollup-linux-x64-musl@4.18.0":
- resolution:
- {
- integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==,
- }
+ '@rollup/rollup-linux-x64-musl@4.18.0':
+ resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==}
cpu: [x64]
os: [linux]
- "@rollup/rollup-win32-arm64-msvc@4.18.0":
- resolution:
- {
- integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==,
- }
+ '@rollup/rollup-win32-arm64-msvc@4.18.0':
+ resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==}
cpu: [arm64]
os: [win32]
- "@rollup/rollup-win32-ia32-msvc@4.18.0":
- resolution:
- {
- integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==,
- }
+ '@rollup/rollup-win32-ia32-msvc@4.18.0':
+ resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==}
cpu: [ia32]
os: [win32]
- "@rollup/rollup-win32-x64-msvc@4.18.0":
- resolution:
- {
- integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==,
- }
+ '@rollup/rollup-win32-x64-msvc@4.18.0':
+ resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==}
cpu: [x64]
os: [win32]
- "@sentry/core@8.7.0":
- resolution:
- {
- integrity: sha512-Sq/46B+5nWmgnCD6dEMZ6HTkKbV/KAdgaSvT8oXDb9OWoPy1jJ/gbLrhLs62KbjuDQk4/vWnOgHiKQbcslSzMw==,
- }
- engines: { node: ">=14.18" }
-
- "@sentry/node@8.7.0":
- resolution:
- {
- integrity: sha512-El1LmXGVe8Ahi5oUdlrE5s3Or23/iGnnntNvaYymXk4BmL4dJtv7ttlQ94ZrI9QWs8VnfM7eHqCd+OPjTh0XJQ==,
- }
- engines: { node: ">=14.18" }
-
- "@sentry/opentelemetry@8.7.0":
- resolution:
- {
- integrity: sha512-I9JEXnqXDBPr5MtgEYRvmcolmpugSgH1QV+SFnfOPc40Mu/npNsJq7oqbGzhlCe4H45XD6LJzFlc7BfoCzwAsQ==,
- }
- engines: { node: ">=14.18" }
+ '@sentry/core@8.7.0':
+ resolution: {integrity: sha512-Sq/46B+5nWmgnCD6dEMZ6HTkKbV/KAdgaSvT8oXDb9OWoPy1jJ/gbLrhLs62KbjuDQk4/vWnOgHiKQbcslSzMw==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/node@8.7.0':
+ resolution: {integrity: sha512-El1LmXGVe8Ahi5oUdlrE5s3Or23/iGnnntNvaYymXk4BmL4dJtv7ttlQ94ZrI9QWs8VnfM7eHqCd+OPjTh0XJQ==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/opentelemetry@8.7.0':
+ resolution: {integrity: sha512-I9JEXnqXDBPr5MtgEYRvmcolmpugSgH1QV+SFnfOPc40Mu/npNsJq7oqbGzhlCe4H45XD6LJzFlc7BfoCzwAsQ==}
+ engines: {node: '>=14.18'}
peerDependencies:
- "@opentelemetry/api": ^1.8.0
- "@opentelemetry/core": ^1.24.1
- "@opentelemetry/instrumentation": ^0.51.1
- "@opentelemetry/sdk-trace-base": ^1.23.0
- "@opentelemetry/semantic-conventions": ^1.23.0
-
- "@sentry/profiling-node@8.7.0":
- resolution:
- {
- integrity: sha512-JL4XZD4bchbAjxR4KIO9GQxmK79y3SBZFp8ELz6cyT3XP0dl57C/BOtaOq6pt5kcW7dlCFFWQPxXVsIZSSN5Xw==,
- }
- engines: { node: ">=14.18" }
+ '@opentelemetry/api': ^1.8.0
+ '@opentelemetry/core': ^1.24.1
+ '@opentelemetry/instrumentation': ^0.51.1
+ '@opentelemetry/sdk-trace-base': ^1.23.0
+ '@opentelemetry/semantic-conventions': ^1.23.0
+
+ '@sentry/profiling-node@8.7.0':
+ resolution: {integrity: sha512-JL4XZD4bchbAjxR4KIO9GQxmK79y3SBZFp8ELz6cyT3XP0dl57C/BOtaOq6pt5kcW7dlCFFWQPxXVsIZSSN5Xw==}
+ engines: {node: '>=14.18'}
hasBin: true
- "@sentry/types@8.7.0":
- resolution:
- {
- integrity: sha512-11KLOKumP6akugVGLvSoEig+JlP0ZEzW3nN9P+ppgdIx9HAxMIh6UvumbieG4/DWjAh2kh6NPNfUw3gk2Gfq1A==,
- }
- engines: { node: ">=14.18" }
-
- "@sentry/utils@8.7.0":
- resolution:
- {
- integrity: sha512-aWmcbSoOmrbzll/FkNQFJcCtLAuJLvTYbRKiCSkV3FScA7UaA742HkTZAPFiioALFIESWk/fcGZqtN0s4I281Q==,
- }
- engines: { node: ">=14.18" }
-
- "@sinclair/typebox@0.27.8":
- resolution:
- {
- integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==,
- }
-
- "@types/accepts@1.3.7":
- resolution:
- {
- integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==,
- }
-
- "@types/body-parser@1.19.5":
- resolution:
- {
- integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==,
- }
-
- "@types/connect@3.4.36":
- resolution:
- {
- integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==,
- }
-
- "@types/connect@3.4.38":
- resolution:
- {
- integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==,
- }
-
- "@types/content-disposition@0.5.8":
- resolution:
- {
- integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==,
- }
-
- "@types/cookies@0.9.0":
- resolution:
- {
- integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==,
- }
-
- "@types/estree@1.0.5":
- resolution:
- {
- integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==,
- }
-
- "@types/express-serve-static-core@4.19.3":
- resolution:
- {
- integrity: sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==,
- }
-
- "@types/express@4.17.21":
- resolution:
- {
- integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==,
- }
-
- "@types/http-assert@1.5.5":
- resolution:
- {
- integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==,
- }
-
- "@types/http-errors@2.0.4":
- resolution:
- {
- integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==,
- }
-
- "@types/keygrip@1.0.6":
- resolution:
- {
- integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==,
- }
-
- "@types/koa-compose@3.2.8":
- resolution:
- {
- integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==,
- }
-
- "@types/koa@2.14.0":
- resolution:
- {
- integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==,
- }
-
- "@types/koa__router@12.0.3":
- resolution:
- {
- integrity: sha512-5YUJVv6NwM1z7m6FuYpKfNLTZ932Z6EF6xy2BbtpJSyn13DKNQEkXVffFVSnJHxvwwWh2SAeumpjAYUELqgjyw==,
- }
-
- "@types/mime@1.3.5":
- resolution:
- {
- integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==,
- }
-
- "@types/mysql@2.15.22":
- resolution:
- {
- integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==,
- }
-
- "@types/node@20.13.0":
- resolution:
- {
- integrity: sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==,
- }
-
- "@types/pg-pool@2.0.4":
- resolution:
- {
- integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==,
- }
-
- "@types/pg@8.6.1":
- resolution:
- {
- integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==,
- }
-
- "@types/qs@6.9.15":
- resolution:
- {
- integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==,
- }
-
- "@types/range-parser@1.2.7":
- resolution:
- {
- integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==,
- }
-
- "@types/send@0.17.4":
- resolution:
- {
- integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==,
- }
-
- "@types/serve-static@1.15.7":
- resolution:
- {
- integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==,
- }
-
- "@types/shimmer@1.0.5":
- resolution:
- {
- integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==,
- }
-
- "@vitest/coverage-v8@1.6.0":
- resolution:
- {
- integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==,
- }
+ '@sentry/types@8.7.0':
+ resolution: {integrity: sha512-11KLOKumP6akugVGLvSoEig+JlP0ZEzW3nN9P+ppgdIx9HAxMIh6UvumbieG4/DWjAh2kh6NPNfUw3gk2Gfq1A==}
+ engines: {node: '>=14.18'}
+
+ '@sentry/utils@8.7.0':
+ resolution: {integrity: sha512-aWmcbSoOmrbzll/FkNQFJcCtLAuJLvTYbRKiCSkV3FScA7UaA742HkTZAPFiioALFIESWk/fcGZqtN0s4I281Q==}
+ engines: {node: '>=14.18'}
+
+ '@sinclair/typebox@0.27.8':
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+
+ '@types/accepts@1.3.7':
+ resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==}
+
+ '@types/body-parser@1.19.5':
+ resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+
+ '@types/connect@3.4.36':
+ resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==}
+
+ '@types/connect@3.4.38':
+ resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+
+ '@types/content-disposition@0.5.8':
+ resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==}
+
+ '@types/cookies@0.9.0':
+ resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==}
+
+ '@types/estree@1.0.5':
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+
+ '@types/express-serve-static-core@4.19.3':
+ resolution: {integrity: sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==}
+
+ '@types/express@4.17.21':
+ resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
+
+ '@types/http-assert@1.5.5':
+ resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==}
+
+ '@types/http-errors@2.0.4':
+ resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
+
+ '@types/keygrip@1.0.6':
+ resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==}
+
+ '@types/koa-compose@3.2.8':
+ resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==}
+
+ '@types/koa@2.14.0':
+ resolution: {integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==}
+
+ '@types/koa__router@12.0.3':
+ resolution: {integrity: sha512-5YUJVv6NwM1z7m6FuYpKfNLTZ932Z6EF6xy2BbtpJSyn13DKNQEkXVffFVSnJHxvwwWh2SAeumpjAYUELqgjyw==}
+
+ '@types/mime@1.3.5':
+ resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
+
+ '@types/mysql@2.15.22':
+ resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==}
+
+ '@types/node@20.13.0':
+ resolution: {integrity: sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==}
+
+ '@types/pg-pool@2.0.4':
+ resolution: {integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==}
+
+ '@types/pg@8.6.1':
+ resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==}
+
+ '@types/qs@6.9.15':
+ resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==}
+
+ '@types/range-parser@1.2.7':
+ resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
+
+ '@types/send@0.17.4':
+ resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
+
+ '@types/serve-static@1.15.7':
+ resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
+
+ '@types/shimmer@1.0.5':
+ resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==}
+
+ '@vitest/coverage-v8@1.6.0':
+ resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==}
peerDependencies:
vitest: 1.6.0
- "@vitest/expect@1.6.0":
- resolution:
- {
- integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==,
- }
-
- "@vitest/runner@1.6.0":
- resolution:
- {
- integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==,
- }
-
- "@vitest/snapshot@1.6.0":
- resolution:
- {
- integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==,
- }
-
- "@vitest/spy@1.6.0":
- resolution:
- {
- integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==,
- }
-
- "@vitest/utils@1.6.0":
- resolution:
- {
- integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==,
- }
+ '@vitest/expect@1.6.0':
+ resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==}
+
+ '@vitest/runner@1.6.0':
+ resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==}
+
+ '@vitest/snapshot@1.6.0':
+ resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==}
+
+ '@vitest/spy@1.6.0':
+ resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==}
+
+ '@vitest/utils@1.6.0':
+ resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==}
accepts@1.3.8:
- resolution:
- {
- integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
acorn-import-assertions@1.9.0:
- resolution:
- {
- integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==,
- }
+ resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
peerDependencies:
acorn: ^8
acorn-import-attributes@1.9.5:
- resolution:
- {
- integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==,
- }
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
peerDependencies:
acorn: ^8
acorn-jsx@5.3.2:
- resolution:
- {
- integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
- }
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn-walk@8.3.2:
- resolution:
- {
- integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==,
- }
- engines: { node: ">=0.4.0" }
+ resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
+ engines: {node: '>=0.4.0'}
acorn@8.11.3:
- resolution:
- {
- integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==,
- }
- engines: { node: ">=0.4.0" }
+ resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ engines: {node: '>=0.4.0'}
hasBin: true
ajv@6.12.6:
- resolution:
- {
- integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==,
- }
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
ansi-regex@5.0.1:
- resolution:
- {
- integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
ansi-styles@4.3.0:
- resolution:
- {
- integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
ansi-styles@5.2.0:
- resolution:
- {
- integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
argparse@2.0.1:
- resolution:
- {
- integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
- }
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
array-flatten@1.1.1:
- resolution:
- {
- integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==,
- }
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
assertion-error@1.1.0:
- resolution:
- {
- integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==,
- }
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
balanced-match@1.0.2:
- resolution:
- {
- integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
- }
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
body-parser@1.20.2:
- resolution:
- {
- integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==,
- }
- engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 }
+ resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
brace-expansion@1.1.11:
- resolution:
- {
- integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==,
- }
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
bytes@3.1.2:
- resolution:
- {
- integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
cac@6.7.14:
- resolution:
- {
- integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
call-bind@1.0.7:
- resolution:
- {
- integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
callsites@3.1.0:
- resolution:
- {
- integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
- }
- engines: { node: ">=6" }
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
chai@4.4.1:
- resolution:
- {
- integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==,
- }
- engines: { node: ">=4" }
+ resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
+ engines: {node: '>=4'}
chalk@4.1.2:
- resolution:
- {
- integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
check-error@1.0.3:
- resolution:
- {
- integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==,
- }
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
cjs-module-lexer@1.3.1:
- resolution:
- {
- integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==,
- }
+ resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==}
color-convert@2.0.1:
- resolution:
- {
- integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
- }
- engines: { node: ">=7.0.0" }
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
color-name@1.1.4:
- resolution:
- {
- integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
- }
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
concat-map@0.0.1:
- resolution:
- {
- integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
- }
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
confbox@0.1.7:
- resolution:
- {
- integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==,
- }
+ resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
content-disposition@0.5.4:
- resolution:
- {
- integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
content-type@1.0.5:
- resolution:
- {
- integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
cookie-signature@1.0.6:
- resolution:
- {
- integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==,
- }
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
cookie@0.6.0:
- resolution:
- {
- integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ engines: {node: '>= 0.6'}
cross-spawn@7.0.3:
- resolution:
- {
- integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==,
- }
- engines: { node: ">= 8" }
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
debug@2.6.9:
- resolution:
- {
- integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==,
- }
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
- supports-color: "*"
+ supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
debug@4.3.4:
- resolution:
- {
- integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==,
- }
- engines: { node: ">=6.0" }
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
peerDependencies:
- supports-color: "*"
+ supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
debug@4.3.5:
- resolution:
- {
- integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==,
- }
- engines: { node: ">=6.0" }
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
+ engines: {node: '>=6.0'}
peerDependencies:
- supports-color: "*"
+ supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
deep-eql@4.1.3:
- resolution:
- {
- integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==,
- }
- engines: { node: ">=6" }
+ resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
+ engines: {node: '>=6'}
deep-is@0.1.4:
- resolution:
- {
- integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
- }
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
define-data-property@1.1.4:
- resolution:
- {
- integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
depd@2.0.0:
- resolution:
- {
- integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
destroy@1.2.0:
- resolution:
- {
- integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==,
- }
- engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 }
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
detect-libc@2.0.3:
- resolution:
- {
- integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ engines: {node: '>=8'}
diff-sequences@29.6.3:
- resolution:
- {
- integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
ee-first@1.1.1:
- resolution:
- {
- integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==,
- }
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
encodeurl@1.0.2:
- resolution:
- {
- integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
es-define-property@1.0.0:
- resolution:
- {
- integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
es-errors@1.3.0:
- resolution:
- {
- integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
esbuild@0.20.2:
- resolution:
- {
- integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==,
- }
- engines: { node: ">=12" }
+ resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
+ engines: {node: '>=12'}
hasBin: true
escape-html@1.0.3:
- resolution:
- {
- integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==,
- }
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
escape-string-regexp@4.0.0:
- resolution:
- {
- integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
eslint-scope@8.0.1:
- resolution:
- {
- integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
- resolution:
- {
- integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@4.0.0:
- resolution:
- {
- integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@9.4.0:
- resolution:
- {
- integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
espree@10.0.1:
- resolution:
- {
- integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==,
- }
- engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esquery@1.5.0:
- resolution:
- {
- integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==,
- }
- engines: { node: ">=0.10" }
+ resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
+ engines: {node: '>=0.10'}
esrecurse@4.3.0:
- resolution:
- {
- integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==,
- }
- engines: { node: ">=4.0" }
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
estraverse@5.3.0:
- resolution:
- {
- integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==,
- }
- engines: { node: ">=4.0" }
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
estree-walker@3.0.3:
- resolution:
- {
- integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==,
- }
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
esutils@2.0.3:
- resolution:
- {
- integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
etag@1.8.1:
- resolution:
- {
- integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
execa@8.0.1:
- resolution:
- {
- integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==,
- }
- engines: { node: ">=16.17" }
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
express@4.19.2:
- resolution:
- {
- integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==,
- }
- engines: { node: ">= 0.10.0" }
+ resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
+ engines: {node: '>= 0.10.0'}
fast-deep-equal@3.1.3:
- resolution:
- {
- integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
- }
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-json-stable-stringify@2.1.0:
- resolution:
- {
- integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
- }
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
fast-levenshtein@2.0.6:
- resolution:
- {
- integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==,
- }
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
fastq@1.17.1:
- resolution:
- {
- integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==,
- }
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
file-entry-cache@8.0.0:
- resolution:
- {
- integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==,
- }
- engines: { node: ">=16.0.0" }
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
finalhandler@1.2.0:
- resolution:
- {
- integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
+ engines: {node: '>= 0.8'}
find-up@5.0.0:
- resolution:
- {
- integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
flat-cache@4.0.1:
- resolution:
- {
- integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==,
- }
- engines: { node: ">=16" }
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
flatted@3.3.1:
- resolution:
- {
- integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==,
- }
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
forwarded@0.2.0:
- resolution:
- {
- integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
fresh@0.5.2:
- resolution:
- {
- integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
fs.realpath@1.0.0:
- resolution:
- {
- integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==,
- }
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.3:
- resolution:
- {
- integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
- }
- engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
function-bind@1.1.2:
- resolution:
- {
- integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
- }
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
get-func-name@2.0.2:
- resolution:
- {
- integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==,
- }
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
get-intrinsic@1.2.4:
- resolution:
- {
- integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
get-stream@8.0.1:
- resolution:
- {
- integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==,
- }
- engines: { node: ">=16" }
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+
+ get-tsconfig@4.7.5:
+ resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==}
glob-parent@6.0.2:
- resolution:
- {
- integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==,
- }
- engines: { node: ">=10.13.0" }
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
glob@7.2.3:
- resolution:
- {
- integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==,
- }
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
globals@14.0.0:
- resolution:
- {
- integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==,
- }
- engines: { node: ">=18" }
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
globals@15.3.0:
- resolution:
- {
- integrity: sha512-cCdyVjIUVTtX8ZsPkq1oCsOsLmGIswqnjZYMJJTGaNApj1yHtLSymKhwH51ttirREn75z3p4k051clwg7rvNKA==,
- }
- engines: { node: ">=18" }
+ resolution: {integrity: sha512-cCdyVjIUVTtX8ZsPkq1oCsOsLmGIswqnjZYMJJTGaNApj1yHtLSymKhwH51ttirREn75z3p4k051clwg7rvNKA==}
+ engines: {node: '>=18'}
gopd@1.0.1:
- resolution:
- {
- integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==,
- }
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
has-flag@4.0.0:
- resolution:
- {
- integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
has-property-descriptors@1.0.2:
- resolution:
- {
- integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==,
- }
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
has-proto@1.0.3:
- resolution:
- {
- integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
has-symbols@1.0.3:
- resolution:
- {
- integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
hasown@2.0.2:
- resolution:
- {
- integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
html-escaper@2.0.2:
- resolution:
- {
- integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==,
- }
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
http-errors@2.0.0:
- resolution:
- {
- integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
human-signals@5.0.0:
- resolution:
- {
- integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==,
- }
- engines: { node: ">=16.17.0" }
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
iconv-lite@0.4.24:
- resolution:
- {
- integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
ignore@5.3.1:
- resolution:
- {
- integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==,
- }
- engines: { node: ">= 4" }
+ resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+ engines: {node: '>= 4'}
import-fresh@3.3.0:
- resolution:
- {
- integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==,
- }
- engines: { node: ">=6" }
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
import-in-the-middle@1.4.2:
- resolution:
- {
- integrity: sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==,
- }
+ resolution: {integrity: sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==}
import-in-the-middle@1.7.4:
- resolution:
- {
- integrity: sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg==,
- }
+ resolution: {integrity: sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg==}
imurmurhash@0.1.4:
- resolution:
- {
- integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
- }
- engines: { node: ">=0.8.19" }
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
inflight@1.0.6:
- resolution:
- {
- integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==,
- }
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.4:
- resolution:
- {
- integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==,
- }
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
ipaddr.js@1.9.1:
- resolution:
- {
- integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==,
- }
- engines: { node: ">= 0.10" }
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
is-core-module@2.13.1:
- resolution:
- {
- integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==,
- }
+ resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
is-extglob@2.1.1:
- resolution:
- {
- integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
is-glob@4.0.3:
- resolution:
- {
- integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
is-path-inside@3.0.3:
- resolution:
- {
- integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
is-stream@3.0.0:
- resolution:
- {
- integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
isexe@2.0.0:
- resolution:
- {
- integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
- }
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
istanbul-lib-coverage@3.2.2:
- resolution:
- {
- integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
+ engines: {node: '>=8'}
istanbul-lib-report@3.0.1:
- resolution:
- {
- integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
istanbul-lib-source-maps@5.0.4:
- resolution:
- {
- integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==}
+ engines: {node: '>=10'}
istanbul-reports@3.1.7:
- resolution:
- {
- integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
+ engines: {node: '>=8'}
js-tokens@9.0.0:
- resolution:
- {
- integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==,
- }
+ resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
js-yaml@4.1.0:
- resolution:
- {
- integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==,
- }
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
json-buffer@3.0.1:
- resolution:
- {
- integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
- }
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
json-schema-traverse@0.4.1:
- resolution:
- {
- integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==,
- }
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
json-stable-stringify-without-jsonify@1.0.1:
- resolution:
- {
- integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==,
- }
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
keyv@4.5.4:
- resolution:
- {
- integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==,
- }
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
levn@0.4.1:
- resolution:
- {
- integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
- }
- engines: { node: ">= 0.8.0" }
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
local-pkg@0.5.0:
- resolution:
- {
- integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==,
- }
- engines: { node: ">=14" }
+ resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
+ engines: {node: '>=14'}
locate-path@6.0.0:
- resolution:
- {
- integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
lodash.merge@4.6.2:
- resolution:
- {
- integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
- }
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
loupe@2.3.7:
- resolution:
- {
- integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==,
- }
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
magic-string@0.30.10:
- resolution:
- {
- integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==,
- }
+ resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
magicast@0.3.4:
- resolution:
- {
- integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==,
- }
+ resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==}
make-dir@4.0.0:
- resolution:
- {
- integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
media-typer@0.3.0:
- resolution:
- {
- integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
merge-descriptors@1.0.1:
- resolution:
- {
- integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==,
- }
+ resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
merge-stream@2.0.0:
- resolution:
- {
- integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
- }
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
methods@1.1.2:
- resolution:
- {
- integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
mime-db@1.52.0:
- resolution:
- {
- integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
mime-types@2.1.35:
- resolution:
- {
- integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
mime@1.6.0:
- resolution:
- {
- integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==,
- }
- engines: { node: ">=4" }
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
hasBin: true
mimic-fn@4.0.0:
- resolution:
- {
- integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==,
- }
- engines: { node: ">=12" }
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
minimatch@3.1.2:
- resolution:
- {
- integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
- }
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
mlly@1.7.0:
- resolution:
- {
- integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==,
- }
+ resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==}
module-details-from-path@1.0.3:
- resolution:
- {
- integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==,
- }
+ resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==}
ms@2.0.0:
- resolution:
- {
- integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==,
- }
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
ms@2.1.2:
- resolution:
- {
- integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==,
- }
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
ms@2.1.3:
- resolution:
- {
- integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
- }
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
nanoid@3.3.7:
- resolution:
- {
- integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==,
- }
- engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
natural-compare@1.4.0:
- resolution:
- {
- integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
- }
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
negotiator@0.6.3:
- resolution:
- {
- integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
node-abi@3.63.0:
- resolution:
- {
- integrity: sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==}
+ engines: {node: '>=10'}
npm-run-path@5.3.0:
- resolution:
- {
- integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
object-inspect@1.13.1:
- resolution:
- {
- integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==,
- }
+ resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
on-finished@2.4.1:
- resolution:
- {
- integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
once@1.4.0:
- resolution:
- {
- integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==,
- }
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
onetime@6.0.0:
- resolution:
- {
- integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==,
- }
- engines: { node: ">=12" }
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
opentelemetry-instrumentation-fetch-node@1.2.0:
- resolution:
- {
- integrity: sha512-aiSt/4ubOTyb1N5C2ZbGrBvaJOXIZhZvpRPYuUVxQJe27wJZqf/o65iPrqgLcgfeOLaQ8cS2Q+762jrYvniTrA==,
- }
- engines: { node: ">18.0.0" }
+ resolution: {integrity: sha512-aiSt/4ubOTyb1N5C2ZbGrBvaJOXIZhZvpRPYuUVxQJe27wJZqf/o65iPrqgLcgfeOLaQ8cS2Q+762jrYvniTrA==}
+ engines: {node: '>18.0.0'}
optionator@0.9.4:
- resolution:
- {
- integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
- }
- engines: { node: ">= 0.8.0" }
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
p-limit@3.1.0:
- resolution:
- {
- integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
p-limit@5.0.0:
- resolution:
- {
- integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==,
- }
- engines: { node: ">=18" }
+ resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
+ engines: {node: '>=18'}
p-locate@5.0.0:
- resolution:
- {
- integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
parent-module@1.0.1:
- resolution:
- {
- integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
- }
- engines: { node: ">=6" }
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
parseurl@1.3.3:
- resolution:
- {
- integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
path-exists@4.0.0:
- resolution:
- {
- integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
path-is-absolute@1.0.1:
- resolution:
- {
- integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
path-key@3.1.1:
- resolution:
- {
- integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
path-key@4.0.0:
- resolution:
- {
- integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==,
- }
- engines: { node: ">=12" }
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
path-parse@1.0.7:
- resolution:
- {
- integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
- }
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
path-to-regexp@0.1.7:
- resolution:
- {
- integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==,
- }
+ resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
pathe@1.1.2:
- resolution:
- {
- integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==,
- }
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
pathval@1.1.1:
- resolution:
- {
- integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==,
- }
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
pg-int8@1.0.1:
- resolution:
- {
- integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==,
- }
- engines: { node: ">=4.0.0" }
+ resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
+ engines: {node: '>=4.0.0'}
pg-protocol@1.6.1:
- resolution:
- {
- integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==,
- }
+ resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==}
pg-types@2.2.0:
- resolution:
- {
- integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==,
- }
- engines: { node: ">=4" }
+ resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
+ engines: {node: '>=4'}
picocolors@1.0.1:
- resolution:
- {
- integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==,
- }
+ resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
pkg-types@1.1.1:
- resolution:
- {
- integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==,
- }
+ resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==}
postcss@8.4.38:
- resolution:
- {
- integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==,
- }
- engines: { node: ^10 || ^12 || >=14 }
+ resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
+ engines: {node: ^10 || ^12 || >=14}
postgres-array@2.0.0:
- resolution:
- {
- integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==,
- }
- engines: { node: ">=4" }
+ resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
+ engines: {node: '>=4'}
postgres-bytea@1.0.0:
- resolution:
- {
- integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
+ engines: {node: '>=0.10.0'}
postgres-date@1.0.7:
- resolution:
- {
- integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
+ engines: {node: '>=0.10.0'}
postgres-interval@1.2.0:
- resolution:
- {
- integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
+ engines: {node: '>=0.10.0'}
prelude-ls@1.2.1:
- resolution:
- {
- integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
- }
- engines: { node: ">= 0.8.0" }
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
pretty-format@29.7.0:
- resolution:
- {
- integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
proxy-addr@2.0.7:
- resolution:
- {
- integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==,
- }
- engines: { node: ">= 0.10" }
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
punycode@2.3.1:
- resolution:
- {
- integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
- }
- engines: { node: ">=6" }
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
qs@6.11.0:
- resolution:
- {
- integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==,
- }
- engines: { node: ">=0.6" }
+ resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
+ engines: {node: '>=0.6'}
queue-microtask@1.2.3:
- resolution:
- {
- integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
- }
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
range-parser@1.2.1:
- resolution:
- {
- integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
raw-body@2.5.2:
- resolution:
- {
- integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
+ engines: {node: '>= 0.8'}
react-is@18.3.1:
- resolution:
- {
- integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==,
- }
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
require-in-the-middle@7.3.0:
- resolution:
- {
- integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==,
- }
- engines: { node: ">=8.6.0" }
+ resolution: {integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==}
+ engines: {node: '>=8.6.0'}
resolve-from@4.0.0:
- resolution:
- {
- integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
- }
- engines: { node: ">=4" }
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
resolve@1.22.8:
- resolution:
- {
- integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==,
- }
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
reusify@1.0.4:
- resolution:
- {
- integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==,
- }
- engines: { iojs: ">=1.0.0", node: ">=0.10.0" }
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
rollup@4.18.0:
- resolution:
- {
- integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==,
- }
- engines: { node: ">=18.0.0", npm: ">=8.0.0" }
+ resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
run-parallel@1.2.0:
- resolution:
- {
- integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
- }
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
safe-buffer@5.2.1:
- resolution:
- {
- integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==,
- }
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
safer-buffer@2.1.2:
- resolution:
- {
- integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
- }
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
semver@7.6.2:
- resolution:
- {
- integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
+ engines: {node: '>=10'}
hasBin: true
send@0.18.0:
- resolution:
- {
- integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==,
- }
- engines: { node: ">= 0.8.0" }
+ resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
+ engines: {node: '>= 0.8.0'}
serve-static@1.15.0:
- resolution:
- {
- integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==,
- }
- engines: { node: ">= 0.8.0" }
+ resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
+ engines: {node: '>= 0.8.0'}
set-function-length@1.2.2:
- resolution:
- {
- integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
setprototypeof@1.2.0:
- resolution:
- {
- integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==,
- }
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
shebang-command@2.0.0:
- resolution:
- {
- integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
shebang-regex@3.0.0:
- resolution:
- {
- integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
shimmer@1.2.1:
- resolution:
- {
- integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==,
- }
+ resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
side-channel@1.0.6:
- resolution:
- {
- integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
siginfo@2.0.0:
- resolution:
- {
- integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==,
- }
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
signal-exit@4.1.0:
- resolution:
- {
- integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
- }
- engines: { node: ">=14" }
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
source-map-js@1.2.0:
- resolution:
- {
- integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
stackback@0.0.2:
- resolution:
- {
- integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==,
- }
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
statuses@2.0.1:
- resolution:
- {
- integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
std-env@3.7.0:
- resolution:
- {
- integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==,
- }
+ resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
strip-ansi@6.0.1:
- resolution:
- {
- integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
strip-final-newline@3.0.0:
- resolution:
- {
- integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==,
- }
- engines: { node: ">=12" }
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
strip-json-comments@3.1.1:
- resolution:
- {
- integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
strip-literal@2.1.0:
- resolution:
- {
- integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==,
- }
+ resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==}
supports-color@7.2.0:
- resolution:
- {
- integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
supports-preserve-symlinks-flag@1.0.0:
- resolution:
- {
- integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
- }
- engines: { node: ">= 0.4" }
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
test-exclude@6.0.0:
- resolution:
- {
- integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
text-table@0.2.0:
- resolution:
- {
- integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==,
- }
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
tinybench@2.8.0:
- resolution:
- {
- integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==,
- }
+ resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==}
tinypool@0.8.4:
- resolution:
- {
- integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==,
- }
- engines: { node: ">=14.0.0" }
+ resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
+ engines: {node: '>=14.0.0'}
tinyspy@2.2.1:
- resolution:
- {
- integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==,
- }
- engines: { node: ">=14.0.0" }
+ resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
+ engines: {node: '>=14.0.0'}
to-fast-properties@2.0.0:
- resolution:
- {
- integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==,
- }
- engines: { node: ">=4" }
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
toidentifier@1.0.1:
- resolution:
- {
- integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==,
- }
- engines: { node: ">=0.6" }
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ tsx@4.11.0:
+ resolution: {integrity: sha512-vzGGELOgAupsNVssAmZjbUDfdm/pWP4R+Kg8TVdsonxbXk0bEpE1qh0yV6/QxUVXaVlNemgcPajGdJJ82n3stg==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
type-check@0.4.0:
- resolution:
- {
- integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
- }
- engines: { node: ">= 0.8.0" }
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
type-detect@4.0.8:
- resolution:
- {
- integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==,
- }
- engines: { node: ">=4" }
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
type-is@1.6.18:
- resolution:
- {
- integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==,
- }
- engines: { node: ">= 0.6" }
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
+ typescript@5.4.5:
+ resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
+ engines: {node: '>=14.17'}
+ hasBin: true
ufo@1.5.3:
- resolution:
- {
- integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==,
- }
+ resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
undici-types@5.26.5:
- resolution:
- {
- integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==,
- }
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
unpipe@1.0.0:
- resolution:
- {
- integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
uri-js@4.4.1:
- resolution:
- {
- integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==,
- }
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
utils-merge@1.0.1:
- resolution:
- {
- integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==,
- }
- engines: { node: ">= 0.4.0" }
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
vary@1.1.2:
- resolution:
- {
- integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==,
- }
- engines: { node: ">= 0.8" }
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
vite-node@1.6.0:
- resolution:
- {
- integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==,
- }
- engines: { node: ^18.0.0 || >=20.0.0 }
+ resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
vite@5.2.12:
- resolution:
- {
- integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==,
- }
- engines: { node: ^18.0.0 || >=20.0.0 }
+ resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
- "@types/node": ^18.0.0 || >=20.0.0
- less: "*"
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
lightningcss: ^1.21.0
- sass: "*"
- stylus: "*"
- sugarss: "*"
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
- "@types/node":
+ '@types/node':
optional: true
less:
optional: true
@@ -2607,27 +1560,24 @@ packages:
optional: true
vitest@1.6.0:
- resolution:
- {
- integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==,
- }
- engines: { node: ^18.0.0 || >=20.0.0 }
+ resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
- "@edge-runtime/vm": "*"
- "@types/node": ^18.0.0 || >=20.0.0
- "@vitest/browser": 1.6.0
- "@vitest/ui": 1.6.0
- happy-dom: "*"
- jsdom: "*"
+ '@edge-runtime/vm': '*'
+ '@types/node': ^18.0.0 || >=20.0.0
+ '@vitest/browser': 1.6.0
+ '@vitest/ui': 1.6.0
+ happy-dom: '*'
+ jsdom: '*'
peerDependenciesMeta:
- "@edge-runtime/vm":
+ '@edge-runtime/vm':
optional: true
- "@types/node":
+ '@types/node':
optional: true
- "@vitest/browser":
+ '@vitest/browser':
optional: true
- "@vitest/ui":
+ '@vitest/ui':
optional: true
happy-dom:
optional: true
@@ -2635,162 +1585,142 @@ packages:
optional: true
which@2.0.2:
- resolution:
- {
- integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
- }
- engines: { node: ">= 8" }
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
hasBin: true
why-is-node-running@2.2.2:
- resolution:
- {
- integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==,
- }
- engines: { node: ">=8" }
+ resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
+ engines: {node: '>=8'}
hasBin: true
word-wrap@1.2.5:
- resolution:
- {
- integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==,
- }
- engines: { node: ">=0.10.0" }
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
wrappy@1.0.2:
- resolution:
- {
- integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==,
- }
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
xtend@4.0.2:
- resolution:
- {
- integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==,
- }
- engines: { node: ">=0.4" }
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
yocto-queue@0.1.0:
- resolution:
- {
- integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
- }
- engines: { node: ">=10" }
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
yocto-queue@1.0.0:
- resolution:
- {
- integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==,
- }
- engines: { node: ">=12.20" }
+ resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
+ engines: {node: '>=12.20'}
snapshots:
- "@ampproject/remapping@2.3.0":
+
+ '@ampproject/remapping@2.3.0':
dependencies:
- "@jridgewell/gen-mapping": 0.3.5
- "@jridgewell/trace-mapping": 0.3.25
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
- "@babel/helper-string-parser@7.24.6": {}
+ '@babel/helper-string-parser@7.24.6': {}
- "@babel/helper-validator-identifier@7.24.6": {}
+ '@babel/helper-validator-identifier@7.24.6': {}
- "@babel/parser@7.24.6":
+ '@babel/parser@7.24.6':
dependencies:
- "@babel/types": 7.24.6
+ '@babel/types': 7.24.6
- "@babel/types@7.24.6":
+ '@babel/types@7.24.6':
dependencies:
- "@babel/helper-string-parser": 7.24.6
- "@babel/helper-validator-identifier": 7.24.6
+ '@babel/helper-string-parser': 7.24.6
+ '@babel/helper-validator-identifier': 7.24.6
to-fast-properties: 2.0.0
- "@bcoe/v8-coverage@0.2.3": {}
+ '@bcoe/v8-coverage@0.2.3': {}
- "@esbuild/aix-ppc64@0.20.2":
+ '@esbuild/aix-ppc64@0.20.2':
optional: true
- "@esbuild/android-arm64@0.20.2":
+ '@esbuild/android-arm64@0.20.2':
optional: true
- "@esbuild/android-arm@0.20.2":
+ '@esbuild/android-arm@0.20.2':
optional: true
- "@esbuild/android-x64@0.20.2":
+ '@esbuild/android-x64@0.20.2':
optional: true
- "@esbuild/darwin-arm64@0.20.2":
+ '@esbuild/darwin-arm64@0.20.2':
optional: true
- "@esbuild/darwin-x64@0.20.2":
+ '@esbuild/darwin-x64@0.20.2':
optional: true
- "@esbuild/freebsd-arm64@0.20.2":
+ '@esbuild/freebsd-arm64@0.20.2':
optional: true
- "@esbuild/freebsd-x64@0.20.2":
+ '@esbuild/freebsd-x64@0.20.2':
optional: true
- "@esbuild/linux-arm64@0.20.2":
+ '@esbuild/linux-arm64@0.20.2':
optional: true
- "@esbuild/linux-arm@0.20.2":
+ '@esbuild/linux-arm@0.20.2':
optional: true
- "@esbuild/linux-ia32@0.20.2":
+ '@esbuild/linux-ia32@0.20.2':
optional: true
- "@esbuild/linux-loong64@0.20.2":
+ '@esbuild/linux-loong64@0.20.2':
optional: true
- "@esbuild/linux-mips64el@0.20.2":
+ '@esbuild/linux-mips64el@0.20.2':
optional: true
- "@esbuild/linux-ppc64@0.20.2":
+ '@esbuild/linux-ppc64@0.20.2':
optional: true
- "@esbuild/linux-riscv64@0.20.2":
+ '@esbuild/linux-riscv64@0.20.2':
optional: true
- "@esbuild/linux-s390x@0.20.2":
+ '@esbuild/linux-s390x@0.20.2':
optional: true
- "@esbuild/linux-x64@0.20.2":
+ '@esbuild/linux-x64@0.20.2':
optional: true
- "@esbuild/netbsd-x64@0.20.2":
+ '@esbuild/netbsd-x64@0.20.2':
optional: true
- "@esbuild/openbsd-x64@0.20.2":
+ '@esbuild/openbsd-x64@0.20.2':
optional: true
- "@esbuild/sunos-x64@0.20.2":
+ '@esbuild/sunos-x64@0.20.2':
optional: true
- "@esbuild/win32-arm64@0.20.2":
+ '@esbuild/win32-arm64@0.20.2':
optional: true
- "@esbuild/win32-ia32@0.20.2":
+ '@esbuild/win32-ia32@0.20.2':
optional: true
- "@esbuild/win32-x64@0.20.2":
+ '@esbuild/win32-x64@0.20.2':
optional: true
- "@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)":
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)':
dependencies:
eslint: 9.4.0
eslint-visitor-keys: 3.4.3
- "@eslint-community/regexpp@4.10.0": {}
+ '@eslint-community/regexpp@4.10.0': {}
- "@eslint/config-array@0.15.1":
+ '@eslint/config-array@0.15.1':
dependencies:
- "@eslint/object-schema": 2.1.3
+ '@eslint/object-schema': 2.1.3
debug: 4.3.5
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
- "@eslint/eslintrc@3.1.0":
+ '@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
debug: 4.3.5
@@ -2804,197 +1734,197 @@ snapshots:
transitivePeerDependencies:
- supports-color
- "@eslint/js@9.4.0": {}
+ '@eslint/js@9.4.0': {}
- "@eslint/object-schema@2.1.3": {}
+ '@eslint/object-schema@2.1.3': {}
- "@humanwhocodes/module-importer@1.0.1": {}
+ '@humanwhocodes/module-importer@1.0.1': {}
- "@humanwhocodes/retry@0.3.0": {}
+ '@humanwhocodes/retry@0.3.0': {}
- "@istanbuljs/schema@0.1.3": {}
+ '@istanbuljs/schema@0.1.3': {}
- "@jest/schemas@29.6.3":
+ '@jest/schemas@29.6.3':
dependencies:
- "@sinclair/typebox": 0.27.8
+ '@sinclair/typebox': 0.27.8
- "@jridgewell/gen-mapping@0.3.5":
+ '@jridgewell/gen-mapping@0.3.5':
dependencies:
- "@jridgewell/set-array": 1.2.1
- "@jridgewell/sourcemap-codec": 1.4.15
- "@jridgewell/trace-mapping": 0.3.25
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.25
- "@jridgewell/resolve-uri@3.1.2": {}
+ '@jridgewell/resolve-uri@3.1.2': {}
- "@jridgewell/set-array@1.2.1": {}
+ '@jridgewell/set-array@1.2.1': {}
- "@jridgewell/sourcemap-codec@1.4.15": {}
+ '@jridgewell/sourcemap-codec@1.4.15': {}
- "@jridgewell/trace-mapping@0.3.25":
+ '@jridgewell/trace-mapping@0.3.25':
dependencies:
- "@jridgewell/resolve-uri": 3.1.2
- "@jridgewell/sourcemap-codec": 1.4.15
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
- "@nodelib/fs.scandir@2.1.5":
+ '@nodelib/fs.scandir@2.1.5':
dependencies:
- "@nodelib/fs.stat": 2.0.5
+ '@nodelib/fs.stat': 2.0.5
run-parallel: 1.2.0
- "@nodelib/fs.stat@2.0.5": {}
+ '@nodelib/fs.stat@2.0.5': {}
- "@nodelib/fs.walk@1.2.8":
+ '@nodelib/fs.walk@1.2.8':
dependencies:
- "@nodelib/fs.scandir": 2.1.5
+ '@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
- "@opentelemetry/api-logs@0.51.1":
+ '@opentelemetry/api-logs@0.51.1':
dependencies:
- "@opentelemetry/api": 1.8.0
+ '@opentelemetry/api': 1.8.0
- "@opentelemetry/api@1.8.0": {}
+ '@opentelemetry/api@1.8.0': {}
- "@opentelemetry/context-async-hooks@1.24.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/context-async-hooks@1.24.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
+ '@opentelemetry/api': 1.8.0
- "@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/semantic-conventions': 1.24.1
- "@opentelemetry/instrumentation-connect@0.36.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-connect@0.36.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
- "@types/connect": 3.4.36
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
+ '@types/connect': 3.4.36
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-express@0.39.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-express@0.39.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-fastify@0.36.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-fastify@0.36.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-graphql@0.40.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-graphql@0.40.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-hapi@0.38.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-hapi@0.38.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-http@0.51.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-http@0.51.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
semver: 7.6.2
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-ioredis@0.40.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-ioredis@0.40.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/redis-common": 0.36.2
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/redis-common': 0.36.2
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-koa@0.40.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-koa@0.40.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
- "@types/koa": 2.14.0
- "@types/koa__router": 12.0.3
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
+ '@types/koa': 2.14.0
+ '@types/koa__router': 12.0.3
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-mongodb@0.43.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-mongodb@0.43.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/sdk-metrics": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/sdk-metrics': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-mongoose@0.38.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-mongoose@0.38.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-mysql2@0.38.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-mysql2@0.38.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
- "@opentelemetry/sql-common": 0.40.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
+ '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.8.0)
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-mysql@0.38.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-mysql@0.38.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
- "@types/mysql": 2.15.22
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
+ '@types/mysql': 2.15.22
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-nestjs-core@0.37.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-nestjs-core@0.37.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation-pg@0.41.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation-pg@0.41.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
- "@opentelemetry/sql-common": 0.40.1(@opentelemetry/api@1.8.0)
- "@types/pg": 8.6.1
- "@types/pg-pool": 2.0.4
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
+ '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.8.0)
+ '@types/pg': 8.6.1
+ '@types/pg-pool': 2.0.4
transitivePeerDependencies:
- supports-color
- "@opentelemetry/instrumentation@0.43.0(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation@0.43.0(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@types/shimmer": 1.0.5
+ '@opentelemetry/api': 1.8.0
+ '@types/shimmer': 1.0.5
import-in-the-middle: 1.4.2
require-in-the-middle: 7.3.0
semver: 7.6.2
@@ -3003,11 +1933,11 @@ snapshots:
- supports-color
optional: true
- "@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/api-logs": 0.51.1
- "@types/shimmer": 1.0.5
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api-logs': 0.51.1
+ '@types/shimmer': 1.0.5
import-in-the-middle: 1.7.4
require-in-the-middle: 7.3.0
semver: 7.6.2
@@ -3015,267 +1945,267 @@ snapshots:
transitivePeerDependencies:
- supports-color
- "@opentelemetry/redis-common@0.36.2": {}
+ '@opentelemetry/redis-common@0.36.2': {}
- "@opentelemetry/resources@1.24.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/resources@1.24.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
- "@opentelemetry/sdk-metrics@1.24.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/sdk-metrics@1.24.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/resources": 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0)
lodash.merge: 4.6.2
- "@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/resources": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
- "@opentelemetry/semantic-conventions@1.24.1": {}
+ '@opentelemetry/semantic-conventions@1.24.1': {}
- "@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.8.0)":
+ '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.8.0)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
- "@prisma/instrumentation@5.14.0":
+ '@prisma/instrumentation@5.14.0':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/sdk-trace-base": 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0)
transitivePeerDependencies:
- supports-color
- "@rollup/rollup-android-arm-eabi@4.18.0":
+ '@rollup/rollup-android-arm-eabi@4.18.0':
optional: true
- "@rollup/rollup-android-arm64@4.18.0":
+ '@rollup/rollup-android-arm64@4.18.0':
optional: true
- "@rollup/rollup-darwin-arm64@4.18.0":
+ '@rollup/rollup-darwin-arm64@4.18.0':
optional: true
- "@rollup/rollup-darwin-x64@4.18.0":
+ '@rollup/rollup-darwin-x64@4.18.0':
optional: true
- "@rollup/rollup-linux-arm-gnueabihf@4.18.0":
+ '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
optional: true
- "@rollup/rollup-linux-arm-musleabihf@4.18.0":
+ '@rollup/rollup-linux-arm-musleabihf@4.18.0':
optional: true
- "@rollup/rollup-linux-arm64-gnu@4.18.0":
+ '@rollup/rollup-linux-arm64-gnu@4.18.0':
optional: true
- "@rollup/rollup-linux-arm64-musl@4.18.0":
+ '@rollup/rollup-linux-arm64-musl@4.18.0':
optional: true
- "@rollup/rollup-linux-powerpc64le-gnu@4.18.0":
+ '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
optional: true
- "@rollup/rollup-linux-riscv64-gnu@4.18.0":
+ '@rollup/rollup-linux-riscv64-gnu@4.18.0':
optional: true
- "@rollup/rollup-linux-s390x-gnu@4.18.0":
+ '@rollup/rollup-linux-s390x-gnu@4.18.0':
optional: true
- "@rollup/rollup-linux-x64-gnu@4.18.0":
+ '@rollup/rollup-linux-x64-gnu@4.18.0':
optional: true
- "@rollup/rollup-linux-x64-musl@4.18.0":
+ '@rollup/rollup-linux-x64-musl@4.18.0':
optional: true
- "@rollup/rollup-win32-arm64-msvc@4.18.0":
+ '@rollup/rollup-win32-arm64-msvc@4.18.0':
optional: true
- "@rollup/rollup-win32-ia32-msvc@4.18.0":
+ '@rollup/rollup-win32-ia32-msvc@4.18.0':
optional: true
- "@rollup/rollup-win32-x64-msvc@4.18.0":
+ '@rollup/rollup-win32-x64-msvc@4.18.0':
optional: true
- "@sentry/core@8.7.0":
- dependencies:
- "@sentry/types": 8.7.0
- "@sentry/utils": 8.7.0
-
- "@sentry/node@8.7.0":
- dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/context-async-hooks": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-connect": 0.36.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-express": 0.39.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-fastify": 0.36.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-graphql": 0.40.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-hapi": 0.38.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-http": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-ioredis": 0.40.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-koa": 0.40.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-mongodb": 0.43.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-mongoose": 0.38.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-mysql": 0.38.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-mysql2": 0.38.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-nestjs-core": 0.37.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation-pg": 0.41.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/resources": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/sdk-trace-base": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
- "@prisma/instrumentation": 5.14.0
- "@sentry/core": 8.7.0
- "@sentry/opentelemetry": 8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0))(@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/semantic-conventions@1.24.1)
- "@sentry/types": 8.7.0
- "@sentry/utils": 8.7.0
+ '@sentry/core@8.7.0':
+ dependencies:
+ '@sentry/types': 8.7.0
+ '@sentry/utils': 8.7.0
+
+ '@sentry/node@8.7.0':
+ dependencies:
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/context-async-hooks': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-connect': 0.36.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-express': 0.39.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-fastify': 0.36.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-graphql': 0.40.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-hapi': 0.38.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-http': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-ioredis': 0.40.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-koa': 0.40.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-mongodb': 0.43.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-mongoose': 0.38.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-mysql': 0.38.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-mysql2': 0.38.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-nestjs-core': 0.37.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation-pg': 0.41.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
+ '@prisma/instrumentation': 5.14.0
+ '@sentry/core': 8.7.0
+ '@sentry/opentelemetry': 8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0))(@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/semantic-conventions@1.24.1)
+ '@sentry/types': 8.7.0
+ '@sentry/utils': 8.7.0
optionalDependencies:
opentelemetry-instrumentation-fetch-node: 1.2.0
transitivePeerDependencies:
- supports-color
- "@sentry/opentelemetry@8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0))(@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/semantic-conventions@1.24.1)":
+ '@sentry/opentelemetry@8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0))(@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0))(@opentelemetry/semantic-conventions@1.24.1)':
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/core": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/instrumentation": 0.51.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/sdk-trace-base": 1.24.1(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
- "@sentry/core": 8.7.0
- "@sentry/types": 8.7.0
- "@sentry/utils": 8.7.0
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
+ '@sentry/core': 8.7.0
+ '@sentry/types': 8.7.0
+ '@sentry/utils': 8.7.0
- "@sentry/profiling-node@8.7.0":
+ '@sentry/profiling-node@8.7.0':
dependencies:
- "@sentry/core": 8.7.0
- "@sentry/node": 8.7.0
- "@sentry/types": 8.7.0
- "@sentry/utils": 8.7.0
+ '@sentry/core': 8.7.0
+ '@sentry/node': 8.7.0
+ '@sentry/types': 8.7.0
+ '@sentry/utils': 8.7.0
detect-libc: 2.0.3
node-abi: 3.63.0
transitivePeerDependencies:
- supports-color
- "@sentry/types@8.7.0": {}
+ '@sentry/types@8.7.0': {}
- "@sentry/utils@8.7.0":
+ '@sentry/utils@8.7.0':
dependencies:
- "@sentry/types": 8.7.0
+ '@sentry/types': 8.7.0
- "@sinclair/typebox@0.27.8": {}
+ '@sinclair/typebox@0.27.8': {}
- "@types/accepts@1.3.7":
+ '@types/accepts@1.3.7':
dependencies:
- "@types/node": 20.13.0
+ '@types/node': 20.13.0
- "@types/body-parser@1.19.5":
+ '@types/body-parser@1.19.5':
dependencies:
- "@types/connect": 3.4.38
- "@types/node": 20.13.0
+ '@types/connect': 3.4.38
+ '@types/node': 20.13.0
- "@types/connect@3.4.36":
+ '@types/connect@3.4.36':
dependencies:
- "@types/node": 20.13.0
+ '@types/node': 20.13.0
- "@types/connect@3.4.38":
+ '@types/connect@3.4.38':
dependencies:
- "@types/node": 20.13.0
+ '@types/node': 20.13.0
- "@types/content-disposition@0.5.8": {}
+ '@types/content-disposition@0.5.8': {}
- "@types/cookies@0.9.0":
+ '@types/cookies@0.9.0':
dependencies:
- "@types/connect": 3.4.38
- "@types/express": 4.17.21
- "@types/keygrip": 1.0.6
- "@types/node": 20.13.0
+ '@types/connect': 3.4.38
+ '@types/express': 4.17.21
+ '@types/keygrip': 1.0.6
+ '@types/node': 20.13.0
- "@types/estree@1.0.5": {}
+ '@types/estree@1.0.5': {}
- "@types/express-serve-static-core@4.19.3":
+ '@types/express-serve-static-core@4.19.3':
dependencies:
- "@types/node": 20.13.0
- "@types/qs": 6.9.15
- "@types/range-parser": 1.2.7
- "@types/send": 0.17.4
+ '@types/node': 20.13.0
+ '@types/qs': 6.9.15
+ '@types/range-parser': 1.2.7
+ '@types/send': 0.17.4
- "@types/express@4.17.21":
+ '@types/express@4.17.21':
dependencies:
- "@types/body-parser": 1.19.5
- "@types/express-serve-static-core": 4.19.3
- "@types/qs": 6.9.15
- "@types/serve-static": 1.15.7
+ '@types/body-parser': 1.19.5
+ '@types/express-serve-static-core': 4.19.3
+ '@types/qs': 6.9.15
+ '@types/serve-static': 1.15.7
- "@types/http-assert@1.5.5": {}
+ '@types/http-assert@1.5.5': {}
- "@types/http-errors@2.0.4": {}
+ '@types/http-errors@2.0.4': {}
- "@types/keygrip@1.0.6": {}
+ '@types/keygrip@1.0.6': {}
- "@types/koa-compose@3.2.8":
+ '@types/koa-compose@3.2.8':
dependencies:
- "@types/koa": 2.14.0
+ '@types/koa': 2.14.0
- "@types/koa@2.14.0":
+ '@types/koa@2.14.0':
dependencies:
- "@types/accepts": 1.3.7
- "@types/content-disposition": 0.5.8
- "@types/cookies": 0.9.0
- "@types/http-assert": 1.5.5
- "@types/http-errors": 2.0.4
- "@types/keygrip": 1.0.6
- "@types/koa-compose": 3.2.8
- "@types/node": 20.13.0
+ '@types/accepts': 1.3.7
+ '@types/content-disposition': 0.5.8
+ '@types/cookies': 0.9.0
+ '@types/http-assert': 1.5.5
+ '@types/http-errors': 2.0.4
+ '@types/keygrip': 1.0.6
+ '@types/koa-compose': 3.2.8
+ '@types/node': 20.13.0
- "@types/koa__router@12.0.3":
+ '@types/koa__router@12.0.3':
dependencies:
- "@types/koa": 2.14.0
+ '@types/koa': 2.14.0
- "@types/mime@1.3.5": {}
+ '@types/mime@1.3.5': {}
- "@types/mysql@2.15.22":
+ '@types/mysql@2.15.22':
dependencies:
- "@types/node": 20.13.0
+ '@types/node': 20.13.0
- "@types/node@20.13.0":
+ '@types/node@20.13.0':
dependencies:
undici-types: 5.26.5
- "@types/pg-pool@2.0.4":
+ '@types/pg-pool@2.0.4':
dependencies:
- "@types/pg": 8.6.1
+ '@types/pg': 8.6.1
- "@types/pg@8.6.1":
+ '@types/pg@8.6.1':
dependencies:
- "@types/node": 20.13.0
+ '@types/node': 20.13.0
pg-protocol: 1.6.1
pg-types: 2.2.0
- "@types/qs@6.9.15": {}
+ '@types/qs@6.9.15': {}
- "@types/range-parser@1.2.7": {}
+ '@types/range-parser@1.2.7': {}
- "@types/send@0.17.4":
+ '@types/send@0.17.4':
dependencies:
- "@types/mime": 1.3.5
- "@types/node": 20.13.0
+ '@types/mime': 1.3.5
+ '@types/node': 20.13.0
- "@types/serve-static@1.15.7":
+ '@types/serve-static@1.15.7':
dependencies:
- "@types/http-errors": 2.0.4
- "@types/node": 20.13.0
- "@types/send": 0.17.4
+ '@types/http-errors': 2.0.4
+ '@types/node': 20.13.0
+ '@types/send': 0.17.4
- "@types/shimmer@1.0.5": {}
+ '@types/shimmer@1.0.5': {}
- "@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.13.0))":
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.13.0))':
dependencies:
- "@ampproject/remapping": 2.3.0
- "@bcoe/v8-coverage": 0.2.3
+ '@ampproject/remapping': 2.3.0
+ '@bcoe/v8-coverage': 0.2.3
debug: 4.3.4
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
@@ -3291,29 +2221,29 @@ snapshots:
transitivePeerDependencies:
- supports-color
- "@vitest/expect@1.6.0":
+ '@vitest/expect@1.6.0':
dependencies:
- "@vitest/spy": 1.6.0
- "@vitest/utils": 1.6.0
+ '@vitest/spy': 1.6.0
+ '@vitest/utils': 1.6.0
chai: 4.4.1
- "@vitest/runner@1.6.0":
+ '@vitest/runner@1.6.0':
dependencies:
- "@vitest/utils": 1.6.0
+ '@vitest/utils': 1.6.0
p-limit: 5.0.0
pathe: 1.1.2
- "@vitest/snapshot@1.6.0":
+ '@vitest/snapshot@1.6.0':
dependencies:
magic-string: 0.30.10
pathe: 1.1.2
pretty-format: 29.7.0
- "@vitest/spy@1.6.0":
+ '@vitest/spy@1.6.0':
dependencies:
tinyspy: 2.2.1
- "@vitest/utils@1.6.0":
+ '@vitest/utils@1.6.0':
dependencies:
diff-sequences: 29.6.3
estree-walker: 3.0.3
@@ -3492,29 +2422,29 @@ snapshots:
esbuild@0.20.2:
optionalDependencies:
- "@esbuild/aix-ppc64": 0.20.2
- "@esbuild/android-arm": 0.20.2
- "@esbuild/android-arm64": 0.20.2
- "@esbuild/android-x64": 0.20.2
- "@esbuild/darwin-arm64": 0.20.2
- "@esbuild/darwin-x64": 0.20.2
- "@esbuild/freebsd-arm64": 0.20.2
- "@esbuild/freebsd-x64": 0.20.2
- "@esbuild/linux-arm": 0.20.2
- "@esbuild/linux-arm64": 0.20.2
- "@esbuild/linux-ia32": 0.20.2
- "@esbuild/linux-loong64": 0.20.2
- "@esbuild/linux-mips64el": 0.20.2
- "@esbuild/linux-ppc64": 0.20.2
- "@esbuild/linux-riscv64": 0.20.2
- "@esbuild/linux-s390x": 0.20.2
- "@esbuild/linux-x64": 0.20.2
- "@esbuild/netbsd-x64": 0.20.2
- "@esbuild/openbsd-x64": 0.20.2
- "@esbuild/sunos-x64": 0.20.2
- "@esbuild/win32-arm64": 0.20.2
- "@esbuild/win32-ia32": 0.20.2
- "@esbuild/win32-x64": 0.20.2
+ '@esbuild/aix-ppc64': 0.20.2
+ '@esbuild/android-arm': 0.20.2
+ '@esbuild/android-arm64': 0.20.2
+ '@esbuild/android-x64': 0.20.2
+ '@esbuild/darwin-arm64': 0.20.2
+ '@esbuild/darwin-x64': 0.20.2
+ '@esbuild/freebsd-arm64': 0.20.2
+ '@esbuild/freebsd-x64': 0.20.2
+ '@esbuild/linux-arm': 0.20.2
+ '@esbuild/linux-arm64': 0.20.2
+ '@esbuild/linux-ia32': 0.20.2
+ '@esbuild/linux-loong64': 0.20.2
+ '@esbuild/linux-mips64el': 0.20.2
+ '@esbuild/linux-ppc64': 0.20.2
+ '@esbuild/linux-riscv64': 0.20.2
+ '@esbuild/linux-s390x': 0.20.2
+ '@esbuild/linux-x64': 0.20.2
+ '@esbuild/netbsd-x64': 0.20.2
+ '@esbuild/openbsd-x64': 0.20.2
+ '@esbuild/sunos-x64': 0.20.2
+ '@esbuild/win32-arm64': 0.20.2
+ '@esbuild/win32-ia32': 0.20.2
+ '@esbuild/win32-x64': 0.20.2
escape-html@1.0.3: {}
@@ -3531,14 +2461,14 @@ snapshots:
eslint@9.4.0:
dependencies:
- "@eslint-community/eslint-utils": 4.4.0(eslint@9.4.0)
- "@eslint-community/regexpp": 4.10.0
- "@eslint/config-array": 0.15.1
- "@eslint/eslintrc": 3.1.0
- "@eslint/js": 9.4.0
- "@humanwhocodes/module-importer": 1.0.1
- "@humanwhocodes/retry": 0.3.0
- "@nodelib/fs.walk": 1.2.8
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@eslint-community/regexpp': 4.10.0
+ '@eslint/config-array': 0.15.1
+ '@eslint/eslintrc': 3.1.0
+ '@eslint/js': 9.4.0
+ '@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.3.0
+ '@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
@@ -3586,7 +2516,7 @@ snapshots:
estree-walker@3.0.3:
dependencies:
- "@types/estree": 1.0.5
+ '@types/estree': 1.0.5
esutils@2.0.3: {}
@@ -3701,6 +2631,10 @@ snapshots:
get-stream@8.0.1: {}
+ get-tsconfig@4.7.5:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
glob-parent@6.0.2:
dependencies:
is-glob: 4.0.3
@@ -3811,7 +2745,7 @@ snapshots:
istanbul-lib-source-maps@5.0.4:
dependencies:
- "@jridgewell/trace-mapping": 0.3.25
+ '@jridgewell/trace-mapping': 0.3.25
debug: 4.3.4
istanbul-lib-coverage: 3.2.2
transitivePeerDependencies:
@@ -3860,12 +2794,12 @@ snapshots:
magic-string@0.30.10:
dependencies:
- "@jridgewell/sourcemap-codec": 1.4.15
+ '@jridgewell/sourcemap-codec': 1.4.15
magicast@0.3.4:
dependencies:
- "@babel/parser": 7.24.6
- "@babel/types": 7.24.6
+ '@babel/parser': 7.24.6
+ '@babel/types': 7.24.6
source-map-js: 1.2.0
make-dir@4.0.0:
@@ -3939,9 +2873,9 @@ snapshots:
opentelemetry-instrumentation-fetch-node@1.2.0:
dependencies:
- "@opentelemetry/api": 1.8.0
- "@opentelemetry/instrumentation": 0.43.0(@opentelemetry/api@1.8.0)
- "@opentelemetry/semantic-conventions": 1.24.1
+ '@opentelemetry/api': 1.8.0
+ '@opentelemetry/instrumentation': 0.43.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/semantic-conventions': 1.24.1
transitivePeerDependencies:
- supports-color
optional: true
@@ -4029,7 +2963,7 @@ snapshots:
pretty-format@29.7.0:
dependencies:
- "@jest/schemas": 29.6.3
+ '@jest/schemas': 29.6.3
ansi-styles: 5.2.0
react-is: 18.3.1
@@ -4067,6 +3001,8 @@ snapshots:
resolve-from@4.0.0: {}
+ resolve-pkg-maps@1.0.0: {}
+
resolve@1.22.8:
dependencies:
is-core-module: 2.13.1
@@ -4077,24 +3013,24 @@ snapshots:
rollup@4.18.0:
dependencies:
- "@types/estree": 1.0.5
+ '@types/estree': 1.0.5
optionalDependencies:
- "@rollup/rollup-android-arm-eabi": 4.18.0
- "@rollup/rollup-android-arm64": 4.18.0
- "@rollup/rollup-darwin-arm64": 4.18.0
- "@rollup/rollup-darwin-x64": 4.18.0
- "@rollup/rollup-linux-arm-gnueabihf": 4.18.0
- "@rollup/rollup-linux-arm-musleabihf": 4.18.0
- "@rollup/rollup-linux-arm64-gnu": 4.18.0
- "@rollup/rollup-linux-arm64-musl": 4.18.0
- "@rollup/rollup-linux-powerpc64le-gnu": 4.18.0
- "@rollup/rollup-linux-riscv64-gnu": 4.18.0
- "@rollup/rollup-linux-s390x-gnu": 4.18.0
- "@rollup/rollup-linux-x64-gnu": 4.18.0
- "@rollup/rollup-linux-x64-musl": 4.18.0
- "@rollup/rollup-win32-arm64-msvc": 4.18.0
- "@rollup/rollup-win32-ia32-msvc": 4.18.0
- "@rollup/rollup-win32-x64-msvc": 4.18.0
+ '@rollup/rollup-android-arm-eabi': 4.18.0
+ '@rollup/rollup-android-arm64': 4.18.0
+ '@rollup/rollup-darwin-arm64': 4.18.0
+ '@rollup/rollup-darwin-x64': 4.18.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.18.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.18.0
+ '@rollup/rollup-linux-arm64-gnu': 4.18.0
+ '@rollup/rollup-linux-arm64-musl': 4.18.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.18.0
+ '@rollup/rollup-linux-s390x-gnu': 4.18.0
+ '@rollup/rollup-linux-x64-gnu': 4.18.0
+ '@rollup/rollup-linux-x64-musl': 4.18.0
+ '@rollup/rollup-win32-arm64-msvc': 4.18.0
+ '@rollup/rollup-win32-ia32-msvc': 4.18.0
+ '@rollup/rollup-win32-x64-msvc': 4.18.0
fsevents: 2.3.3
run-parallel@1.2.0:
@@ -4192,7 +3128,7 @@ snapshots:
test-exclude@6.0.0:
dependencies:
- "@istanbuljs/schema": 0.1.3
+ '@istanbuljs/schema': 0.1.3
glob: 7.2.3
minimatch: 3.1.2
@@ -4208,6 +3144,13 @@ snapshots:
toidentifier@1.0.1: {}
+ tsx@4.11.0:
+ dependencies:
+ esbuild: 0.20.2
+ get-tsconfig: 4.7.5
+ optionalDependencies:
+ fsevents: 2.3.3
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -4219,6 +3162,8 @@ snapshots:
media-typer: 0.3.0
mime-types: 2.1.35
+ typescript@5.4.5: {}
+
ufo@1.5.3: {}
undici-types@5.26.5: {}
@@ -4241,7 +3186,7 @@ snapshots:
picocolors: 1.0.1
vite: 5.2.12(@types/node@20.13.0)
transitivePeerDependencies:
- - "@types/node"
+ - '@types/node'
- less
- lightningcss
- sass
@@ -4256,16 +3201,16 @@ snapshots:
postcss: 8.4.38
rollup: 4.18.0
optionalDependencies:
- "@types/node": 20.13.0
+ '@types/node': 20.13.0
fsevents: 2.3.3
vitest@1.6.0(@types/node@20.13.0):
dependencies:
- "@vitest/expect": 1.6.0
- "@vitest/runner": 1.6.0
- "@vitest/snapshot": 1.6.0
- "@vitest/spy": 1.6.0
- "@vitest/utils": 1.6.0
+ '@vitest/expect': 1.6.0
+ '@vitest/runner': 1.6.0
+ '@vitest/snapshot': 1.6.0
+ '@vitest/spy': 1.6.0
+ '@vitest/utils': 1.6.0
acorn-walk: 8.3.2
chai: 4.4.1
debug: 4.3.4
@@ -4282,7 +3227,7 @@ snapshots:
vite-node: 1.6.0(@types/node@20.13.0)
why-is-node-running: 2.2.2
optionalDependencies:
- "@types/node": 20.13.0
+ '@types/node': 20.13.0
transitivePeerDependencies:
- less
- lightningcss
diff --git a/server.d.ts b/server.d.ts
new file mode 100644
index 0000000..65be0dc
--- /dev/null
+++ b/server.d.ts
@@ -0,0 +1 @@
+import "./instrument.js";
diff --git a/server.js b/server.js
index 88d9e71..c998a5c 100644
--- a/server.js
+++ b/server.js
@@ -1,19 +1,18 @@
// obsidian-spoon is a game server
// Copyright (C) 2024 Molly Crendraven
-
// This program 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.
-
// This program 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 this program. If not, see .
-
-import main from "obsidian-main";
-
+// Import this first!
+import "./instrument.js";
+// Rest of the imports
+import { main } from "obsidian-main";
main();
+//# sourceMappingURL=server.js.map
\ No newline at end of file
diff --git a/server.js.map b/server.js.map
new file mode 100644
index 0000000..8b6d8e8
--- /dev/null
+++ b/server.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"server.js","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,sCAAsC;AAEtC,uEAAuE;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AAEtC,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAE/C,oEAAoE;AACpE,yEAAyE;AAEzE,qBAAqB;AACrB,OAAO,iBAAiB,CAAC;AAEzB,sBAAsB;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,IAAI,EAAE,CAAC"}
\ No newline at end of file
diff --git a/server.ts b/server.ts
new file mode 100644
index 0000000..0d8cbfa
--- /dev/null
+++ b/server.ts
@@ -0,0 +1,24 @@
+// obsidian-spoon is a game server
+// Copyright (C) 2024 Molly Crendraven
+
+// This program 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.
+
+// This program 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 this program. If not, see .
+
+// Import this first!
+import "./instrument.js";
+
+// Rest of the imports
+
+import { main } from "obsidian-main";
+
+main();
diff --git a/test/connections.spec.js b/test/connections.spec.js
index 1609bbd..5410b6d 100644
--- a/test/connections.spec.js
+++ b/test/connections.spec.js
@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from "vitest";
-import { TCPServer } from "../packages/main/src/TCPServer.js";
+import { TCPServer } from "../packages/main/src/TCPServer.ts";
describe("TCPServer", () => {
it("should return an error if the port is priviliged", () =>
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..ee6ce5e
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "module": "NodeNext",
+ "moduleResolution": "NodeNext",
+ "target": "ES2020",
+ "allowJs": false,
+ "strictNullChecks": true,
+ "strictFunctionTypes": true,
+ "strict": true,
+ "verbatimModuleSyntax": true,
+ "declaration": true,
+ "sourceMap": true
+ },
+ "exclude": ["node_modules", "**/node_modules/*", "dist/**/*", "./instrument"],
+ "files": ["./server.ts"],
+ "references": [{ "path": "./packages/main" }]
+}
diff --git a/vite.config.js b/vite.config.js
index 5bd16ae..6c62a36 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -4,7 +4,8 @@ export default defineConfig({
test: {
coverage: {
enabled: true,
- exclude: ["node_modules", "test", "server.js"],
+ exclude: ["node_modules", "test", "./server.{t,j}s", "*.d.ts", "instrument.js"],
+ include: ["packages/*/*"],
}
},
});