mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-22 06:56:35 +00:00
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:
+4
-4
@@ -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';
|
||||
|
||||
/**
|
||||
+6
-6
@@ -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';
|
||||
+7
-4
@@ -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
-1
@@ -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';
|
||||
|
||||
/**
|
||||
+1
-1
@@ -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,
|
||||
+2
-2
@@ -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.
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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,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';
|
||||
|
||||
/**
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
/**
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user