simply-xp 2.0.0-beta.0-fix.1 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/src/connect.js +1 -0
- package/lib/src/fetch.js +1 -1
- package/lib/src/functions/database.d.ts +3 -1
- package/lib/src/functions/database.js +9 -9
- package/lib/src/setFlags.d.ts +9 -0
- package/lib/src/setFlags.js +1 -0
- package/lib/xp.d.ts +3 -1
- package/lib/xp.js +4 -2
- package/package.json +8 -8
package/lib/src/connect.js
CHANGED
package/lib/src/fetch.js
CHANGED
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
* @link `Documentation:` https://simplyxp.js.org/docs/next/functions/fetch
|
|
9
9
|
* @returns {Promise<{name: string | null, user: string, guild: string, level: number, position: number, xp: number}>}
|
|
10
10
|
* @throws {XpFatal} If invalid parameters are provided, or if the user data is not found.
|
|
11
|
-
*/async function fetch(t,e,r){var i;if(!t)throw new xplogs_1.XpFatal({function:"create()",message:"User ID was not provided"});if(!e)throw new xplogs_1.XpFatal({function:"create()",message:"Guild ID was not provided"});(0,xp_1.clean)({db:!0});let n=(i=await(await Promise.resolve().then(()=>__importStar(require("./functions/database")))).db.find("simply-xps",e)).find(e=>e.user===t);if(!n){if(!xp_1.xp.auto_create||!r)throw new xplogs_1.XpFatal({function:"fetch()",message:"User data not found"});n=await(await Promise.resolve().then(()=>__importStar(require("./create")))).create(e,t,r),i.push(n)}return e=i.sort((e,t)=>t.xp-e.xp).findIndex(e=>e.user===t)+1,{
|
|
11
|
+
*/async function fetch(t,e,r){var i;if(!t)throw new xplogs_1.XpFatal({function:"create()",message:"User ID was not provided"});if(!e)throw new xplogs_1.XpFatal({function:"create()",message:"Guild ID was not provided"});(0,xp_1.clean)({db:!0});let n=(i=await(await Promise.resolve().then(()=>__importStar(require("./functions/database")))).db.find("simply-xps",e)).find(e=>e.user===t);if(!n){if(!xp_1.xp.auto_create||!r)throw new xplogs_1.XpFatal({function:"fetch()",message:"User data not found"});n=await(await Promise.resolve().then(()=>__importStar(require("./create")))).create(e,t,r),i.push(n)}return e=i.sort((e,t)=>t.xp-e.xp).findIndex(e=>e.user===t)+1,{flags:n?.flags,guild:n.guild,user:n.user,name:n?.name,level:n.level,position:e,xp:n.xp}}var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&("get"in n?t.__esModule:!n.writable&&!n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){e[i=void 0===i?r:i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){var t,r;if(e&&e.__esModule)return e;if(t={},null!=e)for(r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t};Object.defineProperty(exports,"__esModule",{value:!0}),exports.fetch=void 0;const xplogs_1=require("./functions/xplogs"),xp_1=require("../xp");exports.fetch=fetch;
|
|
@@ -13,6 +13,7 @@ import { Collection } from "mongodb";
|
|
|
13
13
|
export interface UserOptions {
|
|
14
14
|
collection: "simply-xps";
|
|
15
15
|
data: {
|
|
16
|
+
flags?: Array<number | string>;
|
|
16
17
|
guild: string;
|
|
17
18
|
user?: string;
|
|
18
19
|
name?: string;
|
|
@@ -34,9 +35,10 @@ export interface UserOptions {
|
|
|
34
35
|
*/
|
|
35
36
|
export interface UserResult {
|
|
36
37
|
_id?: string;
|
|
38
|
+
flags?: Array<number | string>;
|
|
39
|
+
guild: string;
|
|
37
40
|
user: string;
|
|
38
41
|
name?: string;
|
|
39
|
-
guild: string;
|
|
40
42
|
lastUpdated: string;
|
|
41
43
|
level: number;
|
|
42
44
|
xp: number;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @param {string} functionName
|
|
6
6
|
* @returns {void}
|
|
7
7
|
* @private
|
|
8
|
-
*/function handleError(e
|
|
8
|
+
*/function handleError(a,e){throw new xplogs_1.XpFatal({function:"db."+e,message:a})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.db=void 0;const xplogs_1=require("./xplogs"),xp_1=require("../../xp");class db{
|
|
9
9
|
/**
|
|
10
10
|
* Gets a collection from the database.
|
|
11
11
|
* @param {collection} collection - The collection to get.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* @returns {Collection} The collection.
|
|
14
14
|
* @throws {XpFatal} Throws an error if there is no database connection, or database type is invalid.
|
|
15
15
|
*/
|
|
16
|
-
static getCollection(
|
|
16
|
+
static getCollection(a){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"getCollection()",message:"No database connection"});if("mongodb"!==xp_1.xp.dbType)throw new xplogs_1.XpFatal({function:"getCollection()",message:"MongoDB has to be your database type to use this function."});return xp_1.xp.database.db().collection(a)}
|
|
17
17
|
/**
|
|
18
18
|
* Creates one document in the database.
|
|
19
19
|
*
|
|
@@ -22,7 +22,7 @@ static getCollection(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({functio
|
|
|
22
22
|
* @link https://simplyxp.js.org/docs/next/handlers/database#createOne Documentation
|
|
23
23
|
* @returns {Promise<UserResult | LevelRoleResult>} The created document.
|
|
24
24
|
* @throws {XpFatal} Throws an error if there is no database connection.
|
|
25
|
-
*/static async createOne(
|
|
25
|
+
*/static async createOne(a){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"createOne()",message:"No database connection"});switch(xp_1.xp.dbType){case"mongodb":await this.getCollection(a.collection).insertOne({...a.data,lastUpdated:(new Date).toISOString()}).catch(a=>handleError(a,"createOne()"));break;case"sqlite":"simply-xps"===a.collection?xp_1.xp.database.prepare('INSERT INTO "simply-xps" (user, guild, level, name, lastUpdated, xp, xp_rate, flags) VALUES (?, ?, ?, ?, ?, ?, ?, ?)').run(a.data.user,a.data.guild,a.data.level,a.data?.name,(new Date).toISOString(),a.data.xp,a.data.xp_rate,JSON.stringify(a.data?.flags)):xp_1.xp.database.prepare('INSERT INTO "simply-xp-levelroles" (gid, lvlrole, lastUpdated) VALUES (?, ?, ?)').run(a.data.guild,JSON.stringify(a.data.lvlrole),(new Date).toISOString())}return db.findOne(a)}
|
|
26
26
|
/**
|
|
27
27
|
* Deletes multiple documents from the database.
|
|
28
28
|
* @async
|
|
@@ -30,7 +30,7 @@ static getCollection(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({functio
|
|
|
30
30
|
* @link https://simplyxp.js.org/docs/next/handlers/database#deleteMany Documentation
|
|
31
31
|
* @returns {Promise<boolean>} `true` if the documents were successfully deleted, otherwise `false`.
|
|
32
32
|
* @throws {XpFatal} Throws an error if there is no database connection.
|
|
33
|
-
*/static async deleteMany(
|
|
33
|
+
*/static async deleteMany(a){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"deleteMany()",message:"No database connection"});let e;switch(xp_1.xp.dbType){case"mongodb":e=await this.getCollection(a.collection).deleteMany(a.data).catch(a=>handleError(a,"deleteMany()"));break;case"sqlite":e=("simply-xps"===a.collection?xp_1.xp.database.prepare('DELETE FROM "simply-xps" WHERE guild = ?'):xp_1.xp.database.prepare('DELETE FROM "simply-xp-levelroles" WHERE gid = ?')).run(a.data.guild)}return!!e}
|
|
34
34
|
/**
|
|
35
35
|
* Deletes one document from the database.
|
|
36
36
|
*
|
|
@@ -39,7 +39,7 @@ static getCollection(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({functio
|
|
|
39
39
|
* @link https://simplyxp.js.org/docs/next/handlers/database#deleteOne Documentation
|
|
40
40
|
* @returns {Promise<boolean>} `true` if the document was successfully deleted, otherwise `false`.
|
|
41
41
|
* @throws {XpFatal} Throws an error if there is no database connection.
|
|
42
|
-
*/static async deleteOne(
|
|
42
|
+
*/static async deleteOne(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"deleteOne()",message:"No database connection"});let a;switch(xp_1.xp.dbType){case"mongodb":a=await this.getCollection(e.collection).deleteOne(e.data).catch(a=>handleError(a,"deleteOne()"));break;case"sqlite":a="simply-xps"===e.collection?xp_1.xp.database.prepare('DELETE FROM "simply-xps" WHERE guild = ? AND user = ?').run(e.data.guild,e.data.user):(a=(a=await this.find(e.collection,e.data.guild)).filter(a=>a.lvlrole.lvl===e.data.lvlrole.lvl)[0],xp_1.xp.database.prepare('DELETE FROM "simply-xp-levelroles" WHERE gid = ? AND lvlrole = ?').run(e.data.guild,JSON.stringify(a.lvlrole)))}return!!a}
|
|
43
43
|
/**
|
|
44
44
|
* Finds one document in the database.
|
|
45
45
|
*
|
|
@@ -48,7 +48,7 @@ static getCollection(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({functio
|
|
|
48
48
|
* @link https://simplyxp.js.org/docs/next/handlers/database#findOne Documentation
|
|
49
49
|
* @returns {Promise<UserResult | LevelRoleResult>} The found document.
|
|
50
50
|
* @throws {XpFatal} Throws an error if there is no database connection.
|
|
51
|
-
*/static async findOne(
|
|
51
|
+
*/static async findOne(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"findOne()",message:"No database connection"});let a;switch(xp_1.xp.dbType){case"mongodb":a="simply-xps"===e.collection?await this.getCollection(e.collection).findOne(e.data).catch(a=>handleError(a,"findOne()")):await this.getCollection(e.collection).findOne({guild:e.data.guild,"lvlrole.lvl":e.data.lvlrole.lvl}).catch(a=>handleError(a,"findOne()"));break;case"sqlite":a="simply-xps"===e.collection?xp_1.xp.database.prepare('SELECT * FROM "simply-xps" WHERE guild = ? AND user = ?').get(e.data.guild,e.data.user):(a=await this.find(e.collection,e.data.guild)).filter(a=>a.lvlrole.lvl===e.data.lvlrole.lvl)[0]}return a}
|
|
52
52
|
/**
|
|
53
53
|
* Finds multiple documents in the database.
|
|
54
54
|
*
|
|
@@ -58,14 +58,14 @@ static getCollection(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({functio
|
|
|
58
58
|
* @link https://simplyxp.js.org/docs/next/handlers/database#find Documentation
|
|
59
59
|
* @returns {Promise<UserResult[] | LevelRoleResult[]>} An array of found documents.
|
|
60
60
|
* @throws {XpFatal} Throws an error if there is no database connection.
|
|
61
|
-
*/static async find(e
|
|
61
|
+
*/static async find(a,e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"find()",message:"No database connection"});let t;switch(xp_1.xp.dbType){case"mongodb":t=xp_1.xp.database.db().collection(a).find({guild:e}).toArray().catch(a=>handleError(a,"find()"));break;case"sqlite":"simply-xps"===a?(t=xp_1.xp.database.prepare('SELECT * FROM "simply-xps" WHERE guild = ?').all(e)).length&&(t=await Promise.all(t.map(async a=>(a.flags=JSON.parse(a.flags),a)))):(t=xp_1.xp.database.prepare('SELECT * FROM "simply-xp-levelroles" WHERE gid = ?').all(e)).length&&(t=await Promise.all(t.map(async a=>(a.lvlrole=JSON.parse(a.lvlrole),a))))}return t}
|
|
62
62
|
/**
|
|
63
63
|
* Finds all documents in a collection.
|
|
64
64
|
* @param {"simply-xps" | "simply-xp-levelroles"} collection - The collection to search for all documents.
|
|
65
65
|
* @link https://simplyxp.js.org/docs/next/handlers/database#findAll Documentation
|
|
66
66
|
* @returns {Promise<UserResult[] | LevelRoleResult[]>} An array of found documents.
|
|
67
67
|
* @throws {XpFatal} Throws an error if there is no database connection.
|
|
68
|
-
*/static async findAll(
|
|
68
|
+
*/static async findAll(a){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"findAll()",message:"No database connection"});let e;switch(xp_1.xp.dbType){case"mongodb":e=xp_1.xp.database.db().collection(a).find().toArray().catch(a=>handleError(a,"findAll()"));break;case"sqlite":"simply-xps"===a?(e=xp_1.xp.database.prepare('SELECT * FROM "simply-xps"').all()).length&&(e=await Promise.all(e.map(async a=>(a.flags=JSON.parse(a.flags),a)))):(e=xp_1.xp.database.prepare('SELECT * FROM "simply-xp-levelroles"').all()).length&&(e=await Promise.all(e.map(async a=>(a.lvlrole=JSON.parse(a.lvlrole),a))))}return e}
|
|
69
69
|
/**
|
|
70
70
|
* Updates one document in the database.
|
|
71
71
|
*
|
|
@@ -76,4 +76,4 @@ static getCollection(e){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({functio
|
|
|
76
76
|
* @link https://simplyxp.js.org/docs/next/handlers/database#updateOne Documentation
|
|
77
77
|
* @returns {Promise<UserResult | LevelRoleResult>} The updated document.
|
|
78
78
|
* @throws {XpFatal} Throws an error if there is no database connection.
|
|
79
|
-
*/static async updateOne(e,
|
|
79
|
+
*/static async updateOne(a,e,t){if(!xp_1.xp.database)throw new xplogs_1.XpFatal({function:"updateOne()",message:"No database connection"});switch(xp_1.xp.dbType){case"mongodb":await this.getCollection(e.collection).updateOne(a.data,{$set:{...e.data,lastUpdated:(new Date).toISOString()}},t).catch(a=>handleError(a,"updateOne()"));break;case"sqlite":if("simply-xps"===a.collection&&"simply-xps"===e.collection){if(!(e.data.user&&e.data.guild&&e.data.level&&e.data.xp&&e.data.xp_rate))throw new xplogs_1.XpFatal({function:"updateOne()",message:"User, guild, level, xp, and xp_rate are required fields for updating a user document."});xp_1.xp.database.prepare(`UPDATE "simply-xps" SET xp_rate = ?, xp = ?, lastUpdated = ?, level = ? ${e.data?.name?", name = ?":""} ${e.data?.flags?", flags = ?":""} WHERE guild = ? AND user = ?`).run(e.data?.name?e.data?.flags?[e.data.xp_rate,e.data.xp,(new Date).toISOString(),e.data.level,e.data.name,JSON.stringify(e.data.flags),a.data.guild,a.data.user]:[e.data.xp_rate,e.data.xp,(new Date).toISOString(),e.data.level,e.data.name,a.data.guild,a.data.user]:e.data?.flags?[e.data.xp_rate,e.data.xp,(new Date).toISOString(),e.data.level,JSON.stringify(e.data.flags),a.data.guild,a.data.user]:[e.data.xp_rate,e.data.xp,(new Date).toISOString(),e.data.level,a.data.guild,a.data.user])}else{if("simply-xp-levelroles"!==a.collection||"simply-xp-levelroles"!==e.collection)throw new xplogs_1.XpFatal({function:"updateOne()",message:"Collection mismatch, expected same collection on both filter and update."});xp_1.xp.database.prepare('UPDATE "simply-xp-levelroles" SET lvlrole = ? WHERE gid = ?').run(JSON.stringify(e.data.lvlrole),a.data.guild)}}return db.findOne(e)}}exports.db=db;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UserResult } from "./functions/database";
|
|
2
|
+
/**
|
|
3
|
+
* Flag a user, currently only supports "modified" and "illegal"
|
|
4
|
+
* @param {string} userId
|
|
5
|
+
* @param {string} guildId
|
|
6
|
+
* @param {Array<number | string> | undefined} flags - "Undefined" will remove the flags
|
|
7
|
+
* @param {string?} username - Username to use if auto_create is enabled
|
|
8
|
+
*/
|
|
9
|
+
export declare function setFlags(userId: string, guildId: string, flags: Array<number | string> | undefined, username?: string): Promise<UserResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";async function setFlags(e,s,t,a){if(!e)throw new xplogs_1.XpFatal({function:"flagUser()",message:"User ID was not provided"});if(!s)throw new xplogs_1.XpFatal({function:"flagUser()",message:"Guild ID was not provided"});if(t&&!Array.isArray(t))throw new xplogs_1.XpFatal({function:"flagUser()",message:"Flags must be an array of numbers or strings"});var l=await xp_1.db.findOne({collection:"simply-xps",data:{user:e,guild:s}});if(l)return xp_1.db.updateOne({collection:"simply-xps",data:{user:e,guild:s}},{collection:"simply-xps",data:{flags:t,guild:s,user:e,level:l.level,xp:l.xp,xp_rate:xp_1.xp.xp_rate}});if(console.log("FLAGS => NO USER FOUND LMAO"),xp_1.xp.auto_create&&a)return xp_1.db.createOne({collection:"simply-xps",data:{flags:t,guild:s,user:e,name:a,level:0,xp:0,xp_rate:xp_1.xp.xp_rate}});throw new xplogs_1.XpFatal({function:"setLevel()",message:"User does not exist"})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setFlags=void 0;const xplogs_1=require("./functions/xplogs"),xp_1=require("../xp");exports.setFlags=setFlags;
|
package/lib/xp.d.ts
CHANGED
|
@@ -24,12 +24,13 @@ export interface Plugin {
|
|
|
24
24
|
* @property {number} xp - User XP
|
|
25
25
|
*/
|
|
26
26
|
export interface User {
|
|
27
|
+
flags?: Array<number | string> | undefined;
|
|
27
28
|
guild: string;
|
|
28
29
|
user: string;
|
|
29
30
|
name?: string | null;
|
|
30
|
-
position: number;
|
|
31
31
|
lastUpdated?: string;
|
|
32
32
|
level: number;
|
|
33
|
+
position: number;
|
|
33
34
|
xp: number;
|
|
34
35
|
}
|
|
35
36
|
export interface XPClient {
|
|
@@ -57,6 +58,7 @@ export { migrate } from "./src/migrate";
|
|
|
57
58
|
export { removeLevel, removeXP } from "./src/remove";
|
|
58
59
|
export { reset } from "./src/reset";
|
|
59
60
|
export { roleSetup } from "./src/roleSetup";
|
|
61
|
+
export { setFlags } from "./src/setFlags";
|
|
60
62
|
export { setLevel, setXP } from "./src/set";
|
|
61
63
|
export { XpEvents } from "./src/functions/xplogs";
|
|
62
64
|
export declare const xp: XPClient;
|
package/lib/xp.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.xp = exports.XpEvents = exports.setXP = exports.setLevel = exports.roleSetup = exports.reset = exports.removeXP = exports.removeLevel = exports.migrate = exports.leaderboard = exports.https = exports.fetch = exports.create = exports.updateOptions = exports.registerPlugins = exports.registerFont = exports.convertFrom = exports.clean = exports.connect = exports.rankCard = exports.leaderboardCard = exports.compareCard = exports.charts = exports.db = exports.addXP = exports.addLevel = void 0;
|
|
3
|
+
exports.xp = exports.XpEvents = exports.setXP = exports.setLevel = exports.setFlags = exports.roleSetup = exports.reset = exports.removeXP = exports.removeLevel = exports.migrate = exports.leaderboard = exports.https = exports.fetch = exports.create = exports.updateOptions = exports.registerPlugins = exports.registerFont = exports.convertFrom = exports.clean = exports.connect = exports.rankCard = exports.leaderboardCard = exports.compareCard = exports.charts = exports.db = exports.addXP = exports.addLevel = void 0;
|
|
4
4
|
// FUNCTION/CLASS EXPORTS
|
|
5
5
|
var add_1 = require("./src/add");
|
|
6
6
|
Object.defineProperty(exports, "addLevel", { enumerable: true, get: function () { return add_1.addLevel; } });
|
|
@@ -38,6 +38,8 @@ var reset_1 = require("./src/reset");
|
|
|
38
38
|
Object.defineProperty(exports, "reset", { enumerable: true, get: function () { return reset_1.reset; } });
|
|
39
39
|
var roleSetup_1 = require("./src/roleSetup");
|
|
40
40
|
Object.defineProperty(exports, "roleSetup", { enumerable: true, get: function () { return roleSetup_1.roleSetup; } });
|
|
41
|
+
var setFlags_1 = require("./src/setFlags");
|
|
42
|
+
Object.defineProperty(exports, "setFlags", { enumerable: true, get: function () { return setFlags_1.setFlags; } });
|
|
41
43
|
var set_1 = require("./src/set");
|
|
42
44
|
Object.defineProperty(exports, "setLevel", { enumerable: true, get: function () { return set_1.setLevel; } });
|
|
43
45
|
Object.defineProperty(exports, "setXP", { enumerable: true, get: function () { return set_1.setXP; } });
|
|
@@ -51,6 +53,6 @@ exports.xp = {
|
|
|
51
53
|
debug: false,
|
|
52
54
|
notify: true,
|
|
53
55
|
registeredFonts: [],
|
|
54
|
-
version: "2.0.0-beta.
|
|
56
|
+
version: "2.0.0-beta.1",
|
|
55
57
|
xp_rate: 0.1
|
|
56
58
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "simply-xp",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
4
|
"description": "The easiest way to implement xp system",
|
|
5
5
|
"main": "lib/xp.js",
|
|
6
6
|
"scripts": {
|
|
@@ -45,14 +45,14 @@
|
|
|
45
45
|
"@napi-rs/canvas": "0.1.41"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@eslint/eslintrc": "^3.0.
|
|
48
|
+
"@eslint/eslintrc": "^3.0.2",
|
|
49
49
|
"@types/better-sqlite3": "^7.6.9",
|
|
50
|
-
"@types/node": "^20.11.
|
|
51
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
52
|
-
"@typescript-eslint/parser": "^6.
|
|
53
|
-
"better-sqlite3": "^9.4.
|
|
54
|
-
"eslint": "^8.
|
|
55
|
-
"mongodb": "^6.
|
|
50
|
+
"@types/node": "^20.11.24",
|
|
51
|
+
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
52
|
+
"@typescript-eslint/parser": "^6.21.0",
|
|
53
|
+
"better-sqlite3": "^9.4.3",
|
|
54
|
+
"eslint": "^8.57.0",
|
|
55
|
+
"mongodb": "^6.4.0",
|
|
56
56
|
"typescript": "^5.3.3",
|
|
57
57
|
"uglify-js": "^3.17.4"
|
|
58
58
|
},
|