From ce0cf80ef297c9287a8795609c8857f900b65223 Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Fri, 24 Mar 2023 12:07:44 +0100 Subject: [PATCH] Allow defining output type in createTemplateAction This change allow to define the output type of the createTemplateAction. This is necessary for zod definitions, which results in "Type instantiation is excessively deep and possibly infinite." Signed-off-by: Andreas Berger --- .../api-report.md | 11 ++++++---- plugins/scaffolder-backend/api-report.md | 10 ++++++--- plugins/scaffolder-node/api-report.md | 21 +++++++++++-------- .../src/actions/createTemplateAction.ts | 21 +++++++++++-------- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/api-report.md b/plugins/scaffolder-backend-module-confluence-to-markdown/api-report.md index 398beb5059..53b830c60b 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/api-report.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/api-report.md @@ -13,8 +13,11 @@ export const createConfluenceToMarkdownAction: (options: { reader: UrlReader; integrations: ScmIntegrations; config: Config; -}) => TemplateAction<{ - confluenceUrls: string[]; - repoUrl: string; -}>; +}) => TemplateAction< + { + confluenceUrls: string[]; + repoUrl: string; + }, + unknown +>; ``` diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 6bb1491f5f..c845eb57a1 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -609,13 +609,17 @@ export function createRouter(options: RouterOptions): Promise; // @public @deprecated (undocumented) export const createTemplateAction: < - TParams, + TInputParams, + TOutputParams = unknown, TInputSchema extends ZodType | Schema = {}, TOutputSchema extends ZodType | Schema = {}, TActionInput = TInputSchema extends ZodType ? IReturn - : TParams, - TActionOutput extends ActionOutputType = ActionOutputType, + : TInputParams, + TActionOutput extends ActionOutputType< + TOutputSchema, + TOutputParams + > = ActionOutputType, >( action: TemplateActionOptions< TActionInput, diff --git a/plugins/scaffolder-node/api-report.md b/plugins/scaffolder-node/api-report.md index dfd2d38acd..42f2df7c8b 100644 --- a/plugins/scaffolder-node/api-report.md +++ b/plugins/scaffolder-node/api-report.md @@ -48,25 +48,28 @@ export type ActionContext< }; // @public (undocumented) -export type ActionOutputType = TOutputSchema extends z.ZodType< - any, - any, - infer IReturn -> +export type ActionOutputType< + TOutputSchema, + FallbackOutput = unknown, +> = TOutputSchema extends z.ZodType ? IReturn : TOutputSchema extends undefined ? undefined - : unknown; + : FallbackOutput; // @public export const createTemplateAction: < - TParams, + TInputParams, + TOutputParams = unknown, TInputSchema extends z.ZodType | Schema = {}, TOutputSchema extends z.ZodType | Schema = {}, TActionInput = TInputSchema extends z.ZodType ? IReturn - : TParams, - TActionOutput extends ActionOutputType = ActionOutputType, + : TInputParams, + TActionOutput extends ActionOutputType< + TOutputSchema, + TOutputParams + > = ActionOutputType, >( action: TemplateActionOptions< TActionInput, diff --git a/plugins/scaffolder-node/src/actions/createTemplateAction.ts b/plugins/scaffolder-node/src/actions/createTemplateAction.ts index 56818ccd57..bba568e3e5 100644 --- a/plugins/scaffolder-node/src/actions/createTemplateAction.ts +++ b/plugins/scaffolder-node/src/actions/createTemplateAction.ts @@ -20,15 +20,14 @@ import { Schema } from 'jsonschema'; import zodToJsonSchema from 'zod-to-json-schema'; /** @public */ -export type ActionOutputType = TOutputSchema extends z.ZodType< - any, - any, - infer IReturn -> +export type ActionOutputType< + TOutputSchema, + FallbackOutput = unknown, +> = TOutputSchema extends z.ZodType ? IReturn : TOutputSchema extends undefined ? undefined - : unknown; + : FallbackOutput; /** @public */ export type TemplateActionOptions< @@ -54,13 +53,17 @@ export type TemplateActionOptions< * @public */ export const createTemplateAction = < - TParams, + TInputParams, + TOutputParams = unknown, TInputSchema extends Schema | z.ZodType = {}, TOutputSchema extends Schema | z.ZodType = {}, TActionInput = TInputSchema extends z.ZodType ? IReturn - : TParams, - TActionOutput extends ActionOutputType = ActionOutputType, + : TInputParams, + TActionOutput extends ActionOutputType< + TOutputSchema, + TOutputParams + > = ActionOutputType, >( action: TemplateActionOptions< TActionInput,