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.
- package/LICENSE +201 -0
- package/NOTICE +15 -0
- package/README.md +123 -2
- package/data/carrier-order.json +107 -0
- package/data/carrier.schema.json +415 -0
- package/data/catalog.json +3969 -0
- package/data/coverage-summary.json +17 -0
- package/data/detection-golden.json +5375 -0
- package/data/stages.json +13 -0
- package/dist/browser/scraper.js +9292 -0
- package/dist/carriers/aliexpress/adapter.d.ts +30 -0
- package/dist/carriers/aliexpress/adapter.js +164 -0
- package/dist/carriers/aliexpress/carrier.json +59 -0
- package/dist/carriers/aliexpress/numbers.json +36 -0
- package/dist/carriers/aliexpress/status.d.ts +31 -0
- package/dist/carriers/aliexpress/status.js +79 -0
- package/dist/carriers/aliexpress/statuses.json +355 -0
- package/dist/carriers/amazon-logistics/carrier.json +94 -0
- package/dist/carriers/amazon-logistics/numbers.json +307 -0
- package/dist/carriers/amazon-shipping/adapter.d.ts +34 -0
- package/dist/carriers/amazon-shipping/adapter.js +292 -0
- package/dist/carriers/amazon-shipping/carrier.json +96 -0
- package/dist/carriers/amazon-shipping/eligibility.d.ts +3 -0
- package/dist/carriers/amazon-shipping/eligibility.js +16 -0
- package/dist/carriers/amazon-shipping/numbers.json +67 -0
- package/dist/carriers/amazon-shipping/status.d.ts +26 -0
- package/dist/carriers/amazon-shipping/status.js +118 -0
- package/dist/carriers/amazon-shipping/statuses.json +19 -0
- package/dist/carriers/an-post/carrier.json +38 -0
- package/dist/carriers/an-post/numbers.json +33 -0
- package/dist/carriers/aramex/adapter.d.ts +11 -0
- package/dist/carriers/aramex/adapter.js +49 -0
- package/dist/carriers/aramex/carrier.json +62 -0
- package/dist/carriers/aramex/numbers.json +71 -0
- package/dist/carriers/aramex/parser.d.ts +5 -0
- package/dist/carriers/aramex/parser.js +83 -0
- package/dist/carriers/aramex/status.d.ts +2 -0
- package/dist/carriers/aramex/status.js +16 -0
- package/dist/carriers/aramex/statuses.json +41 -0
- package/dist/carriers/asendia/adapter.d.ts +82 -0
- package/dist/carriers/asendia/adapter.js +342 -0
- package/dist/carriers/asendia/carrier.json +91 -0
- package/dist/carriers/asendia/numbers.json +177 -0
- package/dist/carriers/asendia/probe.d.ts +31 -0
- package/dist/carriers/asendia/probe.js +355 -0
- package/dist/carriers/asendia/status.d.ts +41 -0
- package/dist/carriers/asendia/status.js +147 -0
- package/dist/carriers/asendia/statuses.json +877 -0
- package/dist/carriers/australia-post/adapter.d.ts +20 -0
- package/dist/carriers/australia-post/adapter.js +175 -0
- package/dist/carriers/australia-post/carrier.json +72 -0
- package/dist/carriers/australia-post/numbers.json +66 -0
- package/dist/carriers/australia-post/status.d.ts +2 -0
- package/dist/carriers/australia-post/status.js +34 -0
- package/dist/carriers/australia-post/statuses.json +172 -0
- package/dist/carriers/austrian-post/adapter.d.ts +13 -0
- package/dist/carriers/austrian-post/adapter.js +101 -0
- package/dist/carriers/austrian-post/carrier.json +58 -0
- package/dist/carriers/austrian-post/numbers.json +73 -0
- package/dist/carriers/austrian-post/status.d.ts +3 -0
- package/dist/carriers/austrian-post/status.js +30 -0
- package/dist/carriers/austrian-post/statuses.json +47 -0
- package/dist/carriers/blue-dart/adapter.d.ts +11 -0
- package/dist/carriers/blue-dart/adapter.js +34 -0
- package/dist/carriers/blue-dart/carrier.json +59 -0
- package/dist/carriers/blue-dart/numbers.json +113 -0
- package/dist/carriers/blue-dart/parser.d.ts +3 -0
- package/dist/carriers/blue-dart/parser.js +75 -0
- package/dist/carriers/blue-dart/status.d.ts +2 -0
- package/dist/carriers/blue-dart/status.js +14 -0
- package/dist/carriers/blue-dart/statuses.json +59 -0
- package/dist/carriers/bpost/adapter.d.ts +11 -0
- package/dist/carriers/bpost/adapter.js +46 -0
- package/dist/carriers/bpost/carrier.json +81 -0
- package/dist/carriers/bpost/numbers.json +103 -0
- package/dist/carriers/bpost/parser.d.ts +3 -0
- package/dist/carriers/bpost/parser.js +84 -0
- package/dist/carriers/bpost/status.d.ts +2 -0
- package/dist/carriers/bpost/status.js +18 -0
- package/dist/carriers/bpost/statuses.json +96 -0
- package/dist/carriers/bring-posten/adapter.d.ts +11 -0
- package/dist/carriers/bring-posten/adapter.js +35 -0
- package/dist/carriers/bring-posten/carrier.json +91 -0
- package/dist/carriers/bring-posten/numbers.json +33 -0
- package/dist/carriers/bring-posten/parser.d.ts +3 -0
- package/dist/carriers/bring-posten/parser.js +95 -0
- package/dist/carriers/bring-posten/status.d.ts +3 -0
- package/dist/carriers/bring-posten/status.js +23 -0
- package/dist/carriers/bring-posten/statuses.json +33 -0
- package/dist/carriers/brt/adapter.d.ts +11 -0
- package/dist/carriers/brt/adapter.js +36 -0
- package/dist/carriers/brt/carrier.json +80 -0
- package/dist/carriers/brt/numbers.json +91 -0
- package/dist/carriers/brt/parser.d.ts +3 -0
- package/dist/carriers/brt/parser.js +84 -0
- package/dist/carriers/brt/status.d.ts +2 -0
- package/dist/carriers/brt/status.js +14 -0
- package/dist/carriers/brt/statuses.json +53 -0
- package/dist/carriers/c-chez-vous/adapter.d.ts +31 -0
- package/dist/carriers/c-chez-vous/adapter.js +181 -0
- package/dist/carriers/c-chez-vous/carrier.json +69 -0
- package/dist/carriers/c-chez-vous/numbers.json +31 -0
- package/dist/carriers/c-chez-vous/status.d.ts +27 -0
- package/dist/carriers/c-chez-vous/status.js +19 -0
- package/dist/carriers/c-chez-vous/statuses.json +10 -0
- package/dist/carriers/canada-post/adapter.d.ts +40 -0
- package/dist/carriers/canada-post/adapter.js +78 -0
- package/dist/carriers/canada-post/carrier.json +77 -0
- package/dist/carriers/canada-post/numbers.json +81 -0
- package/dist/carriers/canada-post/parser.d.ts +5 -0
- package/dist/carriers/canada-post/parser.js +202 -0
- package/dist/carriers/canada-post/status.d.ts +9 -0
- package/dist/carriers/canada-post/status.js +67 -0
- package/dist/carriers/canada-post/statuses.json +171 -0
- package/dist/carriers/canpar/adapter.d.ts +11 -0
- package/dist/carriers/canpar/adapter.js +40 -0
- package/dist/carriers/canpar/carrier.json +74 -0
- package/dist/carriers/canpar/numbers.json +71 -0
- package/dist/carriers/canpar/parser.d.ts +3 -0
- package/dist/carriers/canpar/parser.js +75 -0
- package/dist/carriers/canpar/status.d.ts +2 -0
- package/dist/carriers/canpar/status.js +16 -0
- package/dist/carriers/canpar/statuses.json +82 -0
- package/dist/carriers/china-post/carrier.json +38 -0
- package/dist/carriers/china-post/numbers.json +59 -0
- package/dist/carriers/chronopost/carrier.json +84 -0
- package/dist/carriers/chronopost/numbers.json +110 -0
- package/dist/carriers/chronopost/statuses.json +47 -0
- package/dist/carriers/ciblex/adapter.d.ts +17 -0
- package/dist/carriers/ciblex/adapter.js +46 -0
- package/dist/carriers/ciblex/carrier.json +71 -0
- package/dist/carriers/ciblex/numbers.json +63 -0
- package/dist/carriers/ciblex/parser.d.ts +4 -0
- package/dist/carriers/ciblex/parser.js +100 -0
- package/dist/carriers/ciblex/status.d.ts +24 -0
- package/dist/carriers/ciblex/status.js +55 -0
- package/dist/carriers/ciblex/statuses.json +221 -0
- package/dist/carriers/colis-prive/adapter.d.ts +39 -0
- package/dist/carriers/colis-prive/adapter.js +0 -0
- package/dist/carriers/colis-prive/carrier.json +72 -0
- package/dist/carriers/colis-prive/numbers.json +97 -0
- package/dist/carriers/colis-prive/status.d.ts +30 -0
- package/dist/carriers/colis-prive/status.js +85 -0
- package/dist/carriers/colis-prive/statuses.json +39 -0
- package/dist/carriers/colisweb/adapter.d.ts +29 -0
- package/dist/carriers/colisweb/adapter.js +166 -0
- package/dist/carriers/colisweb/carrier.json +63 -0
- package/dist/carriers/colisweb/numbers.json +39 -0
- package/dist/carriers/colisweb/status.d.ts +32 -0
- package/dist/carriers/colisweb/status.js +61 -0
- package/dist/carriers/colisweb/statuses.json +25 -0
- package/dist/carriers/correios-br/adapter.d.ts +16 -0
- package/dist/carriers/correios-br/adapter.js +78 -0
- package/dist/carriers/correios-br/carrier.json +64 -0
- package/dist/carriers/correios-br/model/LICENSE +21 -0
- package/dist/carriers/correios-br/model/captcha.onnx +0 -0
- package/dist/carriers/correios-br/numbers.json +72 -0
- package/dist/carriers/correios-br/ocr-worker.mjs +53 -0
- package/dist/carriers/correios-br/ocr.d.ts +10 -0
- package/dist/carriers/correios-br/ocr.js +83 -0
- package/dist/carriers/correios-br/parser.d.ts +4 -0
- package/dist/carriers/correios-br/parser.js +79 -0
- package/dist/carriers/correios-br/status.d.ts +2 -0
- package/dist/carriers/correios-br/status.js +17 -0
- package/dist/carriers/correios-br/statuses.json +16 -0
- package/dist/carriers/correos-chile/adapter.d.ts +12 -0
- package/dist/carriers/correos-chile/adapter.js +85 -0
- package/dist/carriers/correos-chile/carrier.json +62 -0
- package/dist/carriers/correos-chile/numbers.json +38 -0
- package/dist/carriers/correos-chile/parser.d.ts +9 -0
- package/dist/carriers/correos-chile/parser.js +120 -0
- package/dist/carriers/correos-chile/status.d.ts +3 -0
- package/dist/carriers/correos-chile/status.js +17 -0
- package/dist/carriers/correos-chile/statuses.json +12 -0
- package/dist/carriers/correos-express/adapter.d.ts +11 -0
- package/dist/carriers/correos-express/adapter.js +32 -0
- package/dist/carriers/correos-express/carrier.json +65 -0
- package/dist/carriers/correos-express/numbers.json +80 -0
- package/dist/carriers/correos-express/parser.d.ts +3 -0
- package/dist/carriers/correos-express/parser.js +97 -0
- package/dist/carriers/correos-express/status.d.ts +2 -0
- package/dist/carriers/correos-express/status.js +25 -0
- package/dist/carriers/correos-express/statuses.json +19 -0
- package/dist/carriers/correos-spain/adapter.d.ts +15 -0
- package/dist/carriers/correos-spain/adapter.js +191 -0
- package/dist/carriers/correos-spain/carrier.json +92 -0
- package/dist/carriers/correos-spain/numbers.json +149 -0
- package/dist/carriers/correos-spain/status.d.ts +17 -0
- package/dist/carriers/correos-spain/status.js +51 -0
- package/dist/carriers/correos-spain/statuses.json +46 -0
- package/dist/carriers/ctt/adapter.d.ts +34 -0
- package/dist/carriers/ctt/adapter.js +320 -0
- package/dist/carriers/ctt/carrier.json +72 -0
- package/dist/carriers/ctt/numbers.json +33 -0
- package/dist/carriers/ctt/status.d.ts +16 -0
- package/dist/carriers/ctt/status.js +16 -0
- package/dist/carriers/ctt/statuses.json +15 -0
- package/dist/carriers/ctt-express/adapter.d.ts +11 -0
- package/dist/carriers/ctt-express/adapter.js +41 -0
- package/dist/carriers/ctt-express/carrier.json +64 -0
- package/dist/carriers/ctt-express/numbers.json +59 -0
- package/dist/carriers/ctt-express/parser.d.ts +3 -0
- package/dist/carriers/ctt-express/parser.js +107 -0
- package/dist/carriers/ctt-express/status.d.ts +2 -0
- package/dist/carriers/ctt-express/status.js +17 -0
- package/dist/carriers/ctt-express/statuses.json +15 -0
- package/dist/carriers/dachser/adapter.d.ts +25 -0
- package/dist/carriers/dachser/adapter.js +168 -0
- package/dist/carriers/dachser/carrier.json +80 -0
- package/dist/carriers/dachser/numbers.json +66 -0
- package/dist/carriers/dachser/status.d.ts +40 -0
- package/dist/carriers/dachser/status.js +57 -0
- package/dist/carriers/dachser/statuses.json +18 -0
- package/dist/carriers/delhivery/adapter.d.ts +11 -0
- package/dist/carriers/delhivery/adapter.js +36 -0
- package/dist/carriers/delhivery/carrier.json +50 -0
- package/dist/carriers/delhivery/numbers.json +108 -0
- package/dist/carriers/delhivery/parser.d.ts +3 -0
- package/dist/carriers/delhivery/parser.js +81 -0
- package/dist/carriers/delhivery/status.d.ts +2 -0
- package/dist/carriers/delhivery/status.js +11 -0
- package/dist/carriers/delhivery/statuses.json +11 -0
- package/dist/carriers/delivengo/carrier.json +56 -0
- package/dist/carriers/delivengo/numbers.json +31 -0
- package/dist/carriers/delivengo/statuses.json +5 -0
- package/dist/carriers/dhl/adapter.d.ts +70 -0
- package/dist/carriers/dhl/adapter.js +308 -0
- package/dist/carriers/dhl/carrier.json +98 -0
- package/dist/carriers/dhl/numbers.json +153 -0
- package/dist/carriers/dhl/status.d.ts +14 -0
- package/dist/carriers/dhl/status.js +45 -0
- package/dist/carriers/dhl/statuses.json +27 -0
- package/dist/carriers/dhl-ecommerce/adapter.d.ts +50 -0
- package/dist/carriers/dhl-ecommerce/adapter.js +179 -0
- package/dist/carriers/dhl-ecommerce/carrier.json +97 -0
- package/dist/carriers/dhl-ecommerce/numbers.json +130 -0
- package/dist/carriers/dhl-ecommerce/status.d.ts +13 -0
- package/dist/carriers/dhl-ecommerce/status.js +57 -0
- package/dist/carriers/dhl-ecommerce/statuses.json +23 -0
- package/dist/carriers/dpd/adapter.d.ts +70 -0
- package/dist/carriers/dpd/adapter.js +809 -0
- package/dist/carriers/dpd/carrier.json +111 -0
- package/dist/carriers/dpd/numbers.json +43 -0
- package/dist/carriers/dpd/status.d.ts +39 -0
- package/dist/carriers/dpd/status.js +93 -0
- package/dist/carriers/dpd/statuses.json +144 -0
- package/dist/carriers/dpd-fr/adapter.d.ts +42 -0
- package/dist/carriers/dpd-fr/adapter.js +288 -0
- package/dist/carriers/dpd-fr/carrier.json +83 -0
- package/dist/carriers/dpd-fr/numbers.json +80 -0
- package/dist/carriers/dpd-fr/status.d.ts +21 -0
- package/dist/carriers/dpd-fr/status.js +93 -0
- package/dist/carriers/dpd-fr/statuses.json +325 -0
- package/dist/carriers/dtdc/adapter.d.ts +11 -0
- package/dist/carriers/dtdc/adapter.js +39 -0
- package/dist/carriers/dtdc/carrier.json +77 -0
- package/dist/carriers/dtdc/numbers.json +50 -0
- package/dist/carriers/dtdc/parser.d.ts +3 -0
- package/dist/carriers/dtdc/parser.js +90 -0
- package/dist/carriers/dtdc/status.d.ts +2 -0
- package/dist/carriers/dtdc/status.js +15 -0
- package/dist/carriers/dtdc/statuses.json +65 -0
- package/dist/carriers/ecoscooting/adapter.d.ts +11 -0
- package/dist/carriers/ecoscooting/adapter.js +42 -0
- package/dist/carriers/ecoscooting/carrier.json +76 -0
- package/dist/carriers/ecoscooting/numbers.json +291 -0
- package/dist/carriers/ecoscooting/parser.d.ts +3 -0
- package/dist/carriers/ecoscooting/parser.js +88 -0
- package/dist/carriers/ecoscooting/status.d.ts +2 -0
- package/dist/carriers/ecoscooting/status.js +50 -0
- package/dist/carriers/ecoscooting/statuses.json +295 -0
- package/dist/carriers/ems/adapter.d.ts +14 -0
- package/dist/carriers/ems/adapter.js +124 -0
- package/dist/carriers/ems/carrier.json +61 -0
- package/dist/carriers/ems/numbers.json +43 -0
- package/dist/carriers/ems/status.d.ts +2 -0
- package/dist/carriers/ems/status.js +24 -0
- package/dist/carriers/ems/statuses.json +128 -0
- package/dist/carriers/estafeta/adapter.d.ts +11 -0
- package/dist/carriers/estafeta/adapter.js +45 -0
- package/dist/carriers/estafeta/carrier.json +79 -0
- package/dist/carriers/estafeta/numbers.json +85 -0
- package/dist/carriers/estafeta/parser.d.ts +11 -0
- package/dist/carriers/estafeta/parser.js +123 -0
- package/dist/carriers/estafeta/status.d.ts +3 -0
- package/dist/carriers/estafeta/status.js +17 -0
- package/dist/carriers/estafeta/statuses.json +47 -0
- package/dist/carriers/evri/adapter.d.ts +14 -0
- package/dist/carriers/evri/adapter.js +146 -0
- package/dist/carriers/evri/carrier.json +69 -0
- package/dist/carriers/evri/numbers.json +32 -0
- package/dist/carriers/evri/status.d.ts +2 -0
- package/dist/carriers/evri/status.js +24 -0
- package/dist/carriers/evri/statuses.json +133 -0
- package/dist/carriers/fedex/adapter.d.ts +32 -0
- package/dist/carriers/fedex/adapter.js +307 -0
- package/dist/carriers/fedex/carrier.json +74 -0
- package/dist/carriers/fedex/numbers.json +198 -0
- package/dist/carriers/fedex/status.d.ts +33 -0
- package/dist/carriers/fedex/status.js +114 -0
- package/dist/carriers/fedex/statuses.json +34 -0
- package/dist/carriers/four-px/adapter.d.ts +12 -0
- package/dist/carriers/four-px/adapter.js +113 -0
- package/dist/carriers/four-px/carrier.json +60 -0
- package/dist/carriers/four-px/numbers.json +32 -0
- package/dist/carriers/four-px/status.d.ts +2 -0
- package/dist/carriers/four-px/status.js +22 -0
- package/dist/carriers/four-px/statuses.json +141 -0
- package/dist/carriers/geodis/adapter.d.ts +37 -0
- package/dist/carriers/geodis/adapter.js +275 -0
- package/dist/carriers/geodis/carrier.json +75 -0
- package/dist/carriers/geodis/numbers.json +45 -0
- package/dist/carriers/geodis/status.d.ts +37 -0
- package/dist/carriers/geodis/status.js +105 -0
- package/dist/carriers/geodis/statuses.json +51 -0
- package/dist/carriers/gls-ch/adapter.d.ts +39 -0
- package/dist/carriers/gls-ch/adapter.js +405 -0
- package/dist/carriers/gls-ch/carrier.json +122 -0
- package/dist/carriers/gls-ch/numbers.json +31 -0
- package/dist/carriers/gls-ch/status.d.ts +19 -0
- package/dist/carriers/gls-ch/status.js +79 -0
- package/dist/carriers/gls-ch/statuses.json +31 -0
- package/dist/carriers/gls-de/adapter.d.ts +28 -0
- package/dist/carriers/gls-de/adapter.js +113 -0
- package/dist/carriers/gls-de/carrier.json +126 -0
- package/dist/carriers/gls-de/numbers.json +111 -0
- package/dist/carriers/gls-de/status.d.ts +10 -0
- package/dist/carriers/gls-de/status.js +10 -0
- package/dist/carriers/gls-de/statuses.json +31 -0
- package/dist/carriers/gls-fr/adapter.d.ts +29 -0
- package/dist/carriers/gls-fr/adapter.js +220 -0
- package/dist/carriers/gls-fr/carrier.json +107 -0
- package/dist/carriers/gls-fr/numbers.json +113 -0
- package/dist/carriers/gls-fr/status.d.ts +28 -0
- package/dist/carriers/gls-fr/status.js +58 -0
- package/dist/carriers/gls-fr/statuses.json +34 -0
- package/dist/carriers/gofo/adapter.d.ts +11 -0
- package/dist/carriers/gofo/adapter.js +41 -0
- package/dist/carriers/gofo/carrier.json +80 -0
- package/dist/carriers/gofo/numbers.json +59 -0
- package/dist/carriers/gofo/parser.d.ts +5 -0
- package/dist/carriers/gofo/parser.js +131 -0
- package/dist/carriers/gofo/status.d.ts +2 -0
- package/dist/carriers/gofo/status.js +7 -0
- package/dist/carriers/gofo/statuses.json +54 -0
- package/dist/carriers/heppner/adapter.d.ts +27 -0
- package/dist/carriers/heppner/adapter.js +247 -0
- package/dist/carriers/heppner/carrier.json +74 -0
- package/dist/carriers/heppner/numbers.json +39 -0
- package/dist/carriers/heppner/status.d.ts +28 -0
- package/dist/carriers/heppner/status.js +43 -0
- package/dist/carriers/heppner/statuses.json +69 -0
- package/dist/carriers/hermes/adapter.d.ts +17 -0
- package/dist/carriers/hermes/adapter.js +103 -0
- package/dist/carriers/hermes/carrier.json +58 -0
- package/dist/carriers/hermes/numbers.json +20 -0
- package/dist/carriers/hermes/status.d.ts +15 -0
- package/dist/carriers/hermes/status.js +61 -0
- package/dist/carriers/hermes/statuses.json +31 -0
- package/dist/carriers/hermes-de/adapter.d.ts +22 -0
- package/dist/carriers/hermes-de/adapter.js +168 -0
- package/dist/carriers/hermes-de/carrier.json +90 -0
- package/dist/carriers/hermes-de/numbers.json +125 -0
- package/dist/carriers/hermes-de/status.d.ts +24 -0
- package/dist/carriers/hermes-de/status.js +52 -0
- package/dist/carriers/hermes-de/statuses.json +277 -0
- package/dist/carriers/hongkong-post/carrier.json +38 -0
- package/dist/carriers/hongkong-post/numbers.json +32 -0
- package/dist/carriers/india-post/adapter.d.ts +33 -0
- package/dist/carriers/india-post/adapter.js +415 -0
- package/dist/carriers/india-post/carrier.json +74 -0
- package/dist/carriers/india-post/numbers.json +58 -0
- package/dist/carriers/india-post/status.d.ts +23 -0
- package/dist/carriers/india-post/status.js +99 -0
- package/dist/carriers/india-post/statuses.json +18 -0
- package/dist/carriers/inpost/adapter.d.ts +14 -0
- package/dist/carriers/inpost/adapter.js +143 -0
- package/dist/carriers/inpost/carrier.json +75 -0
- package/dist/carriers/inpost/numbers.json +130 -0
- package/dist/carriers/inpost/status.d.ts +16 -0
- package/dist/carriers/inpost/status.js +31 -0
- package/dist/carriers/inpost/statuses.json +26 -0
- package/dist/carriers/intl-post/carrier.json +46 -0
- package/dist/carriers/intl-post/numbers.json +29 -0
- package/dist/carriers/j-and-t/carrier.json +66 -0
- package/dist/carriers/j-and-t/numbers.json +90 -0
- package/dist/carriers/japan-post/adapter.d.ts +13 -0
- package/dist/carriers/japan-post/adapter.js +159 -0
- package/dist/carriers/japan-post/carrier.json +71 -0
- package/dist/carriers/japan-post/numbers.json +35 -0
- package/dist/carriers/japan-post/status.d.ts +2 -0
- package/dist/carriers/japan-post/status.js +25 -0
- package/dist/carriers/japan-post/statuses.json +136 -0
- package/dist/carriers/jd-logistics/carrier.json +37 -0
- package/dist/carriers/jd-logistics/numbers.json +19 -0
- package/dist/carriers/korea-post/adapter.d.ts +12 -0
- package/dist/carriers/korea-post/adapter.js +101 -0
- package/dist/carriers/korea-post/carrier.json +74 -0
- package/dist/carriers/korea-post/numbers.json +54 -0
- package/dist/carriers/korea-post/status.d.ts +2 -0
- package/dist/carriers/korea-post/status.js +19 -0
- package/dist/carriers/korea-post/statuses.json +103 -0
- package/dist/carriers/la-poste/adapter.d.ts +29 -0
- package/dist/carriers/la-poste/adapter.js +241 -0
- package/dist/carriers/la-poste/carrier.json +87 -0
- package/dist/carriers/la-poste/numbers.json +140 -0
- package/dist/carriers/la-poste/status.d.ts +30 -0
- package/dist/carriers/la-poste/status.js +110 -0
- package/dist/carriers/la-poste/statuses.json +163 -0
- package/dist/carriers/landmark-global/adapter.d.ts +11 -0
- package/dist/carriers/landmark-global/adapter.js +30 -0
- package/dist/carriers/landmark-global/carrier.json +64 -0
- package/dist/carriers/landmark-global/numbers.json +58 -0
- package/dist/carriers/landmark-global/parser.d.ts +3 -0
- package/dist/carriers/landmark-global/parser.js +78 -0
- package/dist/carriers/landmark-global/status.d.ts +2 -0
- package/dist/carriers/landmark-global/status.js +13 -0
- package/dist/carriers/landmark-global/statuses.json +125 -0
- package/dist/carriers/mondial-relay/adapter.d.ts +32 -0
- package/dist/carriers/mondial-relay/adapter.js +352 -0
- package/dist/carriers/mondial-relay/carrier.json +94 -0
- package/dist/carriers/mondial-relay/numbers.json +130 -0
- package/dist/carriers/mondial-relay/status.d.ts +31 -0
- package/dist/carriers/mondial-relay/status.js +98 -0
- package/dist/carriers/mondial-relay/statuses.json +50 -0
- package/dist/carriers/mrw/adapter.d.ts +13 -0
- package/dist/carriers/mrw/adapter.js +131 -0
- package/dist/carriers/mrw/carrier.json +60 -0
- package/dist/carriers/mrw/numbers.json +116 -0
- package/dist/carriers/mrw/parser.d.ts +12 -0
- package/dist/carriers/mrw/parser.js +149 -0
- package/dist/carriers/mrw/status.d.ts +2 -0
- package/dist/carriers/mrw/status.js +14 -0
- package/dist/carriers/mrw/statuses.json +13 -0
- package/dist/carriers/nacex/adapter.d.ts +11 -0
- package/dist/carriers/nacex/adapter.js +99 -0
- package/dist/carriers/nacex/carrier.json +78 -0
- package/dist/carriers/nacex/numbers.json +47 -0
- package/dist/carriers/nacex/parser.d.ts +4 -0
- package/dist/carriers/nacex/parser.js +119 -0
- package/dist/carriers/nacex/status.d.ts +2 -0
- package/dist/carriers/nacex/status.js +12 -0
- package/dist/carriers/nacex/statuses.json +11 -0
- package/dist/carriers/ninja-van/adapter.d.ts +11 -0
- package/dist/carriers/ninja-van/adapter.js +45 -0
- package/dist/carriers/ninja-van/carrier.json +79 -0
- package/dist/carriers/ninja-van/numbers.json +67 -0
- package/dist/carriers/ninja-van/parser.d.ts +5 -0
- package/dist/carriers/ninja-van/parser.js +95 -0
- package/dist/carriers/ninja-van/status.d.ts +3 -0
- package/dist/carriers/ninja-van/status.js +25 -0
- package/dist/carriers/ninja-van/statuses.json +11 -0
- package/dist/carriers/nz-post/adapter.d.ts +11 -0
- package/dist/carriers/nz-post/adapter.js +45 -0
- package/dist/carriers/nz-post/carrier.json +82 -0
- package/dist/carriers/nz-post/numbers.json +49 -0
- package/dist/carriers/nz-post/parser.d.ts +3 -0
- package/dist/carriers/nz-post/parser.js +97 -0
- package/dist/carriers/nz-post/status.d.ts +2 -0
- package/dist/carriers/nz-post/status.js +29 -0
- package/dist/carriers/nz-post/statuses.json +68 -0
- package/dist/carriers/old-dominion/carrier.json +51 -0
- package/dist/carriers/old-dominion/numbers.json +83 -0
- package/dist/carriers/ontrac/adapter.d.ts +11 -0
- package/dist/carriers/ontrac/adapter.js +34 -0
- package/dist/carriers/ontrac/carrier.json +81 -0
- package/dist/carriers/ontrac/numbers.json +214 -0
- package/dist/carriers/ontrac/parser.d.ts +3 -0
- package/dist/carriers/ontrac/parser.js +72 -0
- package/dist/carriers/ontrac/status.d.ts +2 -0
- package/dist/carriers/ontrac/status.js +19 -0
- package/dist/carriers/ontrac/statuses.json +61 -0
- package/dist/carriers/paack/adapter.d.ts +19 -0
- package/dist/carriers/paack/adapter.js +255 -0
- package/dist/carriers/paack/carrier.json +79 -0
- package/dist/carriers/paack/numbers.json +106 -0
- package/dist/carriers/paack/status.d.ts +26 -0
- package/dist/carriers/paack/status.js +82 -0
- package/dist/carriers/paack/statuses.json +357 -0
- package/dist/carriers/packeta/adapter.d.ts +15 -0
- package/dist/carriers/packeta/adapter.js +166 -0
- package/dist/carriers/packeta/carrier.json +90 -0
- package/dist/carriers/packeta/numbers.json +71 -0
- package/dist/carriers/packeta/status.d.ts +23 -0
- package/dist/carriers/packeta/status.js +40 -0
- package/dist/carriers/packeta/statuses.json +21 -0
- package/dist/carriers/parcelforce/carrier.json +47 -0
- package/dist/carriers/parcelforce/numbers.json +32 -0
- package/dist/carriers/planzer/adapter.d.ts +40 -0
- package/dist/carriers/planzer/adapter.js +148 -0
- package/dist/carriers/planzer/carrier.json +85 -0
- package/dist/carriers/planzer/numbers.json +118 -0
- package/dist/carriers/planzer/shared.d.ts +19 -0
- package/dist/carriers/planzer/shared.js +135 -0
- package/dist/carriers/planzer/status.d.ts +33 -0
- package/dist/carriers/planzer/status.js +89 -0
- package/dist/carriers/planzer/statuses.json +229 -0
- package/dist/carriers/poczta-polska/adapter.d.ts +15 -0
- package/dist/carriers/poczta-polska/adapter.js +65 -0
- package/dist/carriers/poczta-polska/carrier.json +79 -0
- package/dist/carriers/poczta-polska/numbers.json +130 -0
- package/dist/carriers/poczta-polska/parser.d.ts +3 -0
- package/dist/carriers/poczta-polska/parser.js +96 -0
- package/dist/carriers/poczta-polska/status.d.ts +2 -0
- package/dist/carriers/poczta-polska/status.js +21 -0
- package/dist/carriers/poczta-polska/statuses.json +47 -0
- package/dist/carriers/pos-malaysia/adapter.d.ts +18 -0
- package/dist/carriers/pos-malaysia/adapter.js +199 -0
- package/dist/carriers/pos-malaysia/carrier.json +78 -0
- package/dist/carriers/pos-malaysia/numbers.json +73 -0
- package/dist/carriers/pos-malaysia/status.d.ts +17 -0
- package/dist/carriers/pos-malaysia/status.js +21 -0
- package/dist/carriers/pos-malaysia/statuses.json +17 -0
- package/dist/carriers/poste-italiane/adapter.d.ts +15 -0
- package/dist/carriers/poste-italiane/adapter.js +211 -0
- package/dist/carriers/poste-italiane/carrier.json +86 -0
- package/dist/carriers/poste-italiane/numbers.json +117 -0
- package/dist/carriers/poste-italiane/status.d.ts +19 -0
- package/dist/carriers/poste-italiane/status.js +44 -0
- package/dist/carriers/poste-italiane/statuses.json +22 -0
- package/dist/carriers/posti/adapter.d.ts +17 -0
- package/dist/carriers/posti/adapter.js +195 -0
- package/dist/carriers/posti/carrier.json +69 -0
- package/dist/carriers/posti/numbers.json +52 -0
- package/dist/carriers/posti/status.d.ts +4 -0
- package/dist/carriers/posti/status.js +41 -0
- package/dist/carriers/posti/statuses.json +18 -0
- package/dist/carriers/postlogistics/adapter.d.ts +39 -0
- package/dist/carriers/postlogistics/adapter.js +162 -0
- package/dist/carriers/postlogistics/carrier.json +67 -0
- package/dist/carriers/postlogistics/number.d.ts +2 -0
- package/dist/carriers/postlogistics/number.js +7 -0
- package/dist/carriers/postlogistics/numbers.json +54 -0
- package/dist/carriers/postlogistics/status.d.ts +20 -0
- package/dist/carriers/postlogistics/status.js +12 -0
- package/dist/carriers/postlogistics/statuses.json +40 -0
- package/dist/carriers/postnord/adapter.d.ts +11 -0
- package/dist/carriers/postnord/adapter.js +76 -0
- package/dist/carriers/postnord/carrier.json +82 -0
- package/dist/carriers/postnord/numbers.json +66 -0
- package/dist/carriers/postnord/parser.d.ts +3 -0
- package/dist/carriers/postnord/parser.js +75 -0
- package/dist/carriers/postnord/status.d.ts +3 -0
- package/dist/carriers/postnord/status.js +38 -0
- package/dist/carriers/postnord/statuses.json +16 -0
- package/dist/carriers/purolator/adapter.d.ts +11 -0
- package/dist/carriers/purolator/adapter.js +45 -0
- package/dist/carriers/purolator/carrier.json +75 -0
- package/dist/carriers/purolator/numbers.json +146 -0
- package/dist/carriers/purolator/parser.d.ts +3 -0
- package/dist/carriers/purolator/parser.js +79 -0
- package/dist/carriers/purolator/status.d.ts +2 -0
- package/dist/carriers/purolator/status.js +17 -0
- package/dist/carriers/purolator/statuses.json +15 -0
- package/dist/carriers/quickpac/carrier.json +68 -0
- package/dist/carriers/quickpac/numbers.json +31 -0
- package/dist/carriers/quickpac/statuses.json +213 -0
- package/dist/carriers/relais-colis/adapter.d.ts +28 -0
- package/dist/carriers/relais-colis/adapter.js +242 -0
- package/dist/carriers/relais-colis/carrier.json +77 -0
- package/dist/carriers/relais-colis/numbers.json +64 -0
- package/dist/carriers/relais-colis/status.d.ts +26 -0
- package/dist/carriers/relais-colis/status.js +91 -0
- package/dist/carriers/relais-colis/statuses.json +341 -0
- package/dist/carriers/royal-mail/adapter.d.ts +32 -0
- package/dist/carriers/royal-mail/adapter.js +260 -0
- package/dist/carriers/royal-mail/carrier.json +60 -0
- package/dist/carriers/royal-mail/numbers.json +57 -0
- package/dist/carriers/royal-mail/status.d.ts +19 -0
- package/dist/carriers/royal-mail/status.js +80 -0
- package/dist/carriers/royal-mail/statuses.json +16 -0
- package/dist/carriers/seur/adapter.d.ts +11 -0
- package/dist/carriers/seur/adapter.js +35 -0
- package/dist/carriers/seur/carrier.json +89 -0
- package/dist/carriers/seur/numbers.json +80 -0
- package/dist/carriers/seur/parser.d.ts +3 -0
- package/dist/carriers/seur/parser.js +78 -0
- package/dist/carriers/seur/status.d.ts +2 -0
- package/dist/carriers/seur/status.js +14 -0
- package/dist/carriers/seur/statuses.json +47 -0
- package/dist/carriers/sf-express/adapter.d.ts +17 -0
- package/dist/carriers/sf-express/adapter.js +87 -0
- package/dist/carriers/sf-express/carrier.json +78 -0
- package/dist/carriers/sf-express/numbers.json +66 -0
- package/dist/carriers/sf-express/parser.d.ts +4 -0
- package/dist/carriers/sf-express/parser.js +102 -0
- package/dist/carriers/sf-express/status.d.ts +4 -0
- package/dist/carriers/sf-express/status.js +28 -0
- package/dist/carriers/sf-express/statuses.json +334 -0
- package/dist/carriers/shipup/carrier.json +28 -0
- package/dist/carriers/shipup/numbers.json +20 -0
- package/dist/carriers/singapore-post/adapter.d.ts +12 -0
- package/dist/carriers/singapore-post/adapter.js +106 -0
- package/dist/carriers/singapore-post/carrier.json +62 -0
- package/dist/carriers/singapore-post/numbers.json +77 -0
- package/dist/carriers/singapore-post/status.d.ts +2 -0
- package/dist/carriers/singapore-post/status.js +17 -0
- package/dist/carriers/singapore-post/statuses.json +101 -0
- package/dist/carriers/spee-dee/carrier.json +51 -0
- package/dist/carriers/spee-dee/numbers.json +55 -0
- package/dist/carriers/speedx/carrier.json +49 -0
- package/dist/carriers/speedx/numbers.json +112 -0
- package/dist/carriers/spring-gds/adapter.d.ts +35 -0
- package/dist/carriers/spring-gds/adapter.js +212 -0
- package/dist/carriers/spring-gds/carrier.json +90 -0
- package/dist/carriers/spring-gds/numbers.json +224 -0
- package/dist/carriers/spring-gds/status.d.ts +19 -0
- package/dist/carriers/spring-gds/status.js +28 -0
- package/dist/carriers/spring-gds/statuses.json +140 -0
- package/dist/carriers/sto/carrier.json +37 -0
- package/dist/carriers/sto/numbers.json +33 -0
- package/dist/carriers/sunyou/adapter.d.ts +18 -0
- package/dist/carriers/sunyou/adapter.js +156 -0
- package/dist/carriers/sunyou/carrier.json +64 -0
- package/dist/carriers/sunyou/numbers.json +44 -0
- package/dist/carriers/sunyou/status.d.ts +17 -0
- package/dist/carriers/sunyou/status.js +13 -0
- package/dist/carriers/sunyou/statuses.json +53 -0
- package/dist/carriers/swiss-post/adapter.d.ts +18 -0
- package/dist/carriers/swiss-post/adapter.js +282 -0
- package/dist/carriers/swiss-post/carrier.json +84 -0
- package/dist/carriers/swiss-post/numbers.json +55 -0
- package/dist/carriers/swiss-post/status.d.ts +27 -0
- package/dist/carriers/swiss-post/status.js +64 -0
- package/dist/carriers/swiss-post/statuses.json +33 -0
- package/dist/carriers/swiss-post-cargo/adapter.d.ts +19 -0
- package/dist/carriers/swiss-post-cargo/adapter.js +173 -0
- package/dist/carriers/swiss-post-cargo/carrier.json +60 -0
- package/dist/carriers/swiss-post-cargo/numbers.json +23 -0
- package/dist/carriers/swiss-post-cargo/reference.d.ts +13 -0
- package/dist/carriers/swiss-post-cargo/reference.js +48 -0
- package/dist/carriers/swiss-post-cargo/status.d.ts +13 -0
- package/dist/carriers/swiss-post-cargo/status.js +53 -0
- package/dist/carriers/swiss-post-cargo/statuses.json +19 -0
- package/dist/carriers/thailand-post/carrier.json +38 -0
- package/dist/carriers/thailand-post/numbers.json +33 -0
- package/dist/carriers/the-courier-guy/adapter.d.ts +11 -0
- package/dist/carriers/the-courier-guy/adapter.js +49 -0
- package/dist/carriers/the-courier-guy/carrier.json +73 -0
- package/dist/carriers/the-courier-guy/number.d.ts +3 -0
- package/dist/carriers/the-courier-guy/number.js +18 -0
- package/dist/carriers/the-courier-guy/numbers.json +74 -0
- package/dist/carriers/the-courier-guy/parser.d.ts +3 -0
- package/dist/carriers/the-courier-guy/parser.js +104 -0
- package/dist/carriers/the-courier-guy/status.d.ts +5 -0
- package/dist/carriers/the-courier-guy/status.js +21 -0
- package/dist/carriers/the-courier-guy/statuses.json +61 -0
- package/dist/carriers/tipsa/adapter.d.ts +12 -0
- package/dist/carriers/tipsa/adapter.js +52 -0
- package/dist/carriers/tipsa/carrier.json +92 -0
- package/dist/carriers/tipsa/numbers.json +100 -0
- package/dist/carriers/tipsa/parser.d.ts +17 -0
- package/dist/carriers/tipsa/parser.js +114 -0
- package/dist/carriers/tipsa/status.d.ts +3 -0
- package/dist/carriers/tipsa/status.js +25 -0
- package/dist/carriers/tipsa/statuses.json +12 -0
- package/dist/carriers/tnt/adapter.d.ts +23 -0
- package/dist/carriers/tnt/adapter.js +210 -0
- package/dist/carriers/tnt/carrier.json +66 -0
- package/dist/carriers/tnt/numbers.json +116 -0
- package/dist/carriers/tnt/status.d.ts +3 -0
- package/dist/carriers/tnt/status.js +35 -0
- package/dist/carriers/tnt/statuses.json +126 -0
- package/dist/carriers/ukrposhta/adapter.d.ts +13 -0
- package/dist/carriers/ukrposhta/adapter.js +152 -0
- package/dist/carriers/ukrposhta/carrier.json +62 -0
- package/dist/carriers/ukrposhta/numbers.json +53 -0
- package/dist/carriers/ukrposhta/parser.d.ts +15 -0
- package/dist/carriers/ukrposhta/parser.js +130 -0
- package/dist/carriers/ukrposhta/status.d.ts +3 -0
- package/dist/carriers/ukrposhta/status.js +34 -0
- package/dist/carriers/ukrposhta/statuses.json +208 -0
- package/dist/carriers/uniuni/adapter.d.ts +11 -0
- package/dist/carriers/uniuni/adapter.js +48 -0
- package/dist/carriers/uniuni/carrier.json +90 -0
- package/dist/carriers/uniuni/numbers.json +72 -0
- package/dist/carriers/uniuni/parser.d.ts +5 -0
- package/dist/carriers/uniuni/parser.js +114 -0
- package/dist/carriers/uniuni/status.d.ts +2 -0
- package/dist/carriers/uniuni/status.js +16 -0
- package/dist/carriers/uniuni/statuses.json +54 -0
- package/dist/carriers/unknown/carrier.json +57 -0
- package/dist/carriers/unknown/numbers.json +257 -0
- package/dist/carriers/ups/adapter.d.ts +40 -0
- package/dist/carriers/ups/adapter.js +473 -0
- package/dist/carriers/ups/carrier.json +69 -0
- package/dist/carriers/ups/numbers.json +134 -0
- package/dist/carriers/ups/status.d.ts +25 -0
- package/dist/carriers/ups/status.js +41 -0
- package/dist/carriers/ups/statuses.json +35 -0
- package/dist/carriers/usps/adapter.d.ts +25 -0
- package/dist/carriers/usps/adapter.js +261 -0
- package/dist/carriers/usps/carrier.json +74 -0
- package/dist/carriers/usps/numbers.json +286 -0
- package/dist/carriers/usps/status.d.ts +25 -0
- package/dist/carriers/usps/status.js +72 -0
- package/dist/carriers/usps/statuses.json +24 -0
- package/dist/carriers/yamato/adapter.d.ts +13 -0
- package/dist/carriers/yamato/adapter.js +130 -0
- package/dist/carriers/yamato/carrier.json +72 -0
- package/dist/carriers/yamato/numbers.json +57 -0
- package/dist/carriers/yamato/status.d.ts +2 -0
- package/dist/carriers/yamato/status.js +27 -0
- package/dist/carriers/yamato/statuses.json +159 -0
- package/dist/carriers/yanwen/adapter.d.ts +13 -0
- package/dist/carriers/yanwen/adapter.js +130 -0
- package/dist/carriers/yanwen/carrier.json +66 -0
- package/dist/carriers/yanwen/numbers.json +45 -0
- package/dist/carriers/yanwen/status.d.ts +2 -0
- package/dist/carriers/yanwen/status.js +25 -0
- package/dist/carriers/yanwen/statuses.json +131 -0
- package/dist/carriers/yto/adapter.d.ts +11 -0
- package/dist/carriers/yto/adapter.js +36 -0
- package/dist/carriers/yto/carrier.json +75 -0
- package/dist/carriers/yto/numbers.json +33 -0
- package/dist/carriers/yto/parser.d.ts +3 -0
- package/dist/carriers/yto/parser.js +92 -0
- package/dist/carriers/yto/status.d.ts +10 -0
- package/dist/carriers/yto/status.js +46 -0
- package/dist/carriers/yto/statuses.json +206 -0
- package/dist/carriers/yunda/adapter.d.ts +11 -0
- package/dist/carriers/yunda/adapter.js +68 -0
- package/dist/carriers/yunda/carrier.json +69 -0
- package/dist/carriers/yunda/challenge.d.ts +5 -0
- package/dist/carriers/yunda/challenge.js +68 -0
- package/dist/carriers/yunda/numbers.json +43 -0
- package/dist/carriers/yunda/parser.d.ts +4 -0
- package/dist/carriers/yunda/parser.js +105 -0
- package/dist/carriers/yunda/status.d.ts +4 -0
- package/dist/carriers/yunda/status.js +9 -0
- package/dist/carriers/yunda/statuses.json +40 -0
- package/dist/carriers/yunexpress/adapter.d.ts +20 -0
- package/dist/carriers/yunexpress/adapter.js +240 -0
- package/dist/carriers/yunexpress/carrier.json +69 -0
- package/dist/carriers/yunexpress/numbers.json +32 -0
- package/dist/carriers/yunexpress/status.d.ts +2 -0
- package/dist/carriers/yunexpress/status.js +23 -0
- package/dist/carriers/yunexpress/statuses.json +112 -0
- package/dist/carriers/zto/carrier.json +37 -0
- package/dist/carriers/zto/numbers.json +30 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +82 -0
- package/dist/core/adapter/index.d.ts +90 -0
- package/dist/core/adapter/index.js +103 -0
- package/dist/core/adapter/track.d.ts +10 -0
- package/dist/core/adapter/track.js +20 -0
- package/dist/core/catalog/amazon.d.ts +5 -0
- package/dist/core/catalog/amazon.js +33 -0
- package/dist/core/catalog/definitions.d.ts +24 -0
- package/dist/core/catalog/definitions.js +44 -0
- package/dist/core/catalog/handoff.d.ts +9 -0
- package/dist/core/catalog/handoff.js +56 -0
- package/dist/core/catalog/hints.d.ts +45 -0
- package/dist/core/catalog/hints.js +162 -0
- package/dist/core/catalog/index.d.ts +38 -0
- package/dist/core/catalog/index.js +223 -0
- package/dist/core/catalog/inputs.d.ts +6 -0
- package/dist/core/catalog/inputs.js +89 -0
- package/dist/core/catalog/linkRules.d.ts +24 -0
- package/dist/core/catalog/linkRules.js +20 -0
- package/dist/core/catalog/networks.d.ts +9 -0
- package/dist/core/catalog/networks.js +13 -0
- package/dist/core/catalog/recognition.d.ts +22 -0
- package/dist/core/catalog/recognition.js +52 -0
- package/dist/core/catalog/types.d.ts +135 -0
- package/dist/core/catalog/types.js +1 -0
- package/dist/core/catalog/urls.d.ts +2 -0
- package/dist/core/catalog/urls.js +125 -0
- package/dist/core/detection/amazon.d.ts +2 -0
- package/dist/core/detection/amazon.js +14 -0
- package/dist/core/detection/candidates.d.ts +5 -0
- package/dist/core/detection/candidates.js +41 -0
- package/dist/core/detection/detect.d.ts +17 -0
- package/dist/core/detection/detect.js +52 -0
- package/dist/core/detection/gls.d.ts +16 -0
- package/dist/core/detection/gls.js +21 -0
- package/dist/core/detection/hermes.d.ts +14 -0
- package/dist/core/detection/hermes.js +19 -0
- package/dist/core/detection/index.d.ts +19 -0
- package/dist/core/detection/index.js +9 -0
- package/dist/core/detection/mondialRelay.d.ts +13 -0
- package/dist/core/detection/mondialRelay.js +25 -0
- package/dist/core/detection/normalize.d.ts +15 -0
- package/dist/core/detection/normalize.js +39 -0
- package/dist/core/detection/parse.d.ts +6 -0
- package/dist/core/detection/parse.js +112 -0
- package/dist/core/detection/s10.d.ts +4 -0
- package/dist/core/detection/s10.js +25 -0
- package/dist/core/detection/types.d.ts +22 -0
- package/dist/core/detection/types.js +1 -0
- package/dist/core/errors/hint.d.ts +7 -0
- package/dist/core/errors/hint.js +7 -0
- package/dist/core/errors/index.d.ts +98 -0
- package/dist/core/errors/index.js +178 -0
- package/dist/core/recognition/index.d.ts +24 -0
- package/dist/core/recognition/index.js +65 -0
- package/dist/core/result/index.d.ts +57 -0
- package/dist/core/result/index.js +114 -0
- package/dist/core/result/resolve.d.ts +18 -0
- package/dist/core/result/resolve.js +49 -0
- package/dist/core/runner/index.d.ts +33 -0
- package/dist/core/runner/index.js +109 -0
- package/dist/core/status/index.d.ts +22 -0
- package/dist/core/status/index.js +3 -0
- package/dist/core/status/language.d.ts +11 -0
- package/dist/core/status/language.js +149 -0
- package/dist/core/status/wording.d.ts +25 -0
- package/dist/core/status/wording.js +91 -0
- package/dist/core/telemetry/index.d.ts +62 -0
- package/dist/core/telemetry/index.js +55 -0
- package/dist/core/time/index.d.ts +84 -0
- package/dist/core/time/index.js +243 -0
- package/dist/core/time/result.d.ts +5 -0
- package/dist/core/time/result.js +55 -0
- package/dist/core/transport/boundedFetch.d.ts +26 -0
- package/dist/core/transport/boundedFetch.js +152 -0
- package/dist/core/transport/browser.d.ts +14 -0
- package/dist/core/transport/browser.js +113 -0
- package/dist/core/transport/index.d.ts +8 -0
- package/dist/core/transport/index.js +5 -0
- package/dist/core/transport/optional.d.ts +2 -0
- package/dist/core/transport/optional.js +17 -0
- package/dist/core/transport/text.d.ts +8 -0
- package/dist/core/transport/text.js +18 -0
- package/dist/core/transport/trawl.d.ts +80 -0
- package/dist/core/transport/trawl.js +212 -0
- package/dist/core/transport/upstreamHttpDiagnostics.d.ts +16 -0
- package/dist/core/transport/upstreamHttpDiagnostics.js +97 -0
- package/dist/core/types.d.ts +8 -0
- package/dist/core/types.js +11 -0
- package/dist/data/catalog.json +3969 -0
- package/dist/facade/index.d.ts +57 -0
- package/dist/facade/index.js +195 -0
- package/dist/generated/catalog.d.ts +2671 -0
- package/dist/generated/catalog.js +4090 -0
- package/dist/generated/recognition.d.ts +2 -0
- package/dist/generated/recognition.js +31 -0
- package/dist/generated/regionTowns.d.ts +2 -0
- package/dist/generated/regionTowns.js +11 -0
- package/dist/generated/registry.d.ts +4 -0
- package/dist/generated/registry.js +286 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +18 -0
- package/dist/node.d.ts +11 -0
- package/dist/node.js +11 -0
- package/dist/places/countries.json +1670 -0
- package/dist/places/facilities.json +11 -0
- package/dist/places/index.d.ts +42 -0
- package/dist/places/index.js +307 -0
- package/dist/places/names.d.mts +15 -0
- package/dist/places/names.mjs +36 -0
- package/dist/places/places.tsv.br +0 -0
- package/dist/places/trackingLocation.d.ts +18 -0
- package/dist/places/trackingLocation.js +89 -0
- package/dist/providers/coverage.d.ts +31 -0
- package/dist/providers/coverage.js +70 -0
- package/dist/providers/coverage.json +1744 -0
- package/dist/providers/parcelsapp/adapter.d.ts +23 -0
- package/dist/providers/parcelsapp/adapter.js +391 -0
- package/dist/providers/parcelsapp/http.d.ts +9 -0
- package/dist/providers/parcelsapp/http.js +67 -0
- package/dist/providers/plan.d.ts +38 -0
- package/dist/providers/plan.js +54 -0
- package/dist/providers/postal-ninja/adapter.d.ts +17 -0
- package/dist/providers/postal-ninja/adapter.js +200 -0
- package/dist/providers/seventeentrack/adapter.d.ts +50 -0
- package/dist/providers/seventeentrack/adapter.js +165 -0
- package/dist/providers/seventeentrack/events.d.ts +4 -0
- package/dist/providers/seventeentrack/events.js +56 -0
- package/dist/providers/shared/capture.d.ts +46 -0
- package/dist/providers/shared/capture.js +92 -0
- package/dist/providers/shared/hints.d.ts +16 -0
- package/dist/providers/shared/hints.js +37 -0
- package/dist/providers/shared/result.d.ts +15 -0
- package/dist/providers/shared/result.js +161 -0
- package/dist/providers/shared/scans.d.ts +22 -0
- package/dist/providers/shared/scans.js +29 -0
- package/dist/providers/ship24/adapter.d.ts +17 -0
- package/dist/providers/ship24/adapter.js +140 -0
- package/dist/providers/ship24/http.d.ts +7 -0
- package/dist/providers/ship24/http.js +75 -0
- package/dist/providers/types.d.ts +1 -0
- package/dist/providers/types.js +1 -0
- package/dist/providers/universal.d.ts +66 -0
- package/dist/providers/universal.js +95 -0
- package/dist/providers/upu/adapter.d.ts +5 -0
- package/dist/providers/upu/adapter.js +107 -0
- package/dist/scripts/canary-report.d.mts +22 -0
- package/dist/scripts/canary-report.mjs +69 -0
- package/dist/scripts/carrier-canary.d.ts +50 -0
- package/dist/scripts/carrier-canary.js +220 -0
- package/dist/server/index.d.ts +20 -0
- package/dist/server/index.js +226 -0
- package/dist/server/openapi.json +487 -0
- package/dist/server/page.d.ts +1 -0
- package/dist/server/page.js +33 -0
- package/package.json +102 -4
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colisweb: the anonymous search endpoint behind colisweb.com/suivi-livraison.
|
|
3
|
+
*
|
|
4
|
+
* One bounded POST per lookup ('direct' step). Colisweb schedules appointed
|
|
5
|
+
* deliveries for retailers, so its response is about a delivery slot rather than
|
|
6
|
+
* a parcel journey: it carries the retailer's name, the recipient block and the
|
|
7
|
+
* booked time window next to three milestone timestamps. `parse()` keeps the
|
|
8
|
+
* milestones, the step and the slot's starting day; everything describing a
|
|
9
|
+
* person or a shop is dropped.
|
|
10
|
+
*/
|
|
11
|
+
import type { AdapterFactory } from '../../core/adapter/index.js';
|
|
12
|
+
import type { CarrierResult } from '../../core/result/index.js';
|
|
13
|
+
export { classifyStatus } from './status.js';
|
|
14
|
+
export declare function normalizeColiswebTrackingNumber(raw: string): string;
|
|
15
|
+
export declare function coliswebTrackingUrl(): string;
|
|
16
|
+
export declare function coliswebRequestBody(rawTrackingNumber: string): string;
|
|
17
|
+
export declare function parseColiswebTrackingResponse(payload: unknown, rawTrackingNumber: string): CarrierResult;
|
|
18
|
+
export interface ColiswebTrackerOptions {
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
/** Test seam; production uses the global fetch. */
|
|
21
|
+
fetcher?: typeof fetch;
|
|
22
|
+
}
|
|
23
|
+
export declare class ColiswebTracker {
|
|
24
|
+
#private;
|
|
25
|
+
readonly timeoutMs: number;
|
|
26
|
+
constructor(options?: ColiswebTrackerOptions);
|
|
27
|
+
fetch(rawTrackingNumber: string): Promise<CarrierResult>;
|
|
28
|
+
}
|
|
29
|
+
export declare const adapter: AdapterFactory;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colisweb: the anonymous search endpoint behind colisweb.com/suivi-livraison.
|
|
3
|
+
*
|
|
4
|
+
* One bounded POST per lookup ('direct' step). Colisweb schedules appointed
|
|
5
|
+
* deliveries for retailers, so its response is about a delivery slot rather than
|
|
6
|
+
* a parcel journey: it carries the retailer's name, the recipient block and the
|
|
7
|
+
* booked time window next to three milestone timestamps. `parse()` keeps the
|
|
8
|
+
* milestones, the step and the slot's starting day; everything describing a
|
|
9
|
+
* person or a shop is dropped.
|
|
10
|
+
*/
|
|
11
|
+
import { IndeterminateError, NotFoundError, SchemaError } from '../../core/errors/index.js';
|
|
12
|
+
import { UpstreamHttpError, clean, decodeText, fetchBounded, parseJsonBytes } from '../../core/transport/index.js';
|
|
13
|
+
import { isRecord } from '../../core/types.js';
|
|
14
|
+
import { classifyStatus } from './status.js';
|
|
15
|
+
export { classifyStatus } from './status.js';
|
|
16
|
+
const PROVIDER = 'Colisweb';
|
|
17
|
+
const TRACKING_ENDPOINT = 'https://www.colisweb.com/api/search';
|
|
18
|
+
const TIMEZONE = 'Europe/Paris';
|
|
19
|
+
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
20
|
+
const MAX_RESPONSE_BYTES = 500_000;
|
|
21
|
+
const NOT_FOUND_PATTERN = /not[ -]?found|introuvable|inconnu/i;
|
|
22
|
+
/**
|
|
23
|
+
* The endpoint sends ISO 8601 timestamps with their own offset, so they are kept
|
|
24
|
+
* verbatim rather than restamped. Anything `Date.parse` refuses is dropped.
|
|
25
|
+
*/
|
|
26
|
+
function normalizedTimestamp(value) {
|
|
27
|
+
if (typeof value !== 'string')
|
|
28
|
+
return null;
|
|
29
|
+
const candidate = clean(value, 64);
|
|
30
|
+
return candidate && !Number.isNaN(Date.parse(candidate)) ? candidate : null;
|
|
31
|
+
}
|
|
32
|
+
function normalizedDate(value) {
|
|
33
|
+
const timestamp = normalizedTimestamp(value);
|
|
34
|
+
if (!timestamp)
|
|
35
|
+
return null;
|
|
36
|
+
const match = /^(\d{4}-\d{2}-\d{2})/.exec(timestamp);
|
|
37
|
+
return match?.[1] ?? new Date(timestamp).toISOString().slice(0, 10);
|
|
38
|
+
}
|
|
39
|
+
function saysNotFound(value) {
|
|
40
|
+
if (!isRecord(value))
|
|
41
|
+
return false;
|
|
42
|
+
const text = [value.error, value.message, value.texteErreur]
|
|
43
|
+
.filter((part) => typeof part === 'string')
|
|
44
|
+
.join(' ');
|
|
45
|
+
return /not[ -]?found|introuvable|inconnu|aucun(?:e)? livraison/i.test(text);
|
|
46
|
+
}
|
|
47
|
+
export function normalizeColiswebTrackingNumber(raw) {
|
|
48
|
+
const value = raw.replace(/\s/g, '');
|
|
49
|
+
if (!/^\d{8,32}$/.test(value)) {
|
|
50
|
+
throw new TypeError('Colisweb tracking numbers must contain at least 8 digits');
|
|
51
|
+
}
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
export function coliswebTrackingUrl() {
|
|
55
|
+
return TRACKING_ENDPOINT;
|
|
56
|
+
}
|
|
57
|
+
export function coliswebRequestBody(rawTrackingNumber) {
|
|
58
|
+
return JSON.stringify({ value: normalizeColiswebTrackingNumber(rawTrackingNumber) });
|
|
59
|
+
}
|
|
60
|
+
export function parseColiswebTrackingResponse(payload, rawTrackingNumber) {
|
|
61
|
+
const trackingNumber = normalizeColiswebTrackingNumber(rawTrackingNumber);
|
|
62
|
+
if (saysNotFound(payload))
|
|
63
|
+
throw new NotFoundError(PROVIDER);
|
|
64
|
+
if (!isRecord(payload))
|
|
65
|
+
throw new SchemaError(PROVIDER, 'Colisweb returned an invalid tracking response');
|
|
66
|
+
const responseNumber = typeof payload.searchValue === 'string'
|
|
67
|
+
? payload.searchValue.replace(/\s/g, '')
|
|
68
|
+
: '';
|
|
69
|
+
if (!/^\d{8,32}$/.test(responseNumber)) {
|
|
70
|
+
throw new SchemaError(PROVIDER, 'Colisweb returned incomplete tracking details');
|
|
71
|
+
}
|
|
72
|
+
if (responseNumber !== trackingNumber) {
|
|
73
|
+
throw new SchemaError(PROVIDER, 'Colisweb returned a different shipment');
|
|
74
|
+
}
|
|
75
|
+
const current = classifyStatus(payload.step);
|
|
76
|
+
const milestones = [
|
|
77
|
+
{
|
|
78
|
+
value: payload.deliveredDate,
|
|
79
|
+
classified: classifyStatus('delivered'),
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
value: payload.pickedUpDate,
|
|
83
|
+
classified: classifyStatus('pickedUp'),
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
value: payload.deliveryConfirmationDate,
|
|
87
|
+
classified: classifyStatus('confirmed'),
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
const events = milestones.flatMap(({ value, classified }) => {
|
|
91
|
+
const time = normalizedTimestamp(value);
|
|
92
|
+
return time ? [{ time, description: classified.description, stage: classified.stage }] : [];
|
|
93
|
+
});
|
|
94
|
+
if (!events.some((event) => event.stage === current.stage)) {
|
|
95
|
+
// An unmapped step carries no stage, so the sync classifies this entry.
|
|
96
|
+
events.unshift({
|
|
97
|
+
description: current.description,
|
|
98
|
+
...(current.stage ? { stage: current.stage } : {}),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
const lastUpdate = events.find((event) => event.time)?.time ?? null;
|
|
102
|
+
return {
|
|
103
|
+
status: current.status,
|
|
104
|
+
...(current.stage ? { current_stage: current.stage } : {}),
|
|
105
|
+
last_status_text: current.description,
|
|
106
|
+
last_update: lastUpdate,
|
|
107
|
+
expected_delivery: ['delivered', 'exception'].includes(current.status)
|
|
108
|
+
? null
|
|
109
|
+
: normalizedDate(payload.startsAt),
|
|
110
|
+
timezone: TIMEZONE,
|
|
111
|
+
events,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export class ColiswebTracker {
|
|
115
|
+
timeoutMs;
|
|
116
|
+
#fetcher;
|
|
117
|
+
constructor(options = {}) {
|
|
118
|
+
this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
119
|
+
if (!Number.isFinite(this.timeoutMs) || this.timeoutMs <= 0) {
|
|
120
|
+
throw new TypeError('Colisweb timeout must be positive');
|
|
121
|
+
}
|
|
122
|
+
this.#fetcher = options.fetcher;
|
|
123
|
+
}
|
|
124
|
+
async fetch(rawTrackingNumber) {
|
|
125
|
+
const trackingNumber = normalizeColiswebTrackingNumber(rawTrackingNumber);
|
|
126
|
+
const { response, bytes } = await fetchBounded(coliswebTrackingUrl(), {
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: {
|
|
129
|
+
Accept: 'application/json',
|
|
130
|
+
'Content-Type': 'application/json',
|
|
131
|
+
Origin: 'https://www.colisweb.com',
|
|
132
|
+
Referer: 'https://www.colisweb.com/suivi-livraison',
|
|
133
|
+
'User-Agent': 'Mozilla/5.0 (compatible; DeliveryTracker/1.0)',
|
|
134
|
+
},
|
|
135
|
+
body: coliswebRequestBody(trackingNumber),
|
|
136
|
+
}, {
|
|
137
|
+
provider: 'Colisweb tracking',
|
|
138
|
+
timeoutMs: this.timeoutMs,
|
|
139
|
+
maxBytes: MAX_RESPONSE_BYTES,
|
|
140
|
+
redirect: 'error',
|
|
141
|
+
allowHttpError: true,
|
|
142
|
+
fetcher: this.#fetcher,
|
|
143
|
+
});
|
|
144
|
+
if ([400, 404, 422].includes(response.status))
|
|
145
|
+
throw new NotFoundError(PROVIDER);
|
|
146
|
+
if (response.status === 500 && bytes.byteLength === 0) {
|
|
147
|
+
// The official UI turns this empty HTTP 500 into its not-found card, but the
|
|
148
|
+
// response itself proves nothing: reporting it as a 404 would invent a fact.
|
|
149
|
+
throw new IndeterminateError(PROVIDER, 'Colisweb returned an empty HTTP 500 for the shipment lookup');
|
|
150
|
+
}
|
|
151
|
+
if (!response.ok) {
|
|
152
|
+
if (NOT_FOUND_PATTERN.test(decodeText(bytes)))
|
|
153
|
+
throw new NotFoundError(PROVIDER);
|
|
154
|
+
throw new UpstreamHttpError('Colisweb tracking', response.status);
|
|
155
|
+
}
|
|
156
|
+
return parseColiswebTrackingResponse(parseJsonBytes(bytes, 'Colisweb tracking'), trackingNumber);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export const adapter = (environment) => {
|
|
160
|
+
const tracker = new ColiswebTracker({ fetcher: environment.fetcher });
|
|
161
|
+
return {
|
|
162
|
+
id: 'colisweb',
|
|
163
|
+
steps: ['direct'],
|
|
164
|
+
track: (input) => tracker.fetch(input.number),
|
|
165
|
+
};
|
|
166
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "colisweb",
|
|
3
|
+
"displayName": "Colisweb",
|
|
4
|
+
"aliases": [],
|
|
5
|
+
"region": {
|
|
6
|
+
"countries": [
|
|
7
|
+
"FR"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"brand": {
|
|
11
|
+
"color": "#ff8a00"
|
|
12
|
+
},
|
|
13
|
+
"selectable": true,
|
|
14
|
+
"timezone": "Europe/Paris",
|
|
15
|
+
"tracking": {
|
|
16
|
+
"mode": "automatic",
|
|
17
|
+
"adapter": "colisweb",
|
|
18
|
+
"steps": [
|
|
19
|
+
"direct"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"capabilities": [
|
|
23
|
+
"history",
|
|
24
|
+
"eta"
|
|
25
|
+
],
|
|
26
|
+
"portal": {
|
|
27
|
+
"url": "https://www.colisweb.com/suivi-livraison?value={trackingNumber}",
|
|
28
|
+
"canaryUrl": "https://www.colisweb.com/suivi-livraison",
|
|
29
|
+
"shows": [
|
|
30
|
+
"status",
|
|
31
|
+
"history",
|
|
32
|
+
"eta",
|
|
33
|
+
"eta_window",
|
|
34
|
+
"sender_name",
|
|
35
|
+
"recipient_name",
|
|
36
|
+
"recipient_address"
|
|
37
|
+
],
|
|
38
|
+
"scraped": [
|
|
39
|
+
"status",
|
|
40
|
+
"history",
|
|
41
|
+
"eta"
|
|
42
|
+
],
|
|
43
|
+
"discarded": [
|
|
44
|
+
"eta_window",
|
|
45
|
+
"sender_name",
|
|
46
|
+
"recipient_name",
|
|
47
|
+
"recipient_address"
|
|
48
|
+
],
|
|
49
|
+
"unavailable": []
|
|
50
|
+
},
|
|
51
|
+
"links": [
|
|
52
|
+
{
|
|
53
|
+
"domains": [
|
|
54
|
+
"colisweb.com"
|
|
55
|
+
],
|
|
56
|
+
"params": [
|
|
57
|
+
"value",
|
|
58
|
+
"trackingNumber"
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"detection": []
|
|
63
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"carrier": "colisweb",
|
|
3
|
+
"records": [
|
|
4
|
+
{
|
|
5
|
+
"number": "11854362",
|
|
6
|
+
"role": "shipment",
|
|
7
|
+
"evidence": "public_shipment_report",
|
|
8
|
+
"source": {
|
|
9
|
+
"url": "https://www.trustpilot.com/reviews/69d652f26c2dbef5f8ee61fb",
|
|
10
|
+
"date": "2026-04-08"
|
|
11
|
+
},
|
|
12
|
+
"expect": {
|
|
13
|
+
"carrier": "unknown",
|
|
14
|
+
"confidence": "low",
|
|
15
|
+
"candidates": [
|
|
16
|
+
"mondial-relay",
|
|
17
|
+
"heppner"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"note": "Publicly reported shipment number; the attribution was not independently verified. The source attributes it to Colisweb, which no rule claims."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"number": "87654321",
|
|
24
|
+
"role": "shipment",
|
|
25
|
+
"evidence": "synthetic",
|
|
26
|
+
"derivedFrom": "invented",
|
|
27
|
+
"shapeConfirmed": "2026-09-10",
|
|
28
|
+
"expect": {
|
|
29
|
+
"carrier": "unknown",
|
|
30
|
+
"confidence": "low",
|
|
31
|
+
"candidates": [
|
|
32
|
+
"mondial-relay",
|
|
33
|
+
"heppner"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"note": "Invented placeholder used as a shape check. Filed under Colisweb, which no rule claims."
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colisweb delivery steps.
|
|
3
|
+
*
|
|
4
|
+
* The anonymous search endpoint reports one machine step per delivery (`step`)
|
|
5
|
+
* and no wording. Steps arrive in several spellings across the provider's own
|
|
6
|
+
* surfaces (`pickedUp`, `picked_up`, `PICKED_UP`), so they are compared with
|
|
7
|
+
* case and separators removed. The French descriptions below are ours: Colisweb
|
|
8
|
+
* sends none.
|
|
9
|
+
*
|
|
10
|
+
* A step that is not listed stays unmapped — the adapter reports the delivery
|
|
11
|
+
* with no stage and the sync classifies it.
|
|
12
|
+
*/
|
|
13
|
+
import type { CarrierStatus } from '../../core/result/index.js';
|
|
14
|
+
import type { Stage } from '../../generated/catalog.js';
|
|
15
|
+
export interface ClassifiedStatus {
|
|
16
|
+
status: CarrierStatus;
|
|
17
|
+
/** Absent when the step is unknown: the sync's classifier decides instead. */
|
|
18
|
+
stage?: Stage;
|
|
19
|
+
description: string;
|
|
20
|
+
}
|
|
21
|
+
/** Lowercase and drop everything that is not a letter or a digit. */
|
|
22
|
+
export declare function statusKey(value: unknown): string;
|
|
23
|
+
export declare const DELIVERED_STEPS: readonly string[];
|
|
24
|
+
export declare const RETURNED_STEPS: readonly string[];
|
|
25
|
+
export declare const CANCELED_STEPS: readonly string[];
|
|
26
|
+
/** A carrier-reported problem that is neither a missed attempt nor a return. */
|
|
27
|
+
export declare const EXCEPTION_STEPS: readonly string[];
|
|
28
|
+
export declare const FAILED_STEPS: readonly string[];
|
|
29
|
+
export declare const OUT_FOR_DELIVERY_STEPS: readonly string[];
|
|
30
|
+
export declare const PICKED_UP_STEPS: readonly string[];
|
|
31
|
+
export declare const CONFIRMED_STEPS: readonly string[];
|
|
32
|
+
export declare function classifyStatus(value: unknown): ClassifiedStatus;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** Lowercase and drop everything that is not a letter or a digit. */
|
|
2
|
+
export function statusKey(value) {
|
|
3
|
+
return typeof value === 'string'
|
|
4
|
+
? value.toLocaleLowerCase('en-US').replace(/[^a-z0-9]+/g, '')
|
|
5
|
+
: '';
|
|
6
|
+
}
|
|
7
|
+
export const DELIVERED_STEPS = ['delivered', 'deliverypbok'];
|
|
8
|
+
export const RETURNED_STEPS = [
|
|
9
|
+
'packagereturned',
|
|
10
|
+
'deliveryreturned',
|
|
11
|
+
'packagereturnfailed',
|
|
12
|
+
'deliveryreturnfailed',
|
|
13
|
+
];
|
|
14
|
+
export const CANCELED_STEPS = [
|
|
15
|
+
'canceled',
|
|
16
|
+
'cancelled',
|
|
17
|
+
'deliverycanceled',
|
|
18
|
+
'deliverycancelled',
|
|
19
|
+
];
|
|
20
|
+
/** A carrier-reported problem that is neither a missed attempt nor a return. */
|
|
21
|
+
export const EXCEPTION_STEPS = ['nondeliverable'];
|
|
22
|
+
export const FAILED_STEPS = [
|
|
23
|
+
'pickupfailed',
|
|
24
|
+
'packagewithdrawalfailed',
|
|
25
|
+
'deliveryfailed',
|
|
26
|
+
];
|
|
27
|
+
export const OUT_FOR_DELIVERY_STEPS = ['outfordelivery', 'deliveryinprogress'];
|
|
28
|
+
export const PICKED_UP_STEPS = ['pickedup', 'packagewithdrawn', 'packagewithdrawalpbok'];
|
|
29
|
+
export const CONFIRMED_STEPS = ['idle', 'confirmed', 'courseaccepted'];
|
|
30
|
+
export function classifyStatus(value) {
|
|
31
|
+
const key = statusKey(value);
|
|
32
|
+
if (DELIVERED_STEPS.includes(key)) {
|
|
33
|
+
return { status: 'delivered', stage: 'delivered', description: 'Livraison effectuée' };
|
|
34
|
+
}
|
|
35
|
+
if (RETURNED_STEPS.includes(key)) {
|
|
36
|
+
return { status: 'exception', stage: 'returned', description: 'Colis retourné' };
|
|
37
|
+
}
|
|
38
|
+
if (CANCELED_STEPS.includes(key)) {
|
|
39
|
+
return { status: 'exception', stage: 'returned', description: 'Livraison annulée' };
|
|
40
|
+
}
|
|
41
|
+
if (EXCEPTION_STEPS.includes(key)) {
|
|
42
|
+
return { status: 'exception', stage: 'exception', description: 'Incident de livraison' };
|
|
43
|
+
}
|
|
44
|
+
if (FAILED_STEPS.includes(key)) {
|
|
45
|
+
return { status: 'exception', stage: 'failed_attempt', description: 'Incident de livraison' };
|
|
46
|
+
}
|
|
47
|
+
if (OUT_FOR_DELIVERY_STEPS.includes(key)) {
|
|
48
|
+
return {
|
|
49
|
+
status: 'out_for_delivery',
|
|
50
|
+
stage: 'out_for_delivery',
|
|
51
|
+
description: 'Livraison en cours',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (PICKED_UP_STEPS.includes(key)) {
|
|
55
|
+
return { status: 'in_transit', stage: 'in_transit', description: 'Colis pris en charge' };
|
|
56
|
+
}
|
|
57
|
+
if (CONFIRMED_STEPS.includes(key)) {
|
|
58
|
+
return { status: 'pending', stage: 'registered', description: 'Livraison confirmée' };
|
|
59
|
+
}
|
|
60
|
+
return { status: 'unknown', description: 'Mise à jour Colisweb' };
|
|
61
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"carrier": "colisweb",
|
|
3
|
+
"entries": [
|
|
4
|
+
{ "code": "delivered", "stage": "delivered", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Compared with case and separators removed, so delivered and DELIVERED are the same step." },
|
|
5
|
+
{ "code": "delivery_pb_ok", "stage": "delivered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
6
|
+
{ "code": "package_returned", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
7
|
+
{ "code": "delivery_returned", "stage": "returned", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "" },
|
|
8
|
+
{ "code": "package_return_failed", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "A failed return is still a return leg, not a delivery attempt." },
|
|
9
|
+
{ "code": "delivery_return_failed", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
10
|
+
{ "code": "canceled", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Both spellings, canceled and cancelled, are accepted." },
|
|
11
|
+
{ "code": "delivery_canceled", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Both spellings are accepted." },
|
|
12
|
+
{ "code": "non_deliverable", "stage": "exception", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Reclassified to exception 2026-09-12." },
|
|
13
|
+
{ "code": "pickup_failed", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
14
|
+
{ "code": "package_withdrawal_failed", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
15
|
+
{ "code": "delivery_failed", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
16
|
+
{ "code": "out_for_delivery", "stage": "out_for_delivery", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
17
|
+
{ "code": "delivery_in_progress", "stage": "out_for_delivery", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
18
|
+
{ "code": "picked_up", "stage": "in_transit", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Also emitted as a milestone event from pickedUpDate." },
|
|
19
|
+
{ "code": "package_withdrawn", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
20
|
+
{ "code": "package_withdrawal_pb_ok", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
21
|
+
{ "code": "idle", "stage": "registered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "The slot is booked and nothing has moved yet." },
|
|
22
|
+
{ "code": "confirmed", "stage": "registered", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Also emitted as a milestone event from deliveryConfirmationDate." },
|
|
23
|
+
{ "code": "course_accepted", "stage": "registered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" }
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AdapterFactory, TrackingContext } from '../../core/adapter/index.js';
|
|
2
|
+
import { type StepRecorder } from '../../core/telemetry/index.js';
|
|
3
|
+
type Solver = (bytes: Uint8Array, signal: AbortSignal) => Promise<string>;
|
|
4
|
+
export declare class CorreiosTracker {
|
|
5
|
+
private readonly options;
|
|
6
|
+
private readonly ocr;
|
|
7
|
+
constructor(options?: {
|
|
8
|
+
fetcher?: typeof fetch;
|
|
9
|
+
recorder?: StepRecorder;
|
|
10
|
+
solveCaptcha?: Solver;
|
|
11
|
+
});
|
|
12
|
+
fetch(raw: string, context?: TrackingContext): Promise<import("../../index.js").CarrierResult>;
|
|
13
|
+
close(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare const adapter: AdapterFactory;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import makeFetchCookie from 'fetch-cookie';
|
|
2
|
+
import { CookieJar } from 'tough-cookie';
|
|
3
|
+
import { BudgetExceededError, ChallengeError, IndeterminateError, SchemaError } from '../../core/errors/index.js';
|
|
4
|
+
import { runSteps } from '../../core/runner/index.js';
|
|
5
|
+
import { NOOP_RECORDER } from '../../core/telemetry/index.js';
|
|
6
|
+
import { fetchBounded, parseJsonBytes } from '../../core/transport/index.js';
|
|
7
|
+
import { CorreiosOcr } from './ocr.js';
|
|
8
|
+
import { isCorreiosCaptchaError, normalizeCorreiosNumber, parseCorreios } from './parser.js';
|
|
9
|
+
const ORIGIN = 'https://rastreamento.correios.com.br';
|
|
10
|
+
const HOME = `${ORIGIN}/app/index.php`;
|
|
11
|
+
const IMAGE = `${ORIGIN}/core/securimage/securimage_show.php`;
|
|
12
|
+
const USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36';
|
|
13
|
+
export class CorreiosTracker {
|
|
14
|
+
options;
|
|
15
|
+
ocr = new CorreiosOcr();
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
}
|
|
19
|
+
async fetch(raw, context = {}) {
|
|
20
|
+
const number = normalizeCorreiosNumber(raw);
|
|
21
|
+
const budgetMs = context.budgetMs ?? 20_000;
|
|
22
|
+
return runSteps({ carrier: 'correios-br', budgetMs, signal: context.signal,
|
|
23
|
+
recorder: this.options.recorder ?? NOOP_RECORDER }, [{ id: 'direct', run: async ({ signal, remainingMs }) => {
|
|
24
|
+
const deadline = performance.now() + remainingMs;
|
|
25
|
+
const check = () => {
|
|
26
|
+
signal.throwIfAborted();
|
|
27
|
+
const left = deadline - performance.now();
|
|
28
|
+
if (left <= 0)
|
|
29
|
+
throw new BudgetExceededError('Correios', budgetMs);
|
|
30
|
+
return Math.max(1, Math.floor(left));
|
|
31
|
+
};
|
|
32
|
+
const fetcher = makeFetchCookie(this.options.fetcher ?? fetch, new CookieJar());
|
|
33
|
+
const request = async (url, maxBytes) => {
|
|
34
|
+
const result = await fetchBounded(url, { signal, headers: { 'User-Agent': USER_AGENT, Referer: HOME } }, {
|
|
35
|
+
provider: 'Correios', timeoutMs: check(), maxBytes, fetcher, allowHttpStatuses: [404, 410],
|
|
36
|
+
});
|
|
37
|
+
check();
|
|
38
|
+
if (result.response.status !== 200)
|
|
39
|
+
throw new IndeterminateError('Correios', 'Correios tracking endpoint is unavailable');
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
// A fresh jar binds this parcel's CAPTCHA to this lookup, never another user.
|
|
43
|
+
await request(HOME, 100_000);
|
|
44
|
+
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
45
|
+
const image = await request(IMAGE, 100_000);
|
|
46
|
+
if (!image.response.headers.get('content-type')?.toLowerCase().startsWith('image/png')) {
|
|
47
|
+
throw new ChallengeError('Correios', 'Correios returned no text CAPTCHA image');
|
|
48
|
+
}
|
|
49
|
+
const answer = await (this.options.solveCaptcha ?? this.ocr.solve.bind(this.ocr))(image.bytes, signal);
|
|
50
|
+
check();
|
|
51
|
+
if (!/^[a-z0-9]{4,6}$/.test(answer)) {
|
|
52
|
+
if (attempt === 0)
|
|
53
|
+
continue;
|
|
54
|
+
throw new ChallengeError('Correios', 'Correios text CAPTCHA could not be read');
|
|
55
|
+
}
|
|
56
|
+
const url = new URL(`${ORIGIN}/app/resultado.php`);
|
|
57
|
+
url.search = new URLSearchParams({ objeto: number, captcha: answer, mqs: 'S' }).toString();
|
|
58
|
+
const { bytes } = await request(url, 1_000_000);
|
|
59
|
+
let payload;
|
|
60
|
+
try {
|
|
61
|
+
payload = parseJsonBytes(bytes, 'Correios');
|
|
62
|
+
}
|
|
63
|
+
catch (cause) {
|
|
64
|
+
throw new SchemaError('Correios', 'Correios returned invalid tracking JSON', { cause });
|
|
65
|
+
}
|
|
66
|
+
if (isCorreiosCaptchaError(payload) && attempt === 0)
|
|
67
|
+
continue;
|
|
68
|
+
return parseCorreios(payload, number);
|
|
69
|
+
}
|
|
70
|
+
throw new ChallengeError('Correios', 'Correios rejected the text CAPTCHA');
|
|
71
|
+
} }]);
|
|
72
|
+
}
|
|
73
|
+
close() { return this.ocr.close(); }
|
|
74
|
+
}
|
|
75
|
+
export const adapter = (environment) => {
|
|
76
|
+
const tracker = new CorreiosTracker({ fetcher: environment.fetcher, recorder: environment.recorder });
|
|
77
|
+
return { id: 'correios-br', recordsSteps: true, steps: ['direct'], track: (input, context) => tracker.fetch(input.number, context) };
|
|
78
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "correios-br",
|
|
3
|
+
"displayName": "Correios Brazil",
|
|
4
|
+
"aliases": [],
|
|
5
|
+
"region": {
|
|
6
|
+
"countries": [
|
|
7
|
+
"BR"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"brand": {
|
|
11
|
+
"color": "#ffd500"
|
|
12
|
+
},
|
|
13
|
+
"selectable": true,
|
|
14
|
+
"timezone": "UTC",
|
|
15
|
+
"tracking": {
|
|
16
|
+
"mode": "automatic",
|
|
17
|
+
"adapter": "correios-br",
|
|
18
|
+
"steps": [
|
|
19
|
+
"direct"
|
|
20
|
+
],
|
|
21
|
+
"localClocks": true
|
|
22
|
+
},
|
|
23
|
+
"capabilities": [
|
|
24
|
+
"history",
|
|
25
|
+
"location"
|
|
26
|
+
],
|
|
27
|
+
"portal": {
|
|
28
|
+
"url": "https://rastreamento.correios.com.br/app/index.php?objetos={trackingNumber}",
|
|
29
|
+
"canaryUrl": "https://rastreamento.correios.com.br/app/index.php",
|
|
30
|
+
"shows": [
|
|
31
|
+
"status",
|
|
32
|
+
"history",
|
|
33
|
+
"location",
|
|
34
|
+
"estimated_delivery"
|
|
35
|
+
],
|
|
36
|
+
"scraped": [
|
|
37
|
+
"status",
|
|
38
|
+
"history",
|
|
39
|
+
"location"
|
|
40
|
+
],
|
|
41
|
+
"discarded": [
|
|
42
|
+
"estimated_delivery"
|
|
43
|
+
],
|
|
44
|
+
"unavailable": []
|
|
45
|
+
},
|
|
46
|
+
"links": [
|
|
47
|
+
{
|
|
48
|
+
"domains": [
|
|
49
|
+
"correios.com.br"
|
|
50
|
+
],
|
|
51
|
+
"params": [
|
|
52
|
+
"objetos"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"detection": [
|
|
57
|
+
{
|
|
58
|
+
"id": "correios-br-1",
|
|
59
|
+
"pattern": "^[A-Z]{2}\\d{9}BR$",
|
|
60
|
+
"confidence": "high",
|
|
61
|
+
"checksum": "s10"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nícolas Pastorello
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
Binary file
|