universal-parcel-scraper 0.141.0-main.1149 → 0.142.0

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 (129) hide show
  1. package/README.md +3 -3
  2. package/data/catalog.json +398 -4
  3. package/data/coverage-summary.json +2 -2
  4. package/data/detection-golden.json +307 -6
  5. package/dist/browser/scraper.js +343 -7
  6. package/dist/carriers/17feia/adapter.d.ts +15 -0
  7. package/dist/carriers/17feia/adapter.js +61 -0
  8. package/dist/carriers/17feia/carrier.json +96 -0
  9. package/dist/carriers/17feia/numbers.json +157 -0
  10. package/dist/carriers/17feia/parser.d.ts +15 -0
  11. package/dist/carriers/17feia/parser.js +166 -0
  12. package/dist/carriers/17feia/status.d.ts +14 -0
  13. package/dist/carriers/17feia/status.js +71 -0
  14. package/dist/carriers/17feia/statuses.json +26 -0
  15. package/dist/carriers/celeritas/adapter.d.ts +14 -0
  16. package/dist/carriers/celeritas/adapter.js +56 -0
  17. package/dist/carriers/celeritas/carrier.json +94 -0
  18. package/dist/carriers/celeritas/numbers.json +106 -0
  19. package/dist/carriers/celeritas/parser.d.ts +13 -0
  20. package/dist/carriers/celeritas/parser.js +150 -0
  21. package/dist/carriers/celeritas/status.d.ts +10 -0
  22. package/dist/carriers/celeritas/status.js +57 -0
  23. package/dist/carriers/celeritas/statuses.json +20 -0
  24. package/dist/carriers/dhlink/adapter.d.ts +15 -0
  25. package/dist/carriers/dhlink/adapter.js +64 -0
  26. package/dist/carriers/dhlink/carrier.json +92 -0
  27. package/dist/carriers/dhlink/numbers.json +68 -0
  28. package/dist/carriers/dhlink/parser.d.ts +23 -0
  29. package/dist/carriers/dhlink/parser.js +201 -0
  30. package/dist/carriers/dhlink/status.d.ts +9 -0
  31. package/dist/carriers/dhlink/status.js +102 -0
  32. package/dist/carriers/dhlink/statuses.json +50 -0
  33. package/dist/carriers/evri/adapter.d.ts +12 -3
  34. package/dist/carriers/evri/adapter.js +32 -123
  35. package/dist/carriers/evri/carrier.json +3 -1
  36. package/dist/carriers/evri/numbers.json +1 -1
  37. package/dist/carriers/evri/parser.d.ts +32 -0
  38. package/dist/carriers/evri/parser.js +159 -0
  39. package/dist/carriers/geodis-pl/adapter.d.ts +19 -0
  40. package/dist/carriers/geodis-pl/adapter.js +73 -0
  41. package/dist/carriers/geodis-pl/carrier.json +87 -0
  42. package/dist/carriers/geodis-pl/numbers.json +5 -0
  43. package/dist/carriers/geodis-pl/parser.d.ts +24 -0
  44. package/dist/carriers/geodis-pl/parser.js +227 -0
  45. package/dist/carriers/geodis-pl/status.d.ts +19 -0
  46. package/dist/carriers/geodis-pl/status.js +85 -0
  47. package/dist/carriers/geodis-pl/statuses.json +49 -0
  48. package/dist/carriers/gzyl/adapter.d.ts +6 -0
  49. package/dist/carriers/gzyl/adapter.js +9 -0
  50. package/dist/carriers/gzyl/carrier.json +96 -0
  51. package/dist/carriers/gzyl/hualei.d.ts +59 -0
  52. package/dist/carriers/gzyl/hualei.js +404 -0
  53. package/dist/carriers/gzyl/numbers.json +5 -0
  54. package/dist/carriers/gzyl/parser.d.ts +9 -0
  55. package/dist/carriers/gzyl/parser.js +9 -0
  56. package/dist/carriers/gzyl/status.d.ts +8 -0
  57. package/dist/carriers/gzyl/status.js +11 -0
  58. package/dist/carriers/gzyl/statuses.json +14 -0
  59. package/dist/carriers/hywl/adapter.d.ts +15 -0
  60. package/dist/carriers/hywl/adapter.js +69 -0
  61. package/dist/carriers/hywl/carrier.json +94 -0
  62. package/dist/carriers/hywl/numbers.json +27 -0
  63. package/dist/carriers/hywl/parser.d.ts +28 -0
  64. package/dist/carriers/hywl/parser.js +162 -0
  65. package/dist/carriers/hywl/status.d.ts +7 -0
  66. package/dist/carriers/hywl/status.js +32 -0
  67. package/dist/carriers/hywl/statuses.json +34 -0
  68. package/dist/carriers/jhgj/carrier.json +35 -0
  69. package/dist/carriers/jhgj/numbers.json +5 -0
  70. package/dist/carriers/jhgj/statuses.json +4 -0
  71. package/dist/carriers/jrt/adapter.d.ts +6 -0
  72. package/dist/carriers/jrt/adapter.js +9 -0
  73. package/dist/carriers/jrt/carrier.json +107 -0
  74. package/dist/carriers/jrt/numbers.json +5 -0
  75. package/dist/carriers/jrt/parser.d.ts +9 -0
  76. package/dist/carriers/jrt/parser.js +9 -0
  77. package/dist/carriers/jrt/status.d.ts +8 -0
  78. package/dist/carriers/jrt/status.js +11 -0
  79. package/dist/carriers/jrt/statuses.json +6 -0
  80. package/dist/carriers/ktd/carrier.json +36 -0
  81. package/dist/carriers/ktd/numbers.json +5 -0
  82. package/dist/carriers/ktd/statuses.json +4 -0
  83. package/dist/carriers/paack/adapter.js +31 -6
  84. package/dist/carriers/paack/carrier.json +15 -4
  85. package/dist/carriers/paack/evri.d.ts +24 -0
  86. package/dist/carriers/paack/evri.js +22 -0
  87. package/dist/carriers/paack/numbers.json +38 -0
  88. package/dist/carriers/swiftx/adapter.d.ts +26 -0
  89. package/dist/carriers/swiftx/adapter.js +79 -0
  90. package/dist/carriers/swiftx/carrier.json +90 -0
  91. package/dist/carriers/swiftx/numbers.json +328 -0
  92. package/dist/carriers/swiftx/parser.d.ts +21 -0
  93. package/dist/carriers/swiftx/parser.js +150 -0
  94. package/dist/carriers/swiftx/status.d.ts +11 -0
  95. package/dist/carriers/swiftx/status.js +55 -0
  96. package/dist/carriers/swiftx/statuses.json +22 -0
  97. package/dist/carriers/thhy/adapter.d.ts +6 -0
  98. package/dist/carriers/thhy/adapter.js +9 -0
  99. package/dist/carriers/thhy/carrier.json +97 -0
  100. package/dist/carriers/thhy/numbers.json +5 -0
  101. package/dist/carriers/thhy/parser.d.ts +9 -0
  102. package/dist/carriers/thhy/parser.js +9 -0
  103. package/dist/carriers/thhy/status.d.ts +8 -0
  104. package/dist/carriers/thhy/status.js +11 -0
  105. package/dist/carriers/thhy/statuses.json +18 -0
  106. package/dist/carriers/tsjy/adapter.d.ts +15 -0
  107. package/dist/carriers/tsjy/adapter.js +57 -0
  108. package/dist/carriers/tsjy/carrier.json +87 -0
  109. package/dist/carriers/tsjy/numbers.json +5 -0
  110. package/dist/carriers/tsjy/parser.d.ts +26 -0
  111. package/dist/carriers/tsjy/parser.js +159 -0
  112. package/dist/carriers/tsjy/status.d.ts +9 -0
  113. package/dist/carriers/tsjy/status.js +65 -0
  114. package/dist/carriers/tsjy/statuses.json +24 -0
  115. package/dist/carriers/wanbexpress/numbers.json +10 -8
  116. package/dist/core/catalog/partners.d.ts +5 -0
  117. package/dist/core/catalog/partners.js +18 -0
  118. package/dist/core/catalog/statusMaps.js +26 -15
  119. package/dist/data/catalog.json +398 -4
  120. package/dist/generated/catalog.d.ts +254 -4
  121. package/dist/generated/catalog.js +423 -5
  122. package/dist/generated/recognition.js +6 -0
  123. package/dist/generated/registry.js +32 -0
  124. package/dist/providers/coverage.json +1 -1
  125. package/dist/providers/parcelsapp/adapter.js +3 -1
  126. package/dist/providers/shared/hints.d.ts +3 -1
  127. package/dist/providers/shared/hints.js +6 -2
  128. package/dist/server/openapi.json +1 -1
  129. 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 **199 dedicated adapters** and **5 universal fallbacks**
16
+ **3,500+ carriers** through **209 dedicated adapters** and **5 universal fallbacks**
17
17
 
18
- <sub>328 catalog entries · 77 countries represented</sub>
18
+ <sub>340 catalog entries · 77 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)
@@ -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 7,069 such statuses, each filed under one stage.
158
+ The carrier folders record 7,282 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.
package/data/catalog.json CHANGED
@@ -1606,16 +1606,18 @@
1606
1606
  {
1607
1607
  "field": "postcode",
1608
1608
  "validator": "paackPostcode",
1609
+ "optional": true,
1609
1610
  "label": "Delivery postcode",
1610
1611
  "type": "text",
1611
1612
  "placeholder": "75001",
1612
- "help": "Paack requires the recipient postcode together with the order number.",
1613
+ "help": "Paack shows most orders only with the delivery postcode. Without it, other sources are asked.",
1613
1614
  "pattern": "^(?=.{3,10}$)(?=.*[0-9])[A-Za-z0-9]+(?:[ -][A-Za-z0-9]+)*$",
1614
1615
  "maxLength": 10,
1615
1616
  "inputMode": "text",
1616
1617
  "autoComplete": "postal-code"
1617
1618
  }
1618
- ]
1619
+ ],
1620
+ "localClocks": true
1619
1621
  },
1620
1622
  "canaryUrl": "https://mydeliveries.paack.app/tracking",
1621
1623
  "trackingUrlTemplate": "https://mydeliveries.paack.app/tracking?tracking_number={trackingNumber}",
@@ -1639,7 +1641,12 @@
1639
1641
  ]
1640
1642
  }
1641
1643
  ],
1642
- "detectionRules": []
1644
+ "detectionRules": [
1645
+ {
1646
+ "pattern": "^PK\\d{18}$",
1647
+ "confidence": "high"
1648
+ }
1649
+ ]
1643
1650
  },
1644
1651
  "asendia": {
1645
1652
  "displayName": "Asendia",
@@ -2088,7 +2095,9 @@
2088
2095
  "displayName": "Evri",
2089
2096
  "color": "#00014d",
2090
2097
  "aliases": [
2091
- "Evri International"
2098
+ "Evri International",
2099
+ "Global Eco",
2100
+ "GlobalEco"
2092
2101
  ],
2093
2102
  "countries": [
2094
2103
  "GB"
@@ -4721,6 +4730,50 @@
4721
4730
  ],
4722
4731
  "detectionRules": []
4723
4732
  },
4733
+ "17feia": {
4734
+ "displayName": "17FEIA",
4735
+ "color": "#00a9e4",
4736
+ "aliases": [
4737
+ "17FEIA",
4738
+ "Feia",
4739
+ "17Feia Express",
4740
+ "一起飞",
4741
+ "上海宏杉国际物流",
4742
+ "Shanghai Hongshan International Logistics"
4743
+ ],
4744
+ "countries": [
4745
+ "CN"
4746
+ ],
4747
+ "selectable": true,
4748
+ "timezone": "Asia/Shanghai",
4749
+ "tracking": {
4750
+ "mode": "automatic",
4751
+ "adapter": "17feia",
4752
+ "recognitionRank": 991,
4753
+ "localClocks": true
4754
+ },
4755
+ "canaryUrl": "https://www.17feia.com/",
4756
+ "trackingUrlTemplate": "https://www.17feia.com/tracking?orderNumber={trackingNumber}",
4757
+ "trackingSearchUrl": "https://www.17feia.com/",
4758
+ "linkRules": [
4759
+ {
4760
+ "domains": [
4761
+ "17feia.com",
4762
+ "www.17feia.com"
4763
+ ],
4764
+ "pathPattern": "^/tracking/?$",
4765
+ "params": [
4766
+ "orderNumber"
4767
+ ]
4768
+ }
4769
+ ],
4770
+ "detectionRules": [
4771
+ {
4772
+ "pattern": "^FEI[A-Z]{2}\\d{10}YQ$",
4773
+ "confidence": "high"
4774
+ }
4775
+ ]
4776
+ },
4724
4777
  "5post": {
4725
4778
  "displayName": "5Post",
4726
4779
  "color": "#64b441",
@@ -5996,6 +6049,42 @@
5996
6049
  }
5997
6050
  ]
5998
6051
  },
6052
+ "celeritas": {
6053
+ "displayName": "Celeritas",
6054
+ "color": "#009aab",
6055
+ "aliases": [
6056
+ "Celeritas",
6057
+ "Celeritas Transporte",
6058
+ "Celeritas Transporte y Logística"
6059
+ ],
6060
+ "countries": [
6061
+ "ES",
6062
+ "PT"
6063
+ ],
6064
+ "selectable": true,
6065
+ "timezone": "Europe/Madrid",
6066
+ "tracking": {
6067
+ "mode": "automatic",
6068
+ "adapter": "celeritas",
6069
+ "recognitionRank": 996,
6070
+ "localClocks": true
6071
+ },
6072
+ "canaryUrl": "https://celeritastransporte.com/seguimiento-paquete-pedidos/",
6073
+ "trackingUrlTemplate": "https://celeritastransporte.com/seguimiento-paquete-pedidos/?refer={trackingNumber}&lang=es",
6074
+ "trackingSearchUrl": "https://celeritastransporte.com/seguimiento-paquete-pedidos/",
6075
+ "linkRules": [
6076
+ {
6077
+ "domains": [
6078
+ "celeritastransporte.com"
6079
+ ],
6080
+ "pathPattern": "^/seguimiento-paquete-pedidos/?$",
6081
+ "params": [
6082
+ "refer"
6083
+ ]
6084
+ }
6085
+ ],
6086
+ "detectionRules": []
6087
+ },
5999
6088
  "central-transport": {
6000
6089
  "displayName": "Central Transport",
6001
6090
  "color": "#fae800",
@@ -7299,6 +7388,37 @@
7299
7388
  }
7300
7389
  ]
7301
7390
  },
7391
+ "dhlink": {
7392
+ "displayName": "DHLink",
7393
+ "color": "#143167",
7394
+ "aliases": [
7395
+ "DHLink",
7396
+ "Dhlink",
7397
+ "驼飞侠",
7398
+ "駝飛俠"
7399
+ ],
7400
+ "countries": [
7401
+ "CN"
7402
+ ],
7403
+ "selectable": true,
7404
+ "timezone": "Asia/Shanghai",
7405
+ "tracking": {
7406
+ "mode": "automatic",
7407
+ "adapter": "dhlink",
7408
+ "recognitionRank": 995,
7409
+ "localClocks": true
7410
+ },
7411
+ "canaryUrl": "https://www.dhlink.com/trackQuery",
7412
+ "trackingUrlTemplate": "https://www.dhlink.com/trackQuery?intlExpressNo={trackingNumber}&lang=en",
7413
+ "trackingSearchUrl": "https://www.dhlink.com/trackQuery",
7414
+ "linkRules": [],
7415
+ "detectionRules": [
7416
+ {
7417
+ "pattern": "^FC\\d{13}$",
7418
+ "confidence": "low"
7419
+ }
7420
+ ]
7421
+ },
7302
7422
  "direct-freight-express": {
7303
7423
  "displayName": "Direct Freight Express",
7304
7424
  "color": "#1e4488",
@@ -8525,6 +8645,31 @@
8525
8645
  ],
8526
8646
  "detectionRules": []
8527
8647
  },
8648
+ "geodis-pl": {
8649
+ "displayName": "GEODIS Poland",
8650
+ "color": "#3100e6",
8651
+ "aliases": [
8652
+ "Pekaes",
8653
+ "GeodisPL",
8654
+ "GEODIS Road Network"
8655
+ ],
8656
+ "countries": [
8657
+ "PL"
8658
+ ],
8659
+ "selectable": true,
8660
+ "timezone": "Europe/Warsaw",
8661
+ "tracking": {
8662
+ "mode": "automatic",
8663
+ "adapter": "geodis-pl",
8664
+ "recognitionRank": 994,
8665
+ "localClocks": true
8666
+ },
8667
+ "canaryUrl": "https://strefaklienta.pekaes.geodis.pl/en/",
8668
+ "trackingUrlTemplate": "https://strefaklienta.pekaes.geodis.pl/en/?ShNumber={trackingNumber}",
8669
+ "trackingSearchUrl": "https://strefaklienta.pekaes.geodis.pl/en/",
8670
+ "linkRules": [],
8671
+ "detectionRules": []
8672
+ },
8528
8673
  "ghn": {
8529
8674
  "displayName": "GHN",
8530
8675
  "color": "#ff5200",
@@ -8842,6 +8987,30 @@
8842
8987
  }
8843
8988
  ]
8844
8989
  },
8990
+ "gzyl": {
8991
+ "displayName": "GZYL",
8992
+ "color": "#4e79e1",
8993
+ "aliases": [
8994
+ "GZYL",
8995
+ "Gzyl",
8996
+ "广州云链",
8997
+ "廣州云鏈",
8998
+ "广州云链货运代理有限公司"
8999
+ ],
9000
+ "countries": [
9001
+ "CN"
9002
+ ],
9003
+ "selectable": true,
9004
+ "timezone": "Asia/Shanghai",
9005
+ "tracking": {
9006
+ "mode": "automatic",
9007
+ "adapter": "gzyl",
9008
+ "localClocks": true
9009
+ },
9010
+ "canaryUrl": "https://t.17track.net/",
9011
+ "linkRules": [],
9012
+ "detectionRules": []
9013
+ },
8845
9014
  "hanjin": {
8846
9015
  "displayName": "Hanjin",
8847
9016
  "color": "#051469",
@@ -9039,6 +9208,51 @@
9039
9208
  ],
9040
9209
  "detectionRules": []
9041
9210
  },
9211
+ "hywl": {
9212
+ "displayName": "Huiyi Logistics",
9213
+ "color": "#0b8f91",
9214
+ "aliases": [
9215
+ "HYWL",
9216
+ "汇一物流",
9217
+ "匯一物流",
9218
+ "Huiyi Logistics",
9219
+ "SZHYWL",
9220
+ "深圳市汇一物流有限公司"
9221
+ ],
9222
+ "countries": [
9223
+ "CN"
9224
+ ],
9225
+ "selectable": true,
9226
+ "timezone": "Asia/Shanghai",
9227
+ "tracking": {
9228
+ "mode": "automatic",
9229
+ "adapter": "hywl",
9230
+ "recognitionRank": 993,
9231
+ "localClocks": true
9232
+ },
9233
+ "canaryUrl": "https://www.szhywl.it.com/track.html",
9234
+ "trackingUrlTemplate": "https://www.szhywl.it.com/track.html?number={trackingNumber}",
9235
+ "trackingSearchUrl": "https://www.szhywl.it.com/track.html",
9236
+ "linkRules": [
9237
+ {
9238
+ "domains": [
9239
+ "szhywl.it.com",
9240
+ "www.szhywl.it.com"
9241
+ ],
9242
+ "pathPattern": "^/track\\.html$",
9243
+ "params": [
9244
+ "number",
9245
+ "trackingNumber"
9246
+ ]
9247
+ }
9248
+ ],
9249
+ "detectionRules": [
9250
+ {
9251
+ "pattern": "^TRK[0-9A-F]{12}$",
9252
+ "confidence": "low"
9253
+ }
9254
+ ]
9255
+ },
9042
9256
  "ics-courier": {
9043
9257
  "displayName": "ICS Courier",
9044
9258
  "color": "#004b8e",
@@ -9445,6 +9659,28 @@
9445
9659
  ],
9446
9660
  "detectionRules": []
9447
9661
  },
9662
+ "jhgj": {
9663
+ "displayName": "Jiuhao International",
9664
+ "color": "#283593",
9665
+ "aliases": [
9666
+ "JHGJ",
9667
+ "九好国际",
9668
+ "九好國際",
9669
+ "广州九好国际货运代理有限公司"
9670
+ ],
9671
+ "countries": [
9672
+ "CN"
9673
+ ],
9674
+ "selectable": true,
9675
+ "timezone": "Asia/Shanghai",
9676
+ "tracking": {
9677
+ "mode": "automatic",
9678
+ "adapter": "universal"
9679
+ },
9680
+ "canaryUrl": "https://t.17track.net/",
9681
+ "linkRules": [],
9682
+ "detectionRules": []
9683
+ },
9448
9684
  "jitsu": {
9449
9685
  "displayName": "Jitsu",
9450
9686
  "color": "#4dc480",
@@ -9507,6 +9743,41 @@
9507
9743
  }
9508
9744
  ]
9509
9745
  },
9746
+ "jrt": {
9747
+ "displayName": "JRT",
9748
+ "color": "#023053",
9749
+ "aliases": [
9750
+ "JRT",
9751
+ "今日通",
9752
+ "Jinritong",
9753
+ "厦门今日通",
9754
+ "厦门今日通商贸有限公司",
9755
+ "今日通商贸有限公司"
9756
+ ],
9757
+ "countries": [
9758
+ "CN"
9759
+ ],
9760
+ "selectable": true,
9761
+ "timezone": "Asia/Shanghai",
9762
+ "tracking": {
9763
+ "mode": "automatic",
9764
+ "adapter": "jrt",
9765
+ "localClocks": true
9766
+ },
9767
+ "canaryUrl": "https://t.17track.net/",
9768
+ "linkRules": [
9769
+ {
9770
+ "domains": [
9771
+ "106.53.64.22"
9772
+ ],
9773
+ "pathPattern": "^/trackIndex\\.htm$",
9774
+ "params": [
9775
+ "documentCode"
9776
+ ]
9777
+ }
9778
+ ],
9779
+ "detectionRules": []
9780
+ },
9510
9781
  "kazpost": {
9511
9782
  "displayName": "Kazpost",
9512
9783
  "color": "#fed201",
@@ -9601,6 +9872,29 @@
9601
9872
  "linkRules": [],
9602
9873
  "detectionRules": []
9603
9874
  },
9875
+ "ktd": {
9876
+ "displayName": "KTD",
9877
+ "color": "#01234d",
9878
+ "aliases": [
9879
+ "跨通达",
9880
+ "跨通達",
9881
+ "跨通达物流",
9882
+ "深圳市跨通达物流有限公司",
9883
+ "Kuatongda"
9884
+ ],
9885
+ "countries": [
9886
+ "CN"
9887
+ ],
9888
+ "selectable": true,
9889
+ "timezone": "Asia/Shanghai",
9890
+ "tracking": {
9891
+ "mode": "automatic",
9892
+ "adapter": "universal"
9893
+ },
9894
+ "canaryUrl": "https://t.17track.net/",
9895
+ "linkRules": [],
9896
+ "detectionRules": []
9897
+ },
9604
9898
  "kuehne-nagel": {
9605
9899
  "displayName": "Kuehne+Nagel",
9606
9900
  "color": "#003369",
@@ -12785,6 +13079,43 @@
12785
13079
  ],
12786
13080
  "detectionRules": []
12787
13081
  },
13082
+ "swiftx": {
13083
+ "displayName": "SwiftX",
13084
+ "color": "#5e51d3",
13085
+ "aliases": [
13086
+ "SwiftX Express"
13087
+ ],
13088
+ "countries": [
13089
+ "US"
13090
+ ],
13091
+ "selectable": true,
13092
+ "timezone": "America/Los_Angeles",
13093
+ "tracking": {
13094
+ "mode": "automatic",
13095
+ "adapter": "swiftx"
13096
+ },
13097
+ "canaryUrl": "https://swiftx-express.com/",
13098
+ "trackingUrlTemplate": "https://swiftx-express.com/track?trackingNumber={trackingNumber}",
13099
+ "trackingSearchUrl": "https://swiftx-express.com/",
13100
+ "linkRules": [
13101
+ {
13102
+ "domains": [
13103
+ "swiftx-express.com",
13104
+ "www.swiftx-express.com"
13105
+ ],
13106
+ "pathPattern": "^/(?:[a-z]{2}/)?track/?$",
13107
+ "params": [
13108
+ "trackingNumber"
13109
+ ]
13110
+ }
13111
+ ],
13112
+ "detectionRules": [
13113
+ {
13114
+ "pattern": "^SWX\\d{18}$",
13115
+ "confidence": "high"
13116
+ }
13117
+ ]
13118
+ },
12788
13119
  "team-global-express": {
12789
13120
  "displayName": "Team Global Express",
12790
13121
  "color": "#143200",
@@ -12873,6 +13204,31 @@
12873
13204
  ],
12874
13205
  "detectionRules": []
12875
13206
  },
13207
+ "thhy": {
13208
+ "displayName": "Tianhui Hengyuan",
13209
+ "color": "#00a2e9",
13210
+ "aliases": [
13211
+ "TH",
13212
+ "THHY",
13213
+ "Tian Hui Hen Yuan",
13214
+ "天汇恒源",
13215
+ "深圳市天汇恒源供应链有限公司",
13216
+ "广州市天慧恒源供应链有限公司"
13217
+ ],
13218
+ "countries": [
13219
+ "CN"
13220
+ ],
13221
+ "selectable": true,
13222
+ "timezone": "Asia/Shanghai",
13223
+ "tracking": {
13224
+ "mode": "automatic",
13225
+ "adapter": "thhy",
13226
+ "localClocks": true
13227
+ },
13228
+ "canaryUrl": "https://t.17track.net/",
13229
+ "linkRules": [],
13230
+ "detectionRules": []
13231
+ },
12876
13232
  "toptrans": {
12877
13233
  "displayName": "TOPTRANS",
12878
13234
  "color": "#005daa",
@@ -13027,6 +13383,44 @@
13027
13383
  ],
13028
13384
  "detectionRules": []
13029
13385
  },
13386
+ "tsjy": {
13387
+ "displayName": "TSJY",
13388
+ "color": "#4042e2",
13389
+ "aliases": [
13390
+ "TSJY",
13391
+ "通世集运",
13392
+ "通世集運",
13393
+ "Tonse Supply Chain",
13394
+ "苏州通世供应链"
13395
+ ],
13396
+ "countries": [
13397
+ "CN"
13398
+ ],
13399
+ "selectable": true,
13400
+ "timezone": "Asia/Shanghai",
13401
+ "tracking": {
13402
+ "mode": "automatic",
13403
+ "adapter": "tsjy",
13404
+ "recognitionRank": 992,
13405
+ "localClocks": true
13406
+ },
13407
+ "canaryUrl": "https://www.tsjy56.com/",
13408
+ "trackingUrlTemplate": "https://www.tsjy56.com/orderResult.html?nos={trackingNumber}",
13409
+ "trackingSearchUrl": "https://www.tsjy56.com/",
13410
+ "linkRules": [
13411
+ {
13412
+ "domains": [
13413
+ "tsjy56.com",
13414
+ "www.tsjy56.com"
13415
+ ],
13416
+ "pathPattern": "^/orderResult\\.html$",
13417
+ "params": [
13418
+ "nos"
13419
+ ]
13420
+ }
13421
+ ],
13422
+ "detectionRules": []
13423
+ },
13030
13424
  "ubi-smart-parcel": {
13031
13425
  "displayName": "UBI Smart Parcel",
13032
13426
  "color": "#053c80",
@@ -1,6 +1,6 @@
1
1
  {
2
- "catalog": 328,
3
- "activeAdapters": 199,
2
+ "catalog": 340,
3
+ "activeAdapters": 209,
4
4
  "countries": 77,
5
5
  "referenceCarriers": 100,
6
6
  "comparison": {