universal-parcel-scraper 0.0.0-stage → 0.2.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 (897) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +15 -0
  3. package/README.md +123 -2
  4. package/data/carrier-order.json +107 -0
  5. package/data/carrier.schema.json +415 -0
  6. package/data/catalog.json +3969 -0
  7. package/data/coverage-summary.json +17 -0
  8. package/data/detection-golden.json +5375 -0
  9. package/data/stages.json +13 -0
  10. package/dist/browser/scraper.js +9292 -0
  11. package/dist/carriers/aliexpress/adapter.d.ts +30 -0
  12. package/dist/carriers/aliexpress/adapter.js +164 -0
  13. package/dist/carriers/aliexpress/carrier.json +59 -0
  14. package/dist/carriers/aliexpress/numbers.json +36 -0
  15. package/dist/carriers/aliexpress/status.d.ts +31 -0
  16. package/dist/carriers/aliexpress/status.js +79 -0
  17. package/dist/carriers/aliexpress/statuses.json +355 -0
  18. package/dist/carriers/amazon-logistics/carrier.json +94 -0
  19. package/dist/carriers/amazon-logistics/numbers.json +307 -0
  20. package/dist/carriers/amazon-shipping/adapter.d.ts +34 -0
  21. package/dist/carriers/amazon-shipping/adapter.js +292 -0
  22. package/dist/carriers/amazon-shipping/carrier.json +96 -0
  23. package/dist/carriers/amazon-shipping/eligibility.d.ts +3 -0
  24. package/dist/carriers/amazon-shipping/eligibility.js +16 -0
  25. package/dist/carriers/amazon-shipping/numbers.json +67 -0
  26. package/dist/carriers/amazon-shipping/status.d.ts +26 -0
  27. package/dist/carriers/amazon-shipping/status.js +118 -0
  28. package/dist/carriers/amazon-shipping/statuses.json +19 -0
  29. package/dist/carriers/an-post/carrier.json +38 -0
  30. package/dist/carriers/an-post/numbers.json +33 -0
  31. package/dist/carriers/aramex/adapter.d.ts +11 -0
  32. package/dist/carriers/aramex/adapter.js +49 -0
  33. package/dist/carriers/aramex/carrier.json +62 -0
  34. package/dist/carriers/aramex/numbers.json +71 -0
  35. package/dist/carriers/aramex/parser.d.ts +5 -0
  36. package/dist/carriers/aramex/parser.js +83 -0
  37. package/dist/carriers/aramex/status.d.ts +2 -0
  38. package/dist/carriers/aramex/status.js +16 -0
  39. package/dist/carriers/aramex/statuses.json +41 -0
  40. package/dist/carriers/asendia/adapter.d.ts +82 -0
  41. package/dist/carriers/asendia/adapter.js +342 -0
  42. package/dist/carriers/asendia/carrier.json +91 -0
  43. package/dist/carriers/asendia/numbers.json +177 -0
  44. package/dist/carriers/asendia/probe.d.ts +31 -0
  45. package/dist/carriers/asendia/probe.js +355 -0
  46. package/dist/carriers/asendia/status.d.ts +41 -0
  47. package/dist/carriers/asendia/status.js +147 -0
  48. package/dist/carriers/asendia/statuses.json +877 -0
  49. package/dist/carriers/australia-post/adapter.d.ts +20 -0
  50. package/dist/carriers/australia-post/adapter.js +175 -0
  51. package/dist/carriers/australia-post/carrier.json +72 -0
  52. package/dist/carriers/australia-post/numbers.json +66 -0
  53. package/dist/carriers/australia-post/status.d.ts +2 -0
  54. package/dist/carriers/australia-post/status.js +34 -0
  55. package/dist/carriers/australia-post/statuses.json +172 -0
  56. package/dist/carriers/austrian-post/adapter.d.ts +13 -0
  57. package/dist/carriers/austrian-post/adapter.js +101 -0
  58. package/dist/carriers/austrian-post/carrier.json +58 -0
  59. package/dist/carriers/austrian-post/numbers.json +73 -0
  60. package/dist/carriers/austrian-post/status.d.ts +3 -0
  61. package/dist/carriers/austrian-post/status.js +30 -0
  62. package/dist/carriers/austrian-post/statuses.json +47 -0
  63. package/dist/carriers/blue-dart/adapter.d.ts +11 -0
  64. package/dist/carriers/blue-dart/adapter.js +34 -0
  65. package/dist/carriers/blue-dart/carrier.json +59 -0
  66. package/dist/carriers/blue-dart/numbers.json +113 -0
  67. package/dist/carriers/blue-dart/parser.d.ts +3 -0
  68. package/dist/carriers/blue-dart/parser.js +75 -0
  69. package/dist/carriers/blue-dart/status.d.ts +2 -0
  70. package/dist/carriers/blue-dart/status.js +14 -0
  71. package/dist/carriers/blue-dart/statuses.json +59 -0
  72. package/dist/carriers/bpost/adapter.d.ts +11 -0
  73. package/dist/carriers/bpost/adapter.js +46 -0
  74. package/dist/carriers/bpost/carrier.json +81 -0
  75. package/dist/carriers/bpost/numbers.json +103 -0
  76. package/dist/carriers/bpost/parser.d.ts +3 -0
  77. package/dist/carriers/bpost/parser.js +84 -0
  78. package/dist/carriers/bpost/status.d.ts +2 -0
  79. package/dist/carriers/bpost/status.js +18 -0
  80. package/dist/carriers/bpost/statuses.json +96 -0
  81. package/dist/carriers/bring-posten/adapter.d.ts +11 -0
  82. package/dist/carriers/bring-posten/adapter.js +35 -0
  83. package/dist/carriers/bring-posten/carrier.json +91 -0
  84. package/dist/carriers/bring-posten/numbers.json +33 -0
  85. package/dist/carriers/bring-posten/parser.d.ts +3 -0
  86. package/dist/carriers/bring-posten/parser.js +95 -0
  87. package/dist/carriers/bring-posten/status.d.ts +3 -0
  88. package/dist/carriers/bring-posten/status.js +23 -0
  89. package/dist/carriers/bring-posten/statuses.json +33 -0
  90. package/dist/carriers/brt/adapter.d.ts +11 -0
  91. package/dist/carriers/brt/adapter.js +36 -0
  92. package/dist/carriers/brt/carrier.json +80 -0
  93. package/dist/carriers/brt/numbers.json +91 -0
  94. package/dist/carriers/brt/parser.d.ts +3 -0
  95. package/dist/carriers/brt/parser.js +84 -0
  96. package/dist/carriers/brt/status.d.ts +2 -0
  97. package/dist/carriers/brt/status.js +14 -0
  98. package/dist/carriers/brt/statuses.json +53 -0
  99. package/dist/carriers/c-chez-vous/adapter.d.ts +31 -0
  100. package/dist/carriers/c-chez-vous/adapter.js +181 -0
  101. package/dist/carriers/c-chez-vous/carrier.json +69 -0
  102. package/dist/carriers/c-chez-vous/numbers.json +31 -0
  103. package/dist/carriers/c-chez-vous/status.d.ts +27 -0
  104. package/dist/carriers/c-chez-vous/status.js +19 -0
  105. package/dist/carriers/c-chez-vous/statuses.json +10 -0
  106. package/dist/carriers/canada-post/adapter.d.ts +40 -0
  107. package/dist/carriers/canada-post/adapter.js +78 -0
  108. package/dist/carriers/canada-post/carrier.json +77 -0
  109. package/dist/carriers/canada-post/numbers.json +81 -0
  110. package/dist/carriers/canada-post/parser.d.ts +5 -0
  111. package/dist/carriers/canada-post/parser.js +202 -0
  112. package/dist/carriers/canada-post/status.d.ts +9 -0
  113. package/dist/carriers/canada-post/status.js +67 -0
  114. package/dist/carriers/canada-post/statuses.json +171 -0
  115. package/dist/carriers/canpar/adapter.d.ts +11 -0
  116. package/dist/carriers/canpar/adapter.js +40 -0
  117. package/dist/carriers/canpar/carrier.json +74 -0
  118. package/dist/carriers/canpar/numbers.json +71 -0
  119. package/dist/carriers/canpar/parser.d.ts +3 -0
  120. package/dist/carriers/canpar/parser.js +75 -0
  121. package/dist/carriers/canpar/status.d.ts +2 -0
  122. package/dist/carriers/canpar/status.js +16 -0
  123. package/dist/carriers/canpar/statuses.json +82 -0
  124. package/dist/carriers/china-post/carrier.json +38 -0
  125. package/dist/carriers/china-post/numbers.json +59 -0
  126. package/dist/carriers/chronopost/carrier.json +84 -0
  127. package/dist/carriers/chronopost/numbers.json +110 -0
  128. package/dist/carriers/chronopost/statuses.json +47 -0
  129. package/dist/carriers/ciblex/adapter.d.ts +17 -0
  130. package/dist/carriers/ciblex/adapter.js +46 -0
  131. package/dist/carriers/ciblex/carrier.json +71 -0
  132. package/dist/carriers/ciblex/numbers.json +63 -0
  133. package/dist/carriers/ciblex/parser.d.ts +4 -0
  134. package/dist/carriers/ciblex/parser.js +100 -0
  135. package/dist/carriers/ciblex/status.d.ts +24 -0
  136. package/dist/carriers/ciblex/status.js +55 -0
  137. package/dist/carriers/ciblex/statuses.json +221 -0
  138. package/dist/carriers/colis-prive/adapter.d.ts +39 -0
  139. package/dist/carriers/colis-prive/adapter.js +0 -0
  140. package/dist/carriers/colis-prive/carrier.json +72 -0
  141. package/dist/carriers/colis-prive/numbers.json +97 -0
  142. package/dist/carriers/colis-prive/status.d.ts +30 -0
  143. package/dist/carriers/colis-prive/status.js +85 -0
  144. package/dist/carriers/colis-prive/statuses.json +39 -0
  145. package/dist/carriers/colisweb/adapter.d.ts +29 -0
  146. package/dist/carriers/colisweb/adapter.js +166 -0
  147. package/dist/carriers/colisweb/carrier.json +63 -0
  148. package/dist/carriers/colisweb/numbers.json +39 -0
  149. package/dist/carriers/colisweb/status.d.ts +32 -0
  150. package/dist/carriers/colisweb/status.js +61 -0
  151. package/dist/carriers/colisweb/statuses.json +25 -0
  152. package/dist/carriers/correios-br/adapter.d.ts +16 -0
  153. package/dist/carriers/correios-br/adapter.js +78 -0
  154. package/dist/carriers/correios-br/carrier.json +64 -0
  155. package/dist/carriers/correios-br/model/LICENSE +21 -0
  156. package/dist/carriers/correios-br/model/captcha.onnx +0 -0
  157. package/dist/carriers/correios-br/numbers.json +72 -0
  158. package/dist/carriers/correios-br/ocr-worker.mjs +53 -0
  159. package/dist/carriers/correios-br/ocr.d.ts +10 -0
  160. package/dist/carriers/correios-br/ocr.js +83 -0
  161. package/dist/carriers/correios-br/parser.d.ts +4 -0
  162. package/dist/carriers/correios-br/parser.js +79 -0
  163. package/dist/carriers/correios-br/status.d.ts +2 -0
  164. package/dist/carriers/correios-br/status.js +17 -0
  165. package/dist/carriers/correios-br/statuses.json +16 -0
  166. package/dist/carriers/correos-chile/adapter.d.ts +12 -0
  167. package/dist/carriers/correos-chile/adapter.js +85 -0
  168. package/dist/carriers/correos-chile/carrier.json +62 -0
  169. package/dist/carriers/correos-chile/numbers.json +38 -0
  170. package/dist/carriers/correos-chile/parser.d.ts +9 -0
  171. package/dist/carriers/correos-chile/parser.js +120 -0
  172. package/dist/carriers/correos-chile/status.d.ts +3 -0
  173. package/dist/carriers/correos-chile/status.js +17 -0
  174. package/dist/carriers/correos-chile/statuses.json +12 -0
  175. package/dist/carriers/correos-express/adapter.d.ts +11 -0
  176. package/dist/carriers/correos-express/adapter.js +32 -0
  177. package/dist/carriers/correos-express/carrier.json +65 -0
  178. package/dist/carriers/correos-express/numbers.json +80 -0
  179. package/dist/carriers/correos-express/parser.d.ts +3 -0
  180. package/dist/carriers/correos-express/parser.js +97 -0
  181. package/dist/carriers/correos-express/status.d.ts +2 -0
  182. package/dist/carriers/correos-express/status.js +25 -0
  183. package/dist/carriers/correos-express/statuses.json +19 -0
  184. package/dist/carriers/correos-spain/adapter.d.ts +15 -0
  185. package/dist/carriers/correos-spain/adapter.js +191 -0
  186. package/dist/carriers/correos-spain/carrier.json +92 -0
  187. package/dist/carriers/correos-spain/numbers.json +149 -0
  188. package/dist/carriers/correos-spain/status.d.ts +17 -0
  189. package/dist/carriers/correos-spain/status.js +51 -0
  190. package/dist/carriers/correos-spain/statuses.json +46 -0
  191. package/dist/carriers/ctt/adapter.d.ts +34 -0
  192. package/dist/carriers/ctt/adapter.js +320 -0
  193. package/dist/carriers/ctt/carrier.json +72 -0
  194. package/dist/carriers/ctt/numbers.json +33 -0
  195. package/dist/carriers/ctt/status.d.ts +16 -0
  196. package/dist/carriers/ctt/status.js +16 -0
  197. package/dist/carriers/ctt/statuses.json +15 -0
  198. package/dist/carriers/ctt-express/adapter.d.ts +11 -0
  199. package/dist/carriers/ctt-express/adapter.js +41 -0
  200. package/dist/carriers/ctt-express/carrier.json +64 -0
  201. package/dist/carriers/ctt-express/numbers.json +59 -0
  202. package/dist/carriers/ctt-express/parser.d.ts +3 -0
  203. package/dist/carriers/ctt-express/parser.js +107 -0
  204. package/dist/carriers/ctt-express/status.d.ts +2 -0
  205. package/dist/carriers/ctt-express/status.js +17 -0
  206. package/dist/carriers/ctt-express/statuses.json +15 -0
  207. package/dist/carriers/dachser/adapter.d.ts +25 -0
  208. package/dist/carriers/dachser/adapter.js +168 -0
  209. package/dist/carriers/dachser/carrier.json +80 -0
  210. package/dist/carriers/dachser/numbers.json +66 -0
  211. package/dist/carriers/dachser/status.d.ts +40 -0
  212. package/dist/carriers/dachser/status.js +57 -0
  213. package/dist/carriers/dachser/statuses.json +18 -0
  214. package/dist/carriers/delhivery/adapter.d.ts +11 -0
  215. package/dist/carriers/delhivery/adapter.js +36 -0
  216. package/dist/carriers/delhivery/carrier.json +50 -0
  217. package/dist/carriers/delhivery/numbers.json +108 -0
  218. package/dist/carriers/delhivery/parser.d.ts +3 -0
  219. package/dist/carriers/delhivery/parser.js +81 -0
  220. package/dist/carriers/delhivery/status.d.ts +2 -0
  221. package/dist/carriers/delhivery/status.js +11 -0
  222. package/dist/carriers/delhivery/statuses.json +11 -0
  223. package/dist/carriers/delivengo/carrier.json +56 -0
  224. package/dist/carriers/delivengo/numbers.json +31 -0
  225. package/dist/carriers/delivengo/statuses.json +5 -0
  226. package/dist/carriers/dhl/adapter.d.ts +70 -0
  227. package/dist/carriers/dhl/adapter.js +308 -0
  228. package/dist/carriers/dhl/carrier.json +98 -0
  229. package/dist/carriers/dhl/numbers.json +153 -0
  230. package/dist/carriers/dhl/status.d.ts +14 -0
  231. package/dist/carriers/dhl/status.js +45 -0
  232. package/dist/carriers/dhl/statuses.json +27 -0
  233. package/dist/carriers/dhl-ecommerce/adapter.d.ts +50 -0
  234. package/dist/carriers/dhl-ecommerce/adapter.js +179 -0
  235. package/dist/carriers/dhl-ecommerce/carrier.json +97 -0
  236. package/dist/carriers/dhl-ecommerce/numbers.json +130 -0
  237. package/dist/carriers/dhl-ecommerce/status.d.ts +13 -0
  238. package/dist/carriers/dhl-ecommerce/status.js +57 -0
  239. package/dist/carriers/dhl-ecommerce/statuses.json +23 -0
  240. package/dist/carriers/dpd/adapter.d.ts +70 -0
  241. package/dist/carriers/dpd/adapter.js +809 -0
  242. package/dist/carriers/dpd/carrier.json +111 -0
  243. package/dist/carriers/dpd/numbers.json +43 -0
  244. package/dist/carriers/dpd/status.d.ts +39 -0
  245. package/dist/carriers/dpd/status.js +93 -0
  246. package/dist/carriers/dpd/statuses.json +144 -0
  247. package/dist/carriers/dpd-fr/adapter.d.ts +42 -0
  248. package/dist/carriers/dpd-fr/adapter.js +288 -0
  249. package/dist/carriers/dpd-fr/carrier.json +83 -0
  250. package/dist/carriers/dpd-fr/numbers.json +80 -0
  251. package/dist/carriers/dpd-fr/status.d.ts +21 -0
  252. package/dist/carriers/dpd-fr/status.js +93 -0
  253. package/dist/carriers/dpd-fr/statuses.json +325 -0
  254. package/dist/carriers/dtdc/adapter.d.ts +11 -0
  255. package/dist/carriers/dtdc/adapter.js +39 -0
  256. package/dist/carriers/dtdc/carrier.json +77 -0
  257. package/dist/carriers/dtdc/numbers.json +50 -0
  258. package/dist/carriers/dtdc/parser.d.ts +3 -0
  259. package/dist/carriers/dtdc/parser.js +90 -0
  260. package/dist/carriers/dtdc/status.d.ts +2 -0
  261. package/dist/carriers/dtdc/status.js +15 -0
  262. package/dist/carriers/dtdc/statuses.json +65 -0
  263. package/dist/carriers/ecoscooting/adapter.d.ts +11 -0
  264. package/dist/carriers/ecoscooting/adapter.js +42 -0
  265. package/dist/carriers/ecoscooting/carrier.json +76 -0
  266. package/dist/carriers/ecoscooting/numbers.json +291 -0
  267. package/dist/carriers/ecoscooting/parser.d.ts +3 -0
  268. package/dist/carriers/ecoscooting/parser.js +88 -0
  269. package/dist/carriers/ecoscooting/status.d.ts +2 -0
  270. package/dist/carriers/ecoscooting/status.js +50 -0
  271. package/dist/carriers/ecoscooting/statuses.json +295 -0
  272. package/dist/carriers/ems/adapter.d.ts +14 -0
  273. package/dist/carriers/ems/adapter.js +124 -0
  274. package/dist/carriers/ems/carrier.json +61 -0
  275. package/dist/carriers/ems/numbers.json +43 -0
  276. package/dist/carriers/ems/status.d.ts +2 -0
  277. package/dist/carriers/ems/status.js +24 -0
  278. package/dist/carriers/ems/statuses.json +128 -0
  279. package/dist/carriers/estafeta/adapter.d.ts +11 -0
  280. package/dist/carriers/estafeta/adapter.js +45 -0
  281. package/dist/carriers/estafeta/carrier.json +79 -0
  282. package/dist/carriers/estafeta/numbers.json +85 -0
  283. package/dist/carriers/estafeta/parser.d.ts +11 -0
  284. package/dist/carriers/estafeta/parser.js +123 -0
  285. package/dist/carriers/estafeta/status.d.ts +3 -0
  286. package/dist/carriers/estafeta/status.js +17 -0
  287. package/dist/carriers/estafeta/statuses.json +47 -0
  288. package/dist/carriers/evri/adapter.d.ts +14 -0
  289. package/dist/carriers/evri/adapter.js +146 -0
  290. package/dist/carriers/evri/carrier.json +69 -0
  291. package/dist/carriers/evri/numbers.json +32 -0
  292. package/dist/carriers/evri/status.d.ts +2 -0
  293. package/dist/carriers/evri/status.js +24 -0
  294. package/dist/carriers/evri/statuses.json +133 -0
  295. package/dist/carriers/fedex/adapter.d.ts +32 -0
  296. package/dist/carriers/fedex/adapter.js +307 -0
  297. package/dist/carriers/fedex/carrier.json +74 -0
  298. package/dist/carriers/fedex/numbers.json +198 -0
  299. package/dist/carriers/fedex/status.d.ts +33 -0
  300. package/dist/carriers/fedex/status.js +114 -0
  301. package/dist/carriers/fedex/statuses.json +34 -0
  302. package/dist/carriers/four-px/adapter.d.ts +12 -0
  303. package/dist/carriers/four-px/adapter.js +113 -0
  304. package/dist/carriers/four-px/carrier.json +60 -0
  305. package/dist/carriers/four-px/numbers.json +32 -0
  306. package/dist/carriers/four-px/status.d.ts +2 -0
  307. package/dist/carriers/four-px/status.js +22 -0
  308. package/dist/carriers/four-px/statuses.json +141 -0
  309. package/dist/carriers/geodis/adapter.d.ts +37 -0
  310. package/dist/carriers/geodis/adapter.js +275 -0
  311. package/dist/carriers/geodis/carrier.json +75 -0
  312. package/dist/carriers/geodis/numbers.json +45 -0
  313. package/dist/carriers/geodis/status.d.ts +37 -0
  314. package/dist/carriers/geodis/status.js +105 -0
  315. package/dist/carriers/geodis/statuses.json +51 -0
  316. package/dist/carriers/gls-ch/adapter.d.ts +39 -0
  317. package/dist/carriers/gls-ch/adapter.js +405 -0
  318. package/dist/carriers/gls-ch/carrier.json +122 -0
  319. package/dist/carriers/gls-ch/numbers.json +31 -0
  320. package/dist/carriers/gls-ch/status.d.ts +19 -0
  321. package/dist/carriers/gls-ch/status.js +79 -0
  322. package/dist/carriers/gls-ch/statuses.json +31 -0
  323. package/dist/carriers/gls-de/adapter.d.ts +28 -0
  324. package/dist/carriers/gls-de/adapter.js +113 -0
  325. package/dist/carriers/gls-de/carrier.json +126 -0
  326. package/dist/carriers/gls-de/numbers.json +111 -0
  327. package/dist/carriers/gls-de/status.d.ts +10 -0
  328. package/dist/carriers/gls-de/status.js +10 -0
  329. package/dist/carriers/gls-de/statuses.json +31 -0
  330. package/dist/carriers/gls-fr/adapter.d.ts +29 -0
  331. package/dist/carriers/gls-fr/adapter.js +220 -0
  332. package/dist/carriers/gls-fr/carrier.json +107 -0
  333. package/dist/carriers/gls-fr/numbers.json +113 -0
  334. package/dist/carriers/gls-fr/status.d.ts +28 -0
  335. package/dist/carriers/gls-fr/status.js +58 -0
  336. package/dist/carriers/gls-fr/statuses.json +34 -0
  337. package/dist/carriers/gofo/adapter.d.ts +11 -0
  338. package/dist/carriers/gofo/adapter.js +41 -0
  339. package/dist/carriers/gofo/carrier.json +80 -0
  340. package/dist/carriers/gofo/numbers.json +59 -0
  341. package/dist/carriers/gofo/parser.d.ts +5 -0
  342. package/dist/carriers/gofo/parser.js +131 -0
  343. package/dist/carriers/gofo/status.d.ts +2 -0
  344. package/dist/carriers/gofo/status.js +7 -0
  345. package/dist/carriers/gofo/statuses.json +54 -0
  346. package/dist/carriers/heppner/adapter.d.ts +27 -0
  347. package/dist/carriers/heppner/adapter.js +247 -0
  348. package/dist/carriers/heppner/carrier.json +74 -0
  349. package/dist/carriers/heppner/numbers.json +39 -0
  350. package/dist/carriers/heppner/status.d.ts +28 -0
  351. package/dist/carriers/heppner/status.js +43 -0
  352. package/dist/carriers/heppner/statuses.json +69 -0
  353. package/dist/carriers/hermes/adapter.d.ts +17 -0
  354. package/dist/carriers/hermes/adapter.js +103 -0
  355. package/dist/carriers/hermes/carrier.json +58 -0
  356. package/dist/carriers/hermes/numbers.json +20 -0
  357. package/dist/carriers/hermes/status.d.ts +15 -0
  358. package/dist/carriers/hermes/status.js +61 -0
  359. package/dist/carriers/hermes/statuses.json +31 -0
  360. package/dist/carriers/hermes-de/adapter.d.ts +22 -0
  361. package/dist/carriers/hermes-de/adapter.js +168 -0
  362. package/dist/carriers/hermes-de/carrier.json +90 -0
  363. package/dist/carriers/hermes-de/numbers.json +125 -0
  364. package/dist/carriers/hermes-de/status.d.ts +24 -0
  365. package/dist/carriers/hermes-de/status.js +52 -0
  366. package/dist/carriers/hermes-de/statuses.json +277 -0
  367. package/dist/carriers/hongkong-post/carrier.json +38 -0
  368. package/dist/carriers/hongkong-post/numbers.json +32 -0
  369. package/dist/carriers/india-post/adapter.d.ts +33 -0
  370. package/dist/carriers/india-post/adapter.js +415 -0
  371. package/dist/carriers/india-post/carrier.json +74 -0
  372. package/dist/carriers/india-post/numbers.json +58 -0
  373. package/dist/carriers/india-post/status.d.ts +23 -0
  374. package/dist/carriers/india-post/status.js +99 -0
  375. package/dist/carriers/india-post/statuses.json +18 -0
  376. package/dist/carriers/inpost/adapter.d.ts +14 -0
  377. package/dist/carriers/inpost/adapter.js +143 -0
  378. package/dist/carriers/inpost/carrier.json +75 -0
  379. package/dist/carriers/inpost/numbers.json +130 -0
  380. package/dist/carriers/inpost/status.d.ts +16 -0
  381. package/dist/carriers/inpost/status.js +31 -0
  382. package/dist/carriers/inpost/statuses.json +26 -0
  383. package/dist/carriers/intl-post/carrier.json +46 -0
  384. package/dist/carriers/intl-post/numbers.json +29 -0
  385. package/dist/carriers/j-and-t/carrier.json +66 -0
  386. package/dist/carriers/j-and-t/numbers.json +90 -0
  387. package/dist/carriers/japan-post/adapter.d.ts +13 -0
  388. package/dist/carriers/japan-post/adapter.js +159 -0
  389. package/dist/carriers/japan-post/carrier.json +71 -0
  390. package/dist/carriers/japan-post/numbers.json +35 -0
  391. package/dist/carriers/japan-post/status.d.ts +2 -0
  392. package/dist/carriers/japan-post/status.js +25 -0
  393. package/dist/carriers/japan-post/statuses.json +136 -0
  394. package/dist/carriers/jd-logistics/carrier.json +37 -0
  395. package/dist/carriers/jd-logistics/numbers.json +19 -0
  396. package/dist/carriers/korea-post/adapter.d.ts +12 -0
  397. package/dist/carriers/korea-post/adapter.js +101 -0
  398. package/dist/carriers/korea-post/carrier.json +74 -0
  399. package/dist/carriers/korea-post/numbers.json +54 -0
  400. package/dist/carriers/korea-post/status.d.ts +2 -0
  401. package/dist/carriers/korea-post/status.js +19 -0
  402. package/dist/carriers/korea-post/statuses.json +103 -0
  403. package/dist/carriers/la-poste/adapter.d.ts +29 -0
  404. package/dist/carriers/la-poste/adapter.js +241 -0
  405. package/dist/carriers/la-poste/carrier.json +87 -0
  406. package/dist/carriers/la-poste/numbers.json +140 -0
  407. package/dist/carriers/la-poste/status.d.ts +30 -0
  408. package/dist/carriers/la-poste/status.js +110 -0
  409. package/dist/carriers/la-poste/statuses.json +163 -0
  410. package/dist/carriers/landmark-global/adapter.d.ts +11 -0
  411. package/dist/carriers/landmark-global/adapter.js +30 -0
  412. package/dist/carriers/landmark-global/carrier.json +64 -0
  413. package/dist/carriers/landmark-global/numbers.json +58 -0
  414. package/dist/carriers/landmark-global/parser.d.ts +3 -0
  415. package/dist/carriers/landmark-global/parser.js +78 -0
  416. package/dist/carriers/landmark-global/status.d.ts +2 -0
  417. package/dist/carriers/landmark-global/status.js +13 -0
  418. package/dist/carriers/landmark-global/statuses.json +125 -0
  419. package/dist/carriers/mondial-relay/adapter.d.ts +32 -0
  420. package/dist/carriers/mondial-relay/adapter.js +352 -0
  421. package/dist/carriers/mondial-relay/carrier.json +94 -0
  422. package/dist/carriers/mondial-relay/numbers.json +130 -0
  423. package/dist/carriers/mondial-relay/status.d.ts +31 -0
  424. package/dist/carriers/mondial-relay/status.js +98 -0
  425. package/dist/carriers/mondial-relay/statuses.json +50 -0
  426. package/dist/carriers/mrw/adapter.d.ts +13 -0
  427. package/dist/carriers/mrw/adapter.js +131 -0
  428. package/dist/carriers/mrw/carrier.json +60 -0
  429. package/dist/carriers/mrw/numbers.json +116 -0
  430. package/dist/carriers/mrw/parser.d.ts +12 -0
  431. package/dist/carriers/mrw/parser.js +149 -0
  432. package/dist/carriers/mrw/status.d.ts +2 -0
  433. package/dist/carriers/mrw/status.js +14 -0
  434. package/dist/carriers/mrw/statuses.json +13 -0
  435. package/dist/carriers/nacex/adapter.d.ts +11 -0
  436. package/dist/carriers/nacex/adapter.js +99 -0
  437. package/dist/carriers/nacex/carrier.json +78 -0
  438. package/dist/carriers/nacex/numbers.json +47 -0
  439. package/dist/carriers/nacex/parser.d.ts +4 -0
  440. package/dist/carriers/nacex/parser.js +119 -0
  441. package/dist/carriers/nacex/status.d.ts +2 -0
  442. package/dist/carriers/nacex/status.js +12 -0
  443. package/dist/carriers/nacex/statuses.json +11 -0
  444. package/dist/carriers/ninja-van/adapter.d.ts +11 -0
  445. package/dist/carriers/ninja-van/adapter.js +45 -0
  446. package/dist/carriers/ninja-van/carrier.json +79 -0
  447. package/dist/carriers/ninja-van/numbers.json +67 -0
  448. package/dist/carriers/ninja-van/parser.d.ts +5 -0
  449. package/dist/carriers/ninja-van/parser.js +95 -0
  450. package/dist/carriers/ninja-van/status.d.ts +3 -0
  451. package/dist/carriers/ninja-van/status.js +25 -0
  452. package/dist/carriers/ninja-van/statuses.json +11 -0
  453. package/dist/carriers/nz-post/adapter.d.ts +11 -0
  454. package/dist/carriers/nz-post/adapter.js +45 -0
  455. package/dist/carriers/nz-post/carrier.json +82 -0
  456. package/dist/carriers/nz-post/numbers.json +49 -0
  457. package/dist/carriers/nz-post/parser.d.ts +3 -0
  458. package/dist/carriers/nz-post/parser.js +97 -0
  459. package/dist/carriers/nz-post/status.d.ts +2 -0
  460. package/dist/carriers/nz-post/status.js +29 -0
  461. package/dist/carriers/nz-post/statuses.json +68 -0
  462. package/dist/carriers/old-dominion/carrier.json +51 -0
  463. package/dist/carriers/old-dominion/numbers.json +83 -0
  464. package/dist/carriers/ontrac/adapter.d.ts +11 -0
  465. package/dist/carriers/ontrac/adapter.js +34 -0
  466. package/dist/carriers/ontrac/carrier.json +81 -0
  467. package/dist/carriers/ontrac/numbers.json +214 -0
  468. package/dist/carriers/ontrac/parser.d.ts +3 -0
  469. package/dist/carriers/ontrac/parser.js +72 -0
  470. package/dist/carriers/ontrac/status.d.ts +2 -0
  471. package/dist/carriers/ontrac/status.js +19 -0
  472. package/dist/carriers/ontrac/statuses.json +61 -0
  473. package/dist/carriers/paack/adapter.d.ts +19 -0
  474. package/dist/carriers/paack/adapter.js +255 -0
  475. package/dist/carriers/paack/carrier.json +79 -0
  476. package/dist/carriers/paack/numbers.json +106 -0
  477. package/dist/carriers/paack/status.d.ts +26 -0
  478. package/dist/carriers/paack/status.js +82 -0
  479. package/dist/carriers/paack/statuses.json +357 -0
  480. package/dist/carriers/packeta/adapter.d.ts +15 -0
  481. package/dist/carriers/packeta/adapter.js +166 -0
  482. package/dist/carriers/packeta/carrier.json +90 -0
  483. package/dist/carriers/packeta/numbers.json +71 -0
  484. package/dist/carriers/packeta/status.d.ts +23 -0
  485. package/dist/carriers/packeta/status.js +40 -0
  486. package/dist/carriers/packeta/statuses.json +21 -0
  487. package/dist/carriers/parcelforce/carrier.json +47 -0
  488. package/dist/carriers/parcelforce/numbers.json +32 -0
  489. package/dist/carriers/planzer/adapter.d.ts +40 -0
  490. package/dist/carriers/planzer/adapter.js +148 -0
  491. package/dist/carriers/planzer/carrier.json +85 -0
  492. package/dist/carriers/planzer/numbers.json +118 -0
  493. package/dist/carriers/planzer/shared.d.ts +19 -0
  494. package/dist/carriers/planzer/shared.js +135 -0
  495. package/dist/carriers/planzer/status.d.ts +33 -0
  496. package/dist/carriers/planzer/status.js +89 -0
  497. package/dist/carriers/planzer/statuses.json +229 -0
  498. package/dist/carriers/poczta-polska/adapter.d.ts +15 -0
  499. package/dist/carriers/poczta-polska/adapter.js +65 -0
  500. package/dist/carriers/poczta-polska/carrier.json +79 -0
  501. package/dist/carriers/poczta-polska/numbers.json +130 -0
  502. package/dist/carriers/poczta-polska/parser.d.ts +3 -0
  503. package/dist/carriers/poczta-polska/parser.js +96 -0
  504. package/dist/carriers/poczta-polska/status.d.ts +2 -0
  505. package/dist/carriers/poczta-polska/status.js +21 -0
  506. package/dist/carriers/poczta-polska/statuses.json +47 -0
  507. package/dist/carriers/pos-malaysia/adapter.d.ts +18 -0
  508. package/dist/carriers/pos-malaysia/adapter.js +199 -0
  509. package/dist/carriers/pos-malaysia/carrier.json +78 -0
  510. package/dist/carriers/pos-malaysia/numbers.json +73 -0
  511. package/dist/carriers/pos-malaysia/status.d.ts +17 -0
  512. package/dist/carriers/pos-malaysia/status.js +21 -0
  513. package/dist/carriers/pos-malaysia/statuses.json +17 -0
  514. package/dist/carriers/poste-italiane/adapter.d.ts +15 -0
  515. package/dist/carriers/poste-italiane/adapter.js +211 -0
  516. package/dist/carriers/poste-italiane/carrier.json +86 -0
  517. package/dist/carriers/poste-italiane/numbers.json +117 -0
  518. package/dist/carriers/poste-italiane/status.d.ts +19 -0
  519. package/dist/carriers/poste-italiane/status.js +44 -0
  520. package/dist/carriers/poste-italiane/statuses.json +22 -0
  521. package/dist/carriers/posti/adapter.d.ts +17 -0
  522. package/dist/carriers/posti/adapter.js +195 -0
  523. package/dist/carriers/posti/carrier.json +69 -0
  524. package/dist/carriers/posti/numbers.json +52 -0
  525. package/dist/carriers/posti/status.d.ts +4 -0
  526. package/dist/carriers/posti/status.js +41 -0
  527. package/dist/carriers/posti/statuses.json +18 -0
  528. package/dist/carriers/postlogistics/adapter.d.ts +39 -0
  529. package/dist/carriers/postlogistics/adapter.js +162 -0
  530. package/dist/carriers/postlogistics/carrier.json +67 -0
  531. package/dist/carriers/postlogistics/number.d.ts +2 -0
  532. package/dist/carriers/postlogistics/number.js +7 -0
  533. package/dist/carriers/postlogistics/numbers.json +54 -0
  534. package/dist/carriers/postlogistics/status.d.ts +20 -0
  535. package/dist/carriers/postlogistics/status.js +12 -0
  536. package/dist/carriers/postlogistics/statuses.json +40 -0
  537. package/dist/carriers/postnord/adapter.d.ts +11 -0
  538. package/dist/carriers/postnord/adapter.js +76 -0
  539. package/dist/carriers/postnord/carrier.json +82 -0
  540. package/dist/carriers/postnord/numbers.json +66 -0
  541. package/dist/carriers/postnord/parser.d.ts +3 -0
  542. package/dist/carriers/postnord/parser.js +75 -0
  543. package/dist/carriers/postnord/status.d.ts +3 -0
  544. package/dist/carriers/postnord/status.js +38 -0
  545. package/dist/carriers/postnord/statuses.json +16 -0
  546. package/dist/carriers/purolator/adapter.d.ts +11 -0
  547. package/dist/carriers/purolator/adapter.js +45 -0
  548. package/dist/carriers/purolator/carrier.json +75 -0
  549. package/dist/carriers/purolator/numbers.json +146 -0
  550. package/dist/carriers/purolator/parser.d.ts +3 -0
  551. package/dist/carriers/purolator/parser.js +79 -0
  552. package/dist/carriers/purolator/status.d.ts +2 -0
  553. package/dist/carriers/purolator/status.js +17 -0
  554. package/dist/carriers/purolator/statuses.json +15 -0
  555. package/dist/carriers/quickpac/carrier.json +68 -0
  556. package/dist/carriers/quickpac/numbers.json +31 -0
  557. package/dist/carriers/quickpac/statuses.json +213 -0
  558. package/dist/carriers/relais-colis/adapter.d.ts +28 -0
  559. package/dist/carriers/relais-colis/adapter.js +242 -0
  560. package/dist/carriers/relais-colis/carrier.json +77 -0
  561. package/dist/carriers/relais-colis/numbers.json +64 -0
  562. package/dist/carriers/relais-colis/status.d.ts +26 -0
  563. package/dist/carriers/relais-colis/status.js +91 -0
  564. package/dist/carriers/relais-colis/statuses.json +341 -0
  565. package/dist/carriers/royal-mail/adapter.d.ts +32 -0
  566. package/dist/carriers/royal-mail/adapter.js +260 -0
  567. package/dist/carriers/royal-mail/carrier.json +60 -0
  568. package/dist/carriers/royal-mail/numbers.json +57 -0
  569. package/dist/carriers/royal-mail/status.d.ts +19 -0
  570. package/dist/carriers/royal-mail/status.js +80 -0
  571. package/dist/carriers/royal-mail/statuses.json +16 -0
  572. package/dist/carriers/seur/adapter.d.ts +11 -0
  573. package/dist/carriers/seur/adapter.js +35 -0
  574. package/dist/carriers/seur/carrier.json +89 -0
  575. package/dist/carriers/seur/numbers.json +80 -0
  576. package/dist/carriers/seur/parser.d.ts +3 -0
  577. package/dist/carriers/seur/parser.js +78 -0
  578. package/dist/carriers/seur/status.d.ts +2 -0
  579. package/dist/carriers/seur/status.js +14 -0
  580. package/dist/carriers/seur/statuses.json +47 -0
  581. package/dist/carriers/sf-express/adapter.d.ts +17 -0
  582. package/dist/carriers/sf-express/adapter.js +87 -0
  583. package/dist/carriers/sf-express/carrier.json +78 -0
  584. package/dist/carriers/sf-express/numbers.json +66 -0
  585. package/dist/carriers/sf-express/parser.d.ts +4 -0
  586. package/dist/carriers/sf-express/parser.js +102 -0
  587. package/dist/carriers/sf-express/status.d.ts +4 -0
  588. package/dist/carriers/sf-express/status.js +28 -0
  589. package/dist/carriers/sf-express/statuses.json +334 -0
  590. package/dist/carriers/shipup/carrier.json +28 -0
  591. package/dist/carriers/shipup/numbers.json +20 -0
  592. package/dist/carriers/singapore-post/adapter.d.ts +12 -0
  593. package/dist/carriers/singapore-post/adapter.js +106 -0
  594. package/dist/carriers/singapore-post/carrier.json +62 -0
  595. package/dist/carriers/singapore-post/numbers.json +77 -0
  596. package/dist/carriers/singapore-post/status.d.ts +2 -0
  597. package/dist/carriers/singapore-post/status.js +17 -0
  598. package/dist/carriers/singapore-post/statuses.json +101 -0
  599. package/dist/carriers/spee-dee/carrier.json +51 -0
  600. package/dist/carriers/spee-dee/numbers.json +55 -0
  601. package/dist/carriers/speedx/carrier.json +49 -0
  602. package/dist/carriers/speedx/numbers.json +112 -0
  603. package/dist/carriers/spring-gds/adapter.d.ts +35 -0
  604. package/dist/carriers/spring-gds/adapter.js +212 -0
  605. package/dist/carriers/spring-gds/carrier.json +90 -0
  606. package/dist/carriers/spring-gds/numbers.json +224 -0
  607. package/dist/carriers/spring-gds/status.d.ts +19 -0
  608. package/dist/carriers/spring-gds/status.js +28 -0
  609. package/dist/carriers/spring-gds/statuses.json +140 -0
  610. package/dist/carriers/sto/carrier.json +37 -0
  611. package/dist/carriers/sto/numbers.json +33 -0
  612. package/dist/carriers/sunyou/adapter.d.ts +18 -0
  613. package/dist/carriers/sunyou/adapter.js +156 -0
  614. package/dist/carriers/sunyou/carrier.json +64 -0
  615. package/dist/carriers/sunyou/numbers.json +44 -0
  616. package/dist/carriers/sunyou/status.d.ts +17 -0
  617. package/dist/carriers/sunyou/status.js +13 -0
  618. package/dist/carriers/sunyou/statuses.json +53 -0
  619. package/dist/carriers/swiss-post/adapter.d.ts +18 -0
  620. package/dist/carriers/swiss-post/adapter.js +282 -0
  621. package/dist/carriers/swiss-post/carrier.json +84 -0
  622. package/dist/carriers/swiss-post/numbers.json +55 -0
  623. package/dist/carriers/swiss-post/status.d.ts +27 -0
  624. package/dist/carriers/swiss-post/status.js +64 -0
  625. package/dist/carriers/swiss-post/statuses.json +33 -0
  626. package/dist/carriers/swiss-post-cargo/adapter.d.ts +19 -0
  627. package/dist/carriers/swiss-post-cargo/adapter.js +173 -0
  628. package/dist/carriers/swiss-post-cargo/carrier.json +60 -0
  629. package/dist/carriers/swiss-post-cargo/numbers.json +23 -0
  630. package/dist/carriers/swiss-post-cargo/reference.d.ts +13 -0
  631. package/dist/carriers/swiss-post-cargo/reference.js +48 -0
  632. package/dist/carriers/swiss-post-cargo/status.d.ts +13 -0
  633. package/dist/carriers/swiss-post-cargo/status.js +53 -0
  634. package/dist/carriers/swiss-post-cargo/statuses.json +19 -0
  635. package/dist/carriers/thailand-post/carrier.json +38 -0
  636. package/dist/carriers/thailand-post/numbers.json +33 -0
  637. package/dist/carriers/the-courier-guy/adapter.d.ts +11 -0
  638. package/dist/carriers/the-courier-guy/adapter.js +49 -0
  639. package/dist/carriers/the-courier-guy/carrier.json +73 -0
  640. package/dist/carriers/the-courier-guy/number.d.ts +3 -0
  641. package/dist/carriers/the-courier-guy/number.js +18 -0
  642. package/dist/carriers/the-courier-guy/numbers.json +74 -0
  643. package/dist/carriers/the-courier-guy/parser.d.ts +3 -0
  644. package/dist/carriers/the-courier-guy/parser.js +104 -0
  645. package/dist/carriers/the-courier-guy/status.d.ts +5 -0
  646. package/dist/carriers/the-courier-guy/status.js +21 -0
  647. package/dist/carriers/the-courier-guy/statuses.json +61 -0
  648. package/dist/carriers/tipsa/adapter.d.ts +12 -0
  649. package/dist/carriers/tipsa/adapter.js +52 -0
  650. package/dist/carriers/tipsa/carrier.json +92 -0
  651. package/dist/carriers/tipsa/numbers.json +100 -0
  652. package/dist/carriers/tipsa/parser.d.ts +17 -0
  653. package/dist/carriers/tipsa/parser.js +114 -0
  654. package/dist/carriers/tipsa/status.d.ts +3 -0
  655. package/dist/carriers/tipsa/status.js +25 -0
  656. package/dist/carriers/tipsa/statuses.json +12 -0
  657. package/dist/carriers/tnt/adapter.d.ts +23 -0
  658. package/dist/carriers/tnt/adapter.js +210 -0
  659. package/dist/carriers/tnt/carrier.json +66 -0
  660. package/dist/carriers/tnt/numbers.json +116 -0
  661. package/dist/carriers/tnt/status.d.ts +3 -0
  662. package/dist/carriers/tnt/status.js +35 -0
  663. package/dist/carriers/tnt/statuses.json +126 -0
  664. package/dist/carriers/ukrposhta/adapter.d.ts +13 -0
  665. package/dist/carriers/ukrposhta/adapter.js +152 -0
  666. package/dist/carriers/ukrposhta/carrier.json +62 -0
  667. package/dist/carriers/ukrposhta/numbers.json +53 -0
  668. package/dist/carriers/ukrposhta/parser.d.ts +15 -0
  669. package/dist/carriers/ukrposhta/parser.js +130 -0
  670. package/dist/carriers/ukrposhta/status.d.ts +3 -0
  671. package/dist/carriers/ukrposhta/status.js +34 -0
  672. package/dist/carriers/ukrposhta/statuses.json +208 -0
  673. package/dist/carriers/uniuni/adapter.d.ts +11 -0
  674. package/dist/carriers/uniuni/adapter.js +48 -0
  675. package/dist/carriers/uniuni/carrier.json +90 -0
  676. package/dist/carriers/uniuni/numbers.json +72 -0
  677. package/dist/carriers/uniuni/parser.d.ts +5 -0
  678. package/dist/carriers/uniuni/parser.js +114 -0
  679. package/dist/carriers/uniuni/status.d.ts +2 -0
  680. package/dist/carriers/uniuni/status.js +16 -0
  681. package/dist/carriers/uniuni/statuses.json +54 -0
  682. package/dist/carriers/unknown/carrier.json +57 -0
  683. package/dist/carriers/unknown/numbers.json +257 -0
  684. package/dist/carriers/ups/adapter.d.ts +40 -0
  685. package/dist/carriers/ups/adapter.js +473 -0
  686. package/dist/carriers/ups/carrier.json +69 -0
  687. package/dist/carriers/ups/numbers.json +134 -0
  688. package/dist/carriers/ups/status.d.ts +25 -0
  689. package/dist/carriers/ups/status.js +41 -0
  690. package/dist/carriers/ups/statuses.json +35 -0
  691. package/dist/carriers/usps/adapter.d.ts +25 -0
  692. package/dist/carriers/usps/adapter.js +261 -0
  693. package/dist/carriers/usps/carrier.json +74 -0
  694. package/dist/carriers/usps/numbers.json +286 -0
  695. package/dist/carriers/usps/status.d.ts +25 -0
  696. package/dist/carriers/usps/status.js +72 -0
  697. package/dist/carriers/usps/statuses.json +24 -0
  698. package/dist/carriers/yamato/adapter.d.ts +13 -0
  699. package/dist/carriers/yamato/adapter.js +130 -0
  700. package/dist/carriers/yamato/carrier.json +72 -0
  701. package/dist/carriers/yamato/numbers.json +57 -0
  702. package/dist/carriers/yamato/status.d.ts +2 -0
  703. package/dist/carriers/yamato/status.js +27 -0
  704. package/dist/carriers/yamato/statuses.json +159 -0
  705. package/dist/carriers/yanwen/adapter.d.ts +13 -0
  706. package/dist/carriers/yanwen/adapter.js +130 -0
  707. package/dist/carriers/yanwen/carrier.json +66 -0
  708. package/dist/carriers/yanwen/numbers.json +45 -0
  709. package/dist/carriers/yanwen/status.d.ts +2 -0
  710. package/dist/carriers/yanwen/status.js +25 -0
  711. package/dist/carriers/yanwen/statuses.json +131 -0
  712. package/dist/carriers/yto/adapter.d.ts +11 -0
  713. package/dist/carriers/yto/adapter.js +36 -0
  714. package/dist/carriers/yto/carrier.json +75 -0
  715. package/dist/carriers/yto/numbers.json +33 -0
  716. package/dist/carriers/yto/parser.d.ts +3 -0
  717. package/dist/carriers/yto/parser.js +92 -0
  718. package/dist/carriers/yto/status.d.ts +10 -0
  719. package/dist/carriers/yto/status.js +46 -0
  720. package/dist/carriers/yto/statuses.json +206 -0
  721. package/dist/carriers/yunda/adapter.d.ts +11 -0
  722. package/dist/carriers/yunda/adapter.js +68 -0
  723. package/dist/carriers/yunda/carrier.json +69 -0
  724. package/dist/carriers/yunda/challenge.d.ts +5 -0
  725. package/dist/carriers/yunda/challenge.js +68 -0
  726. package/dist/carriers/yunda/numbers.json +43 -0
  727. package/dist/carriers/yunda/parser.d.ts +4 -0
  728. package/dist/carriers/yunda/parser.js +105 -0
  729. package/dist/carriers/yunda/status.d.ts +4 -0
  730. package/dist/carriers/yunda/status.js +9 -0
  731. package/dist/carriers/yunda/statuses.json +40 -0
  732. package/dist/carriers/yunexpress/adapter.d.ts +20 -0
  733. package/dist/carriers/yunexpress/adapter.js +240 -0
  734. package/dist/carriers/yunexpress/carrier.json +69 -0
  735. package/dist/carriers/yunexpress/numbers.json +32 -0
  736. package/dist/carriers/yunexpress/status.d.ts +2 -0
  737. package/dist/carriers/yunexpress/status.js +23 -0
  738. package/dist/carriers/yunexpress/statuses.json +112 -0
  739. package/dist/carriers/zto/carrier.json +37 -0
  740. package/dist/carriers/zto/numbers.json +30 -0
  741. package/dist/cli/index.d.ts +2 -0
  742. package/dist/cli/index.js +82 -0
  743. package/dist/core/adapter/index.d.ts +90 -0
  744. package/dist/core/adapter/index.js +103 -0
  745. package/dist/core/adapter/track.d.ts +10 -0
  746. package/dist/core/adapter/track.js +20 -0
  747. package/dist/core/catalog/amazon.d.ts +5 -0
  748. package/dist/core/catalog/amazon.js +33 -0
  749. package/dist/core/catalog/definitions.d.ts +24 -0
  750. package/dist/core/catalog/definitions.js +44 -0
  751. package/dist/core/catalog/handoff.d.ts +9 -0
  752. package/dist/core/catalog/handoff.js +56 -0
  753. package/dist/core/catalog/hints.d.ts +45 -0
  754. package/dist/core/catalog/hints.js +162 -0
  755. package/dist/core/catalog/index.d.ts +38 -0
  756. package/dist/core/catalog/index.js +223 -0
  757. package/dist/core/catalog/inputs.d.ts +6 -0
  758. package/dist/core/catalog/inputs.js +89 -0
  759. package/dist/core/catalog/linkRules.d.ts +24 -0
  760. package/dist/core/catalog/linkRules.js +20 -0
  761. package/dist/core/catalog/networks.d.ts +9 -0
  762. package/dist/core/catalog/networks.js +13 -0
  763. package/dist/core/catalog/recognition.d.ts +22 -0
  764. package/dist/core/catalog/recognition.js +52 -0
  765. package/dist/core/catalog/types.d.ts +135 -0
  766. package/dist/core/catalog/types.js +1 -0
  767. package/dist/core/catalog/urls.d.ts +2 -0
  768. package/dist/core/catalog/urls.js +125 -0
  769. package/dist/core/detection/amazon.d.ts +2 -0
  770. package/dist/core/detection/amazon.js +14 -0
  771. package/dist/core/detection/candidates.d.ts +5 -0
  772. package/dist/core/detection/candidates.js +41 -0
  773. package/dist/core/detection/detect.d.ts +17 -0
  774. package/dist/core/detection/detect.js +52 -0
  775. package/dist/core/detection/gls.d.ts +16 -0
  776. package/dist/core/detection/gls.js +21 -0
  777. package/dist/core/detection/hermes.d.ts +14 -0
  778. package/dist/core/detection/hermes.js +19 -0
  779. package/dist/core/detection/index.d.ts +19 -0
  780. package/dist/core/detection/index.js +9 -0
  781. package/dist/core/detection/mondialRelay.d.ts +13 -0
  782. package/dist/core/detection/mondialRelay.js +25 -0
  783. package/dist/core/detection/normalize.d.ts +15 -0
  784. package/dist/core/detection/normalize.js +39 -0
  785. package/dist/core/detection/parse.d.ts +6 -0
  786. package/dist/core/detection/parse.js +112 -0
  787. package/dist/core/detection/s10.d.ts +4 -0
  788. package/dist/core/detection/s10.js +25 -0
  789. package/dist/core/detection/types.d.ts +22 -0
  790. package/dist/core/detection/types.js +1 -0
  791. package/dist/core/errors/hint.d.ts +7 -0
  792. package/dist/core/errors/hint.js +7 -0
  793. package/dist/core/errors/index.d.ts +98 -0
  794. package/dist/core/errors/index.js +178 -0
  795. package/dist/core/recognition/index.d.ts +24 -0
  796. package/dist/core/recognition/index.js +65 -0
  797. package/dist/core/result/index.d.ts +57 -0
  798. package/dist/core/result/index.js +114 -0
  799. package/dist/core/result/resolve.d.ts +18 -0
  800. package/dist/core/result/resolve.js +49 -0
  801. package/dist/core/runner/index.d.ts +33 -0
  802. package/dist/core/runner/index.js +109 -0
  803. package/dist/core/status/index.d.ts +22 -0
  804. package/dist/core/status/index.js +3 -0
  805. package/dist/core/status/language.d.ts +11 -0
  806. package/dist/core/status/language.js +149 -0
  807. package/dist/core/status/wording.d.ts +25 -0
  808. package/dist/core/status/wording.js +91 -0
  809. package/dist/core/telemetry/index.d.ts +62 -0
  810. package/dist/core/telemetry/index.js +55 -0
  811. package/dist/core/time/index.d.ts +84 -0
  812. package/dist/core/time/index.js +243 -0
  813. package/dist/core/time/result.d.ts +5 -0
  814. package/dist/core/time/result.js +55 -0
  815. package/dist/core/transport/boundedFetch.d.ts +26 -0
  816. package/dist/core/transport/boundedFetch.js +152 -0
  817. package/dist/core/transport/browser.d.ts +14 -0
  818. package/dist/core/transport/browser.js +113 -0
  819. package/dist/core/transport/index.d.ts +8 -0
  820. package/dist/core/transport/index.js +5 -0
  821. package/dist/core/transport/optional.d.ts +2 -0
  822. package/dist/core/transport/optional.js +17 -0
  823. package/dist/core/transport/text.d.ts +8 -0
  824. package/dist/core/transport/text.js +18 -0
  825. package/dist/core/transport/trawl.d.ts +80 -0
  826. package/dist/core/transport/trawl.js +212 -0
  827. package/dist/core/transport/upstreamHttpDiagnostics.d.ts +16 -0
  828. package/dist/core/transport/upstreamHttpDiagnostics.js +97 -0
  829. package/dist/core/types.d.ts +8 -0
  830. package/dist/core/types.js +11 -0
  831. package/dist/data/catalog.json +3969 -0
  832. package/dist/facade/index.d.ts +57 -0
  833. package/dist/facade/index.js +195 -0
  834. package/dist/generated/catalog.d.ts +2671 -0
  835. package/dist/generated/catalog.js +4090 -0
  836. package/dist/generated/recognition.d.ts +2 -0
  837. package/dist/generated/recognition.js +31 -0
  838. package/dist/generated/regionTowns.d.ts +2 -0
  839. package/dist/generated/regionTowns.js +11 -0
  840. package/dist/generated/registry.d.ts +4 -0
  841. package/dist/generated/registry.js +286 -0
  842. package/dist/index.d.ts +19 -0
  843. package/dist/index.js +18 -0
  844. package/dist/node.d.ts +11 -0
  845. package/dist/node.js +11 -0
  846. package/dist/places/countries.json +1670 -0
  847. package/dist/places/facilities.json +11 -0
  848. package/dist/places/index.d.ts +42 -0
  849. package/dist/places/index.js +307 -0
  850. package/dist/places/names.d.mts +15 -0
  851. package/dist/places/names.mjs +36 -0
  852. package/dist/places/places.tsv.br +0 -0
  853. package/dist/places/trackingLocation.d.ts +18 -0
  854. package/dist/places/trackingLocation.js +89 -0
  855. package/dist/providers/coverage.d.ts +31 -0
  856. package/dist/providers/coverage.js +70 -0
  857. package/dist/providers/coverage.json +1744 -0
  858. package/dist/providers/parcelsapp/adapter.d.ts +23 -0
  859. package/dist/providers/parcelsapp/adapter.js +391 -0
  860. package/dist/providers/parcelsapp/http.d.ts +9 -0
  861. package/dist/providers/parcelsapp/http.js +67 -0
  862. package/dist/providers/plan.d.ts +38 -0
  863. package/dist/providers/plan.js +54 -0
  864. package/dist/providers/postal-ninja/adapter.d.ts +17 -0
  865. package/dist/providers/postal-ninja/adapter.js +200 -0
  866. package/dist/providers/seventeentrack/adapter.d.ts +50 -0
  867. package/dist/providers/seventeentrack/adapter.js +165 -0
  868. package/dist/providers/seventeentrack/events.d.ts +4 -0
  869. package/dist/providers/seventeentrack/events.js +56 -0
  870. package/dist/providers/shared/capture.d.ts +46 -0
  871. package/dist/providers/shared/capture.js +92 -0
  872. package/dist/providers/shared/hints.d.ts +16 -0
  873. package/dist/providers/shared/hints.js +37 -0
  874. package/dist/providers/shared/result.d.ts +15 -0
  875. package/dist/providers/shared/result.js +161 -0
  876. package/dist/providers/shared/scans.d.ts +22 -0
  877. package/dist/providers/shared/scans.js +29 -0
  878. package/dist/providers/ship24/adapter.d.ts +17 -0
  879. package/dist/providers/ship24/adapter.js +140 -0
  880. package/dist/providers/ship24/http.d.ts +7 -0
  881. package/dist/providers/ship24/http.js +75 -0
  882. package/dist/providers/types.d.ts +1 -0
  883. package/dist/providers/types.js +1 -0
  884. package/dist/providers/universal.d.ts +66 -0
  885. package/dist/providers/universal.js +95 -0
  886. package/dist/providers/upu/adapter.d.ts +5 -0
  887. package/dist/providers/upu/adapter.js +107 -0
  888. package/dist/scripts/canary-report.d.mts +22 -0
  889. package/dist/scripts/canary-report.mjs +69 -0
  890. package/dist/scripts/carrier-canary.d.ts +50 -0
  891. package/dist/scripts/carrier-canary.js +220 -0
  892. package/dist/server/index.d.ts +20 -0
  893. package/dist/server/index.js +226 -0
  894. package/dist/server/openapi.json +487 -0
  895. package/dist/server/page.d.ts +1 -0
  896. package/dist/server/page.js +33 -0
  897. package/package.json +102 -4
@@ -0,0 +1,20 @@
1
+ import type { AdapterFactory, TrackingContext } from '../../core/adapter/index.js';
2
+ import type { CarrierResult } from '../../core/result/index.js';
3
+ import type { StepRecorder } from '../../core/telemetry/index.js';
4
+ import { TrawlClient } from '../../core/transport/index.js';
5
+ export declare function normalizeAustraliaPostNumber(raw: string): string;
6
+ export declare function australiaPostTrackingUrl(raw: string): string;
7
+ export declare function australiaPostApiUrl(raw: string): string;
8
+ /** The one lookup entry and article must independently match the submitted reference. */
9
+ export declare function parse(payload: unknown, trackingNumber: string): CarrierResult;
10
+ export interface AustraliaPostTrackerOptions {
11
+ trawl: TrawlClient | null;
12
+ timeoutMs?: number;
13
+ recorder?: StepRecorder;
14
+ }
15
+ export declare class AustraliaPostTracker {
16
+ private readonly options;
17
+ constructor(options: AustraliaPostTrackerOptions);
18
+ fetch(raw: string, context?: TrackingContext): Promise<CarrierResult>;
19
+ }
20
+ export declare const adapter: AdapterFactory;
@@ -0,0 +1,175 @@
1
+ import { BudgetExceededError, ChallengeError, InputRequiredError, NotFoundError, RateLimitedError, SchemaError, TransportError, UpstreamHttpError } from '../../core/errors/index.js';
2
+ import { runSteps } from '../../core/runner/index.js';
3
+ import { explicitOffsetTime, epochMillisTime } from '../../core/time/index.js';
4
+ import { clean } from '../../core/transport/index.js';
5
+ import { isRecord } from '../../core/types.js';
6
+ import { australiaPostStatus } from './status.js';
7
+ const PROVIDER = 'Australia Post';
8
+ const DETAIL = 'https://auspost.com.au/mypost/track/details/';
9
+ const API = 'https://digitalapi.auspost.com.au/shipments-gateway/v1/watchlist/shipments';
10
+ const MAX_BYTES = 1_000_000;
11
+ const TRANSPORT_ALLOWANCE_MS = 15_000;
12
+ export function normalizeAustraliaPostNumber(raw) {
13
+ const number = raw.toUpperCase().replace(/[\s.-]/g, '');
14
+ if (!/^(?=.*\d)[A-Z0-9]{10,34}$/.test(number)) {
15
+ throw new InputRequiredError(PROVIDER, 'number', 'Australia Post requires a 10-to-34-character tracking number');
16
+ }
17
+ return number;
18
+ }
19
+ export function australiaPostTrackingUrl(raw) {
20
+ return `${DETAIL}${normalizeAustraliaPostNumber(raw)}`;
21
+ }
22
+ export function australiaPostApiUrl(raw) {
23
+ return `${API}?${new URLSearchParams({ trackingIds: normalizeAustraliaPostNumber(raw) })}`;
24
+ }
25
+ /** The one lookup entry and article must independently match the submitted reference. */
26
+ export function parse(payload, trackingNumber) {
27
+ const number = normalizeAustraliaPostNumber(trackingNumber);
28
+ if (!Array.isArray(payload) || !payload.length || payload.length > 20 || payload.some((entry) => !isRecord(entry))) {
29
+ throw new SchemaError(PROVIDER, 'Australia Post returned an invalid tracking response');
30
+ }
31
+ const entries = payload.filter(isRecord).filter((entry) => Array.isArray(entry.trackingIds) && entry.trackingIds.includes(number));
32
+ if (entries.length !== 1)
33
+ throw new SchemaError(PROVIDER, 'Australia Post returned a different or ambiguous lookup');
34
+ const entry = entries[0];
35
+ if (entry.status === 400 && isRecord(entry.error) && entry.error.errorCode === 21
36
+ && entry.error.error === 'Invalid Tracking ID' && entry.error.status === 'Failed'
37
+ && entry.shipment === undefined)
38
+ throw new NotFoundError(PROVIDER);
39
+ if (entry.status !== 200 || !isRecord(entry.shipment) || entry.shipment.status !== 'Success') {
40
+ throw new SchemaError(PROVIDER, 'Australia Post could not confirm the shipment');
41
+ }
42
+ const shipment = entry.shipment;
43
+ if (typeof shipment.consignmentId !== 'string' || !shipment.consignmentId
44
+ || !Array.isArray(shipment.articles) || !shipment.articles.length || shipment.articles.length > 100
45
+ || shipment.articles.some((article) => !isRecord(article))) {
46
+ throw new SchemaError(PROVIDER, 'Australia Post returned invalid articles');
47
+ }
48
+ const articles = shipment.articles.filter(isRecord);
49
+ const matches = articles.filter((article) => article.articleId === number);
50
+ // A consignment can contain several independent deliveries. Only an exact
51
+ // article or a verified single-article consignment can produce one result.
52
+ const selected = matches.length === 1 ? matches[0]
53
+ : matches.length === 0 && shipment.consignmentId === number && articles.length === 1
54
+ ? articles[0] : null;
55
+ if (!selected)
56
+ throw new SchemaError(PROVIDER, 'Australia Post returned a different or ambiguous article');
57
+ if (typeof selected.articleId !== 'string' || !selected.articleId || !Array.isArray(selected.details)
58
+ || selected.details.length !== 1 || !isRecord(selected.details[0])) {
59
+ throw new SchemaError(PROVIDER, 'Australia Post returned invalid article details');
60
+ }
61
+ const details = selected.details[0];
62
+ if (details.articleId !== selected.articleId || details.consignmentId !== shipment.consignmentId) {
63
+ throw new SchemaError(PROVIDER, 'Australia Post returned mismatched article details');
64
+ }
65
+ if (!Array.isArray(details.events) || !details.events.length || details.events.length > 500) {
66
+ throw new SchemaError(PROVIDER, 'Australia Post returned incomplete tracking history');
67
+ }
68
+ const events = [];
69
+ const seen = new Set();
70
+ for (const raw of details.events) {
71
+ if (!isRecord(raw))
72
+ throw new SchemaError(PROVIDER, 'Australia Post returned an invalid event');
73
+ const offset = explicitOffsetTime(raw.localeDateTime);
74
+ const epoch = typeof raw.dateTime === 'number' && Number.isSafeInteger(raw.dateTime) && raw.dateTime > 100_000_000_000
75
+ ? epochMillisTime(raw.dateTime) : null;
76
+ if (offset && epoch && offset.timestamp !== epoch.timestamp)
77
+ throw new SchemaError(PROVIDER, 'Australia Post returned conflicting event dates');
78
+ const at = offset ?? epoch;
79
+ if (!at)
80
+ throw new SchemaError(PROVIDER, 'Australia Post returned an invalid event date');
81
+ const code = clean(raw.eventCode, 64);
82
+ const description = clean(raw.description);
83
+ const location = clean(raw.location, 200);
84
+ if (!description)
85
+ throw new SchemaError(PROVIDER, 'Australia Post returned an empty event');
86
+ const classified = australiaPostStatus(clean(raw.milestone), code);
87
+ const event = { time: at.iso,
88
+ description: classified?.stage === 'delivered' ? 'Delivered' : description,
89
+ ...(location ? { location } : {}), ...(classified ? { stage: classified.stage } : {}),
90
+ ...(/^[A-Z0-9_-]{1,64}$/.test(code) ? { provider_code: code } : {}),
91
+ };
92
+ const key = JSON.stringify([at.timestamp, event.description, location, code]);
93
+ if (seen.has(key))
94
+ continue;
95
+ seen.add(key);
96
+ events.push({ event, timestamp: at.timestamp });
97
+ }
98
+ events.sort((a, b) => b.timestamp - a.timestamp);
99
+ const summary = clean(selected.trackStatusOfArticle)
100
+ || (isRecord(selected.status) ? clean(selected.status.statusAttributeValue) : '');
101
+ if (!summary)
102
+ throw new SchemaError(PROVIDER, 'Australia Post returned no article status');
103
+ const status = australiaPostStatus(summary);
104
+ const deliveredAt = status?.status === 'delivered' ? events.find(({ event }) => event.stage === 'delivered')?.event.time : null;
105
+ // Summary modification/milestone timestamps are not scan times. In the
106
+ // observed reply they differed from the delivery event by about ten hours.
107
+ return {
108
+ status: status?.status ?? 'unknown', ...(status ? { current_stage: status.stage } : {}),
109
+ last_status_text: status?.status === 'delivered' ? 'Delivered' : summary,
110
+ last_update: events[0].event.time, expected_delivery: null,
111
+ ...(deliveredAt ? { delivered_at: deliveredAt } : {}), events: events.slice(0, 100).map(({ event }) => event),
112
+ };
113
+ }
114
+ export class AustraliaPostTracker {
115
+ options;
116
+ constructor(options) {
117
+ this.options = options;
118
+ }
119
+ async fetch(raw, context = {}) {
120
+ const number = normalizeAustraliaPostNumber(raw);
121
+ const budgetMs = context.budgetMs ?? this.options.timeoutMs ?? 45_000;
122
+ if (!Number.isFinite(budgetMs) || budgetMs <= 0 || budgetMs > 60_000)
123
+ throw new TypeError('Australia Post budget must be between 1 and 60000 ms');
124
+ context.signal?.throwIfAborted();
125
+ if (budgetMs <= TRANSPORT_ALLOWANCE_MS)
126
+ throw new BudgetExceededError(PROVIDER, budgetMs);
127
+ const trawl = this.options.trawl;
128
+ if (!trawl)
129
+ throw new ChallengeError(PROVIDER, 'Australia Post requires the browser tracking service');
130
+ return runSteps({ carrier: 'australia-post', budgetMs, signal: context.signal, recorder: this.options.recorder }, [{
131
+ id: 'trawl', run: async ({ signal, remainingMs }) => {
132
+ const timeoutMs = Math.floor(remainingMs - TRANSPORT_ALLOWANCE_MS);
133
+ if (timeoutMs < 1)
134
+ throw new BudgetExceededError(PROVIDER, budgetMs);
135
+ const apiUrl = australiaPostApiUrl(number);
136
+ const page = await trawl.scrape({ url: australiaPostTrackingUrl(number), skipHttp: true, maxTier: 3,
137
+ maxTimeout: timeoutMs, captureResponses: [apiUrl], settleTimeout: Math.min(timeoutMs, 10_000),
138
+ }, { provider: 'TRAWL while fetching Australia Post', timeoutMs, signal, maxBytes: 6_000_000, requireSolved: false });
139
+ signal.throwIfAborted();
140
+ if (![2, 3].includes(page.tier) || ![200, 304].includes(page.statusCode)) {
141
+ throw new TransportError(PROVIDER, 'The browser service did not load Australia Post tracking');
142
+ }
143
+ const captures = page.capturedResponses.filter((capture) => capture.url === apiUrl && capture.status !== 204);
144
+ if (!captures.length || captures.length > 20)
145
+ throw new TransportError(PROVIDER, 'Australia Post returned no matching browser response');
146
+ const capture = captures[captures.length - 1];
147
+ if (capture.status === 429) {
148
+ const retry = capture.headers['retry-after'];
149
+ throw new RateLimitedError(PROVIDER, retry && /^\d+$/.test(retry) ? Number(retry) * 1000 : undefined);
150
+ }
151
+ if ([401, 403].includes(capture.status))
152
+ throw new ChallengeError(PROVIDER);
153
+ if (capture.status >= 400)
154
+ throw new UpstreamHttpError(PROVIDER, capture.status);
155
+ if (capture.status !== 200 || capture.error || capture.truncated || capture.base64Encoded || capture.body === null) {
156
+ throw new TransportError(PROVIDER, 'Australia Post returned an incomplete browser response');
157
+ }
158
+ if (Buffer.byteLength(capture.body, 'utf8') > MAX_BYTES)
159
+ throw new SchemaError(PROVIDER, 'Australia Post returned an unexpectedly large response');
160
+ let payload;
161
+ try {
162
+ payload = JSON.parse(capture.body);
163
+ }
164
+ catch {
165
+ throw new SchemaError(PROVIDER, 'Australia Post returned invalid tracking JSON');
166
+ }
167
+ return parse(payload, number);
168
+ },
169
+ }]);
170
+ }
171
+ }
172
+ export const adapter = (environment) => {
173
+ const tracker = new AustraliaPostTracker({ trawl: environment.trawl, recorder: environment.recorder });
174
+ return { id: 'australia-post', recordsSteps: true, steps: ['trawl'], track: (input, context) => tracker.fetch(input.number, context) };
175
+ };
@@ -0,0 +1,72 @@
1
+ {
2
+ "id": "australia-post",
3
+ "displayName": "Australia Post",
4
+ "aliases": [],
5
+ "region": {
6
+ "countries": [
7
+ "AU"
8
+ ]
9
+ },
10
+ "brand": {
11
+ "color": "#dc1928"
12
+ },
13
+ "selectable": true,
14
+ "timezone": "UTC",
15
+ "tracking": {
16
+ "mode": "automatic",
17
+ "adapter": "australia-post",
18
+ "steps": [
19
+ "trawl"
20
+ ]
21
+ },
22
+ "capabilities": [
23
+ "history",
24
+ "location",
25
+ "provider_code",
26
+ "delivered_at"
27
+ ],
28
+ "portal": {
29
+ "url": "https://auspost.com.au/mypost/track/details/{trackingNumber}",
30
+ "canaryUrl": "https://auspost.com.au/mypost/track/",
31
+ "shows": [
32
+ "status",
33
+ "history",
34
+ "location",
35
+ "provider_code",
36
+ "delivered_at",
37
+ "recipient_name",
38
+ "address",
39
+ "delivery_proof"
40
+ ],
41
+ "scraped": [
42
+ "status",
43
+ "history",
44
+ "location",
45
+ "provider_code",
46
+ "delivered_at"
47
+ ],
48
+ "discarded": [
49
+ "recipient_name",
50
+ "address",
51
+ "delivery_proof"
52
+ ],
53
+ "unavailable": []
54
+ },
55
+ "links": [
56
+ {
57
+ "domains": [
58
+ "auspost.com.au"
59
+ ],
60
+ "params": [
61
+ "id"
62
+ ]
63
+ },
64
+ {
65
+ "domains": [
66
+ "auspost.com.au"
67
+ ],
68
+ "path": "^/mypost/track/details/([^/?#]+)/?$"
69
+ }
70
+ ],
71
+ "detection": []
72
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "carrier": "australia-post",
3
+ "records": [
4
+ {
5
+ "number": "7T2514965601000935102",
6
+ "role": "shipment",
7
+ "evidence": "public_shipment_report",
8
+ "source": {
9
+ "url": "https://ie.trustpilot.com/reviews/6a90f17ecd0f0d3f7a9afab5",
10
+ "date": "2026-09-20"
11
+ },
12
+ "expect": {
13
+ "carrier": "unknown",
14
+ "confidence": "none"
15
+ },
16
+ "note": "Publicly reported shipment number; the attribution was not independently verified. Quoted in a merchant's reply. The source attributes it to Australia Post; no rule matches this shape."
17
+ },
18
+ {
19
+ "number": "0301006785462006320995",
20
+ "role": "quarantined",
21
+ "evidence": "open_source_example",
22
+ "source": {
23
+ "url": "https://github.com/clooney/australia-post-tracking-api/blob/master/australia-post-tracking-api-python.md"
24
+ },
25
+ "quarantine": true,
26
+ "expect": {
27
+ "carrier": "unknown",
28
+ "confidence": "low",
29
+ "candidates": [
30
+ "austrian-post",
31
+ "usps",
32
+ "estafeta"
33
+ ]
34
+ },
35
+ "note": "Open-source project example, not a real shipment. The source attributes it to Australia Post, which no rule claims."
36
+ },
37
+ {
38
+ "number": "LH290032509AU",
39
+ "role": "quarantined",
40
+ "evidence": "open_source_example",
41
+ "source": {
42
+ "url": "https://github.com/clooney/australia-post-tracking-api/blob/master/australia-post-tracking-api-python.md"
43
+ },
44
+ "quarantine": true,
45
+ "expect": {
46
+ "carrier": "intl-post",
47
+ "confidence": "high"
48
+ },
49
+ "note": "Open-source project example, not a real shipment. The source attributes it to Australia Post; detection falls back to the generic postal rule."
50
+ },
51
+ {
52
+ "number": "LK201223662AU",
53
+ "role": "quarantined",
54
+ "evidence": "open_source_example",
55
+ "source": {
56
+ "url": "https://github.com/clooney/australia-post-tracking-api/blob/master/australia-post-tracking-api-python.md"
57
+ },
58
+ "quarantine": true,
59
+ "expect": {
60
+ "carrier": "intl-post",
61
+ "confidence": "high"
62
+ },
63
+ "note": "Open-source project example, not a real shipment. The source attributes it to Australia Post; detection falls back to the generic postal rule."
64
+ }
65
+ ]
66
+ }
@@ -0,0 +1,2 @@
1
+ import type { ClassifiedStatus } from '../../core/status/index.js';
2
+ export declare function australiaPostStatus(label: string, code?: string): ClassifiedStatus | undefined;
@@ -0,0 +1,34 @@
1
+ // Event codes and milestone labels consumed by the public tracking application.
2
+ // statuses.json distinguishes live vocabulary from synthetic status boundaries.
3
+ const CODES = {
4
+ 'DD-ER15': { stage: 'delivered', status: 'delivered' },
5
+ 'AFP-ER13': { stage: 'out_for_delivery', status: 'out_for_delivery' },
6
+ 'TTP-ER81': { stage: 'in_transit', status: 'in_transit' },
7
+ 'AFP-ER37': { stage: 'in_transit', status: 'in_transit' },
8
+ 'NSS-ER42': { stage: 'in_transit', status: 'in_transit' },
9
+ 'AFC-ER36': { stage: 'accepted', status: 'in_transit' },
10
+ 'ADMIN-ER40': { stage: 'registered', status: 'pending' },
11
+ 'ADMIN-ER39': { stage: 'registered', status: 'pending' },
12
+ 'CE-SR05': { stage: 'registered', status: 'pending' },
13
+ };
14
+ const LABELS = {
15
+ 'delivered': { stage: 'delivered', status: 'delivered' },
16
+ "it's coming today": { stage: 'out_for_delivery', status: 'out_for_delivery' },
17
+ 'onboard for delivery': { stage: 'out_for_delivery', status: 'out_for_delivery' },
18
+ 'out for delivery': { stage: 'out_for_delivery', status: 'out_for_delivery' },
19
+ "it's on its way": { stage: 'in_transit', status: 'in_transit' },
20
+ 'in transit': { stage: 'in_transit', status: 'in_transit' },
21
+ "we've got it": { stage: 'accepted', status: 'in_transit' },
22
+ 'label created by sender': { stage: 'registered', status: 'pending' },
23
+ 'awaiting collection': { stage: 'ready_for_pickup', status: 'in_transit' },
24
+ 'attempted delivery': { stage: 'failed_attempt', status: 'exception' },
25
+ 'delayed': { stage: 'exception', status: 'exception' },
26
+ 'return to sender': { stage: 'returned', status: 'exception' },
27
+ 'returned to sender': { stage: 'returned', status: 'exception' },
28
+ };
29
+ export function australiaPostStatus(label, code) {
30
+ if (code && Object.hasOwn(CODES, code))
31
+ return CODES[code];
32
+ const key = label.trim().toLowerCase().replace(/’/g, "'");
33
+ return Object.hasOwn(LABELS, key) ? LABELS[key] : undefined;
34
+ }
@@ -0,0 +1,172 @@
1
+ {
2
+ "carrier": "australia-post",
3
+ "entries": [
4
+ {
5
+ "code": "DD-ER15",
6
+ "stage": "delivered",
7
+ "confirmedBy": "live",
8
+ "firstSeen": "2026-09-26",
9
+ "note": "Observed public shipment-gateway event code."
10
+ },
11
+ {
12
+ "code": "AFP-ER13",
13
+ "stage": "out_for_delivery",
14
+ "confirmedBy": "live",
15
+ "firstSeen": "2026-09-26",
16
+ "note": "Observed public shipment-gateway event code."
17
+ },
18
+ {
19
+ "code": "TTP-ER81",
20
+ "stage": "in_transit",
21
+ "confirmedBy": "live",
22
+ "firstSeen": "2026-09-26",
23
+ "note": "Observed public shipment-gateway event code."
24
+ },
25
+ {
26
+ "code": "AFP-ER37",
27
+ "stage": "in_transit",
28
+ "confirmedBy": "live",
29
+ "firstSeen": "2026-09-26",
30
+ "note": "Observed public shipment-gateway event code."
31
+ },
32
+ {
33
+ "code": "NSS-ER42",
34
+ "stage": "in_transit",
35
+ "confirmedBy": "live",
36
+ "firstSeen": "2026-09-26",
37
+ "note": "Observed public shipment-gateway event code."
38
+ },
39
+ {
40
+ "code": "AFC-ER36",
41
+ "stage": "accepted",
42
+ "confirmedBy": "live",
43
+ "firstSeen": "2026-09-26",
44
+ "note": "Observed public shipment-gateway event code."
45
+ },
46
+ {
47
+ "code": "ADMIN-ER40",
48
+ "stage": "registered",
49
+ "confirmedBy": "live",
50
+ "firstSeen": "2026-09-26",
51
+ "note": "Observed public shipment-gateway event code."
52
+ },
53
+ {
54
+ "code": "ADMIN-ER39",
55
+ "stage": "registered",
56
+ "confirmedBy": "live",
57
+ "firstSeen": "2026-09-26",
58
+ "note": "Observed public shipment-gateway event code."
59
+ },
60
+ {
61
+ "code": "CE-SR05",
62
+ "stage": "registered",
63
+ "confirmedBy": "live",
64
+ "firstSeen": "2026-09-26",
65
+ "note": "Observed public shipment-gateway event code."
66
+ },
67
+ {
68
+ "wording": "Delivered",
69
+ "language": "en",
70
+ "stage": "delivered",
71
+ "confirmedBy": "live",
72
+ "firstSeen": "2026-09-26",
73
+ "note": "Exact public article milestone or event wording."
74
+ },
75
+ {
76
+ "wording": "It's coming today",
77
+ "language": "en",
78
+ "stage": "out_for_delivery",
79
+ "confirmedBy": "live",
80
+ "firstSeen": "2026-09-26",
81
+ "note": "Exact public article milestone or event wording."
82
+ },
83
+ {
84
+ "wording": "It's on its way",
85
+ "language": "en",
86
+ "stage": "in_transit",
87
+ "confirmedBy": "live",
88
+ "firstSeen": "2026-09-26",
89
+ "note": "Exact public article milestone or event wording."
90
+ },
91
+ {
92
+ "wording": "We've got it",
93
+ "language": "en",
94
+ "stage": "accepted",
95
+ "confirmedBy": "live",
96
+ "firstSeen": "2026-09-26",
97
+ "note": "Exact public article milestone or event wording."
98
+ },
99
+ {
100
+ "wording": "Label created by sender",
101
+ "language": "en",
102
+ "stage": "registered",
103
+ "confirmedBy": "live",
104
+ "firstSeen": "2026-09-26",
105
+ "note": "Exact public article milestone or event wording."
106
+ },
107
+ {
108
+ "wording": "Onboard for delivery",
109
+ "language": "en",
110
+ "stage": "out_for_delivery",
111
+ "confirmedBy": "live",
112
+ "firstSeen": "2026-09-26",
113
+ "note": "Exact public article milestone or event wording."
114
+ },
115
+ {
116
+ "wording": "Out for delivery",
117
+ "language": "en",
118
+ "stage": "out_for_delivery",
119
+ "confirmedBy": "fixture",
120
+ "firstSeen": "2026-09-26",
121
+ "note": "Synthetic semantic boundary; not observed in the live reference."
122
+ },
123
+ {
124
+ "wording": "In transit",
125
+ "language": "en",
126
+ "stage": "in_transit",
127
+ "confirmedBy": "fixture",
128
+ "firstSeen": "2026-09-26",
129
+ "note": "Synthetic semantic boundary; not observed in the live reference."
130
+ },
131
+ {
132
+ "wording": "Awaiting collection",
133
+ "language": "en",
134
+ "stage": "ready_for_pickup",
135
+ "confirmedBy": "fixture",
136
+ "firstSeen": "2026-09-26",
137
+ "note": "Synthetic semantic boundary; not observed in the live reference."
138
+ },
139
+ {
140
+ "wording": "Attempted delivery",
141
+ "language": "en",
142
+ "stage": "failed_attempt",
143
+ "confirmedBy": "fixture",
144
+ "firstSeen": "2026-09-26",
145
+ "note": "Synthetic semantic boundary; not observed in the live reference."
146
+ },
147
+ {
148
+ "wording": "Delayed",
149
+ "language": "en",
150
+ "stage": "exception",
151
+ "confirmedBy": "fixture",
152
+ "firstSeen": "2026-09-26",
153
+ "note": "Synthetic semantic boundary; not observed in the live reference."
154
+ },
155
+ {
156
+ "wording": "Return to sender",
157
+ "language": "en",
158
+ "stage": "returned",
159
+ "confirmedBy": "fixture",
160
+ "firstSeen": "2026-09-26",
161
+ "note": "Synthetic semantic boundary; not observed in the live reference."
162
+ },
163
+ {
164
+ "wording": "Returned to sender",
165
+ "language": "en",
166
+ "stage": "returned",
167
+ "confirmedBy": "fixture",
168
+ "firstSeen": "2026-09-26",
169
+ "note": "Synthetic semantic boundary; not observed in the live reference."
170
+ }
171
+ ]
172
+ }
@@ -0,0 +1,13 @@
1
+ import { type AdapterFactory, type TrackingContext } from '../../core/adapter/index.js';
2
+ import type { CarrierResult } from '../../core/result/index.js';
3
+ export declare function normalizeAustrianPostNumber(raw: string): string;
4
+ export declare function parseAustrianPostResponse(payload: unknown, rawNumber: string): CarrierResult;
5
+ export declare class AustrianPostTracker {
6
+ private readonly options;
7
+ constructor(options?: {
8
+ fetcher?: typeof fetch;
9
+ timeoutMs?: number;
10
+ });
11
+ fetch(rawNumber: string, context?: TrackingContext): Promise<CarrierResult>;
12
+ }
13
+ export declare const adapter: AdapterFactory;
@@ -0,0 +1,101 @@
1
+ import { accepted, recognizeFromLookup } from '../../core/adapter/index.js';
2
+ import { isValidS10TrackingNumber, normalizeTrackingNumber } from '../../core/detection/index.js';
3
+ import { IndeterminateError, NotFoundError, SchemaError, TransportError, UpstreamHttpError } from '../../core/errors/index.js';
4
+ import { explicitOffsetTime } from '../../core/time/index.js';
5
+ import { clean, fetchBounded, parseJsonBytes } from '../../core/transport/index.js';
6
+ import { isRecord } from '../../core/types.js';
7
+ import { austrianPostEventStatus, austrianPostSummaryStatus } from './status.js';
8
+ const PROVIDER = 'Austrian Post';
9
+ // Published in the official tracking form's data-sendungsapiurlpublic attribute;
10
+ // the official client calls this read without the optional account token.
11
+ const ENDPOINT = 'https://api.post.at/sendungen/sv/graphqlPublic';
12
+ export function normalizeAustrianPostNumber(raw) {
13
+ const number = normalizeTrackingNumber(raw);
14
+ if (!/^\d{22}$/.test(number) && !(/^[A-Z]{2}\d{9}AT$/.test(number) && isValidS10TrackingNumber(number))) {
15
+ throw new TypeError('Austrian Post requires a 22-digit or valid AT postal identifier');
16
+ }
17
+ return number;
18
+ }
19
+ export function parseAustrianPostResponse(payload, rawNumber) {
20
+ const number = normalizeAustrianPostNumber(rawNumber);
21
+ if (!isRecord(payload))
22
+ throw new SchemaError(PROVIDER);
23
+ if (Array.isArray(payload.errors) && payload.errors.length)
24
+ throw new IndeterminateError(PROVIDER, 'Austrian Post could not complete its tracking query');
25
+ if (!isRecord(payload.data) || !Object.hasOwn(payload.data, 'einzelsendung'))
26
+ throw new SchemaError(PROVIDER);
27
+ const parcel = payload.data.einzelsendung;
28
+ // This is the official client's positive not-found signature.
29
+ if (parcel === null)
30
+ throw new NotFoundError(PROVIDER);
31
+ if (!isRecord(parcel) || clean(parcel.sendungsnummer, 64) !== number)
32
+ throw new SchemaError(PROVIDER, 'Austrian Post returned a different shipment');
33
+ if (!Array.isArray(parcel.sendungsEvents) || parcel.sendungsEvents.length > 500)
34
+ throw new SchemaError(PROVIDER, 'Austrian Post returned invalid tracking history');
35
+ const parsed = [];
36
+ const seen = new Set();
37
+ parcel.sendungsEvents.forEach((raw, index) => {
38
+ if (!isRecord(raw))
39
+ throw new SchemaError(PROVIDER, 'Austrian Post returned an invalid scan');
40
+ const time = explicitOffsetTime(raw.timestamp);
41
+ const description = clean(raw.trackingDesc, 500);
42
+ if (!time || !description)
43
+ throw new SchemaError(PROVIDER, 'Austrian Post returned an incomplete scan');
44
+ const location = clean(raw.eventPlaceName, 200);
45
+ const mapped = austrianPostEventStatus(clean(raw.status, 32), clean(raw.reasontypecode, 32), description);
46
+ const key = JSON.stringify([time.iso, location, description]);
47
+ if (seen.has(key))
48
+ return;
49
+ seen.add(key);
50
+ parsed.push({ event: { time: time.iso, description, ...(location ? { location } : {}), ...(mapped ? { stage: mapped.stage } : {}) }, timestamp: time.timestamp, index });
51
+ });
52
+ parsed.sort((a, b) => b.timestamp - a.timestamp || b.index - a.index);
53
+ const events = parsed.slice(0, 100).map(({ event }) => event);
54
+ const mapped = austrianPostSummaryStatus(clean(parcel.status, 32));
55
+ if (!events.length)
56
+ throw new IndeterminateError(PROVIDER, 'Austrian Post returned a shipment without tracking history');
57
+ const weight = typeof parcel.weight === 'number' && Number.isFinite(parcel.weight) && parcel.weight > 0 ? parcel.weight : null;
58
+ return {
59
+ status: mapped?.status ?? 'unknown', ...(mapped ? { current_stage: mapped.stage } : {}),
60
+ last_status_text: events[0].description, last_update: events[0].time, expected_delivery: null,
61
+ ...(weight === null ? {} : { weight_kg: weight }), events,
62
+ };
63
+ }
64
+ export class AustrianPostTracker {
65
+ options;
66
+ constructor(options = {}) {
67
+ this.options = options;
68
+ }
69
+ async fetch(rawNumber, context = {}) {
70
+ const number = normalizeAustrianPostNumber(rawNumber);
71
+ const budgetMs = context.budgetMs ?? this.options.timeoutMs ?? 15_000;
72
+ if (!Number.isFinite(budgetMs) || budgetMs <= 0)
73
+ throw new TypeError('Austrian Post timeout must be positive');
74
+ context.signal?.throwIfAborted();
75
+ const query = `query { einzelsendung(sendungsnummer: "${number}") { sendungsnummer status weight sendungsEvents { timestamp status reasontypecode trackingDesc eventPlaceName } } }`;
76
+ try {
77
+ const { bytes } = await fetchBounded(ENDPOINT, {
78
+ method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ query }),
79
+ }, {
80
+ provider: PROVIDER, maxBytes: 1_000_000, timeoutMs: Math.max(1, Math.floor(budgetMs)),
81
+ fetcher: (input, init) => (this.options.fetcher ?? fetch)(input, {
82
+ ...init, signal: AbortSignal.any([...(context.signal ? [context.signal] : []), ...(init?.signal ? [init.signal] : [])]),
83
+ }),
84
+ });
85
+ context.signal?.throwIfAborted();
86
+ return parseAustrianPostResponse(parseJsonBytes(bytes, PROVIDER), number);
87
+ }
88
+ catch (error) {
89
+ if (error instanceof UpstreamHttpError && [404, 410].includes(error.status))
90
+ throw new TransportError(PROVIDER, 'Austrian Post tracking endpoint is unavailable', { cause: error });
91
+ throw error;
92
+ }
93
+ }
94
+ }
95
+ export const adapter = (environment) => {
96
+ const tracker = new AustrianPostTracker({ fetcher: environment.fetcher });
97
+ return {
98
+ id: 'austrian-post', steps: ['direct'], track: (input, context) => tracker.fetch(input.number, context),
99
+ recognize: (number, context) => recognizeFromLookup(() => tracker.fetch(number, context), () => accepted(() => normalizeAustrianPostNumber(number))),
100
+ };
101
+ };