shipflow 0.1.0 → 0.2.1

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 (36) hide show
  1. package/README.md +139 -33
  2. package/dist/carriers/aramex/adapter.d.ts +82 -0
  3. package/dist/carriers/aramex/adapter.d.ts.map +1 -0
  4. package/dist/carriers/aramex/index.d.ts +9 -0
  5. package/dist/carriers/aramex/index.d.ts.map +1 -0
  6. package/dist/carriers/aramex/index.js +694 -0
  7. package/dist/carriers/aramex/index.js.map +12 -0
  8. package/dist/carriers/aramex/mappers.d.ts +76 -0
  9. package/dist/carriers/aramex/mappers.d.ts.map +1 -0
  10. package/dist/carriers/aramex/services.d.ts +74 -0
  11. package/dist/carriers/aramex/services.d.ts.map +1 -0
  12. package/dist/carriers/aramex/types.d.ts +302 -0
  13. package/dist/carriers/aramex/types.d.ts.map +1 -0
  14. package/dist/carriers/aymakan/adapter.d.ts +8 -2
  15. package/dist/carriers/aymakan/adapter.d.ts.map +1 -1
  16. package/dist/carriers/aymakan/index.js +138 -61
  17. package/dist/carriers/aymakan/index.js.map +4 -4
  18. package/dist/carriers/aymakan/mappers.d.ts +5 -0
  19. package/dist/carriers/aymakan/mappers.d.ts.map +1 -1
  20. package/dist/carriers/aymakan/types.d.ts +4 -6
  21. package/dist/carriers/aymakan/types.d.ts.map +1 -1
  22. package/dist/carriers/base.d.ts +2 -2
  23. package/dist/carriers/base.d.ts.map +1 -1
  24. package/dist/carriers/smsaexpress/adapter.d.ts +1 -1
  25. package/dist/carriers/smsaexpress/adapter.d.ts.map +1 -1
  26. package/dist/carriers/smsaexpress/index.js +32 -22
  27. package/dist/carriers/smsaexpress/index.js.map +4 -4
  28. package/dist/carriers/smsaexpress/mappers.d.ts.map +1 -1
  29. package/dist/core/http.d.ts.map +1 -1
  30. package/dist/core/schemas.d.ts +3 -3
  31. package/dist/core/types.d.ts +1 -1
  32. package/dist/core/types.d.ts.map +1 -1
  33. package/dist/{index-x8sk1kw9.js → index-qjtxhwzv.js} +5 -3
  34. package/dist/{index-x8sk1kw9.js.map → index-qjtxhwzv.js.map} +5 -5
  35. package/dist/index.js +1 -1
  36. package/package.json +8 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ShipFlow
2
2
 
3
- Unified Shipping SDK for MENA region carriers. A single API to create shipments, track packages, manage labels, handle webhooks, and more — across Aymakan, SMSA Express, and future carriers.
3
+ Unified Shipping SDK for MENA region carriers. A single API to create shipments, track packages, manage labels, handle webhooks, and more — across Aymakan, SMSA Express, Aramex, and future carriers.
4
4
 
5
5
  Think EasyPost / Shippo, but purpose-built for Saudi Arabia and the GCC.
6
6
 
@@ -25,6 +25,7 @@ bun add shipflow
25
25
  import { ShipFlow } from "shipflow";
26
26
  import { AymakanAdapter, AymakanService } from "shipflow/carriers/aymakan";
27
27
  import { SMSAExpressAdapter, SMSAService } from "shipflow/carriers/smsaexpress";
28
+ import { AramexAdapter } from "shipflow/carriers/aramex";
28
29
 
29
30
  const client = new ShipFlow({
30
31
  adapters: [
@@ -36,6 +37,18 @@ const client = new ShipFlow({
36
37
  mode: "sandbox",
37
38
  credentials: { apiKey: process.env.SMSA_API_KEY! },
38
39
  }),
40
+ // Aramex auth is a ClientInfo object sent in every request body (no API key)
41
+ new AramexAdapter({
42
+ mode: "sandbox",
43
+ credentials: {
44
+ userName: process.env.ARAMEX_USERNAME!,
45
+ password: process.env.ARAMEX_PASSWORD!,
46
+ accountNumber: process.env.ARAMEX_ACCOUNT_NUMBER!,
47
+ accountPin: process.env.ARAMEX_ACCOUNT_PIN!,
48
+ accountEntity: process.env.ARAMEX_ACCOUNT_ENTITY!, // e.g. "RUH"
49
+ accountCountryCode: process.env.ARAMEX_ACCOUNT_COUNTRY_CODE!, // e.g. "SA"
50
+ },
51
+ }),
39
52
  ],
40
53
  });
41
54
 
@@ -91,25 +104,26 @@ Every carrier adapter implements these **required** methods:
91
104
 
92
105
  Plus these **optional** methods (availability varies by carrier):
93
106
 
94
- | Method | Aymakan | SMSA |
95
- | ------------------------------------ | ------- | ---- |
96
- | `createBulkShipments(inputs)` | ✅ | — |
97
- | `cancelByReference(ref)` | ✅ | — |
98
- | `updateDeliveryAddress(tn, address)` | ✅ | — |
99
- | `trackByReference(ref)` | ✅ | ✅ |
100
- | `getBulkLabels(trackingNumbers)` | ✅ | — |
101
- | `getPickupCities()` | ✅ | — |
102
- | `getTimeSlots(city, date)` | ✅ | — |
103
- | `createPickup(input)` | ✅ | — |
104
- | `cancelPickup(id)` | ✅ | — |
105
- | `getPickupRequests()` | ✅ | — |
106
- | `getCities()` | ✅ | ✅ |
107
- | `getDropoffLocations()` | ✅ | ✅ |
108
- | `createCustomerAddress(addr)` | ✅ | — |
109
- | `getCustomerAddresses()` | ✅ | — |
110
- | `updateCustomerAddress(id, addr)` | ✅ | — |
111
- | `deleteCustomerAddress(id)` | ✅ | — |
112
- | `parseWebhook(payload, options)` | | ✅ |
107
+ | Method | Aymakan | SMSA | Aramex |
108
+ | ------------------------------------ | ------- | ---- | ------ |
109
+ | `createBulkShipments(inputs)` | ✅ | — | ✅ |
110
+ | `cancelByReference(ref)` | ✅ | — | — |
111
+ | `updateDeliveryAddress(tn, address)` | ✅ | — | — |
112
+ | `trackByReference(ref)` | ✅ | ✅ | ✅ |
113
+ | `getBulkLabels(trackingNumbers)` | ✅ | — | — |
114
+ | `getPickupCities()` | ✅ | — | — |
115
+ | `getTimeSlots(city, date)` | ✅ | — | — |
116
+ | `createPickup(input)` | ✅ | — | ✅ |
117
+ | `cancelPickup(id)` | ✅ | — | ✅ |
118
+ | `getPickupRequests()` | ✅ | — | — |
119
+ | `getCities()` | ✅ | ✅ | ✅ |
120
+ | `getDropoffLocations()` | ✅ | ✅ | ✅ |
121
+ | `createCustomerAddress(addr)` | ✅ | — | — |
122
+ | `getCustomerAddresses()` | ✅ | — | — |
123
+ | `updateCustomerAddress(id, addr)` | ✅ | — | — |
124
+ | `deleteCustomerAddress(id)` | ✅ | — | — |
125
+ | `getRates(input)` | | — | |
126
+ | `parseWebhook(payload, options)` | ✅ | ✅ | — |
113
127
 
114
128
  SMSA-specific methods:
115
129
 
@@ -123,19 +137,111 @@ SMSA-specific methods:
123
137
 
124
138
  ## Carrier Support
125
139
 
126
- | Feature | Aymakan | SMSA Express |
127
- | ----------------- | ------------------------------- | ---------------------------------- |
128
- | Countries | SA, AE, BH, KW, OM, QA | SA, AE, BH, EG, KW, OM, QA, JO |
129
- | Service types | 10 (ONP, SDD, RVP, EXH, ...) | 3 (EDDL, EDEL, EDCR) |
130
- | Shipment creation | Single + Bulk | B2C + C2B + 2-Way |
131
- | COD | ✅ | ✅ (B2C only) |
132
- | Cancellation | By tracking # or reference | C2B only |
133
- | Tracking | Single, bulk, by reference | Single, bulk, by reference |
134
- | Labels | PDF/PNG, single + bulk | PDF/ZPL |
135
- | Pickups | Full lifecycle | — |
136
- | Webhooks | ✅ (with auth verification) | ✅ (batch, with auth verification) |
137
- | City resolution | Arabic ↔ English smart matching | Code-based lookup |
138
- | Rates | ❌ | ❌ |
140
+ | Feature | Aymakan | SMSA Express | Aramex |
141
+ | ----------------- | ------------------------------- | ---------------------------------- | -------------------------------------- |
142
+ | Countries | SA, AE, BH, KW, OM, QA | SA, AE, BH, EG, KW, OM, QA, JO | SA, AE, BH, KW, OM, QA, JO, EG, LB, IQ |
143
+ | Service types | 10 (ONP, SDD, RVP, EXH, ...) | 3 (EDDL, EDEL, EDCR) | 10 product types (OND, PPX, EPX, ...) |
144
+ | Shipment creation | Single + Bulk | B2C + C2B + 2-Way | Single + Bulk (native batch) |
145
+ | COD | ✅ | ✅ (B2C only) | ✅ |
146
+ | Cancellation | By tracking # or reference | C2B only | Pickups only (no shipment cancel API) |
147
+ | Tracking | Single, bulk, by reference | Single, bulk, by reference | Single, bulk, by reference |
148
+ | Labels | PDF/PNG, single + bulk | PDF/ZPL | URL (HTML/PDF) |
149
+ | Pickups | Full lifecycle | — | Create + cancel |
150
+ | Webhooks | ✅ (with auth verification) | ✅ (batch, with auth verification) | — (poll via tracking) |
151
+ | City resolution | Arabic ↔ English smart matching | Code-based lookup | Name list (FetchCities / FetchOffices) |
152
+ | Rates | ❌ | ❌ | ✅ (CalculateRate) |
153
+
154
+ ## Aramex
155
+
156
+ Aramex is integrated via the **JSON flavor of the classic `ShippingAPI.V2` services**. A few
157
+ things make it different from the other carriers:
158
+
159
+ - **Auth is a `ClientInfo` object in every request body** (no API key / header, no token
160
+ exchange). Pass `userName`, `password`, `accountNumber`, `accountPin`, `accountEntity` (the
161
+ 3-letter origin office, e.g. `RUH`/`DXB`/`AMM`) and `accountCountryCode`.
162
+ - **Four independent services on separate hosts** — Shipping, Tracking, RateCalculator, and
163
+ Location. The adapter holds one HTTP client per service and routes automatically. If your
164
+ account provisions the Location service on a different host (some WSDLs use `anfe02.aramex.com`),
165
+ set `locationBaseUrl` on the config.
166
+ - **"Fake 200 OK" errors** — Aramex returns HTTP 200 even on logical failures, with
167
+ `HasErrors: true` + `Notifications[]`. ShipFlow surfaces these as `APIError`, including
168
+ per-shipment errors inside an otherwise-clean `CreateShipments` batch.
169
+ - **Rates are supported** (`getRates` → `CalculateRate`), unlike Aymakan/SMSA.
170
+ - **`cancelShipment` is unsupported** (the classic API has no shipment-cancel operation) and
171
+ throws `UnsupportedOperationError`. Pickups can be cancelled via `cancelPickup`.
172
+ - **Labels resolve to a URL** — the `format` argument of `getLabel` can't be honored.
173
+
174
+ ```typescript
175
+ import { AramexAdapter, AramexProductType } from "shipflow/carriers/aramex";
176
+
177
+ const aramex = client.carrier("aramex");
178
+
179
+ // Create a domestic COD shipment (freight prepaid, cash collected on delivery)
180
+ const shipment = await aramex.createShipment({
181
+ shipper: {
182
+ name: "My Store",
183
+ company: "ShipFlow",
184
+ phone: "966500000000",
185
+ line1: "King Fahd Road",
186
+ city: "Riyadh",
187
+ countryCode: "SA",
188
+ },
189
+ consignee: {
190
+ name: "Customer",
191
+ phone: "966500000001",
192
+ line1: "Prince Sultan Road",
193
+ city: "Jeddah",
194
+ countryCode: "SA",
195
+ },
196
+ parcels: [{ weight: { value: 1, unit: "kg" }, pieces: 1 }],
197
+ cod: { enabled: true, amount: 150, currency: "SAR" },
198
+ });
199
+
200
+ // Quote a rate, then track
201
+ const rates = await aramex.getRates!(input);
202
+ const result = await aramex.track(shipment.trackingNumber);
203
+ ```
204
+
205
+ **Product group / type & payment** — ShipFlow infers `DOM` (domestic) when shipper and consignee
206
+ share a country, else `EXP`, and picks a sensible default product type (`OND` for domestic, `EPX`
207
+ for express). Override with `serviceType` (a valid Aramex code) or
208
+ `options.metadata.productGroup` / `productType`.
209
+
210
+ The freight **`PaymentType`** — who pays the *shipping cost* — defaults to `P` and is independent
211
+ of COD: enabling COD adds the `CODS` service and the cash amount to collect from the consignee, but
212
+ does **not** charge them freight. Override the freight payer with `options.metadata.paymentType`:
213
+
214
+ | Value | Freight billed to | When to use |
215
+ | ----- | ----------------- | ----------- |
216
+ | `"P"` _(default)_ | Shipper's Aramex account (prepaid) | Standard KSA/GCC e-commerce — merchant pays shipping, even with COD |
217
+ | `"C"` | Consignee, collected at delivery | Customer pays shipping on top of any COD |
218
+ | `"3"` | A third-party account | Freight billed to someone other than shipper/consignee |
219
+
220
+ ```typescript
221
+ // Default: COD shipment with prepaid freight (PaymentType "P")
222
+ await aramex.createShipment({
223
+ ...input,
224
+ cod: { enabled: true, amount: 150, currency: "SAR" }, // freight stays "P"
225
+ });
226
+
227
+ // Override: charge the customer freight at the door (PaymentType "C")
228
+ await aramex.createShipment({
229
+ ...input,
230
+ cod: { enabled: true, amount: 150, currency: "SAR" },
231
+ options: { metadata: { paymentType: "C" } },
232
+ });
233
+
234
+ // Override: bill freight to a third party (PaymentType "3")
235
+ await aramex.createShipment({
236
+ ...input,
237
+ options: { metadata: { paymentType: "3" } },
238
+ });
239
+ ```
240
+
241
+ > Aramex does not push webhooks — poll `track()` / `trackMultiple()` for status updates.
242
+ > Tracking `UpdateCode`s vary by region and aren't fully published, so ShipFlow maps known codes
243
+ > and falls back to a description-keyword heuristic (then `"unknown"`) — an unmapped code never
244
+ > breaks tracking.
139
245
 
140
246
  ## Webhook Handling
141
247
 
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Aramex Carrier Adapter
3
+ * Implementation of the CarrierAdapter interface for the Aramex JSON Shipping
4
+ * Services API v2.
5
+ *
6
+ * Key differences from the other carriers:
7
+ * - Auth is a `ClientInfo` object sent in EVERY request body (not headers).
8
+ * - The four Aramex services (Shipping, Tracking, RateCalculator, Location)
9
+ * live on different base URLs, so the adapter holds one HttpClient per service.
10
+ * - Errors use the "Fake 200 OK" pattern (HTTP 200 + `HasErrors`/`Notifications`),
11
+ * surfaced via the shared HttpClient's `errorExtractor` hook on every call.
12
+ */
13
+ import type { CarrierConfig, City, CreateShipmentInput, Location, Pickup, PickupRequest, Rate, Shipment, TrackingResult } from "../../core/types.js";
14
+ import { BaseCarrierAdapter } from "../base.js";
15
+ export interface AramexConfig extends CarrierConfig {
16
+ credentials: {
17
+ userName: string;
18
+ password: string;
19
+ accountNumber: string;
20
+ accountPin: string;
21
+ accountEntity: string;
22
+ accountCountryCode: string;
23
+ };
24
+ /** API source channel (default 24). */
25
+ source?: number;
26
+ /** ClientInfo version (default "v1.0"). */
27
+ version?: string;
28
+ /** Company name used when an address has no company set. */
29
+ companyName?: string;
30
+ /**
31
+ * Optional override for the Location service base URL. Live Aramex WSDLs
32
+ * disagree on the production Location host (ws.aramex.net vs anfe02.aramex.com);
33
+ * set this if your account is provisioned on a different host.
34
+ */
35
+ locationBaseUrl?: string;
36
+ }
37
+ export declare class AramexAdapter extends BaseCarrierAdapter {
38
+ readonly name = "aramex";
39
+ readonly supportedCountries: string[];
40
+ private shippingHttp;
41
+ private trackingHttp;
42
+ private rateHttp;
43
+ private locationHttp;
44
+ constructor(config: AramexConfig);
45
+ protected getBaseUrl(): string;
46
+ /** Derive a sibling service base URL by swapping the `/Shipping/` segment. */
47
+ private serviceBase;
48
+ private get aramexConfig();
49
+ private buildClientInfo;
50
+ /**
51
+ * Extracts the Aramex "Fake 200 OK" error (envelope-level `HasErrors` +
52
+ * `Notifications`). Passed to every request so the HttpClient raises APIError.
53
+ */
54
+ private static aramexErrorExtractor;
55
+ private static notificationsToErrors;
56
+ protected executeCreateShipment(input: CreateShipmentInput): Promise<Shipment>;
57
+ /**
58
+ * Create multiple shipments in a single request. Aramex's `CreateShipments`
59
+ * operation is natively batch — it takes a `Shipments` array and returns one
60
+ * processed result per shipment, in request order.
61
+ *
62
+ * Fails loud: if ANY shipment in the batch errors, an `APIError` is thrown
63
+ * whose `raw` holds the full response, so already-created AWBs remain
64
+ * recoverable (the unified `Shipment` type has no per-item error channel).
65
+ */
66
+ createBulkShipments(inputs: CreateShipmentInput[]): Promise<Shipment[]>;
67
+ /**
68
+ * Aramex's classic Shipping Services API has no shipment-cancellation
69
+ * endpoint, so this is unsupported. (Pickups can be cancelled via cancelPickup.)
70
+ */
71
+ cancelShipment(_trackingNumber: string): Promise<boolean>;
72
+ getLabel(trackingNumber: string, _format?: "PDF" | "ZPL" | "PNG"): Promise<string>;
73
+ track(trackingNumber: string): Promise<TrackingResult>;
74
+ trackMultiple(trackingNumbers: string[]): Promise<TrackingResult[]>;
75
+ trackByReference(reference: string): Promise<TrackingResult>;
76
+ getRates(input: CreateShipmentInput): Promise<Rate[]>;
77
+ createPickup(input: PickupRequest): Promise<Pickup>;
78
+ cancelPickup(pickupId: string | number): Promise<boolean>;
79
+ getCities(countryCode?: string): Promise<City[]>;
80
+ getDropoffLocations(countryCode?: string): Promise<Location[]>;
81
+ }
82
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/carriers/aramex/adapter.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAYH,OAAO,KAAK,EACV,aAAa,EACb,IAAI,EACJ,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,aAAa,EACb,IAAI,EACJ,QAAQ,EACR,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAsD7C,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,aAAc,SAAQ,kBAAkB;IACnD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,kBAAkB,WAWzB;IAEF,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAa;gBAErB,MAAM,EAAE,YAAY;IAuBhC,SAAS,CAAC,UAAU,IAAI,MAAM;IAM9B,8EAA8E;IAC9E,OAAO,CAAC,WAAW;IAInB,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,eAAe;IAQvB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAyBnC,OAAO,CAAC,MAAM,CAAC,qBAAqB;cAcpB,qBAAqB,CACnC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,QAAQ,CAAC;IA6CpB;;;;;;;;OAQG;IACG,mBAAmB,CACvB,MAAM,EAAE,mBAAmB,EAAE,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwDtB;;;OAGG;IACH,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnD,QAAQ,CACZ,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAC9B,OAAO,CAAC,MAAM,CAAC;IA8BZ,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAetD,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4BnE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU5D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA4BrD,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAyDnD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBzD,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAehD,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAcrE"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Aramex Carrier Exports
3
+ * Import from 'shipflow/carriers/aramex' for tree-shaking.
4
+ */
5
+ export { AramexAdapter, type AramexConfig } from "./adapter.js";
6
+ export { AramexProductGroup, AramexProductType, AramexPaymentType, AramexService, AramexStatusCodes, type AramexProductGroupType, type AramexProductTypeCode, type AramexPaymentTypeCode, } from "./services.js";
7
+ export { buildClientInfo, mapAramexStatus, statusFromDescription, parseAramexDate, type AramexCredentials, } from "./mappers.js";
8
+ export type { AramexClientInfo, AramexCreateShipmentsRequest, AramexCreateShipmentsResponse, AramexProcessedShipment, AramexShipmentLabel, AramexPrintLabelResponse, AramexTrackShipmentsRequest, AramexTrackShipmentsResponse, AramexTrackingResult, AramexCalculateRateRequest, AramexCalculateRateResponse, AramexCreatePickupRequest, AramexCreatePickupResponse, AramexCancelPickupRequest, AramexFetchCitiesResponse, AramexFetchOfficesResponse, } from "./types.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/carriers/aramex/index.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAG7D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,gBAAgB,EAChB,4BAA4B,EAC5B,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,SAAS,CAAC"}