mts-booking-library 1.1.2 → 1.1.4

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.
@@ -1,6 +1,8 @@
1
1
  import { MTSEnvs } from "../config";
2
2
  import { Cart } from "../types/common/Cart";
3
- import { Subscription } from "../types/subscriptions/Subscrptions";
3
+ import { GetSubscriptionAvailabilityRequest, GetSubscriptionAvailabilityResponse } from "../types/subscriptions/SubscriptionAvailabilities";
4
+ import { CreateSubscriptionCartRequest } from "../types/subscriptions/SubscriptionCart";
5
+ import { Subscription } from "../types/subscriptions/Subscriptions";
4
6
  import { Booking } from "./booking";
5
7
  export declare class SubscriptionBooking extends Booking {
6
8
  private cart?;
@@ -19,7 +21,7 @@ export declare class SubscriptionBooking extends Booking {
19
21
  * @param {string} departureStopName The departure stop name (as returned by {@link getSubscriptionsDepartures})
20
22
  * @returns {string[]} The list of possible destinations
21
23
  */
22
- getSubscrptionsDestinations(departureStopName: string): Promise<string[]>;
24
+ getSubscirptionsDestinations(departureStopName: string): Promise<string[]>;
23
25
  /**
24
26
  * This method returns the possible validity types for the subscriptions sold by this seller between the selected departure and destination.
25
27
  * The validity type is the duration of the subscription (1 week, 1 month, etc.). See {@link ValidityTypes} for more details.
@@ -27,7 +29,7 @@ export declare class SubscriptionBooking extends Booking {
27
29
  * @param {string} destinationStopName The destination stop name (as returned by {@link getSubscriptionsDstinations})
28
30
  * @returns {ValidityTypes[]} The list of possible validity types
29
31
  */
30
- getSubscrptionsValidityTypes(departureStopName: string, destinationStopName: string): Promise<SubscriptionBooking.ValidityTypes[]>;
32
+ getSubscriptionsValidityTypes(departureStopName: string, destinationStopName: string): Promise<SubscriptionBooking.ValidityTypes[]>;
31
33
  /**
32
34
  * This method returns the subscriptions that match the given parameters.
33
35
  * Note that it will always return the subscription for the one-way trip.
@@ -37,8 +39,15 @@ export declare class SubscriptionBooking extends Booking {
37
39
  * @param {string} validityType The validity type (as returned by {@link getSubscriptionsValidityTypes})
38
40
  * @returns {Array<Subscription>} The subscriptions that match the given parameters
39
41
  */
40
- getSubscrptions(departureStopName: string, destinationStopName: string, validityType: string): Promise<Subscription[]>;
41
- getSubscrptionAvailabilities(departureStopName: string, destinationStopName: string, validityType: string): Promise<Subscription[]>;
42
+ getSubscriptions(departureStopName: string, destinationStopName: string, validityType: string): Promise<Subscription[]>;
43
+ /**
44
+ * This method returns the availability of the subscription for the given parameters.
45
+ * Note that, contrary for the previous method, you should make one single request for both the outbound and return trip.
46
+ * @param {GetSubscriptionAvailabilityRequest} request the request object containing the parameters for the availability check
47
+ * @returns {GetSubscriptionAvailabilityResponse} The availability of the subscription for the given parameters
48
+ */
49
+ getSubscriptionAvailabilities(request: GetSubscriptionAvailabilityRequest): Promise<GetSubscriptionAvailabilityResponse>;
50
+ createSubscriptionCart(request: CreateSubscriptionCartRequest): Promise<any>;
42
51
  }
43
52
  export declare namespace SubscriptionBooking {
44
53
  enum ValidityTypes {
@@ -69,8 +69,14 @@ var SubscriptionBooking = /** @class */ (function (_super) {
69
69
  __extends(SubscriptionBooking, _super);
70
70
  function SubscriptionBooking(env, sub_key, onCartExpiration, debug, access_token, sellerId) {
71
71
  if (debug === void 0) { debug = false; }
72
+ var _this =
72
73
  // Call Booking constructor
73
- return _super.call(this, env, sub_key, onCartExpiration, debug, access_token, sellerId) || this;
74
+ _super.call(this, env, sub_key, onCartExpiration, debug, access_token, sellerId) || this;
75
+ var cartId = localStorage.getItem("cartId");
76
+ if (cartId) {
77
+ _this.fetchAndSetCart(parseInt(cartId));
78
+ }
79
+ return _this;
74
80
  }
75
81
  SubscriptionBooking.prototype.getCart = function () {
76
82
  return this.cart;
@@ -135,7 +141,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
135
141
  * @param {string} departureStopName The departure stop name (as returned by {@link getSubscriptionsDepartures})
136
142
  * @returns {string[]} The list of possible destinations
137
143
  */
138
- SubscriptionBooking.prototype.getSubscrptionsDestinations = function (departureStopName) {
144
+ SubscriptionBooking.prototype.getSubscirptionsDestinations = function (departureStopName) {
139
145
  return __awaiter(this, void 0, void 0, function () {
140
146
  var url;
141
147
  return __generator(this, function (_a) {
@@ -151,7 +157,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
151
157
  * @param {string} destinationStopName The destination stop name (as returned by {@link getSubscriptionsDstinations})
152
158
  * @returns {ValidityTypes[]} The list of possible validity types
153
159
  */
154
- SubscriptionBooking.prototype.getSubscrptionsValidityTypes = function (departureStopName, destinationStopName) {
160
+ SubscriptionBooking.prototype.getSubscriptionsValidityTypes = function (departureStopName, destinationStopName) {
155
161
  return __awaiter(this, void 0, void 0, function () {
156
162
  var url;
157
163
  return __generator(this, function (_a) {
@@ -169,7 +175,7 @@ var SubscriptionBooking = /** @class */ (function (_super) {
169
175
  * @param {string} validityType The validity type (as returned by {@link getSubscriptionsValidityTypes})
170
176
  * @returns {Array<Subscription>} The subscriptions that match the given parameters
171
177
  */
172
- SubscriptionBooking.prototype.getSubscrptions = function (departureStopName, destinationStopName, validityType) {
178
+ SubscriptionBooking.prototype.getSubscriptions = function (departureStopName, destinationStopName, validityType) {
173
179
  return __awaiter(this, void 0, void 0, function () {
174
180
  var url;
175
181
  return __generator(this, function (_a) {
@@ -178,15 +184,30 @@ var SubscriptionBooking = /** @class */ (function (_super) {
178
184
  });
179
185
  });
180
186
  };
181
- SubscriptionBooking.prototype.getSubscrptionAvailabilities = function (departureStopName, destinationStopName, validityType) {
187
+ /**
188
+ * This method returns the availability of the subscription for the given parameters.
189
+ * Note that, contrary for the previous method, you should make one single request for both the outbound and return trip.
190
+ * @param {GetSubscriptionAvailabilityRequest} request the request object containing the parameters for the availability check
191
+ * @returns {GetSubscriptionAvailabilityResponse} The availability of the subscription for the given parameters
192
+ */
193
+ SubscriptionBooking.prototype.getSubscriptionAvailabilities = function (request) {
182
194
  return __awaiter(this, void 0, void 0, function () {
183
195
  var url;
184
196
  return __generator(this, function (_a) {
185
- url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/search?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { departureStopName: departureStopName, destinationStopName: destinationStopName, validityType: validityType })));
197
+ url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/availabilities?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { outboundRouteId: request.outboundRouteId.toString(), returnRouteId: request.returnRouteId.toString(), outboundDeparturePhysicalAgencyStopId: request.outboundDeparturePhysicalAgencyStopId.toString(), outboundDestinationPhysicalAgencyStopId: request.outboundDestinationPhysicalAgencyStopId.toString(), returnDeparturePhysicalAgencyStopId: request.returnDeparturePhysicalAgencyStopId.toString(), returnDestinationPhysicalAgencyStopId: request.returnDestinationPhysicalAgencyStopId.toString(), numberOfPassengers: request.numberOfPassengers.toString(), validityType: request.validityType })));
186
198
  return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
187
199
  });
188
200
  });
189
201
  };
202
+ SubscriptionBooking.prototype.createSubscriptionCart = function (request) {
203
+ return __awaiter(this, void 0, void 0, function () {
204
+ var url;
205
+ return __generator(this, function (_a) {
206
+ url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions");
207
+ return [2 /*return*/, (0, apiCall_1.makePost)(url, request)];
208
+ });
209
+ });
210
+ };
190
211
  return SubscriptionBooking;
191
212
  }(booking_1.Booking));
192
213
  exports.SubscriptionBooking = SubscriptionBooking;
package/lib/index.d.ts CHANGED
@@ -12,4 +12,6 @@ export { Line } from "./types/services/Line";
12
12
  export { Service, ServiceTrip } from "./types/services/Service";
13
13
  export { ServiceCart, ServiceBookingType, CreateServiceCartRequest } from "./types/services/ServiceCart";
14
14
  export { ServiceInfo } from "./types/services/ServiceInfo";
15
- export { Subscription } from "./types/subscriptions/Subscrptions";
15
+ export { Subscription } from "./types/subscriptions/Subscriptions";
16
+ export { GetSubscriptionAvailabilityRequest, GetSubscriptionAvailabilityResponse, SubscriptionCalendarDayPeriodInfo } from "./types/subscriptions/SubscriptionAvailabilities";
17
+ export { CreateSubscriptionCartRequest, SubscriptionPeriod } from "./types/subscriptions/SubscriptionCart";
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @description This is the object to be passed to `SubscriptionBooking.getSubscrptionAvailabilities`
3
+ *
4
+ * @property {number} outboundRouteId - The id of the outbound route.
5
+ * Its value can be retrieved from {@link Subscription.routeId}, return value of {@link SubscriptionBooking.getSubscriptions} for the oubound subscription.
6
+ * @property {number} returnRouteId - The id of the return route (0 if the subscription is for a one-way trip)
7
+ * Its value can be retrieved from {@link Subscription.routeId}, return value of {@link SubscriptionBooking.getSubscriptions} for the return subscription.
8
+ * @property {number} outboundDeparturePhysicalAgencyStopId - The id of the outbound departure stop.
9
+ * Its value can be retrieved from {@link Subscription.departurePhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the oubound subscription.
10
+ * @property {number} outboundDestinationPhysicalAgencyStopId - The id of the outbound destination stop.
11
+ * Its value can be retrieved from {@link Subscription.destinationPhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the oubound subscription.
12
+ * @property {number} returnDeparturePhysicalAgencyStopId - The id of the return departure stop (0 if the subscription is for a one-way trip).
13
+ * Its value can be retrieved from {@link Subscription.departurePhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the return subscription.
14
+ * @property {number} returnDestinationPhysicalAgencyStopId - The id of the return destination stop (0 if the subscription is for a one-way trip).
15
+ * Its value can be retrieved from {@link Subscription.destinationPhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the return subscription.
16
+ * @property {number} numberOfPassengers - The number of passengers to be booked.
17
+ * @property {string} validityType - The validity type of the subscription (as returned by {@link SubscriptionBooking.getSubscriptionsValidityTypes})
18
+ */
19
+ export type GetSubscriptionAvailabilityRequest = {
20
+ outboundRouteId: number;
21
+ returnRouteId: number;
22
+ outboundDeparturePhysicalAgencyStopId: number;
23
+ outboundDestinationPhysicalAgencyStopId: number;
24
+ returnDeparturePhysicalAgencyStopId: number;
25
+ returnDestinationPhysicalAgencyStopId: number;
26
+ numberOfPassengers: number;
27
+ validityType: string;
28
+ };
29
+ /**
30
+ * @description This is the object to be returned by to `SubscriptionBooking.getSubscrptionAvailabilities`,
31
+ * containing general information about the selected subscription as well as the list of periods in which it is possible to
32
+ * book the subscription.
33
+ *
34
+ * @property {string} departureStopName - The name of the departure stop.
35
+ * @property {string} destinationStopName - The name of the destination stop.
36
+ * @property {Date} outboundDepartureTime - The departure time of the outbound trip.
37
+ * @property {Date} outboundDestinationTime - The destination time of the outbound trip.
38
+ * @property {Date} returnDepartureTime - The departure time of the return trip.
39
+ * @property {Date} returnDestinationTime - The destination time of the return trip.
40
+ * @property {SubscriptionCalendarDayPeriodInfo[]} periods - The list of periods for which the availability of the subscription was checked.
41
+ */
42
+ export type GetSubscriptionAvailabilityResponse = {
43
+ departureStopName: string;
44
+ destinationStopName: string;
45
+ outboundDepartureTime: Date;
46
+ outboundDestinationTime: Date;
47
+ returnDepartureTime: Date;
48
+ returnDestinationTime: Date;
49
+ periods: SubscriptionCalendarDayPeriodInfo[];
50
+ };
51
+ /**
52
+ * @description This is the object descibing the availability of a subscription for a given period.
53
+ * Note that it is possible to book a subscription only is both {@link journeyAvailable} and {@link isAvailable} are true.
54
+ *
55
+ * @property {string} periodName - The name of the period (e.g. "July 2023")
56
+ * @property {Date} dateFrom - The start date of the period.
57
+ * @property {Date} dateTo - The end date of the period.
58
+ * @property {number} price - The price of the subscription for the given period.
59
+ * @property {boolean} journeyAvailable - Whether this subscription is available in this period.
60
+ * @property {boolean} isAvailable - If this subscription is available (i.e. if {@link journeyAvailable} is true), this tells whether it can be booked
61
+ */
62
+ export type SubscriptionCalendarDayPeriodInfo = {
63
+ periodName: string;
64
+ dateFrom: Date;
65
+ dateTo: Date;
66
+ price: number;
67
+ journeyAvailable: boolean;
68
+ isAvailable: boolean;
69
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @description This is the object to be passed to `SubscriptionBooking.createSubscriptionCart`,
3
+ * containing information about the selected subscription.
4
+ *
5
+ * @property {number} outboundDeparturePhysicalAgencyStopId - The id of the outbound departure stop.
6
+ * Its value can be retrieved from {@link Subscription.departurePhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the oubound subscription.
7
+ * @property {number} outboundDestinationPhysicalAgencyStopId - The id of the outbound destination stop.
8
+ * Its value can be retrieved from {@link Subscription.destinationPhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the oubound subscription.
9
+ * @property {number} returnDeparturePhysicalAgencyStopId - The id of the return departure stop (0 if the subscription is for a one-way trip).
10
+ * Its value can be retrieved from {@link Subscription.departurePhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the return subscription.
11
+ * @property {number} returnDestinationPhysicalAgencyStopId - The id of the return destination stop (0 if the subscription is for a one-way trip).
12
+ * Its value can be retrieved from {@link Subscription.destinationPhysicalAgencyStopId}, return value of {@link SubscriptionBooking.getSubscriptions} for the return subscription.
13
+ * @property {number} outboundRouteId - The id of the outbound route.
14
+ * Its value can be retrieved from {@link Subscription.routeId}, return value of {@link SubscriptionBooking.getSubscriptions} for the oubound subscription.
15
+ * @property {number} returnRouteId - The id of the return route (0 if the subscription is for a one-way trip)
16
+ * Its value can be retrieved from {@link Subscription.routeId}, return value of {@link SubscriptionBooking.getSubscriptions} for the return subscription.
17
+ * @property {number} numberOfPassengers - The number of passengers to book.
18
+ * @property {SubscriptionPeriod[]} period - A list of periods for which the subscription should be booked.
19
+ */
20
+ export type CreateSubscriptionCartRequest = {
21
+ outboundDeparturePhysicalAgencyStopId: number;
22
+ outboundDestinationPhysicalAgencyStopId: number;
23
+ returnDeparturePhysicalAgencyStopId: number;
24
+ returnDestinationPhysicalAgencyStopId: number;
25
+ outboundRouteId: number;
26
+ returnRouteId: number;
27
+ numberOfPassengers: number;
28
+ period: SubscriptionPeriod[];
29
+ };
30
+ /**
31
+ * @description This is the object that describes which perios should be booked.
32
+ *
33
+ * @property {string} dateFrom - The start date of the period as returned by {@link SubscriptionBooking.getSubscrptionAvailabilities}.
34
+ * @property {string} dateTo - The end date of the period as returned by {@link SubscriptionBooking.getSubscrptionAvailabilities}.
35
+ */
36
+ export type SubscriptionPeriod = {
37
+ dateFrom: string;
38
+ dateTo: string;
39
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @description This is the object to be returned by to `SubscriptionBooking.getSubscrptions`, containing information about the selected subscription.
3
+ *
4
+ * @property {number} departurePhysicalAgencyStopId - The id of the departure stop.
5
+ * @property {string} departureStopName - The name of the departure stop.
6
+ * @property {number} destinationPhysicalAgencyStopId - The id of the destination stop.
7
+ * @property {string} destinationStopName - The name of the destination stop.
8
+ * @property {string} departureTime - The time of departure from the departureStop.
9
+ * @property {string} destinationTime - The time of arrival to the destinationStop.
10
+ * @property {string} lineName - The name of the line on which the subscription is sold.
11
+ * @property {number} routeId - The id of the route on which the subscription is sold.
12
+ * @property {string} routeName - The name of the route on which the subscription is sold.
13
+ * @property {number} sellerId - The id of the seller selling the subscription.
14
+ */
15
+ export type Subscription = {
16
+ departurePhysicalAgencyStopId: number;
17
+ departureStopName: string;
18
+ destinationPhysicalAgencyStopId: number;
19
+ destinationStopName: string;
20
+ departureTime: string;
21
+ destinationTime: string;
22
+ lineName: string;
23
+ routeId: number;
24
+ routeName: string;
25
+ sellerId: number;
26
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mts-booking-library",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "Library for use MyTicketSolution Booking API",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",