@labdigital/commercetools-mock 2.37.0 → 2.38.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 (130) hide show
  1. package/dist/index.cjs +211 -80
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +211 -80
  4. package/dist/index.js.map +1 -1
  5. package/package.json +10 -9
  6. package/src/ctMock.ts +10 -6
  7. package/src/helpers.ts +4 -4
  8. package/src/index.ts +2 -1
  9. package/src/lib/expandParser.ts +1 -1
  10. package/src/lib/haversine.test.ts +2 -1
  11. package/src/lib/password.ts +2 -2
  12. package/src/lib/predicateParser.ts +1 -1
  13. package/src/lib/productSearchFilter.test.ts +4 -1
  14. package/src/lib/projectionSearchFilter.ts +3 -3
  15. package/src/oauth/helpers.ts +1 -1
  16. package/src/oauth/server.test.ts +2 -1
  17. package/src/oauth/server.ts +5 -8
  18. package/src/oauth/store.ts +1 -1
  19. package/src/priceSelector.ts +1 -1
  20. package/src/product-projection-search.ts +4 -2
  21. package/src/product-search.ts +2 -2
  22. package/src/projectAPI.ts +4 -4
  23. package/src/repositories/abstract.ts +20 -3
  24. package/src/repositories/associate-role.ts +3 -3
  25. package/src/repositories/attribute-group.ts +3 -3
  26. package/src/repositories/business-unit.ts +6 -4
  27. package/src/repositories/cart/actions.ts +6 -7
  28. package/src/repositories/cart/helpers.ts +1 -1
  29. package/src/repositories/cart/index.ts +1 -1
  30. package/src/repositories/cart-discount/actions.ts +2 -5
  31. package/src/repositories/cart-discount/index.ts +1 -1
  32. package/src/repositories/category/actions.ts +4 -7
  33. package/src/repositories/category/index.ts +3 -3
  34. package/src/repositories/channel.ts +2 -2
  35. package/src/repositories/custom-object.ts +3 -6
  36. package/src/repositories/customer/actions.ts +272 -68
  37. package/src/repositories/customer/index.ts +10 -8
  38. package/src/repositories/customer-group.ts +2 -2
  39. package/src/repositories/discount-code/actions.ts +2 -5
  40. package/src/repositories/discount-code/index.ts +1 -1
  41. package/src/repositories/extension.ts +3 -3
  42. package/src/repositories/helpers.ts +4 -2
  43. package/src/repositories/index.ts +1 -1
  44. package/src/repositories/inventory-entry/actions.ts +2 -5
  45. package/src/repositories/inventory-entry/index.ts +1 -1
  46. package/src/repositories/my-customer.ts +2 -2
  47. package/src/repositories/order/actions.ts +2 -5
  48. package/src/repositories/order/index.ts +3 -6
  49. package/src/repositories/order-edit.ts +3 -2
  50. package/src/repositories/payment/actions.ts +2 -5
  51. package/src/repositories/payment/helpers.ts +6 -3
  52. package/src/repositories/payment/index.ts +3 -2
  53. package/src/repositories/product/actions.ts +2 -2
  54. package/src/repositories/product/helpers.ts +4 -4
  55. package/src/repositories/product/index.ts +3 -2
  56. package/src/repositories/product-discount.ts +3 -7
  57. package/src/repositories/product-projection.ts +2 -5
  58. package/src/repositories/product-selection.ts +3 -7
  59. package/src/repositories/product-tailoring.ts +3 -7
  60. package/src/repositories/product-type.ts +7 -11
  61. package/src/repositories/project.ts +4 -8
  62. package/src/repositories/quote-request.ts +3 -2
  63. package/src/repositories/quote.ts +3 -2
  64. package/src/repositories/review.ts +6 -3
  65. package/src/repositories/shipping-method/actions.ts +5 -6
  66. package/src/repositories/shipping-method/helpers.ts +4 -1
  67. package/src/repositories/shipping-method/index.ts +3 -6
  68. package/src/repositories/shopping-list/actions.ts +3 -6
  69. package/src/repositories/shopping-list/index.ts +4 -3
  70. package/src/repositories/staged-quote.ts +3 -2
  71. package/src/repositories/standalone-price.ts +3 -7
  72. package/src/repositories/state.ts +3 -7
  73. package/src/repositories/store.ts +3 -7
  74. package/src/repositories/subscription.ts +4 -8
  75. package/src/repositories/tax-category/actions.ts +2 -1
  76. package/src/repositories/tax-category/helpers.ts +1 -1
  77. package/src/repositories/tax-category/index.ts +3 -2
  78. package/src/repositories/type/actions.ts +2 -1
  79. package/src/repositories/type/index.ts +3 -2
  80. package/src/repositories/zone.ts +3 -7
  81. package/src/services/abstract.ts +2 -2
  82. package/src/services/associate-roles.test.ts +1 -1
  83. package/src/services/associate-roles.ts +2 -2
  84. package/src/services/attribute-group.ts +2 -2
  85. package/src/services/business-units.test.ts +1 -1
  86. package/src/services/business-units.ts +2 -2
  87. package/src/services/cart-discount.test.ts +1 -1
  88. package/src/services/cart-discount.ts +2 -2
  89. package/src/services/category.ts +2 -2
  90. package/src/services/channel.ts +2 -2
  91. package/src/services/customer-group.ts +2 -2
  92. package/src/services/customer.test.ts +422 -132
  93. package/src/services/customer.ts +4 -3
  94. package/src/services/discount-code.ts +2 -2
  95. package/src/services/extension.ts +2 -2
  96. package/src/services/index.ts +1 -1
  97. package/src/services/inventory-entry.ts +2 -2
  98. package/src/services/my-business-unit.ts +1 -1
  99. package/src/services/my-cart.ts +3 -2
  100. package/src/services/my-customer.ts +4 -3
  101. package/src/services/my-order.ts +1 -1
  102. package/src/services/my-payment.ts +2 -2
  103. package/src/services/my-shopping-list.ts +2 -2
  104. package/src/services/order.ts +2 -2
  105. package/src/services/payment.ts +2 -2
  106. package/src/services/product-discount.ts +2 -2
  107. package/src/services/product-projection.test.ts +1 -1
  108. package/src/services/product-projection.ts +2 -2
  109. package/src/services/product-selection.ts +2 -2
  110. package/src/services/product-type.ts +2 -2
  111. package/src/services/product.test.ts +1 -1
  112. package/src/services/product.ts +2 -2
  113. package/src/services/project.ts +3 -3
  114. package/src/services/reviews.ts +2 -2
  115. package/src/services/shipping-method.ts +2 -2
  116. package/src/services/shopping-list.test.ts +1 -1
  117. package/src/services/shopping-list.ts +2 -2
  118. package/src/services/standalone-price.ts +2 -2
  119. package/src/services/state.ts +2 -2
  120. package/src/services/store.ts +2 -2
  121. package/src/services/subscription.ts +2 -2
  122. package/src/services/tax-category.ts +2 -2
  123. package/src/services/type.ts +2 -2
  124. package/src/services/zone.ts +2 -2
  125. package/src/shipping.test.ts +1 -1
  126. package/src/shipping.ts +3 -3
  127. package/src/storage/abstract.ts +5 -1
  128. package/src/storage/in-memory.ts +6 -8
  129. package/src/types.ts +2 -2
  130. package/src/validate.ts +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labdigital/commercetools-mock",
3
- "version": "2.37.0",
3
+ "version": "2.38.0",
4
4
  "license": "MIT",
5
5
  "author": "Michael van Tellingen",
6
6
  "type": "module",
@@ -23,11 +23,11 @@
23
23
  "body-parser": "^1.20.2",
24
24
  "decimal.js": "10.4.3",
25
25
  "deep-equal": "^2.2.3",
26
- "express": "^4.19.2",
26
+ "express": "^4.21.1",
27
27
  "light-my-request": "^5.11.1",
28
28
  "lodash.isequal": "^4.5.0",
29
29
  "morgan": "^1.10.0",
30
- "msw": "^2.2.1",
30
+ "msw": "^2.5.0",
31
31
  "uuid": "^9.0.1",
32
32
  "zod": "^3.22.4",
33
33
  "zod-validation-error": "^3.0.2"
@@ -44,7 +44,7 @@
44
44
  "@types/express-serve-static-core": "^4.17.43",
45
45
  "@types/lodash.isequal": "^4.5.8",
46
46
  "@types/morgan": "^1.9.9",
47
- "@types/node": "^20.11.20",
47
+ "@types/node": "^20.16.14",
48
48
  "@types/qs": "^6.9.11",
49
49
  "@types/supertest": "^6.0.2",
50
50
  "@types/uuid": "^9.0.8",
@@ -52,20 +52,21 @@
52
52
  "@typescript-eslint/parser": "^7.0.2",
53
53
  "@vitest/coverage-v8": "^1.5.0",
54
54
  "esbuild": "^0.20.1",
55
- "eslint": "^8.57.0",
56
- "eslint-plugin-sort-class-members": "^1.20.0",
55
+ "eslint": "^8.57.1",
56
+ "eslint-plugin-sort-class-members": "^1.21.0",
57
57
  "eslint-plugin-unused-imports": "^3.1.0",
58
+ "fishery": "^2.2.2",
58
59
  "got": "^14.2.0",
59
60
  "husky": "^9.0.11",
60
61
  "prettier": "^3.2.5",
61
62
  "prettier-plugin-organize-imports": "^3.2.4",
62
- "prettier-plugin-packagejson": "^2.4.12",
63
+ "prettier-plugin-packagejson": "^2.5.3",
63
64
  "supertest": "^6.3.4",
64
65
  "timekeeper": "^2.3.1",
65
66
  "ts-node": "^10.9.2",
66
- "tslib": "^2.6.2",
67
+ "tslib": "^2.8.0",
67
68
  "tsup": "^8.0.2",
68
- "typescript": "^5.3.3",
69
+ "typescript": "^5.6.3",
69
70
  "vitest": "^1.5.0"
70
71
  },
71
72
  "engines": {
package/src/ctMock.ts CHANGED
@@ -1,21 +1,25 @@
1
- import express, { NextFunction, Request, Response } from "express";
1
+ import type { NextFunction, Request, Response } from "express";
2
+ import express from "express";
2
3
  import inject from "light-my-request";
3
4
  import morgan from "morgan";
4
5
  import { http, HttpResponse } from "msw";
5
- import { setupServer, SetupServer, SetupServerApi } from "msw/node";
6
+ import type { SetupServer, SetupServerApi } from "msw/node";
7
+ import { setupServer } from "msw/node";
6
8
  import { DEFAULT_API_HOSTNAME, DEFAULT_AUTH_HOSTNAME } from "./constants";
7
9
  import { CommercetoolsError } from "./exceptions";
8
10
  import { copyHeaders } from "./lib/proxy";
9
11
  import { OAuth2Server } from "./oauth/server";
10
12
  import { ProjectAPI } from "./projectAPI";
11
- import { AbstractStorage, InMemoryStorage } from "./storage";
12
- import { Services } from "./types";
13
+ import type { AbstractStorage } from "./storage";
14
+ import { InMemoryStorage } from "./storage";
15
+ import type { Services } from "./types";
13
16
 
14
17
  // Services
15
18
  import { warnDeprecation } from "./deprecation";
16
19
  import { mapHeaderType } from "./helpers";
17
- import { createRepositories, RepositoryMap } from "./repositories";
18
- import { ProjectRepository } from "./repositories/project";
20
+ import type { RepositoryMap } from "./repositories";
21
+ import { createRepositories } from "./repositories";
22
+ import type { ProjectRepository } from "./repositories/project";
19
23
  import { createServices } from "./services";
20
24
  import { ProjectService } from "./services/project";
21
25
 
package/src/helpers.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { OutgoingHttpHeaders } from "node:http";
2
- import { ParsedQs } from "qs";
1
+ import type { OutgoingHttpHeaders } from "node:http";
2
+ import type { ParsedQs } from "qs";
3
3
  import { v4 as uuidv4 } from "uuid";
4
4
 
5
5
  export const getBaseResourceProperties = () => ({
@@ -23,7 +23,7 @@ export const nestedLookup = (obj: any, path: string): any => {
23
23
 
24
24
  for (let i = 0; i < parts.length; i++) {
25
25
  const part = parts[i];
26
- if (val == undefined) {
26
+ if (val === undefined) {
27
27
  return undefined;
28
28
  }
29
29
 
@@ -36,7 +36,7 @@ export const nestedLookup = (obj: any, path: string): any => {
36
36
  export const queryParamsArray = (
37
37
  input: string | ParsedQs | string[] | ParsedQs[] | undefined,
38
38
  ): string[] | undefined => {
39
- if (input == undefined) {
39
+ if (input === undefined) {
40
40
  return undefined;
41
41
  }
42
42
 
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { CommercetoolsMock, CommercetoolsMockOptions } from "./ctMock";
1
+ import type { CommercetoolsMockOptions } from "./ctMock";
2
+ import { CommercetoolsMock } from "./ctMock";
2
3
  import { getBaseResourceProperties } from "./helpers";
3
4
 
4
5
  export {
@@ -27,7 +27,7 @@ export const parseExpandClause = (clause: string): ExpandResult => {
27
27
 
28
28
  const match = result.element.match(/\[([^\]+])]/);
29
29
  if (match) {
30
- result.index = match[1] === "*" ? "*" : parseInt(match[1], 10);
30
+ result.index = match[1] === "*" ? "*" : Number.parseInt(match[1], 10);
31
31
  result.element = result.element.substring(0, match.index);
32
32
  }
33
33
  return result;
@@ -1,5 +1,6 @@
1
1
  import { expect, test } from "vitest";
2
- import { Location, haversineDistance } from "./haversine";
2
+ import type { Location } from "./haversine";
3
+ import { haversineDistance } from "./haversine";
3
4
 
4
5
  test("haversine", () => {
5
6
  // Lab Digital
@@ -1,4 +1,4 @@
1
- import { Customer } from "@commercetools/platform-sdk";
1
+ import type { Customer } from "@commercetools/platform-sdk";
2
2
  import { v4 as uuidv4 } from "uuid";
3
3
 
4
4
  const PWRESET_SECRET = "pwreset";
@@ -31,7 +31,7 @@ export const validatePasswordResetToken = (token: string) => {
31
31
  }
32
32
 
33
33
  // Check if the token is expired
34
- if (parseInt(time) < new Date().getTime()) {
34
+ if (Number.parseInt(time) < new Date().getTime()) {
35
35
  return undefined;
36
36
  }
37
37
 
@@ -399,7 +399,7 @@ const generateMatchFunc = (predicate: string): MatchFunc => {
399
399
  const value = resolveValue(obj, left);
400
400
  const other = resolveSymbol(expr, vars);
401
401
 
402
- if (typeof value != "string") {
402
+ if (typeof value !== "string") {
403
403
  throw new PredicateError(
404
404
  `The field '${left.value}' does not support this expression.`,
405
405
  );
@@ -1,4 +1,7 @@
1
- import { ProductProjection, _SearchQuery } from "@commercetools/platform-sdk";
1
+ import type {
2
+ ProductProjection,
3
+ _SearchQuery,
4
+ } from "@commercetools/platform-sdk";
2
5
  import { describe, expect, test } from "vitest";
3
6
  import { cloneObject } from "~src/helpers";
4
7
  import { parseSearchQuery } from "./productSearchFilter";
@@ -113,12 +113,12 @@ const parseFilter = (filter: string): ExpressionSet => {
113
113
  // Convert plain symbols to a filter expression. For example
114
114
  // variants.attribute.foobar:4 where 4 is a Symbol should result
115
115
  // in a comparison
116
- if (expressions.some((expr) => expr.type == "Symbol")) {
116
+ if (expressions.some((expr) => expr.type === "Symbol")) {
117
117
  return {
118
118
  source: left as string,
119
119
  type: "FilterExpression",
120
120
  children: expressions.map((e): FilterExpression => {
121
- if (e.type != "Symbol") {
121
+ if (e.type !== "Symbol") {
122
122
  throw new Error("Invalid expression");
123
123
  }
124
124
 
@@ -245,7 +245,7 @@ const generateMatchFunc = (filter: string) => {
245
245
  // const column = lines[lines.length - 1].length
246
246
  throw new Error(`Syntax error while parsing '${filter}'.`);
247
247
  }
248
- if (result.type == "TermExpression") {
248
+ if (result.type === "TermExpression") {
249
249
  throw new Error(`Syntax error while parsing '${filter}'.`);
250
250
  }
251
251
 
@@ -1,4 +1,4 @@
1
- import { Request } from "express";
1
+ import type { Request } from "express";
2
2
 
3
3
  export const getBearerToken = (request: Request): string | undefined => {
4
4
  const authHeader = request.header("Authorization");
@@ -4,7 +4,8 @@ import { beforeEach, describe, expect, it } from "vitest";
4
4
  import { getBaseResourceProperties } from "../helpers";
5
5
  import { hashPassword } from "../lib/password";
6
6
  import { CustomerRepository } from "../repositories/customer";
7
- import { AbstractStorage, InMemoryStorage } from "../storage";
7
+ import type { AbstractStorage } from "../storage";
8
+ import { InMemoryStorage } from "../storage";
8
9
  import { OAuth2Server } from "./server";
9
10
 
10
11
  describe("OAuth2Server", () => {
@@ -1,4 +1,4 @@
1
- import { InvalidTokenError } from "@commercetools/platform-sdk";
1
+ import type { InvalidTokenError } from "@commercetools/platform-sdk";
2
2
  import auth from "basic-auth";
3
3
  import bodyParser from "body-parser";
4
4
  import express, {
@@ -6,14 +6,11 @@ import express, {
6
6
  type Request,
7
7
  type Response,
8
8
  } from "express";
9
- import {
10
- AuthError,
11
- CommercetoolsError,
12
- InvalidRequestError,
13
- } from "~src/exceptions";
9
+ import type { AuthError, InvalidRequestError } from "~src/exceptions";
10
+ import { CommercetoolsError } from "~src/exceptions";
14
11
  import { hashPassword } from "../lib/password";
15
- import { CustomerRepository } from "../repositories/customer";
16
- import { InvalidClientError, UnsupportedGrantType } from "./errors";
12
+ import type { CustomerRepository } from "../repositories/customer";
13
+ import type { InvalidClientError, UnsupportedGrantType } from "./errors";
17
14
  import { getBearerToken } from "./helpers";
18
15
  import { OAuth2Store } from "./store";
19
16
 
@@ -1,4 +1,4 @@
1
- import { randomBytes } from "crypto";
1
+ import { randomBytes } from "node:crypto";
2
2
  import { v4 as uuidv4 } from "uuid";
3
3
 
4
4
  type Token = {
@@ -31,7 +31,7 @@ export const applyPriceSelector = (
31
31
  const variants: Writable<ProductVariant>[] = [
32
32
  product.masterVariant,
33
33
  ...(product.variants ?? []),
34
- ].filter((x) => x != undefined);
34
+ ].filter((x) => x !== undefined);
35
35
 
36
36
  for (const variant of variants) {
37
37
  const scopedPrices =
@@ -11,16 +11,18 @@ import type {
11
11
  } from "@commercetools/platform-sdk";
12
12
  import { CommercetoolsError } from "./exceptions";
13
13
  import { nestedLookup } from "./helpers";
14
- import {
14
+ import type {
15
15
  FilterExpression,
16
16
  RangeExpression,
17
+ } from "./lib/projectionSearchFilter";
18
+ import {
17
19
  generateFacetFunc,
18
20
  getVariants,
19
21
  parseFilterExpression,
20
22
  resolveVariantValue,
21
23
  } from "./lib/projectionSearchFilter";
22
24
  import { applyPriceSelector } from "./priceSelector";
23
- import { AbstractStorage } from "./storage";
25
+ import type { AbstractStorage } from "./storage";
24
26
  import type { Writable } from "./types";
25
27
 
26
28
  export type ProductProjectionSearchParams = {
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  InvalidInputError,
3
3
  Product,
4
4
  ProductPagedSearchResponse,
@@ -10,7 +10,7 @@ import { CommercetoolsError } from "./exceptions";
10
10
  import { parseSearchQuery } from "./lib/productSearchFilter";
11
11
  import { validateSearchQuery } from "./lib/searchQueryTypeChecker";
12
12
  import { applyPriceSelector } from "./priceSelector";
13
- import { AbstractStorage } from "./storage";
13
+ import type { AbstractStorage } from "./storage";
14
14
 
15
15
  export class ProductSearch {
16
16
  protected _storage: AbstractStorage;
package/src/projectAPI.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { getBaseResourceProperties } from "./helpers";
2
- import { RepositoryMap } from "./repositories";
3
- import { GetParams } from "./repositories/abstract";
4
- import { AbstractStorage } from "./storage";
5
- import { ResourceMap, ResourceType } from "./types";
2
+ import type { RepositoryMap } from "./repositories";
3
+ import type { GetParams } from "./repositories/abstract";
4
+ import type { AbstractStorage } from "./storage";
5
+ import type { ResourceMap, ResourceType } from "./types";
6
6
 
7
7
  export class ProjectAPI {
8
8
  private projectKey: string;
@@ -1,5 +1,6 @@
1
1
  import type {
2
2
  BaseResource,
3
+ InvalidInputError,
3
4
  Project,
4
5
  QueryParam,
5
6
  ResourceNotFoundError,
@@ -8,8 +9,8 @@ import type {
8
9
  import deepEqual from "deep-equal";
9
10
  import { CommercetoolsError } from "~src/exceptions";
10
11
  import { cloneObject } from "../helpers";
11
- import { AbstractStorage } from "../storage";
12
- import {
12
+ import type { AbstractStorage } from "../storage";
13
+ import type {
13
14
  ResourceMap,
14
15
  ResourceType,
15
16
  ShallowWritable,
@@ -74,7 +75,7 @@ export abstract class AbstractRepository<R extends BaseResource | Project> {
74
75
 
75
76
  // If all actions succeeded we write the new version
76
77
  // to the storage.
77
- if (resource.version != updatedResource.version) {
78
+ if (resource.version !== updatedResource.version) {
78
79
  this.saveUpdate(context, version, updatedResource);
79
80
  }
80
81
 
@@ -253,6 +254,22 @@ export class AbstractUpdateHandler {
253
254
  : (resource as Project).key;
254
255
 
255
256
  for (const action of actions) {
257
+ // Validate if this action exists
258
+ // @ts-ignore
259
+ if (this[action.action] === undefined) {
260
+ console.info(`No handler for action ${action.action}`);
261
+ throw new CommercetoolsError<InvalidInputError>({
262
+ code: "InvalidInput",
263
+ message: `Invalid action ${action.action}`,
264
+ errors: [
265
+ {
266
+ code: "InvalidInput",
267
+ message: `Invalid action ${action.action}`,
268
+ },
269
+ ],
270
+ });
271
+ }
272
+
256
273
  // @ts-ignore
257
274
  const updateFunc = this[action.action].bind(this);
258
275
 
@@ -10,12 +10,12 @@ import type {
10
10
  AssociateRoleUpdateAction,
11
11
  } from "@commercetools/platform-sdk";
12
12
  import { getBaseResourceProperties } from "../helpers";
13
- import { AbstractStorage } from "../storage/abstract";
14
- import { Writable } from "../types";
13
+ import type { AbstractStorage } from "../storage/abstract";
14
+ import type { Writable } from "../types";
15
+ import type { UpdateHandlerInterface } from "./abstract";
15
16
  import {
16
17
  AbstractResourceRepository,
17
18
  AbstractUpdateHandler,
18
- UpdateHandlerInterface,
19
19
  type RepositoryContext,
20
20
  } from "./abstract";
21
21
  import { createCustomFields } from "./helpers";
@@ -8,12 +8,12 @@ import type {
8
8
  AttributeGroupUpdateAction,
9
9
  } from "@commercetools/platform-sdk";
10
10
  import { getBaseResourceProperties } from "../helpers";
11
- import { AbstractStorage } from "../storage/abstract";
12
- import { Writable } from "../types";
11
+ import type { AbstractStorage } from "../storage/abstract";
12
+ import type { Writable } from "../types";
13
+ import type { UpdateHandlerInterface } from "./abstract";
13
14
  import {
14
15
  AbstractResourceRepository,
15
16
  AbstractUpdateHandler,
16
- UpdateHandlerInterface,
17
17
  type RepositoryContext,
18
18
  } from "./abstract";
19
19
 
@@ -1,10 +1,12 @@
1
- import {
1
+ import type {
2
2
  BusinessUnitChangeApprovalRuleModeAction,
3
3
  BusinessUnitChangeAssociateModeAction,
4
4
  BusinessUnitChangeStatusAction,
5
5
  BusinessUnitUpdateAction,
6
6
  CompanyDraft,
7
7
  DivisionDraft,
8
+ } from "@commercetools/platform-sdk";
9
+ import {
8
10
  type Associate,
9
11
  type BusinessUnit,
10
12
  type BusinessUnitAddAddressAction,
@@ -20,13 +22,13 @@ import {
20
22
  type Company,
21
23
  type Division,
22
24
  } from "@commercetools/platform-sdk";
23
- import { AbstractStorage } from "~src/storage";
25
+ import type { AbstractStorage } from "~src/storage";
24
26
  import { generateRandomString, getBaseResourceProperties } from "../helpers";
25
- import { Writable } from "../types";
27
+ import type { Writable } from "../types";
28
+ import type { UpdateHandlerInterface } from "./abstract";
26
29
  import {
27
30
  AbstractResourceRepository,
28
31
  AbstractUpdateHandler,
29
- UpdateHandlerInterface,
30
32
  type RepositoryContext,
31
33
  } from "./abstract";
32
34
  import {
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  CartSetAnonymousIdAction,
3
3
  CartSetCustomerIdAction,
4
4
  CartUpdateAction,
@@ -6,6 +6,8 @@ import {
6
6
  InvalidOperationError,
7
7
  MissingTaxRateForCountryError,
8
8
  ShippingMethodDoesNotMatchCartError,
9
+ } from "@commercetools/platform-sdk";
10
+ import {
9
11
  type Address,
10
12
  type AddressDraft,
11
13
  type Cart,
@@ -36,7 +38,7 @@ import {
36
38
  type ProductPagedQueryResponse,
37
39
  type ProductVariant,
38
40
  } from "@commercetools/platform-sdk";
39
- import {
41
+ import type {
40
42
  DirectDiscount,
41
43
  TaxPortion,
42
44
  TaxedItemPrice,
@@ -46,11 +48,8 @@ import { v4 as uuidv4 } from "uuid";
46
48
  import { CommercetoolsError } from "~src/exceptions";
47
49
  import { getShippingMethodsMatchingCart } from "~src/shipping";
48
50
  import type { Writable } from "~src/types";
49
- import {
50
- AbstractUpdateHandler,
51
- UpdateHandlerInterface,
52
- type RepositoryContext,
53
- } from "../abstract";
51
+ import type { UpdateHandlerInterface } from "../abstract";
52
+ import { AbstractUpdateHandler, type RepositoryContext } from "../abstract";
54
53
  import {
55
54
  createAddress,
56
55
  createCentPrecisionMoney,
@@ -1,4 +1,4 @@
1
- import { Cart, LineItem, Price } from "@commercetools/platform-sdk";
1
+ import type { Cart, LineItem, Price } from "@commercetools/platform-sdk";
2
2
 
3
3
  export const selectPrice = ({
4
4
  prices,
@@ -10,7 +10,7 @@ import {
10
10
  import { v4 as uuidv4 } from "uuid";
11
11
  import { CommercetoolsError } from "~src/exceptions";
12
12
  import { getBaseResourceProperties } from "~src/helpers";
13
- import { AbstractStorage } from "~src/storage/abstract";
13
+ import type { AbstractStorage } from "~src/storage/abstract";
14
14
  import type { Writable } from "~src/types";
15
15
  import {
16
16
  AbstractResourceRepository,
@@ -14,11 +14,8 @@ import type {
14
14
  InvalidOperationError,
15
15
  } from "@commercetools/platform-sdk";
16
16
  import type { Writable } from "~src/types";
17
- import {
18
- AbstractUpdateHandler,
19
- UpdateHandlerInterface,
20
- type RepositoryContext,
21
- } from "../abstract";
17
+ import type { UpdateHandlerInterface } from "../abstract";
18
+ import { AbstractUpdateHandler, type RepositoryContext } from "../abstract";
22
19
 
23
20
  import { CommercetoolsError } from "~src/exceptions";
24
21
 
@@ -8,7 +8,7 @@ import type {
8
8
  CartDiscountValueRelative,
9
9
  } from "@commercetools/platform-sdk";
10
10
  import { getBaseResourceProperties } from "~src/helpers";
11
- import { AbstractStorage } from "~src/storage/abstract";
11
+ import type { AbstractStorage } from "~src/storage/abstract";
12
12
  import {
13
13
  AbstractResourceRepository,
14
14
  type RepositoryContext,
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  Asset,
3
3
  AssetDraft,
4
4
  Category,
@@ -20,12 +20,9 @@ import {
20
20
  CategoryUpdateAction,
21
21
  } from "@commercetools/platform-sdk";
22
22
  import { v4 as uuidv4 } from "uuid";
23
- import { Writable } from "~src/types";
24
- import {
25
- AbstractUpdateHandler,
26
- RepositoryContext,
27
- UpdateHandlerInterface,
28
- } from "../abstract";
23
+ import type { Writable } from "~src/types";
24
+ import type { RepositoryContext, UpdateHandlerInterface } from "../abstract";
25
+ import { AbstractUpdateHandler } from "../abstract";
29
26
  import { createCustomFields } from "../helpers";
30
27
 
31
28
  export class CategoryUpdateHandler
@@ -6,11 +6,11 @@ import type {
6
6
  import { v4 as uuidv4 } from "uuid";
7
7
  import { getBaseResourceProperties } from "~src/helpers";
8
8
  import { parseExpandClause } from "~src/lib/expandParser";
9
- import { AbstractStorage } from "~src/storage/abstract";
10
- import { Writable } from "~src/types";
9
+ import type { AbstractStorage } from "~src/storage/abstract";
10
+ import type { Writable } from "~src/types";
11
+ import type { GetParams } from "../abstract";
11
12
  import {
12
13
  AbstractResourceRepository,
13
- GetParams,
14
14
  type RepositoryContext,
15
15
  } from "../abstract";
16
16
  import { createCustomFields } from "../helpers";
@@ -11,12 +11,12 @@ import type {
11
11
  ChannelUpdateAction,
12
12
  } from "@commercetools/platform-sdk";
13
13
  import { getBaseResourceProperties } from "../helpers";
14
- import { AbstractStorage } from "../storage/abstract";
14
+ import type { AbstractStorage } from "../storage/abstract";
15
15
  import type { Writable } from "../types";
16
+ import type { UpdateHandlerInterface } from "./abstract";
16
17
  import {
17
18
  AbstractResourceRepository,
18
19
  AbstractUpdateHandler,
19
- UpdateHandlerInterface,
20
20
  type RepositoryContext,
21
21
  } from "./abstract";
22
22
  import { createAddress, createCustomFields } from "./helpers";
@@ -4,14 +4,11 @@ import type {
4
4
  InvalidOperationError,
5
5
  } from "@commercetools/platform-sdk";
6
6
  import { CommercetoolsError } from "~src/exceptions";
7
- import { AbstractStorage } from "~src/storage";
7
+ import type { AbstractStorage } from "~src/storage";
8
8
  import { cloneObject, getBaseResourceProperties } from "../helpers";
9
9
  import type { Writable } from "../types";
10
- import {
11
- AbstractResourceRepository,
12
- QueryParams,
13
- type RepositoryContext,
14
- } from "./abstract";
10
+ import type { QueryParams } from "./abstract";
11
+ import { AbstractResourceRepository, type RepositoryContext } from "./abstract";
15
12
  import { checkConcurrentModification } from "./errors";
16
13
 
17
14
  export class CustomObjectRepository extends AbstractResourceRepository<"key-value-document"> {