universal-parcel-scraper 0.51.0-main.653 → 0.53.0-main.666
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 +8 -6
- package/data/catalog.json +59 -25
- package/data/coverage-summary.json +3 -3
- package/data/detection-golden.json +446 -81
- package/dist/browser/scraper.js +163 -103
- package/dist/carriers/an-post/adapter.d.ts +15 -0
- package/dist/carriers/an-post/adapter.js +31 -0
- package/dist/carriers/an-post/app.d.ts +10 -0
- package/dist/carriers/an-post/app.js +95 -0
- package/dist/carriers/an-post/carrier.json +52 -10
- package/dist/carriers/an-post/numbers.json +17 -8
- package/dist/carriers/an-post/parser.d.ts +16 -0
- package/dist/carriers/an-post/parser.js +155 -0
- package/dist/carriers/an-post/status.d.ts +25 -0
- package/dist/carriers/an-post/status.js +106 -0
- package/dist/carriers/an-post/statuses.json +366 -0
- package/dist/carriers/canada-post/adapter.d.ts +2 -0
- package/dist/carriers/china-post/adapter.d.ts +13 -0
- package/dist/carriers/china-post/adapter.js +27 -0
- package/dist/carriers/china-post/app.d.ts +21 -0
- package/dist/carriers/china-post/app.js +81 -0
- package/dist/carriers/china-post/carrier.json +43 -8
- package/dist/carriers/china-post/numbers.json +20 -0
- package/dist/carriers/china-post/parser.d.ts +31 -0
- package/dist/carriers/china-post/parser.js +256 -0
- package/dist/carriers/china-post/status.d.ts +13 -0
- package/dist/carriers/china-post/status.js +84 -0
- package/dist/carriers/china-post/statuses.json +343 -0
- package/dist/carriers/hongkong-post/adapter.d.ts +13 -0
- package/dist/carriers/hongkong-post/adapter.js +30 -0
- package/dist/carriers/hongkong-post/carrier.json +21 -6
- package/dist/carriers/hongkong-post/chatbot.d.ts +20 -0
- package/dist/carriers/hongkong-post/chatbot.js +81 -0
- package/dist/carriers/hongkong-post/numbers.json +4 -1
- package/dist/carriers/hongkong-post/parser.d.ts +36 -0
- package/dist/carriers/hongkong-post/parser.js +119 -0
- package/dist/carriers/hongkong-post/status.d.ts +12 -0
- package/dist/carriers/hongkong-post/status.js +29 -0
- package/dist/carriers/hongkong-post/statuses.json +13 -0
- package/dist/carriers/j-and-t/adapter.d.ts +15 -0
- package/dist/carriers/j-and-t/adapter.js +33 -0
- package/dist/carriers/j-and-t/app.d.ts +16 -0
- package/dist/carriers/j-and-t/app.js +247 -0
- package/dist/carriers/j-and-t/carrier.json +41 -8
- package/dist/carriers/j-and-t/numbers.json +18 -9
- package/dist/carriers/j-and-t/status.d.ts +17 -0
- package/dist/carriers/j-and-t/status.js +19 -0
- package/dist/carriers/j-and-t/statuses.json +61 -0
- package/dist/carriers/old-dominion/adapter.d.ts +16 -0
- package/dist/carriers/old-dominion/adapter.js +33 -0
- package/dist/carriers/old-dominion/browser.d.ts +20 -0
- package/dist/carriers/old-dominion/browser.js +161 -0
- package/dist/carriers/old-dominion/carrier.json +44 -8
- package/dist/carriers/old-dominion/numbers.json +4 -1
- package/dist/carriers/old-dominion/parser.d.ts +29 -0
- package/dist/carriers/old-dominion/parser.js +209 -0
- package/dist/carriers/old-dominion/status.d.ts +6 -0
- package/dist/carriers/old-dominion/status.js +42 -0
- package/dist/carriers/old-dominion/statuses.json +21 -0
- package/dist/carriers/sagawa/adapter.d.ts +14 -0
- package/dist/carriers/sagawa/adapter.js +23 -0
- package/dist/carriers/sagawa/app.d.ts +16 -0
- package/dist/carriers/sagawa/app.js +78 -0
- package/dist/carriers/sagawa/carrier.json +7 -3
- package/dist/carriers/sagawa/numbers.json +95 -0
- package/dist/carriers/sagawa/parser.d.ts +8 -0
- package/dist/carriers/sagawa/parser.js +51 -0
- package/dist/carriers/sagawa/status.d.ts +9 -0
- package/dist/carriers/sagawa/status.js +17 -0
- package/dist/carriers/sagawa/statuses.json +10 -1
- package/dist/carriers/spee-dee/adapter.d.ts +21 -0
- package/dist/carriers/spee-dee/adapter.js +115 -0
- package/dist/carriers/spee-dee/carrier.json +35 -8
- package/dist/carriers/spee-dee/numbers.json +13 -4
- package/dist/carriers/spee-dee/parser.d.ts +10 -0
- package/dist/carriers/spee-dee/parser.js +161 -0
- package/dist/carriers/spee-dee/status.d.ts +4 -0
- package/dist/carriers/spee-dee/status.js +14 -0
- package/dist/carriers/spee-dee/statuses.json +8 -0
- package/dist/carriers/speedx/adapter.d.ts +13 -0
- package/dist/carriers/speedx/adapter.js +38 -0
- package/dist/carriers/speedx/carrier.json +35 -8
- package/dist/carriers/speedx/numbers.json +16 -4
- package/dist/carriers/speedx/parser.d.ts +10 -0
- package/dist/carriers/speedx/parser.js +230 -0
- package/dist/carriers/speedx/status.d.ts +10 -0
- package/dist/carriers/speedx/status.js +48 -0
- package/dist/carriers/speedx/statuses.json +18 -0
- package/dist/carriers/sto/adapter.d.ts +17 -0
- package/dist/carriers/sto/adapter.js +59 -0
- package/dist/carriers/sto/carrier.json +51 -8
- package/dist/carriers/sto/numbers.json +138 -2
- package/dist/carriers/sto/parser.d.ts +6 -0
- package/dist/carriers/sto/parser.js +112 -0
- package/dist/carriers/sto/status.d.ts +20 -0
- package/dist/carriers/sto/status.js +49 -0
- package/dist/carriers/sto/statuses.json +69 -0
- package/dist/carriers/thailand-post/adapter.d.ts +14 -0
- package/dist/carriers/thailand-post/adapter.js +85 -0
- package/dist/carriers/thailand-post/carrier.json +49 -11
- package/dist/carriers/thailand-post/parser.d.ts +18 -0
- package/dist/carriers/thailand-post/parser.js +177 -0
- package/dist/carriers/thailand-post/status.d.ts +24 -0
- package/dist/carriers/thailand-post/status.js +77 -0
- package/dist/carriers/thailand-post/statuses.json +22 -0
- package/dist/core/catalog/statusMaps.js +11 -2
- package/dist/core/result/index.d.ts +4 -0
- package/dist/core/result/index.js +6 -0
- package/dist/core/transport/trawl.js +38 -5
- package/dist/data/catalog.json +59 -25
- package/dist/facade/index.d.ts +2 -0
- package/dist/facade/index.js +166 -10
- package/dist/generated/catalog.d.ts +45 -25
- package/dist/generated/catalog.js +60 -26
- package/dist/generated/recognition.js +2 -0
- package/dist/generated/registry.js +30 -10
- package/dist/providers/coverage.json +43 -19
- package/dist/providers/shared/hints.js +3 -2
- package/dist/server/index.js +5 -1
- package/dist/server/openapi.json +16 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ The engine behind [Peek](https://peektracker.com) ([GitHub](https://github.com/p
|
|
|
13
13
|
[](LICENSE)
|
|
14
14
|
|
|
15
15
|
<!-- GENERATED:summary -->
|
|
16
|
-
**3,500+ carriers** through **
|
|
16
|
+
**3,500+ carriers** through **114 dedicated adapters** and **5 universal fallbacks**
|
|
17
17
|
|
|
18
18
|
<sub>124 catalog entries · 58 countries represented</sub>
|
|
19
19
|
<!-- /GENERATED:summary -->
|
|
@@ -33,9 +33,9 @@ its own as a command, a Node library or an HTTP server.
|
|
|
33
33
|
## Benchmark
|
|
34
34
|
|
|
35
35
|
<!-- GENERATED:coverage -->
|
|
36
|
-
In a curated benchmark of
|
|
36
|
+
In a curated benchmark of 114 carriers, dedicated adapters return tracking history for **74**, rising to **84** with all fallbacks enabled. The best single aggregator returns 53.
|
|
37
37
|
|
|
38
|
-
<img src="docs/assets/coverage.svg" alt="Carriers with tracking history: This project, all fallbacks enabled 84, This project, dedicated adapters alone
|
|
38
|
+
<img src="docs/assets/coverage.svg" alt="Carriers with tracking history: This project, all fallbacks enabled 84, This project, dedicated adapters alone 74, ParcelsApp 53, Postal Ninja 43, 17TRACK 40, Ship24 42, UPU 12." width="760">
|
|
39
39
|
<!-- /GENERATED:coverage -->
|
|
40
40
|
|
|
41
41
|
[Method and results per carrier](providers/COVERAGE.md)
|
|
@@ -134,7 +134,7 @@ It answers one lookup at a time. Storing parcels and polling are yours.
|
|
|
134
134
|
|
|
135
135
|
## How it works
|
|
136
136
|
|
|
137
|
-
<img src="docs/assets/how-it-works.svg" width="840" alt="An input is detected offline and fetched by the carrier's dedicated adapter, or by a fallback you enabled when that finds no history. Each scan's wording is filed under a stage, and the result is one timeline.">
|
|
137
|
+
<img src="docs/assets/how-it-works.svg" width="840" alt="An input is detected offline and fetched by the carrier's dedicated adapter, or by a fallback you enabled when that finds no history or only part of it. Each scan's wording is filed under a stage, and the result is one timeline.">
|
|
138
138
|
|
|
139
139
|
**Fetching.** Adapters use plain HTTP where the site allows it. For sites that only answer a
|
|
140
140
|
browser, install `playwright-core sharp onnxruntime-web` and pass `chromiumPath`, or run the
|
|
@@ -142,7 +142,9 @@ browser, install `playwright-core sharp onnxruntime-web` and pass `chromiumPath`
|
|
|
142
142
|
install to carriers.
|
|
143
143
|
|
|
144
144
|
**Fallbacks.** When an adapter finds no history, the lookup moves to the universal trackers
|
|
145
|
-
you enabled.
|
|
145
|
+
you enabled. When it finds only a current status or its newest scans, the tracker asks them
|
|
146
|
+
too and takes a fuller history that is not behind the carrier's. Only UPU is on by default.
|
|
147
|
+
Each one you enable receives the tracking number.
|
|
146
148
|
|
|
147
149
|
```js
|
|
148
150
|
createTracker({ providers: ['ParcelsApp', 'Ship24', '17TRACK', 'Postal Ninja', 'UPU'] });
|
|
@@ -153,7 +155,7 @@ createTracker({ providers: ['ParcelsApp', 'Ship24', '17TRACK', 'Postal Ninja', '
|
|
|
153
155
|
<!-- GENERATED:stages -->
|
|
154
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">
|
|
155
157
|
|
|
156
|
-
The carrier folders record 2,
|
|
158
|
+
The carrier folders record 2,992 such statuses, each filed under one stage.
|
|
157
159
|
<!-- /GENERATED:stages -->
|
|
158
160
|
|
|
159
161
|
Wording nobody recorded yet goes through a classifier that reads seven European languages.
|
package/data/catalog.json
CHANGED
|
@@ -1994,14 +1994,26 @@
|
|
|
1994
1994
|
"IE"
|
|
1995
1995
|
],
|
|
1996
1996
|
"selectable": true,
|
|
1997
|
-
"timezone": "
|
|
1997
|
+
"timezone": "Europe/Dublin",
|
|
1998
1998
|
"tracking": {
|
|
1999
1999
|
"mode": "automatic",
|
|
2000
|
-
"adapter": "
|
|
2000
|
+
"adapter": "an-post",
|
|
2001
|
+
"localClocks": true
|
|
2001
2002
|
},
|
|
2002
|
-
"canaryUrl": "https://
|
|
2003
|
+
"canaryUrl": "https://www.anpost.com/Post-Parcels/Track/Search",
|
|
2003
2004
|
"trackingUrlTemplate": "https://www.anpost.com/Post-Parcels/Track/History?item={trackingNumber}",
|
|
2004
|
-
"linkRules": [
|
|
2005
|
+
"linkRules": [
|
|
2006
|
+
{
|
|
2007
|
+
"domains": [
|
|
2008
|
+
"anpost.com"
|
|
2009
|
+
],
|
|
2010
|
+
"pathPattern": "^/Post-Parcels/Track/History/?$",
|
|
2011
|
+
"params": [
|
|
2012
|
+
"item",
|
|
2013
|
+
"barcode"
|
|
2014
|
+
]
|
|
2015
|
+
}
|
|
2016
|
+
],
|
|
2005
2017
|
"detectionRules": [
|
|
2006
2018
|
{
|
|
2007
2019
|
"pattern": "^[A-Z]{2}\\d{9}IE$",
|
|
@@ -2822,9 +2834,9 @@
|
|
|
2822
2834
|
"timezone": "UTC",
|
|
2823
2835
|
"tracking": {
|
|
2824
2836
|
"mode": "automatic",
|
|
2825
|
-
"adapter": "
|
|
2837
|
+
"adapter": "speedx"
|
|
2826
2838
|
},
|
|
2827
|
-
"canaryUrl": "https://
|
|
2839
|
+
"canaryUrl": "https://tracking.speedx.io/",
|
|
2828
2840
|
"trackingUrlTemplate": "https://tracking.speedx.io/{trackingNumber}",
|
|
2829
2841
|
"linkRules": [
|
|
2830
2842
|
{
|
|
@@ -2940,10 +2952,10 @@
|
|
|
2940
2952
|
"timezone": "UTC",
|
|
2941
2953
|
"tracking": {
|
|
2942
2954
|
"mode": "automatic",
|
|
2943
|
-
"adapter": "
|
|
2955
|
+
"adapter": "old-dominion"
|
|
2944
2956
|
},
|
|
2945
|
-
"canaryUrl": "https://
|
|
2946
|
-
"trackingUrlTemplate": "https://www.odfl.com/us/en/tools/trace-track-ltl-freight
|
|
2957
|
+
"canaryUrl": "https://www.odfl.com/us/en/tools/trace-track-ltl-freight.html",
|
|
2958
|
+
"trackingUrlTemplate": "https://www.odfl.com/us/en/tools/trace-track-ltl-freight.html?proNumbers={trackingNumber}",
|
|
2947
2959
|
"linkRules": [
|
|
2948
2960
|
{
|
|
2949
2961
|
"domains": [
|
|
@@ -2980,9 +2992,10 @@
|
|
|
2980
2992
|
"timezone": "UTC",
|
|
2981
2993
|
"tracking": {
|
|
2982
2994
|
"mode": "automatic",
|
|
2983
|
-
"adapter": "
|
|
2995
|
+
"adapter": "spee-dee",
|
|
2996
|
+
"localClocks": true
|
|
2984
2997
|
},
|
|
2985
|
-
"canaryUrl": "https://
|
|
2998
|
+
"canaryUrl": "https://speedeedelivery.com/track-a-shipment/",
|
|
2986
2999
|
"trackingUrlTemplate": "https://www.speedeedelivery.com/track/?tracking={trackingNumber}",
|
|
2987
3000
|
"linkRules": [
|
|
2988
3001
|
{
|
|
@@ -3468,15 +3481,22 @@
|
|
|
3468
3481
|
"timezone": "Asia/Shanghai",
|
|
3469
3482
|
"tracking": {
|
|
3470
3483
|
"mode": "automatic",
|
|
3471
|
-
"adapter": "
|
|
3484
|
+
"adapter": "sto",
|
|
3485
|
+
"recognitionRank": 10,
|
|
3486
|
+
"localClocks": true
|
|
3472
3487
|
},
|
|
3473
|
-
"canaryUrl": "https://
|
|
3488
|
+
"canaryUrl": "https://page.sto.cn/ued-projects/sto-customer-onlinekf",
|
|
3474
3489
|
"trackingUrlTemplate": "https://www.sto.cn/",
|
|
3475
3490
|
"linkRules": [],
|
|
3476
3491
|
"detectionRules": [
|
|
3477
3492
|
{
|
|
3478
3493
|
"pattern": "^\\d{12}$",
|
|
3479
3494
|
"confidence": "low"
|
|
3495
|
+
},
|
|
3496
|
+
{
|
|
3497
|
+
"pattern": "^77\\d{13}$",
|
|
3498
|
+
"confidence": "low",
|
|
3499
|
+
"preferred": true
|
|
3480
3500
|
}
|
|
3481
3501
|
]
|
|
3482
3502
|
},
|
|
@@ -3698,14 +3718,24 @@
|
|
|
3698
3718
|
"TH"
|
|
3699
3719
|
],
|
|
3700
3720
|
"selectable": true,
|
|
3701
|
-
"timezone": "
|
|
3721
|
+
"timezone": "Asia/Bangkok",
|
|
3702
3722
|
"tracking": {
|
|
3703
3723
|
"mode": "automatic",
|
|
3704
|
-
"adapter": "
|
|
3724
|
+
"adapter": "thailand-post",
|
|
3725
|
+
"localClocks": true
|
|
3705
3726
|
},
|
|
3706
|
-
"canaryUrl": "https://
|
|
3707
|
-
"trackingUrlTemplate": "https://
|
|
3708
|
-
"linkRules": [
|
|
3727
|
+
"canaryUrl": "https://track.thailandpost.co.th/",
|
|
3728
|
+
"trackingUrlTemplate": "https://track.thailandpost.co.th/?trackNumber={trackingNumber}",
|
|
3729
|
+
"linkRules": [
|
|
3730
|
+
{
|
|
3731
|
+
"domains": [
|
|
3732
|
+
"track.thailandpost.co.th"
|
|
3733
|
+
],
|
|
3734
|
+
"params": [
|
|
3735
|
+
"trackNumber"
|
|
3736
|
+
]
|
|
3737
|
+
}
|
|
3738
|
+
],
|
|
3709
3739
|
"detectionRules": [
|
|
3710
3740
|
{
|
|
3711
3741
|
"pattern": "^[A-Z]{2}\\d{9}TH$",
|
|
@@ -3808,9 +3838,10 @@
|
|
|
3808
3838
|
"timezone": "UTC",
|
|
3809
3839
|
"tracking": {
|
|
3810
3840
|
"mode": "automatic",
|
|
3811
|
-
"adapter": "
|
|
3841
|
+
"adapter": "hongkong-post",
|
|
3842
|
+
"localClocks": true
|
|
3812
3843
|
},
|
|
3813
|
-
"canaryUrl": "https://
|
|
3844
|
+
"canaryUrl": "https://chatbot.hongkongpost.hk/en",
|
|
3814
3845
|
"trackingUrlTemplate": "https://webapp.hongkongpost.hk/en/mail_tracking2/index.html",
|
|
3815
3846
|
"linkRules": [],
|
|
3816
3847
|
"detectionRules": [
|
|
@@ -3916,9 +3947,10 @@
|
|
|
3916
3947
|
"timezone": "UTC",
|
|
3917
3948
|
"tracking": {
|
|
3918
3949
|
"mode": "automatic",
|
|
3919
|
-
"adapter": "
|
|
3950
|
+
"adapter": "china-post",
|
|
3951
|
+
"localClocks": true
|
|
3920
3952
|
},
|
|
3921
|
-
"canaryUrl": "https://
|
|
3953
|
+
"canaryUrl": "https://ec.ems.com.cn/ect-web/mail/getGisTraces/checkMail",
|
|
3922
3954
|
"trackingUrlTemplate": "https://www.ems.com.cn/mailtracking/you_jian_cha_xun.html",
|
|
3923
3955
|
"linkRules": [],
|
|
3924
3956
|
"detectionRules": [
|
|
@@ -4304,9 +4336,11 @@
|
|
|
4304
4336
|
"timezone": "UTC",
|
|
4305
4337
|
"tracking": {
|
|
4306
4338
|
"mode": "automatic",
|
|
4307
|
-
"adapter": "
|
|
4339
|
+
"adapter": "j-and-t",
|
|
4340
|
+
"recognitionRank": 9,
|
|
4341
|
+
"localClocks": true
|
|
4308
4342
|
},
|
|
4309
|
-
"canaryUrl": "https://
|
|
4343
|
+
"canaryUrl": "https://customerapp.jntexpress.id/jandt-app-ifd-web/router.do",
|
|
4310
4344
|
"trackingUrlTemplate": "https://www.jtexpress.ph/track-and-trace?flag=1&waybillNo={trackingNumber}",
|
|
4311
4345
|
"linkRules": [
|
|
4312
4346
|
{
|
|
@@ -4998,7 +5032,7 @@
|
|
|
4998
5032
|
"timezone": "Asia/Tokyo",
|
|
4999
5033
|
"tracking": {
|
|
5000
5034
|
"mode": "automatic",
|
|
5001
|
-
"adapter": "
|
|
5035
|
+
"adapter": "sagawa"
|
|
5002
5036
|
},
|
|
5003
5037
|
"canaryUrl": "https://www.sagawa-exp.co.jp/send/howto-search.html",
|
|
5004
5038
|
"trackingUrlTemplate": "https://k2k.sagawa-exp.co.jp/p/sagawa/web/okurijoinput.jsp",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"catalog": 124,
|
|
3
|
-
"activeAdapters":
|
|
3
|
+
"activeAdapters": 114,
|
|
4
4
|
"countries": 58,
|
|
5
|
-
"referenceCarriers":
|
|
5
|
+
"referenceCarriers": 114,
|
|
6
6
|
"comparison": {
|
|
7
7
|
"combined": 84,
|
|
8
|
-
"direct":
|
|
8
|
+
"direct": 74,
|
|
9
9
|
"providers": {
|
|
10
10
|
"ParcelsApp": 53,
|
|
11
11
|
"Postal Ninja": 43,
|