@commercetools/ts-client 1.2.1 → 2.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +0 -1
  3. package/dist/commercetools-ts-client.browser.cjs.js +62 -57
  4. package/dist/commercetools-ts-client.browser.esm.js +62 -57
  5. package/dist/commercetools-ts-client.cjs.dev.js +62 -57
  6. package/dist/commercetools-ts-client.cjs.prod.js +62 -57
  7. package/dist/commercetools-ts-client.esm.js +62 -57
  8. package/dist/declarations/src/client/builder.d.ts +9 -4
  9. package/dist/declarations/src/client/builder.d.ts.map +1 -0
  10. package/dist/declarations/src/client/client.d.ts +1 -0
  11. package/dist/declarations/src/client/client.d.ts.map +1 -0
  12. package/dist/declarations/src/client/index.d.ts +1 -0
  13. package/dist/declarations/src/client/index.d.ts.map +1 -0
  14. package/dist/declarations/src/index.d.ts +1 -0
  15. package/dist/declarations/src/index.d.ts.map +1 -0
  16. package/dist/declarations/src/middleware/auth-middleware/anonymous-session-flow.d.ts +1 -0
  17. package/dist/declarations/src/middleware/auth-middleware/anonymous-session-flow.d.ts.map +1 -0
  18. package/dist/declarations/src/middleware/auth-middleware/client-credentials-flow.d.ts +1 -0
  19. package/dist/declarations/src/middleware/auth-middleware/client-credentials-flow.d.ts.map +1 -0
  20. package/dist/declarations/src/middleware/auth-middleware/existing-token-flow.d.ts +1 -0
  21. package/dist/declarations/src/middleware/auth-middleware/existing-token-flow.d.ts.map +1 -0
  22. package/dist/declarations/src/middleware/auth-middleware/index.d.ts +1 -0
  23. package/dist/declarations/src/middleware/auth-middleware/index.d.ts.map +1 -0
  24. package/dist/declarations/src/middleware/auth-middleware/password-flow.d.ts +1 -0
  25. package/dist/declarations/src/middleware/auth-middleware/password-flow.d.ts.map +1 -0
  26. package/dist/declarations/src/middleware/auth-middleware/refresh-token-flow.d.ts +1 -0
  27. package/dist/declarations/src/middleware/auth-middleware/refresh-token-flow.d.ts.map +1 -0
  28. package/dist/declarations/src/middleware/create-concurrent-modification-middleware.d.ts +4 -2
  29. package/dist/declarations/src/middleware/create-concurrent-modification-middleware.d.ts.map +1 -0
  30. package/dist/declarations/src/middleware/create-correlation-id-middleware.d.ts +1 -0
  31. package/dist/declarations/src/middleware/create-correlation-id-middleware.d.ts.map +1 -0
  32. package/dist/declarations/src/middleware/create-error-middleware.d.ts +1 -0
  33. package/dist/declarations/src/middleware/create-error-middleware.d.ts.map +1 -0
  34. package/dist/declarations/src/middleware/create-http-middleware.d.ts +1 -0
  35. package/dist/declarations/src/middleware/create-http-middleware.d.ts.map +1 -0
  36. package/dist/declarations/src/middleware/create-logger-middleware.d.ts +1 -0
  37. package/dist/declarations/src/middleware/create-logger-middleware.d.ts.map +1 -0
  38. package/dist/declarations/src/middleware/create-queue-middleware.d.ts +1 -0
  39. package/dist/declarations/src/middleware/create-queue-middleware.d.ts.map +1 -0
  40. package/dist/declarations/src/middleware/create-user-agent-middleware.d.ts +1 -0
  41. package/dist/declarations/src/middleware/create-user-agent-middleware.d.ts.map +1 -0
  42. package/dist/declarations/src/middleware/index.d.ts +1 -0
  43. package/dist/declarations/src/middleware/index.d.ts.map +1 -0
  44. package/dist/declarations/src/types/types.d.ts +29 -12
  45. package/package.json +3 -2
@@ -914,7 +914,7 @@ function createAuthMiddlewareForRefreshTokenFlow$1(options) {
914
914
  };
915
915
  }
916
916
 
917
- function createConcurrentModificationMiddleware$1() {
917
+ function createConcurrentModificationMiddleware$1(modifierFunction) {
918
918
  return next => {
919
919
  return async request => {
920
920
  const response = await next(request);
@@ -928,13 +928,17 @@ function createConcurrentModificationMiddleware$1() {
928
928
 
929
929
  // update the resource version here
930
930
  if (version) {
931
- request.body = typeof request.body == 'string' ? {
932
- ...JSON.parse(request.body),
933
- version
934
- } : {
935
- ...request.body,
936
- version
937
- };
931
+ if (modifierFunction) {
932
+ request.body = await modifierFunction(version, request, response);
933
+ } else {
934
+ request.body = typeof request.body == 'string' ? {
935
+ ...JSON.parse(request.body),
936
+ version
937
+ } : {
938
+ ...request.body,
939
+ version
940
+ };
941
+ }
938
942
  return next(request);
939
943
  }
940
944
  }
@@ -956,7 +960,7 @@ function createCorrelationIdMiddleware$1(options) {
956
960
  };
957
961
  }
958
962
 
959
- function createErrorMiddleware$1(options) {
963
+ function createErrorMiddleware(options) {
960
964
  return next => async request => {
961
965
  const response = await next(request);
962
966
  if (response.error) {
@@ -988,7 +992,8 @@ async function executeRequest({
988
992
  request,
989
993
  abortController,
990
994
  maskSensitiveHeaderData,
991
- includeRequestInErrorResponse
995
+ includeRequestInErrorResponse,
996
+ includeResponseHeaders
992
997
  } = clientOptions;
993
998
  try {
994
999
  if (timeout) timer = setTimeout(() => {
@@ -1003,6 +1008,9 @@ async function executeRequest({
1003
1008
  body: clientOptions.body
1004
1009
  } : {})
1005
1010
  });
1011
+ if (!includeResponseHeaders) {
1012
+ response.headers = null;
1013
+ }
1006
1014
  if (response.statusCode >= 200 && response.statusCode < 300) {
1007
1015
  if (clientOptions.method == 'HEAD') {
1008
1016
  return {
@@ -1046,7 +1054,7 @@ async function executeRequest({
1046
1054
  };
1047
1055
  } catch (e) {
1048
1056
  // We know that this is a network error
1049
- const headers = getHeaders(e.response?.headers);
1057
+ const headers = includeResponseHeaders ? getHeaders(e.response?.headers) : null;
1050
1058
  const statusCode = e.response?.status || e.response?.data0 || 0;
1051
1059
  const message = e.response?.data?.message;
1052
1060
  const error = createError({
@@ -1083,7 +1091,8 @@ function createHttpMiddleware$1(options) {
1083
1091
  retryConfig,
1084
1092
  getAbortController,
1085
1093
  includeOriginalRequest,
1086
- includeRequestInErrorResponse,
1094
+ includeRequestInErrorResponse = true,
1095
+ includeResponseHeaders = true,
1087
1096
  maskSensitiveHeaderData,
1088
1097
  httpClientOptions
1089
1098
  } = options;
@@ -1119,6 +1128,7 @@ function createHttpMiddleware$1(options) {
1119
1128
  headers: requestHeader,
1120
1129
  includeRequestInErrorResponse,
1121
1130
  maskSensitiveHeaderData,
1131
+ includeResponseHeaders,
1122
1132
  ...httpClientOptions
1123
1133
  };
1124
1134
  if (credentialsMode) {
@@ -1152,43 +1162,17 @@ function createHttpMiddleware$1(options) {
1152
1162
  };
1153
1163
  }
1154
1164
 
1155
- // error, info, success
1156
1165
  function createLoggerMiddleware$1(options) {
1157
1166
  return next => {
1158
1167
  return async request => {
1159
1168
  let response = await next(request);
1160
1169
  const originalResponse = Object.assign({}, response);
1161
1170
  const {
1162
- loggerFn = console.log,
1163
- // logLevel = 'ERROR',
1164
- maskSensitiveHeaderData = true,
1165
- includeOriginalRequest = true,
1166
- includeResponseHeaders = true
1167
- // includeRequestInErrorResponse
1171
+ loggerFn = console.log
1168
1172
  } = options || {};
1169
- if (includeOriginalRequest && maskSensitiveHeaderData) {
1170
- maskAuthData(response.request);
1171
- }
1172
- if (!includeOriginalRequest) {
1173
- const {
1174
- request,
1175
- ...rest
1176
- } = response;
1177
- response = rest;
1178
- }
1179
- if (!includeResponseHeaders) {
1180
- const {
1181
- headers,
1182
- ...rest
1183
- } = response;
1184
- response = rest;
1185
- }
1186
1173
  if (loggerFn && typeof loggerFn == 'function') {
1187
1174
  loggerFn(response);
1188
- // return originalResponse
1189
1175
  }
1190
-
1191
- // console.log({ Response: response })
1192
1176
  return originalResponse;
1193
1177
  };
1194
1178
  };
@@ -1240,7 +1224,7 @@ function createQueueMiddleware$1({
1240
1224
 
1241
1225
  var packageJson = {
1242
1226
  name: "@commercetools/ts-client",
1243
- version: "1.2.1",
1227
+ version: "2.0.0",
1244
1228
  engines: {
1245
1229
  node: ">=14"
1246
1230
  },
@@ -1299,7 +1283,8 @@ var packageJson = {
1299
1283
  scripts: {
1300
1284
  organize_imports: "find src -type f -name '*.ts' | xargs organize-imports-cli",
1301
1285
  postbuild: "yarn organize_imports",
1302
- post_process_generate: "yarn organize_imports"
1286
+ post_process_generate: "yarn organize_imports",
1287
+ docs: "typedoc --out docs"
1303
1288
  }
1304
1289
  };
1305
1290
 
@@ -1307,7 +1292,7 @@ function createUserAgentMiddleware$1(options) {
1307
1292
  return next => async request => {
1308
1293
  const userAgent = createUserAgent({
1309
1294
  ...options,
1310
- name: `commercetools-sdk-javascript-v3/${packageJson.version}`
1295
+ name: `${options.name ? options.name + '/' : ''}commercetools-sdk-javascript-v3/${packageJson.version}`
1311
1296
  });
1312
1297
  const requestWithUserAgent = {
1313
1298
  ...request,
@@ -1329,7 +1314,7 @@ var middleware = /*#__PURE__*/Object.freeze({
1329
1314
  createAuthMiddlewareForRefreshTokenFlow: createAuthMiddlewareForRefreshTokenFlow$1,
1330
1315
  createConcurrentModificationMiddleware: createConcurrentModificationMiddleware$1,
1331
1316
  createCorrelationIdMiddleware: createCorrelationIdMiddleware$1,
1332
- createErrorMiddleware: createErrorMiddleware$1,
1317
+ createErrorMiddleware: createErrorMiddleware,
1333
1318
  createHttpMiddleware: createHttpMiddleware$1,
1334
1319
  createLoggerMiddleware: createLoggerMiddleware$1,
1335
1320
  createQueueMiddleware: createQueueMiddleware$1,
@@ -1495,8 +1480,7 @@ const {
1495
1480
  createLoggerMiddleware,
1496
1481
  createQueueMiddleware,
1497
1482
  createUserAgentMiddleware,
1498
- createConcurrentModificationMiddleware,
1499
- createErrorMiddleware
1483
+ createConcurrentModificationMiddleware
1500
1484
  } = middleware;
1501
1485
  class ClientBuilder {
1502
1486
  constructor() {
@@ -1508,7 +1492,9 @@ class ClientBuilder {
1508
1492
  _defineProperty(this, "loggerMiddleware", void 0);
1509
1493
  _defineProperty(this, "queueMiddleware", void 0);
1510
1494
  _defineProperty(this, "concurrentMiddleware", void 0);
1511
- _defineProperty(this, "errorMiddleware", void 0);
1495
+ _defineProperty(this, "telemetryMiddleware", void 0);
1496
+ _defineProperty(this, "beforeMiddleware", void 0);
1497
+ _defineProperty(this, "afterMiddleware", void 0);
1512
1498
  _defineProperty(this, "middlewares", []);
1513
1499
  this.userAgentMiddleware = createUserAgentMiddleware({});
1514
1500
  }
@@ -1627,30 +1613,49 @@ class ClientBuilder {
1627
1613
  });
1628
1614
  return this;
1629
1615
  }
1630
- withConcurrentModificationMiddleware() {
1631
- this.concurrentMiddleware = createConcurrentModificationMiddleware();
1616
+ withConcurrentModificationMiddleware(options) {
1617
+ this.concurrentMiddleware = createConcurrentModificationMiddleware(options?.concurrentModificationHandlerFn);
1632
1618
  return this;
1633
1619
  }
1634
- withErrorMiddleware(options) {
1635
- this.errorMiddleware = createErrorMiddleware(options);
1620
+ withTelemetryMiddleware(options) {
1621
+ const {
1622
+ createTelemetryMiddleware,
1623
+ ...rest
1624
+ } = options;
1625
+ this.withUserAgentMiddleware({
1626
+ customAgent: rest?.userAgent || 'typescript-sdk-apm-middleware'
1627
+ });
1628
+ this.telemetryMiddleware = createTelemetryMiddleware(rest);
1629
+ return this;
1630
+ }
1631
+ withBeforeExecutionMiddleware(options) {
1632
+ const {
1633
+ middleware,
1634
+ ...rest
1635
+ } = options || {};
1636
+ this.beforeMiddleware = options.middleware(rest);
1637
+ return this;
1638
+ }
1639
+ withAfterExecutionMiddleware(options) {
1640
+ const {
1641
+ middleware,
1642
+ ...rest
1643
+ } = options || {};
1644
+ this.afterMiddleware = options.middleware(rest);
1636
1645
  return this;
1637
1646
  }
1638
1647
  build() {
1639
1648
  const middlewares = this.middlewares.slice();
1640
-
1641
- /**
1642
- * - use default retry policy if not explicity added
1643
- * - add retry middleware to be used by concurrent modification
1644
- * middleware if not explicitly added as part of the middleware
1645
- */
1649
+ if (this.telemetryMiddleware) middlewares.push(this.telemetryMiddleware);
1646
1650
  if (this.correlationIdMiddleware) middlewares.push(this.correlationIdMiddleware);
1647
1651
  if (this.userAgentMiddleware) middlewares.push(this.userAgentMiddleware);
1648
1652
  if (this.authMiddleware) middlewares.push(this.authMiddleware);
1653
+ if (this.beforeMiddleware) middlewares.push(this.beforeMiddleware);
1649
1654
  if (this.queueMiddleware) middlewares.push(this.queueMiddleware);
1650
1655
  if (this.loggerMiddleware) middlewares.push(this.loggerMiddleware);
1651
- if (this.errorMiddleware) middlewares.push(this.errorMiddleware);
1652
1656
  if (this.concurrentMiddleware) middlewares.push(this.concurrentMiddleware);
1653
1657
  if (this.httpMiddleware) middlewares.push(this.httpMiddleware);
1658
+ if (this.afterMiddleware) middlewares.push(this.afterMiddleware);
1654
1659
  return createClient({
1655
1660
  middlewares
1656
1661
  });
@@ -914,7 +914,7 @@ function createAuthMiddlewareForRefreshTokenFlow$1(options) {
914
914
  };
915
915
  }
916
916
 
917
- function createConcurrentModificationMiddleware$1() {
917
+ function createConcurrentModificationMiddleware$1(modifierFunction) {
918
918
  return next => {
919
919
  return async request => {
920
920
  const response = await next(request);
@@ -928,13 +928,17 @@ function createConcurrentModificationMiddleware$1() {
928
928
 
929
929
  // update the resource version here
930
930
  if (version) {
931
- request.body = typeof request.body == 'string' ? {
932
- ...JSON.parse(request.body),
933
- version
934
- } : {
935
- ...request.body,
936
- version
937
- };
931
+ if (modifierFunction) {
932
+ request.body = await modifierFunction(version, request, response);
933
+ } else {
934
+ request.body = typeof request.body == 'string' ? {
935
+ ...JSON.parse(request.body),
936
+ version
937
+ } : {
938
+ ...request.body,
939
+ version
940
+ };
941
+ }
938
942
  return next(request);
939
943
  }
940
944
  }
@@ -956,7 +960,7 @@ function createCorrelationIdMiddleware$1(options) {
956
960
  };
957
961
  }
958
962
 
959
- function createErrorMiddleware$1(options) {
963
+ function createErrorMiddleware(options) {
960
964
  return next => async request => {
961
965
  const response = await next(request);
962
966
  if (response.error) {
@@ -988,7 +992,8 @@ async function executeRequest({
988
992
  request,
989
993
  abortController,
990
994
  maskSensitiveHeaderData,
991
- includeRequestInErrorResponse
995
+ includeRequestInErrorResponse,
996
+ includeResponseHeaders
992
997
  } = clientOptions;
993
998
  try {
994
999
  if (timeout) timer = setTimeout(() => {
@@ -1003,6 +1008,9 @@ async function executeRequest({
1003
1008
  body: clientOptions.body
1004
1009
  } : {})
1005
1010
  });
1011
+ if (!includeResponseHeaders) {
1012
+ response.headers = null;
1013
+ }
1006
1014
  if (response.statusCode >= 200 && response.statusCode < 300) {
1007
1015
  if (clientOptions.method == 'HEAD') {
1008
1016
  return {
@@ -1046,7 +1054,7 @@ async function executeRequest({
1046
1054
  };
1047
1055
  } catch (e) {
1048
1056
  // We know that this is a network error
1049
- const headers = getHeaders(e.response?.headers);
1057
+ const headers = includeResponseHeaders ? getHeaders(e.response?.headers) : null;
1050
1058
  const statusCode = e.response?.status || e.response?.data0 || 0;
1051
1059
  const message = e.response?.data?.message;
1052
1060
  const error = createError({
@@ -1083,7 +1091,8 @@ function createHttpMiddleware$1(options) {
1083
1091
  retryConfig,
1084
1092
  getAbortController,
1085
1093
  includeOriginalRequest,
1086
- includeRequestInErrorResponse,
1094
+ includeRequestInErrorResponse = true,
1095
+ includeResponseHeaders = true,
1087
1096
  maskSensitiveHeaderData,
1088
1097
  httpClientOptions
1089
1098
  } = options;
@@ -1119,6 +1128,7 @@ function createHttpMiddleware$1(options) {
1119
1128
  headers: requestHeader,
1120
1129
  includeRequestInErrorResponse,
1121
1130
  maskSensitiveHeaderData,
1131
+ includeResponseHeaders,
1122
1132
  ...httpClientOptions
1123
1133
  };
1124
1134
  if (credentialsMode) {
@@ -1152,43 +1162,17 @@ function createHttpMiddleware$1(options) {
1152
1162
  };
1153
1163
  }
1154
1164
 
1155
- // error, info, success
1156
1165
  function createLoggerMiddleware$1(options) {
1157
1166
  return next => {
1158
1167
  return async request => {
1159
1168
  let response = await next(request);
1160
1169
  const originalResponse = Object.assign({}, response);
1161
1170
  const {
1162
- loggerFn = console.log,
1163
- // logLevel = 'ERROR',
1164
- maskSensitiveHeaderData = true,
1165
- includeOriginalRequest = true,
1166
- includeResponseHeaders = true
1167
- // includeRequestInErrorResponse
1171
+ loggerFn = console.log
1168
1172
  } = options || {};
1169
- if (includeOriginalRequest && maskSensitiveHeaderData) {
1170
- maskAuthData(response.request);
1171
- }
1172
- if (!includeOriginalRequest) {
1173
- const {
1174
- request,
1175
- ...rest
1176
- } = response;
1177
- response = rest;
1178
- }
1179
- if (!includeResponseHeaders) {
1180
- const {
1181
- headers,
1182
- ...rest
1183
- } = response;
1184
- response = rest;
1185
- }
1186
1173
  if (loggerFn && typeof loggerFn == 'function') {
1187
1174
  loggerFn(response);
1188
- // return originalResponse
1189
1175
  }
1190
-
1191
- // console.log({ Response: response })
1192
1176
  return originalResponse;
1193
1177
  };
1194
1178
  };
@@ -1240,7 +1224,7 @@ function createQueueMiddleware$1({
1240
1224
 
1241
1225
  var packageJson = {
1242
1226
  name: "@commercetools/ts-client",
1243
- version: "1.2.1",
1227
+ version: "2.0.0",
1244
1228
  engines: {
1245
1229
  node: ">=14"
1246
1230
  },
@@ -1299,7 +1283,8 @@ var packageJson = {
1299
1283
  scripts: {
1300
1284
  organize_imports: "find src -type f -name '*.ts' | xargs organize-imports-cli",
1301
1285
  postbuild: "yarn organize_imports",
1302
- post_process_generate: "yarn organize_imports"
1286
+ post_process_generate: "yarn organize_imports",
1287
+ docs: "typedoc --out docs"
1303
1288
  }
1304
1289
  };
1305
1290
 
@@ -1307,7 +1292,7 @@ function createUserAgentMiddleware$1(options) {
1307
1292
  return next => async request => {
1308
1293
  const userAgent = createUserAgent({
1309
1294
  ...options,
1310
- name: `commercetools-sdk-javascript-v3/${packageJson.version}`
1295
+ name: `${options.name ? options.name + '/' : ''}commercetools-sdk-javascript-v3/${packageJson.version}`
1311
1296
  });
1312
1297
  const requestWithUserAgent = {
1313
1298
  ...request,
@@ -1329,7 +1314,7 @@ var middleware = /*#__PURE__*/Object.freeze({
1329
1314
  createAuthMiddlewareForRefreshTokenFlow: createAuthMiddlewareForRefreshTokenFlow$1,
1330
1315
  createConcurrentModificationMiddleware: createConcurrentModificationMiddleware$1,
1331
1316
  createCorrelationIdMiddleware: createCorrelationIdMiddleware$1,
1332
- createErrorMiddleware: createErrorMiddleware$1,
1317
+ createErrorMiddleware: createErrorMiddleware,
1333
1318
  createHttpMiddleware: createHttpMiddleware$1,
1334
1319
  createLoggerMiddleware: createLoggerMiddleware$1,
1335
1320
  createQueueMiddleware: createQueueMiddleware$1,
@@ -1495,8 +1480,7 @@ const {
1495
1480
  createLoggerMiddleware,
1496
1481
  createQueueMiddleware,
1497
1482
  createUserAgentMiddleware,
1498
- createConcurrentModificationMiddleware,
1499
- createErrorMiddleware
1483
+ createConcurrentModificationMiddleware
1500
1484
  } = middleware;
1501
1485
  class ClientBuilder {
1502
1486
  constructor() {
@@ -1508,7 +1492,9 @@ class ClientBuilder {
1508
1492
  _defineProperty(this, "loggerMiddleware", void 0);
1509
1493
  _defineProperty(this, "queueMiddleware", void 0);
1510
1494
  _defineProperty(this, "concurrentMiddleware", void 0);
1511
- _defineProperty(this, "errorMiddleware", void 0);
1495
+ _defineProperty(this, "telemetryMiddleware", void 0);
1496
+ _defineProperty(this, "beforeMiddleware", void 0);
1497
+ _defineProperty(this, "afterMiddleware", void 0);
1512
1498
  _defineProperty(this, "middlewares", []);
1513
1499
  this.userAgentMiddleware = createUserAgentMiddleware({});
1514
1500
  }
@@ -1627,30 +1613,49 @@ class ClientBuilder {
1627
1613
  });
1628
1614
  return this;
1629
1615
  }
1630
- withConcurrentModificationMiddleware() {
1631
- this.concurrentMiddleware = createConcurrentModificationMiddleware();
1616
+ withConcurrentModificationMiddleware(options) {
1617
+ this.concurrentMiddleware = createConcurrentModificationMiddleware(options?.concurrentModificationHandlerFn);
1632
1618
  return this;
1633
1619
  }
1634
- withErrorMiddleware(options) {
1635
- this.errorMiddleware = createErrorMiddleware(options);
1620
+ withTelemetryMiddleware(options) {
1621
+ const {
1622
+ createTelemetryMiddleware,
1623
+ ...rest
1624
+ } = options;
1625
+ this.withUserAgentMiddleware({
1626
+ customAgent: rest?.userAgent || 'typescript-sdk-apm-middleware'
1627
+ });
1628
+ this.telemetryMiddleware = createTelemetryMiddleware(rest);
1629
+ return this;
1630
+ }
1631
+ withBeforeExecutionMiddleware(options) {
1632
+ const {
1633
+ middleware,
1634
+ ...rest
1635
+ } = options || {};
1636
+ this.beforeMiddleware = options.middleware(rest);
1637
+ return this;
1638
+ }
1639
+ withAfterExecutionMiddleware(options) {
1640
+ const {
1641
+ middleware,
1642
+ ...rest
1643
+ } = options || {};
1644
+ this.afterMiddleware = options.middleware(rest);
1636
1645
  return this;
1637
1646
  }
1638
1647
  build() {
1639
1648
  const middlewares = this.middlewares.slice();
1640
-
1641
- /**
1642
- * - use default retry policy if not explicity added
1643
- * - add retry middleware to be used by concurrent modification
1644
- * middleware if not explicitly added as part of the middleware
1645
- */
1649
+ if (this.telemetryMiddleware) middlewares.push(this.telemetryMiddleware);
1646
1650
  if (this.correlationIdMiddleware) middlewares.push(this.correlationIdMiddleware);
1647
1651
  if (this.userAgentMiddleware) middlewares.push(this.userAgentMiddleware);
1648
1652
  if (this.authMiddleware) middlewares.push(this.authMiddleware);
1653
+ if (this.beforeMiddleware) middlewares.push(this.beforeMiddleware);
1649
1654
  if (this.queueMiddleware) middlewares.push(this.queueMiddleware);
1650
1655
  if (this.loggerMiddleware) middlewares.push(this.loggerMiddleware);
1651
- if (this.errorMiddleware) middlewares.push(this.errorMiddleware);
1652
1656
  if (this.concurrentMiddleware) middlewares.push(this.concurrentMiddleware);
1653
1657
  if (this.httpMiddleware) middlewares.push(this.httpMiddleware);
1658
+ if (this.afterMiddleware) middlewares.push(this.afterMiddleware);
1654
1659
  return createClient({
1655
1660
  middlewares
1656
1661
  });