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.
This commit is contained in:
Maurice
2026-10-10 12:19:38 +02:00
parent cc79f561e5
commit e40bc71e9f
92 changed files with 237 additions and 280 deletions
+3 -1
View File
@@ -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`
+13 -41
View File
@@ -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.',
},
],
},
+1 -22
View File
@@ -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",
+3 -5
View File
@@ -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',
@@ -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';
/**
@@ -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';
@@ -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
@@ -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';
/**
@@ -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,
@@ -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.
+1 -1
View File
@@ -16,7 +16,7 @@ server/src/nest/<domain>/<domain>.service.ts # business logic, an injectable
server/src/nest/<domain>/<domain>.controller.ts # REST routes, thin: validate, call the service, shape the reply
server/src/nest/<domain>/<domain>.module.ts # registered in app.module.ts
server/src/nest/<domain>/<domain>.mcp.ts # MCP tools/resources/prompts (@Tool, @Resource, @Prompt)
server/src/nest/<domain>/<domain>.rpc.ts # plugin RPC methods (@PluginMethod), see plugins/host/rpc-kit/README.md
server/src/nest/<domain>/<domain>.rpc.ts # plugin RPC methods (@PluginMethod), see src/nest-rpc/rpc-kit/README.md
server/src/nest/<domain>/<name>.job.ts # a cron, registered on scheduling/CronRegistrarService
server/src/nest/<domain>/<domain>.helpers.ts # pure functions the service and its tests share
```
@@ -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';
/**
@@ -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';
@@ -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';
+5 -5
View File
@@ -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';
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
+2 -2
View File
@@ -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';
/**
+1 -1
View File
@@ -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';
/**
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
@@ -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';
@@ -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';
@@ -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';
+5 -5
View File
@@ -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';
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
@@ -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';
+5 -5
View File
@@ -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';
@@ -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';
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
@@ -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';
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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';
/**
@@ -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';
+5 -5
View File
@@ -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';
@@ -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. */
@@ -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';
@@ -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';
@@ -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';
+4 -4
View File
@@ -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';
/**
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
+1 -1
View File
@@ -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';
+5 -5
View File
@@ -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';
+1 -1
View File
@@ -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';
+4 -4
View File
@@ -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';
+2 -2
View File
@@ -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';
/**
+3 -3
View File
@@ -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';
@@ -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';
@@ -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';
+2 -2
View File
@@ -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';
+2 -2
View File
@@ -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';
@@ -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';
+2 -2
View File
@@ -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';
@@ -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';
@@ -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);
@@ -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',
@@ -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 {
@@ -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',
@@ -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';
+2 -2
View File
@@ -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';
@@ -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';
@@ -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';
+3 -3
View File
@@ -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';
@@ -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 {
@@ -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 {
@@ -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';
@@ -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';
@@ -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,
@@ -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<string, unknown> = {}): RpcRequest => ({ k: 'req', id: 'x', method, params });
const err = (r: unknown) => (r as RpcError).error;
@@ -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';
+3 -3
View File
@@ -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';
@@ -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';
@@ -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';
@@ -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'),
+3 -3
View File
@@ -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';
+2 -2
View File
@@ -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';
+2 -2
View File
@@ -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';
+3
View File
@@ -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