@commercetools/ts-client 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @commercetools/ts-client
2
2
 
3
+ ## 4.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1129](https://github.com/commercetools/commercetools-sdk-typescript/pull/1129) [`7ccd784`](https://github.com/commercetools/commercetools-sdk-typescript/commit/7ccd784e438235756545c425ddee4e2829b52fc0) Thanks [@ajimae](https://github.com/ajimae)! - Add custom `stringBodyContentTypes` to `HttpMiddlewareOptions`
8
+ Sometimes we might want to `stringify` a request body before sending it over to
9
+ server, this functionality allows the user to add custom `header` entries that
10
+ forces the request body to be `stringified` before it's sent over to the backend.
11
+
3
12
  ## 4.0.1
4
13
 
5
14
  ### Patch Changes
@@ -520,6 +520,15 @@ function validate(funcName, request, options = {
520
520
  if (!options.allowedMethods.includes(request.method)) throw new Error(`The "${funcName}" Request object requires a valid method. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);
521
521
  }
522
522
 
523
+ /**
524
+ * @param option
525
+ */
526
+ function validateStringBodyHeaderOptions(stringBodyContentTypes) {
527
+ if (!Array.isArray(stringBodyContentTypes)) {
528
+ throw new Error('`stringBodyContentTypes` option must be an array of strings');
529
+ }
530
+ }
531
+
523
532
  /**
524
533
  *
525
534
  * @param {AuthMiddlewareOptions} options
@@ -1031,7 +1040,7 @@ async function executeRequest({
1031
1040
  }
1032
1041
  }
1033
1042
  function createHttpMiddleware$1(options) {
1034
- // validate response
1043
+ // validate options
1035
1044
  validateHttpClientOptions(options);
1036
1045
  const {
1037
1046
  host,
@@ -1045,7 +1054,8 @@ function createHttpMiddleware$1(options) {
1045
1054
  includeRequestInErrorResponse = true,
1046
1055
  includeResponseHeaders = true,
1047
1056
  maskSensitiveHeaderData,
1048
- httpClientOptions
1057
+ httpClientOptions,
1058
+ stringBodyContentTypes = []
1049
1059
  } = options;
1050
1060
  return next => {
1051
1061
  return async request => {
@@ -1054,6 +1064,9 @@ function createHttpMiddleware$1(options) {
1054
1064
  ...request.headers
1055
1065
  };
1056
1066
 
1067
+ // validate custom header
1068
+ validateStringBodyHeaderOptions(stringBodyContentTypes);
1069
+
1057
1070
  // validate header
1058
1071
  if (!(Object.prototype.hasOwnProperty.call(requestHeader, 'Content-Type') || Object.prototype.hasOwnProperty.call(requestHeader, 'content-type'))) {
1059
1072
  requestHeader['Content-Type'] = 'application/json';
@@ -1065,7 +1078,7 @@ function createHttpMiddleware$1(options) {
1065
1078
  }
1066
1079
 
1067
1080
  // Ensure body is a string if content type is application/{json|graphql}
1068
- const body = HEADERS_CONTENT_TYPES.indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1081
+ const body = [...HEADERS_CONTENT_TYPES, ...stringBodyContentTypes].indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1069
1082
  if (body && (typeof body === 'string' || isBuffer(body))) {
1070
1083
  requestHeader['Content-Length'] = byteLength(body);
1071
1084
  }
@@ -1178,7 +1191,7 @@ function createQueueMiddleware$1({
1178
1191
 
1179
1192
  var packageJson = {
1180
1193
  name: "@commercetools/ts-client",
1181
- version: "4.0.1",
1194
+ version: "4.1.0",
1182
1195
  engines: {
1183
1196
  node: ">=18"
1184
1197
  },
@@ -516,6 +516,15 @@ function validate(funcName, request, options = {
516
516
  if (!options.allowedMethods.includes(request.method)) throw new Error(`The "${funcName}" Request object requires a valid method. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);
517
517
  }
518
518
 
519
+ /**
520
+ * @param option
521
+ */
522
+ function validateStringBodyHeaderOptions(stringBodyContentTypes) {
523
+ if (!Array.isArray(stringBodyContentTypes)) {
524
+ throw new Error('`stringBodyContentTypes` option must be an array of strings');
525
+ }
526
+ }
527
+
519
528
  /**
520
529
  *
521
530
  * @param {AuthMiddlewareOptions} options
@@ -1027,7 +1036,7 @@ async function executeRequest({
1027
1036
  }
1028
1037
  }
1029
1038
  function createHttpMiddleware$1(options) {
1030
- // validate response
1039
+ // validate options
1031
1040
  validateHttpClientOptions(options);
1032
1041
  const {
1033
1042
  host,
@@ -1041,7 +1050,8 @@ function createHttpMiddleware$1(options) {
1041
1050
  includeRequestInErrorResponse = true,
1042
1051
  includeResponseHeaders = true,
1043
1052
  maskSensitiveHeaderData,
1044
- httpClientOptions
1053
+ httpClientOptions,
1054
+ stringBodyContentTypes = []
1045
1055
  } = options;
1046
1056
  return next => {
1047
1057
  return async request => {
@@ -1050,6 +1060,9 @@ function createHttpMiddleware$1(options) {
1050
1060
  ...request.headers
1051
1061
  };
1052
1062
 
1063
+ // validate custom header
1064
+ validateStringBodyHeaderOptions(stringBodyContentTypes);
1065
+
1053
1066
  // validate header
1054
1067
  if (!(Object.prototype.hasOwnProperty.call(requestHeader, 'Content-Type') || Object.prototype.hasOwnProperty.call(requestHeader, 'content-type'))) {
1055
1068
  requestHeader['Content-Type'] = 'application/json';
@@ -1061,7 +1074,7 @@ function createHttpMiddleware$1(options) {
1061
1074
  }
1062
1075
 
1063
1076
  // Ensure body is a string if content type is application/{json|graphql}
1064
- const body = HEADERS_CONTENT_TYPES.indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1077
+ const body = [...HEADERS_CONTENT_TYPES, ...stringBodyContentTypes].indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1065
1078
  if (body && (typeof body === 'string' || isBuffer(body))) {
1066
1079
  requestHeader['Content-Length'] = byteLength(body);
1067
1080
  }
@@ -1174,7 +1187,7 @@ function createQueueMiddleware$1({
1174
1187
 
1175
1188
  var packageJson = {
1176
1189
  name: "@commercetools/ts-client",
1177
- version: "4.0.1",
1190
+ version: "4.1.0",
1178
1191
  engines: {
1179
1192
  node: ">=18"
1180
1193
  },
@@ -520,6 +520,15 @@ function validate(funcName, request, options = {
520
520
  if (!options.allowedMethods.includes(request.method)) throw new Error(`The "${funcName}" Request object requires a valid method. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);
521
521
  }
522
522
 
523
+ /**
524
+ * @param option
525
+ */
526
+ function validateStringBodyHeaderOptions(stringBodyContentTypes) {
527
+ if (!Array.isArray(stringBodyContentTypes)) {
528
+ throw new Error('`stringBodyContentTypes` option must be an array of strings');
529
+ }
530
+ }
531
+
523
532
  /**
524
533
  *
525
534
  * @param {AuthMiddlewareOptions} options
@@ -1031,7 +1040,7 @@ async function executeRequest({
1031
1040
  }
1032
1041
  }
1033
1042
  function createHttpMiddleware$1(options) {
1034
- // validate response
1043
+ // validate options
1035
1044
  validateHttpClientOptions(options);
1036
1045
  const {
1037
1046
  host,
@@ -1045,7 +1054,8 @@ function createHttpMiddleware$1(options) {
1045
1054
  includeRequestInErrorResponse = true,
1046
1055
  includeResponseHeaders = true,
1047
1056
  maskSensitiveHeaderData,
1048
- httpClientOptions
1057
+ httpClientOptions,
1058
+ stringBodyContentTypes = []
1049
1059
  } = options;
1050
1060
  return next => {
1051
1061
  return async request => {
@@ -1054,6 +1064,9 @@ function createHttpMiddleware$1(options) {
1054
1064
  ...request.headers
1055
1065
  };
1056
1066
 
1067
+ // validate custom header
1068
+ validateStringBodyHeaderOptions(stringBodyContentTypes);
1069
+
1057
1070
  // validate header
1058
1071
  if (!(Object.prototype.hasOwnProperty.call(requestHeader, 'Content-Type') || Object.prototype.hasOwnProperty.call(requestHeader, 'content-type'))) {
1059
1072
  requestHeader['Content-Type'] = 'application/json';
@@ -1065,7 +1078,7 @@ function createHttpMiddleware$1(options) {
1065
1078
  }
1066
1079
 
1067
1080
  // Ensure body is a string if content type is application/{json|graphql}
1068
- const body = HEADERS_CONTENT_TYPES.indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1081
+ const body = [...HEADERS_CONTENT_TYPES, ...stringBodyContentTypes].indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1069
1082
  if (body && (typeof body === 'string' || isBuffer(body))) {
1070
1083
  requestHeader['Content-Length'] = byteLength(body);
1071
1084
  }
@@ -1178,7 +1191,7 @@ function createQueueMiddleware$1({
1178
1191
 
1179
1192
  var packageJson = {
1180
1193
  name: "@commercetools/ts-client",
1181
- version: "4.0.1",
1194
+ version: "4.1.0",
1182
1195
  engines: {
1183
1196
  node: ">=18"
1184
1197
  },
@@ -520,6 +520,15 @@ function validate(funcName, request, options = {
520
520
  if (!options.allowedMethods.includes(request.method)) throw new Error(`The "${funcName}" Request object requires a valid method. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);
521
521
  }
522
522
 
523
+ /**
524
+ * @param option
525
+ */
526
+ function validateStringBodyHeaderOptions(stringBodyContentTypes) {
527
+ if (!Array.isArray(stringBodyContentTypes)) {
528
+ throw new Error('`stringBodyContentTypes` option must be an array of strings');
529
+ }
530
+ }
531
+
523
532
  /**
524
533
  *
525
534
  * @param {AuthMiddlewareOptions} options
@@ -1031,7 +1040,7 @@ async function executeRequest({
1031
1040
  }
1032
1041
  }
1033
1042
  function createHttpMiddleware$1(options) {
1034
- // validate response
1043
+ // validate options
1035
1044
  validateHttpClientOptions(options);
1036
1045
  const {
1037
1046
  host,
@@ -1045,7 +1054,8 @@ function createHttpMiddleware$1(options) {
1045
1054
  includeRequestInErrorResponse = true,
1046
1055
  includeResponseHeaders = true,
1047
1056
  maskSensitiveHeaderData,
1048
- httpClientOptions
1057
+ httpClientOptions,
1058
+ stringBodyContentTypes = []
1049
1059
  } = options;
1050
1060
  return next => {
1051
1061
  return async request => {
@@ -1054,6 +1064,9 @@ function createHttpMiddleware$1(options) {
1054
1064
  ...request.headers
1055
1065
  };
1056
1066
 
1067
+ // validate custom header
1068
+ validateStringBodyHeaderOptions(stringBodyContentTypes);
1069
+
1057
1070
  // validate header
1058
1071
  if (!(Object.prototype.hasOwnProperty.call(requestHeader, 'Content-Type') || Object.prototype.hasOwnProperty.call(requestHeader, 'content-type'))) {
1059
1072
  requestHeader['Content-Type'] = 'application/json';
@@ -1065,7 +1078,7 @@ function createHttpMiddleware$1(options) {
1065
1078
  }
1066
1079
 
1067
1080
  // Ensure body is a string if content type is application/{json|graphql}
1068
- const body = HEADERS_CONTENT_TYPES.indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1081
+ const body = [...HEADERS_CONTENT_TYPES, ...stringBodyContentTypes].indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1069
1082
  if (body && (typeof body === 'string' || isBuffer(body))) {
1070
1083
  requestHeader['Content-Length'] = byteLength(body);
1071
1084
  }
@@ -1178,7 +1191,7 @@ function createQueueMiddleware$1({
1178
1191
 
1179
1192
  var packageJson = {
1180
1193
  name: "@commercetools/ts-client",
1181
- version: "4.0.1",
1194
+ version: "4.1.0",
1182
1195
  engines: {
1183
1196
  node: ">=18"
1184
1197
  },
@@ -516,6 +516,15 @@ function validate(funcName, request, options = {
516
516
  if (!options.allowedMethods.includes(request.method)) throw new Error(`The "${funcName}" Request object requires a valid method. See https://commercetools.github.io/nodejs/sdk/Glossary.html#clientrequest`);
517
517
  }
518
518
 
519
+ /**
520
+ * @param option
521
+ */
522
+ function validateStringBodyHeaderOptions(stringBodyContentTypes) {
523
+ if (!Array.isArray(stringBodyContentTypes)) {
524
+ throw new Error('`stringBodyContentTypes` option must be an array of strings');
525
+ }
526
+ }
527
+
519
528
  /**
520
529
  *
521
530
  * @param {AuthMiddlewareOptions} options
@@ -1027,7 +1036,7 @@ async function executeRequest({
1027
1036
  }
1028
1037
  }
1029
1038
  function createHttpMiddleware$1(options) {
1030
- // validate response
1039
+ // validate options
1031
1040
  validateHttpClientOptions(options);
1032
1041
  const {
1033
1042
  host,
@@ -1041,7 +1050,8 @@ function createHttpMiddleware$1(options) {
1041
1050
  includeRequestInErrorResponse = true,
1042
1051
  includeResponseHeaders = true,
1043
1052
  maskSensitiveHeaderData,
1044
- httpClientOptions
1053
+ httpClientOptions,
1054
+ stringBodyContentTypes = []
1045
1055
  } = options;
1046
1056
  return next => {
1047
1057
  return async request => {
@@ -1050,6 +1060,9 @@ function createHttpMiddleware$1(options) {
1050
1060
  ...request.headers
1051
1061
  };
1052
1062
 
1063
+ // validate custom header
1064
+ validateStringBodyHeaderOptions(stringBodyContentTypes);
1065
+
1053
1066
  // validate header
1054
1067
  if (!(Object.prototype.hasOwnProperty.call(requestHeader, 'Content-Type') || Object.prototype.hasOwnProperty.call(requestHeader, 'content-type'))) {
1055
1068
  requestHeader['Content-Type'] = 'application/json';
@@ -1061,7 +1074,7 @@ function createHttpMiddleware$1(options) {
1061
1074
  }
1062
1075
 
1063
1076
  // Ensure body is a string if content type is application/{json|graphql}
1064
- const body = HEADERS_CONTENT_TYPES.indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1077
+ const body = [...HEADERS_CONTENT_TYPES, ...stringBodyContentTypes].indexOf(requestHeader['Content-Type']) > -1 && typeof request.body === 'string' || isBuffer(request.body) ? request.body : JSON.stringify(request.body || undefined);
1065
1078
  if (body && (typeof body === 'string' || isBuffer(body))) {
1066
1079
  requestHeader['Content-Length'] = byteLength(body);
1067
1080
  }
@@ -1174,7 +1187,7 @@ function createQueueMiddleware$1({
1174
1187
 
1175
1188
  var packageJson = {
1176
1189
  name: "@commercetools/ts-client",
1177
- version: "4.0.1",
1190
+ version: "4.1.0",
1178
1191
  engines: {
1179
1192
  node: ">=18"
1180
1193
  },
@@ -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:()=>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.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 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);})();
1
+ var window;(window||={})["@commercetools/ts-client"]=(()=>{var ce=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var Ue=Object.prototype.hasOwnProperty;var pe=(e,r)=>{for(var t in r)ce(e,t,{get:r[t],enumerable:!0})},ve=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ne(r))!Ue.call(e,i)&&i!==t&&ce(e,i,{get:()=>r[i],enumerable:!(o=Ie(r,i))||o.enumerable});return e};var je=e=>ve(ce({},"__esModule",{value:!0}),e);var Mr={};pe(Mr,{ClientBuilder:()=>$,Process:()=>ue,createAuthMiddlewareForAnonymousSessionFlow:()=>H,createAuthMiddlewareForClientCredentialsFlow:()=>B,createAuthMiddlewareForExistingTokenFlow:()=>_,createAuthMiddlewareForPasswordFlow:()=>K,createAuthMiddlewareForRefreshTokenFlow:()=>L,createClient:()=>P,createConcurrentModificationMiddleware:()=>J,createCorrelationIdMiddleware:()=>V,createErrorMiddleware:()=>G,createHttpMiddleware:()=>Y,createLoggerMiddleware:()=>W,createQueueMiddleware:()=>X,createUserAgentMiddleware:()=>Z});var be={};pe(be,{createAuthMiddlewareForAnonymousSessionFlow:()=>H,createAuthMiddlewareForClientCredentialsFlow:()=>B,createAuthMiddlewareForExistingTokenFlow:()=>_,createAuthMiddlewareForPasswordFlow:()=>K,createAuthMiddlewareForRefreshTokenFlow:()=>L,createConcurrentModificationMiddleware:()=>J,createCorrelationIdMiddleware:()=>V,createErrorMiddleware:()=>G,createHttpMiddleware:()=>Y,createLoggerMiddleware:()=>W,createQueueMiddleware:()=>X,createUserAgentMiddleware:()=>Z});function N(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:()=>Be,CTP_API_URL:()=>_e,CTP_AUTH_URL:()=>Ke,DEFAULT_HEADERS:()=>he,HEADERS_CONTENT_TYPES:()=>He});var He=["application/json","application/graphql"],Be=20,_e="https://api.europe-west1.gcp.commercetools.com",Ke="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 T(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 Te(...e){T.call(this,0,...e)}function xe(...e){T.call(this,...e)}function Le(...e){T.call(this,400,...e)}function $e(...e){T.call(this,401,...e)}function De(...e){T.call(this,403,...e)}function Qe(...e){T.call(this,404,...e)}function ze(...e){T.call(this,409,...e)}function Je(...e){T.call(this,500,...e)}function Ve(...e){T.call(this,503,...e)}function we(e){switch(e){case 0:return Te;case 400:return Le;case 401:return $e;case 403:return De;case 404:return Qe;case 409:return ze;case 500:return Je;case 503:return Ve;default:return}}function Ge({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 xe(e,o,t)}var U=Ge;function Ye(e,r){return[503,...e].includes(r?.status||r?.statusCode)}async function We(e,r){async function t(){return await e({...r,headers:{...r.headers}})}return t().catch(o=>Promise.reject(o))}async function v(e){let{url:r,httpClient:t,...o}=e;return await We(async s=>{let{enableRetry:a,retryConfig:n,timeout:d,getAbortController:c}=o,{retryCodes:l=[],maxDelay:u=1/0,maxRetries:y=3,backoff:M=!0,retryDelay:C=200,retryOnAbort:p=!0}=n||{},q,h,w=0,R;fe(l);async function E(){return t(r,{...s,...o,headers:{...o.headers},...o.body?{data:o.body}:{},withCredentials:s.credentialsMode==="include"})}function F(){let m=(c?c():null)||new AbortController;return o.abortController=m,o.signal=m.signal,m}async function I(){let m=async(re,Fe)=>{let Q={};if(d){let k=F();R=setTimeout(()=>{k.abort(),k=F()},d)}try{if(Q=await E(),Q.status>399&&Ye(re,Q))return{_response:Q,shouldRetry:!0}}catch(k){if((k.name.includes("AbortError")||k.name.includes("TimeoutError"))&&Fe)return{_response:k,shouldRetry:!0};throw k}finally{clearTimeout(R)}return{_response:Q,shouldRetry:!1}},{_response:D,shouldRetry:ee}=await m(l,p);for(;a&&ee&&w<y;){w++,await oe(te({retryCount:w,retryDelay:C,maxRetries:y,backoff:M,maxDelay:u}));let re=await m(l,p);D=re._response,ee=re.shouldRetry}return D}let f=await I();try{f.text&&typeof f.text=="function"?(q=await f.text()||JSON.stringify(f[Object.getOwnPropertySymbols(f)[1]]),h=JSON.parse(q)):h=f.data||f}catch(m){throw m}return{data:h,retryCount:w,statusCode:f.status||f.statusCode||h.statusCode,headers:f.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 Xe(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 x(e){if(!e)return null;if(e.raw&&typeof e.raw=="function")return e.raw();if(!e.forEach)return Xe(e);let r={};return e.forEach((t,o)=>r[o]=t),r}function z(e){return e!=null&&e.constructor!=null&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function S(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 A(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 b(e){let r=e;return{get:t=>r,set:(t,o)=>{r=t}}}function Ee(e){return typeof e<"u"&&e!==null}function Ze(e){return Ee(e)?typeof e=="string"?e:Object.fromEntries(Object.entries(e).filter(([r,t])=>![null,void 0,""].includes(t))):""}function er(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 rr(e){if(e=Ze(e),!e)return"";let r=new URLSearchParams(e);for(let[t,o]of Object.entries(e))Array.isArray(o)&&(r.delete(t),o.filter(Ee).forEach(i=>r.append(t,i)));return r.toString()}function ye(e,r=er){return r(e)}function se(e,r=rr){return r(e)}var tr=()=>typeof window<"u"&&window.document&&window.document.nodeType===9;function or(){if(tr())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=or(),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(!Array.isArray(e))throw new Error("`stringBodyContentTypes` option must be an array of strings")}function Re(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 Oe(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=Re(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 ke(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,y=`grant_type=password&username=${encodeURIComponent(s)}&password=${encodeURIComponent(a)}${d}`;return{basicAuth:c,url:u,body:y}}async function Ae(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 v({url:n,method:"POST",headers:{Authorization:`Basic ${c}`,"Content-Type":"application/x-www-form-urlencoded","Content-Length":N(d)},httpClient:r,httpClientOptions:t,body:d}),l.statusCode>=200&&l.statusCode<300){let{access_token:u,expires_in:y,refresh_token:M}=l?.data,C=ne(y),p={token:u,expirationTime:C,refreshToken:M};return await o.set(p,a),Promise.resolve(!0)}throw U({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=Ae(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=Ae(d),await r,r=null),t=await i.get(o),n(j(t.token,e))))}function H(e){let r=e.tokenCache||b({token:"",expirationTime:-1}),t,o=null,i=A(e);return s=>async a=>O(a,o,t,i,r,Oe,e,s)}function B(e){let r=e.tokenCache||b({token:"",expirationTime:-1}),t,o=null,i=A(e);return s=>async a=>O(a,o,t,i,r,Re,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 K(e){let r=e.tokenCache||b({token:"",expirationTime:-1}),t,o=null,i=A(e);return s=>async a=>O(a,o,t,i,r,ke,e,s)}function L(e){let r=e.tokenCache||b({token:"",tokenCacheKey:null}),t,o=null,i=A(e);return s=>async a=>O(a,o,t,i,r,de,e,s)}function J(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 V(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 G(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||x({}),body:i,error:i}}return o}}async function ir({url:e,httpClient:r,clientOptions:t}){let{request:o,maskSensitiveHeaderData:i,includeRequestInErrorResponse:s,includeResponseHeaders:a}=t;try{let n=await v({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:x(n.headers)}:{body:n.data,statusCode:n.statusCode,retryCount:n.retryCount,headers:x(n.headers)};let d=U({code:n.data?.errors?.[0].code,message:n?.data?.message||n?.message,statusCode:n.statusCode||n?.data?.statusCode,method:t.method,headers:x(n.headers),body:n.data,error:n.data,retryCount:n.retryCount,...s?{originalRequest:i?S(o):o}:{uri:o.uri}});return{...d,error:d}}catch(n){let d=a?x(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:U({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?S(o):o}:{uri:o.uri}})}}}function Y(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:y,stringBodyContentTypes:M=[]}=e;return C=>async p=>{let q=r.replace(/\/$/,"")+p.uri,h={...p.headers};Ce(M),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,...M].indexOf(h["Content-Type"])>-1&&typeof p.body=="string"||z(p.body)?p.body:JSON.stringify(p.body||void 0);w&&(typeof w=="string"||z(w))&&(h["Content-Length"]=N(w));let R={enableRetry:s,retryConfig:a,request:p,method:p.method,headers:h,includeRequestInErrorResponse:c,maskSensitiveHeaderData:u,includeResponseHeaders:l,...y};t&&(R.credentialsMode=t),i&&(R.timeout=i,R.getAbortController=n),w&&(R.body=w);let E=await ir({url:q,clientOptions:R,httpClient:o}),F={...p,includeOriginalRequest:d,maskSensitiveHeaderData:u,response:E};return C(F)}}function W(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 X({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 Se={name:"@commercetools/ts-client",version:"4.1.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 Z(e){return r=>async t=>{let o=ae({...e,name:`${e.name?e.name+"/":""}commercetools-sdk-javascript-v3/${Se.version}`}),i={...t,headers:{...t.headers,"User-Agent":o}};return r(i)}}function sr({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[M,C]=e.uri.split("?");a=M,n=C}let c={limit:20,...{...ye(n)}},l=o.total,u=!1,y=async(M,C=[])=>{let p=c.limit<l?c.limit:l,q=se({...c,limit:p}),h={sort:"id asc",withTotal:!1,...M?{where:`id > "${M}"`}:{}},w=se(h),R={...e,uri:`${a}?${w}&${q}`};try{let E=await P(Pe).execute(R),{results:F,count:I}=E?.body||{};if(!I&&u)return i(C||[]);let f=await Promise.resolve(r(E)),m;if(u=!0,o.accumulate&&(m=C.concat(f||[])),l-=I,I<c.limit||!l)return i(m||[]);let D=F[I-1],ee=D&&D.id;y(ee,m)}catch(E){s(E)}};y()})}function P(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=sr(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=S(n.originalRequest)),s(n)}catch(n){a(n)}})}}}var{createAuthMiddlewareForPasswordFlow:ar,createAuthMiddlewareForAnonymousSessionFlow:lr,createAuthMiddlewareForClientCredentialsFlow:dr,createAuthMiddlewareForRefreshTokenFlow:ur,createAuthMiddlewareForExistingTokenFlow:cr,createCorrelationIdMiddleware:pr,createHttpMiddleware:hr,createLoggerMiddleware:wr,createQueueMiddleware:fr,createUserAgentMiddleware:qe,createConcurrentModificationMiddleware:mr,createErrorMiddleware:yr}=be,$=class{projectKey;authMiddleware;httpMiddleware;userAgentMiddleware;correlationIdMiddleware;loggerMiddleware;queueMiddleware;concurrentMiddleware;telemetryMiddleware;beforeMiddleware;afterMiddleware;errorMiddleware;middlewares=[];constructor(){this.userAgentMiddleware=qe({})}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=yr(r),this}withClientCredentialsFlow(r){return this.withAuthMiddleware(dr({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(ar({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(lr({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(ur({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(cr(r,{force:t.force||!0,...t}))}withHttpMiddleware(r){return this.httpMiddleware=hr({host:r.host||g.CTP_API_URL,httpClient:r.httpClient||fetch,...r}),this}withUserAgentMiddleware(r){return this.userAgentMiddleware=qe(r),this}withQueueMiddleware(r){return this.queueMiddleware=fr({concurrency:r.concurrency||g.CONCURRENCT_REQUEST,...r}),this}withLoggerMiddleware(r){return this.loggerMiddleware=wr(r),this}withCorrelationIdMiddleware(r){return this.correlationIdMiddleware=pr({generate:r?.generate,...r}),this}withConcurrentModificationMiddleware(r){return this.concurrentMiddleware=mr(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(Mr);})();
@@ -1 +1 @@
1
- {"version":3,"file":"create-http-middleware.d.ts","sourceRoot":"../../../../src/middleware","sources":["create-http-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,qBAAqB,EAGrB,UAAU,EAMX,0BAAsB;AAqHvB,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,OAAO,EAAE,qBAAqB,GAC7B,UAAU,CA2FZ"}
1
+ {"version":3,"file":"create-http-middleware.d.ts","sourceRoot":"../../../../src/middleware","sources":["create-http-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,qBAAqB,EAGrB,UAAU,EAMX,0BAAsB;AAsHvB,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,OAAO,EAAE,qBAAqB,GAC7B,UAAU,CAgGZ"}
@@ -218,6 +218,7 @@ export type HttpMiddlewareOptions = {
218
218
  enableRetry?: boolean
219
219
  retryConfig?: RetryOptions
220
220
  httpClient?: Function
221
+ stringBodyContentTypes?: Array<string>
221
222
  httpClientOptions?: object // will be passed as a second argument to your httpClient function for configuration
222
223
  getAbortController?: () => AbortController
223
224
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools/ts-client",
3
- "version": "4.0.1",
3
+ "version": "4.1.0",
4
4
  "engines": {
5
5
  "node": ">=18"
6
6
  },