medusa-shiprocket-fulfillment-plugin 0.3.0 → 0.3.2

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.
@@ -7,6 +7,7 @@ const axios_1 = __importDefault(require("axios"));
7
7
  const utils_1 = require("@medusajs/utils");
8
8
  const authenticate_1 = require("./methods/authenticate");
9
9
  const handle_error_1 = require("./handle-error");
10
+ const DEFAULT_TIMEOUT = 15000; // 15 seconds
10
11
  class ShiprocketClient {
11
12
  constructor(options) {
12
13
  this.token = null;
@@ -20,9 +21,9 @@ class ShiprocketClient {
20
21
  this.axios = axios_1.default.create({
21
22
  baseURL: "https://apiv2.shiprocket.in/v1/external",
22
23
  headers: { "Content-Type": "application/json" },
23
- timeout: 10000,
24
+ timeout: options.timeout || DEFAULT_TIMEOUT,
24
25
  });
25
- // Interceptor to handle 401 Unauthorized automatically
26
+ // Interceptor to handle 401 Unauthorized - auto-refresh token
26
27
  this.axios.interceptors.response.use((response) => response, async (error) => {
27
28
  const originalRequest = error.config;
28
29
  if (error.response?.status === 401 &&
@@ -57,36 +58,133 @@ class ShiprocketClient {
57
58
  await this.refreshToken();
58
59
  }
59
60
  }
61
+ /**
62
+ * Get all pickup locations with their pincodes
63
+ * @param locationName Optional - filter by location name/nickname
64
+ */
65
+ async getPickupLocations(locationName) {
66
+ await this.ensureToken();
67
+ try {
68
+ const response = await this.axios.get("/settings/company/pickup");
69
+ const locations = response.data.data.shipping_address || [];
70
+ // Filter by location name if provided
71
+ if (locationName) {
72
+ return locations.filter((loc) => loc.pickup_location.toLowerCase() === locationName.toLowerCase());
73
+ }
74
+ return locations;
75
+ }
76
+ catch (error) {
77
+ (0, handle_error_1.handleError)(error, { operation: "getPickupLocations" });
78
+ return [];
79
+ }
80
+ }
81
+ /**
82
+ * Get pincode for a pickup location by name
83
+ */
84
+ async getPickupPincode(locationName) {
85
+ const locations = await this.getPickupLocations(locationName);
86
+ return locations[0]?.pin_code || null;
87
+ }
88
+ /**
89
+ * Calculate shipping rate for a route
90
+ */
60
91
  async calculate(data) {
61
92
  await this.ensureToken();
62
93
  try {
63
94
  const response = await this.axios.get("/courier/serviceability/", { params: data });
64
95
  const availableCouriers = response.data.data.available_courier_companies;
65
96
  if (!availableCouriers?.length) {
66
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "No couriers available for this route");
97
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No couriers available for route ${data.pickup_postcode} -> ${data.delivery_postcode}`);
67
98
  }
99
+ // Filter by allowed courier IDs if specified
68
100
  const filtered = data.allowed_courier_ids?.length
69
101
  ? availableCouriers.filter((c) => data.allowed_courier_ids.includes(c.id))
70
102
  : availableCouriers;
71
103
  if (!filtered?.length) {
72
104
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "No allowed couriers available for this route");
73
105
  }
106
+ // Return cheapest rate
74
107
  const cheapest = filtered.reduce((min, curr) => Number(curr.rate) < Number(min.rate) ? curr : min);
75
108
  return Math.ceil(Number(cheapest?.rate) || 0);
76
109
  }
77
110
  catch (error) {
78
- (0, handle_error_1.handleError)(error);
79
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Rate calculation failed unexpectedly");
111
+ if (error instanceof utils_1.MedusaError)
112
+ throw error;
113
+ (0, handle_error_1.handleError)(error, { operation: "calculate" });
80
114
  }
81
115
  }
116
+ /**
117
+ * Get delivery estimate for a route - returns fastest delivery date
118
+ */
119
+ async getDeliveryEstimate(data) {
120
+ await this.ensureToken();
121
+ try {
122
+ const response = await this.axios.get("/courier/serviceability/", {
123
+ params: {
124
+ pickup_postcode: data.pickup_postcode,
125
+ delivery_postcode: data.delivery_postcode,
126
+ weight: data.weight || 0.5,
127
+ cod: data.cod || 0,
128
+ }
129
+ });
130
+ const availableCouriers = response.data.data.available_courier_companies;
131
+ if (!availableCouriers?.length) {
132
+ return {
133
+ serviceable: false,
134
+ fastest_delivery: null,
135
+ all_options: [],
136
+ };
137
+ }
138
+ // Calculate estimated delivery date based on days
139
+ const today = new Date();
140
+ const calculateDeliveryDate = (days) => {
141
+ const deliveryDate = new Date(today);
142
+ deliveryDate.setDate(deliveryDate.getDate() + days);
143
+ return deliveryDate.toISOString().split("T")[0];
144
+ };
145
+ // Map and sort by delivery days (fastest first)
146
+ const allOptions = availableCouriers
147
+ .map((courier) => ({
148
+ courier_name: courier.courier_name,
149
+ courier_company_id: courier.id,
150
+ estimated_days: parseInt(courier.days) || 0,
151
+ estimated_delivery_date: calculateDeliveryDate(parseInt(courier.days) || 0),
152
+ rate: Math.ceil(Number(courier.rate) || 0),
153
+ is_surface: courier.is_surface,
154
+ }))
155
+ .sort((a, b) => a.estimated_days - b.estimated_days);
156
+ return {
157
+ serviceable: true,
158
+ fastest_delivery: allOptions[0] || null,
159
+ all_options: allOptions,
160
+ };
161
+ }
162
+ catch (error) {
163
+ if (error instanceof utils_1.MedusaError)
164
+ throw error;
165
+ // Return not serviceable for 404 errors
166
+ if (error?.response?.status === 404) {
167
+ return {
168
+ serviceable: false,
169
+ fastest_delivery: null,
170
+ all_options: [],
171
+ };
172
+ }
173
+ (0, handle_error_1.handleError)(error, { operation: "getDeliveryEstimate" });
174
+ }
175
+ }
176
+ /**
177
+ * Create an order in Shiprocket and assign AWB
178
+ */
82
179
  async create(fulfillment, items, order) {
83
180
  await this.ensureToken();
84
- const req = (val, name) => {
181
+ const require = (val, name) => {
85
182
  if (val === undefined || val === null || val === "") {
86
183
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing required field: ${name}`);
87
184
  }
88
185
  return val;
89
186
  };
187
+ // Map order items by ID for quick lookup
90
188
  const orderItemMap = new Map();
91
189
  if (Array.isArray(order.items)) {
92
190
  order.items.forEach((orderItem) => {
@@ -98,7 +196,8 @@ class ShiprocketClient {
98
196
  let totalBreadth = 0;
99
197
  let totalHeight = 0;
100
198
  try {
101
- const order_date = new Date(order.created_at)
199
+ // Format date as DD-MM-YYYY HH:mm
200
+ const orderDate = new Date(order.created_at)
102
201
  .toLocaleString("en-GB", {
103
202
  day: "2-digit", month: "2-digit", year: "numeric",
104
203
  hour: "2-digit", minute: "2-digit", hour12: false,
@@ -106,7 +205,7 @@ class ShiprocketClient {
106
205
  .replace(",", "")
107
206
  .replace(/\//g, "-");
108
207
  // Calculate totals and dimensions
109
- items.forEach((item) => {
208
+ for (const item of items) {
110
209
  const orderItem = orderItemMap.get(item.line_item_id);
111
210
  if (!orderItem) {
112
211
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order item not found for fulfillment item: ${item.title}`);
@@ -115,47 +214,47 @@ class ShiprocketClient {
115
214
  if (!variant) {
116
215
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Variant data missing for item: ${item.title}`);
117
216
  }
118
- const weight = Number(variant.weight || 0) / 1000;
217
+ const weight = Number(variant.weight || 0) / 1000; // Convert grams to kg
119
218
  const length = Number(variant.length || 0);
120
219
  const breadth = Number(variant.width || 0);
121
220
  const height = Number(variant.height || 0);
122
221
  if (!weight || !length || !breadth || !height) {
123
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing dimensions/weight for item "${item.title}". Please update product variant settings.`);
222
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing dimensions/weight for "${item.title}". Update product variant settings.`);
124
223
  }
125
224
  const quantity = Number(item.quantity || item.raw_quantity?.value || 1);
126
225
  totalWeight += weight * quantity;
127
226
  totalLength = Math.max(totalLength, length);
128
227
  totalBreadth = Math.max(totalBreadth, breadth);
129
228
  totalHeight += height * quantity;
130
- });
229
+ }
131
230
  const shipping = order.shipping_address || fulfillment?.delivery_address || {};
132
231
  const billing = order.billing_address || order.customer || {};
133
- // Build Order Payload with STRICT validation
232
+ // Build order payload
134
233
  const orderData = {
135
- order_id: `${order.id}-${Math.floor(Date.now() / 1000)}`, // Safer randomness
136
- order_date,
234
+ order_id: `${order.id}-${Math.floor(Date.now() / 1000)}`,
235
+ order_date: orderDate,
137
236
  pickup_location: this.pickup_location || "Primary",
138
- billing_customer_name: req(billing.first_name, "Billing First Name"),
237
+ billing_customer_name: require(billing.first_name, "Billing First Name"),
139
238
  billing_last_name: billing.last_name || "",
140
- billing_address: req(shipping.address_1 || billing.address_1, "Billing Address 1"),
239
+ billing_address: require(shipping.address_1 || billing.address_1, "Billing Address"),
141
240
  billing_address_2: shipping.address_2 || billing.address_2 || "",
142
- billing_city: req(shipping.city || billing.city, "Billing City"),
143
- billing_pincode: Number(req(shipping.postal_code || billing.postal_code, "Billing Pincode")),
144
- billing_state: req(shipping.province || billing.province, "Billing State"),
145
- billing_country: req(shipping.country_code || billing.country_code || "IN", "Billing Country"),
146
- billing_email: req(billing.email || order.email, "Billing Email"),
147
- billing_phone: Number(req(shipping.phone || billing.phone, "Billing Phone").toString().replace(/[^0-9]/g, "")),
241
+ billing_city: require(shipping.city || billing.city, "Billing City"),
242
+ billing_pincode: Number(require(shipping.postal_code || billing.postal_code, "Billing Pincode")),
243
+ billing_state: require(shipping.province || billing.province, "Billing State"),
244
+ billing_country: require(shipping.country_code || billing.country_code || "IN", "Billing Country"),
245
+ billing_email: require(billing.email || order.email, "Billing Email"),
246
+ billing_phone: Number(require(shipping.phone || billing.phone, "Billing Phone").toString().replace(/[^0-9]/g, "")),
148
247
  shipping_is_billing: true,
149
- shipping_customer_name: req(shipping.first_name, "Shipping First Name"),
248
+ shipping_customer_name: require(shipping.first_name, "Shipping First Name"),
150
249
  shipping_last_name: shipping.last_name || "",
151
- shipping_address: req(shipping.address_1, "Shipping Address 1"),
250
+ shipping_address: require(shipping.address_1, "Shipping Address"),
152
251
  shipping_address_2: shipping.address_2 || "",
153
- shipping_city: req(shipping.city, "Shipping City"),
154
- shipping_pincode: Number(req(shipping.postal_code, "Shipping Pincode")),
155
- shipping_country: req(shipping.country_code || "IN", "Shipping Country"),
156
- shipping_state: req(shipping.province, "Shipping State"),
157
- shipping_email: req(billing.email || order.email, "Shipping Email"),
158
- shipping_phone: Number(req(shipping.phone, "Shipping Phone").toString().replace(/[^0-9]/g, "")),
252
+ shipping_city: require(shipping.city, "Shipping City"),
253
+ shipping_pincode: Number(require(shipping.postal_code, "Shipping Pincode")),
254
+ shipping_country: require(shipping.country_code || "IN", "Shipping Country"),
255
+ shipping_state: require(shipping.province, "Shipping State"),
256
+ shipping_email: require(billing.email || order.email, "Shipping Email"),
257
+ shipping_phone: Number(require(shipping.phone, "Shipping Phone").toString().replace(/[^0-9]/g, "")),
159
258
  order_items: items.map((item) => {
160
259
  const orderItem = orderItemMap.get(item.line_item_id);
161
260
  const variant = orderItem.variant;
@@ -182,30 +281,31 @@ class ShiprocketClient {
182
281
  height: totalHeight,
183
282
  weight: totalWeight,
184
283
  };
284
+ // Create order
185
285
  const orderCreated = await this.axios
186
286
  .post("/orders/create/adhoc", orderData)
187
287
  .catch((err) => {
188
- // Extract deep error message if available
189
- const apiError = err;
190
- const firstError = apiError.response?.data?.errors
191
- ? Object.values(apiError.response.data.errors)[0][0]
192
- : err.message;
193
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Shiprocket Error: ${firstError}`);
288
+ const apiError = err?.response?.data?.errors;
289
+ if (apiError) {
290
+ const firstError = Object.values(apiError)[0];
291
+ const msg = Array.isArray(firstError) ? firstError[0] : firstError;
292
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Shiprocket: ${msg}`);
293
+ }
294
+ throw err;
194
295
  });
195
296
  if (!orderCreated.data?.shipment_id) {
196
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Failed to create Shiprocket order: No shipment ID returned");
297
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Shiprocket order created but no shipment ID returned");
197
298
  }
198
299
  // Assign AWB
199
- const awbCreated = await this.axios.post(`/courier/assign/awb`, {
200
- shipment_id: orderCreated.data.shipment_id,
201
- });
300
+ const awbPayload = { shipment_id: orderCreated.data.shipment_id };
301
+ const awbCreated = await this.axios.post("/courier/assign/awb", awbPayload);
202
302
  if (awbCreated.data.awb_assign_status !== 1) {
203
- // Try to cancel if AWB fails to avoid stuck orders
303
+ // Cancel order to avoid stuck state
204
304
  try {
205
305
  await this.cancel(orderCreated.data.order_id);
206
306
  }
207
- catch (e) { /* ignore */ }
208
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, awbCreated.data.message || "AWB assignment failed");
307
+ catch { /* ignore */ }
308
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, awbCreated.data.message || "AWB assignment failed - no courier available");
209
309
  }
210
310
  const responseData = awbCreated.data.response.data;
211
311
  return {
@@ -218,19 +318,26 @@ class ShiprocketClient {
218
318
  };
219
319
  }
220
320
  catch (error) {
221
- (0, handle_error_1.handleError)(error);
222
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Order creation failed");
321
+ if (error instanceof utils_1.MedusaError)
322
+ throw error;
323
+ (0, handle_error_1.handleError)(error, { operation: "create", orderId: order?.id });
223
324
  }
224
325
  }
326
+ /**
327
+ * Cancel an order in Shiprocket
328
+ */
225
329
  async cancel(orderId) {
226
330
  await this.ensureToken();
227
331
  try {
228
- await this.axios.post(`/orders/cancel`, { ids: [orderId] });
332
+ await this.axios.post("/orders/cancel", { ids: [orderId] });
229
333
  }
230
334
  catch (error) {
231
- (0, handle_error_1.handleError)(error);
335
+ (0, handle_error_1.handleError)(error, { operation: "cancel", orderId });
232
336
  }
233
337
  }
338
+ /**
339
+ * Get tracking information for a shipment
340
+ */
234
341
  async getTrackingInfo(trackingNumber) {
235
342
  await this.ensureToken();
236
343
  try {
@@ -238,19 +345,17 @@ class ShiprocketClient {
238
345
  return response.data;
239
346
  }
240
347
  catch (error) {
241
- (0, handle_error_1.handleError)(error);
242
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Tracking failed");
348
+ (0, handle_error_1.handleError)(error, { operation: "tracking" });
243
349
  }
244
350
  }
351
+ /**
352
+ * Create a return order in Shiprocket
353
+ */
245
354
  async createReturn(fulfillment) {
246
355
  await this.ensureToken();
247
- // Implementation of Return Order
248
- // Note: Shiprocket Return API requires specific fields.
249
- // We assume 'fulfillment' contains necessary return details linked to the original order.
250
356
  const returnData = {
251
357
  order_id: `${fulfillment.id}-${Math.floor(Date.now() / 1000)}`,
252
- order_date: new Date().toISOString().split('T')[0],
253
- cannel_id: "", // Optional
358
+ order_date: new Date().toISOString().split("T")[0],
254
359
  pickup_customer_name: fulfillment.pickup_address?.first_name,
255
360
  pickup_last_name: fulfillment.pickup_address?.last_name || "",
256
361
  pickup_address: fulfillment.pickup_address?.address_1,
@@ -261,35 +366,40 @@ class ShiprocketClient {
261
366
  pickup_pincode: fulfillment.pickup_address?.postal_code,
262
367
  pickup_email: fulfillment.email,
263
368
  pickup_phone: fulfillment.pickup_address?.phone,
264
- order_items: fulfillment.items.map((item) => ({
369
+ order_items: fulfillment.items?.map((item) => ({
265
370
  name: item.title,
266
371
  sku: item.sku,
267
372
  units: item.quantity,
268
373
  selling_price: item.unit_price,
269
374
  discount: "",
270
- qc_enable: false // default false
271
- })),
375
+ qc_enable: false,
376
+ })) || [],
272
377
  payment_method: "Prepaid",
273
378
  total_discount: "0",
274
379
  sub_total: fulfillment.sub_total || 0,
275
- length: 10, breadth: 10, height: 10, weight: 0.5 // defaults if missing on return items
380
+ length: 10,
381
+ breadth: 10,
382
+ height: 10,
383
+ weight: 0.5,
276
384
  };
277
385
  try {
278
- const response = await this.axios.post(`/orders/create/return`, returnData);
386
+ const response = await this.axios.post("/orders/create/return", returnData);
279
387
  return response.data;
280
388
  }
281
389
  catch (error) {
282
- (0, handle_error_1.handleError)(error);
283
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Failed to create return order");
390
+ (0, handle_error_1.handleError)(error, { operation: "createReturn" });
284
391
  }
285
392
  }
393
+ /**
394
+ * Generate documents (manifest, label, invoice) for a shipment
395
+ */
286
396
  async createDocuments(fulfillment) {
287
397
  await this.ensureToken();
288
- const createPromise = (url, params) => this.axios.get(url, { params }).catch(() => ({ data: null })); // Return null on fail to not break all
398
+ const safeGet = (url, params) => this.axios.get(url, { params }).catch(() => ({ data: null }));
289
399
  const [manifestRes, labelRes, invoiceRes] = await Promise.all([
290
- createPromise(`/manifests/generate`, { order_ids: [fulfillment.shipment_id] }),
291
- createPromise(`/courier/generate/label`, { shipment_id: [fulfillment.shipment_id] }),
292
- createPromise(`/orders/print/invoice`, { ids: [fulfillment.order_id] })
400
+ safeGet("/manifests/generate", { order_ids: [fulfillment.shipment_id] }),
401
+ safeGet("/courier/generate/label", { shipment_id: [fulfillment.shipment_id] }),
402
+ safeGet("/orders/print/invoice", { ids: [fulfillment.order_id] }),
293
403
  ]);
294
404
  const extractUrl = (res, key, checkKey, checkVal) => {
295
405
  if (!res?.data)
@@ -305,20 +415,36 @@ class ShiprocketClient {
305
415
  invoice: extractUrl(invoiceRes, "invoice_url", "is_invoice_created", true),
306
416
  };
307
417
  }
418
+ /**
419
+ * Generate label for a shipment
420
+ */
308
421
  async generateLabel(fulfillment) {
309
422
  await this.ensureToken();
310
- const res = await this.axios.get(`/courier/generate/label`, {
311
- params: { shipment_id: [fulfillment.shipment_id] }
312
- });
313
- return res.data?.[0]?.label_url || "";
423
+ try {
424
+ const res = await this.axios.get("/courier/generate/label", {
425
+ params: { shipment_id: [fulfillment.shipment_id] },
426
+ });
427
+ return res.data?.[0]?.label_url || "";
428
+ }
429
+ catch {
430
+ return "";
431
+ }
314
432
  }
433
+ /**
434
+ * Generate invoice for an order
435
+ */
315
436
  async generateInvoice(fulfillment) {
316
437
  await this.ensureToken();
317
- const res = await this.axios.get(`/orders/print/invoice`, {
318
- params: { ids: [fulfillment.order_id] }
319
- });
320
- return res.data?.[0]?.invoice_url || "";
438
+ try {
439
+ const res = await this.axios.get("/orders/print/invoice", {
440
+ params: { ids: [fulfillment.order_id] },
441
+ });
442
+ return res.data?.[0]?.invoice_url || "";
443
+ }
444
+ catch {
445
+ return "";
446
+ }
321
447
  }
322
448
  }
323
449
  exports.default = ShiprocketClient;
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3NoaXByb2NrZXQvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTRDO0FBQzVDLDJDQUE2QztBQUM3Qyx5REFBcUQ7QUFDckQsaURBQTRDO0FBVTVDLE1BQXFCLGdCQUFnQjtJQVFqQyxZQUFZLE9BQWdDO1FBSHBDLFVBQUssR0FBa0IsSUFBSSxDQUFBO1FBQzNCLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFHdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIseUNBQXlDLENBQzVDLENBQUE7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQTtRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUE7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3RCLE9BQU8sRUFBRSx5Q0FBeUM7WUFDbEQsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1lBQy9DLE9BQU8sRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQTtRQUVGLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNoQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUN0QixLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDWixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO1lB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
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3NoaXByb2NrZXQvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTRDO0FBQzVDLDJDQUE2QztBQUM3Qyx5REFBcUQ7QUFDckQsaURBQTRDO0FBYzVDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQSxDQUFDLGFBQWE7QUFFM0MsTUFBcUIsZ0JBQWdCO0lBUWpDLFlBQVksT0FBZ0M7UUFIcEMsVUFBSyxHQUFrQixJQUFJLENBQUE7UUFDM0IsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUd0QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix5Q0FBeUMsQ0FDNUMsQ0FBQTtRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQTtRQUU5QyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEIsT0FBTyxFQUFFLHlDQUF5QztZQUNsRCxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7WUFDL0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksZUFBZTtTQUM5QyxDQUFDLENBQUE7UUFFRiw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDaEMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFDdEIsS0FBSyxF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
@@ -1,38 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.authenticate = void 0;
3
+ exports.authenticate = authenticate;
4
4
  const utils_1 = require("@medusajs/utils");
5
5
  const handle_error_1 = require("../handle-error");
6
6
  /**
7
7
  * Authenticates with the Shiprocket API to get a token.
8
- * @param axios - The Axios instance to use for the request.
9
- * @param email - The user's email.
10
- * @param password - The user's password.
11
- * @param isDisposed - Whether the client is disposed.
12
- * @returns The authentication token and its expiry time.
8
+ * Token is valid for 10 days per Shiprocket docs.
13
9
  */
14
- const authenticate = async (axios, email, password, isDisposed) => {
10
+ async function authenticate(axios, email, password, isDisposed) {
15
11
  if (isDisposed) {
16
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Cannot authenticate disposed client");
12
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Cannot authenticate: client is disposed");
17
13
  }
18
14
  try {
19
15
  const response = await axios.post("/auth/login", {
20
16
  email,
21
17
  password,
22
18
  });
23
- if (!response.data.token) {
24
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "No token received in authentication response");
19
+ if (!response.data?.token) {
20
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Shiprocket authentication failed: no token received");
25
21
  }
26
22
  return {
27
23
  token: response.data.token,
28
- // Token valid for 10 days, refresh after 8
24
+ // Token valid for 10 days, refresh proactively after 8 days
29
25
  tokenExpiry: Date.now() + 8 * 24 * 60 * 60 * 1000,
30
26
  };
31
27
  }
32
28
  catch (error) {
33
- (0, handle_error_1.handleError)(error);
34
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Authentication failed unexpectedly");
29
+ // If it's already a MedusaError, rethrow it
30
+ if (error instanceof utils_1.MedusaError) {
31
+ throw error;
32
+ }
33
+ // Otherwise, let handleError process the API error
34
+ (0, handle_error_1.handleError)(error, { operation: "authenticate" });
35
35
  }
36
- };
37
- exports.authenticate = authenticate;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9zaGlwcm9ja2V0L2NsaWVudC9tZXRob2RzL2F1dGhlbnRpY2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBNkM7QUFFN0Msa0RBQTZDO0FBRzdDOzs7Ozs7O0dBT0c7QUFDSSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQzdCLEtBQW9CLEVBQ3BCLEtBQWEsRUFDYixRQUFnQixFQUNoQixVQUFtQixFQUM0QixFQUFFO0lBQ2pELElBQUksVUFBVSxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLHFDQUFxQyxDQUN4QyxDQUFBO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBeUIsYUFBYSxFQUFFO1lBQ3JFLEtBQUs7WUFDTCxRQUFRO1NBQ1gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsOENBQThDLENBQ2pELENBQUE7UUFDTCxDQUFDO1FBRUQsT0FBTztZQUNILEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDMUIsMkNBQTJDO1lBQzNDLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUk7U0FDcEQsQ0FBQTtJQUNMLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBQSwwQkFBVyxFQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsb0NBQW9DLENBQ3ZDLENBQUE7SUFDTCxDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBdENZLFFBQUEsWUFBWSxnQkFzQ3hCIn0=
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9zaGlwcm9ja2V0L2NsaWVudC9tZXRob2RzL2F1dGhlbnRpY2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLG9DQXVDQztBQWhERCwyQ0FBNkM7QUFFN0Msa0RBQTZDO0FBRzdDOzs7R0FHRztBQUNJLEtBQUssVUFBVSxZQUFZLENBQzlCLEtBQW9CLEVBQ3BCLEtBQWEsRUFDYixRQUFnQixFQUNoQixVQUFtQjtJQUVuQixJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ2pCLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyx5Q0FBeUMsQ0FDNUMsQ0FBQTtJQUNMLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQXlCLGFBQWEsRUFBRTtZQUNyRSxLQUFLO1lBQ0wsUUFBUTtTQUNYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFEQUFxRCxDQUN4RCxDQUFBO1FBQ0wsQ0FBQztRQUVELE9BQU87WUFDSCxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQzFCLDREQUE0RDtZQUM1RCxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO1NBQ3BELENBQUE7SUFDTCxDQUFDO0lBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztRQUN0Qiw0Q0FBNEM7UUFDNUMsSUFBSSxLQUFLLFlBQVksbUJBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sS0FBSyxDQUFBO1FBQ2YsQ0FBQztRQUNELG1EQUFtRDtRQUNuRCxJQUFBLDBCQUFXLEVBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUE7SUFDckQsQ0FBQztBQUNMLENBQUMifQ==