rerobe-js-orm 4.7.2 → 4.7.4

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.
@@ -1,6 +1,7 @@
1
1
  import Utilities from '../../helpers/Utilities';
2
2
  export default class OrderFromTraderaEmail {
3
3
  utilities: Utilities;
4
+ getObjectNumbers(emailHtml: any): string[];
4
5
  createOrderFromLineItems(emailHtml: any, providedLineItems?: ReRobeOrderLineItem[]): ReRobeOrderObj;
5
6
  private normalizeEmailHtml;
6
7
  private getMatch;
@@ -7,14 +7,27 @@ class OrderFromTraderaEmail {
7
7
  constructor() {
8
8
  this.utilities = new Utilities_1.default();
9
9
  }
10
+ // Extracts all Tradera listing ids ("Object No") from the email HTML
11
+ getObjectNumbers(emailHtml) {
12
+ const html = typeof emailHtml === 'string' ? emailHtml : String((emailHtml === null || emailHtml === void 0 ? void 0 : emailHtml.html) || emailHtml || '');
13
+ const normalized = this.normalizeEmailHtml(html);
14
+ const results = [];
15
+ const regex = /Object\s+No\s+(\d+)/gi;
16
+ for (const m of normalized.matchAll(regex)) {
17
+ const id = (m && m[1]) || '';
18
+ if (id && !results.includes(id))
19
+ results.push(id);
20
+ }
21
+ return results;
22
+ }
10
23
  // Builds an order from raw email HTML and provided ReRobe line items (does not derive line items from email)
11
24
  // Uses fixed shopper identity (email + customerName) for Tradera orders created via this method
12
25
  createOrderFromLineItems(emailHtml, providedLineItems = []) {
13
26
  const html = typeof emailHtml === 'string' ? emailHtml : String((emailHtml === null || emailHtml === void 0 ? void 0 : emailHtml.html) || emailHtml || '');
14
27
  const normalized = this.normalizeEmailHtml(html);
15
28
  const currencyCode = 'SEK';
16
- // Extract listing id from email for traceability tag
17
- const listingId = this.getMatch(/Object\s+No\s+(\d+)/i, normalized);
29
+ // Extract Tradera order number for traceability tag
30
+ const traderaOrderNumber = this.getMatch(/Order\s+number\s+(\d+)/i, normalized);
18
31
  // Total amount and shipping (from email)
19
32
  const totalAmountFromEmail = this.parseAmount(this.getMatch(/Total\s+amount:[\s\S]*?SEK\s*([0-9][0-9\s,.]*)/i, normalized));
20
33
  // Shipping block parsing (from email)
@@ -49,6 +62,7 @@ class OrderFromTraderaEmail {
49
62
  const order = new Order_1.default({
50
63
  id: this.utilities.makeRandId(28),
51
64
  documentId: this.utilities.makeRandId(28),
65
+ idempotencyKey: traderaOrderNumber ? `traderaOrderNumber:${traderaOrderNumber}` : '',
52
66
  name: '',
53
67
  currencyCode,
54
68
  statusUrl,
@@ -70,7 +84,7 @@ class OrderFromTraderaEmail {
70
84
  refunds: [],
71
85
  totalRefunded: { amount: 0, currencyCode },
72
86
  shippingLine,
73
- tags: ['source:tradera', listingId ? `objectNo:${listingId}` : null].filter(Boolean),
87
+ tags: ['source:tradera', traderaOrderNumber ? `traderaOrderNumber:${traderaOrderNumber}` : null].filter(Boolean),
74
88
  state: Order_1.default.ORDER_STATES.completed,
75
89
  shippingType: order_constants_1.SHIPPING_TYPES.shipping,
76
90
  paymentType: order_constants_1.PAYMENT_TYPES.traderaPayment,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rerobe-js-orm",
3
- "version": "4.7.2",
3
+ "version": "4.7.4",
4
4
  "description": "ReRobe's Javascript ORM Framework",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",