From 61d8e693c5a973671bd01f35dd4b61a946cbb694 Mon Sep 17 00:00:00 2001 From: apetitco Date: Tue, 16 Dec 2025 14:09:02 +0100 Subject: [PATCH 01/48] (schism): started separating backend from frontend --- .idea/workspace.xml | 114 ++++++++++ docker-compose.yml | 26 +++ frontend/pnpm-lock.yaml | 295 ++++++++++++++++++++++++++ frontend/src/pages/ttt/ttt.ts | 200 ++++-------------- src/@shared/package.json | 4 + src/auth/package.json | 4 + src/chat/package.json | 4 + src/package.json | 4 + src/pnpm-lock.yaml | 380 ++++++++++++++++++++++++++++++++++ src/tic-tac-toe/package.json | 21 ++ src/tic-tac-toe/src/app.ts | 240 +++++++++++++++++++++ src/tic-tac-toe/src/game.ts | 81 ++++++++ src/user/package.json | 4 + 13 files changed, 1214 insertions(+), 163 deletions(-) create mode 100644 .idea/workspace.xml create mode 100644 src/tic-tac-toe/package.json create mode 100644 src/tic-tac-toe/src/app.ts create mode 100644 src/tic-tac-toe/src/game.ts diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..0b1cef8 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,114 @@ + + + + + + + + + + { + "lastFilter": { + "state": "OPEN", + "assignee": "RepentedAlex" + } +} + { + "selectedUrlAndAccountId": { + "url": "https://github.com/Maix0/ft_deadge.git", + "accountId": "05fe7ff5-d360-4ad3-b17e-66daa92a5dbb" + } +} + + + { + "associatedIndex": 2 +} + + + + + + + + + + + + + + 1765884886075 + + + + + + + + + + + + + + + - - \ No newline at end of file From d946e59755f78af09d538caf5a361d3ed2a500b2 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:42:59 +0100 Subject: [PATCH 11/48] (misc): Bit of cleaning --- src/tic-tac-toe/src/app.ts | 190 +------------------------------------ 1 file changed, 1 insertion(+), 189 deletions(-) diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index 59579cd..ba8b753 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -44,7 +44,6 @@ const app: FastifyPluginAsync = async (fastify, opts): Promise => { }); }; export default app; -export { app }; // When using .decorate you have to specify added properties for Typescript declare module 'fastify' { @@ -95,191 +94,4 @@ async function onReady(fastify: FastifyInstance, game: TTC) { }); }); }); -} - -// // TODO: Import the plugins defined for this microservice -// // TODO: Import the routes defined for this microservice - -// // @brief The microservice app (as a plugin for Fastify), kinda like a main function I guess ??? -// // @param fastify -// // @param opts -// export const app: FastifyPluginAsync = async (fastify, opts): Promise => { -// // Register all the fastify plugins that this app will use - -// // Once it is done: -// fastify.ready((err) => { -// if (err) { -// throw err; -// } -// // TODO: Supposedly, something should be there I guess -// }); -// }; -// // Export it as the default for this file. -// export default app; - -// // TODO: Understand what is this for in /src/chat/src/app.ts -// // declare module 'fastify' { -// // interface FastifyInstance { -// // io: Server<{ -// // hello: (message: string) => string; -// // MsgObjectServer: (data: { message: ClientMessage }) => void; -// // message: (msg: string) => void; -// // testend: (sock_id_client: string) => void; -// // }>; -// // } -// // } - -// // TODO: Same for this, also in /src/chat/src/app.ts -// // async function onReady(fastify: FastifyInstance) { -// // function connectedUser(io?: Server, target?: string): number { -// // let count = 0; -// // const seen = new Set(); -// // // <- only log/count unique usernames - -// // for (const [socketId, username] of clientChat) { -// // // Basic sanity checks -// // if (typeof socketId !== 'string' || socketId.length === 0) { -// // clientChat.delete(socketId); -// // continue; -// // } -// // if (typeof username !== 'string' || username.length === 0) { -// // clientChat.delete(socketId); -// // continue; -// // } - -// // // If we have the io instance, attempt to validate the socket is still connected -// // if (io && typeof io.sockets?.sockets?.get === 'function') { -// // const s = io.sockets.sockets.get(socketId) as -// // | Socket -// // | undefined; -// // // If socket not found or disconnected, remove from map and skip -// // if (!s || s.disconnected) { -// // clientChat.delete(socketId); -// // continue; -// // } - -// // // Skip duplicates (DO NOT delete them — just don't count) -// // if (seen.has(username)) { -// // continue; -// // } -// // // socket exists and is connected -// // seen.add(username); -// // count++; -// // // console.log(color.green,"count: ", count); -// // console.log(color.yellow, 'Client:', color.reset, username); - -// // const targetSocketId = target; -// // io.to(targetSocketId!).emit('listObj', username); - -// // console.log( -// // color.yellow, -// // 'Chat Socket ID:', -// // color.reset, -// // socketId, -// // ); -// // continue; -// // } - -// // // If no io provided, assume entries in the map are valid and count them. -// // count++; -// // console.log( -// // color.red, -// // 'Client (unverified):', -// // color.reset, -// // username, -// // ); -// // console.log( -// // color.red, -// // 'Chat Socket ID (unverified):', -// // color.reset, -// // socketId, -// // ); -// // } - -// // return count; -// // } - -// // function broadcast(data: ClientMessage, sender?: string) { -// // fastify.io.fetchSockets().then((sockets) => { -// // for (const s of sockets) { -// // if (s.id !== sender) { -// // // Send REAL JSON object -// // const clientName = clientChat.get(s.id) || null; -// // if (clientName !== null) { -// // s.emit('MsgObjectServer', { message: data }); -// // } -// // console.log(' Target window socket ID:', s.id); -// // console.log(' Target window ID:', [...s.rooms]); -// // console.log(' Sender window ID:', sender ? sender : 'none'); -// // } -// // } -// // }); -// // } - -// // fastify.io.on('connection', (socket: Socket) => { -// // socket.on('message', (message: string) => { -// // console.info( -// // color.blue, -// // 'Socket connected!', -// // color.reset, -// // socket.id, -// // ); -// // console.log( -// // color.blue, -// // 'Received message from client', -// // color.reset, -// // message, -// // ); - -// // const obj: ClientMessage = JSON.parse(message) as ClientMessage; -// // clientChat.set(socket.id, obj.user); -// // console.log( -// // color.green, -// // 'Message from client', -// // color.reset, -// // `Sender: login name: "${obj.user}" - windowID "${obj.SenderWindowID}" - text message: "${obj.text}"`, -// // ); -// // // Send object directly — DO NOT wrap it in a string -// // broadcast(obj, obj.SenderWindowID); -// // console.log( -// // color.red, -// // 'connected in the Chat :', -// // connectedUser(fastify.io), -// // color.reset, -// // ); -// // }); - -// // socket.on('testend', (sock_id_cl: string) => { -// // console.log('testend received from client socket id:', sock_id_cl); -// // }); - -// // socket.on('list', () => { -// // console.log(color.red, 'list activated', color.reset, socket.id); -// // connectedUser(fastify.io, socket.id); -// // }); - -// // socket.on('disconnecting', (reason) => { -// // const clientName = clientChat.get(socket.id) || null; -// // console.log( -// // color.green, -// // `Client disconnecting: ${clientName} (${socket.id}) reason:`, -// // reason, -// // ); -// // if (reason === 'transport error') return; - -// // if (clientName !== null) { -// // const obj = { -// // type: 'chat', -// // user: clientName, -// // token: '', -// // text: 'LEFT the chat', -// // timestamp: Date.now(), -// // SenderWindowID: socket.id, -// // }; - -// // broadcast(obj, obj.SenderWindowID); -// // // clientChat.delete(obj.user); -// // } -// // }); -// // }); -// // } \ No newline at end of file +} \ No newline at end of file From 5e1245b016b6554325f351f997da77544c3562cf Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:43:17 +0100 Subject: [PATCH 12/48] (misc): Added tsconfig.json file --- src/tic-tac-toe/tsconfig.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/tic-tac-toe/tsconfig.json diff --git a/src/tic-tac-toe/tsconfig.json b/src/tic-tac-toe/tsconfig.json new file mode 100644 index 0000000..e6d24e2 --- /dev/null +++ b/src/tic-tac-toe/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": {}, + "include": ["src/**/*.ts"] +} From 4dd69d67e3c37116da1313f372bef899617ef0b1 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:44:04 +0100 Subject: [PATCH 13/48] (misc): Checked Implement other game and added task to write to database --- frontend/src/pages/ttt/README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/frontend/src/pages/ttt/README.md b/frontend/src/pages/ttt/README.md index d8169ae..d5de0ed 100644 --- a/frontend/src/pages/ttt/README.md +++ b/frontend/src/pages/ttt/README.md @@ -18,12 +18,13 @@ enhancing user engagement with gameplay history, and facilitating matchmaking for an enjoyable gaming experience. # TO-DO -For now I am prohibited from working on the backend as per Maieul's request. -[ ] - Implement other game +For now I am prohibited from working on the backend as per Maieul's request. +[X] - Implement other game [X] - (Done on Dec. 7 2025) Task for December 08 or 09: Tic-tac-toe should lock up once it's finished (i.e., draw or win) and print who won, how many turns and which row/col/diag the win happened in -[ ] - Implement user history -[ ] - Implement matchmaking -[ ] - -[ ] - -[ ] - \ No newline at end of file +[ ] - Implement user history (ongoing) + [ ] - Write to database the outcome of each game +[ ] - Implement matchmaking +[ ] - +[ ] - +[ ] - \ No newline at end of file From aa1af1f6c57cefd3ab65c482443b876f1d53099f Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:44:37 +0100 Subject: [PATCH 14/48] (misc): Updated name for network. --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f4303df..031df10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,7 @@ networks: driver: bridge monitoring: driver: bridge + services: frontend: build: ./frontend @@ -79,7 +80,7 @@ services: container_name: tic-tac-toe restart: unless-stopped networks: - - transcendance-network + - app volumes: - sqlite-volume:/volumes/database - static-volume:/volumes/static From 014ab9fa702fd37bca12dc49051db5d0a2feef29 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:45:49 +0100 Subject: [PATCH 15/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/@shared/src/database/init.sql | 9 ++++ src/@shared/src/database/mixin/tictactoe.ts | 55 +++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/@shared/src/database/mixin/tictactoe.ts diff --git a/src/@shared/src/database/init.sql b/src/@shared/src/database/init.sql index 2406225..f2d2af4 100644 --- a/src/@shared/src/database/init.sql +++ b/src/@shared/src/database/init.sql @@ -23,3 +23,12 @@ CREATE TABLE IF NOT EXISTS blocked ( CREATE UNIQUE INDEX IF NOT EXISTS idx_blocked_user_pair ON blocked(user, blocked); +CREATE TABLE IF NOT EXISTS tictactoe ( + id INTEGER PRIMARY KEY NOT NULL, + player1 TEXT NOT NULL, + player2 TEXT NOT NULL, + outcome TEXT NOT NULL, + + FOREIGN KEY(player1) REFERENCES user(id) + FOREIGN KEY(player2) REFERENCES user(id) +); diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts new file mode 100644 index 0000000..5fb7c5c --- /dev/null +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -0,0 +1,55 @@ +import { isNullish } from '@shared/utils'; +import type { Database } from './_base'; +import { UserId } from './user'; + +// describe every function in the object +export interface ITicTacToeDb extends Database { + normalFunction(id: TemplateId): TemplateData | undefined, + asyncFunction(id: TemplateId): Promise, +}; + +export const TicTacToeImpl: Omit = { + /** + * @brief Write the outcome of the specified game to the database. + * + * @param gameId The game we want to write the outcome of. + * + */ + setGameOutcome(this: ITicTacToeDb, id: GameId): void { + // Find a way to retrieve the outcome of the game. + this.prepare('INSERT INTO tictactoe (game, outcome) VALUES (@id, "draw" /* replace w/ game outcome */)').run({ id }); + }, + /** + * whole function description + * + * @param id the argument description + * + * @returns what does the function return ? + */ +// async asyncFunction(this: ITemplateDb, id: TemplateId): Promise { +// void id; +// return undefined; +// }, +}; + +export type TicTacToeId = number & { readonly __brand: unique symbol }; + +export type TemplateData = { + readonly id: TicTacToeId; + readonly player1: string; + readonly player2: string; + readonly outcome: string; +}; + +// this function will be able to be called from everywhere +// export async function freeFloatingExportedFunction(): Promise { +// return false; +// } + +// this function will never be able to be called outside of this module +// async function privateFunction(): Promise { +// return undefined; +// } + +// silence warnings +void privateFunction; From 7fe19d1737375be21dbcbc0b4bd086198eda1287 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:53:04 +0100 Subject: [PATCH 16/48] (misc): reindented file with tabs --- src/@shared/src/database/mixin/tictactoe.ts | 49 ++++++++++----------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts index 5fb7c5c..8d83e0b 100644 --- a/src/@shared/src/database/mixin/tictactoe.ts +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -1,31 +1,30 @@ -import { isNullish } from '@shared/utils'; import type { Database } from './_base'; -import { UserId } from './user'; +// import { UserId } from './user'; // describe every function in the object export interface ITicTacToeDb extends Database { - normalFunction(id: TemplateId): TemplateData | undefined, - asyncFunction(id: TemplateId): Promise, + normalFunction(id: TemplateId): TemplateData | undefined, + asyncFunction(id: TemplateId): Promise, }; export const TicTacToeImpl: Omit = { - /** - * @brief Write the outcome of the specified game to the database. - * - * @param gameId The game we want to write the outcome of. - * - */ - setGameOutcome(this: ITicTacToeDb, id: GameId): void { - // Find a way to retrieve the outcome of the game. - this.prepare('INSERT INTO tictactoe (game, outcome) VALUES (@id, "draw" /* replace w/ game outcome */)').run({ id }); - }, - /** - * whole function description - * - * @param id the argument description - * - * @returns what does the function return ? - */ + /** + * @brief Write the outcome of the specified game to the database. + * + * @param gameId The game we want to write the outcome of. + * + */ + setGameOutcome(this: ITicTacToeDb, id: GameId): void { + // Find a way to retrieve the outcome of the game. + this.prepare('INSERT INTO tictactoe (game, outcome) VALUES (@id, "draw" /* replace w/ game outcome */)').run({ id }); + }, + /** + * whole function description + * + * @param id the argument description + * + * @returns what does the function return ? + */ // async asyncFunction(this: ITemplateDb, id: TemplateId): Promise { // void id; // return undefined; @@ -35,10 +34,10 @@ export const TicTacToeImpl: Omit = { export type TicTacToeId = number & { readonly __brand: unique symbol }; export type TemplateData = { - readonly id: TicTacToeId; - readonly player1: string; - readonly player2: string; - readonly outcome: string; + readonly id: TicTacToeId; + readonly player1: string; + readonly player2: string; + readonly outcome: string; }; // this function will be able to be called from everywhere From 3e939ec87d574d04629a513c43e6e11a0fbc40ab Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 01:00:40 +0100 Subject: [PATCH 17/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/@shared/src/database/mixin/tictactoe.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts index 8d83e0b..4d4cda8 100644 --- a/src/@shared/src/database/mixin/tictactoe.ts +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -3,8 +3,8 @@ import type { Database } from './_base'; // describe every function in the object export interface ITicTacToeDb extends Database { - normalFunction(id: TemplateId): TemplateData | undefined, - asyncFunction(id: TemplateId): Promise, + setGameOutcome(this: ITicTacToeDb, id: GameId): void, +// asyncFunction(id: TemplateId): Promise, }; export const TicTacToeImpl: Omit = { From e46f031f6441630e1f368c48e1ed627d143b679c Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 01:04:37 +0100 Subject: [PATCH 18/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/@shared/src/database/mixin/tictactoe.ts | 2 +- src/tic-tac-toe/src/app.ts | 1 + src/tic-tac-toe/src/game.ts | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts index 4d4cda8..5cb3e7d 100644 --- a/src/@shared/src/database/mixin/tictactoe.ts +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -33,7 +33,7 @@ export const TicTacToeImpl: Omit = { export type TicTacToeId = number & { readonly __brand: unique symbol }; -export type TemplateData = { +export type TicTacToeData = { readonly id: TicTacToeId; readonly player1: string; readonly player2: string; diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index ba8b753..7238b0b 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -7,6 +7,7 @@ import * as auth from '@shared/auth'; import * as swagger from '@shared/swagger'; import * as utils from '@shared/utils'; import { Server } from 'socket.io'; +import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; declare const __SERVICE_NAME: string; diff --git a/src/tic-tac-toe/src/game.ts b/src/tic-tac-toe/src/game.ts index c472e50..0d929ad 100644 --- a/src/tic-tac-toe/src/game.ts +++ b/src/tic-tac-toe/src/game.ts @@ -1,3 +1,5 @@ +import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; + // Represents the possible states of a cell on the board. // `null` means that the cell is empty. type CellState = 'O' | 'X' | null From 333caf09ee4ef76fd884ed73ded45015661b554c Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 01:22:55 +0100 Subject: [PATCH 19/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/tic-tac-toe/src/app.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index 7238b0b..4e18aa8 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -7,7 +7,7 @@ import * as auth from '@shared/auth'; import * as swagger from '@shared/swagger'; import * as utils from '@shared/utils'; import { Server } from 'socket.io'; -import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; +import type { TicTacToeImpl } from '@shared/database/mixin/tictactoe'; declare const __SERVICE_NAME: string; @@ -83,6 +83,7 @@ async function onReady(fastify: FastifyInstance, game: TTC) { turn: game.currentPlayer, lastResult: result, }); +// setGameOutcome(); } }); From 3ed00bd62b495f2a8ff773706760c6fd38fcf972 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sun, 21 Dec 2025 02:58:15 +0100 Subject: [PATCH 20/48] (backend): trying to have a working backend. Did I manage to achieve this task: NO. --- Docker.mk | 1 + docker-compose.yml | 10 +- frontend/pnpm-lock.yaml | 184 +++++++++++------------ src/@shared/package.json | 2 +- src/auth/package.json | 2 +- src/chat/package.json | 2 +- src/package.json | 2 +- src/pnpm-lock.yaml | 260 ++++++++++++++++----------------- src/tic-tac-toe/entrypoint.sh | 7 + src/tic-tac-toe/package.json | 7 +- src/tic-tac-toe/src/openapi.ts | 21 +++ src/tic-tac-toe/src/run.ts | 14 +- src/tic-tac-toe/vite.config.js | 54 +++++++ src/user/package.json | 2 +- 14 files changed, 327 insertions(+), 241 deletions(-) create mode 100644 src/tic-tac-toe/entrypoint.sh create mode 100644 src/tic-tac-toe/src/openapi.ts create mode 100644 src/tic-tac-toe/vite.config.js diff --git a/Docker.mk b/Docker.mk index 5f6efcb..3d7bcb4 100644 --- a/Docker.mk +++ b/Docker.mk @@ -17,6 +17,7 @@ DOCKER_SERVICE= \ auth \ chat \ + tic-tac-toe \ frontend \ nginx \ user \ diff --git a/docker-compose.yml b/docker-compose.yml index 031df10..8f841ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -76,9 +76,8 @@ services: context: ./src/ args: - SERVICE=tic-tac-toe - - EXTRA_FILES=tic-tac-toe/extra - container_name: tic-tac-toe - restart: unless-stopped + container_name: app-tic-tac-toe + restart: always networks: - app volumes: @@ -87,6 +86,11 @@ services: environment: - JWT_SECRET=KRUGKIDROVUWG2ZAMJZG653OEBTG66BANJ2W24DTEBXXMZLSEB2GQZJANRQXU6JA - DATABASE_DIR=/volumes/database + logging: + driver: gelf + options: + gelf-address: "udp://127.0.0.1:12201" + tag: "{{.Name}}" ############### # CHAT # diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index ec12443..02fe5dd 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -214,113 +214,113 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + '@rollup/rollup-android-arm-eabi@4.54.0': + resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + '@rollup/rollup-android-arm64@4.54.0': + resolution: {integrity: sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + '@rollup/rollup-darwin-arm64@4.54.0': + resolution: {integrity: sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + '@rollup/rollup-darwin-x64@4.54.0': + resolution: {integrity: sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + '@rollup/rollup-freebsd-arm64@4.54.0': + resolution: {integrity: sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + '@rollup/rollup-freebsd-x64@4.54.0': + resolution: {integrity: sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': + resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + '@rollup/rollup-linux-arm-musleabihf@4.54.0': + resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + '@rollup/rollup-linux-arm64-gnu@4.54.0': + resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + '@rollup/rollup-linux-arm64-musl@4.54.0': + resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + '@rollup/rollup-linux-loong64-gnu@4.54.0': + resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + '@rollup/rollup-linux-ppc64-gnu@4.54.0': + resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + '@rollup/rollup-linux-riscv64-gnu@4.54.0': + resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + '@rollup/rollup-linux-riscv64-musl@4.54.0': + resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + '@rollup/rollup-linux-s390x-gnu@4.54.0': + resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + '@rollup/rollup-linux-x64-gnu@4.54.0': + resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + '@rollup/rollup-linux-x64-musl@4.54.0': + resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + '@rollup/rollup-openharmony-arm64@4.54.0': + resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + '@rollup/rollup-win32-arm64-msvc@4.54.0': + resolution: {integrity: sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + '@rollup/rollup-win32-ia32-msvc@4.54.0': + resolution: {integrity: sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + '@rollup/rollup-win32-x64-gnu@4.54.0': + resolution: {integrity: sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + '@rollup/rollup-win32-x64-msvc@4.54.0': + resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==} cpu: [x64] os: [win32] @@ -667,8 +667,8 @@ packages: require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + rollup@4.54.0: + resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -905,70 +905,70 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@rollup/rollup-android-arm-eabi@4.53.5': + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true - '@rollup/rollup-android-arm64@4.53.5': + '@rollup/rollup-android-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': + '@rollup/rollup-darwin-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-x64@4.53.5': + '@rollup/rollup-darwin-x64@4.54.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': + '@rollup/rollup-freebsd-arm64@4.54.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': + '@rollup/rollup-freebsd-x64@4.54.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': + '@rollup/rollup-linux-arm-musleabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': + '@rollup/rollup-linux-arm64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': + '@rollup/rollup-linux-arm64-musl@4.54.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': + '@rollup/rollup-linux-loong64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': + '@rollup/rollup-linux-ppc64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': + '@rollup/rollup-linux-riscv64-musl@4.54.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': + '@rollup/rollup-linux-s390x-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': + '@rollup/rollup-linux-x64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': + '@rollup/rollup-linux-x64-musl@4.54.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': + '@rollup/rollup-openharmony-arm64@4.54.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': + '@rollup/rollup-win32-arm64-msvc@4.54.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': + '@rollup/rollup-win32-ia32-msvc@4.54.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': + '@rollup/rollup-win32-x64-gnu@4.54.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': + '@rollup/rollup-win32-x64-msvc@4.54.0': optional: true '@socket.io/component-emitter@3.1.2': {} @@ -1256,32 +1256,32 @@ snapshots: require-main-filename@2.0.0: {} - rollup@4.53.5: + rollup@4.54.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 + '@rollup/rollup-android-arm-eabi': 4.54.0 + '@rollup/rollup-android-arm64': 4.54.0 + '@rollup/rollup-darwin-arm64': 4.54.0 + '@rollup/rollup-darwin-x64': 4.54.0 + '@rollup/rollup-freebsd-arm64': 4.54.0 + '@rollup/rollup-freebsd-x64': 4.54.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.54.0 + '@rollup/rollup-linux-arm-musleabihf': 4.54.0 + '@rollup/rollup-linux-arm64-gnu': 4.54.0 + '@rollup/rollup-linux-arm64-musl': 4.54.0 + '@rollup/rollup-linux-loong64-gnu': 4.54.0 + '@rollup/rollup-linux-ppc64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-musl': 4.54.0 + '@rollup/rollup-linux-s390x-gnu': 4.54.0 + '@rollup/rollup-linux-x64-gnu': 4.54.0 + '@rollup/rollup-linux-x64-musl': 4.54.0 + '@rollup/rollup-openharmony-arm64': 4.54.0 + '@rollup/rollup-win32-arm64-msvc': 4.54.0 + '@rollup/rollup-win32-ia32-msvc': 4.54.0 + '@rollup/rollup-win32-x64-gnu': 4.54.0 + '@rollup/rollup-win32-x64-msvc': 4.54.0 fsevents: 2.3.3 set-blocking@2.0.0: {} @@ -1350,7 +1350,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.0.3 diff --git a/src/@shared/package.json b/src/@shared/package.json index 4cdbef0..43efa32 100644 --- a/src/@shared/package.json +++ b/src/@shared/package.json @@ -20,7 +20,7 @@ "fastify-plugin": "^5.1.0", "joi": "^18.0.2", "otp": "^1.1.2", - "typebox": "^1.0.64", + "typebox": "^1.0.65", "uuidv7": "^1.1.0" }, "devDependencies": { diff --git a/src/auth/package.json b/src/auth/package.json index b709575..ace48e9 100644 --- a/src/auth/package.json +++ b/src/auth/package.json @@ -27,7 +27,7 @@ "fastify": "^5.6.2", "fastify-cli": "^7.4.1", "fastify-plugin": "^5.1.0", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/chat/package.json b/src/chat/package.json index 555055b..502b538 100644 --- a/src/chat/package.json +++ b/src/chat/package.json @@ -27,7 +27,7 @@ "fastify": "^5.6.2", "fastify-plugin": "^5.1.0", "socket.io": "^4.8.1", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/package.json b/src/package.json index 3169a11..d58f871 100644 --- a/src/package.json +++ b/src/package.json @@ -33,7 +33,7 @@ "vite": "^7.3.0" }, "dependencies": { - "@redocly/cli": "^2.13.0", + "@redocly/cli": "^2.14.0", "bindings": "^1.5.0" } } diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml index dffd059..8932a9b 100644 --- a/src/pnpm-lock.yaml +++ b/src/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@redocly/cli': - specifier: ^2.13.0 - version: 2.13.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0) + specifier: ^2.14.0 + version: 2.14.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0) bindings: specifier: ^1.5.0 version: 1.5.0 @@ -79,8 +79,8 @@ importers: specifier: ^1.1.2 version: 1.1.2 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 uuidv7: specifier: ^1.1.0 version: 1.1.0 @@ -122,15 +122,15 @@ importers: specifier: ^5.1.0 version: 5.1.0 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 version: 22.19.3 rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -168,15 +168,15 @@ importers: specifier: ^4.8.1 version: 4.8.1 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 version: 22.19.3 rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -214,8 +214,8 @@ importers: specifier: ^4.8.1 version: 4.8.1 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 @@ -225,7 +225,7 @@ importers: version: 5.1.0(fastify@5.6.2)(socket.io@4.8.1) rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -260,15 +260,15 @@ importers: specifier: ^5.1.0 version: 5.1.0 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 version: 22.19.3 rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -728,136 +728,136 @@ packages: '@redocly/ajv@8.17.1': resolution: {integrity: sha512-EDtsGZS964mf9zAUXAl9Ew16eYbeyAFWhsPr0fX6oaJxgd8rApYlPBf0joyhnUHz88WxrigyFtTaqqzXNzPgqw==} - '@redocly/cli@2.13.0': - resolution: {integrity: sha512-VOGh8p5gKy+u94SbvMGaHvDM6TPw668D9iQkNSztoi4T5sj3ZwM7Y8Z3yZnMqC5s5epDcLAMq4jCO8UVn5ZWHg==} + '@redocly/cli@2.14.0': + resolution: {integrity: sha512-LvVYV7KJGtVqltBc8Cbw2s4QpFOzend5nCsgR1JgWvHNt70f1AzqoHr5y7GO+3ThwumrTzPvjta+Ln+n3x5NmA==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true '@redocly/config@0.22.2': resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==} - '@redocly/config@0.41.0': - resolution: {integrity: sha512-8yJ2e+ex8KVF25zijdpDbAEjyubk7NLfHsLI8h0MUnLEo2iEg6rTCDT9Qw71XDqd5UlXvfJb0Z0h6dd+Y6pWLw==} + '@redocly/config@0.41.1': + resolution: {integrity: sha512-LcMCzFbP/sqkCLSG3YswmeScP4fM5SjDCQizwa+psZ0PhYrKOMF7azZ6ZBkWs115uv5RfOk+jYAWLdKkZGGGXg==} '@redocly/openapi-core@1.34.6': resolution: {integrity: sha512-2+O+riuIUgVSuLl3Lyh5AplWZyVMNuG2F98/o6NrutKJfW4/GTZdPpZlIphS0HGgcOHgmWcCSHj+dWFlZaGSHw==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} - '@redocly/openapi-core@2.13.0': - resolution: {integrity: sha512-xQ4z5tsrXbIa4EfCniHv1zZ4etmQ0lpRcxy750iOamV5A/+19mgbPtD+UQCoT18puDAjcnOgpX7x2ha72qKrnw==} + '@redocly/openapi-core@2.14.0': + resolution: {integrity: sha512-GeSIesfbh5TdqoWBu7wPzCAGUvKfLBnN60rKnhZCyxrs6M0tn7GYhtET+P5HsNlXmvW4vFNDBlLDoATW/dKrrQ==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@redocly/respect-core@2.13.0': - resolution: {integrity: sha512-35OidNXWkmmsJiwgX+tFw7FaU8usZVvZ/lFBFNJga65pivEvaDlfiwKxIRTzM4iuNbc2FRvP2q30dlGAztv0tg==} + '@redocly/respect-core@2.14.0': + resolution: {integrity: sha512-7HYB66oNUOcBjBZpK/i5xPpXIYXt09a98WX0subaAQZJinLGq8D3hbgLAp+pXZgosHNeZ0QKahOExsZ25JZSHw==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + '@rollup/rollup-android-arm-eabi@4.54.0': + resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + '@rollup/rollup-android-arm64@4.54.0': + resolution: {integrity: sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + '@rollup/rollup-darwin-arm64@4.54.0': + resolution: {integrity: sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + '@rollup/rollup-darwin-x64@4.54.0': + resolution: {integrity: sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + '@rollup/rollup-freebsd-arm64@4.54.0': + resolution: {integrity: sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + '@rollup/rollup-freebsd-x64@4.54.0': + resolution: {integrity: sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': + resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + '@rollup/rollup-linux-arm-musleabihf@4.54.0': + resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + '@rollup/rollup-linux-arm64-gnu@4.54.0': + resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + '@rollup/rollup-linux-arm64-musl@4.54.0': + resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + '@rollup/rollup-linux-loong64-gnu@4.54.0': + resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + '@rollup/rollup-linux-ppc64-gnu@4.54.0': + resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + '@rollup/rollup-linux-riscv64-gnu@4.54.0': + resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + '@rollup/rollup-linux-riscv64-musl@4.54.0': + resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + '@rollup/rollup-linux-s390x-gnu@4.54.0': + resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + '@rollup/rollup-linux-x64-gnu@4.54.0': + resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + '@rollup/rollup-linux-x64-musl@4.54.0': + resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + '@rollup/rollup-openharmony-arm64@4.54.0': + resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + '@rollup/rollup-win32-arm64-msvc@4.54.0': + resolution: {integrity: sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + '@rollup/rollup-win32-ia32-msvc@4.54.0': + resolution: {integrity: sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + '@rollup/rollup-win32-x64-gnu@4.54.0': + resolution: {integrity: sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + '@rollup/rollup-win32-x64-msvc@4.54.0': + resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==} cpu: [x64] os: [win32] @@ -2237,8 +2237,8 @@ packages: peerDependencies: rollup: ^4.0.0 - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + rollup@4.54.0: + resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2499,8 +2499,8 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - typebox@1.0.64: - resolution: {integrity: sha512-U6quDhQMzQRzBX8jvlE5mZlUnlMRTaZrG/QMAhOYVJ0D0rhq1iOXBQVSzBX0JgAh55jXQ7fWIv24i+lVimXcDw==} + typebox@1.0.65: + resolution: {integrity: sha512-3WaZ4QmfAxmelhi0dwusYDoZ+DLDoVrsc3aORzgtk1I8JfIf4wn+F8i1TtrnU2jJKM/hZgjJGfzXrwS4B31zZw==} typescript-eslint@8.50.0: resolution: {integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==} @@ -3126,14 +3126,14 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - '@redocly/cli@2.13.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0)': + '@redocly/cli@2.14.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0)': dependencies: '@opentelemetry/exporter-trace-otlp-http': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.34.0 - '@redocly/openapi-core': 2.13.0(ajv@8.17.1) - '@redocly/respect-core': 2.13.0(ajv@8.17.1) + '@redocly/openapi-core': 2.14.0(ajv@8.17.1) + '@redocly/respect-core': 2.14.0(ajv@8.17.1) abort-controller: 3.0.0 chokidar: 3.6.0 colorette: 1.4.0 @@ -3167,7 +3167,7 @@ snapshots: '@redocly/config@0.22.2': {} - '@redocly/config@0.41.0': + '@redocly/config@0.41.1': dependencies: json-schema-to-ts: 2.7.2 @@ -3185,10 +3185,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@redocly/openapi-core@2.13.0(ajv@8.17.1)': + '@redocly/openapi-core@2.14.0(ajv@8.17.1)': dependencies: '@redocly/ajv': 8.17.1 - '@redocly/config': 0.41.0 + '@redocly/config': 0.41.1 ajv-formats: 3.0.1(ajv@8.17.1) colorette: 1.4.0 js-levenshtein: 1.1.6 @@ -3199,12 +3199,12 @@ snapshots: transitivePeerDependencies: - ajv - '@redocly/respect-core@2.13.0(ajv@8.17.1)': + '@redocly/respect-core@2.14.0(ajv@8.17.1)': dependencies: '@faker-js/faker': 7.6.0 '@noble/hashes': 1.8.0 '@redocly/ajv': 8.17.1 - '@redocly/openapi-core': 2.13.0(ajv@8.17.1) + '@redocly/openapi-core': 2.14.0(ajv@8.17.1) better-ajv-errors: 1.2.0(ajv@8.17.1) colorette: 2.0.20 json-pointer: 0.6.2 @@ -3214,70 +3214,70 @@ snapshots: transitivePeerDependencies: - ajv - '@rollup/rollup-android-arm-eabi@4.53.5': + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true - '@rollup/rollup-android-arm64@4.53.5': + '@rollup/rollup-android-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': + '@rollup/rollup-darwin-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-x64@4.53.5': + '@rollup/rollup-darwin-x64@4.54.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': + '@rollup/rollup-freebsd-arm64@4.54.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': + '@rollup/rollup-freebsd-x64@4.54.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': + '@rollup/rollup-linux-arm-musleabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': + '@rollup/rollup-linux-arm64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': + '@rollup/rollup-linux-arm64-musl@4.54.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': + '@rollup/rollup-linux-loong64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': + '@rollup/rollup-linux-ppc64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': + '@rollup/rollup-linux-riscv64-musl@4.54.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': + '@rollup/rollup-linux-s390x-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': + '@rollup/rollup-linux-x64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': + '@rollup/rollup-linux-x64-musl@4.54.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': + '@rollup/rollup-openharmony-arm64@4.54.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': + '@rollup/rollup-win32-arm64-msvc@4.54.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': + '@rollup/rollup-win32-ia32-msvc@4.54.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': + '@rollup/rollup-win32-x64-gnu@4.54.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': + '@rollup/rollup-win32-x64-msvc@4.54.0': optional: true '@socket.io/component-emitter@3.1.2': {} @@ -4729,36 +4729,36 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-node-externals@8.1.2(rollup@4.53.5): + rollup-plugin-node-externals@8.1.2(rollup@4.54.0): dependencies: - rollup: 4.53.5 + rollup: 4.54.0 - rollup@4.53.5: + rollup@4.54.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 + '@rollup/rollup-android-arm-eabi': 4.54.0 + '@rollup/rollup-android-arm64': 4.54.0 + '@rollup/rollup-darwin-arm64': 4.54.0 + '@rollup/rollup-darwin-x64': 4.54.0 + '@rollup/rollup-freebsd-arm64': 4.54.0 + '@rollup/rollup-freebsd-x64': 4.54.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.54.0 + '@rollup/rollup-linux-arm-musleabihf': 4.54.0 + '@rollup/rollup-linux-arm64-gnu': 4.54.0 + '@rollup/rollup-linux-arm64-musl': 4.54.0 + '@rollup/rollup-linux-loong64-gnu': 4.54.0 + '@rollup/rollup-linux-ppc64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-musl': 4.54.0 + '@rollup/rollup-linux-s390x-gnu': 4.54.0 + '@rollup/rollup-linux-x64-gnu': 4.54.0 + '@rollup/rollup-linux-x64-musl': 4.54.0 + '@rollup/rollup-openharmony-arm64': 4.54.0 + '@rollup/rollup-win32-arm64-msvc': 4.54.0 + '@rollup/rollup-win32-ia32-msvc': 4.54.0 + '@rollup/rollup-win32-x64-gnu': 4.54.0 + '@rollup/rollup-win32-x64-msvc': 4.54.0 fsevents: 2.3.3 safe-buffer@5.2.1: {} @@ -5052,7 +5052,7 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 - typebox@1.0.64: {} + typebox@1.0.65: {} typescript-eslint@8.50.0(eslint@9.39.2)(typescript@5.9.3): dependencies: @@ -5111,7 +5111,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.19.3 @@ -5124,7 +5124,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.0.3 diff --git a/src/tic-tac-toe/entrypoint.sh b/src/tic-tac-toe/entrypoint.sh new file mode 100644 index 0000000..f1735d5 --- /dev/null +++ b/src/tic-tac-toe/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e +# do anything here + +# run the CMD [ ... ] from the dockerfile +exec "$@" diff --git a/src/tic-tac-toe/package.json b/src/tic-tac-toe/package.json index e9edce4..e75880b 100644 --- a/src/tic-tac-toe/package.json +++ b/src/tic-tac-toe/package.json @@ -6,9 +6,8 @@ "scripts": { "start": "npm run build && node dist/run.js", "build": "vite build", - "build:prod": "vite build --outDir=/dist --minify=true --sourcemap=false", - "REMOVEME-build:openapi": "VITE_ENTRYPOINT=src/openapi.ts vite build && node dist/openapi.cjs >openapi.json", - "test": "echo \"Error: no test specified\" && exit 1" + "build:prod": "vite build --outDir=/dist --minify=true --sourcemap=false && mv /dist/run.js /dist/run.cjs", + "build:openapi": "VITE_ENTRYPOINT=src/openapi.ts vite build && mv dist/openapi.js dist/openapi.cjs && node dist/openapi.cjs >openapi.json" }, "keywords": [], "author": "", @@ -24,7 +23,7 @@ "fastify": "^5.6.2", "fastify-plugin": "^5.1.0", "socket.io": "^4.8.1", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/tic-tac-toe/src/openapi.ts b/src/tic-tac-toe/src/openapi.ts new file mode 100644 index 0000000..d66d7a7 --- /dev/null +++ b/src/tic-tac-toe/src/openapi.ts @@ -0,0 +1,21 @@ +import f, { FastifyPluginAsync } from 'fastify'; +import * as swagger from '@shared/swagger'; +import * as auth from '@shared/auth'; + +declare const __SERVICE_NAME: string; + +// @ts-expect-error: import.meta.glob is a vite thing. Typescript doesn't know this... +const routes = import.meta.glob('./routes/**/*.ts', { eager: true }); + +async function start() { + const fastify = f({ logger: false }); + await fastify.register(auth.authPlugin, { onlySchema: true }); + await fastify.register(swagger.useSwagger, { service: __SERVICE_NAME }); + + for (const route of Object.values(routes)) { + await fastify.register(route as FastifyPluginAsync, {}); + } + await fastify.ready(); + console.log(JSON.stringify(fastify.swagger(), undefined, 4)); +} +start(); diff --git a/src/tic-tac-toe/src/run.ts b/src/tic-tac-toe/src/run.ts index a65470a..dc06dc8 100644 --- a/src/tic-tac-toe/src/run.ts +++ b/src/tic-tac-toe/src/run.ts @@ -6,13 +6,13 @@ import app from './app'; const start = async () => { const envToLogger = { development: { - transport: { - target: 'pino', - options: { - translateTime: 'HH:MM:ss Z', - ignore: 'pid,hostname', - }, - }, + // transport: { + // target: 'pino', + // options: { + // translateTime: 'HH:MM:ss Z', + // ignore: 'pid,hostname', + // }, + // }, }, production: true, test: false, diff --git a/src/tic-tac-toe/vite.config.js b/src/tic-tac-toe/vite.config.js new file mode 100644 index 0000000..ba669e5 --- /dev/null +++ b/src/tic-tac-toe/vite.config.js @@ -0,0 +1,54 @@ +import { defineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; +import nodeExternals from 'rollup-plugin-node-externals'; +import path from 'node:path'; +import fs from 'node:fs'; + +function collectDeps(...pkgJsonPaths) { + const allDeps = new Set(); + for (const pkgPath of pkgJsonPaths) { + const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')); + for (const dep of Object.keys(pkg.dependencies || {})) { + allDeps.add(dep); + } + for (const peer of Object.keys(pkg.peerDependencies || {})) { + allDeps.add(peer); + } + } + return Array.from(allDeps); +} + +const externals = collectDeps( + './package.json', + '../@shared/package.json', +); + + +export default defineConfig({ + root: __dirname, + define: { + __SERVICE_NAME: '"tic-tac-toe"', + }, + // service root + plugins: [tsconfigPaths(), nodeExternals()], + build: { + ssr: true, + outDir: 'dist', + emptyOutDir: true, + lib: { + entry: path.resolve(__dirname, process.env.VITE_ENTRYPOINT ?? 'src/run.ts'), + // adjust main entry + formats: ['cjs'], + // CommonJS for Node.js + fileName: (format, entryName) => `${entryName}.cjs`, + }, + rollupOptions: { + external: externals, + }, + target: 'node22', + // or whatever Node version you use + sourcemap: true, + minify: false, + // for easier debugging + }, +}); diff --git a/src/user/package.json b/src/user/package.json index 2987bf2..e5c94cc 100644 --- a/src/user/package.json +++ b/src/user/package.json @@ -26,7 +26,7 @@ "fastify": "^5.6.2", "fastify-cli": "^7.4.1", "fastify-plugin": "^5.1.0", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", From 54c8e35a8ecdd5145f023e06f29c18033cfc7116 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sun, 21 Dec 2025 02:59:04 +0100 Subject: [PATCH 21/48] (backend): trying to have a working backend. Did I manage to achieve this task: NO. --- src/tic-tac-toe/openapi.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/tic-tac-toe/openapi.json diff --git a/src/tic-tac-toe/openapi.json b/src/tic-tac-toe/openapi.json new file mode 100644 index 0000000..38cd725 --- /dev/null +++ b/src/tic-tac-toe/openapi.json @@ -0,0 +1,21 @@ +{ + "openapi": "3.1.0", + "info": { + "version": "9.6.1", + "title": "@fastify/swagger" + }, + "components": { + "schemas": {} + }, + "paths": {}, + "servers": [ + { + "url": "https://local.maix.me:8888", + "description": "direct from docker" + }, + { + "url": "https://local.maix.me:8000", + "description": "using fnginx" + } + ] +} From 6e4d0b7e59133b72a8ada80ecce4f3a9769aa814 Mon Sep 17 00:00:00 2001 From: Maieul BOYER Date: Mon, 22 Dec 2025 14:56:39 +0100 Subject: [PATCH 22/48] update: added ttt to nginx configuration --- nginx/conf/locations/ttt.conf | 14 ++++++++++++++ src/tic-tac-toe/src/plugins/socket.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 nginx/conf/locations/ttt.conf diff --git a/nginx/conf/locations/ttt.conf b/nginx/conf/locations/ttt.conf new file mode 100644 index 0000000..eee6057 --- /dev/null +++ b/nginx/conf/locations/ttt.conf @@ -0,0 +1,14 @@ +#forward the post request to the microservice +location /api/ttt/ { + proxy_pass http://app-tic-tac-toe; +} + +location /api/ttt/socket.io/ { + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_read_timeout 3600s; + proxy_pass http://app-tic-tac-toe; +} diff --git a/src/tic-tac-toe/src/plugins/socket.ts b/src/tic-tac-toe/src/plugins/socket.ts index f32dec8..f485775 100644 --- a/src/tic-tac-toe/src/plugins/socket.ts +++ b/src/tic-tac-toe/src/plugins/socket.ts @@ -18,7 +18,7 @@ const fastifySocketIO: FastifyPluginAsync = fp(async (fastify) => { } fastify.decorate( 'io', - new Server(fastify.server, { path: '/api/chat/socket.io' }), + new Server(fastify.server, { path: '/api/ttt/socket.io' }), ); fastify.addHook('preClose', defaultPreClose); fastify.addHook('onClose', (instance: FastifyInstance, done) => { From fb49ba4ee9c1f59a7e5526840b2b8343a822d097 Mon Sep 17 00:00:00 2001 From: apetitco Date: Tue, 16 Dec 2025 14:09:02 +0100 Subject: [PATCH 23/48] (schism): started separating backend from frontend --- .idea/workspace.xml | 114 ++++++++++ docker-compose.yml | 26 +++ frontend/pnpm-lock.yaml | 295 ++++++++++++++++++++++++++ frontend/src/pages/ttt/ttt.ts | 200 ++++-------------- src/@shared/package.json | 4 + src/auth/package.json | 4 + src/chat/package.json | 4 + src/package.json | 4 + src/pnpm-lock.yaml | 380 ++++++++++++++++++++++++++++++++++ src/tic-tac-toe/package.json | 21 ++ src/tic-tac-toe/src/app.ts | 240 +++++++++++++++++++++ src/tic-tac-toe/src/game.ts | 81 ++++++++ src/user/package.json | 4 + 13 files changed, 1214 insertions(+), 163 deletions(-) create mode 100644 .idea/workspace.xml create mode 100644 src/tic-tac-toe/package.json create mode 100644 src/tic-tac-toe/src/app.ts create mode 100644 src/tic-tac-toe/src/game.ts diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..0b1cef8 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,114 @@ + + + + + + + + + + { + "lastFilter": { + "state": "OPEN", + "assignee": "RepentedAlex" + } +} + { + "selectedUrlAndAccountId": { + "url": "https://github.com/Maix0/ft_deadge.git", + "accountId": "05fe7ff5-d360-4ad3-b17e-66daa92a5dbb" + } +} + + + { + "associatedIndex": 2 +} + + + + + + + + + + + + + + 1765884886075 + + + + + + + + + + + + + + + - - \ No newline at end of file From 1f4f62c00be6544470248f2af815a18719978a6f Mon Sep 17 00:00:00 2001 From: apetitco Date: Fri, 19 Dec 2025 15:16:02 +0100 Subject: [PATCH 29/48] fighting git conflicts --- .idea/vcs.xml | 6 + docker-compose.yml | 3 - frontend/pnpm-lock.yaml | 567 --------------------------- src/@shared/package.json | 8 - src/auth/package.json | 8 - src/chat/package.json | 8 - src/package.json | 8 - src/pnpm-lock.yaml | 720 ++--------------------------------- src/tic-tac-toe/package.json | 15 +- src/user/package.json | 8 - 10 files changed, 35 insertions(+), 1316 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 715d2cc..f4303df 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -67,8 +67,6 @@ services: gelf-address: "udp://127.0.0.1:12201" tag: "{{.Name}}" -<<<<<<< HEAD -======= ############### # TIC-TAC-TOE # ############### @@ -92,7 +90,6 @@ services: ############### # CHAT # ############### ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) chat: build: context: ./src/ diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 26b3ee6..ec12443 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,15 +10,7 @@ importers: dependencies: '@tailwindcss/vite': specifier: ^4.1.18 -<<<<<<< HEAD -<<<<<<< HEAD version: 4.1.18(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)) -======= - version: 4.1.18(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - version: 4.1.18(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) '@types/qrcode': specifier: ^1.5.6 version: 1.5.6 @@ -43,8 +35,6 @@ importers: version: 5.9.3 vite: specifier: ^7.3.0 -<<<<<<< HEAD -<<<<<<< HEAD version: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2) vite-tsconfig-paths: specifier: ^5.1.4 @@ -54,428 +44,156 @@ packages: '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} -======= - version: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2) - vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)) - -packages: - - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - version: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2) - vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)) - -packages: - - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ppc64] os: [aix] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/android-arm64@0.27.2': resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} -======= - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [android] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/android-arm@0.27.2': resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} -======= - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm] os: [android] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/android-x64@0.27.2': resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} -======= - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [android] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/darwin-arm64@0.27.2': resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} -======= - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [darwin] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/darwin-x64@0.27.2': resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} -======= - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [darwin] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/freebsd-arm64@0.27.2': resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} -======= - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [freebsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/freebsd-x64@0.27.2': resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} -======= - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [freebsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-arm64@0.27.2': resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} -======= - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-arm@0.27.2': resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} -======= - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-ia32@0.27.2': resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} -======= - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ia32] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-loong64@0.27.2': resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} -======= - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [loong64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-mips64el@0.27.2': resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} -======= - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [mips64el] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-ppc64@0.27.2': resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} -======= - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ppc64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-riscv64@0.27.2': resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} -======= - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [riscv64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-s390x@0.27.2': resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} -======= - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [s390x] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-x64@0.27.2': resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} -======= - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/netbsd-arm64@0.27.2': resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} -======= - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [netbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/netbsd-x64@0.27.2': resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} -======= - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [netbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/openbsd-arm64@0.27.2': resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} -======= - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [openbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/openbsd-x64@0.27.2': resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} -======= - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [openbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/openharmony-arm64@0.27.2': resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} -======= - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [openharmony] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/sunos-x64@0.27.2': resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} -======= - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [sunos] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/win32-arm64@0.27.2': resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} -======= - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [win32] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/win32-ia32@0.27.2': resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} -======= - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ia32] os: [win32] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/win32-x64@0.27.2': resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} -======= - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -705,18 +423,8 @@ packages: '@types/js-cookie@3.0.6': resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} -<<<<<<< HEAD -<<<<<<< HEAD '@types/node@25.0.3': resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} -======= - '@types/node@25.0.2': - resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node@25.0.2': - resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) '@types/qrcode@1.5.6': resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} @@ -786,18 +494,8 @@ packages: resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} engines: {node: '>=10.13.0'} -<<<<<<< HEAD -<<<<<<< HEAD esbuild@0.27.2: resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} -======= - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} hasBin: true @@ -1110,8 +808,6 @@ packages: snapshots: -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/aix-ppc64@0.27.2': optional: true @@ -1188,162 +884,6 @@ snapshots: optional: true '@esbuild/win32-x64@0.27.2': -======= - '@esbuild/aix-ppc64@0.27.1': - optional: true - - '@esbuild/android-arm64@0.27.1': - optional: true - - '@esbuild/android-arm@0.27.1': - optional: true - - '@esbuild/android-x64@0.27.1': - optional: true - - '@esbuild/darwin-arm64@0.27.1': - optional: true - - '@esbuild/darwin-x64@0.27.1': - optional: true - - '@esbuild/freebsd-arm64@0.27.1': - optional: true - - '@esbuild/freebsd-x64@0.27.1': - optional: true - - '@esbuild/linux-arm64@0.27.1': - optional: true - - '@esbuild/linux-arm@0.27.1': - optional: true - - '@esbuild/linux-ia32@0.27.1': - optional: true - - '@esbuild/linux-loong64@0.27.1': - optional: true - - '@esbuild/linux-mips64el@0.27.1': - optional: true - - '@esbuild/linux-ppc64@0.27.1': - optional: true - - '@esbuild/linux-riscv64@0.27.1': - optional: true - - '@esbuild/linux-s390x@0.27.1': - optional: true - - '@esbuild/linux-x64@0.27.1': - optional: true - - '@esbuild/netbsd-arm64@0.27.1': - optional: true - - '@esbuild/netbsd-x64@0.27.1': - optional: true - - '@esbuild/openbsd-arm64@0.27.1': - optional: true - - '@esbuild/openbsd-x64@0.27.1': - optional: true - - '@esbuild/openharmony-arm64@0.27.1': - optional: true - - '@esbuild/sunos-x64@0.27.1': - optional: true - - '@esbuild/win32-arm64@0.27.1': - optional: true - - '@esbuild/win32-ia32@0.27.1': - optional: true - - '@esbuild/win32-x64@0.27.1': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/aix-ppc64@0.27.1': - optional: true - - '@esbuild/android-arm64@0.27.1': - optional: true - - '@esbuild/android-arm@0.27.1': - optional: true - - '@esbuild/android-x64@0.27.1': - optional: true - - '@esbuild/darwin-arm64@0.27.1': - optional: true - - '@esbuild/darwin-x64@0.27.1': - optional: true - - '@esbuild/freebsd-arm64@0.27.1': - optional: true - - '@esbuild/freebsd-x64@0.27.1': - optional: true - - '@esbuild/linux-arm64@0.27.1': - optional: true - - '@esbuild/linux-arm@0.27.1': - optional: true - - '@esbuild/linux-ia32@0.27.1': - optional: true - - '@esbuild/linux-loong64@0.27.1': - optional: true - - '@esbuild/linux-mips64el@0.27.1': - optional: true - - '@esbuild/linux-ppc64@0.27.1': - optional: true - - '@esbuild/linux-riscv64@0.27.1': - optional: true - - '@esbuild/linux-s390x@0.27.1': - optional: true - - '@esbuild/linux-x64@0.27.1': - optional: true - - '@esbuild/netbsd-arm64@0.27.1': - optional: true - - '@esbuild/netbsd-x64@0.27.1': - optional: true - - '@esbuild/openbsd-arm64@0.27.1': - optional: true - - '@esbuild/openbsd-x64@0.27.1': - optional: true - - '@esbuild/openharmony-arm64@0.27.1': - optional: true - - '@esbuild/sunos-x64@0.27.1': - optional: true - - '@esbuild/win32-arm64@0.27.1': - optional: true - - '@esbuild/win32-ia32@0.27.1': - optional: true - - '@esbuild/win32-x64@0.27.1': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) optional: true '@jridgewell/gen-mapping@0.3.13': @@ -1494,56 +1034,24 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 -<<<<<<< HEAD -<<<<<<< HEAD '@tailwindcss/vite@4.1.18(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2))': -======= - '@tailwindcss/vite@4.1.18(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2))': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@tailwindcss/vite@4.1.18(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2))': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 -<<<<<<< HEAD -<<<<<<< HEAD vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2) -======= - vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) '@types/estree@1.0.8': {} '@types/js-cookie@3.0.6': {} -<<<<<<< HEAD -<<<<<<< HEAD '@types/node@25.0.3': -======= - '@types/node@25.0.2': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node@25.0.2': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) dependencies: undici-types: 7.16.0 '@types/qrcode@1.5.6': dependencies: -<<<<<<< HEAD -<<<<<<< HEAD '@types/node': 25.0.3 -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) ansi-regex@5.0.1: {} @@ -1600,8 +1108,6 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.0 -<<<<<<< HEAD -<<<<<<< HEAD esbuild@0.27.2: optionalDependencies: '@esbuild/aix-ppc64': 0.27.2 @@ -1630,43 +1136,6 @@ snapshots: '@esbuild/win32-arm64': 0.27.2 '@esbuild/win32-ia32': 0.27.2 '@esbuild/win32-x64': 0.27.2 -======= - esbuild@0.27.1: - optionalDependencies: -======= - esbuild@0.27.1: - optionalDependencies: ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 -<<<<<<< HEAD ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) fdir@6.5.0(picomatch@4.0.3): optionalDependencies: @@ -1864,63 +1333,27 @@ snapshots: undici-types@7.16.0: {} -<<<<<<< HEAD -<<<<<<< HEAD vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)): -======= - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)): ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)): ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: -<<<<<<< HEAD -<<<<<<< HEAD vite: 7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2) -======= - vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) transitivePeerDependencies: - supports-color - typescript -<<<<<<< HEAD -<<<<<<< HEAD vite@7.3.0(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2): dependencies: esbuild: 0.27.2 -======= - vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2): - dependencies: - esbuild: 0.27.1 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2): - dependencies: - esbuild: 0.27.1 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.53.5 tinyglobby: 0.2.15 optionalDependencies: -<<<<<<< HEAD -<<<<<<< HEAD '@types/node': 25.0.3 -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 diff --git a/src/@shared/package.json b/src/@shared/package.json index 1c7cd91..4cdbef0 100644 --- a/src/@shared/package.json +++ b/src/@shared/package.json @@ -20,15 +20,7 @@ "fastify-plugin": "^5.1.0", "joi": "^18.0.2", "otp": "^1.1.2", -<<<<<<< HEAD -<<<<<<< HEAD "typebox": "^1.0.64", -======= - "typebox": "^1.0.63", ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - "typebox": "^1.0.63", ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) "uuidv7": "^1.1.0" }, "devDependencies": { diff --git a/src/auth/package.json b/src/auth/package.json index b9d98d9..b709575 100644 --- a/src/auth/package.json +++ b/src/auth/package.json @@ -27,15 +27,7 @@ "fastify": "^5.6.2", "fastify-cli": "^7.4.1", "fastify-plugin": "^5.1.0", -<<<<<<< HEAD -<<<<<<< HEAD "typebox": "^1.0.64" -======= - "typebox": "^1.0.63" ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - "typebox": "^1.0.63" ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/chat/package.json b/src/chat/package.json index bd698a8..555055b 100644 --- a/src/chat/package.json +++ b/src/chat/package.json @@ -27,15 +27,7 @@ "fastify": "^5.6.2", "fastify-plugin": "^5.1.0", "socket.io": "^4.8.1", -<<<<<<< HEAD -<<<<<<< HEAD "typebox": "^1.0.64" -======= - "typebox": "^1.0.63" ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - "typebox": "^1.0.63" ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/package.json b/src/package.json index f7da1b7..3169a11 100644 --- a/src/package.json +++ b/src/package.json @@ -33,15 +33,7 @@ "vite": "^7.3.0" }, "dependencies": { -<<<<<<< HEAD -<<<<<<< HEAD "@redocly/cli": "^2.13.0", -======= - "@redocly/cli": "^2.12.7", ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - "@redocly/cli": "^2.12.7", ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) "bindings": "^1.5.0" } } diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml index 5d2f60e..dffd059 100644 --- a/src/pnpm-lock.yaml +++ b/src/pnpm-lock.yaml @@ -9,18 +9,8 @@ importers: .: dependencies: '@redocly/cli': -<<<<<<< HEAD -<<<<<<< HEAD specifier: ^2.13.0 version: 2.13.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0) -======= - specifier: ^2.12.7 - version: 2.12.7(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - specifier: ^2.12.7 - version: 2.12.7(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) bindings: specifier: ^1.5.0 version: 1.5.0 @@ -51,15 +41,7 @@ importers: version: 8.50.0(eslint@9.39.2)(typescript@5.9.3) vite: specifier: ^7.3.0 -<<<<<<< HEAD -<<<<<<< HEAD version: 7.3.0(@types/node@25.0.3)(yaml@2.8.2) -======= - version: 7.3.0(@types/node@25.0.2)(yaml@2.8.2) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - version: 7.3.0(@types/node@25.0.2)(yaml@2.8.2) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) '@shared': dependencies: @@ -97,18 +79,8 @@ importers: specifier: ^1.1.2 version: 1.1.2 typebox: -<<<<<<< HEAD -<<<<<<< HEAD specifier: ^1.0.64 version: 1.0.64 -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) uuidv7: specifier: ^1.1.0 version: 1.1.0 @@ -150,18 +122,8 @@ importers: specifier: ^5.1.0 version: 5.1.0 typebox: -<<<<<<< HEAD -<<<<<<< HEAD specifier: ^1.0.64 version: 1.0.64 -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) devDependencies: '@types/node': specifier: ^22.19.3 @@ -206,18 +168,8 @@ importers: specifier: ^4.8.1 version: 4.8.1 typebox: -<<<<<<< HEAD -<<<<<<< HEAD specifier: ^1.0.64 version: 1.0.64 -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) devDependencies: '@types/node': specifier: ^22.19.3 @@ -231,11 +183,6 @@ importers: vite-tsconfig-paths: specifier: ^5.1.4 version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@22.19.3)(yaml@2.8.2)) -<<<<<<< HEAD -<<<<<<< HEAD -======= -======= ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) tic-tac-toe: dependencies: @@ -266,19 +213,16 @@ importers: socket.io: specifier: ^4.8.1 version: 4.8.1 -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= typebox: - specifier: ^1.0.63 - version: 1.0.63 + specifier: ^1.0.64 + version: 1.0.64 devDependencies: '@types/node': specifier: ^22.19.3 version: 22.19.3 + fastify-socket.io: + specifier: ^5.1.0 + version: 5.1.0(fastify@5.6.2)(socket.io@4.8.1) rollup-plugin-node-externals: specifier: ^8.1.2 version: 8.1.2(rollup@4.53.5) @@ -288,7 +232,6 @@ importers: vite-tsconfig-paths: specifier: ^5.1.4 version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@22.19.3)(yaml@2.8.2)) ->>>>>>> c741c20 (fixed things) user: dependencies: @@ -317,18 +260,8 @@ importers: specifier: ^5.1.0 version: 5.1.0 typebox: -<<<<<<< HEAD -<<<<<<< HEAD specifier: ^1.0.64 version: 1.0.64 -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - specifier: ^1.0.63 - version: 1.0.63 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) devDependencies: '@types/node': specifier: ^22.19.3 @@ -366,418 +299,158 @@ packages: '@emotion/unitless@0.8.1': resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} -======= - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ppc64] os: [aix] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/android-arm64@0.27.2': resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} -======= - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [android] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/android-arm@0.27.2': resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} -======= - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm] os: [android] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/android-x64@0.27.2': resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} -======= - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [android] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/darwin-arm64@0.27.2': resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} -======= - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [darwin] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/darwin-x64@0.27.2': resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} -======= - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [darwin] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/freebsd-arm64@0.27.2': resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} -======= - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [freebsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/freebsd-x64@0.27.2': resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} -======= - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [freebsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-arm64@0.27.2': resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} -======= - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-arm@0.27.2': resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} -======= - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-ia32@0.27.2': resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} -======= - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ia32] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-loong64@0.27.2': resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} -======= - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [loong64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-mips64el@0.27.2': resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} -======= - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [mips64el] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-ppc64@0.27.2': resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} -======= - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ppc64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-riscv64@0.27.2': resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} -======= - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [riscv64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-s390x@0.27.2': resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} -======= - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [s390x] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/linux-x64@0.27.2': resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} -======= - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [linux] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/netbsd-arm64@0.27.2': resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} -======= - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [netbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/netbsd-x64@0.27.2': resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} -======= - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [netbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/openbsd-arm64@0.27.2': resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} -======= - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [openbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/openbsd-x64@0.27.2': resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} -======= - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [openbsd] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/openharmony-arm64@0.27.2': resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} -======= - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [openharmony] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/sunos-x64@0.27.2': resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} -======= - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [sunos] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/win32-arm64@0.27.2': resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} -======= - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [arm64] os: [win32] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/win32-ia32@0.27.2': resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} -======= - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [ia32] os: [win32] -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/win32-x64@0.27.2': resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} -======= - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1055,18 +728,8 @@ packages: '@redocly/ajv@8.17.1': resolution: {integrity: sha512-EDtsGZS964mf9zAUXAl9Ew16eYbeyAFWhsPr0fX6oaJxgd8rApYlPBf0joyhnUHz88WxrigyFtTaqqzXNzPgqw==} -<<<<<<< HEAD -<<<<<<< HEAD '@redocly/cli@2.13.0': resolution: {integrity: sha512-VOGh8p5gKy+u94SbvMGaHvDM6TPw668D9iQkNSztoi4T5sj3ZwM7Y8Z3yZnMqC5s5epDcLAMq4jCO8UVn5ZWHg==} -======= - '@redocly/cli@2.12.7': - resolution: {integrity: sha512-cevNpojACA3JVUU3fqIzebY1CXipeBl84EMrriAgB4Pi0cHWImf12WkpLN/MCKMlW20/IzBzQ04CVlTyKFXuyw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@redocly/cli@2.12.7': - resolution: {integrity: sha512-cevNpojACA3JVUU3fqIzebY1CXipeBl84EMrriAgB4Pi0cHWImf12WkpLN/MCKMlW20/IzBzQ04CVlTyKFXuyw==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true @@ -1080,34 +743,14 @@ packages: resolution: {integrity: sha512-2+O+riuIUgVSuLl3Lyh5AplWZyVMNuG2F98/o6NrutKJfW4/GTZdPpZlIphS0HGgcOHgmWcCSHj+dWFlZaGSHw==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} -<<<<<<< HEAD -<<<<<<< HEAD '@redocly/openapi-core@2.13.0': resolution: {integrity: sha512-xQ4z5tsrXbIa4EfCniHv1zZ4etmQ0lpRcxy750iOamV5A/+19mgbPtD+UQCoT18puDAjcnOgpX7x2ha72qKrnw==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} '@redocly/respect-core@2.13.0': resolution: {integrity: sha512-35OidNXWkmmsJiwgX+tFw7FaU8usZVvZ/lFBFNJga65pivEvaDlfiwKxIRTzM4iuNbc2FRvP2q30dlGAztv0tg==} -======= - '@redocly/openapi-core@2.12.7': - resolution: {integrity: sha512-b32Pvl4IE2QZFPpPXD7Qciwy1/AZ2EUaYJ++Oyngaz5WlyeGb9HX/fWmf2QO0YvSqNdK7OSY3m8lPBQ+zlNlgw==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@redocly/respect-core@2.12.7': - resolution: {integrity: sha512-pBm81qeCYkOC0BCAO6lnEDifLChpCUFP6CsBPNXTYgpFa606UjDULYVIcVUOvwZGlqv6euWIHNT8DfkzFGeltQ==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) - engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - -======= - '@redocly/openapi-core@2.12.7': - resolution: {integrity: sha512-b32Pvl4IE2QZFPpPXD7Qciwy1/AZ2EUaYJ++Oyngaz5WlyeGb9HX/fWmf2QO0YvSqNdK7OSY3m8lPBQ+zlNlgw==} - engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - - '@redocly/respect-core@2.12.7': - resolution: {integrity: sha512-pBm81qeCYkOC0BCAO6lnEDifLChpCUFP6CsBPNXTYgpFa606UjDULYVIcVUOvwZGlqv6euWIHNT8DfkzFGeltQ==} - engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) '@rollup/rollup-android-arm-eabi@4.53.5': resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} cpu: [arm] @@ -1242,18 +885,8 @@ packages: '@types/node@22.19.3': resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} -<<<<<<< HEAD -<<<<<<< HEAD '@types/node@25.0.3': resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==} -======= - '@types/node@25.0.2': - resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node@25.0.2': - resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) '@types/stylis@4.2.5': resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} @@ -1689,18 +1322,8 @@ packages: es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} -<<<<<<< HEAD -<<<<<<< HEAD esbuild@0.27.2: resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} -======= - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) engines: {node: '>=18'} hasBin: true @@ -1811,9 +1434,18 @@ packages: resolution: {integrity: sha512-7Jsfj2uLuGWvnxjrGDrHWpSm65+OcVx0ZbTD2wwkz6Wt6KjGm6+ZYwwpdXdwAlzbJYq+LCEMNvDJc4485AQ1vQ==} hasBin: true + fastify-plugin@4.5.1: + resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} + fastify-plugin@5.1.0: resolution: {integrity: sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==} + fastify-socket.io@5.1.0: + resolution: {integrity: sha512-GC1gjrxBGeTbMWV779XHF4uw3AtgKwSQJ9MnjGiMp91ZBuPXEdBYa7NnAMDEl3oZPgK9JO4BlNncTV+UAN+1kg==} + peerDependencies: + fastify: 4.x.x + socket.io: '>=4' + fastify@5.6.2: resolution: {integrity: sha512-dPugdGnsvYkBlENLhCgX8yhyGCsCPrpA8lFWbTNU428l+YOnLgYHR69hzV8HWPC79n536EqzqQtvhtdaCE0dKg==} @@ -2853,6 +2485,9 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -2864,18 +2499,8 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} -<<<<<<< HEAD -<<<<<<< HEAD typebox@1.0.64: resolution: {integrity: sha512-U6quDhQMzQRzBX8jvlE5mZlUnlMRTaZrG/QMAhOYVJ0D0rhq1iOXBQVSzBX0JgAh55jXQ7fWIv24i+lVimXcDw==} -======= - typebox@1.0.63: - resolution: {integrity: sha512-qqQ1IePTIL3Illa9C5GToVAUM5qRwOaDN4x/V4jBIt4V0S3lqttJbUNIYm+u+QXvvVxOnTddWxa+6hGuujIEwA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - typebox@1.0.63: - resolution: {integrity: sha512-qqQ1IePTIL3Illa9C5GToVAUM5qRwOaDN4x/V4jBIt4V0S3lqttJbUNIYm+u+QXvvVxOnTddWxa+6hGuujIEwA==} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) typescript-eslint@8.50.0: resolution: {integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==} @@ -3106,8 +2731,6 @@ snapshots: '@emotion/unitless@0.8.1': {} -<<<<<<< HEAD -<<<<<<< HEAD '@esbuild/aix-ppc64@0.27.2': optional: true @@ -3184,166 +2807,8 @@ snapshots: optional: true '@esbuild/win32-x64@0.27.2': -======= - '@esbuild/aix-ppc64@0.27.1': optional: true - '@esbuild/android-arm64@0.27.1': - optional: true - - '@esbuild/android-arm@0.27.1': - optional: true - - '@esbuild/android-x64@0.27.1': - optional: true - - '@esbuild/darwin-arm64@0.27.1': - optional: true - - '@esbuild/darwin-x64@0.27.1': - optional: true - - '@esbuild/freebsd-arm64@0.27.1': - optional: true - - '@esbuild/freebsd-x64@0.27.1': - optional: true - - '@esbuild/linux-arm64@0.27.1': - optional: true - - '@esbuild/linux-arm@0.27.1': - optional: true - - '@esbuild/linux-ia32@0.27.1': - optional: true - - '@esbuild/linux-loong64@0.27.1': - optional: true - - '@esbuild/linux-mips64el@0.27.1': - optional: true - - '@esbuild/linux-ppc64@0.27.1': - optional: true - - '@esbuild/linux-riscv64@0.27.1': - optional: true - - '@esbuild/linux-s390x@0.27.1': - optional: true - - '@esbuild/linux-x64@0.27.1': - optional: true - - '@esbuild/netbsd-arm64@0.27.1': - optional: true - - '@esbuild/netbsd-x64@0.27.1': - optional: true - - '@esbuild/openbsd-arm64@0.27.1': - optional: true - - '@esbuild/openbsd-x64@0.27.1': - optional: true - - '@esbuild/openharmony-arm64@0.27.1': - optional: true - - '@esbuild/sunos-x64@0.27.1': - optional: true - - '@esbuild/win32-arm64@0.27.1': - optional: true - - '@esbuild/win32-ia32@0.27.1': - optional: true - - '@esbuild/win32-x64@0.27.1': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) - optional: true - -======= - '@esbuild/aix-ppc64@0.27.1': - optional: true - - '@esbuild/android-arm64@0.27.1': - optional: true - - '@esbuild/android-arm@0.27.1': - optional: true - - '@esbuild/android-x64@0.27.1': - optional: true - - '@esbuild/darwin-arm64@0.27.1': - optional: true - - '@esbuild/darwin-x64@0.27.1': - optional: true - - '@esbuild/freebsd-arm64@0.27.1': - optional: true - - '@esbuild/freebsd-x64@0.27.1': - optional: true - - '@esbuild/linux-arm64@0.27.1': - optional: true - - '@esbuild/linux-arm@0.27.1': - optional: true - - '@esbuild/linux-ia32@0.27.1': - optional: true - - '@esbuild/linux-loong64@0.27.1': - optional: true - - '@esbuild/linux-mips64el@0.27.1': - optional: true - - '@esbuild/linux-ppc64@0.27.1': - optional: true - - '@esbuild/linux-riscv64@0.27.1': - optional: true - - '@esbuild/linux-s390x@0.27.1': - optional: true - - '@esbuild/linux-x64@0.27.1': - optional: true - - '@esbuild/netbsd-arm64@0.27.1': - optional: true - - '@esbuild/netbsd-x64@0.27.1': - optional: true - - '@esbuild/openbsd-arm64@0.27.1': - optional: true - - '@esbuild/openbsd-x64@0.27.1': - optional: true - - '@esbuild/openharmony-arm64@0.27.1': - optional: true - - '@esbuild/sunos-x64@0.27.1': - optional: true - - '@esbuild/win32-arm64@0.27.1': - optional: true - - '@esbuild/win32-ia32@0.27.1': - optional: true - - '@esbuild/win32-x64@0.27.1': - optional: true - ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': dependencies: eslint: 9.39.2 @@ -3661,32 +3126,14 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 -<<<<<<< HEAD -<<<<<<< HEAD '@redocly/cli@2.13.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0)': -======= - '@redocly/cli@2.12.7(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0)': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@redocly/cli@2.12.7(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0)': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) dependencies: '@opentelemetry/exporter-trace-otlp-http': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.34.0 -<<<<<<< HEAD -<<<<<<< HEAD '@redocly/openapi-core': 2.13.0(ajv@8.17.1) '@redocly/respect-core': 2.13.0(ajv@8.17.1) -======= - '@redocly/openapi-core': 2.12.7(ajv@8.17.1) - '@redocly/respect-core': 2.12.7(ajv@8.17.1) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@redocly/openapi-core': 2.12.7(ajv@8.17.1) - '@redocly/respect-core': 2.12.7(ajv@8.17.1) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) abort-controller: 3.0.0 chokidar: 3.6.0 colorette: 1.4.0 @@ -3738,15 +3185,7 @@ snapshots: transitivePeerDependencies: - supports-color -<<<<<<< HEAD -<<<<<<< HEAD '@redocly/openapi-core@2.13.0(ajv@8.17.1)': -======= - '@redocly/openapi-core@2.12.7(ajv@8.17.1)': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@redocly/openapi-core@2.12.7(ajv@8.17.1)': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) dependencies: '@redocly/ajv': 8.17.1 '@redocly/config': 0.41.0 @@ -3760,28 +3199,12 @@ snapshots: transitivePeerDependencies: - ajv -<<<<<<< HEAD -<<<<<<< HEAD '@redocly/respect-core@2.13.0(ajv@8.17.1)': -======= - '@redocly/respect-core@2.12.7(ajv@8.17.1)': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@redocly/respect-core@2.12.7(ajv@8.17.1)': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) dependencies: '@faker-js/faker': 7.6.0 '@noble/hashes': 1.8.0 '@redocly/ajv': 8.17.1 -<<<<<<< HEAD -<<<<<<< HEAD '@redocly/openapi-core': 2.13.0(ajv@8.17.1) -======= - '@redocly/openapi-core': 2.12.7(ajv@8.17.1) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@redocly/openapi-core': 2.12.7(ajv@8.17.1) ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) better-ajv-errors: 1.2.0(ajv@8.17.1) colorette: 2.0.20 json-pointer: 0.6.2 @@ -3881,15 +3304,7 @@ snapshots: dependencies: undici-types: 6.21.0 -<<<<<<< HEAD -<<<<<<< HEAD '@types/node@25.0.3': -======= - '@types/node@25.0.2': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node@25.0.2': ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) dependencies: undici-types: 7.16.0 @@ -4336,8 +3751,6 @@ snapshots: es6-promise@3.3.1: {} -<<<<<<< HEAD -<<<<<<< HEAD esbuild@0.27.2: optionalDependencies: '@esbuild/aix-ppc64': 0.27.2 @@ -4366,43 +3779,6 @@ snapshots: '@esbuild/win32-arm64': 0.27.2 '@esbuild/win32-ia32': 0.27.2 '@esbuild/win32-x64': 0.27.2 -======= - esbuild@0.27.1: - optionalDependencies: -======= - esbuild@0.27.1: - optionalDependencies: ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 -<<<<<<< HEAD ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) escalade@3.2.0: {} @@ -4543,8 +3919,17 @@ snapshots: semver: 7.7.3 yargs-parser: 22.0.0 + fastify-plugin@4.5.1: {} + fastify-plugin@5.1.0: {} + fastify-socket.io@5.1.0(fastify@5.6.2)(socket.io@4.8.1): + dependencies: + fastify: 5.6.2 + fastify-plugin: 4.5.1 + socket.io: 4.8.1 + tslib: 2.8.1 + fastify@5.6.2: dependencies: '@fastify/ajv-compiler': 4.0.5 @@ -5236,15 +4621,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 -<<<<<<< HEAD -<<<<<<< HEAD '@types/node': 25.0.3 -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) long: 5.3.2 pump@3.0.3: @@ -5659,17 +5036,8 @@ snapshots: tslib@2.6.2: {} -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -======= -======= ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) tslib@2.8.1: {} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= ->>>>>>> c741c20 (fixed things) tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -5684,15 +5052,7 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 -<<<<<<< HEAD -<<<<<<< HEAD typebox@1.0.64: {} -======= - typebox@1.0.63: {} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - typebox@1.0.63: {} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) typescript-eslint@8.50.0(eslint@9.39.2)(typescript@5.9.3): dependencies: @@ -5747,15 +5107,7 @@ snapshots: vite@7.3.0(@types/node@22.19.3)(yaml@2.8.2): dependencies: -<<<<<<< HEAD -<<<<<<< HEAD esbuild: 0.27.2 -======= - esbuild: 0.27.1 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - esbuild: 0.27.1 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -5766,36 +5118,16 @@ snapshots: fsevents: 2.3.3 yaml: 2.8.2 -<<<<<<< HEAD -<<<<<<< HEAD vite@7.3.0(@types/node@25.0.3)(yaml@2.8.2): dependencies: esbuild: 0.27.2 -======= - vite@7.3.0(@types/node@25.0.2)(yaml@2.8.2): - dependencies: - esbuild: 0.27.1 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - vite@7.3.0(@types/node@25.0.2)(yaml@2.8.2): - dependencies: - esbuild: 0.27.1 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.53.5 tinyglobby: 0.2.15 optionalDependencies: -<<<<<<< HEAD -<<<<<<< HEAD '@types/node': 25.0.3 -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - '@types/node': 25.0.2 ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) fsevents: 2.3.3 yaml: 2.8.2 diff --git a/src/tic-tac-toe/package.json b/src/tic-tac-toe/package.json index 7719b58..e9edce4 100644 --- a/src/tic-tac-toe/package.json +++ b/src/tic-tac-toe/package.json @@ -15,10 +15,6 @@ "license": "ISC", "packageManager": "pnpm@10.24.0", "dependencies": { -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> c741c20 (fixed things) "@fastify/autoload": "^6.3.1", "@fastify/formbody": "^8.0.2", "@fastify/multipart": "^9.3.0", @@ -28,19 +24,14 @@ "fastify": "^5.6.2", "fastify-plugin": "^5.1.0", "socket.io": "^4.8.1", - "typebox": "^1.0.63" + "typebox": "^1.0.64" }, "devDependencies": { "@types/node": "^22.19.3", + "fastify-socket.io": "^5.1.0", "rollup-plugin-node-externals": "^8.1.2", + "socket.io": "^4.8.1", "vite": "^7.3.0", "vite-tsconfig-paths": "^5.1.4" -<<<<<<< HEAD -======= - "fastify-socket.io": "^5.1.0", - "socket.io": "^4.8.1" ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= ->>>>>>> c741c20 (fixed things) } } diff --git a/src/user/package.json b/src/user/package.json index 984ad8d..2987bf2 100644 --- a/src/user/package.json +++ b/src/user/package.json @@ -26,15 +26,7 @@ "fastify": "^5.6.2", "fastify-cli": "^7.4.1", "fastify-plugin": "^5.1.0", -<<<<<<< HEAD -<<<<<<< HEAD "typebox": "^1.0.64" -======= - "typebox": "^1.0.63" ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= - "typebox": "^1.0.63" ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) }, "devDependencies": { "@types/node": "^22.19.3", From db88bf368f52b12601d1cf4c92f0a7bd1f8293ab Mon Sep 17 00:00:00 2001 From: apetitco Date: Fri, 19 Dec 2025 15:36:27 +0100 Subject: [PATCH 30/48] fixing things --- src/tic-tac-toe/src/app.ts | 211 +----------------------------------- src/tic-tac-toe/src/game.ts | 8 -- 2 files changed, 1 insertion(+), 218 deletions(-) diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index 47eb445..ba856e7 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -1,5 +1,3 @@ -<<<<<<< HEAD -<<<<<<< HEAD import { TTC } from './game'; import { FastifyInstance, FastifyPluginAsync } from 'fastify'; import fastifyFormBody from '@fastify/formbody'; @@ -98,20 +96,6 @@ async function onReady(fastify: FastifyInstance, game: TTC) { }); }); } -======= -import { FastifyInstance, FastifyPluginAsync } from 'fastify'; -import fastifySocketIO from 'fastify-socket.io'; -======= ->>>>>>> c741c20 (fixed things) -import { TTC } from './game'; -import { FastifyInstance, FastifyPluginAsync } from 'fastify'; -import fastifyFormBody from '@fastify/formbody'; -import fastifyMultipart from '@fastify/multipart'; -import * as db from '@shared/database'; -import * as auth from '@shared/auth'; -import * as swagger from '@shared/swagger'; -import * as utils from '@shared/utils'; -import { Server } from 'socket.io'; declare const __SERVICE_NAME: string; @@ -200,199 +184,6 @@ async function onReady(fastify: FastifyInstance, game: TTC) { }); }); }); -<<<<<<< HEAD }; -export default app; ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= -} ->>>>>>> c741c20 (fixed things) - -// // TODO: Import the plugins defined for this microservice -// // TODO: Import the routes defined for this microservice - -// // @brief The microservice app (as a plugin for Fastify), kinda like a main function I guess ??? -// // @param fastify -// // @param opts -// export const app: FastifyPluginAsync = async (fastify, opts): Promise => { -// // Register all the fastify plugins that this app will use - -// // Once it is done: -// fastify.ready((err) => { -// if (err) { -// throw err; -// } -// // TODO: Supposedly, something should be there I guess -// }); -// }; -// // Export it as the default for this file. -// export default app; - -// // TODO: Understand what is this for in /src/chat/src/app.ts -// // declare module 'fastify' { -// // interface FastifyInstance { -// // io: Server<{ -// // hello: (message: string) => string; -// // MsgObjectServer: (data: { message: ClientMessage }) => void; -// // message: (msg: string) => void; -// // testend: (sock_id_client: string) => void; -// // }>; -// // } -// // } - -// // TODO: Same for this, also in /src/chat/src/app.ts -// // async function onReady(fastify: FastifyInstance) { -// // function connectedUser(io?: Server, target?: string): number { -// // let count = 0; -// // const seen = new Set(); -// // // <- only log/count unique usernames - -// // for (const [socketId, username] of clientChat) { -// // // Basic sanity checks -// // if (typeof socketId !== 'string' || socketId.length === 0) { -// // clientChat.delete(socketId); -// // continue; -// // } -// // if (typeof username !== 'string' || username.length === 0) { -// // clientChat.delete(socketId); -// // continue; -// // } - -// // // If we have the io instance, attempt to validate the socket is still connected -// // if (io && typeof io.sockets?.sockets?.get === 'function') { -// // const s = io.sockets.sockets.get(socketId) as -// // | Socket -// // | undefined; -// // // If socket not found or disconnected, remove from map and skip -// // if (!s || s.disconnected) { -// // clientChat.delete(socketId); -// // continue; -// // } - -// // // Skip duplicates (DO NOT delete them — just don't count) -// // if (seen.has(username)) { -// // continue; -// // } -// // // socket exists and is connected -// // seen.add(username); -// // count++; -// // // console.log(color.green,"count: ", count); -// // console.log(color.yellow, 'Client:', color.reset, username); - -// // const targetSocketId = target; -// // io.to(targetSocketId!).emit('listObj', username); - -// // console.log( -// // color.yellow, -// // 'Chat Socket ID:', -// // color.reset, -// // socketId, -// // ); -// // continue; -// // } - -// // // If no io provided, assume entries in the map are valid and count them. -// // count++; -// // console.log( -// // color.red, -// // 'Client (unverified):', -// // color.reset, -// // username, -// // ); -// // console.log( -// // color.red, -// // 'Chat Socket ID (unverified):', -// // color.reset, -// // socketId, -// // ); -// // } - -// // return count; -// // } - -// // function broadcast(data: ClientMessage, sender?: string) { -// // fastify.io.fetchSockets().then((sockets) => { -// // for (const s of sockets) { -// // if (s.id !== sender) { -// // // Send REAL JSON object -// // const clientName = clientChat.get(s.id) || null; -// // if (clientName !== null) { -// // s.emit('MsgObjectServer', { message: data }); -// // } -// // console.log(' Target window socket ID:', s.id); -// // console.log(' Target window ID:', [...s.rooms]); -// // console.log(' Sender window ID:', sender ? sender : 'none'); -// // } -// // } -// // }); -// // } - -// // fastify.io.on('connection', (socket: Socket) => { -// // socket.on('message', (message: string) => { -// // console.info( -// // color.blue, -// // 'Socket connected!', -// // color.reset, -// // socket.id, -// // ); -// // console.log( -// // color.blue, -// // 'Received message from client', -// // color.reset, -// // message, -// // ); - -// // const obj: ClientMessage = JSON.parse(message) as ClientMessage; -// // clientChat.set(socket.id, obj.user); -// // console.log( -// // color.green, -// // 'Message from client', -// // color.reset, -// // `Sender: login name: "${obj.user}" - windowID "${obj.SenderWindowID}" - text message: "${obj.text}"`, -// // ); -// // // Send object directly — DO NOT wrap it in a string -// // broadcast(obj, obj.SenderWindowID); -// // console.log( -// // color.red, -// // 'connected in the Chat :', -// // connectedUser(fastify.io), -// // color.reset, -// // ); -// // }); - -// // socket.on('testend', (sock_id_cl: string) => { -// // console.log('testend received from client socket id:', sock_id_cl); -// // }); - -// // socket.on('list', () => { -// // console.log(color.red, 'list activated', color.reset, socket.id); -// // connectedUser(fastify.io, socket.id); -// // }); - -// // socket.on('disconnecting', (reason) => { -// // const clientName = clientChat.get(socket.id) || null; -// // console.log( -// // color.green, -// // `Client disconnecting: ${clientName} (${socket.id}) reason:`, -// // reason, -// // ); -// // if (reason === 'transport error') return; - -// // if (clientName !== null) { -// // const obj = { -// // type: 'chat', -// // user: clientName, -// // token: '', -// // text: 'LEFT the chat', -// // timestamp: Date.now(), -// // SenderWindowID: socket.id, -// // }; - -// // broadcast(obj, obj.SenderWindowID); -// // // clientChat.delete(obj.user); -// // } -// // }); -// // }); -// // } - +export default app; \ No newline at end of file diff --git a/src/tic-tac-toe/src/game.ts b/src/tic-tac-toe/src/game.ts index dbd5d0d..c472e50 100644 --- a/src/tic-tac-toe/src/game.ts +++ b/src/tic-tac-toe/src/game.ts @@ -78,12 +78,4 @@ export class TTC { return result; } -<<<<<<< HEAD -<<<<<<< HEAD } -======= -} ->>>>>>> 16e6ae0 ((schism): started separating backend from frontend) -======= -} ->>>>>>> c741c20 (fixed things) From d736e0e3ee156a3a524e92f4d8da2a0d7a907a4a Mon Sep 17 00:00:00 2001 From: apetitco Date: Fri, 19 Dec 2025 15:37:19 +0100 Subject: [PATCH 31/48] retrieved what Maieul had done with my app.ts --- src/tic-tac-toe/src/app.ts | 248 +++++++++++++++++++++++++------------ 1 file changed, 172 insertions(+), 76 deletions(-) diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index ba856e7..59579cd 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -97,93 +97,189 @@ async function onReady(fastify: FastifyInstance, game: TTC) { }); } -declare const __SERVICE_NAME: string; +// // TODO: Import the plugins defined for this microservice +// // TODO: Import the routes defined for this microservice -// @ts-expect-error: import.meta.glob is a vite thing. Typescript doesn't know this... -const plugins = import.meta.glob('./plugins/**/*.ts', { eager: true }); -// @ts-expect-error: import.meta.glob is a vite thing. Typescript doesn't know this... -const routes = import.meta.glob('./routes/**/*.ts', { eager: true }); +// // @brief The microservice app (as a plugin for Fastify), kinda like a main function I guess ??? +// // @param fastify +// // @param opts +// export const app: FastifyPluginAsync = async (fastify, opts): Promise => { +// // Register all the fastify plugins that this app will use -const app: FastifyPluginAsync = async (fastify, opts): Promise => { - void opts; +// // Once it is done: +// fastify.ready((err) => { +// if (err) { +// throw err; +// } +// // TODO: Supposedly, something should be there I guess +// }); +// }; +// // Export it as the default for this file. +// export default app; - await fastify.register(utils.useMonitoring); - await fastify.register(utils.useMakeResponse); - await fastify.register(swagger.useSwagger, { service: __SERVICE_NAME }); - await fastify.register(db.useDatabase as FastifyPluginAsync, {}); - await fastify.register(auth.jwtPlugin as FastifyPluginAsync, {}); - await fastify.register(auth.authPlugin as FastifyPluginAsync, {}); +// // TODO: Understand what is this for in /src/chat/src/app.ts +// // declare module 'fastify' { +// // interface FastifyInstance { +// // io: Server<{ +// // hello: (message: string) => string; +// // MsgObjectServer: (data: { message: ClientMessage }) => void; +// // message: (msg: string) => void; +// // testend: (sock_id_client: string) => void; +// // }>; +// // } +// // } - // Place here your custom code! - for (const plugin of Object.values(plugins)) { - void fastify.register(plugin as FastifyPluginAsync, {}); - } - for (const route of Object.values(routes)) { - void fastify.register(route as FastifyPluginAsync, {}); - } +// // TODO: Same for this, also in /src/chat/src/app.ts +// // async function onReady(fastify: FastifyInstance) { +// // function connectedUser(io?: Server, target?: string): number { +// // let count = 0; +// // const seen = new Set(); +// // // <- only log/count unique usernames - void fastify.register(fastifyFormBody, {}); - void fastify.register(fastifyMultipart, {}); +// // for (const [socketId, username] of clientChat) { +// // // Basic sanity checks +// // if (typeof socketId !== 'string' || socketId.length === 0) { +// // clientChat.delete(socketId); +// // continue; +// // } +// // if (typeof username !== 'string' || username.length === 0) { +// // clientChat.delete(socketId); +// // continue; +// // } - const game = new TTC(); +// // // If we have the io instance, attempt to validate the socket is still connected +// // if (io && typeof io.sockets?.sockets?.get === 'function') { +// // const s = io.sockets.sockets.get(socketId) as +// // | Socket +// // | undefined; +// // // If socket not found or disconnected, remove from map and skip +// // if (!s || s.disconnected) { +// // clientChat.delete(socketId); +// // continue; +// // } - fastify.ready((err) => { - if (err) throw err; - onReady(fastify, game); - }); -}; -export default app; -export { app }; +// // // Skip duplicates (DO NOT delete them — just don't count) +// // if (seen.has(username)) { +// // continue; +// // } +// // // socket exists and is connected +// // seen.add(username); +// // count++; +// // // console.log(color.green,"count: ", count); +// // console.log(color.yellow, 'Client:', color.reset, username); -// When using .decorate you have to specify added properties for Typescript -declare module 'fastify' { - interface FastifyInstance { - io: Server<{ - hello: (message: string) => string; - // idk you put something - // eslint-disable-next-line @typescript-eslint/no-explicit-any - gameState: any; - makeMove: (idx: number) => void; - resetGame: () => void; - error: string, - }>; - } -} +// // const targetSocketId = target; +// // io.to(targetSocketId!).emit('listObj', username); -async function onReady(fastify: FastifyInstance, game: TTC) { - fastify.io.on('connection', (socket) => { - fastify.log.info(`Client connected: ${socket.id}`); +// // console.log( +// // color.yellow, +// // 'Chat Socket ID:', +// // color.reset, +// // socketId, +// // ); +// // continue; +// // } - socket.emit('gameState', { - board: game.board, - turn: game.currentPlayer, - gameOver: game.isGameOver, - }); +// // // If no io provided, assume entries in the map are valid and count them. +// // count++; +// // console.log( +// // color.red, +// // 'Client (unverified):', +// // color.reset, +// // username, +// // ); +// // console.log( +// // color.red, +// // 'Chat Socket ID (unverified):', +// // color.reset, +// // socketId, +// // ); +// // } - socket.on('makeMove', (idx: number) => { - const result = game.makeMove(idx); +// // return count; +// // } - if (result === 'invalidMove') { - socket.emit('error', 'Invalid Move'); - } - else { - fastify.io.emit('gameState', { - board: game.board, - turn: game.currentPlayer, - lastResult: result, - }); - } - }); +// // function broadcast(data: ClientMessage, sender?: string) { +// // fastify.io.fetchSockets().then((sockets) => { +// // for (const s of sockets) { +// // if (s.id !== sender) { +// // // Send REAL JSON object +// // const clientName = clientChat.get(s.id) || null; +// // if (clientName !== null) { +// // s.emit('MsgObjectServer', { message: data }); +// // } +// // console.log(' Target window socket ID:', s.id); +// // console.log(' Target window ID:', [...s.rooms]); +// // console.log(' Sender window ID:', sender ? sender : 'none'); +// // } +// // } +// // }); +// // } - socket.on('resetGame', () => { - game.reset(); - fastify.io.emit('gameState', { - board: game.board, - turn: game.currentPlayer, - reset: true, - }); - }); - }); -}; +// // fastify.io.on('connection', (socket: Socket) => { +// // socket.on('message', (message: string) => { +// // console.info( +// // color.blue, +// // 'Socket connected!', +// // color.reset, +// // socket.id, +// // ); +// // console.log( +// // color.blue, +// // 'Received message from client', +// // color.reset, +// // message, +// // ); -export default app; \ No newline at end of file +// // const obj: ClientMessage = JSON.parse(message) as ClientMessage; +// // clientChat.set(socket.id, obj.user); +// // console.log( +// // color.green, +// // 'Message from client', +// // color.reset, +// // `Sender: login name: "${obj.user}" - windowID "${obj.SenderWindowID}" - text message: "${obj.text}"`, +// // ); +// // // Send object directly — DO NOT wrap it in a string +// // broadcast(obj, obj.SenderWindowID); +// // console.log( +// // color.red, +// // 'connected in the Chat :', +// // connectedUser(fastify.io), +// // color.reset, +// // ); +// // }); + +// // socket.on('testend', (sock_id_cl: string) => { +// // console.log('testend received from client socket id:', sock_id_cl); +// // }); + +// // socket.on('list', () => { +// // console.log(color.red, 'list activated', color.reset, socket.id); +// // connectedUser(fastify.io, socket.id); +// // }); + +// // socket.on('disconnecting', (reason) => { +// // const clientName = clientChat.get(socket.id) || null; +// // console.log( +// // color.green, +// // `Client disconnecting: ${clientName} (${socket.id}) reason:`, +// // reason, +// // ); +// // if (reason === 'transport error') return; + +// // if (clientName !== null) { +// // const obj = { +// // type: 'chat', +// // user: clientName, +// // token: '', +// // text: 'LEFT the chat', +// // timestamp: Date.now(), +// // SenderWindowID: socket.id, +// // }; + +// // broadcast(obj, obj.SenderWindowID); +// // // clientChat.delete(obj.user); +// // } +// // }); +// // }); +// // } \ No newline at end of file From 55d1d090f67f53aa1962a757bda3ec3d85f37383 Mon Sep 17 00:00:00 2001 From: apetitco Date: Fri, 19 Dec 2025 22:55:17 +0100 Subject: [PATCH 32/48] (misc): updated gitignore --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f217d4d..76c7fe7 100644 --- a/.gitignore +++ b/.gitignore @@ -14,5 +14,5 @@ openapi.jar *.db-wal /db/ -package-lock.json -/pnpm-lock.yaml +pnpm-lock.yaml +.idea From 3fd788a74255bcc9926bc94e4625b0068508da5d Mon Sep 17 00:00:00 2001 From: apetitco Date: Fri, 19 Dec 2025 22:56:00 +0100 Subject: [PATCH 33/48] (misc): updated gitignore --- .idea/vcs.xml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 2f34f718359bf2790d98458be444b0d4a197bba3 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:42:59 +0100 Subject: [PATCH 34/48] (misc): Bit of cleaning --- src/tic-tac-toe/src/app.ts | 190 +------------------------------------ 1 file changed, 1 insertion(+), 189 deletions(-) diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index 59579cd..ba8b753 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -44,7 +44,6 @@ const app: FastifyPluginAsync = async (fastify, opts): Promise => { }); }; export default app; -export { app }; // When using .decorate you have to specify added properties for Typescript declare module 'fastify' { @@ -95,191 +94,4 @@ async function onReady(fastify: FastifyInstance, game: TTC) { }); }); }); -} - -// // TODO: Import the plugins defined for this microservice -// // TODO: Import the routes defined for this microservice - -// // @brief The microservice app (as a plugin for Fastify), kinda like a main function I guess ??? -// // @param fastify -// // @param opts -// export const app: FastifyPluginAsync = async (fastify, opts): Promise => { -// // Register all the fastify plugins that this app will use - -// // Once it is done: -// fastify.ready((err) => { -// if (err) { -// throw err; -// } -// // TODO: Supposedly, something should be there I guess -// }); -// }; -// // Export it as the default for this file. -// export default app; - -// // TODO: Understand what is this for in /src/chat/src/app.ts -// // declare module 'fastify' { -// // interface FastifyInstance { -// // io: Server<{ -// // hello: (message: string) => string; -// // MsgObjectServer: (data: { message: ClientMessage }) => void; -// // message: (msg: string) => void; -// // testend: (sock_id_client: string) => void; -// // }>; -// // } -// // } - -// // TODO: Same for this, also in /src/chat/src/app.ts -// // async function onReady(fastify: FastifyInstance) { -// // function connectedUser(io?: Server, target?: string): number { -// // let count = 0; -// // const seen = new Set(); -// // // <- only log/count unique usernames - -// // for (const [socketId, username] of clientChat) { -// // // Basic sanity checks -// // if (typeof socketId !== 'string' || socketId.length === 0) { -// // clientChat.delete(socketId); -// // continue; -// // } -// // if (typeof username !== 'string' || username.length === 0) { -// // clientChat.delete(socketId); -// // continue; -// // } - -// // // If we have the io instance, attempt to validate the socket is still connected -// // if (io && typeof io.sockets?.sockets?.get === 'function') { -// // const s = io.sockets.sockets.get(socketId) as -// // | Socket -// // | undefined; -// // // If socket not found or disconnected, remove from map and skip -// // if (!s || s.disconnected) { -// // clientChat.delete(socketId); -// // continue; -// // } - -// // // Skip duplicates (DO NOT delete them — just don't count) -// // if (seen.has(username)) { -// // continue; -// // } -// // // socket exists and is connected -// // seen.add(username); -// // count++; -// // // console.log(color.green,"count: ", count); -// // console.log(color.yellow, 'Client:', color.reset, username); - -// // const targetSocketId = target; -// // io.to(targetSocketId!).emit('listObj', username); - -// // console.log( -// // color.yellow, -// // 'Chat Socket ID:', -// // color.reset, -// // socketId, -// // ); -// // continue; -// // } - -// // // If no io provided, assume entries in the map are valid and count them. -// // count++; -// // console.log( -// // color.red, -// // 'Client (unverified):', -// // color.reset, -// // username, -// // ); -// // console.log( -// // color.red, -// // 'Chat Socket ID (unverified):', -// // color.reset, -// // socketId, -// // ); -// // } - -// // return count; -// // } - -// // function broadcast(data: ClientMessage, sender?: string) { -// // fastify.io.fetchSockets().then((sockets) => { -// // for (const s of sockets) { -// // if (s.id !== sender) { -// // // Send REAL JSON object -// // const clientName = clientChat.get(s.id) || null; -// // if (clientName !== null) { -// // s.emit('MsgObjectServer', { message: data }); -// // } -// // console.log(' Target window socket ID:', s.id); -// // console.log(' Target window ID:', [...s.rooms]); -// // console.log(' Sender window ID:', sender ? sender : 'none'); -// // } -// // } -// // }); -// // } - -// // fastify.io.on('connection', (socket: Socket) => { -// // socket.on('message', (message: string) => { -// // console.info( -// // color.blue, -// // 'Socket connected!', -// // color.reset, -// // socket.id, -// // ); -// // console.log( -// // color.blue, -// // 'Received message from client', -// // color.reset, -// // message, -// // ); - -// // const obj: ClientMessage = JSON.parse(message) as ClientMessage; -// // clientChat.set(socket.id, obj.user); -// // console.log( -// // color.green, -// // 'Message from client', -// // color.reset, -// // `Sender: login name: "${obj.user}" - windowID "${obj.SenderWindowID}" - text message: "${obj.text}"`, -// // ); -// // // Send object directly — DO NOT wrap it in a string -// // broadcast(obj, obj.SenderWindowID); -// // console.log( -// // color.red, -// // 'connected in the Chat :', -// // connectedUser(fastify.io), -// // color.reset, -// // ); -// // }); - -// // socket.on('testend', (sock_id_cl: string) => { -// // console.log('testend received from client socket id:', sock_id_cl); -// // }); - -// // socket.on('list', () => { -// // console.log(color.red, 'list activated', color.reset, socket.id); -// // connectedUser(fastify.io, socket.id); -// // }); - -// // socket.on('disconnecting', (reason) => { -// // const clientName = clientChat.get(socket.id) || null; -// // console.log( -// // color.green, -// // `Client disconnecting: ${clientName} (${socket.id}) reason:`, -// // reason, -// // ); -// // if (reason === 'transport error') return; - -// // if (clientName !== null) { -// // const obj = { -// // type: 'chat', -// // user: clientName, -// // token: '', -// // text: 'LEFT the chat', -// // timestamp: Date.now(), -// // SenderWindowID: socket.id, -// // }; - -// // broadcast(obj, obj.SenderWindowID); -// // // clientChat.delete(obj.user); -// // } -// // }); -// // }); -// // } \ No newline at end of file +} \ No newline at end of file From fc5685fe39f6076fbf8b48b34c407a77b7fe3a0d Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:43:17 +0100 Subject: [PATCH 35/48] (misc): Added tsconfig.json file --- src/tic-tac-toe/tsconfig.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/tic-tac-toe/tsconfig.json diff --git a/src/tic-tac-toe/tsconfig.json b/src/tic-tac-toe/tsconfig.json new file mode 100644 index 0000000..e6d24e2 --- /dev/null +++ b/src/tic-tac-toe/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": {}, + "include": ["src/**/*.ts"] +} From 143573546953847e3c7fa0b5f18ed45a8b31efba Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:44:04 +0100 Subject: [PATCH 36/48] (misc): Checked Implement other game and added task to write to database --- frontend/src/pages/ttt/README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/frontend/src/pages/ttt/README.md b/frontend/src/pages/ttt/README.md index d8169ae..d5de0ed 100644 --- a/frontend/src/pages/ttt/README.md +++ b/frontend/src/pages/ttt/README.md @@ -18,12 +18,13 @@ enhancing user engagement with gameplay history, and facilitating matchmaking for an enjoyable gaming experience. # TO-DO -For now I am prohibited from working on the backend as per Maieul's request. -[ ] - Implement other game +For now I am prohibited from working on the backend as per Maieul's request. +[X] - Implement other game [X] - (Done on Dec. 7 2025) Task for December 08 or 09: Tic-tac-toe should lock up once it's finished (i.e., draw or win) and print who won, how many turns and which row/col/diag the win happened in -[ ] - Implement user history -[ ] - Implement matchmaking -[ ] - -[ ] - -[ ] - \ No newline at end of file +[ ] - Implement user history (ongoing) + [ ] - Write to database the outcome of each game +[ ] - Implement matchmaking +[ ] - +[ ] - +[ ] - \ No newline at end of file From 7922f6eac125c1c1cf95818bc9cf08be695f014f Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:44:37 +0100 Subject: [PATCH 37/48] (misc): Updated name for network. --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f4303df..031df10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,7 @@ networks: driver: bridge monitoring: driver: bridge + services: frontend: build: ./frontend @@ -79,7 +80,7 @@ services: container_name: tic-tac-toe restart: unless-stopped networks: - - transcendance-network + - app volumes: - sqlite-volume:/volumes/database - static-volume:/volumes/static From b757cb6bb9715992add2d7c7f1a64441c3430c2a Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:45:49 +0100 Subject: [PATCH 38/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/@shared/src/database/init.sql | 9 ++++ src/@shared/src/database/mixin/tictactoe.ts | 55 +++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/@shared/src/database/mixin/tictactoe.ts diff --git a/src/@shared/src/database/init.sql b/src/@shared/src/database/init.sql index 2406225..f2d2af4 100644 --- a/src/@shared/src/database/init.sql +++ b/src/@shared/src/database/init.sql @@ -23,3 +23,12 @@ CREATE TABLE IF NOT EXISTS blocked ( CREATE UNIQUE INDEX IF NOT EXISTS idx_blocked_user_pair ON blocked(user, blocked); +CREATE TABLE IF NOT EXISTS tictactoe ( + id INTEGER PRIMARY KEY NOT NULL, + player1 TEXT NOT NULL, + player2 TEXT NOT NULL, + outcome TEXT NOT NULL, + + FOREIGN KEY(player1) REFERENCES user(id) + FOREIGN KEY(player2) REFERENCES user(id) +); diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts new file mode 100644 index 0000000..5fb7c5c --- /dev/null +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -0,0 +1,55 @@ +import { isNullish } from '@shared/utils'; +import type { Database } from './_base'; +import { UserId } from './user'; + +// describe every function in the object +export interface ITicTacToeDb extends Database { + normalFunction(id: TemplateId): TemplateData | undefined, + asyncFunction(id: TemplateId): Promise, +}; + +export const TicTacToeImpl: Omit = { + /** + * @brief Write the outcome of the specified game to the database. + * + * @param gameId The game we want to write the outcome of. + * + */ + setGameOutcome(this: ITicTacToeDb, id: GameId): void { + // Find a way to retrieve the outcome of the game. + this.prepare('INSERT INTO tictactoe (game, outcome) VALUES (@id, "draw" /* replace w/ game outcome */)').run({ id }); + }, + /** + * whole function description + * + * @param id the argument description + * + * @returns what does the function return ? + */ +// async asyncFunction(this: ITemplateDb, id: TemplateId): Promise { +// void id; +// return undefined; +// }, +}; + +export type TicTacToeId = number & { readonly __brand: unique symbol }; + +export type TemplateData = { + readonly id: TicTacToeId; + readonly player1: string; + readonly player2: string; + readonly outcome: string; +}; + +// this function will be able to be called from everywhere +// export async function freeFloatingExportedFunction(): Promise { +// return false; +// } + +// this function will never be able to be called outside of this module +// async function privateFunction(): Promise { +// return undefined; +// } + +// silence warnings +void privateFunction; From 7f7c0c12d12d7a0e217b07737c0e0c76a61a1ae7 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 00:53:04 +0100 Subject: [PATCH 39/48] (misc): reindented file with tabs --- src/@shared/src/database/mixin/tictactoe.ts | 49 ++++++++++----------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts index 5fb7c5c..8d83e0b 100644 --- a/src/@shared/src/database/mixin/tictactoe.ts +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -1,31 +1,30 @@ -import { isNullish } from '@shared/utils'; import type { Database } from './_base'; -import { UserId } from './user'; +// import { UserId } from './user'; // describe every function in the object export interface ITicTacToeDb extends Database { - normalFunction(id: TemplateId): TemplateData | undefined, - asyncFunction(id: TemplateId): Promise, + normalFunction(id: TemplateId): TemplateData | undefined, + asyncFunction(id: TemplateId): Promise, }; export const TicTacToeImpl: Omit = { - /** - * @brief Write the outcome of the specified game to the database. - * - * @param gameId The game we want to write the outcome of. - * - */ - setGameOutcome(this: ITicTacToeDb, id: GameId): void { - // Find a way to retrieve the outcome of the game. - this.prepare('INSERT INTO tictactoe (game, outcome) VALUES (@id, "draw" /* replace w/ game outcome */)').run({ id }); - }, - /** - * whole function description - * - * @param id the argument description - * - * @returns what does the function return ? - */ + /** + * @brief Write the outcome of the specified game to the database. + * + * @param gameId The game we want to write the outcome of. + * + */ + setGameOutcome(this: ITicTacToeDb, id: GameId): void { + // Find a way to retrieve the outcome of the game. + this.prepare('INSERT INTO tictactoe (game, outcome) VALUES (@id, "draw" /* replace w/ game outcome */)').run({ id }); + }, + /** + * whole function description + * + * @param id the argument description + * + * @returns what does the function return ? + */ // async asyncFunction(this: ITemplateDb, id: TemplateId): Promise { // void id; // return undefined; @@ -35,10 +34,10 @@ export const TicTacToeImpl: Omit = { export type TicTacToeId = number & { readonly __brand: unique symbol }; export type TemplateData = { - readonly id: TicTacToeId; - readonly player1: string; - readonly player2: string; - readonly outcome: string; + readonly id: TicTacToeId; + readonly player1: string; + readonly player2: string; + readonly outcome: string; }; // this function will be able to be called from everywhere From f5c0f5635d05017ffd7877c867627144965c29cb Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 01:00:40 +0100 Subject: [PATCH 40/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/@shared/src/database/mixin/tictactoe.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts index 8d83e0b..4d4cda8 100644 --- a/src/@shared/src/database/mixin/tictactoe.ts +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -3,8 +3,8 @@ import type { Database } from './_base'; // describe every function in the object export interface ITicTacToeDb extends Database { - normalFunction(id: TemplateId): TemplateData | undefined, - asyncFunction(id: TemplateId): Promise, + setGameOutcome(this: ITicTacToeDb, id: GameId): void, +// asyncFunction(id: TemplateId): Promise, }; export const TicTacToeImpl: Omit = { From edeee0093be7a18473c2a336e5066ed22eac6fba Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 01:04:37 +0100 Subject: [PATCH 41/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/@shared/src/database/mixin/tictactoe.ts | 2 +- src/tic-tac-toe/src/app.ts | 1 + src/tic-tac-toe/src/game.ts | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/@shared/src/database/mixin/tictactoe.ts b/src/@shared/src/database/mixin/tictactoe.ts index 4d4cda8..5cb3e7d 100644 --- a/src/@shared/src/database/mixin/tictactoe.ts +++ b/src/@shared/src/database/mixin/tictactoe.ts @@ -33,7 +33,7 @@ export const TicTacToeImpl: Omit = { export type TicTacToeId = number & { readonly __brand: unique symbol }; -export type TemplateData = { +export type TicTacToeData = { readonly id: TicTacToeId; readonly player1: string; readonly player2: string; diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index ba8b753..7238b0b 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -7,6 +7,7 @@ import * as auth from '@shared/auth'; import * as swagger from '@shared/swagger'; import * as utils from '@shared/utils'; import { Server } from 'socket.io'; +import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; declare const __SERVICE_NAME: string; diff --git a/src/tic-tac-toe/src/game.ts b/src/tic-tac-toe/src/game.ts index c472e50..0d929ad 100644 --- a/src/tic-tac-toe/src/game.ts +++ b/src/tic-tac-toe/src/game.ts @@ -1,3 +1,5 @@ +import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; + // Represents the possible states of a cell on the board. // `null` means that the cell is empty. type CellState = 'O' | 'X' | null From b873ec390f84fa86049ba107d5d574dbb9d51538 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sat, 20 Dec 2025 01:22:55 +0100 Subject: [PATCH 42/48] (tic-tac-toe): Laid the foundations for tic tac toe/database interactions --- src/tic-tac-toe/src/app.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index 7238b0b..4e18aa8 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -7,7 +7,7 @@ import * as auth from '@shared/auth'; import * as swagger from '@shared/swagger'; import * as utils from '@shared/utils'; import { Server } from 'socket.io'; -import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; +import type { TicTacToeImpl } from '@shared/database/mixin/tictactoe'; declare const __SERVICE_NAME: string; @@ -83,6 +83,7 @@ async function onReady(fastify: FastifyInstance, game: TTC) { turn: game.currentPlayer, lastResult: result, }); +// setGameOutcome(); } }); From 8debc57559ee842ef1c07e90eaf36457d61080a9 Mon Sep 17 00:00:00 2001 From: apetitco Date: Sun, 21 Dec 2025 02:58:15 +0100 Subject: [PATCH 43/48] (backend): trying to have a working backend. Did I manage to achieve this task: NO. --- Docker.mk | 1 + docker-compose.yml | 10 +- frontend/pnpm-lock.yaml | 184 +++++++++++------------ src/@shared/package.json | 2 +- src/auth/package.json | 2 +- src/chat/package.json | 2 +- src/package.json | 2 +- src/pnpm-lock.yaml | 260 ++++++++++++++++----------------- src/tic-tac-toe/entrypoint.sh | 7 + src/tic-tac-toe/package.json | 7 +- src/tic-tac-toe/src/openapi.ts | 21 +++ src/tic-tac-toe/src/run.ts | 14 +- src/tic-tac-toe/vite.config.js | 54 +++++++ src/user/package.json | 2 +- 14 files changed, 327 insertions(+), 241 deletions(-) create mode 100644 src/tic-tac-toe/entrypoint.sh create mode 100644 src/tic-tac-toe/src/openapi.ts create mode 100644 src/tic-tac-toe/vite.config.js diff --git a/Docker.mk b/Docker.mk index 5f6efcb..3d7bcb4 100644 --- a/Docker.mk +++ b/Docker.mk @@ -17,6 +17,7 @@ DOCKER_SERVICE= \ auth \ chat \ + tic-tac-toe \ frontend \ nginx \ user \ diff --git a/docker-compose.yml b/docker-compose.yml index 031df10..8f841ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -76,9 +76,8 @@ services: context: ./src/ args: - SERVICE=tic-tac-toe - - EXTRA_FILES=tic-tac-toe/extra - container_name: tic-tac-toe - restart: unless-stopped + container_name: app-tic-tac-toe + restart: always networks: - app volumes: @@ -87,6 +86,11 @@ services: environment: - JWT_SECRET=KRUGKIDROVUWG2ZAMJZG653OEBTG66BANJ2W24DTEBXXMZLSEB2GQZJANRQXU6JA - DATABASE_DIR=/volumes/database + logging: + driver: gelf + options: + gelf-address: "udp://127.0.0.1:12201" + tag: "{{.Name}}" ############### # CHAT # diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index ec12443..02fe5dd 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -214,113 +214,113 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + '@rollup/rollup-android-arm-eabi@4.54.0': + resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + '@rollup/rollup-android-arm64@4.54.0': + resolution: {integrity: sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + '@rollup/rollup-darwin-arm64@4.54.0': + resolution: {integrity: sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + '@rollup/rollup-darwin-x64@4.54.0': + resolution: {integrity: sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + '@rollup/rollup-freebsd-arm64@4.54.0': + resolution: {integrity: sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + '@rollup/rollup-freebsd-x64@4.54.0': + resolution: {integrity: sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': + resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + '@rollup/rollup-linux-arm-musleabihf@4.54.0': + resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + '@rollup/rollup-linux-arm64-gnu@4.54.0': + resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + '@rollup/rollup-linux-arm64-musl@4.54.0': + resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + '@rollup/rollup-linux-loong64-gnu@4.54.0': + resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + '@rollup/rollup-linux-ppc64-gnu@4.54.0': + resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + '@rollup/rollup-linux-riscv64-gnu@4.54.0': + resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + '@rollup/rollup-linux-riscv64-musl@4.54.0': + resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + '@rollup/rollup-linux-s390x-gnu@4.54.0': + resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + '@rollup/rollup-linux-x64-gnu@4.54.0': + resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + '@rollup/rollup-linux-x64-musl@4.54.0': + resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + '@rollup/rollup-openharmony-arm64@4.54.0': + resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + '@rollup/rollup-win32-arm64-msvc@4.54.0': + resolution: {integrity: sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + '@rollup/rollup-win32-ia32-msvc@4.54.0': + resolution: {integrity: sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + '@rollup/rollup-win32-x64-gnu@4.54.0': + resolution: {integrity: sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + '@rollup/rollup-win32-x64-msvc@4.54.0': + resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==} cpu: [x64] os: [win32] @@ -667,8 +667,8 @@ packages: require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + rollup@4.54.0: + resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -905,70 +905,70 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@rollup/rollup-android-arm-eabi@4.53.5': + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true - '@rollup/rollup-android-arm64@4.53.5': + '@rollup/rollup-android-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': + '@rollup/rollup-darwin-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-x64@4.53.5': + '@rollup/rollup-darwin-x64@4.54.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': + '@rollup/rollup-freebsd-arm64@4.54.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': + '@rollup/rollup-freebsd-x64@4.54.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': + '@rollup/rollup-linux-arm-musleabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': + '@rollup/rollup-linux-arm64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': + '@rollup/rollup-linux-arm64-musl@4.54.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': + '@rollup/rollup-linux-loong64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': + '@rollup/rollup-linux-ppc64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': + '@rollup/rollup-linux-riscv64-musl@4.54.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': + '@rollup/rollup-linux-s390x-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': + '@rollup/rollup-linux-x64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': + '@rollup/rollup-linux-x64-musl@4.54.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': + '@rollup/rollup-openharmony-arm64@4.54.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': + '@rollup/rollup-win32-arm64-msvc@4.54.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': + '@rollup/rollup-win32-ia32-msvc@4.54.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': + '@rollup/rollup-win32-x64-gnu@4.54.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': + '@rollup/rollup-win32-x64-msvc@4.54.0': optional: true '@socket.io/component-emitter@3.1.2': {} @@ -1256,32 +1256,32 @@ snapshots: require-main-filename@2.0.0: {} - rollup@4.53.5: + rollup@4.54.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 + '@rollup/rollup-android-arm-eabi': 4.54.0 + '@rollup/rollup-android-arm64': 4.54.0 + '@rollup/rollup-darwin-arm64': 4.54.0 + '@rollup/rollup-darwin-x64': 4.54.0 + '@rollup/rollup-freebsd-arm64': 4.54.0 + '@rollup/rollup-freebsd-x64': 4.54.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.54.0 + '@rollup/rollup-linux-arm-musleabihf': 4.54.0 + '@rollup/rollup-linux-arm64-gnu': 4.54.0 + '@rollup/rollup-linux-arm64-musl': 4.54.0 + '@rollup/rollup-linux-loong64-gnu': 4.54.0 + '@rollup/rollup-linux-ppc64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-musl': 4.54.0 + '@rollup/rollup-linux-s390x-gnu': 4.54.0 + '@rollup/rollup-linux-x64-gnu': 4.54.0 + '@rollup/rollup-linux-x64-musl': 4.54.0 + '@rollup/rollup-openharmony-arm64': 4.54.0 + '@rollup/rollup-win32-arm64-msvc': 4.54.0 + '@rollup/rollup-win32-ia32-msvc': 4.54.0 + '@rollup/rollup-win32-x64-gnu': 4.54.0 + '@rollup/rollup-win32-x64-msvc': 4.54.0 fsevents: 2.3.3 set-blocking@2.0.0: {} @@ -1350,7 +1350,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.0.3 diff --git a/src/@shared/package.json b/src/@shared/package.json index 4cdbef0..43efa32 100644 --- a/src/@shared/package.json +++ b/src/@shared/package.json @@ -20,7 +20,7 @@ "fastify-plugin": "^5.1.0", "joi": "^18.0.2", "otp": "^1.1.2", - "typebox": "^1.0.64", + "typebox": "^1.0.65", "uuidv7": "^1.1.0" }, "devDependencies": { diff --git a/src/auth/package.json b/src/auth/package.json index b709575..ace48e9 100644 --- a/src/auth/package.json +++ b/src/auth/package.json @@ -27,7 +27,7 @@ "fastify": "^5.6.2", "fastify-cli": "^7.4.1", "fastify-plugin": "^5.1.0", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/chat/package.json b/src/chat/package.json index 555055b..502b538 100644 --- a/src/chat/package.json +++ b/src/chat/package.json @@ -27,7 +27,7 @@ "fastify": "^5.6.2", "fastify-plugin": "^5.1.0", "socket.io": "^4.8.1", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/package.json b/src/package.json index 3169a11..d58f871 100644 --- a/src/package.json +++ b/src/package.json @@ -33,7 +33,7 @@ "vite": "^7.3.0" }, "dependencies": { - "@redocly/cli": "^2.13.0", + "@redocly/cli": "^2.14.0", "bindings": "^1.5.0" } } diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml index dffd059..8932a9b 100644 --- a/src/pnpm-lock.yaml +++ b/src/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@redocly/cli': - specifier: ^2.13.0 - version: 2.13.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0) + specifier: ^2.14.0 + version: 2.14.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0) bindings: specifier: ^1.5.0 version: 1.5.0 @@ -79,8 +79,8 @@ importers: specifier: ^1.1.2 version: 1.1.2 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 uuidv7: specifier: ^1.1.0 version: 1.1.0 @@ -122,15 +122,15 @@ importers: specifier: ^5.1.0 version: 5.1.0 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 version: 22.19.3 rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -168,15 +168,15 @@ importers: specifier: ^4.8.1 version: 4.8.1 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 version: 22.19.3 rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -214,8 +214,8 @@ importers: specifier: ^4.8.1 version: 4.8.1 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 @@ -225,7 +225,7 @@ importers: version: 5.1.0(fastify@5.6.2)(socket.io@4.8.1) rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -260,15 +260,15 @@ importers: specifier: ^5.1.0 version: 5.1.0 typebox: - specifier: ^1.0.64 - version: 1.0.64 + specifier: ^1.0.65 + version: 1.0.65 devDependencies: '@types/node': specifier: ^22.19.3 version: 22.19.3 rollup-plugin-node-externals: specifier: ^8.1.2 - version: 8.1.2(rollup@4.53.5) + version: 8.1.2(rollup@4.54.0) vite: specifier: ^7.3.0 version: 7.3.0(@types/node@22.19.3)(yaml@2.8.2) @@ -728,136 +728,136 @@ packages: '@redocly/ajv@8.17.1': resolution: {integrity: sha512-EDtsGZS964mf9zAUXAl9Ew16eYbeyAFWhsPr0fX6oaJxgd8rApYlPBf0joyhnUHz88WxrigyFtTaqqzXNzPgqw==} - '@redocly/cli@2.13.0': - resolution: {integrity: sha512-VOGh8p5gKy+u94SbvMGaHvDM6TPw668D9iQkNSztoi4T5sj3ZwM7Y8Z3yZnMqC5s5epDcLAMq4jCO8UVn5ZWHg==} + '@redocly/cli@2.14.0': + resolution: {integrity: sha512-LvVYV7KJGtVqltBc8Cbw2s4QpFOzend5nCsgR1JgWvHNt70f1AzqoHr5y7GO+3ThwumrTzPvjta+Ln+n3x5NmA==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true '@redocly/config@0.22.2': resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==} - '@redocly/config@0.41.0': - resolution: {integrity: sha512-8yJ2e+ex8KVF25zijdpDbAEjyubk7NLfHsLI8h0MUnLEo2iEg6rTCDT9Qw71XDqd5UlXvfJb0Z0h6dd+Y6pWLw==} + '@redocly/config@0.41.1': + resolution: {integrity: sha512-LcMCzFbP/sqkCLSG3YswmeScP4fM5SjDCQizwa+psZ0PhYrKOMF7azZ6ZBkWs115uv5RfOk+jYAWLdKkZGGGXg==} '@redocly/openapi-core@1.34.6': resolution: {integrity: sha512-2+O+riuIUgVSuLl3Lyh5AplWZyVMNuG2F98/o6NrutKJfW4/GTZdPpZlIphS0HGgcOHgmWcCSHj+dWFlZaGSHw==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} - '@redocly/openapi-core@2.13.0': - resolution: {integrity: sha512-xQ4z5tsrXbIa4EfCniHv1zZ4etmQ0lpRcxy750iOamV5A/+19mgbPtD+UQCoT18puDAjcnOgpX7x2ha72qKrnw==} + '@redocly/openapi-core@2.14.0': + resolution: {integrity: sha512-GeSIesfbh5TdqoWBu7wPzCAGUvKfLBnN60rKnhZCyxrs6M0tn7GYhtET+P5HsNlXmvW4vFNDBlLDoATW/dKrrQ==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@redocly/respect-core@2.13.0': - resolution: {integrity: sha512-35OidNXWkmmsJiwgX+tFw7FaU8usZVvZ/lFBFNJga65pivEvaDlfiwKxIRTzM4iuNbc2FRvP2q30dlGAztv0tg==} + '@redocly/respect-core@2.14.0': + resolution: {integrity: sha512-7HYB66oNUOcBjBZpK/i5xPpXIYXt09a98WX0subaAQZJinLGq8D3hbgLAp+pXZgosHNeZ0QKahOExsZ25JZSHw==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + '@rollup/rollup-android-arm-eabi@4.54.0': + resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + '@rollup/rollup-android-arm64@4.54.0': + resolution: {integrity: sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + '@rollup/rollup-darwin-arm64@4.54.0': + resolution: {integrity: sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + '@rollup/rollup-darwin-x64@4.54.0': + resolution: {integrity: sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + '@rollup/rollup-freebsd-arm64@4.54.0': + resolution: {integrity: sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + '@rollup/rollup-freebsd-x64@4.54.0': + resolution: {integrity: sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': + resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + '@rollup/rollup-linux-arm-musleabihf@4.54.0': + resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + '@rollup/rollup-linux-arm64-gnu@4.54.0': + resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + '@rollup/rollup-linux-arm64-musl@4.54.0': + resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + '@rollup/rollup-linux-loong64-gnu@4.54.0': + resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + '@rollup/rollup-linux-ppc64-gnu@4.54.0': + resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + '@rollup/rollup-linux-riscv64-gnu@4.54.0': + resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + '@rollup/rollup-linux-riscv64-musl@4.54.0': + resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + '@rollup/rollup-linux-s390x-gnu@4.54.0': + resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + '@rollup/rollup-linux-x64-gnu@4.54.0': + resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + '@rollup/rollup-linux-x64-musl@4.54.0': + resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + '@rollup/rollup-openharmony-arm64@4.54.0': + resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + '@rollup/rollup-win32-arm64-msvc@4.54.0': + resolution: {integrity: sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + '@rollup/rollup-win32-ia32-msvc@4.54.0': + resolution: {integrity: sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + '@rollup/rollup-win32-x64-gnu@4.54.0': + resolution: {integrity: sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + '@rollup/rollup-win32-x64-msvc@4.54.0': + resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==} cpu: [x64] os: [win32] @@ -2237,8 +2237,8 @@ packages: peerDependencies: rollup: ^4.0.0 - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + rollup@4.54.0: + resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2499,8 +2499,8 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - typebox@1.0.64: - resolution: {integrity: sha512-U6quDhQMzQRzBX8jvlE5mZlUnlMRTaZrG/QMAhOYVJ0D0rhq1iOXBQVSzBX0JgAh55jXQ7fWIv24i+lVimXcDw==} + typebox@1.0.65: + resolution: {integrity: sha512-3WaZ4QmfAxmelhi0dwusYDoZ+DLDoVrsc3aORzgtk1I8JfIf4wn+F8i1TtrnU2jJKM/hZgjJGfzXrwS4B31zZw==} typescript-eslint@8.50.0: resolution: {integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==} @@ -3126,14 +3126,14 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - '@redocly/cli@2.13.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0)': + '@redocly/cli@2.14.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(core-js@3.47.0)': dependencies: '@opentelemetry/exporter-trace-otlp-http': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.34.0 - '@redocly/openapi-core': 2.13.0(ajv@8.17.1) - '@redocly/respect-core': 2.13.0(ajv@8.17.1) + '@redocly/openapi-core': 2.14.0(ajv@8.17.1) + '@redocly/respect-core': 2.14.0(ajv@8.17.1) abort-controller: 3.0.0 chokidar: 3.6.0 colorette: 1.4.0 @@ -3167,7 +3167,7 @@ snapshots: '@redocly/config@0.22.2': {} - '@redocly/config@0.41.0': + '@redocly/config@0.41.1': dependencies: json-schema-to-ts: 2.7.2 @@ -3185,10 +3185,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@redocly/openapi-core@2.13.0(ajv@8.17.1)': + '@redocly/openapi-core@2.14.0(ajv@8.17.1)': dependencies: '@redocly/ajv': 8.17.1 - '@redocly/config': 0.41.0 + '@redocly/config': 0.41.1 ajv-formats: 3.0.1(ajv@8.17.1) colorette: 1.4.0 js-levenshtein: 1.1.6 @@ -3199,12 +3199,12 @@ snapshots: transitivePeerDependencies: - ajv - '@redocly/respect-core@2.13.0(ajv@8.17.1)': + '@redocly/respect-core@2.14.0(ajv@8.17.1)': dependencies: '@faker-js/faker': 7.6.0 '@noble/hashes': 1.8.0 '@redocly/ajv': 8.17.1 - '@redocly/openapi-core': 2.13.0(ajv@8.17.1) + '@redocly/openapi-core': 2.14.0(ajv@8.17.1) better-ajv-errors: 1.2.0(ajv@8.17.1) colorette: 2.0.20 json-pointer: 0.6.2 @@ -3214,70 +3214,70 @@ snapshots: transitivePeerDependencies: - ajv - '@rollup/rollup-android-arm-eabi@4.53.5': + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true - '@rollup/rollup-android-arm64@4.53.5': + '@rollup/rollup-android-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': + '@rollup/rollup-darwin-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-x64@4.53.5': + '@rollup/rollup-darwin-x64@4.54.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': + '@rollup/rollup-freebsd-arm64@4.54.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': + '@rollup/rollup-freebsd-x64@4.54.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': + '@rollup/rollup-linux-arm-musleabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': + '@rollup/rollup-linux-arm64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': + '@rollup/rollup-linux-arm64-musl@4.54.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': + '@rollup/rollup-linux-loong64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': + '@rollup/rollup-linux-ppc64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': + '@rollup/rollup-linux-riscv64-musl@4.54.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': + '@rollup/rollup-linux-s390x-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': + '@rollup/rollup-linux-x64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': + '@rollup/rollup-linux-x64-musl@4.54.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': + '@rollup/rollup-openharmony-arm64@4.54.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': + '@rollup/rollup-win32-arm64-msvc@4.54.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': + '@rollup/rollup-win32-ia32-msvc@4.54.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': + '@rollup/rollup-win32-x64-gnu@4.54.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': + '@rollup/rollup-win32-x64-msvc@4.54.0': optional: true '@socket.io/component-emitter@3.1.2': {} @@ -4729,36 +4729,36 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-node-externals@8.1.2(rollup@4.53.5): + rollup-plugin-node-externals@8.1.2(rollup@4.54.0): dependencies: - rollup: 4.53.5 + rollup: 4.54.0 - rollup@4.53.5: + rollup@4.54.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 + '@rollup/rollup-android-arm-eabi': 4.54.0 + '@rollup/rollup-android-arm64': 4.54.0 + '@rollup/rollup-darwin-arm64': 4.54.0 + '@rollup/rollup-darwin-x64': 4.54.0 + '@rollup/rollup-freebsd-arm64': 4.54.0 + '@rollup/rollup-freebsd-x64': 4.54.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.54.0 + '@rollup/rollup-linux-arm-musleabihf': 4.54.0 + '@rollup/rollup-linux-arm64-gnu': 4.54.0 + '@rollup/rollup-linux-arm64-musl': 4.54.0 + '@rollup/rollup-linux-loong64-gnu': 4.54.0 + '@rollup/rollup-linux-ppc64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-musl': 4.54.0 + '@rollup/rollup-linux-s390x-gnu': 4.54.0 + '@rollup/rollup-linux-x64-gnu': 4.54.0 + '@rollup/rollup-linux-x64-musl': 4.54.0 + '@rollup/rollup-openharmony-arm64': 4.54.0 + '@rollup/rollup-win32-arm64-msvc': 4.54.0 + '@rollup/rollup-win32-ia32-msvc': 4.54.0 + '@rollup/rollup-win32-x64-gnu': 4.54.0 + '@rollup/rollup-win32-x64-msvc': 4.54.0 fsevents: 2.3.3 safe-buffer@5.2.1: {} @@ -5052,7 +5052,7 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 - typebox@1.0.64: {} + typebox@1.0.65: {} typescript-eslint@8.50.0(eslint@9.39.2)(typescript@5.9.3): dependencies: @@ -5111,7 +5111,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.19.3 @@ -5124,7 +5124,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.0.3 diff --git a/src/tic-tac-toe/entrypoint.sh b/src/tic-tac-toe/entrypoint.sh new file mode 100644 index 0000000..f1735d5 --- /dev/null +++ b/src/tic-tac-toe/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e +# do anything here + +# run the CMD [ ... ] from the dockerfile +exec "$@" diff --git a/src/tic-tac-toe/package.json b/src/tic-tac-toe/package.json index e9edce4..e75880b 100644 --- a/src/tic-tac-toe/package.json +++ b/src/tic-tac-toe/package.json @@ -6,9 +6,8 @@ "scripts": { "start": "npm run build && node dist/run.js", "build": "vite build", - "build:prod": "vite build --outDir=/dist --minify=true --sourcemap=false", - "REMOVEME-build:openapi": "VITE_ENTRYPOINT=src/openapi.ts vite build && node dist/openapi.cjs >openapi.json", - "test": "echo \"Error: no test specified\" && exit 1" + "build:prod": "vite build --outDir=/dist --minify=true --sourcemap=false && mv /dist/run.js /dist/run.cjs", + "build:openapi": "VITE_ENTRYPOINT=src/openapi.ts vite build && mv dist/openapi.js dist/openapi.cjs && node dist/openapi.cjs >openapi.json" }, "keywords": [], "author": "", @@ -24,7 +23,7 @@ "fastify": "^5.6.2", "fastify-plugin": "^5.1.0", "socket.io": "^4.8.1", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", diff --git a/src/tic-tac-toe/src/openapi.ts b/src/tic-tac-toe/src/openapi.ts new file mode 100644 index 0000000..d66d7a7 --- /dev/null +++ b/src/tic-tac-toe/src/openapi.ts @@ -0,0 +1,21 @@ +import f, { FastifyPluginAsync } from 'fastify'; +import * as swagger from '@shared/swagger'; +import * as auth from '@shared/auth'; + +declare const __SERVICE_NAME: string; + +// @ts-expect-error: import.meta.glob is a vite thing. Typescript doesn't know this... +const routes = import.meta.glob('./routes/**/*.ts', { eager: true }); + +async function start() { + const fastify = f({ logger: false }); + await fastify.register(auth.authPlugin, { onlySchema: true }); + await fastify.register(swagger.useSwagger, { service: __SERVICE_NAME }); + + for (const route of Object.values(routes)) { + await fastify.register(route as FastifyPluginAsync, {}); + } + await fastify.ready(); + console.log(JSON.stringify(fastify.swagger(), undefined, 4)); +} +start(); diff --git a/src/tic-tac-toe/src/run.ts b/src/tic-tac-toe/src/run.ts index a65470a..dc06dc8 100644 --- a/src/tic-tac-toe/src/run.ts +++ b/src/tic-tac-toe/src/run.ts @@ -6,13 +6,13 @@ import app from './app'; const start = async () => { const envToLogger = { development: { - transport: { - target: 'pino', - options: { - translateTime: 'HH:MM:ss Z', - ignore: 'pid,hostname', - }, - }, + // transport: { + // target: 'pino', + // options: { + // translateTime: 'HH:MM:ss Z', + // ignore: 'pid,hostname', + // }, + // }, }, production: true, test: false, diff --git a/src/tic-tac-toe/vite.config.js b/src/tic-tac-toe/vite.config.js new file mode 100644 index 0000000..ba669e5 --- /dev/null +++ b/src/tic-tac-toe/vite.config.js @@ -0,0 +1,54 @@ +import { defineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; +import nodeExternals from 'rollup-plugin-node-externals'; +import path from 'node:path'; +import fs from 'node:fs'; + +function collectDeps(...pkgJsonPaths) { + const allDeps = new Set(); + for (const pkgPath of pkgJsonPaths) { + const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')); + for (const dep of Object.keys(pkg.dependencies || {})) { + allDeps.add(dep); + } + for (const peer of Object.keys(pkg.peerDependencies || {})) { + allDeps.add(peer); + } + } + return Array.from(allDeps); +} + +const externals = collectDeps( + './package.json', + '../@shared/package.json', +); + + +export default defineConfig({ + root: __dirname, + define: { + __SERVICE_NAME: '"tic-tac-toe"', + }, + // service root + plugins: [tsconfigPaths(), nodeExternals()], + build: { + ssr: true, + outDir: 'dist', + emptyOutDir: true, + lib: { + entry: path.resolve(__dirname, process.env.VITE_ENTRYPOINT ?? 'src/run.ts'), + // adjust main entry + formats: ['cjs'], + // CommonJS for Node.js + fileName: (format, entryName) => `${entryName}.cjs`, + }, + rollupOptions: { + external: externals, + }, + target: 'node22', + // or whatever Node version you use + sourcemap: true, + minify: false, + // for easier debugging + }, +}); diff --git a/src/user/package.json b/src/user/package.json index 2987bf2..e5c94cc 100644 --- a/src/user/package.json +++ b/src/user/package.json @@ -26,7 +26,7 @@ "fastify": "^5.6.2", "fastify-cli": "^7.4.1", "fastify-plugin": "^5.1.0", - "typebox": "^1.0.64" + "typebox": "^1.0.65" }, "devDependencies": { "@types/node": "^22.19.3", From 5a884ef4c5ba5afa37571bcb326693bacc24407c Mon Sep 17 00:00:00 2001 From: apetitco Date: Sun, 21 Dec 2025 02:59:04 +0100 Subject: [PATCH 44/48] (backend): trying to have a working backend. Did I manage to achieve this task: NO. --- src/tic-tac-toe/openapi.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/tic-tac-toe/openapi.json diff --git a/src/tic-tac-toe/openapi.json b/src/tic-tac-toe/openapi.json new file mode 100644 index 0000000..38cd725 --- /dev/null +++ b/src/tic-tac-toe/openapi.json @@ -0,0 +1,21 @@ +{ + "openapi": "3.1.0", + "info": { + "version": "9.6.1", + "title": "@fastify/swagger" + }, + "components": { + "schemas": {} + }, + "paths": {}, + "servers": [ + { + "url": "https://local.maix.me:8888", + "description": "direct from docker" + }, + { + "url": "https://local.maix.me:8000", + "description": "using fnginx" + } + ] +} From c71d332c3957fee990acfc29a2957c974e777287 Mon Sep 17 00:00:00 2001 From: Maieul BOYER Date: Mon, 22 Dec 2025 14:56:39 +0100 Subject: [PATCH 45/48] update: added ttt to nginx configuration --- nginx/conf/locations/ttt.conf | 14 ++++++++++++++ src/tic-tac-toe/src/plugins/socket.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 nginx/conf/locations/ttt.conf diff --git a/nginx/conf/locations/ttt.conf b/nginx/conf/locations/ttt.conf new file mode 100644 index 0000000..eee6057 --- /dev/null +++ b/nginx/conf/locations/ttt.conf @@ -0,0 +1,14 @@ +#forward the post request to the microservice +location /api/ttt/ { + proxy_pass http://app-tic-tac-toe; +} + +location /api/ttt/socket.io/ { + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_read_timeout 3600s; + proxy_pass http://app-tic-tac-toe; +} diff --git a/src/tic-tac-toe/src/plugins/socket.ts b/src/tic-tac-toe/src/plugins/socket.ts index f32dec8..f485775 100644 --- a/src/tic-tac-toe/src/plugins/socket.ts +++ b/src/tic-tac-toe/src/plugins/socket.ts @@ -18,7 +18,7 @@ const fastifySocketIO: FastifyPluginAsync = fp(async (fastify) => { } fastify.decorate( 'io', - new Server(fastify.server, { path: '/api/chat/socket.io' }), + new Server(fastify.server, { path: '/api/ttt/socket.io' }), ); fastify.addHook('preClose', defaultPreClose); fastify.addHook('onClose', (instance: FastifyInstance, done) => { From a940447039e4e1a0c1ffa3f06121b9cb73033fba Mon Sep 17 00:00:00 2001 From: Maieul BOYER Date: Mon, 22 Dec 2025 15:31:58 +0100 Subject: [PATCH 46/48] made the socket correctly connect to the backend --- frontend/src/pages/ttt/ttt.ts | 122 +++++++++++++++++++++------------- 1 file changed, 76 insertions(+), 46 deletions(-) diff --git a/frontend/src/pages/ttt/ttt.ts b/frontend/src/pages/ttt/ttt.ts index 4875647..75c0e37 100644 --- a/frontend/src/pages/ttt/ttt.ts +++ b/frontend/src/pages/ttt/ttt.ts @@ -3,63 +3,93 @@ import tttPage from "./ttt.html?raw"; import { showError, showInfo, showSuccess } from "@app/toast"; import { io, Socket } from "socket.io-client"; +// get the name of the machine used to connect +const machineHostName = window.location.hostname; +console.log( + "connect to login at https://" + machineHostName + ":8888/app/login", +); + +export let __socket: Socket | undefined = undefined; +document.addEventListener("ft:pageChange", () => { + if (__socket !== undefined) __socket.close(); + __socket = undefined; + console.log("Page changed"); +}); + +export function getSocket(): Socket { + let addressHost = `wss://${machineHostName}:8888`; + // let addressHost = `wss://localhost:8888`; + if (__socket === undefined) + __socket = io(addressHost, { + path: "/api/ttt/socket.io/", + secure: true, + transports: ["websocket"], + }); + return __socket; +} + // Route handler for the Tic-Tac-Toe page. // Instantiates the game logic and binds UI events. async function handleTTT(): Promise { - const socket: Socket = io("http://localhost:80"); + const socket: Socket = getSocket(); - return { - html: tttPage, - postInsert: async (app) => { - if (!app) { - return; - } + return { + html: tttPage, + postInsert: async (app) => { + if (!app) { + return; + } - const cells = app.querySelectorAll(".ttt-grid-cell"); - const restartBtn = app.querySelector("#ttt-restart-btn"); - const grid = app.querySelector('.ttt-grid'); // Not sure about this one + const cells = + app.querySelectorAll(".ttt-grid-cell"); + const restartBtn = + app.querySelector("#ttt-restart-btn"); + const grid = app.querySelector(".ttt-grid"); // Not sure about this one - const updateUI = (boardState: (string | null)[]) => { - boardState.forEach((state, idx) => { - cells[idx].innerText = state || " "; - }); - }; + const updateUI = (boardState: (string | null)[]) => { + boardState.forEach((state, idx) => { + cells[idx].innerText = state || " "; + }); + }; - socket.on('gameState', (data) => { - updateUI(data.board); + socket.on("gameState", (data) => { + updateUI(data.board); - if (data.lastResult && data.lastResult !== 'ongoing') { - grid?.classList.add('pointer-events-none'); - if (data.lastResult === 'winX') { - showSuccess('X won !'); - } if (data.lastResult === 'winO') { - showSuccess('O won !'); - } if (data.lastResult === 'draw') { - showInfo('Draw !'); - } - } + if (data.lastResult && data.lastResult !== "ongoing") { + grid?.classList.add("pointer-events-none"); + if (data.lastResult === "winX") { + showSuccess("X won !"); + } + if (data.lastResult === "winO") { + showSuccess("O won !"); + } + if (data.lastResult === "draw") { + showInfo("Draw !"); + } + } - if (data.reset) { - grid?.classList.remove('pointer-events-none'); - showInfo('Game Restarted'); - } - }); + if (data.reset) { + grid?.classList.remove("pointer-events-none"); + showInfo("Game Restarted"); + } + }); - socket.on('error', (msg) => { - showError(msg); - }); + socket.on("error", (msg) => { + showError(msg); + }); - cells?.forEach(function (c, idx) { - c.addEventListener('click', () => { - socket.emit('makeMove', idx); - }); - }); + cells?.forEach(function(c, idx) { + c.addEventListener("click", () => { + socket.emit("makeMove", idx); + }); + }); - restartBtn?.addEventListener('click', () => { - socket.emit('resetGame'); - }); - }, - } + restartBtn?.addEventListener("click", () => { + socket.emit("resetGame"); + }); + }, + }; } -addRoute('/ttt', handleTTT); \ No newline at end of file +addRoute("/ttt", handleTTT); + From f5c79a2d3a2c543225d8f3a3687288d5ef7de034 Mon Sep 17 00:00:00 2001 From: apetitco Date: Mon, 22 Dec 2025 15:45:33 +0100 Subject: [PATCH 47/48] (eslint): Fixed issues with eslint --- src/tic-tac-toe/src/app.ts | 4 ++-- src/tic-tac-toe/src/game.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tic-tac-toe/src/app.ts b/src/tic-tac-toe/src/app.ts index 4e18aa8..977bb8f 100644 --- a/src/tic-tac-toe/src/app.ts +++ b/src/tic-tac-toe/src/app.ts @@ -7,7 +7,7 @@ import * as auth from '@shared/auth'; import * as swagger from '@shared/swagger'; import * as utils from '@shared/utils'; import { Server } from 'socket.io'; -import type { TicTacToeImpl } from '@shared/database/mixin/tictactoe'; +// import type { TicTacToeImpl } from '@shared/database/mixin/tictactoe'; declare const __SERVICE_NAME: string; @@ -83,7 +83,7 @@ async function onReady(fastify: FastifyInstance, game: TTC) { turn: game.currentPlayer, lastResult: result, }); -// setGameOutcome(); + // setGameOutcome(); } }); diff --git a/src/tic-tac-toe/src/game.ts b/src/tic-tac-toe/src/game.ts index 0d929ad..721ec91 100644 --- a/src/tic-tac-toe/src/game.ts +++ b/src/tic-tac-toe/src/game.ts @@ -1,4 +1,4 @@ -import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; +// import type { TicTacToeData } from '@shared/database/mixin/tictactoe'; // Represents the possible states of a cell on the board. // `null` means that the cell is empty. From 782e13cd6349bbe30844cfd0ef97e0bc93ef134d Mon Sep 17 00:00:00 2001 From: Maieul BOYER Date: Mon, 22 Dec 2025 17:46:04 +0100 Subject: [PATCH 48/48] fixed small issues --- src/redocly.yaml | 2 ++ src/tic-tac-toe/src/run.ts | 27 ++++++--------------------- src/tic-tac-toe/vite.config.js | 2 +- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/redocly.yaml b/src/redocly.yaml index 2c061f2..e54e41f 100644 --- a/src/redocly.yaml +++ b/src/redocly.yaml @@ -5,6 +5,8 @@ apis: root: ./user/openapi.json chat: root: ./chat/openapi.json + ttt: + root: ./tic-tac-toe/openapi.json rules: info-license: warn diff --git a/src/tic-tac-toe/src/run.ts b/src/tic-tac-toe/src/run.ts index dc06dc8..3c59d5d 100644 --- a/src/tic-tac-toe/src/run.ts +++ b/src/tic-tac-toe/src/run.ts @@ -4,33 +4,18 @@ import fastify, { FastifyInstance } from 'fastify'; import app from './app'; const start = async () => { - const envToLogger = { - development: { - // transport: { - // target: 'pino', - // options: { - // translateTime: 'HH:MM:ss Z', - // ignore: 'pid,hostname', - // }, - // }, - }, - production: true, - test: false, - }; - - const f: FastifyInstance = fastify({ logger: envToLogger.development }); + const f: FastifyInstance = fastify({ logger: { level: 'info' } }); + process.on('SIGTERM', () => { + f.log.warn('Requested to shutdown'); + process.exit(134); + }); try { - process.on('SIGTERM', () => { - f.log.info('Requested to shutdown'); - process.exit(134); - }); - console.log('-------->Serving static files from:'); await f.register(app, {}); await f.listen({ port: 80, host: '0.0.0.0' }); } catch (err) { f.log.error(err); process.exit(1); - }; + } }; start(); diff --git a/src/tic-tac-toe/vite.config.js b/src/tic-tac-toe/vite.config.js index ba669e5..3d8be45 100644 --- a/src/tic-tac-toe/vite.config.js +++ b/src/tic-tac-toe/vite.config.js @@ -27,7 +27,7 @@ const externals = collectDeps( export default defineConfig({ root: __dirname, define: { - __SERVICE_NAME: '"tic-tac-toe"', + __SERVICE_NAME: '"ttt"', }, // service root plugins: [tsconfigPaths(), nodeExternals()],