@unchainedshop/api 4.2.2 → 4.3.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/lib/resolvers/type/delivery-provider-interface.d.ts +18 -0
- package/lib/resolvers/type/delivery-provider-interface.d.ts.map +1 -0
- package/lib/resolvers/type/delivery-provider-interface.js +48 -0
- package/lib/resolvers/type/delivery-provider-interface.js.map +1 -0
- package/lib/resolvers/type/delivery-provider-pickup-types.d.ts +20 -0
- package/lib/resolvers/type/delivery-provider-pickup-types.d.ts.map +1 -0
- package/lib/resolvers/type/delivery-provider-pickup-types.js +10 -0
- package/lib/resolvers/type/delivery-provider-pickup-types.js.map +1 -0
- package/lib/resolvers/type/delivery-provider-shipping-types.d.ts +17 -0
- package/lib/resolvers/type/delivery-provider-shipping-types.d.ts.map +1 -0
- package/lib/resolvers/type/delivery-provider-shipping-types.js +5 -0
- package/lib/resolvers/type/delivery-provider-shipping-types.js.map +1 -0
- package/lib/resolvers/type/delivery-provider-types.d.ts +7 -11
- package/lib/resolvers/type/delivery-provider-types.d.ts.map +1 -1
- package/lib/resolvers/type/delivery-provider-types.js +17 -43
- package/lib/resolvers/type/delivery-provider-types.js.map +1 -1
- package/lib/resolvers/type/index.d.ts +39 -10
- package/lib/resolvers/type/index.d.ts.map +1 -1
- package/lib/resolvers/type/index.js +4 -0
- package/lib/resolvers/type/index.js.map +1 -1
- package/lib/resolvers/type/price-types.d.ts.map +1 -1
- package/lib/resolvers/type/price-types.js +19 -5
- package/lib/resolvers/type/price-types.js.map +1 -1
- package/lib/schema/types/delivery.d.ts.map +1 -1
- package/lib/schema/types/delivery.js +38 -1
- package/lib/schema/types/delivery.js.map +1 -1
- package/lib/schema/types/order/delivery.d.ts.map +1 -1
- package/lib/schema/types/order/delivery.js +3 -2
- package/lib/schema/types/order/delivery.js.map +1 -1
- package/lib/schema/types/order/pick-up-location.d.ts.map +1 -1
- package/lib/schema/types/order/pick-up-location.js +1 -2
- package/lib/schema/types/order/pick-up-location.js.map +1 -1
- package/package.json +8 -8
- package/src/resolvers/type/delivery-provider-interface.ts +55 -0
- package/src/resolvers/type/delivery-provider-pickup-types.ts +12 -0
- package/src/resolvers/type/delivery-provider-shipping-types.ts +5 -0
- package/src/resolvers/type/delivery-provider-types.ts +22 -68
- package/src/resolvers/type/index.ts +4 -0
- package/src/resolvers/type/price-types.ts +19 -5
- package/src/schema/types/delivery.ts +38 -1
- package/src/schema/types/order/delivery.ts +3 -2
- package/src/schema/types/order/pick-up-location.ts +1 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Context } from '../../context.js';
|
|
2
|
+
export declare const DeliveryProviderInterface: {
|
|
3
|
+
isActive(deliveryProvider: any, _: any, context: Context): Promise<boolean>;
|
|
4
|
+
configurationError(deliveryProvider: any, _: any, context: Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
5
|
+
interface(deliveryProvider: any): {
|
|
6
|
+
_id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
version: string;
|
|
9
|
+
} | null;
|
|
10
|
+
simulatedPrice(deliveryProvider: any, args: any, context: Context): Promise<{
|
|
11
|
+
amount: number;
|
|
12
|
+
currencyCode: string;
|
|
13
|
+
countryCode: string;
|
|
14
|
+
isTaxable: boolean;
|
|
15
|
+
isNetPrice: any;
|
|
16
|
+
} | null>;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=delivery-provider-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-provider-interface.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,eAAO,MAAM,yBAAyB;qDACS,OAAO;+DAKG,OAAO;;;;;;8DAeR,OAAO;;;;;;;CA8B9D,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DeliveryDirector, DeliveryPricingDirector } from '@unchainedshop/core';
|
|
2
|
+
export const DeliveryProviderInterface = {
|
|
3
|
+
async isActive(deliveryProvider, _, context) {
|
|
4
|
+
const director = await DeliveryDirector.actions(deliveryProvider, {}, context);
|
|
5
|
+
return Boolean(director.isActive());
|
|
6
|
+
},
|
|
7
|
+
async configurationError(deliveryProvider, _, context) {
|
|
8
|
+
const director = await DeliveryDirector.actions(deliveryProvider, {}, context);
|
|
9
|
+
return director.configurationError();
|
|
10
|
+
},
|
|
11
|
+
interface(deliveryProvider) {
|
|
12
|
+
const Adapter = DeliveryDirector.getAdapter(deliveryProvider.adapterKey);
|
|
13
|
+
if (!Adapter)
|
|
14
|
+
return null;
|
|
15
|
+
return {
|
|
16
|
+
_id: Adapter.key,
|
|
17
|
+
label: Adapter.label,
|
|
18
|
+
version: Adapter.version,
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
async simulatedPrice(deliveryProvider, args, context) {
|
|
22
|
+
const { loaders, countryCode, user } = context;
|
|
23
|
+
const { currencyCode: forcedCurrencyCode, orderId, useNetPrice, context: providerContext } = args;
|
|
24
|
+
const order = await loaders.orderLoader.load({ orderId });
|
|
25
|
+
const currencyCode = forcedCurrencyCode || order?.currencyCode || context.currencyCode;
|
|
26
|
+
const pricingContext = {
|
|
27
|
+
countryCode,
|
|
28
|
+
currencyCode,
|
|
29
|
+
provider: deliveryProvider,
|
|
30
|
+
order,
|
|
31
|
+
providerContext,
|
|
32
|
+
user: user,
|
|
33
|
+
};
|
|
34
|
+
const calculated = await DeliveryPricingDirector.rebuildCalculation(pricingContext, context);
|
|
35
|
+
if (!calculated?.length)
|
|
36
|
+
return null;
|
|
37
|
+
const pricing = DeliveryPricingDirector.calculationSheet(pricingContext, calculated);
|
|
38
|
+
const orderPrice = pricing.total({ useNetPrice });
|
|
39
|
+
return {
|
|
40
|
+
amount: orderPrice.amount,
|
|
41
|
+
currencyCode: orderPrice.currencyCode,
|
|
42
|
+
countryCode,
|
|
43
|
+
isTaxable: pricing.taxSum() > 0,
|
|
44
|
+
isNetPrice: useNetPrice,
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=delivery-provider-interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-provider-interface.js","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGhF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,EAAE,OAAgB;QAClD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,EAAE,OAAgB;QAC5D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,gBAAgB;QACxB,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO;YACL,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAgB;QAC3D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC/C,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAElG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,kBAAkB,IAAI,KAAK,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;QAEvF,MAAM,cAAc,GAAG;YACrB,WAAW;YACX,YAAY;YACZ,QAAQ,EAAE,gBAAgB;YAC1B,KAAK;YACL,eAAe;YACf,IAAI,EAAE,IAAK;SACZ,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC7F,IAAI,CAAC,UAAU,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,OAAO,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,OAAO;YACL,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,WAAW;YACX,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YAC/B,UAAU,EAAE,WAAW;SACxB,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Context } from '../../context.js';
|
|
2
|
+
import { DeliveryProvider } from '@unchainedshop/core-delivery';
|
|
3
|
+
export declare const DeliveryProviderPickUp: {
|
|
4
|
+
pickUpLocations(provider: DeliveryProvider, _: never, context: Context): Promise<import("@unchainedshop/core-delivery").DeliveryLocation[]>;
|
|
5
|
+
isActive(deliveryProvider: any, _: any, context: Context): Promise<boolean>;
|
|
6
|
+
configurationError(deliveryProvider: any, _: any, context: Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
7
|
+
interface(deliveryProvider: any): {
|
|
8
|
+
_id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
version: string;
|
|
11
|
+
} | null;
|
|
12
|
+
simulatedPrice(deliveryProvider: any, args: any, context: Context): Promise<{
|
|
13
|
+
amount: number;
|
|
14
|
+
currencyCode: string;
|
|
15
|
+
countryCode: string;
|
|
16
|
+
isTaxable: boolean;
|
|
17
|
+
isNetPrice: any;
|
|
18
|
+
} | null>;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=delivery-provider-pickup-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-provider-pickup-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-pickup-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,eAAO,MAAM,sBAAsB;8BAED,gBAAgB,KAAK,KAAK,WAAW,OAAO;;;;;;;;;;;;;;;CAI7E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DeliveryDirector } from '@unchainedshop/core';
|
|
2
|
+
import { DeliveryProviderInterface } from './delivery-provider-interface.js';
|
|
3
|
+
export const DeliveryProviderPickUp = {
|
|
4
|
+
...DeliveryProviderInterface,
|
|
5
|
+
async pickUpLocations(provider, _, context) {
|
|
6
|
+
const director = await DeliveryDirector.actions(provider, {}, context);
|
|
7
|
+
return director.pickUpLocations() || [];
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=delivery-provider-pickup-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-provider-pickup-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-pickup-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,yBAAyB;IAC5B,KAAK,CAAC,eAAe,CAAC,QAA0B,EAAE,CAAQ,EAAE,OAAgB;QAC1E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const DeliveryProviderShipping: {
|
|
2
|
+
isActive(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<boolean>;
|
|
3
|
+
configurationError(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
4
|
+
interface(deliveryProvider: any): {
|
|
5
|
+
_id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
version: string;
|
|
8
|
+
} | null;
|
|
9
|
+
simulatedPrice(deliveryProvider: any, args: any, context: import("../../context.js").Context): Promise<{
|
|
10
|
+
amount: number;
|
|
11
|
+
currencyCode: string;
|
|
12
|
+
countryCode: string;
|
|
13
|
+
isTaxable: boolean;
|
|
14
|
+
isNetPrice: any;
|
|
15
|
+
} | null>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=delivery-provider-shipping-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-provider-shipping-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-shipping-types.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;CAEpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-provider-shipping-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-shipping-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,yBAAyB;CAC7B,CAAC"}
|
|
@@ -1,24 +1,20 @@
|
|
|
1
1
|
import { Context } from '../../context.js';
|
|
2
|
-
import { DeliveryProvider as
|
|
2
|
+
import { DeliveryProvider as DeliveryProviderActual } from '@unchainedshop/core-delivery';
|
|
3
3
|
export declare const DeliveryProvider: {
|
|
4
|
-
|
|
4
|
+
isActive(deliveryProvider: any, _: any, context: Context): Promise<boolean>;
|
|
5
|
+
configurationError(deliveryProvider: any, _: any, context: Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
6
|
+
interface(deliveryProvider: any): {
|
|
5
7
|
_id: string;
|
|
6
8
|
label: string;
|
|
7
9
|
version: string;
|
|
8
10
|
} | null;
|
|
9
|
-
|
|
10
|
-
configurationError(deliveryProvider: DeliveryProviderType, _: never, requestContext: Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
11
|
-
simulatedPrice(deliveryProvider: DeliveryProviderType, { currencyCode: forcedCurrencyCode, orderId, useNetPrice, context: providerContext, }: {
|
|
12
|
-
currencyCode?: string;
|
|
13
|
-
orderId: string;
|
|
14
|
-
useNetPrice?: boolean;
|
|
15
|
-
context: any;
|
|
16
|
-
}, requestContext: Context): Promise<{
|
|
11
|
+
simulatedPrice(deliveryProvider: any, args: any, context: Context): Promise<{
|
|
17
12
|
amount: number;
|
|
18
13
|
currencyCode: string;
|
|
19
14
|
countryCode: string;
|
|
20
15
|
isTaxable: boolean;
|
|
21
|
-
isNetPrice:
|
|
16
|
+
isNetPrice: any;
|
|
22
17
|
} | null>;
|
|
18
|
+
__resolveType: (obj: DeliveryProviderActual, { loaders }: Context) => Promise<string>;
|
|
23
19
|
};
|
|
24
20
|
//# sourceMappingURL=delivery-provider-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-provider-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"delivery-provider-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,gBAAgB,IAAI,sBAAsB,EAE3C,MAAM,8BAA8B,CAAC;AAStC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;yBACA,sBAAsB,eAAe,OAAO;CAYxE,CAAC"}
|
|
@@ -1,47 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DeliveryProviderType, } from '@unchainedshop/core-delivery';
|
|
2
|
+
import { objectInvert } from '@unchainedshop/utils';
|
|
3
|
+
import { DeliveryProviderInterface } from './delivery-provider-interface.js';
|
|
4
|
+
const DeliveryProviderMap = {
|
|
5
|
+
DeliveryProviderShipping: DeliveryProviderType.SHIPPING,
|
|
6
|
+
DeliveryProviderPickUp: DeliveryProviderType.PICKUP,
|
|
7
|
+
};
|
|
2
8
|
export const DeliveryProvider = {
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
},
|
|
13
|
-
async isActive(deliveryProvider, _, requestContext) {
|
|
14
|
-
const director = await DeliveryDirector.actions(deliveryProvider, {}, requestContext);
|
|
15
|
-
return Boolean(director.isActive());
|
|
16
|
-
},
|
|
17
|
-
async configurationError(deliveryProvider, _, requestContext) {
|
|
18
|
-
const director = await DeliveryDirector.actions(deliveryProvider, {}, requestContext);
|
|
19
|
-
return director.configurationError();
|
|
20
|
-
},
|
|
21
|
-
async simulatedPrice(deliveryProvider, { currencyCode: forcedCurrencyCode, orderId, useNetPrice, context: providerContext, }, requestContext) {
|
|
22
|
-
const { loaders, countryCode, user } = requestContext;
|
|
23
|
-
const order = await loaders.orderLoader.load({ orderId });
|
|
24
|
-
const currencyCode = forcedCurrencyCode || order?.currencyCode || requestContext.currencyCode;
|
|
25
|
-
const pricingContext = {
|
|
26
|
-
countryCode,
|
|
27
|
-
currencyCode,
|
|
28
|
-
provider: deliveryProvider,
|
|
29
|
-
order,
|
|
30
|
-
providerContext,
|
|
31
|
-
user: user,
|
|
32
|
-
};
|
|
33
|
-
const calculated = await DeliveryPricingDirector.rebuildCalculation(pricingContext, requestContext);
|
|
34
|
-
if (!calculated || !calculated.length)
|
|
35
|
-
return null;
|
|
36
|
-
const pricing = DeliveryPricingDirector.calculationSheet(pricingContext, calculated);
|
|
37
|
-
const orderPrice = pricing.total({ useNetPrice });
|
|
38
|
-
return {
|
|
39
|
-
amount: orderPrice.amount,
|
|
40
|
-
currencyCode: orderPrice.currencyCode,
|
|
41
|
-
countryCode,
|
|
42
|
-
isTaxable: pricing.taxSum() > 0,
|
|
43
|
-
isNetPrice: useNetPrice,
|
|
44
|
-
};
|
|
9
|
+
__resolveType: async (obj, { loaders }) => {
|
|
10
|
+
const provider = await loaders.deliveryProviderLoader.load({
|
|
11
|
+
deliveryProviderId: obj._id,
|
|
12
|
+
});
|
|
13
|
+
const invertedProductTypes = objectInvert(DeliveryProviderMap);
|
|
14
|
+
if (provider) {
|
|
15
|
+
return invertedProductTypes[provider.type];
|
|
16
|
+
}
|
|
17
|
+
return invertedProductTypes[DeliveryProviderType.SHIPPING];
|
|
45
18
|
},
|
|
19
|
+
...DeliveryProviderInterface,
|
|
46
20
|
};
|
|
47
21
|
//# sourceMappingURL=delivery-provider-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-provider-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delivery-provider-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/delivery-provider-types.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,MAAM,mBAAmB,GAAG;IAC1B,wBAAwB,EAAE,oBAAoB,CAAC,QAAQ;IACvD,sBAAsB,EAAE,oBAAoB,CAAC,MAAM;CACpD,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,aAAa,EAAE,KAAK,EAAE,GAA2B,EAAE,EAAE,OAAO,EAAW,EAAE,EAAE;QACzE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACzD,kBAAkB,EAAE,GAAG,CAAC,GAAG;SAC5B,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IACD,GAAG,yBAAyB;CAC7B,CAAC"}
|
|
@@ -167,24 +167,53 @@ declare const types: {
|
|
|
167
167
|
decimals: (currency: any) => any;
|
|
168
168
|
};
|
|
169
169
|
DeliveryProvider: {
|
|
170
|
-
|
|
170
|
+
isActive(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<boolean>;
|
|
171
|
+
configurationError(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
172
|
+
interface(deliveryProvider: any): {
|
|
171
173
|
_id: string;
|
|
172
174
|
label: string;
|
|
173
175
|
version: string;
|
|
174
176
|
} | null;
|
|
175
|
-
|
|
176
|
-
configurationError(deliveryProvider: import("@unchainedshop/core-delivery").DeliveryProvider, _: never, requestContext: import("../../context.js").Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
177
|
-
simulatedPrice(deliveryProvider: import("@unchainedshop/core-delivery").DeliveryProvider, { currencyCode: forcedCurrencyCode, orderId, useNetPrice, context: providerContext, }: {
|
|
178
|
-
currencyCode?: string;
|
|
179
|
-
orderId: string;
|
|
180
|
-
useNetPrice?: boolean;
|
|
181
|
-
context: any;
|
|
182
|
-
}, requestContext: import("../../context.js").Context): Promise<{
|
|
177
|
+
simulatedPrice(deliveryProvider: any, args: any, context: import("../../context.js").Context): Promise<{
|
|
183
178
|
amount: number;
|
|
184
179
|
currencyCode: string;
|
|
185
180
|
countryCode: string;
|
|
186
181
|
isTaxable: boolean;
|
|
187
|
-
isNetPrice:
|
|
182
|
+
isNetPrice: any;
|
|
183
|
+
} | null>;
|
|
184
|
+
__resolveType: (obj: import("@unchainedshop/core-delivery").DeliveryProvider, { loaders }: import("../../context.js").Context) => Promise<string>;
|
|
185
|
+
};
|
|
186
|
+
DeliveryProviderPickUp: {
|
|
187
|
+
pickUpLocations(provider: import("@unchainedshop/core-delivery").DeliveryProvider, _: never, context: import("../../context.js").Context): Promise<import("@unchainedshop/core-delivery").DeliveryLocation[]>;
|
|
188
|
+
isActive(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<boolean>;
|
|
189
|
+
configurationError(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
190
|
+
interface(deliveryProvider: any): {
|
|
191
|
+
_id: string;
|
|
192
|
+
label: string;
|
|
193
|
+
version: string;
|
|
194
|
+
} | null;
|
|
195
|
+
simulatedPrice(deliveryProvider: any, args: any, context: import("../../context.js").Context): Promise<{
|
|
196
|
+
amount: number;
|
|
197
|
+
currencyCode: string;
|
|
198
|
+
countryCode: string;
|
|
199
|
+
isTaxable: boolean;
|
|
200
|
+
isNetPrice: any;
|
|
201
|
+
} | null>;
|
|
202
|
+
};
|
|
203
|
+
DeliveryProviderShipping: {
|
|
204
|
+
isActive(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<boolean>;
|
|
205
|
+
configurationError(deliveryProvider: any, _: any, context: import("../../context.js").Context): Promise<import("@unchainedshop/core").DeliveryError | null>;
|
|
206
|
+
interface(deliveryProvider: any): {
|
|
207
|
+
_id: string;
|
|
208
|
+
label: string;
|
|
209
|
+
version: string;
|
|
210
|
+
} | null;
|
|
211
|
+
simulatedPrice(deliveryProvider: any, args: any, context: import("../../context.js").Context): Promise<{
|
|
212
|
+
amount: number;
|
|
213
|
+
currencyCode: string;
|
|
214
|
+
countryCode: string;
|
|
215
|
+
isTaxable: boolean;
|
|
216
|
+
isNetPrice: any;
|
|
188
217
|
} | null>;
|
|
189
218
|
};
|
|
190
219
|
Dimensions: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,8 @@ import { Web3Address } from './web3-address.js';
|
|
|
67
67
|
import { LoginMethodResponse } from './login-method-response-types.js';
|
|
68
68
|
import { ProductSearchResult } from './product-search-result-types.js';
|
|
69
69
|
import { OrderStatistics } from './order/order-statistics-types.js';
|
|
70
|
+
import { DeliveryProviderPickUp } from './delivery-provider-pickup-types.js';
|
|
71
|
+
import { DeliveryProviderShipping } from './delivery-provider-shipping-types.js';
|
|
70
72
|
const types = {
|
|
71
73
|
Assortment,
|
|
72
74
|
AssortmentFilter,
|
|
@@ -80,6 +82,8 @@ const types = {
|
|
|
80
82
|
Country,
|
|
81
83
|
Currency,
|
|
82
84
|
DeliveryProvider,
|
|
85
|
+
DeliveryProviderPickUp,
|
|
86
|
+
DeliveryProviderShipping,
|
|
83
87
|
Dimensions,
|
|
84
88
|
Enrollment,
|
|
85
89
|
EnrollmentDelivery,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resolvers/type/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resolvers/type/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/price-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,KAAK;6BACS,SAAS;+BAGP,SAAS;sBAGlB,SAAS;gBAGf,SAAS;
|
|
1
|
+
{"version":3,"file":"price-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/price-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,KAAK;6BACS,SAAS;+BAGP,SAAS;sBAGlB,SAAS;gBAGf,SAAS;CAwBtB,CAAC"}
|
|
@@ -10,11 +10,25 @@ export const Price = {
|
|
|
10
10
|
},
|
|
11
11
|
amount(obj) {
|
|
12
12
|
if (obj.amount) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
/*
|
|
14
|
+
Why toFixed(0) Is Actually Reliable
|
|
15
|
+
For integer rounding specifically:
|
|
16
|
+
|
|
17
|
+
Half-values are exact: Numbers like 0.5, 1.5, 2.5 can be represented exactly in binary floating-point (they're powers of 2), so they round correctly.
|
|
18
|
+
Floating-point errors are tiny: Even with calculation errors, they're usually on the order of 0.0000000001, which won't affect rounding to the nearest integer.
|
|
19
|
+
Integer boundaries are far apart: Unlike toFixed(2) where the difference between 1.004 and 1.005 matters, for toFixed(0) you need errors approaching 0.5 to cause problems.
|
|
20
|
+
|
|
21
|
+
Theoretical Edge Cases
|
|
22
|
+
The only cases where toFixed(0) might fail would be:
|
|
23
|
+
javascript// Extremely contrived calculation that should equal exactly 0.5
|
|
24
|
+
// but might be 0.49999999999999994 (would round to 0 instead of 1)
|
|
25
|
+
|
|
26
|
+
// Very large numbers where precision is lost entirely
|
|
27
|
+
(9007199254740992.5).toFixed(0) // Might have issues past MAX_SAFE_INTEGER
|
|
28
|
+
|
|
29
|
+
// But in practice, these are incredibly rare
|
|
30
|
+
*/
|
|
31
|
+
return Math.round(obj.amount).toFixed(0);
|
|
18
32
|
}
|
|
19
33
|
return 0;
|
|
20
34
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/price-types.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,SAAS,CAAC,EAAE,SAAS,EAAa;QAChC,OAAO,SAAS,IAAI,KAAK,CAAC;IAC5B,CAAC;IACD,UAAU,CAAC,EAAE,UAAU,EAAa;QAClC,OAAO,UAAU,IAAI,KAAK,CAAC;IAC7B,CAAC;IACD,YAAY,CAAC,GAAc;QACzB,OAAO,GAAG,EAAE,YAAY,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,GAAc;QACnB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,
|
|
1
|
+
{"version":3,"file":"price-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/price-types.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,SAAS,CAAC,EAAE,SAAS,EAAa;QAChC,OAAO,SAAS,IAAI,KAAK,CAAC;IAC5B,CAAC;IACD,UAAU,CAAC,EAAE,UAAU,EAAa;QAClC,OAAO,UAAU,IAAI,KAAK,CAAC;IAC7B,CAAC;IACD,YAAY,CAAC,GAAc;QACzB,OAAO,GAAG,EAAE,YAAY,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,GAAc;QACnB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf;;;;;;;;;;;;;;;;;cAiBE;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../src/schema/types/delivery.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../src/schema/types/delivery.ts"],"names":[],"mappings":";AAAA,wBAkFE"}
|
|
@@ -25,7 +25,44 @@ export default [
|
|
|
25
25
|
WRONG_CREDENTIALS
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
interface DeliveryProvider {
|
|
29
|
+
_id: ID!
|
|
30
|
+
created: DateTime
|
|
31
|
+
updated: DateTime
|
|
32
|
+
deleted: DateTime
|
|
33
|
+
type: DeliveryProviderType
|
|
34
|
+
interface: DeliveryInterface
|
|
35
|
+
configuration: JSON
|
|
36
|
+
configurationError: DeliveryProviderError
|
|
37
|
+
isActive: Boolean
|
|
38
|
+
simulatedPrice(
|
|
39
|
+
currencyCode: String
|
|
40
|
+
useNetPrice: Boolean = false
|
|
41
|
+
orderId: ID
|
|
42
|
+
context: JSON
|
|
43
|
+
): Price @cacheControl(scope: PRIVATE, maxAge: 10)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type DeliveryProviderPickUp implements DeliveryProvider @cacheControl(maxAge: 60) {
|
|
47
|
+
_id: ID!
|
|
48
|
+
created: DateTime
|
|
49
|
+
updated: DateTime
|
|
50
|
+
deleted: DateTime
|
|
51
|
+
type: DeliveryProviderType
|
|
52
|
+
interface: DeliveryInterface
|
|
53
|
+
configuration: JSON
|
|
54
|
+
configurationError: DeliveryProviderError
|
|
55
|
+
isActive: Boolean
|
|
56
|
+
simulatedPrice(
|
|
57
|
+
currencyCode: String
|
|
58
|
+
useNetPrice: Boolean = false
|
|
59
|
+
orderId: ID
|
|
60
|
+
context: JSON
|
|
61
|
+
): Price @cacheControl(scope: PRIVATE, maxAge: 10)
|
|
62
|
+
pickUpLocations: [PickUpLocation!]!
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
type DeliveryProviderShipping implements DeliveryProvider @cacheControl(maxAge: 60) {
|
|
29
66
|
_id: ID!
|
|
30
67
|
created: DateTime
|
|
31
68
|
updated: DateTime
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../src/schema/types/delivery.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../src/schema/types/delivery.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFb;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../../src/schema/types/order/delivery.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../../src/schema/types/order/delivery.ts"],"names":[],"mappings":";AAAA,wBAkDE"}
|
|
@@ -33,8 +33,9 @@ export default [
|
|
|
33
33
|
delivered: DateTime
|
|
34
34
|
fee: Price
|
|
35
35
|
discounts: [OrderDeliveryDiscount!]
|
|
36
|
-
pickUpLocations: [
|
|
37
|
-
|
|
36
|
+
pickUpLocations: [PickUpLocation!]!
|
|
37
|
+
@deprecated(reason: "Use DeliveryProvider.pickupLocations instead")
|
|
38
|
+
activePickUpLocation: PickUpLocation
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
type OrderDeliveryShipping implements OrderDelivery {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../src/schema/types/order/delivery.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../src/schema/types/order/delivery.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDb;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick-up-location.d.ts","sourceRoot":"","sources":["../../../../src/schema/types/order/pick-up-location.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"pick-up-location.d.ts","sourceRoot":"","sources":["../../../../src/schema/types/order/pick-up-location.ts"],"names":[],"mappings":";AAAA,wBASE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick-up-location.js","sourceRoot":"","sources":["../../../../src/schema/types/order/pick-up-location.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC
|
|
1
|
+
{"version":3,"file":"pick-up-location.js","sourceRoot":"","sources":["../../../../src/schema/types/order/pick-up-location.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,aAAa,CAAC;;;;;;;GAOb;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/api",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"main": "lib/api-index.js",
|
|
5
5
|
"types": "lib/api-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"@noble/curves": "^2.0.0",
|
|
65
65
|
"@noble/hashes": "^2.0.0",
|
|
66
66
|
"ai": ">= 5 < 6",
|
|
67
|
-
"@ai-sdk/mcp": "^0.0.
|
|
67
|
+
"@ai-sdk/mcp": "^0.0.8",
|
|
68
68
|
"connect-mongo": ">= 5.1 < 6",
|
|
69
69
|
"express": ">= 5 < 6",
|
|
70
70
|
"express-session": ">= 1.18 < 2",
|
|
@@ -124,11 +124,11 @@
|
|
|
124
124
|
}
|
|
125
125
|
},
|
|
126
126
|
"dependencies": {
|
|
127
|
-
"@unchainedshop/core": "^4.
|
|
128
|
-
"@unchainedshop/events": "^4.
|
|
129
|
-
"@unchainedshop/logger": "^4.
|
|
130
|
-
"@unchainedshop/roles": "^4.
|
|
131
|
-
"@unchainedshop/utils": "^4.
|
|
127
|
+
"@unchainedshop/core": "^4.3.0",
|
|
128
|
+
"@unchainedshop/events": "^4.3.0",
|
|
129
|
+
"@unchainedshop/logger": "^4.3.0",
|
|
130
|
+
"@unchainedshop/roles": "^4.3.0",
|
|
131
|
+
"@unchainedshop/utils": "^4.3.0",
|
|
132
132
|
"dataloader": "^2.2.3",
|
|
133
133
|
"expiry-map": "^2.0.0",
|
|
134
134
|
"mime": ">= 4 < 5",
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"@noble/hashes": "^2.0.0",
|
|
148
148
|
"@types/express": "^5.0.3",
|
|
149
149
|
"@types/node": "^24.0.13",
|
|
150
|
-
"@ai-sdk/mcp": "^0.0.
|
|
150
|
+
"@ai-sdk/mcp": "^0.0.8",
|
|
151
151
|
"ai": "^5.0.80",
|
|
152
152
|
"express": "^5.1.0",
|
|
153
153
|
"express-session": "^1.18.1",
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DeliveryDirector, DeliveryPricingDirector } from '@unchainedshop/core';
|
|
2
|
+
import { Context } from '../../context.js';
|
|
3
|
+
|
|
4
|
+
export const DeliveryProviderInterface = {
|
|
5
|
+
async isActive(deliveryProvider, _, context: Context) {
|
|
6
|
+
const director = await DeliveryDirector.actions(deliveryProvider, {}, context);
|
|
7
|
+
return Boolean(director.isActive());
|
|
8
|
+
},
|
|
9
|
+
|
|
10
|
+
async configurationError(deliveryProvider, _, context: Context) {
|
|
11
|
+
const director = await DeliveryDirector.actions(deliveryProvider, {}, context);
|
|
12
|
+
return director.configurationError();
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
interface(deliveryProvider) {
|
|
16
|
+
const Adapter = DeliveryDirector.getAdapter(deliveryProvider.adapterKey);
|
|
17
|
+
if (!Adapter) return null;
|
|
18
|
+
return {
|
|
19
|
+
_id: Adapter.key,
|
|
20
|
+
label: Adapter.label,
|
|
21
|
+
version: Adapter.version,
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
async simulatedPrice(deliveryProvider, args, context: Context) {
|
|
26
|
+
const { loaders, countryCode, user } = context;
|
|
27
|
+
const { currencyCode: forcedCurrencyCode, orderId, useNetPrice, context: providerContext } = args;
|
|
28
|
+
|
|
29
|
+
const order = await loaders.orderLoader.load({ orderId });
|
|
30
|
+
const currencyCode = forcedCurrencyCode || order?.currencyCode || context.currencyCode;
|
|
31
|
+
|
|
32
|
+
const pricingContext = {
|
|
33
|
+
countryCode,
|
|
34
|
+
currencyCode,
|
|
35
|
+
provider: deliveryProvider,
|
|
36
|
+
order,
|
|
37
|
+
providerContext,
|
|
38
|
+
user: user!,
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const calculated = await DeliveryPricingDirector.rebuildCalculation(pricingContext, context);
|
|
42
|
+
if (!calculated?.length) return null;
|
|
43
|
+
|
|
44
|
+
const pricing = DeliveryPricingDirector.calculationSheet(pricingContext, calculated);
|
|
45
|
+
const orderPrice = pricing.total({ useNetPrice });
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
amount: orderPrice.amount,
|
|
49
|
+
currencyCode: orderPrice.currencyCode,
|
|
50
|
+
countryCode,
|
|
51
|
+
isTaxable: pricing.taxSum() > 0,
|
|
52
|
+
isNetPrice: useNetPrice,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DeliveryDirector } from '@unchainedshop/core';
|
|
2
|
+
import { Context } from '../../context.js';
|
|
3
|
+
import { DeliveryProvider } from '@unchainedshop/core-delivery';
|
|
4
|
+
import { DeliveryProviderInterface } from './delivery-provider-interface.js';
|
|
5
|
+
|
|
6
|
+
export const DeliveryProviderPickUp = {
|
|
7
|
+
...DeliveryProviderInterface,
|
|
8
|
+
async pickUpLocations(provider: DeliveryProvider, _: never, context: Context) {
|
|
9
|
+
const director = await DeliveryDirector.actions(provider, {}, context);
|
|
10
|
+
return director.pickUpLocations() || [];
|
|
11
|
+
},
|
|
12
|
+
};
|
|
@@ -1,73 +1,27 @@
|
|
|
1
1
|
import { Context } from '../../context.js';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
DeliveryProvider as DeliveryProviderActual,
|
|
4
|
+
DeliveryProviderType,
|
|
5
|
+
} from '@unchainedshop/core-delivery';
|
|
6
|
+
import { objectInvert } from '@unchainedshop/utils';
|
|
7
|
+
import { DeliveryProviderInterface } from './delivery-provider-interface.js';
|
|
8
|
+
|
|
9
|
+
const DeliveryProviderMap = {
|
|
10
|
+
DeliveryProviderShipping: DeliveryProviderType.SHIPPING,
|
|
11
|
+
DeliveryProviderPickUp: DeliveryProviderType.PICKUP,
|
|
12
|
+
};
|
|
4
13
|
|
|
5
14
|
export const DeliveryProvider = {
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
async isActive(deliveryProvider: DeliveryProviderType, _: never, requestContext: Context) {
|
|
17
|
-
const director = await DeliveryDirector.actions(deliveryProvider, {}, requestContext);
|
|
18
|
-
return Boolean(director.isActive());
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
async configurationError(deliveryProvider: DeliveryProviderType, _: never, requestContext: Context) {
|
|
22
|
-
const director = await DeliveryDirector.actions(deliveryProvider, {}, requestContext);
|
|
23
|
-
return director.configurationError();
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
async simulatedPrice(
|
|
27
|
-
deliveryProvider: DeliveryProviderType,
|
|
28
|
-
{
|
|
29
|
-
currencyCode: forcedCurrencyCode,
|
|
30
|
-
orderId,
|
|
31
|
-
useNetPrice,
|
|
32
|
-
context: providerContext,
|
|
33
|
-
}: {
|
|
34
|
-
currencyCode?: string;
|
|
35
|
-
orderId: string;
|
|
36
|
-
useNetPrice?: boolean;
|
|
37
|
-
context: any;
|
|
38
|
-
},
|
|
39
|
-
requestContext: Context,
|
|
40
|
-
) {
|
|
41
|
-
const { loaders, countryCode, user } = requestContext;
|
|
42
|
-
|
|
43
|
-
const order = await loaders.orderLoader.load({ orderId });
|
|
44
|
-
const currencyCode = forcedCurrencyCode || order?.currencyCode || requestContext.currencyCode;
|
|
45
|
-
const pricingContext = {
|
|
46
|
-
countryCode,
|
|
47
|
-
currencyCode,
|
|
48
|
-
provider: deliveryProvider,
|
|
49
|
-
order,
|
|
50
|
-
providerContext,
|
|
51
|
-
user: user!,
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const calculated = await DeliveryPricingDirector.rebuildCalculation(pricingContext, requestContext);
|
|
55
|
-
|
|
56
|
-
if (!calculated || !calculated.length) return null;
|
|
57
|
-
|
|
58
|
-
const pricing = DeliveryPricingDirector.calculationSheet(pricingContext, calculated);
|
|
59
|
-
|
|
60
|
-
const orderPrice = pricing.total({ useNetPrice }) as {
|
|
61
|
-
amount: number;
|
|
62
|
-
currencyCode: string;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
return {
|
|
66
|
-
amount: orderPrice.amount,
|
|
67
|
-
currencyCode: orderPrice.currencyCode,
|
|
68
|
-
countryCode,
|
|
69
|
-
isTaxable: pricing.taxSum() > 0,
|
|
70
|
-
isNetPrice: useNetPrice,
|
|
71
|
-
};
|
|
15
|
+
__resolveType: async (obj: DeliveryProviderActual, { loaders }: Context) => {
|
|
16
|
+
const provider = await loaders.deliveryProviderLoader.load({
|
|
17
|
+
deliveryProviderId: obj._id,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const invertedProductTypes = objectInvert(DeliveryProviderMap);
|
|
21
|
+
if (provider) {
|
|
22
|
+
return invertedProductTypes[provider.type];
|
|
23
|
+
}
|
|
24
|
+
return invertedProductTypes[DeliveryProviderType.SHIPPING];
|
|
72
25
|
},
|
|
26
|
+
...DeliveryProviderInterface,
|
|
73
27
|
};
|
|
@@ -67,6 +67,8 @@ import { Web3Address } from './web3-address.js';
|
|
|
67
67
|
import { LoginMethodResponse } from './login-method-response-types.js';
|
|
68
68
|
import { ProductSearchResult } from './product-search-result-types.js';
|
|
69
69
|
import { OrderStatistics } from './order/order-statistics-types.js';
|
|
70
|
+
import { DeliveryProviderPickUp } from './delivery-provider-pickup-types.js';
|
|
71
|
+
import { DeliveryProviderShipping } from './delivery-provider-shipping-types.js';
|
|
70
72
|
|
|
71
73
|
const types = {
|
|
72
74
|
Assortment,
|
|
@@ -81,6 +83,8 @@ const types = {
|
|
|
81
83
|
Country,
|
|
82
84
|
Currency,
|
|
83
85
|
DeliveryProvider,
|
|
86
|
+
DeliveryProviderPickUp,
|
|
87
|
+
DeliveryProviderShipping,
|
|
84
88
|
Dimensions,
|
|
85
89
|
Enrollment,
|
|
86
90
|
EnrollmentDelivery,
|
|
@@ -19,11 +19,25 @@ export const Price = {
|
|
|
19
19
|
},
|
|
20
20
|
amount(obj: PriceType) {
|
|
21
21
|
if (obj.amount) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
/*
|
|
23
|
+
Why toFixed(0) Is Actually Reliable
|
|
24
|
+
For integer rounding specifically:
|
|
25
|
+
|
|
26
|
+
Half-values are exact: Numbers like 0.5, 1.5, 2.5 can be represented exactly in binary floating-point (they're powers of 2), so they round correctly.
|
|
27
|
+
Floating-point errors are tiny: Even with calculation errors, they're usually on the order of 0.0000000001, which won't affect rounding to the nearest integer.
|
|
28
|
+
Integer boundaries are far apart: Unlike toFixed(2) where the difference between 1.004 and 1.005 matters, for toFixed(0) you need errors approaching 0.5 to cause problems.
|
|
29
|
+
|
|
30
|
+
Theoretical Edge Cases
|
|
31
|
+
The only cases where toFixed(0) might fail would be:
|
|
32
|
+
javascript// Extremely contrived calculation that should equal exactly 0.5
|
|
33
|
+
// but might be 0.49999999999999994 (would round to 0 instead of 1)
|
|
34
|
+
|
|
35
|
+
// Very large numbers where precision is lost entirely
|
|
36
|
+
(9007199254740992.5).toFixed(0) // Might have issues past MAX_SAFE_INTEGER
|
|
37
|
+
|
|
38
|
+
// But in practice, these are incredibly rare
|
|
39
|
+
*/
|
|
40
|
+
return Math.round(obj.amount).toFixed(0);
|
|
27
41
|
}
|
|
28
42
|
return 0;
|
|
29
43
|
},
|
|
@@ -25,7 +25,44 @@ export default [
|
|
|
25
25
|
WRONG_CREDENTIALS
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
interface DeliveryProvider {
|
|
29
|
+
_id: ID!
|
|
30
|
+
created: DateTime
|
|
31
|
+
updated: DateTime
|
|
32
|
+
deleted: DateTime
|
|
33
|
+
type: DeliveryProviderType
|
|
34
|
+
interface: DeliveryInterface
|
|
35
|
+
configuration: JSON
|
|
36
|
+
configurationError: DeliveryProviderError
|
|
37
|
+
isActive: Boolean
|
|
38
|
+
simulatedPrice(
|
|
39
|
+
currencyCode: String
|
|
40
|
+
useNetPrice: Boolean = false
|
|
41
|
+
orderId: ID
|
|
42
|
+
context: JSON
|
|
43
|
+
): Price @cacheControl(scope: PRIVATE, maxAge: 10)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type DeliveryProviderPickUp implements DeliveryProvider @cacheControl(maxAge: 60) {
|
|
47
|
+
_id: ID!
|
|
48
|
+
created: DateTime
|
|
49
|
+
updated: DateTime
|
|
50
|
+
deleted: DateTime
|
|
51
|
+
type: DeliveryProviderType
|
|
52
|
+
interface: DeliveryInterface
|
|
53
|
+
configuration: JSON
|
|
54
|
+
configurationError: DeliveryProviderError
|
|
55
|
+
isActive: Boolean
|
|
56
|
+
simulatedPrice(
|
|
57
|
+
currencyCode: String
|
|
58
|
+
useNetPrice: Boolean = false
|
|
59
|
+
orderId: ID
|
|
60
|
+
context: JSON
|
|
61
|
+
): Price @cacheControl(scope: PRIVATE, maxAge: 10)
|
|
62
|
+
pickUpLocations: [PickUpLocation!]!
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
type DeliveryProviderShipping implements DeliveryProvider @cacheControl(maxAge: 60) {
|
|
29
66
|
_id: ID!
|
|
30
67
|
created: DateTime
|
|
31
68
|
updated: DateTime
|
|
@@ -33,8 +33,9 @@ export default [
|
|
|
33
33
|
delivered: DateTime
|
|
34
34
|
fee: Price
|
|
35
35
|
discounts: [OrderDeliveryDiscount!]
|
|
36
|
-
pickUpLocations: [
|
|
37
|
-
|
|
36
|
+
pickUpLocations: [PickUpLocation!]!
|
|
37
|
+
@deprecated(reason: "Use DeliveryProvider.pickupLocations instead")
|
|
38
|
+
activePickUpLocation: PickUpLocation
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
type OrderDeliveryShipping implements OrderDelivery {
|