UNPKG

2.56 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.generateTypes = void 0;
4const utils_1 = require("./utils");
5const strings_1 = require("./strings");
6const jsdoc_1 = require("./utilities/jsdoc");
7function generateTypes(types, config) {
8 let code = strings_1.AUTOGENERATED_COMMENT;
9 try {
10 code += types
11 .sort(({ name }, { name: _name }) => utils_1.isAscending(name, _name))
12 .reduce((prev, { name: _name, schema, description }) => {
13 const name = utils_1.getSchemaName(_name);
14 prev += `
15 ${jsdoc_1.getJsdoc(Object.assign(Object.assign({}, schema), { description: description || (schema === null || schema === void 0 ? void 0 : schema.description), deprecated: (schema === null || schema === void 0 ? void 0 : schema.deprecated)
16 ? (schema === null || schema === void 0 ? void 0 : schema["x-deprecatedMessage"]) || String(schema === null || schema === void 0 ? void 0 : schema.deprecated)
17 : undefined }))}
18 ${getTypeDefinition(name, schema, config)}
19 `;
20 return prev;
21 }, "");
22 return code;
23 }
24 catch (error) {
25 console.error({ error });
26 return "";
27 }
28}
29exports.generateTypes = generateTypes;
30function getTypeDefinition(name, schema = {}, config) {
31 const { type, enum: Enum, "x-enumNames": enumNames, allOf, oneOf, items, $ref, additionalProperties, properties, } = schema;
32 if (Enum) {
33 if (config.generateEnumAsType) {
34 return `export type ${name} =${Enum.map((e) => `"${e}"`).join(" | ")};`;
35 }
36 return `export enum ${name} {${Enum.map((e, index) => `${enumNames ? enumNames[index] : e}=${typeof e === "string" ? `"${e}"` : `${e}`}`)}}`;
37 }
38 if (allOf || oneOf) {
39 return `export type ${name} = ${utils_1.getTsType(schema, config)}`;
40 }
41 if (type === "array" && items) {
42 return `export type ${name} = ${utils_1.getTsType(items, config)}[]`;
43 }
44 if ($ref) {
45 return `export type ${name} = ${utils_1.getRefName($ref)}`;
46 }
47 if (type === "object") {
48 const typeObject = utils_1.getTsType(schema, config);
49 if ((additionalProperties || properties) && !oneOf) {
50 return `export interface ${name} ${typeObject}`;
51 }
52 return `export type ${name} = ${typeObject}`;
53 }
54 if (type === "string") {
55 return `export type ${name} = ${type}`;
56 }
57 return `export type ${name} = any`;
58}
59//# sourceMappingURL=generateTypes.js.map
\No newline at end of file