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.
Files changed (121) hide show
  1. package/README.md +8 -6
  2. package/data/catalog.json +59 -25
  3. package/data/coverage-summary.json +3 -3
  4. package/data/detection-golden.json +446 -81
  5. package/dist/browser/scraper.js +163 -103
  6. package/dist/carriers/an-post/adapter.d.ts +15 -0
  7. package/dist/carriers/an-post/adapter.js +31 -0
  8. package/dist/carriers/an-post/app.d.ts +10 -0
  9. package/dist/carriers/an-post/app.js +95 -0
  10. package/dist/carriers/an-post/carrier.json +52 -10
  11. package/dist/carriers/an-post/numbers.json +17 -8
  12. package/dist/carriers/an-post/parser.d.ts +16 -0
  13. package/dist/carriers/an-post/parser.js +155 -0
  14. package/dist/carriers/an-post/status.d.ts +25 -0
  15. package/dist/carriers/an-post/status.js +106 -0
  16. package/dist/carriers/an-post/statuses.json +366 -0
  17. package/dist/carriers/canada-post/adapter.d.ts +2 -0
  18. package/dist/carriers/china-post/adapter.d.ts +13 -0
  19. package/dist/carriers/china-post/adapter.js +27 -0
  20. package/dist/carriers/china-post/app.d.ts +21 -0
  21. package/dist/carriers/china-post/app.js +81 -0
  22. package/dist/carriers/china-post/carrier.json +43 -8
  23. package/dist/carriers/china-post/numbers.json +20 -0
  24. package/dist/carriers/china-post/parser.d.ts +31 -0
  25. package/dist/carriers/china-post/parser.js +256 -0
  26. package/dist/carriers/china-post/status.d.ts +13 -0
  27. package/dist/carriers/china-post/status.js +84 -0
  28. package/dist/carriers/china-post/statuses.json +343 -0
  29. package/dist/carriers/hongkong-post/adapter.d.ts +13 -0
  30. package/dist/carriers/hongkong-post/adapter.js +30 -0
  31. package/dist/carriers/hongkong-post/carrier.json +21 -6
  32. package/dist/carriers/hongkong-post/chatbot.d.ts +20 -0
  33. package/dist/carriers/hongkong-post/chatbot.js +81 -0
  34. package/dist/carriers/hongkong-post/numbers.json +4 -1
  35. package/dist/carriers/hongkong-post/parser.d.ts +36 -0
  36. package/dist/carriers/hongkong-post/parser.js +119 -0
  37. package/dist/carriers/hongkong-post/status.d.ts +12 -0
  38. package/dist/carriers/hongkong-post/status.js +29 -0
  39. package/dist/carriers/hongkong-post/statuses.json +13 -0
  40. package/dist/carriers/j-and-t/adapter.d.ts +15 -0
  41. package/dist/carriers/j-and-t/adapter.js +33 -0
  42. package/dist/carriers/j-and-t/app.d.ts +16 -0
  43. package/dist/carriers/j-and-t/app.js +247 -0
  44. package/dist/carriers/j-and-t/carrier.json +41 -8
  45. package/dist/carriers/j-and-t/numbers.json +18 -9
  46. package/dist/carriers/j-and-t/status.d.ts +17 -0
  47. package/dist/carriers/j-and-t/status.js +19 -0
  48. package/dist/carriers/j-and-t/statuses.json +61 -0
  49. package/dist/carriers/old-dominion/adapter.d.ts +16 -0
  50. package/dist/carriers/old-dominion/adapter.js +33 -0
  51. package/dist/carriers/old-dominion/browser.d.ts +20 -0
  52. package/dist/carriers/old-dominion/browser.js +161 -0
  53. package/dist/carriers/old-dominion/carrier.json +44 -8
  54. package/dist/carriers/old-dominion/numbers.json +4 -1
  55. package/dist/carriers/old-dominion/parser.d.ts +29 -0
  56. package/dist/carriers/old-dominion/parser.js +209 -0
  57. package/dist/carriers/old-dominion/status.d.ts +6 -0
  58. package/dist/carriers/old-dominion/status.js +42 -0
  59. package/dist/carriers/old-dominion/statuses.json +21 -0
  60. package/dist/carriers/sagawa/adapter.d.ts +14 -0
  61. package/dist/carriers/sagawa/adapter.js +23 -0
  62. package/dist/carriers/sagawa/app.d.ts +16 -0
  63. package/dist/carriers/sagawa/app.js +78 -0
  64. package/dist/carriers/sagawa/carrier.json +7 -3
  65. package/dist/carriers/sagawa/numbers.json +95 -0
  66. package/dist/carriers/sagawa/parser.d.ts +8 -0
  67. package/dist/carriers/sagawa/parser.js +51 -0
  68. package/dist/carriers/sagawa/status.d.ts +9 -0
  69. package/dist/carriers/sagawa/status.js +17 -0
  70. package/dist/carriers/sagawa/statuses.json +10 -1
  71. package/dist/carriers/spee-dee/adapter.d.ts +21 -0
  72. package/dist/carriers/spee-dee/adapter.js +115 -0
  73. package/dist/carriers/spee-dee/carrier.json +35 -8
  74. package/dist/carriers/spee-dee/numbers.json +13 -4
  75. package/dist/carriers/spee-dee/parser.d.ts +10 -0
  76. package/dist/carriers/spee-dee/parser.js +161 -0
  77. package/dist/carriers/spee-dee/status.d.ts +4 -0
  78. package/dist/carriers/spee-dee/status.js +14 -0
  79. package/dist/carriers/spee-dee/statuses.json +8 -0
  80. package/dist/carriers/speedx/adapter.d.ts +13 -0
  81. package/dist/carriers/speedx/adapter.js +38 -0
  82. package/dist/carriers/speedx/carrier.json +35 -8
  83. package/dist/carriers/speedx/numbers.json +16 -4
  84. package/dist/carriers/speedx/parser.d.ts +10 -0
  85. package/dist/carriers/speedx/parser.js +230 -0
  86. package/dist/carriers/speedx/status.d.ts +10 -0
  87. package/dist/carriers/speedx/status.js +48 -0
  88. package/dist/carriers/speedx/statuses.json +18 -0
  89. package/dist/carriers/sto/adapter.d.ts +17 -0
  90. package/dist/carriers/sto/adapter.js +59 -0
  91. package/dist/carriers/sto/carrier.json +51 -8
  92. package/dist/carriers/sto/numbers.json +138 -2
  93. package/dist/carriers/sto/parser.d.ts +6 -0
  94. package/dist/carriers/sto/parser.js +112 -0
  95. package/dist/carriers/sto/status.d.ts +20 -0
  96. package/dist/carriers/sto/status.js +49 -0
  97. package/dist/carriers/sto/statuses.json +69 -0
  98. package/dist/carriers/thailand-post/adapter.d.ts +14 -0
  99. package/dist/carriers/thailand-post/adapter.js +85 -0
  100. package/dist/carriers/thailand-post/carrier.json +49 -11
  101. package/dist/carriers/thailand-post/parser.d.ts +18 -0
  102. package/dist/carriers/thailand-post/parser.js +177 -0
  103. package/dist/carriers/thailand-post/status.d.ts +24 -0
  104. package/dist/carriers/thailand-post/status.js +77 -0
  105. package/dist/carriers/thailand-post/statuses.json +22 -0
  106. package/dist/core/catalog/statusMaps.js +11 -2
  107. package/dist/core/result/index.d.ts +4 -0
  108. package/dist/core/result/index.js +6 -0
  109. package/dist/core/transport/trawl.js +38 -5
  110. package/dist/data/catalog.json +59 -25
  111. package/dist/facade/index.d.ts +2 -0
  112. package/dist/facade/index.js +166 -10
  113. package/dist/generated/catalog.d.ts +45 -25
  114. package/dist/generated/catalog.js +60 -26
  115. package/dist/generated/recognition.js +2 -0
  116. package/dist/generated/registry.js +30 -10
  117. package/dist/providers/coverage.json +43 -19
  118. package/dist/providers/shared/hints.js +3 -2
  119. package/dist/server/index.js +5 -1
  120. package/dist/server/openapi.json +16 -1
  121. 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: Apache-2.0](https://img.shields.io/badge/core-Apache--2.0-blue.svg)](LICENSE)
14
14
 
15
15
  <!-- GENERATED:summary -->
16
- **3,500+ carriers** through **104 dedicated adapters** and **5 universal fallbacks**
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 113 carriers, dedicated adapters return tracking history for **72**, rising to **84** with all fallbacks enabled. The best single aggregator returns 53.
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 72, ParcelsApp 53, Postal Ninja 43, 17TRACK 40, Ship24 42, UPU 12." width="760">
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. Only UPU is on by default. Each one you enable receives the tracking number.
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,819 such statuses, each filed under one stage.
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": "UTC",
1997
+ "timezone": "Europe/Dublin",
1998
1998
  "tracking": {
1999
1999
  "mode": "automatic",
2000
- "adapter": "universal"
2000
+ "adapter": "an-post",
2001
+ "localClocks": true
2001
2002
  },
2002
- "canaryUrl": "https://t.17track.net/",
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": "universal"
2837
+ "adapter": "speedx"
2826
2838
  },
2827
- "canaryUrl": "https://t.17track.net/",
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": "universal"
2955
+ "adapter": "old-dominion"
2944
2956
  },
2945
- "canaryUrl": "https://t.17track.net/",
2946
- "trackingUrlTemplate": "https://www.odfl.com/us/en/tools/trace-track-ltl-freight/trace.html?proNumbers={trackingNumber}",
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": "universal"
2995
+ "adapter": "spee-dee",
2996
+ "localClocks": true
2984
2997
  },
2985
- "canaryUrl": "https://t.17track.net/",
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": "universal"
3484
+ "adapter": "sto",
3485
+ "recognitionRank": 10,
3486
+ "localClocks": true
3472
3487
  },
3473
- "canaryUrl": "https://www.sto.cn/pc/service-page/iframe_2_21",
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": "UTC",
3721
+ "timezone": "Asia/Bangkok",
3702
3722
  "tracking": {
3703
3723
  "mode": "automatic",
3704
- "adapter": "universal"
3724
+ "adapter": "thailand-post",
3725
+ "localClocks": true
3705
3726
  },
3706
- "canaryUrl": "https://t.17track.net/",
3707
- "trackingUrlTemplate": "https://international.thailandpost.com/track-status?lang=en",
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": "universal"
3841
+ "adapter": "hongkong-post",
3842
+ "localClocks": true
3812
3843
  },
3813
- "canaryUrl": "https://t.17track.net/",
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": "universal"
3950
+ "adapter": "china-post",
3951
+ "localClocks": true
3920
3952
  },
3921
- "canaryUrl": "https://t.17track.net/",
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": "universal"
4339
+ "adapter": "j-and-t",
4340
+ "recognitionRank": 9,
4341
+ "localClocks": true
4308
4342
  },
4309
- "canaryUrl": "https://www.jtexpress.ph/",
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": "universal"
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": 104,
3
+ "activeAdapters": 114,
4
4
  "countries": 58,
5
- "referenceCarriers": 113,
5
+ "referenceCarriers": 114,
6
6
  "comparison": {
7
7
  "combined": 84,
8
- "direct": 72,
8
+ "direct": 74,
9
9
  "providers": {
10
10
  "ParcelsApp": 53,
11
11
  "Postal Ninja": 43,