@sixtyninecommerce/client 0.26.0 → 0.27.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 (40) hide show
  1. package/README.md +21 -5
  2. package/dist/admin/http.d.ts.map +1 -1
  3. package/dist/admin/http.js +51 -69
  4. package/dist/admin/http.js.map +1 -1
  5. package/dist/commerce/quotes.d.ts.map +1 -1
  6. package/dist/commerce/quotes.js +14 -1
  7. package/dist/commerce/quotes.js.map +1 -1
  8. package/dist/content/forms.d.ts.map +1 -1
  9. package/dist/content/forms.js +13 -5
  10. package/dist/content/forms.js.map +1 -1
  11. package/dist/core/context.d.ts.map +1 -1
  12. package/dist/core/context.js +91 -34
  13. package/dist/core/context.js.map +1 -1
  14. package/dist/core/http.d.ts +11 -0
  15. package/dist/core/http.d.ts.map +1 -1
  16. package/dist/core/http.js +139 -363
  17. package/dist/core/http.js.map +1 -1
  18. package/dist/errors.d.ts +85 -24
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +93 -31
  21. package/dist/errors.js.map +1 -1
  22. package/dist/events/envelope.d.ts +4 -80
  23. package/dist/events/envelope.d.ts.map +1 -1
  24. package/dist/events/envelope.js +6 -12
  25. package/dist/events/envelope.js.map +1 -1
  26. package/dist/events/payloads.d.ts +11 -172
  27. package/dist/events/payloads.d.ts.map +1 -1
  28. package/dist/events/payloads.js +10 -12
  29. package/dist/events/payloads.js.map +1 -1
  30. package/dist/index.d.ts +7 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +7 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/types.d.ts +8 -0
  35. package/dist/types.d.ts.map +1 -1
  36. package/package.json +4 -1
  37. package/dist/core/headers.d.ts +0 -5
  38. package/dist/core/headers.d.ts.map +0 -1
  39. package/dist/core/headers.js +0 -29
  40. package/dist/core/headers.js.map +0 -1
package/dist/core/http.js CHANGED
@@ -1,32 +1,17 @@
1
- import { ORDER_SCOPE_HEADER, REQUEST_TIMEOUT_MS, SHOP_API_PATH } from '../constants.js';
2
- import { StorefrontError } from '../errors.js';
3
- import { buildCmsHeaders, buildPluginsHeaders, buildVendureHeaders } from './headers.js';
4
1
  /**
5
- * Build a StorefrontError from a non-2xx CMS response, parsing the JSON body
6
- * for the structured fields the CMS returns: `message` (string or string[]),
7
- * `details` (field-level validation errors), and `retry_after_seconds` (429).
2
+ * The storefront SDK's HTTP layer, on `@sixtyninecommerce/core`'s transport.
3
+ *
4
+ * Everything generic — header stamping, the retry policy, the abort/timeout
5
+ * link, RFC 9457 and Vendure error mapping, the session-token rotation, the
6
+ * `traceparent` — is `core`'s. What stays here is what is genuinely the
7
+ * STOREFRONT's: the `next: { tags }` cache tagging, the `onAuthExpired`
8
+ * disambiguation probe, and the wire shapes this package's modules read
9
+ * (`createdAt` is `created_at` here and always has been, so case conversion is
10
+ * off).
8
11
  */
9
- async function cmsError(response) {
10
- let body = {};
11
- try {
12
- const parsed = await response.json();
13
- if (parsed && typeof parsed === 'object') {
14
- body = parsed;
15
- }
16
- }
17
- catch {
18
- // Non-JSON error body — fall back to the status line.
19
- }
20
- const rawMessage = body.message;
21
- const message = Array.isArray(rawMessage)
22
- ? rawMessage.join('; ')
23
- : typeof rawMessage === 'string' && rawMessage.length > 0
24
- ? rawMessage
25
- : `CMS returned ${String(response.status)}: ${response.statusText}`;
26
- const details = Array.isArray(body.details) ? body.details : undefined;
27
- const retryAfterSeconds = typeof body.retry_after_seconds === 'number' ? body.retry_after_seconds : undefined;
28
- return new StorefrontError(message, 'cms', response.status, undefined, details, retryAfterSeconds);
29
- }
12
+ import { createTransport, } from '@sixtyninecommerce/core';
13
+ import { REQUEST_TIMEOUT_MS } from '../constants.js';
14
+ import { StorefrontError, toStorefrontError } from '../errors.js';
30
15
  /** Mark a request as a taggable catalogue read, keeping the caller's own options. */
31
16
  export function tagRequest(options, operation, tags = []) {
32
17
  return { ...options, cacheTagging: { operation, tags } };
@@ -53,31 +38,18 @@ function fetchCacheTags(ctx, options) {
53
38
  }
54
39
  return resolved.length > 0 ? [...resolved] : null;
55
40
  }
56
- const RETRYABLE_STATUS_CODES = new Set([502, 503, 504]);
57
- function isMutation(query) {
58
- return /^\s*mutation\b/i.test(query);
59
- }
60
- /**
61
- * HTTP status to attach to a StorefrontError built from a Vendure GraphQL
62
- * error code (Vendure returns these over HTTP 200 as ErrorResult/extensions).
63
- * Only the auth codes have a meaningful mapping; other codes leave statusCode
64
- * undefined but still carry `errorCode` for the caller to discriminate.
65
- */
66
- const GRAPHQL_ERROR_STATUS = {
67
- UNAUTHORIZED: 401,
68
- FORBIDDEN: 403,
69
- };
70
41
  /**
71
42
  * UNAUTHORIZED is Vendure's unambiguous "session token expired/invalid" signal,
72
43
  * so it always means the stored session is dead. FORBIDDEN is ambiguous (see
73
- * {@link isForbiddenError}) and is disambiguated by a session-validity probe
74
- * rather than treated as expiry on its own.
44
+ * below) and is disambiguated by a session-validity probe rather than treated
45
+ * as expiry on its own.
46
+ *
47
+ * The codes reach us on `error.code`: `core` maps a GraphQL `errors[]` array to
48
+ * the first entry that names a code, so a response carrying both reports the
49
+ * first — and a FORBIDDEN read that way still ends up probing, which is the
50
+ * conservative half of this logic anyway.
75
51
  */
76
- function isSessionExpiredError(json) {
77
- if (!json.errors?.length)
78
- return false;
79
- return json.errors.some((e) => e.extensions?.code === 'UNAUTHORIZED');
80
- }
52
+ const SESSION_EXPIRED_CODE = 'UNAUTHORIZED';
81
53
  /**
82
54
  * Vendure's Shop API `AuthGuard` throws `ForbiddenError` (code `FORBIDDEN`) for
83
55
  * BOTH a genuinely expired/invalid session AND a real permission denial on a
@@ -86,11 +58,7 @@ function isSessionExpiredError(json) {
86
58
  * alone can't tell the two apart, so a FORBIDDEN is disambiguated by probing
87
59
  * session validity — fire `onAuthExpired` only when the session is dead.
88
60
  */
89
- function isForbiddenError(json) {
90
- if (!json.errors?.length)
91
- return false;
92
- return json.errors.some((e) => e.extensions?.code === 'FORBIDDEN');
93
- }
61
+ const FORBIDDEN_CODE = 'FORBIDDEN';
94
62
  /**
95
63
  * Session-validity probe. `activeCustomer` is nullable and NOT permission-
96
64
  * guarded: it returns the logged-in customer, or `null` when there is no active
@@ -98,83 +66,87 @@ function isForbiddenError(json) {
98
66
  * (Vendure reports both as FORBIDDEN).
99
67
  */
100
68
  const ACTIVE_CUSTOMER_PROBE_QUERY = 'query { activeCustomer { id } }';
101
- /** First Vendure error code present in the response, for StorefrontError. */
102
- function firstErrorCode(json) {
103
- for (const e of json.errors ?? []) {
104
- const code = e.extensions?.code;
105
- if (typeof code === 'string' && code.length > 0)
106
- return code;
107
- }
108
- return undefined;
109
- }
110
69
  /**
111
- * Combine an external AbortSignal with an internal timeout. Either source
112
- * cancels the request. Returns the controller plus a cleanup function.
70
+ * The resolver the transport re-resolves the channel through.
71
+ *
72
+ * `createStoreContext` builds a real `createChannelResolver`, which is what
73
+ * makes the CHANNEL_NOT_FOUND self-heal work: a refused request invalidates the
74
+ * cached entry and goes back to the CMS once, so a channel whose token rotated
75
+ * under a running storefront recovers instead of failing until the process
76
+ * restarts.
77
+ *
78
+ * A context assembled BY HAND has none, and falls back to the channel it
79
+ * carries as a fixed snapshot — every header is stamped from it exactly as
80
+ * before, there is simply nothing to re-resolve.
113
81
  */
114
- function createLinkedController(externalSignal, timeoutMs) {
115
- const controller = new AbortController();
116
- const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
117
- let externalListener = null;
118
- if (externalSignal) {
119
- if (externalSignal.aborted) {
120
- controller.abort();
121
- }
122
- else {
123
- externalListener = () => controller.abort();
124
- externalSignal.addEventListener('abort', externalListener);
125
- }
126
- }
127
- return {
128
- controller,
129
- cleanup: () => {
130
- clearTimeout(timeoutId);
131
- if (externalListener && externalSignal) {
132
- externalSignal.removeEventListener('abort', externalListener);
133
- }
134
- },
135
- };
136
- }
137
- /**
138
- * Run a request function with retry on transient failures. Only retries on
139
- * network errors and 502/503/504. Never retries on 4xx, never retries
140
- * mutations, never retries when the external signal is aborted.
141
- */
142
- async function withRetry(ctx, externalSignal, shouldRetry, fn) {
143
- const maxAttempts = shouldRetry ? Math.max(1, ctx.retry.attempts) : 1;
144
- let lastError;
145
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
146
- try {
147
- return await fn();
148
- }
149
- catch (error) {
150
- lastError = error;
151
- if (externalSignal?.aborted)
152
- throw error;
153
- if (attempt === maxAttempts)
154
- throw error;
155
- if (!isRetryable(error))
156
- throw error;
157
- const delay = ctx.retry.baseDelayMs * 2 ** (attempt - 1);
158
- await new Promise((resolve) => setTimeout(resolve, delay));
159
- }
160
- }
161
- throw lastError;
162
- }
163
- function isRetryable(error) {
164
- if (error instanceof StorefrontError) {
165
- return error.statusCode !== undefined && RETRYABLE_STATUS_CODES.has(error.statusCode);
166
- }
167
- if (error instanceof Error && error.name === 'AbortError') {
168
- // Internal timeout — retry. External aborts are caught upstream.
169
- return true;
170
- }
171
- // Network errors (TypeError on fetch failure) — retry.
172
- return error instanceof TypeError;
82
+ function channelResolverFor(ctx) {
83
+ return (ctx.channels ?? {
84
+ resolve: () => Promise.resolve(ctx.channel),
85
+ invalidate: () => undefined,
86
+ });
173
87
  }
174
88
  export function createHttpClient(ctx) {
89
+ const shared = {
90
+ urls: { vendureUrl: ctx.vendureUrl, cmsUrl: ctx.cmsUrl, pluginsUrl: ctx.pluginsUrl },
91
+ // Read per call, never captured: `setLanguage`, `setAuthToken` and
92
+ // `setOrderScope` mutate the context after the client is built, and a
93
+ // snapshot here would pin every later request to the startup values.
94
+ tenant: () => ({
95
+ scope: { kind: 'channel', code: ctx.channel.code },
96
+ ...(ctx.languageCode ? { language: ctx.languageCode } : {}),
97
+ ...(ctx.orderScope ? { orderScope: ctx.orderScope } : {}),
98
+ }),
99
+ channels: channelResolverFor(ctx),
100
+ fetch: ctx.fetch,
101
+ // `attempts: 0` used to mean one attempt here (`Math.max(1, …)`); core
102
+ // treats a value below 1 as unset and would fall back to its own default,
103
+ // so the floor is applied before it gets there.
104
+ retry: {
105
+ attempts: Math.max(1, ctx.retry.attempts),
106
+ baseDelayMs: ctx.retry.baseDelayMs,
107
+ },
108
+ timeoutMs: REQUEST_TIMEOUT_MS,
109
+ // This package's modules were written against the CMS and plugins wire
110
+ // shapes — `created_at`, `default_language_code`, `prices_include_tax` —
111
+ // and each maps its own response. Converting underneath them would rename
112
+ // every key they read.
113
+ convertCase: false,
114
+ };
115
+ /** Vendure: the shopper's session, when there is one. */
116
+ const vendureTransport = createTransport({
117
+ ...shared,
118
+ principal: () => ({
119
+ kind: 'bearer',
120
+ // An empty token sends no Authorization header, which is what an
121
+ // anonymous storefront wants.
122
+ token: ctx.authToken ?? '',
123
+ onToken: (token) => {
124
+ ctx.authToken = token;
125
+ ctx.onAuthToken?.(token);
126
+ },
127
+ }),
128
+ });
129
+ /**
130
+ * CMS and plugins: ALWAYS anonymous. A separate transport rather than a flag,
131
+ * so the credential boundary cannot be crossed by editing one line.
132
+ *
133
+ * The shopper's Vendure session token is a VALID principal to the CMS — its
134
+ * `AuthGuard` runs optional auth on every `@Public()` route and validates a
135
+ * storefront token through the Shop API — and the routes this SDK reads widen
136
+ * their response when they see one: `GET /forms/:id` answers with the RAW
137
+ * entity (`notificationEmails`, the honeypot slug and rate limits in
138
+ * `settings`, `removedAt`) instead of `toPublicForm`'s projection, and the
139
+ * collection item routes return drafts and archived items instead of
140
+ * published ones. Nothing fails — the shop simply starts rendering
141
+ * merchant-internal data, and only once a customer signs in.
142
+ */
143
+ const restTransport = createTransport({
144
+ ...shared,
145
+ principal: { kind: 'anonymous' },
146
+ });
175
147
  /**
176
148
  * Decide whether the stored session is genuinely dead and fire `onAuthExpired`
177
- * if so, given a Vendure error response received while an auth token was
149
+ * if so, given the error a Vendure call failed with while an auth token was
178
150
  * attached.
179
151
  *
180
152
  * - UNAUTHORIZED ⇒ unambiguous dead session ⇒ fire.
@@ -189,14 +161,14 @@ export function createHttpClient(ctx) {
189
161
  * issue a nested probe — the recursion guard. The probe is therefore issued
190
162
  * at most once per originating FORBIDDEN failure.
191
163
  */
192
- async function maybeSignalAuthExpired(json, isProbe) {
164
+ async function maybeSignalAuthExpired(error, isProbe) {
193
165
  if (isProbe || !ctx.authToken)
194
166
  return;
195
- if (isSessionExpiredError(json)) {
167
+ if (error.errorCode === SESSION_EXPIRED_CODE) {
196
168
  ctx.onAuthExpired?.();
197
169
  return;
198
170
  }
199
- if (!isForbiddenError(json))
171
+ if (error.errorCode !== FORBIDDEN_CODE)
200
172
  return;
201
173
  const sessionAlive = await probeSessionAlive();
202
174
  if (sessionAlive === false) {
@@ -219,251 +191,55 @@ export function createHttpClient(ctx) {
219
191
  return null;
220
192
  }
221
193
  }
222
- function graphqlRequest(query, variables, options, isProbe) {
223
- const isQuery = !isMutation(query);
224
- return withRetry(ctx, options?.signal, isQuery, async () => {
225
- const headers = buildVendureHeaders(ctx);
226
- const { controller, cleanup } = createLinkedController(options?.signal, REQUEST_TIMEOUT_MS);
227
- try {
228
- const tags = fetchCacheTags(ctx, options);
229
- // Next.js reads `next.tags` off the fetch init for `revalidateTag`; other
230
- // fetch implementations ignore unknown init keys. No cache policy is set.
231
- const init = {
232
- method: 'POST',
233
- headers,
234
- body: JSON.stringify({ query, variables }),
235
- signal: controller.signal,
236
- ...(tags ? { next: { tags } } : {}),
237
- };
238
- const response = await ctx.fetch(`${ctx.vendureUrl}${SHOP_API_PATH}`, init);
239
- if (!response.ok) {
240
- throw new StorefrontError(`Vendure Shop API returned ${String(response.status)}: ${response.statusText}`, 'vendure', response.status);
241
- }
242
- // Auto-capture auth token from response headers
243
- const authToken = response.headers.get('vendure-auth-token');
244
- if (authToken) {
245
- ctx.authToken = authToken;
246
- ctx.onAuthToken?.(authToken);
247
- }
248
- const json = (await response.json());
249
- if (json.errors?.length) {
250
- await maybeSignalAuthExpired(json, isProbe);
251
- const messages = json.errors.map((e) => e.message).join('; ');
252
- const errorCode = firstErrorCode(json);
253
- throw new StorefrontError(`GraphQL error: ${messages}`, 'vendure', errorCode ? GRAPHQL_ERROR_STATUS[errorCode] : undefined, errorCode);
254
- }
255
- return json.data;
256
- }
257
- catch (error) {
258
- if (error instanceof StorefrontError)
259
- throw error;
260
- if (error.name === 'AbortError') {
261
- if (options?.signal?.aborted) {
262
- throw new StorefrontError('Request aborted by caller', 'vendure');
263
- }
264
- throw new StorefrontError('Request timed out (15s)', 'vendure');
265
- }
266
- throw new StorefrontError(`Vendure request failed: ${error.message}`, 'vendure');
267
- }
268
- finally {
269
- cleanup();
270
- }
271
- });
194
+ /** The per-call options `core` takes, plus this SDK's cache tagging. */
195
+ function callOptions(options, extra) {
196
+ const tags = fetchCacheTags(ctx, options);
197
+ return {
198
+ ...(options?.signal ? { signal: options.signal } : {}),
199
+ // Next.js reads `next.tags` off the fetch init for `revalidateTag`; other
200
+ // fetch implementations ignore keys they do not know. No cache policy is set.
201
+ ...(tags ? { fetchInit: { next: { tags } } } : {}),
202
+ ...extra,
203
+ };
204
+ }
205
+ async function graphqlRequest(query, variables, options, isProbe, files) {
206
+ try {
207
+ return await vendureTransport.graphql({ query, variables, api: 'shop', ...(files ? { files } : {}) },
208
+ // An upload streams a file body; 15s is the read timeout for a JSON
209
+ // document, not for a photo on a phone connection.
210
+ callOptions(options, files ? { timeoutMs: REQUEST_TIMEOUT_MS * 4 } : undefined));
211
+ }
212
+ catch (error) {
213
+ const converted = toStorefrontError(error, 'vendure');
214
+ await maybeSignalAuthExpired(converted, isProbe);
215
+ throw converted;
216
+ }
272
217
  }
273
218
  function graphql(query, variables, options) {
274
219
  return graphqlRequest(query, variables, options, false);
275
220
  }
276
- async function cmsGet(path, params, options) {
277
- return withRetry(ctx, options?.signal, true, async () => {
278
- const url = new URL(`${ctx.cmsUrl}${path}`);
279
- if (params) {
280
- for (const [key, value] of Object.entries(params)) {
281
- url.searchParams.set(key, value);
282
- }
283
- }
284
- // Auto-add locale from context
285
- if (ctx.languageCode && !url.searchParams.has('locale')) {
286
- url.searchParams.set('locale', ctx.languageCode);
287
- }
288
- const { controller, cleanup } = createLinkedController(options?.signal, REQUEST_TIMEOUT_MS);
289
- try {
290
- const response = await ctx.fetch(url.toString(), {
291
- method: 'GET',
292
- headers: buildCmsHeaders(ctx),
293
- signal: controller.signal,
294
- });
295
- if (!response.ok) {
296
- throw await cmsError(response);
297
- }
298
- return (await response.json());
299
- }
300
- catch (error) {
301
- if (error instanceof StorefrontError)
302
- throw error;
303
- if (error.name === 'AbortError') {
304
- if (options?.signal?.aborted) {
305
- throw new StorefrontError('Request aborted by caller', 'cms');
306
- }
307
- throw new StorefrontError('Request timed out (15s)', 'cms');
308
- }
309
- throw new StorefrontError(`CMS request failed: ${error.message}`, 'cms');
310
- }
311
- finally {
312
- cleanup();
313
- }
314
- });
315
- }
316
- async function cmsPost(path, body, options) {
317
- // POSTs are not retried — they're treated as mutations.
318
- return withRetry(ctx, options?.signal, false, async () => {
319
- const { controller, cleanup } = createLinkedController(options?.signal, REQUEST_TIMEOUT_MS);
320
- try {
321
- const response = await ctx.fetch(`${ctx.cmsUrl}${path}`, {
322
- method: 'POST',
323
- headers: {
324
- ...buildCmsHeaders(ctx),
325
- 'Content-Type': 'application/json',
326
- },
327
- body: JSON.stringify(body),
328
- signal: controller.signal,
329
- });
330
- if (!response.ok) {
331
- throw await cmsError(response);
332
- }
333
- return (await response.json());
334
- }
335
- catch (error) {
336
- if (error instanceof StorefrontError)
337
- throw error;
338
- if (error.name === 'AbortError') {
339
- if (options?.signal?.aborted) {
340
- throw new StorefrontError('Request aborted by caller', 'cms');
341
- }
342
- throw new StorefrontError('Request timed out (15s)', 'cms');
343
- }
344
- throw new StorefrontError(`CMS request failed: ${error.message}`, 'cms');
345
- }
346
- finally {
347
- cleanup();
348
- }
349
- });
350
- }
351
- async function pluginsGet(path, params, options) {
352
- return withRetry(ctx, options?.signal, true, async () => {
353
- const url = new URL(`${ctx.pluginsUrl}${path}`);
354
- if (params) {
355
- for (const [key, value] of Object.entries(params)) {
356
- url.searchParams.set(key, value);
357
- }
358
- }
359
- // Auto-add language_code from context
360
- if (ctx.languageCode && !url.searchParams.has('language_code')) {
361
- url.searchParams.set('language_code', ctx.languageCode);
362
- }
363
- const { controller, cleanup } = createLinkedController(options?.signal, REQUEST_TIMEOUT_MS);
364
- try {
365
- const response = await ctx.fetch(url.toString(), {
366
- method: 'GET',
367
- headers: buildPluginsHeaders(ctx),
368
- signal: controller.signal,
369
- });
370
- if (!response.ok) {
371
- throw new StorefrontError(`Plugins returned ${String(response.status)}: ${response.statusText}`, 'plugins', response.status);
372
- }
373
- return (await response.json());
374
- }
375
- catch (error) {
376
- if (error instanceof StorefrontError)
377
- throw error;
378
- if (error.name === 'AbortError') {
379
- if (options?.signal?.aborted) {
380
- throw new StorefrontError('Request aborted by caller', 'plugins');
381
- }
382
- throw new StorefrontError('Request timed out (15s)', 'plugins');
383
- }
384
- throw new StorefrontError(`Plugins request failed: ${error.message}`, 'plugins');
385
- }
386
- finally {
387
- cleanup();
388
- }
389
- });
221
+ function graphqlUpload(query, variables, files, options) {
222
+ return graphqlRequest(query, variables, options, false, files);
390
223
  }
391
- async function graphqlUpload(query, variables, files, options) {
392
- // Uploads are mutations — no retry.
393
- const formData = new FormData();
394
- // Build the operations JSON with null placeholders for file variables
395
- formData.append('operations', JSON.stringify({ query, variables }));
396
- // Build the map: { "0": ["variables.files.0"], "1": ["variables.files.1"], ... }
397
- const fileMap = {};
398
- let fileIndex = 0;
399
- for (const [variablePath] of files) {
400
- fileMap[String(fileIndex)] = [variablePath];
401
- fileIndex++;
402
- }
403
- formData.append('map', JSON.stringify(fileMap));
404
- // Append files
405
- fileIndex = 0;
406
- for (const [, file] of files) {
407
- formData.append(String(fileIndex), file);
408
- fileIndex++;
409
- }
410
- // Build headers without Content-Type (let browser set multipart boundary).
411
- // Deliberately mirrors buildVendureHeaders minus Content-Type — including
412
- // the order scope, or an upload mutation would resolve a different cart
413
- // than every other request this client makes.
414
- const headers = {
415
- 'vendure-token': ctx.channel.token,
416
- };
417
- if (ctx.languageCode) {
418
- headers.languageCode = ctx.languageCode;
419
- }
420
- if (ctx.authToken) {
421
- headers.Authorization = `Bearer ${ctx.authToken}`;
422
- }
423
- if (ctx.orderScope) {
424
- headers[ORDER_SCOPE_HEADER] = ctx.orderScope;
425
- }
426
- const { controller, cleanup } = createLinkedController(options?.signal, REQUEST_TIMEOUT_MS * 4 // longer timeout for uploads
427
- );
224
+ async function rest(service, method, path, params, body, options) {
428
225
  try {
429
- const response = await ctx.fetch(`${ctx.vendureUrl}${SHOP_API_PATH}`, {
430
- method: 'POST',
431
- headers,
432
- body: formData,
433
- signal: controller.signal,
434
- });
435
- if (!response.ok) {
436
- throw new StorefrontError(`Vendure upload returned ${String(response.status)}: ${response.statusText}`, 'vendure', response.status);
437
- }
438
- const authToken = response.headers.get('vendure-auth-token');
439
- if (authToken) {
440
- ctx.authToken = authToken;
441
- ctx.onAuthToken?.(authToken);
442
- }
443
- const json = (await response.json());
444
- if (json.errors?.length) {
445
- await maybeSignalAuthExpired(json, false);
446
- const messages = json.errors.map((e) => e.message).join('; ');
447
- const errorCode = firstErrorCode(json);
448
- throw new StorefrontError(`GraphQL upload error: ${messages}`, 'vendure', errorCode ? GRAPHQL_ERROR_STATUS[errorCode] : undefined, errorCode);
449
- }
450
- return json.data;
226
+ return await restTransport.rest(service, {
227
+ method,
228
+ path,
229
+ ...(params ? { query: params } : {}),
230
+ ...(body !== undefined ? { body } : {}),
231
+ }, callOptions(options));
451
232
  }
452
233
  catch (error) {
453
- if (error instanceof StorefrontError)
454
- throw error;
455
- if (error.name === 'AbortError') {
456
- if (options?.signal?.aborted) {
457
- throw new StorefrontError('Upload aborted by caller', 'vendure');
458
- }
459
- throw new StorefrontError('Upload timed out (60s)', 'vendure');
460
- }
461
- throw new StorefrontError(`Upload failed: ${error.message}`, 'vendure');
462
- }
463
- finally {
464
- cleanup();
234
+ throw toStorefrontError(error, service);
465
235
  }
466
236
  }
467
- return { graphql, graphqlUpload, cmsGet, cmsPost, pluginsGet };
237
+ return {
238
+ graphql,
239
+ graphqlUpload,
240
+ cmsGet: (path, params, options) => rest('cms', 'GET', path, params, undefined, options),
241
+ cmsPost: (path, body, options) => rest('cms', 'POST', path, undefined, body, options),
242
+ pluginsGet: (path, params, options) => rest('plugins', 'GET', path, params, undefined, options),
243
+ };
468
244
  }
469
245
  //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAmB,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEzF;;;;GAIG;AACH,KAAK,UAAU,QAAQ,CAAC,QAAkB;IACxC,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,IAAI,GAAG,MAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACvC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YACvD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,OAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,iBAAiB,GACrB,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,OAAO,IAAI,eAAe,CACxB,OAAO,EACP,KAAK,EACL,QAAQ,CAAC,MAAM,EACf,SAAS,EACT,OAAO,EACP,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAeD,qFAAqF;AACrF,MAAM,UAAU,UAAU,CACxB,OAAmC,EACnC,SAAiB,EACjB,OAA0B,EAAE;IAE5B,OAAO,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,GAAiB,EAAE,OAAmC;IAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;IACtC,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,EAAE,YAAY,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GACZ,OAAO,OAAO,KAAK,UAAU;QAC3B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,CAAC;QACjE,CAAC,CAAC,MAAM,CAAC;IACb,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EACnE,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,kEAAkE,EAClE,SAAS,CACV,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AA2BD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAExD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,oBAAoB,GAA2B;IACnD,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;CACf,CAAC;AAEF;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,IAA8B;IAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,KAAK,cAAc,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,IAA8B;IACtD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;AAEtE,6EAA6E;AAC7E,SAAS,cAAc,CAAC,IAA8B;IACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC;QAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC/D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,cAAuC,EACvC,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,gBAAgB,GAAwB,IAAI,CAAC;IACjD,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC5C,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU;QACV,OAAO,EAAE,GAAG,EAAE;YACZ,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;gBACvC,cAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,SAAS,CACtB,GAAiB,EACjB,cAAuC,EACvC,WAAoB,EACpB,EAAoB;IAEpB,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAElB,IAAI,cAAc,EAAE,OAAO;gBAAE,MAAM,KAAK,CAAC;YACzC,IAAI,OAAO,KAAK,WAAW;gBAAE,MAAM,KAAK,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAErC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1D,iEAAiE;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uDAAuD;IACvD,OAAO,KAAK,YAAY,SAAS,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,UAAU,sBAAsB,CACnC,IAA8B,EAC9B,OAAgB;QAEhB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,OAAO;QACtC,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO;QACpC,MAAM,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC/C,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,iBAAiB;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAC/B,2BAA2B,EAC3B,SAAS,EACT,SAAS,EACT,IAAI,CACL,CAAC;YACF,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,cAAc,CACrB,KAAa,EACb,SAA8C,EAC9C,OAAmC,EACnC,OAAgB;QAEhB,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAE5F,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC1C,0EAA0E;gBAC1E,0EAA0E;gBAC1E,MAAM,IAAI,GAAgD;oBACxD,MAAM,EAAE,MAAM;oBACd,OAAO;oBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;oBAC1C,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpC,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;gBAE5E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,eAAe,CACvB,6BAA6B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,UAAU,EAAE,EAC9E,SAAS,EACT,QAAQ,CAAC,MAAM,CAChB,CAAC;gBACJ,CAAC;gBAED,gDAAgD;gBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAC7D,IAAI,SAAS,EAAE,CAAC;oBACd,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC1B,GAAG,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;gBAE3D,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;oBACxB,MAAM,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9D,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;oBACvC,MAAM,IAAI,eAAe,CACvB,kBAAkB,QAAQ,EAAE,EAC5B,SAAS,EACT,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EACvD,SAAS,CACV,CAAC;gBACJ,CAAC;gBAED,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,eAAe;oBAAE,MAAM,KAAK,CAAC;gBAClD,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC3C,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAC7B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;oBACpE,CAAC;oBACD,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;gBAClE,CAAC;gBACD,MAAM,IAAI,eAAe,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9F,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CACd,KAAa,EACb,SAAmC,EACnC,OAAwB;QAExB,OAAO,cAAc,CAAI,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,UAAU,MAAM,CACnB,IAAY,EACZ,MAA+B,EAC/B,OAAwB;QAExB,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,+BAA+B;YAC/B,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAE5F,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;oBAC/C,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC;oBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACjC,CAAC;gBAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,eAAe;oBAAE,MAAM,KAAK,CAAC;gBAClD,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC3C,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAC7B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;oBAChE,CAAC;oBACD,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,IAAI,eAAe,CAAC,uBAAwB,KAAe,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YACtF,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,IAAa,EACb,OAAwB;QAExB,wDAAwD;QACxD,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAE5F,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE;oBACvD,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,GAAG,eAAe,CAAC,GAAG,CAAC;wBACvB,cAAc,EAAE,kBAAkB;qBACnC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACjC,CAAC;gBAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,eAAe;oBAAE,MAAM,KAAK,CAAC;gBAClD,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC3C,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAC7B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;oBAChE,CAAC;oBACD,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,IAAI,eAAe,CAAC,uBAAwB,KAAe,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YACtF,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,MAA+B,EAC/B,OAAwB;QAExB,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC;YAChD,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,sCAAsC;YACtC,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1D,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAE5F,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;oBAC/C,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC;oBACjC,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,eAAe,CACvB,oBAAoB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,UAAU,EAAE,EACrE,SAAS,EACT,QAAQ,CAAC,MAAM,CAChB,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,eAAe;oBAAE,MAAM,KAAK,CAAC;gBAClD,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC3C,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAC7B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;oBACpE,CAAC;oBACD,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;gBAClE,CAAC;gBACD,MAAM,IAAI,eAAe,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9F,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,aAAa,CAC1B,KAAa,EACb,SAAkC,EAClC,KAAwB,EACxB,OAAwB;QAExB,oCAAoC;QACpC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEhC,sEAAsE;QACtE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAEpE,iFAAiF;QACjF,MAAM,OAAO,GAA6B,EAAE,CAAC;QAC7C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5C,SAAS,EAAE,CAAC;QACd,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhD,eAAe;QACf,SAAS,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,SAAS,EAAE,CAAC;QACd,CAAC;QAED,2EAA2E;QAC3E,0EAA0E;QAC1E,wEAAwE;QACxE,8CAA8C;QAC9C,MAAM,OAAO,GAA2B;YACtC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;SACnC,CAAC;QACF,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACrB,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QAC1C,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,CAAC,aAAa,GAAG,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC;QACpD,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;QAC/C,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,sBAAsB,CACpD,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAG,CAAC,CAAC,6BAA6B;SACrD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,aAAa,EAAE,EAAE;gBACpE,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,eAAe,CACvB,2BAA2B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,UAAU,EAAE,EAC5E,SAAS,EACT,QAAQ,CAAC,MAAM,CAChB,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAC7D,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC1B,GAAG,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;YAE3D,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxB,MAAM,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9D,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,IAAI,eAAe,CACvB,yBAAyB,QAAQ,EAAE,EACnC,SAAS,EACT,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EACvD,SAAS,CACV,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,eAAe;gBAAE,MAAM,KAAK,CAAC;YAClD,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC7B,MAAM,IAAI,eAAe,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;gBACnE,CAAC;gBACD,MAAM,IAAI,eAAe,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,IAAI,eAAe,CAAC,kBAAmB,KAAe,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACrF,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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"}