persona-community-5/.pnpm-store/v3/files/c9/125abde1a78f4a5cf79686366dd04d64e06e72d9536e004ecd6d1fbc6df6872a5afd3ea0cb68d9b3035ee484b852856e727001c867bd8b1bf23b9681dc9f5d
rdev-worker a1d0d1bf1c
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
build: /implement-feature community-ui --requirements 'Build the React commu...
2026-02-24 08:22:30 +00:00

37 lines
1.3 KiB
Plaintext

import ts from "typescript";
import { addJSDocComment, NEVER, oapiRef, tsModifiers, tsPropertyIndex } from "../lib/ts.js";
import { createRef, getEntries } from "../lib/utils.js";
import type { ResponsesObject, TransformNodeOptions } from "../types.js";
import transformResponseObject from "./response-object.js";
/**
* Transform ResponsesObject nodes (4.8.16)
* @see https://spec.openapis.org/oas/v3.1.0#responses-object
*/
export default function transformResponsesObject(
responsesObject: ResponsesObject,
options: TransformNodeOptions,
): ts.TypeNode {
const type: ts.TypeElement[] = [];
for (const [responseCode, responseObject] of getEntries(responsesObject, options.ctx)) {
const responseType =
"$ref" in responseObject
? oapiRef(responseObject.$ref)
: transformResponseObject(responseObject, {
...options,
path: createRef([options.path, "responses", responseCode]),
});
const property = ts.factory.createPropertySignature(
/* modifiers */ tsModifiers({ readonly: options.ctx.immutable }),
/* name */ tsPropertyIndex(responseCode),
/* questionToken */ undefined,
/* type */ responseType,
);
addJSDocComment(responseObject, property);
type.push(property);
}
return type.length ? ts.factory.createTypeLiteralNode(type) : NEVER;
}