react-query-lightbase-codegen 2.5.8 → 2.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -63,6 +63,11 @@ function generateAxiosMethod(operation, spec) {
63
63
  requestBody.content?.["application/json;charset=UTF-8"]?.schema)
64
64
  : undefined;
65
65
  const requestBodySchema = content ? resolveSchema(content, spec) : undefined;
66
+ // Check if request body is a primitive type (string, number, boolean)
67
+ const isPrimitiveRequestBody = requestBodySchema &&
68
+ !requestBodySchema.properties &&
69
+ !requestBodySchema.type?.includes("object") &&
70
+ !requestBodySchema.type?.includes("array");
66
71
  // Add request body type if it exists
67
72
  const hasData = (parameters && parameters.length > 0) || operation.requestBody;
68
73
  const namedType = (0, utils_1.pascalCase)(operationId);
@@ -71,8 +76,14 @@ function generateAxiosMethod(operation, spec) {
71
76
  ? `T.${`${namedType}Response${responseDetails[0]}`}`
72
77
  : "unknown";
73
78
  const urlWithParams = urlParams.length > 0 ? `\`${path.replace(/{(\w+)}/g, "${encodeURIComponent(data.$1)}")}\`` : `"${path}"`;
79
+ // Handle destructuring based on whether we have primitive request body
80
+ const destructuringLine = hasData
81
+ ? isPrimitiveRequestBody
82
+ ? "const { axiosConfig = {}, data } = props || {};"
83
+ : "const { axiosConfig = {}, ...data } = props || {};"
84
+ : "const { axiosConfig } = props || {};";
74
85
  const methodBody = [
75
- `${hasData ? "const { axiosConfig = {}, ...data } = props || {};" : "const { axiosConfig } = props || {};"}`,
86
+ destructuringLine,
76
87
  "const apiClient = getApiClient();",
77
88
  `const url = ${urlWithParams};`,
78
89
  queryParams.length > 0
@@ -94,9 +105,9 @@ function generateAxiosMethod(operation, spec) {
94
105
  const schemaProperty = prop;
95
106
  const isBinary = schemaProperty.format === "binary";
96
107
  return formDataSchema?.required?.includes(key)
97
- ? `bodyData.append("${key}", ${isBinary ? "" : "String("}${queryParams.length > 0 ? "bodyData" : "data"}.${key}${isBinary ? "" : ")"});`
98
- : `if (${queryParams.length > 0 ? "bodyData" : "data"}.${key} != null) {
99
- bodyData.append("${key}", ${isBinary ? "" : "String("}${queryParams.length > 0 ? "bodyData" : "data"}.${key}${isBinary ? "" : ")"});
108
+ ? `bodyData.append("${key}", ${isBinary ? "" : "String("}data.${key}${isBinary ? "" : ")"});`
109
+ : `if (data.${key} != null) {
110
+ bodyData.append("${key}", ${isBinary ? "" : "String("}data.${key}${isBinary ? "" : ")"});
100
111
  }`;
101
112
  })
102
113
  .join("\n ")}`
@@ -122,7 +133,9 @@ function generateAxiosMethod(operation, spec) {
122
133
  // ${requestBody ? `data: ${isFormData ? "formData" : "bodyData"},` : ""}
123
134
  // ${isFormData ? `config: { headers: { 'Content-Type': 'multipart/form-data', ...axiosConfig?.headers }, ...axiosConfig },` : "...axiosConfig"}
124
135
  const requestParms = hasData
125
- ? `props: T.${(0, utils_1.pascalCase)(operationId)}Params & { axiosConfig?: AxiosRequestConfig; }`
136
+ ? isPrimitiveRequestBody
137
+ ? `props: { data: T.${(0, utils_1.pascalCase)(operationId)}Params; axiosConfig?: AxiosRequestConfig; }`
138
+ : `props: T.${(0, utils_1.pascalCase)(operationId)}Params & { axiosConfig?: AxiosRequestConfig; }`
126
139
  : "props?: { axiosConfig?: AxiosRequestConfig }";
127
140
  return `
128
141
  ${jsDocLines.join("\n ")}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-query-lightbase-codegen",
3
- "version": "2.5.8",
3
+ "version": "2.5.9",
4
4
  "license": "MIT",
5
5
  "description": "Generate Axios API clients and React Query options from OpenAPI specifications",
6
6
  "exports": "./dist/index.js",
@@ -89,6 +89,13 @@ function generateAxiosMethod(operation: OperationInfo, spec: OpenAPIV3.Document)
89
89
 
90
90
  const requestBodySchema = content ? resolveSchema(content, spec) : undefined;
91
91
 
92
+ // Check if request body is a primitive type (string, number, boolean)
93
+ const isPrimitiveRequestBody =
94
+ requestBodySchema &&
95
+ !requestBodySchema.properties &&
96
+ !requestBodySchema.type?.includes("object") &&
97
+ !requestBodySchema.type?.includes("array");
98
+
92
99
  // Add request body type if it exists
93
100
  const hasData = (parameters && parameters.length > 0) || operation.requestBody;
94
101
 
@@ -104,8 +111,15 @@ function generateAxiosMethod(operation: OperationInfo, spec: OpenAPIV3.Document)
104
111
  const urlWithParams =
105
112
  urlParams.length > 0 ? `\`${path.replace(/{(\w+)}/g, "${encodeURIComponent(data.$1)}")}\`` : `"${path}"`;
106
113
 
114
+ // Handle destructuring based on whether we have primitive request body
115
+ const destructuringLine = hasData
116
+ ? isPrimitiveRequestBody
117
+ ? "const { axiosConfig = {}, data } = props || {};"
118
+ : "const { axiosConfig = {}, ...data } = props || {};"
119
+ : "const { axiosConfig } = props || {};";
120
+
107
121
  const methodBody = [
108
- `${hasData ? "const { axiosConfig = {}, ...data } = props || {};" : "const { axiosConfig } = props || {};"}`,
122
+ destructuringLine,
109
123
  "const apiClient = getApiClient();",
110
124
  `const url = ${urlWithParams};`,
111
125
  queryParams.length > 0
@@ -129,9 +143,9 @@ function generateAxiosMethod(operation: OperationInfo, spec: OpenAPIV3.Document)
129
143
  const schemaProperty = prop as OpenAPIV3.SchemaObject;
130
144
  const isBinary = schemaProperty.format === "binary";
131
145
  return formDataSchema?.required?.includes(key)
132
- ? `bodyData.append("${key}", ${isBinary ? "" : "String("}${queryParams.length > 0 ? "bodyData" : "data"}.${key}${isBinary ? "" : ")"});`
133
- : `if (${queryParams.length > 0 ? "bodyData" : "data"}.${key} != null) {
134
- bodyData.append("${key}", ${isBinary ? "" : "String("}${queryParams.length > 0 ? "bodyData" : "data"}.${key}${isBinary ? "" : ")"});
146
+ ? `bodyData.append("${key}", ${isBinary ? "" : "String("}data.${key}${isBinary ? "" : ")"});`
147
+ : `if (data.${key} != null) {
148
+ bodyData.append("${key}", ${isBinary ? "" : "String("}data.${key}${isBinary ? "" : ")"});
135
149
  }`;
136
150
  })
137
151
  .join("\n ")}`
@@ -159,7 +173,9 @@ function generateAxiosMethod(operation: OperationInfo, spec: OpenAPIV3.Document)
159
173
  // ${isFormData ? `config: { headers: { 'Content-Type': 'multipart/form-data', ...axiosConfig?.headers }, ...axiosConfig },` : "...axiosConfig"}
160
174
 
161
175
  const requestParms = hasData
162
- ? `props: T.${pascalCase(operationId)}Params & { axiosConfig?: AxiosRequestConfig; }`
176
+ ? isPrimitiveRequestBody
177
+ ? `props: { data: T.${pascalCase(operationId)}Params; axiosConfig?: AxiosRequestConfig; }`
178
+ : `props: T.${pascalCase(operationId)}Params & { axiosConfig?: AxiosRequestConfig; }`
163
179
  : "props?: { axiosConfig?: AxiosRequestConfig }";
164
180
 
165
181
  return `