From e40bc71e9fc716f5d96fba7b7d48eb55963a8716 Mon Sep 17 00:00:00 2001 From: Maurice Date: Sat, 10 Oct 2026 12:19:38 +0200 Subject: [PATCH] refactor(plugins): the plugin RPC kit moves out of the plugins domain into src/nest-rpc Every domain's *.rpc.ts was written against rpc-kit, rpc-params, rpc-errors and PluginGuards, and every domain module imported PluginGuardsModule, all of it inside src/nest/plugins, while PluginsRuntimeModule imports those same domains so their handlers exist at boot. That made the plugins domain part of every cycle. The kit imports no domain but the protocol tables and permissions/addons for the guards, so it moves to src/nest-rpc beside src/nest-mcp, with its tests, its README and its extraction rule; the runtime module keeps its domain imports, which the boot-time coverage check of the wire surface needs in any subset app. --- server/docs/nest-migration-history.md | 4 +- server/eslint.config.mjs | 54 +++++-------------- .../scripts/import-boundaries-baseline.json | 23 +------- server/scripts/import-boundaries.mjs | 8 ++- .../host => nest-rpc}/plugin-guards.module.ts | 8 +-- .../plugin-guards.service.ts | 12 ++--- .../plugins/host => nest-rpc}/rpc-errors.ts | 0 .../host => nest-rpc}/rpc-kit/README.md | 11 ++-- .../host => nest-rpc}/rpc-kit/decorators.ts | 2 +- .../host => nest-rpc}/rpc-kit/metadata.ts | 0 .../rpc-kit/registry.service.ts | 0 .../host => nest-rpc}/rpc-kit/registry.ts | 2 +- .../host => nest-rpc}/rpc-kit/testing.ts | 0 .../host => nest-rpc}/rpc-kit/types.ts | 4 +- .../plugins/host => nest-rpc}/rpc-params.ts | 0 server/src/nest/README.md | 2 +- .../accommodations/accommodations.module.ts | 2 +- .../nest/accommodations/accommodations.rpc.ts | 10 ++-- .../nest/assignments/assignments.module.ts | 2 +- server/src/nest/assignments/itinerary.rpc.ts | 10 ++-- server/src/nest/atlas/atlas.module.ts | 2 +- server/src/nest/atlas/atlas.rpc.ts | 10 ++-- server/src/nest/budget/budget.module.ts | 2 +- server/src/nest/budget/costs.rpc.ts | 10 ++-- server/src/nest/budget/exchange-rates.rpc.ts | 4 +- server/src/nest/categories/categories.rpc.ts | 2 +- server/src/nest/collab/collab.module.ts | 2 +- server/src/nest/collab/collab.rpc.ts | 10 ++-- .../nest/collections/collections.module.ts | 2 +- .../src/nest/collections/collections.rpc.ts | 10 ++-- server/src/nest/day-notes/day-notes.module.ts | 2 +- server/src/nest/day-notes/day-notes.rpc.ts | 10 ++-- server/src/nest/days/days.module.ts | 2 +- server/src/nest/days/days.rpc.ts | 10 ++-- server/src/nest/files/files.module.ts | 2 +- server/src/nest/files/files.rpc.ts | 10 ++-- server/src/nest/journey/journal-rpc.module.ts | 2 +- server/src/nest/journey/journal.rpc.ts | 10 ++-- .../src/nest/journey/journey-domain.module.ts | 2 +- server/src/nest/packing/packing.module.ts | 2 +- server/src/nest/packing/packing.rpc.ts | 10 ++-- server/src/nest/places/places.module.ts | 2 +- server/src/nest/places/places.rpc.ts | 10 ++-- .../plugins/host/plugin-rpc-host.factory.ts | 4 +- server/src/nest/plugins/host/rpc-host.ts | 4 +- server/src/nest/plugins/host/rpc/db.rpc.ts | 6 +-- .../nest/plugins/host/rpc/host-surface.rpc.ts | 10 ++-- server/src/nest/plugins/host/rpc/meta.rpc.ts | 10 ++-- .../src/nest/plugins/plugin-hooks.service.ts | 2 +- .../nest/plugins/plugins-runtime.module.ts | 4 +- .../nest/reservations/reservations.module.ts | 2 +- .../src/nest/reservations/reservations.rpc.ts | 10 ++-- server/src/nest/tags/tags.rpc.ts | 8 +-- server/src/nest/todo/todo.module.ts | 2 +- server/src/nest/todo/todo.rpc.ts | 10 ++-- server/src/nest/trips/trips.module.ts | 2 +- server/src/nest/trips/trips.rpc.ts | 10 ++-- server/src/nest/vacay/vacay.module.ts | 2 +- server/src/nest/vacay/vacay.rpc.ts | 8 +-- server/src/nest/weather/weather.rpc.ts | 4 +- server/tests/helpers/plugin-host.ts | 6 +-- .../plugins/boot-registry-order.test.ts | 4 +- .../integration/plugins/supervisor.test.ts | 2 +- server/tests/unit/budget/costs.rpc.test.ts | 4 +- server/tests/unit/days/day-notes.rpc.test.ts | 4 +- .../unit/days/days-itinerary.rpc.test.ts | 4 +- server/tests/unit/files/files.rpc.test.ts | 4 +- .../plugin-guards.test.ts | 6 +-- .../rpc-kit/decorators.test.ts | 4 +- .../rpc-kit/metadata.test.ts | 4 +- .../rpc-kit/registry.service.test.ts | 4 +- .../rpc-kit/registry.test.ts | 8 +-- server/tests/unit/packing/packing.rpc.test.ts | 4 +- server/tests/unit/places/places.rpc.test.ts | 4 +- .../plugins/addon-domains-errors.rpc.test.ts | 4 +- .../unit/plugins/addon-gates.rpc.test.ts | 4 +- server/tests/unit/plugins/host-rpc.test.ts | 6 +-- .../plugins/output-contract.schema.test.ts | 4 +- .../unit/plugins/output-contract.test.ts | 6 +-- .../tests/unit/plugins/plugin-hooks.test.ts | 2 +- .../unit/plugins/request-context.test.ts | 2 +- .../tests/unit/plugins/rpc-coverage.test.ts | 4 +- .../tests/unit/plugins/rpc-fallbacks.test.ts | 6 +-- .../unit/plugins/rpc-host-inv-strip.test.ts | 4 +- server/tests/unit/plugins/rpc-host.test.ts | 6 +-- .../unit/plugins/tenant-free.rpc.test.ts | 2 +- .../unit/reservations/bookings.rpc.test.ts | 4 +- .../unit/scripts/import-boundaries.test.ts | 4 +- server/tests/unit/tags/tags.rpc.test.ts | 6 +-- server/tests/unit/todo/todo.rpc.test.ts | 4 +- server/tests/unit/trips/trips.rpc.test.ts | 4 +- server/vitest.config.ts | 3 ++ 92 files changed, 237 insertions(+), 280 deletions(-) rename server/src/{nest/plugins/host => nest-rpc}/plugin-guards.module.ts (83%) rename server/src/{nest/plugins/host => nest-rpc}/plugin-guards.service.ts (93%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-errors.ts (100%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-kit/README.md (88%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-kit/decorators.ts (98%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-kit/metadata.ts (100%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-kit/registry.service.ts (100%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-kit/registry.ts (99%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-kit/testing.ts (100%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-kit/types.ts (96%) rename server/src/{nest/plugins/host => nest-rpc}/rpc-params.ts (100%) rename server/tests/unit/{plugins => nest-rpc}/plugin-guards.test.ts (98%) rename server/tests/unit/{plugins => nest-rpc}/rpc-kit/decorators.test.ts (97%) rename server/tests/unit/{plugins => nest-rpc}/rpc-kit/metadata.test.ts (95%) rename server/tests/unit/{plugins => nest-rpc}/rpc-kit/registry.service.test.ts (96%) rename server/tests/unit/{plugins => nest-rpc}/rpc-kit/registry.test.ts (97%) diff --git a/server/docs/nest-migration-history.md b/server/docs/nest-migration-history.md index 8ecb54863..65e40fec0 100644 --- a/server/docs/nest-migration-history.md +++ b/server/docs/nest-migration-history.md @@ -64,7 +64,9 @@ remains as the platform underneath `@nestjs/platform-express`. dispatches, audits and maps errors. `PluginHostDepsFactory` — the 26-argument wiring sheet named throughout the log below — is now `PluginRpcHostFactory` and injects two things. See - `plugins/host/rpc-kit/README.md`. + `src/nest-rpc/rpc-kit/README.md` (the kit, `rpc-params`, `rpc-errors` and + `PluginGuards` moved to `src/nest-rpc/`, a kernel layer beside `src/nest-mcp/`, + so a domain's `*.rpc.ts` no longer depends on the plugins domain). - **Plugin module split (complete):** `PluginsModule` was 21 controllers, 24 domain imports and 10 providers in one class, so `AdminModule` importing it for one cascade-disable call inherited the whole graph. It is now `PluginsRuntimeModule` diff --git a/server/eslint.config.mjs b/server/eslint.config.mjs index 588b79f10..7c986e4b8 100644 --- a/server/eslint.config.mjs +++ b/server/eslint.config.mjs @@ -425,55 +425,27 @@ export default tseslint.config( }, { // The plugin RPC decorator kit is written to stay extractable into its own - // package, so its dependencies are pinned to Nest plus the two host modules it - // genuinely needs. See src/nest/plugins/host/rpc-kit/README.md for what an + // package, so its dependencies are pinned to Nest plus the two plugin-domain + // files it genuinely needs. See src/nest-rpc/rpc-kit/README.md for what an // extraction would cost, and why the envelope import is the deliberate exception. - files: ['src/nest/plugins/host/rpc-kit/**/*.ts'], + files: ['src/nest-rpc/rpc-kit/**/*.ts'], rules: { - // Written as a deny list rather than an allow list on purpose: these patterns - // are gitignore-style, and a leading '**' would exclude the parent directory of - // every allowed path, which makes the '!' re-includes silently ineffective. 'no-restricted-imports': [ 'error', { patterns: [ { - group: [ - // The host modules next door. - '../rpc-host', - '../rpc-errors', - '../rpc-params', - '../rate-limit', - '../daily-budget', - '../plugin-audit', - '../plugin-jobs', - '../plugin-guards.service', - '../plugin-host-*', - // Everything one level up, in plugins/ itself. - '../../*.service', - '../../*.module', - '../../*.controller', - '../../dependencies', - '../../dev-link', - '../../kill-switch', - '../../paths', - '../../plugin-backup', - '../../signature-status', - '../../text-sanitize', - '../../install/**', - '../../registry/**', - '../../runtime/**', - '../../supervisor/**', - // The wire protocol, except the one file the kit validates against. - '../../protocol/*', - '!../../protocol/envelope', - // Anything outside the plugin subtree, and the rest of the app. - '../../../**', - '@trek/**', - 'node:*', - ], + // A regex rather than gitignore-style groups: the two allowed files sit + // under directories the rest of the rule excludes, and a gitignore + // re-include cannot reach into an excluded directory. + regex: String.raw`^\.\./(?!\.\./nest/plugins/protocol/envelope$|\.\./nest/plugins/host/plugin-data\.service$)`, message: - 'rpc-kit stays extractable: it may import @nestjs/common, @nestjs/core, its own files, and type-only from ../../protocol/envelope and ../plugin-data.service. See rpc-kit/README.md.', + 'rpc-kit stays extractable: it may import @nestjs/common, @nestjs/core, its own files, and type-only from nest/plugins/protocol/envelope and nest/plugins/host/plugin-data.service. See rpc-kit/README.md.', + }, + { + group: ['@trek/**', 'node:*'], + message: + 'rpc-kit stays extractable: it may import @nestjs/common, @nestjs/core, its own files, and type-only from nest/plugins/protocol/envelope and nest/plugins/host/plugin-data.service. See rpc-kit/README.md.', }, ], }, diff --git a/server/scripts/import-boundaries-baseline.json b/server/scripts/import-boundaries-baseline.json index bee833248..c3a2a5ee0 100644 --- a/server/scripts/import-boundaries-baseline.json +++ b/server/scripts/import-boundaries-baseline.json @@ -4,7 +4,6 @@ "accommodations -> assignments", "accommodations -> mcp-shared", "accommodations -> places", - "accommodations -> plugins", "accommodations -> realtime", "addons -> memories", "addons -> settings", @@ -23,11 +22,9 @@ "assignments -> days", "assignments -> journey", "assignments -> mcp-shared", - "assignments -> plugins", "assignments -> realtime", "atlas -> addons", "atlas -> geo", - "atlas -> plugins", "auth -> budget", "auth -> files", "auth -> maps", @@ -43,34 +40,27 @@ "booking-import -> reservations", "budget -> addons", "budget -> mcp-shared", - "budget -> plugins", "budget -> realtime", "calendar -> days", "calendar -> reservations", "categories -> mcp-shared", - "categories -> plugins", "collab -> addons", "collab -> files", "collab -> mcp-shared", "collab -> notifications", - "collab -> plugins", "collab -> realtime", "collections -> addons", "collections -> notifications", "collections -> places", - "collections -> plugins", "collections -> realtime", "day-notes -> mcp-shared", - "day-notes -> plugins", "day-notes -> realtime", "days -> accommodations", "days -> assignments", "days -> mcp-shared", "days -> places", - "days -> plugins", "days -> realtime", "files -> mcp-shared", - "files -> plugins", "files -> realtime", "geo -> maps", "integrations -> addons", @@ -87,7 +77,6 @@ "journey -> maps", "journey -> memories", "journey -> photos", - "journey -> plugins", "journey -> realtime", "journey -> settings", "llm-parse -> addons", @@ -106,7 +95,6 @@ "packing -> admin", "packing -> mcp-shared", "packing -> notifications", - "packing -> plugins", "packing -> realtime", "photos -> memories", "places -> accommodations", @@ -115,7 +103,6 @@ "places -> journey", "places -> maps", "places -> mcp-shared", - "places -> plugins", "places -> realtime", "places -> unsplash", "plugins -> accommodations", @@ -137,11 +124,9 @@ "plugins -> places", "plugins -> realtime", "plugins -> reservations", - "plugins -> tags", "plugins -> todo", "plugins -> trips", "plugins -> vacay", - "plugins -> weather", "realtime -> journey", "realtime -> plugins", "reservations -> accommodations", @@ -151,13 +136,10 @@ "reservations -> integrations", "reservations -> mcp-shared", "reservations -> notifications", - "reservations -> plugins", "reservations -> realtime", "settings -> admin", - "tags -> plugins", "todo -> addons", "todo -> mcp-shared", - "todo -> plugins", "todo -> realtime", "transit -> days", "transit -> maps", @@ -190,7 +172,6 @@ "trips -> mcp-shared", "trips -> packing", "trips -> places", - "trips -> plugins", "trips -> realtime", "trips -> reservations", "trips -> settings", @@ -203,9 +184,7 @@ "vacay -> addons", "vacay -> auth", "vacay -> notifications", - "vacay -> plugins", - "vacay -> realtime", - "weather -> plugins" + "vacay -> realtime" ], "sharedImportsDomain": [ "nest/common/idempotency-cleanup.job.ts -> nest/audit/audit-log.logger.ts", diff --git a/server/scripts/import-boundaries.mjs b/server/scripts/import-boundaries.mjs index b82379369..cff7c6eb8 100644 --- a/server/scripts/import-boundaries.mjs +++ b/server/scripts/import-boundaries.mjs @@ -80,14 +80,12 @@ export const PUBLIC_SUFFIXES = [ /** * Entry points that are public although their name does not say so: the - * plugin RPC kit every domain's *.rpc.ts is written against, and the gates - * and helpers every controller shares. Adding to this list is a design + * gates and helpers every controller shares. (The plugin RPC kit every + * domain's *.rpc.ts is written against sits outside src/nest, in + * src/nest-rpc, next to src/nest-mcp.) Adding to this list is a design * decision for review, not a way past the check. */ export const PUBLIC_FILES = [ - 'plugins/host/rpc-kit/', - 'plugins/host/rpc-params.ts', - 'plugins/host/rpc-errors.ts', 'audit/client-ip.ts', 'addons/addon-gate.ts', 'addons/mcp-addon-gate.ts', diff --git a/server/src/nest/plugins/host/plugin-guards.module.ts b/server/src/nest-rpc/plugin-guards.module.ts similarity index 83% rename from server/src/nest/plugins/host/plugin-guards.module.ts rename to server/src/nest-rpc/plugin-guards.module.ts index 450cb6a19..5e169cf35 100644 --- a/server/src/nest/plugins/host/plugin-guards.module.ts +++ b/server/src/nest-rpc/plugin-guards.module.ts @@ -1,9 +1,9 @@ import { Module } from '@nestjs/common'; import { MikroOrmModule } from '@mikro-orm/nestjs'; -import { PermissionsModule } from '../../permissions/permissions.module'; -import { AddonsModule } from '../../addons/addons.module'; -import { Users } from '../../../db/entities/Users.entity'; -import { Trips } from '../../../db/entities/Trips.entity'; +import { PermissionsModule } from '../nest/permissions/permissions.module'; +import { AddonsModule } from '../nest/addons/addons.module'; +import { Users } from '../db/entities/Users.entity'; +import { Trips } from '../db/entities/Trips.entity'; import { PluginGuards } from './plugin-guards.service'; /** diff --git a/server/src/nest/plugins/host/plugin-guards.service.ts b/server/src/nest-rpc/plugin-guards.service.ts similarity index 93% rename from server/src/nest/plugins/host/plugin-guards.service.ts rename to server/src/nest-rpc/plugin-guards.service.ts index edb095646..9e491253d 100644 --- a/server/src/nest/plugins/host/plugin-guards.service.ts +++ b/server/src/nest-rpc/plugin-guards.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@mikro-orm/nestjs'; -import { PermissionsService } from '../../permissions/permissions.service'; -import { AddonsService } from '../../addons/addons.service'; -import { Users } from '../../../db/entities/Users.entity'; -import type { UsersRepository } from '../../../db/repositories/Users.repository'; -import { Trips } from '../../../db/entities/Trips.entity'; -import type { TripsRepository } from '../../../db/repositories/Trips.repository'; +import { PermissionsService } from '../nest/permissions/permissions.service'; +import { AddonsService } from '../nest/addons/addons.service'; +import { Users } from '../db/entities/Users.entity'; +import type { UsersRepository } from '../db/repositories/Users.repository'; +import { Trips } from '../db/entities/Trips.entity'; +import type { TripsRepository } from '../db/repositories/Trips.repository'; import { BadParams, ForbiddenResource } from './rpc-errors'; import { num } from './rpc-params'; import type { PluginRpcContext } from './rpc-kit/types'; diff --git a/server/src/nest/plugins/host/rpc-errors.ts b/server/src/nest-rpc/rpc-errors.ts similarity index 100% rename from server/src/nest/plugins/host/rpc-errors.ts rename to server/src/nest-rpc/rpc-errors.ts diff --git a/server/src/nest/plugins/host/rpc-kit/README.md b/server/src/nest-rpc/rpc-kit/README.md similarity index 88% rename from server/src/nest/plugins/host/rpc-kit/README.md rename to server/src/nest-rpc/rpc-kit/README.md index ebc3f2cbb..4351e366a 100644 --- a/server/src/nest/plugins/host/rpc-kit/README.md +++ b/server/src/nest-rpc/rpc-kit/README.md @@ -2,14 +2,16 @@ Conceptually this is `trek-plugin-host`: `@PluginController`, `@PluginMethod`, `@PluginOpenMethod` and `@PluginHook`, plus the registry that binds them into the -per-plugin dispatch map. It lives inside `server/` rather than in its own workspace, +per-plugin dispatch map. It lives in `server/src/nest-rpc/`, beside `src/nest-mcp/` and +outside every domain, so a domain's `*.rpc.ts` does not depend on the plugins +domain. It is not its own workspace, and this file records why, and what extracting it later would cost. ## What the decorators buy The method-to-permission association used to exist twice: declaratively in -`METHOD_PERMISSION` (`../../protocol/envelope.ts`) and imperatively as the -`if (has('...'))` blocks in `../rpc-host.ts`, with nothing asserting they agree. +`METHOD_PERMISSION` (`src/nest/plugins/protocol/envelope.ts`) and imperatively as the +`if (has('...'))` blocks in `src/nest/plugins/host/rpc-host.ts`, with nothing asserting they agree. `protocol-paths.test.ts` checked that each method had *some* permission, never that it was *the same* permission the router gates on, and `plugin-audit.ts`'s `isAuditable` silently inherits any drift. @@ -29,7 +31,8 @@ A `@PluginMethod` declaration is checked against that table twice: The kit may import: - `@nestjs/common` and `@nestjs/core`, -- **type-only** from `../../protocol/envelope` and `../plugin-data.service`. +- **type-only** from `../../nest/plugins/protocol/envelope` and + `../../nest/plugins/host/plugin-data.service`. Nothing else. It must not reach into `rpc-host.ts`, the deps factory, the supervisor, or any domain service. `registry.ts` is the single exception that imports envelope diff --git a/server/src/nest/plugins/host/rpc-kit/decorators.ts b/server/src/nest-rpc/rpc-kit/decorators.ts similarity index 98% rename from server/src/nest/plugins/host/rpc-kit/decorators.ts rename to server/src/nest-rpc/rpc-kit/decorators.ts index d18fde004..d822a1e9f 100644 --- a/server/src/nest/plugins/host/rpc-kit/decorators.ts +++ b/server/src/nest-rpc/rpc-kit/decorators.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { addEntry, markController, type ClassRef } from './metadata'; -import type { HookKey, KnownMethod, MethodPermission, UnconditionalMethod } from '../../protocol/envelope'; +import type { HookKey, KnownMethod, MethodPermission, UnconditionalMethod } from '../../nest/plugins/protocol/envelope'; import type { PluginHookOptions, PluginRpcEntry } from './types'; /** diff --git a/server/src/nest/plugins/host/rpc-kit/metadata.ts b/server/src/nest-rpc/rpc-kit/metadata.ts similarity index 100% rename from server/src/nest/plugins/host/rpc-kit/metadata.ts rename to server/src/nest-rpc/rpc-kit/metadata.ts diff --git a/server/src/nest/plugins/host/rpc-kit/registry.service.ts b/server/src/nest-rpc/rpc-kit/registry.service.ts similarity index 100% rename from server/src/nest/plugins/host/rpc-kit/registry.service.ts rename to server/src/nest-rpc/rpc-kit/registry.service.ts diff --git a/server/src/nest/plugins/host/rpc-kit/registry.ts b/server/src/nest-rpc/rpc-kit/registry.ts similarity index 99% rename from server/src/nest/plugins/host/rpc-kit/registry.ts rename to server/src/nest-rpc/rpc-kit/registry.ts index f52c54034..0cf6bc15c 100644 --- a/server/src/nest/plugins/host/rpc-kit/registry.ts +++ b/server/src/nest-rpc/rpc-kit/registry.ts @@ -4,7 +4,7 @@ import { METHOD_PERMISSION, UNCONDITIONAL_METHODS, isKnownPermission, -} from '../../protocol/envelope'; +} from '../../nest/plugins/protocol/envelope'; import { getEntry, isPluginController, type ClassRef } from './metadata'; import type { PluginHookContract, diff --git a/server/src/nest/plugins/host/rpc-kit/testing.ts b/server/src/nest-rpc/rpc-kit/testing.ts similarity index 100% rename from server/src/nest/plugins/host/rpc-kit/testing.ts rename to server/src/nest-rpc/rpc-kit/testing.ts diff --git a/server/src/nest/plugins/host/rpc-kit/types.ts b/server/src/nest-rpc/rpc-kit/types.ts similarity index 96% rename from server/src/nest/plugins/host/rpc-kit/types.ts rename to server/src/nest-rpc/rpc-kit/types.ts index faa36095c..f4fea371e 100644 --- a/server/src/nest/plugins/host/rpc-kit/types.ts +++ b/server/src/nest-rpc/rpc-kit/types.ts @@ -1,5 +1,5 @@ -import type { HookKey, HookPermission, KnownMethod, UnconditionalMethod } from '../../protocol/envelope'; -import type { PluginDataDb } from '../plugin-data.service'; +import type { HookKey, HookPermission, KnownMethod, UnconditionalMethod } from '../../nest/plugins/protocol/envelope'; +import type { PluginDataDb } from '../../nest/plugins/host/plugin-data.service'; /** * Everything a plugin RPC handler may see. Built PER DISPATCH, never cached. diff --git a/server/src/nest/plugins/host/rpc-params.ts b/server/src/nest-rpc/rpc-params.ts similarity index 100% rename from server/src/nest/plugins/host/rpc-params.ts rename to server/src/nest-rpc/rpc-params.ts diff --git a/server/src/nest/README.md b/server/src/nest/README.md index bdfe2b105..728f5d42a 100644 --- a/server/src/nest/README.md +++ b/server/src/nest/README.md @@ -16,7 +16,7 @@ server/src/nest//.service.ts # business logic, an injectable server/src/nest//.controller.ts # REST routes, thin: validate, call the service, shape the reply server/src/nest//.module.ts # registered in app.module.ts server/src/nest//.mcp.ts # MCP tools/resources/prompts (@Tool, @Resource, @Prompt) -server/src/nest//.rpc.ts # plugin RPC methods (@PluginMethod), see plugins/host/rpc-kit/README.md +server/src/nest//.rpc.ts # plugin RPC methods (@PluginMethod), see src/nest-rpc/rpc-kit/README.md server/src/nest//.job.ts # a cron, registered on scheduling/CronRegistrarService server/src/nest//.helpers.ts # pure functions the service and its tests share ``` diff --git a/server/src/nest/accommodations/accommodations.module.ts b/server/src/nest/accommodations/accommodations.module.ts index 5a90620de..cc6445ff9 100644 --- a/server/src/nest/accommodations/accommodations.module.ts +++ b/server/src/nest/accommodations/accommodations.module.ts @@ -6,7 +6,7 @@ import { PlacesModule } from '../places/places.module'; import { AccommodationsDomainModule } from './accommodations-domain.module'; import { PermissionsModule } from '../permissions/permissions.module'; import { RealtimeModule } from '../realtime/realtime.module'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { McpSharedModule } from '../mcp-shared/mcp-shared.module'; /** diff --git a/server/src/nest/accommodations/accommodations.rpc.ts b/server/src/nest/accommodations/accommodations.rpc.ts index 53051e408..942982fcf 100644 --- a/server/src/nest/accommodations/accommodations.rpc.ts +++ b/server/src/nest/accommodations/accommodations.rpc.ts @@ -1,9 +1,9 @@ import { accommodationCreateRequestSchema, accommodationUpdateRequestSchema } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { AccommodationsService } from './accommodations.service'; diff --git a/server/src/nest/assignments/assignments.module.ts b/server/src/nest/assignments/assignments.module.ts index 6ec74fb8e..1acba3de3 100644 --- a/server/src/nest/assignments/assignments.module.ts +++ b/server/src/nest/assignments/assignments.module.ts @@ -4,7 +4,7 @@ import { DaysModule } from '../days/days.module'; import { DayAssignmentsController, AssignmentOpsController } from './assignments.controller'; import { AssignmentsDomainModule } from './assignments-domain.module'; import { ItineraryRpc } from './itinerary.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { AssignmentsMcp } from './assignments.mcp'; import { McpSharedModule } from '../mcp-shared/mcp-shared.module'; diff --git a/server/src/nest/assignments/itinerary.rpc.ts b/server/src/nest/assignments/itinerary.rpc.ts index eecd0bbd6..6751e14f0 100644 --- a/server/src/nest/assignments/itinerary.rpc.ts +++ b/server/src/nest/assignments/itinerary.rpc.ts @@ -1,8 +1,8 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, str } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, str } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { AssignmentsService } from './assignments.service'; diff --git a/server/src/nest/atlas/atlas.module.ts b/server/src/nest/atlas/atlas.module.ts index 440d6242a..056f720b4 100644 --- a/server/src/nest/atlas/atlas.module.ts +++ b/server/src/nest/atlas/atlas.module.ts @@ -4,7 +4,7 @@ import { AtlasController } from './atlas.controller'; import { TravelStatsController } from './travel-stats.controller'; import { AtlasService } from './atlas.service'; import { AtlasRpc } from './atlas.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { AtlasMcp } from './atlas.mcp'; import { AddonsModule } from '../addons/addons.module'; import { PublicStatsController } from './public-stats.controller'; diff --git a/server/src/nest/atlas/atlas.rpc.ts b/server/src/nest/atlas/atlas.rpc.ts index 8ad304970..10c5f724f 100644 --- a/server/src/nest/atlas/atlas.rpc.ts +++ b/server/src/nest/atlas/atlas.rpc.ts @@ -1,8 +1,8 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { asPayload, num } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { asPayload, num } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { ADDON_IDS } from '../../addons'; import { AtlasService, BucketItemExistsError } from './atlas.service'; diff --git a/server/src/nest/budget/budget.module.ts b/server/src/nest/budget/budget.module.ts index ae4d3b2a7..3e598f888 100644 --- a/server/src/nest/budget/budget.module.ts +++ b/server/src/nest/budget/budget.module.ts @@ -15,7 +15,7 @@ import { BudgetMcp } from './budget.mcp'; import { ExchangeRatesService } from './exchange-rates.service'; import { ExchangeRatesRpc } from './exchange-rates.rpc'; import { CostsRpc } from './costs.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { PermissionsModule } from '../permissions/permissions.module'; import { AppConfigModule } from '../app-config/app-config.module'; diff --git a/server/src/nest/budget/costs.rpc.ts b/server/src/nest/budget/costs.rpc.ts index 034878d0c..f00d307ea 100644 --- a/server/src/nest/budget/costs.rpc.ts +++ b/server/src/nest/budget/costs.rpc.ts @@ -1,9 +1,9 @@ import { budgetCreateItemRequestSchema, budgetUpdateItemRequestSchema } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { InjectRepository } from '@mikro-orm/nestjs'; import { RealtimeService } from '../realtime/realtime.service'; import { Trips } from '../../db/entities/Trips.entity'; diff --git a/server/src/nest/budget/exchange-rates.rpc.ts b/server/src/nest/budget/exchange-rates.rpc.ts index 64d25a771..4904d01d7 100644 --- a/server/src/nest/budget/exchange-rates.rpc.ts +++ b/server/src/nest/budget/exchange-rates.rpc.ts @@ -1,5 +1,5 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { str } from '../plugins/host/rpc-params'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { str } from '../../nest-rpc/rpc-params'; import { ExchangeRatesService } from './exchange-rates.service'; /** diff --git a/server/src/nest/categories/categories.rpc.ts b/server/src/nest/categories/categories.rpc.ts index 67a5c7a81..00c0d5fdf 100644 --- a/server/src/nest/categories/categories.rpc.ts +++ b/server/src/nest/categories/categories.rpc.ts @@ -1,4 +1,4 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; import { CategoriesService } from './categories.service'; /** diff --git a/server/src/nest/collab/collab.module.ts b/server/src/nest/collab/collab.module.ts index fbae5b54c..385d515bb 100644 --- a/server/src/nest/collab/collab.module.ts +++ b/server/src/nest/collab/collab.module.ts @@ -4,7 +4,7 @@ import { MulterModule } from '@nestjs/platform-express'; import { CollabController, collabNoteFileFilter, MAX_NOTE_FILE_SIZE } from './collab.controller'; import { CollabService } from './collab.service'; import { CollabRpc } from './collab.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { CollabMcp } from './collab.mcp'; import { PermissionsModule } from '../permissions/permissions.module'; diff --git a/server/src/nest/collab/collab.rpc.ts b/server/src/nest/collab/collab.rpc.ts index 75eef0262..ca1e9cf83 100644 --- a/server/src/nest/collab/collab.rpc.ts +++ b/server/src/nest/collab/collab.rpc.ts @@ -1,8 +1,8 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams } from '../plugins/host/rpc-errors'; -import { asPayload, num } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams } from '../../nest-rpc/rpc-errors'; +import { asPayload, num } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { ADDON_IDS } from '../../addons'; import { CollabService } from './collab.service'; diff --git a/server/src/nest/collections/collections.module.ts b/server/src/nest/collections/collections.module.ts index 85dc450ac..49b17e140 100644 --- a/server/src/nest/collections/collections.module.ts +++ b/server/src/nest/collections/collections.module.ts @@ -15,7 +15,7 @@ import { Tags } from '../../db/entities/Tags.entity'; import { CollectionsController } from './collections.controller'; import { CollectionsService } from './collections.service'; import { CollectionsRpc } from './collections.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { AppConfigModule } from '../app-config/app-config.module'; import { CollectionsMcp } from './collections.mcp'; import { AddonsModule } from '../addons/addons.module'; diff --git a/server/src/nest/collections/collections.rpc.ts b/server/src/nest/collections/collections.rpc.ts index 2c25bc50a..fded1a8f8 100644 --- a/server/src/nest/collections/collections.rpc.ts +++ b/server/src/nest/collections/collections.rpc.ts @@ -4,11 +4,11 @@ import { collectionSavePlaceRequestSchema, collectionUpdateRequestSchema, } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { ADDON_IDS } from '../../addons'; import { CollectionsService } from './collections.service'; diff --git a/server/src/nest/day-notes/day-notes.module.ts b/server/src/nest/day-notes/day-notes.module.ts index 92b8b7222..57bc46d0e 100644 --- a/server/src/nest/day-notes/day-notes.module.ts +++ b/server/src/nest/day-notes/day-notes.module.ts @@ -6,7 +6,7 @@ import { DayNotesMcp } from './day-notes.mcp'; import { DayNotesRpc } from './day-notes.rpc'; import { PermissionsModule } from '../permissions/permissions.module'; import { RealtimeModule } from '../realtime/realtime.module'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { McpSharedModule } from '../mcp-shared/mcp-shared.module'; import { DayNotes } from '../../db/entities/DayNotes.entity'; import { Days } from '../../db/entities/Days.entity'; diff --git a/server/src/nest/day-notes/day-notes.rpc.ts b/server/src/nest/day-notes/day-notes.rpc.ts index 71cbd08d3..11eef12df 100644 --- a/server/src/nest/day-notes/day-notes.rpc.ts +++ b/server/src/nest/day-notes/day-notes.rpc.ts @@ -1,8 +1,8 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { asPayload, num } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { asPayload, num } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { DayNotesService } from './day-notes.service'; diff --git a/server/src/nest/days/days.module.ts b/server/src/nest/days/days.module.ts index 608f24cd9..dad927b3b 100644 --- a/server/src/nest/days/days.module.ts +++ b/server/src/nest/days/days.module.ts @@ -7,7 +7,7 @@ import { DaysRpc } from './days.rpc'; import { DayRemovalService } from './day-removal.service'; import { AccommodationsDomainModule } from '../accommodations/accommodations-domain.module'; import { AssignmentsDomainModule } from '../assignments/assignments-domain.module'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { PermissionsModule } from '../permissions/permissions.module'; import { QueryHelpersModule } from '../query-helpers/query-helpers.module'; diff --git a/server/src/nest/days/days.rpc.ts b/server/src/nest/days/days.rpc.ts index bc14f6924..16d794296 100644 --- a/server/src/nest/days/days.rpc.ts +++ b/server/src/nest/days/days.rpc.ts @@ -1,9 +1,9 @@ import { dayCreateRequestSchema, dayUpdateRequestSchema } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { DaysService, DayAppendError, type DatedDayAppend, type DaySender } from './days.service'; import { DayRemovalService, DayDeleteError, type DayRemoval } from './day-removal.service'; diff --git a/server/src/nest/files/files.module.ts b/server/src/nest/files/files.module.ts index c720c75b9..c7de94759 100644 --- a/server/src/nest/files/files.module.ts +++ b/server/src/nest/files/files.module.ts @@ -6,7 +6,7 @@ import { FilesService } from './files.service'; import { FilesRpc } from './files.rpc'; import { FilesMcp } from './files.mcp'; import { McpSharedModule } from '../mcp-shared/mcp-shared.module'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { PermissionsModule } from '../permissions/permissions.module'; import { AppConfigModule } from '../app-config/app-config.module'; diff --git a/server/src/nest/files/files.rpc.ts b/server/src/nest/files/files.rpc.ts index a9d06252a..12378620e 100644 --- a/server/src/nest/files/files.rpc.ts +++ b/server/src/nest/files/files.rpc.ts @@ -2,11 +2,11 @@ import pathMod from 'node:path'; import { randomUUID } from 'node:crypto'; import { Readable } from 'node:stream'; import { InjectRepository } from '@mikro-orm/nestjs'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { asPayload, num } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { asPayload, num } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { Users } from '../../db/entities/Users.entity'; import type { UsersRepository } from '../../db/repositories/Users.repository'; diff --git a/server/src/nest/journey/journal-rpc.module.ts b/server/src/nest/journey/journal-rpc.module.ts index 1cca7cd7e..d5fa496c8 100644 --- a/server/src/nest/journey/journal-rpc.module.ts +++ b/server/src/nest/journey/journal-rpc.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { AllowedFileTypesModule } from '../files/allowed-file-types.module'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { StorageModule } from '../storage/storage.module'; import { DemoModule } from '../common/demo.module'; import { JourneyDomainModule } from './journey-domain.module'; diff --git a/server/src/nest/journey/journal.rpc.ts b/server/src/nest/journey/journal.rpc.ts index a28b7267c..e96bd3129 100644 --- a/server/src/nest/journey/journal.rpc.ts +++ b/server/src/nest/journey/journal.rpc.ts @@ -2,11 +2,11 @@ import pathMod from 'node:path'; import { randomUUID } from 'node:crypto'; import { Readable } from 'node:stream'; import { journalPluginPhotoInputSchema } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { asPayload, num } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { asPayload, num } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { ADDON_IDS } from '../../addons'; import { AllowedFileTypesService } from '../files/allowed-file-types.service'; import { StorageService } from '../storage/storage.service'; diff --git a/server/src/nest/journey/journey-domain.module.ts b/server/src/nest/journey/journey-domain.module.ts index 102537d85..ca3af72e3 100644 --- a/server/src/nest/journey/journey-domain.module.ts +++ b/server/src/nest/journey/journey-domain.module.ts @@ -3,7 +3,7 @@ import { MikroOrmModule } from '@mikro-orm/nestjs'; import { RealtimeModule } from '../realtime/realtime.module'; import { TrekPhotosModule } from '../photos/trek-photos.module'; import { JourneyDomainService } from './journey-domain.service'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { JourneyShareService } from './journey-share.service'; import { SettingsModule } from '../settings/settings.module'; import { Journeys } from '../../db/entities/Journeys.entity'; diff --git a/server/src/nest/packing/packing.module.ts b/server/src/nest/packing/packing.module.ts index 12dbf1f51..9865ef639 100644 --- a/server/src/nest/packing/packing.module.ts +++ b/server/src/nest/packing/packing.module.ts @@ -5,7 +5,7 @@ import { AdminPackingTemplatesController } from './admin-packing-templates.contr import { PackingMcp } from './packing.mcp'; import { PackingService } from './packing.service'; import { PackingRpc } from './packing.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { PermissionsModule } from '../permissions/permissions.module'; import { AuditModule } from '../audit/audit.module'; diff --git a/server/src/nest/packing/packing.rpc.ts b/server/src/nest/packing/packing.rpc.ts index 49c1bbaa9..b4843c8de 100644 --- a/server/src/nest/packing/packing.rpc.ts +++ b/server/src/nest/packing/packing.rpc.ts @@ -1,9 +1,9 @@ import { packingCreateItemRequestSchema, packingUpdateItemRequestSchema } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { asPayload, num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { asPayload, num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { PackingService, isInvalidBagRef } from './packing.service'; import { isUpdateConflict } from '../common/conflictResult'; diff --git a/server/src/nest/places/places.module.ts b/server/src/nest/places/places.module.ts index 8202ac52b..4d498f6d3 100644 --- a/server/src/nest/places/places.module.ts +++ b/server/src/nest/places/places.module.ts @@ -13,7 +13,7 @@ import { JourneyDomainModule } from '../journey/journey-domain.module'; import { PlacesController } from './places.controller'; import { PlacesService } from './places.service'; import { PlacesRpc } from './places.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { PlacesMcp } from './places.mcp'; import { PermissionsModule } from '../permissions/permissions.module'; diff --git a/server/src/nest/places/places.rpc.ts b/server/src/nest/places/places.rpc.ts index 7624c50ab..ae9794de7 100644 --- a/server/src/nest/places/places.rpc.ts +++ b/server/src/nest/places/places.rpc.ts @@ -1,9 +1,9 @@ import { placeCreateRequestSchema, placeImageUrlSchema, placeUpdateRequestSchema, placeWebsiteSchema } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { JourneyDomainService } from '../journey/journey-domain.service'; import { PlacesService } from './places.service'; diff --git a/server/src/nest/plugins/host/plugin-rpc-host.factory.ts b/server/src/nest/plugins/host/plugin-rpc-host.factory.ts index 1f718f21b..6e4a71898 100644 --- a/server/src/nest/plugins/host/plugin-rpc-host.factory.ts +++ b/server/src/nest/plugins/host/plugin-rpc-host.factory.ts @@ -3,8 +3,8 @@ import { InjectRepository } from '@mikro-orm/nestjs'; import { PluginCapabilityAudit } from '../../../db/entities/PluginCapabilityAudit.entity'; import type { PluginCapabilityAuditRepository } from '../../../db/repositories/PluginCapabilityAudit.repository'; import { PluginRpcHost } from './rpc-host'; -import type { PluginRpcRegistry } from './rpc-kit/registry'; -import { PluginRpcRegistryService } from './rpc-kit/registry.service'; +import type { PluginRpcRegistry } from '../../../nest-rpc/rpc-kit/registry'; +import { PluginRpcRegistryService } from '../../../nest-rpc/rpc-kit/registry.service'; import { appendAudit } from './plugin-audit'; import { getPluginDataDb } from './plugin-host-state'; diff --git a/server/src/nest/plugins/host/rpc-host.ts b/server/src/nest/plugins/host/rpc-host.ts index 9fb55a21b..2598b2ef2 100644 --- a/server/src/nest/plugins/host/rpc-host.ts +++ b/server/src/nest/plugins/host/rpc-host.ts @@ -8,9 +8,9 @@ import { } from '../protocol/envelope'; import type { PluginDataDb } from './plugin-data.service'; import { auditResource, isAuditable } from './plugin-audit'; -import { BadParams, ForbiddenResource } from './rpc-errors'; +import { BadParams, ForbiddenResource } from '../../../nest-rpc/rpc-errors'; import { shapePluginOutput } from '../protocol/output-contract'; -import type { PluginRpcRegistry } from './rpc-kit/registry'; +import type { PluginRpcRegistry } from '../../../nest-rpc/rpc-kit/registry'; // Both used to be declared here. They now live in rpc-errors.ts so decorated // *.rpc.ts handlers can throw them without importing the router, and are re-exported diff --git a/server/src/nest/plugins/host/rpc/db.rpc.ts b/server/src/nest/plugins/host/rpc/db.rpc.ts index ffc3d7a3a..f8aab6b08 100644 --- a/server/src/nest/plugins/host/rpc/db.rpc.ts +++ b/server/src/nest/plugins/host/rpc/db.rpc.ts @@ -1,6 +1,6 @@ -import { PluginController, PluginMethod, PluginOpenMethod } from '../rpc-kit/decorators'; -import { asArgs, asTxOps, str } from '../rpc-params'; -import type { PluginRpcContext } from '../rpc-kit/types'; +import { PluginController, PluginMethod, PluginOpenMethod } from '../../../../nest-rpc/rpc-kit/decorators'; +import { asArgs, asTxOps, str } from '../../../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../../../nest-rpc/rpc-kit/types'; import { PluginUserSettingsService } from '../../plugin-user-settings.service'; /** diff --git a/server/src/nest/plugins/host/rpc/host-surface.rpc.ts b/server/src/nest/plugins/host/rpc/host-surface.rpc.ts index b8f530038..b6e2274fb 100644 --- a/server/src/nest/plugins/host/rpc/host-surface.rpc.ts +++ b/server/src/nest/plugins/host/rpc/host-surface.rpc.ts @@ -1,8 +1,8 @@ -import { PluginController, PluginMethod } from '../rpc-kit/decorators'; -import { PluginGuards } from '../plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../rpc-errors'; -import { asPayload, num, str } from '../rpc-params'; -import type { PluginRpcContext } from '../rpc-kit/types'; +import { PluginController, PluginMethod } from '../../../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../../../nest-rpc/rpc-errors'; +import { asPayload, num, str } from '../../../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../../../nest-rpc/rpc-kit/types'; import { budgetFor } from '../plugin-host-state'; import { InjectRepository } from '@mikro-orm/nestjs'; import { PluginCapabilityAudit } from '../../../../db/entities/PluginCapabilityAudit.entity'; diff --git a/server/src/nest/plugins/host/rpc/meta.rpc.ts b/server/src/nest/plugins/host/rpc/meta.rpc.ts index 164527cff..8daee88e4 100644 --- a/server/src/nest/plugins/host/rpc/meta.rpc.ts +++ b/server/src/nest/plugins/host/rpc/meta.rpc.ts @@ -1,9 +1,9 @@ import { InjectRepository } from '@mikro-orm/nestjs'; -import { PluginController, PluginMethod } from '../rpc-kit/decorators'; -import { PluginGuards } from '../plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../rpc-errors'; -import { num, str } from '../rpc-params'; -import type { PluginRpcContext } from '../rpc-kit/types'; +import { PluginController, PluginMethod } from '../../../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../../../nest-rpc/rpc-errors'; +import { num, str } from '../../../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../../../nest-rpc/rpc-kit/types'; import { PluginEntityMetadata } from '../../../../db/entities/PluginEntityMetadata.entity'; import type { PluginEntityMetadataRepository } from '../../../../db/repositories/PluginEntityMetadata.repository'; import { Trips } from '../../../../db/entities/Trips.entity'; diff --git a/server/src/nest/plugins/plugin-hooks.service.ts b/server/src/nest/plugins/plugin-hooks.service.ts index 96e9cf74e..15ec060e2 100644 --- a/server/src/nest/plugins/plugin-hooks.service.ts +++ b/server/src/nest/plugins/plugin-hooks.service.ts @@ -1,4 +1,4 @@ -import { PluginController, PluginHook } from './host/rpc-kit/decorators'; +import { PluginController, PluginHook } from '../../nest-rpc/rpc-kit/decorators'; import { PluginRuntimeService } from './plugin-runtime.service'; /** What a notification channel is handed for one message. */ diff --git a/server/src/nest/plugins/plugins-runtime.module.ts b/server/src/nest/plugins/plugins-runtime.module.ts index 77fb6953d..0284c74f8 100644 --- a/server/src/nest/plugins/plugins-runtime.module.ts +++ b/server/src/nest/plugins/plugins-runtime.module.ts @@ -28,8 +28,8 @@ import { PluginRuntimeService } from './plugin-runtime.service'; import { PluginHooks } from './plugin-hooks.service'; import { PluginRegistryService } from './registry/registry.service'; import { PluginRpcHostFactory } from './host/plugin-rpc-host.factory'; -import { PluginRpcRegistryService } from './host/rpc-kit/registry.service'; -import { PluginGuardsModule } from './host/plugin-guards.module'; +import { PluginRpcRegistryService } from '../../nest-rpc/rpc-kit/registry.service'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { PluginOAuthModule } from './oauth/plugin-oauth.module'; import { DbRpc } from './host/rpc/db.rpc'; import { MetaRpc } from './host/rpc/meta.rpc'; diff --git a/server/src/nest/reservations/reservations.module.ts b/server/src/nest/reservations/reservations.module.ts index 60c570659..a66cb8e9d 100644 --- a/server/src/nest/reservations/reservations.module.ts +++ b/server/src/nest/reservations/reservations.module.ts @@ -9,7 +9,7 @@ import { PermissionsModule } from '../permissions/permissions.module'; import { ReservationsController } from './reservations.controller'; import { ReservationsService } from './reservations.service'; import { ReservationsRpc } from './reservations.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { ReservationsMcp } from './reservations.mcp'; import { UpcomingReservationsController } from './upcoming-reservations.controller'; diff --git a/server/src/nest/reservations/reservations.rpc.ts b/server/src/nest/reservations/reservations.rpc.ts index 4e6029091..7d17b64d4 100644 --- a/server/src/nest/reservations/reservations.rpc.ts +++ b/server/src/nest/reservations/reservations.rpc.ts @@ -3,11 +3,11 @@ import { reservationEndpointsInputSchema, reservationUpdateRequestSchema, } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { ReservationsService } from './reservations.service'; diff --git a/server/src/nest/tags/tags.rpc.ts b/server/src/nest/tags/tags.rpc.ts index f0833ef49..33df73d92 100644 --- a/server/src/nest/tags/tags.rpc.ts +++ b/server/src/nest/tags/tags.rpc.ts @@ -1,7 +1,7 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { asPayload, num } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { asPayload, num } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { TagsService } from './tags.service'; /** diff --git a/server/src/nest/todo/todo.module.ts b/server/src/nest/todo/todo.module.ts index 6b46be7e8..8c112fb21 100644 --- a/server/src/nest/todo/todo.module.ts +++ b/server/src/nest/todo/todo.module.ts @@ -4,7 +4,7 @@ import { TodoController } from './todo.controller'; import { TodoMcp } from './todo.mcp'; import { TodoService } from './todo.service'; import { TodoRpc } from './todo.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { PermissionsModule } from '../permissions/permissions.module'; import { AddonsModule } from '../addons/addons.module'; diff --git a/server/src/nest/todo/todo.rpc.ts b/server/src/nest/todo/todo.rpc.ts index 996977224..764847ede 100644 --- a/server/src/nest/todo/todo.rpc.ts +++ b/server/src/nest/todo/todo.rpc.ts @@ -1,8 +1,8 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { asPayload, num } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { asPayload, num } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { TodoService } from './todo.service'; diff --git a/server/src/nest/trips/trips.module.ts b/server/src/nest/trips/trips.module.ts index b7d9b13ee..576c809bb 100644 --- a/server/src/nest/trips/trips.module.ts +++ b/server/src/nest/trips/trips.module.ts @@ -14,7 +14,7 @@ import { TripsController } from './trips.controller'; import { TripsService } from './trips.service'; import { TripPromptsMcp } from './trip-prompts.mcp'; import { TripsRpc } from './trips.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { RealtimeModule } from '../realtime/realtime.module'; import { TripMembershipModule } from '../trip-membership/trip-membership.module'; import { AppConfigModule } from '../app-config/app-config.module'; diff --git a/server/src/nest/trips/trips.rpc.ts b/server/src/nest/trips/trips.rpc.ts index 8b7f3ebc0..2807629c9 100644 --- a/server/src/nest/trips/trips.rpc.ts +++ b/server/src/nest/trips/trips.rpc.ts @@ -1,10 +1,10 @@ import { EntityManager } from '@mikro-orm/core'; import { tripCreateRequestSchema, tripUpdateRequestSchema } from '@trek/shared'; -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import { num, schemaMessage } from '../plugins/host/rpc-params'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import { num, schemaMessage } from '../../nest-rpc/rpc-params'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { RealtimeService } from '../realtime/realtime.service'; import { ReservationsService } from '../reservations/reservations.service'; import { DaysService } from '../days/days.service'; diff --git a/server/src/nest/vacay/vacay.module.ts b/server/src/nest/vacay/vacay.module.ts index bb9224f21..2fbec8991 100644 --- a/server/src/nest/vacay/vacay.module.ts +++ b/server/src/nest/vacay/vacay.module.ts @@ -3,7 +3,7 @@ import { MikroOrmModule } from '@mikro-orm/nestjs'; import { VacayController } from './vacay.controller'; import { VacayService } from './vacay.service'; import { VacayRpc } from './vacay.rpc'; -import { PluginGuardsModule } from '../plugins/host/plugin-guards.module'; +import { PluginGuardsModule } from '../../nest-rpc/plugin-guards.module'; import { VacayMcp } from './vacay.mcp'; import { AuthModule } from '../auth/auth.module'; import { AddonsModule } from '../addons/addons.module'; diff --git a/server/src/nest/vacay/vacay.rpc.ts b/server/src/nest/vacay/vacay.rpc.ts index 3fc4057d3..7b9b94141 100644 --- a/server/src/nest/vacay/vacay.rpc.ts +++ b/server/src/nest/vacay/vacay.rpc.ts @@ -1,7 +1,7 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { PluginGuards } from '../plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../plugins/host/rpc-errors'; -import type { PluginRpcContext } from '../plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { PluginGuards } from '../../nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../nest-rpc/rpc-errors'; +import type { PluginRpcContext } from '../../nest-rpc/rpc-kit/types'; import { ADDON_IDS } from '../../addons'; import { VacayService } from './vacay.service'; diff --git a/server/src/nest/weather/weather.rpc.ts b/server/src/nest/weather/weather.rpc.ts index f9f6c7aac..21dd3f306 100644 --- a/server/src/nest/weather/weather.rpc.ts +++ b/server/src/nest/weather/weather.rpc.ts @@ -1,5 +1,5 @@ -import { PluginController, PluginMethod } from '../plugins/host/rpc-kit/decorators'; -import { num } from '../plugins/host/rpc-params'; +import { PluginController, PluginMethod } from '../../nest-rpc/rpc-kit/decorators'; +import { num } from '../../nest-rpc/rpc-params'; import { WeatherService } from './weather.service'; /** diff --git a/server/tests/helpers/plugin-host.ts b/server/tests/helpers/plugin-host.ts index f930402e6..26b082c66 100644 --- a/server/tests/helpers/plugin-host.ts +++ b/server/tests/helpers/plugin-host.ts @@ -3,9 +3,9 @@ import { PluginRuntimeService } from '../../src/nest/plugins/plugin-runtime.serv import { PluginUserSettingsService } from '../../src/nest/plugins/plugin-user-settings.service'; import type { PluginRegistryService } from '../../src/nest/plugins/registry/registry.service'; import { PluginRpcHostFactory } from '../../src/nest/plugins/host/plugin-rpc-host.factory'; -import { PluginRpcRegistryService } from '../../src/nest/plugins/host/rpc-kit/registry.service'; -import { createTestPluginRegistry } from '../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../src/nest/plugins/host/plugin-guards.service'; +import { PluginRpcRegistryService } from '../../src/nest-rpc/rpc-kit/registry.service'; +import { createTestPluginRegistry } from '../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../src/nest-rpc/plugin-guards.service'; import { DbRpc } from '../../src/nest/plugins/host/rpc/db.rpc'; import { MetaRpc } from '../../src/nest/plugins/host/rpc/meta.rpc'; import { HostSurfaceRpc } from '../../src/nest/plugins/host/rpc/host-surface.rpc'; diff --git a/server/tests/integration/plugins/boot-registry-order.test.ts b/server/tests/integration/plugins/boot-registry-order.test.ts index f9d6769d3..eb04a1c1b 100644 --- a/server/tests/integration/plugins/boot-registry-order.test.ts +++ b/server/tests/integration/plugins/boot-registry-order.test.ts @@ -42,8 +42,8 @@ import { AppSettings } from '../../../src/db/entities/AppSettings.entity'; import { PluginRuntimeService } from '../../../src/nest/plugins/plugin-runtime.service'; import { PluginUserSettingsService } from '../../../src/nest/plugins/plugin-user-settings.service'; import { PluginRpcHostFactory } from '../../../src/nest/plugins/host/plugin-rpc-host.factory'; -import { PluginRpcRegistry } from '../../../src/nest/plugins/host/rpc-kit/registry'; -import type { PluginRpcRegistryService } from '../../../src/nest/plugins/host/rpc-kit/registry.service'; +import { PluginRpcRegistry } from '../../../src/nest-rpc/rpc-kit/registry'; +import type { PluginRpcRegistryService } from '../../../src/nest-rpc/rpc-kit/registry.service'; import { DbRpc } from '../../../src/nest/plugins/host/rpc/db.rpc'; import { createTestOrm, type TestOrm } from '../../helpers/test-orm'; import { AuditLog } from '../../../src/db/entities/AuditLog.entity'; diff --git a/server/tests/integration/plugins/supervisor.test.ts b/server/tests/integration/plugins/supervisor.test.ts index 0387fe281..928c7d5cd 100644 --- a/server/tests/integration/plugins/supervisor.test.ts +++ b/server/tests/integration/plugins/supervisor.test.ts @@ -15,7 +15,7 @@ import Database from 'better-sqlite3'; import { PluginSupervisor, type SupervisorHooks, type SupervisorTuning } from '../../../src/nest/plugins/supervisor/plugin-supervisor'; import { PluginRpcHost, type HostDeps } from '../../../src/nest/plugins/host/rpc-host'; import { PluginDataDb } from '../../../src/nest/plugins/host/plugin-data.service'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; import { DbRpc } from '../../../src/nest/plugins/host/rpc/db.rpc'; import type { PluginUserSettingsService } from '../../../src/nest/plugins/plugin-user-settings.service'; import { createTestOrm, type TestOrm } from '../../helpers/test-orm'; diff --git a/server/tests/unit/budget/costs.rpc.test.ts b/server/tests/unit/budget/costs.rpc.test.ts index d4011ac66..ae7ee9076 100644 --- a/server/tests/unit/budget/costs.rpc.test.ts +++ b/server/tests/unit/budget/costs.rpc.test.ts @@ -8,8 +8,8 @@ import { describe, it, expect, vi } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { CostsRpc } from '../../../src/nest/budget/costs.rpc'; import { BudgetModule } from '../../../src/nest/budget/budget.module'; import type { BudgetService } from '../../../src/nest/budget/budget.service'; diff --git a/server/tests/unit/days/day-notes.rpc.test.ts b/server/tests/unit/days/day-notes.rpc.test.ts index 9b47e5b89..ed2b42856 100644 --- a/server/tests/unit/days/day-notes.rpc.test.ts +++ b/server/tests/unit/days/day-notes.rpc.test.ts @@ -7,8 +7,8 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { DayNotesRpc } from '../../../src/nest/day-notes/day-notes.rpc'; import { DayNotesModule } from '../../../src/nest/day-notes/day-notes.module'; import type { DayNotesService } from '../../../src/nest/day-notes/day-notes.service'; diff --git a/server/tests/unit/days/days-itinerary.rpc.test.ts b/server/tests/unit/days/days-itinerary.rpc.test.ts index 2c8bb68ae..7fa4f508d 100644 --- a/server/tests/unit/days/days-itinerary.rpc.test.ts +++ b/server/tests/unit/days/days-itinerary.rpc.test.ts @@ -8,8 +8,8 @@ import { describe, it, expect, vi } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { DaysRpc } from '../../../src/nest/days/days.rpc'; import { DaysModule } from '../../../src/nest/days/days.module'; import { ItineraryRpc } from '../../../src/nest/assignments/itinerary.rpc'; diff --git a/server/tests/unit/files/files.rpc.test.ts b/server/tests/unit/files/files.rpc.test.ts index 4e962f52d..40ed636cb 100644 --- a/server/tests/unit/files/files.rpc.test.ts +++ b/server/tests/unit/files/files.rpc.test.ts @@ -13,8 +13,8 @@ import { describe, it, expect, vi } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { Readable } from 'node:stream'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { FilesRpc } from '../../../src/nest/files/files.rpc'; import { FilesModule } from '../../../src/nest/files/files.module'; import { FilesService } from '../../../src/nest/files/files.service'; diff --git a/server/tests/unit/plugins/plugin-guards.test.ts b/server/tests/unit/nest-rpc/plugin-guards.test.ts similarity index 98% rename from server/tests/unit/plugins/plugin-guards.test.ts rename to server/tests/unit/nest-rpc/plugin-guards.test.ts index 93c6640bf..77cacd3d2 100644 --- a/server/tests/unit/plugins/plugin-guards.test.ts +++ b/server/tests/unit/nest-rpc/plugin-guards.test.ts @@ -5,13 +5,13 @@ * them, so these tests pin the exact strings rather than just the refusal. */ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; -import { BadParams, ForbiddenResource } from '../../../src/nest/plugins/host/rpc-errors'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; +import { BadParams, ForbiddenResource } from '../../../src/nest-rpc/rpc-errors'; import type { TripsRepository } from '../../../src/db/repositories/Trips.repository'; import { PermissionsService } from '../../../src/nest/permissions/permissions.service'; import type { AddonsService } from '../../../src/nest/addons/addons.service'; import type { UsersRepository } from '../../../src/db/repositories/Users.repository'; -import type { PluginRpcContext } from '../../../src/nest/plugins/host/rpc-kit/types'; +import type { PluginRpcContext } from '../../../src/nest-rpc/rpc-kit/types'; import { UnitOfWork } from '../../../src/nest/database/unit-of-work'; import { createTestOrm, type TestOrm } from '../../helpers/test-orm'; import { createSnapshotTestDb } from '../../helpers/db-mock'; diff --git a/server/tests/unit/plugins/rpc-kit/decorators.test.ts b/server/tests/unit/nest-rpc/rpc-kit/decorators.test.ts similarity index 97% rename from server/tests/unit/plugins/rpc-kit/decorators.test.ts rename to server/tests/unit/nest-rpc/rpc-kit/decorators.test.ts index 806065fa6..18b2d66c7 100644 --- a/server/tests/unit/plugins/rpc-kit/decorators.test.ts +++ b/server/tests/unit/nest-rpc/rpc-kit/decorators.test.ts @@ -10,8 +10,8 @@ import { PluginHook, PluginMethod, PluginOpenMethod, -} from '../../../../src/nest/plugins/host/rpc-kit/decorators'; -import { getEntry, isPluginController, type ClassRef } from '../../../../src/nest/plugins/host/rpc-kit/metadata'; +} from '../../../../src/nest-rpc/rpc-kit/decorators'; +import { getEntry, isPluginController, type ClassRef } from '../../../../src/nest-rpc/rpc-kit/metadata'; const entryOf = (ctor: unknown, methodName: string) => getEntry(ctor as ClassRef, methodName); diff --git a/server/tests/unit/plugins/rpc-kit/metadata.test.ts b/server/tests/unit/nest-rpc/rpc-kit/metadata.test.ts similarity index 95% rename from server/tests/unit/plugins/rpc-kit/metadata.test.ts rename to server/tests/unit/nest-rpc/rpc-kit/metadata.test.ts index 83aab455a..e8de2ddd5 100644 --- a/server/tests/unit/plugins/rpc-kit/metadata.test.ts +++ b/server/tests/unit/nest-rpc/rpc-kit/metadata.test.ts @@ -10,8 +10,8 @@ import { isPluginController, markController, type ClassRef, -} from '../../../../src/nest/plugins/host/rpc-kit/metadata'; -import type { PluginRpcEntry } from '../../../../src/nest/plugins/host/rpc-kit/types'; +} from '../../../../src/nest-rpc/rpc-kit/metadata'; +import type { PluginRpcEntry } from '../../../../src/nest-rpc/rpc-kit/types'; const methodEntry = (methodName: string, method: 'tags.list' | 'tags.create' = 'tags.list'): PluginRpcEntry => ({ kind: 'method', diff --git a/server/tests/unit/plugins/rpc-kit/registry.service.test.ts b/server/tests/unit/nest-rpc/rpc-kit/registry.service.test.ts similarity index 96% rename from server/tests/unit/plugins/rpc-kit/registry.service.test.ts rename to server/tests/unit/nest-rpc/rpc-kit/registry.service.test.ts index a2a84c25a..ffba7cac7 100644 --- a/server/tests/unit/plugins/rpc-kit/registry.service.test.ts +++ b/server/tests/unit/nest-rpc/rpc-kit/registry.service.test.ts @@ -5,8 +5,8 @@ */ import { describe, it, expect, vi } from 'vitest'; import type { DiscoveryService, MetadataScanner } from '@nestjs/core'; -import { PluginRpcRegistryService } from '../../../../src/nest/plugins/host/rpc-kit/registry.service'; -import { PluginController, PluginMethod } from '../../../../src/nest/plugins/host/rpc-kit/decorators'; +import { PluginRpcRegistryService } from '../../../../src/nest-rpc/rpc-kit/registry.service'; +import { PluginController, PluginMethod } from '../../../../src/nest-rpc/rpc-kit/decorators'; @PluginController() class TagsRpc { diff --git a/server/tests/unit/plugins/rpc-kit/registry.test.ts b/server/tests/unit/nest-rpc/rpc-kit/registry.test.ts similarity index 97% rename from server/tests/unit/plugins/rpc-kit/registry.test.ts rename to server/tests/unit/nest-rpc/rpc-kit/registry.test.ts index 37872f4ec..ac1092bc7 100644 --- a/server/tests/unit/plugins/rpc-kit/registry.test.ts +++ b/server/tests/unit/nest-rpc/rpc-kit/registry.test.ts @@ -11,10 +11,10 @@ import { PluginHook, PluginMethod, PluginOpenMethod, -} from '../../../../src/nest/plugins/host/rpc-kit/decorators'; -import { PluginRpcRegistry } from '../../../../src/nest/plugins/host/rpc-kit/registry'; -import { createTestPluginRegistry } from '../../../../src/nest/plugins/host/rpc-kit/testing'; -import type { PluginRpcContext } from '../../../../src/nest/plugins/host/rpc-kit/types'; +} from '../../../../src/nest-rpc/rpc-kit/decorators'; +import { PluginRpcRegistry } from '../../../../src/nest-rpc/rpc-kit/registry'; +import { createTestPluginRegistry } from '../../../../src/nest-rpc/rpc-kit/testing'; +import type { PluginRpcContext } from '../../../../src/nest-rpc/rpc-kit/types'; const ctxFor = (actingUserId: number | undefined): PluginRpcContext => ({ pluginId: 'p', diff --git a/server/tests/unit/packing/packing.rpc.test.ts b/server/tests/unit/packing/packing.rpc.test.ts index 5d9713424..53affa0f1 100644 --- a/server/tests/unit/packing/packing.rpc.test.ts +++ b/server/tests/unit/packing/packing.rpc.test.ts @@ -9,8 +9,8 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { PackingRpc } from '../../../src/nest/packing/packing.rpc'; import { PackingModule } from '../../../src/nest/packing/packing.module'; import { PackingService } from '../../../src/nest/packing/packing.service'; diff --git a/server/tests/unit/places/places.rpc.test.ts b/server/tests/unit/places/places.rpc.test.ts index 4c6d4c7a2..8112e560b 100644 --- a/server/tests/unit/places/places.rpc.test.ts +++ b/server/tests/unit/places/places.rpc.test.ts @@ -9,8 +9,8 @@ import { describe, it, expect, vi } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { PlacesRpc } from '../../../src/nest/places/places.rpc'; import { PlacesModule } from '../../../src/nest/places/places.module'; import type { PlacesService } from '../../../src/nest/places/places.service'; diff --git a/server/tests/unit/plugins/addon-domains-errors.rpc.test.ts b/server/tests/unit/plugins/addon-domains-errors.rpc.test.ts index a1950b605..41b56786a 100644 --- a/server/tests/unit/plugins/addon-domains-errors.rpc.test.ts +++ b/server/tests/unit/plugins/addon-domains-errors.rpc.test.ts @@ -8,8 +8,8 @@ */ import { describe, it, expect, vi } from 'vitest'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { CollabRpc } from '../../../src/nest/collab/collab.rpc'; import { AtlasRpc } from '../../../src/nest/atlas/atlas.rpc'; import { BucketItemExistsError } from '../../../src/nest/atlas/atlas.service'; diff --git a/server/tests/unit/plugins/addon-gates.rpc.test.ts b/server/tests/unit/plugins/addon-gates.rpc.test.ts index 339f34f8d..afe50f2d2 100644 --- a/server/tests/unit/plugins/addon-gates.rpc.test.ts +++ b/server/tests/unit/plugins/addon-gates.rpc.test.ts @@ -12,8 +12,8 @@ */ import { describe, it, expect, vi } from 'vitest'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { CollabRpc } from '../../../src/nest/collab/collab.rpc'; import { AtlasRpc } from '../../../src/nest/atlas/atlas.rpc'; import { VacayRpc } from '../../../src/nest/vacay/vacay.rpc'; diff --git a/server/tests/unit/plugins/host-rpc.test.ts b/server/tests/unit/plugins/host-rpc.test.ts index 48b610bd3..5c0efc927 100644 --- a/server/tests/unit/plugins/host-rpc.test.ts +++ b/server/tests/unit/plugins/host-rpc.test.ts @@ -54,9 +54,9 @@ const { llmExtract } = vi.hoisted(() => ({ })); vi.mock('../../../src/nest/llm-parse/llm-client.factory', () => ({ createLlmClient: vi.fn(() => ({ extract: llmExtract })) })); import { PluginRpcHostFactory, type PluginCallRouter } from '../../../src/nest/plugins/host/plugin-rpc-host.factory'; -import { PluginRpcRegistryService } from '../../../src/nest/plugins/host/rpc-kit/registry.service'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { PluginRpcRegistryService } from '../../../src/nest-rpc/rpc-kit/registry.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { DbRpc } from '../../../src/nest/plugins/host/rpc/db.rpc'; import type { PluginUserSettingsService } from '../../../src/nest/plugins/plugin-user-settings.service'; import { MetaRpc } from '../../../src/nest/plugins/host/rpc/meta.rpc'; diff --git a/server/tests/unit/plugins/output-contract.schema.test.ts b/server/tests/unit/plugins/output-contract.schema.test.ts index b656cea11..66fa277b6 100644 --- a/server/tests/unit/plugins/output-contract.schema.test.ts +++ b/server/tests/unit/plugins/output-contract.schema.test.ts @@ -40,8 +40,8 @@ import { createUser, linkTripToJourney, } from '../../helpers/factories'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import type { PluginRpcContext } from '../../../src/nest/plugins/host/rpc-kit/types'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import type { PluginRpcContext } from '../../../src/nest-rpc/rpc-kit/types'; import type { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; import { KNOWN_PERMISSIONS, type RpcResponse } from '../../../src/nest/plugins/protocol/envelope'; import { diff --git a/server/tests/unit/plugins/output-contract.test.ts b/server/tests/unit/plugins/output-contract.test.ts index 3718a8e33..bda20588e 100644 --- a/server/tests/unit/plugins/output-contract.test.ts +++ b/server/tests/unit/plugins/output-contract.test.ts @@ -4,9 +4,9 @@ * schema and real-service side is output-contract.schema.test.ts. */ import { describe, expect, it } from 'vitest'; -import { PluginController, PluginMethod } from '../../../src/nest/plugins/host/rpc-kit/decorators'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import type { PluginRpcContext } from '../../../src/nest/plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod } from '../../../src/nest-rpc/rpc-kit/decorators'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import type { PluginRpcContext } from '../../../src/nest-rpc/rpc-kit/types'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; import { KNOWN_METHODS, UNCONDITIONAL_METHODS, type RpcResponse } from '../../../src/nest/plugins/protocol/envelope'; import { diff --git a/server/tests/unit/plugins/plugin-hooks.test.ts b/server/tests/unit/plugins/plugin-hooks.test.ts index 62bbe40bf..d65f7ae1c 100644 --- a/server/tests/unit/plugins/plugin-hooks.test.ts +++ b/server/tests/unit/plugins/plugin-hooks.test.ts @@ -12,7 +12,7 @@ import { describe, it, expect, vi } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginHooks } from '../../../src/nest/plugins/plugin-hooks.service'; import { PluginsRuntimeModule } from '../../../src/nest/plugins/plugins-runtime.module'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; import { HOOK_PERMISSION } from '../../../src/nest/plugins/protocol/envelope'; import type { PluginRuntimeService } from '../../../src/nest/plugins/plugin-runtime.service'; diff --git a/server/tests/unit/plugins/request-context.test.ts b/server/tests/unit/plugins/request-context.test.ts index 34fd795de..2a58628dd 100644 --- a/server/tests/unit/plugins/request-context.test.ts +++ b/server/tests/unit/plugins/request-context.test.ts @@ -34,7 +34,7 @@ import { createSnapshotTestDb } from '../../helpers/db-mock'; import { createUser } from '../../helpers/factories'; import { createTestAddonsService } from '../../helpers/test-addons'; import { PermissionsService } from '../../../src/nest/permissions/permissions.service'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { PluginSupervisor } from '../../../src/nest/plugins/supervisor/plugin-supervisor'; import { UnitOfWork } from '../../../src/nest/database/unit-of-work'; import { RpcRateLimiter, DEFAULT_RPC_LIMIT } from '../../../src/nest/plugins/host/rate-limit'; diff --git a/server/tests/unit/plugins/rpc-coverage.test.ts b/server/tests/unit/plugins/rpc-coverage.test.ts index 9d5516d14..94b37e479 100644 --- a/server/tests/unit/plugins/rpc-coverage.test.ts +++ b/server/tests/unit/plugins/rpc-coverage.test.ts @@ -11,8 +11,8 @@ */ import { describe, it, expect } from 'vitest'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginRpcRegistryService } from '../../../src/nest/plugins/host/rpc-kit/registry.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginRpcRegistryService } from '../../../src/nest-rpc/rpc-kit/registry.service'; import { KNOWN_METHODS, KNOWN_PERMISSIONS, diff --git a/server/tests/unit/plugins/rpc-fallbacks.test.ts b/server/tests/unit/plugins/rpc-fallbacks.test.ts index d34e098d9..a518faee0 100644 --- a/server/tests/unit/plugins/rpc-fallbacks.test.ts +++ b/server/tests/unit/plugins/rpc-fallbacks.test.ts @@ -10,8 +10,8 @@ */ import { describe, it, expect, vi } from 'vitest'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { TagsRpc } from '../../../src/nest/tags/tags.rpc'; import { DayNotesRpc } from '../../../src/nest/day-notes/day-notes.rpc'; import { PlacesRpc } from '../../../src/nest/places/places.rpc'; @@ -30,7 +30,7 @@ import type { AddonsService } from '../../../src/nest/addons/addons.service'; import type { UsersRepository } from '../../../src/db/repositories/Users.repository'; import type { RpcRequest, RpcError } from '../../../src/nest/plugins/protocol/envelope'; import { makeDeps } from '../../helpers/rpc-host-deps'; -import { schemaMessage } from '../../../src/nest/plugins/host/rpc-params'; +import { schemaMessage } from '../../../src/nest-rpc/rpc-params'; const req = (method: string, params: Record = {}): RpcRequest => ({ k: 'req', id: 'x', method, params }); const err = (r: unknown) => (r as RpcError).error; diff --git a/server/tests/unit/plugins/rpc-host-inv-strip.test.ts b/server/tests/unit/plugins/rpc-host-inv-strip.test.ts index 48dde9b98..3f570db1a 100644 --- a/server/tests/unit/plugins/rpc-host-inv-strip.test.ts +++ b/server/tests/unit/plugins/rpc-host-inv-strip.test.ts @@ -10,13 +10,13 @@ import { describe, it, expect, vi } from 'vitest'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; import type { RpcRequest, RpcResponse } from '../../../src/nest/plugins/protocol/envelope'; import { makeDeps } from '../../helpers/rpc-host-deps'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; import { PackingRpc } from '../../../src/nest/packing/packing.rpc'; import type { PackingService } from '../../../src/nest/packing/packing.service'; import type { RealtimeService } from '../../../src/nest/realtime/realtime.service'; import { TripsRpc } from '../../../src/nest/trips/trips.rpc'; import { DbRpc } from '../../../src/nest/plugins/host/rpc/db.rpc'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import type { EntityManager } from '@mikro-orm/core'; import type { TripsRepository } from '../../../src/db/repositories/Trips.repository'; import type { PluginUserSettingsService } from '../../../src/nest/plugins/plugin-user-settings.service'; diff --git a/server/tests/unit/plugins/rpc-host.test.ts b/server/tests/unit/plugins/rpc-host.test.ts index 6273f5c76..d8877981c 100644 --- a/server/tests/unit/plugins/rpc-host.test.ts +++ b/server/tests/unit/plugins/rpc-host.test.ts @@ -9,9 +9,9 @@ */ import { describe, it, expect, vi } from 'vitest'; import { PluginRpcHost, BadParams, ForbiddenResource, type HostDeps } from '../../../src/nest/plugins/host/rpc-host'; -import { PluginController, PluginMethod, PluginOpenMethod } from '../../../src/nest/plugins/host/rpc-kit/decorators'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import type { PluginRpcContext } from '../../../src/nest/plugins/host/rpc-kit/types'; +import { PluginController, PluginMethod, PluginOpenMethod } from '../../../src/nest-rpc/rpc-kit/decorators'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import type { PluginRpcContext } from '../../../src/nest-rpc/rpc-kit/types'; import type { RpcRequest, RpcResponse, RpcError } from '../../../src/nest/plugins/protocol/envelope'; import { makeDeps } from '../../helpers/rpc-host-deps'; diff --git a/server/tests/unit/plugins/tenant-free.rpc.test.ts b/server/tests/unit/plugins/tenant-free.rpc.test.ts index 9633e2bfa..0492a0003 100644 --- a/server/tests/unit/plugins/tenant-free.rpc.test.ts +++ b/server/tests/unit/plugins/tenant-free.rpc.test.ts @@ -8,7 +8,7 @@ import { describe, it, expect, vi } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; import { CategoriesRpc } from '../../../src/nest/categories/categories.rpc'; import { CategoriesModule } from '../../../src/nest/categories/categories.module'; import { WeatherRpc } from '../../../src/nest/weather/weather.rpc'; diff --git a/server/tests/unit/reservations/bookings.rpc.test.ts b/server/tests/unit/reservations/bookings.rpc.test.ts index 839656f2e..fe2ff63e2 100644 --- a/server/tests/unit/reservations/bookings.rpc.test.ts +++ b/server/tests/unit/reservations/bookings.rpc.test.ts @@ -11,8 +11,8 @@ import { describe, it, expect, vi } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { ReservationsRpc } from '../../../src/nest/reservations/reservations.rpc'; import { ReservationsModule } from '../../../src/nest/reservations/reservations.module'; import { AccommodationsRpc } from '../../../src/nest/accommodations/accommodations.rpc'; diff --git a/server/tests/unit/scripts/import-boundaries.test.ts b/server/tests/unit/scripts/import-boundaries.test.ts index 1e8c9ba4f..49e801f8e 100644 --- a/server/tests/unit/scripts/import-boundaries.test.ts +++ b/server/tests/unit/scripts/import-boundaries.test.ts @@ -124,7 +124,7 @@ describe('import-boundaries.mjs', () => { 'nest/b/b.helpers.ts': 'export const h = 1;\n', 'nest/b/b.types.ts': 'export interface T { x: number }\n', 'nest/common/row-id.ts': 'export const id = 1;\n', - 'nest/plugins/host/rpc-kit/decorators.ts': 'export const Rpc = 1;\n', + 'nest/audit/client-ip.ts': 'export const Rpc = 1;\n', }; const ok = serverRoot({ ...files, @@ -132,7 +132,7 @@ describe('import-boundaries.mjs', () => { "import { B } from '../b/b.service';", "import type { T } from '../b/b.types';", "import { id } from '../common/row-id';", - "import { Rpc } from '../plugins/host/rpc-kit/decorators';", + "import { Rpc } from '../audit/client-ip';", 'export const a: [unknown, T | null, number, number] = [B, null, id, Rpc];', '', ].join('\n'), diff --git a/server/tests/unit/tags/tags.rpc.test.ts b/server/tests/unit/tags/tags.rpc.test.ts index b5a19ab5e..ac8517c18 100644 --- a/server/tests/unit/tags/tags.rpc.test.ts +++ b/server/tests/unit/tags/tags.rpc.test.ts @@ -10,12 +10,12 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { BadParams, ForbiddenResource } from '../../../src/nest/plugins/host/rpc-errors'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { BadParams, ForbiddenResource } from '../../../src/nest-rpc/rpc-errors'; import { TagsRpc } from '../../../src/nest/tags/tags.rpc'; import { TagsModule } from '../../../src/nest/tags/tags.module'; import type { TagsService } from '../../../src/nest/tags/tags.service'; -import type { PluginRpcContext } from '../../../src/nest/plugins/host/rpc-kit/types'; +import type { PluginRpcContext } from '../../../src/nest-rpc/rpc-kit/types'; import type { RpcRequest, RpcError } from '../../../src/nest/plugins/protocol/envelope'; import { makeDeps } from '../../helpers/rpc-host-deps'; diff --git a/server/tests/unit/todo/todo.rpc.test.ts b/server/tests/unit/todo/todo.rpc.test.ts index 723443e37..b1573df3e 100644 --- a/server/tests/unit/todo/todo.rpc.test.ts +++ b/server/tests/unit/todo/todo.rpc.test.ts @@ -6,8 +6,8 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { TodoRpc } from '../../../src/nest/todo/todo.rpc'; import { TodoModule } from '../../../src/nest/todo/todo.module'; import type { TodoService } from '../../../src/nest/todo/todo.service'; diff --git a/server/tests/unit/trips/trips.rpc.test.ts b/server/tests/unit/trips/trips.rpc.test.ts index 988a1cc4f..b9eee1e5f 100644 --- a/server/tests/unit/trips/trips.rpc.test.ts +++ b/server/tests/unit/trips/trips.rpc.test.ts @@ -11,8 +11,8 @@ import { describe, it, expect, vi } from 'vitest'; import type { EntityManager } from '@mikro-orm/core'; import { expectRegisteredProvider } from '../../helpers/module-providers'; import { PluginRpcHost } from '../../../src/nest/plugins/host/rpc-host'; -import { createTestPluginRegistry } from '../../../src/nest/plugins/host/rpc-kit/testing'; -import { PluginGuards } from '../../../src/nest/plugins/host/plugin-guards.service'; +import { createTestPluginRegistry } from '../../../src/nest-rpc/rpc-kit/testing'; +import { PluginGuards } from '../../../src/nest-rpc/plugin-guards.service'; import { TripsRpc } from '../../../src/nest/trips/trips.rpc'; import { TripsModule } from '../../../src/nest/trips/trips.module'; import { NotFoundError, ValidationError } from '../../../src/nest/trips/trips.service'; diff --git a/server/vitest.config.ts b/server/vitest.config.ts index 335513852..b795a264d 100644 --- a/server/vitest.config.ts +++ b/server/vitest.config.ts @@ -215,6 +215,9 @@ export default defineConfig({ // The folded-in nest-mcp decorator/registry layer keeps the 80% floor // its own workspace gate enforced (tests/unit/nest-mcp/). 'src/nest-mcp/**/*.ts': { statements: 80, branches: 80, functions: 80, lines: 80 }, + // The plugin RPC kit (rpc-kit, rpc-params, rpc-errors, PluginGuards), moved + // out of src/nest/plugins with its tests (tests/unit/nest-rpc/). + 'src/nest-rpc/**/*.ts': { statements: 92, branches: 85, functions: 95, lines: 94 }, 'src/systemNotices/**/*.ts': { statements: 84, branches: 67, functions: 93, lines: 85 }, 'src/utils/**/*.ts': { statements: 92, branches: 87, functions: 89, lines: 96 }, // index.ts, bootstrap.ts, scheduler.ts, config.ts, websocket.ts and the