added eslint norme to code

This commit is contained in:
NigeParis 2025-12-02 17:11:50 +01:00 committed by apetitco
parent 8a151cfb5e
commit bde038a8d0
9 changed files with 128 additions and 157 deletions

View file

@ -20,7 +20,7 @@
"fastify-plugin": "^5.1.0", "fastify-plugin": "^5.1.0",
"joi": "^18.0.2", "joi": "^18.0.2",
"otp": "^1.1.2", "otp": "^1.1.2",
"typebox": "^1.0.59", "typebox": "^1.0.61",
"uuidv7": "^1.1.0" "uuidv7": "^1.1.0"
}, },
"devDependencies": { "devDependencies": {

View file

@ -30,7 +30,6 @@ export const BlockedImpl: Omit<IBlockedDb, keyof Database> = {
this.prepare('DELETE FROM blocked WHERE user = @id AND blocked = @blocked').run({ id, blocked }); this.prepare('DELETE FROM blocked WHERE user = @id AND blocked = @blocked').run({ id, blocked });
}, },
/** /**
* Get all blocked user * Get all blocked user
* *
@ -64,7 +63,6 @@ export type BlockedData = {
* @returns The blocked if it exists, undefined otherwise * @returns The blocked if it exists, undefined otherwise
*/ */
export function blockedFromRow(row?: Partial<BlockedData>): BlockedData | undefined { export function blockedFromRow(row?: Partial<BlockedData>): BlockedData | undefined {
console.log('HELLO ?????', row);
if (isNullish(row)) return undefined; if (isNullish(row)) return undefined;
if (isNullish(row.id)) return undefined; if (isNullish(row.id)) return undefined;
if (isNullish(row.user)) return undefined; if (isNullish(row.user)) return undefined;

View file

@ -27,7 +27,7 @@
"fastify": "^5.6.2", "fastify": "^5.6.2",
"fastify-cli": "^7.4.1", "fastify-cli": "^7.4.1",
"fastify-plugin": "^5.1.0", "fastify-plugin": "^5.1.0",
"typebox": "^1.0.59" "typebox": "^1.0.61"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^22.19.1", "@types/node": "^22.19.1",

View file

@ -27,7 +27,7 @@
"fastify": "^5.6.2", "fastify": "^5.6.2",
"fastify-plugin": "^5.1.0", "fastify-plugin": "^5.1.0",
"socket.io": "^4.8.1", "socket.io": "^4.8.1",
"typebox": "^1.0.59" "typebox": "^1.0.61"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^22.19.1", "@types/node": "^22.19.1",

View file

@ -75,14 +75,12 @@ const app: FastifyPluginAsync = async (fastify, opts): Promise<void> => {
export default app; export default app;
export { app }; export { app };
// When using .decorate you have to specify added properties for Typescript // When using .decorate you have to specify added properties for Typescript
declare module 'fastify' { declare module 'fastify' {
interface FastifyInstance { interface FastifyInstance {
io: Server<{ io: Server<{
hello: (message: string) => string; hello: (message: string) => string;
MsgObjectServer: (data: { message: ClientMessage } ) => void; MsgObjectServer: (data: { message: ClientMessage }) => void;
message: (msg: string) => void; message: (msg: string) => void;
listBud: (msg: string) => void; listBud: (msg: string) => void;
testend: (sock_id_client: string) => void; testend: (sock_id_client: string) => void;
@ -161,32 +159,27 @@ async function onReady(fastify: FastifyInstance) {
return count; return count;
} }
function broadcast(data: ClientMessage, sender?: string) { function broadcast(data: ClientMessage, sender?: string) {
fastify.io.fetchSockets().then((sockets) => { fastify.io.fetchSockets().then((sockets) => {
for (const s of sockets) { for (const s of sockets) {
// Skip sender's own socket
// Skip sender's own socket if (s.id === sender) continue;
if (s.id === sender) continue; // Get client name from map
const clientInfo = clientChat.get(s.id);
// Get client name from map if (!clientInfo?.user) {
const clientInfo = clientChat.get(s.id); console.log(color.yellow, `Skipping socket ${s.id} (no user found)`);
continue;
if (!clientInfo?.user) { }
console.log(color.yellow, `Skipping socket ${s.id} (no user found)`); // Emit structured JSON object
continue; s.emit('MsgObjectServer', { message: data });
// Debug logs
console.log(color.green, 'Broadcast to:', clientInfo.user);
console.log(' Target socket ID:', s.id);
console.log(' Target rooms:', [...s.rooms]);
console.log(' Sender socket ID:', sender ?? 'none');
} }
});
// Emit structured JSON object }
s.emit("MsgObjectServer", { message: data });
// Debug logs
console.log(color.green, "Broadcast to:", clientInfo.user);
console.log(" Target socket ID:", s.id);
console.log(" Target rooms:", [...s.rooms]);
console.log(" Sender socket ID:", sender ?? "none");
}
});
}
fastify.io.on('connection', (socket: Socket) => { fastify.io.on('connection', (socket: Socket) => {
@ -268,18 +261,18 @@ function broadcast(data: ClientMessage, sender?: string) {
} }
}); });
socket.on("logout", () => { socket.on('logout', () => {
const clientInfo = clientChat.get(socket.id); const clientInfo = clientChat.get(socket.id);
const clientName = clientInfo?.user; const clientName = clientInfo?.user;
if (!clientName) return; if (!clientName) return;
console.log(color.green, `Client logging out: ${clientName} (${socket.id})`); console.log(color.green, `Client logging out: ${clientName} (${socket.id})`);
const obj = { const obj = {
destination: "system-info", destination: 'system-info',
type: "chat" as const, type: 'chat' as const,
user: clientName, user: clientName,
token: "", token: '',
text: "LEFT the chat", text: 'LEFT the chat',
timestamp: Date.now(), timestamp: Date.now(),
SenderWindowID: socket.id, SenderWindowID: socket.id,
}; };
@ -290,8 +283,6 @@ function broadcast(data: ClientMessage, sender?: string) {
if (socket.connected) socket.disconnect(true); if (socket.connected) socket.disconnect(true);
}); });
socket.on('disconnecting', (reason) => { socket.on('disconnecting', (reason) => {
const clientName = clientChat.get(socket.id)?.user || null; const clientName = clientChat.get(socket.id)?.user || null;
console.log( console.log(
@ -303,7 +294,7 @@ function broadcast(data: ClientMessage, sender?: string) {
if (clientName !== null) { if (clientName !== null) {
const obj = { const obj = {
destination: "system-info", destination: 'system-info',
type: 'chat', type: 'chat',
user: clientName, user: clientName,
token: '', token: '',
@ -327,7 +318,7 @@ function broadcast(data: ClientMessage, sender?: string) {
if (clientName !== null) { if (clientName !== null) {
const obj = { const obj = {
destination: "system-info", destination: 'system-info',
type: 'chat', type: 'chat',
user: clientName, user: clientName,
token: '', token: '',
@ -335,7 +326,7 @@ function broadcast(data: ClientMessage, sender?: string) {
timestamp: Date.now(), timestamp: Date.now(),
SenderWindowID: socket.id, SenderWindowID: socket.id,
}; };
console.log(color.blue, 'BROADCASTS OUT :',obj.SenderWindowID); console.log(color.blue, 'BROADCASTS OUT :', obj.SenderWindowID);
broadcast(obj, obj.SenderWindowID); broadcast(obj, obj.SenderWindowID);
// clientChat.delete(obj.user); // clientChat.delete(obj.user);
} }
@ -372,7 +363,7 @@ function broadcast(data: ClientMessage, sender?: string) {
); );
if (clientName !== null) { if (clientName !== null) {
const obj = { const obj = {
destination: "system-info", destination: 'system-info',
type: 'chat', type: 'chat',
user: clientName, user: clientName,
frontendUserName: userNameFromFrontend, frontendUserName: userNameFromFrontend,

View file

@ -1,8 +1,8 @@
import { FastifyPluginAsync } from 'fastify'; import { FastifyPluginAsync } from 'fastify';
import { MakeStaticResponse, typeResponse } from '@shared/utils'; import { MakeStaticResponse, typeResponse } from '@shared/utils';
import { Type } from 'typebox'; import { Type } from 'typebox';
import { UserId } from '@shared/database/mixin/user'; // import { UserId } from '@shared/database/mixin/user';
import { Server } from 'socket.io'; // import { Server } from 'socket.io';
// colors for console.log // colors for console.log
export const color = { export const color = {
@ -13,16 +13,6 @@ export const color = {
reset: '\x1b[0m', reset: '\x1b[0m',
}; };
// Global map of clients
// key = socket, value = clientname
interface ClientInfo {
user: string;
lastSeen: number;
}
const clientChat = new Map<string, ClientInfo>();
export const ChatRes = { export const ChatRes = {
200: typeResponse('success', 'chat.success', { 200: typeResponse('success', 'chat.success', {
name: Type.String(), name: Type.String(),
@ -33,8 +23,6 @@ export const ChatRes = {
export type ChatResType = MakeStaticResponse<typeof ChatRes>; export type ChatResType = MakeStaticResponse<typeof ChatRes>;
const route: FastifyPluginAsync = async (fastify): Promise<void> => { const route: FastifyPluginAsync = async (fastify): Promise<void> => {
fastify.get( fastify.get(
'/api/chat/test', '/api/chat/test',
@ -47,23 +35,17 @@ const route: FastifyPluginAsync = async (fastify): Promise<void> => {
}, },
async (req, res) => { async (req, res) => {
const users = fastify.db.getAllUsers();
console.log('ALL USERS EVER CONNECTED:', users);
let users = fastify.db.getAllUsers();
console.log("ALL USERS EVER CONNECTED:", users);
if (!users) return; if (!users) return;
for (const user of users) { for (const user of users) {
console.log(color.yellow, "USER:", user.name); console.log(color.yellow, 'USER:', user.name);
} }
// const usersBlocked = fastify.db.getAllBlockedUsers(); // const usersBlocked = fastify.db.getAllBlockedUsers();
// console.log(color.red, "ALL BLOCKED USERS:", usersBlocked); // console.log(color.red, "ALL BLOCKED USERS:", usersBlocked);
fastify.db.addBlockedUserFor(users[0].id, users[1].id) fastify.db.addBlockedUserFor(users[0].id, users[1].id);
let usersBlocked2; const usersBlocked2 = fastify.db.getAllBlockedUsers();
usersBlocked2 = fastify.db.getAllBlockedUsers(); console.log(color.green, 'ALL BLOCKED USERS:', usersBlocked2);
console.log(color.green, "ALL BLOCKED USERS:", usersBlocked2);
res.makeResponse(200, 'success', 'CCChat.success', { name: 'name', 'id': req.authUser!.id, guest: false }); res.makeResponse(200, 'success', 'CCChat.success', { name: 'name', 'id': req.authUser!.id, guest: false });
}, },
); );

View file

@ -24,15 +24,15 @@
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.39.1", "@eslint/js": "^9.39.1",
"@openapitools/openapi-generator-cli": "^2.25.2", "@openapitools/openapi-generator-cli": "^2.25.2",
"@typescript-eslint/eslint-plugin": "^8.48.0", "@typescript-eslint/eslint-plugin": "^8.48.1",
"@typescript-eslint/parser": "^8.48.0", "@typescript-eslint/parser": "^8.48.1",
"eslint": "^9.39.1", "eslint": "^9.39.1",
"husky": "^9.1.7", "husky": "^9.1.7",
"lint-staged": "^16.2.7", "lint-staged": "^16.2.7",
"openapi-generator-cli": "^1.0.0", "openapi-generator-cli": "^1.0.0",
"openapi-typescript": "^7.10.1", "openapi-typescript": "^7.10.1",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"typescript-eslint": "^8.48.0", "typescript-eslint": "^8.48.1",
"vite": "^7.2.6" "vite": "^7.2.6"
}, },
"dependencies": { "dependencies": {

158
src/pnpm-lock.yaml generated
View file

@ -22,11 +22,11 @@ importers:
specifier: ^2.25.2 specifier: ^2.25.2
version: 2.25.2(@types/node@24.10.1) version: 2.25.2(@types/node@24.10.1)
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^8.48.0 specifier: ^8.48.1
version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) version: 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser': '@typescript-eslint/parser':
specifier: ^8.48.0 specifier: ^8.48.1
version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) version: 8.48.1(eslint@9.39.1)(typescript@5.9.3)
eslint: eslint:
specifier: ^9.39.1 specifier: ^9.39.1
version: 9.39.1 version: 9.39.1
@ -46,8 +46,8 @@ importers:
specifier: ^5.9.3 specifier: ^5.9.3
version: 5.9.3 version: 5.9.3
typescript-eslint: typescript-eslint:
specifier: ^8.48.0 specifier: ^8.48.1
version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) version: 8.48.1(eslint@9.39.1)(typescript@5.9.3)
vite: vite:
specifier: ^7.2.6 specifier: ^7.2.6
version: 7.2.6(@types/node@24.10.1)(yaml@2.8.2) version: 7.2.6(@types/node@24.10.1)(yaml@2.8.2)
@ -88,8 +88,8 @@ importers:
specifier: ^1.1.2 specifier: ^1.1.2
version: 1.1.2 version: 1.1.2
typebox: typebox:
specifier: ^1.0.59 specifier: ^1.0.61
version: 1.0.59 version: 1.0.61
uuidv7: uuidv7:
specifier: ^1.1.0 specifier: ^1.1.0
version: 1.1.0 version: 1.1.0
@ -131,8 +131,8 @@ importers:
specifier: ^5.1.0 specifier: ^5.1.0
version: 5.1.0 version: 5.1.0
typebox: typebox:
specifier: ^1.0.59 specifier: ^1.0.61
version: 1.0.59 version: 1.0.61
devDependencies: devDependencies:
'@types/node': '@types/node':
specifier: ^22.19.1 specifier: ^22.19.1
@ -177,8 +177,8 @@ importers:
specifier: ^4.8.1 specifier: ^4.8.1
version: 4.8.1 version: 4.8.1
typebox: typebox:
specifier: ^1.0.59 specifier: ^1.0.61
version: 1.0.59 version: 1.0.61
devDependencies: devDependencies:
'@types/node': '@types/node':
specifier: ^22.19.1 specifier: ^22.19.1
@ -266,8 +266,8 @@ importers:
specifier: ^5.1.0 specifier: ^5.1.0
version: 5.1.0 version: 5.1.0
typebox: typebox:
specifier: ^1.0.59 specifier: ^1.0.61
version: 1.0.59 version: 1.0.61
devDependencies: devDependencies:
'@types/node': '@types/node':
specifier: ^22.19.1 specifier: ^22.19.1
@ -1119,63 +1119,63 @@ packages:
'@types/trusted-types@2.0.7': '@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
'@typescript-eslint/eslint-plugin@8.48.0': '@typescript-eslint/eslint-plugin@8.48.1':
resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==} resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^8.48.0 '@typescript-eslint/parser': ^8.48.1
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/parser@8.48.0': '@typescript-eslint/parser@8.48.1':
resolution: {integrity: sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==} resolution: {integrity: sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/project-service@8.48.0': '@typescript-eslint/project-service@8.48.1':
resolution: {integrity: sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==} resolution: {integrity: sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/scope-manager@8.48.0': '@typescript-eslint/scope-manager@8.48.1':
resolution: {integrity: sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==} resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/tsconfig-utils@8.48.0': '@typescript-eslint/tsconfig-utils@8.48.1':
resolution: {integrity: sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==} resolution: {integrity: sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/type-utils@8.48.0': '@typescript-eslint/type-utils@8.48.1':
resolution: {integrity: sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==} resolution: {integrity: sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/types@8.48.0': '@typescript-eslint/types@8.48.1':
resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==} resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.48.0': '@typescript-eslint/typescript-estree@8.48.1':
resolution: {integrity: sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==} resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/utils@8.48.0': '@typescript-eslint/utils@8.48.1':
resolution: {integrity: sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==} resolution: {integrity: sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/visitor-keys@8.48.0': '@typescript-eslint/visitor-keys@8.48.1':
resolution: {integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==} resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
abort-controller@3.0.0: abort-controller@3.0.0:
@ -3026,11 +3026,11 @@ packages:
resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
typebox@1.0.59: typebox@1.0.61:
resolution: {integrity: sha512-D8pTcn4yPzUb34OWFyPVITP1fMZjJXV5n7tT5ss/BxHSnzfuMK4rQEFunpk1UOwq9lMCOed2BJ3GXGoIBKl7Rw==} resolution: {integrity: sha512-5KeeL5QoPBoYm8Z7tGR1Pw9FjWA75MLhVuiSMCRgtgTg/d2+kTvolFddhOUua9FxpIaqXznFPZcc3sl6cEpafw==}
typescript-eslint@8.48.0: typescript-eslint@8.48.1:
resolution: {integrity: sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==} resolution: {integrity: sha512-FbOKN1fqNoXp1hIl5KYpObVrp0mCn+CLgn479nmu2IsRMrx2vyv74MmsBLVlhg8qVwNFGbXSp8fh1zp8pEoC2A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
@ -4062,14 +4062,14 @@ snapshots:
'@types/trusted-types@2.0.7': '@types/trusted-types@2.0.7':
optional: true optional: true
'@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)': '@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)':
dependencies: dependencies:
'@eslint-community/regexpp': 4.12.2 '@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': 8.48.1(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.48.0 '@typescript-eslint/scope-manager': 8.48.1
'@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/utils': 8.48.1(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.48.0 '@typescript-eslint/visitor-keys': 8.48.1
eslint: 9.39.1 eslint: 9.39.1
graphemer: 1.4.0 graphemer: 1.4.0
ignore: 7.0.5 ignore: 7.0.5
@ -4079,41 +4079,41 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3)': '@typescript-eslint/parser@8.48.1(eslint@9.39.1)(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/scope-manager': 8.48.0 '@typescript-eslint/scope-manager': 8.48.1
'@typescript-eslint/types': 8.48.0 '@typescript-eslint/types': 8.48.1
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.48.0 '@typescript-eslint/visitor-keys': 8.48.1
debug: 4.4.3(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2)
eslint: 9.39.1 eslint: 9.39.1
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/project-service@8.48.0(typescript@5.9.3)': '@typescript-eslint/project-service@8.48.1(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3)
'@typescript-eslint/types': 8.48.0 '@typescript-eslint/types': 8.48.1
debug: 4.4.3(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2)
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/scope-manager@8.48.0': '@typescript-eslint/scope-manager@8.48.1':
dependencies: dependencies:
'@typescript-eslint/types': 8.48.0 '@typescript-eslint/types': 8.48.1
'@typescript-eslint/visitor-keys': 8.48.0 '@typescript-eslint/visitor-keys': 8.48.1
'@typescript-eslint/tsconfig-utils@8.48.0(typescript@5.9.3)': '@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)':
dependencies: dependencies:
typescript: 5.9.3 typescript: 5.9.3
'@typescript-eslint/type-utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)': '@typescript-eslint/type-utils@8.48.1(eslint@9.39.1)(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/types': 8.48.0 '@typescript-eslint/types': 8.48.1
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3)
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/utils': 8.48.1(eslint@9.39.1)(typescript@5.9.3)
debug: 4.4.3(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2)
eslint: 9.39.1 eslint: 9.39.1
ts-api-utils: 2.1.0(typescript@5.9.3) ts-api-utils: 2.1.0(typescript@5.9.3)
@ -4121,14 +4121,14 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/types@8.48.0': {} '@typescript-eslint/types@8.48.1': {}
'@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)': '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/project-service': 8.48.0(typescript@5.9.3) '@typescript-eslint/project-service': 8.48.1(typescript@5.9.3)
'@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3)
'@typescript-eslint/types': 8.48.0 '@typescript-eslint/types': 8.48.1
'@typescript-eslint/visitor-keys': 8.48.0 '@typescript-eslint/visitor-keys': 8.48.1
debug: 4.4.3(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2)
minimatch: 9.0.5 minimatch: 9.0.5
semver: 7.7.3 semver: 7.7.3
@ -4138,20 +4138,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)': '@typescript-eslint/utils@8.48.1(eslint@9.39.1)(typescript@5.9.3)':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
'@typescript-eslint/scope-manager': 8.48.0 '@typescript-eslint/scope-manager': 8.48.1
'@typescript-eslint/types': 8.48.0 '@typescript-eslint/types': 8.48.1
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3)
eslint: 9.39.1 eslint: 9.39.1
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/visitor-keys@8.48.0': '@typescript-eslint/visitor-keys@8.48.1':
dependencies: dependencies:
'@typescript-eslint/types': 8.48.0 '@typescript-eslint/types': 8.48.1
eslint-visitor-keys: 4.2.1 eslint-visitor-keys: 4.2.1
abort-controller@3.0.0: abort-controller@3.0.0:
@ -6154,14 +6154,14 @@ snapshots:
media-typer: 1.1.0 media-typer: 1.1.0
mime-types: 3.0.2 mime-types: 3.0.2
typebox@1.0.59: {} typebox@1.0.61: {}
typescript-eslint@8.48.0(eslint@9.39.1)(typescript@5.9.3): typescript-eslint@8.48.1(eslint@9.39.1)(typescript@5.9.3):
dependencies: dependencies:
'@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': 8.48.1(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3)
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/utils': 8.48.1(eslint@9.39.1)(typescript@5.9.3)
eslint: 9.39.1 eslint: 9.39.1
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:

View file

@ -26,7 +26,7 @@
"fastify": "^5.6.2", "fastify": "^5.6.2",
"fastify-cli": "^7.4.1", "fastify-cli": "^7.4.1",
"fastify-plugin": "^5.1.0", "fastify-plugin": "^5.1.0",
"typebox": "^1.0.59" "typebox": "^1.0.61"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^22.19.1", "@types/node": "^22.19.1",