@unchainedshop/core-orders 4.0.0-rc.9 → 4.0.1
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/db/OrderDeliveriesCollection.d.ts +2 -2
- package/lib/db/OrderDeliveriesCollection.d.ts.map +1 -1
- package/lib/db/OrderDeliveriesSchema.d.ts +3 -0
- package/lib/db/OrderDeliveriesSchema.d.ts.map +1 -0
- package/lib/db/OrderDeliveriesSchema.js +20 -0
- package/lib/db/OrderDeliveriesSchema.js.map +1 -0
- package/lib/db/OrderDiscountTrigger.d.ts +5 -0
- package/lib/db/OrderDiscountTrigger.d.ts.map +1 -0
- package/lib/db/OrderDiscountTrigger.js +6 -0
- package/lib/db/OrderDiscountTrigger.js.map +1 -0
- package/lib/db/OrderDiscountsCollection.d.ts +2 -2
- package/lib/db/OrderDiscountsCollection.d.ts.map +1 -1
- package/lib/db/OrderDiscountsSchema.d.ts +3 -0
- package/lib/db/OrderDiscountsSchema.d.ts.map +1 -0
- package/lib/db/OrderDiscountsSchema.js +12 -0
- package/lib/db/OrderDiscountsSchema.js.map +1 -0
- package/lib/db/OrderPaymentsCollection.d.ts +3 -3
- package/lib/db/OrderPaymentsCollection.d.ts.map +1 -1
- package/lib/db/OrderPaymentsSchema.d.ts +3 -0
- package/lib/db/OrderPaymentsSchema.d.ts.map +1 -0
- package/lib/db/OrderPaymentsSchema.js +20 -0
- package/lib/db/OrderPaymentsSchema.js.map +1 -0
- package/lib/db/OrderPositionsCollection.d.ts +2 -3
- package/lib/db/OrderPositionsCollection.d.ts.map +1 -1
- package/lib/db/OrderPositionsCollection.js.map +1 -1
- package/lib/db/OrderPositionsSchema.d.ts +3 -0
- package/lib/db/OrderPositionsSchema.d.ts.map +1 -0
- package/lib/db/OrderPositionsSchema.js +37 -0
- package/lib/db/OrderPositionsSchema.js.map +1 -0
- package/lib/db/OrdersCollection.d.ts +5 -1
- package/lib/db/OrdersCollection.d.ts.map +1 -1
- package/lib/db/OrdersCollection.js +25 -21
- package/lib/db/OrdersCollection.js.map +1 -1
- package/lib/db/OrdersSchema.d.ts +3 -0
- package/lib/db/OrdersSchema.d.ts.map +1 -0
- package/lib/db/OrdersSchema.js +30 -0
- package/lib/db/OrdersSchema.js.map +1 -0
- package/lib/director/OrderDiscountAdapter.d.ts +4 -0
- package/lib/director/OrderDiscountAdapter.d.ts.map +1 -0
- package/lib/director/OrderDiscountAdapter.js +3 -0
- package/lib/director/OrderDiscountAdapter.js.map +1 -0
- package/lib/director/OrderDiscountConfiguration.d.ts +6 -0
- package/lib/director/OrderDiscountConfiguration.d.ts.map +1 -0
- package/lib/director/OrderDiscountConfiguration.js +2 -0
- package/lib/director/OrderDiscountConfiguration.js.map +1 -0
- package/lib/director/OrderDiscountDirector.d.ts +3 -0
- package/lib/director/OrderDiscountDirector.d.ts.map +1 -0
- package/lib/director/OrderDiscountDirector.js +3 -0
- package/lib/director/OrderDiscountDirector.js.map +1 -0
- package/lib/director/OrderPricingAdapter.d.ts +4 -0
- package/lib/director/OrderPricingAdapter.d.ts.map +1 -0
- package/lib/director/OrderPricingAdapter.js +25 -0
- package/lib/director/OrderPricingAdapter.js.map +1 -0
- package/lib/director/OrderPricingDirector.d.ts +3 -0
- package/lib/director/OrderPricingDirector.d.ts.map +1 -0
- package/lib/director/OrderPricingDirector.js +39 -0
- package/lib/director/OrderPricingDirector.js.map +1 -0
- package/lib/director/OrderPricingSheet.d.ts +4 -0
- package/lib/director/OrderPricingSheet.d.ts.map +1 -0
- package/lib/director/OrderPricingSheet.js +101 -0
- package/lib/director/OrderPricingSheet.js.map +1 -0
- package/lib/migrations/20250502111800-currency-code copy.d.ts +3 -0
- package/lib/migrations/20250502111800-currency-code copy.d.ts.map +1 -0
- package/lib/migrations/20250502111800-currency-code copy.js +14 -0
- package/lib/migrations/20250502111800-currency-code copy.js.map +1 -0
- package/lib/migrations/20251020080000-position-config.d.ts +3 -0
- package/lib/migrations/20251020080000-position-config.d.ts.map +1 -0
- package/lib/migrations/20251020080000-position-config.js +14 -0
- package/lib/migrations/20251020080000-position-config.js.map +1 -0
- package/lib/module/buildFindSelector.d.ts +1 -1
- package/lib/module/buildFindSelector.d.ts.map +1 -1
- package/lib/module/buildFindSelector.js +17 -1
- package/lib/module/buildFindSelector.js.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.d.ts +9 -6
- package/lib/module/configureOrderDeliveriesModule.d.ts.map +1 -1
- package/lib/module/configureOrderDeliveriesModule.js +14 -10
- package/lib/module/configureOrderDeliveriesModule.js.map +1 -1
- package/lib/module/configureOrderDiscountsModule.d.ts +5 -5
- package/lib/module/configureOrderDiscountsModule.d.ts.map +1 -1
- package/lib/module/configureOrderDiscountsModule.js +3 -3
- package/lib/module/configureOrderDiscountsModule.js.map +1 -1
- package/lib/module/configureOrderPaymentsModule.d.ts +10 -7
- package/lib/module/configureOrderPaymentsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPaymentsModule.js +18 -10
- package/lib/module/configureOrderPaymentsModule.js.map +1 -1
- package/lib/module/configureOrderPositionsModule.d.ts +17 -6
- package/lib/module/configureOrderPositionsModule.d.ts.map +1 -1
- package/lib/module/configureOrderPositionsModule.js +25 -5
- package/lib/module/configureOrderPositionsModule.js.map +1 -1
- package/lib/module/configureOrdersModule-mutations.d.ts +14 -13
- package/lib/module/configureOrdersModule-mutations.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-mutations.js +19 -11
- package/lib/module/configureOrdersModule-mutations.js.map +1 -1
- package/lib/module/configureOrdersModule-processing.d.ts +14 -0
- package/lib/module/configureOrdersModule-processing.d.ts.map +1 -0
- package/lib/module/configureOrdersModule-processing.js +348 -0
- package/lib/module/configureOrdersModule-processing.js.map +1 -0
- package/lib/module/configureOrdersModule-queries.d.ts +21 -6
- package/lib/module/configureOrdersModule-queries.d.ts.map +1 -1
- package/lib/module/configureOrdersModule-queries.js +19 -84
- package/lib/module/configureOrdersModule-queries.js.map +1 -1
- package/lib/module/configureOrdersModule-transformations.d.ts +6 -0
- package/lib/module/configureOrdersModule-transformations.d.ts.map +1 -0
- package/lib/module/configureOrdersModule-transformations.js +112 -0
- package/lib/module/configureOrdersModule-transformations.js.map +1 -0
- package/lib/module/configureOrdersModule.d.ts +154 -21
- package/lib/module/configureOrdersModule.d.ts.map +1 -1
- package/lib/module/configureOrdersModule.js +9 -3
- package/lib/module/configureOrdersModule.js.map +1 -1
- package/lib/orders-settings.d.ts +9 -13
- package/lib/orders-settings.d.ts.map +1 -1
- package/lib/orders-settings.js +8 -8
- package/lib/orders-settings.js.map +1 -1
- package/lib/service/migrateOrderCartService.d.ts +3 -0
- package/lib/service/migrateOrderCartService.d.ts.map +1 -0
- package/lib/service/migrateOrderCartService.js +32 -0
- package/lib/service/migrateOrderCartService.js.map +1 -0
- package/lib/service/nextUserCartService.d.ts +3 -0
- package/lib/service/nextUserCartService.d.ts.map +1 -0
- package/lib/service/nextUserCartService.js +34 -0
- package/lib/service/nextUserCartService.js.map +1 -0
- package/lib/service/orderServices.d.ts +3 -0
- package/lib/service/orderServices.d.ts.map +1 -0
- package/lib/service/orderServices.js +7 -0
- package/lib/service/orderServices.js.map +1 -0
- package/package.json +4 -4
- package/src/db/OrderDeliveriesCollection.ts +2 -2
- package/src/db/OrderDiscountsCollection.ts +2 -2
- package/src/db/OrderPaymentsCollection.ts +3 -3
- package/src/db/OrderPositionsCollection.ts +2 -3
- package/src/db/OrdersCollection.ts +31 -22
- package/src/module/buildFindSelector.ts +19 -1
- package/src/module/configureOrderDeliveriesModule.ts +28 -16
- package/src/module/configureOrderDiscountsModule.ts +11 -11
- package/src/module/configureOrderPaymentsModule.ts +31 -20
- package/src/module/configureOrderPositionsModule.ts +48 -17
- package/src/module/configureOrdersModule-mutations.ts +46 -44
- package/src/module/configureOrdersModule-queries.ts +42 -91
- package/src/module/configureOrdersModule.ts +21 -33
- package/src/orders-settings.ts +21 -20
|
@@ -6,37 +6,16 @@ import { OrderPaymentsCollection } from '../db/OrderPaymentsCollection.js';
|
|
|
6
6
|
import { OrderPositionsCollection } from '../db/OrderPositionsCollection.js';
|
|
7
7
|
import { OrdersCollection, Order, OrderStatus } from '../db/OrdersCollection.js';
|
|
8
8
|
import { ordersSettings, OrdersSettingsOptions } from '../orders-settings.js';
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} from './
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { configureOrderPositionsModule, OrderPositionsModule } from './configureOrderPositionsModule.js';
|
|
16
|
-
import { configureOrderModuleMutations, OrderMutations } from './configureOrdersModule-mutations.js';
|
|
17
|
-
import { configureOrdersModuleQueries, OrderQueries } from './configureOrdersModule-queries.js';
|
|
9
|
+
import { configureOrderDeliveriesModule } from './configureOrderDeliveriesModule.js';
|
|
10
|
+
import { configureOrderDiscountsModule } from './configureOrderDiscountsModule.js';
|
|
11
|
+
import { configureOrderPaymentsModule } from './configureOrderPaymentsModule.js';
|
|
12
|
+
import { configureOrderPositionsModule } from './configureOrderPositionsModule.js';
|
|
13
|
+
import { configureOrderModuleMutations } from './configureOrdersModule-mutations.js';
|
|
14
|
+
import { configureOrdersModuleQueries } from './configureOrdersModule-queries.js';
|
|
18
15
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
19
16
|
|
|
20
17
|
import renameCurrencyCode from '../migrations/20250502111800-currency-code.js';
|
|
21
18
|
|
|
22
|
-
export type OrdersModule = OrderQueries &
|
|
23
|
-
OrderMutations & {
|
|
24
|
-
// Sub entities
|
|
25
|
-
deliveries: OrderDeliveriesModule;
|
|
26
|
-
discounts: OrderDiscountsModule;
|
|
27
|
-
positions: OrderPositionsModule;
|
|
28
|
-
payments: OrderPaymentsModule;
|
|
29
|
-
|
|
30
|
-
updateStatus: (orderId: string, params: { status: OrderStatus; info?: string }) => Promise<Order>;
|
|
31
|
-
acquireLock: (
|
|
32
|
-
orderId: string,
|
|
33
|
-
identifier: string,
|
|
34
|
-
timeout?: number,
|
|
35
|
-
) => Promise<{ release: () => void }>;
|
|
36
|
-
setDeliveryProvider: (orderId: string, deliveryProviderId: string) => Promise<Order>;
|
|
37
|
-
setPaymentProvider: (orderId: string, paymentProviderId: string) => Promise<Order>;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
19
|
// @kontsedal/locco uses a deprecated way of importing files in ESM (node16 behavior)
|
|
41
20
|
const require = createRequire(import.meta.url);
|
|
42
21
|
const { Locker, MongoAdapter } = require('@kontsedal/locco');
|
|
@@ -52,7 +31,7 @@ export const configureOrdersModule = async ({
|
|
|
52
31
|
db,
|
|
53
32
|
migrationRepository,
|
|
54
33
|
options: orderOptions = {},
|
|
55
|
-
}: ModuleInput<OrdersSettingsOptions>)
|
|
34
|
+
}: ModuleInput<OrdersSettingsOptions>) => {
|
|
56
35
|
// Migration v3 -> v4
|
|
57
36
|
renameCurrencyCode(migrationRepository);
|
|
58
37
|
|
|
@@ -117,10 +96,14 @@ export const configureOrdersModule = async ({
|
|
|
117
96
|
positions: orderPositionsModule,
|
|
118
97
|
payments: orderPaymentsModule,
|
|
119
98
|
|
|
120
|
-
updateStatus: async (
|
|
99
|
+
updateStatus: async (
|
|
100
|
+
orderId: string,
|
|
101
|
+
{ status, info }: { status: OrderStatus | null; info?: string },
|
|
102
|
+
) => {
|
|
121
103
|
const selector = generateDbFilterById(orderId);
|
|
122
104
|
const order = await Orders.findOne(selector, {});
|
|
123
105
|
|
|
106
|
+
if (!order) return null;
|
|
124
107
|
if (order.status === status) return order;
|
|
125
108
|
|
|
126
109
|
const date = new Date();
|
|
@@ -197,7 +180,7 @@ export const configureOrdersModule = async ({
|
|
|
197
180
|
return await locker.lock(`order:${identifier}:${orderId}`, timeout).acquire();
|
|
198
181
|
},
|
|
199
182
|
|
|
200
|
-
setDeliveryProvider: async (orderId, deliveryProviderId) => {
|
|
183
|
+
setDeliveryProvider: async (orderId: string, deliveryProviderId: string) => {
|
|
201
184
|
const delivery = await OrderDeliveries.findOne({
|
|
202
185
|
orderId,
|
|
203
186
|
deliveryProviderId,
|
|
@@ -215,7 +198,7 @@ export const configureOrdersModule = async ({
|
|
|
215
198
|
)._id;
|
|
216
199
|
|
|
217
200
|
const order = await Orders.findOneAndUpdate(
|
|
218
|
-
{ _id: orderId },
|
|
201
|
+
{ _id: orderId, deliveryId: { $ne: deliveryId } },
|
|
219
202
|
{
|
|
220
203
|
$set: {
|
|
221
204
|
deliveryId,
|
|
@@ -225,6 +208,7 @@ export const configureOrdersModule = async ({
|
|
|
225
208
|
{ returnDocument: 'after' },
|
|
226
209
|
);
|
|
227
210
|
|
|
211
|
+
if (!order) return null;
|
|
228
212
|
await emit('ORDER_SET_DELIVERY_PROVIDER', {
|
|
229
213
|
order,
|
|
230
214
|
deliveryProviderId,
|
|
@@ -233,7 +217,7 @@ export const configureOrdersModule = async ({
|
|
|
233
217
|
return order;
|
|
234
218
|
},
|
|
235
219
|
|
|
236
|
-
setPaymentProvider: async (orderId, paymentProviderId) => {
|
|
220
|
+
setPaymentProvider: async (orderId: string, paymentProviderId: string) => {
|
|
237
221
|
const payment = await OrderPayments.findOne({
|
|
238
222
|
orderId,
|
|
239
223
|
paymentProviderId,
|
|
@@ -250,14 +234,16 @@ export const configureOrdersModule = async ({
|
|
|
250
234
|
status: null,
|
|
251
235
|
})
|
|
252
236
|
)._id;
|
|
237
|
+
|
|
253
238
|
const order = await Orders.findOneAndUpdate(
|
|
254
|
-
{ _id: orderId },
|
|
239
|
+
{ _id: orderId, paymentId: { $ne: paymentId } },
|
|
255
240
|
{
|
|
256
241
|
$set: { paymentId, updated: new Date() },
|
|
257
242
|
},
|
|
258
243
|
{ returnDocument: 'after' },
|
|
259
244
|
);
|
|
260
245
|
|
|
246
|
+
if (!order) return null;
|
|
261
247
|
await emit('ORDER_SET_PAYMENT_PROVIDER', {
|
|
262
248
|
order,
|
|
263
249
|
paymentProviderId,
|
|
@@ -267,3 +253,5 @@ export const configureOrdersModule = async ({
|
|
|
267
253
|
},
|
|
268
254
|
};
|
|
269
255
|
};
|
|
256
|
+
|
|
257
|
+
export type OrdersModule = Awaited<ReturnType<typeof configureOrdersModule>>;
|
package/src/orders-settings.ts
CHANGED
|
@@ -5,18 +5,20 @@ export interface OrderSettingsOrderPositionValidation<Product = unknown> {
|
|
|
5
5
|
order: Order;
|
|
6
6
|
product: Product;
|
|
7
7
|
quantityDiff?: number;
|
|
8
|
-
configuration?: { key: string; value: string }[];
|
|
8
|
+
configuration?: { key: string; value: string }[] | null;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export interface
|
|
12
|
-
ensureUserHasCart
|
|
13
|
-
orderNumberHashFn
|
|
14
|
-
validateOrderPosition
|
|
11
|
+
export interface OrdersSettings {
|
|
12
|
+
ensureUserHasCart: boolean;
|
|
13
|
+
orderNumberHashFn: (order: Order, index: number) => string;
|
|
14
|
+
validateOrderPosition: <UnchainedAPI = unknown>(
|
|
15
15
|
validationParams: OrderSettingsOrderPositionValidation,
|
|
16
16
|
unchainedAPI: UnchainedAPI,
|
|
17
17
|
) => Promise<void>;
|
|
18
|
-
lockOrderDuringCheckout
|
|
18
|
+
lockOrderDuringCheckout: boolean;
|
|
19
|
+
configureSettings: (options?: OrdersSettingsOptions) => void;
|
|
19
20
|
}
|
|
21
|
+
export type OrdersSettingsOptions = Omit<Partial<OrdersSettings>, 'configureSettings'>;
|
|
20
22
|
|
|
21
23
|
export const defaultValidateOrderPosition = async ({ product }, { modules }: any) => {
|
|
22
24
|
if (!modules.products.isActive(product)) {
|
|
@@ -24,21 +26,20 @@ export const defaultValidateOrderPosition = async ({ product }, { modules }: any
|
|
|
24
26
|
}
|
|
25
27
|
};
|
|
26
28
|
|
|
27
|
-
export const ordersSettings = {
|
|
28
|
-
ensureUserHasCart:
|
|
29
|
-
orderNumberHashFn:
|
|
30
|
-
validateOrderPosition:
|
|
29
|
+
export const ordersSettings: OrdersSettings = {
|
|
30
|
+
ensureUserHasCart: false,
|
|
31
|
+
orderNumberHashFn: generateRandomHash,
|
|
32
|
+
validateOrderPosition: defaultValidateOrderPosition,
|
|
31
33
|
lockOrderDuringCheckout: false,
|
|
32
|
-
|
|
33
34
|
configureSettings({
|
|
34
|
-
ensureUserHasCart
|
|
35
|
-
orderNumberHashFn
|
|
36
|
-
validateOrderPosition
|
|
37
|
-
lockOrderDuringCheckout
|
|
38
|
-
}
|
|
39
|
-
this.ensureUserHasCart = ensureUserHasCart;
|
|
40
|
-
this.orderNumberHashFn = orderNumberHashFn;
|
|
41
|
-
this.validateOrderPosition = validateOrderPosition;
|
|
42
|
-
this.lockOrderDuringCheckout = lockOrderDuringCheckout;
|
|
35
|
+
ensureUserHasCart,
|
|
36
|
+
orderNumberHashFn,
|
|
37
|
+
validateOrderPosition,
|
|
38
|
+
lockOrderDuringCheckout,
|
|
39
|
+
} = {}) {
|
|
40
|
+
this.ensureUserHasCart = ensureUserHasCart || false;
|
|
41
|
+
this.orderNumberHashFn = orderNumberHashFn || generateRandomHash;
|
|
42
|
+
this.validateOrderPosition = validateOrderPosition || defaultValidateOrderPosition;
|
|
43
|
+
this.lockOrderDuringCheckout = lockOrderDuringCheckout || false;
|
|
43
44
|
},
|
|
44
45
|
};
|