/
githubmirror
/
novu
Обзор
Документация
Войти
/
githubmirror
/
novu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
next
libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.command.ts
76 строк
2 KB
Dima Grossman
fix(api-service): validate environment bridge URLs fixes NV-7752 (#11224)
24 май 2026, 16:26
Не верифицирован
24 май 2026, 16:26
c6bfe99
Код
Авторство
О чём код?
import { CodeResult, DiscoverOutput, Event, ExecuteOutput, GetActionEnum, HealthCheck, HttpQueryKeysEnum, PostActionEnum, } from '@novu/framework/internal'; import { ResourceOriginEnum } from '@novu/shared'; import { IsBoolean, IsDefined, IsOptional, IsString } from 'class-validator'; import { EnvironmentLevelCommand } from '../../commands'; export type BridgeError = { url: string; code: string; message: string; statusCode: number; data?: unknown; cause?: unknown; }; export type ProcessError = (response: BridgeError) => Promise<void>; export class ExecuteBridgeRequestCommand extends EnvironmentLevelCommand { @IsOptional() event?: Omit<Event, `${HttpQueryKeysEnum}`>; @IsOptional() searchParams?: Partial<Record<HttpQueryKeysEnum | 'skipLayoutRendering' | 'jobId' | 'layoutId', string>>; @IsOptional() processError?: ProcessError; @IsDefined() action: PostActionEnum | GetActionEnum; @IsOptional() retriesLimit?: number; @IsDefined() workflowOrigin: ResourceOriginEnum; @IsOptional() statelessBridgeUrl?: string; @IsOptional() @IsString() stepResolverHash?: string; /** * Force SSRF protection on the outbound bridge HTTP call (DNS-pinned * connect-time guard + redirect re-validation via `HttpClientService`). * * `ExecuteFrameworkRequest` also enables the guard automatically for * stateless bridge URLs and EXTERNAL-origin workflows. Set explicitly when * a caller needs the guard outside those cases. */ @IsOptional() @IsBoolean() enforceSsrfProtection?: boolean; } // will generate the output type based on the action export type ExecuteBridgeRequestDto<T extends PostActionEnum | GetActionEnum> = T extends GetActionEnum.DISCOVER ? DiscoverOutput : T extends GetActionEnum.HEALTH_CHECK ? HealthCheck : T extends GetActionEnum.CODE ? CodeResult : T extends PostActionEnum.EXECUTE ? ExecuteOutput : T extends PostActionEnum.PREVIEW ? ExecuteOutput : never;