@gcmdev/faxios 0.1.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 (144) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +1817 -0
  3. package/dist/index.d.ts +21 -0
  4. package/dist/index.js +25 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/adapters/fetch-helpers.d.ts +16 -0
  7. package/dist/lib/adapters/fetch-helpers.js +91 -0
  8. package/dist/lib/adapters/fetch-helpers.js.map +1 -0
  9. package/dist/lib/adapters/fetch.d.ts +3 -0
  10. package/dist/lib/adapters/fetch.js +417 -0
  11. package/dist/lib/adapters/fetch.js.map +1 -0
  12. package/dist/lib/cancel/CanceledError.d.ts +15 -0
  13. package/dist/lib/cancel/CanceledError.js +20 -0
  14. package/dist/lib/cancel/CanceledError.js.map +1 -0
  15. package/dist/lib/cancel/isCancel.d.ts +1 -0
  16. package/dist/lib/cancel/isCancel.js +5 -0
  17. package/dist/lib/cancel/isCancel.js.map +1 -0
  18. package/dist/lib/core/Faxios.d.ts +68 -0
  19. package/dist/lib/core/Faxios.js +269 -0
  20. package/dist/lib/core/Faxios.js.map +1 -0
  21. package/dist/lib/core/FaxiosError.d.ts +71 -0
  22. package/dist/lib/core/FaxiosError.js +192 -0
  23. package/dist/lib/core/FaxiosError.js.map +1 -0
  24. package/dist/lib/core/FaxiosHeaders.d.ts +45 -0
  25. package/dist/lib/core/FaxiosHeaders.js +299 -0
  26. package/dist/lib/core/FaxiosHeaders.js.map +1 -0
  27. package/dist/lib/core/InterceptorManager.d.ts +9 -0
  28. package/dist/lib/core/InterceptorManager.js +28 -0
  29. package/dist/lib/core/InterceptorManager.js.map +1 -0
  30. package/dist/lib/core/buildFullPath.d.ts +11 -0
  31. package/dist/lib/core/buildFullPath.js +41 -0
  32. package/dist/lib/core/buildFullPath.js.map +1 -0
  33. package/dist/lib/core/define.d.ts +28 -0
  34. package/dist/lib/core/define.js +35 -0
  35. package/dist/lib/core/define.js.map +1 -0
  36. package/dist/lib/core/dispatchRequest.d.ts +2 -0
  37. package/dist/lib/core/dispatchRequest.js +127 -0
  38. package/dist/lib/core/dispatchRequest.js.map +1 -0
  39. package/dist/lib/core/mergeConfig.d.ts +11 -0
  40. package/dist/lib/core/mergeConfig.js +152 -0
  41. package/dist/lib/core/mergeConfig.js.map +1 -0
  42. package/dist/lib/core/prepareRequest.d.ts +3 -0
  43. package/dist/lib/core/prepareRequest.js +112 -0
  44. package/dist/lib/core/prepareRequest.js.map +1 -0
  45. package/dist/lib/core/route.d.ts +14 -0
  46. package/dist/lib/core/route.js +24 -0
  47. package/dist/lib/core/route.js.map +1 -0
  48. package/dist/lib/core/settle.d.ts +2 -0
  49. package/dist/lib/core/settle.js +12 -0
  50. package/dist/lib/core/settle.js.map +1 -0
  51. package/dist/lib/core/transformData.d.ts +8 -0
  52. package/dist/lib/core/transformData.js +16 -0
  53. package/dist/lib/core/transformData.js.map +1 -0
  54. package/dist/lib/core/validateSchema.d.ts +6 -0
  55. package/dist/lib/core/validateSchema.js +32 -0
  56. package/dist/lib/core/validateSchema.js.map +1 -0
  57. package/dist/lib/defaults/index.d.ts +3 -0
  58. package/dist/lib/defaults/index.js +150 -0
  59. package/dist/lib/defaults/index.js.map +1 -0
  60. package/dist/lib/defaults/transitional.d.ts +9 -0
  61. package/dist/lib/defaults/transitional.js +10 -0
  62. package/dist/lib/defaults/transitional.js.map +1 -0
  63. package/dist/lib/env/data.d.ts +1 -0
  64. package/dist/lib/env/data.js +2 -0
  65. package/dist/lib/env/data.js.map +1 -0
  66. package/dist/lib/faxios.d.ts +99 -0
  67. package/dist/lib/faxios.js +68 -0
  68. package/dist/lib/faxios.js.map +1 -0
  69. package/dist/lib/helpers/FaxiosURLSearchParams.d.ts +7 -0
  70. package/dist/lib/helpers/FaxiosURLSearchParams.js +44 -0
  71. package/dist/lib/helpers/FaxiosURLSearchParams.js.map +1 -0
  72. package/dist/lib/helpers/HttpStatusCode.d.ts +72 -0
  73. package/dist/lib/helpers/HttpStatusCode.js +76 -0
  74. package/dist/lib/helpers/HttpStatusCode.js.map +1 -0
  75. package/dist/lib/helpers/buildURL.d.ts +19 -0
  76. package/dist/lib/helpers/buildURL.js +60 -0
  77. package/dist/lib/helpers/buildURL.js.map +1 -0
  78. package/dist/lib/helpers/combineURLs.d.ts +1 -0
  79. package/dist/lib/helpers/combineURLs.js +14 -0
  80. package/dist/lib/helpers/combineURLs.js.map +1 -0
  81. package/dist/lib/helpers/composeSignals.d.ts +8 -0
  82. package/dist/lib/helpers/composeSignals.js +48 -0
  83. package/dist/lib/helpers/composeSignals.js.map +1 -0
  84. package/dist/lib/helpers/cookies.d.ts +6 -0
  85. package/dist/lib/helpers/cookies.js +58 -0
  86. package/dist/lib/helpers/cookies.js.map +1 -0
  87. package/dist/lib/helpers/estimateDataURLDecodedBytes.d.ts +1 -0
  88. package/dist/lib/helpers/estimateDataURLDecodedBytes.js +91 -0
  89. package/dist/lib/helpers/estimateDataURLDecodedBytes.js.map +1 -0
  90. package/dist/lib/helpers/formDataToJSON.d.ts +9 -0
  91. package/dist/lib/helpers/formDataToJSON.js +98 -0
  92. package/dist/lib/helpers/formDataToJSON.js.map +1 -0
  93. package/dist/lib/helpers/isAbsoluteURL.d.ts +1 -0
  94. package/dist/lib/helpers/isAbsoluteURL.js +14 -0
  95. package/dist/lib/helpers/isAbsoluteURL.js.map +1 -0
  96. package/dist/lib/helpers/isFaxiosError.d.ts +8 -0
  97. package/dist/lib/helpers/isFaxiosError.js +13 -0
  98. package/dist/lib/helpers/isFaxiosError.js.map +1 -0
  99. package/dist/lib/helpers/isURLSameOrigin.d.ts +2 -0
  100. package/dist/lib/helpers/isURLSameOrigin.js +10 -0
  101. package/dist/lib/helpers/isURLSameOrigin.js.map +1 -0
  102. package/dist/lib/helpers/parseHeaders.d.ts +16 -0
  103. package/dist/lib/helpers/parseHeaders.js +70 -0
  104. package/dist/lib/helpers/parseHeaders.js.map +1 -0
  105. package/dist/lib/helpers/progressEventReducer.d.ts +5 -0
  106. package/dist/lib/helpers/progressEventReducer.js +45 -0
  107. package/dist/lib/helpers/progressEventReducer.js.map +1 -0
  108. package/dist/lib/helpers/sanitizeHeaderValue.d.ts +4 -0
  109. package/dist/lib/helpers/sanitizeHeaderValue.js +43 -0
  110. package/dist/lib/helpers/sanitizeHeaderValue.js.map +1 -0
  111. package/dist/lib/helpers/speedometer.d.ts +8 -0
  112. package/dist/lib/helpers/speedometer.js +42 -0
  113. package/dist/lib/helpers/speedometer.js.map +1 -0
  114. package/dist/lib/helpers/substitutePathParams.d.ts +2 -0
  115. package/dist/lib/helpers/substitutePathParams.js +14 -0
  116. package/dist/lib/helpers/substitutePathParams.js.map +1 -0
  117. package/dist/lib/helpers/throttle.d.ts +8 -0
  118. package/dist/lib/helpers/throttle.js +42 -0
  119. package/dist/lib/helpers/throttle.js.map +1 -0
  120. package/dist/lib/helpers/toFormData.d.ts +26 -0
  121. package/dist/lib/helpers/toFormData.js +233 -0
  122. package/dist/lib/helpers/toFormData.js.map +1 -0
  123. package/dist/lib/helpers/toURLEncodedForm.d.ts +2 -0
  124. package/dist/lib/helpers/toURLEncodedForm.js +8 -0
  125. package/dist/lib/helpers/toURLEncodedForm.js.map +1 -0
  126. package/dist/lib/helpers/trackStream.d.ts +1 -0
  127. package/dist/lib/helpers/trackStream.js +81 -0
  128. package/dist/lib/helpers/trackStream.js.map +1 -0
  129. package/dist/lib/helpers/validator.d.ts +16 -0
  130. package/dist/lib/helpers/validator.js +86 -0
  131. package/dist/lib/helpers/validator.js.map +1 -0
  132. package/dist/lib/platform.d.ts +22 -0
  133. package/dist/lib/platform.js +26 -0
  134. package/dist/lib/platform.js.map +1 -0
  135. package/dist/lib/types/standard-schema.d.ts +37 -0
  136. package/dist/lib/types/standard-schema.js +8 -0
  137. package/dist/lib/types/standard-schema.js.map +1 -0
  138. package/dist/lib/types.d.ts +219 -0
  139. package/dist/lib/types.js +5 -0
  140. package/dist/lib/types.js.map +1 -0
  141. package/dist/lib/utils.d.ts +143 -0
  142. package/dist/lib/utils.js +805 -0
  143. package/dist/lib/utils.js.map +1 -0
  144. package/package.json +110 -0
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ import utils from "../utils.js";
3
+ function trimSPorHTAB(str) {
4
+ let start = 0;
5
+ let end = str.length;
6
+ while (start < end) {
7
+ const code = str.charCodeAt(start);
8
+ if (code !== 0x09 && code !== 0x20) {
9
+ break;
10
+ }
11
+ start += 1;
12
+ }
13
+ while (end > start) {
14
+ const code = str.charCodeAt(end - 1);
15
+ if (code !== 0x09 && code !== 0x20) {
16
+ break;
17
+ }
18
+ end -= 1;
19
+ }
20
+ return start === 0 && end === str.length ? str : str.slice(start, end);
21
+ }
22
+ // The control-code ranges are intentional: header sanitization strips C0/DEL bytes.
23
+ // eslint-disable-next-line no-control-regex
24
+ const INVALID_UNICODE_HEADER_VALUE_CHARS = new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+", "g");
25
+ // eslint-disable-next-line no-control-regex, sonarjs/no-control-regex
26
+ const INVALID_BYTE_STRING_HEADER_VALUE_CHARS = new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+", "g");
27
+ // eslint-disable-next-line sonarjs/function-return-type
28
+ function sanitizeValue(value, invalidChars) {
29
+ if (utils.isArray(value)) {
30
+ return value.map(item => sanitizeValue(item, invalidChars));
31
+ }
32
+ return trimSPorHTAB(String(value).replace(invalidChars, ""));
33
+ }
34
+ export const sanitizeHeaderValue = (value) => sanitizeValue(value, INVALID_UNICODE_HEADER_VALUE_CHARS);
35
+ const sanitizeByteStringHeaderValue = (value) => sanitizeValue(value, INVALID_BYTE_STRING_HEADER_VALUE_CHARS);
36
+ export function toByteStringHeaderObject(headers) {
37
+ const byteStringHeaders = Object.create(null);
38
+ utils.forEach(headers.toJSON(), (value, header) => {
39
+ byteStringHeaders[String(header)] = sanitizeByteStringHeaderValue(value);
40
+ });
41
+ return byteStringHeaders;
42
+ }
43
+ //# sourceMappingURL=sanitizeHeaderValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizeHeaderValue.js","sourceRoot":"","sources":["../../../src/lib/helpers/sanitizeHeaderValue.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,oBAAoB;AAEhC,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAErB,OAAO,KAAK,GAAG,GAAG,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,GAAG,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAErC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM;QACR,CAAC;QAED,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,oFAAoF;AACpF,4CAA4C;AAC5C,MAAM,kCAAkC,GAAG,IAAI,MAAM,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;AACvG,sEAAsE;AACtE,MAAM,sCAAsC,GAAG,IAAI,MAAM,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;AAE5G,wDAAwD;AACxD,SAAS,aAAa,CAAC,KAAc,EAAE,YAAoB;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAQ,KAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAW,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE,CACpD,aAAa,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;AAE3D,MAAM,6BAA6B,GAAG,CAAC,KAAc,EAAE,EAAE,CACvD,aAAa,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;AAE/D,MAAM,UAAU,wBAAwB,CAAC,OAAmD;IAC1F,MAAM,iBAAiB,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAc,EAAE,MAAe,EAAE,EAAE;QAClE,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Calculate data maxRate
3
+ * @param {Number} [samplesCount= 10]
4
+ * @param {Number} [min= 1000]
5
+ * @returns {Function}
6
+ */
7
+ declare function speedometer(samplesCount?: number, min?: number): (chunkLength: number) => number | undefined;
8
+ export default speedometer;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * Calculate data maxRate
4
+ * @param {Number} [samplesCount= 10]
5
+ * @param {Number} [min= 1000]
6
+ * @returns {Function}
7
+ */
8
+ function speedometer(samplesCount, min) {
9
+ samplesCount = samplesCount || 10;
10
+ const bytes = new Array(samplesCount);
11
+ const timestamps = new Array(samplesCount);
12
+ let head = 0;
13
+ let tail = 0;
14
+ let firstSampleTS;
15
+ min = min !== undefined ? min : 1000;
16
+ return function push(chunkLength) {
17
+ const now = Date.now();
18
+ const startedAt = timestamps[tail];
19
+ if (!firstSampleTS) {
20
+ firstSampleTS = now;
21
+ }
22
+ bytes[head] = chunkLength;
23
+ timestamps[head] = now;
24
+ let i = tail;
25
+ let bytesCount = 0;
26
+ while (i !== head) {
27
+ bytesCount += bytes[i++];
28
+ i = i % samplesCount;
29
+ }
30
+ head = (head + 1) % samplesCount;
31
+ if (head === tail) {
32
+ tail = (tail + 1) % samplesCount;
33
+ }
34
+ if (now - firstSampleTS < min) {
35
+ return;
36
+ }
37
+ const passed = startedAt && now - startedAt;
38
+ return passed ? Math.round((bytesCount * 1000) / passed) : undefined;
39
+ };
40
+ }
41
+ export default speedometer;
42
+ //# sourceMappingURL=speedometer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speedometer.js","sourceRoot":"","sources":["../../../src/lib/helpers/speedometer.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;GAKG;AACH,SAAS,WAAW,CAAC,YAAqB,EAAE,GAAY;IACtD,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAkB,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,UAAU,GAAkB,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,aAAiC,CAAC;IAEtC,GAAG,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAErC,OAAO,SAAS,IAAI,CAAC,WAAmB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAEvB,IAAI,CAAC,GAAG,IAAI,CAAC;QACb,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YAClB,UAAU,IAAI,KAAK,CAAC,CAAC,EAAE,CAAE,CAAC;YAC1B,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QACvB,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;QAEjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;QACnC,CAAC;QAED,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;QAE5C,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** Expects raw (unencoded) param values — applies encodeURIComponent here. */
2
+ export declare function substitutePathParams(url: string, params: Record<string, unknown>): string;
@@ -0,0 +1,14 @@
1
+ /** Expects raw (unencoded) param values — applies encodeURIComponent here. */
2
+ export function substitutePathParams(url, params) {
3
+ return url.replace(/\{([^{}]+)\}/g, (_match, key) => {
4
+ if (!Object.prototype.hasOwnProperty.call(params, key)) {
5
+ throw new Error(`Path param "${key}" not found in pathParams`);
6
+ }
7
+ const val = params[key];
8
+ if (val == null) {
9
+ throw new Error(`Path param "${key}" is null or undefined`);
10
+ }
11
+ return encodeURIComponent(String(val));
12
+ });
13
+ }
14
+ //# sourceMappingURL=substitutePathParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substitutePathParams.js","sourceRoot":"","sources":["../../../src/lib/helpers/substitutePathParams.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAA+B;IAC/E,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAW,EAAE,EAAE;QAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,2BAA2B,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,wBAAwB,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Throttle decorator
3
+ * @param {Function} fn
4
+ * @param {Number} freq
5
+ * @return {Function}
6
+ */
7
+ declare function throttle(fn: (...args: Array<unknown>) => void, freq: number): [(...args: Array<unknown>) => void, () => void];
8
+ export default throttle;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Throttle decorator
3
+ * @param {Function} fn
4
+ * @param {Number} freq
5
+ * @return {Function}
6
+ */
7
+ function throttle(fn, freq) {
8
+ let timestamp = 0;
9
+ const threshold = 1000 / freq;
10
+ let lastArgs = null;
11
+ let timer = null;
12
+ const invoke = (args, now = Date.now()) => {
13
+ timestamp = now;
14
+ lastArgs = null;
15
+ if (timer) {
16
+ clearTimeout(timer);
17
+ timer = null;
18
+ }
19
+ fn(...args);
20
+ };
21
+ const throttled = (...args) => {
22
+ const now = Date.now();
23
+ const passed = now - timestamp;
24
+ if (passed >= threshold) {
25
+ invoke(args, now);
26
+ }
27
+ else {
28
+ lastArgs = args;
29
+ if (!timer) {
30
+ timer = setTimeout(() => {
31
+ timer = null;
32
+ invoke(lastArgs);
33
+ }, threshold - passed);
34
+ }
35
+ }
36
+ };
37
+ const flush = () => { if (lastArgs)
38
+ invoke(lastArgs); };
39
+ return [throttled, flush];
40
+ }
41
+ export default throttle;
42
+ //# sourceMappingURL=throttle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../src/lib/helpers/throttle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,EAAqC,EAAE,IAAY;IACnE,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9B,IAAI,QAAQ,GAA0B,IAAI,CAAC;IAC3C,IAAI,KAAK,GAAyC,IAAI,CAAC;IAEvD,MAAM,MAAM,GAAG,CAAC,IAAoB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE;QAChE,SAAS,GAAG,GAAG,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,GAAG,IAAoB,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;QAC/B,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpB,CAAC;aACI,CAAC;YACJ,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM,CAAC,QAAS,CAAC,CAAC;gBACpB,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,OAAO,CAAE,SAAS,EAAE,KAAK,CAAE,CAAC;AAC9B,CAAC;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { GenericFormData } from "../types.js";
2
+ export declare const DEFAULT_FORM_DATA_MAX_DEPTH = 100;
3
+ /**
4
+ * Convert a data object to FormData
5
+ *
6
+ * @param {Object} obj
7
+ * @param {?Object} [formData]
8
+ * @param {?Object} [options]
9
+ * @param {Function} [options.visitor]
10
+ * @param {Boolean} [options.metaTokens = true]
11
+ * @param {Boolean} [options.dots = false]
12
+ * @param {?Boolean} [options.indexes = false]
13
+ *
14
+ * @returns {Object}
15
+ **/
16
+ /**
17
+ * It converts an object into a FormData object
18
+ *
19
+ * @param {Object<any, any>} obj - The object to convert to form data.
20
+ * @param {string} formData - The FormData object to append to.
21
+ * @param {Object<string, any>} options
22
+ *
23
+ * @returns
24
+ */
25
+ declare function toFormData(obj: unknown, formData?: GenericFormData | null, options?: Record<string, unknown>): GenericFormData;
26
+ export default toFormData;
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ import FaxiosError from "../core/FaxiosError.js";
3
+ import utils from "../utils.js";
4
+ // Default nesting limit shared with the inverse transform (formDataToJSON) so
5
+ // the FormData <-> JSON round-trip stays symmetric.
6
+ export const DEFAULT_FORM_DATA_MAX_DEPTH = 100;
7
+ /**
8
+ * Determines if the given thing is a array or js object.
9
+ *
10
+ * @param {string} thing - The object or array to be visited.
11
+ *
12
+ * @returns {boolean}
13
+ */
14
+ function isVisitable(thing) {
15
+ return utils.isPlainObject(thing) || utils.isArray(thing);
16
+ }
17
+ /**
18
+ * It removes the brackets from the end of a string
19
+ *
20
+ * @param {string} key - The key of the parameter.
21
+ *
22
+ * @returns {string} the key without the brackets.
23
+ */
24
+ function removeBrackets(key) {
25
+ return key.endsWith("[]") ? key.slice(0, -2) : key;
26
+ }
27
+ /**
28
+ * It takes a path, a key, and a boolean, and returns a string
29
+ *
30
+ * @param {string} path - The path to the current key.
31
+ * @param {string} key - The key of the current object being iterated over.
32
+ * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
33
+ *
34
+ * @returns {string} The path to the current key.
35
+ */
36
+ function renderKey(path, key, dots) {
37
+ if (!path)
38
+ return String(key);
39
+ return path
40
+ .concat(key)
41
+ .map(function each(token, i) {
42
+ token = removeBrackets(String(token));
43
+ return !dots && i ? "[" + token + "]" : token;
44
+ })
45
+ .join(dots ? "." : "");
46
+ }
47
+ /**
48
+ * If the array is an array and none of its elements are visitable, then it's a flat array.
49
+ *
50
+ * @param {Array<any>} arr - The array to check
51
+ *
52
+ * @returns {boolean}
53
+ */
54
+ function isFlatArray(arr) {
55
+ return utils.isArray(arr) && !arr.some(isVisitable);
56
+ }
57
+ const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {
58
+ return /^is[A-Z]/.test(prop);
59
+ });
60
+ /**
61
+ * Convert a data object to FormData
62
+ *
63
+ * @param {Object} obj
64
+ * @param {?Object} [formData]
65
+ * @param {?Object} [options]
66
+ * @param {Function} [options.visitor]
67
+ * @param {Boolean} [options.metaTokens = true]
68
+ * @param {Boolean} [options.dots = false]
69
+ * @param {?Boolean} [options.indexes = false]
70
+ *
71
+ * @returns {Object}
72
+ **/
73
+ /**
74
+ * It converts an object into a FormData object
75
+ *
76
+ * @param {Object<any, any>} obj - The object to convert to form data.
77
+ * @param {string} formData - The FormData object to append to.
78
+ * @param {Object<string, any>} options
79
+ *
80
+ * @returns
81
+ */
82
+ function toFormData(obj, formData, options) {
83
+ if (!utils.isObject(obj)) {
84
+ throw new TypeError("target must be an object");
85
+ }
86
+ const FormDataCtor = globalThis["FormData"];
87
+ if (!formData) {
88
+ if (!FormDataCtor)
89
+ throw new FaxiosError("FormData is not available in this environment", FaxiosError.ERR_NOT_SUPPORT);
90
+ formData = new FormDataCtor();
91
+ }
92
+ options = utils.toFlatObject(options, {
93
+ metaTokens: true,
94
+ dots: false,
95
+ indexes: false,
96
+ }, false, function defined(option, source) {
97
+ return !utils.isUndefined(source[option]);
98
+ });
99
+ const metaTokens = options["metaTokens"];
100
+ const visitor = (options["visitor"] || defaultVisitor);
101
+ const dots = options["dots"];
102
+ const indexes = options["indexes"];
103
+ const _Blob = options["Blob"] || (typeof globalThis["Blob"] !== "undefined" && globalThis["Blob"]);
104
+ const maxDepth = options["maxDepth"] === undefined
105
+ ? DEFAULT_FORM_DATA_MAX_DEPTH
106
+ : options["maxDepth"];
107
+ const useBlob = _Blob && utils.isSpecCompliantForm(formData);
108
+ const stack = [];
109
+ if (!utils.isFunction(visitor)) {
110
+ throw new TypeError("visitor must be a function");
111
+ }
112
+ function convertValue(value) {
113
+ if (value === null)
114
+ return "";
115
+ if (utils.isDate(value)) {
116
+ return value.toISOString();
117
+ }
118
+ if (utils.isBoolean(value)) {
119
+ return String(value);
120
+ }
121
+ if (!useBlob && utils.isBlob(value)) {
122
+ throw new FaxiosError("Blob is not supported. Use a Buffer instead.");
123
+ }
124
+ if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {
125
+ const BlobCtor = globalThis["Blob"];
126
+ if (useBlob && typeof BlobCtor === "function") {
127
+ return new BlobCtor([value]);
128
+ }
129
+ throw new FaxiosError("Blob is required for binary FormData values in this environment", FaxiosError.ERR_NOT_SUPPORT);
130
+ }
131
+ return value;
132
+ }
133
+ function throwIfMaxDepthExceeded(depth) {
134
+ if (depth > (maxDepth)) {
135
+ throw new FaxiosError("Object is too deeply nested (" +
136
+ depth +
137
+ " levels). Max depth: " +
138
+ maxDepth, FaxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED);
139
+ }
140
+ }
141
+ function stringifyWithDepthLimit(value, depth) {
142
+ if (maxDepth === Infinity) {
143
+ return JSON.stringify(value);
144
+ }
145
+ const ancestors = [];
146
+ return JSON.stringify(value, function limitDepth(_key, currentValue) {
147
+ if (!utils.isObject(currentValue)) {
148
+ return currentValue;
149
+ }
150
+ while (ancestors.length && ancestors[ancestors.length - 1] !== this) {
151
+ ancestors.pop();
152
+ }
153
+ ancestors.push(currentValue);
154
+ throwIfMaxDepthExceeded(depth + ancestors.length - 1);
155
+ return currentValue;
156
+ });
157
+ }
158
+ /**
159
+ * Default visitor.
160
+ *
161
+ * @param {*} value
162
+ * @param {String|Number} key
163
+ * @param {Array<String|Number>} path
164
+ * @this {FormData}
165
+ *
166
+ * @returns {boolean} return true to visit the each prop of the value recursively
167
+ */
168
+ function defaultVisitor(value, key, path, _helpers) {
169
+ let arr = value;
170
+ if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {
171
+ formData.append(renderKey(path, key, dots), convertValue(value));
172
+ return false;
173
+ }
174
+ if (value && !path && typeof value === "object") {
175
+ if (String(key).endsWith("{}")) {
176
+ key = metaTokens ? key : String(key).slice(0, -2);
177
+ value = stringifyWithDepthLimit(value, 1);
178
+ }
179
+ else if ((utils.isArray(value) && isFlatArray(value)) ||
180
+ ((utils.isFileList(value) || String(key).endsWith("[]")) &&
181
+ (arr = utils.toArray(value)))) {
182
+ key = removeBrackets(String(key));
183
+ arr.forEach(function each(el, index) {
184
+ !utils.isUndefined(el) && el !== null &&
185
+ formData.append(
186
+ /* eslint-disable sonarjs/no-nested-conditional */
187
+ indexes === true
188
+ ? renderKey([String(key)], index, dots)
189
+ : indexes === null
190
+ ? String(key)
191
+ : String(key) + "[]",
192
+ /* eslint-enable sonarjs/no-nested-conditional */
193
+ convertValue(el));
194
+ });
195
+ return false;
196
+ }
197
+ }
198
+ if (isVisitable(value)) {
199
+ return true;
200
+ }
201
+ formData.append(renderKey(path, key, dots), convertValue(value));
202
+ return false;
203
+ }
204
+ const exposedHelpers = Object.assign(predicates, {
205
+ defaultVisitor: defaultVisitor,
206
+ convertValue,
207
+ isVisitable,
208
+ });
209
+ function build(value, path, depth = 0) {
210
+ if (utils.isUndefined(value))
211
+ return;
212
+ throwIfMaxDepthExceeded(depth);
213
+ if (stack.indexOf(value) !== -1) {
214
+ throw new Error("Circular reference detected in " + (path ?? []).join("."));
215
+ }
216
+ stack.push(value);
217
+ utils.forEach(value, function each(el, key) {
218
+ const result = !utils.isUndefined(el) && el !== null &&
219
+ visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path ?? null, exposedHelpers);
220
+ if (result === true) {
221
+ build(el, path ? path.concat(key) : [key], depth + 1);
222
+ }
223
+ });
224
+ stack.pop();
225
+ }
226
+ if (!utils.isObject(obj)) {
227
+ throw new TypeError("data must be an object");
228
+ }
229
+ build(obj);
230
+ return formData;
231
+ }
232
+ export default toFormData;
233
+ //# sourceMappingURL=toFormData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toFormData.js","sourceRoot":"","sources":["../../../src/lib/helpers/toFormData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { GenericFormData } from "../types.js";
2
+ export default function toURLEncodedForm(data: unknown, options?: Record<string, unknown>): GenericFormData;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ import platform from "../platform.js";
3
+ import toFormData from "./toFormData.js";
4
+ export default function toURLEncodedForm(data, options) {
5
+ // ponytail: web-standard platform always provides global URLSearchParams
6
+ return toFormData(data, new platform.classes.URLSearchParams(), { ...options });
7
+ }
8
+ //# sourceMappingURL=toURLEncodedForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toURLEncodedForm.js","sourceRoot":"","sources":["../../../src/lib/helpers/toURLEncodedForm.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,QAAQ,uBAAuB;AAEtC,OAAO,UAAU,wBAAwB;AAEzC,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,IAAa,EAAE,OAAiC;IACvF,yEAAyE;IACzE,OAAO,UAAU,CACf,IAAI,EACJ,IAAK,QAAQ,CAAC,OAAO,CAAC,eAAoC,EAAgC,EAC1F,EAAE,GAAG,OAAO,EAAE,CACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const trackStream: (stream: unknown, chunkSize: number | undefined, onProgress?: ((bytes: number) => void) | null, onFinish?: ((err?: unknown) => void) | null) => unknown;
@@ -0,0 +1,81 @@
1
+ const ReadableStreamGlobal = globalThis["ReadableStream"];
2
+ const streamChunk = function* (chunk, chunkSize) {
3
+ const len = chunk.byteLength;
4
+ if (!chunkSize || len < chunkSize) {
5
+ yield chunk;
6
+ return;
7
+ }
8
+ let pos = 0;
9
+ let end;
10
+ while (pos < len) {
11
+ end = pos + chunkSize;
12
+ yield chunk.slice(pos, end);
13
+ pos = end;
14
+ }
15
+ };
16
+ const readBytes = async function* (iterable, chunkSize) {
17
+ for await (const chunk of readStream(iterable)) {
18
+ yield* streamChunk(chunk, chunkSize);
19
+ }
20
+ };
21
+ const readStream = async function* (stream) {
22
+ const s = stream;
23
+ if (s[Symbol.asyncIterator]) {
24
+ yield* s;
25
+ return;
26
+ }
27
+ const reader = s.getReader();
28
+ try {
29
+ for (;;) {
30
+ // eslint-disable-next-line no-await-in-loop
31
+ const { done, value } = await reader.read();
32
+ if (done) {
33
+ break;
34
+ }
35
+ yield value;
36
+ }
37
+ }
38
+ finally {
39
+ await reader.cancel();
40
+ }
41
+ };
42
+ export const trackStream = (stream, chunkSize, onProgress, onFinish) => {
43
+ const iterator = readBytes(stream, chunkSize);
44
+ let bytes = 0;
45
+ let done = false;
46
+ const _onFinish = (e) => {
47
+ if (!done) {
48
+ done = true;
49
+ onFinish && onFinish(e);
50
+ }
51
+ };
52
+ return new ReadableStreamGlobal({
53
+ async pull(controller) {
54
+ try {
55
+ const { done: iterDone, value } = await iterator.next();
56
+ if (iterDone) {
57
+ _onFinish();
58
+ controller.close();
59
+ return;
60
+ }
61
+ const len = value.byteLength;
62
+ if (onProgress) {
63
+ const loadedBytes = (bytes += len);
64
+ onProgress(loadedBytes);
65
+ }
66
+ controller.enqueue(new Uint8Array(value));
67
+ }
68
+ catch (err) {
69
+ _onFinish(err);
70
+ throw err;
71
+ }
72
+ },
73
+ async cancel(reason) {
74
+ _onFinish(reason);
75
+ return iterator.return(undefined);
76
+ },
77
+ }, {
78
+ highWaterMark: 2,
79
+ });
80
+ };
81
+ //# sourceMappingURL=trackStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackStream.js","sourceRoot":"","sources":["../../../src/lib/helpers/trackStream.ts"],"names":[],"mappings":"AAgBA,MAAM,oBAAoB,GAAI,UAAsC,CAAC,gBAAgB,CAAmC,CAAC;AAIzH,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,KAAgB,EAAE,SAAkB;IACjE,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;IAE7B,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAW,CAAC;IAEhB,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;QACtB,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,GAAG,GAAG,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,KAAK,SAAS,CAAC,EAAE,QAA4C,EAAE,SAAkB;IACjG,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAYF,MAAM,UAAU,GAAG,KAAK,SAAS,CAAC,EAAE,MAAe;IACjD,MAAM,CAAC,GAAG,MAAoB,CAAC;IAC/B,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,CAA6B,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,SAAU,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,SAAS,CAAC;YACR,4CAA4C;YAC5C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;YACO,CAAC;QACP,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAe,EAAE,SAA6B,EAAE,UAA6C,EAAE,QAA2C,EAAW,EAAE;IACjL,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE9C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,MAAM,SAAS,GAAG,CAAC,CAAW,EAAQ,EAAE;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,CAAC;YACZ,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,IAAI,oBAAqB,CAC9B;QACE,KAAK,CAAC,IAAI,CAAC,UAAoC;YAC7C,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAExD,IAAI,QAAQ,EAAE,CAAC;oBACb,SAAS,EAAE,CAAC;oBACZ,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC7B,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;oBACnC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC1B,CAAC;gBACD,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAA+B,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,GAAG,EAAE,CAAC;gBACX,SAAS,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAgB;YAC3B,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;KACF,EACD;QACE,aAAa,EAAE,CAAC;KACjB,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type ValidatorFn = (value: unknown, opt?: string, opts?: unknown) => boolean | string;
2
+ /**
3
+ * Assert object's properties type
4
+ *
5
+ * @param {object} options
6
+ * @param {object} schema
7
+ * @param {boolean?} allowUnknown
8
+ *
9
+ * @returns {object}
10
+ */
11
+ declare function assertOptions(options: unknown, schema: Record<string, ValidatorFn | undefined>, allowUnknown: boolean): void;
12
+ declare const _default: {
13
+ assertOptions: typeof assertOptions;
14
+ validators: Record<string, ValidatorFn | undefined>;
15
+ };
16
+ export default _default;