diff --git a/ee/apps/federation-service/package.json b/ee/apps/federation-service/package.json index de94f694d90fb..411b00d1784a8 100644 --- a/ee/apps/federation-service/package.json +++ b/ee/apps/federation-service/package.json @@ -1,47 +1,47 @@ { - "name": "@rocket.chat/federation-service", - "private": true, - "version": "0.1.0", - "description": "Rocket.Chat Federation service", - "main": "./dist/index.js", - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/index.js" - } - }, - "scripts": { - "build": "tsc -p tsconfig.json", - "ms": "TRANSPORTER=${TRANSPORTER:-TCP} MONGO_URL=${MONGO_URL:-mongodb://localhost:3001/meteor} bun --watch run src/service.ts", - "start": "bun run src/service.ts", - "dev": "bun --watch run src/service.ts", - "test": "echo \"Error: no test specified\" && exit 1", - "lint": "eslint src", - "typecheck": "tsc --noEmit --skipLibCheck -p tsconfig.json" - }, - "dependencies": { - "@hono/node-server": "^1.14.4", - "@rocket.chat/core-services": "workspace:^", - "@rocket.chat/core-typings": "workspace:*", - "@rocket.chat/emitter": "^0.31.25", - "@rocket.chat/federation-matrix": "workspace:^", - "@rocket.chat/homeserver": "workspace:*", - "@rocket.chat/http-router": "workspace:*", - "@rocket.chat/models": "workspace:*", - "hono": "^3.11.0", - "pino": "^8.16.0", - "polka": "^0.5.2", - "reflect-metadata": "^0.2.2", - "tsyringe": "^4.10.0", - "zod": "^3.22.0" - }, - "devDependencies": { - "@types/bun": "latest", - "@types/express": "^4.17.17", - "typescript": "^5.3.0" - }, - "keywords": [ - "rocketchat" - ], - "author": "Rocket.Chat" + "name": "@rocket.chat/federation-service", + "private": true, + "version": "0.1.0", + "description": "Rocket.Chat Federation service", + "main": "./dist/index.js", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/index.js" + } + }, + "scripts": { + "build": "tsc -p tsconfig.json", + "ms": "TRANSPORTER=${TRANSPORTER:-TCP} MONGO_URL=${MONGO_URL:-mongodb://localhost:3001/meteor} bun --watch run src/service.ts", + "start": "bun run src/service.ts", + "dev": "bun --watch run src/service.ts", + "test": "echo \"Error: no test specified\" && exit 1", + "lint": "eslint src", + "typecheck": "tsc --noEmit --skipLibCheck -p tsconfig.json" + }, + "dependencies": { + "@hono/node-server": "^1.14.4", + "@hs/federation-sdk": "workspace:*", + "@rocket.chat/core-services": "workspace:^", + "@rocket.chat/core-typings": "workspace:*", + "@rocket.chat/emitter": "^0.31.25", + "@rocket.chat/federation-matrix": "workspace:^", + "@rocket.chat/http-router": "workspace:*", + "@rocket.chat/models": "workspace:*", + "hono": "^3.11.0", + "pino": "^8.16.0", + "polka": "^0.5.2", + "reflect-metadata": "^0.2.2", + "tsyringe": "^4.10.0", + "zod": "^3.22.0" + }, + "devDependencies": { + "@types/bun": "latest", + "@types/express": "^4.17.17", + "typescript": "^5.3.0" + }, + "keywords": [ + "rocketchat" + ], + "author": "Rocket.Chat" } diff --git a/ee/apps/federation-service/src/service.ts b/ee/apps/federation-service/src/service.ts index a5016d431e812..da1125e303065 100644 --- a/ee/apps/federation-service/src/service.ts +++ b/ee/apps/federation-service/src/service.ts @@ -1,41 +1,36 @@ import 'reflect-metadata'; import { serve } from '@hono/node-server'; import { api, getConnection, getTrashCollection } from '@rocket.chat/core-services'; -import type { RouteDefinition, RouteContext } from '@rocket.chat/homeserver'; +// import type { RouteDefinition, RouteContext } from '@hs/federation-sdk'; import { registerServiceModels } from '@rocket.chat/models'; import { startBroker } from '@rocket.chat/network-broker'; import { Hono } from 'hono'; import { config } from './config'; -export function handleFederationRoutesRegistration(app: Hono, homeserverRoutes: RouteDefinition[]): Hono { - console.info(`Registering ${homeserverRoutes.length} homeserver routes`); - - for (const route of homeserverRoutes) { - const method = route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete'; - - app[method](route.path, async (c) => { - try { - const context = { - req: c.req, - res: c.res, - params: c.req.param(), - query: c.req.query(), - body: await c.req.json().catch(() => ({})), - }; - - const result = await route.handler(context as unknown as RouteContext); - - return c.json(result); - } catch (error) { - console.error(`Error handling route ${method.toUpperCase()} ${route.path}:`, error); - return c.json({ error: 'Internal server error' }, 500); - } - }); - } - - return app; -} +// export function handleFederationRoutesRegistration(app: Hono, homeserverRoutes: RouteDefinition[]): Hono { +// // console.info(`Registering ${homeserverRoutes.length} homeserver routes`); +// // for (const route of homeserverRoutes) { +// // const method = route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete'; +// // app[method](route.path, async (c) => { +// // try { +// // const context = { +// // req: c.req, +// // res: c.res, +// // params: c.req.param(), +// // query: c.req.query(), +// // body: await c.req.json().catch(() => ({})), +// // }; +// // const result = await route.handler(context as unknown as RouteContext); +// // return c.json(result); +// // } catch (error) { +// // console.error(`Error handling route ${method.toUpperCase()} ${route.path}:`, error); +// // return c.json({ error: 'Internal server error' }, 500); +// // } +// // }); +// // } +// // return app; +// } function handleHealthCheck(app: Hono) { app.get('/health', async (c) => { @@ -61,7 +56,7 @@ function handleHealthCheck(app: Hono) { api.registerService(federationMatrix); const app = new Hono(); - handleFederationRoutesRegistration(app, federationMatrix.getAllRoutes()); + // handleFederationRoutesRegistration(app, federationMatrix.getAllRoutes()); handleHealthCheck(app); serve({ diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index e9069b1fc0331..85118b08dcebb 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -34,10 +34,10 @@ "extends": "../../../package.json" }, "dependencies": { + "@hs/federation-sdk": "workspace:^", "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "^0.31.25", - "@rocket.chat/homeserver": "workspace:^", "@rocket.chat/models": "workspace:^", "@rocket.chat/network-broker": "workspace:^", "mongodb": "6.10.0", diff --git a/ee/packages/federation-matrix/src/FederationMatrix.ts b/ee/packages/federation-matrix/src/FederationMatrix.ts index ee5c42498d1e9..cf6559c42cbf6 100644 --- a/ee/packages/federation-matrix/src/FederationMatrix.ts +++ b/ee/packages/federation-matrix/src/FederationMatrix.ts @@ -1,12 +1,13 @@ import { type IFederationMatrixService, ServiceClass, Settings } from '@rocket.chat/core-services'; import type { IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; import { Emitter } from '@rocket.chat/emitter'; -import type { HomeserverEventSignatures, HomeserverServices } from '@rocket.chat/homeserver'; -import { setupHomeserver, getAllRoutes, getAllServices } from '@rocket.chat/homeserver'; +import type { HomeserverEventSignatures, HomeserverServices } from '@hs/federation-sdk'; +import { getAllServices } from '@hs/federation-sdk'; import { Logger } from '@rocket.chat/logger'; import { MatrixBridgedUser, MatrixBridgedRoom, Users } from '@rocket.chat/models'; import { registerEvents } from './events'; +import { setup } from './setupContainers'; export class FederationMatrix extends ServiceClass implements IFederationMatrixService { protected name = 'federation-matrix'; @@ -26,7 +27,7 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS async created(): Promise { try { - setupHomeserver({ emitter: this.eventHandler }); + setup(this.eventHandler); registerEvents(this.eventHandler); } catch (error) { this.logger.warn('Homeserver module not available, running in limited mode'); @@ -51,7 +52,7 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS } getAllRoutes() { - return getAllRoutes(); + return []; } async createRoom(room: IRoom, owner: IUser, members: string[]): Promise { diff --git a/ee/packages/federation-matrix/src/events/index.ts b/ee/packages/federation-matrix/src/events/index.ts index 1e972f53bed60..c0c2747f3baf5 100644 --- a/ee/packages/federation-matrix/src/events/index.ts +++ b/ee/packages/federation-matrix/src/events/index.ts @@ -1,5 +1,5 @@ +import type { HomeserverEventSignatures } from '@hs/federation-sdk'; import type { Emitter } from '@rocket.chat/emitter'; -import type { HomeserverEventSignatures } from '@rocket.chat/homeserver'; import { invite } from './invite'; import { message } from './message'; diff --git a/ee/packages/federation-matrix/src/events/invite.ts b/ee/packages/federation-matrix/src/events/invite.ts index b2b9bc1a0c0fa..38281bc60d1c5 100644 --- a/ee/packages/federation-matrix/src/events/invite.ts +++ b/ee/packages/federation-matrix/src/events/invite.ts @@ -2,7 +2,7 @@ import { Room } from '@rocket.chat/core-services'; import { UserStatus } from '@rocket.chat/core-typings'; import type { Emitter } from '@rocket.chat/emitter'; -import type { HomeserverEventSignatures } from '@rocket.chat/homeserver'; +import type { HomeserverEventSignatures } from '@hs/federation-sdk'; import { MatrixBridgedRoom, MatrixBridgedUser, Users } from '@rocket.chat/models'; export function invite(emitter: Emitter) { diff --git a/ee/packages/federation-matrix/src/events/message.ts b/ee/packages/federation-matrix/src/events/message.ts index 6fed94b3a802a..cc1fdba0eebf3 100644 --- a/ee/packages/federation-matrix/src/events/message.ts +++ b/ee/packages/federation-matrix/src/events/message.ts @@ -1,10 +1,10 @@ -import type { Emitter } from '@rocket.chat/emitter'; -import type { HomeserverEventSignatures } from '@rocket.chat/homeserver'; +import type { HomeserverEventSignatures } from '@hs/federation-sdk'; import { Message } from '@rocket.chat/core-services'; import { UserStatus } from '@rocket.chat/core-typings'; import type { IUser } from '@rocket.chat/core-typings'; -import { Users, MatrixBridgedUser, MatrixBridgedRoom, Rooms, Subscriptions } from '@rocket.chat/models'; +import type { Emitter } from '@rocket.chat/emitter'; import { Logger } from '@rocket.chat/logger'; +import { Users, MatrixBridgedUser, MatrixBridgedRoom, Rooms, Subscriptions } from '@rocket.chat/models'; const logger = new Logger('federation-matrix:message'); @@ -17,7 +17,7 @@ export function message(emitter: Emitter) { sender: data.sender, }); - const message = data.event.content?.body?.toString(); + const message = data.content?.body?.toString(); if (!message) { logger.debug('No message found in event content'); return; diff --git a/ee/packages/federation-matrix/src/events/ping.ts b/ee/packages/federation-matrix/src/events/ping.ts index c50ea5698ff03..d2d116374cb8a 100644 --- a/ee/packages/federation-matrix/src/events/ping.ts +++ b/ee/packages/federation-matrix/src/events/ping.ts @@ -1,5 +1,5 @@ import type { Emitter } from '@rocket.chat/emitter'; -import type { HomeserverEventSignatures } from '@rocket.chat/homeserver'; +import type { HomeserverEventSignatures } from '@hs/federation-sdk'; export const ping = async (emitter: Emitter) => { emitter.on('homeserver.ping', async (data) => { diff --git a/ee/packages/federation-matrix/src/setupContainers.ts b/ee/packages/federation-matrix/src/setupContainers.ts new file mode 100644 index 0000000000000..a943614b31fd6 --- /dev/null +++ b/ee/packages/federation-matrix/src/setupContainers.ts @@ -0,0 +1,110 @@ +import 'reflect-metadata'; + +import { toUnpaddedBase64 } from '@hs/core'; +import { + ConfigService, + EventRepository, + type FederationModuleOptions, + FederationRequestService, + FederationService, + type HomeserverEventSignatures, + KeyRepository, + RoomRepository, + ServerRepository, + StateEventRepository, + StateRepository, + MissingEventListener, + DatabaseConnectionService, + EventAuthorizationService, + EventFetcherService, + EventStateService, + EventService, + EventEmitterService, + InviteService, + MessageService, + MissingEventService, + NotificationService, + ProfilesService, + RoomService, + ServerService, + StateService, + StagingAreaService, + WellKnownService, + LockManagerService, + MissingEventsQueue, + StagingAreaListener, + StagingAreaQueue, +} from '@hs/federation-sdk'; +import { Emitter } from '@rocket.chat/emitter'; +import { container } from 'tsyringe'; + +export async function setup(emitter: Emitter = new Emitter()) { + const config = new ConfigService(); + const matrixConfig = config.getMatrixConfig(); + const serverConfig = config.getServerConfig(); + const signingKeys = await config.getSigningKey(); + const signingKey = signingKeys[0]; + + container.register('FEDERATION_OPTIONS', { + useValue: { + serverName: matrixConfig.serverName, + signingKey: toUnpaddedBase64(signingKey.privateKey), + signingKeyId: `ed25519:${signingKey.version}`, + timeout: 30000, + baseUrl: serverConfig.baseUrl, + }, + }); + + container.registerSingleton(FederationRequestService); + container.registerSingleton('ConfigService', ConfigService); + container.registerSingleton('DatabaseConnectionService', DatabaseConnectionService); + container.registerSingleton('StateRepository', StateRepository); + container.registerSingleton(StateService); + container.registerSingleton(EventAuthorizationService); + container.registerSingleton(EventFetcherService); + container.registerSingleton(EventStateService); + container.registerSingleton('EventService', EventService); + container.registerSingleton(EventEmitterService); + container.registerSingleton(InviteService); + container.registerSingleton(MessageService); + container.registerSingleton(MissingEventService); + container.registerSingleton(NotificationService); + container.registerSingleton(ProfilesService); + container.registerSingleton(RoomService); + container.registerSingleton('RoomService', RoomService); + container.registerSingleton(ServerService); + container.registerSingleton(StagingAreaService); + container.registerSingleton('StagingAreaService', StagingAreaService); + container.registerSingleton(WellKnownService); + container.registerSingleton('EventRepository', EventRepository); + container.registerSingleton('KeyRepository', KeyRepository); + container.registerSingleton('RoomRepository', RoomRepository); + container.registerSingleton('ServerRepository', ServerRepository); + container.registerSingleton('StateRepository', StateRepository); + container.registerSingleton('StateEventRepository', StateEventRepository); + container.registerSingleton('MissingEventsQueue', MissingEventsQueue); + container.registerSingleton('StagingAreaQueue', StagingAreaQueue); + container.registerSingleton(MissingEventListener); + container.registerSingleton(StagingAreaListener); + container.registerSingleton('FederationService', FederationService); + + container.register(LockManagerService, { + useFactory: () => new LockManagerService({ type: 'memory' }), + + // NATS configuration example: + // useFactory: () => new LockManagerService({ + // type: 'nats', + // servers: ['nats://localhost:4222'], + // timeout: 5000, + // reconnect: true, + // maxReconnectAttempts: 10 + // }) + }); + + const eventEmitterService = container.resolve(EventEmitterService); + + eventEmitterService.setEmitter(emitter); + + container.resolve(StagingAreaListener); + container.resolve(MissingEventListener); +} diff --git a/yarn.lock b/yarn.lock index 2b9a02a5e63c4..6eb7eaaf07a8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3150,6 +3150,22 @@ __metadata: languageName: node linkType: hard +"@datastructures-js/heap@npm:^4.3.3": + version: 4.3.3 + resolution: "@datastructures-js/heap@npm:4.3.3" + checksum: 10/ffcdbf2f36c354d14deee19e41e1dda61a578c17ef3bdca6777b9b1b1e63edaae9deca3d5288ba6f04dd2c82902118c67e6d6eb3a2ab833a8475466a6ffb7457 + languageName: node + linkType: hard + +"@datastructures-js/priority-queue@npm:^6.3.3": + version: 6.3.3 + resolution: "@datastructures-js/priority-queue@npm:6.3.3" + dependencies: + "@datastructures-js/heap": "npm:^4.3.3" + checksum: 10/b69dd330189d9700c6ae73b75b730e48c68413647c7715e3c521b9f050b2e096aee4ae646f380f164066112817391b78caf40e7c1db4d882a45f80e608829225 + languageName: node + linkType: hard + "@discoveryjs/json-ext@npm:^0.5.0": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" @@ -3806,15 +3822,25 @@ __metadata: elysia: "npm:latest" ts-node: "npm:^10.9.2" ts-patch: "npm:^3.1.2" - typescript: "npm:^5.4.2" + typescript: "npm:^5.8.3" typia: "npm:^5.5.7" languageName: unknown linkType: soft -"@hs/federation-sdk@workspace:homeserver/packages/federation-sdk": +"@hs/crypto@workspace:homeserver/packages/crypto": + version: 0.0.0-use.local + resolution: "@hs/crypto@workspace:homeserver/packages/crypto" + dependencies: + bun-types: "npm:latest" + languageName: unknown + linkType: soft + +"@hs/federation-sdk@workspace:*, @hs/federation-sdk@workspace:^, @hs/federation-sdk@workspace:homeserver/packages/federation-sdk": version: 0.0.0-use.local resolution: "@hs/federation-sdk@workspace:homeserver/packages/federation-sdk" dependencies: + "@hs/core": "workspace:*" + "@hs/room": "workspace:*" "@nestjs/common": "npm:^11.1.1" "@nestjs/core": "npm:^11.1.1" reflect-metadata: "npm:^0.2.2" @@ -3823,7 +3849,7 @@ __metadata: tweetnacl: "npm:^1.0.3" zod: "npm:^3.22.4" peerDependencies: - typescript: ^5.0.0 + typescript: ^5.8.3 languageName: unknown linkType: soft @@ -3832,6 +3858,7 @@ __metadata: resolution: "@hs/homeserver@workspace:homeserver/packages/homeserver" dependencies: "@hs/core": "workspace:*" + "@rocket.chat/emitter": "npm:^0.31.25" bun-types: "npm:latest" mongodb: "npm:^6.16.0" nats: "npm:^2.29.3" @@ -3839,6 +3866,16 @@ __metadata: languageName: unknown linkType: soft +"@hs/room@workspace:*, @hs/room@workspace:homeserver/packages/room": + version: 0.0.0-use.local + resolution: "@hs/room@workspace:homeserver/packages/room" + dependencies: + "@datastructures-js/priority-queue": "npm:^6.3.3" + "@hs/core": "workspace:*" + bun-types: "npm:latest" + languageName: unknown + linkType: soft + "@humanwhocodes/config-array@npm:^0.11.10": version: 0.11.10 resolution: "@humanwhocodes/config-array@npm:0.11.10" @@ -9082,12 +9119,12 @@ __metadata: "@babel/core": "npm:~7.26.0" "@babel/preset-env": "npm:~7.26.0" "@babel/preset-typescript": "npm:~7.26.0" + "@hs/federation-sdk": "workspace:^" "@rocket.chat/apps-engine": "workspace:^" "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": "npm:^0.31.25" "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/homeserver": "workspace:^" "@rocket.chat/models": "workspace:^" "@rocket.chat/network-broker": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" @@ -9106,11 +9143,11 @@ __metadata: resolution: "@rocket.chat/federation-service@workspace:ee/apps/federation-service" dependencies: "@hono/node-server": "npm:^1.14.4" + "@hs/federation-sdk": "workspace:*" "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:*" "@rocket.chat/emitter": "npm:^0.31.25" "@rocket.chat/federation-matrix": "workspace:^" - "@rocket.chat/homeserver": "workspace:*" "@rocket.chat/http-router": "workspace:*" "@rocket.chat/models": "workspace:*" "@types/bun": "npm:latest" @@ -9349,42 +9386,6 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/homeserver@workspace:*, @rocket.chat/homeserver@workspace:^, @rocket.chat/homeserver@workspace:homeserver": - version: 0.0.0-use.local - resolution: "@rocket.chat/homeserver@workspace:homeserver" - dependencies: - "@biomejs/biome": "npm:^1.9.4" - "@bogeychan/elysia-etag": "npm:^0.0.6" - "@bogeychan/elysia-logger": "npm:^0.1.4" - "@elysiajs/swagger": "npm:^1.3.0" - "@rocket.chat/emitter": "npm:^0.31.25" - "@types/bun": "npm:latest" - "@types/express": "npm:^5.0.1" - "@types/node": "npm:^22.15.18" - "@types/sinon": "npm:^17.0.4" - amqp-connection-manager: "npm:^4.1.14" - amqplib: "npm:^0.10.8" - bun-bagel: "npm:^1.1.0" - class-transformer: "npm:^0.5.1" - class-validator: "npm:^0.14.2" - dotenv: "npm:^16.5.0" - elysia: "npm:^1.1.26" - husky: "npm:^9.1.7" - node-jsonwebtoken: "npm:^0.0.1" - pino: "npm:^9.7.0" - pino-pretty: "npm:^13.0.0" - reflect-metadata: "npm:^0.2.2" - rxjs: "npm:^7.8.2" - sinon: "npm:^20.0.0" - tsconfig-paths: "npm:^4.2.0" - tsyringe: "npm:^4.10.0" - tweetnacl: "npm:^1.0.3" - typescript: "npm:^5.8.3" - zod: "npm:^3.24.3" - zod-to-json-schema: "npm:^3.24.5" - languageName: unknown - linkType: soft - "@rocket.chat/http-router@workspace:*, @rocket.chat/http-router@workspace:^, @rocket.chat/http-router@workspace:packages/http-router": version: 0.0.0-use.local resolution: "@rocket.chat/http-router@workspace:packages/http-router" @@ -16146,6 +16147,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^7.0.0": + version: 7.0.0 + resolution: "ansi-escapes@npm:7.0.0" + dependencies: + environment: "npm:^1.0.0" + checksum: 10/2d0e2345087bd7ae6bf122b9cc05ee35560d40dcc061146edcdc02bc2d7c7c50143cd12a22e69a0b5c0f62b948b7bc9a4539ee888b80f5bd33cdfd82d01a70ab + languageName: node + linkType: hard + "ansi-html-community@npm:0.0.8, ansi-html-community@npm:^0.0.8": version: 0.0.8 resolution: "ansi-html-community@npm:0.0.8" @@ -16215,7 +16225,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.1.0": +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: 10/70fdf883b704d17a5dfc9cde206e698c16bcd74e7f196ab821511651aee4f9f76c9514bdfa6ca3a27b5e49138b89cb222a28caf3afe4567570139577f991df32 @@ -18387,7 +18397,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.2.0": +"chalk@npm:^5.2.0, chalk@npm:^5.4.1": version: 5.4.1 resolution: "chalk@npm:5.4.1" checksum: 10/29df3ffcdf25656fed6e95962e2ef86d14dfe03cd50e7074b06bad9ffbbf6089adbb40f75c00744d843685c8d008adaf3aed31476780312553caf07fa86e5bc7 @@ -18717,6 +18727,15 @@ __metadata: languageName: node linkType: hard +"cli-cursor@npm:^5.0.0": + version: 5.0.0 + resolution: "cli-cursor@npm:5.0.0" + dependencies: + restore-cursor: "npm:^5.0.0" + checksum: 10/1eb9a3f878b31addfe8d82c6d915ec2330cec8447ab1f117f4aa34f0137fbb3137ec3466e1c9a65bcb7557f6e486d343f2da57f253a2f668d691372dfa15c090 + languageName: node + linkType: hard + "cli-spinners@npm:^2.5.0": version: 2.9.2 resolution: "cli-spinners@npm:2.9.2" @@ -18724,6 +18743,16 @@ __metadata: languageName: node linkType: hard +"cli-truncate@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-truncate@npm:4.0.0" + dependencies: + slice-ansi: "npm:^5.0.0" + string-width: "npm:^7.0.0" + checksum: 10/d5149175fd25ca985731bdeec46a55ec237475cf74c1a5e103baea696aceb45e372ac4acbaabf1316f06bd62e348123060f8191ffadfeedebd2a70a2a7fb199d + languageName: node + linkType: hard + "cli-width@npm:^3.0.0": version: 3.0.0 resolution: "cli-width@npm:3.0.0" @@ -18999,6 +19028,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^14.0.0": + version: 14.0.0 + resolution: "commander@npm:14.0.0" + checksum: 10/c05418bfc35a3e8b5c67bd9f75f5b773f386f9b85f83e70e7c926047f270929cb06cf13cd68f387dd6e7e23c6157de8171b28ba606abd3e6256028f1f789becf + languageName: node + linkType: hard + "commander@npm:^2.20.0, commander@npm:^2.8.1": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -20233,7 +20269,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.4.0": +"debug@npm:^4.4.0, debug@npm:^4.4.1": version: 4.4.1 resolution: "debug@npm:4.4.1" dependencies: @@ -21442,6 +21478,13 @@ __metadata: languageName: node linkType: hard +"environment@npm:^1.0.0": + version: 1.1.0 + resolution: "environment@npm:1.1.0" + checksum: 10/dd3c1b9825e7f71f1e72b03c2344799ac73f2e9ef81b78ea8b373e55db021786c6b9f3858ea43a436a2c4611052670ec0afe85bc029c384cc71165feee2f4ba6 + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -22845,13 +22888,6 @@ __metadata: languageName: node linkType: hard -"fast-copy@npm:^3.0.2": - version: 3.0.2 - resolution: "fast-copy@npm:3.0.2" - checksum: 10/97e1022e2aaa27acf4a986d679310bfd66bfb87fe8da9dd33b698e3e50189484001cf1eeb9670e19b59d9d299828ed86c8da354c954f125995ab2a6331c5f290 - languageName: node - linkType: hard - "fast-decode-uri-component@npm:^1.0.1": version: 1.0.1 resolution: "fast-decode-uri-component@npm:1.0.1" @@ -23918,6 +23954,13 @@ __metadata: languageName: node linkType: hard +"get-east-asian-width@npm:^1.0.0": + version: 1.3.0 + resolution: "get-east-asian-width@npm:1.3.0" + checksum: 10/8e8e779eb28701db7fdb1c8cab879e39e6ae23f52dadd89c8aed05869671cee611a65d4f8557b83e981428623247d8bc5d0c7a4ef3ea7a41d826e73600112ad8 + languageName: node + linkType: hard + "get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": version: 2.0.2 resolution: "get-func-name@npm:2.0.2" @@ -24681,13 +24724,6 @@ __metadata: languageName: node linkType: hard -"help-me@npm:^5.0.0": - version: 5.0.0 - resolution: "help-me@npm:5.0.0" - checksum: 10/5f99bd91dae93d02867175c3856c561d7e3a24f16999b08f5fc79689044b938d7ed58457f4d8c8744c01403e6e0470b7896baa344d112b2355842fd935a75d69 - languageName: node - linkType: hard - "hepburn@npm:^1.2.0": version: 1.2.0 resolution: "hepburn@npm:1.2.0" @@ -24763,6 +24799,41 @@ __metadata: languageName: node linkType: hard +"homeserver@workspace:homeserver": + version: 0.0.0-use.local + resolution: "homeserver@workspace:homeserver" + dependencies: + "@biomejs/biome": "npm:^1.9.4" + "@bogeychan/elysia-etag": "npm:^0.0.6" + "@bogeychan/elysia-logger": "npm:^0.1.4" + "@elysiajs/swagger": "npm:^1.3.0" + "@types/bun": "npm:latest" + "@types/express": "npm:^5.0.1" + "@types/node": "npm:^22.15.18" + "@types/sinon": "npm:^17.0.4" + amqp-connection-manager: "npm:^4.1.14" + amqplib: "npm:^0.10.8" + bun-bagel: "npm:^1.1.0" + class-transformer: "npm:^0.5.1" + class-validator: "npm:^0.14.2" + dotenv: "npm:^16.5.0" + elysia: "npm:^1.1.26" + husky: "npm:^9.1.7" + lint-staged: "npm:^16.1.2" + node-jsonwebtoken: "npm:^0.0.1" + pino: "npm:^9.7.0" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.8.2" + sinon: "npm:^20.0.0" + tsconfig-paths: "npm:^4.2.0" + tsyringe: "npm:^4.10.0" + turbo: "npm:^2.5.4" + tweetnacl: "npm:^1.0.3" + typescript: "npm:^5.8.3" + zod: "npm:^3.24.3" + languageName: unknown + linkType: soft + "hono@npm:^3.11.0": version: 3.12.12 resolution: "hono@npm:3.12.12" @@ -26092,6 +26163,22 @@ __metadata: languageName: node linkType: hard +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 10/8ae89bf5057bdf4f57b346fb6c55e9c3dd2549983d54191d722d5c739397a903012cc41a04ee3403fd872e811243ef91a7c5196da7b5841dc6b6aae31a264a8d + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^5.0.0": + version: 5.0.0 + resolution: "is-fullwidth-code-point@npm:5.0.0" + dependencies: + get-east-asian-width: "npm:^1.0.0" + checksum: 10/8dfb2d2831b9e87983c136f5c335cd9d14c1402973e357a8ff057904612ed84b8cba196319fabedf9aefe4639e14fe3afe9d9966d1d006ebeb40fe1fed4babe5 + languageName: node + linkType: hard + "is-generator-fn@npm:^2.0.0, is-generator-fn@npm:^2.1.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" @@ -28663,7 +28750,7 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^3.1.2": +"lilconfig@npm:^3.1.2, lilconfig@npm:^3.1.3": version: 3.1.3 resolution: "lilconfig@npm:3.1.3" checksum: 10/b932ce1af94985f0efbe8896e57b1f814a48c8dbd7fc0ef8469785c6303ed29d0090af3ccad7e36b626bfca3a4dc56cc262697e9a8dd867623cf09a39d54e4c3 @@ -28697,6 +28784,40 @@ __metadata: languageName: node linkType: hard +"lint-staged@npm:^16.1.2": + version: 16.1.2 + resolution: "lint-staged@npm:16.1.2" + dependencies: + chalk: "npm:^5.4.1" + commander: "npm:^14.0.0" + debug: "npm:^4.4.1" + lilconfig: "npm:^3.1.3" + listr2: "npm:^8.3.3" + micromatch: "npm:^4.0.8" + nano-spawn: "npm:^1.0.2" + pidtree: "npm:^0.6.0" + string-argv: "npm:^0.3.2" + yaml: "npm:^2.8.0" + bin: + lint-staged: bin/lint-staged.js + checksum: 10/90df77c2f59cdc5ebeb8a60767f07025a8aed9161f604fea6cf1ca895ff3b56995a00145a3e0b5c0bf22e8f667a6182256b68e001e5f3118e46a3c5150bede82 + languageName: node + linkType: hard + +"listr2@npm:^8.3.3": + version: 8.3.3 + resolution: "listr2@npm:8.3.3" + dependencies: + cli-truncate: "npm:^4.0.0" + colorette: "npm:^2.0.20" + eventemitter3: "npm:^5.0.1" + log-update: "npm:^6.1.0" + rfdc: "npm:^1.4.1" + wrap-ansi: "npm:^9.0.0" + checksum: 10/92f1bb60e9a0f4fed9bff89fbab49d80fc889d29cf47c0a612f5a62a036dead49d3f697d3a79e36984768529bd3bfacb3343859eafceba179a8e66c034d99300 + languageName: node + linkType: hard + "load-esm@npm:1.0.2": version: 1.0.2 resolution: "load-esm@npm:1.0.2" @@ -28944,6 +29065,19 @@ __metadata: languageName: node linkType: hard +"log-update@npm:^6.1.0": + version: 6.1.0 + resolution: "log-update@npm:6.1.0" + dependencies: + ansi-escapes: "npm:^7.0.0" + cli-cursor: "npm:^5.0.0" + slice-ansi: "npm:^7.1.0" + strip-ansi: "npm:^7.1.0" + wrap-ansi: "npm:^9.0.0" + checksum: 10/5abb4131e33b1e7f8416bb194fe17a3603d83e4657c5bf5bb81ce4187f3b00ea481643b85c3d5cefe6037a452cdcf7f1391ab8ea0d9c23e75d19589830ec4f11 + languageName: node + linkType: hard + "logform@npm:^2.3.2": version: 2.4.0 resolution: "logform@npm:2.4.0" @@ -29766,6 +29900,13 @@ __metadata: languageName: node linkType: hard +"mimic-function@npm:^5.0.0": + version: 5.0.1 + resolution: "mimic-function@npm:5.0.1" + checksum: 10/eb5893c99e902ccebbc267c6c6b83092966af84682957f79313311edb95e8bb5f39fb048d77132b700474d1c86d90ccc211e99bae0935447a4834eb4c882982c + languageName: node + linkType: hard + "mimic-response@npm:^1.0.0": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" @@ -30393,6 +30534,13 @@ __metadata: languageName: node linkType: hard +"nano-spawn@npm:^1.0.2": + version: 1.0.2 + resolution: "nano-spawn@npm:1.0.2" + checksum: 10/6ce9e60846d2e37c0e3cd048472683c81dbcaadef9ebe73bfc8754ee7da2a574f724436d3dcdeda5d807aedc857cc8cbc278a9882529164b5ef4b170b95cfe0b + languageName: node + linkType: hard + "nanoid@npm:3.3.1": version: 3.3.1 resolution: "nanoid@npm:3.3.1" @@ -31256,6 +31404,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^7.0.0": + version: 7.0.0 + resolution: "onetime@npm:7.0.0" + dependencies: + mimic-function: "npm:^5.0.0" + checksum: 10/eb08d2da9339819e2f9d52cab9caf2557d80e9af8c7d1ae86e1a0fef027d00a88e9f5bd67494d350df360f7c559fbb44e800b32f310fb989c860214eacbb561c + languageName: node + linkType: hard + "open@npm:^10.0.3": version: 10.1.0 resolution: "open@npm:10.1.0" @@ -32214,6 +32371,15 @@ __metadata: languageName: node linkType: hard +"pidtree@npm:^0.6.0": + version: 0.6.0 + resolution: "pidtree@npm:0.6.0" + bin: + pidtree: bin/pidtree.js + checksum: 10/ea67fb3159e170fd069020e0108ba7712df9f0fd13c8db9b2286762856ddce414fb33932e08df4bfe36e91fe860b51852aee49a6f56eb4714b69634343add5df + languageName: node + linkType: hard + "pify@npm:^2.0.0, pify@npm:^2.2.0, pify@npm:^2.3.0": version: 2.3.0 resolution: "pify@npm:2.3.0" @@ -32271,38 +32437,6 @@ __metadata: languageName: node linkType: hard -"pino-abstract-transport@npm:^2.0.0": - version: 2.0.0 - resolution: "pino-abstract-transport@npm:2.0.0" - dependencies: - split2: "npm:^4.0.0" - checksum: 10/e5699ecb06c7121055978e988e5cecea5b6892fc2589c64f1f86df5e7386bbbfd2ada268839e911b021c6b3123428aed7c6be3ac7940eee139556c75324c7e83 - languageName: node - linkType: hard - -"pino-pretty@npm:^13.0.0": - version: 13.0.0 - resolution: "pino-pretty@npm:13.0.0" - dependencies: - colorette: "npm:^2.0.7" - dateformat: "npm:^4.6.3" - fast-copy: "npm:^3.0.2" - fast-safe-stringify: "npm:^2.1.1" - help-me: "npm:^5.0.0" - joycon: "npm:^3.1.1" - minimist: "npm:^1.2.6" - on-exit-leak-free: "npm:^2.1.0" - pino-abstract-transport: "npm:^2.0.0" - pump: "npm:^3.0.0" - secure-json-parse: "npm:^2.4.0" - sonic-boom: "npm:^4.0.1" - strip-json-comments: "npm:^3.1.1" - bin: - pino-pretty: bin.js - checksum: 10/9861fdbe88db000e3b0fe959f0fb7b5913e8d16af70373155d48854c5d509629e7e1ba09ed3fac24a9bd2729451567a698938b9741d84de63eb549843450e71c - languageName: node - linkType: hard - "pino-pretty@npm:^7.6.1": version: 7.6.1 resolution: "pino-pretty@npm:7.6.1" @@ -35145,6 +35279,16 @@ __metadata: languageName: node linkType: hard +"restore-cursor@npm:^5.0.0": + version: 5.1.0 + resolution: "restore-cursor@npm:5.1.0" + dependencies: + onetime: "npm:^7.0.0" + signal-exit: "npm:^4.1.0" + checksum: 10/838dd54e458d89cfbc1a923b343c1b0f170a04100b4ce1733e97531842d7b440463967e521216e8ab6c6f8e89df877acc7b7f4c18ec76e99fb9bf5a60d358d2c + languageName: node + linkType: hard + "restructure@npm:^3.0.0": version: 3.0.0 resolution: "restructure@npm:3.0.0" @@ -35198,6 +35342,13 @@ __metadata: languageName: node linkType: hard +"rfdc@npm:^1.4.1": + version: 1.4.1 + resolution: "rfdc@npm:1.4.1" + checksum: 10/2f3d11d3d8929b4bfeefc9acb03aae90f971401de0add5ae6c5e38fec14f0405e6a4aad8fdb76344bfdd20c5193110e3750cbbd28ba86d73729d222b6cf4a729 + languageName: node + linkType: hard + "rimraf@npm:^2.5.4": version: 2.7.1 resolution: "rimraf@npm:2.7.1" @@ -36176,7 +36327,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 10/c9fa63bbbd7431066174a48ba2dd9986dfd930c3a8b59de9c29d7b6854ec1c12a80d15310869ea5166d413b99f041bfa3dd80a7947bcd44ea8e6eb3ffeabfa1f @@ -36290,6 +36441,26 @@ __metadata: languageName: node linkType: hard +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: "npm:^6.0.0" + is-fullwidth-code-point: "npm:^4.0.0" + checksum: 10/7e600a2a55e333a21ef5214b987c8358fe28bfb03c2867ff2cbf919d62143d1812ac27b4297a077fdaf27a03da3678e49551c93e35f9498a3d90221908a1180e + languageName: node + linkType: hard + +"slice-ansi@npm:^7.1.0": + version: 7.1.0 + resolution: "slice-ansi@npm:7.1.0" + dependencies: + ansi-styles: "npm:^6.2.1" + is-fullwidth-code-point: "npm:^5.0.0" + checksum: 10/10313dd3cf7a2e4b265f527b1684c7c568210b09743fd1bd74f2194715ed13ffba653dc93a5fa79e3b1711518b8990a732cb7143aa01ddafe626e99dfa6474b2 + languageName: node + linkType: hard + "slick@npm:^1.12.2": version: 1.12.2 resolution: "slick@npm:1.12.2" @@ -36388,15 +36559,6 @@ __metadata: languageName: node linkType: hard -"sonic-boom@npm:^4.0.1": - version: 4.2.0 - resolution: "sonic-boom@npm:4.2.0" - dependencies: - atomic-sleep: "npm:^1.0.0" - checksum: 10/385ef7fb5ea5976c1d2a1fef0b6df8df6b7caba8696d2d67f689d60c05e3ea2d536752ce7e1c69b9fad844635f1036d07c446f8e8149f5c6a80e0040a455b310 - languageName: node - linkType: hard - "sort-keys-length@npm:^1.0.0": version: 1.0.1 resolution: "sort-keys-length@npm:1.0.1" @@ -36963,6 +37125,13 @@ __metadata: languageName: node linkType: hard +"string-argv@npm:^0.3.2": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af + languageName: node + linkType: hard + "string-length@npm:^4.0.1, string-length@npm:^4.0.2": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -37019,6 +37188,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^7.0.0": + version: 7.2.0 + resolution: "string-width@npm:7.2.0" + dependencies: + emoji-regex: "npm:^10.3.0" + get-east-asian-width: "npm:^1.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10/42f9e82f61314904a81393f6ef75b832c39f39761797250de68c041d8ba4df2ef80db49ab6cd3a292923a6f0f409b8c9980d120f7d32c820b4a8a84a2598a295 + languageName: node + linkType: hard + "string.prototype.includes@npm:^2.0.1": version: 2.0.1 resolution: "string.prototype.includes@npm:2.0.1" @@ -37175,7 +37355,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1": +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" dependencies: @@ -38676,6 +38856,13 @@ __metadata: languageName: node linkType: hard +"turbo-darwin-64@npm:2.5.4": + version: 2.5.4 + resolution: "turbo-darwin-64@npm:2.5.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "turbo-darwin-arm64@npm:2.5.3": version: 2.5.3 resolution: "turbo-darwin-arm64@npm:2.5.3" @@ -38683,6 +38870,13 @@ __metadata: languageName: node linkType: hard +"turbo-darwin-arm64@npm:2.5.4": + version: 2.5.4 + resolution: "turbo-darwin-arm64@npm:2.5.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "turbo-linux-64@npm:2.5.3": version: 2.5.3 resolution: "turbo-linux-64@npm:2.5.3" @@ -38690,6 +38884,13 @@ __metadata: languageName: node linkType: hard +"turbo-linux-64@npm:2.5.4": + version: 2.5.4 + resolution: "turbo-linux-64@npm:2.5.4" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "turbo-linux-arm64@npm:2.5.3": version: 2.5.3 resolution: "turbo-linux-arm64@npm:2.5.3" @@ -38697,6 +38898,13 @@ __metadata: languageName: node linkType: hard +"turbo-linux-arm64@npm:2.5.4": + version: 2.5.4 + resolution: "turbo-linux-arm64@npm:2.5.4" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "turbo-windows-64@npm:2.5.3": version: 2.5.3 resolution: "turbo-windows-64@npm:2.5.3" @@ -38704,6 +38912,13 @@ __metadata: languageName: node linkType: hard +"turbo-windows-64@npm:2.5.4": + version: 2.5.4 + resolution: "turbo-windows-64@npm:2.5.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "turbo-windows-arm64@npm:2.5.3": version: 2.5.3 resolution: "turbo-windows-arm64@npm:2.5.3" @@ -38711,6 +38926,13 @@ __metadata: languageName: node linkType: hard +"turbo-windows-arm64@npm:2.5.4": + version: 2.5.4 + resolution: "turbo-windows-arm64@npm:2.5.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "turbo@npm:^2.5.3": version: 2.5.3 resolution: "turbo@npm:2.5.3" @@ -38740,6 +38962,35 @@ __metadata: languageName: node linkType: hard +"turbo@npm:^2.5.4": + version: 2.5.4 + resolution: "turbo@npm:2.5.4" + dependencies: + turbo-darwin-64: "npm:2.5.4" + turbo-darwin-arm64: "npm:2.5.4" + turbo-linux-64: "npm:2.5.4" + turbo-linux-arm64: "npm:2.5.4" + turbo-windows-64: "npm:2.5.4" + turbo-windows-arm64: "npm:2.5.4" + dependenciesMeta: + turbo-darwin-64: + optional: true + turbo-darwin-arm64: + optional: true + turbo-linux-64: + optional: true + turbo-linux-arm64: + optional: true + turbo-windows-64: + optional: true + turbo-windows-arm64: + optional: true + bin: + turbo: bin/turbo + checksum: 10/43dd952192a1261de3845ecac96d4f42ea6d8e49eaa4c339c029dbe010a1323957ef4b0080f8f06e3cd0169c1f00c356d32cbabde1ee08c72b0708f90994a774 + languageName: node + linkType: hard + "tweetnacl@npm:1.0.3, tweetnacl@npm:^1.0.3": version: 1.0.3 resolution: "tweetnacl@npm:1.0.3" @@ -38999,7 +39250,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.3.0, typescript@npm:^5.4.2, typescript@npm:^5.8.3, typescript@npm:~5.8.3": +"typescript@npm:^5.3.0, typescript@npm:^5.8.3, typescript@npm:~5.8.3": version: 5.8.3 resolution: "typescript@npm:5.8.3" bin: @@ -39009,7 +39260,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.3.0#optional!builtin, typescript@patch:typescript@npm%3A^5.4.2#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin, typescript@patch:typescript@npm%3A~5.8.3#optional!builtin": +"typescript@patch:typescript@npm%3A^5.3.0#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin, typescript@patch:typescript@npm%3A~5.8.3#optional!builtin": version: 5.8.3 resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" bin: @@ -40655,6 +40906,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^9.0.0": + version: 9.0.0 + resolution: "wrap-ansi@npm:9.0.0" + dependencies: + ansi-styles: "npm:^6.2.1" + string-width: "npm:^7.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10/b9d91564c091cf3978a7c18ca0f3e4d4606e83549dbe59cf76f5e77feefdd5ec91443155e8102630524d10a8c275efac8a7082c0f26fa43e6b989dc150d176ce + languageName: node + linkType: hard + "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" @@ -40898,6 +41160,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.8.0": + version: 2.8.0 + resolution: "yaml@npm:2.8.0" + bin: + yaml: bin.mjs + checksum: 10/7d4bd9c10d0e467601f496193f2ac254140f8e36f96f5ff7f852b9ce37974168eb7354f4c36dc8837dde527a2043d004b6aff48818ec24a69ab2dd3c6b6c381c + languageName: node + linkType: hard + "yaqrcode@npm:^0.2.1": version: 0.2.1 resolution: "yaqrcode@npm:0.2.1" @@ -41060,15 +41331,6 @@ __metadata: languageName: node linkType: hard -"zod-to-json-schema@npm:^3.24.5": - version: 3.24.5 - resolution: "zod-to-json-schema@npm:3.24.5" - peerDependencies: - zod: ^3.24.1 - checksum: 10/1af291b4c429945c9568c2e924bdb7c66ab8d139cbeb9a99b6e9fc9e1b02863f85d07759b9303714f07ceda3993dcaf0ebcb80d2c18bb2aaf5502b2c1016affd - languageName: node - linkType: hard - "zod@npm:^3.22.0, zod@npm:^3.22.4, zod@npm:^3.23.8, zod@npm:^3.24.3": version: 3.25.67 resolution: "zod@npm:3.25.67"