universal-parcel-scraper 0.415.0-main.2136 → 0.417.1-main.2143
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/README.md +3 -3
- package/data/catalog.json +39 -2
- package/data/coverage-summary.json +2 -2
- package/data/detection-golden.json +22 -0
- package/dist/browser/scraper.js +35 -3
- package/dist/carriers/australia-post/adapter.js +1 -1
- package/dist/carriers/fedex-freight/carrier.json +46 -0
- package/dist/carriers/fedex-freight/numbers.json +33 -0
- package/dist/carriers/fedex-freight/statuses.json +4 -0
- package/dist/carriers/sapx-express/adapter.d.ts +14 -0
- package/dist/carriers/sapx-express/adapter.js +56 -0
- package/dist/carriers/sapx-express/carrier.json +52 -7
- package/dist/carriers/sapx-express/numbers.json +4 -3
- package/dist/carriers/sapx-express/parser.d.ts +15 -0
- package/dist/carriers/sapx-express/parser.js +170 -0
- package/dist/carriers/sapx-express/status.d.ts +12 -0
- package/dist/carriers/sapx-express/status.js +51 -0
- package/dist/carriers/sapx-express/statuses.json +5 -0
- package/dist/carriers/sendex/adapter.d.ts +14 -0
- package/dist/carriers/sendex/adapter.js +54 -0
- package/dist/carriers/sendex/carrier.json +56 -7
- package/dist/carriers/sendex/numbers.json +21 -21
- package/dist/carriers/sendex/parser.d.ts +13 -0
- package/dist/carriers/sendex/parser.js +168 -0
- package/dist/carriers/sendex/status.d.ts +8 -0
- package/dist/carriers/sendex/status.js +54 -0
- package/dist/carriers/sendex/statuses.json +16 -5
- package/dist/core/catalog/statusMaps.js +5 -2
- package/dist/data/catalog.json +39 -2
- package/dist/generated/catalog.d.ts +28 -3
- package/dist/generated/catalog.js +41 -2
- package/dist/generated/recognition.js +2 -0
- package/dist/generated/registry.js +7 -2
- package/dist/server/openapi.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,9 +13,9 @@ The engine behind [Peek](https://peektracker.com) ([GitHub](https://github.com/p
|
|
|
13
13
|
[](LICENSE)
|
|
14
14
|
|
|
15
15
|
<!-- GENERATED:summary -->
|
|
16
|
-
**3,500+ carriers** through **
|
|
16
|
+
**3,500+ carriers** through **452 dedicated adapters** and **5 universal fallbacks**
|
|
17
17
|
|
|
18
|
-
<sub>
|
|
18
|
+
<sub>761 catalog entries · 134 countries represented</sub>
|
|
19
19
|
<!-- /GENERATED:summary -->
|
|
20
20
|
|
|
21
21
|
[Try it](#try-it) · [Ways to run it](#ways-to-run-it) · [Benchmark](#benchmark) · [Carriers](carriers/) · [Add a carrier](CONTRIBUTING.md)
|
|
@@ -155,7 +155,7 @@ createTracker({ providers: ['ParcelsApp', 'Ship24', '17TRACK', 'Postal Ninja', '
|
|
|
155
155
|
<!-- GENERATED:stages -->
|
|
156
156
|
<img src="docs/assets/stages.svg" alt="DHL: Die Sendung wurde in das Zustellfahrzeug geladen.; Mondial Relay: En cours de livraison; Correios Brazil: Objeto saiu para entrega ao destinatário; Correos Express: EN REPARTO; Yamato Transport: 配達中; La Poste / Colissimo: DISTOU. All are filed under out_for_delivery." width="760">
|
|
157
157
|
|
|
158
|
-
The carrier folders record 14,
|
|
158
|
+
The carrier folders record 14,316 such statuses, each filed under one stage.
|
|
159
159
|
<!-- /GENERATED:stages -->
|
|
160
160
|
|
|
161
161
|
Wording nobody recorded yet goes through a classifier that reads seven European languages.
|
package/data/catalog.json
CHANGED
|
@@ -13312,6 +13312,39 @@
|
|
|
13312
13312
|
],
|
|
13313
13313
|
"detectionRules": []
|
|
13314
13314
|
},
|
|
13315
|
+
"fedex-freight": {
|
|
13316
|
+
"displayName": "FedEx Freight",
|
|
13317
|
+
"color": "#de002e",
|
|
13318
|
+
"aliases": [
|
|
13319
|
+
"FedEx Freight LTL"
|
|
13320
|
+
],
|
|
13321
|
+
"countries": [
|
|
13322
|
+
"US",
|
|
13323
|
+
"CA",
|
|
13324
|
+
"MX"
|
|
13325
|
+
],
|
|
13326
|
+
"selectable": true,
|
|
13327
|
+
"timezone": "America/Chicago",
|
|
13328
|
+
"tracking": {
|
|
13329
|
+
"mode": "automatic",
|
|
13330
|
+
"adapter": "universal"
|
|
13331
|
+
},
|
|
13332
|
+
"canaryUrl": "https://www.fedexfreight.com/en-us/tracking",
|
|
13333
|
+
"trackingUrlTemplate": "https://www.fedexfreight.com/fedextrack/?trknbr={trackingNumber}",
|
|
13334
|
+
"trackingSearchUrl": "https://www.fedexfreight.com/en-us/tracking",
|
|
13335
|
+
"linkRules": [
|
|
13336
|
+
{
|
|
13337
|
+
"domains": [
|
|
13338
|
+
"www.fedexfreight.com"
|
|
13339
|
+
],
|
|
13340
|
+
"pathPattern": "^/fedextrack/?$",
|
|
13341
|
+
"params": [
|
|
13342
|
+
"trknbr"
|
|
13343
|
+
]
|
|
13344
|
+
}
|
|
13345
|
+
],
|
|
13346
|
+
"detectionRules": []
|
|
13347
|
+
},
|
|
13315
13348
|
"fedex-pl": {
|
|
13316
13349
|
"displayName": "FedEx Poland",
|
|
13317
13350
|
"color": "#4d148c",
|
|
@@ -24782,7 +24815,9 @@
|
|
|
24782
24815
|
"timezone": "Asia/Jakarta",
|
|
24783
24816
|
"tracking": {
|
|
24784
24817
|
"mode": "automatic",
|
|
24785
|
-
"adapter": "
|
|
24818
|
+
"adapter": "sapx-express",
|
|
24819
|
+
"recognitionRank": 795,
|
|
24820
|
+
"localClocks": true
|
|
24786
24821
|
},
|
|
24787
24822
|
"canaryUrl": "https://www.sapx.id/id/cek-awb",
|
|
24788
24823
|
"trackingUrlTemplate": "https://www.sapx.id/id/cek-awb/{trackingNumber}",
|
|
@@ -25074,7 +25109,9 @@
|
|
|
25074
25109
|
"timezone": "America/Mexico_City",
|
|
25075
25110
|
"tracking": {
|
|
25076
25111
|
"mode": "automatic",
|
|
25077
|
-
"adapter": "
|
|
25112
|
+
"adapter": "sendex",
|
|
25113
|
+
"recognitionRank": 794,
|
|
25114
|
+
"localClocks": true
|
|
25078
25115
|
},
|
|
25079
25116
|
"canaryUrl": "https://sendex.coordi.com/rastreo/",
|
|
25080
25117
|
"trackingSearchUrl": "https://sendex.coordi.com/rastreo/",
|
|
@@ -7684,6 +7684,28 @@
|
|
|
7684
7684
|
"ecoscooting"
|
|
7685
7685
|
]
|
|
7686
7686
|
},
|
|
7687
|
+
{
|
|
7688
|
+
"input": "0585862594",
|
|
7689
|
+
"carrier": "unknown",
|
|
7690
|
+
"confidence": "low",
|
|
7691
|
+
"candidates": [
|
|
7692
|
+
"dhl-express",
|
|
7693
|
+
"dhl",
|
|
7694
|
+
"mondial-relay",
|
|
7695
|
+
"relais-colis",
|
|
7696
|
+
"tipsa",
|
|
7697
|
+
"estafeta",
|
|
7698
|
+
"dhl-ecommerce-es"
|
|
7699
|
+
],
|
|
7700
|
+
"preferred": [
|
|
7701
|
+
"dhl-express"
|
|
7702
|
+
],
|
|
7703
|
+
"asked": [
|
|
7704
|
+
"dhl-express",
|
|
7705
|
+
"relais-colis",
|
|
7706
|
+
"dhl-ecommerce-es"
|
|
7707
|
+
]
|
|
7708
|
+
},
|
|
7687
7709
|
{
|
|
7688
7710
|
"input": "06028364905",
|
|
7689
7711
|
"carrier": "unknown",
|
package/dist/browser/scraper.js
CHANGED
|
@@ -10275,6 +10275,31 @@ var Re = {
|
|
|
10275
10275
|
}],
|
|
10276
10276
|
detectionRules: []
|
|
10277
10277
|
},
|
|
10278
|
+
"fedex-freight": {
|
|
10279
|
+
displayName: "FedEx Freight",
|
|
10280
|
+
color: "#de002e",
|
|
10281
|
+
aliases: ["FedEx Freight LTL"],
|
|
10282
|
+
countries: [
|
|
10283
|
+
"US",
|
|
10284
|
+
"CA",
|
|
10285
|
+
"MX"
|
|
10286
|
+
],
|
|
10287
|
+
selectable: !0,
|
|
10288
|
+
timezone: "America/Chicago",
|
|
10289
|
+
tracking: {
|
|
10290
|
+
mode: "automatic",
|
|
10291
|
+
adapter: "universal"
|
|
10292
|
+
},
|
|
10293
|
+
canaryUrl: "https://www.fedexfreight.com/en-us/tracking",
|
|
10294
|
+
trackingUrlTemplate: "https://www.fedexfreight.com/fedextrack/?trknbr={trackingNumber}",
|
|
10295
|
+
trackingSearchUrl: "https://www.fedexfreight.com/en-us/tracking",
|
|
10296
|
+
linkRules: [{
|
|
10297
|
+
domains: ["www.fedexfreight.com"],
|
|
10298
|
+
pathPattern: "^/fedextrack/?$",
|
|
10299
|
+
params: ["trknbr"]
|
|
10300
|
+
}],
|
|
10301
|
+
detectionRules: []
|
|
10302
|
+
},
|
|
10278
10303
|
"fedex-pl": {
|
|
10279
10304
|
displayName: "FedEx Poland",
|
|
10280
10305
|
color: "#4d148c",
|
|
@@ -18728,7 +18753,9 @@ var Re = {
|
|
|
18728
18753
|
timezone: "Asia/Jakarta",
|
|
18729
18754
|
tracking: {
|
|
18730
18755
|
mode: "automatic",
|
|
18731
|
-
adapter: "
|
|
18756
|
+
adapter: "sapx-express",
|
|
18757
|
+
recognitionRank: 795,
|
|
18758
|
+
localClocks: !0
|
|
18732
18759
|
},
|
|
18733
18760
|
canaryUrl: "https://www.sapx.id/id/cek-awb",
|
|
18734
18761
|
trackingUrlTemplate: "https://www.sapx.id/id/cek-awb/{trackingNumber}",
|
|
@@ -18947,7 +18974,9 @@ var Re = {
|
|
|
18947
18974
|
timezone: "America/Mexico_City",
|
|
18948
18975
|
tracking: {
|
|
18949
18976
|
mode: "automatic",
|
|
18950
|
-
adapter: "
|
|
18977
|
+
adapter: "sendex",
|
|
18978
|
+
recognitionRank: 794,
|
|
18979
|
+
localClocks: !0
|
|
18951
18980
|
},
|
|
18952
18981
|
canaryUrl: "https://sendex.coordi.com/rastreo/",
|
|
18953
18982
|
trackingSearchUrl: "https://sendex.coordi.com/rastreo/",
|
|
@@ -22739,7 +22768,7 @@ var Re = {
|
|
|
22739
22768
|
rawPattern: "^\\d{2}-[A-Z0-9]{6}(?:[A-Z0-9]|[A-Z0-9]{4})?-ZR$"
|
|
22740
22769
|
}]
|
|
22741
22770
|
}
|
|
22742
|
-
}, ze = /* @__PURE__ */ "swiss-post.swiss-post-cargo.quickpac.planzer.aliexpress.sunyou.hermes.spring-gds.postlogistics.dachser.dhl.dhl-ecommerce.ups.amazon-logistics.amazon-shipping.fedex.gls-ch.dpd.dpd-fr.mondial-relay.relais-colis.la-poste.chronopost.gls-fr.colis-prive.geodis.colisweb.c-chez-vous.heppner.ciblex.paack.asendia.shipup.india-post.hermes-de.gls-de.delivengo.intl-post.unknown.royal-mail.parcelforce.evri.inpost.an-post.bpost.austrian-post.postnord.posti.correos-express.seur.mrw.nacex.ctt.ctt-express.poste-italiane.brt.ecoscooting.tipsa.ukrposhta.usps.canada-post.purolator.canpar.ontrac.speedx.uniuni.landmark-global.old-dominion.spee-dee.gofo.estafeta.correios-br.correos-chile.yunexpress.four-px.blue-dart.delhivery.nz-post.singapore-post.japan-post.sf-express.sto.yunda.yto.zto.jd-logistics.yamato.korea-post.thailand-post.dtdc.australia-post.hongkong-post.pos-malaysia.ninja-van.china-post.packeta.poczta-polska.bring-posten.aramex.tnt.correos-spain.yanwen.the-courier-guy.j-and-t.ems.139express.17feia.247express.2go.4-72.4sides.5post.99minutos.a-duie-pyle.a-tu-hora-express.a1-post.aaa-cooper.ab-courier.abf-freight.aci-express-kr.acs-courier.aeropost.aex-paraguay.afghan-post.air-star-xpress.airpak-express.ajex.akash-ganga.aks-express.alem-tat.algerie-poste.allegro-one.am-home-delivery.ameex.american-west-express.amerijet.ampm.andreani.anjun.anousith.anteraja.ap-cargo.apc-overnight.apc-postal-logistics.apple-express.aramex-au.aramex-nz.aras-kargo.arrow-xl.asyad-express.atlantic-courier.averitt.aymakan.azerpost.azul-cargo.bangladesh-post.barid-al-maghrib.belpost.best-express-my.best-express-vn.best-overnite-express.best-transport.better-trucks.bex-express.big-smart.bjs-home-delivery.blue-express.blueex.bombino.bookurier.border-express.bosta.botswana-post.box-now.bringer-parcel.bts-uz.budbee.buffalo-ex.bulgarian-posts.burd-delivery.bussgods.byhd.c3x.cacesa.campost.cargus.castores.cbl-logistica.ccfs.cdek.cdl.celeritas.central-transport.ceska-posta.ceva-logistics.chazki.chilexpress.chit-chats.chronodiali.chunghwa-post.chunil.city-express-rs.citylink-express.citymail.citysprint.cj-logistics.cj-packet.closer-logistics.cne.codexpress.connect-couriers.coordinadora.copa-courier.corre.correo-argentino.correo-uruguayo.correos-bolivia.correos-cuba.correos-de-mexico.correos-el-salvador.correos-nicaragua.courier-center.courier-it.courier-plus-ng.couriersplease.credifin.cruz-del-sur.cse-russia.cst-italia.cttyex.custom-companies.cycloon.cyprus-post.d-express.daewoo-fastex.dai-post.daily-xpress.danske-fragtmaend.dao.day-ross.daylight-transport.dayton-freight.dellin.delnext.deppon.deprisa.designer-transport.dhl-ecommerce-es.dhl-ecommerce-nl.dhl-ecommerce-pl.dhl-ecommerce-uk.dhl-express.dhl-freight.dhlink.direct-couriers.direct-freight-express.direx.dnx-cargo.dobropost.dohrn-transfer.domain-logistics.domex.dpd-at.dpd-be.dpd-de.dpd-ie.dpd-nl.dpd-pl.dpd-pt.dpd-uk.dpd-za.dpex.dragon-star-curier.drop2shop.dropp.dsv.dx.dynalogic.early-bird.easy-mail.ecms-express.eco-express-ae.econt.ecourier.egypt-post.ekart.elta.emile.emirates-post.ems-vietnam.energia-tk.energo.envia-colombia.envialia.eparcel-kr.epost-global.equick.estes.estes-forwarding.ethiopian-post.eurodis.euroexpress-ba.europochta.evdemo-lojistik.evri-uk.evropat.ewe.exelot.exline-kz.exmate.express-one.fan-courier.fargo-courier.fargo-uz.fastdrop.fastfrate.fedex-pl.fermopoint.fg-delivery.first-delivery-tn.first-fly-express.flash-express.flash-express-ph.fleetex.fleetoptics.flippost.fliway.flyking.followmont.forward-air.forza-delivery.foxpost.franch-express.fukuyama.gaash.gati.gdex.gebrueder-weiss.geis.gel-express.geniki-taxydromiki.geodis-pl.ghana-post.ghn.ghtk.globalpost.gls-at.gls-es.gls-it.gls-pl.gms-worldwide.go-express.go4.gobolt.gofo-fr.gofo-it.gofo-nl.gogo-xpress.goodluck-courier.grand-slam-express.groupe-guilbault.gs-postbox.gsi-express.gta-airskip.gtl-goto.guatex.gzyl.hanjin.hapdong.happy-post.haypost.hct-logistics.helthjem.hepsijet.hercules-freight.hermes-at.hi-trans.hispapost.homexpress.horoz.hound-express.houng-ah-loun.hovership.hp-mostar.hr-parcel.hrvatska-posta.hunter-express.hywl.icc-worldwide.icl-express.ics-courier.idexpress.ids-logistik.ilyang-logis.imile.indah-logistik.instabox.integral-pack.intelcom.inter-courier.intereuropa.internet-express.interrapidisimo.intex-paketdienst.iran-post.israel-post.j-and-t-br.j-and-t-cargo.j-and-t-cn.j-and-t-middle-east.j-and-t-mx.jadlog.jamaica-post.janio.jeebly.jersey-post.jet-logistic.jetline-couriers.jhgj.jitsu.jne.jordan-post.jrs-express.jrt.js-express.kargoist.kazpost.kerry-tj.kex.kex-express-hk.kit-tk.kolay-gelsin.kronos-express.ktd.kuehne-nagel.kunyoung.kwick-box.kyoungdong.kyrgyz-post.l-post.la-poste-burkina-faso.la-poste-ci.la-poste-senegal.la-poste-tunisienne.laar-courier.labaih.lao-post.last-one-mile-coop.latvijas-pasts.lbc-express.leopards-courier.libanpost.liccardi.lietuvos-pastas.lightning-express.line-clear.linhan.lion-parcel.logen.loggi.logistiq.logoix.loomis-express.lotte-global.lso.m-and-p.m-one.madhur-courier.magyar-posta.mailamericas.mailplus-au.mainfreight.major-express.makati-express.maltapost.mandae.maritime-ontario.maruti-air.matkahuolto.mauritius-post.mayiyinfu.mds-collivery.meest.messenger-cz.method.metropolitan-warehouse.micro-express.midland-transport.mng-kargo.mongol-infinity-post.montenegro-post.morning-global.mrl-global.mtscn.mylerz.naqel.nationex.ncs-courier.neighbour-express.nepal-post.netpost-vn.next-level-delivery.nhat-tin.nim-express.nipost.nippon-express.noest.nord-wheel.norsk-global.northline.nova-global.nova-poshta.nox.nz-couriers.oak-harbor.oca.ocasa.ocs-ana.olva-courier.omgo.omniva.one-world-express.opt-nc.orian.orlen-paczka.osm-worldwide.overseas-express.ozon-logistics.pack-man.packli-punkt.packlink.packs.pakistan-post.palletways.pandu-logistics.pannon-xp.paperfly.paquetexpress.parcelpoint.pargo.passport.pathao-courier.pavan-courier.paxel.paxi.pbt.pcp-express.pcs-logistics-vn.pdn-express.pdq-chile.pecom.peddler.pelican-express.peqasus-az.pfc-express.phlpost.pickupp.pickupp-sg.pigeon-express.pilot-freight.pitney-bowes.pitt-ohio.pmm.polaris-transport.pony-express.pos-indonesia.post-haste.post-luxembourg.posta-faroe.posta-kenya.posta-moldovei.posta-north-macedonia.posta-romana.posta-shqiptare.posta-slovenije.posta-srbije.postaplus.postex.postmedia-parcel-services.postplus.posturinn.ppl.precision-deliveries.pro-carrier.professional-couriers.prompt-xpress.pronto-lanka.proships.pts-worldwide-express.ptt.pullman-cargo.pushpak-courier.quantium-solutions.quicksilver-sa.quiqup.raben.ram-hand-to-hand.redpack.redur.redx.relaytech.rivigo.rl-carriers.roadie.roadrunner.royal-express-mm.rpx-hk.rpx-indonesia.rr-express-sg.russian-post.saee.sagawa.sagawa-global.sahara-express.saia.sailpost.sameday.sapx-express.sat-ukraine.saudi-post.sbs-sokuhai.scg-express.seino.seko.sendex.sending.serpost.servientrega.seven-eleven-tw.sfc.shadowfax.shipa.shipblu.shipentegra.shree-anjani.shree-mahabali-express.shree-mahavir.shree-maruti.shree-nandan.sicepat.skroutz-last-mile.skyex-ae.skyking.skynet-sa.skynet-worldwide.slgtrax.slovak-parcel-service.slovenska-posta.smsa-express.south-african-post-office.southeastern-freight-lines.sp-express.speed-and-safe.speedaf.speedex.speedpak.speedy.spx-br.spx-id.spx-my.spx-ph.spx-sg.spx-th.spx-tw.spx-vn.sri-lanka-post.st-courier.stallion-express.starex-az.starken.starlinks.steadfast.straightship.sundarban-courier.surat-kargo.swiftx.t-cat.t-group.tamdis.tanzania-posts.taxydema.tccs.tci-express.tcs-pakistan.tdn.tealca.team-express-ae.team-global-express.tej-couriers.teleship.tfm-express.tforce-freight.tforce-logistics.thhy.tiki.tirupati-courier.tmm-express.tnt-it.today-kr.toptrans.torrestir.total-express.tp-logistics-th.trackon.tracx-logis.trans-o-flex.transaher.transcorp.transmission.transport-rdl.trendyol-express.tsjy.tst-cf-express.tufesa.tusass.tws-express.ubi-smart-parcel.ues-uy.united-delivery-service.united-worldwide-couriers.upaya.urbano.urvaam.uzbekistan-post.valmo.vasp-expresso.veloces.venipak.vestovoy.via-cargo.viettel-post.vimenpaq.vinted-go.vitran-express.vnpost.vozovoz.vrl-logistics.wahana.wanbexpress.ward-trucking.whistl.winion-logis.winit.x-express-ba.x-trac.xde-logistics.xdp.xlcourier.xpo-ltl.xpressbees.yalidine.yc-delivery.yilong-logistics.yimidida.yurtici-kargo.zajil.zeleris.zheldor.zoom-ve.zr-express".split("."), Be = {
|
|
22771
|
+
}, ze = /* @__PURE__ */ "swiss-post.swiss-post-cargo.quickpac.planzer.aliexpress.sunyou.hermes.spring-gds.postlogistics.dachser.dhl.dhl-ecommerce.ups.amazon-logistics.amazon-shipping.fedex.gls-ch.dpd.dpd-fr.mondial-relay.relais-colis.la-poste.chronopost.gls-fr.colis-prive.geodis.colisweb.c-chez-vous.heppner.ciblex.paack.asendia.shipup.india-post.hermes-de.gls-de.delivengo.intl-post.unknown.royal-mail.parcelforce.evri.inpost.an-post.bpost.austrian-post.postnord.posti.correos-express.seur.mrw.nacex.ctt.ctt-express.poste-italiane.brt.ecoscooting.tipsa.ukrposhta.usps.canada-post.purolator.canpar.ontrac.speedx.uniuni.landmark-global.old-dominion.spee-dee.gofo.estafeta.correios-br.correos-chile.yunexpress.four-px.blue-dart.delhivery.nz-post.singapore-post.japan-post.sf-express.sto.yunda.yto.zto.jd-logistics.yamato.korea-post.thailand-post.dtdc.australia-post.hongkong-post.pos-malaysia.ninja-van.china-post.packeta.poczta-polska.bring-posten.aramex.tnt.correos-spain.yanwen.the-courier-guy.j-and-t.ems.139express.17feia.247express.2go.4-72.4sides.5post.99minutos.a-duie-pyle.a-tu-hora-express.a1-post.aaa-cooper.ab-courier.abf-freight.aci-express-kr.acs-courier.aeropost.aex-paraguay.afghan-post.air-star-xpress.airpak-express.ajex.akash-ganga.aks-express.alem-tat.algerie-poste.allegro-one.am-home-delivery.ameex.american-west-express.amerijet.ampm.andreani.anjun.anousith.anteraja.ap-cargo.apc-overnight.apc-postal-logistics.apple-express.aramex-au.aramex-nz.aras-kargo.arrow-xl.asyad-express.atlantic-courier.averitt.aymakan.azerpost.azul-cargo.bangladesh-post.barid-al-maghrib.belpost.best-express-my.best-express-vn.best-overnite-express.best-transport.better-trucks.bex-express.big-smart.bjs-home-delivery.blue-express.blueex.bombino.bookurier.border-express.bosta.botswana-post.box-now.bringer-parcel.bts-uz.budbee.buffalo-ex.bulgarian-posts.burd-delivery.bussgods.byhd.c3x.cacesa.campost.cargus.castores.cbl-logistica.ccfs.cdek.cdl.celeritas.central-transport.ceska-posta.ceva-logistics.chazki.chilexpress.chit-chats.chronodiali.chunghwa-post.chunil.city-express-rs.citylink-express.citymail.citysprint.cj-logistics.cj-packet.closer-logistics.cne.codexpress.connect-couriers.coordinadora.copa-courier.corre.correo-argentino.correo-uruguayo.correos-bolivia.correos-cuba.correos-de-mexico.correos-el-salvador.correos-nicaragua.courier-center.courier-it.courier-plus-ng.couriersplease.credifin.cruz-del-sur.cse-russia.cst-italia.cttyex.custom-companies.cycloon.cyprus-post.d-express.daewoo-fastex.dai-post.daily-xpress.danske-fragtmaend.dao.day-ross.daylight-transport.dayton-freight.dellin.delnext.deppon.deprisa.designer-transport.dhl-ecommerce-es.dhl-ecommerce-nl.dhl-ecommerce-pl.dhl-ecommerce-uk.dhl-express.dhl-freight.dhlink.direct-couriers.direct-freight-express.direx.dnx-cargo.dobropost.dohrn-transfer.domain-logistics.domex.dpd-at.dpd-be.dpd-de.dpd-ie.dpd-nl.dpd-pl.dpd-pt.dpd-uk.dpd-za.dpex.dragon-star-curier.drop2shop.dropp.dsv.dx.dynalogic.early-bird.easy-mail.ecms-express.eco-express-ae.econt.ecourier.egypt-post.ekart.elta.emile.emirates-post.ems-vietnam.energia-tk.energo.envia-colombia.envialia.eparcel-kr.epost-global.equick.estes.estes-forwarding.ethiopian-post.eurodis.euroexpress-ba.europochta.evdemo-lojistik.evri-uk.evropat.ewe.exelot.exline-kz.exmate.express-one.fan-courier.fargo-courier.fargo-uz.fastdrop.fastfrate.fedex-freight.fedex-pl.fermopoint.fg-delivery.first-delivery-tn.first-fly-express.flash-express.flash-express-ph.fleetex.fleetoptics.flippost.fliway.flyking.followmont.forward-air.forza-delivery.foxpost.franch-express.fukuyama.gaash.gati.gdex.gebrueder-weiss.geis.gel-express.geniki-taxydromiki.geodis-pl.ghana-post.ghn.ghtk.globalpost.gls-at.gls-es.gls-it.gls-pl.gms-worldwide.go-express.go4.gobolt.gofo-fr.gofo-it.gofo-nl.gogo-xpress.goodluck-courier.grand-slam-express.groupe-guilbault.gs-postbox.gsi-express.gta-airskip.gtl-goto.guatex.gzyl.hanjin.hapdong.happy-post.haypost.hct-logistics.helthjem.hepsijet.hercules-freight.hermes-at.hi-trans.hispapost.homexpress.horoz.hound-express.houng-ah-loun.hovership.hp-mostar.hr-parcel.hrvatska-posta.hunter-express.hywl.icc-worldwide.icl-express.ics-courier.idexpress.ids-logistik.ilyang-logis.imile.indah-logistik.instabox.integral-pack.intelcom.inter-courier.intereuropa.internet-express.interrapidisimo.intex-paketdienst.iran-post.israel-post.j-and-t-br.j-and-t-cargo.j-and-t-cn.j-and-t-middle-east.j-and-t-mx.jadlog.jamaica-post.janio.jeebly.jersey-post.jet-logistic.jetline-couriers.jhgj.jitsu.jne.jordan-post.jrs-express.jrt.js-express.kargoist.kazpost.kerry-tj.kex.kex-express-hk.kit-tk.kolay-gelsin.kronos-express.ktd.kuehne-nagel.kunyoung.kwick-box.kyoungdong.kyrgyz-post.l-post.la-poste-burkina-faso.la-poste-ci.la-poste-senegal.la-poste-tunisienne.laar-courier.labaih.lao-post.last-one-mile-coop.latvijas-pasts.lbc-express.leopards-courier.libanpost.liccardi.lietuvos-pastas.lightning-express.line-clear.linhan.lion-parcel.logen.loggi.logistiq.logoix.loomis-express.lotte-global.lso.m-and-p.m-one.madhur-courier.magyar-posta.mailamericas.mailplus-au.mainfreight.major-express.makati-express.maltapost.mandae.maritime-ontario.maruti-air.matkahuolto.mauritius-post.mayiyinfu.mds-collivery.meest.messenger-cz.method.metropolitan-warehouse.micro-express.midland-transport.mng-kargo.mongol-infinity-post.montenegro-post.morning-global.mrl-global.mtscn.mylerz.naqel.nationex.ncs-courier.neighbour-express.nepal-post.netpost-vn.next-level-delivery.nhat-tin.nim-express.nipost.nippon-express.noest.nord-wheel.norsk-global.northline.nova-global.nova-poshta.nox.nz-couriers.oak-harbor.oca.ocasa.ocs-ana.olva-courier.omgo.omniva.one-world-express.opt-nc.orian.orlen-paczka.osm-worldwide.overseas-express.ozon-logistics.pack-man.packli-punkt.packlink.packs.pakistan-post.palletways.pandu-logistics.pannon-xp.paperfly.paquetexpress.parcelpoint.pargo.passport.pathao-courier.pavan-courier.paxel.paxi.pbt.pcp-express.pcs-logistics-vn.pdn-express.pdq-chile.pecom.peddler.pelican-express.peqasus-az.pfc-express.phlpost.pickupp.pickupp-sg.pigeon-express.pilot-freight.pitney-bowes.pitt-ohio.pmm.polaris-transport.pony-express.pos-indonesia.post-haste.post-luxembourg.posta-faroe.posta-kenya.posta-moldovei.posta-north-macedonia.posta-romana.posta-shqiptare.posta-slovenije.posta-srbije.postaplus.postex.postmedia-parcel-services.postplus.posturinn.ppl.precision-deliveries.pro-carrier.professional-couriers.prompt-xpress.pronto-lanka.proships.pts-worldwide-express.ptt.pullman-cargo.pushpak-courier.quantium-solutions.quicksilver-sa.quiqup.raben.ram-hand-to-hand.redpack.redur.redx.relaytech.rivigo.rl-carriers.roadie.roadrunner.royal-express-mm.rpx-hk.rpx-indonesia.rr-express-sg.russian-post.saee.sagawa.sagawa-global.sahara-express.saia.sailpost.sameday.sapx-express.sat-ukraine.saudi-post.sbs-sokuhai.scg-express.seino.seko.sendex.sending.serpost.servientrega.seven-eleven-tw.sfc.shadowfax.shipa.shipblu.shipentegra.shree-anjani.shree-mahabali-express.shree-mahavir.shree-maruti.shree-nandan.sicepat.skroutz-last-mile.skyex-ae.skyking.skynet-sa.skynet-worldwide.slgtrax.slovak-parcel-service.slovenska-posta.smsa-express.south-african-post-office.southeastern-freight-lines.sp-express.speed-and-safe.speedaf.speedex.speedpak.speedy.spx-br.spx-id.spx-my.spx-ph.spx-sg.spx-th.spx-tw.spx-vn.sri-lanka-post.st-courier.stallion-express.starex-az.starken.starlinks.steadfast.straightship.sundarban-courier.surat-kargo.swiftx.t-cat.t-group.tamdis.tanzania-posts.taxydema.tccs.tci-express.tcs-pakistan.tdn.tealca.team-express-ae.team-global-express.tej-couriers.teleship.tfm-express.tforce-freight.tforce-logistics.thhy.tiki.tirupati-courier.tmm-express.tnt-it.today-kr.toptrans.torrestir.total-express.tp-logistics-th.trackon.tracx-logis.trans-o-flex.transaher.transcorp.transmission.transport-rdl.trendyol-express.tsjy.tst-cf-express.tufesa.tusass.tws-express.ubi-smart-parcel.ues-uy.united-delivery-service.united-worldwide-couriers.upaya.urbano.urvaam.uzbekistan-post.valmo.vasp-expresso.veloces.venipak.vestovoy.via-cargo.viettel-post.vimenpaq.vinted-go.vitran-express.vnpost.vozovoz.vrl-logistics.wahana.wanbexpress.ward-trucking.whistl.winion-logis.winit.x-express-ba.x-trac.xde-logistics.xdp.xlcourier.xpo-ltl.xpressbees.yalidine.yc-delivery.yilong-logistics.yimidida.yurtici-kargo.zajil.zeleris.zheldor.zoom-ve.zr-express".split("."), Be = {
|
|
22743
22772
|
"swiss-post": ["swiss-post-1", "swiss-post-2"],
|
|
22744
22773
|
"swiss-post-cargo": ["swiss-post-cargo-sscc", "swiss-post-cargo-pl-reference"],
|
|
22745
22774
|
quickpac: ["quickpac-1"],
|
|
@@ -23367,6 +23396,7 @@ var Re = {
|
|
|
23367
23396
|
"fargo-uz": [],
|
|
23368
23397
|
fastdrop: [],
|
|
23369
23398
|
fastfrate: [],
|
|
23399
|
+
"fedex-freight": [],
|
|
23370
23400
|
"fedex-pl": ["fedex-pl-1"],
|
|
23371
23401
|
fermopoint: ["fermopoint-1"],
|
|
23372
23402
|
"fg-delivery": ["fg-delivery-fgd", "fg-delivery-1"],
|
|
@@ -29221,9 +29251,11 @@ var _l = {
|
|
|
29221
29251
|
"rpx-indonesia": 947,
|
|
29222
29252
|
saia: 12,
|
|
29223
29253
|
sameday: 370,
|
|
29254
|
+
"sapx-express": 795,
|
|
29224
29255
|
"saudi-post": 963,
|
|
29225
29256
|
seino: 943,
|
|
29226
29257
|
seko: 854,
|
|
29258
|
+
sendex: 794,
|
|
29227
29259
|
sending: 891,
|
|
29228
29260
|
serpost: 893,
|
|
29229
29261
|
servientrega: 979,
|
|
@@ -100,7 +100,7 @@ export function parse(payload, trackingNumber) {
|
|
|
100
100
|
? articles[0] : null;
|
|
101
101
|
// The consignment exists, but no single article answers for it.
|
|
102
102
|
if (!selected && !matches.length && shipment.consignmentId === number && articles.length > 1) {
|
|
103
|
-
throw new IndeterminateError(PROVIDER, 'Australia Post lists several articles under this consignment');
|
|
103
|
+
throw new IndeterminateError(PROVIDER, 'Australia Post lists several articles under this consignment', { reason: 'several_parcels' });
|
|
104
104
|
}
|
|
105
105
|
if (!selected)
|
|
106
106
|
throw new SchemaError(PROVIDER, 'Australia Post returned a different or ambiguous article');
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "fedex-freight",
|
|
3
|
+
"displayName": "FedEx Freight",
|
|
4
|
+
"aliases": [
|
|
5
|
+
"FedEx Freight LTL"
|
|
6
|
+
],
|
|
7
|
+
"region": {
|
|
8
|
+
"countries": [
|
|
9
|
+
"US",
|
|
10
|
+
"CA",
|
|
11
|
+
"MX"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"brand": {
|
|
15
|
+
"color": "#de002e"
|
|
16
|
+
},
|
|
17
|
+
"selectable": true,
|
|
18
|
+
"timezone": "America/Chicago",
|
|
19
|
+
"tracking": {
|
|
20
|
+
"mode": "automatic",
|
|
21
|
+
"adapter": "universal",
|
|
22
|
+
"steps": []
|
|
23
|
+
},
|
|
24
|
+
"capabilities": [],
|
|
25
|
+
"portal": {
|
|
26
|
+
"url": "https://www.fedexfreight.com/fedextrack/?trknbr={trackingNumber}",
|
|
27
|
+
"searchUrl": "https://www.fedexfreight.com/en-us/tracking",
|
|
28
|
+
"canaryUrl": "https://www.fedexfreight.com/en-us/tracking",
|
|
29
|
+
"shows": [],
|
|
30
|
+
"scraped": [],
|
|
31
|
+
"discarded": [],
|
|
32
|
+
"unavailable": []
|
|
33
|
+
},
|
|
34
|
+
"links": [
|
|
35
|
+
{
|
|
36
|
+
"domains": [
|
|
37
|
+
"www.fedexfreight.com"
|
|
38
|
+
],
|
|
39
|
+
"pathPattern": "^/fedextrack/?$",
|
|
40
|
+
"params": [
|
|
41
|
+
"trknbr"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"detection": []
|
|
46
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"carrier": "fedex-freight",
|
|
3
|
+
"records": [
|
|
4
|
+
{
|
|
5
|
+
"number": "0585862594",
|
|
6
|
+
"role": "shipment",
|
|
7
|
+
"evidence": "public_shipment_report",
|
|
8
|
+
"source": {
|
|
9
|
+
"url": "https://web.archive.org/web/20260703192004/https://www.fedexfreight.com/fedextrack/?trknbr=0585862594&trkqual=~0585862594~FDFR",
|
|
10
|
+
"date": "2026-07-03",
|
|
11
|
+
"dateKind": "capture",
|
|
12
|
+
"access": "full_page"
|
|
13
|
+
},
|
|
14
|
+
"context": {
|
|
15
|
+
"assessment": "candidate"
|
|
16
|
+
},
|
|
17
|
+
"expect": {
|
|
18
|
+
"carrier": "unknown",
|
|
19
|
+
"confidence": "low",
|
|
20
|
+
"candidates": [
|
|
21
|
+
"dhl-express",
|
|
22
|
+
"dhl",
|
|
23
|
+
"mondial-relay",
|
|
24
|
+
"relais-colis",
|
|
25
|
+
"tipsa",
|
|
26
|
+
"estafeta",
|
|
27
|
+
"dhl-ecommerce-es"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"note": "An archived lookup on FedEx Freight's own tracking app carries this PRO with the FedEx Freight qualifier; the capture holds only the loading shell, so the history was not visible."
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type AdapterFactory, type TrackingContext } from '../../core/adapter/index.js';
|
|
2
|
+
import type { CarrierResult } from '../../core/result/index.js';
|
|
3
|
+
import { type StepRecorder } from '../../core/telemetry/index.js';
|
|
4
|
+
export declare const SAPX_ENDPOINT = "https://www.sapx.id/id/cek-awb/";
|
|
5
|
+
export declare class SapxTracker {
|
|
6
|
+
private readonly options;
|
|
7
|
+
constructor(options?: {
|
|
8
|
+
fetcher?: typeof fetch;
|
|
9
|
+
recorder?: StepRecorder;
|
|
10
|
+
userAgent?: string;
|
|
11
|
+
});
|
|
12
|
+
fetch(raw: string, context?: TrackingContext): Promise<CarrierResult>;
|
|
13
|
+
}
|
|
14
|
+
export declare const adapter: AdapterFactory;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { accepted, recognizeFromLookup } from '../../core/adapter/index.js';
|
|
2
|
+
import { ChallengeError, IndeterminateError, TransportError } from '../../core/errors/index.js';
|
|
3
|
+
import { runSteps } from '../../core/runner/index.js';
|
|
4
|
+
import { firstAttemptMs, networkRetryStep } from '../../core/runner/networkRetry.js';
|
|
5
|
+
import { NOOP_RECORDER } from '../../core/telemetry/index.js';
|
|
6
|
+
import { decodeText, fetchBounded, userAgentOf } from '../../core/transport/index.js';
|
|
7
|
+
import { normalizeSapxNumber, parseSapx, PROVIDER, SAPX_MAX_BYTES, sapxLookupNumber } from './parser.js';
|
|
8
|
+
// The tracker's result page for one resi, rendered on the server. The search
|
|
9
|
+
// form posts up to twenty numbers to `/id/cek-awb` and renders the same
|
|
10
|
+
// tables; this address needs no cookie, token, CAPTCHA or phone digits.
|
|
11
|
+
export const SAPX_ENDPOINT = 'https://www.sapx.id/id/cek-awb/';
|
|
12
|
+
const REDIRECTS = [301, 302, 303, 307, 308];
|
|
13
|
+
// A missing page is not a missing shipment: an unknown number gets a notice on the page.
|
|
14
|
+
const GONE = [404, 410];
|
|
15
|
+
export class SapxTracker {
|
|
16
|
+
options;
|
|
17
|
+
constructor(options = {}) {
|
|
18
|
+
this.options = options;
|
|
19
|
+
}
|
|
20
|
+
async fetch(raw, context = {}) {
|
|
21
|
+
const number = normalizeSapxNumber(raw);
|
|
22
|
+
const url = `${SAPX_ENDPOINT}${encodeURIComponent(sapxLookupNumber(number))}`;
|
|
23
|
+
const read = async (signal, timeoutMs) => {
|
|
24
|
+
const { response, bytes } = await fetchBounded(url, { method: 'GET', signal, headers: {
|
|
25
|
+
Accept: 'text/html,application/xhtml+xml', 'User-Agent': userAgentOf(this.options.userAgent),
|
|
26
|
+
} }, { provider: PROVIDER, timeoutMs: Math.max(1, Math.floor(timeoutMs)), maxBytes: SAPX_MAX_BYTES,
|
|
27
|
+
redirect: 'manual', allowHttpStatuses: [...REDIRECTS, ...GONE, 403], fetcher: this.options.fetcher });
|
|
28
|
+
if (REDIRECTS.includes(response.status))
|
|
29
|
+
throw new TransportError(PROVIDER, 'SAPX redirected its tracking page', { status: response.status });
|
|
30
|
+
if (GONE.includes(response.status))
|
|
31
|
+
throw new TransportError(PROVIDER, 'SAPX tracking page is unavailable', { status: response.status });
|
|
32
|
+
if (response.status === 403)
|
|
33
|
+
throw new ChallengeError(PROVIDER, 'SAPX refused the lookup', { status: 403 });
|
|
34
|
+
const html = decodeText(bytes);
|
|
35
|
+
if (!html.trim())
|
|
36
|
+
throw new IndeterminateError(PROVIDER, 'SAPX returned an empty page');
|
|
37
|
+
return parseSapx(html, number);
|
|
38
|
+
};
|
|
39
|
+
// A request that fails to reach SAPX, or hangs, gets one more try: the
|
|
40
|
+
// first gets half of the budget, so the retry fits in the rest. An HTTP
|
|
41
|
+
// status, a rate limit included, is never sent again.
|
|
42
|
+
return runSteps({ carrier: 'sapx-express', budgetMs: context.budgetMs ?? 15_000, signal: context.signal,
|
|
43
|
+
recorder: this.options.recorder ?? NOOP_RECORDER }, [
|
|
44
|
+
{ id: 'direct', run: ({ signal, remainingMs }) => read(signal, firstAttemptMs(remainingMs)) },
|
|
45
|
+
networkRetryStep(({ signal, remainingMs }) => read(signal, remainingMs)),
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export const adapter = (environment) => {
|
|
50
|
+
const tracker = new SapxTracker({ fetcher: environment.fetcher, recorder: environment.recorder, userAgent: environment.userAgent });
|
|
51
|
+
return {
|
|
52
|
+
id: 'sapx-express', recordsSteps: true, steps: ['direct', 'retry'],
|
|
53
|
+
track: (input, context) => tracker.fetch(input.number, context),
|
|
54
|
+
recognize: (number, context) => recognizeFromLookup(() => tracker.fetch(number, context), () => accepted(() => normalizeSapxNumber(number))),
|
|
55
|
+
};
|
|
56
|
+
};
|
|
@@ -19,18 +19,63 @@
|
|
|
19
19
|
"timezone": "Asia/Jakarta",
|
|
20
20
|
"tracking": {
|
|
21
21
|
"mode": "automatic",
|
|
22
|
-
"adapter": "
|
|
23
|
-
"steps": [
|
|
22
|
+
"adapter": "sapx-express",
|
|
23
|
+
"steps": [
|
|
24
|
+
"direct",
|
|
25
|
+
"retry"
|
|
26
|
+
],
|
|
27
|
+
"recognition": {
|
|
28
|
+
"rank": 795
|
|
29
|
+
},
|
|
30
|
+
"localClocks": true
|
|
24
31
|
},
|
|
25
|
-
"capabilities": [
|
|
32
|
+
"capabilities": [
|
|
33
|
+
"history",
|
|
34
|
+
"provider_code",
|
|
35
|
+
"location",
|
|
36
|
+
"service_name"
|
|
37
|
+
],
|
|
26
38
|
"portal": {
|
|
27
39
|
"url": "https://www.sapx.id/id/cek-awb/{trackingNumber}",
|
|
28
40
|
"searchUrl": "https://www.sapx.id/id/cek-awb",
|
|
29
41
|
"canaryUrl": "https://www.sapx.id/id/cek-awb",
|
|
30
|
-
"shows": [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
42
|
+
"shows": [
|
|
43
|
+
"status",
|
|
44
|
+
"history",
|
|
45
|
+
"provider_code",
|
|
46
|
+
"location",
|
|
47
|
+
"service_name",
|
|
48
|
+
"failed_delivery_reason",
|
|
49
|
+
"origin",
|
|
50
|
+
"destination",
|
|
51
|
+
"signatory",
|
|
52
|
+
"driver_name",
|
|
53
|
+
"remarks"
|
|
54
|
+
],
|
|
55
|
+
"scraped": [
|
|
56
|
+
"status",
|
|
57
|
+
"history",
|
|
58
|
+
"provider_code",
|
|
59
|
+
"location",
|
|
60
|
+
"service_name",
|
|
61
|
+
"failed_delivery_reason"
|
|
62
|
+
],
|
|
63
|
+
"discarded": [
|
|
64
|
+
"origin",
|
|
65
|
+
"destination",
|
|
66
|
+
"signatory",
|
|
67
|
+
"driver_name",
|
|
68
|
+
"remarks"
|
|
69
|
+
],
|
|
70
|
+
"unavailable": [
|
|
71
|
+
"eta",
|
|
72
|
+
"weight",
|
|
73
|
+
"delivered_at",
|
|
74
|
+
"offset_timestamps",
|
|
75
|
+
"proof_of_delivery",
|
|
76
|
+
"sender_name",
|
|
77
|
+
"recipient_address"
|
|
78
|
+
]
|
|
34
79
|
},
|
|
35
80
|
"links": [
|
|
36
81
|
{
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
176
|
"number": "265370347094",
|
|
177
|
-
"role": "
|
|
177
|
+
"role": "order_reference",
|
|
178
178
|
"evidence": "public_shipment_report",
|
|
179
179
|
"source": {
|
|
180
180
|
"url": "https://mediakonsumen.com/2026/04/02/surat-pembaca/kartu-kredit-nex-bri-tidak-pernah-diantar-sap-express-malah-ubah-status-jadi-alamat-pindah-dan-diretur-ke-bank",
|
|
@@ -184,7 +184,8 @@
|
|
|
184
184
|
},
|
|
185
185
|
"quarantine": true,
|
|
186
186
|
"context": {
|
|
187
|
-
"
|
|
187
|
+
"reportedRole": "resi",
|
|
188
|
+
"assessment": "auxiliary"
|
|
188
189
|
},
|
|
189
190
|
"expect": {
|
|
190
191
|
"carrier": "unknown",
|
|
@@ -203,7 +204,7 @@
|
|
|
203
204
|
"metropolitan-warehouse"
|
|
204
205
|
]
|
|
205
206
|
},
|
|
206
|
-
"note": "A Media Konsumen letter gives it as the SAP Express resi of a bank card delivery
|
|
207
|
+
"note": "A Media Konsumen letter gives it as the SAP Express resi of a bank card delivery. SAPX's reference lookup finds the delivery's resi under it and the resi tracker does not take it, so it is the sender's reference."
|
|
207
208
|
}
|
|
208
209
|
]
|
|
209
210
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CarrierResult } from '../../core/result/index.js';
|
|
2
|
+
export declare const PROVIDER = "SAPX Express";
|
|
3
|
+
export declare const SAPX_MAX_BYTES: number;
|
|
4
|
+
/** A SAPX resi in capitals, as the tracker matches it; anything else is not one SAPX issues. */
|
|
5
|
+
export declare function normalizeSapxNumber(raw: string): string;
|
|
6
|
+
/** The form the tracker holds a number under: a Tokopedia booking code gets its dash back. */
|
|
7
|
+
export declare function sapxLookupNumber(raw: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* The page `/id/cek-awb/{number}` renders for one resi: a table headed with
|
|
10
|
+
* the number it looked up and the service, origin, destination, status and
|
|
11
|
+
* receiver, then the events, newest first, each with a clock, a heading and a
|
|
12
|
+
* remark. A number it does not hold gets "Mohon Maaf Nomor Resi Anda Tidak
|
|
13
|
+
* Ditemukan." in place of both.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseSapx(html: string, raw: string): CarrierResult;
|