@unchainedshop/core-delivery 3.1.11 → 4.0.0-rc.2

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.
@@ -3,10 +3,10 @@ export declare enum DeliveryProviderType {
3
3
  SHIPPING = "SHIPPING",
4
4
  PICKUP = "PICKUP"
5
5
  }
6
- export type DeliveryConfiguration = Array<{
6
+ export type DeliveryConfiguration = {
7
7
  key: string;
8
8
  value: string;
9
- }>;
9
+ }[];
10
10
  export type DeliveryProvider = {
11
11
  _id?: string;
12
12
  type: DeliveryProviderType;
@@ -1 +1 @@
1
- {"version":3,"file":"DeliveryProvidersCollection.d.ts","sourceRoot":"","sources":["../../src/db/DeliveryProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,oBAAY,oBAAoB;IAC9B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AACD,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,qBAAqB,CAAC;CACtC,GAAG,eAAe,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AACD,eAAO,MAAM,2BAA2B,GAAU,IAAI,OAAO,CAAC,EAAE,kDAc/D,CAAC"}
1
+ {"version":3,"file":"DeliveryProvidersCollection.d.ts","sourceRoot":"","sources":["../../src/db/DeliveryProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,oBAAY,oBAAoB;IAC9B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,EAAE,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,qBAAqB,CAAC;CACtC,GAAG,eAAe,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AACD,eAAO,MAAM,2BAA2B,GAAU,IAAI,OAAO,CAAC,EAAE,kDAc/D,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { DeliveryProvider } from './db/DeliveryProvidersCollection.js';
2
2
  export type FilterProviders<Order = unknown, UnchainedAPI = unknown> = (params: {
3
- providers: Array<DeliveryProvider>;
3
+ providers: DeliveryProvider[];
4
4
  order: Order;
5
- }, unchainedAPI: UnchainedAPI) => Promise<Array<DeliveryProvider>>;
5
+ }, unchainedAPI: UnchainedAPI) => Promise<DeliveryProvider[]>;
6
6
  export type DetermineDefaultProvider<Order = unknown, UnchainedAPI = unknown> = (params: {
7
- providers: Array<DeliveryProvider>;
7
+ providers: DeliveryProvider[];
8
8
  order: Order;
9
9
  }, unchainedAPI: UnchainedAPI) => Promise<DeliveryProvider>;
10
10
  export interface DeliverySettingsOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-settings.d.ts","sourceRoot":"","sources":["../src/delivery-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,MAAM,eAAe,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CACrE,MAAM,EAAE;IACN,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnC,KAAK,EAAE,KAAK,CAAC;CACd,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CAC9E,MAAM,EAAE;IACN,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnC,KAAK,EAAE,KAAK,CAAC;CACd,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/B,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACrE,wBAAwB,CAAC,EAAE,eAAe,CAAC;IAC3C,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,EAAE,eAAe,CAAC;IAC1C,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAChE;AAcD,eAAO,MAAM,gBAAgB,EAAE,gBAW9B,CAAC"}
1
+ {"version":3,"file":"delivery-settings.d.ts","sourceRoot":"","sources":["../src/delivery-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,MAAM,eAAe,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CACrE,MAAM,EAAE;IACN,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;CACd,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEjC,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CAC9E,MAAM,EAAE;IACN,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;CACd,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/B,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACrE,wBAAwB,CAAC,EAAE,eAAe,CAAC;IAC3C,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,EAAE,eAAe,CAAC;IAC1C,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAChE;AAcD,eAAO,MAAM,gBAAgB,EAAE,gBAW9B,CAAC"}
@@ -15,7 +15,8 @@ export declare const configureDeliveryModule: ({ db, options: deliveryOptions, }
15
15
  findProvider: ({ deliveryProviderId, ...query }: {
16
16
  deliveryProviderId: string;
17
17
  } & mongodb.Filter<DeliveryProvider>, options?: mongodb.FindOptions<DeliveryProvider>) => Promise<DeliveryProvider>;
18
- findProviders: (query: mongodb.Filter<DeliveryProvider>, options?: mongodb.FindOptions<DeliveryProvider>) => Promise<Array<DeliveryProvider>>;
18
+ findProviders: (query: mongodb.Filter<DeliveryProvider>, options?: mongodb.FindOptions<DeliveryProvider>) => Promise<DeliveryProvider[]>;
19
+ allProviders: () => Promise<mongodb.WithId<DeliveryProvider>[]>;
19
20
  providerExists: ({ deliveryProviderId }: {
20
21
  deliveryProviderId: string;
21
22
  }) => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"configureDeliveryModule.d.ts","sourceRoot":"","sources":["../../src/module/configureDeliveryModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA4C,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACxG,OAAO,EAA+B,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAoB,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAQpF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,iBAAiB,GAAI,WAAU,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAM;;;CAEhF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,mCAG3C,WAAW,CAAC,uBAAuB,CAAC;mBASd,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;qDASlE;QACD,kBAAkB,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAC1B,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAC9C,OAAO,CAAC,gBAAgB,CAAC;2BAQnB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAC9B,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAC7C,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;6CAKY;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,OAAO,CAAC;kBAS5E,gBAAgB,KAAG,OAAO,CAAC,gBAAgB,CAAC;kBAW5C,MAAM,OAAO,gBAAgB,KAAG,OAAO,CAAC,gBAAgB,CAAC;kBAezD,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAAC;EAczD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"configureDeliveryModule.d.ts","sourceRoot":"","sources":["../../src/module/configureDeliveryModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA4C,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACxG,OAAO,EAA+B,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAoB,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAUpF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,iBAAiB,GAAI,WAAU,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAM;;;CAEhF,CAAC;AAIF,eAAO,MAAM,uBAAuB,GAAU,mCAG3C,WAAW,CAAC,uBAAuB,CAAC;mBASd,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;qDASlE;QACD,kBAAkB,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAC1B,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAC9C,OAAO,CAAC,gBAAgB,CAAC;2BAQnB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAC9B,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC;;6CAciB;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,OAAO,CAAC;kBAS5E,gBAAgB,KAAG,OAAO,CAAC,gBAAgB,CAAC;kBAY5C,MAAM,OAAO,gBAAgB,KAAG,OAAO,CAAC,gBAAgB,CAAC;kBAgBzD,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAAC;EAezD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC"}
@@ -2,6 +2,8 @@ import { emit, registerEvents } from '@unchainedshop/events';
2
2
  import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
3
3
  import { DeliveryProvidersCollection } from '../db/DeliveryProvidersCollection.js';
4
4
  import { deliverySettings } from '../delivery-settings.js';
5
+ import pMemoize from 'p-memoize';
6
+ import ExpiryMap from 'expiry-map';
5
7
  const DELIVERY_PROVIDER_EVENTS = [
6
8
  'DELIVERY_PROVIDER_CREATE',
7
9
  'DELIVERY_PROVIDER_UPDATE',
@@ -10,6 +12,7 @@ const DELIVERY_PROVIDER_EVENTS = [
10
12
  export const buildFindSelector = ({ type } = {}) => {
11
13
  return { ...(type ? { type } : {}), deleted: null };
12
14
  };
15
+ const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
13
16
  export const configureDeliveryModule = async ({ db, options: deliveryOptions = {}, }) => {
14
17
  registerEvents(DELIVERY_PROVIDER_EVENTS);
15
18
  deliverySettings.configureSettings(deliveryOptions);
@@ -27,6 +30,11 @@ export const configureDeliveryModule = async ({ db, options: deliveryOptions = {
27
30
  const providers = DeliveryProviders.find(buildFindSelector(query), options);
28
31
  return providers.toArray();
29
32
  },
33
+ allProviders: pMemoize(async function () {
34
+ return DeliveryProviders.find({ deleted: null }, { sort: { created: 1 } }).toArray();
35
+ }, {
36
+ cache: allProvidersCache,
37
+ }),
30
38
  providerExists: async ({ deliveryProviderId }) => {
31
39
  const providerCount = await DeliveryProviders.countDocuments(generateDbFilterById(deliveryProviderId, { deleted: null }), { limit: 1 });
32
40
  return !!providerCount;
@@ -39,6 +47,7 @@ export const configureDeliveryModule = async ({ db, options: deliveryOptions = {
39
47
  ...doc,
40
48
  });
41
49
  const deliveryProvider = await DeliveryProviders.findOne({ _id: deliveryProviderId }, {});
50
+ allProvidersCache.clear();
42
51
  await emit('DELIVERY_PROVIDER_CREATE', { deliveryProvider });
43
52
  return deliveryProvider;
44
53
  },
@@ -49,6 +58,7 @@ export const configureDeliveryModule = async ({ db, options: deliveryOptions = {
49
58
  ...doc,
50
59
  },
51
60
  }, { returnDocument: 'after' });
61
+ allProvidersCache.clear();
52
62
  await emit('DELIVERY_PROVIDER_UPDATE', { deliveryProvider });
53
63
  return deliveryProvider;
54
64
  },
@@ -58,6 +68,7 @@ export const configureDeliveryModule = async ({ db, options: deliveryOptions = {
58
68
  deleted: new Date(),
59
69
  },
60
70
  }, { returnDocument: 'after' });
71
+ allProvidersCache.clear();
61
72
  await emit('DELIVERY_PROVIDER_REMOVE', { deliveryProvider });
62
73
  return deliveryProvider;
63
74
  },
@@ -1 +1 @@
1
- {"version":3,"file":"configureDeliveryModule.js","sourceRoot":"","sources":["../../src/module/configureDeliveryModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configureDeliveryModule.js","sourceRoot":"","sources":["../../src/module/configureDeliveryModule.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-delivery",
3
- "version": "3.1.11",
3
+ "version": "4.0.0-rc.2",
4
4
  "main": "lib/delivery-index.js",
5
5
  "types": "lib/delivery-index.d.ts",
6
6
  "type": "module",
@@ -31,14 +31,16 @@
31
31
  },
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "dependencies": {
34
- "@unchainedshop/events": "^3.1.7",
35
- "@unchainedshop/logger": "^3.1.7",
36
- "@unchainedshop/mongodb": "^3.1.7",
37
- "@unchainedshop/utils": "^3.1.7"
34
+ "@unchainedshop/events": "^4.0.0-rc.2",
35
+ "@unchainedshop/logger": "^4.0.0-rc.2",
36
+ "@unchainedshop/mongodb": "^4.0.0-rc.2",
37
+ "@unchainedshop/utils": "^4.0.0-rc.2",
38
+ "expiry-map": "^2.0.0",
39
+ "p-memoize": "^7.1.1"
38
40
  },
39
41
  "devDependencies": {
40
- "@types/node": "^22.13.14",
41
- "tsx": "^4.19.3",
42
- "typescript": "^5.8.2"
42
+ "@types/node": "^22.15.3",
43
+ "tsx": "^4.19.4",
44
+ "typescript": "^5.8.3"
43
45
  }
44
46
  }
@@ -4,10 +4,10 @@ export enum DeliveryProviderType {
4
4
  SHIPPING = 'SHIPPING',
5
5
  PICKUP = 'PICKUP',
6
6
  }
7
- export type DeliveryConfiguration = Array<{
7
+ export type DeliveryConfiguration = {
8
8
  key: string;
9
9
  value: string;
10
- }>;
10
+ }[];
11
11
 
12
12
  export type DeliveryProvider = {
13
13
  _id?: string;
@@ -2,15 +2,15 @@ import { DeliveryProvider } from './db/DeliveryProvidersCollection.js';
2
2
 
3
3
  export type FilterProviders<Order = unknown, UnchainedAPI = unknown> = (
4
4
  params: {
5
- providers: Array<DeliveryProvider>;
5
+ providers: DeliveryProvider[];
6
6
  order: Order;
7
7
  },
8
8
  unchainedAPI: UnchainedAPI,
9
- ) => Promise<Array<DeliveryProvider>>;
9
+ ) => Promise<DeliveryProvider[]>;
10
10
 
11
11
  export type DetermineDefaultProvider<Order = unknown, UnchainedAPI = unknown> = (
12
12
  params: {
13
- providers: Array<DeliveryProvider>;
13
+ providers: DeliveryProvider[];
14
14
  order: Order;
15
15
  },
16
16
  unchainedAPI: UnchainedAPI,
@@ -2,6 +2,8 @@ import { emit, registerEvents } from '@unchainedshop/events';
2
2
  import { mongodb, generateDbFilterById, generateDbObjectId, ModuleInput } from '@unchainedshop/mongodb';
3
3
  import { DeliveryProvidersCollection, DeliveryProvider } from '../db/DeliveryProvidersCollection.js';
4
4
  import { deliverySettings, DeliverySettingsOptions } from '../delivery-settings.js';
5
+ import pMemoize from 'p-memoize';
6
+ import ExpiryMap from 'expiry-map';
5
7
 
6
8
  const DELIVERY_PROVIDER_EVENTS: string[] = [
7
9
  'DELIVERY_PROVIDER_CREATE',
@@ -19,6 +21,8 @@ export const buildFindSelector = ({ type }: mongodb.Filter<DeliveryProvider> = {
19
21
  return { ...(type ? { type } : {}), deleted: null };
20
22
  };
21
23
 
24
+ const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
25
+
22
26
  export const configureDeliveryModule = async ({
23
27
  db,
24
28
  options: deliveryOptions = {},
@@ -54,11 +58,20 @@ export const configureDeliveryModule = async ({
54
58
  findProviders: async (
55
59
  query: mongodb.Filter<DeliveryProvider>,
56
60
  options: mongodb.FindOptions<DeliveryProvider> = { sort: { created: 1 } },
57
- ): Promise<Array<DeliveryProvider>> => {
61
+ ): Promise<DeliveryProvider[]> => {
58
62
  const providers = DeliveryProviders.find(buildFindSelector(query), options);
59
63
  return providers.toArray();
60
64
  },
61
65
 
66
+ allProviders: pMemoize(
67
+ async function () {
68
+ return DeliveryProviders.find({ deleted: null }, { sort: { created: 1 } }).toArray();
69
+ },
70
+ {
71
+ cache: allProvidersCache,
72
+ },
73
+ ),
74
+
62
75
  providerExists: async ({ deliveryProviderId }: { deliveryProviderId: string }): Promise<boolean> => {
63
76
  const providerCount = await DeliveryProviders.countDocuments(
64
77
  generateDbFilterById(deliveryProviderId, { deleted: null }),
@@ -75,6 +88,7 @@ export const configureDeliveryModule = async ({
75
88
  ...doc,
76
89
  });
77
90
  const deliveryProvider = await DeliveryProviders.findOne({ _id: deliveryProviderId }, {});
91
+ allProvidersCache.clear();
78
92
  await emit('DELIVERY_PROVIDER_CREATE', { deliveryProvider });
79
93
  return deliveryProvider;
80
94
  },
@@ -90,6 +104,7 @@ export const configureDeliveryModule = async ({
90
104
  },
91
105
  { returnDocument: 'after' },
92
106
  );
107
+ allProvidersCache.clear();
93
108
  await emit('DELIVERY_PROVIDER_UPDATE', { deliveryProvider });
94
109
  return deliveryProvider;
95
110
  },
@@ -104,6 +119,7 @@ export const configureDeliveryModule = async ({
104
119
  },
105
120
  { returnDocument: 'after' },
106
121
  );
122
+ allProvidersCache.clear();
107
123
  await emit('DELIVERY_PROVIDER_REMOVE', { deliveryProvider });
108
124
  return deliveryProvider;
109
125
  },