UNPKG

@frostup/swr-request-generator

Version:

A tool for generating TypeScript code and interface from swagger by using SWR and axios as client.

73 lines (72 loc) 2.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertJsonToString = exports.toTypes = exports.prettifyCode = exports.arrayToObject = exports.addPrefixForInterface = exports.toCapitalCase = void 0; const lodash_1 = require("lodash"); const prettier_1 = __importDefault(require("prettier")); const specifications_1 = require("./specifications"); const constants_1 = require("../constants"); const toCapitalCase = (str) => { if (!str) { return ""; } const camelStr = lodash_1.camelCase(str); return `${camelStr.charAt(0).toUpperCase()}${camelStr.slice(1)}`; }; exports.toCapitalCase = toCapitalCase; const addPrefix = (prefix) => (str = "") => `${prefix}${str}`; exports.addPrefixForInterface = addPrefix("I"); const arrayToObject = (arr = []) => { let obj = {}; lodash_1.forEach(arr, (item) => { obj[item] = item; }); return obj; }; exports.arrayToObject = arrayToObject; const prettifyCode = (code) => prettier_1.default.format(code, { printWidth: 120, trailingComma: "all", arrowParens: "always", parser: "typescript", }); exports.prettifyCode = prettifyCode; const toTypes = (definitions) => { if (lodash_1.isEmpty(definitions)) { return; } const fieldDefinitionList = lodash_1.map(definitions, (value, key) => { if (specifications_1.isObject(value) && Object.keys(value).length === 1 && !lodash_1.isEmpty(lodash_1.pickBy(value, (type) => type === "FormData"))) { return `${convertKeyToCamelCaseAndAddQuote(key)}: FormData`; } return specifications_1.isObject(value) ? `${convertKeyToCamelCaseAndAddQuote(key)}: ${JSON.stringify(value).replace(/"/g, "")};` : `${convertKeyToCamelCaseAndAddQuote(key)}: ${lodash_1.replace(value, constants_1.ENUM_SUFFIX, "")};`; }); return (definitions && `{ ${fieldDefinitionList.sort().join("\n")} }`); }; exports.toTypes = toTypes; const convertKeyToCamelCaseAndAddQuote = (key) => { const isOptional = lodash_1.indexOf(key, "?") > -1; key = lodash_1.trimEnd(key, "?"); const isValidVariableName = /^([a-zA-Z_$][a-zA-Z\d_$]*)$/gm.test(key); return `'${isValidVariableName ? key : lodash_1.camelCase(exports.toCapitalCase(key))}'${isOptional ? "?" : ""}`; }; const convertJsonToString = (str, errorMsg = constants_1.ERROR_MESSAGES.INVALID_JSON_FILE_ERROR, output = console.error) => { if (typeof str !== "string") { return; } try { return JSON.parse(str); } catch (e) { output(errorMsg); return; } }; exports.convertJsonToString = convertJsonToString;