1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.generateApis = void 0;
|
4 | const utils_1 = require("./utils");
|
5 | const strings_1 = require("./strings");
|
6 | const jsdoc_1 = require("./utilities/jsdoc");
|
7 | function 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 | }
|
85 | exports.generateApis = generateApis;
|
86 |
|
\ | No newline at end of file |