@final-commerce/common 2.0.3 → 2.0.5-beta.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/dist/index.mjs CHANGED
@@ -199,6 +199,7 @@ var Platform = /* @__PURE__ */ ((Platform2) => {
199
199
  var OrderPlatform = /* @__PURE__ */ ((OrderPlatform2) => {
200
200
  OrderPlatform2["POS"] = "in-store";
201
201
  OrderPlatform2["WOO_COMMERCE"] = "woo-commerce";
202
+ OrderPlatform2["PUBLIC_API"] = "public-api";
202
203
  return OrderPlatform2;
203
204
  })(OrderPlatform || {});
204
205
  var CustomerPlatform = /* @__PURE__ */ ((CustomerPlatform2) => {
@@ -996,10 +997,7 @@ function negateAtPaths(value, path, paths) {
996
997
  function padHex(value, length) {
997
998
  return value.toString(16).padStart(length, "0");
998
999
  }
999
- var PROCESS_RANDOM = Array.from(
1000
- { length: 5 },
1001
- () => padHex(Math.floor(Math.random() * 256), 2)
1002
- ).join("");
1000
+ var PROCESS_RANDOM = Array.from({ length: 5 }, () => padHex(Math.floor(Math.random() * 256), 2)).join("");
1003
1001
  var objectIdCounter = Math.floor(Math.random() * 16777215);
1004
1002
  function generateMongoID() {
1005
1003
  const timestamp = padHex(Math.floor(Date.now() / 1e3), 8);
@@ -1217,12 +1215,8 @@ var DEFAULT_CROSS_AXIS_RULES = [
1217
1215
 
1218
1216
  // order-state-machine/default-config.ts
1219
1217
  var DEFAULT_EPOCH = /* @__PURE__ */ new Date(0);
1220
- var PAYMENT_LABELS = new Map(
1221
- basePaymentDefinitions().map((d) => [d.id, d.label])
1222
- );
1223
- var FULFILLMENT_LABELS = new Map(
1224
- baseFulfillmentDefinitions().map((d) => [d.id, d.label])
1225
- );
1218
+ var PAYMENT_LABELS = new Map(basePaymentDefinitions().map((d) => [d.id, d.label]));
1219
+ var FULFILLMENT_LABELS = new Map(baseFulfillmentDefinitions().map((d) => [d.id, d.label]));
1226
1220
  var TERMINAL_PAYMENT_STATES = new Set(
1227
1221
  basePaymentDefinitions().filter((d) => d.isTerminal).map((d) => d.id)
1228
1222
  );
@@ -1266,7 +1260,7 @@ var DEFAULT_CONFIG = {
1266
1260
  fulfillmentPaths: [],
1267
1261
  paymentPathMode: "permissive",
1268
1262
  fulfillmentPathMode: "permissive",
1269
- crossAxisRules: [...DEFAULT_CROSS_AXIS_RULES],
1263
+ crossAxisRules: [],
1270
1264
  transitionConditions: [],
1271
1265
  validInitialStates: [{ payment: "unpaid", fulfillment: "draft" }],
1272
1266
  displayStateMap: [...DEFAULT_DISPLAY_STATE_MAP],
@@ -1283,19 +1277,6 @@ function buildResolvedConfig(config) {
1283
1277
  var DEFAULT_RESOLVED_CONFIG = buildResolvedConfig(DEFAULT_CONFIG);
1284
1278
 
1285
1279
  // order-state-machine/pos-preset.ts
1286
- var POS_CROSS_AXIS_RULES = [
1287
- {
1288
- id: "pos-pay-requires-open-fulfillment",
1289
- label: "Payments only on open fulfillment states",
1290
- description: "POS payments are only valid on orders whose fulfillment is open (draft / pending / on_hold) or auto-fulfilled in lock-step (fulfilled). Returned / cancelled / in-progress fulfillment must use refund flows instead.",
1291
- enabled: true,
1292
- trigger: { axis: "payment", to: ["payment_pending", "paid", "partially_paid"] },
1293
- requires: {
1294
- axis: "fulfillment",
1295
- states: ["draft", "pending", "on_hold", "fulfilled"]
1296
- }
1297
- }
1298
- ];
1299
1280
  var POS_VALID_INITIAL_STATES = [
1300
1281
  { payment: "unpaid", fulfillment: "draft" },
1301
1282
  { payment: "unpaid", fulfillment: "on_hold" },
@@ -1310,7 +1291,7 @@ function buildPosPresetConfig(companyId) {
1310
1291
  _id: "pos-preset",
1311
1292
  companyId: companyId ?? DEFAULT_CONFIG.companyId,
1312
1293
  name: "POS Preset",
1313
- crossAxisRules: [...DEFAULT_CROSS_AXIS_RULES, ...POS_CROSS_AXIS_RULES],
1294
+ crossAxisRules: [],
1314
1295
  validInitialStates: [...POS_VALID_INITIAL_STATES],
1315
1296
  displayStateMap: [...DEFAULT_DISPLAY_STATE_MAP]
1316
1297
  };
@@ -2147,6 +2128,27 @@ function inferStatesFromLegacyStatus(order) {
2147
2128
  return { payment: "unpaid", fulfillment: "pending" };
2148
2129
  }
2149
2130
 
2131
+ // order-state-machine/write-strategy.ts
2132
+ var LegacyWriteStrategy = class {
2133
+ applyState(_order) {
2134
+ }
2135
+ };
2136
+ var DualWriteStrategy = class {
2137
+ constructor(config) {
2138
+ this.config = config;
2139
+ }
2140
+ applyState(order) {
2141
+ if (order.paymentState && order.fulfillmentState) {
2142
+ setOrderState(order, order.paymentState, order.fulfillmentState, this.config);
2143
+ return;
2144
+ }
2145
+ if (order.status) {
2146
+ const inferred = inferStatesFromLegacyStatus(order);
2147
+ setOrderState(order, inferred.payment, inferred.fulfillment, this.config);
2148
+ }
2149
+ }
2150
+ };
2151
+
2150
2152
  // order-state-machine/resolve-template.ts
2151
2153
  function resolveTemplate(templateJson, params, values = {}) {
2152
2154
  const resolvedValues = {};
@@ -2461,6 +2463,7 @@ export {
2461
2463
  DEFAULT_CROSS_AXIS_RULES,
2462
2464
  DEFAULT_DISPLAY_STATE_MAP,
2463
2465
  DEFAULT_RESOLVED_CONFIG,
2466
+ DualWriteStrategy,
2464
2467
  EUFixedRates,
2465
2468
  EUROPE,
2466
2469
  ExtensionCategory,
@@ -2470,6 +2473,7 @@ export {
2470
2473
  InventoryBaseActionEnum,
2471
2474
  InventorySpecificActionType,
2472
2475
  InvoiceStatus,
2476
+ LegacyWriteStrategy,
2473
2477
  LibraryItemType,
2474
2478
  MenuProject,
2475
2479
  NAFixedRates,
@@ -2483,7 +2487,6 @@ export {
2483
2487
  OwnerType,
2484
2488
  PATH_MODES,
2485
2489
  PAYMENT_STATES,
2486
- POS_CROSS_AXIS_RULES,
2487
2490
  POS_VALID_INITIAL_STATES,
2488
2491
  PaymentMethod,
2489
2492
  Platform,