mts-booking-library 1.3.5 → 1.3.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -81,15 +81,15 @@ var booking_1 = require("./booking");
81
81
  var TplBooking = /** @class */ (function (_super) {
82
82
  __extends(TplBooking, _super);
83
83
  /**
84
- * This is the constructor of the TplBooking class.
85
- * @param {MTSEnvs} env The environment in which the app is running. Can be "DEV", "STAGING" or "PROD"
86
- * @param {string} sub_key The subscription key for using the APIs
87
- * @param {boolean} [debug=false] If true, the app will run in debug mode (meaning that will print requests and responses in the console)
88
- * @param {string} [language=Booking.Languages.EN] The language in which the app is running. Can be "it", "en", "fr", "de" or "es"
89
- * @param {string} [access_token=undefined] The access token for calling MTS APIs
90
- * @param {number} [sellerId=undefined] The id of the seller. If not set, it will return the results for all sellers
91
- * @param {number} [resellerId=undefined] The id of the reseller.
92
- */
84
+ * This is the constructor of the TplBooking class.
85
+ * @param {MTSEnvs} env The environment in which the app is running. Can be "DEV", "STAGING" or "PROD"
86
+ * @param {string} sub_key The subscription key for using the APIs
87
+ * @param {boolean} [debug=false] If true, the app will run in debug mode (meaning that will print requests and responses in the console)
88
+ * @param {string} [language=Booking.Languages.EN] The language in which the app is running. Can be "it", "en", "fr", "de" or "es"
89
+ * @param {string} [access_token=undefined] The access token for calling MTS APIs
90
+ * @param {number} [sellerId=undefined] The id of the seller. If not set, it will return the results for all sellers
91
+ * @param {number} [resellerId=undefined] The id of the reseller.
92
+ */
93
93
  function TplBooking(env, sub_key, debug, language, access_token, sellerId, resellerId) {
94
94
  if (debug === void 0) { debug = false; }
95
95
  if (language === void 0) { language = booking_1.Booking.Languages.EN; }
@@ -166,7 +166,7 @@ var TplBooking = /** @class */ (function (_super) {
166
166
  return [2 /*return*/, this.callGetApi(url).then(function (response) {
167
167
  if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
168
168
  _this.resetBooking();
169
- throw new Error(response);
169
+ throw new Error(JSON.stringify(response, null, 2));
170
170
  }
171
171
  // Check that the cart doe not have issued tickets
172
172
  if (response.cart.hasIssuedTickets) {
@@ -211,7 +211,9 @@ var TplBooking = /** @class */ (function (_super) {
211
211
  return __generator(this, function (_a) {
212
212
  url = "".concat(this.config.API_ENDPOINT, "/v3_booking/tpl/cities?");
213
213
  return [2 /*return*/, this.callGetApi(url).then(function (response) {
214
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.cities;
214
+ return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response)
215
+ ? response
216
+ : response.cities;
215
217
  })];
216
218
  });
217
219
  });
@@ -228,7 +230,9 @@ var TplBooking = /** @class */ (function (_super) {
228
230
  searchParams = new URLSearchParams({ cityId: cityId.toString() });
229
231
  url = "".concat(this.config.API_ENDPOINT, "/v3_booking/tpl/superAreasByCity?").concat(searchParams);
230
232
  return [2 /*return*/, this.callGetApi(url).then(function (response) {
231
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.superAreas;
233
+ return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response)
234
+ ? response
235
+ : response.superAreas;
232
236
  })];
233
237
  });
234
238
  });
@@ -244,21 +248,29 @@ var TplBooking = /** @class */ (function (_super) {
244
248
  searchParams = new URLSearchParams({ superAreaId: superAreaId.toString() });
245
249
  url = "".concat(this.config.API_ENDPOINT, "/v3_booking/tpl/termsTypesBySuperArea?").concat(searchParams);
246
250
  return [2 /*return*/, this.callGetApi(url).then(function (response) {
247
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response.termsTypes;
251
+ return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response)
252
+ ? response
253
+ : response.termsTypes;
248
254
  })];
249
255
  });
250
256
  });
251
257
  };
252
258
  /**
253
259
  * This method fetches the list of available tariffs for the selected terms type in a given super area.
254
- * @returns An array of {@link GetTariffsResponse} if the call is successful, an {@link ErrorResponse} object otherwise.
260
+ * @param {number} superAreaId The id of the super area (as returned by the {@link getSuperAreas} method).
261
+ * @param {number | null} termsTypeId The id of the terms type (as returned by the {@link getTermsTypes} method).
262
+ * If null, tariffs from all terms types will be considered.
263
+ * @param {boolean} onlyTickets If true, only only return the tariffs that are for single tickets.
264
+ * @param {boolean} onlySubscriptions If true, only return the tariffs that are for subscriptions.
265
+ * @returns A {@link GetTariffsResponse} if the call is successful, an {@link ErrorResponse} object otherwise.
255
266
  */
256
- TplBooking.prototype.getTariffs = function (superAreaId, termsTypeId) {
267
+ TplBooking.prototype.getTariffs = function (superAreaId, termsTypeId, onlyTickets, onlySubscriptions) {
257
268
  return __awaiter(this, void 0, void 0, function () {
258
269
  var searchParams, url;
259
270
  return __generator(this, function (_a) {
260
- searchParams = new URLSearchParams({ superAreaId: superAreaId.toString(), termsTypeId: termsTypeId.toString() });
271
+ searchParams = new URLSearchParams(__assign(__assign({ superAreaId: superAreaId.toString() }, (termsTypeId && { termsTypeId: termsTypeId.toString() })), { onlyTickets: onlyTickets.toString(), onlySubscriptions: onlySubscriptions.toString() }));
261
272
  url = "".concat(this.config.API_ENDPOINT, "/v3_booking/tpl/tariffs?").concat(searchParams);
273
+ // Call the API
262
274
  return [2 /*return*/, this.callGetApi(url).then(function (response) {
263
275
  // Check for error
264
276
  if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
@@ -272,7 +284,10 @@ var TplBooking = /** @class */ (function (_super) {
272
284
  tariffs
273
285
  ];
274
286
  }));
275
- return { tariffs: response.tariffs, tariffPlanToTariffs: tariffPlanToTariffs };
287
+ return {
288
+ tariffs: response.tariffs,
289
+ tariffPlanToTariffs: tariffPlanToTariffs
290
+ };
276
291
  })];
277
292
  });
278
293
  });
@@ -345,7 +360,7 @@ var TplBooking = /** @class */ (function (_super) {
345
360
  return {
346
361
  buyerDataStatus: response.buyerDataStatus,
347
362
  buyer: response.buyer,
348
- passengers: [],
363
+ passengers: []
349
364
  };
350
365
  })];
351
366
  });
@@ -407,7 +422,7 @@ var TplBooking = /** @class */ (function (_super) {
407
422
  }
408
423
  request = {
409
424
  buyer: buyerDetails,
410
- passengers: [],
425
+ passengers: []
411
426
  };
412
427
  url = "".concat(this.config.API_ENDPOINT, "/v3_booking/carts/").concat(this.cart.id, "/details");
413
428
  return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
@@ -512,9 +527,11 @@ var TplBooking = /** @class */ (function (_super) {
512
527
  // Update the booking process status
513
528
  _this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(reductionResponse.stepsToStatus);
514
529
  // Update the cart
515
- _this.cart = __assign(__assign({}, _this.cart), { totalAmountToPay: reductionResponse.totalAmountToPay, reductions: (_c = (_b = (_a = _this.cart) === null || _a === void 0 ? void 0 : _a.reductions) === null || _b === void 0 ? void 0 : _b.filter(function (reduction) { return reduction.type === Reduction_1.ReductionType.WALLET ||
516
- reduction.type === Reduction_1.ReductionType.VOUCHER ||
517
- (reduction.type === Reduction_1.ReductionType.CASH && reduction.tripId !== tripId); })) !== null && _c !== void 0 ? _c : [] });
530
+ _this.cart = __assign(__assign({}, _this.cart), { totalAmountToPay: reductionResponse.totalAmountToPay, reductions: (_c = (_b = (_a = _this.cart) === null || _a === void 0 ? void 0 : _a.reductions) === null || _b === void 0 ? void 0 : _b.filter(function (reduction) {
531
+ return reduction.type === Reduction_1.ReductionType.WALLET ||
532
+ reduction.type === Reduction_1.ReductionType.VOUCHER ||
533
+ (reduction.type === Reduction_1.ReductionType.CASH && reduction.tripId !== tripId);
534
+ })) !== null && _c !== void 0 ? _c : [] });
518
535
  return true;
519
536
  })];
520
537
  });
@@ -542,7 +559,11 @@ var TplBooking = /** @class */ (function (_super) {
542
559
  if (!issueStep)
543
560
  throw Error("Booking step: ".concat(booking_1.Booking.BookingSteps.ISSUE, " not found!"));
544
561
  if (!!issueStep[0]) return [3 /*break*/, 5];
545
- _i = 0, _a = [booking_1.Booking.BookingSteps.SEATS_SELECTION, booking_1.Booking.BookingSteps.EXTRAS, booking_1.Booking.BookingSteps.DISCOUNTS];
562
+ _i = 0, _a = [
563
+ booking_1.Booking.BookingSteps.SEATS_SELECTION,
564
+ booking_1.Booking.BookingSteps.EXTRAS,
565
+ booking_1.Booking.BookingSteps.DISCOUNTS
566
+ ];
546
567
  _c.label = 1;
547
568
  case 1:
548
569
  if (!(_i < _a.length)) return [3 /*break*/, 4];
package/lib/mtsStorage.js CHANGED
@@ -16,7 +16,7 @@ var async_storage_1 = require("@react-native-async-storage/async-storage");
16
16
  var zustand_1 = require("zustand");
17
17
  var middleware_1 = require("zustand/middleware");
18
18
  var INITIAL_STATE = {
19
- cartId: 0,
19
+ cartId: 0
20
20
  };
21
21
  var useMtsBookingAsyncState = (0, zustand_1.create)((0, middleware_1.persist)(function (set) { return (__assign(__assign({}, INITIAL_STATE), { updateCartId: function (cartId) { return set(function () { return ({ cartId: cartId }); }); }, resetState: function () { return set(function () { return INITIAL_STATE; }); } })); }, {
22
22
  name: "mts-booking-storage",
@@ -30,7 +30,7 @@ exports.useMtsBookingLocalState = (0, zustand_1.create)((0, middleware_1.persist
30
30
  * This hook will return the correct Zustand state based on the application which runs the library
31
31
  */
32
32
  var useMtsBookingState = function () {
33
- if (typeof document !== 'undefined') {
33
+ if (typeof document !== "undefined") {
34
34
  // Web application
35
35
  return exports.useMtsBookingLocalState;
36
36
  }
@@ -10,4 +10,4 @@ export type ErrorResponse = {
10
10
  mtsCode: number;
11
11
  message: string;
12
12
  };
13
- export declare const objectIsMTSErrorResponse: (error: any) => boolean;
13
+ export declare const objectIsMTSErrorResponse: (error: any) => error is ErrorResponse;
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.objectIsMTSErrorResponse = void 0;
4
4
  var objectIsMTSErrorResponse = function (error) {
5
- return "mtsCode" in error && "httpStatus" in error && "message" in error;
5
+ return (typeof error === "object" && "mtsCode" in error && "httpStatus" in error && "message" in error);
6
6
  };
7
7
  exports.objectIsMTSErrorResponse = objectIsMTSErrorResponse;
@@ -27,20 +27,22 @@ export type GetSellerGatewaysResponse = {
27
27
  * @param {string | null} axervE_BANCASELLA_PaymentToken The payment token of the Axerve Bancasella gateway
28
28
  * @param {string | null} axervE_BANCASELLA_ShopLogin The shop login of the Axerve Bancasella gateway
29
29
  * @param {string | null} axeptA_BNL_PaymentId The payment id of the Axepta BNL gateway
30
- * @param {string | null} axeptA_BNL_SmartLicenseKey The smart license key of the Axepta BNL gateway
30
+ * @param {string | null} axeptA_BNL_EasyCheckoutLicenseKey The easy checkout license key of the Axepta BNL gateway
31
31
  * @param {string | null} paypaL_ClientId The client id of the PayPal gateway
32
32
  * @param {string | null} paypaL_OrderId The order id of the PayPal gateway
33
33
  * @param {string | null} paypaL_Link The link of the PayPal gateway
34
+ * @param {string | null} worldlinE_REDIRECT_URL The redirect URL of the Worldline gateway
34
35
  */
35
36
  export type GetPaymentInformationFromGatewayResponse = {
36
37
  axervE_BANCASELLA_PaymentId: string | null;
37
38
  axervE_BANCASELLA_PaymentToken: string | null;
38
39
  axervE_BANCASELLA_ShopLogin: string | null;
39
40
  axeptA_BNL_PaymentId: string | null;
40
- axeptA_BNL_SmartLicenseKey: string | null;
41
+ axeptA_BNL_EasyCheckoutLicenseKey: string | null;
41
42
  paypaL_ClientId: string | null;
42
43
  paypaL_OrderId: string | null;
43
44
  paypaL_Link: string | null;
45
+ worldlinE_REDIRECT_URL: string | null;
44
46
  };
45
47
  /**
46
48
  * @description This enum contains the possible values for the `type` field of the {@link Gateway} type
@@ -29,7 +29,7 @@ export declare const initializePerson: (person?: Person | undefined | null) => P
29
29
  * the tariff for the passenger.
30
30
  * @property {string} returnNotes - The notes for the return trip.
31
31
  * @property { Map<number, PassengerTariff>} returnTariffs - Same of `outboundTariffs`, but for the return trip.
32
- */
32
+ */
33
33
  export type GetPassenger = Person & {
34
34
  outboundNotes: string | null;
35
35
  outboundTariffs: Map<number, PassengerTariff[]>;
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.BuyerDataStatus = exports.initializePerson = exports.DEFAULT_PERSON = void 0;
5
5
  exports.DEFAULT_PERSON = {
6
6
  id: 0,
7
- name: '',
8
- lastName: '',
9
- email: '',
10
- phoneNumber: ''
7
+ name: "",
8
+ lastName: "",
9
+ email: "",
10
+ phoneNumber: ""
11
11
  };
12
12
  var initializePerson = function (person) {
13
13
  if (!person) {
@@ -6,5 +6,5 @@ exports.DEFAULT_CREATE_JOURNEY_CART = {
6
6
  cartId: 0,
7
7
  currency: booking_1.Booking.Currencies.EUR,
8
8
  outboundJourney: [],
9
- returnJourney: null,
9
+ returnJourney: null
10
10
  };
@@ -11,5 +11,5 @@ exports.DEFAULT_JOURNEY_SEARCH = {
11
11
  .slice(0, -1),
12
12
  roundTripDate: null,
13
13
  currency: booking_1.Booking.Currencies.EUR,
14
- isRoundtrip: false,
14
+ isRoundtrip: false
15
15
  };
@@ -59,10 +59,11 @@ var axios_1 = require("axios");
59
59
  var config_1 = require("../config");
60
60
  var removeNullError = function (resData) {
61
61
  var filteredResponse = {};
62
- Object.keys(resData).filter(function (key) { return key !== "error"; })
62
+ Object.keys(resData)
63
+ .filter(function (key) { return key !== "error"; })
63
64
  .map(function (key) {
64
65
  var _a;
65
- return filteredResponse = __assign(__assign({}, filteredResponse), (_a = {}, _a[key] = resData[key], _a));
66
+ return (filteredResponse = __assign(__assign({}, filteredResponse), (_a = {}, _a[key] = resData[key], _a)));
66
67
  });
67
68
  return filteredResponse;
68
69
  };
@@ -81,7 +82,7 @@ var makeGet = function (url) { return __awaiter(void 0, void 0, void 0, function
81
82
  case 0:
82
83
  _h.trys.push([0, 2, , 3]);
83
84
  return [4 /*yield*/, axios_1.default.get(url, {
84
- headers: __assign({ "Content-Type": "application/json", "Ocp-Apim-Subscription-Key": (0, config_1.getConfig)().OCP_SUBSCRIPTION_KEY }, ((0, config_1.getConfig)().ACCESS_TOKEN && { "Authorization": "Bearer ".concat((0, config_1.getConfig)().ACCESS_TOKEN) })),
85
+ headers: __assign({ "Content-Type": "application/json", "Ocp-Apim-Subscription-Key": (0, config_1.getConfig)().OCP_SUBSCRIPTION_KEY }, ((0, config_1.getConfig)().ACCESS_TOKEN && { Authorization: "Bearer ".concat((0, config_1.getConfig)().ACCESS_TOKEN) }))
85
86
  })];
86
87
  case 1:
87
88
  response = _h.sent();
@@ -97,7 +98,7 @@ var makeGet = function (url) { return __awaiter(void 0, void 0, void 0, function
97
98
  resError = {
98
99
  httpStatus: ((_a = error_1.response) === null || _a === void 0 ? void 0 : _a.status) || 0,
99
100
  mtsCode: ((_d = (_c = (_b = error_1.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.error) === null || _d === void 0 ? void 0 : _d.code) || 0,
100
- message: ((_g = (_f = (_e = error_1.response) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.error) === null || _g === void 0 ? void 0 : _g.message) || "Unknown error",
101
+ message: ((_g = (_f = (_e = error_1.response) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.error) === null || _g === void 0 ? void 0 : _g.message) || "Unknown error"
101
102
  };
102
103
  if (debug) {
103
104
  console.log("GET_ResponseError", url, resError);
@@ -131,7 +132,7 @@ var makePost = function (url, data) { return __awaiter(void 0, void 0, void 0, f
131
132
  case 0:
132
133
  _h.trys.push([0, 2, , 3]);
133
134
  return [4 /*yield*/, axios_1.default.post(url, data, {
134
- headers: __assign({ "Content-Type": "application/json", "Ocp-Apim-Subscription-Key": (0, config_1.getConfig)().OCP_SUBSCRIPTION_KEY }, ((0, config_1.getConfig)().ACCESS_TOKEN && { "Authorization": "Bearer ".concat((0, config_1.getConfig)().ACCESS_TOKEN) })),
135
+ headers: __assign({ "Content-Type": "application/json", "Ocp-Apim-Subscription-Key": (0, config_1.getConfig)().OCP_SUBSCRIPTION_KEY }, ((0, config_1.getConfig)().ACCESS_TOKEN && { Authorization: "Bearer ".concat((0, config_1.getConfig)().ACCESS_TOKEN) }))
135
136
  })];
136
137
  case 1:
137
138
  response = _h.sent();
@@ -147,7 +148,7 @@ var makePost = function (url, data) { return __awaiter(void 0, void 0, void 0, f
147
148
  resError = {
148
149
  httpStatus: ((_a = error_2.response) === null || _a === void 0 ? void 0 : _a.status) || 0,
149
150
  mtsCode: ((_d = (_c = (_b = error_2.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.error) === null || _d === void 0 ? void 0 : _d.code) || 0,
150
- message: ((_g = (_f = (_e = error_2.response) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.error) === null || _g === void 0 ? void 0 : _g.message) || "Unknown error",
151
+ message: ((_g = (_f = (_e = error_2.response) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.error) === null || _g === void 0 ? void 0 : _g.message) || "Unknown error"
151
152
  };
152
153
  if (debug) {
153
154
  console.log("POST_ResponseError", url, resError);
@@ -181,7 +182,7 @@ var makeDelete = function (url) { return __awaiter(void 0, void 0, void 0, funct
181
182
  case 0:
182
183
  _h.trys.push([0, 2, , 3]);
183
184
  return [4 /*yield*/, axios_1.default.delete(url, {
184
- headers: __assign({ "Content-Type": "application/json", "Ocp-Apim-Subscription-Key": (0, config_1.getConfig)().OCP_SUBSCRIPTION_KEY }, ((0, config_1.getConfig)().ACCESS_TOKEN && { "Authorization": "Bearer ".concat((0, config_1.getConfig)().ACCESS_TOKEN) })),
185
+ headers: __assign({ "Content-Type": "application/json", "Ocp-Apim-Subscription-Key": (0, config_1.getConfig)().OCP_SUBSCRIPTION_KEY }, ((0, config_1.getConfig)().ACCESS_TOKEN && { Authorization: "Bearer ".concat((0, config_1.getConfig)().ACCESS_TOKEN) }))
185
186
  })];
186
187
  case 1:
187
188
  response = _h.sent();
@@ -197,7 +198,7 @@ var makeDelete = function (url) { return __awaiter(void 0, void 0, void 0, funct
197
198
  resError = {
198
199
  httpStatus: ((_a = error_3.response) === null || _a === void 0 ? void 0 : _a.status) || 0,
199
200
  mtsCode: ((_d = (_c = (_b = error_3.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.error) === null || _d === void 0 ? void 0 : _d.code) || 0,
200
- message: ((_g = (_f = (_e = error_3.response) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.error) === null || _g === void 0 ? void 0 : _g.message) || "Unknown error",
201
+ message: ((_g = (_f = (_e = error_3.response) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.error) === null || _g === void 0 ? void 0 : _g.message) || "Unknown error"
201
202
  };
202
203
  if (debug) {
203
204
  console.log("DELETE_ResponseError", url, resError);
package/package.json CHANGED
@@ -1,21 +1,24 @@
1
1
  {
2
2
  "name": "mts-booking-library",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "Library for using MyTicketSolution Booking API",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
+ "pretest": "tsc --noEmit",
9
10
  "test": "jest --config jestconfig.json",
10
11
  "prepare": "npm run build",
11
12
  "prepublishOnly": "npm run test --runInBand",
12
13
  "version": "git add -A src",
13
- "postversion": "git push && git push --tags"
14
+ "postversion": "git push && git push --tags",
15
+ "format": "prettier --write src/**"
14
16
  },
15
17
  "license": "ISC",
16
18
  "devDependencies": {
17
19
  "@types/jest": "^29.5.12",
18
20
  "jest": "^29.7.0",
21
+ "prettier": "^3.2.5",
19
22
  "ts-jest": "^29.1.2",
20
23
  "typescript": "^5.4.5"
21
24
  },