universal-parcel-scraper 0.8.1 → 0.9.0-main.333

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 (128) hide show
  1. package/README.md +5 -5
  2. package/data/carrier.schema.json +4 -0
  3. package/data/catalog.json +491 -11
  4. package/data/coverage-summary.json +5 -5
  5. package/data/detection-golden.json +338 -54
  6. package/dist/browser/scraper.js +535 -27
  7. package/dist/carriers/brt/numbers.json +9 -3
  8. package/dist/carriers/canada-post/numbers.json +8 -4
  9. package/dist/carriers/chronopost/numbers.json +13 -0
  10. package/dist/carriers/ciblex/numbers.json +4 -1
  11. package/dist/carriers/cne/carrier.json +51 -0
  12. package/dist/carriers/cne/numbers.json +5 -0
  13. package/dist/carriers/cne/statuses.json +4 -0
  14. package/dist/carriers/colis-prive/numbers.json +2 -1
  15. package/dist/carriers/correos-express/numbers.json +6 -3
  16. package/dist/carriers/delhivery/numbers.json +9 -3
  17. package/dist/carriers/dhl-ecommerce/numbers.json +2 -1
  18. package/dist/carriers/dpd/adapter.d.ts +6 -2
  19. package/dist/carriers/dpd/adapter.js +71 -17
  20. package/dist/carriers/dpd/numbers.json +3 -1
  21. package/dist/carriers/dpd-de/adapter.d.ts +3 -0
  22. package/dist/carriers/dpd-de/adapter.js +14 -0
  23. package/dist/carriers/dpd-de/carrier.json +94 -0
  24. package/dist/carriers/dpd-de/numbers.json +50 -0
  25. package/dist/carriers/dpd-de/statuses.json +38 -0
  26. package/dist/carriers/dpd-fr/numbers.json +8 -2
  27. package/dist/carriers/dpd-uk/carrier.json +59 -0
  28. package/dist/carriers/dpd-uk/numbers.json +5 -0
  29. package/dist/carriers/dpd-uk/statuses.json +4 -0
  30. package/dist/carriers/ekart/adapter.d.ts +12 -0
  31. package/dist/carriers/ekart/adapter.js +56 -0
  32. package/dist/carriers/ekart/carrier.json +64 -0
  33. package/dist/carriers/ekart/numbers.json +29 -0
  34. package/dist/carriers/ekart/parser.d.ts +3 -0
  35. package/dist/carriers/ekart/parser.js +58 -0
  36. package/dist/carriers/ekart/statuses.json +11 -0
  37. package/dist/carriers/evri/carrier.json +3 -3
  38. package/dist/carriers/evri/numbers.json +12 -4
  39. package/dist/carriers/evri-uk/carrier.json +63 -0
  40. package/dist/carriers/evri-uk/numbers.json +5 -0
  41. package/dist/carriers/evri-uk/statuses.json +4 -0
  42. package/dist/carriers/fedex/numbers.json +8 -4
  43. package/dist/carriers/gls-ch/numbers.json +2 -1
  44. package/dist/carriers/gls-de/numbers.json +2 -1
  45. package/dist/carriers/gls-fr/numbers.json +2 -1
  46. package/dist/carriers/hermes-de/carrier.json +6 -1
  47. package/dist/carriers/hermes-de/numbers.json +29 -4
  48. package/dist/carriers/intelcom/adapter.d.ts +11 -0
  49. package/dist/carriers/intelcom/adapter.js +33 -0
  50. package/dist/carriers/intelcom/carrier.json +72 -0
  51. package/dist/carriers/intelcom/numbers.json +18 -0
  52. package/dist/carriers/intelcom/parser.d.ts +3 -0
  53. package/dist/carriers/intelcom/parser.js +72 -0
  54. package/dist/carriers/intelcom/statuses.json +4 -0
  55. package/dist/carriers/j-and-t/carrier.json +1 -1
  56. package/dist/carriers/j-and-t/numbers.json +2 -1
  57. package/dist/carriers/jd-logistics/adapter.d.ts +11 -0
  58. package/dist/carriers/jd-logistics/adapter.js +40 -0
  59. package/dist/carriers/jd-logistics/carrier.json +35 -9
  60. package/dist/carriers/jd-logistics/parser.d.ts +4 -0
  61. package/dist/carriers/jd-logistics/parser.js +81 -0
  62. package/dist/carriers/jd-logistics/statuses.json +4 -0
  63. package/dist/carriers/lbc-express/carrier.json +51 -0
  64. package/dist/carriers/lbc-express/numbers.json +35 -0
  65. package/dist/carriers/lbc-express/statuses.json +4 -0
  66. package/dist/carriers/mrw/numbers.json +2 -1
  67. package/dist/carriers/nova-poshta/adapter.d.ts +12 -0
  68. package/dist/carriers/nova-poshta/adapter.js +35 -0
  69. package/dist/carriers/nova-poshta/carrier.json +63 -0
  70. package/dist/carriers/nova-poshta/numbers.json +26 -0
  71. package/dist/carriers/nova-poshta/parser.d.ts +3 -0
  72. package/dist/carriers/nova-poshta/parser.js +52 -0
  73. package/dist/carriers/nova-poshta/statuses.json +4 -0
  74. package/dist/carriers/paack/numbers.json +2 -1
  75. package/dist/carriers/purolator/numbers.json +6 -3
  76. package/dist/carriers/sagawa/carrier.json +45 -0
  77. package/dist/carriers/sagawa/numbers.json +5 -0
  78. package/dist/carriers/sagawa/statuses.json +4 -0
  79. package/dist/carriers/seur/numbers.json +6 -2
  80. package/dist/carriers/sf-express/numbers.json +2 -1
  81. package/dist/carriers/speedpak/adapter.d.ts +11 -0
  82. package/dist/carriers/speedpak/adapter.js +33 -0
  83. package/dist/carriers/speedpak/carrier.json +72 -0
  84. package/dist/carriers/speedpak/numbers.json +18 -0
  85. package/dist/carriers/speedpak/parser.d.ts +3 -0
  86. package/dist/carriers/speedpak/parser.js +76 -0
  87. package/dist/carriers/speedpak/status.d.ts +2 -0
  88. package/dist/carriers/speedpak/status.js +18 -0
  89. package/dist/carriers/speedpak/statuses.json +77 -0
  90. package/dist/carriers/spx-ph/adapter.d.ts +12 -0
  91. package/dist/carriers/spx-ph/adapter.js +49 -0
  92. package/dist/carriers/spx-ph/carrier.json +94 -0
  93. package/dist/carriers/spx-ph/numbers.json +30 -0
  94. package/dist/carriers/spx-ph/parser.d.ts +3 -0
  95. package/dist/carriers/spx-ph/parser.js +73 -0
  96. package/dist/carriers/spx-ph/statuses.json +4 -0
  97. package/dist/carriers/sto/carrier.json +1 -1
  98. package/dist/carriers/sto/numbers.json +2 -1
  99. package/dist/carriers/tnt/numbers.json +4 -2
  100. package/dist/carriers/uniuni/numbers.json +13 -0
  101. package/dist/carriers/unknown/numbers.json +9 -3
  102. package/dist/carriers/xpressbees/adapter.d.ts +12 -0
  103. package/dist/carriers/xpressbees/adapter.js +36 -0
  104. package/dist/carriers/xpressbees/carrier.json +76 -0
  105. package/dist/carriers/xpressbees/numbers.json +50 -0
  106. package/dist/carriers/xpressbees/parser.d.ts +3 -0
  107. package/dist/carriers/xpressbees/parser.js +63 -0
  108. package/dist/carriers/xpressbees/status.d.ts +2 -0
  109. package/dist/carriers/xpressbees/status.js +14 -0
  110. package/dist/carriers/xpressbees/statuses.json +113 -0
  111. package/dist/carriers/yamato/numbers.json +4 -2
  112. package/dist/carriers/zto/carrier.json +1 -1
  113. package/dist/carriers/zto/numbers.json +2 -1
  114. package/dist/core/catalog/hints.js +3 -3
  115. package/dist/core/catalog/inputs.js +2 -1
  116. package/dist/core/catalog/linkRules.d.ts +1 -0
  117. package/dist/core/catalog/linkRules.js +1 -0
  118. package/dist/core/catalog/networks.js +1 -1
  119. package/dist/core/catalog/types.d.ts +3 -1
  120. package/dist/core/detection/parse.js +2 -1
  121. package/dist/data/catalog.json +491 -11
  122. package/dist/generated/catalog.d.ts +311 -12
  123. package/dist/generated/catalog.js +504 -12
  124. package/dist/generated/registry.js +29 -1
  125. package/dist/providers/coverage.json +207 -3
  126. package/dist/providers/parcelsapp/adapter.js +3 -1
  127. package/dist/server/openapi.json +1 -1
  128. package/package.json +1 -1
package/README.md CHANGED
@@ -13,9 +13,9 @@ 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 **86 dedicated adapters** and **5 universal fallbacks**
16
+ **3,500+ carriers** through **94 dedicated adapters** and **5 universal fallbacks**
17
17
 
18
- <sub>107 catalog entries · 58 countries represented</sub>
18
+ <sub>119 catalog entries · 58 countries represented</sub>
19
19
  <!-- /GENERATED:summary -->
20
20
 
21
21
  [Try it](#try-it) · [Ways to run it](#ways-to-run-it) · [Benchmark](#benchmark) · [Carriers](carriers/) · [Add a carrier](CONTRIBUTING.md)
@@ -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 101 carriers, dedicated adapters return tracking history for **63**, rising to **76** with all fallbacks enabled. The best single aggregator returns 53.
36
+ In a curated benchmark of 113 carriers, dedicated adapters return tracking history for **66**, rising to **79** 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 76, This project, dedicated adapters alone 63, 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 79, This project, dedicated adapters alone 66, 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)
@@ -149,7 +149,7 @@ createTracker({ providers: ['ParcelsApp', 'Ship24', '17TRACK', 'Postal Ninja', '
149
149
  <!-- GENERATED:stages -->
150
150
  <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">
151
151
 
152
- The carrier folders record 1,695 such statuses, each filed under one stage.
152
+ The carrier folders record 1,730 such statuses, each filed under one stage.
153
153
  <!-- /GENERATED:stages -->
154
154
 
155
155
  Wording nobody recorded yet goes through a classifier that reads seven European languages.
@@ -378,6 +378,10 @@
378
378
  "type": "string",
379
379
  "minLength": 1
380
380
  },
381
+ "query": {
382
+ "type": "string",
383
+ "minLength": 1
384
+ },
381
385
  "keepsCapabilityUrl": {
382
386
  "type": "boolean"
383
387
  },
package/data/catalog.json CHANGED
@@ -1530,13 +1530,17 @@
1530
1530
  ],
1531
1531
  "detectionRules": [
1532
1532
  {
1533
- "pattern": "^H\\d{15,19}$",
1533
+ "pattern": "^H\\d{16,19}$",
1534
1534
  "confidence": "high"
1535
1535
  },
1536
1536
  {
1537
1537
  "pattern": "^\\d{14}$",
1538
1538
  "confidence": "low",
1539
1539
  "checksum": "hermes"
1540
+ },
1541
+ {
1542
+ "pattern": "^H\\d{15}$",
1543
+ "confidence": "low"
1540
1544
  }
1541
1545
  ]
1542
1546
  },
@@ -1772,7 +1776,7 @@
1772
1776
  "displayName": "Evri",
1773
1777
  "color": "#00014d",
1774
1778
  "aliases": [
1775
- "Hermes UK"
1779
+ "Evri International"
1776
1780
  ],
1777
1781
  "countries": [
1778
1782
  "GB"
@@ -1786,12 +1790,12 @@
1786
1790
  "localClocks": true
1787
1791
  },
1788
1792
  "canaryUrl": "https://globaleco.app/track/",
1789
- "trackingUrlTemplate": "https://www.evri.com/track-a-parcel",
1793
+ "trackingUrlTemplate": "https://globaleco.app/track",
1790
1794
  "linkRules": [],
1791
1795
  "detectionRules": [
1792
1796
  {
1793
1797
  "pattern": "^H[A-Z0-9]{15}$",
1794
- "confidence": "high"
1798
+ "confidence": "low"
1795
1799
  }
1796
1800
  ]
1797
1801
  },
@@ -3178,7 +3182,7 @@
3178
3182
  "mode": "automatic",
3179
3183
  "adapter": "universal"
3180
3184
  },
3181
- "canaryUrl": "https://t.17track.net/",
3185
+ "canaryUrl": "https://www.sto.cn/pc/service-page/iframe_2_21",
3182
3186
  "trackingUrlTemplate": "https://www.sto.cn/",
3183
3187
  "linkRules": [],
3184
3188
  "detectionRules": [
@@ -3269,7 +3273,7 @@
3269
3273
  "mode": "automatic",
3270
3274
  "adapter": "universal"
3271
3275
  },
3272
- "canaryUrl": "https://t.17track.net/",
3276
+ "canaryUrl": "https://www.zto.com/check",
3273
3277
  "trackingUrlTemplate": "https://www.zto.com/",
3274
3278
  "linkRules": [],
3275
3279
  "detectionRules": [
@@ -3289,11 +3293,21 @@
3289
3293
  "timezone": "UTC",
3290
3294
  "tracking": {
3291
3295
  "mode": "automatic",
3292
- "adapter": "universal"
3296
+ "adapter": "jd-logistics",
3297
+ "localClocks": true
3293
3298
  },
3294
- "canaryUrl": "https://t.17track.net/",
3295
- "trackingUrlTemplate": "https://www.jingdonglogistics.com/Tracking",
3296
- "linkRules": [],
3299
+ "canaryUrl": "https://www.jingdonglogistics.com/Tracking",
3300
+ "trackingUrlTemplate": "https://www.jingdonglogistics.com/Tracking?waybillCodes={trackingNumber}",
3301
+ "linkRules": [
3302
+ {
3303
+ "domains": [
3304
+ "jingdonglogistics.com"
3305
+ ],
3306
+ "params": [
3307
+ "waybillCodes"
3308
+ ]
3309
+ }
3310
+ ],
3297
3311
  "detectionRules": [
3298
3312
  {
3299
3313
  "pattern": "^VG\\d{11}$",
@@ -3926,7 +3940,7 @@
3926
3940
  "mode": "automatic",
3927
3941
  "adapter": "universal"
3928
3942
  },
3929
- "canaryUrl": "https://t.17track.net/",
3943
+ "canaryUrl": "https://www.jtexpress.ph/",
3930
3944
  "trackingUrlTemplate": "https://www.jtexpress.ph/track-and-trace?flag=1&waybillNo={trackingNumber}",
3931
3945
  "linkRules": [
3932
3946
  {
@@ -3986,6 +4000,36 @@
3986
4000
  ],
3987
4001
  "detectionRules": []
3988
4002
  },
4003
+ "cne": {
4004
+ "displayName": "CNE Express",
4005
+ "color": "#e83828",
4006
+ "aliases": [
4007
+ "CNE",
4008
+ "递一物流"
4009
+ ],
4010
+ "countries": [
4011
+ "CN"
4012
+ ],
4013
+ "selectable": true,
4014
+ "timezone": "UTC",
4015
+ "tracking": {
4016
+ "mode": "automatic",
4017
+ "adapter": "universal"
4018
+ },
4019
+ "canaryUrl": "https://www.cne.com/track",
4020
+ "trackingUrlTemplate": "https://www.cne.com/en/track?no={trackingNumber}",
4021
+ "linkRules": [
4022
+ {
4023
+ "domains": [
4024
+ "cne.com"
4025
+ ],
4026
+ "params": [
4027
+ "no"
4028
+ ]
4029
+ }
4030
+ ],
4031
+ "detectionRules": []
4032
+ },
3989
4033
  "dhl-express": {
3990
4034
  "displayName": "DHL Express",
3991
4035
  "color": "#ffcc00",
@@ -4019,6 +4063,272 @@
4019
4063
  }
4020
4064
  ]
4021
4065
  },
4066
+ "dpd-de": {
4067
+ "displayName": "DPD Germany",
4068
+ "color": "#dc0032",
4069
+ "aliases": [
4070
+ "DPD Deutschland"
4071
+ ],
4072
+ "countries": [
4073
+ "DE"
4074
+ ],
4075
+ "selectable": true,
4076
+ "timezone": "Europe/Berlin",
4077
+ "tracking": {
4078
+ "mode": "automatic",
4079
+ "adapter": "dpd-de",
4080
+ "requirements": [
4081
+ {
4082
+ "field": "postcode",
4083
+ "optional": true,
4084
+ "label": "Delivery postcode",
4085
+ "type": "text",
4086
+ "pattern": "^[0-9]{5}$",
4087
+ "maxLength": 5,
4088
+ "inputMode": "numeric",
4089
+ "autoComplete": "postal-code",
4090
+ "help": "Optional. DPD uses it to unlock verified scans and the delivery window.",
4091
+ "validator": "germanyPostcode"
4092
+ }
4093
+ ]
4094
+ },
4095
+ "canaryUrl": "https://tracking.dpd.de/status/en_US/parcel/",
4096
+ "trackingUrlTemplate": "https://tracking.dpd.de/status/en_US/parcel/{trackingNumber}",
4097
+ "linkRules": [
4098
+ {
4099
+ "domains": [
4100
+ "tracking.dpd.de"
4101
+ ],
4102
+ "path": "^/status/[a-z]{2}_[A-Z]{2}/parcel/(\\d{14})/?$"
4103
+ },
4104
+ {
4105
+ "domains": [
4106
+ "my.dpd.de"
4107
+ ],
4108
+ "params": [
4109
+ "parcelno"
4110
+ ]
4111
+ }
4112
+ ],
4113
+ "detectionRules": [
4114
+ {
4115
+ "pattern": "^\\d{14}$",
4116
+ "confidence": "low"
4117
+ }
4118
+ ]
4119
+ },
4120
+ "dpd-uk": {
4121
+ "displayName": "DPD UK",
4122
+ "color": "#dc0032",
4123
+ "aliases": [
4124
+ "DPD United Kingdom"
4125
+ ],
4126
+ "countries": [
4127
+ "GB"
4128
+ ],
4129
+ "selectable": true,
4130
+ "timezone": "Europe/London",
4131
+ "tracking": {
4132
+ "mode": "automatic",
4133
+ "adapter": "universal"
4134
+ },
4135
+ "canaryUrl": "https://track.dpd.co.uk/",
4136
+ "trackingUrlTemplate": "https://track.dpd.co.uk/?reference={trackingNumber}",
4137
+ "linkRules": [
4138
+ {
4139
+ "domains": [
4140
+ "track.dpd.co.uk",
4141
+ "tracking.dpd.co.uk"
4142
+ ],
4143
+ "params": [
4144
+ "reference",
4145
+ "parcelNumber"
4146
+ ]
4147
+ }
4148
+ ],
4149
+ "detectionRules": [
4150
+ {
4151
+ "pattern": "^\\d{14}$",
4152
+ "confidence": "low"
4153
+ }
4154
+ ]
4155
+ },
4156
+ "ekart": {
4157
+ "displayName": "Ekart",
4158
+ "color": "#0074D9",
4159
+ "aliases": [
4160
+ "eKart Logistics"
4161
+ ],
4162
+ "countries": [
4163
+ "IN"
4164
+ ],
4165
+ "selectable": true,
4166
+ "timezone": "Asia/Kolkata",
4167
+ "tracking": {
4168
+ "mode": "automatic",
4169
+ "adapter": "ekart"
4170
+ },
4171
+ "canaryUrl": "https://www.ekartlogistics.in/track-order",
4172
+ "trackingUrlTemplate": "https://ekartlogistics.com/ekartlogistics-web/shipmenttrack/{trackingNumber}",
4173
+ "linkRules": [
4174
+ {
4175
+ "domains": [
4176
+ "ekartlogistics.com"
4177
+ ],
4178
+ "path": "^/(?:ekartlogistics-web/)?shipmenttrack/([A-Z]{4}\\d{10})(?:/|$)"
4179
+ }
4180
+ ],
4181
+ "detectionRules": [
4182
+ {
4183
+ "pattern": "^(?:FMP[CP]|MYS[PR])\\d{10}$",
4184
+ "confidence": "high"
4185
+ }
4186
+ ]
4187
+ },
4188
+ "evri-uk": {
4189
+ "displayName": "Evri UK",
4190
+ "color": "#00014d",
4191
+ "aliases": [
4192
+ "Hermes UK",
4193
+ "Evri Domestic",
4194
+ "Hermes Domestic UK"
4195
+ ],
4196
+ "countries": [
4197
+ "GB"
4198
+ ],
4199
+ "selectable": true,
4200
+ "timezone": "Europe/London",
4201
+ "tracking": {
4202
+ "mode": "automatic",
4203
+ "adapter": "universal"
4204
+ },
4205
+ "canaryUrl": "https://www.evri.com/track-a-parcel",
4206
+ "trackingUrlTemplate": "https://www.evri.com/track/parcel/{trackingNumber}/details",
4207
+ "linkRules": [
4208
+ {
4209
+ "domains": [
4210
+ "evri.com",
4211
+ "www.evri.com"
4212
+ ],
4213
+ "path": "^/track/parcel/([A-Za-z0-9]{16})/details/?$"
4214
+ }
4215
+ ],
4216
+ "detectionRules": [
4217
+ {
4218
+ "pattern": "^H[A-Z0-9]{15}$",
4219
+ "confidence": "low"
4220
+ },
4221
+ {
4222
+ "pattern": "^\\d{16}$",
4223
+ "confidence": "low"
4224
+ }
4225
+ ]
4226
+ },
4227
+ "intelcom": {
4228
+ "displayName": "Intelcom / Dragonfly",
4229
+ "color": "#ffda00",
4230
+ "aliases": [
4231
+ "Intelcom",
4232
+ "Dragonfly",
4233
+ "Dragonfly Shipping"
4234
+ ],
4235
+ "countries": [
4236
+ "CA"
4237
+ ],
4238
+ "selectable": true,
4239
+ "timezone": "UTC",
4240
+ "tracking": {
4241
+ "mode": "automatic",
4242
+ "adapter": "intelcom"
4243
+ },
4244
+ "canaryUrl": "https://dragonflyshipping.ca/en/track-your-package/",
4245
+ "trackingUrlTemplate": "https://dragonflyshipping.ca/en/track-your-package/?tracking-id={trackingNumber}",
4246
+ "linkRules": [
4247
+ {
4248
+ "domains": [
4249
+ "intelcom.ca",
4250
+ "dragonflyshipping.ca"
4251
+ ],
4252
+ "params": [
4253
+ "tracking-id"
4254
+ ]
4255
+ }
4256
+ ],
4257
+ "detectionRules": [
4258
+ {
4259
+ "pattern": "^INTLCM\\d{8,20}$",
4260
+ "confidence": "high"
4261
+ }
4262
+ ]
4263
+ },
4264
+ "lbc-express": {
4265
+ "displayName": "LBC Express",
4266
+ "color": "#e30613",
4267
+ "aliases": [
4268
+ "LBC"
4269
+ ],
4270
+ "countries": [
4271
+ "PH"
4272
+ ],
4273
+ "selectable": true,
4274
+ "timezone": "Asia/Manila",
4275
+ "tracking": {
4276
+ "mode": "automatic",
4277
+ "adapter": "universal"
4278
+ },
4279
+ "canaryUrl": "https://www.lbcexpress.com/track/",
4280
+ "trackingUrlTemplate": "https://www.lbcexpress.com/track/?tracking_no={trackingNumber}",
4281
+ "linkRules": [
4282
+ {
4283
+ "domains": [
4284
+ "lbcexpress.com"
4285
+ ],
4286
+ "params": [
4287
+ "tracking_no"
4288
+ ]
4289
+ }
4290
+ ],
4291
+ "detectionRules": [
4292
+ {
4293
+ "pattern": "^\\d{12}$",
4294
+ "confidence": "low"
4295
+ }
4296
+ ]
4297
+ },
4298
+ "nova-poshta": {
4299
+ "displayName": "Nova Poshta (Ukraine)",
4300
+ "color": "#e30613",
4301
+ "aliases": [
4302
+ "Nova Poshta",
4303
+ "Nova Post Ukraine",
4304
+ "Нова Пошта"
4305
+ ],
4306
+ "countries": [
4307
+ "UA"
4308
+ ],
4309
+ "selectable": true,
4310
+ "timezone": "Europe/Kyiv",
4311
+ "tracking": {
4312
+ "mode": "automatic",
4313
+ "adapter": "nova-poshta"
4314
+ },
4315
+ "canaryUrl": "https://novaposhta.ua/en/tracking/",
4316
+ "trackingUrlTemplate": "https://novaposhta.ua/en/tracking/{trackingNumber}",
4317
+ "linkRules": [
4318
+ {
4319
+ "domains": [
4320
+ "novaposhta.ua"
4321
+ ],
4322
+ "path": "^/(?:en/)?tracking/(\\d{14})(?:/|$)"
4323
+ }
4324
+ ],
4325
+ "detectionRules": [
4326
+ {
4327
+ "pattern": "^(?:(?:20[4678]|590|595)\\d{11}|(?:21|51)\\d{12})$",
4328
+ "confidence": "low"
4329
+ }
4330
+ ]
4331
+ },
4022
4332
  "omgo": {
4023
4333
  "displayName": "OMGO",
4024
4334
  "color": "#8e8e93",
@@ -4043,5 +4353,175 @@
4043
4353
  "confidence": "high"
4044
4354
  }
4045
4355
  ]
4356
+ },
4357
+ "sagawa": {
4358
+ "displayName": "Sagawa Express",
4359
+ "color": "#003889",
4360
+ "aliases": [
4361
+ "佐川急便"
4362
+ ],
4363
+ "countries": [
4364
+ "JP"
4365
+ ],
4366
+ "selectable": true,
4367
+ "timezone": "Asia/Tokyo",
4368
+ "tracking": {
4369
+ "mode": "automatic",
4370
+ "adapter": "universal"
4371
+ },
4372
+ "canaryUrl": "https://www.sagawa-exp.co.jp/send/howto-search.html",
4373
+ "trackingUrlTemplate": "https://k2k.sagawa-exp.co.jp/p/sagawa/web/okurijoinput.jsp",
4374
+ "linkRules": [
4375
+ {
4376
+ "domains": [
4377
+ "sagawa-exp.co.jp"
4378
+ ],
4379
+ "params": [
4380
+ "okurijoNo"
4381
+ ]
4382
+ }
4383
+ ],
4384
+ "detectionRules": []
4385
+ },
4386
+ "speedpak": {
4387
+ "displayName": "SpeedPAK",
4388
+ "color": "#ee7532",
4389
+ "aliases": [
4390
+ "Orange Connex",
4391
+ "OrangeConnex"
4392
+ ],
4393
+ "countries": [
4394
+ "CN"
4395
+ ],
4396
+ "selectable": true,
4397
+ "timezone": "UTC",
4398
+ "tracking": {
4399
+ "mode": "automatic",
4400
+ "adapter": "speedpak"
4401
+ },
4402
+ "canaryUrl": "https://www.orangeconnex.com/tracking",
4403
+ "trackingUrlTemplate": "https://www.orangeconnex.com/tracking",
4404
+ "linkRules": [
4405
+ {
4406
+ "domains": [
4407
+ "orangeconnex.com",
4408
+ "orangeconnex.cn"
4409
+ ],
4410
+ "params": [
4411
+ "trackingNumber",
4412
+ "trackingNumbers"
4413
+ ]
4414
+ }
4415
+ ],
4416
+ "detectionRules": [
4417
+ {
4418
+ "pattern": "^E[ES][A-Z0-9]{26}$",
4419
+ "confidence": "high"
4420
+ }
4421
+ ]
4422
+ },
4423
+ "spx-ph": {
4424
+ "displayName": "SPX Express Philippines",
4425
+ "color": "#ee4d2d",
4426
+ "aliases": [
4427
+ "Shopee Express Philippines",
4428
+ "Shopee Xpress Philippines",
4429
+ "SPX Philippines"
4430
+ ],
4431
+ "countries": [
4432
+ "PH"
4433
+ ],
4434
+ "selectable": true,
4435
+ "timezone": "Asia/Manila",
4436
+ "tracking": {
4437
+ "mode": "automatic",
4438
+ "adapter": "spx-ph"
4439
+ },
4440
+ "canaryUrl": "https://spx.ph/en",
4441
+ "trackingUrlTemplate": "https://spx.ph/track?{trackingNumber}",
4442
+ "linkRules": [
4443
+ {
4444
+ "domains": [
4445
+ "spx.ph"
4446
+ ],
4447
+ "pathPattern": "^/track/?$",
4448
+ "query": "^((?:SPX)?PH\\d{10,16}[A-Z]?)$"
4449
+ },
4450
+ {
4451
+ "domains": [
4452
+ "spx.ph",
4453
+ "shopeexpress.ph"
4454
+ ],
4455
+ "params": [
4456
+ "spx_tn",
4457
+ "sls_tracking_number"
4458
+ ]
4459
+ },
4460
+ {
4461
+ "domains": [
4462
+ "spx.ph",
4463
+ "shopeexpress.ph"
4464
+ ],
4465
+ "path": "^/detail/((?:SPX)?PH\\d{10,16}[A-Z]?)(?:/|$)"
4466
+ },
4467
+ {
4468
+ "domains": [
4469
+ "spx.ph",
4470
+ "shopeexpress.ph"
4471
+ ],
4472
+ "fragment": "^/detail/((?:SPX)?PH\\d{10,16}[A-Z]?)(?:$|[?&])"
4473
+ }
4474
+ ],
4475
+ "detectionRules": [
4476
+ {
4477
+ "pattern": "^SPXPH\\d{10,16}[A-Z]?$",
4478
+ "confidence": "high"
4479
+ },
4480
+ {
4481
+ "pattern": "^PH\\d{12,14}[A-Z]?$",
4482
+ "confidence": "low"
4483
+ }
4484
+ ]
4485
+ },
4486
+ "xpressbees": {
4487
+ "displayName": "Xpressbees",
4488
+ "color": "#f58220",
4489
+ "aliases": [
4490
+ "Xpress Bees",
4491
+ "XpressBees"
4492
+ ],
4493
+ "countries": [
4494
+ "IN"
4495
+ ],
4496
+ "selectable": true,
4497
+ "timezone": "Asia/Kolkata",
4498
+ "tracking": {
4499
+ "mode": "automatic",
4500
+ "adapter": "xpressbees"
4501
+ },
4502
+ "canaryUrl": "https://www.xpressbees.com/track",
4503
+ "trackingUrlTemplate": "https://shipmentv2.xpressbees.com/orders/tracking/{trackingNumber}",
4504
+ "linkRules": [
4505
+ {
4506
+ "domains": [
4507
+ "shipmentv2.xpressbees.com"
4508
+ ],
4509
+ "path": "^/orders/tracking/(\\d{12,16})(?:/|$)"
4510
+ },
4511
+ {
4512
+ "domains": [
4513
+ "xpressbees.com"
4514
+ ],
4515
+ "params": [
4516
+ "trackid"
4517
+ ]
4518
+ }
4519
+ ],
4520
+ "detectionRules": [
4521
+ {
4522
+ "pattern": "^[19]\\d{13}$",
4523
+ "confidence": "low"
4524
+ }
4525
+ ]
4046
4526
  }
4047
4527
  }
@@ -1,11 +1,11 @@
1
1
  {
2
- "catalog": 107,
3
- "activeAdapters": 86,
2
+ "catalog": 119,
3
+ "activeAdapters": 94,
4
4
  "countries": 58,
5
- "referenceCarriers": 101,
5
+ "referenceCarriers": 113,
6
6
  "comparison": {
7
- "combined": 76,
8
- "direct": 63,
7
+ "combined": 79,
8
+ "direct": 66,
9
9
  "providers": {
10
10
  "ParcelsApp": 53,
11
11
  "Postal Ninja": 43,