@final-commerce/command-frame 0.9.0-preprod.2 → 0.9.0-preprod.3
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/dist/actions/get-current-cart/mock.d.ts +1 -1
- package/dist/actions/get-current-cart/mock.js +6 -3
- package/dist/actions/get-current-cart/types.d.ts +7 -1
- package/dist/actions/get-orders/mock.js +19 -1
- package/dist/actions/get-orders/types.d.ts +7 -1
- package/dist/actions/set-scheduled-for/action.d.ts +6 -0
- package/dist/actions/set-scheduled-for/action.js +8 -0
- package/dist/actions/set-scheduled-for/mock.d.ts +4 -0
- package/dist/actions/set-scheduled-for/mock.js +45 -0
- package/dist/actions/set-scheduled-for/types.d.ts +22 -0
- package/dist/actions/set-scheduled-for/types.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/projects/render/mocks.js +2 -0
- package/dist/projects/render/types.d.ts +2 -1
- package/package.json +2 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { GetCurrentCart } from
|
|
1
|
+
import { GetCurrentCart } from './types';
|
|
2
2
|
export declare const mockGetCurrentCart: GetCurrentCart;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { MOCK_CART, safeSerialize } from
|
|
1
|
+
import { MOCK_CART, safeSerialize } from '../../demo/database';
|
|
2
2
|
export const mockGetCurrentCart = async () => {
|
|
3
|
-
console.log(
|
|
3
|
+
console.log('[Mock] getCurrentCart called');
|
|
4
4
|
return {
|
|
5
5
|
success: true,
|
|
6
6
|
cart: safeSerialize(MOCK_CART),
|
|
7
|
-
|
|
7
|
+
// Every mock tender settles the whole sale and clears the cart, so the demo cart
|
|
8
|
+
// never holds an order with money on it — nothing to lock.
|
|
9
|
+
itemsLocked: false,
|
|
10
|
+
timestamp: new Date().toISOString(),
|
|
8
11
|
};
|
|
9
12
|
};
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import { CFActiveCart } from
|
|
1
|
+
import { CFActiveCart } from '../../CommonTypes';
|
|
2
2
|
export interface GetCurrentCartResponse {
|
|
3
3
|
success: boolean;
|
|
4
4
|
cart: CFActiveCart;
|
|
5
|
+
/**
|
|
6
|
+
* `true` while the order in this cart has any payment on it (a split leg, a part payment,
|
|
7
|
+
* or paid in full): its items, amounts and customer can no longer be changed — the
|
|
8
|
+
* value-changing cart commands and clearCart refuse. Absent on hosts that predate the lock.
|
|
9
|
+
*/
|
|
10
|
+
itemsLocked?: boolean;
|
|
5
11
|
timestamp: string;
|
|
6
12
|
}
|
|
7
13
|
export type GetCurrentCart = () => Promise<GetCurrentCartResponse>;
|
|
@@ -5,7 +5,7 @@ export const mockGetOrders = async (params) => {
|
|
|
5
5
|
let orders = safeSerialize([...MOCK_ORDERS, ...MOCK_PARKED_ORDERS]);
|
|
6
6
|
// Filter simulation
|
|
7
7
|
if (params) {
|
|
8
|
-
const { customerId, status, sessionId, paymentState, fulfillmentState, outletId, assignedUserId, inCart, orderType, customStatusId, searchValue, limit, offset, sortBy, sortDirection, } = params;
|
|
8
|
+
const { customerId, status, sessionId, paymentState, fulfillmentState, outletId, assignedUserId, inCart, orderType, customStatusId, scheduled, scheduledFrom, scheduledTo, searchValue, limit, offset, sortBy, sortDirection, } = params;
|
|
9
9
|
// 1. Filtering
|
|
10
10
|
if (customerId) {
|
|
11
11
|
orders = orders.filter((o) => o.customer && '_id' in o.customer && o.customer._id === customerId);
|
|
@@ -43,6 +43,19 @@ export const mockGetOrders = async (params) => {
|
|
|
43
43
|
if (ids.length)
|
|
44
44
|
orders = orders.filter((o) => !!o.customStatus && ids.includes(o.customStatus.id));
|
|
45
45
|
}
|
|
46
|
+
// Requested time (setScheduledFor). ISO strings in UTC compare correctly as strings.
|
|
47
|
+
const scheduledOf = (o) => o.scheduledFor ?? null;
|
|
48
|
+
if (typeof scheduled === 'boolean') {
|
|
49
|
+
orders = orders.filter((o) => (scheduledOf(o) !== null) === scheduled);
|
|
50
|
+
}
|
|
51
|
+
if (scheduledFrom) {
|
|
52
|
+
const from = new Date(scheduledFrom).toISOString();
|
|
53
|
+
orders = orders.filter((o) => (scheduledOf(o) ?? '') !== '' && scheduledOf(o) >= from);
|
|
54
|
+
}
|
|
55
|
+
if (scheduledTo) {
|
|
56
|
+
const to = new Date(scheduledTo).toISOString();
|
|
57
|
+
orders = orders.filter((o) => (scheduledOf(o) ?? '') !== '' && scheduledOf(o) <= to);
|
|
58
|
+
}
|
|
46
59
|
if (typeof inCart === 'boolean') {
|
|
47
60
|
// Mirrors common's isInCart: the flag when present, else the legacy reading.
|
|
48
61
|
const orderInCart = (o) => o.inCart != null
|
|
@@ -70,6 +83,11 @@ export const mockGetOrders = async (params) => {
|
|
|
70
83
|
orders.sort((a, b) => {
|
|
71
84
|
let valA = a[sortBy];
|
|
72
85
|
let valB = b[sortBy];
|
|
86
|
+
// Like the host: a missing time sorts as '' (first when ascending).
|
|
87
|
+
if (sortBy === 'scheduledFor') {
|
|
88
|
+
valA = valA ?? '';
|
|
89
|
+
valB = valB ?? '';
|
|
90
|
+
}
|
|
73
91
|
// Handle nested sort fields if necessary, basic support for now
|
|
74
92
|
if (!valA && sortBy === 'createdAt')
|
|
75
93
|
valA = a.createdAt || '';
|
|
@@ -24,12 +24,18 @@ export interface GetOrdersParams {
|
|
|
24
24
|
orderType?: string | string[];
|
|
25
25
|
/** Custom status id(s) set with setOrderStatus, e.g. 'in-kitchen'. A list matches any of them. */
|
|
26
26
|
customStatusId?: string | string[];
|
|
27
|
+
/** true: only orders with a time (setScheduledFor); false: only "as soon as possible" orders (no time). */
|
|
28
|
+
scheduled?: boolean;
|
|
29
|
+
/** Only orders scheduled at or after this ISO 8601 date-time. Orders with no time never match. */
|
|
30
|
+
scheduledFrom?: string;
|
|
31
|
+
/** Only orders scheduled at or before this ISO 8601 date-time. Orders with no time never match. */
|
|
32
|
+
scheduledTo?: string;
|
|
27
33
|
/** Default: 50. */
|
|
28
34
|
limit?: number;
|
|
29
35
|
/** Default: 0. */
|
|
30
36
|
offset?: number;
|
|
31
37
|
searchValue?: string;
|
|
32
|
-
/** Default: 'createdAt'. */
|
|
38
|
+
/** Default: 'createdAt'. 'scheduledFor' sorts by the customer's requested time — orders with no time come first ascending. */
|
|
33
39
|
sortBy?: string;
|
|
34
40
|
/** Default: 'descending'. */
|
|
35
41
|
sortDirection?: 'ascending' | 'descending';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set scheduled-for action
|
|
3
|
+
* Calls the setScheduledFor action on the parent window
|
|
4
|
+
*/
|
|
5
|
+
import { commandFrameClient } from '../../client';
|
|
6
|
+
export const setScheduledFor = async (params) => {
|
|
7
|
+
return await commandFrameClient.call('setScheduledFor', params);
|
|
8
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { MOCK_ORDERS, MOCK_PARKED_ORDERS, mockPublishEvent } from '../../demo/database';
|
|
2
|
+
/** Time for the demo's live cart, which has no order until it is paid or parked. */
|
|
3
|
+
let mockCartScheduledFor = null;
|
|
4
|
+
/**
|
|
5
|
+
* An ISO 8601 date-time WITH a zone — 'Z' or an offset. A zoneless time ('2026-10-13T19:00') is
|
|
6
|
+
* refused: it would mean a different moment on every device. Date.parse alone is too lenient
|
|
7
|
+
* (it accepts strings like "tomorrow at 7"), so the shape is checked first.
|
|
8
|
+
*/
|
|
9
|
+
const ISO_DATE_TIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/;
|
|
10
|
+
/** The YYYY-MM-DD part is a real day — Date.parse quietly rolls "Feb 30" over to March 2. */
|
|
11
|
+
const isCalendarDate = (text) => {
|
|
12
|
+
const [y, m, d] = text.slice(0, 10).split('-').map(Number);
|
|
13
|
+
const day = new Date(Date.UTC(y, m - 1, d));
|
|
14
|
+
return day.getUTCFullYear() === y && day.getUTCMonth() === m - 1 && day.getUTCDate() === d;
|
|
15
|
+
};
|
|
16
|
+
/** ISO 8601 in, UTC ISO 8601 out; null stays null (as soon as possible). */
|
|
17
|
+
export const normalizeScheduledFor = (value) => {
|
|
18
|
+
if (value === null)
|
|
19
|
+
return null;
|
|
20
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
21
|
+
throw new Error('setScheduledFor: scheduledFor must be an ISO 8601 date-time or null');
|
|
22
|
+
}
|
|
23
|
+
const text = value.trim();
|
|
24
|
+
const ms = ISO_DATE_TIME.test(text) && isCalendarDate(text) ? Date.parse(text) : NaN;
|
|
25
|
+
if (Number.isNaN(ms)) {
|
|
26
|
+
throw new Error(`setScheduledFor: "${value}" is not an ISO 8601 date-time with Z or an offset`);
|
|
27
|
+
}
|
|
28
|
+
return new Date(ms).toISOString();
|
|
29
|
+
};
|
|
30
|
+
export const mockSetScheduledFor = async (params) => {
|
|
31
|
+
console.log('[Mock] setScheduledFor called', params);
|
|
32
|
+
const scheduledFor = normalizeScheduledFor(params?.scheduledFor);
|
|
33
|
+
const timestamp = new Date().toISOString();
|
|
34
|
+
if (!params.orderId) {
|
|
35
|
+
mockCartScheduledFor = scheduledFor;
|
|
36
|
+
return { success: true, orderId: null, scheduledFor: mockCartScheduledFor, timestamp };
|
|
37
|
+
}
|
|
38
|
+
const order = [...MOCK_ORDERS, ...MOCK_PARKED_ORDERS].find((o) => o._id === params.orderId);
|
|
39
|
+
if (!order) {
|
|
40
|
+
throw new Error(`Order with ID ${params.orderId} not found`);
|
|
41
|
+
}
|
|
42
|
+
order.scheduledFor = scheduledFor;
|
|
43
|
+
mockPublishEvent('orders', 'order-updated', { order });
|
|
44
|
+
return { success: true, orderId: order._id, scheduledFor, timestamp };
|
|
45
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface SetScheduledForParams {
|
|
2
|
+
/**
|
|
3
|
+
* Order to schedule. Omit to target the live cart — including a cart that isn't an
|
|
4
|
+
* order yet; the time is carried onto the order when it's created.
|
|
5
|
+
*/
|
|
6
|
+
orderId?: string;
|
|
7
|
+
/**
|
|
8
|
+
* When the customer wants the order, as an ISO 8601 date-time with Z or an offset (e.g.
|
|
9
|
+
* '2026-10-13T23:00:00.000Z' or '2026-10-13T19:00:00-04:00'), or null for as soon as possible.
|
|
10
|
+
* Stored in UTC.
|
|
11
|
+
*/
|
|
12
|
+
scheduledFor: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface SetScheduledForResponse {
|
|
15
|
+
success: boolean;
|
|
16
|
+
/** The order that was updated, or null when the live cart has no order yet. */
|
|
17
|
+
orderId: string | null;
|
|
18
|
+
/** The time after the call, normalised to UTC ISO 8601 — or null (as soon as possible). */
|
|
19
|
+
scheduledFor: string | null;
|
|
20
|
+
timestamp: string;
|
|
21
|
+
}
|
|
22
|
+
export type SetScheduledFor = (params: SetScheduledForParams) => Promise<SetScheduledForResponse>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export declare const command: {
|
|
|
47
47
|
readonly assignOrderUser: import(".").AssignOrderUser;
|
|
48
48
|
readonly releaseFromCart: import(".").ReleaseFromCart;
|
|
49
49
|
readonly setOrderType: import(".").SetOrderType;
|
|
50
|
+
readonly setScheduledFor: import(".").SetScheduledFor;
|
|
50
51
|
readonly setOrderStatus: import(".").SetOrderStatus;
|
|
51
52
|
readonly getOrderStatuses: import(".").GetOrderStatuses;
|
|
52
53
|
readonly deleteParkedOrder: import(".").DeleteParkedOrder;
|
|
@@ -200,6 +201,7 @@ export type { SetOrderMetadata, SetOrderMetadataParams, SetOrderMetadataResponse
|
|
|
200
201
|
export type { AssignOrderUser, AssignOrderUserParams, AssignOrderUserResponse, } from './actions/assign-order-user/types';
|
|
201
202
|
export type { ReleaseFromCart, ReleaseFromCartResponse } from './actions/release-from-cart/types';
|
|
202
203
|
export type { SetOrderType, SetOrderTypeParams, SetOrderTypeResponse } from './actions/set-order-type/types';
|
|
204
|
+
export type { SetScheduledFor, SetScheduledForParams, SetScheduledForResponse, } from './actions/set-scheduled-for/types';
|
|
203
205
|
export type { SetOrderStatus, SetOrderStatusParams, SetOrderStatusResponse } from './actions/set-order-status/types';
|
|
204
206
|
export type { GetOrderStatuses, GetOrderStatusesResponse } from './actions/get-order-statuses/types';
|
|
205
207
|
export type { DeleteParkedOrder, DeleteParkedOrderParams, DeleteParkedOrderResponse, } from './actions/delete-parked-order/types';
|
package/dist/index.js
CHANGED
|
@@ -47,6 +47,7 @@ import { setOrderMetadata } from './actions/set-order-metadata/action';
|
|
|
47
47
|
import { assignOrderUser } from './actions/assign-order-user/action';
|
|
48
48
|
import { releaseFromCart } from './actions/release-from-cart/action';
|
|
49
49
|
import { setOrderType } from './actions/set-order-type/action';
|
|
50
|
+
import { setScheduledFor } from './actions/set-scheduled-for/action';
|
|
50
51
|
import { setOrderStatus } from './actions/set-order-status/action';
|
|
51
52
|
import { getOrderStatuses } from './actions/get-order-statuses/action';
|
|
52
53
|
import { deleteParkedOrder } from './actions/delete-parked-order/action';
|
|
@@ -202,6 +203,7 @@ export const command = {
|
|
|
202
203
|
assignOrderUser,
|
|
203
204
|
releaseFromCart,
|
|
204
205
|
setOrderType,
|
|
206
|
+
setScheduledFor,
|
|
205
207
|
setOrderStatus,
|
|
206
208
|
getOrderStatuses,
|
|
207
209
|
deleteParkedOrder,
|
|
@@ -73,6 +73,7 @@ import { mockSetOrderMetadata } from '../../actions/set-order-metadata/mock';
|
|
|
73
73
|
import { mockAssignOrderUser } from '../../actions/assign-order-user/mock';
|
|
74
74
|
import { mockReleaseFromCart } from '../../actions/release-from-cart/mock';
|
|
75
75
|
import { mockSetOrderType } from '../../actions/set-order-type/mock';
|
|
76
|
+
import { mockSetScheduledFor } from '../../actions/set-scheduled-for/mock';
|
|
76
77
|
import { mockSetOrderStatus } from '../../actions/set-order-status/mock';
|
|
77
78
|
import { mockGetOrderStatuses } from '../../actions/get-order-statuses/mock';
|
|
78
79
|
import { mockSelectAllRefundItems } from '../../actions/select-all-refund-items/mock';
|
|
@@ -188,6 +189,7 @@ export const RENDER_MOCKS = {
|
|
|
188
189
|
assignOrderUser: mockAssignOrderUser,
|
|
189
190
|
releaseFromCart: mockReleaseFromCart,
|
|
190
191
|
setOrderType: mockSetOrderType,
|
|
192
|
+
setScheduledFor: mockSetScheduledFor,
|
|
191
193
|
setOrderStatus: mockSetOrderStatus,
|
|
192
194
|
getOrderStatuses: mockGetOrderStatuses,
|
|
193
195
|
selectAllRefundItems: mockSelectAllRefundItems,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExampleFunction, GetProducts, AddCustomSale, EditCustomSale, GetCustomers, AssignCustomer, AddCustomer, EditCustomer, GetCategories, GetOrders, GetRefunds, GetTaxTables, GetCustomStockActions, AddProductDiscount, AddProductToCart, RemoveProductFromCart, UpdateCartItemQuantity, AddCartDiscount, GetContext, GetFinalContext, AddProductNote, AddProductFee, GetProductModifierSelections, SetProductModifierSelections, SetActiveProductFee, SetActiveProductDiscount, GetActiveProduct, SetActiveProduct, AdjustInventory, AddOrderNote, AddCartFee, ClearCart, ParkOrder, ResumeParkedOrder, ResumeOrder, SetOrderMetadata, AssignOrderUser, ReleaseFromCart, SetOrderType, SetOrderStatus, GetOrderStatuses, DeleteParkedOrder, VoidOrder, InitiateRefund, CashPayment, RecordExternalPayment, GetCashRoundingAmount, TapToPayPayment, TerminalPayment, ExtensionPayment, RedeemPayment, AddNonRevenueItem, AddCustomerNote, RemoveCustomerNote, RemoveCustomerFromCart, GoToStationHome, OpenCashDrawer, ShowNotification, ShowConfirmation, AuthenticateUser, PartialPayment, SwitchUser, SetRefundStockAction, SelectAllRefundItems, ResetRefundDetails, CalculateRefundTotal, GetRemainingRefundableQuantities, ProcessPartialRefund, RedeemRefund, GetRefundPlan, CheckPermission, GetCurrentCart, Print, SetActiveOrder, GetCustomTables, GetCustomTableData, UpsertCustomTableData, DeleteCustomTableData, GetCustomExtensions, GetCurrentCompanyCustomExtensions, GetCustomExtensionCustomTables, GetCustomTableFields, GetSecretsKeys, GetSecretVal, SetSecretVal, GetUsers, GetRoles, RemoveCartDiscount, GetActiveOrder, GetActiveCustomer, SetActiveCustomer, GetActiveOutlet, GetActiveStation, GetActiveSession, GetActiveUser, SetActiveUser, SetActiveRefund, RemoveProductDiscount, RemoveProductFee, RemoveProductNote, RemoveCartFee, RemoveOrderNote, RemoveCustomSale, RemoveNonRevenueItem, CanTransition, GetAvailableTransitions, ApplyTransition, IntegrationPayment, GetSmartGridLayout, SaveSmartGridLayout, SendEmail, SendSms, GetBookingResources, GetBookingAvailability, GetBookings, HoldBooking, AddBookingToCart, RemoveBookingFromCart, CancelBooking, CreatePaymentLink, ChargeMoto, GetTimeClockStatus } from '../../index';
|
|
1
|
+
import type { ExampleFunction, GetProducts, AddCustomSale, EditCustomSale, GetCustomers, AssignCustomer, AddCustomer, EditCustomer, GetCategories, GetOrders, GetRefunds, GetTaxTables, GetCustomStockActions, AddProductDiscount, AddProductToCart, RemoveProductFromCart, UpdateCartItemQuantity, AddCartDiscount, GetContext, GetFinalContext, AddProductNote, AddProductFee, GetProductModifierSelections, SetProductModifierSelections, SetActiveProductFee, SetActiveProductDiscount, GetActiveProduct, SetActiveProduct, AdjustInventory, AddOrderNote, AddCartFee, ClearCart, ParkOrder, ResumeParkedOrder, ResumeOrder, SetOrderMetadata, AssignOrderUser, ReleaseFromCart, SetOrderType, SetScheduledFor, SetOrderStatus, GetOrderStatuses, DeleteParkedOrder, VoidOrder, InitiateRefund, CashPayment, RecordExternalPayment, GetCashRoundingAmount, TapToPayPayment, TerminalPayment, ExtensionPayment, RedeemPayment, AddNonRevenueItem, AddCustomerNote, RemoveCustomerNote, RemoveCustomerFromCart, GoToStationHome, OpenCashDrawer, ShowNotification, ShowConfirmation, AuthenticateUser, PartialPayment, SwitchUser, SetRefundStockAction, SelectAllRefundItems, ResetRefundDetails, CalculateRefundTotal, GetRemainingRefundableQuantities, ProcessPartialRefund, RedeemRefund, GetRefundPlan, CheckPermission, GetCurrentCart, Print, SetActiveOrder, GetCustomTables, GetCustomTableData, UpsertCustomTableData, DeleteCustomTableData, GetCustomExtensions, GetCurrentCompanyCustomExtensions, GetCustomExtensionCustomTables, GetCustomTableFields, GetSecretsKeys, GetSecretVal, SetSecretVal, GetUsers, GetRoles, RemoveCartDiscount, GetActiveOrder, GetActiveCustomer, SetActiveCustomer, GetActiveOutlet, GetActiveStation, GetActiveSession, GetActiveUser, SetActiveUser, SetActiveRefund, RemoveProductDiscount, RemoveProductFee, RemoveProductNote, RemoveCartFee, RemoveOrderNote, RemoveCustomSale, RemoveNonRevenueItem, CanTransition, GetAvailableTransitions, ApplyTransition, IntegrationPayment, GetSmartGridLayout, SaveSmartGridLayout, SendEmail, SendSms, GetBookingResources, GetBookingAvailability, GetBookings, HoldBooking, AddBookingToCart, RemoveBookingFromCart, CancelBooking, CreatePaymentLink, ChargeMoto, GetTimeClockStatus } from '../../index';
|
|
2
2
|
export interface RenderProviderActions {
|
|
3
3
|
exampleFunction: ExampleFunction;
|
|
4
4
|
getProducts: GetProducts;
|
|
@@ -46,6 +46,7 @@ export interface RenderProviderActions {
|
|
|
46
46
|
assignOrderUser: AssignOrderUser;
|
|
47
47
|
releaseFromCart: ReleaseFromCart;
|
|
48
48
|
setOrderType: SetOrderType;
|
|
49
|
+
setScheduledFor: SetScheduledFor;
|
|
49
50
|
setOrderStatus: SetOrderStatus;
|
|
50
51
|
getOrderStatuses: GetOrderStatuses;
|
|
51
52
|
deleteParkedOrder: DeleteParkedOrder;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@final-commerce/command-frame",
|
|
3
|
-
"version": "0.9.0-preprod.
|
|
3
|
+
"version": "0.9.0-preprod.3",
|
|
4
4
|
"description": "Commands Frame library",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"ignoreBranchesMissingTickets": true
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@final-commerce/common": "2.5.1-preprod.
|
|
60
|
+
"@final-commerce/common": "2.5.1-preprod.6"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@commitlint/cli": "^19.0.0",
|