@unchainedshop/core-delivery 4.3.3 → 4.4.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 (56) hide show
  1. package/README.md +88 -2
  2. package/lib/db/DeliveryProvidersCollection.d.ts +6 -6
  3. package/lib/db/DeliveryProvidersCollection.js +5 -7
  4. package/lib/delivery-index.d.ts +3 -4
  5. package/lib/delivery-index.js +3 -4
  6. package/lib/delivery-settings.d.ts +1 -2
  7. package/lib/delivery-settings.js +0 -1
  8. package/lib/module/configureDeliveryModule.d.ts +5 -6
  9. package/lib/module/configureDeliveryModule.js +3 -6
  10. package/package.json +12 -11
  11. package/lib/db/DeliveryProvidersCollection.d.ts.map +0 -1
  12. package/lib/db/DeliveryProvidersCollection.js.map +0 -1
  13. package/lib/db/DeliveryProvidersSchema.d.ts +0 -3
  14. package/lib/db/DeliveryProvidersSchema.d.ts.map +0 -1
  15. package/lib/db/DeliveryProvidersSchema.js +0 -12
  16. package/lib/db/DeliveryProvidersSchema.js.map +0 -1
  17. package/lib/delivery-index.d.ts.map +0 -1
  18. package/lib/delivery-index.js.map +0 -1
  19. package/lib/delivery-settings.d.ts.map +0 -1
  20. package/lib/delivery-settings.js.map +0 -1
  21. package/lib/director/DeliveryAdapter.d.ts +0 -3
  22. package/lib/director/DeliveryAdapter.d.ts.map +0 -1
  23. package/lib/director/DeliveryAdapter.js +0 -44
  24. package/lib/director/DeliveryAdapter.js.map +0 -1
  25. package/lib/director/DeliveryDirector.d.ts +0 -3
  26. package/lib/director/DeliveryDirector.d.ts.map +0 -1
  27. package/lib/director/DeliveryDirector.js +0 -69
  28. package/lib/director/DeliveryDirector.js.map +0 -1
  29. package/lib/director/DeliveryError.d.ts +0 -7
  30. package/lib/director/DeliveryError.d.ts.map +0 -1
  31. package/lib/director/DeliveryError.js +0 -8
  32. package/lib/director/DeliveryError.js.map +0 -1
  33. package/lib/director/DeliveryPricingAdapter.d.ts +0 -3
  34. package/lib/director/DeliveryPricingAdapter.d.ts.map +0 -1
  35. package/lib/director/DeliveryPricingAdapter.js +0 -25
  36. package/lib/director/DeliveryPricingAdapter.js.map +0 -1
  37. package/lib/director/DeliveryPricingDirector.d.ts +0 -3
  38. package/lib/director/DeliveryPricingDirector.d.ts.map +0 -1
  39. package/lib/director/DeliveryPricingDirector.js +0 -58
  40. package/lib/director/DeliveryPricingDirector.js.map +0 -1
  41. package/lib/director/DeliveryPricingSheet.d.ts +0 -4
  42. package/lib/director/DeliveryPricingSheet.d.ts.map +0 -1
  43. package/lib/director/DeliveryPricingSheet.js +0 -69
  44. package/lib/director/DeliveryPricingSheet.js.map +0 -1
  45. package/lib/director/DeliveryProviderType.d.ts +0 -5
  46. package/lib/director/DeliveryProviderType.d.ts.map +0 -1
  47. package/lib/director/DeliveryProviderType.js +0 -6
  48. package/lib/director/DeliveryProviderType.js.map +0 -1
  49. package/lib/module/configureDeliveryModule.d.ts.map +0 -1
  50. package/lib/module/configureDeliveryModule.js.map +0 -1
  51. package/src/db/DeliveryProvidersCollection.ts +0 -48
  52. package/src/delivery-index.ts +0 -3
  53. package/src/delivery-settings.ts +0 -48
  54. package/src/module/buildFindSelector.test.ts +0 -19
  55. package/src/module/configureDeliveryModule.ts +0 -139
  56. package/tsconfig.json +0 -10
package/README.md CHANGED
@@ -1,3 +1,89 @@
1
- # Delivery (Unchained Engine)
1
+ [![npm version](https://img.shields.io/npm/v/@unchainedshop/core-delivery.svg)](https://npmjs.com/package/@unchainedshop/core-delivery)
2
+ [![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](https://opensource.org/licenses/EUPL-1.2)
2
3
 
3
- This package contains business logic and database abstraction for delivery in Unchained.
4
+ # @unchainedshop/core-delivery
5
+
6
+ Delivery provider module for the Unchained Engine. Manages delivery providers, shipping methods, and delivery processing.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install @unchainedshop/core-delivery
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ ```typescript
17
+ import { configureDeliveryModule, DeliveryProviderType } from '@unchainedshop/core-delivery';
18
+
19
+ const deliveryModule = await configureDeliveryModule({ db });
20
+
21
+ // Create a delivery provider
22
+ const providerId = await deliveryModule.create({
23
+ type: DeliveryProviderType.SHIPPING,
24
+ adapterKey: 'shop.unchained.delivery.post',
25
+ });
26
+
27
+ // Find providers for a context
28
+ const providers = await deliveryModule.findSupported({
29
+ order: orderObject,
30
+ });
31
+ ```
32
+
33
+ ## API Overview
34
+
35
+ ### Module Configuration
36
+
37
+ | Export | Description |
38
+ |--------|-------------|
39
+ | `configureDeliveryModule` | Configure and return the delivery module |
40
+
41
+ ### Queries
42
+
43
+ | Method | Description |
44
+ |--------|-------------|
45
+ | `findProvider` | Find provider by ID |
46
+ | `findProviders` | Find providers with filtering |
47
+ | `count` | Count providers |
48
+ | `providerExists` | Check if provider exists |
49
+ | `findSupported` | Find providers supported for context |
50
+ | `findInterface` | Get provider interface definition |
51
+
52
+ ### Mutations
53
+
54
+ | Method | Description |
55
+ |--------|-------------|
56
+ | `create` | Create a new delivery provider |
57
+ | `update` | Update provider configuration |
58
+ | `delete` | Soft delete a provider |
59
+
60
+ ### Constants
61
+
62
+ | Export | Description |
63
+ |--------|-------------|
64
+ | `DeliveryProviderType` | Provider types (SHIPPING, PICKUP) |
65
+
66
+ ### Settings
67
+
68
+ | Export | Description |
69
+ |--------|-------------|
70
+ | `deliverySettings` | Access delivery module settings |
71
+
72
+ ### Types
73
+
74
+ | Export | Description |
75
+ |--------|-------------|
76
+ | `DeliveryProvider` | Provider document type |
77
+ | `DeliveryModule` | Module interface type |
78
+
79
+ ## Events
80
+
81
+ | Event | Description |
82
+ |-------|-------------|
83
+ | `DELIVERY_PROVIDER_CREATE` | Provider created |
84
+ | `DELIVERY_PROVIDER_UPDATE` | Provider updated |
85
+ | `DELIVERY_PROVIDER_REMOVE` | Provider deleted |
86
+
87
+ ## License
88
+
89
+ EUPL-1.2
@@ -1,8 +1,9 @@
1
- import { mongodb, TimestampFields } from '@unchainedshop/mongodb';
2
- export declare enum DeliveryProviderType {
3
- SHIPPING = "SHIPPING",
4
- PICKUP = "PICKUP"
5
- }
1
+ import { mongodb, type TimestampFields } from '@unchainedshop/mongodb';
2
+ export declare const DeliveryProviderType: {
3
+ readonly SHIPPING: "SHIPPING";
4
+ readonly PICKUP: "PICKUP";
5
+ };
6
+ export type DeliveryProviderType = (typeof DeliveryProviderType)[keyof typeof DeliveryProviderType];
6
7
  export type DeliveryConfiguration = {
7
8
  key: string;
8
9
  value: string;
@@ -29,4 +30,3 @@ export interface DeliveryLocation {
29
30
  };
30
31
  }
31
32
  export declare const DeliveryProvidersCollection: (db: mongodb.Db) => Promise<mongodb.Collection<DeliveryProvider>>;
32
- //# sourceMappingURL=DeliveryProvidersCollection.d.ts.map
@@ -1,9 +1,8 @@
1
- import { buildDbIndexes } from '@unchainedshop/mongodb';
2
- export var DeliveryProviderType;
3
- (function (DeliveryProviderType) {
4
- DeliveryProviderType["SHIPPING"] = "SHIPPING";
5
- DeliveryProviderType["PICKUP"] = "PICKUP";
6
- })(DeliveryProviderType || (DeliveryProviderType = {}));
1
+ import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
2
+ export const DeliveryProviderType = {
3
+ SHIPPING: 'SHIPPING',
4
+ PICKUP: 'PICKUP',
5
+ };
7
6
  export const DeliveryProvidersCollection = async (db) => {
8
7
  const DeliveryProviders = db.collection('delivery-providers');
9
8
  await buildDbIndexes(DeliveryProviders, [
@@ -17,4 +16,3 @@ export const DeliveryProvidersCollection = async (db) => {
17
16
  ]);
18
17
  return DeliveryProviders;
19
18
  };
20
- //# sourceMappingURL=DeliveryProvidersCollection.js.map
@@ -1,4 +1,3 @@
1
- export * from './module/configureDeliveryModule.js';
2
- export * from './db/DeliveryProvidersCollection.js';
3
- export * from './delivery-settings.js';
4
- //# sourceMappingURL=delivery-index.d.ts.map
1
+ export * from './module/configureDeliveryModule.ts';
2
+ export * from './db/DeliveryProvidersCollection.ts';
3
+ export * from './delivery-settings.ts';
@@ -1,4 +1,3 @@
1
- export * from './module/configureDeliveryModule.js';
2
- export * from './db/DeliveryProvidersCollection.js';
3
- export * from './delivery-settings.js';
4
- //# sourceMappingURL=delivery-index.js.map
1
+ export * from "./module/configureDeliveryModule.js";
2
+ export * from "./db/DeliveryProvidersCollection.js";
3
+ export * from "./delivery-settings.js";
@@ -1,4 +1,4 @@
1
- import { DeliveryProvider } from './db/DeliveryProvidersCollection.js';
1
+ import type { DeliveryProvider } from './db/DeliveryProvidersCollection.ts';
2
2
  export type FilterProviders<Order = unknown, UnchainedAPI = unknown> = (params: {
3
3
  providers: DeliveryProvider[];
4
4
  order: Order;
@@ -14,4 +14,3 @@ export interface DeliverySettings {
14
14
  configureSettings: (options?: DeliverySettingsOptions) => void;
15
15
  }
16
16
  export declare const deliverySettings: DeliverySettings;
17
- //# sourceMappingURL=delivery-settings.d.ts.map
@@ -15,4 +15,3 @@ export const deliverySettings = {
15
15
  deliverySettings.determineDefaultProvider = determineDefaultProvider;
16
16
  },
17
17
  };
18
- //# sourceMappingURL=delivery-settings.js.map
@@ -1,6 +1,6 @@
1
- import { mongodb, ModuleInput } from '@unchainedshop/mongodb';
2
- import { DeliveryProvider } from '../db/DeliveryProvidersCollection.js';
3
- import { DeliverySettingsOptions } from '../delivery-settings.js';
1
+ import { mongodb, type ModuleInput } from '@unchainedshop/mongodb';
2
+ import { type DeliveryProvider } from '../db/DeliveryProvidersCollection.ts';
3
+ import { type DeliverySettingsOptions } from '../delivery-settings.ts';
4
4
  export interface DeliveryInterface {
5
5
  _id: string;
6
6
  label: string;
@@ -9,11 +9,11 @@ export interface DeliveryInterface {
9
9
  export declare const buildFindSelector: ({ includeDeleted, ...rest }?: mongodb.Filter<DeliveryProvider> & {
10
10
  includeDeleted?: boolean;
11
11
  }) => {
12
- type?: mongodb.Condition<import("../db/DeliveryProvidersCollection.js").DeliveryProviderType> | undefined;
12
+ type?: mongodb.Condition<import("../db/DeliveryProvidersCollection.ts").DeliveryProviderType> | undefined;
13
13
  created?: mongodb.Condition<Date> | undefined;
14
14
  deleted?: Date | mongodb.FilterOperators<Date | null | undefined> | null | undefined;
15
15
  adapterKey?: mongodb.Condition<string> | undefined;
16
- configuration?: mongodb.Condition<import("../db/DeliveryProvidersCollection.js").DeliveryConfiguration> | undefined;
16
+ configuration?: mongodb.Condition<import("../db/DeliveryProvidersCollection.ts").DeliveryConfiguration> | undefined;
17
17
  updated?: mongodb.Condition<Date | undefined>;
18
18
  _id?: mongodb.Condition<string> | undefined;
19
19
  $and?: mongodb.Filter<mongodb.WithId<DeliveryProvider>>[] | undefined;
@@ -45,4 +45,3 @@ export declare const configureDeliveryModule: ({ db, options: deliveryOptions, }
45
45
  delete: (_id: string) => Promise<mongodb.WithId<DeliveryProvider> | null>;
46
46
  }>;
47
47
  export type DeliveryModule = Awaited<ReturnType<typeof configureDeliveryModule>>;
48
- //# sourceMappingURL=configureDeliveryModule.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { emit, registerEvents } from '@unchainedshop/events';
2
- import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
3
- import { DeliveryProvidersCollection } from '../db/DeliveryProvidersCollection.js';
4
- import { deliverySettings } from '../delivery-settings.js';
2
+ import { mongodb, generateDbFilterById, generateDbObjectId, } from '@unchainedshop/mongodb';
3
+ import { DeliveryProvidersCollection, } from "../db/DeliveryProvidersCollection.js";
4
+ import { deliverySettings } from "../delivery-settings.js";
5
5
  import pMemoize from 'p-memoize';
6
6
  import ExpiryMap from 'expiry-map';
7
7
  const DELIVERY_PROVIDER_EVENTS = [
@@ -18,7 +18,6 @@ export const configureDeliveryModule = async ({ db, options: deliveryOptions = {
18
18
  deliverySettings.configureSettings(deliveryOptions);
19
19
  const DeliveryProviders = await DeliveryProvidersCollection(db);
20
20
  return {
21
- // Queries
22
21
  count: async (query) => {
23
22
  const providerCount = await DeliveryProviders.countDocuments(buildFindSelector(query));
24
23
  return providerCount;
@@ -39,7 +38,6 @@ export const configureDeliveryModule = async ({ db, options: deliveryOptions = {
39
38
  const providerCount = await DeliveryProviders.countDocuments(generateDbFilterById(deliveryProviderId, { deleted: null }), { limit: 1 });
40
39
  return !!providerCount;
41
40
  },
42
- // Mutations
43
41
  create: async (doc) => {
44
42
  const { insertedId: deliveryProviderId } = await DeliveryProviders.insertOne({
45
43
  _id: generateDbObjectId(),
@@ -78,4 +76,3 @@ export const configureDeliveryModule = async ({ db, options: deliveryOptions = {
78
76
  },
79
77
  };
80
78
  };
81
- //# sourceMappingURL=configureDeliveryModule.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-delivery",
3
- "version": "4.3.3",
3
+ "version": "4.4.0",
4
4
  "main": "lib/delivery-index.js",
5
5
  "types": "lib/delivery-index.d.ts",
6
6
  "type": "module",
@@ -9,8 +9,8 @@
9
9
  "build": "tsc -b",
10
10
  "prepublishOnly": "npm run clean && npm run build",
11
11
  "watch": "tsc -w",
12
- "test": "tsx --test",
13
- "test:watch": "tsx --test --watch"
12
+ "test": "node --test",
13
+ "test:watch": "node --test --watch"
14
14
  },
15
15
  "repository": {
16
16
  "type": "git",
@@ -22,8 +22,10 @@
22
22
  "core"
23
23
  ],
24
24
  "authors": [
25
- "Joël Meiller",
26
- "Pascal Kaufmann"
25
+ "Pascal Kaufmann",
26
+ "Mikael Araya",
27
+ "Vedran Rudelj",
28
+ "Joël Meiller"
27
29
  ],
28
30
  "license": "EUPL-1.2",
29
31
  "bugs": {
@@ -31,16 +33,15 @@
31
33
  },
32
34
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
35
  "dependencies": {
34
- "@unchainedshop/events": "^4.3.0",
35
- "@unchainedshop/logger": "^4.3.0",
36
- "@unchainedshop/mongodb": "^4.3.0",
37
- "@unchainedshop/utils": "^4.3.0",
36
+ "@unchainedshop/events": "^4.4.0",
37
+ "@unchainedshop/logger": "^4.4.0",
38
+ "@unchainedshop/mongodb": "^4.4.0",
39
+ "@unchainedshop/utils": "^4.4.0",
38
40
  "expiry-map": "^2.0.0",
39
41
  "p-memoize": "^8.0.0"
40
42
  },
41
43
  "devDependencies": {
42
- "@types/node": "^24.0.13",
43
- "tsx": "^4.20.3",
44
+ "@types/node": "^25.0.0",
44
45
  "typescript": "^5.8.3"
45
46
  }
46
47
  }
@@ -1 +0,0 @@
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,EAAE,MAAM,CAAC;IACZ,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 +0,0 @@
1
- {"version":3,"file":"DeliveryProvidersCollection.js","sourceRoot":"","sources":["../../src/db/DeliveryProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAmB,MAAM,wBAAwB,CAAC;AAElF,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AA4BD,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAAE,EAAc,EAAE,EAAE;IAClE,MAAM,iBAAiB,GAAG,EAAE,CAAC,UAAU,CAAmB,oBAAoB,CAAC,CAAC;IAEhF,MAAM,cAAc,CAAmB,iBAAiB,EAAE;QACxD,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACtB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QACzB;YACE,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC;aACX;SACF;KACF,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import SimpleSchema from 'simpl-schema';
2
- export declare const DeliveryProvidersSchema: SimpleSchema;
3
- //# sourceMappingURL=DeliveryProvidersSchema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryProvidersSchema.d.ts","sourceRoot":"","sources":["../../src/db/DeliveryProvidersSchema.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,uBAAuB,cAWnC,CAAC"}
@@ -1,12 +0,0 @@
1
- import { Schemas } from '@unchainedshop/utils';
2
- import SimpleSchema from 'simpl-schema';
3
- export const DeliveryProvidersSchema = new SimpleSchema({
4
- type: { type: String, required: true },
5
- adapterKey: { type: String, required: true },
6
- configuration: { type: Array },
7
- 'configuration.$': { type: Object },
8
- 'configuration.$.key': { type: String },
9
- 'configuration.$.value': { type: String },
10
- ...Schemas.timestampFields,
11
- }, { requiredByDefault: false });
12
- //# sourceMappingURL=DeliveryProvidersSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryProvidersSchema.js","sourceRoot":"","sources":["../../src/db/DeliveryProvidersSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,YAAY,CACrD;IACE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9B,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACnC,qBAAqB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACvC,uBAAuB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACzC,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery-index.d.ts","sourceRoot":"","sources":["../src/delivery-index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery-index.js","sourceRoot":"","sources":["../src/delivery-index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC"}
@@ -1 +0,0 @@
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,GAAG,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAE3F,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,gBAU9B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery-settings.js","sourceRoot":"","sources":["../src/delivery-settings.ts"],"names":[],"mappings":"AAyBA,MAAM,kBAAkB,GAAG,CAAC,IAAsB,EAAE,KAAuB,EAAE,EAAE;IAC7E,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,YAAY,GAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC5D,OAAO,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAA6B,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC/E,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,wBAAwB,EAAE,YAAY;IACtC,wBAAwB,EAAE,sBAAsB;IAChD,iBAAiB,CAAC,EAChB,wBAAwB,GAAG,YAAY,EACvC,wBAAwB,GAAG,sBAAsB,GAClD,GAAG,EAAE;QACJ,gBAAgB,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACrE,gBAAgB,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IACvE,CAAC;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import { IDeliveryAdapter } from '@unchainedshop/types/delivery.js';
2
- export declare const DeliveryAdapter: Omit<IDeliveryAdapter, 'key' | 'label' | 'version'>;
3
- //# sourceMappingURL=DeliveryAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryAdapter.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CAmD/E,CAAC"}
@@ -1,44 +0,0 @@
1
- import { log, LogLevel } from '@unchainedshop/logger';
2
- import { DeliveryError } from './DeliveryError.js';
3
- export const DeliveryAdapter = {
4
- initialConfiguration: [],
5
- typeSupported: () => {
6
- return false;
7
- },
8
- actions: () => {
9
- return {
10
- configurationError: () => {
11
- return DeliveryError.NOT_IMPLEMENTED;
12
- },
13
- estimatedDeliveryThroughput: async () => {
14
- return 0;
15
- },
16
- isActive: () => {
17
- return false;
18
- },
19
- isAutoReleaseAllowed: () => {
20
- // if you return false here,
21
- // the order will need manual confirmation before
22
- // unchained will try to invoke send()
23
- return true;
24
- },
25
- send: async () => {
26
- // if you return true, the status will be changed to DELIVERED
27
- // if you return false, the order delivery status stays the
28
- // same but the order status might change
29
- // if you throw an error, you cancel the whole checkout process
30
- return false;
31
- },
32
- pickUpLocationById: async () => {
33
- return null;
34
- },
35
- pickUpLocations: async () => {
36
- return [];
37
- },
38
- };
39
- },
40
- log: (message, { level = LogLevel.Debug, ...options } = {}) => {
41
- return log(message, { level, ...options });
42
- },
43
- };
44
- //# sourceMappingURL=DeliveryAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryAdapter.js","sourceRoot":"","sources":["../../src/director/DeliveryAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAwD;IAClF,oBAAoB,EAAE,EAAE;IAExB,aAAa,EAAE,GAAG,EAAE;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO;YACL,kBAAkB,EAAE,GAAG,EAAE;gBACvB,OAAO,aAAa,CAAC,eAAe,CAAC;YACvC,CAAC;YAED,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACtC,OAAO,CAAC,CAAC;YACX,CAAC;YAED,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,KAAK,CAAC;YACf,CAAC;YAED,oBAAoB,EAAE,GAAG,EAAE;gBACzB,4BAA4B;gBAC5B,iDAAiD;gBACjD,sCAAsC;gBACtC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,8DAA8D;gBAE9D,2DAA2D;gBAC3D,yCAAyC;gBAEzC,+DAA+D;gBAC/D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,kBAAkB,EAAE,KAAK,IAAI,EAAE;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC;IACJ,CAAC;IAED,GAAG,EAAE,CAAC,OAAe,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;QACpE,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import { IDeliveryDirector } from '@unchainedshop/types/delivery.js';
2
- export declare const DeliveryDirector: IDeliveryDirector;
3
- //# sourceMappingURL=DeliveryDirector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryDirector.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAOvF,eAAO,MAAM,gBAAgB,EAAE,iBAoE9B,CAAC"}
@@ -1,69 +0,0 @@
1
- import { log, LogLevel } from '@unchainedshop/logger';
2
- import { BaseDirector } from '@unchainedshop/utils';
3
- import { DeliveryError } from './DeliveryError.js';
4
- const baseDirector = BaseDirector('DeliveryDirector');
5
- export const DeliveryDirector = {
6
- ...baseDirector,
7
- actions: async (deliveryProvider, deliveryContext, unchainedAPI) => {
8
- const Adapter = baseDirector.getAdapter(deliveryProvider.adapterKey);
9
- const context = { ...deliveryContext, ...unchainedAPI };
10
- const adapter = Adapter.actions(deliveryProvider.configuration, context);
11
- return {
12
- configurationError: () => {
13
- try {
14
- return adapter.configurationError();
15
- }
16
- catch {
17
- return DeliveryError.ADAPTER_NOT_FOUND;
18
- }
19
- },
20
- estimatedDeliveryThroughput: async (warehousingThroughputTime) => {
21
- try {
22
- const throughput = await adapter.estimatedDeliveryThroughput(warehousingThroughputTime);
23
- return throughput;
24
- }
25
- catch (error) {
26
- log('Delivery Director -> Error while estimating delivery throughput', {
27
- level: LogLevel.Warning,
28
- ...error,
29
- });
30
- return null;
31
- }
32
- },
33
- isActive: () => {
34
- try {
35
- return adapter.isActive();
36
- }
37
- catch (error) {
38
- log('Delivery Director -> Error while checking if is active', {
39
- level: LogLevel.Warning,
40
- ...error,
41
- });
42
- return false;
43
- }
44
- },
45
- isAutoReleaseAllowed: () => {
46
- try {
47
- return adapter.isAutoReleaseAllowed();
48
- }
49
- catch (error) {
50
- log('Delivery Director -> Error while checking if auto release is allowed', {
51
- level: LogLevel.Warning,
52
- ...error,
53
- });
54
- return false;
55
- }
56
- },
57
- send: async () => {
58
- return adapter.send();
59
- },
60
- pickUpLocationById: async (locationId) => {
61
- return adapter.pickUpLocationById(locationId);
62
- },
63
- pickUpLocations: async () => {
64
- return adapter.pickUpLocations();
65
- },
66
- };
67
- },
68
- };
69
- //# sourceMappingURL=DeliveryDirector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryDirector.js","sourceRoot":"","sources":["../../src/director/DeliveryDirector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,YAAY,GAAG,YAAY,CAAmB,kBAAkB,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,GAAG,YAAY;IAEf,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE;QACjE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,YAAY,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEzE,OAAO;YACL,kBAAkB,EAAE,GAAG,EAAE;gBACvB,IAAI,CAAC;oBACH,OAAO,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,aAAa,CAAC,iBAAiB,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,2BAA2B,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE;gBAC/D,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,2BAA2B,CAAC,yBAAyB,CAAC,CAAC;oBACxF,OAAO,UAAU,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,iEAAiE,EAAE;wBACrE,KAAK,EAAE,QAAQ,CAAC,OAAO;wBACvB,GAAG,KAAK;qBACT,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,QAAQ,EAAE,GAAG,EAAE;gBACb,IAAI,CAAC;oBACH,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC5B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,wDAAwD,EAAE;wBAC5D,KAAK,EAAE,QAAQ,CAAC,OAAO;wBACvB,GAAG,KAAK;qBACT,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,oBAAoB,EAAE,GAAG,EAAE;gBACzB,IAAI,CAAC;oBACH,OAAO,OAAO,CAAC,oBAAoB,EAAE,CAAC;gBACxC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,sEAAsE,EAAE;wBAC1E,KAAK,EAAE,QAAQ,CAAC,OAAO;wBACvB,GAAG,KAAK;qBACT,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;YAED,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACvC,OAAO,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC;YAED,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC1B,OAAO,OAAO,CAAC,eAAe,EAAE,CAAC;YACnC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare enum DeliveryError {
2
- ADAPTER_NOT_FOUND = "ADAPTER_NOT_FOUND",
3
- NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
4
- INCOMPLETE_CONFIGURATION = "INCOMPLETE_CONFIGURATION",
5
- WRONG_CREDENTIALS = "WRONG_CREDENTIALS"
6
- }
7
- //# sourceMappingURL=DeliveryError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryError.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryError.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,iBAAiB,sBAAsB;CACxC"}
@@ -1,8 +0,0 @@
1
- export var DeliveryError;
2
- (function (DeliveryError) {
3
- DeliveryError["ADAPTER_NOT_FOUND"] = "ADAPTER_NOT_FOUND";
4
- DeliveryError["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
5
- DeliveryError["INCOMPLETE_CONFIGURATION"] = "INCOMPLETE_CONFIGURATION";
6
- DeliveryError["WRONG_CREDENTIALS"] = "WRONG_CREDENTIALS";
7
- })(DeliveryError || (DeliveryError = {}));
8
- //# sourceMappingURL=DeliveryError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryError.js","sourceRoot":"","sources":["../../src/director/DeliveryError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,wDAAuC,CAAA;IACvC,oDAAmC,CAAA;IACnC,sEAAqD,CAAA;IACrD,wDAAuC,CAAA;AACzC,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB"}
@@ -1,3 +0,0 @@
1
- import { IDeliveryPricingAdapter } from '@unchainedshop/types/delivery.pricing.js';
2
- export declare const DeliveryPricingAdapter: IDeliveryPricingAdapter;
3
- //# sourceMappingURL=DeliveryPricingAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryPricingAdapter.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryPricingAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;AASlD,eAAO,MAAM,sBAAsB,EAAE,uBAyBpC,CAAC"}
@@ -1,25 +0,0 @@
1
- import { BasePricingAdapter } from '@unchainedshop/utils';
2
- import { DeliveryPricingSheet } from './DeliveryPricingSheet.js';
3
- const basePricingAdapter = BasePricingAdapter();
4
- export const DeliveryPricingAdapter = {
5
- ...basePricingAdapter,
6
- isActivatedFor: () => {
7
- return false;
8
- },
9
- actions: (params) => {
10
- const { context } = params;
11
- const { currency } = context;
12
- const baseActions = basePricingAdapter.actions(params);
13
- const resultSheet = DeliveryPricingSheet({ currency });
14
- return {
15
- ...baseActions,
16
- calculate: async () => {
17
- const resultRaw = resultSheet.getRawPricingSheet();
18
- resultRaw.forEach(({ amount, category }) => basePricingAdapter.log(`Delivery Calculation -> ${category} ${amount}`));
19
- return resultRaw;
20
- },
21
- resultSheet: () => resultSheet,
22
- };
23
- },
24
- };
25
- //# sourceMappingURL=DeliveryPricingAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryPricingAdapter.js","sourceRoot":"","sources":["../../src/director/DeliveryPricingAdapter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,kBAAkB,GAAG,kBAAkB,EAG1C,CAAC;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAA4B;IAC7D,GAAG,kBAAkB;IAErB,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvD,OAAO;YACL,GAAG,WAAW;YACd,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,SAAS,GAAG,WAAW,CAAC,kBAAkB,EAAE,CAAC;gBACnD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzC,kBAAkB,CAAC,GAAG,CAAC,2BAA2B,QAAQ,IAAI,MAAM,EAAE,CAAC,CACxE,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import { IDeliveryPricingDirector } from '@unchainedshop/types/delivery.pricing.js';
2
- export declare const DeliveryPricingDirector: IDeliveryPricingDirector;
3
- //# sourceMappingURL=DeliveryPricingDirector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryPricingDirector.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryPricingDirector.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,wBAAwB,EACzB,MAAM,0CAA0C,CAAC;AAWlD,eAAO,MAAM,uBAAuB,EAAE,wBA0DrC,CAAC"}
@@ -1,58 +0,0 @@
1
- import { BasePricingDirector } from '@unchainedshop/utils';
2
- import { DeliveryPricingSheet } from './DeliveryPricingSheet.js';
3
- const baseDirector = BasePricingDirector('DeliveryPricingDirector');
4
- export const DeliveryPricingDirector = {
5
- ...baseDirector,
6
- async buildPricingContext(context, unchainedAPI) {
7
- const { modules } = unchainedAPI;
8
- if ('item' in context) {
9
- const { item } = context;
10
- const order = await modules.orders.findOrder({
11
- orderId: item.orderId,
12
- });
13
- const provider = await modules.delivery.findProvider({
14
- deliveryProviderId: item.deliveryProviderId,
15
- });
16
- const user = await modules.users.findUserById(order.userId);
17
- const discounts = await modules.orders.discounts.findOrderDiscounts({
18
- orderId: item.orderId,
19
- });
20
- return {
21
- ...unchainedAPI,
22
- country: order.countryCode,
23
- currency: order.currency,
24
- order,
25
- provider,
26
- user,
27
- discounts,
28
- orderDelivery: item,
29
- providerContext: null,
30
- };
31
- }
32
- return {
33
- ...unchainedAPI,
34
- country: context.country,
35
- currency: context.currency,
36
- order: context.order,
37
- provider: context.provider,
38
- user: context.user,
39
- discounts: [],
40
- orderDelivery: null,
41
- providerContext: context.providerContext,
42
- };
43
- },
44
- async actions(pricingContext, unchainedAPI) {
45
- const actions = await baseDirector.actions(pricingContext, unchainedAPI, this.buildPricingContext);
46
- return {
47
- ...actions,
48
- calculationSheet() {
49
- const context = actions.getContext();
50
- return DeliveryPricingSheet({
51
- calculation: actions.getCalculation(),
52
- currency: context.currency,
53
- });
54
- },
55
- };
56
- },
57
- };
58
- //# sourceMappingURL=DeliveryPricingDirector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryPricingDirector.js","sourceRoot":"","sources":["../../src/director/DeliveryPricingDirector.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,YAAY,GAAG,mBAAmB,CAKtC,yBAAyB,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,GAAG,YAAY;IAEf,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY;QAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;QAEjC,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC3C,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACnD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;aAC5C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC;gBAClE,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YAEH,OAAO;gBACL,GAAG,YAAY;gBACf,OAAO,EAAE,KAAK,CAAC,WAAW;gBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK;gBACL,QAAQ;gBACR,IAAI;gBACJ,SAAS;gBACT,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,IAAI;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,YAAY;YACf,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,EAAE;YACb,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY;QACxC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnG,OAAO;YACL,GAAG,OAAO;YACV,gBAAgB;gBACd,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrC,OAAO,oBAAoB,CAAC;oBAC1B,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE;oBACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,4 +0,0 @@
1
- import { DeliveryPricingCalculation, IDeliveryPricingSheet } from '@unchainedshop/types/delivery.pricing.js';
2
- import { PricingSheetParams } from '@unchainedshop/types/pricing.js';
3
- export declare const DeliveryPricingSheet: (params: PricingSheetParams<DeliveryPricingCalculation>) => IDeliveryPricingSheet;
4
- //# sourceMappingURL=DeliveryPricingSheet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryPricingSheet.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryPricingSheet.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAE1B,qBAAqB,EACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAqB,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAExF,eAAO,MAAM,oBAAoB,WACvB,kBAAkB,CAAC,0BAA0B,CAAC,KACrD,qBAyEF,CAAC"}
@@ -1,69 +0,0 @@
1
- import { BasePricingSheet } from '@unchainedshop/utils';
2
- import { DeliveryPricingRowCategory, } from '@unchainedshop/types/delivery.pricing.js';
3
- export const DeliveryPricingSheet = (params) => {
4
- const basePricingSheet = BasePricingSheet(params);
5
- const pricingSheet = {
6
- ...basePricingSheet,
7
- addDiscount({ amount, isTaxable, isNetPrice, discountId, meta }) {
8
- basePricingSheet.calculation.push({
9
- category: DeliveryPricingRowCategory.Discount,
10
- amount,
11
- isTaxable,
12
- isNetPrice,
13
- discountId,
14
- meta,
15
- });
16
- },
17
- addFee({ amount, isTaxable, isNetPrice, meta }) {
18
- basePricingSheet.calculation.push({
19
- amount,
20
- category: DeliveryPricingRowCategory.Delivery,
21
- isNetPrice,
22
- isTaxable,
23
- meta,
24
- });
25
- },
26
- addTax({ amount, rate, meta }) {
27
- basePricingSheet.calculation.push({
28
- amount,
29
- category: DeliveryPricingRowCategory.Tax,
30
- isNetPrice: false,
31
- isTaxable: false,
32
- meta,
33
- rate,
34
- });
35
- },
36
- taxSum(filter) {
37
- return basePricingSheet.sum({
38
- category: DeliveryPricingRowCategory.Tax,
39
- ...(filter || {}),
40
- });
41
- },
42
- discountPrices(explicitDiscountId) {
43
- const discountIds = pricingSheet
44
- .filterBy({
45
- category: DeliveryPricingRowCategory.Discount,
46
- discountId: explicitDiscountId,
47
- })
48
- .map(({ discountId }) => discountId);
49
- return [...new Set(discountIds)]
50
- .map((discountId) => {
51
- const { currency, amount } = basePricingSheet.total({
52
- category: DeliveryPricingRowCategory.Discount,
53
- discountId,
54
- });
55
- if (!amount) {
56
- return null;
57
- }
58
- return {
59
- discountId,
60
- amount: Math.round(amount),
61
- currency,
62
- };
63
- })
64
- .filter(Boolean);
65
- },
66
- };
67
- return pricingSheet;
68
- };
69
- //# sourceMappingURL=DeliveryPricingSheet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryPricingSheet.js","sourceRoot":"","sources":["../../src/director/DeliveryPricingSheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAEL,0BAA0B,GAE3B,MAAM,0CAA0C,CAAC;AAGlD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAsD,EAC/B,EAAE;IACzB,MAAM,gBAAgB,GAAkD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEjG,MAAM,YAAY,GAA0B;QAC1C,GAAG,gBAAgB;QAEnB,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;YAC7D,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;gBAC7C,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,UAAU;gBACV,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;YAC5C,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,MAAM;gBACN,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;gBAC7C,UAAU;gBACV,SAAS;gBACT,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAC3B,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,MAAM;gBACN,QAAQ,EAAE,0BAA0B,CAAC,GAAG;gBACxC,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE,KAAK;gBAChB,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAM;YACX,OAAO,gBAAgB,CAAC,GAAG,CAAC;gBAC1B,QAAQ,EAAE,0BAA0B,CAAC,GAAG;gBACxC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;aAClB,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,kBAAkB;YAC/B,MAAM,WAAW,GAAG,YAAY;iBAC7B,QAAQ,CAAC;gBACR,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;gBAC7C,UAAU,EAAE,kBAAkB;aAC/B,CAAC;iBACD,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAEvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;iBAC7B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC;oBAClD,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;oBAC7C,UAAU;iBACX,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO;oBACL,UAAU;oBACV,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC1B,QAAQ;iBACT,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare enum DeliveryProviderType {
2
- SHIPPING = "SHIPPING",
3
- PICKUP = "PICKUP"
4
- }
5
- //# sourceMappingURL=DeliveryProviderType.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryProviderType.d.ts","sourceRoot":"","sources":["../../src/director/DeliveryProviderType.ts"],"names":[],"mappings":"AAAA,oBAAY,oBAAoB;IAC9B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB"}
@@ -1,6 +0,0 @@
1
- export var DeliveryProviderType;
2
- (function (DeliveryProviderType) {
3
- DeliveryProviderType["SHIPPING"] = "SHIPPING";
4
- DeliveryProviderType["PICKUP"] = "PICKUP";
5
- })(DeliveryProviderType || (DeliveryProviderType = {}));
6
- //# sourceMappingURL=DeliveryProviderType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeliveryProviderType.js","sourceRoot":"","sources":["../../src/director/DeliveryProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B"}
@@ -1 +0,0 @@
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,8BAG/B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;;;;;;;;;iBAqHm22S,CAAC;sBAAgC,CAAC;2BAAsC,CAAC;;;;CAnHl/2S,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;2BAStB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,YAC7D,OAAO,CAAC,WAAW,KAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC;;6CAciB;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,OAAO,CAAC;kBAUzF,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC;kBAgBrE,MAAM,OAAO,gBAAgB;kBAiB7B,MAAM;EAgB7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configureDeliveryModule.js","sourceRoot":"","sources":["../../src/module/configureDeliveryModule.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb';
2
-
3
- export enum DeliveryProviderType {
4
- SHIPPING = 'SHIPPING',
5
- PICKUP = 'PICKUP',
6
- }
7
- export type DeliveryConfiguration = {
8
- key: string;
9
- value: string;
10
- }[];
11
-
12
- export type DeliveryProvider = {
13
- _id: string;
14
- type: DeliveryProviderType;
15
- adapterKey: string;
16
- configuration: DeliveryConfiguration;
17
- } & TimestampFields;
18
-
19
- export interface DeliveryLocation {
20
- _id: string;
21
- name: string;
22
- address: {
23
- addressLine: string;
24
- addressLine2?: string;
25
- postalCode: string;
26
- countryCode: string;
27
- city: string;
28
- };
29
- geoPoint: {
30
- latitude: number;
31
- longitude: number;
32
- };
33
- }
34
- export const DeliveryProvidersCollection = async (db: mongodb.Db) => {
35
- const DeliveryProviders = db.collection<DeliveryProvider>('delivery-providers');
36
-
37
- await buildDbIndexes<DeliveryProvider>(DeliveryProviders, [
38
- { index: { type: 1 } },
39
- { index: { created: 1 } },
40
- {
41
- index: {
42
- deleted: 1,
43
- },
44
- },
45
- ]);
46
-
47
- return DeliveryProviders;
48
- };
@@ -1,3 +0,0 @@
1
- export * from './module/configureDeliveryModule.js';
2
- export * from './db/DeliveryProvidersCollection.js';
3
- export * from './delivery-settings.js';
@@ -1,48 +0,0 @@
1
- import { DeliveryProvider } from './db/DeliveryProvidersCollection.js';
2
-
3
- export type FilterProviders<Order = unknown, UnchainedAPI = unknown> = (
4
- params: {
5
- providers: DeliveryProvider[];
6
- order: Order;
7
- },
8
- unchainedAPI: UnchainedAPI,
9
- ) => Promise<DeliveryProvider[]>;
10
-
11
- export type DetermineDefaultProvider<Order = unknown, UnchainedAPI = unknown> = (
12
- params: {
13
- providers: DeliveryProvider[];
14
- order: Order;
15
- },
16
- unchainedAPI: UnchainedAPI,
17
- ) => Promise<DeliveryProvider | null>;
18
- export type DeliverySettingsOptions = Omit<Partial<DeliverySettings>, 'configureSettings'>;
19
-
20
- export interface DeliverySettings {
21
- filterSupportedProviders: FilterProviders;
22
- determineDefaultProvider: DetermineDefaultProvider;
23
- configureSettings: (options?: DeliverySettingsOptions) => void;
24
- }
25
-
26
- const sortByCreationDate = (left: DeliveryProvider, right: DeliveryProvider) => {
27
- return new Date(left.created).getTime() - new Date(right.created).getTime();
28
- };
29
-
30
- const allProviders: FilterProviders = async ({ providers }) => {
31
- return providers.toSorted(sortByCreationDate);
32
- };
33
-
34
- const firstProviderIsDefault: DetermineDefaultProvider = async ({ providers }) => {
35
- return (providers?.length > 0 && providers[0]) || null;
36
- };
37
-
38
- export const deliverySettings: DeliverySettings = {
39
- filterSupportedProviders: allProviders,
40
- determineDefaultProvider: firstProviderIsDefault,
41
- configureSettings({
42
- filterSupportedProviders = allProviders,
43
- determineDefaultProvider = firstProviderIsDefault,
44
- } = {}) {
45
- deliverySettings.filterSupportedProviders = filterSupportedProviders;
46
- deliverySettings.determineDefaultProvider = determineDefaultProvider;
47
- },
48
- };
@@ -1,19 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import assert from 'node:assert';
3
- import { DeliveryProviderType } from '../delivery-index.js';
4
- import { buildFindSelector } from './configureDeliveryModule.js';
5
-
6
- describe('Delivery', () => {
7
- describe('buildFindSelector', () => {
8
- it('Return correct filter object when passed no argument', () => {
9
- assert.deepStrictEqual(buildFindSelector({}), { deleted: null });
10
- });
11
-
12
- it('Return correct filter object when passed type', () => {
13
- assert.deepStrictEqual(buildFindSelector({ type: DeliveryProviderType.PICKUP }), {
14
- type: 'PICKUP',
15
- deleted: null,
16
- });
17
- });
18
- });
19
- });
@@ -1,139 +0,0 @@
1
- import { emit, registerEvents } from '@unchainedshop/events';
2
- import { mongodb, generateDbFilterById, generateDbObjectId, ModuleInput } from '@unchainedshop/mongodb';
3
- import { DeliveryProvidersCollection, DeliveryProvider } from '../db/DeliveryProvidersCollection.js';
4
- import { deliverySettings, DeliverySettingsOptions } from '../delivery-settings.js';
5
- import pMemoize from 'p-memoize';
6
- import ExpiryMap from 'expiry-map';
7
-
8
- const DELIVERY_PROVIDER_EVENTS: string[] = [
9
- 'DELIVERY_PROVIDER_CREATE',
10
- 'DELIVERY_PROVIDER_UPDATE',
11
- 'DELIVERY_PROVIDER_REMOVE',
12
- ];
13
-
14
- export interface DeliveryInterface {
15
- _id: string;
16
- label: string;
17
- version: string;
18
- }
19
-
20
- export const buildFindSelector = ({
21
- includeDeleted = false,
22
- ...rest
23
- }: mongodb.Filter<DeliveryProvider> & { includeDeleted?: boolean } = {}) => {
24
- return { ...(includeDeleted ? {} : { deleted: null }), ...rest };
25
- };
26
-
27
- const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
28
-
29
- export const configureDeliveryModule = async ({
30
- db,
31
- options: deliveryOptions = {},
32
- }: ModuleInput<DeliverySettingsOptions>) => {
33
- registerEvents(DELIVERY_PROVIDER_EVENTS);
34
-
35
- deliverySettings.configureSettings(deliveryOptions);
36
-
37
- const DeliveryProviders = await DeliveryProvidersCollection(db);
38
-
39
- return {
40
- // Queries
41
- count: async (query: mongodb.Filter<DeliveryProvider>): Promise<number> => {
42
- const providerCount = await DeliveryProviders.countDocuments(buildFindSelector(query));
43
- return providerCount;
44
- },
45
-
46
- findProvider: async (
47
- {
48
- deliveryProviderId,
49
- ...query
50
- }: {
51
- deliveryProviderId: string;
52
- } & mongodb.Filter<DeliveryProvider>,
53
- options?: mongodb.FindOptions,
54
- ) => {
55
- return DeliveryProviders.findOne(
56
- deliveryProviderId ? generateDbFilterById(deliveryProviderId) : query,
57
- options,
58
- );
59
- },
60
-
61
- findProviders: async (
62
- query: mongodb.Filter<DeliveryProvider> & { includeDeleted?: boolean },
63
- options: mongodb.FindOptions = { sort: { created: 1 } },
64
- ): Promise<DeliveryProvider[]> => {
65
- const providers = DeliveryProviders.find(buildFindSelector(query), options);
66
- return providers.toArray();
67
- },
68
-
69
- allProviders: pMemoize(
70
- async function () {
71
- return DeliveryProviders.find({ deleted: null }, { sort: { created: 1 } }).toArray();
72
- },
73
- {
74
- cache: allProvidersCache,
75
- },
76
- ),
77
-
78
- providerExists: async ({ deliveryProviderId }: { deliveryProviderId: string }): Promise<boolean> => {
79
- const providerCount = await DeliveryProviders.countDocuments(
80
- generateDbFilterById(deliveryProviderId, { deleted: null }),
81
- { limit: 1 },
82
- );
83
- return !!providerCount;
84
- },
85
-
86
- // Mutations
87
- create: async (
88
- doc: Omit<DeliveryProvider, '_id' | 'created'> & Pick<Partial<DeliveryProvider>, '_id'>,
89
- ) => {
90
- const { insertedId: deliveryProviderId } = await DeliveryProviders.insertOne({
91
- _id: generateDbObjectId(),
92
- created: new Date(),
93
- ...doc,
94
- });
95
- const deliveryProvider = (await DeliveryProviders.findOne(
96
- { _id: deliveryProviderId },
97
- {},
98
- )) as DeliveryProvider;
99
- allProvidersCache.clear();
100
- await emit('DELIVERY_PROVIDER_CREATE', { deliveryProvider });
101
- return deliveryProvider;
102
- },
103
-
104
- update: async (_id: string, doc: DeliveryProvider) => {
105
- const deliveryProvider = await DeliveryProviders.findOneAndUpdate(
106
- generateDbFilterById(_id),
107
- {
108
- $set: {
109
- updated: new Date(),
110
- ...doc,
111
- },
112
- },
113
- { returnDocument: 'after' },
114
- );
115
- if (!deliveryProvider) return null;
116
- allProvidersCache.clear();
117
- await emit('DELIVERY_PROVIDER_UPDATE', { deliveryProvider });
118
- return deliveryProvider;
119
- },
120
-
121
- delete: async (_id: string) => {
122
- const deliveryProvider = await DeliveryProviders.findOneAndUpdate(
123
- generateDbFilterById(_id),
124
- {
125
- $set: {
126
- deleted: new Date(),
127
- },
128
- },
129
- { returnDocument: 'after' },
130
- );
131
- if (!deliveryProvider) return null;
132
- allProvidersCache.clear();
133
- await emit('DELIVERY_PROVIDER_REMOVE', { deliveryProvider });
134
- return deliveryProvider;
135
- },
136
- };
137
- };
138
-
139
- export type DeliveryModule = Awaited<ReturnType<typeof configureDeliveryModule>>;
package/tsconfig.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "../shared/base.tsconfig.json",
3
- "compilerOptions": {
4
- "declarationDir": "./lib",
5
- "rootDir": "./src",
6
- "outDir": "./lib",
7
-
8
- },
9
- "exclude": ["**/*.test.ts", "**/*.test.js", "tests", "lib"]
10
- }