Skip to content

No infer UParams with Typebox #114

@Manuelbaun

Description

@Manuelbaun

Hi,

I try to get type completion on my endpoints, but it seams it does not work. UParams are not infered.

  // <ApiClient.delete>
  delete<Path extends keyof DeleteEndpoints, TEndpoint extends DeleteEndpoints[Path]>(
    path: Path,
    ...params: MaybeOptionalArg<
      TEndpoint extends { parameters: infer UParams }
        ? NotNever<UParams> extends true
          ? UParams & { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
          : { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
        : { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
    >
  ): Promise<Extract<InferResponseByStatus<Static<TEndpoint>, SuccessStatusCode>, { data: {} }>["data"]>;

the endpoint expects ` { parameters: infer UParams }``to be part of TEndpoint:

export const delete_DeletePurge__token = Type.Object({
  method: Type.Literal("DELETE"),
  path: Type.Literal("/purge-token"),
  requestFormat: Type.Literal("json"),
  parameters: Type.Object({
    query: Type.Partial(
      Type.Object({
        id: Type.String(),
      }),
    ),
  }),
  responses: Type.Object({
    200: Type.Object({
      message: Type.String(),
    }),
    400: Type.Object({
      message: Type.String(),
      details: Type.Optional(Type.Union([Type.Unknown(), Type.Undefined()])),
    }),
    404: Type.Object({
      message: Type.String(),
    }),
    409: Type.Object({
      message: Type.String(),
      details: Type.Optional(Type.Union([Type.Unknown(), Type.Undefined()])),
    }),
  }),
});

TEndpoint would be delete_DeletePurge__token and this is of type

 TObject<{
    method: TLiteral<"DELETE">;
    path: TLiteral<"/purge-token">;
    requestFormat: TLiteral<"json">;
    parameters: TObject<{
        query: TObject<{
            id: TOptional<TString>;
        }>;
    }>;
    responses: TObject<{
        200: TObject<{
            message: TString;
        }>;
        400: TObject<{
            message: TString;
            details: TOptional<TUnion<[TUnknown, TUndefined]>>;
        }>;
        404: TObject<{
            message: TString;
        }>;
        409: TObject<{
            message: TString;
            details: TOptional<...>;
        }>;
    }>;
}>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions