typedapi-client-helpers 0.2.1 → 0.3.1

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 +72 -0
  2. package/README.md +231 -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 +132 -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 +128 -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 +41 -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 +12 -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 +348 -113
  117. package/scripts/openapi-generator/method-template.mjs +405 -440
  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 +737 -455
  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
@@ -0,0 +1,16 @@
1
+ export * from "./httpClient.js";
2
+ export * from "./interfaces/ApiResult.js";
3
+ export * from "./interfaces/Filter.js";
4
+ export * from "./interfaces/SortType.js";
5
+ export * from "./types/ApiMethodTypes.js";
6
+ export * from "./types/ApiCallOptions.js";
7
+ export * from "./types/ApiMethodOptions.js";
8
+ export * from "./types/ApiMethodArguments.js";
9
+ export * from "./utils/buildQuery.js";
10
+ export * from "./utils/extractArgsToastsAndParams.js";
11
+ export * from "./utils/extractArgsCallbacksAndParams.js";
12
+ export * from "./utils/handleApiResponse.js";
13
+ export * from "./utils/SortTypeFromSortDirection.js";
14
+ export * from "./utils/toFormData.js";
15
+ export * from "./utils/wireMapping.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAE7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ApiResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiResult.js","sourceRoot":"","sources":["../../../src/interfaces/ApiResult.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../src/interfaces/Filter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SortType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortType.js","sourceRoot":"","sources":["../../../src/interfaces/SortType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ApiCallOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiCallOptions.js","sourceRoot":"","sources":["../../../src/types/ApiCallOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ApiMethodArguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiMethodArguments.js","sourceRoot":"","sources":["../../../src/types/ApiMethodArguments.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ApiMethodOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiMethodOptions.js","sourceRoot":"","sources":["../../../src/types/ApiMethodOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ApiMethodTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiMethodTypes.js","sourceRoot":"","sources":["../../../src/types/ApiMethodTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HttpResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpResponse.js","sourceRoot":"","sources":["../../../src/types/HttpResponse.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=httpClientTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpClientTypes.js","sourceRoot":"","sources":["../../../src/types/httpClientTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ /** Sort states supported by TypedApi UI components. */
2
+ export const sortTypes = [
3
+ "Default",
4
+ "Neutral",
5
+ "Ascending",
6
+ "Descending",
7
+ ];
8
+ /** Converts API sort direction values to the sort state used by UI components. */
9
+ export function getSortTypeFromSortDirection(sortDirection) {
10
+ switch (sortDirection) {
11
+ case "Asc":
12
+ case "Ascending":
13
+ return "Ascending";
14
+ case "Desc":
15
+ case "Descending":
16
+ return "Descending";
17
+ case "Neutral":
18
+ return "Neutral";
19
+ case "Default":
20
+ default:
21
+ return "Default";
22
+ }
23
+ }
24
+ /** Converts a UI sort state to a value accepted by the current .NET API. */
25
+ export function getSortDirectionFromSortType(sortType) {
26
+ switch (sortType) {
27
+ case "Ascending":
28
+ return "Asc";
29
+ case "Descending":
30
+ return "Desc";
31
+ case "Neutral":
32
+ return "Neutral";
33
+ case "Default":
34
+ default:
35
+ return "Default";
36
+ }
37
+ }
38
+ //# sourceMappingURL=SortTypeFromSortDirection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortTypeFromSortDirection.js","sourceRoot":"","sources":["../../../src/utils/SortTypeFromSortDirection.ts"],"names":[],"mappings":"AAcA,uDAAuD;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,SAAS;IACT,SAAS;IACT,WAAW;IACX,YAAY;CAC0B,CAAC;AAEzC,kFAAkF;AAClF,MAAM,UAAU,4BAA4B,CAC1C,aAAkD;IAElD,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,KAAK,CAAC;QACX,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM,CAAC;QACZ,KAAK,YAAY;YACf,OAAO,YAAY,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS,CAAC;QACf;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,4BAA4B,CAC1C,QAAqC;IAErC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;QACf,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS,CAAC;QACf;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Builds a typed query object from filter form values, pagination, and sorting.
3
+ *
4
+ * Empty filter values are ignored.
5
+ * List filters are converted item by item.
6
+ * `OptionValue` lists send their `value` fields instead of the display names.
7
+ */
8
+ export function buildQuery(filters, page = 1, pageSize = 100, sortBy = null, sortDirection) {
9
+ const query = filters.reduce((queryResult, filter) => {
10
+ const { filterName, filterNameMax, type, value, maxValue, isAList } = filter;
11
+ if (isEmptyValue(value) && isEmptyValue(maxValue)) {
12
+ return queryResult;
13
+ }
14
+ if (isAList && Array.isArray(value)) {
15
+ const convertedValues = value
16
+ .map((item) => convertType(type, isOptionValue(item) ? item.value : item))
17
+ .filter((item) => item !== null);
18
+ if (convertedValues.length > 0) {
19
+ queryResult[filterName] = convertedValues;
20
+ }
21
+ return queryResult;
22
+ }
23
+ const rawValue = isOptionValue(value) ? value.value : value;
24
+ const convertedValue = convertType(type, rawValue);
25
+ if (convertedValue !== null) {
26
+ queryResult[filterName] = convertedValue;
27
+ }
28
+ if (filterNameMax && !isEmptyValue(maxValue)) {
29
+ const convertedMaxValue = convertType(type, maxValue);
30
+ if (convertedMaxValue !== null) {
31
+ queryResult[filterNameMax] = convertedMaxValue;
32
+ }
33
+ }
34
+ return queryResult;
35
+ }, {});
36
+ query.pageNumber = page;
37
+ if (pageSize > 0) {
38
+ query.pageSize = pageSize;
39
+ }
40
+ if (sortBy) {
41
+ query.sortBy = sortBy;
42
+ }
43
+ if (sortDirection !== undefined && sortDirection !== "Default") {
44
+ query.sortDirection = sortDirection;
45
+ }
46
+ return query;
47
+ }
48
+ function isEmptyValue(value) {
49
+ return (value === null ||
50
+ value === undefined ||
51
+ value === "" ||
52
+ value === "null" ||
53
+ value === "undefined");
54
+ }
55
+ function isOptionValue(value) {
56
+ return typeof value === "object" && value !== null && "value" in value;
57
+ }
58
+ function convertType(type, value) {
59
+ if (isEmptyValue(value)) {
60
+ return null;
61
+ }
62
+ switch (type) {
63
+ case "date": {
64
+ if (value instanceof Date) {
65
+ return Number.isNaN(value.getTime()) ? null : value.toISOString();
66
+ }
67
+ return value;
68
+ }
69
+ case "number": {
70
+ const numberValue = Number(value);
71
+ return Number.isNaN(numberValue) ? null : numberValue;
72
+ }
73
+ case "boolean":
74
+ case "boolean-button": {
75
+ if (typeof value === "boolean") {
76
+ return value;
77
+ }
78
+ if (typeof value === "string") {
79
+ const normalized = value.trim().toLowerCase();
80
+ if (["true", "1", "yes", "on"].includes(normalized)) {
81
+ return true;
82
+ }
83
+ if (["false", "0", "no", "off"].includes(normalized)) {
84
+ return false;
85
+ }
86
+ }
87
+ return Boolean(value);
88
+ }
89
+ default:
90
+ return value;
91
+ }
92
+ }
93
+ //# sourceMappingURL=buildQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildQuery.js","sourceRoot":"","sources":["../../../src/utils/buildQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Checks whether a value can be used as a generated wrapper callback.
3
+ */
4
+ function isCallback(value) {
5
+ return typeof value === "function";
6
+ }
7
+ /**
8
+ * Checks whether a value is the optional request-params object accepted as the final wrapper argument.
9
+ */
10
+ function isRequestParams(value) {
11
+ return typeof value === "object" && value !== null && !Array.isArray(value);
12
+ }
13
+ /**
14
+ * Extracts wrapper arguments in this order:
15
+ *
16
+ * 1. Original API arguments
17
+ * 2. Optional success callback
18
+ * 3. Optional error callback
19
+ * 4. Optional request params
20
+ */
21
+ export function extractArgsCallbacksAndParams(argsWithCallbacks) {
22
+ const values = [...argsWithCallbacks];
23
+ let onSuccess;
24
+ let onError;
25
+ let params;
26
+ let lastArgument = values[values.length - 1];
27
+ if (isRequestParams(lastArgument)) {
28
+ params = lastArgument;
29
+ values.pop();
30
+ }
31
+ lastArgument = values[values.length - 1];
32
+ if (isCallback(lastArgument)) {
33
+ onError = lastArgument;
34
+ values.pop();
35
+ }
36
+ lastArgument = values[values.length - 1];
37
+ if (isCallback(lastArgument)) {
38
+ onSuccess = lastArgument;
39
+ values.pop();
40
+ }
41
+ return {
42
+ args: values,
43
+ onSuccess,
44
+ onError,
45
+ params,
46
+ };
47
+ }
48
+ //# sourceMappingURL=extractArgsCallbacksAndParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractArgsCallbacksAndParams.js","sourceRoot":"","sources":["../../../src/utils/extractArgsCallbacksAndParams.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAO3C,iBAKC;IAOD,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,CAAc,CAAC;IAEnD,IAAI,SAAmD,CAAC;IACxD,IAAI,OAA+C,CAAC;IACpD,IAAI,MAAwC,CAAC;IAE7C,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7C,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,YAAY,CAAC;QACtB,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,YAA0C,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,SAAS,GAAG,YAA4C,CAAC;QACzD,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAe;QACrB,SAAS;QACT,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Checks whether a value can be used as a generated wrapper callback.
3
+ */
4
+ function isCallback(value) {
5
+ return typeof value === "function";
6
+ }
7
+ /**
8
+ * Checks whether a value is the optional request-params object accepted as the final wrapper argument.
9
+ */
10
+ function isRequestParams(value) {
11
+ return typeof value === "object" && value !== null && !Array.isArray(value);
12
+ }
13
+ /**
14
+ * Extracts wrapper-only arguments in this order:
15
+ * original API arguments, onSuccess, onError, request params.
16
+ *
17
+ * Kept for backwards compatibility with generated files that used toast-oriented naming.
18
+ */
19
+ export function extractArgsToastsAndParams(argsWithCallbacks) {
20
+ const values = [...argsWithCallbacks];
21
+ let onSuccess;
22
+ let onError;
23
+ let params;
24
+ let lastArgument = values[values.length - 1];
25
+ if (isRequestParams(lastArgument)) {
26
+ params = lastArgument;
27
+ values.pop();
28
+ }
29
+ lastArgument = values[values.length - 1];
30
+ if (isCallback(lastArgument)) {
31
+ onError = lastArgument;
32
+ values.pop();
33
+ }
34
+ lastArgument = values[values.length - 1];
35
+ if (isCallback(lastArgument)) {
36
+ onSuccess = lastArgument;
37
+ values.pop();
38
+ }
39
+ return {
40
+ args: values,
41
+ onSuccess,
42
+ onError,
43
+ params,
44
+ };
45
+ }
46
+ //# sourceMappingURL=extractArgsToastsAndParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractArgsToastsAndParams.js","sourceRoot":"","sources":["../../../src/utils/extractArgsToastsAndParams.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAIxC,iBAKC;IAOD,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,CAAc,CAAC;IAEnD,IAAI,SAAmD,CAAC;IACxD,IAAI,OAA+C,CAAC;IACpD,IAAI,MAAwC,CAAC;IAE7C,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7C,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,YAAY,CAAC;QACtB,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,YAA0C,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,SAAS,GAAG,YAA4C,CAAC;QACzD,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAA0B;QAChC,SAAS;QACT,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,128 @@
1
+ class ResponseParseError extends Error {
2
+ constructor(status, rawBody, parseCause) {
3
+ super(`Could not parse JSON response with status ${status}.`);
4
+ this.status = status;
5
+ this.rawBody = rawBody;
6
+ this.parseCause = parseCause;
7
+ this.name = "ResponseParseError";
8
+ }
9
+ }
10
+ async function readResponseBody(response) {
11
+ if (response.status === 204 || response.status === 205)
12
+ return undefined;
13
+ const contentType = response.headers.get("content-type")?.toLowerCase() ?? "";
14
+ if (contentType.includes("application/octet-stream") ||
15
+ contentType.startsWith("image/") ||
16
+ contentType.includes("application/pdf")) {
17
+ return response.blob();
18
+ }
19
+ const text = await response.text();
20
+ if (!text)
21
+ return undefined;
22
+ if (contentType.includes("json") || contentType.includes("+json")) {
23
+ try {
24
+ return JSON.parse(text);
25
+ }
26
+ catch (error) {
27
+ throw new ResponseParseError(response.status, text, error);
28
+ }
29
+ }
30
+ return text;
31
+ }
32
+ function isResponseLike(value) {
33
+ return (typeof value === "object" &&
34
+ value !== null &&
35
+ "status" in value &&
36
+ "ok" in value &&
37
+ "headers" in value &&
38
+ typeof value.text === "function");
39
+ }
40
+ export function createApiHttpError(status, body) {
41
+ return {
42
+ kind: "http",
43
+ status,
44
+ body: body,
45
+ };
46
+ }
47
+ function clientError(error) {
48
+ if (error instanceof ResponseParseError) {
49
+ return {
50
+ kind: "parse",
51
+ status: error.status,
52
+ rawBody: error.rawBody,
53
+ cause: error.parseCause,
54
+ };
55
+ }
56
+ const name = typeof error === "object" && error !== null && "name" in error
57
+ ? String(error.name)
58
+ : "";
59
+ if (name === "AbortError" || name === "TimeoutError") {
60
+ return { kind: "aborted", cause: error };
61
+ }
62
+ return { kind: "network", cause: error };
63
+ }
64
+ export async function handleApiResponse(call, options) {
65
+ let result;
66
+ try {
67
+ const response = await call();
68
+ try {
69
+ const rawData = await readResponseBody(response.clone());
70
+ const data = options?.transformResponse
71
+ ? options.transformResponse(rawData)
72
+ : rawData;
73
+ result = {
74
+ ok: true,
75
+ status: response.status,
76
+ response: data,
77
+ };
78
+ }
79
+ catch (error) {
80
+ result = {
81
+ ok: false,
82
+ status: response.status,
83
+ response: undefined,
84
+ error: clientError(error),
85
+ };
86
+ }
87
+ }
88
+ catch (error) {
89
+ if (isResponseLike(error)) {
90
+ try {
91
+ const rawErrorData = await readResponseBody(error.clone());
92
+ const errorData = options?.transformError
93
+ ? options.transformError(rawErrorData, error)
94
+ : rawErrorData;
95
+ result = {
96
+ ok: false,
97
+ status: error.status,
98
+ response: undefined,
99
+ error: errorData,
100
+ };
101
+ }
102
+ catch (parseError) {
103
+ result = {
104
+ ok: false,
105
+ status: error.status,
106
+ response: undefined,
107
+ error: clientError(parseError),
108
+ };
109
+ }
110
+ }
111
+ else {
112
+ result = {
113
+ ok: false,
114
+ status: 0,
115
+ response: undefined,
116
+ error: clientError(error),
117
+ };
118
+ }
119
+ }
120
+ // Consumer callbacks intentionally execute outside the request-catching block.
121
+ // A callback exception is application code failure and should propagate to the caller.
122
+ if (result.ok)
123
+ await options?.onSuccess?.(result);
124
+ else
125
+ await options?.onError?.(result);
126
+ return result;
127
+ }
128
+ //# sourceMappingURL=handleApiResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleApiResponse.js","sourceRoot":"","sources":["../../../src/utils/handleApiResponse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Converts an object payload into `FormData`.
3
+ *
4
+ * Supports single files, file arrays, primitive values, dates, and nested
5
+ * objects. Arrays are appended as repeated fields with the same key.
6
+ *
7
+ * @throws {Error} when `FormData` is unavailable in the current runtime.
8
+ */
9
+ export function toFormData(payload) {
10
+ if (typeof FormData === "undefined") {
11
+ throw new Error("FormData is not available in this runtime. Provide a FormData polyfill or use a runtime with the Fetch API.");
12
+ }
13
+ const formData = new FormData();
14
+ for (const [key, value] of Object.entries(payload)) {
15
+ appendFormDataValue(formData, key, value);
16
+ }
17
+ return formData;
18
+ }
19
+ function isFile(value) {
20
+ return typeof File !== "undefined" && value instanceof File;
21
+ }
22
+ function isBlob(value) {
23
+ return typeof Blob !== "undefined" && value instanceof Blob;
24
+ }
25
+ /** Appends a single value to a `FormData` object. */
26
+ function appendFormDataValue(formData, key, value) {
27
+ if (value === null || value === undefined)
28
+ return;
29
+ if (Array.isArray(value)) {
30
+ for (const item of value)
31
+ appendFormDataValue(formData, key, item);
32
+ return;
33
+ }
34
+ if (isFile(value)) {
35
+ formData.append(key, value, value.name);
36
+ return;
37
+ }
38
+ if (isBlob(value)) {
39
+ formData.append(key, value);
40
+ return;
41
+ }
42
+ if (value instanceof Date) {
43
+ formData.append(key, value.toISOString());
44
+ return;
45
+ }
46
+ if (typeof value === "string" ||
47
+ typeof value === "number" ||
48
+ typeof value === "boolean" ||
49
+ typeof value === "bigint") {
50
+ formData.append(key, String(value));
51
+ return;
52
+ }
53
+ formData.append(key, JSON.stringify(value));
54
+ }
55
+ //# sourceMappingURL=toFormData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toFormData.js","sourceRoot":"","sources":["../../../src/utils/toFormData.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAmB,OAAU;IACrD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAEhC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,KAAK,YAAY,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,KAAK,YAAY,IAAI,CAAC;AAC9D,CAAC;AAED,qDAAqD;AACrD,SAAS,mBAAmB,CAC1B,QAAkB,EAClB,GAAW,EACX,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAElD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,QAAQ,EACzB,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,119 @@
1
+ function isFile(value) {
2
+ return typeof File !== "undefined" && value instanceof File;
3
+ }
4
+ function isBlob(value) {
5
+ return typeof Blob !== "undefined" && value instanceof Blob;
6
+ }
7
+ function isFormData(value) {
8
+ return typeof FormData !== "undefined" && value instanceof FormData;
9
+ }
10
+ function isMappableObject(value) {
11
+ if (typeof value !== "object" || value === null || Array.isArray(value))
12
+ return false;
13
+ if (value instanceof Date || isFile(value) || isBlob(value) || isFormData(value))
14
+ return false;
15
+ return true;
16
+ }
17
+ function resolveSchema(schema, registry) {
18
+ let current = schema;
19
+ const visited = new Set();
20
+ while (current?.kind === "ref") {
21
+ if (visited.has(current.ref))
22
+ return { kind: "identity" };
23
+ visited.add(current.ref);
24
+ current = registry[current.ref] ?? { kind: "identity" };
25
+ }
26
+ return current;
27
+ }
28
+ function mergeObjectSchemas(schema, registry, visitedRefs = new Set()) {
29
+ if (schema.kind === "ref") {
30
+ if (visitedRefs.has(schema.ref))
31
+ return undefined;
32
+ const nextVisited = new Set(visitedRefs);
33
+ nextVisited.add(schema.ref);
34
+ const resolved = registry[schema.ref];
35
+ return resolved ? mergeObjectSchemas(resolved, registry, nextVisited) : undefined;
36
+ }
37
+ if (schema.kind === "object")
38
+ return schema;
39
+ if (schema.kind !== "allOf" && schema.kind !== "union")
40
+ return undefined;
41
+ const properties = {};
42
+ let additionalProperties;
43
+ let foundObject = false;
44
+ for (const part of schema.schemas) {
45
+ const objectPart = mergeObjectSchemas(part, registry, visitedRefs);
46
+ if (!objectPart)
47
+ continue;
48
+ foundObject = true;
49
+ Object.assign(properties, objectPart.properties ?? {});
50
+ if (objectPart.additionalProperties !== undefined) {
51
+ additionalProperties = objectPart.additionalProperties;
52
+ }
53
+ }
54
+ return foundObject
55
+ ? { kind: "object", properties, ...(additionalProperties !== undefined ? { additionalProperties } : {}) }
56
+ : undefined;
57
+ }
58
+ function mapValue(value, schema, registry, direction, seen) {
59
+ if (value === null || value === undefined || !schema)
60
+ return value;
61
+ const resolved = resolveSchema(schema, registry);
62
+ if (!resolved || resolved.kind === "identity")
63
+ return value;
64
+ if (resolved.kind === "array") {
65
+ if (!Array.isArray(value))
66
+ return value;
67
+ const existing = seen.get(value);
68
+ if (existing)
69
+ return existing;
70
+ const output = [];
71
+ seen.set(value, output);
72
+ for (const item of value) {
73
+ output.push(mapValue(item, resolved.items, registry, direction, seen));
74
+ }
75
+ return output;
76
+ }
77
+ if (resolved.kind === "allOf" || resolved.kind === "union") {
78
+ const merged = mergeObjectSchemas(resolved, registry);
79
+ if (merged)
80
+ return mapValue(value, merged, registry, direction, seen);
81
+ return value;
82
+ }
83
+ if (!isMappableObject(value))
84
+ return value;
85
+ const existing = seen.get(value);
86
+ if (existing)
87
+ return existing;
88
+ const output = {};
89
+ seen.set(value, output);
90
+ const properties = resolved.properties ?? {};
91
+ const byWireName = new Map(Object.entries(properties).map(([localName, property]) => [property.wireName, [localName, property]]));
92
+ for (const [inputName, inputValue] of Object.entries(value)) {
93
+ const propertyEntry = direction === "toWire"
94
+ ? properties[inputName]
95
+ ? [inputName, properties[inputName]]
96
+ : undefined
97
+ : byWireName.get(inputName);
98
+ if (propertyEntry) {
99
+ const [localName, property] = propertyEntry;
100
+ const outputName = direction === "toWire" ? property.wireName : localName;
101
+ output[outputName] = mapValue(inputValue, property.schema, registry, direction, seen);
102
+ continue;
103
+ }
104
+ const additionalSchema = resolved.additionalProperties === true
105
+ ? undefined
106
+ : resolved.additionalProperties;
107
+ output[inputName] = mapValue(inputValue, additionalSchema, registry, direction, seen);
108
+ }
109
+ return output;
110
+ }
111
+ /** Converts generated lower-first member names to their exact OpenAPI wire names. */
112
+ export function toWireValue(value, schema, registry = {}) {
113
+ return mapValue(value, schema, registry, "toWire", new WeakMap());
114
+ }
115
+ /** Converts exact OpenAPI wire names to generated lower-first member names. */
116
+ export function fromWireValue(value, schema, registry = {}) {
117
+ return mapValue(value, schema, registry, "fromWire", new WeakMap());
118
+ }
119
+ //# sourceMappingURL=wireMapping.js.map