@commercetools/ts-client 3.4.1 → 4.0.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @commercetools/ts-client
2
2
 
3
+ ## 4.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#1126](https://github.com/commercetools/commercetools-sdk-typescript/pull/1126) [`98415e1`](https://github.com/commercetools/commercetools-sdk-typescript/commit/98415e159e68fc59d7fcdb11cd406e9995fa4430) Thanks [@ajimae](https://github.com/ajimae)! - Add support for async token cache stores
8
+
3
9
  ## 3.4.1
4
10
 
5
11
  ### Patch Changes
@@ -645,7 +645,8 @@ async function executeRequest$1(options) {
645
645
  httpClientOptions,
646
646
  tokenCache,
647
647
  userOption,
648
- tokenCacheObject
648
+ tokenCacheObject,
649
+ tokenCacheKey
649
650
  } = options;
650
651
  let url = options.url;
651
652
  let body = options.body;
@@ -699,11 +700,12 @@ async function executeRequest$1(options) {
699
700
  const expirationTime = calculateExpirationTime(expiresIn);
700
701
 
701
702
  // cache new generated token, refreshToken and expiration time
702
- tokenCache.set({
703
+ const cache = {
703
704
  token,
704
705
  expirationTime,
705
706
  refreshToken
706
- });
707
+ };
708
+ await tokenCache.set(cache, tokenCacheKey);
707
709
  return Promise.resolve(true);
708
710
  }
709
711
 
@@ -725,6 +727,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
725
727
  const requestOptions = {
726
728
  request,
727
729
  tokenCache,
730
+ tokenCacheKey,
728
731
  httpClient: options.httpClient || fetch,
729
732
  httpClientOptions: options.httpClientOptions,
730
733
  ...builder(options),
@@ -743,7 +746,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
743
746
  tokenFetchPromise = executeRequest$1(requestOptions);
744
747
  await tokenFetchPromise;
745
748
  tokenFetchPromise = null;
746
- tokenCacheObject = tokenCache.get(tokenCacheKey);
749
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
747
750
  _response = await next(mergeAuthHeader(tokenCacheObject.token, request));
748
751
  }
749
752
  return _response;
@@ -757,7 +760,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
757
760
  * If there is a token in the tokenCache, and it's not
758
761
  * expired, append the token in the `Authorization` header.
759
762
  */
760
- tokenCacheObject = tokenCache.get(tokenCacheKey);
763
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
761
764
  if (tokenCacheObject && tokenCacheObject.token && Date.now() < tokenCacheObject.expirationTime) {
762
765
  return checkAndRetryUnauthorizedError(await next(mergeAuthHeader(tokenCacheObject.token, request)));
763
766
  }
@@ -773,7 +776,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
773
776
  }
774
777
 
775
778
  // Now the token is present in the tokenCache and can be accessed
776
- tokenCacheObject = tokenCache.get(tokenCacheKey);
779
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
777
780
  return next(mergeAuthHeader(tokenCacheObject.token, request));
778
781
  }
779
782
 
@@ -1175,7 +1178,7 @@ function createQueueMiddleware$1({
1175
1178
 
1176
1179
  var packageJson = {
1177
1180
  name: "@commercetools/ts-client",
1178
- version: "3.4.1",
1181
+ version: "4.0.0",
1179
1182
  engines: {
1180
1183
  node: ">=18"
1181
1184
  },
@@ -641,7 +641,8 @@ async function executeRequest$1(options) {
641
641
  httpClientOptions,
642
642
  tokenCache,
643
643
  userOption,
644
- tokenCacheObject
644
+ tokenCacheObject,
645
+ tokenCacheKey
645
646
  } = options;
646
647
  let url = options.url;
647
648
  let body = options.body;
@@ -695,11 +696,12 @@ async function executeRequest$1(options) {
695
696
  const expirationTime = calculateExpirationTime(expiresIn);
696
697
 
697
698
  // cache new generated token, refreshToken and expiration time
698
- tokenCache.set({
699
+ const cache = {
699
700
  token,
700
701
  expirationTime,
701
702
  refreshToken
702
- });
703
+ };
704
+ await tokenCache.set(cache, tokenCacheKey);
703
705
  return Promise.resolve(true);
704
706
  }
705
707
 
@@ -721,6 +723,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
721
723
  const requestOptions = {
722
724
  request,
723
725
  tokenCache,
726
+ tokenCacheKey,
724
727
  httpClient: options.httpClient || fetch,
725
728
  httpClientOptions: options.httpClientOptions,
726
729
  ...builder(options),
@@ -739,7 +742,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
739
742
  tokenFetchPromise = executeRequest$1(requestOptions);
740
743
  await tokenFetchPromise;
741
744
  tokenFetchPromise = null;
742
- tokenCacheObject = tokenCache.get(tokenCacheKey);
745
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
743
746
  _response = await next(mergeAuthHeader(tokenCacheObject.token, request));
744
747
  }
745
748
  return _response;
@@ -753,7 +756,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
753
756
  * If there is a token in the tokenCache, and it's not
754
757
  * expired, append the token in the `Authorization` header.
755
758
  */
756
- tokenCacheObject = tokenCache.get(tokenCacheKey);
759
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
757
760
  if (tokenCacheObject && tokenCacheObject.token && Date.now() < tokenCacheObject.expirationTime) {
758
761
  return checkAndRetryUnauthorizedError(await next(mergeAuthHeader(tokenCacheObject.token, request)));
759
762
  }
@@ -769,7 +772,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
769
772
  }
770
773
 
771
774
  // Now the token is present in the tokenCache and can be accessed
772
- tokenCacheObject = tokenCache.get(tokenCacheKey);
775
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
773
776
  return next(mergeAuthHeader(tokenCacheObject.token, request));
774
777
  }
775
778
 
@@ -1171,7 +1174,7 @@ function createQueueMiddleware$1({
1171
1174
 
1172
1175
  var packageJson = {
1173
1176
  name: "@commercetools/ts-client",
1174
- version: "3.4.1",
1177
+ version: "4.0.0",
1175
1178
  engines: {
1176
1179
  node: ">=18"
1177
1180
  },
@@ -645,7 +645,8 @@ async function executeRequest$1(options) {
645
645
  httpClientOptions,
646
646
  tokenCache,
647
647
  userOption,
648
- tokenCacheObject
648
+ tokenCacheObject,
649
+ tokenCacheKey
649
650
  } = options;
650
651
  let url = options.url;
651
652
  let body = options.body;
@@ -699,11 +700,12 @@ async function executeRequest$1(options) {
699
700
  const expirationTime = calculateExpirationTime(expiresIn);
700
701
 
701
702
  // cache new generated token, refreshToken and expiration time
702
- tokenCache.set({
703
+ const cache = {
703
704
  token,
704
705
  expirationTime,
705
706
  refreshToken
706
- });
707
+ };
708
+ await tokenCache.set(cache, tokenCacheKey);
707
709
  return Promise.resolve(true);
708
710
  }
709
711
 
@@ -725,6 +727,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
725
727
  const requestOptions = {
726
728
  request,
727
729
  tokenCache,
730
+ tokenCacheKey,
728
731
  httpClient: options.httpClient || fetch,
729
732
  httpClientOptions: options.httpClientOptions,
730
733
  ...builder(options),
@@ -743,7 +746,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
743
746
  tokenFetchPromise = executeRequest$1(requestOptions);
744
747
  await tokenFetchPromise;
745
748
  tokenFetchPromise = null;
746
- tokenCacheObject = tokenCache.get(tokenCacheKey);
749
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
747
750
  _response = await next(mergeAuthHeader(tokenCacheObject.token, request));
748
751
  }
749
752
  return _response;
@@ -757,7 +760,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
757
760
  * If there is a token in the tokenCache, and it's not
758
761
  * expired, append the token in the `Authorization` header.
759
762
  */
760
- tokenCacheObject = tokenCache.get(tokenCacheKey);
763
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
761
764
  if (tokenCacheObject && tokenCacheObject.token && Date.now() < tokenCacheObject.expirationTime) {
762
765
  return checkAndRetryUnauthorizedError(await next(mergeAuthHeader(tokenCacheObject.token, request)));
763
766
  }
@@ -773,7 +776,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
773
776
  }
774
777
 
775
778
  // Now the token is present in the tokenCache and can be accessed
776
- tokenCacheObject = tokenCache.get(tokenCacheKey);
779
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
777
780
  return next(mergeAuthHeader(tokenCacheObject.token, request));
778
781
  }
779
782
 
@@ -1175,7 +1178,7 @@ function createQueueMiddleware$1({
1175
1178
 
1176
1179
  var packageJson = {
1177
1180
  name: "@commercetools/ts-client",
1178
- version: "3.4.1",
1181
+ version: "4.0.0",
1179
1182
  engines: {
1180
1183
  node: ">=18"
1181
1184
  },
@@ -645,7 +645,8 @@ async function executeRequest$1(options) {
645
645
  httpClientOptions,
646
646
  tokenCache,
647
647
  userOption,
648
- tokenCacheObject
648
+ tokenCacheObject,
649
+ tokenCacheKey
649
650
  } = options;
650
651
  let url = options.url;
651
652
  let body = options.body;
@@ -699,11 +700,12 @@ async function executeRequest$1(options) {
699
700
  const expirationTime = calculateExpirationTime(expiresIn);
700
701
 
701
702
  // cache new generated token, refreshToken and expiration time
702
- tokenCache.set({
703
+ const cache = {
703
704
  token,
704
705
  expirationTime,
705
706
  refreshToken
706
- });
707
+ };
708
+ await tokenCache.set(cache, tokenCacheKey);
707
709
  return Promise.resolve(true);
708
710
  }
709
711
 
@@ -725,6 +727,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
725
727
  const requestOptions = {
726
728
  request,
727
729
  tokenCache,
730
+ tokenCacheKey,
728
731
  httpClient: options.httpClient || fetch,
729
732
  httpClientOptions: options.httpClientOptions,
730
733
  ...builder(options),
@@ -743,7 +746,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
743
746
  tokenFetchPromise = executeRequest$1(requestOptions);
744
747
  await tokenFetchPromise;
745
748
  tokenFetchPromise = null;
746
- tokenCacheObject = tokenCache.get(tokenCacheKey);
749
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
747
750
  _response = await next(mergeAuthHeader(tokenCacheObject.token, request));
748
751
  }
749
752
  return _response;
@@ -757,7 +760,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
757
760
  * If there is a token in the tokenCache, and it's not
758
761
  * expired, append the token in the `Authorization` header.
759
762
  */
760
- tokenCacheObject = tokenCache.get(tokenCacheKey);
763
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
761
764
  if (tokenCacheObject && tokenCacheObject.token && Date.now() < tokenCacheObject.expirationTime) {
762
765
  return checkAndRetryUnauthorizedError(await next(mergeAuthHeader(tokenCacheObject.token, request)));
763
766
  }
@@ -773,7 +776,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
773
776
  }
774
777
 
775
778
  // Now the token is present in the tokenCache and can be accessed
776
- tokenCacheObject = tokenCache.get(tokenCacheKey);
779
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
777
780
  return next(mergeAuthHeader(tokenCacheObject.token, request));
778
781
  }
779
782
 
@@ -1175,7 +1178,7 @@ function createQueueMiddleware$1({
1175
1178
 
1176
1179
  var packageJson = {
1177
1180
  name: "@commercetools/ts-client",
1178
- version: "3.4.1",
1181
+ version: "4.0.0",
1179
1182
  engines: {
1180
1183
  node: ">=18"
1181
1184
  },
@@ -641,7 +641,8 @@ async function executeRequest$1(options) {
641
641
  httpClientOptions,
642
642
  tokenCache,
643
643
  userOption,
644
- tokenCacheObject
644
+ tokenCacheObject,
645
+ tokenCacheKey
645
646
  } = options;
646
647
  let url = options.url;
647
648
  let body = options.body;
@@ -695,11 +696,12 @@ async function executeRequest$1(options) {
695
696
  const expirationTime = calculateExpirationTime(expiresIn);
696
697
 
697
698
  // cache new generated token, refreshToken and expiration time
698
- tokenCache.set({
699
+ const cache = {
699
700
  token,
700
701
  expirationTime,
701
702
  refreshToken
702
- });
703
+ };
704
+ await tokenCache.set(cache, tokenCacheKey);
703
705
  return Promise.resolve(true);
704
706
  }
705
707
 
@@ -721,6 +723,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
721
723
  const requestOptions = {
722
724
  request,
723
725
  tokenCache,
726
+ tokenCacheKey,
724
727
  httpClient: options.httpClient || fetch,
725
728
  httpClientOptions: options.httpClientOptions,
726
729
  ...builder(options),
@@ -739,7 +742,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
739
742
  tokenFetchPromise = executeRequest$1(requestOptions);
740
743
  await tokenFetchPromise;
741
744
  tokenFetchPromise = null;
742
- tokenCacheObject = tokenCache.get(tokenCacheKey);
745
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
743
746
  _response = await next(mergeAuthHeader(tokenCacheObject.token, request));
744
747
  }
745
748
  return _response;
@@ -753,7 +756,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
753
756
  * If there is a token in the tokenCache, and it's not
754
757
  * expired, append the token in the `Authorization` header.
755
758
  */
756
- tokenCacheObject = tokenCache.get(tokenCacheKey);
759
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
757
760
  if (tokenCacheObject && tokenCacheObject.token && Date.now() < tokenCacheObject.expirationTime) {
758
761
  return checkAndRetryUnauthorizedError(await next(mergeAuthHeader(tokenCacheObject.token, request)));
759
762
  }
@@ -769,7 +772,7 @@ async function authProcessor(request, tokenFetchPromise = null, tokenCacheObject
769
772
  }
770
773
 
771
774
  // Now the token is present in the tokenCache and can be accessed
772
- tokenCacheObject = tokenCache.get(tokenCacheKey);
775
+ tokenCacheObject = await tokenCache.get(tokenCacheKey);
773
776
  return next(mergeAuthHeader(tokenCacheObject.token, request));
774
777
  }
775
778
 
@@ -1171,7 +1174,7 @@ function createQueueMiddleware$1({
1171
1174
 
1172
1175
  var packageJson = {
1173
1176
  name: "@commercetools/ts-client",
1174
- version: "3.4.1",
1177
+ version: "4.0.0",
1175
1178
  engines: {
1176
1179
  node: ">=18"
1177
1180
  },
@@ -1 +1 @@
1
- var window;(window||={})["@commercetools/ts-client"]=(()=>{var ce=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var Ie=Object.getOwnPropertyNames;var Ne=Object.prototype.hasOwnProperty;var pe=(e,r)=>{for(var t in r)ce(e,t,{get:r[t],enumerable:!0})},Ue=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ie(r))!Ne.call(e,i)&&i!==t&&ce(e,i,{get:()=>r[i],enumerable:!(o=Fe(r,i))||o.enumerable});return e};var je=e=>Ue(ce({},"__esModule",{value:!0}),e);var yr={};pe(yr,{ClientBuilder:()=>L,Process:()=>ue,createAuthMiddlewareForAnonymousSessionFlow:()=>v,createAuthMiddlewareForClientCredentialsFlow:()=>H,createAuthMiddlewareForExistingTokenFlow:()=>_,createAuthMiddlewareForPasswordFlow:()=>B,createAuthMiddlewareForRefreshTokenFlow:()=>K,createClient:()=>P,createConcurrentModificationMiddleware:()=>z,createCorrelationIdMiddleware:()=>J,createErrorMiddleware:()=>V,createHttpMiddleware:()=>G,createLoggerMiddleware:()=>Y,createQueueMiddleware:()=>W,createUserAgentMiddleware:()=>X});var Ae={};pe(Ae,{createAuthMiddlewareForAnonymousSessionFlow:()=>v,createAuthMiddlewareForClientCredentialsFlow:()=>H,createAuthMiddlewareForExistingTokenFlow:()=>_,createAuthMiddlewareForPasswordFlow:()=>B,createAuthMiddlewareForRefreshTokenFlow:()=>K,createConcurrentModificationMiddleware:()=>z,createCorrelationIdMiddleware:()=>J,createErrorMiddleware:()=>V,createHttpMiddleware:()=>G,createLoggerMiddleware:()=>Y,createQueueMiddleware:()=>W,createUserAgentMiddleware:()=>X});function I(e){return e&&typeof e=="string"?new TextEncoder().encode(e).length.toString():e&&e instanceof Uint8Array?e.byteLength.toString():e&&typeof e=="object"?new TextEncoder().encode(JSON.stringify(e)).length.toString():"0"}var g={};pe(g,{CONCURRENCT_REQUEST:()=>He,CTP_API_URL:()=>_e,CTP_AUTH_URL:()=>Be,DEFAULT_HEADERS:()=>he,HEADERS_CONTENT_TYPES:()=>ve});var ve=["application/json","application/graphql"],He=20,_e="https://api.europe-west1.gcp.commercetools.com",Be="https://auth.europe-west1.gcp.commercetools.com",he=["content-type","access-control-allow-origin","access-control-allow-headers","access-control-allow-methods","access-control-expose-headers","access-control-max-ag","x-correlation-id","server-timing","date","server","transfer-encoding","access-control-max-age","content-encoding","x-envoy-upstream-service-time","via","alt-svc","connection"];function b(e,r,t={}){this.code=t.code??=this.constructor.name,this.statusCode=e,this.status=e,this.message=r,Object.assign(this,t),this.name=this.constructor.name,this.constructor.prototype.__proto__=Error.prototype,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function be(...e){b.call(this,0,...e)}function Te(...e){b.call(this,...e)}function Ke(...e){b.call(this,400,...e)}function Le(...e){b.call(this,401,...e)}function $e(...e){b.call(this,403,...e)}function De(...e){b.call(this,404,...e)}function Qe(...e){b.call(this,409,...e)}function ze(...e){b.call(this,500,...e)}function Je(...e){b.call(this,503,...e)}function we(e){switch(e){case 0:return be;case 400:return Ke;case 401:return Le;case 403:return $e;case 404:return De;case 409:return Qe;case 500:return ze;case 503:return Je;default:return}}function Ve({statusCode:e,message:r,...t}){let o=r||"Unexpected non-JSON error response";e===404&&(o=`URI not found: ${t.originalRequest?.uri||t.uri}`);let i=we(e);return i?new i(o,t):new Te(e,o,t)}var N=Ve;function Ge(e,r){return[503,...e].includes(r?.status||r?.statusCode)}async function Ye(e,r){async function t(){return await e({...r,headers:{...r.headers}})}return t().catch(o=>Promise.reject(o))}async function U(e){let{url:r,httpClient:t,...o}=e;return await Ye(async s=>{let{enableRetry:a,retryConfig:n,timeout:u,getAbortController:l}=o,{retryCodes:d=[],maxDelay:c=1/0,maxRetries:M=3,backoff:C=!0,retryDelay:p=200,retryOnAbort:S=!0}=n||{},h,w,f=0,q;fe(d);async function x(){return t(r,{...s,...o,headers:{...o.headers},...o.body?{data:o.body}:{},withCredentials:s.credentialsMode==="include"})}function Z(){let y=(l?l():null)||new AbortController;return o.abortController=y,o.signal=y.signal,y}async function F(){let y=async(re,qe)=>{let D={};if(u){let O=Z();q=setTimeout(()=>{O.abort(),O=Z()},u)}try{if(D=await x(),D.status>399&&Ge(re,D))return{_response:D,shouldRetry:!0}}catch(O){if((O.name.includes("AbortError")||O.name.includes("TimeoutError"))&&qe)return{_response:O,shouldRetry:!0};throw O}finally{clearTimeout(q)}return{_response:D,shouldRetry:!1}},{_response:$,shouldRetry:ee}=await y(d,S);for(;a&&ee&&f<M;){f++,await oe(te({retryCount:f,retryDelay:p,maxRetries:M,backoff:C,maxDelay:c}));let re=await y(d,S);$=re._response,ee=re.shouldRetry}return $}let m=await F();try{m.text&&typeof m.text=="function"?(h=await m.text()||JSON.stringify(m[Object.getOwnPropertySymbols(m)[1]]),w=JSON.parse(h)):w=m.data||m}catch(y){throw y}return{data:w,retryCount:f,statusCode:m.status||m.statusCode||w.statusCode,headers:m.headers}},{validateStatus:s=>!0})}function ie(){return("1000000-1000-4000-8000"+-1e11).replace(/[018]/g,e=>(parseInt(e)^Math.floor(Math.random()*256)&15>>parseInt(e)/4).toString(16))}function We(e){return he.reduce((r,t)=>{let o=e[t]?e[t]:typeof e.get=="function"?e.get(t):null;return o&&(r[t]=o),r},{})}function T(e){if(!e)return null;if(e.raw&&typeof e.raw=="function")return e.raw();if(!e.forEach)return We(e);let r={};return e.forEach((t,o)=>r[o]=t),r}function Q(e){return e!=null&&e.constructor!=null&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function k(e){let r=JSON.parse(JSON.stringify(e));return r?.headers&&(r.headers.Authorization&&(r.headers.Authorization="Bearer ********"),r.headers.authorization&&(r.headers.authorization="Bearer ********")),r}function j(e,r){return{...r,headers:{...r.headers,Authorization:`Bearer ${e}`}}}var me=["ACL","BIND","CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LINK","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCALENDAR","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REBIND","REPORT","SEARCH","SOURCE","SUBSCRIBE","TRACE","UNBIND","UNLINK","UNLOCK","UNSUBSCRIBE"];function te({retryCount:e,retryDelay:r,backoff:t,maxDelay:o}){return t&&e!==0?Math.min(Math.round((Math.random()+1)*r*2**e),o):r}Math.min(Math.round((Math.random()+1)*200*2**10),1/0);function oe(e){return new Promise(r=>{setTimeout(r,e)})}function R(e){if(!e?.credentials?.clientId||!e.projectKey||!e.host)throw new Error("Missing required options.");return{clientId:e.credentials.clientId,host:e.host,projectKey:e.projectKey}}function ne(e){return Date.now()+e*1e3-5*60*1e3}function A(e){let r=e;return{get:t=>r,set:(t,o)=>{r=t}}}function xe(e){return typeof e<"u"&&e!==null}function Xe(e){return xe(e)?typeof e=="string"?e:Object.fromEntries(Object.entries(e).filter(([r,t])=>![null,void 0,""].includes(t))):""}function Ze(e){let r={},t=new URLSearchParams(e);for(let o of t.keys())t.getAll(o).length>1?r[o]=t.getAll(o):r[o]=t.get(o);return r}function er(e){if(e=Xe(e),!e)return"";let r=new URLSearchParams(e);for(let[t,o]of Object.entries(e))Array.isArray(o)&&(r.delete(t),o.filter(xe).forEach(i=>r.append(t,i)));return r.toString()}function ye(e,r=Ze){return r(e)}function se(e,r=er){return r(e)}var rr=()=>typeof window<"u"&&window.document&&window.document.nodeType===9;function tr(){if(rr())return window.navigator.userAgent;let e=process?.version?.slice(1)||"unknown",r=`(${process?.platform||""}; ${process?.arch||""})`;return`node.js/${e} ${r.trim()}`}function ae(e){let r=null,t=null;if(!e)throw new Error("Missing required option `name`");let o=e.version?`${e.name}/${e.version}`:e.name;e.libraryName&&!e.libraryVersion?r=e.libraryName:e.libraryName&&e.libraryVersion&&(r=`${e.libraryName}/${e.libraryVersion}`),e.contactUrl&&!e.contactEmail?t=`(+${e.contactUrl})`:!e.contactUrl&&e.contactEmail?t=`(+${e.contactEmail})`:e.contactUrl&&e.contactEmail&&(t=`(+${e.contactUrl}; +${e.contactEmail})`);let i=tr(),s=e.customAgent||"";return[o,i,r,t,s].filter(Boolean).join(" ")}function Me(e){if(!e.host)throw new Error("Request `host` or `url` is missing or invalid, please pass in a valid host e.g `host: http://a-valid-host-url`");if(!e.httpClient&&typeof e.httpClient!="function")throw new Error("An `httpClient` is not available, please pass in a `fetch` or `axios` instance as an option or have them globally available.");if(e.httpClientOptions&&Object.prototype.toString.call(e.httpClientOptions)!=="[object Object]")throw new Error("`httpClientOptions` must be an object type")}function fe(e){if(!Array.isArray(e))throw new Error("`retryCodes` option must be an array of retry status (error) codes and/or messages.")}function ge(e){if(!e)throw new Error("Missing required options");if(e.middlewares&&!Array.isArray(e.middlewares))throw new Error("Middlewares should be an array");if(!e.middlewares||!Array.isArray(e.middlewares)||!e.middlewares.length)throw new Error("You need to provide at least one middleware")}function le(e,r,t={allowedMethods:me}){if(!r)throw new Error(`The "${e}" function requires a "Request" object as an argument. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);if(typeof r.uri!="string")throw new Error(`The "${e}" Request object requires a valid uri. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);if(!t.allowedMethods.includes(r.method))throw new Error(`The "${e}" Request object requires a valid method. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`)}function Ce(e){if(!e)throw new Error("Missing required options");if(!e.host)throw new Error("Missing required option (host)");if(!e.projectKey)throw new Error("Missing required option (projectKey)");if(!e.credentials)throw new Error("Missing required option (credentials)");let{clientId:r,clientSecret:t}=e.credentials||{};if(!(r&&t))throw new Error("Missing required credentials (clientId, clientSecret)");let o=e.scopes?e.scopes.join(" "):void 0,i=btoa(`${r}:${t}`),s=e.oauthUri||"/oauth/token",a=e.host.replace(/\/$/,"")+s,n=`grant_type=client_credentials${o?`&scope=${o}`:""}`;return{url:a,body:n,basicAuth:i}}function Ee(e){if(!e)throw new Error("Missing required options");if(!e.projectKey)throw new Error("Missing required option (projectKey)");let r=e.projectKey;e.oauthUri=e.oauthUri||`/oauth/${r}/anonymous/token`;let t=Ce(e);return e.credentials.anonymousId&&(t.body+=`&anonymous_id=${e.credentials.anonymousId}`),{...t}}function de(e){if(!e)throw new Error("Missing required options");if(!e.host)throw new Error("Missing required option (host)");if(!e.projectKey)throw new Error("Missing required option (projectKey)");if(!e.credentials)throw new Error("Missing required option (credentials)");if(!e.refreshToken)throw new Error("Missing required option (refreshToken)");let{clientId:r,clientSecret:t}=e.credentials;if(!(r&&t))throw new Error("Missing required credentials (clientId, clientSecret)");let o=btoa(`${r}:${t}`),i=e.oauthUri||"/oauth/token",s=e.host.replace(/\/$/,"")+i,a=`grant_type=refresh_token&refresh_token=${encodeURIComponent(e.refreshToken)}`;return{basicAuth:o,url:s,body:a}}function Oe(e){if(!e)throw new Error("Missing required options");if(!e.host)throw new Error("Missing required option (host)");if(!e.projectKey)throw new Error("Missing required option (projectKey)");if(!e.credentials)throw new Error("Missing required option (credentials)");let{clientId:r,clientSecret:t,user:o}=e.credentials,i=e.projectKey;if(!(r&&t&&o))throw new Error("Missing required credentials (clientId, clientSecret, user)");let{username:s,password:a}=o;if(!(s&&a))throw new Error("Missing required user credentials (username, password)");let n=(e.scopes||[]).join(" "),u=n?`&scope=${n}`:"",l=btoa(`${r}:${t}`),d=e.oauthUri||`/oauth/${i}/customers/token`,c=e.host.replace(/\/$/,"")+d,M=`grant_type=password&username=${encodeURIComponent(s)}&password=${encodeURIComponent(a)}${u}`;return{basicAuth:l,url:c,body:M}}async function Re(e){let{httpClient:r,httpClientOptions:t,tokenCache:o,userOption:i,tokenCacheObject:s}=e,a=e.url,n=e.body,u=e.basicAuth;if(!r||typeof r!="function")throw new Error("an `httpClient` is not available, please pass in a `fetch` or `axios` instance as an option or have them globally available.");if(s&&s.refreshToken&&(!s.token||s.token&&Date.now()>s.expirationTime)){if(!i)throw new Error("Missing required options.");let d={...de({...i,refreshToken:s.refreshToken})};a=d.url,n=d.body,u=d.basicAuth}let l;try{if(l=await U({url:a,method:"POST",headers:{Authorization:`Basic ${u}`,"Content-Type":"application/x-www-form-urlencoded","Content-Length":I(n)},httpClient:r,httpClientOptions:t,body:n}),l.statusCode>=200&&l.statusCode<300){let{access_token:d,expires_in:c,refresh_token:M}=l?.data,C=ne(c);return o.set({token:d,expirationTime:C,refreshToken:M}),Promise.resolve(!0)}throw N({code:l.data.error,statusCode:l.data.statusCode,message:l.data.message,error:l.data.errors})}catch(d){throw d}}async function E(e,r=null,t,o,i,s,a,n){let u={request:e,tokenCache:i,httpClient:a.httpClient||fetch,httpClientOptions:a.httpClientOptions,...s(a),userOption:a,next:n},l=async d=>{let c=Object.assign({},d);return c.statusCode==401&&(r=Re(u),await r,r=null,t=i.get(o),c=await n(j(t.token,e))),c};return e.headers&&(e.headers.Authorization||e.headers.authorization)?l(await n(e)):(t=i.get(o),t&&t.token&&Date.now()<t.expirationTime?l(await n(j(t.token,e))):(r?await r:(r=Re(u),await r,r=null),t=i.get(o),n(j(t.token,e))))}function v(e){let r=e.tokenCache||A({token:"",expirationTime:-1}),t,o=null,i=R(e);return s=>async a=>E(a,o,t,i,r,Ee,e,s)}function H(e){let r=e.tokenCache||A({token:"",expirationTime:-1}),t,o=null,i=R(e);return s=>async a=>E(a,o,t,i,r,Ce,e,s)}function _(e,r){return t=>async o=>{if(typeof e!="string")throw new Error("authorization must be a string");let i=r?.force===void 0?!0:r.force;if(!e||o.headers&&(o.headers.Authorization||o.headers.authorization)&&i===!1)return t(o);let s={...o,headers:{...o.headers,Authorization:e}};return t(s)}}function B(e){let r=e.tokenCache||A({token:"",expirationTime:-1}),t,o=null,i=R(e);return s=>async a=>E(a,o,t,i,r,Oe,e,s)}function K(e){let r=e.tokenCache||A({token:"",tokenCacheKey:null}),t,o=null,i=R(e);return s=>async a=>E(a,o,t,i,r,de,e,s)}function z(e){return r=>async t=>{let o=await r(t);if(o.statusCode==409){let i=o.error.body?.errors?.[0]?.currentVersion;if(i)return e&&typeof e=="function"?t.body=await e(i,t,o):t.body=typeof t.body=="string"?{...JSON.parse(t.body),version:i}:{...t.body,version:i},r(t)}return o}}function J(e){return r=>t=>{let o={...t,headers:{...t.headers,"X-Correlation-ID":e?.generate&&typeof e.generate=="function"?e.generate():ie()}};return r(o)}}function V(e={}){return r=>async t=>{let o=await r(t);if(o.error){let{error:i}=o;return e.handler&&typeof e.handler=="function"?e.handler({error:i,request:t,response:o,next:r}):{...o,statusCode:i.statusCode||0,headers:i.headers||T({}),body:i,error:i}}return o}}async function or({url:e,httpClient:r,clientOptions:t}){let{request:o,maskSensitiveHeaderData:i,includeRequestInErrorResponse:s,includeResponseHeaders:a}=t;try{let n=await U({url:e,...t,httpClient:r,method:t.method,...t.body?{body:t.body}:{}});if(a||(n.headers=null),n.statusCode>=200&&n.statusCode<300)return t.method=="HEAD"?{body:null,statusCode:n.statusCode,retryCount:n.retryCount,headers:T(n.headers)}:{body:n.data,statusCode:n.statusCode,retryCount:n.retryCount,headers:T(n.headers)};let u=N({code:n.data?.errors?.[0].code,message:n?.data?.message||n?.message,statusCode:n.statusCode||n?.data?.statusCode,method:t.method,headers:T(n.headers),body:n.data,error:n.data,retryCount:n.retryCount,...s?{originalRequest:i?k(o):o}:{uri:o.uri}});return{...u,error:u}}catch(n){let u=a?T(n.response?.headers):null,l=n.response?.status||n.response?.statusCode||n.response?.data.statusCode||0,d=n.response?.data?.message;throw{body:null,error:N({statusCode:l,code:"NetworkError",status:l,message:d||n.message,headers:u,body:n.response?.data||n,error:n.response?.data||n,...s?{originalRequest:i?k(o):o}:{uri:o.uri}})}}}function G(e){Me(e);let{host:r,credentialsMode:t,httpClient:o,timeout:i,enableRetry:s,retryConfig:a,getAbortController:n,includeOriginalRequest:u,includeRequestInErrorResponse:l=!0,includeResponseHeaders:d=!0,maskSensitiveHeaderData:c,httpClientOptions:M}=e;return C=>async p=>{let S=r.replace(/\/$/,"")+p.uri,h={...p.headers};Object.prototype.hasOwnProperty.call(h,"Content-Type")||Object.prototype.hasOwnProperty.call(h,"content-type")||(h["Content-Type"]="application/json"),h["Content-Type"]===null&&delete h["Content-Type"];let w=g.HEADERS_CONTENT_TYPES.indexOf(h["Content-Type"])>-1&&typeof p.body=="string"||Q(p.body)?p.body:JSON.stringify(p.body||void 0);w&&(typeof w=="string"||Q(w))&&(h["Content-Length"]=I(w));let f={enableRetry:s,retryConfig:a,request:p,method:p.method,headers:h,includeRequestInErrorResponse:l,maskSensitiveHeaderData:c,includeResponseHeaders:d,...M};t&&(f.credentialsMode=t),i&&(f.timeout=i,f.getAbortController=n),w&&(f.body=w);let q=await or({url:S,clientOptions:f,httpClient:o}),x={...p,includeOriginalRequest:u,maskSensitiveHeaderData:c,response:q};return C(x)}}function Y(e){return r=>async t=>{let o=await r(t),i=Object.assign({},o),{loggerFn:s=console.log}=e||{};return s&&typeof s=="function"&&s(o),i}}function W({concurrency:e=20}){let r=0,t=[],o=()=>0>=e?Promise.resolve():new Promise(s=>{let a=()=>{r<e?(r++,s()):t.push(a)};a()}),i=()=>{if(r--,t.length>0){let s=t.shift();s&&s()}};return s=>a=>o().then(()=>{let n={...a,resolve(u){a.resolve(u),i()},reject(u){a.reject(u),i()}};return s(n).finally(()=>{i()})})}var ke={name:"@commercetools/ts-client",version:"3.4.1",engines:{node:">=18"},description:"commercetools Composable Commerce TypeScript SDK client.",keywords:["commercetools","composable commerce","sdk","typescript","client","middleware","http","oauth","auth"],homepage:"https://github.com/commercetools/commercetools-sdk-typescript",license:"MIT",directories:{lib:"lib",test:"test"},publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/commercetools/commercetools-sdk-typescript.git"},bugs:{url:"https://github.com/commercetools/commercetools-sdk-typescript/issues"},dependencies:{buffer:"^6.0.3"},files:["dist","CHANGELOG.md"],author:"Chukwuemeka Ajima <meeky.ae@gmail.com>",main:"dist/commercetools-ts-client.cjs.js",module:"dist/commercetools-ts-client.esm.js",browser:{"./dist/commercetools-ts-client.cjs.js":"./dist/commercetools-ts-client.browser.cjs.js","./dist/commercetools-ts-client.esm.js":"./dist/commercetools-ts-client.browser.esm.js"},devDependencies:{"common-tags":"1.8.2",dotenv:"16.5.0",jest:"29.7.0",nock:"14.0.4","organize-imports-cli":"0.10.0"},scripts:{organize_imports:"find src -type f -name '*.ts' | xargs organize-imports-cli",postbuild:"yarn organize_imports",post_process_generate:"yarn organize_imports",docs:"typedoc --out docs"}};function X(e){return r=>async t=>{let o=ae({...e,name:`${e.name?e.name+"/":""}commercetools-sdk-javascript-v3/${ke.version}`}),i={...t,headers:{...t.headers,"User-Agent":o}};return r(i)}}function nr({middlewares:e}){return e.length===1?e[0]:e.slice().reduce((t,o)=>(...i)=>t(o.apply(null,i)))}var Pe;function ue(e,r,t){if(le("process",e,{allowedMethods:["GET"]}),typeof r!="function")throw new Error('The "process" function accepts a "Function" as a second argument that returns a Promise. See https://commercetools.github.io/nodejs/sdk/api/sdkClient.html#processrequest-processfn-options');let o={total:Number.POSITIVE_INFINITY,accumulate:!0,...t};return new Promise((i,s)=>{let a,n="";if(e&&e.uri){let[C,p]=e.uri.split("?");a=C,n=p}let l={limit:20,...{...ye(n)}},d=o.total,c=!1,M=async(C,p=[])=>{let S=l.limit<d?l.limit:d,h=se({...l,limit:S}),w={sort:"id asc",withTotal:!1,...C?{where:`id > "${C}"`}:{}},f=se(w),q={...e,uri:`${a}?${f}&${h}`};try{let x=await P(Pe).execute(q),{results:Z,count:F}=x?.body||{};if(!F&&c)return i(p||[]);let m=await Promise.resolve(r(x)),y;if(c=!0,o.accumulate&&(y=p.concat(m||[])),d-=F,F<l.limit||!d)return i(y||[]);let $=Z[F-1],ee=$&&$.id;M(ee,y)}catch(x){s(x)}};M()})}function P(e){Pe=e,ge(e);let r=!1,t={async resolve(i){let{response:s,includeOriginalRequest:a,maskSensitiveHeaderData:n,...u}=i,{retryCount:l,...d}=s;return r=n,{body:null,error:null,reject:i.reject,resolve:i.resolve,...d,...a?{originalRequest:u}:{},...s?.retryCount?{retryCount:s.retryCount}:{}}}},o=nr(e)(t.resolve);return{process:ue,execute(i){return le("exec",i),new Promise(async(s,a)=>{try{let n=await o({reject:a,resolve:s,...i});if(n.error)return a(n.error);n.originalRequest&&r&&(n.originalRequest=k(n.originalRequest)),s(n)}catch(n){a(n)}})}}}var{createAuthMiddlewareForPasswordFlow:sr,createAuthMiddlewareForAnonymousSessionFlow:ar,createAuthMiddlewareForClientCredentialsFlow:lr,createAuthMiddlewareForRefreshTokenFlow:dr,createAuthMiddlewareForExistingTokenFlow:ur,createCorrelationIdMiddleware:cr,createHttpMiddleware:pr,createLoggerMiddleware:hr,createQueueMiddleware:wr,createUserAgentMiddleware:Se,createConcurrentModificationMiddleware:fr,createErrorMiddleware:mr}=Ae,L=class{projectKey;authMiddleware;httpMiddleware;userAgentMiddleware;correlationIdMiddleware;loggerMiddleware;queueMiddleware;concurrentMiddleware;telemetryMiddleware;beforeMiddleware;afterMiddleware;errorMiddleware;middlewares=[];constructor(){this.userAgentMiddleware=Se({})}withProjectKey(r){return this.projectKey=r,this}defaultClient(r,t,o,i,s,a){return this.withClientCredentialsFlow({host:o,projectKey:i||this.projectKey,credentials:t,httpClient:a||fetch,scopes:s}).withHttpMiddleware({host:r,httpClient:a||fetch})}withAuthMiddleware(r){return this.authMiddleware=r,this}withMiddleware(r){return this.middlewares.push(r),this}withErrorMiddleware(r){return this.errorMiddleware=mr(r),this}withClientCredentialsFlow(r){return this.withAuthMiddleware(lr({host:r.host||g.CTP_AUTH_URL,projectKey:r.projectKey||this.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null},oauthUri:r.oauthUri||null,scopes:r.scopes,httpClient:r.httpClient||fetch,...r}))}withPasswordFlow(r){return this.withAuthMiddleware(sr({host:r.host||g.CTP_AUTH_URL,projectKey:r.projectKey||this.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null,user:{username:r.credentials.user.username||null,password:r.credentials.user.password||null}},httpClient:r.httpClient||fetch,...r}))}withAnonymousSessionFlow(r){return this.withAuthMiddleware(ar({host:r.host||g.CTP_AUTH_URL,projectKey:this.projectKey||r.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null,anonymousId:r.credentials.anonymousId||null},httpClient:r.httpClient||fetch,...r}))}withRefreshTokenFlow(r){return this.withAuthMiddleware(dr({host:r.host||g.CTP_AUTH_URL,projectKey:this.projectKey||r.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null},httpClient:r.httpClient||fetch,refreshToken:r.refreshToken||null,...r}))}withExistingTokenFlow(r,t){return this.withAuthMiddleware(ur(r,{force:t.force||!0,...t}))}withHttpMiddleware(r){return this.httpMiddleware=pr({host:r.host||g.CTP_API_URL,httpClient:r.httpClient||fetch,...r}),this}withUserAgentMiddleware(r){return this.userAgentMiddleware=Se(r),this}withQueueMiddleware(r){return this.queueMiddleware=wr({concurrency:r.concurrency||g.CONCURRENCT_REQUEST,...r}),this}withLoggerMiddleware(r){return this.loggerMiddleware=hr(r),this}withCorrelationIdMiddleware(r){return this.correlationIdMiddleware=cr({generate:r?.generate,...r}),this}withConcurrentModificationMiddleware(r){return this.concurrentMiddleware=fr(r?.concurrentModificationHandlerFn),this}withTelemetryMiddleware(r){let{createTelemetryMiddleware:t,...o}=r;return this.withUserAgentMiddleware({customAgent:o?.userAgent||"typescript-sdk-apm-middleware"}),this.telemetryMiddleware=t(o),this}withBeforeExecutionMiddleware(r){let{middleware:t,...o}=r||{};return this.beforeMiddleware=r.middleware(o),this}withAfterExecutionMiddleware(r){let{middleware:t,...o}=r||{};return this.afterMiddleware=r.middleware(o),this}build(){let r=this.middlewares.slice();return this.telemetryMiddleware&&r.push(this.telemetryMiddleware),this.correlationIdMiddleware&&r.push(this.correlationIdMiddleware),this.userAgentMiddleware&&r.push(this.userAgentMiddleware),this.errorMiddleware&&r.push(this.errorMiddleware),this.authMiddleware&&r.push(this.authMiddleware),this.beforeMiddleware&&r.push(this.beforeMiddleware),this.queueMiddleware&&r.push(this.queueMiddleware),this.loggerMiddleware&&r.push(this.loggerMiddleware),this.concurrentMiddleware&&r.push(this.concurrentMiddleware),this.httpMiddleware&&r.push(this.httpMiddleware),this.afterMiddleware&&r.push(this.afterMiddleware),P({middlewares:r})}};return je(yr);})();
1
+ var window;(window||={})["@commercetools/ts-client"]=(()=>{var ce=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var Ie=Object.getOwnPropertyNames;var Ne=Object.prototype.hasOwnProperty;var pe=(e,r)=>{for(var t in r)ce(e,t,{get:r[t],enumerable:!0})},Ue=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ie(r))!Ne.call(e,i)&&i!==t&&ce(e,i,{get:()=>r[i],enumerable:!(o=Fe(r,i))||o.enumerable});return e};var je=e=>Ue(ce({},"__esModule",{value:!0}),e);var yr={};pe(yr,{ClientBuilder:()=>L,Process:()=>ue,createAuthMiddlewareForAnonymousSessionFlow:()=>v,createAuthMiddlewareForClientCredentialsFlow:()=>H,createAuthMiddlewareForExistingTokenFlow:()=>_,createAuthMiddlewareForPasswordFlow:()=>B,createAuthMiddlewareForRefreshTokenFlow:()=>K,createClient:()=>S,createConcurrentModificationMiddleware:()=>z,createCorrelationIdMiddleware:()=>J,createErrorMiddleware:()=>V,createHttpMiddleware:()=>G,createLoggerMiddleware:()=>Y,createQueueMiddleware:()=>W,createUserAgentMiddleware:()=>X});var Ae={};pe(Ae,{createAuthMiddlewareForAnonymousSessionFlow:()=>v,createAuthMiddlewareForClientCredentialsFlow:()=>H,createAuthMiddlewareForExistingTokenFlow:()=>_,createAuthMiddlewareForPasswordFlow:()=>B,createAuthMiddlewareForRefreshTokenFlow:()=>K,createConcurrentModificationMiddleware:()=>z,createCorrelationIdMiddleware:()=>J,createErrorMiddleware:()=>V,createHttpMiddleware:()=>G,createLoggerMiddleware:()=>Y,createQueueMiddleware:()=>W,createUserAgentMiddleware:()=>X});function I(e){return e&&typeof e=="string"?new TextEncoder().encode(e).length.toString():e&&e instanceof Uint8Array?e.byteLength.toString():e&&typeof e=="object"?new TextEncoder().encode(JSON.stringify(e)).length.toString():"0"}var g={};pe(g,{CONCURRENCT_REQUEST:()=>He,CTP_API_URL:()=>_e,CTP_AUTH_URL:()=>Be,DEFAULT_HEADERS:()=>he,HEADERS_CONTENT_TYPES:()=>ve});var ve=["application/json","application/graphql"],He=20,_e="https://api.europe-west1.gcp.commercetools.com",Be="https://auth.europe-west1.gcp.commercetools.com",he=["content-type","access-control-allow-origin","access-control-allow-headers","access-control-allow-methods","access-control-expose-headers","access-control-max-ag","x-correlation-id","server-timing","date","server","transfer-encoding","access-control-max-age","content-encoding","x-envoy-upstream-service-time","via","alt-svc","connection"];function b(e,r,t={}){this.code=t.code??=this.constructor.name,this.statusCode=e,this.status=e,this.message=r,Object.assign(this,t),this.name=this.constructor.name,this.constructor.prototype.__proto__=Error.prototype,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function be(...e){b.call(this,0,...e)}function Te(...e){b.call(this,...e)}function Ke(...e){b.call(this,400,...e)}function Le(...e){b.call(this,401,...e)}function $e(...e){b.call(this,403,...e)}function De(...e){b.call(this,404,...e)}function Qe(...e){b.call(this,409,...e)}function ze(...e){b.call(this,500,...e)}function Je(...e){b.call(this,503,...e)}function we(e){switch(e){case 0:return be;case 400:return Ke;case 401:return Le;case 403:return $e;case 404:return De;case 409:return Qe;case 500:return ze;case 503:return Je;default:return}}function Ve({statusCode:e,message:r,...t}){let o=r||"Unexpected non-JSON error response";e===404&&(o=`URI not found: ${t.originalRequest?.uri||t.uri}`);let i=we(e);return i?new i(o,t):new Te(e,o,t)}var N=Ve;function Ge(e,r){return[503,...e].includes(r?.status||r?.statusCode)}async function Ye(e,r){async function t(){return await e({...r,headers:{...r.headers}})}return t().catch(o=>Promise.reject(o))}async function U(e){let{url:r,httpClient:t,...o}=e;return await Ye(async s=>{let{enableRetry:a,retryConfig:n,timeout:d,getAbortController:c}=o,{retryCodes:l=[],maxDelay:u=1/0,maxRetries:M=3,backoff:C=!0,retryDelay:p=200,retryOnAbort:x=!0}=n||{},h,w,f=0,q;fe(l);async function E(){return t(r,{...s,...o,headers:{...o.headers},...o.body?{data:o.body}:{},withCredentials:s.credentialsMode==="include"})}function Z(){let y=(c?c():null)||new AbortController;return o.abortController=y,o.signal=y.signal,y}async function F(){let y=async(re,qe)=>{let D={};if(d){let k=Z();q=setTimeout(()=>{k.abort(),k=Z()},d)}try{if(D=await E(),D.status>399&&Ge(re,D))return{_response:D,shouldRetry:!0}}catch(k){if((k.name.includes("AbortError")||k.name.includes("TimeoutError"))&&qe)return{_response:k,shouldRetry:!0};throw k}finally{clearTimeout(q)}return{_response:D,shouldRetry:!1}},{_response:$,shouldRetry:ee}=await y(l,x);for(;a&&ee&&f<M;){f++,await oe(te({retryCount:f,retryDelay:p,maxRetries:M,backoff:C,maxDelay:u}));let re=await y(l,x);$=re._response,ee=re.shouldRetry}return $}let m=await F();try{m.text&&typeof m.text=="function"?(h=await m.text()||JSON.stringify(m[Object.getOwnPropertySymbols(m)[1]]),w=JSON.parse(h)):w=m.data||m}catch(y){throw y}return{data:w,retryCount:f,statusCode:m.status||m.statusCode||w.statusCode,headers:m.headers}},{validateStatus:s=>!0})}function ie(){return("1000000-1000-4000-8000"+-1e11).replace(/[018]/g,e=>(parseInt(e)^Math.floor(Math.random()*256)&15>>parseInt(e)/4).toString(16))}function We(e){return he.reduce((r,t)=>{let o=e[t]?e[t]:typeof e.get=="function"?e.get(t):null;return o&&(r[t]=o),r},{})}function T(e){if(!e)return null;if(e.raw&&typeof e.raw=="function")return e.raw();if(!e.forEach)return We(e);let r={};return e.forEach((t,o)=>r[o]=t),r}function Q(e){return e!=null&&e.constructor!=null&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function P(e){let r=JSON.parse(JSON.stringify(e));return r?.headers&&(r.headers.Authorization&&(r.headers.Authorization="Bearer ********"),r.headers.authorization&&(r.headers.authorization="Bearer ********")),r}function j(e,r){return{...r,headers:{...r.headers,Authorization:`Bearer ${e}`}}}var me=["ACL","BIND","CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LINK","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCALENDAR","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REBIND","REPORT","SEARCH","SOURCE","SUBSCRIBE","TRACE","UNBIND","UNLINK","UNLOCK","UNSUBSCRIBE"];function te({retryCount:e,retryDelay:r,backoff:t,maxDelay:o}){return t&&e!==0?Math.min(Math.round((Math.random()+1)*r*2**e),o):r}Math.min(Math.round((Math.random()+1)*200*2**10),1/0);function oe(e){return new Promise(r=>{setTimeout(r,e)})}function R(e){if(!e?.credentials?.clientId||!e.projectKey||!e.host)throw new Error("Missing required options.");return{clientId:e.credentials.clientId,host:e.host,projectKey:e.projectKey}}function ne(e){return Date.now()+e*1e3-5*60*1e3}function A(e){let r=e;return{get:t=>r,set:(t,o)=>{r=t}}}function xe(e){return typeof e<"u"&&e!==null}function Xe(e){return xe(e)?typeof e=="string"?e:Object.fromEntries(Object.entries(e).filter(([r,t])=>![null,void 0,""].includes(t))):""}function Ze(e){let r={},t=new URLSearchParams(e);for(let o of t.keys())t.getAll(o).length>1?r[o]=t.getAll(o):r[o]=t.get(o);return r}function er(e){if(e=Xe(e),!e)return"";let r=new URLSearchParams(e);for(let[t,o]of Object.entries(e))Array.isArray(o)&&(r.delete(t),o.filter(xe).forEach(i=>r.append(t,i)));return r.toString()}function ye(e,r=Ze){return r(e)}function se(e,r=er){return r(e)}var rr=()=>typeof window<"u"&&window.document&&window.document.nodeType===9;function tr(){if(rr())return window.navigator.userAgent;let e=process?.version?.slice(1)||"unknown",r=`(${process?.platform||""}; ${process?.arch||""})`;return`node.js/${e} ${r.trim()}`}function ae(e){let r=null,t=null;if(!e)throw new Error("Missing required option `name`");let o=e.version?`${e.name}/${e.version}`:e.name;e.libraryName&&!e.libraryVersion?r=e.libraryName:e.libraryName&&e.libraryVersion&&(r=`${e.libraryName}/${e.libraryVersion}`),e.contactUrl&&!e.contactEmail?t=`(+${e.contactUrl})`:!e.contactUrl&&e.contactEmail?t=`(+${e.contactEmail})`:e.contactUrl&&e.contactEmail&&(t=`(+${e.contactUrl}; +${e.contactEmail})`);let i=tr(),s=e.customAgent||"";return[o,i,r,t,s].filter(Boolean).join(" ")}function Me(e){if(!e.host)throw new Error("Request `host` or `url` is missing or invalid, please pass in a valid host e.g `host: http://a-valid-host-url`");if(!e.httpClient&&typeof e.httpClient!="function")throw new Error("An `httpClient` is not available, please pass in a `fetch` or `axios` instance as an option or have them globally available.");if(e.httpClientOptions&&Object.prototype.toString.call(e.httpClientOptions)!=="[object Object]")throw new Error("`httpClientOptions` must be an object type")}function fe(e){if(!Array.isArray(e))throw new Error("`retryCodes` option must be an array of retry status (error) codes and/or messages.")}function ge(e){if(!e)throw new Error("Missing required options");if(e.middlewares&&!Array.isArray(e.middlewares))throw new Error("Middlewares should be an array");if(!e.middlewares||!Array.isArray(e.middlewares)||!e.middlewares.length)throw new Error("You need to provide at least one middleware")}function le(e,r,t={allowedMethods:me}){if(!r)throw new Error(`The "${e}" function requires a "Request" object as an argument. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);if(typeof r.uri!="string")throw new Error(`The "${e}" Request object requires a valid uri. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);if(!t.allowedMethods.includes(r.method))throw new Error(`The "${e}" Request object requires a valid method. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`)}function Ce(e){if(!e)throw new Error("Missing required options");if(!e.host)throw new Error("Missing required option (host)");if(!e.projectKey)throw new Error("Missing required option (projectKey)");if(!e.credentials)throw new Error("Missing required option (credentials)");let{clientId:r,clientSecret:t}=e.credentials||{};if(!(r&&t))throw new Error("Missing required credentials (clientId, clientSecret)");let o=e.scopes?e.scopes.join(" "):void 0,i=btoa(`${r}:${t}`),s=e.oauthUri||"/oauth/token",a=e.host.replace(/\/$/,"")+s,n=`grant_type=client_credentials${o?`&scope=${o}`:""}`;return{url:a,body:n,basicAuth:i}}function Ee(e){if(!e)throw new Error("Missing required options");if(!e.projectKey)throw new Error("Missing required option (projectKey)");let r=e.projectKey;e.oauthUri=e.oauthUri||`/oauth/${r}/anonymous/token`;let t=Ce(e);return e.credentials.anonymousId&&(t.body+=`&anonymous_id=${e.credentials.anonymousId}`),{...t}}function de(e){if(!e)throw new Error("Missing required options");if(!e.host)throw new Error("Missing required option (host)");if(!e.projectKey)throw new Error("Missing required option (projectKey)");if(!e.credentials)throw new Error("Missing required option (credentials)");if(!e.refreshToken)throw new Error("Missing required option (refreshToken)");let{clientId:r,clientSecret:t}=e.credentials;if(!(r&&t))throw new Error("Missing required credentials (clientId, clientSecret)");let o=btoa(`${r}:${t}`),i=e.oauthUri||"/oauth/token",s=e.host.replace(/\/$/,"")+i,a=`grant_type=refresh_token&refresh_token=${encodeURIComponent(e.refreshToken)}`;return{basicAuth:o,url:s,body:a}}function Oe(e){if(!e)throw new Error("Missing required options");if(!e.host)throw new Error("Missing required option (host)");if(!e.projectKey)throw new Error("Missing required option (projectKey)");if(!e.credentials)throw new Error("Missing required option (credentials)");let{clientId:r,clientSecret:t,user:o}=e.credentials,i=e.projectKey;if(!(r&&t&&o))throw new Error("Missing required credentials (clientId, clientSecret, user)");let{username:s,password:a}=o;if(!(s&&a))throw new Error("Missing required user credentials (username, password)");let n=(e.scopes||[]).join(" "),d=n?`&scope=${n}`:"",c=btoa(`${r}:${t}`),l=e.oauthUri||`/oauth/${i}/customers/token`,u=e.host.replace(/\/$/,"")+l,M=`grant_type=password&username=${encodeURIComponent(s)}&password=${encodeURIComponent(a)}${d}`;return{basicAuth:c,url:u,body:M}}async function Re(e){let{httpClient:r,httpClientOptions:t,tokenCache:o,userOption:i,tokenCacheObject:s,tokenCacheKey:a}=e,n=e.url,d=e.body,c=e.basicAuth;if(!r||typeof r!="function")throw new Error("an `httpClient` is not available, please pass in a `fetch` or `axios` instance as an option or have them globally available.");if(s&&s.refreshToken&&(!s.token||s.token&&Date.now()>s.expirationTime)){if(!i)throw new Error("Missing required options.");let u={...de({...i,refreshToken:s.refreshToken})};n=u.url,d=u.body,c=u.basicAuth}let l;try{if(l=await U({url:n,method:"POST",headers:{Authorization:`Basic ${c}`,"Content-Type":"application/x-www-form-urlencoded","Content-Length":I(d)},httpClient:r,httpClientOptions:t,body:d}),l.statusCode>=200&&l.statusCode<300){let{access_token:u,expires_in:M,refresh_token:C}=l?.data,p=ne(M),x={token:u,expirationTime:p,refreshToken:C};return await o.set(x,a),Promise.resolve(!0)}throw N({code:l.data.error,statusCode:l.data.statusCode,message:l.data.message,error:l.data.errors})}catch(u){throw u}}async function O(e,r=null,t,o,i,s,a,n){let d={request:e,tokenCache:i,tokenCacheKey:o,httpClient:a.httpClient||fetch,httpClientOptions:a.httpClientOptions,...s(a),userOption:a,next:n},c=async l=>{let u=Object.assign({},l);return u.statusCode==401&&(r=Re(d),await r,r=null,t=await i.get(o),u=await n(j(t.token,e))),u};return e.headers&&(e.headers.Authorization||e.headers.authorization)?c(await n(e)):(t=await i.get(o),t&&t.token&&Date.now()<t.expirationTime?c(await n(j(t.token,e))):(r?await r:(r=Re(d),await r,r=null),t=await i.get(o),n(j(t.token,e))))}function v(e){let r=e.tokenCache||A({token:"",expirationTime:-1}),t,o=null,i=R(e);return s=>async a=>O(a,o,t,i,r,Ee,e,s)}function H(e){let r=e.tokenCache||A({token:"",expirationTime:-1}),t,o=null,i=R(e);return s=>async a=>O(a,o,t,i,r,Ce,e,s)}function _(e,r){return t=>async o=>{if(typeof e!="string")throw new Error("authorization must be a string");let i=r?.force===void 0?!0:r.force;if(!e||o.headers&&(o.headers.Authorization||o.headers.authorization)&&i===!1)return t(o);let s={...o,headers:{...o.headers,Authorization:e}};return t(s)}}function B(e){let r=e.tokenCache||A({token:"",expirationTime:-1}),t,o=null,i=R(e);return s=>async a=>O(a,o,t,i,r,Oe,e,s)}function K(e){let r=e.tokenCache||A({token:"",tokenCacheKey:null}),t,o=null,i=R(e);return s=>async a=>O(a,o,t,i,r,de,e,s)}function z(e){return r=>async t=>{let o=await r(t);if(o.statusCode==409){let i=o.error.body?.errors?.[0]?.currentVersion;if(i)return e&&typeof e=="function"?t.body=await e(i,t,o):t.body=typeof t.body=="string"?{...JSON.parse(t.body),version:i}:{...t.body,version:i},r(t)}return o}}function J(e){return r=>t=>{let o={...t,headers:{...t.headers,"X-Correlation-ID":e?.generate&&typeof e.generate=="function"?e.generate():ie()}};return r(o)}}function V(e={}){return r=>async t=>{let o=await r(t);if(o.error){let{error:i}=o;return e.handler&&typeof e.handler=="function"?e.handler({error:i,request:t,response:o,next:r}):{...o,statusCode:i.statusCode||0,headers:i.headers||T({}),body:i,error:i}}return o}}async function or({url:e,httpClient:r,clientOptions:t}){let{request:o,maskSensitiveHeaderData:i,includeRequestInErrorResponse:s,includeResponseHeaders:a}=t;try{let n=await U({url:e,...t,httpClient:r,method:t.method,...t.body?{body:t.body}:{}});if(a||(n.headers=null),n.statusCode>=200&&n.statusCode<300)return t.method=="HEAD"?{body:null,statusCode:n.statusCode,retryCount:n.retryCount,headers:T(n.headers)}:{body:n.data,statusCode:n.statusCode,retryCount:n.retryCount,headers:T(n.headers)};let d=N({code:n.data?.errors?.[0].code,message:n?.data?.message||n?.message,statusCode:n.statusCode||n?.data?.statusCode,method:t.method,headers:T(n.headers),body:n.data,error:n.data,retryCount:n.retryCount,...s?{originalRequest:i?P(o):o}:{uri:o.uri}});return{...d,error:d}}catch(n){let d=a?T(n.response?.headers):null,c=n.response?.status||n.response?.statusCode||n.response?.data.statusCode||0,l=n.response?.data?.message;throw{body:null,error:N({statusCode:c,code:"NetworkError",status:c,message:l||n.message,headers:d,body:n.response?.data||n,error:n.response?.data||n,...s?{originalRequest:i?P(o):o}:{uri:o.uri}})}}}function G(e){Me(e);let{host:r,credentialsMode:t,httpClient:o,timeout:i,enableRetry:s,retryConfig:a,getAbortController:n,includeOriginalRequest:d,includeRequestInErrorResponse:c=!0,includeResponseHeaders:l=!0,maskSensitiveHeaderData:u,httpClientOptions:M}=e;return C=>async p=>{let x=r.replace(/\/$/,"")+p.uri,h={...p.headers};Object.prototype.hasOwnProperty.call(h,"Content-Type")||Object.prototype.hasOwnProperty.call(h,"content-type")||(h["Content-Type"]="application/json"),h["Content-Type"]===null&&delete h["Content-Type"];let w=g.HEADERS_CONTENT_TYPES.indexOf(h["Content-Type"])>-1&&typeof p.body=="string"||Q(p.body)?p.body:JSON.stringify(p.body||void 0);w&&(typeof w=="string"||Q(w))&&(h["Content-Length"]=I(w));let f={enableRetry:s,retryConfig:a,request:p,method:p.method,headers:h,includeRequestInErrorResponse:c,maskSensitiveHeaderData:u,includeResponseHeaders:l,...M};t&&(f.credentialsMode=t),i&&(f.timeout=i,f.getAbortController=n),w&&(f.body=w);let q=await or({url:x,clientOptions:f,httpClient:o}),E={...p,includeOriginalRequest:d,maskSensitiveHeaderData:u,response:q};return C(E)}}function Y(e){return r=>async t=>{let o=await r(t),i=Object.assign({},o),{loggerFn:s=console.log}=e||{};return s&&typeof s=="function"&&s(o),i}}function W({concurrency:e=20}){let r=0,t=[],o=()=>0>=e?Promise.resolve():new Promise(s=>{let a=()=>{r<e?(r++,s()):t.push(a)};a()}),i=()=>{if(r--,t.length>0){let s=t.shift();s&&s()}};return s=>a=>o().then(()=>{let n={...a,resolve(d){a.resolve(d),i()},reject(d){a.reject(d),i()}};return s(n).finally(()=>{i()})})}var ke={name:"@commercetools/ts-client",version:"4.0.0",engines:{node:">=18"},description:"commercetools Composable Commerce TypeScript SDK client.",keywords:["commercetools","composable commerce","sdk","typescript","client","middleware","http","oauth","auth"],homepage:"https://github.com/commercetools/commercetools-sdk-typescript",license:"MIT",directories:{lib:"lib",test:"test"},publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/commercetools/commercetools-sdk-typescript.git"},bugs:{url:"https://github.com/commercetools/commercetools-sdk-typescript/issues"},dependencies:{buffer:"^6.0.3"},files:["dist","CHANGELOG.md"],author:"Chukwuemeka Ajima <meeky.ae@gmail.com>",main:"dist/commercetools-ts-client.cjs.js",module:"dist/commercetools-ts-client.esm.js",browser:{"./dist/commercetools-ts-client.cjs.js":"./dist/commercetools-ts-client.browser.cjs.js","./dist/commercetools-ts-client.esm.js":"./dist/commercetools-ts-client.browser.esm.js"},devDependencies:{"common-tags":"1.8.2",dotenv:"16.5.0",jest:"29.7.0",nock:"14.0.4","organize-imports-cli":"0.10.0"},scripts:{organize_imports:"find src -type f -name '*.ts' | xargs organize-imports-cli",postbuild:"yarn organize_imports",post_process_generate:"yarn organize_imports",docs:"typedoc --out docs"}};function X(e){return r=>async t=>{let o=ae({...e,name:`${e.name?e.name+"/":""}commercetools-sdk-javascript-v3/${ke.version}`}),i={...t,headers:{...t.headers,"User-Agent":o}};return r(i)}}function nr({middlewares:e}){return e.length===1?e[0]:e.slice().reduce((t,o)=>(...i)=>t(o.apply(null,i)))}var Pe;function ue(e,r,t){if(le("process",e,{allowedMethods:["GET"]}),typeof r!="function")throw new Error('The "process" function accepts a "Function" as a second argument that returns a Promise. See https://commercetools.github.io/nodejs/sdk/api/sdkClient.html#processrequest-processfn-options');let o={total:Number.POSITIVE_INFINITY,accumulate:!0,...t};return new Promise((i,s)=>{let a,n="";if(e&&e.uri){let[C,p]=e.uri.split("?");a=C,n=p}let c={limit:20,...{...ye(n)}},l=o.total,u=!1,M=async(C,p=[])=>{let x=c.limit<l?c.limit:l,h=se({...c,limit:x}),w={sort:"id asc",withTotal:!1,...C?{where:`id > "${C}"`}:{}},f=se(w),q={...e,uri:`${a}?${f}&${h}`};try{let E=await S(Pe).execute(q),{results:Z,count:F}=E?.body||{};if(!F&&u)return i(p||[]);let m=await Promise.resolve(r(E)),y;if(u=!0,o.accumulate&&(y=p.concat(m||[])),l-=F,F<c.limit||!l)return i(y||[]);let $=Z[F-1],ee=$&&$.id;M(ee,y)}catch(E){s(E)}};M()})}function S(e){Pe=e,ge(e);let r=!1,t={async resolve(i){let{response:s,includeOriginalRequest:a,maskSensitiveHeaderData:n,...d}=i,{retryCount:c,...l}=s;return r=n,{body:null,error:null,reject:i.reject,resolve:i.resolve,...l,...a?{originalRequest:d}:{},...s?.retryCount?{retryCount:s.retryCount}:{}}}},o=nr(e)(t.resolve);return{process:ue,execute(i){return le("exec",i),new Promise(async(s,a)=>{try{let n=await o({reject:a,resolve:s,...i});if(n.error)return a(n.error);n.originalRequest&&r&&(n.originalRequest=P(n.originalRequest)),s(n)}catch(n){a(n)}})}}}var{createAuthMiddlewareForPasswordFlow:sr,createAuthMiddlewareForAnonymousSessionFlow:ar,createAuthMiddlewareForClientCredentialsFlow:lr,createAuthMiddlewareForRefreshTokenFlow:dr,createAuthMiddlewareForExistingTokenFlow:ur,createCorrelationIdMiddleware:cr,createHttpMiddleware:pr,createLoggerMiddleware:hr,createQueueMiddleware:wr,createUserAgentMiddleware:Se,createConcurrentModificationMiddleware:fr,createErrorMiddleware:mr}=Ae,L=class{projectKey;authMiddleware;httpMiddleware;userAgentMiddleware;correlationIdMiddleware;loggerMiddleware;queueMiddleware;concurrentMiddleware;telemetryMiddleware;beforeMiddleware;afterMiddleware;errorMiddleware;middlewares=[];constructor(){this.userAgentMiddleware=Se({})}withProjectKey(r){return this.projectKey=r,this}defaultClient(r,t,o,i,s,a){return this.withClientCredentialsFlow({host:o,projectKey:i||this.projectKey,credentials:t,httpClient:a||fetch,scopes:s}).withHttpMiddleware({host:r,httpClient:a||fetch})}withAuthMiddleware(r){return this.authMiddleware=r,this}withMiddleware(r){return this.middlewares.push(r),this}withErrorMiddleware(r){return this.errorMiddleware=mr(r),this}withClientCredentialsFlow(r){return this.withAuthMiddleware(lr({host:r.host||g.CTP_AUTH_URL,projectKey:r.projectKey||this.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null},oauthUri:r.oauthUri||null,scopes:r.scopes,httpClient:r.httpClient||fetch,...r}))}withPasswordFlow(r){return this.withAuthMiddleware(sr({host:r.host||g.CTP_AUTH_URL,projectKey:r.projectKey||this.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null,user:{username:r.credentials.user.username||null,password:r.credentials.user.password||null}},httpClient:r.httpClient||fetch,...r}))}withAnonymousSessionFlow(r){return this.withAuthMiddleware(ar({host:r.host||g.CTP_AUTH_URL,projectKey:this.projectKey||r.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null,anonymousId:r.credentials.anonymousId||null},httpClient:r.httpClient||fetch,...r}))}withRefreshTokenFlow(r){return this.withAuthMiddleware(dr({host:r.host||g.CTP_AUTH_URL,projectKey:this.projectKey||r.projectKey,credentials:{clientId:r.credentials.clientId||null,clientSecret:r.credentials.clientSecret||null},httpClient:r.httpClient||fetch,refreshToken:r.refreshToken||null,...r}))}withExistingTokenFlow(r,t){return this.withAuthMiddleware(ur(r,{force:t.force||!0,...t}))}withHttpMiddleware(r){return this.httpMiddleware=pr({host:r.host||g.CTP_API_URL,httpClient:r.httpClient||fetch,...r}),this}withUserAgentMiddleware(r){return this.userAgentMiddleware=Se(r),this}withQueueMiddleware(r){return this.queueMiddleware=wr({concurrency:r.concurrency||g.CONCURRENCT_REQUEST,...r}),this}withLoggerMiddleware(r){return this.loggerMiddleware=hr(r),this}withCorrelationIdMiddleware(r){return this.correlationIdMiddleware=cr({generate:r?.generate,...r}),this}withConcurrentModificationMiddleware(r){return this.concurrentMiddleware=fr(r?.concurrentModificationHandlerFn),this}withTelemetryMiddleware(r){let{createTelemetryMiddleware:t,...o}=r;return this.withUserAgentMiddleware({customAgent:o?.userAgent||"typescript-sdk-apm-middleware"}),this.telemetryMiddleware=t(o),this}withBeforeExecutionMiddleware(r){let{middleware:t,...o}=r||{};return this.beforeMiddleware=r.middleware(o),this}withAfterExecutionMiddleware(r){let{middleware:t,...o}=r||{};return this.afterMiddleware=r.middleware(o),this}build(){let r=this.middlewares.slice();return this.telemetryMiddleware&&r.push(this.telemetryMiddleware),this.correlationIdMiddleware&&r.push(this.correlationIdMiddleware),this.userAgentMiddleware&&r.push(this.userAgentMiddleware),this.errorMiddleware&&r.push(this.errorMiddleware),this.authMiddleware&&r.push(this.authMiddleware),this.beforeMiddleware&&r.push(this.beforeMiddleware),this.queueMiddleware&&r.push(this.queueMiddleware),this.loggerMiddleware&&r.push(this.loggerMiddleware),this.concurrentMiddleware&&r.push(this.concurrentMiddleware),this.httpMiddleware&&r.push(this.httpMiddleware),this.afterMiddleware&&r.push(this.afterMiddleware),S({middlewares:r})}};return je(yr);})();
@@ -119,8 +119,8 @@ export type TokenStore = {
119
119
  }
120
120
 
121
121
  export type TokenCache = {
122
- get: (tokenCacheOptions?: TokenCacheOptions) => TokenStore
123
- set: (cache: TokenStore, tokenCacheOptions?: TokenCacheOptions) => void
122
+ get: (tokenCacheOptions?: TokenCacheOptions) => Promise<TokenStore>
123
+ set: (cache: TokenStore, tokenCacheOptions?: TokenCacheOptions) => Promise<void>
124
124
  }
125
125
 
126
126
  export type IBuiltRequestParams = {
@@ -146,7 +146,7 @@ export type RefreshAuthMiddlewareOptions = {
146
146
  }
147
147
 
148
148
  /* Request */
149
- type requestBaseOptions = {
149
+ type RequestBaseOptions = {
150
150
  url: string
151
151
  body: string
152
152
  basicAuth: string
@@ -157,13 +157,13 @@ type requestBaseOptions = {
157
157
  httpClientOptions?: object
158
158
  }
159
159
 
160
- export type executeRequestOptions = requestBaseOptions & {
160
+ export type ExecuteRequestOptions = RequestBaseOptions & {
161
161
  next: Next
162
162
  httpClient?: Function
163
163
  userOption?: AuthMiddlewareOptions | PasswordAuthMiddlewareOptions
164
164
  }
165
165
 
166
- export type AuthMiddlewareBaseOptions = requestBaseOptions & {
166
+ export type AuthMiddlewareBaseOptions = RequestBaseOptions & {
167
167
  request: MiddlewareRequest
168
168
  httpClient?: Function
169
169
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools/ts-client",
3
- "version": "3.4.1",
3
+ "version": "4.0.0",
4
4
  "engines": {
5
5
  "node": ">=18"
6
6
  },