From e0fc39066d3d9b2173e59120df4afe32c776faac Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Thu, 3 Jul 2025 19:37:50 +0100 Subject: [PATCH] rename + switch position of RemovePassthrough --- src/spec.types.test.ts | 242 ++++++++++++++++++++++------------------- 1 file changed, 130 insertions(+), 112 deletions(-) diff --git a/src/spec.types.test.ts b/src/spec.types.test.ts index bdfd953b..515079bf 100644 --- a/src/spec.types.test.ts +++ b/src/spec.types.test.ts @@ -7,14 +7,14 @@ import * as SpecTypes from "./spec.types.js"; // Deep version that recursively removes index signatures (caused by ZodObject.passthrough()) and turns unknowns into `object | undefined` // TODO: make string index mapping tighter -// TODO: split into multiple transformations (e.g. RemovePassthrough) and only use the ones needed for each type. -type DeepKnownKeys = T extends object +// TODO: split into multiple transformations if needed +type RemovePassthrough = T extends object ? T extends Array - ? Array> + ? Array> : T extends Function ? T : { - [K in keyof T as string extends K ? never : number extends K ? never : K]: DeepKnownKeys; + [K in keyof T as string extends K ? never : number extends K ? never : K]: RemovePassthrough; } : unknown extends T ? (object | undefined) @@ -28,22 +28,22 @@ function checkCancelledNotification( spec = sdk; } function checkBaseMetadata( - sdk: SDKTypes.BaseMetadata, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.BaseMetadata ) { sdk = spec; spec = sdk; } function checkImplementation( - sdk: SDKTypes.Implementation, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.Implementation ) { sdk = spec; spec = sdk; } function checkProgressNotification( - sdk: SDKTypes.ProgressNotification, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ProgressNotification ) { sdk = spec; spec = sdk; @@ -85,29 +85,44 @@ function checkListRootsRequest( spec = sdk; } function checkListRootsResult( - sdk: SDKTypes.ListRootsResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ListRootsResult ) { sdk = spec; spec = sdk; } -function checkRoot(sdk: SDKTypes.Root, spec: DeepKnownKeys) { +function checkRoot( + sdk: RemovePassthrough, + spec: SpecTypes.Root +) { sdk = spec; spec = sdk; } -function checkElicitRequest(sdk: SDKTypes.ElicitRequest, spec: DeepKnownKeys) { +function checkElicitRequest( + sdk: RemovePassthrough, + spec: SpecTypes.ElicitRequest +) { sdk = spec; spec = sdk; } -function checkElicitResult(sdk: SDKTypes.ElicitResult, spec: DeepKnownKeys) { +function checkElicitResult( + sdk: RemovePassthrough, + spec: SpecTypes.ElicitResult +) { sdk = spec; spec = sdk; } -function checkCompleteRequest(sdk: SDKTypes.CompleteRequest, spec: DeepKnownKeys) { +function checkCompleteRequest( + sdk: RemovePassthrough, + spec: SpecTypes.CompleteRequest +) { sdk = spec; spec = sdk; } -function checkCompleteResult(sdk: SDKTypes.CompleteResult, spec: SpecTypes.CompleteResult) { +function checkCompleteResult( + sdk: SDKTypes.CompleteResult, + spec: SpecTypes.CompleteResult +) { sdk = spec; spec = sdk; } @@ -118,7 +133,10 @@ function checkProgressToken( sdk = spec; spec = sdk; } -function checkCursor(sdk: SDKTypes.Cursor, spec: SpecTypes.Cursor) { +function checkCursor( + sdk: SDKTypes.Cursor, + spec: SpecTypes.Cursor +) { sdk = spec; spec = sdk; } @@ -200,36 +218,36 @@ function checkServerResult( spec = sdk; } function checkResourceTemplateReference( - sdk: SDKTypes.ResourceTemplateReference, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ResourceTemplateReference ) { sdk = spec; spec = sdk; } function checkPromptReference( - sdk: SDKTypes.PromptReference, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.PromptReference ) { sdk = spec; spec = sdk; } function checkResourceReference( - sdk: SDKTypes.ResourceReference, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ResourceTemplateReference ) { sdk = spec; spec = sdk; } function checkToolAnnotations( - sdk: SDKTypes.ToolAnnotations, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ToolAnnotations ) { sdk = spec; spec = sdk; } function checkTool( - sdk: SDKTypes.Tool, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.Tool ) { sdk = spec; spec = sdk; @@ -242,15 +260,15 @@ function checkListToolsRequest( spec = sdk; } function checkListToolsResult( - sdk: SDKTypes.ListToolsResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ListToolsResult ) { sdk = spec; spec = sdk; } function checkCallToolResult( - sdk: SDKTypes.CallToolResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.CallToolResult ) { sdk = spec; spec = sdk; @@ -298,15 +316,15 @@ function checkResourceUpdatedNotification( spec = sdk; } function checkSamplingMessage( - sdk: SDKTypes.SamplingMessage, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.SamplingMessage ) { sdk = spec; spec = sdk; } function checkCreateMessageResult( - sdk: SDKTypes.CreateMessageResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.CreateMessageResult ) { sdk = spec; spec = sdk; @@ -340,8 +358,8 @@ function checkListResourcesRequest( spec = sdk; } function checkListResourcesResult( - sdk: SDKTypes.ListResourcesResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ListResourcesResult ) { sdk = spec; spec = sdk; @@ -354,8 +372,8 @@ function checkListResourceTemplatesRequest( spec = sdk; } function checkListResourceTemplatesResult( - sdk: SDKTypes.ListResourceTemplatesResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ListResourceTemplatesResult ) { sdk = spec; spec = sdk; @@ -368,57 +386,57 @@ function checkReadResourceRequest( spec = sdk; } function checkReadResourceResult( - sdk: SDKTypes.ReadResourceResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ReadResourceResult ) { sdk = spec; spec = sdk; } function checkResourceContents( - sdk: SDKTypes.ResourceContents, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ResourceContents ) { sdk = spec; spec = sdk; } function checkTextResourceContents( - sdk: SDKTypes.TextResourceContents, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.TextResourceContents ) { sdk = spec; spec = sdk; } function checkBlobResourceContents( - sdk: SDKTypes.BlobResourceContents, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.BlobResourceContents ) { sdk = spec; spec = sdk; } function checkResource( - sdk: SDKTypes.Resource, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.Resource ) { sdk = spec; spec = sdk; } function checkResourceTemplate( - sdk: SDKTypes.ResourceTemplate, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ResourceTemplate ) { sdk = spec; spec = sdk; } function checkPromptArgument( - sdk: SDKTypes.PromptArgument, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.PromptArgument ) { sdk = spec; spec = sdk; } function checkPrompt( - sdk: SDKTypes.Prompt, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.Prompt ) { sdk = spec; spec = sdk; @@ -431,8 +449,8 @@ function checkListPromptsRequest( spec = sdk; } function checkListPromptsResult( - sdk: SDKTypes.ListPromptsResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ListPromptsResult ) { sdk = spec; spec = sdk; @@ -445,154 +463,154 @@ function checkGetPromptRequest( spec = sdk; } function checkTextContent( - sdk: SDKTypes.TextContent, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.TextContent ) { sdk = spec; spec = sdk; } function checkImageContent( - sdk: SDKTypes.ImageContent, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ImageContent ) { sdk = spec; spec = sdk; } function checkAudioContent( - sdk: SDKTypes.AudioContent, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.AudioContent ) { sdk = spec; spec = sdk; } function checkEmbeddedResource( - sdk: SDKTypes.EmbeddedResource, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.EmbeddedResource ) { sdk = spec; spec = sdk; } function checkResourceLink( - sdk: SDKTypes.ResourceLink, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ResourceLink ) { sdk = spec; spec = sdk; } function checkContentBlock( - sdk: SDKTypes.ContentBlock, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.ContentBlock ) { sdk = spec; spec = sdk; } function checkPromptMessage( - sdk: SDKTypes.PromptMessage, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.PromptMessage ) { sdk = spec; spec = sdk; } function checkGetPromptResult( - sdk: SDKTypes.GetPromptResult, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.GetPromptResult ) { sdk = spec; spec = sdk; } function checkBooleanSchema( - sdk: SDKTypes.BooleanSchema, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.BooleanSchema ) { sdk = spec; spec = sdk; } function checkStringSchema( - sdk: SDKTypes.StringSchema, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.StringSchema ) { sdk = spec; spec = sdk; } function checkNumberSchema( - sdk: SDKTypes.NumberSchema, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.NumberSchema ) { sdk = spec; spec = sdk; } function checkEnumSchema( - sdk: SDKTypes.EnumSchema, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.EnumSchema ) { sdk = spec; spec = sdk; } function checkPrimitiveSchemaDefinition( - sdk: SDKTypes.PrimitiveSchemaDefinition, - spec: DeepKnownKeys + sdk: RemovePassthrough, + spec: SpecTypes.PrimitiveSchemaDefinition +) { + sdk = spec; + spec = sdk; +} +function checkJSONRPCError( + sdk: SDKTypes.JSONRPCError, + spec: SpecTypes.JSONRPCError +) { + sdk = spec; + spec = sdk; +} +function checkJSONRPCMessage( + sdk: SDKTypes.JSONRPCMessage, + spec: SpecTypes.JSONRPCMessage ) { sdk = spec; spec = sdk; } function checkCreateMessageRequest( - sdk: DeepKnownKeys, // TODO(quirk): some {} type - spec: DeepKnownKeys + sdk: RemovePassthrough, // TODO(quirk): some {} typ>e + spec: SpecTypes.CreateMessageRequest ) { sdk = spec; spec = sdk; } function checkInitializeRequest( - sdk: DeepKnownKeys, // TODO(quirk): some {} type + sdk: RemovePassthrough, // TODO(quirk): some {} type spec: SpecTypes.InitializeRequest ) { sdk = spec; spec = sdk; } function checkInitializeResult( - sdk: DeepKnownKeys, // TODO(quirk): some {} type + sdk: RemovePassthrough, // TODO(quirk): some {} type spec: SpecTypes.InitializeResult ) { sdk = spec; spec = sdk; } function checkClientCapabilities( - sdk: DeepKnownKeys, // TODO(quirk): {} + sdk: RemovePassthrough, // TODO(quirk): {} spec: SpecTypes.ClientCapabilities ) { sdk = spec; spec = sdk; } function checkServerCapabilities( - sdk: DeepKnownKeys, // TODO(quirk): {} + sdk: RemovePassthrough, // TODO(quirk): {} spec: SpecTypes.ServerCapabilities ) { sdk = spec; spec = sdk; } -function checkJSONRPCError( - sdk: DeepKnownKeys, // TODO(quirk): error.data - spec: DeepKnownKeys -) { - sdk = spec; - spec = sdk; -} -function checkJSONRPCMessage( - sdk: DeepKnownKeys, // TODO(quirk): error.data - spec: DeepKnownKeys -) { - sdk = spec; - spec = sdk; -} function checkClientRequest( - sdk: DeepKnownKeys, // TODO(quirk): capabilities.logging is {} + sdk: RemovePassthrough, // TODO(quirk): capabilities.logging is {} spec: SpecTypes.ClientRequest ) { sdk = spec; spec = sdk; } function checkServerRequest( - sdk: DeepKnownKeys, // TODO(quirk): some {} typ + sdk: RemovePassthrough, // TODO(quirk): some {} typ spec: SpecTypes.ServerRequest ) { sdk = spec; @@ -615,8 +633,8 @@ function checkServerNotification( // TODO(bug): missing type in SDK // function checkModelHint( -// sdk: SDKTypes.ModelHint, -// spec: DeepKnownKeys +// RemovePassthrough< sdk: SDKTypes.ModelHint>, +// spec: SpecTypes.ModelHint // ) { // sdk = spec; // spec = sdk; @@ -624,8 +642,8 @@ function checkServerNotification( // TODO(bug): missing type in SDK // function checkModelPreferences( -// sdk: SDKTypes.ModelPreferences, -// spec: DeepKnownKeys +// RemovePassthrough< sdk: SDKTypes.ModelPreferences>, +// spec: SpecTypes.ModelPreferences // ) { // sdk = spec; // spec = sdk; @@ -633,8 +651,8 @@ function checkServerNotification( // TODO(bug): missing type in SDK // function checkAnnotations( -// sdk: SDKTypes.Annotations, -// spec: DeepKnownKeys +// RemovePassthrough< sdk: SDKTypes.Annotations>, +// spec: SpecTypes.Annotations // ) { // sdk = spec; // spec = sdk;