universal-parcel-scraper 0.23.0-main.358 → 0.24.0-main.360

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/data/catalog.json CHANGED
@@ -609,7 +609,9 @@
609
609
  "IS",
610
610
  "LI",
611
611
  "TR",
612
- "US"
612
+ "US",
613
+ "CA",
614
+ "MX"
613
615
  ],
614
616
  "selectable": true,
615
617
  "timezone": "UTC",
@@ -633,7 +635,7 @@
633
635
  ],
634
636
  "detectionRules": [
635
637
  {
636
- "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TBA[0-9]{12})$",
638
+ "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TB[ACM][0-9]{12})$",
637
639
  "confidence": "high"
638
640
  }
639
641
  ]
@@ -1165,7 +1167,7 @@
1165
1167
  },
1166
1168
  "colis-prive": {
1167
1169
  "displayName": "Colis Privé",
1168
- "color": "#e30613",
1170
+ "color": "#aa78ff",
1169
1171
  "aliases": [
1170
1172
  "Colis Prive"
1171
1173
  ],
@@ -1238,7 +1240,7 @@
1238
1240
  },
1239
1241
  "colisweb": {
1240
1242
  "displayName": "Colisweb",
1241
- "color": "#ff8a00",
1243
+ "color": "#15cbe3",
1242
1244
  "countries": [
1243
1245
  "FR"
1244
1246
  ],
@@ -1261,7 +1263,12 @@
1261
1263
  ]
1262
1264
  }
1263
1265
  ],
1264
- "detectionRules": []
1266
+ "detectionRules": [
1267
+ {
1268
+ "pattern": "^\\d{8}$",
1269
+ "confidence": "low"
1270
+ }
1271
+ ]
1265
1272
  },
1266
1273
  "c-chez-vous": {
1267
1274
  "displayName": "C Chez Vous",
@@ -1337,7 +1344,7 @@
1337
1344
  },
1338
1345
  "ciblex": {
1339
1346
  "displayName": "Ciblex",
1340
- "color": "#e30613",
1347
+ "color": "#0160ab",
1341
1348
  "aliases": [
1342
1349
  "Ciblex Express"
1343
1350
  ],
@@ -1423,7 +1430,7 @@
1423
1430
  },
1424
1431
  "asendia": {
1425
1432
  "displayName": "Asendia",
1426
- "color": "#ef7d00",
1433
+ "color": "#005d69",
1427
1434
  "aliases": [
1428
1435
  "Asendia Management",
1429
1436
  "Asendia UK",
@@ -2996,7 +3003,7 @@
2996
3003
  },
2997
3004
  "four-px": {
2998
3005
  "displayName": "4PX",
2999
- "color": "#f58220",
3006
+ "color": "#005add",
3000
3007
  "countries": [
3001
3008
  "CN"
3002
3009
  ],
@@ -71,6 +71,7 @@
71
71
  "confidence": "low",
72
72
  "candidates": [
73
73
  "mondial-relay",
74
+ "colisweb",
74
75
  "heppner"
75
76
  ]
76
77
  },
@@ -901,6 +902,7 @@
901
902
  "confidence": "low",
902
903
  "candidates": [
903
904
  "mondial-relay",
905
+ "colisweb",
904
906
  "heppner"
905
907
  ]
906
908
  },
@@ -1185,6 +1187,7 @@
1185
1187
  "confidence": "low",
1186
1188
  "candidates": [
1187
1189
  "mondial-relay",
1190
+ "colisweb",
1188
1191
  "heppner"
1189
1192
  ]
1190
1193
  },
@@ -1194,6 +1197,7 @@
1194
1197
  "confidence": "low",
1195
1198
  "candidates": [
1196
1199
  "mondial-relay",
1200
+ "colisweb",
1197
1201
  "heppner"
1198
1202
  ]
1199
1203
  },
@@ -1274,6 +1278,7 @@
1274
1278
  "confidence": "low",
1275
1279
  "candidates": [
1276
1280
  "mondial-relay",
1281
+ "colisweb",
1277
1282
  "heppner"
1278
1283
  ]
1279
1284
  },
@@ -2558,6 +2563,7 @@
2558
2563
  "confidence": "low",
2559
2564
  "candidates": [
2560
2565
  "mondial-relay",
2566
+ "colisweb",
2561
2567
  "heppner"
2562
2568
  ]
2563
2569
  },
@@ -2598,6 +2604,7 @@
2598
2604
  "confidence": "low",
2599
2605
  "candidates": [
2600
2606
  "mondial-relay",
2607
+ "colisweb",
2601
2608
  "heppner"
2602
2609
  ]
2603
2610
  },
@@ -2694,6 +2701,7 @@
2694
2701
  "confidence": "low",
2695
2702
  "candidates": [
2696
2703
  "mondial-relay",
2704
+ "colisweb",
2697
2705
  "heppner"
2698
2706
  ]
2699
2707
  },
@@ -3481,6 +3489,7 @@
3481
3489
  "confidence": "low",
3482
3490
  "candidates": [
3483
3491
  "mondial-relay",
3492
+ "colisweb",
3484
3493
  "heppner"
3485
3494
  ]
3486
3495
  },
@@ -3518,6 +3527,7 @@
3518
3527
  "confidence": "low",
3519
3528
  "candidates": [
3520
3529
  "mondial-relay",
3530
+ "colisweb",
3521
3531
  "heppner"
3522
3532
  ]
3523
3533
  },
@@ -3990,6 +4000,7 @@
3990
4000
  "confidence": "low",
3991
4001
  "candidates": [
3992
4002
  "mondial-relay",
4003
+ "colisweb",
3993
4004
  "heppner"
3994
4005
  ]
3995
4006
  },
@@ -3999,6 +4010,7 @@
3999
4010
  "confidence": "low",
4000
4011
  "candidates": [
4001
4012
  "mondial-relay",
4013
+ "colisweb",
4002
4014
  "heppner"
4003
4015
  ]
4004
4016
  },
@@ -4113,6 +4125,7 @@
4113
4125
  "confidence": "low",
4114
4126
  "candidates": [
4115
4127
  "mondial-relay",
4128
+ "colisweb",
4116
4129
  "heppner"
4117
4130
  ]
4118
4131
  },
@@ -4208,6 +4221,7 @@
4208
4221
  "confidence": "low",
4209
4222
  "candidates": [
4210
4223
  "mondial-relay",
4224
+ "colisweb",
4211
4225
  "heppner"
4212
4226
  ]
4213
4227
  },
@@ -4229,6 +4243,7 @@
4229
4243
  "confidence": "low",
4230
4244
  "candidates": [
4231
4245
  "mondial-relay",
4246
+ "colisweb",
4232
4247
  "heppner"
4233
4248
  ]
4234
4249
  },
@@ -4283,6 +4298,7 @@
4283
4298
  "confidence": "low",
4284
4299
  "candidates": [
4285
4300
  "mondial-relay",
4301
+ "colisweb",
4286
4302
  "heppner"
4287
4303
  ]
4288
4304
  },
@@ -4372,6 +4388,7 @@
4372
4388
  "confidence": "low",
4373
4389
  "candidates": [
4374
4390
  "mondial-relay",
4391
+ "colisweb",
4375
4392
  "heppner"
4376
4393
  ]
4377
4394
  },
@@ -4479,6 +4496,7 @@
4479
4496
  "confidence": "low",
4480
4497
  "candidates": [
4481
4498
  "mondial-relay",
4499
+ "colisweb",
4482
4500
  "heppner"
4483
4501
  ]
4484
4502
  },
@@ -4575,6 +4593,7 @@
4575
4593
  "confidence": "low",
4576
4594
  "candidates": [
4577
4595
  "mondial-relay",
4596
+ "colisweb",
4578
4597
  "heppner"
4579
4598
  ]
4580
4599
  },
@@ -4584,6 +4603,7 @@
4584
4603
  "confidence": "low",
4585
4604
  "candidates": [
4586
4605
  "mondial-relay",
4606
+ "colisweb",
4587
4607
  "heppner"
4588
4608
  ]
4589
4609
  },
@@ -4810,6 +4830,7 @@
4810
4830
  "confidence": "low",
4811
4831
  "candidates": [
4812
4832
  "mondial-relay",
4833
+ "colisweb",
4813
4834
  "heppner"
4814
4835
  ]
4815
4836
  },
@@ -5096,6 +5117,7 @@
5096
5117
  "confidence": "low",
5097
5118
  "candidates": [
5098
5119
  "mondial-relay",
5120
+ "colisweb",
5099
5121
  "heppner"
5100
5122
  ]
5101
5123
  },
@@ -5162,6 +5184,7 @@
5162
5184
  "confidence": "low",
5163
5185
  "candidates": [
5164
5186
  "mondial-relay",
5187
+ "colisweb",
5165
5188
  "heppner"
5166
5189
  ]
5167
5190
  },
@@ -8147,15 +8170,19 @@
8147
8170
  },
8148
8171
  {
8149
8172
  "input": "TBC 000000000000",
8150
- "carrier": "unknown",
8151
- "confidence": "none",
8152
- "candidates": []
8173
+ "carrier": "amazon-logistics",
8174
+ "confidence": "high",
8175
+ "candidates": [
8176
+ "amazon-logistics"
8177
+ ]
8153
8178
  },
8154
8179
  {
8155
8180
  "input": "TBM502887274000",
8156
- "carrier": "unknown",
8157
- "confidence": "none",
8158
- "candidates": []
8181
+ "carrier": "amazon-logistics",
8182
+ "confidence": "high",
8183
+ "candidates": [
8184
+ "amazon-logistics"
8185
+ ]
8159
8186
  },
8160
8187
  {
8161
8188
  "input": "TLR000083964",
@@ -553,7 +553,7 @@ var ue = {
553
553
  displayName: "Amazon Logistics",
554
554
  color: "#ff9900",
555
555
  aliases: ["AMZL", "Amazon Logistik"],
556
- countries: /* @__PURE__ */ "FR.DE.BE.GB.IT.ES.NL.AT.IE.PL.SE.PT.LU.DK.FI.CZ.SK.HU.RO.BG.HR.SI.EE.LV.LT.GR.CY.MT.CH.NO.IS.LI.TR.US".split("."),
556
+ countries: /* @__PURE__ */ "FR.DE.BE.GB.IT.ES.NL.AT.IE.PL.SE.PT.LU.DK.FI.CZ.SK.HU.RO.BG.HR.SI.EE.LV.LT.GR.CY.MT.CH.NO.IS.LI.TR.US.CA.MX".split("."),
557
557
  selectable: !0,
558
558
  timezone: "UTC",
559
559
  tracking: {
@@ -573,7 +573,7 @@ var ue = {
573
573
  detectFromNumber: !0
574
574
  }],
575
575
  detectionRules: [{
576
- pattern: "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TBA[0-9]{12})$",
576
+ pattern: "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TB[ACM][0-9]{12})$",
577
577
  confidence: "high"
578
578
  }]
579
579
  },
@@ -977,7 +977,7 @@ var ue = {
977
977
  },
978
978
  "colis-prive": {
979
979
  displayName: "Colis Privé",
980
- color: "#e30613",
980
+ color: "#aa78ff",
981
981
  aliases: ["Colis Prive"],
982
982
  countries: ["FR"],
983
983
  selectable: !0,
@@ -1024,7 +1024,7 @@ var ue = {
1024
1024
  },
1025
1025
  colisweb: {
1026
1026
  displayName: "Colisweb",
1027
- color: "#ff8a00",
1027
+ color: "#15cbe3",
1028
1028
  countries: ["FR"],
1029
1029
  selectable: !0,
1030
1030
  timezone: "Europe/Paris",
@@ -1038,7 +1038,10 @@ var ue = {
1038
1038
  domains: ["colisweb.com"],
1039
1039
  params: ["value", "trackingNumber"]
1040
1040
  }],
1041
- detectionRules: []
1041
+ detectionRules: [{
1042
+ pattern: "^\\d{8}$",
1043
+ confidence: "low"
1044
+ }]
1042
1045
  },
1043
1046
  "c-chez-vous": {
1044
1047
  displayName: "C Chez Vous",
@@ -1095,7 +1098,7 @@ var ue = {
1095
1098
  },
1096
1099
  ciblex: {
1097
1100
  displayName: "Ciblex",
1098
- color: "#e30613",
1101
+ color: "#0160ab",
1099
1102
  aliases: ["Ciblex Express"],
1100
1103
  countries: ["FR"],
1101
1104
  selectable: !0,
@@ -1158,7 +1161,7 @@ var ue = {
1158
1161
  },
1159
1162
  asendia: {
1160
1163
  displayName: "Asendia",
1161
- color: "#ef7d00",
1164
+ color: "#005d69",
1162
1165
  aliases: [
1163
1166
  "Asendia Management",
1164
1167
  "Asendia UK",
@@ -2358,7 +2361,7 @@ var ue = {
2358
2361
  },
2359
2362
  "four-px": {
2360
2363
  displayName: "4PX",
2361
- color: "#f58220",
2364
+ color: "#005add",
2362
2365
  countries: ["CN"],
2363
2366
  selectable: !0,
2364
2367
  timezone: "UTC",
@@ -3569,7 +3572,8 @@ function he(e, t = "") {
3569
3572
  return e !== "amazon-shipping" && (e === "amazon-logistics" || me(t));
3570
3573
  }
3571
3574
  function ge(e) {
3572
- return {
3575
+ let t = e.replace(/[\s.-]/g, "").toUpperCase();
3576
+ return t.startsWith("TBC") ? "ca" : t.startsWith("TBM") ? "com.mx" : {
3573
3577
  FR: "fr",
3574
3578
  DE: "de",
3575
3579
  AT: "de",
@@ -3584,7 +3588,7 @@ function ge(e) {
3584
3588
  PL: "pl",
3585
3589
  SE: "se",
3586
3590
  TR: "com.tr"
3587
- }[e.replace(/[\s.-]/g, "").toUpperCase().slice(0, 2)] ?? "com";
3591
+ }[t.slice(0, 2)] ?? "com";
3588
3592
  }
3589
3593
  function _e(e) {
3590
3594
  return `https://www.amazon.${ge(e)}/gp/your-account/order-history`;
@@ -40,7 +40,9 @@
40
40
  "IS",
41
41
  "LI",
42
42
  "TR",
43
- "US"
43
+ "US",
44
+ "CA",
45
+ "MX"
44
46
  ]
45
47
  },
46
48
  "brand": {
@@ -87,7 +89,7 @@
87
89
  "detection": [
88
90
  {
89
91
  "id": "amazon-logistics-1",
90
- "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TBA[0-9]{12})$",
92
+ "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TB[ACM][0-9]{12})$",
91
93
  "confidence": "high"
92
94
  }
93
95
  ]
@@ -229,10 +229,10 @@
229
229
  "url": "https://github.com/jkeen/tracking_number_data/blob/main/couriers/amazon.json"
230
230
  },
231
231
  "expect": {
232
- "carrier": "unknown",
233
- "confidence": "none"
232
+ "carrier": "amazon-logistics",
233
+ "confidence": "high"
234
234
  },
235
- "note": "Open-source project example, not a real shipment. The source attributes it to Amazon Logistics; no rule matches this shape."
235
+ "note": "Open-source project example, not a real shipment. The source lists it as a valid Amazon Logistics number with the Canadian prefix."
236
236
  },
237
237
  {
238
238
  "number": "UK0000000001",
@@ -303,10 +303,10 @@
303
303
  "url": "https://github.com/jkeen/tracking_number_data/blob/main/couriers/amazon.json"
304
304
  },
305
305
  "expect": {
306
- "carrier": "unknown",
307
- "confidence": "none"
306
+ "carrier": "amazon-logistics",
307
+ "confidence": "high"
308
308
  },
309
- "note": "Open-source project example, not a real shipment. The source lists it as a valid Amazon Logistics number; the catalog pattern covers TBA only."
309
+ "note": "Open-source project example, not a real shipment. The source lists it as a valid Amazon Logistics number with the Mexican prefix."
310
310
  },
311
311
  {
312
312
  "number": "DE5679225276",
@@ -156,7 +156,7 @@ function metadataValue(metadata, field) {
156
156
  export function normalizeAmazonShippingTrackingNumber(raw) {
157
157
  const value = raw.trim().toLocaleUpperCase('en-US').replace(/[\s.-]/g, '');
158
158
  if (!isAmazonTrackingNumber(value)) {
159
- throw new InvalidInputError(PROVIDER, 'Amazon tracking numbers need a European country prefix and 10 digits, or TBA and 12 digits');
159
+ throw new InvalidInputError(PROVIDER, 'Amazon tracking numbers need a European country prefix and 10 digits, or TBA, TBC or TBM and 12 digits');
160
160
  }
161
161
  return value;
162
162
  }
@@ -242,8 +242,8 @@ export function parseAmazonShippingTrackingResponse(payload, zone = 'Europe/Pari
242
242
  };
243
243
  }
244
244
  export function amazonShippingTimezone(number) {
245
- if (number.startsWith('TBA'))
246
- return null; // A US number cannot establish a local timezone.
245
+ if (number.startsWith('TB'))
246
+ return null; // A North American number cannot establish a local timezone.
247
247
  const zones = {
248
248
  UK: 'Europe/London', GB: 'Europe/London', IE: 'Europe/Dublin', PT: 'Europe/Lisbon',
249
249
  FI: 'Europe/Helsinki', EE: 'Europe/Tallinn', LV: 'Europe/Riga', LT: 'Europe/Vilnius',
@@ -16,7 +16,7 @@
16
16
  ]
17
17
  },
18
18
  "brand": {
19
- "color": "#ef7d00"
19
+ "color": "#005d69"
20
20
  },
21
21
  "selectable": true,
22
22
  "timezone": "UTC",
@@ -10,7 +10,7 @@
10
10
  ]
11
11
  },
12
12
  "brand": {
13
- "color": "#e30613"
13
+ "color": "#0160ab"
14
14
  },
15
15
  "selectable": true,
16
16
  "timezone": "Europe/Paris",
@@ -10,7 +10,7 @@
10
10
  ]
11
11
  },
12
12
  "brand": {
13
- "color": "#e30613"
13
+ "color": "#aa78ff"
14
14
  },
15
15
  "selectable": true,
16
16
  "timezone": "Europe/Paris",
@@ -8,7 +8,7 @@
8
8
  ]
9
9
  },
10
10
  "brand": {
11
- "color": "#ff8a00"
11
+ "color": "#15cbe3"
12
12
  },
13
13
  "selectable": true,
14
14
  "timezone": "Europe/Paris",
@@ -59,5 +59,11 @@
59
59
  ]
60
60
  }
61
61
  ],
62
- "detection": []
62
+ "detection": [
63
+ {
64
+ "id": "colisweb-1",
65
+ "pattern": "^\\d{8}$",
66
+ "confidence": "low"
67
+ }
68
+ ]
63
69
  }
@@ -17,10 +17,11 @@
17
17
  "confidence": "low",
18
18
  "candidates": [
19
19
  "mondial-relay",
20
+ "colisweb",
20
21
  "heppner"
21
22
  ]
22
23
  },
23
- "note": "Public report attributed to Colisweb, whose tracking returns its history. Eight digits are shared with other carriers and no rule offers Colisweb."
24
+ "note": "Public report attributed to Colisweb, whose tracking returns its history. Eight digits are shared with other carriers, so Colisweb is one suggestion among several."
24
25
  },
25
26
  {
26
27
  "number": "87654321",
@@ -33,6 +34,7 @@
33
34
  "confidence": "low",
34
35
  "candidates": [
35
36
  "mondial-relay",
37
+ "colisweb",
36
38
  "heppner"
37
39
  ]
38
40
  },
@@ -8,7 +8,7 @@
8
8
  ]
9
9
  },
10
10
  "brand": {
11
- "color": "#f58220"
11
+ "color": "#005add"
12
12
  },
13
13
  "selectable": true,
14
14
  "timezone": "UTC",
@@ -12,6 +12,7 @@
12
12
  "confidence": "low",
13
13
  "candidates": [
14
14
  "mondial-relay",
15
+ "colisweb",
15
16
  "heppner"
16
17
  ]
17
18
  },
@@ -30,6 +31,7 @@
30
31
  "confidence": "low",
31
32
  "candidates": [
32
33
  "mondial-relay",
34
+ "colisweb",
33
35
  "heppner"
34
36
  ]
35
37
  },
@@ -13,6 +13,7 @@
13
13
  "confidence": "low",
14
14
  "candidates": [
15
15
  "mondial-relay",
16
+ "colisweb",
16
17
  "heppner"
17
18
  ]
18
19
  },
@@ -45,6 +45,7 @@
45
45
  "confidence": "low",
46
46
  "candidates": [
47
47
  "mondial-relay",
48
+ "colisweb",
48
49
  "heppner"
49
50
  ]
50
51
  },
@@ -62,6 +63,7 @@
62
63
  "confidence": "low",
63
64
  "candidates": [
64
65
  "mondial-relay",
66
+ "colisweb",
65
67
  "heppner"
66
68
  ]
67
69
  },
@@ -130,6 +132,7 @@
130
132
  "confidence": "low",
131
133
  "candidates": [
132
134
  "mondial-relay",
135
+ "colisweb",
133
136
  "heppner"
134
137
  ]
135
138
  },
@@ -174,6 +177,7 @@
174
177
  "confidence": "low",
175
178
  "candidates": [
176
179
  "mondial-relay",
180
+ "colisweb",
177
181
  "heppner"
178
182
  ]
179
183
  },
@@ -253,6 +257,7 @@
253
257
  "confidence": "low",
254
258
  "candidates": [
255
259
  "mondial-relay",
260
+ "colisweb",
256
261
  "heppner"
257
262
  ]
258
263
  },
@@ -271,6 +276,7 @@
271
276
  "confidence": "low",
272
277
  "candidates": [
273
278
  "mondial-relay",
279
+ "colisweb",
274
280
  "heppner"
275
281
  ]
276
282
  },
@@ -289,6 +295,7 @@
289
295
  "confidence": "low",
290
296
  "candidates": [
291
297
  "mondial-relay",
298
+ "colisweb",
292
299
  "heppner"
293
300
  ]
294
301
  },
@@ -307,6 +314,7 @@
307
314
  "confidence": "low",
308
315
  "candidates": [
309
316
  "mondial-relay",
317
+ "colisweb",
310
318
  "heppner"
311
319
  ]
312
320
  },
@@ -325,6 +333,7 @@
325
333
  "confidence": "low",
326
334
  "candidates": [
327
335
  "mondial-relay",
336
+ "colisweb",
328
337
  "heppner"
329
338
  ]
330
339
  },
@@ -343,6 +352,7 @@
343
352
  "confidence": "low",
344
353
  "candidates": [
345
354
  "mondial-relay",
355
+ "colisweb",
346
356
  "heppner"
347
357
  ]
348
358
  },
@@ -361,6 +371,7 @@
361
371
  "confidence": "low",
362
372
  "candidates": [
363
373
  "mondial-relay",
374
+ "colisweb",
364
375
  "heppner"
365
376
  ]
366
377
  },
@@ -379,6 +390,7 @@
379
390
  "confidence": "low",
380
391
  "candidates": [
381
392
  "mondial-relay",
393
+ "colisweb",
382
394
  "heppner"
383
395
  ]
384
396
  },
@@ -397,6 +409,7 @@
397
409
  "confidence": "low",
398
410
  "candidates": [
399
411
  "mondial-relay",
412
+ "colisweb",
400
413
  "heppner"
401
414
  ]
402
415
  },
@@ -415,6 +428,7 @@
415
428
  "confidence": "low",
416
429
  "candidates": [
417
430
  "mondial-relay",
431
+ "colisweb",
418
432
  "heppner"
419
433
  ]
420
434
  },
@@ -32,6 +32,7 @@
32
32
  "confidence": "low",
33
33
  "candidates": [
34
34
  "mondial-relay",
35
+ "colisweb",
35
36
  "heppner"
36
37
  ]
37
38
  },
@@ -50,6 +51,7 @@
50
51
  "confidence": "low",
51
52
  "candidates": [
52
53
  "mondial-relay",
54
+ "colisweb",
53
55
  "heppner"
54
56
  ]
55
57
  },
@@ -14,6 +14,7 @@
14
14
  "confidence": "low",
15
15
  "candidates": [
16
16
  "mondial-relay",
17
+ "colisweb",
17
18
  "heppner"
18
19
  ]
19
20
  },
@@ -12,6 +12,7 @@
12
12
  "confidence": "low",
13
13
  "candidates": [
14
14
  "mondial-relay",
15
+ "colisweb",
15
16
  "heppner"
16
17
  ]
17
18
  },
@@ -169,6 +170,7 @@
169
170
  "confidence": "low",
170
171
  "candidates": [
171
172
  "mondial-relay",
173
+ "colisweb",
172
174
  "heppner"
173
175
  ]
174
176
  },
@@ -12,7 +12,13 @@ export function requiresAmazonAccount(carrier, trackingNumber = '') {
12
12
  return carrier !== 'amazon-shipping' && (carrier === 'amazon-logistics' || isAmazonTrackingNumber(trackingNumber));
13
13
  }
14
14
  export function amazonMarketplace(raw) {
15
- const prefix = raw.replace(/[\s.-]/g, '').toUpperCase().slice(0, 2);
15
+ const number = raw.replace(/[\s.-]/g, '').toUpperCase();
16
+ // TBA names no country; its Canadian and Mexican siblings do.
17
+ if (number.startsWith('TBC'))
18
+ return 'ca';
19
+ if (number.startsWith('TBM'))
20
+ return 'com.mx';
21
+ const prefix = number.slice(0, 2);
16
22
  const marketplaces = {
17
23
  FR: 'fr', DE: 'de', AT: 'de', BE: 'com.be', UK: 'co.uk', GB: 'co.uk',
18
24
  IT: 'it', ES: 'es', PT: 'es', NL: 'nl', IE: 'ie', PL: 'pl', SE: 'se', TR: 'com.tr',
@@ -1,2 +1,2 @@
1
- export declare const AMAZON_NUMBER_PATTERN: "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TBA[0-9]{12})$";
1
+ export declare const AMAZON_NUMBER_PATTERN: "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TB[ACM][0-9]{12})$";
2
2
  export declare function isAmazonTrackingNumber(raw: string): boolean;
@@ -609,7 +609,9 @@
609
609
  "IS",
610
610
  "LI",
611
611
  "TR",
612
- "US"
612
+ "US",
613
+ "CA",
614
+ "MX"
613
615
  ],
614
616
  "selectable": true,
615
617
  "timezone": "UTC",
@@ -633,7 +635,7 @@
633
635
  ],
634
636
  "detectionRules": [
635
637
  {
636
- "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TBA[0-9]{12})$",
638
+ "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TB[ACM][0-9]{12})$",
637
639
  "confidence": "high"
638
640
  }
639
641
  ]
@@ -1165,7 +1167,7 @@
1165
1167
  },
1166
1168
  "colis-prive": {
1167
1169
  "displayName": "Colis Privé",
1168
- "color": "#e30613",
1170
+ "color": "#aa78ff",
1169
1171
  "aliases": [
1170
1172
  "Colis Prive"
1171
1173
  ],
@@ -1238,7 +1240,7 @@
1238
1240
  },
1239
1241
  "colisweb": {
1240
1242
  "displayName": "Colisweb",
1241
- "color": "#ff8a00",
1243
+ "color": "#15cbe3",
1242
1244
  "countries": [
1243
1245
  "FR"
1244
1246
  ],
@@ -1261,7 +1263,12 @@
1261
1263
  ]
1262
1264
  }
1263
1265
  ],
1264
- "detectionRules": []
1266
+ "detectionRules": [
1267
+ {
1268
+ "pattern": "^\\d{8}$",
1269
+ "confidence": "low"
1270
+ }
1271
+ ]
1265
1272
  },
1266
1273
  "c-chez-vous": {
1267
1274
  "displayName": "C Chez Vous",
@@ -1337,7 +1344,7 @@
1337
1344
  },
1338
1345
  "ciblex": {
1339
1346
  "displayName": "Ciblex",
1340
- "color": "#e30613",
1347
+ "color": "#0160ab",
1341
1348
  "aliases": [
1342
1349
  "Ciblex Express"
1343
1350
  ],
@@ -1423,7 +1430,7 @@
1423
1430
  },
1424
1431
  "asendia": {
1425
1432
  "displayName": "Asendia",
1426
- "color": "#ef7d00",
1433
+ "color": "#005d69",
1427
1434
  "aliases": [
1428
1435
  "Asendia Management",
1429
1436
  "Asendia UK",
@@ -2996,7 +3003,7 @@
2996
3003
  },
2997
3004
  "four-px": {
2998
3005
  "displayName": "4PX",
2999
- "color": "#f58220",
3006
+ "color": "#005add",
3000
3007
  "countries": [
3001
3008
  "CN"
3002
3009
  ],
@@ -371,7 +371,7 @@ export declare const CARRIER_CATALOG: {
371
371
  readonly displayName: "Amazon Logistics";
372
372
  readonly color: "#ff9900";
373
373
  readonly aliases: readonly ["AMZL", "Amazon Logistik"];
374
- readonly countries: readonly ["FR", "DE", "BE", "GB", "IT", "ES", "NL", "AT", "IE", "PL", "SE", "PT", "LU", "DK", "FI", "CZ", "SK", "HU", "RO", "BG", "HR", "SI", "EE", "LV", "LT", "GR", "CY", "MT", "CH", "NO", "IS", "LI", "TR", "US"];
374
+ readonly countries: readonly ["FR", "DE", "BE", "GB", "IT", "ES", "NL", "AT", "IE", "PL", "SE", "PT", "LU", "DK", "FI", "CZ", "SK", "HU", "RO", "BG", "HR", "SI", "EE", "LV", "LT", "GR", "CY", "MT", "CH", "NO", "IS", "LI", "TR", "US", "CA", "MX"];
375
375
  readonly selectable: true;
376
376
  readonly timezone: "UTC";
377
377
  readonly tracking: {
@@ -385,7 +385,7 @@ export declare const CARRIER_CATALOG: {
385
385
  readonly detectFromNumber: true;
386
386
  }];
387
387
  readonly detectionRules: readonly [{
388
- readonly pattern: "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TBA[0-9]{12})$";
388
+ readonly pattern: "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TB[ACM][0-9]{12})$";
389
389
  readonly confidence: "high";
390
390
  }];
391
391
  };
@@ -722,7 +722,7 @@ export declare const CARRIER_CATALOG: {
722
722
  };
723
723
  readonly "colis-prive": {
724
724
  readonly displayName: "Colis Privé";
725
- readonly color: "#e30613";
725
+ readonly color: "#aa78ff";
726
726
  readonly aliases: readonly ["Colis Prive"];
727
727
  readonly countries: readonly ["FR"];
728
728
  readonly selectable: true;
@@ -769,7 +769,7 @@ export declare const CARRIER_CATALOG: {
769
769
  };
770
770
  readonly colisweb: {
771
771
  readonly displayName: "Colisweb";
772
- readonly color: "#ff8a00";
772
+ readonly color: "#15cbe3";
773
773
  readonly countries: readonly ["FR"];
774
774
  readonly selectable: true;
775
775
  readonly timezone: "Europe/Paris";
@@ -783,7 +783,10 @@ export declare const CARRIER_CATALOG: {
783
783
  readonly domains: readonly ["colisweb.com"];
784
784
  readonly params: readonly ["value", "trackingNumber"];
785
785
  }];
786
- readonly detectionRules: readonly [];
786
+ readonly detectionRules: readonly [{
787
+ readonly pattern: "^\\d{8}$";
788
+ readonly confidence: "low";
789
+ }];
787
790
  };
788
791
  readonly "c-chez-vous": {
789
792
  readonly displayName: "C Chez Vous";
@@ -840,7 +843,7 @@ export declare const CARRIER_CATALOG: {
840
843
  };
841
844
  readonly ciblex: {
842
845
  readonly displayName: "Ciblex";
843
- readonly color: "#e30613";
846
+ readonly color: "#0160ab";
844
847
  readonly aliases: readonly ["Ciblex Express"];
845
848
  readonly countries: readonly ["FR"];
846
849
  readonly selectable: true;
@@ -898,7 +901,7 @@ export declare const CARRIER_CATALOG: {
898
901
  };
899
902
  readonly asendia: {
900
903
  readonly displayName: "Asendia";
901
- readonly color: "#ef7d00";
904
+ readonly color: "#005d69";
902
905
  readonly aliases: readonly ["Asendia Management", "Asendia UK", "asendia.com"];
903
906
  readonly countries: readonly ["FR", "CH", "GB", "DE", "US"];
904
907
  readonly selectable: true;
@@ -1999,7 +2002,7 @@ export declare const CARRIER_CATALOG: {
1999
2002
  };
2000
2003
  readonly "four-px": {
2001
2004
  readonly displayName: "4PX";
2002
- readonly color: "#f58220";
2005
+ readonly color: "#005add";
2003
2006
  readonly countries: readonly ["CN"];
2004
2007
  readonly selectable: true;
2005
2008
  readonly timezone: "UTC";
@@ -610,7 +610,9 @@ export const CARRIER_CATALOG = {
610
610
  "IS",
611
611
  "LI",
612
612
  "TR",
613
- "US"
613
+ "US",
614
+ "CA",
615
+ "MX"
614
616
  ],
615
617
  "selectable": true,
616
618
  "timezone": "UTC",
@@ -634,7 +636,7 @@ export const CARRIER_CATALOG = {
634
636
  ],
635
637
  "detectionRules": [
636
638
  {
637
- "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TBA[0-9]{12})$",
639
+ "pattern": "^(?:(?:FR|DE|BE|UK|GB|IT|ES|NL|AT|IE|PL|SE|PT|LU|DK|FI|CZ|SK|HU|RO|BG|HR|SI|EE|LV|LT|GR|CY|MT|CH|NO|IS|LI|TR)[0-9]{10}|TB[ACM][0-9]{12})$",
638
640
  "confidence": "high"
639
641
  }
640
642
  ]
@@ -1166,7 +1168,7 @@ export const CARRIER_CATALOG = {
1166
1168
  },
1167
1169
  "colis-prive": {
1168
1170
  "displayName": "Colis Privé",
1169
- "color": "#e30613",
1171
+ "color": "#aa78ff",
1170
1172
  "aliases": [
1171
1173
  "Colis Prive"
1172
1174
  ],
@@ -1239,7 +1241,7 @@ export const CARRIER_CATALOG = {
1239
1241
  },
1240
1242
  "colisweb": {
1241
1243
  "displayName": "Colisweb",
1242
- "color": "#ff8a00",
1244
+ "color": "#15cbe3",
1243
1245
  "countries": [
1244
1246
  "FR"
1245
1247
  ],
@@ -1262,7 +1264,12 @@ export const CARRIER_CATALOG = {
1262
1264
  ]
1263
1265
  }
1264
1266
  ],
1265
- "detectionRules": []
1267
+ "detectionRules": [
1268
+ {
1269
+ "pattern": "^\\d{8}$",
1270
+ "confidence": "low"
1271
+ }
1272
+ ]
1266
1273
  },
1267
1274
  "c-chez-vous": {
1268
1275
  "displayName": "C Chez Vous",
@@ -1338,7 +1345,7 @@ export const CARRIER_CATALOG = {
1338
1345
  },
1339
1346
  "ciblex": {
1340
1347
  "displayName": "Ciblex",
1341
- "color": "#e30613",
1348
+ "color": "#0160ab",
1342
1349
  "aliases": [
1343
1350
  "Ciblex Express"
1344
1351
  ],
@@ -1424,7 +1431,7 @@ export const CARRIER_CATALOG = {
1424
1431
  },
1425
1432
  "asendia": {
1426
1433
  "displayName": "Asendia",
1427
- "color": "#ef7d00",
1434
+ "color": "#005d69",
1428
1435
  "aliases": [
1429
1436
  "Asendia Management",
1430
1437
  "Asendia UK",
@@ -2997,7 +3004,7 @@ export const CARRIER_CATALOG = {
2997
3004
  },
2998
3005
  "four-px": {
2999
3006
  "displayName": "4PX",
3000
- "color": "#f58220",
3007
+ "color": "#005add",
3001
3008
  "countries": [
3002
3009
  "CN"
3003
3010
  ],
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Universal Parcel Scraper",
5
- "version": "0.23.0"
5
+ "version": "0.24.0"
6
6
  },
7
7
  "paths": {
8
8
  "/health": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-parcel-scraper",
3
- "version": "0.23.0-main.358",
3
+ "version": "0.24.0-main.360",
4
4
  "description": "Self-hosted parcel tracking: carrier detection, dedicated scrapers and optional universal providers.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",