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,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GEODIS: the anonymous recipient lookup behind espace-client.geodis.com.
|
|
3
|
+
*
|
|
4
|
+
* One bounded signed POST per lookup ('direct' step). The response describes the
|
|
5
|
+
* whole consignment: sender and recipient blocks, addresses, per-scan
|
|
6
|
+
* "complementary information" and links to delivery documents. `parse()` builds
|
|
7
|
+
* its result from an allowlist of status, timeline and operational-location
|
|
8
|
+
* fields, so none of that reaches the result or the logs.
|
|
9
|
+
*/
|
|
10
|
+
import { createHash } from 'node:crypto';
|
|
11
|
+
import { IndeterminateError, NotFoundError, SchemaError } from '../../core/errors/index.js';
|
|
12
|
+
import { clean, fetchBounded, parseJsonBytes } from '../../core/transport/index.js';
|
|
13
|
+
import { isRecord } from '../../core/types.js';
|
|
14
|
+
import { classifyStatus, comparableText, includesAny } from './status.js';
|
|
15
|
+
export { classifyStatus } from './status.js';
|
|
16
|
+
const PROVIDER = 'GEODIS';
|
|
17
|
+
const TRACKING_ENDPOINT = 'https://espace-client.geodis.com/services/api/destinataire/recherche-envoi-anonyme';
|
|
18
|
+
const TRACKING_PAGE = 'https://espace-client.geodis.com/services/destinataires/';
|
|
19
|
+
const SIGNED_API_PATH = 'api/destinataire/recherche-envoi-anonyme';
|
|
20
|
+
const PUBLIC_SPA_APP_ID = '$DESTINATAIRE';
|
|
21
|
+
// This is a public client identifier shipped in GEODIS's anonymous recipient SPA,
|
|
22
|
+
// not an account credential. It can rotate when that SPA is deployed.
|
|
23
|
+
const PUBLIC_SPA_APP_KEY = '21aed7a2f03d45ab9cbcd61cd7a2461d'; // gitleaks:allow
|
|
24
|
+
const LANGUAGE = 'fr';
|
|
25
|
+
const TIMEZONE = 'Europe/Paris';
|
|
26
|
+
const MAX_RESPONSE_BYTES = 1_000_000;
|
|
27
|
+
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
28
|
+
const MAX_EVENTS_TO_RETURN = 100;
|
|
29
|
+
/**
|
|
30
|
+
* The endpoint reports a calendar day per group and a wall clock per scan, both
|
|
31
|
+
* as display strings and never with an offset. No `core/time` policy fits: the
|
|
32
|
+
* displayed value is kept verbatim as the event time, and the number below is
|
|
33
|
+
* only a sort key, built in UTC so ordering never shifts with a DST boundary.
|
|
34
|
+
*/
|
|
35
|
+
function dateTimestamp(value) {
|
|
36
|
+
let match = /^(\d{2})\/(\d{2})\/(\d{4})$/.exec(value);
|
|
37
|
+
let year;
|
|
38
|
+
let month;
|
|
39
|
+
let day;
|
|
40
|
+
if (match) {
|
|
41
|
+
day = Number(match[1]);
|
|
42
|
+
month = Number(match[2]);
|
|
43
|
+
year = Number(match[3]);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
|
|
47
|
+
if (!match)
|
|
48
|
+
return null;
|
|
49
|
+
year = Number(match[1]);
|
|
50
|
+
month = Number(match[2]);
|
|
51
|
+
day = Number(match[3]);
|
|
52
|
+
}
|
|
53
|
+
const timestamp = Date.UTC(year, month - 1, day);
|
|
54
|
+
const date = new Date(timestamp);
|
|
55
|
+
return date.getUTCFullYear() === year
|
|
56
|
+
&& date.getUTCMonth() === month - 1
|
|
57
|
+
&& date.getUTCDate() === day
|
|
58
|
+
? timestamp
|
|
59
|
+
: null;
|
|
60
|
+
}
|
|
61
|
+
function eventTime(dateValue, timeValue) {
|
|
62
|
+
const date = clean(dateValue, 32);
|
|
63
|
+
const timestamp = dateTimestamp(date);
|
|
64
|
+
if (timestamp === null)
|
|
65
|
+
return null;
|
|
66
|
+
const clock = clean(timeValue, 16);
|
|
67
|
+
if (!clock)
|
|
68
|
+
return { value: date, timestamp };
|
|
69
|
+
const match = /^([01]\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?$/.exec(clock);
|
|
70
|
+
if (!match)
|
|
71
|
+
return { value: date, timestamp };
|
|
72
|
+
const withClock = timestamp
|
|
73
|
+
+ Number(match[1]) * 3_600_000
|
|
74
|
+
+ Number(match[2]) * 60_000
|
|
75
|
+
+ Number(match[3] ?? 0) * 1_000;
|
|
76
|
+
return { value: `${date} ${clock}`, timestamp: withClock };
|
|
77
|
+
}
|
|
78
|
+
function expectedDelivery(value) {
|
|
79
|
+
const raw = clean(value, 32);
|
|
80
|
+
const french = /^(\d{2})\/(\d{2})\/(\d{4})$/.exec(raw);
|
|
81
|
+
const iso = /^(\d{4})-(\d{2})-(\d{2})$/.exec(raw);
|
|
82
|
+
const date = french
|
|
83
|
+
? `${french[3]}-${french[2]}-${french[1]}`
|
|
84
|
+
: iso
|
|
85
|
+
? raw
|
|
86
|
+
: '';
|
|
87
|
+
return date && dateTimestamp(date) !== null ? date : null;
|
|
88
|
+
}
|
|
89
|
+
function parseEvents(content) {
|
|
90
|
+
if (!Array.isArray(content.listJoursSuivis))
|
|
91
|
+
return [];
|
|
92
|
+
const parsed = [];
|
|
93
|
+
const seen = new Set();
|
|
94
|
+
let index = 0;
|
|
95
|
+
for (const rawDay of content.listJoursSuivis) {
|
|
96
|
+
if (!isRecord(rawDay) || !Array.isArray(rawDay.suivis))
|
|
97
|
+
continue;
|
|
98
|
+
for (const rawEvent of rawDay.suivis) {
|
|
99
|
+
const currentIndex = index++;
|
|
100
|
+
if (!isRecord(rawEvent))
|
|
101
|
+
continue;
|
|
102
|
+
const time = eventTime(rawDay.dateSuivi, rawEvent.heureSuivi);
|
|
103
|
+
const description = clean(rawEvent.libelleSuivi);
|
|
104
|
+
if (!time || !description)
|
|
105
|
+
continue;
|
|
106
|
+
const location = clean(rawEvent.libelleCentre, 160);
|
|
107
|
+
const identity = JSON.stringify([time.value, location, description]);
|
|
108
|
+
if (seen.has(identity))
|
|
109
|
+
continue;
|
|
110
|
+
seen.add(identity);
|
|
111
|
+
const classified = classifyStatus(description);
|
|
112
|
+
parsed.push({
|
|
113
|
+
event: {
|
|
114
|
+
time: time.value,
|
|
115
|
+
location,
|
|
116
|
+
description,
|
|
117
|
+
// Unmapped wording carries no stage: the sync classifies and records it.
|
|
118
|
+
...(classified.stage ? { stage: classified.stage } : {}),
|
|
119
|
+
},
|
|
120
|
+
status: classified.status,
|
|
121
|
+
timestamp: time.timestamp,
|
|
122
|
+
index: currentIndex,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
parsed.sort((left, right) => right.timestamp - left.timestamp || left.index - right.index);
|
|
127
|
+
return parsed.slice(0, MAX_EVENTS_TO_RETURN);
|
|
128
|
+
}
|
|
129
|
+
function activeTimelineLabel(content) {
|
|
130
|
+
if (!isRecord(content.timeline) || !Array.isArray(content.timeline.listTimesteps))
|
|
131
|
+
return '';
|
|
132
|
+
for (const rawStep of content.timeline.listTimesteps) {
|
|
133
|
+
if (isRecord(rawStep) && rawStep.actif === true)
|
|
134
|
+
return clean(rawStep.libelle);
|
|
135
|
+
}
|
|
136
|
+
return '';
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Kept as a named class because the grouped live suite matches on its name. It
|
|
140
|
+
* is a plain `NotFoundError`.
|
|
141
|
+
*/
|
|
142
|
+
export class GeodisTrackingError extends NotFoundError {
|
|
143
|
+
constructor() {
|
|
144
|
+
super(PROVIDER);
|
|
145
|
+
this.name = 'GeodisTrackingError';
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function isNotFoundCode(value) {
|
|
149
|
+
const code = comparableText(clean(value, 100));
|
|
150
|
+
return includesAny(code, ['envoi non trouve', 'shipment not found', 'tracking not found']);
|
|
151
|
+
}
|
|
152
|
+
export function normalizeGeodisTrackingNumber(raw) {
|
|
153
|
+
const trackingNumber = raw.trim().toLocaleUpperCase('en-US');
|
|
154
|
+
if (!/^1G[A-Z0-9]{10}$/.test(trackingNumber)) {
|
|
155
|
+
throw new TypeError('GEODIS tracking numbers must start with 1G and contain 12 letters and digits');
|
|
156
|
+
}
|
|
157
|
+
return trackingNumber;
|
|
158
|
+
}
|
|
159
|
+
export function geodisTrackingUrl() {
|
|
160
|
+
return TRACKING_ENDPOINT;
|
|
161
|
+
}
|
|
162
|
+
export function geodisRequestBody(rawTrackingNumber) {
|
|
163
|
+
return JSON.stringify({ noSuivi: normalizeGeodisTrackingNumber(rawTrackingNumber) });
|
|
164
|
+
}
|
|
165
|
+
export function geodisServiceHeader(rawTrackingNumber, timestamp, language = LANGUAGE) {
|
|
166
|
+
const trackingNumber = normalizeGeodisTrackingNumber(rawTrackingNumber);
|
|
167
|
+
if (!Number.isSafeInteger(timestamp) || timestamp <= 0) {
|
|
168
|
+
throw new TypeError('GEODIS signature timestamp must be a positive integer');
|
|
169
|
+
}
|
|
170
|
+
if (!/^[a-z]{2}$/.test(language))
|
|
171
|
+
throw new TypeError('GEODIS signature language is invalid');
|
|
172
|
+
const body = geodisRequestBody(trackingNumber);
|
|
173
|
+
const material = [
|
|
174
|
+
PUBLIC_SPA_APP_KEY,
|
|
175
|
+
PUBLIC_SPA_APP_ID,
|
|
176
|
+
String(timestamp),
|
|
177
|
+
language,
|
|
178
|
+
SIGNED_API_PATH,
|
|
179
|
+
body,
|
|
180
|
+
].join(';');
|
|
181
|
+
const digest = createHash('sha256').update(material).digest('hex');
|
|
182
|
+
return [PUBLIC_SPA_APP_ID, String(timestamp), language, digest].join(';');
|
|
183
|
+
}
|
|
184
|
+
export function parseGeodisTrackingResponse(payload, rawTrackingNumber) {
|
|
185
|
+
const trackingNumber = normalizeGeodisTrackingNumber(rawTrackingNumber);
|
|
186
|
+
if (!isRecord(payload) || typeof payload.ok !== 'boolean') {
|
|
187
|
+
throw new SchemaError(PROVIDER, 'GEODIS returned an invalid tracking response');
|
|
188
|
+
}
|
|
189
|
+
if (!payload.ok) {
|
|
190
|
+
if (isNotFoundCode(payload.codeErreur))
|
|
191
|
+
throw new GeodisTrackingError();
|
|
192
|
+
// A rejection we cannot read proves nothing about the shipment.
|
|
193
|
+
throw new IndeterminateError(PROVIDER, 'GEODIS tracking is unavailable');
|
|
194
|
+
}
|
|
195
|
+
if (!isRecord(payload.contenu)) {
|
|
196
|
+
throw new SchemaError(PROVIDER, 'GEODIS returned incomplete tracking details');
|
|
197
|
+
}
|
|
198
|
+
const content = payload.contenu;
|
|
199
|
+
const responseNumber = clean(content.noSuivi, 32).toLocaleUpperCase('en-US');
|
|
200
|
+
if (!/^1G[A-Z0-9]{10}$/.test(responseNumber)) {
|
|
201
|
+
throw new SchemaError(PROVIDER, 'GEODIS returned an invalid shipment number');
|
|
202
|
+
}
|
|
203
|
+
if (responseNumber !== trackingNumber) {
|
|
204
|
+
throw new SchemaError(PROVIDER, 'GEODIS returned a different shipment');
|
|
205
|
+
}
|
|
206
|
+
const parsedEvents = parseEvents(content);
|
|
207
|
+
const events = parsedEvents.map(({ event }) => event);
|
|
208
|
+
const timelineLabel = activeTimelineLabel(content);
|
|
209
|
+
const latestDescription = events[0]?.description ?? '';
|
|
210
|
+
const currentDescription = timelineLabel || latestDescription || 'Tracking information received';
|
|
211
|
+
const current = classifyStatus(currentDescription);
|
|
212
|
+
const latestKnown = parsedEvents.find((event) => event.status !== 'unknown')?.status ?? 'unknown';
|
|
213
|
+
let status = current.status !== 'unknown' ? current.status : latestKnown;
|
|
214
|
+
if (content.etatLivre === true || content.etatRetire === true)
|
|
215
|
+
status = 'delivered';
|
|
216
|
+
else if (content.finDeVie === true && status !== 'delivered')
|
|
217
|
+
status = 'exception';
|
|
218
|
+
const isFinal = content.etatLivre === true
|
|
219
|
+
|| content.etatRetire === true
|
|
220
|
+
|| content.finDeVie === true;
|
|
221
|
+
return {
|
|
222
|
+
status,
|
|
223
|
+
last_status_text: currentDescription,
|
|
224
|
+
last_update: events[0]?.time ?? null,
|
|
225
|
+
expected_delivery: isFinal
|
|
226
|
+
? null
|
|
227
|
+
: expectedDelivery(content.dateLivraisonPrevue)
|
|
228
|
+
?? expectedDelivery(content.dateLivraisonSouhaitee),
|
|
229
|
+
timezone: TIMEZONE,
|
|
230
|
+
events,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
export class GeodisTracker {
|
|
234
|
+
timeoutMs;
|
|
235
|
+
#fetcher;
|
|
236
|
+
constructor(options = {}) {
|
|
237
|
+
this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
238
|
+
if (!Number.isFinite(this.timeoutMs) || this.timeoutMs <= 0) {
|
|
239
|
+
throw new TypeError('GEODIS timeout must be positive');
|
|
240
|
+
}
|
|
241
|
+
this.#fetcher = options.fetcher;
|
|
242
|
+
}
|
|
243
|
+
async fetch(rawTrackingNumber) {
|
|
244
|
+
const trackingNumber = normalizeGeodisTrackingNumber(rawTrackingNumber);
|
|
245
|
+
const body = geodisRequestBody(trackingNumber);
|
|
246
|
+
const timestamp = Date.now();
|
|
247
|
+
const { bytes } = await fetchBounded(geodisTrackingUrl(), {
|
|
248
|
+
method: 'POST',
|
|
249
|
+
headers: {
|
|
250
|
+
Accept: 'application/json',
|
|
251
|
+
'Accept-Language': 'fr-FR,fr;q=0.9',
|
|
252
|
+
'Content-Type': 'application/json',
|
|
253
|
+
Origin: 'https://espace-client.geodis.com',
|
|
254
|
+
Referer: TRACKING_PAGE,
|
|
255
|
+
'User-Agent': 'Mozilla/5.0 (compatible; SwissDeliveryTracker/1.0)',
|
|
256
|
+
'X-GEODIS-Service': geodisServiceHeader(trackingNumber, timestamp),
|
|
257
|
+
},
|
|
258
|
+
body,
|
|
259
|
+
}, {
|
|
260
|
+
provider: 'GEODIS tracking',
|
|
261
|
+
timeoutMs: this.timeoutMs,
|
|
262
|
+
maxBytes: MAX_RESPONSE_BYTES,
|
|
263
|
+
fetcher: this.#fetcher,
|
|
264
|
+
});
|
|
265
|
+
return parseGeodisTrackingResponse(parseJsonBytes(bytes, PROVIDER), trackingNumber);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
export const adapter = (environment) => {
|
|
269
|
+
const tracker = new GeodisTracker({ fetcher: environment.fetcher });
|
|
270
|
+
return {
|
|
271
|
+
id: 'geodis',
|
|
272
|
+
steps: ['direct'],
|
|
273
|
+
track: (input) => tracker.fetch(input.number),
|
|
274
|
+
};
|
|
275
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "geodis",
|
|
3
|
+
"displayName": "GEODIS",
|
|
4
|
+
"aliases": [],
|
|
5
|
+
"region": {
|
|
6
|
+
"countries": [
|
|
7
|
+
"FR"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"brand": {
|
|
11
|
+
"color": "#00549f"
|
|
12
|
+
},
|
|
13
|
+
"selectable": true,
|
|
14
|
+
"timezone": "Europe/Paris",
|
|
15
|
+
"tracking": {
|
|
16
|
+
"mode": "automatic",
|
|
17
|
+
"adapter": "geodis",
|
|
18
|
+
"steps": [
|
|
19
|
+
"direct"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"capabilities": [
|
|
23
|
+
"history",
|
|
24
|
+
"location",
|
|
25
|
+
"eta"
|
|
26
|
+
],
|
|
27
|
+
"portal": {
|
|
28
|
+
"url": "https://espace-client.geodis.com/services/destinataires/#/fr/suivi/{trackingNumber}",
|
|
29
|
+
"canaryUrl": "https://espace-client.geodis.com/services/destinataires/",
|
|
30
|
+
"shows": [
|
|
31
|
+
"status",
|
|
32
|
+
"history",
|
|
33
|
+
"location",
|
|
34
|
+
"eta",
|
|
35
|
+
"sender_name",
|
|
36
|
+
"recipient_name",
|
|
37
|
+
"recipient_address",
|
|
38
|
+
"delivery_instructions",
|
|
39
|
+
"proof_of_delivery"
|
|
40
|
+
],
|
|
41
|
+
"scraped": [
|
|
42
|
+
"status",
|
|
43
|
+
"history",
|
|
44
|
+
"location",
|
|
45
|
+
"eta"
|
|
46
|
+
],
|
|
47
|
+
"discarded": [
|
|
48
|
+
"sender_name",
|
|
49
|
+
"recipient_name",
|
|
50
|
+
"recipient_address",
|
|
51
|
+
"delivery_instructions",
|
|
52
|
+
"proof_of_delivery"
|
|
53
|
+
],
|
|
54
|
+
"unavailable": []
|
|
55
|
+
},
|
|
56
|
+
"links": [
|
|
57
|
+
{
|
|
58
|
+
"domains": [
|
|
59
|
+
"espace-client.geodis.com",
|
|
60
|
+
"geodis.com"
|
|
61
|
+
],
|
|
62
|
+
"params": [
|
|
63
|
+
"noSuivi",
|
|
64
|
+
"trackingNumber"
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"detection": [
|
|
69
|
+
{
|
|
70
|
+
"id": "geodis-1",
|
|
71
|
+
"pattern": "^1G[A-Z0-9]{10}$",
|
|
72
|
+
"confidence": "high"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"carrier": "geodis",
|
|
3
|
+
"records": [
|
|
4
|
+
{
|
|
5
|
+
"number": "1G123GEODIS0",
|
|
6
|
+
"role": "shipment",
|
|
7
|
+
"evidence": "synthetic",
|
|
8
|
+
"derivedFrom": "official_shape",
|
|
9
|
+
"shapeConfirmed": "2026-09-12",
|
|
10
|
+
"expect": {
|
|
11
|
+
"carrier": "geodis",
|
|
12
|
+
"confidence": "high"
|
|
13
|
+
},
|
|
14
|
+
"note": "Made-up number that follows the published format."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"number": "1G25S92Z3AW7",
|
|
18
|
+
"role": "shipment",
|
|
19
|
+
"evidence": "public_shipment_report",
|
|
20
|
+
"source": {
|
|
21
|
+
"url": "https://www.trustpilot.com/reviews/6a114cf1ee0c53c0f1aec420",
|
|
22
|
+
"date": "2026-05-23"
|
|
23
|
+
},
|
|
24
|
+
"expect": {
|
|
25
|
+
"carrier": "geodis",
|
|
26
|
+
"confidence": "high"
|
|
27
|
+
},
|
|
28
|
+
"note": "Publicly reported shipment number; the attribution was not independently verified."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"number": "1GWSKFLSKX4Y",
|
|
32
|
+
"role": "shipment",
|
|
33
|
+
"evidence": "public_shipment_report",
|
|
34
|
+
"source": {
|
|
35
|
+
"url": "https://suivi-colis.org/espacedestinataire-livraison-geodis/",
|
|
36
|
+
"date": "2023-08-30"
|
|
37
|
+
},
|
|
38
|
+
"expect": {
|
|
39
|
+
"carrier": "geodis",
|
|
40
|
+
"confidence": "high"
|
|
41
|
+
},
|
|
42
|
+
"note": "Publicly reported shipment number; the attribution was not independently verified."
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GEODIS wording classifier.
|
|
3
|
+
*
|
|
4
|
+
* The anonymous recipient endpoint returns French sentences (`libelleSuivi` per
|
|
5
|
+
* scan, `libelle` per timeline step) and no status code, so wording is the only
|
|
6
|
+
* thing to map. Text is compared with accents, case and punctuation removed.
|
|
7
|
+
*
|
|
8
|
+
* Order matters and is the whole point of this file: "va être livré" and "en
|
|
9
|
+
* cours de livraison" both contain "livré", so the future-delivery and
|
|
10
|
+
* out-for-delivery groups are checked before the delivered group, and the
|
|
11
|
+
* delivered group itself is anchored (start of sentence, "a été livré", or a
|
|
12
|
+
* parcel noun immediately before the participle) instead of a bare substring.
|
|
13
|
+
* Wording that matches nothing stays unmapped: the adapter emits the scan with
|
|
14
|
+
* no stage and the sync classifies it.
|
|
15
|
+
*/
|
|
16
|
+
import type { CarrierStatus } from '../../core/result/index.js';
|
|
17
|
+
import type { Stage } from '../../generated/catalog.js';
|
|
18
|
+
export interface ClassifiedStatus {
|
|
19
|
+
status: CarrierStatus;
|
|
20
|
+
/** Absent when no rule matched: the sync's classifier decides instead. */
|
|
21
|
+
stage?: Stage;
|
|
22
|
+
}
|
|
23
|
+
/** Lowercase, strip accents, and reduce anything that is not a letter or digit to one space. */
|
|
24
|
+
export declare function comparableText(value: string): string;
|
|
25
|
+
export declare function includesAny(value: string, phrases: readonly string[]): boolean;
|
|
26
|
+
export declare const RETURNED_PHRASES: readonly ["retour a l expediteur", "retourne a l expediteur", "retour expediteur"];
|
|
27
|
+
export declare const FAILED_ATTEMPT_PHRASES: readonly ["non livre", "impossible de livrer", "echec de livraison", "livraison echouee", "destinataire absent"];
|
|
28
|
+
/** Carrier-reported problems that are neither a missed attempt nor a return. */
|
|
29
|
+
export declare const EXCEPTION_PHRASES: readonly ["incident", "anomalie", "avarie", "endommage", "refuse"];
|
|
30
|
+
export declare const READY_FOR_PICKUP_PHRASES: readonly ["pret a etre retire", "disponible pour retrait", "mis a disposition", "a retirer en agence", "retrait disponible"];
|
|
31
|
+
export declare const OUT_FOR_DELIVERY_PHRASES: readonly ["en cours de livraison", "livraison en cours", "en distribution", "tournee de livraison", "conducteur en route"];
|
|
32
|
+
/** Announcements of a delivery still to come; checked before the delivered rules. */
|
|
33
|
+
export declare const FUTURE_DELIVERY_PHRASES: readonly ["va etre livre", "sera livre", "doit etre livre", "pret a etre livre"];
|
|
34
|
+
export declare const DELIVERED_PHRASES: readonly ["livraison effectuee", "remis au destinataire", "retire par le destinataire"];
|
|
35
|
+
export declare const REGISTERED_PHRASES: readonly ["en attente de recuperation", "en attente de prise en charge", "information transmise", "commande recue", "enregistre"];
|
|
36
|
+
export declare const IN_TRANSIT_PHRASES: readonly ["pris en charge", "acheminement", "en transit", "arrive", "depart", "agence", "centre", "transport"];
|
|
37
|
+
export declare function classifyStatus(description: string): ClassifiedStatus;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { clean } from '../../core/transport/index.js';
|
|
2
|
+
/** Lowercase, strip accents, and reduce anything that is not a letter or digit to one space. */
|
|
3
|
+
export function comparableText(value) {
|
|
4
|
+
return clean(value)
|
|
5
|
+
.toLocaleLowerCase('fr-FR')
|
|
6
|
+
.normalize('NFD')
|
|
7
|
+
.replace(/\p{Diacritic}/gu, '')
|
|
8
|
+
.replace(/[^\p{Letter}\p{Number}]+/gu, ' ')
|
|
9
|
+
.replace(/\s+/g, ' ')
|
|
10
|
+
.trim();
|
|
11
|
+
}
|
|
12
|
+
export function includesAny(value, phrases) {
|
|
13
|
+
return phrases.some((phrase) => value.includes(phrase));
|
|
14
|
+
}
|
|
15
|
+
export const RETURNED_PHRASES = [
|
|
16
|
+
'retour a l expediteur',
|
|
17
|
+
'retourne a l expediteur',
|
|
18
|
+
'retour expediteur',
|
|
19
|
+
];
|
|
20
|
+
export const FAILED_ATTEMPT_PHRASES = [
|
|
21
|
+
'non livre',
|
|
22
|
+
'impossible de livrer',
|
|
23
|
+
'echec de livraison',
|
|
24
|
+
'livraison echouee',
|
|
25
|
+
'destinataire absent',
|
|
26
|
+
];
|
|
27
|
+
/** Carrier-reported problems that are neither a missed attempt nor a return. */
|
|
28
|
+
export const EXCEPTION_PHRASES = [
|
|
29
|
+
'incident',
|
|
30
|
+
'anomalie',
|
|
31
|
+
'avarie',
|
|
32
|
+
'endommage',
|
|
33
|
+
'refuse',
|
|
34
|
+
];
|
|
35
|
+
export const READY_FOR_PICKUP_PHRASES = [
|
|
36
|
+
'pret a etre retire',
|
|
37
|
+
'disponible pour retrait',
|
|
38
|
+
'mis a disposition',
|
|
39
|
+
'a retirer en agence',
|
|
40
|
+
'retrait disponible',
|
|
41
|
+
];
|
|
42
|
+
export const OUT_FOR_DELIVERY_PHRASES = [
|
|
43
|
+
'en cours de livraison',
|
|
44
|
+
'livraison en cours',
|
|
45
|
+
'en distribution',
|
|
46
|
+
'tournee de livraison',
|
|
47
|
+
'conducteur en route',
|
|
48
|
+
];
|
|
49
|
+
/** Announcements of a delivery still to come; checked before the delivered rules. */
|
|
50
|
+
export const FUTURE_DELIVERY_PHRASES = [
|
|
51
|
+
'va etre livre',
|
|
52
|
+
'sera livre',
|
|
53
|
+
'doit etre livre',
|
|
54
|
+
'pret a etre livre',
|
|
55
|
+
];
|
|
56
|
+
export const DELIVERED_PHRASES = [
|
|
57
|
+
'livraison effectuee',
|
|
58
|
+
'remis au destinataire',
|
|
59
|
+
'retire par le destinataire',
|
|
60
|
+
];
|
|
61
|
+
const DELIVERED_PATTERNS = [
|
|
62
|
+
/^(?:livre|livree|livres|livrees)\b/,
|
|
63
|
+
/\b(?:a ete|est) (?:livre|livree|livres|livrees)\b/,
|
|
64
|
+
/\b(?:colis|courrier|envoi|pli) (?:livre|livree|livres|livrees)\b/,
|
|
65
|
+
];
|
|
66
|
+
export const REGISTERED_PHRASES = [
|
|
67
|
+
'en attente de recuperation',
|
|
68
|
+
'en attente de prise en charge',
|
|
69
|
+
'information transmise',
|
|
70
|
+
'commande recue',
|
|
71
|
+
'enregistre',
|
|
72
|
+
];
|
|
73
|
+
export const IN_TRANSIT_PHRASES = [
|
|
74
|
+
'pris en charge',
|
|
75
|
+
'acheminement',
|
|
76
|
+
'en transit',
|
|
77
|
+
'arrive',
|
|
78
|
+
'depart',
|
|
79
|
+
'agence',
|
|
80
|
+
'centre',
|
|
81
|
+
'transport',
|
|
82
|
+
];
|
|
83
|
+
export function classifyStatus(description) {
|
|
84
|
+
const value = comparableText(description);
|
|
85
|
+
if (includesAny(value, RETURNED_PHRASES))
|
|
86
|
+
return { status: 'exception', stage: 'returned' };
|
|
87
|
+
if (includesAny(value, EXCEPTION_PHRASES))
|
|
88
|
+
return { status: 'exception', stage: 'exception' };
|
|
89
|
+
if (includesAny(value, FAILED_ATTEMPT_PHRASES))
|
|
90
|
+
return { status: 'exception', stage: 'failed_attempt' };
|
|
91
|
+
if (includesAny(value, READY_FOR_PICKUP_PHRASES))
|
|
92
|
+
return { status: 'out_for_delivery', stage: 'ready_for_pickup' };
|
|
93
|
+
if (includesAny(value, OUT_FOR_DELIVERY_PHRASES))
|
|
94
|
+
return { status: 'out_for_delivery', stage: 'out_for_delivery' };
|
|
95
|
+
if (includesAny(value, FUTURE_DELIVERY_PHRASES))
|
|
96
|
+
return { status: 'in_transit', stage: 'in_transit' };
|
|
97
|
+
if (DELIVERED_PATTERNS.some((pattern) => pattern.test(value)) || includesAny(value, DELIVERED_PHRASES)) {
|
|
98
|
+
return { status: 'delivered', stage: 'delivered' };
|
|
99
|
+
}
|
|
100
|
+
if (includesAny(value, REGISTERED_PHRASES))
|
|
101
|
+
return { status: 'pending', stage: 'registered' };
|
|
102
|
+
if (includesAny(value, IN_TRANSIT_PHRASES))
|
|
103
|
+
return { status: 'in_transit', stage: 'in_transit' };
|
|
104
|
+
return { status: 'unknown' };
|
|
105
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"carrier": "geodis",
|
|
3
|
+
"entries": [
|
|
4
|
+
{ "wording": "retour à l'expéditeur", "language": "fr", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Matched as a substring, accents and punctuation removed." },
|
|
5
|
+
{ "wording": "retourné à l'expéditeur", "language": "fr", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
6
|
+
{ "wording": "retour expéditeur", "language": "fr", "stage": "returned", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
7
|
+
{ "wording": "non livré", "language": "fr", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Checked before the delivered rules so the negation wins." },
|
|
8
|
+
{ "wording": "impossible de livrer", "language": "fr", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
9
|
+
{ "wording": "échec de livraison", "language": "fr", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
10
|
+
{ "wording": "livraison échouée", "language": "fr", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
11
|
+
{ "wording": "incident", "language": "fr", "stage": "exception", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Reclassified to exception 2026-09-12." },
|
|
12
|
+
{ "wording": "anomalie", "language": "fr", "stage": "exception", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Reclassified to exception 2026-09-12." },
|
|
13
|
+
{ "wording": "avarie", "language": "fr", "stage": "exception", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Reclassified to exception 2026-09-12." },
|
|
14
|
+
{ "wording": "endommagé", "language": "fr", "stage": "exception", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Reclassified to exception 2026-09-12." },
|
|
15
|
+
{ "wording": "refusé", "language": "fr", "stage": "exception", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Reclassified to exception 2026-09-12." },
|
|
16
|
+
{ "wording": "destinataire absent", "language": "fr", "stage": "failed_attempt", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
17
|
+
{ "wording": "prêt à être retiré", "language": "fr", "stage": "ready_for_pickup", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
18
|
+
{ "wording": "disponible pour retrait", "language": "fr", "stage": "ready_for_pickup", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Seen as the active timeline label \"Disponible pour retrait en agence\"." },
|
|
19
|
+
{ "wording": "mis à disposition", "language": "fr", "stage": "ready_for_pickup", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
20
|
+
{ "wording": "à retirer en agence", "language": "fr", "stage": "ready_for_pickup", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
21
|
+
{ "wording": "retrait disponible", "language": "fr", "stage": "ready_for_pickup", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
22
|
+
{ "wording": "en cours de livraison", "language": "fr", "stage": "out_for_delivery", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Also the active timeline label of a shipment on the round." },
|
|
23
|
+
{ "wording": "livraison en cours", "language": "fr", "stage": "out_for_delivery", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
24
|
+
{ "wording": "en distribution", "language": "fr", "stage": "out_for_delivery", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
25
|
+
{ "wording": "tournée de livraison", "language": "fr", "stage": "out_for_delivery", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
26
|
+
{ "wording": "conducteur en route", "language": "fr", "stage": "out_for_delivery", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
27
|
+
{ "wording": "va être livré", "language": "fr", "stage": "in_transit", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "An announcement, not a delivery; checked before the delivered rules." },
|
|
28
|
+
{ "wording": "sera livré", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
29
|
+
{ "wording": "doit être livré", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
30
|
+
{ "wording": "prêt à être livré", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
31
|
+
{ "wording": "livré (au début du libellé)", "language": "fr", "stage": "delivered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Anchored rule: the participle starts the sentence, in any of its four written forms." },
|
|
32
|
+
{ "wording": "a été livré / est livré", "language": "fr", "stage": "delivered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Anchored rule." },
|
|
33
|
+
{ "wording": "colis / courrier / envoi / pli livré", "language": "fr", "stage": "delivered", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Anchored rule: a parcel noun immediately before the participle." },
|
|
34
|
+
{ "wording": "livraison effectuée", "language": "fr", "stage": "delivered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
35
|
+
{ "wording": "remis au destinataire", "language": "fr", "stage": "delivered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
36
|
+
{ "wording": "retiré par le destinataire", "language": "fr", "stage": "delivered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
37
|
+
{ "wording": "en attente de récupération", "language": "fr", "stage": "registered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
38
|
+
{ "wording": "en attente de prise en charge", "language": "fr", "stage": "registered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
39
|
+
{ "wording": "information transmise", "language": "fr", "stage": "registered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
40
|
+
{ "wording": "commande reçue", "language": "fr", "stage": "registered", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
41
|
+
{ "wording": "enregistré", "language": "fr", "stage": "registered", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "First timeline step of the shipment." },
|
|
42
|
+
{ "wording": "pris en charge", "language": "fr", "stage": "in_transit", "confirmedBy": "fixture", "firstSeen": "2026-09-12", "note": "Seen as \"Envoi pris en charge\"." },
|
|
43
|
+
{ "wording": "acheminement", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
44
|
+
{ "wording": "en transit", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "" },
|
|
45
|
+
{ "wording": "arrivé", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Broad last-resort rule; only reached when no earlier group matched." },
|
|
46
|
+
{ "wording": "départ", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Broad last-resort rule." },
|
|
47
|
+
{ "wording": "agence", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Broad last-resort rule." },
|
|
48
|
+
{ "wording": "centre", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Broad last-resort rule." },
|
|
49
|
+
{ "wording": "transport", "language": "fr", "stage": "in_transit", "confirmedBy": "official-doc", "firstSeen": "2026-09-12", "note": "Broad last-resort rule." }
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AdapterFactory } from '../../core/adapter/index.js';
|
|
2
|
+
import { NotFoundError } from '../../core/errors/index.js';
|
|
3
|
+
import type { CarrierResult } from '../../core/result/index.js';
|
|
4
|
+
import { type JsonObject } from '../../core/types.js';
|
|
5
|
+
export { glsSwitzerlandStatus } from './status.js';
|
|
6
|
+
export interface GLSSwitzerlandOptions {
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
now?: () => number;
|
|
9
|
+
/** Test seam; production uses the global fetch. */
|
|
10
|
+
fetcher?: typeof fetch;
|
|
11
|
+
}
|
|
12
|
+
/** Kept as a named class: the German folder narrows on it with `instanceof`. */
|
|
13
|
+
export declare class GLSSwitzerlandTrackingError extends NotFoundError {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
export declare function normalizeGLSSwitzerlandTrackingNumber(raw: string): string;
|
|
17
|
+
export declare function normalizeGLSSwitzerlandPostcode(raw: string, digits?: 4 | 5 | '4,5'): string;
|
|
18
|
+
export declare function glsSwitzerlandTrackingUrl(rawTrackingNumber: string): string;
|
|
19
|
+
export declare function glsSwitzerlandOverviewApiUrl(rawTrackingNumber: string, millis?: number): string;
|
|
20
|
+
export declare function glsSwitzerlandDetailApiUrl(rawParcelNumber: string, rawPostcode: string, millis?: number, ownerCode?: string, postcodeDigits?: 4 | 5 | '4,5'): string;
|
|
21
|
+
export declare function selectGLSParcel(payload: unknown, rawTrackingNumber: string): JsonObject;
|
|
22
|
+
export declare function parseGLSSwitzerlandTrackingResponse(payload: unknown, rawTrackingNumber: string): CarrierResult;
|
|
23
|
+
export declare class GLSSwitzerlandTracker {
|
|
24
|
+
#private;
|
|
25
|
+
readonly timeoutMs: number;
|
|
26
|
+
readonly now: () => number;
|
|
27
|
+
constructor(options?: number | GLSSwitzerlandOptions);
|
|
28
|
+
fetch(rawTrackingNumber: string, rawPostcode?: string): Promise<CarrierResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Whether GLS knows a number, from the overview alone: no postcode is sent.
|
|
31
|
+
* Only a 404 whose body carries GLS's `lastError: E000` is a not-found here;
|
|
32
|
+
* a 400 or 403 can be a challenge, so it stays a failure.
|
|
33
|
+
*/
|
|
34
|
+
recognizes(rawTrackingNumber: string): Promise<boolean>;
|
|
35
|
+
private request;
|
|
36
|
+
}
|
|
37
|
+
/** Keep the verified overview's delivery owner when the postcode detail omits it. */
|
|
38
|
+
export declare function glsDeliveryReference(result: CarrierResult): Partial<CarrierResult>;
|
|
39
|
+
export declare const adapter: AdapterFactory;
|