universal-parcel-scraper 0.652.2-main.3105 → 0.652.4-main.3109
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/README.md +1 -1
- package/dist/carriers/dayone/statuses.json +1 -0
- package/dist/carriers/dhlink/status.js +2 -0
- package/dist/carriers/dhlink/statuses.json +1 -0
- package/dist/carriers/four-px/status.js +2 -0
- package/dist/carriers/four-px/statuses.json +18 -0
- package/dist/carriers/mailamericas/status.js +5 -3
- package/dist/carriers/mailamericas/statuses.json +1 -0
- package/dist/server/openapi.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -155,7 +155,7 @@ createTracker({ providers: ['ParcelsApp', 'Ship24', '17TRACK', 'Postal Ninja', '
|
|
|
155
155
|
<!-- GENERATED:stages -->
|
|
156
156
|
<img src="docs/assets/stages.svg" alt="DHL: Die Sendung wurde in das Zustellfahrzeug geladen.; Mondial Relay: En cours de livraison; Correios Brazil: Objeto saiu para entrega ao destinatário; Correos Express: EN REPARTO; Yamato Transport: 配達中; La Poste / Colissimo: DISTOU. All are filed under out_for_delivery." width="760">
|
|
157
157
|
|
|
158
|
-
The carrier folders record 16,
|
|
158
|
+
The carrier folders record 16,477 such statuses, each filed under one stage.
|
|
159
159
|
<!-- /GENERATED:stages -->
|
|
160
160
|
|
|
161
161
|
Wording nobody recorded yet goes through a classifier that reads seven European languages.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"carrier": "dayone",
|
|
3
3
|
"entries": [
|
|
4
|
+
{"wording": "Shipment has begun. In transit to destination city", "stage": "in_transit", "language": "en", "confirmedBy": "live", "note": "The single scan of a parcel the tracker lists with a YunExpress number, whose tracker carries the rest of its history."},
|
|
4
5
|
{"wording": "Order processed by shipper", "stage": "registered", "language": "en", "confirmedBy": "live", "note": "Yanwen's record of the merchant's order data, the first scan."},
|
|
5
6
|
{"wording": "SHIPPING INFORMATION RECEIVED", "stage": "registered", "language": "en", "confirmedBy": "live"},
|
|
6
7
|
{"wording": "SHIPPING INFORMATION RECEIVED BY AUSTRALIA POST", "stage": "registered", "language": "en", "confirmedBy": "live", "note": "Australia Post's manifest, relayed: it comes after the parcel has moved and is no step back."},
|
|
@@ -89,6 +89,8 @@ const PATTERNS = [
|
|
|
89
89
|
[/已出口直封$/, 'in_transit'],
|
|
90
90
|
[/^出口海关\/放行$/, 'in_transit'],
|
|
91
91
|
[/^到达寄达地(?:处理中心)?$/, 'in_transit'],
|
|
92
|
+
// Collected at the destination port after import clearance, though its English says a delivery was made.
|
|
93
|
+
[/^目的港已提货/, 'in_transit'],
|
|
92
94
|
[/^离开【[^】]*】处理中心$/, 'in_transit'],
|
|
93
95
|
[/^送交出口海关$/, 'customs'],
|
|
94
96
|
[/安排投递$/, 'out_for_delivery'],
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
{"wording": "送交出口海关", "stage": "customs", "language": "zh", "confirmedBy": "live", "note": "Presented to export customs."},
|
|
54
54
|
{"wording": "出口海关/放行", "stage": "in_transit", "language": "zh", "confirmedBy": "live", "note": "Released by export customs; transit resumes."},
|
|
55
55
|
{"wording": "到达寄达地", "stage": "in_transit", "language": "zh", "confirmedBy": "live", "note": "Arrived in the destination country."},
|
|
56
|
+
{"wording": "目的港已提货 Delivery has been made at the destination port", "stage": "in_transit", "language": "zh", "confirmedBy": "live", "note": "Collected at the destination port after import clearance, before the destination's own scans; the English says a delivery, which it is not."},
|
|
56
57
|
{"wording": "到达寄达地处理中心", "stage": "in_transit", "language": "zh", "confirmedBy": "live", "note": "Arrived at the destination's processing centre."},
|
|
57
58
|
{"wording": "离开【GB】处理中心", "stage": "in_transit", "language": "zh", "confirmedBy": "live", "note": "Left the destination's processing centre."},
|
|
58
59
|
{"wording": "【GB】安排投递", "stage": "out_for_delivery", "language": "zh", "confirmedBy": "live", "note": "Out for delivery abroad; any country."},
|
|
@@ -14,6 +14,7 @@ const CODES = new Map([
|
|
|
14
14
|
['FPX_C_AAF', { status: 'in_transit', stage: 'in_transit' }],
|
|
15
15
|
['FPX_C_ADFF', { status: 'in_transit', stage: 'in_transit' }],
|
|
16
16
|
['FPX_F_ST', { status: 'in_transit', stage: 'in_transit' }],
|
|
17
|
+
['FPX_M_PT', { status: 'in_transit', stage: 'in_transit' }], // Left the origin facility, awaiting the line haul.
|
|
17
18
|
['FPX_M_HA', { status: 'in_transit', stage: 'in_transit' }],
|
|
18
19
|
['FPX_M_DFOA', { status: 'in_transit', stage: 'in_transit' }],
|
|
19
20
|
['FPX_M_ATA', { status: 'in_transit', stage: 'in_transit' }],
|
|
@@ -23,6 +24,7 @@ const CODES = new Map([
|
|
|
23
24
|
['FPX_D_AOPC', { status: 'in_transit', stage: 'in_transit' }],
|
|
24
25
|
['FPX_D_STPP', { status: 'in_transit', stage: 'in_transit' }],
|
|
25
26
|
['FPX_D_HQ', { status: 'in_transit', stage: 'in_transit' }],
|
|
27
|
+
['FPX_D_DFD', { status: 'in_transit', stage: 'in_transit' }], // Left the destination's national sorting centre.
|
|
26
28
|
['FPX_O_RR', { status: 'in_transit', stage: 'in_transit' }],
|
|
27
29
|
['FPX_M_IT', { status: 'in_transit', stage: 'in_transit' }],
|
|
28
30
|
]);
|
|
@@ -302,6 +302,24 @@
|
|
|
302
302
|
"confirmedBy": "live",
|
|
303
303
|
"firstSeen": "2026-10-19",
|
|
304
304
|
"note": "The pickup shop took the parcel over; relayed from DPD."
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"code": "FPX_M_PT",
|
|
308
|
+
"wording": "Pending transportation",
|
|
309
|
+
"language": "en",
|
|
310
|
+
"stage": "in_transit",
|
|
311
|
+
"confirmedBy": "live",
|
|
312
|
+
"firstSeen": "2026-10-22",
|
|
313
|
+
"note": "After the departure from the origin facility, before the hand-over to the airline."
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"code": "FPX_D_DFD",
|
|
317
|
+
"wording": "Out from national sorting center",
|
|
318
|
+
"language": "en",
|
|
319
|
+
"stage": "in_transit",
|
|
320
|
+
"confirmedBy": "live",
|
|
321
|
+
"firstSeen": "2026-10-22",
|
|
322
|
+
"note": "After import clearance, the day before the last mile's out-for-delivery scan."
|
|
305
323
|
}
|
|
306
324
|
]
|
|
307
325
|
}
|
|
@@ -47,9 +47,10 @@ const CODES = new Map([
|
|
|
47
47
|
export function mailamericasMappedStage(code) {
|
|
48
48
|
return CODES.get(code.toUpperCase());
|
|
49
49
|
}
|
|
50
|
-
// Tax ID checks (SM), notices (AV)
|
|
51
|
-
// seen while the parcel was still at the origin warehouse)
|
|
52
|
-
|
|
50
|
+
// Tax ID checks (SM), notices (AV), the record of a prepaid duty (AD-4,
|
|
51
|
+
// seen while the parcel was still at the origin warehouse) and a delivery
|
|
52
|
+
// moved to a later round (LM-11) move nothing.
|
|
53
|
+
const NOTICE = /^(?:SM-|AV-|AD-4$|LM-11$)/i;
|
|
53
54
|
/** A scan's stage: its code, else the shared wording rules, else nothing. */
|
|
54
55
|
export function mailamericasStage(code, wording) {
|
|
55
56
|
const mapped = mailamericasMappedStage(code);
|
|
@@ -69,5 +70,6 @@ export const statusMap = {
|
|
|
69
70
|
{ code: 'SM-9', note: 'The buyer\'s details form received, logged again every half hour while the parcel moves on; it moves nothing.' },
|
|
70
71
|
{ code: 'AD-4', note: 'The import duty recorded as paid, which can come while the parcel is still at the origin warehouse; it moves nothing.' },
|
|
71
72
|
{ code: 'AV-1', note: 'A notice that adds information to the history; it moves nothing.' },
|
|
73
|
+
{ code: 'LM-11', note: 'The delivery moved to a later round, logged after a round or beside the next one, which can deliver; it names no attempt and moves nothing.' },
|
|
72
74
|
],
|
|
73
75
|
};
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
{"code": "LM-5", "wording": "Delivery office: Returned for failed delivery", "language": "en", "stage": "returned", "confirmedBy": "live"},
|
|
41
41
|
{"code": "LM-7", "wording": "Delivery office: Recipient Absent", "language": "en", "stage": "failed_attempt", "confirmedBy": "live"},
|
|
42
42
|
{"code": "LM-9", "wording": "Delivery office: Wrong delivery address", "language": "en", "stage": "failed_attempt", "confirmedBy": "live", "note": "The parcel went out again and was delivered in the history seen."},
|
|
43
|
+
{"code": "LM-11", "wording": "Delivery office: Rescheduling", "language": "en", "confirmedBy": "live", "unmapped": true, "note": "After a round with the postman, and again beside the next round, which delivered the parcel; it names no attempt."},
|
|
43
44
|
{"code": "PF-1", "wording": "Finished: Delivered", "language": "en", "stage": "delivered", "confirmedBy": "live"},
|
|
44
45
|
{"code": "PF-2", "wording": "Finished: Delivered to return address", "language": "en", "stage": "returned", "confirmedBy": "live", "note": "The summary's status reads returned."},
|
|
45
46
|
{"code": "RT-1", "wording": "Return-Destruction: Received at return Warehouse", "language": "en", "stage": "returned", "confirmedBy": "live", "note": "The summary's status reads returned."},
|
package/dist/server/openapi.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "universal-parcel-scraper",
|
|
3
|
-
"version": "0.652.
|
|
3
|
+
"version": "0.652.4-main.3109",
|
|
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",
|