universal-parcel-scraper 0.2.1-main.296 → 0.3.0-main.302

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +56 -21
  2. package/data/carrier.schema.json +5 -3
  3. package/data/catalog.json +6 -6
  4. package/dist/app.d.ts +11 -0
  5. package/dist/app.js +11 -0
  6. package/dist/browser/scraper.js +1386 -1568
  7. package/dist/carriers/aliexpress/adapter.d.ts +5 -3
  8. package/dist/carriers/aliexpress/adapter.js +28 -8
  9. package/dist/carriers/amazon-shipping/adapter.d.ts +3 -2
  10. package/dist/carriers/amazon-shipping/adapter.js +15 -10
  11. package/dist/carriers/amazon-shipping/eligibility.d.ts +2 -1
  12. package/dist/carriers/amazon-shipping/eligibility.js +2 -2
  13. package/dist/carriers/aramex/adapter.d.ts +2 -0
  14. package/dist/carriers/aramex/adapter.js +5 -3
  15. package/dist/carriers/aramex/parser.js +2 -2
  16. package/dist/carriers/asendia/adapter.d.ts +8 -0
  17. package/dist/carriers/asendia/adapter.js +66 -11
  18. package/dist/carriers/asendia/probe.d.ts +2 -0
  19. package/dist/carriers/asendia/probe.js +9 -7
  20. package/dist/carriers/australia-post/adapter.js +2 -2
  21. package/dist/carriers/austrian-post/adapter.js +2 -2
  22. package/dist/carriers/blue-dart/parser.js +2 -2
  23. package/dist/carriers/bpost/parser.js +2 -2
  24. package/dist/carriers/bring-posten/parser.js +2 -2
  25. package/dist/carriers/brt/parser.js +2 -2
  26. package/dist/carriers/c-chez-vous/adapter.d.ts +3 -2
  27. package/dist/carriers/c-chez-vous/adapter.js +15 -10
  28. package/dist/carriers/canada-post/adapter.d.ts +1 -0
  29. package/dist/carriers/canada-post/adapter.js +5 -3
  30. package/dist/carriers/canada-post/parser.js +2 -2
  31. package/dist/carriers/canpar/parser.js +2 -2
  32. package/dist/carriers/ciblex/parser.js +2 -2
  33. package/dist/carriers/colis-prive/adapter.d.ts +3 -2
  34. package/dist/carriers/colis-prive/adapter.js +14 -10
  35. package/dist/carriers/colisweb/adapter.d.ts +3 -2
  36. package/dist/carriers/colisweb/adapter.js +13 -8
  37. package/dist/carriers/correios-br/parser.js +2 -2
  38. package/dist/carriers/correos-chile/parser.js +3 -3
  39. package/dist/carriers/correos-express/parser.js +2 -2
  40. package/dist/carriers/correos-spain/adapter.d.ts +4 -2
  41. package/dist/carriers/correos-spain/adapter.js +16 -8
  42. package/dist/carriers/ctt/adapter.d.ts +2 -2
  43. package/dist/carriers/ctt/adapter.js +30 -25
  44. package/dist/carriers/ctt-express/parser.js +2 -2
  45. package/dist/carriers/dachser/adapter.d.ts +3 -2
  46. package/dist/carriers/dachser/adapter.js +28 -12
  47. package/dist/carriers/delhivery/parser.js +2 -2
  48. package/dist/carriers/dhl/adapter.d.ts +2 -2
  49. package/dist/carriers/dhl/adapter.js +50 -22
  50. package/dist/carriers/dhl-ecommerce/adapter.d.ts +3 -3
  51. package/dist/carriers/dhl-ecommerce/adapter.js +9 -9
  52. package/dist/carriers/dpd/adapter.d.ts +3 -3
  53. package/dist/carriers/dpd/adapter.js +111 -57
  54. package/dist/carriers/dpd/carrier.json +1 -1
  55. package/dist/carriers/dpd-fr/adapter.d.ts +2 -2
  56. package/dist/carriers/dpd-fr/adapter.js +29 -20
  57. package/dist/carriers/dtdc/parser.js +2 -2
  58. package/dist/carriers/ecoscooting/parser.js +2 -2
  59. package/dist/carriers/ems/adapter.js +2 -2
  60. package/dist/carriers/estafeta/parser.js +2 -2
  61. package/dist/carriers/evri/adapter.js +2 -2
  62. package/dist/carriers/fedex/adapter.d.ts +2 -2
  63. package/dist/carriers/fedex/adapter.js +15 -11
  64. package/dist/carriers/four-px/adapter.js +2 -2
  65. package/dist/carriers/geodis/adapter.d.ts +3 -2
  66. package/dist/carriers/geodis/adapter.js +13 -8
  67. package/dist/carriers/gls-ch/adapter.d.ts +4 -3
  68. package/dist/carriers/gls-ch/adapter.js +27 -19
  69. package/dist/carriers/gls-ch/carrier.json +1 -1
  70. package/dist/carriers/gls-de/adapter.d.ts +3 -3
  71. package/dist/carriers/gls-de/adapter.js +14 -9
  72. package/dist/carriers/gls-de/carrier.json +1 -1
  73. package/dist/carriers/gls-fr/adapter.d.ts +3 -2
  74. package/dist/carriers/gls-fr/adapter.js +16 -11
  75. package/dist/carriers/gofo/parser.js +2 -2
  76. package/dist/carriers/heppner/adapter.d.ts +4 -2
  77. package/dist/carriers/heppner/adapter.js +19 -14
  78. package/dist/carriers/heppner/carrier.json +1 -1
  79. package/dist/carriers/hermes/adapter.d.ts +3 -2
  80. package/dist/carriers/hermes/adapter.js +13 -8
  81. package/dist/carriers/hermes-de/adapter.d.ts +3 -2
  82. package/dist/carriers/hermes-de/adapter.js +16 -12
  83. package/dist/carriers/india-post/adapter.d.ts +2 -2
  84. package/dist/carriers/india-post/adapter.js +42 -21
  85. package/dist/carriers/inpost/adapter.d.ts +4 -2
  86. package/dist/carriers/inpost/adapter.js +17 -10
  87. package/dist/carriers/japan-post/adapter.js +2 -2
  88. package/dist/carriers/korea-post/adapter.js +2 -2
  89. package/dist/carriers/la-poste/adapter.d.ts +4 -2
  90. package/dist/carriers/la-poste/adapter.js +18 -13
  91. package/dist/carriers/landmark-global/parser.js +2 -2
  92. package/dist/carriers/mondial-relay/adapter.d.ts +2 -2
  93. package/dist/carriers/mondial-relay/adapter.js +27 -18
  94. package/dist/carriers/mondial-relay/carrier.json +1 -1
  95. package/dist/carriers/mrw/parser.js +3 -3
  96. package/dist/carriers/nacex/parser.js +2 -2
  97. package/dist/carriers/ninja-van/parser.js +2 -2
  98. package/dist/carriers/nz-post/parser.js +2 -2
  99. package/dist/carriers/ontrac/parser.js +2 -2
  100. package/dist/carriers/paack/adapter.d.ts +4 -2
  101. package/dist/carriers/paack/adapter.js +24 -14
  102. package/dist/carriers/paack/carrier.json +1 -1
  103. package/dist/carriers/packeta/adapter.d.ts +4 -2
  104. package/dist/carriers/packeta/adapter.js +16 -8
  105. package/dist/carriers/planzer/adapter.d.ts +5 -3
  106. package/dist/carriers/planzer/adapter.js +35 -12
  107. package/dist/carriers/planzer/shared.d.ts +4 -1
  108. package/dist/carriers/planzer/shared.js +20 -6
  109. package/dist/carriers/poczta-polska/parser.js +2 -2
  110. package/dist/carriers/pos-malaysia/adapter.d.ts +2 -0
  111. package/dist/carriers/pos-malaysia/adapter.js +9 -5
  112. package/dist/carriers/poste-italiane/adapter.d.ts +4 -2
  113. package/dist/carriers/poste-italiane/adapter.js +16 -8
  114. package/dist/carriers/posti/adapter.js +2 -2
  115. package/dist/carriers/postlogistics/adapter.d.ts +6 -4
  116. package/dist/carriers/postlogistics/adapter.js +49 -17
  117. package/dist/carriers/postlogistics/status.d.ts +2 -0
  118. package/dist/carriers/postlogistics/status.js +2 -0
  119. package/dist/carriers/postnord/parser.js +2 -2
  120. package/dist/carriers/purolator/parser.js +2 -2
  121. package/dist/carriers/relais-colis/adapter.js +2 -2
  122. package/dist/carriers/royal-mail/adapter.d.ts +2 -2
  123. package/dist/carriers/royal-mail/adapter.js +15 -11
  124. package/dist/carriers/seur/parser.js +2 -2
  125. package/dist/carriers/sf-express/parser.js +2 -2
  126. package/dist/carriers/singapore-post/adapter.js +2 -2
  127. package/dist/carriers/spring-gds/adapter.d.ts +2 -0
  128. package/dist/carriers/spring-gds/adapter.js +16 -15
  129. package/dist/carriers/sunyou/adapter.d.ts +5 -3
  130. package/dist/carriers/sunyou/adapter.js +16 -9
  131. package/dist/carriers/swiss-post/adapter.d.ts +4 -4
  132. package/dist/carriers/swiss-post/adapter.js +33 -15
  133. package/dist/carriers/swiss-post-cargo/adapter.d.ts +3 -2
  134. package/dist/carriers/swiss-post-cargo/adapter.js +14 -9
  135. package/dist/carriers/the-courier-guy/number.js +3 -2
  136. package/dist/carriers/tipsa/parser.js +3 -3
  137. package/dist/carriers/tnt/adapter.js +3 -3
  138. package/dist/carriers/ukrposhta/adapter.js +20 -62
  139. package/dist/carriers/ukrposhta/parser.js +2 -2
  140. package/dist/carriers/uniuni/parser.js +3 -3
  141. package/dist/carriers/ups/adapter.d.ts +2 -2
  142. package/dist/carriers/ups/adapter.js +40 -32
  143. package/dist/carriers/usps/adapter.d.ts +2 -2
  144. package/dist/carriers/usps/adapter.js +15 -11
  145. package/dist/carriers/yamato/adapter.js +2 -2
  146. package/dist/carriers/yanwen/adapter.js +2 -2
  147. package/dist/carriers/yto/parser.js +2 -2
  148. package/dist/carriers/yunda/parser.js +2 -2
  149. package/dist/carriers/yunexpress/adapter.js +21 -39
  150. package/dist/cli/index.js +18 -2
  151. package/dist/core/adapter/index.d.ts +18 -1
  152. package/dist/core/adapter/index.js +28 -4
  153. package/dist/core/adapter/track.js +21 -7
  154. package/dist/core/catalog/index.d.ts +1 -15
  155. package/dist/core/catalog/index.js +3 -106
  156. package/dist/core/catalog/inputs.d.ts +2 -2
  157. package/dist/core/catalog/inputs.js +4 -4
  158. package/dist/core/catalog/parcel.d.ts +53 -0
  159. package/dist/core/catalog/parcel.js +105 -0
  160. package/dist/core/catalog/types.d.ts +1 -29
  161. package/dist/core/errors/hint.d.ts +7 -0
  162. package/dist/core/errors/hint.js +11 -1
  163. package/dist/core/errors/index.d.ts +8 -1
  164. package/dist/core/errors/index.js +11 -0
  165. package/dist/core/runner/index.d.ts +23 -1
  166. package/dist/core/runner/index.js +71 -14
  167. package/dist/core/transport/boundedFetch.js +24 -19
  168. package/dist/core/transport/browser.d.ts +1 -0
  169. package/dist/core/transport/browser.js +76 -99
  170. package/dist/core/transport/index.d.ts +4 -1
  171. package/dist/core/transport/index.js +3 -1
  172. package/dist/core/transport/localBrowser.d.ts +24 -0
  173. package/dist/core/transport/localBrowser.js +87 -0
  174. package/dist/core/transport/trawl.d.ts +6 -0
  175. package/dist/core/transport/trawl.js +30 -9
  176. package/dist/core/transport/userAgent.d.ts +8 -0
  177. package/dist/core/transport/userAgent.js +15 -0
  178. package/dist/data/catalog.json +6 -6
  179. package/dist/facade/index.d.ts +3 -0
  180. package/dist/facade/index.js +17 -7
  181. package/dist/generated/catalog.d.ts +6 -6
  182. package/dist/generated/catalog.js +6 -6
  183. package/dist/index.d.ts +0 -4
  184. package/dist/index.js +0 -4
  185. package/dist/providers/parcelsapp/adapter.d.ts +1 -1
  186. package/dist/providers/parcelsapp/adapter.js +13 -10
  187. package/dist/providers/parcelsapp/http.d.ts +1 -1
  188. package/dist/providers/parcelsapp/http.js +2 -2
  189. package/dist/providers/postal-ninja/adapter.d.ts +2 -2
  190. package/dist/providers/postal-ninja/adapter.js +6 -6
  191. package/dist/providers/seventeentrack/adapter.d.ts +1 -1
  192. package/dist/providers/seventeentrack/adapter.js +7 -7
  193. package/dist/providers/shared/capture.d.ts +2 -0
  194. package/dist/providers/shared/capture.js +1 -1
  195. package/dist/providers/shared/result.js +4 -2
  196. package/dist/providers/ship24/adapter.d.ts +2 -2
  197. package/dist/providers/ship24/adapter.js +7 -7
  198. package/dist/providers/ship24/http.d.ts +1 -1
  199. package/dist/providers/ship24/http.js +4 -3
  200. package/dist/providers/universal.d.ts +3 -2
  201. package/dist/providers/universal.js +20 -2
  202. package/dist/providers/upu/adapter.js +2 -2
  203. package/dist/scripts/carrier-canary.js +2 -1
  204. package/dist/server/index.d.ts +15 -0
  205. package/dist/server/index.js +90 -12
  206. package/dist/server/openapi.json +399 -52
  207. package/package.json +5 -1
package/README.md CHANGED
@@ -1,22 +1,26 @@
1
1
  <div align="center">
2
2
 
3
- <img src="docs/assets/logo.svg" width="88" alt="">
3
+ <img src="docs/assets/pip.svg" width="112" alt="Pip, a kraft parcel with a face">
4
4
 
5
5
  # Universal Parcel Scraper
6
6
 
7
7
  **Parcel tracking that asks the carrier directly, from your own machine.**
8
8
 
9
+ The engine behind [Peek](https://github.com/plhery/delivery-tracker), the open-source parcel tracker for iPhone and the web.
10
+
9
11
  [![npm](https://img.shields.io/npm/v/universal-parcel-scraper)](https://www.npmjs.com/package/universal-parcel-scraper)
10
12
  [![CI](https://github.com/plhery/universal-parcel-scraper/actions/workflows/ci.yml/badge.svg)](https://github.com/plhery/universal-parcel-scraper/actions/workflows/ci.yml)
11
13
  [![License: Apache-2.0](https://img.shields.io/badge/core-Apache--2.0-blue.svg)](LICENSE)
12
14
 
13
15
  <!-- GENERATED:summary -->
14
- **105 carriers · 85 active dedicated adapters · 58 countries represented**
16
+ **3,500+ carriers** through **85 dedicated adapters** and **5 universal fallbacks**
17
+
18
+ <sub>105 carriers in the catalog · 58 countries represented</sub>
15
19
  <!-- /GENERATED:summary -->
16
20
 
17
21
  [Try it](#try-it) · [Ways to run it](#ways-to-run-it) · [Coverage](#how-much-can-it-track) · [Carriers](carriers/) · [Add a carrier](CONTRIBUTING.md)
18
22
 
19
- <img src="docs/assets/demo.svg" width="840" alt="The track command printing a parcel's history as JSON, next to a timeline drawn from it">
23
+ <img src="docs/assets/terminal.svg" width="840" alt="A terminal session: the detect command names UPS as the carrier of a tracking number, then the track command prints a parcel's scans with their stages">
20
24
 
21
25
  </div>
22
26
 
@@ -24,10 +28,15 @@ Give it a tracking number. It works out which carrier the number belongs to and
24
28
  history from that carrier's own website. What comes back has one shape, so a UPS parcel and
25
29
  a Poczta Polska parcel look the same to your code.
26
30
 
27
- There is no account to open and no API key. Every carrier publishes tracking in its own way,
28
- and hosted tracking APIs smooth that over for a fee while seeing every number you look up.
29
- Here the same work is open code: one adapter per carrier, each in [its own folder](carriers/)
30
- with a README on how that site is read.
31
+ There is no account to open and no API key. The carriers it knows best each have a dedicated
32
+ adapter in [their own folder](carriers/), with a README on how that site is read. For the
33
+ rest it can ask the universal trackers such as 17TRACK and Ship24, which is where the big
34
+ number above comes from. Those stay off until you switch them on, and each one you enable
35
+ sees the numbers you send it.
36
+
37
+ It started as the tracking engine inside [Peek](https://github.com/plhery/delivery-tracker)
38
+ and was pulled out so it can be used on its own. It runs as a command-line tool and as a Node
39
+ library, and it can serve the same lookups over HTTP.
31
40
 
32
41
  ## Try it
33
42
 
@@ -124,20 +133,22 @@ curl http://127.0.0.1:8080/v1/track \
124
133
  memory and rate-limits callers. It has no database and never polls on its own.
125
134
 
126
135
  Set `SCRAPER_TOKEN` to require a bearer token. `SCRAPER_DEMO_PAGE=true` serves a small page
127
- at `/` for trying numbers by hand. The other settings are in [.env.example](.env.example).
136
+ at `/` for trying numbers by hand. Behind a reverse proxy, set `SCRAPER_TRUSTED_PROXIES` so
137
+ the rate limit counts each caller and not the proxy. The other settings are in
138
+ [.env.example](.env.example).
128
139
 
129
140
  ### Docker
130
141
 
131
142
  ```sh
132
- docker run --rm -p 127.0.0.1:8080:8080 ghcr.io/plhery/universal-parcel-scraper:0.2.0
143
+ docker run --rm -p 127.0.0.1:8080:8080 ghcr.io/plhery/universal-parcel-scraper:0.3.0
133
144
  ```
134
145
 
135
146
  The image runs `serve` and ships Chromium, for the carriers that only answer a real browser.
136
147
 
137
148
  ## What you can build with it
138
149
 
139
- - **A tracking screen in your own app.** [Delivery Tracker](https://github.com/plhery/delivery-tracker),
140
- an open-source iPhone app and PWA, runs on this package.
150
+ - **A parcel-tracking app.** [Peek](https://github.com/plhery/delivery-tracker) is the
151
+ full-size example: an iPhone and web app built on this package.
141
152
  - **A Home Assistant sensor** for the parcel you are waiting on.
142
153
  [The config is in examples](examples/home-assistant.yaml).
143
154
  - **Order status inside a shop or help desk**, so customers are not sent off to the carrier's
@@ -154,7 +165,7 @@ are yours to do.
154
165
 
155
166
  <picture>
156
167
  <source media="(prefers-color-scheme: dark)" srcset="docs/assets/how-it-works-dark.svg">
157
- <img src="docs/assets/how-it-works-light.svg" width="840" alt="An input is detected offline and tracked by the carrier's dedicated adapter. With no history, the lookup moves to the fallbacks you enabled. Either way the result is one timeline.">
168
+ <img src="docs/assets/how-it-works-light.svg" width="840" alt="An input is detected offline and fetched by the carrier's dedicated adapter, or by a fallback you enabled when that finds no history. Each scan's wording is filed under a stage, and the result is one timeline.">
158
169
  </picture>
159
170
 
160
171
  Each adapter uses plain HTTP wherever the carrier's site allows it. Some sites only answer a
@@ -168,6 +179,9 @@ npm install playwright-core sharp onnxruntime-web
168
179
  Then pass `chromiumPath` or `trawlUrl` to `createTracker()`. The CLI and the server read
169
180
  `TRACKING_CHROMIUM_PATH` and `FLARESOLVERR_URL`.
170
181
 
182
+ Where a carrier accepts a plain client, the adapter names itself with the package's default
183
+ User-Agent. Pass `userAgent`, or set `SCRAPER_USER_AGENT`, to send your own.
184
+
171
185
  When the adapter finds no history, the lookup can move on to an aggregator. Only UPU is on
172
186
  by default, for the postal numbers it can serve. The commercial ones are opt-in, and each
173
187
  one you enable receives the tracking number:
@@ -176,14 +190,35 @@ one you enable receives the tracking number:
176
190
  createTracker({ providers: ['ParcelsApp', 'Ship24', '17TRACK', 'Postal Ninja', 'UPU'] });
177
191
  ```
178
192
 
193
+ ### One stage list
194
+
195
+ Carriers describe the same moment in their own words, or with a bare code. Each carrier
196
+ folder keeps a `statuses.json` with the codes and wordings seen from that carrier and the
197
+ stage each one means. Every entry also says how it was confirmed, by a live reply or the
198
+ carrier's own documentation for instance.
199
+
200
+ <!-- GENERATED:stages -->
201
+ <picture>
202
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/stages-dark.svg">
203
+ <img src="docs/assets/stages-light.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">
204
+ </picture>
205
+
206
+ The folders hold 1,671 recorded statuses from 88 carriers.
207
+ <!-- /GENERATED:stages -->
208
+
209
+ A scan nobody has recorded yet goes through a shared classifier that reads English, French,
210
+ German, Italian, Spanish, Portuguese and Polish. Each scan in the result carries a
211
+ `stage_source` saying which of the two decided.
212
+
179
213
  [ARCHITECTURE.md](ARCHITECTURE.md) has the rest.
180
214
 
181
215
  ## How much can it track?
182
216
 
183
- A carrier count says what the catalog knows about. Whether a real parcel comes back with its
184
- history is a different question, so each source was run on its own against the same
185
- **100-carrier reference set**. The top bar counts a carrier when any source below it returned
186
- a history.
217
+ The number at the top of this page is reach: with the fallbacks on, a lookup can go to the
218
+ largest aggregator, and [reach.json](docs/reach.json) records how many carriers each one
219
+ says it follows. Whether a real parcel comes back with its history is a different question,
220
+ so each source was run on its own against the same **100-carrier reference set**. The top
221
+ bar counts a carrier when any source below it returned a history.
187
222
 
188
223
  <!-- GENERATED:coverage -->
189
224
  <picture>
@@ -220,15 +255,15 @@ or a promise about today, because parcels expire and carrier sites change.
220
255
  | Account | None | Sign-up and an API key |
221
256
  | Cost | Your own compute | A plan or a per-shipment price |
222
257
  | Who sees the tracking number | The carrier, plus any fallback you enable | The vendor, then the carrier |
223
- | Carriers | The [catalog](carriers/) in this repository | A much larger catalog |
258
+ | Carriers | Dedicated adapters for the [catalog](carriers/), fallbacks for the rest | One large catalog |
224
259
  | Updates | You poll | Webhooks |
225
260
  | When a carrier changes its site | The adapter breaks until it is fixed here | The vendor deals with it |
226
261
  | Hosting | Yours | Theirs |
227
262
 
228
- If you want the widest catalog and nothing to run, a hosted API is the better choice. This
229
- project is for when the numbers should stay on your side, or when a price per parcel makes
230
- no sense for what you are building. Vendor catalog totals are not comparable with the
231
- reference test above.
263
+ If you want webhooks and nothing to run, a hosted API is the better choice. This project is
264
+ for when the numbers should stay on your side, or when a price per parcel makes no sense for
265
+ what you are building. Vendor catalog totals are not comparable with the reference test
266
+ above.
232
267
 
233
268
  ## Privacy and limits
234
269
 
@@ -273,9 +273,11 @@
273
273
  ],
274
274
  "properties": {
275
275
  "field": {
276
- "description": "Input name; the generator checks it against the validators it accepts.",
277
- "type": "string",
278
- "minLength": 1
276
+ "description": "Input name. The generator checks that the validator is one this input accepts.",
277
+ "enum": [
278
+ "trackingUrl",
279
+ "postcode"
280
+ ]
279
281
  },
280
282
  "validator": {
281
283
  "type": "string",
package/data/catalog.json CHANGED
@@ -713,7 +713,7 @@
713
713
  "adapter": "gls-ch",
714
714
  "requirements": [
715
715
  {
716
- "field": "dpdPostcode",
716
+ "field": "postcode",
717
717
  "validator": "swissPostcode",
718
718
  "label": "Delivery postcode",
719
719
  "type": "text",
@@ -780,7 +780,7 @@
780
780
  "adapter": "dpd",
781
781
  "requirements": [
782
782
  {
783
- "field": "dpdPostcode",
783
+ "field": "postcode",
784
784
  "validator": "swissPostcode",
785
785
  "optional": true,
786
786
  "label": "Delivery postcode",
@@ -879,7 +879,7 @@
879
879
  "adapter": "mondial-relay",
880
880
  "requirements": [
881
881
  {
882
- "field": "dpdPostcode",
882
+ "field": "postcode",
883
883
  "whenTrackingNumber": "^(?![0-9]{26}$).*$",
884
884
  "validator": "francePostcode",
885
885
  "label": "Delivery postcode",
@@ -1268,7 +1268,7 @@
1268
1268
  "adapter": "heppner",
1269
1269
  "requirements": [
1270
1270
  {
1271
- "field": "dpdPostcode",
1271
+ "field": "postcode",
1272
1272
  "validator": "swissOrFrancePostcode",
1273
1273
  "label": "Delivery postcode",
1274
1274
  "type": "text",
@@ -1350,7 +1350,7 @@
1350
1350
  "adapter": "paack",
1351
1351
  "requirements": [
1352
1352
  {
1353
- "field": "dpdPostcode",
1353
+ "field": "postcode",
1354
1354
  "validator": "paackPostcode",
1355
1355
  "label": "Delivery postcode",
1356
1356
  "type": "text",
@@ -1545,7 +1545,7 @@
1545
1545
  "adapter": "gls-de",
1546
1546
  "requirements": [
1547
1547
  {
1548
- "field": "dpdPostcode",
1548
+ "field": "postcode",
1549
1549
  "validator": "swissOrFrancePostcode",
1550
1550
  "label": "Delivery postcode",
1551
1551
  "type": "text",
package/dist/app.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Helpers shaped for the parcel app this package was extracted from: its
3
+ * parcel view, carrier-name hints for provider results, and the clock helpers
4
+ * its sync uses. They change with that app and carry no stability promise;
5
+ * the tracking contract is the other entry points.
6
+ */
7
+ export * from './core/catalog/parcel.js';
8
+ export * from './core/catalog/hints.js';
9
+ export * from './core/time/result.js';
10
+ export { universalCarrierHints } from './providers/shared/hints.js';
11
+ export { recognitionAskedCarriers } from './core/catalog/recognition.js';
package/dist/app.js ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Helpers shaped for the parcel app this package was extracted from: its
3
+ * parcel view, carrier-name hints for provider results, and the clock helpers
4
+ * its sync uses. They change with that app and carry no stability promise;
5
+ * the tracking contract is the other entry points.
6
+ */
7
+ export * from './core/catalog/parcel.js';
8
+ export * from './core/catalog/hints.js';
9
+ export * from './core/time/result.js';
10
+ export { universalCarrierHints } from './providers/shared/hints.js';
11
+ export { recognitionAskedCarriers } from './core/catalog/recognition.js';