@sinch/sdk-client 1.4.2 → 1.6.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 (123) hide show
  1. package/dist/api/api-client-options-helper.d.ts +6 -2
  2. package/dist/api/api-client-options-helper.js +56 -7
  3. package/dist/api/api-client-options-helper.js.map +1 -1
  4. package/dist/api/api-client-options.d.ts +8 -1
  5. package/dist/api/api-client.d.ts +12 -3
  6. package/dist/api/api-client.js +8 -1
  7. package/dist/api/api-client.js.map +1 -1
  8. package/dist/api/api-errors.d.ts +2 -0
  9. package/dist/api/api-errors.js +3 -1
  10. package/dist/api/api-errors.js.map +1 -1
  11. package/dist/api/api-interface.d.ts +1 -1
  12. package/dist/api/callback-webhooks-interface.d.ts +1 -0
  13. package/dist/api/index.d.ts +1 -1
  14. package/dist/api/index.js.map +1 -1
  15. package/dist/client/api-client-helpers.js.map +1 -1
  16. package/dist/client/api-client-pagination-helper.js +24 -0
  17. package/dist/client/api-client-pagination-helper.js.map +1 -1
  18. package/dist/client/api-fetch-client.d.ts +7 -3
  19. package/dist/client/api-fetch-client.js +77 -31
  20. package/dist/client/api-fetch-client.js.map +1 -1
  21. package/dist/client/index.d.ts +1 -0
  22. package/dist/client/index.js +1 -0
  23. package/dist/client/index.js.map +1 -1
  24. package/dist/client/lazy-api-client.d.ts +9 -0
  25. package/dist/client/lazy-api-client.js +14 -0
  26. package/dist/client/lazy-api-client.js.map +1 -0
  27. package/dist/client/retry-policy.d.ts +33 -0
  28. package/dist/client/retry-policy.js +112 -0
  29. package/dist/client/retry-policy.js.map +1 -0
  30. package/dist/domain/domain-helper.d.ts +15 -0
  31. package/dist/domain/domain-helper.js +16 -1
  32. package/dist/domain/domain-helper.js.map +1 -1
  33. package/dist/domain/domain-interface.d.ts +99 -3
  34. package/dist/domain/domain-interface.js +35 -1
  35. package/dist/domain/domain-interface.js.map +1 -1
  36. package/dist/http/fetch/fetch-http-content-parser.d.ts +13 -0
  37. package/dist/http/fetch/fetch-http-content-parser.js +65 -0
  38. package/dist/http/fetch/fetch-http-content-parser.js.map +1 -0
  39. package/dist/http/fetch/fetch-http-headers.d.ts +4 -0
  40. package/dist/http/fetch/fetch-http-headers.js +37 -0
  41. package/dist/http/fetch/fetch-http-headers.js.map +1 -0
  42. package/dist/http/fetch/fetch-http-request-mapper.d.ts +8 -0
  43. package/dist/http/fetch/fetch-http-request-mapper.js +31 -0
  44. package/dist/http/fetch/fetch-http-request-mapper.js.map +1 -0
  45. package/dist/http/fetch/fetch-http-response.d.ts +3 -0
  46. package/dist/http/fetch/fetch-http-response.js +10 -0
  47. package/dist/http/fetch/fetch-http-response.js.map +1 -0
  48. package/dist/http/fetch/fetch-http-transport.d.ts +11 -0
  49. package/dist/http/fetch/fetch-http-transport.js +44 -0
  50. package/dist/http/fetch/fetch-http-transport.js.map +1 -0
  51. package/dist/http/fetch/index.d.ts +5 -0
  52. package/dist/http/fetch/index.js +15 -0
  53. package/dist/http/fetch/index.js.map +1 -0
  54. package/dist/http/http-content-parser.d.ts +13 -0
  55. package/dist/http/http-content-parser.js +3 -0
  56. package/dist/http/http-content-parser.js.map +1 -0
  57. package/dist/http/http-headers.d.ts +16 -0
  58. package/dist/http/http-headers.js +63 -0
  59. package/dist/http/http-headers.js.map +1 -0
  60. package/dist/http/http-method.d.ts +10 -0
  61. package/dist/http/http-method.js +26 -0
  62. package/dist/http/http-method.js.map +1 -0
  63. package/dist/http/http-request.d.ts +27 -0
  64. package/dist/http/http-request.js +19 -0
  65. package/dist/http/http-request.js.map +1 -0
  66. package/dist/http/http-response.d.ts +12 -0
  67. package/dist/http/http-response.js +16 -0
  68. package/dist/http/http-response.js.map +1 -0
  69. package/dist/http/http-transport.d.ts +15 -0
  70. package/dist/http/http-transport.js +3 -0
  71. package/dist/http/http-transport.js.map +1 -0
  72. package/dist/http/index.d.ts +6 -0
  73. package/dist/http/index.js +13 -0
  74. package/dist/http/index.js.map +1 -0
  75. package/dist/index.d.ts +1 -0
  76. package/dist/index.js +1 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/logger/index.d.ts +2 -0
  79. package/dist/logger/index.js +9 -0
  80. package/dist/logger/index.js.map +1 -0
  81. package/dist/logger/logger-types.d.ts +30 -0
  82. package/dist/logger/logger-types.js +3 -0
  83. package/dist/logger/logger-types.js.map +1 -0
  84. package/dist/logger/logger.d.ts +11 -0
  85. package/dist/logger/logger.js +56 -0
  86. package/dist/logger/logger.js.map +1 -0
  87. package/dist/logger/sinch-logger.d.ts +14 -0
  88. package/dist/logger/sinch-logger.js +39 -0
  89. package/dist/logger/sinch-logger.js.map +1 -0
  90. package/dist/plugins/additional-headers/additional-headers.request.js.map +1 -1
  91. package/dist/plugins/api-token/api-token.request.d.ts +1 -0
  92. package/dist/plugins/api-token/api-token.request.js +1 -0
  93. package/dist/plugins/api-token/api-token.request.js.map +1 -1
  94. package/dist/plugins/basicAuthentication/basic-authentication.request.d.ts +1 -0
  95. package/dist/plugins/basicAuthentication/basic-authentication.request.js +1 -0
  96. package/dist/plugins/basicAuthentication/basic-authentication.request.js.map +1 -1
  97. package/dist/plugins/core/index.d.ts +1 -1
  98. package/dist/plugins/core/index.js +1 -0
  99. package/dist/plugins/core/index.js.map +1 -1
  100. package/dist/plugins/core/request-plugin.d.ts +2 -1
  101. package/dist/plugins/core/request-plugin.js.map +1 -1
  102. package/dist/plugins/exception/exception.response.d.ts +5 -4
  103. package/dist/plugins/exception/exception.response.js +5 -4
  104. package/dist/plugins/exception/exception.response.js.map +1 -1
  105. package/dist/plugins/oauth2/oauth2-api.js.map +1 -1
  106. package/dist/plugins/oauth2/oauth2-token.request.d.ts +4 -6
  107. package/dist/plugins/oauth2/oauth2-token.request.js +26 -77
  108. package/dist/plugins/oauth2/oauth2-token.request.js.map +1 -1
  109. package/dist/plugins/signing/signing.request.d.ts +1 -0
  110. package/dist/plugins/signing/signing.request.js +1 -0
  111. package/dist/plugins/signing/signing.request.js.map +1 -1
  112. package/dist/plugins/version/version.request.d.ts +1 -0
  113. package/dist/plugins/version/version.request.js +1 -0
  114. package/dist/plugins/version/version.request.js.map +1 -1
  115. package/dist/plugins/x-timestamp/x-timestamp.request.d.ts +1 -0
  116. package/dist/plugins/x-timestamp/x-timestamp.request.js +1 -0
  117. package/dist/plugins/x-timestamp/x-timestamp.request.js.map +1 -1
  118. package/dist/utils/authorization.helper.d.ts +2 -2
  119. package/dist/utils/authorization.helper.js +7 -16
  120. package/dist/utils/authorization.helper.js.map +1 -1
  121. package/dist/utils/date.js.map +1 -1
  122. package/dist/utils/text-to-hex.js.map +1 -1
  123. package/package.json +7 -4
@@ -1,13 +1,18 @@
1
1
  import { RequestPlugin } from '../plugins/core/request-plugin';
2
2
  import { ResponsePlugin } from '../plugins/core/response-plugin';
3
+ import { Logger } from '../logger';
3
4
  /**
4
5
  * Global object that holds the API configuration.
5
6
  * Be careful to follow the guidelines defined by the API Services about which parameters are required for each API. Not all of them use the same authentication mechanism:
6
7
  * - OAuth2: Conversation, Fax, Numbers and SMS (US and EU regions only)
7
8
  * - API Token: SMS on all regions
8
9
  * - Application Signed: Verification and Voice
10
+ *
11
+ * Optional cross-cutting settings include `logger` ({@link WithLogger}),
12
+ * retry tuning via `retryPolicy`, `maxRetryCount`, and `exponentialBackoff`
13
+ * ({@link WithRetryPolicy}), and transport settings ({@link TransportSettings}).
9
14
  */
10
- export type SinchClientParameters = Partial<UnifiedCredentials & MailgunCredentials & ServicePlanIdCredentials & ApplicationCredentials & ApiHostname & ApiPlugins>;
15
+ export type SinchClientParameters = Partial<UnifiedCredentials & ServicePlanIdCredentials & ApplicationCredentials & ApiHostname & ApiPlugins & WithLogger & WithRetryPolicy & TransportSettings>;
11
16
  export interface UnifiedCredentials {
12
17
  /** The project ID associated with the API Client. You can find this on your [Dashboard](https://dashboard.sinch.com/account/access-keys). */
13
18
  projectId: string;
@@ -24,6 +29,7 @@ export interface UnifiedCredentials {
24
29
  /** The region for the Conversation API. Default region is US */
25
30
  conversationRegion?: ConversationRegion;
26
31
  }
32
+ /** @internal @deprecated */
27
33
  export interface MailgunCredentials {
28
34
  /** Your API Key created from the [Mailgun Dashboard](https://app.mailgun.com/settings/api_security) */
29
35
  mailgunApiKey: string;
@@ -55,11 +61,11 @@ export interface ApiHostname {
55
61
  conversationHostname?: string;
56
62
  /** Override the hostname for the Conversation Templates API - Note the regions become ineffective */
57
63
  conversationTemplatesHostname?: string;
58
- /** Override the hostname for the Elastic SIP Trunking API */
64
+ /** @deprecated Elastic SIP Trunking support will be removed in version 2 of the SDK. Override the hostname for the Elastic SIP Trunking API */
59
65
  elasticSipTrunkingHostname?: string;
60
66
  /** Override the hostname for the Fax API */
61
67
  faxHostname?: string;
62
- /** Override the hostname for the Mailgun API - Note the regions become ineffective */
68
+ /** @deprecated Mailgun was never released as a Node SDK product. */
63
69
  mailgunHostname?: string;
64
70
  /** Override the hostname for the Numbers API */
65
71
  numbersHostname?: string;
@@ -71,8 +77,12 @@ export interface ApiHostname {
71
77
  voiceHostname?: string;
72
78
  /** Override the hostname for the Voice Application Management API */
73
79
  voiceApplicationManagementHostname?: string;
80
+ /** Override the hostname for the Voice API v2 */
81
+ voiceV2Hostname?: string;
74
82
  /** Override the hostname for the Number Lookup API */
75
83
  numberLookupHostname?: string;
84
+ /** Override the hostname for the Provisioning API */
85
+ provisioningHostname?: string;
76
86
  }
77
87
  export interface ApiPlugins {
78
88
  /** Add more plugins to action on the request before it is sent */
@@ -145,12 +155,98 @@ export declare const ConversationRegion: {
145
155
  EUROPE: SupportedConversationRegion.EUROPE;
146
156
  BRAZIL: SupportedConversationRegion.BRAZIL;
147
157
  };
158
+ /** @internal @deprecated Mailgun was never released as a Node SDK product. */
148
159
  export declare enum SupportedMailgunRegion {
149
160
  DEFAULT = "",
150
161
  EUROPE = "eu"
151
162
  }
163
+ /** @internal @deprecated Mailgun was never released as a Node SDK product. */
152
164
  export type MailgunRegion = SupportedMailgunRegion | string;
165
+ /** @internal @deprecated Mailgun was never released as a Node SDK product. */
153
166
  export declare const MailgunRegion: {
154
167
  DEFAULT: SupportedMailgunRegion.DEFAULT;
155
168
  EUROPE: SupportedMailgunRegion.EUROPE;
156
169
  };
170
+ export interface WithLogger {
171
+ /**
172
+ * Logger instance to be used by the SDK.
173
+ * - omitted or `undefined`: defaults to `console`
174
+ * - `null`: silent (no SDK output)
175
+ */
176
+ logger?: Logger | null;
177
+ }
178
+ /**
179
+ * Policy used when the SDK retries a failed HTTP call.
180
+ * - `DEFAULT`: honor `Retry-After` when present, otherwise exponential backoff
181
+ * - `RETRY_AFTER`: only retry when a usable `Retry-After` header is present
182
+ * - `BACKOFF`: ignore `Retry-After`; use full-jitter exponential backoff only
183
+ * - `NONE`: disable automatic retries
184
+ */
185
+ export declare enum SupportedRetryPolicy {
186
+ DEFAULT = "DEFAULT",
187
+ RETRY_AFTER = "RETRY_AFTER",
188
+ BACKOFF = "BACKOFF",
189
+ NONE = "NONE"
190
+ }
191
+ export type RetryPolicy = SupportedRetryPolicy;
192
+ export declare const RetryPolicy: {
193
+ DEFAULT: SupportedRetryPolicy.DEFAULT;
194
+ RETRY_AFTER: SupportedRetryPolicy.RETRY_AFTER;
195
+ BACKOFF: SupportedRetryPolicy.BACKOFF;
196
+ NONE: SupportedRetryPolicy.NONE;
197
+ };
198
+ /**
199
+ * Tunable retry settings applied to all SDK HTTP calls (OAuth and product APIs).
200
+ * Defaults: `retryPolicy=DEFAULT`, `maxRetryCount=3`, `exponentialBackoff=4`.
201
+ */
202
+ export interface WithRetryPolicy {
203
+ /**
204
+ * How the SDK should retry eligible failed HTTP responses.
205
+ * Unknown values are rejected.
206
+ * @default RetryPolicy.DEFAULT
207
+ */
208
+ retryPolicy?: RetryPolicy;
209
+ /**
210
+ * Maximum number of retries after the first attempt before the error is surfaced to the caller.
211
+ * Must be a non-negative integer.
212
+ * @default 3
213
+ */
214
+ maxRetryCount?: number;
215
+ /**
216
+ * Growth factor for the full-jitter exponential backoff ceiling
217
+ * (`1000ms * exponentialBackoff^attempt`).
218
+ * Must be a positive number.
219
+ * @default 4
220
+ */
221
+ exponentialBackoff?: number;
222
+ }
223
+ /** Default HTTP I/O timeout in seconds when `timeoutSeconds` is omitted. */
224
+ export declare const DEFAULT_TIMEOUT_SECONDS = 60;
225
+ /**
226
+ * Resolve `timeoutSeconds`, defaulting to {@link DEFAULT_TIMEOUT_SECONDS}.
227
+ * `0` disables the timeout.
228
+ * @internal
229
+ */
230
+ export declare const resolveTimeoutSeconds: (timeoutSeconds?: number) => number;
231
+ /**
232
+ * Transport-level settings shared by SinchClient and (later) request-level options.
233
+ */
234
+ export interface TransportSettings {
235
+ /**
236
+ * When true (default), OAuth-capable APIs authenticate against Sinch auth.
237
+ * Set false to skip Sinch OAuth (e.g. custom Authorization via requestPlugins).
238
+ * When false, OAuth-capable APIs require only `projectId`.
239
+ */
240
+ useSinchAuth?: boolean;
241
+ /**
242
+ * Request/connection timeout in seconds for HTTP I/O. Default: 60.
243
+ * Pass 0 to disable the timeout.
244
+ */
245
+ timeoutSeconds?: number;
246
+ }
247
+ /** Sinch client parameters with resolved logger and transport defaults. */
248
+ export type ResolvedSinchClientParameters = Omit<SinchClientParameters, 'logger' | 'useSinchAuth' | 'timeoutSeconds'> & {
249
+ logger: Logger;
250
+ useSinchAuth: boolean;
251
+ timeoutSeconds: number;
252
+ };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MailgunRegion = exports.SupportedMailgunRegion = exports.ConversationRegion = exports.SupportedConversationRegion = exports.FaxRegion = exports.SupportedFaxRegion = exports.VoiceRegion = exports.SupportedVoiceRegion = exports.SmsRegion = exports.SupportedSmsRegion = exports.isServicePlanIdCredentials = exports.isUnifiedCredentials = void 0;
3
+ exports.resolveTimeoutSeconds = exports.DEFAULT_TIMEOUT_SECONDS = exports.RetryPolicy = exports.SupportedRetryPolicy = exports.MailgunRegion = exports.SupportedMailgunRegion = exports.ConversationRegion = exports.SupportedConversationRegion = exports.FaxRegion = exports.SupportedFaxRegion = exports.VoiceRegion = exports.SupportedVoiceRegion = exports.SmsRegion = exports.SupportedSmsRegion = exports.isServicePlanIdCredentials = exports.isUnifiedCredentials = void 0;
4
4
  const isUnifiedCredentials = (credentials) => {
5
5
  const candidate = (credentials);
6
6
  return candidate.projectId !== undefined
@@ -70,12 +70,46 @@ exports.ConversationRegion = {
70
70
  };
71
71
  // ////////////////////
72
72
  // Mailgun regions
73
+ /** @internal @deprecated Mailgun was never released as a Node SDK product. */
73
74
  var SupportedMailgunRegion;
74
75
  (function (SupportedMailgunRegion) {
75
76
  SupportedMailgunRegion["DEFAULT"] = "";
76
77
  SupportedMailgunRegion["EUROPE"] = "eu";
77
78
  })(SupportedMailgunRegion || (exports.SupportedMailgunRegion = SupportedMailgunRegion = {}));
79
+ /** @internal @deprecated Mailgun was never released as a Node SDK product. */
78
80
  exports.MailgunRegion = {
79
81
  ...SupportedMailgunRegion,
80
82
  };
83
+ /**
84
+ * Policy used when the SDK retries a failed HTTP call.
85
+ * - `DEFAULT`: honor `Retry-After` when present, otherwise exponential backoff
86
+ * - `RETRY_AFTER`: only retry when a usable `Retry-After` header is present
87
+ * - `BACKOFF`: ignore `Retry-After`; use full-jitter exponential backoff only
88
+ * - `NONE`: disable automatic retries
89
+ */
90
+ var SupportedRetryPolicy;
91
+ (function (SupportedRetryPolicy) {
92
+ SupportedRetryPolicy["DEFAULT"] = "DEFAULT";
93
+ SupportedRetryPolicy["RETRY_AFTER"] = "RETRY_AFTER";
94
+ SupportedRetryPolicy["BACKOFF"] = "BACKOFF";
95
+ SupportedRetryPolicy["NONE"] = "NONE";
96
+ })(SupportedRetryPolicy || (exports.SupportedRetryPolicy = SupportedRetryPolicy = {}));
97
+ exports.RetryPolicy = {
98
+ ...SupportedRetryPolicy,
99
+ };
100
+ /** Default HTTP I/O timeout in seconds when `timeoutSeconds` is omitted. */
101
+ exports.DEFAULT_TIMEOUT_SECONDS = 60;
102
+ /**
103
+ * Resolve `timeoutSeconds`, defaulting to {@link DEFAULT_TIMEOUT_SECONDS}.
104
+ * `0` disables the timeout.
105
+ * @internal
106
+ */
107
+ const resolveTimeoutSeconds = (timeoutSeconds) => {
108
+ const value = timeoutSeconds ?? exports.DEFAULT_TIMEOUT_SECONDS;
109
+ if (!Number.isFinite(value) || value < 0) {
110
+ throw new Error('Invalid configuration: "timeoutSeconds" must be a non-negative number');
111
+ }
112
+ return value;
113
+ };
114
+ exports.resolveTimeoutSeconds = resolveTimeoutSeconds;
81
115
  //# sourceMappingURL=domain-interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain-interface.js","sourceRoot":"","sources":["../../src/domain/domain-interface.ts"],"names":[],"mappings":";;;AAgGO,MAAM,oBAAoB,GAAG,CAAC,WAAgB,EAAqC,EAAE;IAC1F,MAAM,SAAS,GAAG,CAAC,WAAW,CAAuB,CAAC;IACtD,OAAO,SAAS,CAAC,SAAS,KAAK,SAAS;WACnC,SAAS,CAAC,KAAK,KAAK,SAAS;WAC7B,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC;AACzC,CAAC,CAAC;AALW,QAAA,oBAAoB,wBAK/B;AAEK,MAAM,0BAA0B,GAAG,CAAC,WAAgB,EAA2C,EAAE;IACtG,MAAM,SAAS,GAAG,CAAC,WAAW,CAA6B,CAAC;IAC5D,OAAO,SAAS,CAAC,aAAa,KAAK,SAAS;WACvC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;AACxC,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC;AAEF,gBAAgB;AAChB,cAAc;AACd,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,0CAAoB,CAAA;IACpB,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,sCAAgB,CAAA;AAClB,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B;AAIY,QAAA,SAAS,GAAG;IACvB,GAAG,kBAAkB;CACtB,CAAC;AAEF,gBAAgB;AAChB,gBAAgB;AAChB,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,oCAAY,CAAA;IACZ,8CAAsB,CAAA;IACtB,uCAAe,CAAA;IACf,8CAAsB,CAAA;IACtB,kDAA0B,CAAA;IAC1B,kDAA0B,CAAA;AAC5B,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAIY,QAAA,WAAW,GAAG;IACzB,GAAG,oBAAoB;CACxB,CAAC;AAEF,cAAc;AACd,cAAc;AACd,kBAAkB;AAClB,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,kCAAY,CAAA;IACZ,4CAAsB,CAAA;IACtB,oCAAc,CAAA;IACd,4CAAsB,CAAA;IACtB,gDAA0B,CAAA;IAC1B,gDAA0B,CAAA;AAC5B,CAAC,EAPW,kBAAkB,kCAAlB,kBAAkB,QAO7B;AAKD,kBAAkB;AACL,QAAA,SAAS,GAAG;IACvB,GAAG,kBAAkB;CACtB,CAAC;AAEF,uBAAuB;AACvB,uBAAuB;AACvB,IAAY,2BAIX;AAJD,WAAY,2BAA2B;IACrC,mDAAoB,CAAA;IACpB,4CAAa,CAAA;IACb,4CAAa,CAAA;AACf,CAAC,EAJW,2BAA2B,2CAA3B,2BAA2B,QAItC;AAIY,QAAA,kBAAkB,GAAG;IAChC,GAAG,2BAA2B;CAC/B,CAAC;AAEF,uBAAuB;AACvB,kBAAkB;AAClB,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,sCAAY,CAAA;IACZ,uCAAa,CAAA;AACf,CAAC,EAHW,sBAAsB,sCAAtB,sBAAsB,QAGjC;AAIY,QAAA,aAAa,GAAG;IAC3B,GAAG,sBAAsB;CAC1B,CAAC"}
1
+ {"version":3,"file":"domain-interface.js","sourceRoot":"","sources":["../../src/domain/domain-interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Response } from 'node-fetch';
2
+ import { HttpContentParser } from '../http-content-parser';
3
+ /** @internal */
4
+ export declare class FetchHttpContentParser implements HttpContentParser {
5
+ private readonly response;
6
+ private buffered;
7
+ private consumedAsStream;
8
+ constructor(response: Response);
9
+ asString(): Promise<string>;
10
+ asBytes(): Promise<Buffer>;
11
+ asJson(): Promise<unknown>;
12
+ asStream(): NodeJS.ReadableStream;
13
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FetchHttpContentParser = void 0;
4
+ const stream_1 = require("stream");
5
+ const DEFAULT_FALLBACK_ENCODING = 'utf-8';
6
+ const CHARSET_TO_ENCODING = {
7
+ 'utf-8': DEFAULT_FALLBACK_ENCODING,
8
+ utf8: DEFAULT_FALLBACK_ENCODING,
9
+ ascii: 'ascii',
10
+ 'us-ascii': 'ascii',
11
+ latin1: 'latin1',
12
+ 'iso-8859-1': 'latin1',
13
+ 'iso8859-1': 'latin1',
14
+ };
15
+ /** @internal */
16
+ class FetchHttpContentParser {
17
+ constructor(response) {
18
+ this.response = response;
19
+ this.consumedAsStream = false;
20
+ }
21
+ async asString() {
22
+ const bytes = await this.asBytes();
23
+ return bytes.toString(encodingFromContentType(this.response.headers.get('content-type')));
24
+ }
25
+ async asBytes() {
26
+ if (this.buffered) {
27
+ return this.buffered;
28
+ }
29
+ if (this.consumedAsStream) {
30
+ throw new Error('Response body already consumed as a stream');
31
+ }
32
+ this.buffered = await this.response.buffer();
33
+ return this.buffered;
34
+ }
35
+ async asJson() {
36
+ const text = await this.asString();
37
+ return text ? JSON.parse(text) : undefined;
38
+ }
39
+ asStream() {
40
+ if (this.buffered) {
41
+ return stream_1.Readable.from([this.buffered]);
42
+ }
43
+ if (this.consumedAsStream) {
44
+ throw new Error('Response body already consumed as a stream');
45
+ }
46
+ const stream = this.response.body;
47
+ if (!stream) {
48
+ throw new Error('Response body stream is not available');
49
+ }
50
+ this.consumedAsStream = true;
51
+ return stream;
52
+ }
53
+ }
54
+ exports.FetchHttpContentParser = FetchHttpContentParser;
55
+ function encodingFromContentType(contentType) {
56
+ if (!contentType) {
57
+ return DEFAULT_FALLBACK_ENCODING;
58
+ }
59
+ const match = /charset\s*=\s*["']?([^;"'\s]+)/i.exec(contentType);
60
+ if (!match) {
61
+ return DEFAULT_FALLBACK_ENCODING;
62
+ }
63
+ return CHARSET_TO_ENCODING[match[1].toLowerCase()] ?? DEFAULT_FALLBACK_ENCODING;
64
+ }
65
+ //# sourceMappingURL=fetch-http-content-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-http-content-parser.js","sourceRoot":"","sources":["../../../src/http/fetch/fetch-http-content-parser.ts"],"names":[],"mappings":";;;AACA,mCAAkC;AAGlC,MAAM,yBAAyB,GAAmB,OAAO,CAAC;AAE1D,MAAM,mBAAmB,GAAmC;IAC1D,OAAO,EAAE,yBAAyB;IAClC,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,QAAQ;IACtB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF,gBAAgB;AAChB;IAIE,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAFvC,qBAAgB,GAAG,KAAK,CAAC;IAEiB,CAAC;IAEnD,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,iBAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAoC,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;;AAED,SAAS,uBAAuB,CAAC,WAAsC;IACrE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,MAAM,KAAK,GAAG,iCAAiC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,yBAAyB,CAAC;AAClF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Headers } from 'node-fetch';
2
+ import { HttpHeaders } from '../http-headers';
3
+ export declare function toFetchHeaders(headers: HttpHeaders): Headers;
4
+ export declare function fromFetchHeaders(headers: Headers): HttpHeaders;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toFetchHeaders = toFetchHeaders;
4
+ exports.fromFetchHeaders = fromFetchHeaders;
5
+ const node_fetch_1 = require("node-fetch");
6
+ const http_headers_1 = require("../http-headers");
7
+ function toFetchHeaders(headers) {
8
+ const fetchHeaders = new node_fetch_1.Headers();
9
+ for (const [name, value] of headers.entries()) {
10
+ fetchHeaders.append(name, value);
11
+ }
12
+ return fetchHeaders;
13
+ }
14
+ function fromFetchHeaders(headers) {
15
+ const result = new http_headers_1.HttpHeaders();
16
+ const rawHeaders = getRawHeaderMap(headers);
17
+ if (rawHeaders) {
18
+ for (const [name, values] of Object.entries(rawHeaders)) {
19
+ for (const value of values) {
20
+ result.append(name, value);
21
+ }
22
+ }
23
+ return result;
24
+ }
25
+ headers.forEach((value, name) => {
26
+ result.append(name, value);
27
+ });
28
+ return result;
29
+ }
30
+ const getRawHeaderMap = (headers) => {
31
+ const withRaw = headers;
32
+ if (typeof withRaw.raw !== 'function') {
33
+ return undefined;
34
+ }
35
+ return withRaw.raw();
36
+ };
37
+ //# sourceMappingURL=fetch-http-headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-http-headers.js","sourceRoot":"","sources":["../../../src/http/fetch/fetch-http-headers.ts"],"names":[],"mappings":";;;;AAAA,2CAAqC;AACrC,kDAA8C;AAE9C,wBAA+B,OAAoB;IACjD,MAAM,YAAY,GAAG,IAAI,oBAAO,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,0BAAiC,OAAgB;IAC/C,MAAM,MAAM,GAAG,IAAI,0BAAW,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,eAAe,GAAG,CACtB,OAAgB,EACsB,EAAE;IACxC,MAAM,OAAO,GAAG,OAA6D,CAAC;IAC9E,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ApiCallParameters } from '../../api/api-client';
2
+ import { RequestOptions } from '../../plugins/core/request-plugin';
3
+ import { HttpRequest } from '../http-request';
4
+ /**
5
+ * Build an {@link HttpRequest} from existing {@link ApiCallParameters}.
6
+ * @internal
7
+ */
8
+ export declare function toHttpRequest(apiCallParameters: ApiCallParameters, requestOptions?: RequestOptions): HttpRequest;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toHttpRequest = toHttpRequest;
4
+ const http_request_1 = require("../http-request");
5
+ const http_method_1 = require("../http-method");
6
+ const fetch_http_headers_1 = require("./fetch-http-headers");
7
+ const splitUrlAndQuery = (fullUrl) => {
8
+ const queryIndex = fullUrl.indexOf('?');
9
+ if (queryIndex === -1) {
10
+ return { url: fullUrl, queryParameters: null };
11
+ }
12
+ return {
13
+ url: fullUrl.slice(0, queryIndex),
14
+ queryParameters: fullUrl.slice(queryIndex),
15
+ };
16
+ };
17
+ /**
18
+ * Build an {@link HttpRequest} from existing {@link ApiCallParameters}.
19
+ * @internal
20
+ */
21
+ function toHttpRequest(apiCallParameters, requestOptions = apiCallParameters.requestOptions) {
22
+ const { url, queryParameters } = splitUrlAndQuery(apiCallParameters.url);
23
+ return new http_request_1.HttpRequest({
24
+ method: (0, http_method_1.resolveHttpMethod)(requestOptions.method),
25
+ url,
26
+ queryParameters,
27
+ headers: (0, fetch_http_headers_1.fromFetchHeaders)(requestOptions.headers),
28
+ content: requestOptions.body ?? null,
29
+ });
30
+ }
31
+ //# sourceMappingURL=fetch-http-request-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-http-request-mapper.js","sourceRoot":"","sources":["../../../src/http/fetch/fetch-http-request-mapper.ts"],"names":[],"mappings":";;;AAEA,kDAA8C;AAC9C,gDAAmD;AACnD,6DAAwD;AAExD,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAmD,EAAE;IAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IACD,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QACjC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;KAC3C,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,uBACE,iBAAoC,EACpC,cAAc,GAAmB,iBAAiB,CAAC,cAAc;IAEjE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACzE,OAAO,IAAI,0BAAW,CAAC;QACrB,MAAM,EAAE,IAAA,+BAAiB,EAAC,cAAc,CAAC,MAAM,CAAC;QAChD,GAAG;QACH,eAAe;QACf,OAAO,EAAE,IAAA,qCAAgB,EAAC,cAAc,CAAC,OAAO,CAAC;QACjD,OAAO,EAAE,cAAc,CAAC,IAAI,IAAI,IAAI;KACrC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Response } from 'node-fetch';
2
+ import { HttpResponse } from '../http-response';
3
+ export declare function toHttpResponse(nativeResponse: Response): HttpResponse;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toHttpResponse = toHttpResponse;
4
+ const http_response_1 = require("../http-response");
5
+ const fetch_http_content_parser_1 = require("./fetch-http-content-parser");
6
+ const fetch_http_headers_1 = require("./fetch-http-headers");
7
+ function toHttpResponse(nativeResponse) {
8
+ return new http_response_1.HttpResponse(nativeResponse.status, (0, fetch_http_headers_1.fromFetchHeaders)(nativeResponse.headers), new fetch_http_content_parser_1.FetchHttpContentParser(nativeResponse));
9
+ }
10
+ //# sourceMappingURL=fetch-http-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-http-response.js","sourceRoot":"","sources":["../../../src/http/fetch/fetch-http-response.ts"],"names":[],"mappings":";;;AACA,oDAAgD;AAChD,2EAAqE;AACrE,6DAAwD;AAExD,wBAA+B,cAAwB;IACrD,OAAO,IAAI,4BAAY,CACrB,cAAc,CAAC,MAAM,EACrB,IAAA,qCAAgB,EAAC,cAAc,CAAC,OAAO,CAAC,EACxC,IAAI,kDAAsB,CAAC,cAAc,CAAC,CAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Response } from 'node-fetch';
2
+ import { HttpRequest } from '../http-request';
3
+ import { HttpResponse } from '../http-response';
4
+ import { HttpTransport, HttpTransportSendInit } from '../http-transport';
5
+ /** @internal */
6
+ export declare class FetchHttpTransport implements HttpTransport {
7
+ private readonly nativeResponses;
8
+ send(request: HttpRequest, init?: HttpTransportSendInit): Promise<HttpResponse>;
9
+ release(response: HttpResponse): void;
10
+ getNativeResponse(response: HttpResponse): Response;
11
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FetchHttpTransport = void 0;
7
+ const node_fetch_1 = __importDefault(require("node-fetch"));
8
+ const fetch_http_headers_1 = require("./fetch-http-headers");
9
+ const fetch_http_response_1 = require("./fetch-http-response");
10
+ /** @internal */
11
+ class FetchHttpTransport {
12
+ constructor() {
13
+ this.nativeResponses = new WeakMap();
14
+ }
15
+ async send(request, init) {
16
+ const url = `${request.url}${request.queryParameters ?? ''}`;
17
+ const requestInit = {
18
+ method: request.method,
19
+ headers: (0, fetch_http_headers_1.toFetchHeaders)(request.headers),
20
+ body: request.content ?? undefined,
21
+ timeout: init?.timeout,
22
+ };
23
+ const response = await (0, node_fetch_1.default)(url, requestInit);
24
+ const httpResponse = (0, fetch_http_response_1.toHttpResponse)(response);
25
+ this.nativeResponses.set(httpResponse, response);
26
+ return httpResponse;
27
+ }
28
+ release(response) {
29
+ const native = this.nativeResponses.get(response);
30
+ const body = native?.body;
31
+ if (body && typeof body.destroy === 'function') {
32
+ body.destroy();
33
+ }
34
+ }
35
+ getNativeResponse(response) {
36
+ const native = this.nativeResponses.get(response);
37
+ if (!native) {
38
+ throw new Error('Native fetch response is not available for this HttpResponse');
39
+ }
40
+ return native;
41
+ }
42
+ }
43
+ exports.FetchHttpTransport = FetchHttpTransport;
44
+ //# sourceMappingURL=fetch-http-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-http-transport.js","sourceRoot":"","sources":["../../../src/http/fetch/fetch-http-transport.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA0D;AAI1D,6DAAsD;AACtD,+DAAuD;AAEvD,gBAAgB;AAChB;IAAA;QACmB,oBAAe,GAAG,IAAI,OAAO,EAA0B,CAAC;IA+B3E,CAAC;IA7BC,KAAK,CAAC,IAAI,CAAC,OAAoB,EAAE,IAA4B;QAC3D,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAgB;YAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,IAAA,mCAAc,EAAC,OAAO,CAAC,OAAO,CAAC;YACxC,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;YAClC,OAAO,EAAE,IAAI,EAAE,OAAO;SACvB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAA,oCAAc,EAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACjD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,QAAsB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,EAAE,IAAmD,CAAC;QACzE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,QAAsB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export { toFetchHeaders, fromFetchHeaders } from './fetch-http-headers';
2
+ export { FetchHttpContentParser } from './fetch-http-content-parser';
3
+ export { FetchHttpTransport } from './fetch-http-transport';
4
+ export { toHttpRequest } from './fetch-http-request-mapper';
5
+ export { toHttpResponse } from './fetch-http-response';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toHttpResponse = exports.toHttpRequest = exports.FetchHttpTransport = exports.FetchHttpContentParser = exports.fromFetchHeaders = exports.toFetchHeaders = void 0;
4
+ var fetch_http_headers_1 = require("./fetch-http-headers");
5
+ Object.defineProperty(exports, "toFetchHeaders", { enumerable: true, get: function () { return fetch_http_headers_1.toFetchHeaders; } });
6
+ Object.defineProperty(exports, "fromFetchHeaders", { enumerable: true, get: function () { return fetch_http_headers_1.fromFetchHeaders; } });
7
+ var fetch_http_content_parser_1 = require("./fetch-http-content-parser");
8
+ Object.defineProperty(exports, "FetchHttpContentParser", { enumerable: true, get: function () { return fetch_http_content_parser_1.FetchHttpContentParser; } });
9
+ var fetch_http_transport_1 = require("./fetch-http-transport");
10
+ Object.defineProperty(exports, "FetchHttpTransport", { enumerable: true, get: function () { return fetch_http_transport_1.FetchHttpTransport; } });
11
+ var fetch_http_request_mapper_1 = require("./fetch-http-request-mapper");
12
+ Object.defineProperty(exports, "toHttpRequest", { enumerable: true, get: function () { return fetch_http_request_mapper_1.toHttpRequest; } });
13
+ var fetch_http_response_1 = require("./fetch-http-response");
14
+ Object.defineProperty(exports, "toHttpResponse", { enumerable: true, get: function () { return fetch_http_response_1.toHttpResponse; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/fetch/index.ts"],"names":[],"mappings":";;;AAAA,2DAAwE;AAA/D,oHAAA,cAAc,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AACzC,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAC/B,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,yEAA4D;AAAnD,0HAAA,aAAa,OAAA;AACtB,6DAAuD;AAA9C,qHAAA,cAAc,OAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Lazy parser over an HTTP response body.
3
+ * Buffered helpers (`asString`, `asBytes`, `asJson`) share one in-memory copy.
4
+ * `asStream` can replay a buffered body; mixing it with the underlying unread
5
+ * stream is not allowed.
6
+ * @internal
7
+ */
8
+ export interface HttpContentParser {
9
+ asString(): Promise<string>;
10
+ asBytes(): Promise<Buffer>;
11
+ asJson(): Promise<unknown>;
12
+ asStream(): NodeJS.ReadableStream;
13
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=http-content-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-content-parser.js","sourceRoot":"","sources":["../../src/http/http-content-parser.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Case-insensitive, multi-value HTTP headers.
3
+ * Header names are stored in first-seen order; values for the same name are grouped together.
4
+ * @internal
5
+ */
6
+ export declare class HttpHeaders {
7
+ private readonly store;
8
+ constructor(init?: Record<string, string | string[]>);
9
+ getAll(name: string): string[];
10
+ set(name: string, value: string | string[]): this;
11
+ append(name: string, value: string | string[]): this;
12
+ has(name: string): boolean;
13
+ delete(name: string): boolean;
14
+ entries(): IterableIterator<[string, string]>;
15
+ private headerKey;
16
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpHeaders = void 0;
4
+ /**
5
+ * Case-insensitive, multi-value HTTP headers.
6
+ * Header names are stored in first-seen order; values for the same name are grouped together.
7
+ * @internal
8
+ */
9
+ class HttpHeaders {
10
+ constructor(init) {
11
+ this.store = new Map();
12
+ if (!init) {
13
+ return;
14
+ }
15
+ for (const [name, value] of Object.entries(init)) {
16
+ this.append(name, value);
17
+ }
18
+ }
19
+ getAll(name) {
20
+ const bucket = this.store.get(this.headerKey(name));
21
+ return bucket ? bucket.values.slice() : [];
22
+ }
23
+ set(name, value) {
24
+ const values = Array.isArray(value) ? [...value] : [value];
25
+ const key = this.headerKey(name);
26
+ const existing = this.store.get(key);
27
+ this.store.set(key, {
28
+ originalName: existing?.originalName ?? name,
29
+ values,
30
+ });
31
+ return this;
32
+ }
33
+ append(name, value) {
34
+ const values = Array.isArray(value) ? [...value] : [value];
35
+ const key = this.headerKey(name);
36
+ const existing = this.store.get(key);
37
+ if (existing) {
38
+ existing.values.push(...values);
39
+ }
40
+ else {
41
+ this.store.set(key, { originalName: name, values });
42
+ }
43
+ return this;
44
+ }
45
+ has(name) {
46
+ return this.store.has(this.headerKey(name));
47
+ }
48
+ delete(name) {
49
+ return this.store.delete(this.headerKey(name));
50
+ }
51
+ *entries() {
52
+ for (const bucket of this.store.values()) {
53
+ for (const value of bucket.values) {
54
+ yield [bucket.originalName, value];
55
+ }
56
+ }
57
+ }
58
+ headerKey(name) {
59
+ return name.toLowerCase();
60
+ }
61
+ }
62
+ exports.HttpHeaders = HttpHeaders;
63
+ //# sourceMappingURL=http-headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-headers.js","sourceRoot":"","sources":["../../src/http/http-headers.ts"],"names":[],"mappings":";;;AAKA;;;;GAIG;AACH;IAGE,YAAY,IAAwC;QAFnC,UAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;QAGvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,KAAwB;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI;YAC5C,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,KAAwB;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,CAAC,OAAO;QACN,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ /** @internal */
2
+ export declare enum HttpMethod {
3
+ GET = "GET",
4
+ POST = "POST",
5
+ PUT = "PUT",
6
+ PATCH = "PATCH",
7
+ DELETE = "DELETE"
8
+ }
9
+ /** @internal */
10
+ export declare function resolveHttpMethod(method?: string): HttpMethod;