shipflow 0.1.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/README.md +328 -0
- package/dist/carriers/aymakan/adapter.d.ts +87 -0
- package/dist/carriers/aymakan/adapter.d.ts.map +1 -0
- package/dist/carriers/aymakan/index.d.ts +9 -0
- package/dist/carriers/aymakan/index.d.ts.map +1 -0
- package/dist/carriers/aymakan/index.js +625 -0
- package/dist/carriers/aymakan/index.js.map +12 -0
- package/dist/carriers/aymakan/mappers.d.ts +21 -0
- package/dist/carriers/aymakan/mappers.d.ts.map +1 -0
- package/dist/carriers/aymakan/services.d.ts +47 -0
- package/dist/carriers/aymakan/services.d.ts.map +1 -0
- package/dist/carriers/aymakan/types.d.ts +287 -0
- package/dist/carriers/aymakan/types.d.ts.map +1 -0
- package/dist/carriers/base.d.ts +88 -0
- package/dist/carriers/base.d.ts.map +1 -0
- package/dist/carriers/smsaexpress/adapter.d.ts +57 -0
- package/dist/carriers/smsaexpress/adapter.d.ts.map +1 -0
- package/dist/carriers/smsaexpress/index.d.ts +9 -0
- package/dist/carriers/smsaexpress/index.d.ts.map +1 -0
- package/dist/carriers/smsaexpress/index.js +408 -0
- package/dist/carriers/smsaexpress/index.js.map +12 -0
- package/dist/carriers/smsaexpress/mappers.d.ts +45 -0
- package/dist/carriers/smsaexpress/mappers.d.ts.map +1 -0
- package/dist/carriers/smsaexpress/services.d.ts +21 -0
- package/dist/carriers/smsaexpress/services.d.ts.map +1 -0
- package/dist/carriers/smsaexpress/types.d.ts +197 -0
- package/dist/carriers/smsaexpress/types.d.ts.map +1 -0
- package/dist/client.d.ts +44 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/core/errors.d.ts +69 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/http.d.ts +72 -0
- package/dist/core/http.d.ts.map +1 -0
- package/dist/core/schemas.d.ts +832 -0
- package/dist/core/schemas.d.ts.map +1 -0
- package/dist/core/types.d.ts +234 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/index-x8sk1kw9.js +4600 -0
- package/dist/index-x8sk1kw9.js.map +22 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +10 -0
- package/package.json +63 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMSA Express Raw API Types
|
|
3
|
+
* These directly mirror the SMSA Express API request/response formats.
|
|
4
|
+
*/
|
|
5
|
+
export interface SMSAShipmentAddress {
|
|
6
|
+
AddressLine1: string;
|
|
7
|
+
AddressLine2?: string;
|
|
8
|
+
City: string;
|
|
9
|
+
ConsigneeID?: string;
|
|
10
|
+
ContactName: string;
|
|
11
|
+
ContactPhoneNumber: string;
|
|
12
|
+
Coordinates?: string;
|
|
13
|
+
Country: string;
|
|
14
|
+
District?: string;
|
|
15
|
+
PostalCode?: string;
|
|
16
|
+
ShortCode?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SMSACreateB2CShipmentRequest {
|
|
19
|
+
CODAmount: number;
|
|
20
|
+
ConsigneeAddress: SMSAShipmentAddress;
|
|
21
|
+
ContentDescription: string;
|
|
22
|
+
DeclaredValue: number;
|
|
23
|
+
DutyPaid?: boolean;
|
|
24
|
+
OrderNumber: string;
|
|
25
|
+
Parcels: number;
|
|
26
|
+
ServiceCode?: string;
|
|
27
|
+
ShipDate: string;
|
|
28
|
+
ShipmentCurrency: string;
|
|
29
|
+
ShipperAddress: SMSAShipmentAddress;
|
|
30
|
+
SMSARetailID?: string;
|
|
31
|
+
VatPaid?: boolean;
|
|
32
|
+
WaybillType?: "PDF" | "ZPL";
|
|
33
|
+
Weight: number;
|
|
34
|
+
WeightUnit: "KG" | "LB";
|
|
35
|
+
}
|
|
36
|
+
export interface SMSACreateC2BShipmentRequest {
|
|
37
|
+
ContentDescription: string;
|
|
38
|
+
DeclaredValue: number;
|
|
39
|
+
OrderNumber: string;
|
|
40
|
+
Parcels: number;
|
|
41
|
+
PickupAddress: SMSAShipmentAddress;
|
|
42
|
+
ReturnToAddress: SMSAShipmentAddress;
|
|
43
|
+
ServiceCode?: string;
|
|
44
|
+
ShipDate: string;
|
|
45
|
+
ShipmentCurrency: string;
|
|
46
|
+
SMSARetailID?: string;
|
|
47
|
+
WaybillType?: "PDF" | "ZPL";
|
|
48
|
+
Weight: number;
|
|
49
|
+
WeightUnit: "KG" | "LB";
|
|
50
|
+
}
|
|
51
|
+
export interface SMSACreate2WayShipmentRequest {
|
|
52
|
+
ConsigneeAddress: SMSAShipmentAddress;
|
|
53
|
+
ContentDescription: string;
|
|
54
|
+
DeclaredValue: number;
|
|
55
|
+
DutyPaid?: boolean;
|
|
56
|
+
OrderNumber: string;
|
|
57
|
+
Parcels: number;
|
|
58
|
+
ShipDate: string;
|
|
59
|
+
ShipmentCurrency: string;
|
|
60
|
+
ShipperAddress: SMSAShipmentAddress;
|
|
61
|
+
SMSARetailID?: string;
|
|
62
|
+
VatPaid?: boolean;
|
|
63
|
+
WaybillType?: "PDF" | "ZPL";
|
|
64
|
+
Weight: number;
|
|
65
|
+
WeightUnit: "KG" | "LB";
|
|
66
|
+
}
|
|
67
|
+
export interface SMSAInvoiceItem {
|
|
68
|
+
CountryOfOrigin?: string;
|
|
69
|
+
ItemDescription: string;
|
|
70
|
+
ItemHSCode: string;
|
|
71
|
+
ItemReference: string;
|
|
72
|
+
ItemValue: number;
|
|
73
|
+
Quantity: number;
|
|
74
|
+
QuantityUnit: string;
|
|
75
|
+
sequence: number;
|
|
76
|
+
Weight: number;
|
|
77
|
+
}
|
|
78
|
+
export interface SMSASendInvoiceRequest {
|
|
79
|
+
AWB: string;
|
|
80
|
+
Currency: string;
|
|
81
|
+
InvoiceDate: string;
|
|
82
|
+
Items: SMSAInvoiceItem[];
|
|
83
|
+
WeightUnit: "KG" | "LB";
|
|
84
|
+
}
|
|
85
|
+
export interface SMSAPushIdDetailsRequest {
|
|
86
|
+
awb: string;
|
|
87
|
+
birthDate: string;
|
|
88
|
+
documentType: "PASSPORT" | "ID_CARD" | "RESIDENCE_PERMIT";
|
|
89
|
+
idName: string;
|
|
90
|
+
idNumber: string;
|
|
91
|
+
issueDate: string;
|
|
92
|
+
nationality: string;
|
|
93
|
+
shipmentReference?: string;
|
|
94
|
+
}
|
|
95
|
+
export interface SMSAWaybill {
|
|
96
|
+
awb: string;
|
|
97
|
+
awbFile: string;
|
|
98
|
+
returnBarcode?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface SMSAShipmentResponse {
|
|
101
|
+
sawb: string;
|
|
102
|
+
createDate: string;
|
|
103
|
+
shipmentParcelsCount: number;
|
|
104
|
+
waybills: SMSAWaybill[];
|
|
105
|
+
}
|
|
106
|
+
export interface SMSATrackingScan {
|
|
107
|
+
ReceivedBy?: string;
|
|
108
|
+
City: string;
|
|
109
|
+
ScanType: string;
|
|
110
|
+
ScanDescription: string;
|
|
111
|
+
ScanDateTime: string;
|
|
112
|
+
ScanTimeZone: string;
|
|
113
|
+
}
|
|
114
|
+
export interface SMSATrackingResponse {
|
|
115
|
+
AWB: string;
|
|
116
|
+
Reference: string;
|
|
117
|
+
Pieces: number;
|
|
118
|
+
CODAmount: number;
|
|
119
|
+
ContentDesc: string;
|
|
120
|
+
RecipientName: string;
|
|
121
|
+
OriginCity: string;
|
|
122
|
+
OriginCountry: string;
|
|
123
|
+
DesinationCity: string;
|
|
124
|
+
DesinationCountry: string;
|
|
125
|
+
isDelivered?: boolean;
|
|
126
|
+
Scans: SMSATrackingScan[];
|
|
127
|
+
}
|
|
128
|
+
export interface SMSAStatusLookupItem {
|
|
129
|
+
Code: string;
|
|
130
|
+
ScanDescEN: string;
|
|
131
|
+
ScanDescAR: string;
|
|
132
|
+
}
|
|
133
|
+
export interface SMSACityLookupItem {
|
|
134
|
+
cityName: string;
|
|
135
|
+
cityCode: string;
|
|
136
|
+
countryCode: string;
|
|
137
|
+
currencyCode: string;
|
|
138
|
+
currencyName: string;
|
|
139
|
+
}
|
|
140
|
+
export interface SMSACountryCurrencyItem {
|
|
141
|
+
countryName: string;
|
|
142
|
+
countryCode: string;
|
|
143
|
+
currency: string;
|
|
144
|
+
currencyCode: string;
|
|
145
|
+
}
|
|
146
|
+
export interface SMSAOfficeLookupItem {
|
|
147
|
+
code: string;
|
|
148
|
+
address: string;
|
|
149
|
+
cityName: string;
|
|
150
|
+
addressAR: string;
|
|
151
|
+
coordinates: string;
|
|
152
|
+
firstShift: string;
|
|
153
|
+
secondShift: string;
|
|
154
|
+
weekendShift: string;
|
|
155
|
+
}
|
|
156
|
+
export interface SMSAShortAddressResponse {
|
|
157
|
+
address1: string;
|
|
158
|
+
address2: string;
|
|
159
|
+
buildingNumber: string;
|
|
160
|
+
street: string;
|
|
161
|
+
district: string;
|
|
162
|
+
city: string;
|
|
163
|
+
postCode: string;
|
|
164
|
+
additionalNumber: string;
|
|
165
|
+
regionName: string;
|
|
166
|
+
latitude: string;
|
|
167
|
+
longitude: string;
|
|
168
|
+
}
|
|
169
|
+
export interface SMSAPushIdDetailsResponse {
|
|
170
|
+
id: number;
|
|
171
|
+
awb: string;
|
|
172
|
+
message: string;
|
|
173
|
+
}
|
|
174
|
+
/** SMSA webhook scan includes a ReferenceID field not present in regular tracking scans */
|
|
175
|
+
export interface SMSAWebhookScan extends SMSATrackingScan {
|
|
176
|
+
ReferenceID: number;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* SMSA webhook shipment payload.
|
|
180
|
+
* Same structure as SMSATrackingResponse but scans include ReferenceID.
|
|
181
|
+
* SMSA sends an array of these as the webhook payload.
|
|
182
|
+
*/
|
|
183
|
+
export interface SMSAWebhookShipment {
|
|
184
|
+
AWB: string;
|
|
185
|
+
Reference: string;
|
|
186
|
+
Pieces: number;
|
|
187
|
+
CODAmount: number;
|
|
188
|
+
ContentDesc: string;
|
|
189
|
+
RecipientName: string;
|
|
190
|
+
OriginCity: string;
|
|
191
|
+
OriginCountry: string;
|
|
192
|
+
DesinationCity: string;
|
|
193
|
+
DesinationCountry: string;
|
|
194
|
+
isDelivered?: boolean;
|
|
195
|
+
Scans: SMSAWebhookScan[];
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/carriers/smsaexpress/types.ts"],"names":[],"mappings":"AACA;;;GAGG;AAMH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,mBAAmB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,mBAAmB,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,6BAA6B;IAC5C,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,mBAAmB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,UAAU,GAAG,SAAS,GAAG,kBAAkB,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAMD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,2FAA2F;AAC3F,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShipFlow Client
|
|
3
|
+
* Tree-shakeable factory that accepts carrier adapters via dependency injection.
|
|
4
|
+
* Only the carriers you inject will be bundled in your final application.
|
|
5
|
+
*/
|
|
6
|
+
import type { CarrierAdapter } from "./carriers/base.js";
|
|
7
|
+
import type { CreateShipmentInput, Rate, TrackingResult } from "./core/types.js";
|
|
8
|
+
export interface ShipFlowOptions {
|
|
9
|
+
adapters: CarrierAdapter[];
|
|
10
|
+
}
|
|
11
|
+
export declare class ShipFlow {
|
|
12
|
+
private adapters;
|
|
13
|
+
constructor(options: ShipFlowOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Get a specific carrier adapter by name.
|
|
16
|
+
* @throws ShipFlowError if carrier is not configured
|
|
17
|
+
*/
|
|
18
|
+
carrier(name: string): CarrierAdapter;
|
|
19
|
+
/**
|
|
20
|
+
* Get all configured carrier names.
|
|
21
|
+
*/
|
|
22
|
+
get carriers(): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Check if a carrier is configured.
|
|
25
|
+
*/
|
|
26
|
+
hasCarrier(name: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Get rates from all configured carriers that support rate calculation.
|
|
29
|
+
* Returns a map of carrier name to rates (or error).
|
|
30
|
+
*/
|
|
31
|
+
getRatesFromAll(input: CreateShipmentInput): Promise<Map<string, Rate[] | Error>>;
|
|
32
|
+
/**
|
|
33
|
+
* Try to track a shipment across all configured carriers in parallel.
|
|
34
|
+
* Useful when you don't know which carrier handles a tracking number.
|
|
35
|
+
* Returns the first successful result with a known status.
|
|
36
|
+
*/
|
|
37
|
+
trackAcrossCarriers(trackingNumber: string): Promise<TrackingResult | null>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Factory function for creating ShipFlow client.
|
|
41
|
+
* This is the recommended way to instantiate the client.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createShipFlow(options: ShipFlowOptions): ShipFlow;
|
|
44
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAA8B;gBAElC,OAAO,EAAE,eAAe;IAQpC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAUrC;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACG,eAAe,CACnB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;IAyBvC;;;;OAIG;IACG,mBAAmB,CACvB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAiBlC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAEjE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShipFlow Error Hierarchy
|
|
3
|
+
* All errors extend ShipFlowError for consistent catch/handle patterns
|
|
4
|
+
*/
|
|
5
|
+
export declare class ShipFlowError extends Error {
|
|
6
|
+
readonly carrier?: string;
|
|
7
|
+
readonly code?: string;
|
|
8
|
+
readonly raw?: unknown;
|
|
9
|
+
constructor(message: string, options?: {
|
|
10
|
+
carrier?: string;
|
|
11
|
+
code?: string;
|
|
12
|
+
raw?: unknown;
|
|
13
|
+
cause?: Error;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/** Network-level errors (timeout, DNS, connection refused) */
|
|
17
|
+
export declare class NetworkError extends ShipFlowError {
|
|
18
|
+
constructor(message: string, options?: {
|
|
19
|
+
carrier?: string;
|
|
20
|
+
cause?: Error;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/** API returned an error response (4xx, 5xx, or logical error like Aramex HasErrors: true) */
|
|
24
|
+
export declare class APIError extends ShipFlowError {
|
|
25
|
+
readonly statusCode?: number;
|
|
26
|
+
readonly errors?: Record<string, string[]>;
|
|
27
|
+
constructor(message: string, options?: {
|
|
28
|
+
carrier?: string;
|
|
29
|
+
code?: string;
|
|
30
|
+
statusCode?: number;
|
|
31
|
+
errors?: Record<string, string[]>;
|
|
32
|
+
raw?: unknown;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** Validation failed before sending request (Zod parse failure) */
|
|
36
|
+
export declare class ValidationError extends ShipFlowError {
|
|
37
|
+
readonly field?: string;
|
|
38
|
+
readonly issues?: Array<{
|
|
39
|
+
path: string;
|
|
40
|
+
message: string;
|
|
41
|
+
}>;
|
|
42
|
+
constructor(message: string, options?: {
|
|
43
|
+
field?: string;
|
|
44
|
+
issues?: Array<{
|
|
45
|
+
path: string;
|
|
46
|
+
message: string;
|
|
47
|
+
}>;
|
|
48
|
+
raw?: unknown;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** Invalid or missing credentials */
|
|
52
|
+
export declare class AuthenticationError extends ShipFlowError {
|
|
53
|
+
constructor(message: string, options?: {
|
|
54
|
+
carrier?: string;
|
|
55
|
+
raw?: unknown;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** Webhook signature/auth verification failed */
|
|
59
|
+
export declare class WebhookVerificationError extends ShipFlowError {
|
|
60
|
+
constructor(message: string, options?: {
|
|
61
|
+
carrier?: string;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/** Carrier does not support this operation */
|
|
65
|
+
export declare class UnsupportedOperationError extends ShipFlowError {
|
|
66
|
+
readonly operation: string;
|
|
67
|
+
constructor(carrier: string, operation: string);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAQ9E;AAED,8DAA8D;AAC9D,qBAAa,YAAa,SAAQ,aAAa;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAI3E;AAED,8FAA8F;AAC9F,qBAAa,QAAS,SAAQ,aAAa;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAGzC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,GAAG,CAAC,EAAE,OAAO,CAAC;KACf;CAOJ;AAED,mEAAmE;AACnE,qBAAa,eAAgB,SAAQ,aAAa;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;gBAGzD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClD,GAAG,CAAC,EAAE,OAAO,CAAC;KACf;CAOJ;AAED,qCAAqC;AACrC,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3E;AAED,iDAAiD;AACjD,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAI5D;AAED,8CAA8C;AAC9C,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAK/C"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bun-native HTTP client for ShipFlow
|
|
3
|
+
* - Uses native fetch (optimized in Bun)
|
|
4
|
+
* - Handles "Fake 200 OK" responses (Aramex pattern)
|
|
5
|
+
* - Automatic JSON parsing with error extraction
|
|
6
|
+
* - Retry with exponential backoff via p-retry (GET only by default)
|
|
7
|
+
*
|
|
8
|
+
* SAFETY: Mutating requests (POST/PUT/DELETE/PATCH) are NOT retried by default
|
|
9
|
+
* because retrying e.g. createShipment after a 500 could create duplicate
|
|
10
|
+
* shipments on the carrier side. Use `retry: true` in RequestOptions to
|
|
11
|
+
* explicitly opt-in for safe POST endpoints (e.g. bulk tracking).
|
|
12
|
+
*/
|
|
13
|
+
export interface RetryConfig {
|
|
14
|
+
/** Max number of retries (default: 2) */
|
|
15
|
+
retries?: number;
|
|
16
|
+
/** HTTP status codes to retry on (default: [429, 500, 502, 503, 504]) */
|
|
17
|
+
retryableStatuses?: number[];
|
|
18
|
+
}
|
|
19
|
+
export interface HttpClientConfig {
|
|
20
|
+
baseUrl: string;
|
|
21
|
+
carrier: string;
|
|
22
|
+
headers?: Record<string, string>;
|
|
23
|
+
timeout?: number;
|
|
24
|
+
retry?: RetryConfig | false;
|
|
25
|
+
}
|
|
26
|
+
export interface RequestOptions {
|
|
27
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
|
|
28
|
+
headers?: Record<string, string>;
|
|
29
|
+
body?: unknown;
|
|
30
|
+
params?: Record<string, string | number | boolean | undefined>;
|
|
31
|
+
/**
|
|
32
|
+
* Override default retry behavior for this request.
|
|
33
|
+
* - `true` → allow retries (use for safe/idempotent POST endpoints like tracking)
|
|
34
|
+
* - `false` → never retry this request
|
|
35
|
+
* - omitted → auto (GET retries, mutating methods do not)
|
|
36
|
+
*/
|
|
37
|
+
retry?: boolean;
|
|
38
|
+
/** Custom error extractor for carriers with non-standard error formats */
|
|
39
|
+
errorExtractor?: (json: unknown) => {
|
|
40
|
+
hasError: boolean;
|
|
41
|
+
message?: string;
|
|
42
|
+
errors?: Record<string, string[]>;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export declare class HttpClient {
|
|
46
|
+
private config;
|
|
47
|
+
private retryConfig;
|
|
48
|
+
private static readonly DEFAULT_RETRYABLE;
|
|
49
|
+
private static readonly SAFE_METHODS;
|
|
50
|
+
constructor(config: HttpClientConfig);
|
|
51
|
+
request<T>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
52
|
+
/**
|
|
53
|
+
* Determine if a request should be retried.
|
|
54
|
+
* - Explicit `retry` option on the request takes priority
|
|
55
|
+
* - Otherwise: only safe/idempotent methods (GET) are retried
|
|
56
|
+
*/
|
|
57
|
+
private shouldRetry;
|
|
58
|
+
private isRetryable;
|
|
59
|
+
private executeRequest;
|
|
60
|
+
private handleHttpError;
|
|
61
|
+
private extractErrorMessage;
|
|
62
|
+
private extractValidationErrors;
|
|
63
|
+
/** Create GET request */
|
|
64
|
+
get<T>(endpoint: string, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
65
|
+
/** Create POST request */
|
|
66
|
+
post<T>(endpoint: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
67
|
+
/** Create PUT request */
|
|
68
|
+
put<T>(endpoint: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
69
|
+
/** Create DELETE request */
|
|
70
|
+
delete<T>(endpoint: string, options?: Omit<RequestOptions, "method">): Promise<T>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAUH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK;QAClC,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACnC,CAAC;CACH;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAAmD;IAEtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IACtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuC;gBAE/D,MAAM,EAAE,gBAAgB;IAc9B,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAe5E;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;YAQL,cAAc;IA6G5B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,uBAAuB;IAc/B,yBAAyB;IACzB,GAAG,CAAC,CAAC,EACH,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb,0BAA0B;IAC1B,IAAI,CAAC,CAAC,EACJ,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb,yBAAyB;IACzB,GAAG,CAAC,CAAC,EACH,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb,4BAA4B;IAC5B,MAAM,CAAC,CAAC,EACN,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC;CAGd"}
|