From bfd7680cf265e4a0ff6cbc3ccdc932fc2b63297a Mon Sep 17 00:00:00 2001 From: fzzinchemical Date: Wed, 12 Nov 2025 08:24:27 +0100 Subject: [PATCH 1/5] Add RULE34_API_KEY to environment configuration and update request URL generation --- src/core/configLoader.ts | 4 +++- src/plugins/rule34/plugin.ts | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/configLoader.ts b/src/core/configLoader.ts index 71253a3..eb8e4e4 100644 --- a/src/core/configLoader.ts +++ b/src/core/configLoader.ts @@ -1,13 +1,15 @@ export type EnvConst = { ADMIN: string, BOT_TOKEN: string, + RULE34_API_KEY: string, // DB_LOCATION: string } export function loadConfig() { return { ADMIN: loadEnv("ADMIN"), - BOT_TOKEN: loadEnv("BOT_TOKEN"), + BOT_TOKEN: loadEnv("BOT_TOKEN"), + RULE34_API_KEY: loadEnv("RULE34_API_KEY"), // DB_LOCATION: loadEnv("DB_LOCATION") } } diff --git a/src/plugins/rule34/plugin.ts b/src/plugins/rule34/plugin.ts index 2191514..d57eec5 100644 --- a/src/plugins/rule34/plugin.ts +++ b/src/plugins/rule34/plugin.ts @@ -45,5 +45,6 @@ export function generateRequestURL(postRequestParams: PostRequestParameters) { parameterStrings.push(`&${k}=${v}`) } }); + parameterStrings.push('&api_key=&user_id=' + (Deno.env.get("RULE34_API_KEY") ?? '')); return postCpy.href + parameterStrings.join(''); } \ No newline at end of file From ddba2854c441a911cf62d5e1608f620ceec27bba Mon Sep 17 00:00:00 2001 From: fzzinchemical Date: Wed, 12 Nov 2025 08:57:43 +0100 Subject: [PATCH 2/5] Update environment configuration and fix test case naming --- deno.lock | 21 +++++++++++++++++++-- src/core/configLoader.ts | 11 +++++++++++ src/plugins/rule34/plugin.ts | 4 +++- src/plugins/rule34/test.ts | 4 ++-- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/deno.lock b/deno.lock index c68a110..407ff87 100644 --- a/deno.lock +++ b/deno.lock @@ -1,10 +1,14 @@ { - "version": "4", + "version": "5", "specifiers": { "jsr:@melvdouc/xml-parser@*": "0.1.1", + "jsr:@melvdouc/xml-parser@~0.1.1": "0.1.1", + "jsr:@std/assert@1": "1.0.15", + "jsr:@std/dotenv@*": "0.225.3", "jsr:@std/dotenv@0.225.3": "0.225.3", "jsr:@std/fmt@^1.0.5": "1.0.6", "jsr:@std/fs@^1.0.11": "1.0.15", + "jsr:@std/internal@^1.0.12": "1.0.12", "jsr:@std/io@~0.225.2": "0.225.2", "jsr:@std/log@*": "0.224.14", "npm:@types/node@^22.14.1": "22.14.1", @@ -14,6 +18,12 @@ "@melvdouc/xml-parser@0.1.1": { "integrity": "5c79d37c6471cb74efb344988317270b57b4f181decb873e441453db42eb6e5f" }, + "@std/assert@1.0.15": { + "integrity": "d64018e951dbdfab9777335ecdb000c0b4e3df036984083be219ce5941e4703b", + "dependencies": [ + "jsr:@std/internal" + ] + }, "@std/dotenv@0.225.3": { "integrity": "a95e5b812c27b0854c52acbae215856d9cce9d4bbf774d938c51d212711e8d4a" }, @@ -23,6 +33,9 @@ "@std/fs@1.0.15": { "integrity": "c083fb479889d6440d768e498195c3fc499d426fbf9a6592f98f53884d1d3f41" }, + "@std/internal@1.0.12": { + "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" + }, "@std/io@0.225.2": { "integrity": "3c740cd4ee4c082e6cfc86458f47e2ab7cb353dc6234d5e9b1f91a2de5f4d6c7" }, @@ -173,7 +186,11 @@ "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==" }, "ws@8.18.1": { - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==" + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "optionalPeers": [ + "bufferutil@^4.0.1", + "utf-8-validate@>=5.0.2" + ] } }, "workspace": { diff --git a/src/core/configLoader.ts b/src/core/configLoader.ts index eb8e4e4..e0ae337 100644 --- a/src/core/configLoader.ts +++ b/src/core/configLoader.ts @@ -1,7 +1,17 @@ +import { load } from "jsr:@std/dotenv"; + +const _env = await load({ + // optional: choose a specific path (defaults to ".env") + envPath: ".env", + // optional: also export to the process environment (so Deno.env can read it) + export: true, +}); + export type EnvConst = { ADMIN: string, BOT_TOKEN: string, RULE34_API_KEY: string, + RULE34_API_USER: string, // DB_LOCATION: string } @@ -10,6 +20,7 @@ export function loadConfig() { ADMIN: loadEnv("ADMIN"), BOT_TOKEN: loadEnv("BOT_TOKEN"), RULE34_API_KEY: loadEnv("RULE34_API_KEY"), + RULE34_API_USER: loadEnv("RULE34_API_USER"), // DB_LOCATION: loadEnv("DB_LOCATION") } } diff --git a/src/plugins/rule34/plugin.ts b/src/plugins/rule34/plugin.ts index d57eec5..5f722cc 100644 --- a/src/plugins/rule34/plugin.ts +++ b/src/plugins/rule34/plugin.ts @@ -2,6 +2,7 @@ import { requestJSON } from "@root/structures/apiRequest.ts"; import { ImageResponse, postUrl } from "./api.ts"; import { EmbedBuilder } from "@discordjs"; + export type PostRequestParameters = { limit?: string| null| undefined, id?: string| null| undefined, @@ -45,6 +46,7 @@ export function generateRequestURL(postRequestParams: PostRequestParameters) { parameterStrings.push(`&${k}=${v}`) } }); - parameterStrings.push('&api_key=&user_id=' + (Deno.env.get("RULE34_API_KEY") ?? '')); + + parameterStrings.push('&api_key=' + (Deno.env.get("RULE34_API_KEY")) + '&user_id=' + (Deno.env.get("RULE34_API_USER"))); return postCpy.href + parameterStrings.join(''); } \ No newline at end of file diff --git a/src/plugins/rule34/test.ts b/src/plugins/rule34/test.ts index c958d0a..0bc937b 100644 --- a/src/plugins/rule34/test.ts +++ b/src/plugins/rule34/test.ts @@ -6,7 +6,7 @@ Deno.test("Test URL Search Parameters", () => { )); }); -Deno.test("Test Request Workder", async () => { +Deno.test("Test Request Worker", async () => { console.debug(await requestWorker({ limit: "12", tags: "sfw", @@ -15,6 +15,6 @@ Deno.test("Test Request Workder", async () => { -Deno.test("Test Request Workder 2", async () => { +Deno.test("Test Request Worker 2", async () => { console.debug(await requestWorker({limit: "5",tags: "AI+catgirl"})); }); From 9b2321013172360340984f05c9bda8cbaf32880c Mon Sep 17 00:00:00 2001 From: fzzin Date: Mon, 4 May 2026 09:17:11 +0200 Subject: [PATCH 3/5] updated dependencies and gitignore --- .gitignore | 1 + deno.json | 6 +++--- deno.lock | 53 ++++++++++++++++++++--------------------------------- 3 files changed, 24 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 4c49bd7..8661818 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .env +.vscode diff --git a/deno.json b/deno.json index d04c084..9986c80 100755 --- a/deno.json +++ b/deno.json @@ -15,9 +15,9 @@ }, "imports": { "@discordjs": "npm:discord.js@14.18.0", - "@melvdouc/xml-parser": "jsr:@melvdouc/xml-parser@^0.1.1", - "@std/assert": "jsr:@std/assert@1", - "@types/node": "npm:@types/node@^22.14.1", + "@melvdouc/xml-parser": "jsr:@melvdouc/xml-parser@^0.1.3", + "@std/assert": "jsr:@std/assert@^1.0.19", + "@types/node": "npm:@types/node@^22.19.17", "@root/" : "./src/" }, diff --git a/deno.lock b/deno.lock index 407ff87..410d1d1 100644 --- a/deno.lock +++ b/deno.lock @@ -1,25 +1,24 @@ { "version": "5", "specifiers": { - "jsr:@melvdouc/xml-parser@*": "0.1.1", - "jsr:@melvdouc/xml-parser@~0.1.1": "0.1.1", - "jsr:@std/assert@1": "1.0.15", + "jsr:@melvdouc/xml-parser@~0.1.3": "0.1.3", + "jsr:@std/assert@^1.0.19": "1.0.19", "jsr:@std/dotenv@*": "0.225.3", "jsr:@std/dotenv@0.225.3": "0.225.3", "jsr:@std/fmt@^1.0.5": "1.0.6", "jsr:@std/fs@^1.0.11": "1.0.15", - "jsr:@std/internal@^1.0.12": "1.0.12", + "jsr:@std/internal@^1.0.12": "1.0.13", "jsr:@std/io@~0.225.2": "0.225.2", "jsr:@std/log@*": "0.224.14", - "npm:@types/node@^22.14.1": "22.14.1", + "npm:@types/node@^22.19.17": "22.19.17", "npm:discord.js@14.18.0": "14.18.0" }, "jsr": { - "@melvdouc/xml-parser@0.1.1": { - "integrity": "5c79d37c6471cb74efb344988317270b57b4f181decb873e441453db42eb6e5f" + "@melvdouc/xml-parser@0.1.3": { + "integrity": "0c43f5c9bfed32299b2d568246d02b612ced068a07f6240e729e5769fa4b0d77" }, - "@std/assert@1.0.15": { - "integrity": "d64018e951dbdfab9777335ecdb000c0b4e3df036984083be219ce5941e4703b", + "@std/assert@1.0.19": { + "integrity": "eaada96ee120cb980bc47e040f82814d786fe8162ecc53c91d8df60b8755991e", "dependencies": [ "jsr:@std/internal" ] @@ -33,8 +32,8 @@ "@std/fs@1.0.15": { "integrity": "c083fb479889d6440d768e498195c3fc499d426fbf9a6592f98f53884d1d3f41" }, - "@std/internal@1.0.12": { - "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" + "@std/internal@1.0.13": { + "integrity": "2f9546691d4ac2d32859c82dff284aaeac980ddeca38430d07941e7e288725c0" }, "@std/io@0.225.2": { "integrity": "3c740cd4ee4c082e6cfc86458f47e2ab7cb353dc6234d5e9b1f91a2de5f4d6c7" @@ -117,22 +116,16 @@ "@sapphire/snowflake@3.5.3": { "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==" }, - "@types/node@22.12.0": { - "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", + "@types/node@22.19.17": { + "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", "dependencies": [ - "undici-types@6.20.0" - ] - }, - "@types/node@22.14.1": { - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", - "dependencies": [ - "undici-types@6.21.0" + "undici-types" ] }, "@types/ws@8.18.1": { "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dependencies": [ - "@types/node@22.12.0" + "@types/node" ] }, "@vladfrangu/async_event_emitter@2.4.6": { @@ -156,7 +149,8 @@ "lodash.snakecase", "tslib", "undici" - ] + ], + "deprecated": true }, "fast-deep-equal@3.1.3": { "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" @@ -176,9 +170,6 @@ "tslib@2.8.1": { "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, - "undici-types@6.20.0": { - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" - }, "undici-types@6.21.0": { "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, @@ -186,18 +177,14 @@ "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==" }, "ws@8.18.1": { - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "optionalPeers": [ - "bufferutil@^4.0.1", - "utf-8-validate@>=5.0.2" - ] + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==" } }, "workspace": { "dependencies": [ - "jsr:@melvdouc/xml-parser@~0.1.1", - "jsr:@std/assert@1", - "npm:@types/node@^22.14.1", + "jsr:@melvdouc/xml-parser@~0.1.3", + "jsr:@std/assert@^1.0.19", + "npm:@types/node@^22.19.17", "npm:discord.js@14.18.0" ] } From e31b5d464614de026b3ab7795fe0908482caecc1 Mon Sep 17 00:00:00 2001 From: fzzin Date: Mon, 4 May 2026 09:43:27 +0200 Subject: [PATCH 4/5] Update xml-parser import and version in configuration files --- deno.json | 2 +- deno.lock | 11 +++++++---- src/plugins/rule34/api.ts | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/deno.json b/deno.json index 9986c80..c7359ba 100755 --- a/deno.json +++ b/deno.json @@ -15,7 +15,7 @@ }, "imports": { "@discordjs": "npm:discord.js@14.18.0", - "@melvdouc/xml-parser": "jsr:@melvdouc/xml-parser@^0.1.3", + "@melvdouc/xml-parser": "jsr:@melvdouc/xml-parser@^0.2.2", "@std/assert": "jsr:@std/assert@^1.0.19", "@types/node": "npm:@types/node@^22.19.17", diff --git a/deno.lock b/deno.lock index 410d1d1..1c4bf7e 100644 --- a/deno.lock +++ b/deno.lock @@ -1,7 +1,7 @@ { "version": "5", "specifiers": { - "jsr:@melvdouc/xml-parser@~0.1.3": "0.1.3", + "jsr:@melvdouc/xml-parser@~0.2.2": "0.2.2", "jsr:@std/assert@^1.0.19": "1.0.19", "jsr:@std/dotenv@*": "0.225.3", "jsr:@std/dotenv@0.225.3": "0.225.3", @@ -14,8 +14,11 @@ "npm:discord.js@14.18.0": "14.18.0" }, "jsr": { - "@melvdouc/xml-parser@0.1.3": { - "integrity": "0c43f5c9bfed32299b2d568246d02b612ced068a07f6240e729e5769fa4b0d77" + "@melvdouc/xml-parser@0.2.2": { + "integrity": "7bce05870d0d3937998421e85c955aeda8f2dc814f89bb92cf1a512223214baa", + "dependencies": [ + "jsr:@melvdouc/xml-parser" + ] }, "@std/assert@1.0.19": { "integrity": "eaada96ee120cb980bc47e040f82814d786fe8162ecc53c91d8df60b8755991e", @@ -182,7 +185,7 @@ }, "workspace": { "dependencies": [ - "jsr:@melvdouc/xml-parser@~0.1.3", + "jsr:@melvdouc/xml-parser@~0.2.2", "jsr:@std/assert@^1.0.19", "npm:@types/node@^22.19.17", "npm:discord.js@14.18.0" diff --git a/src/plugins/rule34/api.ts b/src/plugins/rule34/api.ts index 71df20b..79b7c7c 100755 --- a/src/plugins/rule34/api.ts +++ b/src/plugins/rule34/api.ts @@ -1,5 +1,5 @@ //TODO Add optional extensions like limit at Posts with tags etc. -import * as xml_parser from "jsr:@melvdouc/xml-parser"; +import * as xml_parser from "@melvdouc/xml-parser"; import { requestRaw } from "@root/structures/apiRequest.ts"; export type ImageResponse = { From efb29e3e9a83dc8904ce19af43aae30b50810dbc Mon Sep 17 00:00:00 2001 From: fzzin Date: Mon, 4 May 2026 09:51:20 +0200 Subject: [PATCH 5/5] Add eslint dependency to deno.json and deno.lock --- deno.json | 3 +- deno.lock | 365 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 365 insertions(+), 3 deletions(-) diff --git a/deno.json b/deno.json index c7359ba..fb6fe30 100755 --- a/deno.json +++ b/deno.json @@ -19,7 +19,8 @@ "@std/assert": "jsr:@std/assert@^1.0.19", "@types/node": "npm:@types/node@^22.19.17", - "@root/" : "./src/" + "@root/" : "./src/", + "eslint": "npm:eslint@^10.3.0" }, "fmt": { "useTabs": true diff --git a/deno.lock b/deno.lock index 1c4bf7e..1264c0b 100644 --- a/deno.lock +++ b/deno.lock @@ -11,7 +11,8 @@ "jsr:@std/io@~0.225.2": "0.225.2", "jsr:@std/log@*": "0.224.14", "npm:@types/node@^22.19.17": "22.19.17", - "npm:discord.js@14.18.0": "14.18.0" + "npm:discord.js@14.18.0": "14.18.0", + "npm:eslint@^10.3.0": "10.3.0" }, "jsr": { "@melvdouc/xml-parser@0.2.2": { @@ -106,6 +107,69 @@ "ws" ] }, + "@eslint-community/eslint-utils@4.9.1_eslint@10.3.0": { + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dependencies": [ + "eslint", + "eslint-visitor-keys@3.4.3" + ] + }, + "@eslint-community/regexpp@4.12.2": { + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==" + }, + "@eslint/config-array@0.23.5": { + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dependencies": [ + "@eslint/object-schema", + "debug", + "minimatch" + ] + }, + "@eslint/config-helpers@0.5.5": { + "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", + "dependencies": [ + "@eslint/core" + ] + }, + "@eslint/core@1.2.1": { + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dependencies": [ + "@types/json-schema" + ] + }, + "@eslint/object-schema@3.0.5": { + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==" + }, + "@eslint/plugin-kit@0.7.1": { + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", + "dependencies": [ + "@eslint/core", + "levn" + ] + }, + "@humanfs/core@0.19.2": { + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dependencies": [ + "@humanfs/types" + ] + }, + "@humanfs/node@0.16.8": { + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dependencies": [ + "@humanfs/core", + "@humanfs/types", + "@humanwhocodes/retry" + ] + }, + "@humanfs/types@0.15.0": { + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==" + }, + "@humanwhocodes/module-importer@1.0.1": { + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, + "@humanwhocodes/retry@0.4.3": { + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==" + }, "@sapphire/async-queue@1.5.5": { "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==" }, @@ -119,6 +183,15 @@ "@sapphire/snowflake@3.5.3": { "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==" }, + "@types/esrecurse@4.3.1": { + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==" + }, + "@types/estree@1.0.8": { + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" + }, + "@types/json-schema@7.0.15": { + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, "@types/node@22.19.17": { "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", "dependencies": [ @@ -134,6 +207,51 @@ "@vladfrangu/async_event_emitter@2.4.6": { "integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==" }, + "acorn-jsx@5.3.2_acorn@8.16.0": { + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dependencies": [ + "acorn" + ] + }, + "acorn@8.16.0": { + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "bin": true + }, + "ajv@6.15.0": { + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dependencies": [ + "fast-deep-equal", + "fast-json-stable-stringify", + "json-schema-traverse", + "uri-js" + ] + }, + "balanced-match@4.0.4": { + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" + }, + "brace-expansion@5.0.5": { + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dependencies": [ + "balanced-match" + ] + }, + "cross-spawn@7.0.6": { + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": [ + "path-key", + "shebang-command", + "which" + ] + }, + "debug@4.4.3": { + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": [ + "ms" + ] + }, + "deep-is@0.1.4": { + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, "discord-api-types@0.37.120": { "integrity": "sha512-7xpNK0EiWjjDFp2nAhHXezE4OUWm7s1zhc/UXXN6hnFFU8dfoPHgV0Hx0RPiCa3ILRpdeh152icc68DGCyXYIw==" }, @@ -155,9 +273,170 @@ ], "deprecated": true }, + "escape-string-regexp@4.0.0": { + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint-scope@9.1.2": { + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dependencies": [ + "@types/esrecurse", + "@types/estree", + "esrecurse", + "estraverse" + ] + }, + "eslint-visitor-keys@3.4.3": { + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + }, + "eslint-visitor-keys@5.0.1": { + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==" + }, + "eslint@10.3.0": { + "integrity": "sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==", + "dependencies": [ + "@eslint-community/eslint-utils", + "@eslint-community/regexpp", + "@eslint/config-array", + "@eslint/config-helpers", + "@eslint/core", + "@eslint/plugin-kit", + "@humanfs/node", + "@humanwhocodes/module-importer", + "@humanwhocodes/retry", + "@types/estree", + "ajv", + "cross-spawn", + "debug", + "escape-string-regexp", + "eslint-scope", + "eslint-visitor-keys@5.0.1", + "espree", + "esquery", + "esutils", + "fast-deep-equal", + "file-entry-cache", + "find-up", + "glob-parent", + "ignore", + "imurmurhash", + "is-glob", + "json-stable-stringify-without-jsonify", + "minimatch", + "natural-compare", + "optionator" + ], + "bin": true + }, + "espree@11.2.0": { + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dependencies": [ + "acorn", + "acorn-jsx", + "eslint-visitor-keys@5.0.1" + ] + }, + "esquery@1.7.0": { + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dependencies": [ + "estraverse" + ] + }, + "esrecurse@4.3.0": { + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": [ + "estraverse" + ] + }, + "estraverse@5.3.0": { + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils@2.0.3": { + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, "fast-deep-equal@3.1.3": { "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "fast-json-stable-stringify@2.1.0": { + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein@2.0.6": { + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "file-entry-cache@8.0.0": { + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dependencies": [ + "flat-cache" + ] + }, + "find-up@5.0.0": { + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": [ + "locate-path", + "path-exists" + ] + }, + "flat-cache@4.0.1": { + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dependencies": [ + "flatted", + "keyv" + ] + }, + "flatted@3.4.2": { + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==" + }, + "glob-parent@6.0.2": { + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": [ + "is-glob" + ] + }, + "ignore@5.3.2": { + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" + }, + "imurmurhash@0.1.4": { + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": [ + "is-extglob" + ] + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "json-buffer@3.0.1": { + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-schema-traverse@0.4.1": { + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify@1.0.1": { + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "keyv@4.5.4": { + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": [ + "json-buffer" + ] + }, + "levn@0.4.1": { + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": [ + "prelude-ls", + "type-check" + ] + }, + "locate-path@6.0.0": { + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": [ + "p-locate" + ] + }, "lodash.snakecase@4.1.1": { "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" }, @@ -167,20 +446,101 @@ "magic-bytes.js@1.10.0": { "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==" }, + "minimatch@10.2.5": { + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dependencies": [ + "brace-expansion" + ] + }, + "ms@2.1.3": { + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "natural-compare@1.4.0": { + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "optionator@0.9.4": { + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dependencies": [ + "deep-is", + "fast-levenshtein", + "levn", + "prelude-ls", + "type-check", + "word-wrap" + ] + }, + "p-limit@3.1.0": { + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": [ + "yocto-queue" + ] + }, + "p-locate@5.0.0": { + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": [ + "p-limit" + ] + }, + "path-exists@4.0.0": { + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-key@3.1.1": { + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "prelude-ls@1.2.1": { + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "punycode@2.3.1": { + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "shebang-command@2.0.0": { + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": [ + "shebang-regex" + ] + }, + "shebang-regex@3.0.0": { + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, "ts-mixer@6.0.4": { "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" }, "tslib@2.8.1": { "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, + "type-check@0.4.0": { + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": [ + "prelude-ls" + ] + }, "undici-types@6.21.0": { "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, "undici@6.21.1": { "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==" }, + "uri-js@4.4.1": { + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": [ + "punycode" + ] + }, + "which@2.0.2": { + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": [ + "isexe" + ], + "bin": true + }, + "word-wrap@1.2.5": { + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + }, "ws@8.18.1": { "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==" + }, + "yocto-queue@0.1.0": { + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } }, "workspace": { @@ -188,7 +548,8 @@ "jsr:@melvdouc/xml-parser@~0.2.2", "jsr:@std/assert@^1.0.19", "npm:@types/node@^22.19.17", - "npm:discord.js@14.18.0" + "npm:discord.js@14.18.0", + "npm:eslint@^10.3.0" ] } }