@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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @commercetools/ts-client
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#708](https://github.com/commercetools/commercetools-sdk-typescript/pull/708) [`e7e5ac7`](https://github.com/commercetools/commercetools-sdk-typescript/commit/e7e5ac73de07a8ce141ec0bc2b2abf492462ec73) Thanks [@lojzatran](https://github.com/lojzatran)! - Make ts-sdk-v3 consistent with v2
8
+
3
9
  ## 1.2.1
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -78,7 +78,6 @@ const client: Client = new ClientBuilder()
78
78
  .withHttpMiddleware(httpMiddlewareOptions)
79
79
  .withRetryMiddleware(retryOptions)
80
80
  .withMiddleware(middleware({})) // <<<------------------- add the custom middleware here
81
- .withErrorMiddleware({})
82
81
  .build()
83
82
 
84
83
  const apiRoot = createApiBuilderFromCtpClient(client)
@@ -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
  });
@@ -905,7 +905,7 @@ function createAuthMiddlewareForRefreshTokenFlow$1(options) {
905
905
  };
906
906
  }
907
907
 
908
- function createConcurrentModificationMiddleware$1() {
908
+ function createConcurrentModificationMiddleware$1(modifierFunction) {
909
909
  return next => {
910
910
  return async request => {
911
911
  const response = await next(request);
@@ -919,13 +919,17 @@ function createConcurrentModificationMiddleware$1() {
919
919
 
920
920
  // update the resource version here
921
921
  if (version) {
922
- request.body = typeof request.body == 'string' ? {
923
- ...JSON.parse(request.body),
924
- version
925
- } : {
926
- ...request.body,
927
- version
928
- };
922
+ if (modifierFunction) {
923
+ request.body = await modifierFunction(version, request, response);
924
+ } else {
925
+ request.body = typeof request.body == 'string' ? {
926
+ ...JSON.parse(request.body),
927
+ version
928
+ } : {
929
+ ...request.body,
930
+ version
931
+ };
932
+ }
929
933
  return next(request);
930
934
  }
931
935
  }
@@ -947,7 +951,7 @@ function createCorrelationIdMiddleware$1(options) {
947
951
  };
948
952
  }
949
953
 
950
- function createErrorMiddleware$1(options) {
954
+ function createErrorMiddleware(options) {
951
955
  return next => async request => {
952
956
  const response = await next(request);
953
957
  if (response.error) {
@@ -979,7 +983,8 @@ async function executeRequest({
979
983
  request,
980
984
  abortController,
981
985
  maskSensitiveHeaderData,
982
- includeRequestInErrorResponse
986
+ includeRequestInErrorResponse,
987
+ includeResponseHeaders
983
988
  } = clientOptions;
984
989
  try {
985
990
  if (timeout) timer = setTimeout(() => {
@@ -994,6 +999,9 @@ async function executeRequest({
994
999
  body: clientOptions.body
995
1000
  } : {})
996
1001
  });
1002
+ if (!includeResponseHeaders) {
1003
+ response.headers = null;
1004
+ }
997
1005
  if (response.statusCode >= 200 && response.statusCode < 300) {
998
1006
  if (clientOptions.method == 'HEAD') {
999
1007
  return {
@@ -1037,7 +1045,7 @@ async function executeRequest({
1037
1045
  };
1038
1046
  } catch (e) {
1039
1047
  // We know that this is a network error
1040
- const headers = getHeaders(e.response?.headers);
1048
+ const headers = includeResponseHeaders ? getHeaders(e.response?.headers) : null;
1041
1049
  const statusCode = e.response?.status || e.response?.data0 || 0;
1042
1050
  const message = e.response?.data?.message;
1043
1051
  const error = createError({
@@ -1074,7 +1082,8 @@ function createHttpMiddleware$1(options) {
1074
1082
  retryConfig,
1075
1083
  getAbortController,
1076
1084
  includeOriginalRequest,
1077
- includeRequestInErrorResponse,
1085
+ includeRequestInErrorResponse = true,
1086
+ includeResponseHeaders = true,
1078
1087
  maskSensitiveHeaderData,
1079
1088
  httpClientOptions
1080
1089
  } = options;
@@ -1110,6 +1119,7 @@ function createHttpMiddleware$1(options) {
1110
1119
  headers: requestHeader,
1111
1120
  includeRequestInErrorResponse,
1112
1121
  maskSensitiveHeaderData,
1122
+ includeResponseHeaders,
1113
1123
  ...httpClientOptions
1114
1124
  };
1115
1125
  if (credentialsMode) {
@@ -1143,43 +1153,17 @@ function createHttpMiddleware$1(options) {
1143
1153
  };
1144
1154
  }
1145
1155
 
1146
- // error, info, success
1147
1156
  function createLoggerMiddleware$1(options) {
1148
1157
  return next => {
1149
1158
  return async request => {
1150
1159
  let response = await next(request);
1151
1160
  const originalResponse = Object.assign({}, response);
1152
1161
  const {
1153
- loggerFn = console.log,
1154
- // logLevel = 'ERROR',
1155
- maskSensitiveHeaderData = true,
1156
- includeOriginalRequest = true,
1157
- includeResponseHeaders = true
1158
- // includeRequestInErrorResponse
1162
+ loggerFn = console.log
1159
1163
  } = options || {};
1160
- if (includeOriginalRequest && maskSensitiveHeaderData) {
1161
- maskAuthData(response.request);
1162
- }
1163
- if (!includeOriginalRequest) {
1164
- const {
1165
- request,
1166
- ...rest
1167
- } = response;
1168
- response = rest;
1169
- }
1170
- if (!includeResponseHeaders) {
1171
- const {
1172
- headers,
1173
- ...rest
1174
- } = response;
1175
- response = rest;
1176
- }
1177
1164
  if (loggerFn && typeof loggerFn == 'function') {
1178
1165
  loggerFn(response);
1179
- // return originalResponse
1180
1166
  }
1181
-
1182
- // console.log({ Response: response })
1183
1167
  return originalResponse;
1184
1168
  };
1185
1169
  };
@@ -1231,7 +1215,7 @@ function createQueueMiddleware$1({
1231
1215
 
1232
1216
  var packageJson = {
1233
1217
  name: "@commercetools/ts-client",
1234
- version: "1.2.1",
1218
+ version: "2.0.0",
1235
1219
  engines: {
1236
1220
  node: ">=14"
1237
1221
  },
@@ -1290,7 +1274,8 @@ var packageJson = {
1290
1274
  scripts: {
1291
1275
  organize_imports: "find src -type f -name '*.ts' | xargs organize-imports-cli",
1292
1276
  postbuild: "yarn organize_imports",
1293
- post_process_generate: "yarn organize_imports"
1277
+ post_process_generate: "yarn organize_imports",
1278
+ docs: "typedoc --out docs"
1294
1279
  }
1295
1280
  };
1296
1281
 
@@ -1298,7 +1283,7 @@ function createUserAgentMiddleware$1(options) {
1298
1283
  return next => async request => {
1299
1284
  const userAgent = createUserAgent({
1300
1285
  ...options,
1301
- name: `commercetools-sdk-javascript-v3/${packageJson.version}`
1286
+ name: `${options.name ? options.name + '/' : ''}commercetools-sdk-javascript-v3/${packageJson.version}`
1302
1287
  });
1303
1288
  const requestWithUserAgent = {
1304
1289
  ...request,
@@ -1320,7 +1305,7 @@ var middleware = /*#__PURE__*/Object.freeze({
1320
1305
  createAuthMiddlewareForRefreshTokenFlow: createAuthMiddlewareForRefreshTokenFlow$1,
1321
1306
  createConcurrentModificationMiddleware: createConcurrentModificationMiddleware$1,
1322
1307
  createCorrelationIdMiddleware: createCorrelationIdMiddleware$1,
1323
- createErrorMiddleware: createErrorMiddleware$1,
1308
+ createErrorMiddleware: createErrorMiddleware,
1324
1309
  createHttpMiddleware: createHttpMiddleware$1,
1325
1310
  createLoggerMiddleware: createLoggerMiddleware$1,
1326
1311
  createQueueMiddleware: createQueueMiddleware$1,
@@ -1486,8 +1471,7 @@ const {
1486
1471
  createLoggerMiddleware,
1487
1472
  createQueueMiddleware,
1488
1473
  createUserAgentMiddleware,
1489
- createConcurrentModificationMiddleware,
1490
- createErrorMiddleware
1474
+ createConcurrentModificationMiddleware
1491
1475
  } = middleware;
1492
1476
  class ClientBuilder {
1493
1477
  constructor() {
@@ -1499,7 +1483,9 @@ class ClientBuilder {
1499
1483
  _defineProperty(this, "loggerMiddleware", void 0);
1500
1484
  _defineProperty(this, "queueMiddleware", void 0);
1501
1485
  _defineProperty(this, "concurrentMiddleware", void 0);
1502
- _defineProperty(this, "errorMiddleware", void 0);
1486
+ _defineProperty(this, "telemetryMiddleware", void 0);
1487
+ _defineProperty(this, "beforeMiddleware", void 0);
1488
+ _defineProperty(this, "afterMiddleware", void 0);
1503
1489
  _defineProperty(this, "middlewares", []);
1504
1490
  this.userAgentMiddleware = createUserAgentMiddleware({});
1505
1491
  }
@@ -1618,30 +1604,49 @@ class ClientBuilder {
1618
1604
  });
1619
1605
  return this;
1620
1606
  }
1621
- withConcurrentModificationMiddleware() {
1622
- this.concurrentMiddleware = createConcurrentModificationMiddleware();
1607
+ withConcurrentModificationMiddleware(options) {
1608
+ this.concurrentMiddleware = createConcurrentModificationMiddleware(options?.concurrentModificationHandlerFn);
1623
1609
  return this;
1624
1610
  }
1625
- withErrorMiddleware(options) {
1626
- this.errorMiddleware = createErrorMiddleware(options);
1611
+ withTelemetryMiddleware(options) {
1612
+ const {
1613
+ createTelemetryMiddleware,
1614
+ ...rest
1615
+ } = options;
1616
+ this.withUserAgentMiddleware({
1617
+ customAgent: rest?.userAgent || 'typescript-sdk-apm-middleware'
1618
+ });
1619
+ this.telemetryMiddleware = createTelemetryMiddleware(rest);
1620
+ return this;
1621
+ }
1622
+ withBeforeExecutionMiddleware(options) {
1623
+ const {
1624
+ middleware,
1625
+ ...rest
1626
+ } = options || {};
1627
+ this.beforeMiddleware = options.middleware(rest);
1628
+ return this;
1629
+ }
1630
+ withAfterExecutionMiddleware(options) {
1631
+ const {
1632
+ middleware,
1633
+ ...rest
1634
+ } = options || {};
1635
+ this.afterMiddleware = options.middleware(rest);
1627
1636
  return this;
1628
1637
  }
1629
1638
  build() {
1630
1639
  const middlewares = this.middlewares.slice();
1631
-
1632
- /**
1633
- * - use default retry policy if not explicity added
1634
- * - add retry middleware to be used by concurrent modification
1635
- * middleware if not explicitly added as part of the middleware
1636
- */
1640
+ if (this.telemetryMiddleware) middlewares.push(this.telemetryMiddleware);
1637
1641
  if (this.correlationIdMiddleware) middlewares.push(this.correlationIdMiddleware);
1638
1642
  if (this.userAgentMiddleware) middlewares.push(this.userAgentMiddleware);
1639
1643
  if (this.authMiddleware) middlewares.push(this.authMiddleware);
1644
+ if (this.beforeMiddleware) middlewares.push(this.beforeMiddleware);
1640
1645
  if (this.queueMiddleware) middlewares.push(this.queueMiddleware);
1641
1646
  if (this.loggerMiddleware) middlewares.push(this.loggerMiddleware);
1642
- if (this.errorMiddleware) middlewares.push(this.errorMiddleware);
1643
1647
  if (this.concurrentMiddleware) middlewares.push(this.concurrentMiddleware);
1644
1648
  if (this.httpMiddleware) middlewares.push(this.httpMiddleware);
1649
+ if (this.afterMiddleware) middlewares.push(this.afterMiddleware);
1645
1650
  return createClient({
1646
1651
  middlewares
1647
1652
  });