@unchainedshop/core-delivery 4.3.4 → 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.
- package/README.md +88 -2
- package/lib/db/DeliveryProvidersCollection.d.ts +6 -6
- package/lib/db/DeliveryProvidersCollection.js +5 -7
- package/lib/delivery-index.d.ts +3 -4
- package/lib/delivery-index.js +3 -4
- package/lib/delivery-settings.d.ts +1 -2
- package/lib/delivery-settings.js +0 -1
- package/lib/module/configureDeliveryModule.d.ts +5 -6
- package/lib/module/configureDeliveryModule.js +3 -6
- package/package.json +12 -11
- package/lib/db/DeliveryProvidersCollection.d.ts.map +0 -1
- package/lib/db/DeliveryProvidersCollection.js.map +0 -1
- package/lib/delivery-index.d.ts.map +0 -1
- package/lib/delivery-index.js.map +0 -1
- package/lib/delivery-settings.d.ts.map +0 -1
- package/lib/delivery-settings.js.map +0 -1
- package/lib/module/configureDeliveryModule.d.ts.map +0 -1
- package/lib/module/configureDeliveryModule.js.map +0 -1
- package/src/db/DeliveryProvidersCollection.ts +0 -48
- package/src/delivery-index.ts +0 -3
- package/src/delivery-settings.ts +0 -48
- package/src/module/buildFindSelector.test.ts +0 -19
- package/src/module/configureDeliveryModule.ts +0 -139
- package/tsconfig.json +0 -10
package/README.md
CHANGED
|
@@ -1,3 +1,89 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://npmjs.com/package/@unchainedshop/core-delivery)
|
|
2
|
+
[](https://opensource.org/licenses/EUPL-1.2)
|
|
2
3
|
|
|
3
|
-
|
|
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
|
|
3
|
-
SHIPPING
|
|
4
|
-
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
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
package/lib/delivery-index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './module/configureDeliveryModule.
|
|
2
|
-
export * from './db/DeliveryProvidersCollection.
|
|
3
|
-
export * from './delivery-settings.
|
|
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';
|
package/lib/delivery-index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
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.
|
|
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
|
package/lib/delivery-settings.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { mongodb, ModuleInput } from '@unchainedshop/mongodb';
|
|
2
|
-
import { DeliveryProvider } from '../db/DeliveryProvidersCollection.
|
|
3
|
-
import { DeliverySettingsOptions } from '../delivery-settings.
|
|
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.
|
|
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.
|
|
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
|
|
4
|
-
import { deliverySettings } from
|
|
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
|
+
"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": "
|
|
13
|
-
"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
|
-
"
|
|
26
|
-
"
|
|
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.
|
|
35
|
-
"@unchainedshop/logger": "^4.
|
|
36
|
-
"@unchainedshop/mongodb": "^4.
|
|
37
|
-
"@unchainedshop/utils": "^4.
|
|
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": "^
|
|
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 +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 +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
|
-
};
|
package/src/delivery-index.ts
DELETED
package/src/delivery-settings.ts
DELETED
|
@@ -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>>;
|