Skip to content

Commit

Permalink
default content is now handled properly
Browse files Browse the repository at this point in the history
  • Loading branch information
pmcelhaney committed Jul 26, 2022
1 parent e6a4d4b commit 7ba0fa5
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions src/typescript-generator/build-response-type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ type OmitByValue<Base, Condition> = Pick<
}[keyof Base]
>;

type StatusCodes = "200_OK" | "404_NOT_FOUND" | "500_INTERNAL_SERVER_ERROR";
type StatusCodes =
| "200_OK"
| "404_NOT_FOUND"
| "500_INTERNAL_SERVER_ERROR"
| "503_SERVICE_UNAVAILABLE";

interface CounterfactResponse {
status?: StatusCodes;
Expand Down Expand Up @@ -119,16 +123,20 @@ type FlattenResponses<

// eslint-disable-next-line import/exports-last
export type BuildResponseType<
ResponsesForStatusCode extends {
Responses extends {
[key: string]: {
content: CounterfactResponse;
headers?: { [key: string]: number | string };
};
}
> = {
[StatusCode in keyof ResponsesForStatusCode]: BuildResponseTypeForStatusCode<
ResponsesForStatusCode[StatusCode]["content"] & {
headers: ResponsesForStatusCode[StatusCode]["headers"];
[StatusCode in StatusCodes]: BuildResponseTypeForStatusCode<
Responses[StatusCode extends keyof Responses
? StatusCode
: "DEFAULT"]["content"] & {
headers: Responses[StatusCode extends keyof Responses
? StatusCode
: "DEFAULT"]["headers"];
status: StatusCode;
}
>;
Expand Down Expand Up @@ -181,7 +189,7 @@ export type HTTP_GET = ({
response,
context,
}: {
response: BuildResponseType<Omit<Responses, "DEFAULT">>;
response: BuildResponseType<Responses>;
context: { found: () => boolean; message: () => "Hello World" };
}) => FlattenResponses<Responses>;

Expand Down

0 comments on commit 7ba0fa5

Please sign in to comment.