typedapi-client-helpers 0.2.1 → 0.3.0

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.
Files changed (124) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +221 -220
  3. package/dist/cjs/httpClient.js +258 -0
  4. package/dist/cjs/httpClient.js.map +1 -0
  5. package/dist/cjs/index.js +32 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/interfaces/ApiResult.js +3 -0
  8. package/dist/cjs/interfaces/ApiResult.js.map +1 -0
  9. package/dist/cjs/interfaces/Filter.js +3 -0
  10. package/dist/cjs/interfaces/Filter.js.map +1 -0
  11. package/dist/cjs/interfaces/SortType.js +3 -0
  12. package/dist/cjs/interfaces/SortType.js.map +1 -0
  13. package/dist/cjs/package.json +3 -0
  14. package/dist/cjs/types/ApiCallOptions.js +3 -0
  15. package/dist/cjs/types/ApiCallOptions.js.map +1 -0
  16. package/dist/cjs/types/ApiMethodArguments.js +3 -0
  17. package/dist/cjs/types/ApiMethodArguments.js.map +1 -0
  18. package/dist/cjs/types/ApiMethodOptions.js +3 -0
  19. package/dist/cjs/types/ApiMethodOptions.js.map +1 -0
  20. package/dist/cjs/types/ApiMethodTypes.js +3 -0
  21. package/dist/cjs/types/ApiMethodTypes.js.map +1 -0
  22. package/dist/cjs/types/HttpResponse.js +3 -0
  23. package/dist/cjs/types/HttpResponse.js.map +1 -0
  24. package/dist/cjs/types/httpClientTypes.js +3 -0
  25. package/dist/cjs/types/httpClientTypes.js.map +1 -0
  26. package/dist/cjs/utils/SortTypeFromSortDirection.js +43 -0
  27. package/dist/cjs/utils/SortTypeFromSortDirection.js.map +1 -0
  28. package/dist/cjs/utils/buildQuery.js +96 -0
  29. package/dist/cjs/utils/buildQuery.js.map +1 -0
  30. package/dist/cjs/utils/extractArgsCallbacksAndParams.js +51 -0
  31. package/dist/cjs/utils/extractArgsCallbacksAndParams.js.map +1 -0
  32. package/dist/cjs/utils/extractArgsToastsAndParams.js +49 -0
  33. package/dist/cjs/utils/extractArgsToastsAndParams.js.map +1 -0
  34. package/dist/cjs/utils/handleApiResponse.js +124 -0
  35. package/dist/cjs/utils/handleApiResponse.js.map +1 -0
  36. package/dist/cjs/utils/toFormData.js +58 -0
  37. package/dist/cjs/utils/toFormData.js.map +1 -0
  38. package/dist/cjs/utils/wireMapping.js +123 -0
  39. package/dist/cjs/utils/wireMapping.js.map +1 -0
  40. package/dist/esm/httpClient.js +251 -0
  41. package/dist/esm/httpClient.js.map +1 -0
  42. package/dist/esm/index.js +16 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/interfaces/ApiResult.js +2 -0
  45. package/dist/esm/interfaces/ApiResult.js.map +1 -0
  46. package/dist/esm/interfaces/Filter.js +2 -0
  47. package/dist/esm/interfaces/Filter.js.map +1 -0
  48. package/dist/esm/interfaces/SortType.js +2 -0
  49. package/dist/esm/interfaces/SortType.js.map +1 -0
  50. package/dist/esm/types/ApiCallOptions.js +2 -0
  51. package/dist/esm/types/ApiCallOptions.js.map +1 -0
  52. package/dist/esm/types/ApiMethodArguments.js +2 -0
  53. package/dist/esm/types/ApiMethodArguments.js.map +1 -0
  54. package/dist/esm/types/ApiMethodOptions.js +2 -0
  55. package/dist/esm/types/ApiMethodOptions.js.map +1 -0
  56. package/dist/esm/types/ApiMethodTypes.js +2 -0
  57. package/dist/esm/types/ApiMethodTypes.js.map +1 -0
  58. package/dist/esm/types/HttpResponse.js +2 -0
  59. package/dist/esm/types/HttpResponse.js.map +1 -0
  60. package/dist/esm/types/httpClientTypes.js +2 -0
  61. package/dist/esm/types/httpClientTypes.js.map +1 -0
  62. package/dist/esm/utils/SortTypeFromSortDirection.js +38 -0
  63. package/dist/esm/utils/SortTypeFromSortDirection.js.map +1 -0
  64. package/dist/esm/utils/buildQuery.js +93 -0
  65. package/dist/esm/utils/buildQuery.js.map +1 -0
  66. package/dist/esm/utils/extractArgsCallbacksAndParams.js +48 -0
  67. package/dist/esm/utils/extractArgsCallbacksAndParams.js.map +1 -0
  68. package/dist/esm/utils/extractArgsToastsAndParams.js +46 -0
  69. package/dist/esm/utils/extractArgsToastsAndParams.js.map +1 -0
  70. package/dist/esm/utils/handleApiResponse.js +121 -0
  71. package/dist/esm/utils/handleApiResponse.js.map +1 -0
  72. package/dist/esm/utils/toFormData.js +55 -0
  73. package/dist/esm/utils/toFormData.js.map +1 -0
  74. package/dist/esm/utils/wireMapping.js +119 -0
  75. package/dist/esm/utils/wireMapping.js.map +1 -0
  76. package/dist/types/httpClient.d.ts +63 -0
  77. package/dist/types/httpClient.d.ts.map +1 -0
  78. package/dist/types/index.d.ts +16 -0
  79. package/dist/types/index.d.ts.map +1 -0
  80. package/dist/types/interfaces/ApiResult.d.ts +32 -0
  81. package/dist/types/interfaces/ApiResult.d.ts.map +1 -0
  82. package/dist/types/interfaces/Filter.d.ts +31 -0
  83. package/dist/types/interfaces/Filter.d.ts.map +1 -0
  84. package/dist/types/interfaces/SortType.d.ts +7 -0
  85. package/dist/types/interfaces/SortType.d.ts.map +1 -0
  86. package/dist/types/types/ApiCallOptions.d.ts +26 -0
  87. package/dist/types/types/ApiCallOptions.d.ts.map +1 -0
  88. package/dist/types/types/ApiMethodArguments.d.ts +6 -0
  89. package/dist/types/types/ApiMethodArguments.d.ts.map +1 -0
  90. package/dist/types/types/ApiMethodOptions.d.ts +8 -0
  91. package/dist/types/types/ApiMethodOptions.d.ts.map +1 -0
  92. package/dist/types/types/ApiMethodTypes.d.ts +47 -0
  93. package/dist/types/types/ApiMethodTypes.d.ts.map +1 -0
  94. package/dist/types/types/HttpResponse.d.ts +2 -0
  95. package/dist/types/types/HttpResponse.d.ts.map +1 -0
  96. package/dist/types/types/httpClientTypes.d.ts +2 -0
  97. package/dist/types/types/httpClientTypes.d.ts.map +1 -0
  98. package/dist/types/utils/SortTypeFromSortDirection.d.ts +13 -0
  99. package/dist/types/utils/SortTypeFromSortDirection.d.ts.map +1 -0
  100. package/dist/types/utils/buildQuery.d.ts +16 -0
  101. package/dist/types/utils/buildQuery.d.ts.map +1 -0
  102. package/dist/types/utils/extractArgsCallbacksAndParams.d.ts +22 -0
  103. package/dist/types/utils/extractArgsCallbacksAndParams.d.ts.map +1 -0
  104. package/dist/types/utils/extractArgsToastsAndParams.d.ts +20 -0
  105. package/dist/types/utils/extractArgsToastsAndParams.d.ts.map +1 -0
  106. package/dist/types/utils/handleApiResponse.d.ts +11 -0
  107. package/dist/types/utils/handleApiResponse.d.ts.map +1 -0
  108. package/dist/types/utils/toFormData.d.ts +10 -0
  109. package/dist/types/utils/toFormData.d.ts.map +1 -0
  110. package/dist/types/utils/wireMapping.d.ts +30 -0
  111. package/dist/types/utils/wireMapping.d.ts.map +1 -0
  112. package/package.json +90 -84
  113. package/scripts/build.mjs +74 -0
  114. package/scripts/generate-api-minimal.mjs +568 -476
  115. package/scripts/openapi-generator/controller-template.mjs +1 -1
  116. package/scripts/openapi-generator/index.mjs +357 -113
  117. package/scripts/openapi-generator/method-template.mjs +201 -244
  118. package/scripts/openapi-generator/names.mjs +37 -86
  119. package/scripts/openapi-generator/openapi-utils.mjs +411 -147
  120. package/scripts/openapi-generator/schema.mjs +518 -238
  121. package/dist/index.cjs +0 -536
  122. package/dist/index.d.cts +0 -285
  123. package/dist/index.d.ts +0 -285
  124. package/dist/index.js +0 -495
package/dist/index.js DELETED
@@ -1,495 +0,0 @@
1
- // src/httpClient.ts
2
- var ContentType = {
3
- Json: "application/json",
4
- JsonApi: "application/vnd.api+json",
5
- FormData: "multipart/form-data",
6
- UrlEncoded: "application/x-www-form-urlencoded",
7
- Text: "text/plain"
8
- };
9
- function createApiClient(apiConfig = {}) {
10
- const state = {
11
- baseUrl: apiConfig.baseUrl ?? "",
12
- securityData: null,
13
- securityWorker: apiConfig.securityWorker,
14
- customFetch: apiConfig.customFetch ?? ((...fetchParams) => fetch(...fetchParams)),
15
- baseApiParams: {
16
- credentials: "same-origin",
17
- headers: {},
18
- redirect: "follow",
19
- referrerPolicy: "no-referrer",
20
- ...apiConfig.baseApiParams ?? {}
21
- },
22
- abortControllers: /* @__PURE__ */ new Map()
23
- };
24
- function configureApiClient2(nextConfig = {}) {
25
- if (typeof nextConfig.baseUrl === "string") {
26
- state.baseUrl = nextConfig.baseUrl;
27
- }
28
- if (nextConfig.securityWorker) {
29
- state.securityWorker = nextConfig.securityWorker;
30
- }
31
- if (nextConfig.customFetch) {
32
- state.customFetch = nextConfig.customFetch;
33
- }
34
- if (nextConfig.baseApiParams) {
35
- state.baseApiParams = mergeRequestParams(
36
- state.baseApiParams,
37
- nextConfig.baseApiParams
38
- );
39
- }
40
- }
41
- function setSecurityData2(data) {
42
- state.securityData = data;
43
- }
44
- function encodeQueryParam(key, value) {
45
- const encodedKey = encodeURIComponent(key);
46
- const normalizedValue = value instanceof Date ? value.toISOString() : value;
47
- return `${encodedKey}=${encodeURIComponent(String(normalizedValue))}`;
48
- }
49
- function addArrayQueryParam(key, value) {
50
- return value.map((item) => encodeQueryParam(key, item)).join("&");
51
- }
52
- function toQueryString(rawQuery) {
53
- if (!rawQuery) {
54
- return "";
55
- }
56
- return Object.entries(rawQuery).filter(([, value]) => value !== void 0 && value !== null).map(
57
- ([key, value]) => Array.isArray(value) ? addArrayQueryParam(key, value) : encodeQueryParam(key, value)
58
- ).join("&");
59
- }
60
- function contentFormatter(type, input) {
61
- if (input === void 0 || input === null) {
62
- return null;
63
- }
64
- if (input instanceof FormData || input instanceof Blob) {
65
- return input;
66
- }
67
- switch (type ?? ContentType.Json) {
68
- case ContentType.Json:
69
- case ContentType.JsonApi:
70
- return JSON.stringify(input);
71
- case ContentType.Text:
72
- return typeof input === "string" ? input : JSON.stringify(input);
73
- case ContentType.FormData:
74
- return toFormData2(input);
75
- case ContentType.UrlEncoded:
76
- return toQueryString(input);
77
- default:
78
- return input;
79
- }
80
- }
81
- function toFormData2(input) {
82
- if (input instanceof FormData) {
83
- return input;
84
- }
85
- const formData = new FormData();
86
- for (const [key, value] of Object.entries(
87
- input ?? {}
88
- )) {
89
- appendFormDataValue2(formData, key, value);
90
- }
91
- return formData;
92
- }
93
- function appendFormDataValue2(formData, key, value) {
94
- if (value === void 0 || value === null) {
95
- return;
96
- }
97
- if (Array.isArray(value)) {
98
- for (const item of value) {
99
- appendFormDataValue2(formData, key, item);
100
- }
101
- return;
102
- }
103
- if (value instanceof File) {
104
- formData.append(key, value, value.name);
105
- return;
106
- }
107
- if (value instanceof Blob) {
108
- formData.append(key, value);
109
- return;
110
- }
111
- if (typeof value === "object") {
112
- formData.append(key, JSON.stringify(value));
113
- return;
114
- }
115
- formData.append(key, String(value));
116
- }
117
- function mergeRequestParams(params1, params2) {
118
- return {
119
- ...params1,
120
- ...params2 ?? {},
121
- headers: {
122
- ...params1.headers ?? {},
123
- ...params2?.headers ?? {}
124
- }
125
- };
126
- }
127
- function createAbortSignal(cancelToken) {
128
- const existingAbortController = state.abortControllers.get(cancelToken);
129
- if (existingAbortController) {
130
- return existingAbortController.signal;
131
- }
132
- const abortController = new AbortController();
133
- state.abortControllers.set(cancelToken, abortController);
134
- return abortController.signal;
135
- }
136
- function abortRequest2(cancelToken) {
137
- const abortController = state.abortControllers.get(cancelToken);
138
- if (!abortController) {
139
- return;
140
- }
141
- abortController.abort();
142
- state.abortControllers.delete(cancelToken);
143
- }
144
- async function request2({
145
- body,
146
- secure,
147
- path,
148
- type,
149
- query,
150
- baseUrl,
151
- cancelToken,
152
- ...params
153
- }) {
154
- const secureParams = (typeof secure === "boolean" ? secure : state.baseApiParams.secure) && state.securityWorker && await state.securityWorker(state.securityData) || {};
155
- const requestParams = mergeRequestParams(
156
- mergeRequestParams(state.baseApiParams, params),
157
- secureParams
158
- );
159
- const queryString = query ? toQueryString(query) : "";
160
- const url = `${baseUrl ?? state.baseUrl}${path}${queryString ? `?${queryString}` : ""}`;
161
- const requestInit = {
162
- ...requestParams,
163
- headers: {
164
- ...requestParams.headers ?? {},
165
- ...type && type !== ContentType.FormData ? { "Content-Type": type } : {}
166
- },
167
- signal: cancelToken ? createAbortSignal(cancelToken) : requestParams.signal
168
- };
169
- if (body !== void 0 && body !== null) {
170
- requestInit.body = contentFormatter(type, body);
171
- }
172
- const response = await state.customFetch(url, requestInit);
173
- const typedResponse = response;
174
- typedResponse.data = null;
175
- typedResponse.error = null;
176
- if (cancelToken) {
177
- state.abortControllers.delete(cancelToken);
178
- }
179
- if (!response.ok) {
180
- throw typedResponse;
181
- }
182
- return typedResponse;
183
- }
184
- return {
185
- configureApiClient: configureApiClient2,
186
- setSecurityData: setSecurityData2,
187
- abortRequest: abortRequest2,
188
- request: request2,
189
- toQueryString
190
- };
191
- }
192
- var defaultApiClient = createApiClient();
193
- var configureApiClient = defaultApiClient.configureApiClient;
194
- var setSecurityData = defaultApiClient.setSecurityData;
195
- var abortRequest = defaultApiClient.abortRequest;
196
- var request = defaultApiClient.request;
197
-
198
- // src/utils/buildQuery.ts
199
- function buildQuery(filters, page = 1, pageSize = 100, sortBy = null, sortDirection) {
200
- const query = filters.reduce((queryResult, filter) => {
201
- const { filterName, filterNameMax, type, value, maxValue, isAList } = filter;
202
- if (isEmptyValue(value) && isEmptyValue(maxValue)) {
203
- return queryResult;
204
- }
205
- if (isAList && Array.isArray(value)) {
206
- const convertedValues = value.map(
207
- (item) => convertType(type, isOptionValue(item) ? item.value : item)
208
- ).filter((item) => item !== null);
209
- if (convertedValues.length > 0) {
210
- queryResult[filterName] = convertedValues;
211
- }
212
- return queryResult;
213
- }
214
- const rawValue = isOptionValue(value) ? value.value : value;
215
- const convertedValue = convertType(type, rawValue);
216
- if (convertedValue !== null) {
217
- queryResult[filterName] = convertedValue;
218
- }
219
- if (filterNameMax && !isEmptyValue(maxValue)) {
220
- const convertedMaxValue = convertType(type, maxValue);
221
- if (convertedMaxValue !== null) {
222
- queryResult[filterNameMax] = convertedMaxValue;
223
- }
224
- }
225
- return queryResult;
226
- }, {});
227
- query.pageNumber = page;
228
- if (pageSize > 0) {
229
- query.pageSize = pageSize;
230
- }
231
- if (sortBy) {
232
- query.sortBy = sortBy;
233
- }
234
- if (sortDirection !== void 0 && sortDirection !== "Default") {
235
- query.sortDirection = sortDirection;
236
- }
237
- return query;
238
- }
239
- function isEmptyValue(value) {
240
- return value === null || value === void 0 || value === "" || value === "null" || value === "undefined";
241
- }
242
- function isOptionValue(value) {
243
- return typeof value === "object" && value !== null && "value" in value;
244
- }
245
- function convertType(type, value) {
246
- if (isEmptyValue(value)) {
247
- return null;
248
- }
249
- switch (type) {
250
- case "date": {
251
- if (value instanceof Date) {
252
- return Number.isNaN(value.getTime()) ? null : value.toISOString();
253
- }
254
- return value;
255
- }
256
- case "number": {
257
- const numberValue = Number(value);
258
- return Number.isNaN(numberValue) ? null : numberValue;
259
- }
260
- case "boolean":
261
- case "boolean-button": {
262
- if (typeof value === "boolean") {
263
- return value;
264
- }
265
- if (typeof value === "string") {
266
- const normalized = value.trim().toLowerCase();
267
- if (["true", "1", "yes", "on"].includes(normalized)) {
268
- return true;
269
- }
270
- if (["false", "0", "no", "off"].includes(normalized)) {
271
- return false;
272
- }
273
- }
274
- return Boolean(value);
275
- }
276
- default:
277
- return value;
278
- }
279
- }
280
-
281
- // src/utils/extractArgsToastsAndParams.ts
282
- function isCallback(value) {
283
- return typeof value === "function";
284
- }
285
- function isRequestParams(value) {
286
- return typeof value === "object" && value !== null && !Array.isArray(value);
287
- }
288
- function extractArgsToastsAndParams(argsWithCallbacks) {
289
- const values = [...argsWithCallbacks];
290
- let onSuccess;
291
- let onError;
292
- let params;
293
- let lastArgument = values[values.length - 1];
294
- if (isRequestParams(lastArgument)) {
295
- params = lastArgument;
296
- values.pop();
297
- }
298
- lastArgument = values[values.length - 1];
299
- if (isCallback(lastArgument)) {
300
- onError = lastArgument;
301
- values.pop();
302
- }
303
- lastArgument = values[values.length - 1];
304
- if (isCallback(lastArgument)) {
305
- onSuccess = lastArgument;
306
- values.pop();
307
- }
308
- return {
309
- args: values,
310
- onSuccess,
311
- onError,
312
- params
313
- };
314
- }
315
-
316
- // src/utils/extractArgsCallbacksAndParams.ts
317
- function isCallback2(value) {
318
- return typeof value === "function";
319
- }
320
- function isRequestParams2(value) {
321
- return typeof value === "object" && value !== null && !Array.isArray(value);
322
- }
323
- function extractArgsCallbacksAndParams(argsWithCallbacks) {
324
- const values = [...argsWithCallbacks];
325
- let onSuccess;
326
- let onError;
327
- let params;
328
- let lastArgument = values[values.length - 1];
329
- if (isRequestParams2(lastArgument)) {
330
- params = lastArgument;
331
- values.pop();
332
- }
333
- lastArgument = values[values.length - 1];
334
- if (isCallback2(lastArgument)) {
335
- onError = lastArgument;
336
- values.pop();
337
- }
338
- lastArgument = values[values.length - 1];
339
- if (isCallback2(lastArgument)) {
340
- onSuccess = lastArgument;
341
- values.pop();
342
- }
343
- return {
344
- args: values,
345
- onSuccess,
346
- onError,
347
- params
348
- };
349
- }
350
-
351
- // src/utils/handleApiResponse.ts
352
- async function readResponseBody(response) {
353
- if (response.status === 204 || response.status === 205) {
354
- return void 0;
355
- }
356
- const contentType = response.headers.get("content-type") ?? "";
357
- if (contentType.includes("application/octet-stream")) {
358
- return response.blob();
359
- }
360
- const text = await response.text();
361
- if (!text) {
362
- return void 0;
363
- }
364
- if (contentType.includes("json") || contentType.includes("+json")) {
365
- try {
366
- return JSON.parse(text);
367
- } catch {
368
- return text;
369
- }
370
- }
371
- return text;
372
- }
373
- function isResponseLike(value) {
374
- return typeof value === "object" && value !== null && "status" in value && "ok" in value && "headers" in value && typeof value.text === "function";
375
- }
376
- async function handleApiResponse(call, options) {
377
- let response;
378
- try {
379
- response = await call();
380
- const data = await readResponseBody(response.clone());
381
- const result = {
382
- ok: true,
383
- status: response.status,
384
- response: data
385
- };
386
- await options?.onSuccess?.(result);
387
- return result;
388
- } catch (error) {
389
- if (isResponseLike(error)) {
390
- const errorData = await readResponseBody(error.clone());
391
- const result2 = {
392
- ok: false,
393
- status: error.status,
394
- response: void 0,
395
- error: errorData
396
- };
397
- await options?.onError?.(result2);
398
- return result2;
399
- }
400
- const result = {
401
- ok: false,
402
- status: response?.status ?? 0,
403
- response: void 0,
404
- error
405
- };
406
- await options?.onError?.(result);
407
- return result;
408
- }
409
- }
410
-
411
- // src/utils/SortTypeFromSortDirection.ts
412
- var sortTypes = [
413
- "Default",
414
- "Neutral",
415
- "Ascending",
416
- "Descending"
417
- ];
418
- function getSortTypeFromSortDirection(sortDirection) {
419
- switch (sortDirection) {
420
- case "Asc":
421
- case "Ascending":
422
- return "Ascending";
423
- case "Desc":
424
- case "Descending":
425
- return "Descending";
426
- case "Neutral":
427
- return "Neutral";
428
- case "Default":
429
- default:
430
- return "Default";
431
- }
432
- }
433
- function getSortDirectionFromSortType(sortType) {
434
- switch (sortType) {
435
- case "Ascending":
436
- return "Asc";
437
- case "Descending":
438
- return "Desc";
439
- case "Neutral":
440
- return "Neutral";
441
- case "Default":
442
- default:
443
- return "Default";
444
- }
445
- }
446
-
447
- // src/utils/toFormData.ts
448
- function toFormData(payload) {
449
- const formData = new FormData();
450
- for (const [key, value] of Object.entries(payload)) {
451
- appendFormDataValue(formData, key, value);
452
- }
453
- return formData;
454
- }
455
- function appendFormDataValue(formData, key, value) {
456
- if (value === null || value === void 0) {
457
- return;
458
- }
459
- if (Array.isArray(value)) {
460
- for (const item of value) {
461
- appendFormDataValue(formData, key, item);
462
- }
463
- return;
464
- }
465
- if (value instanceof File) {
466
- formData.append(key, value, value.name);
467
- return;
468
- }
469
- if (value instanceof Blob) {
470
- formData.append(key, value);
471
- return;
472
- }
473
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
474
- formData.append(key, String(value));
475
- return;
476
- }
477
- formData.append(key, JSON.stringify(value));
478
- }
479
- export {
480
- ContentType,
481
- abortRequest,
482
- buildQuery,
483
- configureApiClient,
484
- createApiClient,
485
- defaultApiClient,
486
- extractArgsCallbacksAndParams,
487
- extractArgsToastsAndParams,
488
- getSortDirectionFromSortType,
489
- getSortTypeFromSortDirection,
490
- handleApiResponse,
491
- request,
492
- setSecurityData,
493
- sortTypes,
494
- toFormData
495
- };