UNPKG

@typespec/openapi3

Version:

TypeSpec library for emitting OpenAPI 3.0 and OpenAPI 3.1 from the TypeSpec REST protocol binding and converting OpenAPI3 to TypeSpec

51 lines 1.6 kB
import { isDefaultResponse } from "@typespec/openapi"; import { createDiagnostic } from "./lib.js"; export function getOpenAPI3StatusCodes(program, statusCodes, response) { if (isDefaultResponse(program, response) || statusCodes === "*") { return [["default"], []]; } else if (typeof statusCodes === "number") { return [[String(statusCodes)], []]; } else { return rangeToOpenAPI(statusCodes, response); } } function rangeToOpenAPI(range, diagnosticTarget) { const diagnostics = []; const reportInvalid = () => diagnostics.push(createDiagnostic({ code: "unsupported-status-code-range", format: { start: String(range.start), end: String(range.end) }, target: diagnosticTarget, })); const codes = []; let start = range.start; let end = range.end; if (range.start < 100) { reportInvalid(); start = 100; codes.push("default"); } else if (range.end > 599) { reportInvalid(); codes.push("default"); end = 599; } const groups = [1, 2, 3, 4, 5]; for (const group of groups) { if (start > end) { break; } const groupStart = group * 100; const groupEnd = groupStart + 99; if (start >= groupStart && start <= groupEnd) { codes.push(`${group}XX`); if (start !== groupStart || end < groupEnd) { reportInvalid(); } start = groupStart + 100; } } return [codes, diagnostics]; } //# sourceMappingURL=status-codes.js.map