UNPKG

3.52 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.generateApis = void 0;
4const utils_1 = require("./utils");
5const strings_1 = require("./strings");
6const jsdoc_1 = require("./utilities/jsdoc");
7function generateApis(apis, types, config) {
8 let code = strings_1.SERVICE_BEGINNING;
9 try {
10 const apisCode = apis
11 .sort(({ serviceName }, { serviceName: _serviceName }) => utils_1.isAscending(serviceName, _serviceName))
12 .reduce((prev, { contentType, summary, deprecated, serviceName, queryParamsTypeName, pathParams, requestBody, headerParams, isQueryParamsNullable, isHeaderParamsNullable, responses, method, endPoint, pathParamsRefString, additionalAxiosConfig, security, }) => {
13 return (prev +
14 `
15${jsdoc_1.getJsdoc({
16 description: summary,
17 deprecated: deprecated ? strings_1.DEPRECATED_WARM_MESSAGE : undefined,
18 })}export const ${serviceName} = (
19 ${
20 /** Path parameters */
21 pathParams
22 .map(({ name, required, schema, description }) => utils_1.getDefineParam(name, required, schema, config, description))
23 .join(",")}${pathParams.length > 0 ? "," : ""}${
24 /** Request Body */
25 requestBody
26 ? `${utils_1.getDefineParam("requestBody", true, requestBody, config)},`
27 : ""}${
28 /** Query parameters */
29 queryParamsTypeName
30 ? `${utils_1.getParamString("queryParams", !isQueryParamsNullable, queryParamsTypeName)},`
31 : ""}${
32 /** Header parameters */
33 headerParams
34 ? `${utils_1.getParamString("headerParams", !isHeaderParamsNullable, headerParams)},`
35 : ""}configOverride?:AxiosRequestConfig
36): Promise<SwaggerResponse<${responses ? utils_1.getTsType(responses, config) : "any"}>> => {
37 ${deprecated
38 ? `
39 if (__DEV__) {
40 console.warn(
41 "${serviceName}",
42 "${strings_1.DEPRECATED_WARM_MESSAGE}",
43 );
44 }`
45 : ""}
46 return Http.${method}Request(
47 ${pathParamsRefString
48 ? `template(${serviceName}.key,${pathParamsRefString})`
49 : `${serviceName}.key`},
50 ${queryParamsTypeName ? "queryParams" : "undefined"},
51 ${requestBody
52 ? contentType === "multipart/form-data" ||
53 contentType === "application/x-www-form-urlencoded"
54 ? "objToForm(requestBody)"
55 : "requestBody"
56 : "undefined"},
57 ${security},
58 overrideConfig(${additionalAxiosConfig},
59 configOverride,
60 )
61 )
62}
63
64/** Key is end point string without base url */
65${serviceName}.key = "${endPoint}";
66`);
67 }, "");
68 code +=
69 types.reduce((prev, { name: _name }) => {
70 const name = utils_1.getSchemaName(_name);
71 if (!utils_1.isMatchWholeWord(apisCode, name)) {
72 return prev;
73 }
74 return prev + ` ${name},`;
75 }, "import {") + '} from "./types"\n';
76 code += strings_1.SERVICE_NEEDED_FUNCTIONS;
77 code += apisCode;
78 return code;
79 }
80 catch (error) {
81 console.error(error);
82 return "";
83 }
84}
85exports.generateApis = generateApis;
86//# sourceMappingURL=generateApis.js.map
\No newline at end of file