mts-booking-library 1.0.5 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/booking/booking.d.ts +44 -0
- package/lib/booking/booking.js +105 -0
- package/lib/booking/journeyBooking.d.ts +49 -0
- package/lib/booking/journeyBooking.js +246 -0
- package/lib/booking/serviceBooking.d.ts +36 -0
- package/lib/booking/serviceBooking.js +190 -0
- package/lib/booking/subscriptionBooking.d.ts +50 -0
- package/lib/booking/subscriptionBooking.js +201 -0
- package/lib/config.d.ts +2 -1
- package/lib/config.js +5 -2
- package/lib/index.d.ts +15 -140
- package/lib/index.js +16 -415
- package/lib/types/common/Cart.d.ts +47 -0
- package/lib/types/common/Person.d.ts +31 -0
- package/lib/types/common/Person.js +11 -0
- package/lib/types/{TermsAndTariffs.d.ts → common/Tariffs.d.ts} +5 -0
- package/lib/types/journeys/JourneyCart.d.ts +55 -0
- package/lib/types/journeys/JourneyInfo.d.ts +18 -0
- package/lib/types/journeys/JourneySearch.d.ts +19 -0
- package/lib/types/{Journeys → journeys}/JourneySearch.js +7 -5
- package/lib/types/journeys/Stop.d.ts +16 -0
- package/lib/types/{Journeys → journeys}/Trip.d.ts +1 -1
- package/lib/types/services/Line.d.ts +14 -0
- package/lib/types/services/Service.d.ts +33 -0
- package/lib/types/services/ServiceCart.d.ts +46 -0
- package/lib/types/services/ServiceInfo.d.ts +14 -0
- package/lib/utils/apiCall.js +22 -2
- package/package.json +3 -3
- package/lib/types/Booking.d.ts +0 -0
- package/lib/types/Booking.js +0 -1
- package/lib/types/Cart.d.ts +0 -79
- package/lib/types/Details.d.ts +0 -9
- package/lib/types/Info.d.ts +0 -8
- package/lib/types/Journey.d.ts +0 -8
- package/lib/types/JourneySearch.d.ts +0 -9
- package/lib/types/Journeys/BusMatrix.d.ts +0 -0
- package/lib/types/Journeys/BusMatrix.js +0 -1
- package/lib/types/Journeys/Journey.d.ts +0 -8
- package/lib/types/Journeys/JourneySearch.d.ts +0 -11
- package/lib/types/Journeys/Stop.d.ts +0 -7
- package/lib/types/Line.d.ts +0 -6
- package/lib/types/Person.d.ts +0 -7
- package/lib/types/Stop.d.ts +0 -7
- package/lib/types/Stop.js +0 -2
- package/lib/types/Subscriptions/ValidityTypes.d.ts +0 -6
- package/lib/types/Subscriptions/ValidityTypes.js +0 -10
- package/lib/types/TermsAndTariffs.js +0 -2
- package/lib/types/Tour.d.ts +0 -18
- package/lib/types/Tour.js +0 -2
- package/lib/types/Tours/Tour.d.ts +0 -18
- package/lib/types/Tours/Tour.js +0 -2
- package/lib/types/Tours.d.ts +0 -0
- package/lib/types/Tours.js +0 -1
- package/lib/types/Trip.d.ts +0 -9
- package/lib/types/Trip.js +0 -2
- package/lib/types/TripSearch.d.ts +0 -9
- package/lib/types/TripSearch.js +0 -2
- /package/lib/types/{Cart.js → common/Cart.js} +0 -0
- /package/lib/types/{Details.js → common/Tariffs.js} +0 -0
- /package/lib/types/{BusMatrix.d.ts → journeys/BusMatrix.d.ts} +0 -0
- /package/lib/types/{BusMatrix.js → journeys/BusMatrix.js} +0 -0
- /package/lib/types/{Info.js → journeys/JourneyCart.js} +0 -0
- /package/lib/types/{Journey.js → journeys/JourneyInfo.js} +0 -0
- /package/lib/types/{Journeys → journeys}/Stop.js +0 -0
- /package/lib/types/{Journeys → journeys}/Trip.js +0 -0
- /package/lib/types/{Line.js → services/Line.js} +0 -0
- /package/lib/types/{JourneySearch.js → services/Service.js} +0 -0
- /package/lib/types/{Journeys/Journey.js → services/ServiceCart.js} +0 -0
- /package/lib/types/{Person.js → services/ServiceInfo.js} +0 -0
- /package/lib/types/{Subscriptions → subscriptions}/Subscrptions.d.ts +0 -0
- /package/lib/types/{Subscriptions → subscriptions}/Subscrptions.js +0 -0
package/lib/index.js
CHANGED
@@ -1,417 +1,18 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
3
|
-
__assign = Object.assign || function(t) {
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
-
s = arguments[i];
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
-
t[p] = s[p];
|
8
|
-
}
|
9
|
-
return t;
|
10
|
-
};
|
11
|
-
return __assign.apply(this, arguments);
|
12
|
-
};
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
20
|
-
});
|
21
|
-
};
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
26
|
-
function step(op) {
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
31
|
-
switch (op[0]) {
|
32
|
-
case 0: case 1: t = op; break;
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
36
|
-
default:
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
41
|
-
if (t[2]) _.ops.pop();
|
42
|
-
_.trys.pop(); continue;
|
43
|
-
}
|
44
|
-
op = body.call(thisArg, _);
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
47
|
-
}
|
48
|
-
};
|
49
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
50
|
-
exports.
|
51
|
-
|
52
|
-
var
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
function Booking(env, sub_key, onCartExpiration, access_token, sellerId) {
|
67
|
-
this.cartStatus = Booking.CartStatus.EMPTY;
|
68
|
-
this.sellerId = sellerId || undefined;
|
69
|
-
this.config = (0, config_1.setConfig)(env, sub_key, access_token);
|
70
|
-
this.onCartExpiration = onCartExpiration;
|
71
|
-
var cartId = localStorage.getItem("cartId");
|
72
|
-
if (cartId) {
|
73
|
-
this.fetchAndSetCart(parseInt(cartId));
|
74
|
-
}
|
75
|
-
}
|
76
|
-
/**
|
77
|
-
* This method allows to renew the access token for calling MTS APIs
|
78
|
-
* @param {string} access_token The new access token
|
79
|
-
*/
|
80
|
-
Booking.prototype.renewAccessToken = function (access_token) {
|
81
|
-
(0, config_1.setConfig)(this.config.ENV, this.config.OCP_SUBSCRIPTION_KEY, access_token);
|
82
|
-
};
|
83
|
-
Booking.prototype.getCartStatus = function () {
|
84
|
-
return this.cartStatus;
|
85
|
-
};
|
86
|
-
Booking.prototype.getCart = function () {
|
87
|
-
return this.cart;
|
88
|
-
};
|
89
|
-
Booking.prototype.fetchAndSetCart = function (cartId) {
|
90
|
-
return __awaiter(this, void 0, void 0, function () {
|
91
|
-
var _this = this;
|
92
|
-
return __generator(this, function (_a) {
|
93
|
-
this.fetchCart(cartId).then(function (cart) {
|
94
|
-
var cartDate = new Date(cart.bookingDueDate);
|
95
|
-
if (cartDate > new Date()) {
|
96
|
-
_this.cart = cart;
|
97
|
-
_this.cartStatus = cart.status;
|
98
|
-
_this.createCartTimer(cartDate);
|
99
|
-
}
|
100
|
-
});
|
101
|
-
return [2 /*return*/];
|
102
|
-
});
|
103
|
-
});
|
104
|
-
};
|
105
|
-
Booking.prototype.createCartTimer = function (expiringDate) {
|
106
|
-
return __awaiter(this, void 0, void 0, function () {
|
107
|
-
var _this = this;
|
108
|
-
return __generator(this, function (_a) {
|
109
|
-
setTimeout(function () {
|
110
|
-
localStorage.removeItem("cartId");
|
111
|
-
// Put actions that have to be done when timer expires here
|
112
|
-
_this.cartStatus = Booking.CartStatus.EMPTY;
|
113
|
-
_this.cart = undefined;
|
114
|
-
_this.onCartExpiration();
|
115
|
-
}, expiringDate.valueOf() - new Date().valueOf());
|
116
|
-
return [2 /*return*/];
|
117
|
-
});
|
118
|
-
});
|
119
|
-
};
|
120
|
-
Booking.prototype.getCartExpirationTimeInMs = function () {
|
121
|
-
return __awaiter(this, void 0, void 0, function () {
|
122
|
-
return __generator(this, function (_a) {
|
123
|
-
if (this.cart) {
|
124
|
-
return [2 /*return*/, (new Date(this.cart.bookingDueDate).valueOf() - new Date().valueOf())];
|
125
|
-
}
|
126
|
-
else {
|
127
|
-
throw Error("Cart is not initialized yet");
|
128
|
-
}
|
129
|
-
return [2 /*return*/];
|
130
|
-
});
|
131
|
-
});
|
132
|
-
};
|
133
|
-
// #region Tours config
|
134
|
-
/**
|
135
|
-
* This method returns the list of cities in which the seller offers tours.
|
136
|
-
* If the sellerId is not set or it is 0, it will return the list of cities for all sellers.
|
137
|
-
* @returns {string[]} The list of possible cities
|
138
|
-
*/
|
139
|
-
Booking.prototype.getTourCities = function () {
|
140
|
-
return __awaiter(this, void 0, void 0, function () {
|
141
|
-
var url;
|
142
|
-
return __generator(this, function (_a) {
|
143
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/tours/cities?").concat(new URLSearchParams(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() }))));
|
144
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
145
|
-
});
|
146
|
-
});
|
147
|
-
};
|
148
|
-
/**
|
149
|
-
* This method returns the tours sold by this seller in the given city.
|
150
|
-
* If the sellerId is not set or it is 0, it will return the tours in the given city for all sellers.
|
151
|
-
* @param {string} [cityName=undefined] The name of the selected city (as returned by {@link getTourCities})
|
152
|
-
* @param {Booking.Currencies} currency The currency in which the prices should be returned
|
153
|
-
* @returns {Tour[]} The returned tours
|
154
|
-
*/
|
155
|
-
Booking.prototype.getTours = function (currency, cityName) {
|
156
|
-
return __awaiter(this, void 0, void 0, function () {
|
157
|
-
var url;
|
158
|
-
return __generator(this, function (_a) {
|
159
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/tours?").concat(new URLSearchParams(__assign(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), (cityName && { cityName: cityName })), { currency: currency })));
|
160
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
161
|
-
});
|
162
|
-
});
|
163
|
-
};
|
164
|
-
/**
|
165
|
-
* This method returns the tours available for the given date. This method can be used if the seller wants the user to book a specific date
|
166
|
-
* and/or a specific hour for the tour.
|
167
|
-
* You should call this method only if {@link Tour.isDateOptional} or {@link Tour.isDateRequired} is true for the selected tour.
|
168
|
-
* @param {number} tourId The id of the selected tour (can be retrieved in the object {@link Tour} returned by {@link getTours})
|
169
|
-
* @param {Date} date The date on which to get the tours
|
170
|
-
* @returns {TourTrip[]} The returned information about the tour (tripId and hour)
|
171
|
-
*/
|
172
|
-
Booking.prototype.getToursTrips = function (tourId, date) {
|
173
|
-
return __awaiter(this, void 0, void 0, function () {
|
174
|
-
var url;
|
175
|
-
return __generator(this, function (_a) {
|
176
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/tours/").concat(tourId, "/trips?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { date: date.toDateString() })));
|
177
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
178
|
-
});
|
179
|
-
});
|
180
|
-
};
|
181
|
-
Booking.prototype.createTourCart = function (tourCart) {
|
182
|
-
return __awaiter(this, void 0, void 0, function () {
|
183
|
-
var url;
|
184
|
-
var _this = this;
|
185
|
-
return __generator(this, function (_a) {
|
186
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/tours/cart");
|
187
|
-
return [2 /*return*/, (0, apiCall_1.makePost)(url, tourCart).then(function (cart) {
|
188
|
-
_this.cart = cart.cart;
|
189
|
-
_this.cartStatus = cart.cart.status;
|
190
|
-
_this.createCartTimer(new Date(cart.cart.bookingDueDate));
|
191
|
-
return cart.cart;
|
192
|
-
})];
|
193
|
-
});
|
194
|
-
});
|
195
|
-
};
|
196
|
-
//#endregion
|
197
|
-
Booking.prototype.fetchCart = function (cartId) {
|
198
|
-
return __awaiter(this, void 0, void 0, function () {
|
199
|
-
var url;
|
200
|
-
return __generator(this, function (_a) {
|
201
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/tours/cart/").concat(cartId);
|
202
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
203
|
-
});
|
204
|
-
});
|
205
|
-
};
|
206
|
-
//#region Journeys config
|
207
|
-
/**
|
208
|
-
* This method returns the possible departures for all journeys (MLP) sold by this seller.
|
209
|
-
* @returns {string[]} The list of possible departures
|
210
|
-
*/
|
211
|
-
Booking.prototype.getJourneysDepartures = function () {
|
212
|
-
return __awaiter(this, void 0, void 0, function () {
|
213
|
-
var url;
|
214
|
-
return __generator(this, function (_a) {
|
215
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/journeys/departures?").concat(new URLSearchParams(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() }))));
|
216
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
217
|
-
});
|
218
|
-
});
|
219
|
-
};
|
220
|
-
/**
|
221
|
-
* This method returns the possible destination for the journeys sold by this seller that start at the selected departure.
|
222
|
-
* @param {string} departureStopName The departure stop name (as returned by {@link getJourneysDepartures})
|
223
|
-
* @returns {string[]} The list of possible destinations
|
224
|
-
*/
|
225
|
-
Booking.prototype.getJourneysDestinations = function (departureStopName) {
|
226
|
-
return __awaiter(this, void 0, void 0, function () {
|
227
|
-
var url;
|
228
|
-
return __generator(this, function (_a) {
|
229
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/journeys/destinations?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { departureStopName: departureStopName })));
|
230
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
231
|
-
});
|
232
|
-
});
|
233
|
-
};
|
234
|
-
/**
|
235
|
-
* This method returns the journeys that match the given parameters.
|
236
|
-
* Note that it will always return the journeys for the one-way trip.
|
237
|
-
* If you want to get the journeys for the round trip, you have to call this method twice (make sure to swap departureStopName and destinationStopName)
|
238
|
-
* @param {JourneySearch} params an object of type {@link JourneySearch} containing the parameters of the search
|
239
|
-
* @returns {Journey[]} The returned journeys that match the given parameters
|
240
|
-
*/
|
241
|
-
Booking.prototype.getJourneys = function (params) {
|
242
|
-
return __awaiter(this, void 0, void 0, function () {
|
243
|
-
var url;
|
244
|
-
return __generator(this, function (_a) {
|
245
|
-
if (params.departureStopName === undefined || params.destinationStopName === undefined) {
|
246
|
-
throw Error("Fields departureStopName and destinationStopName are required");
|
247
|
-
}
|
248
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/journeys?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { departureStopName: params.departureStopName, destinationStopName: params.destinationStopName, passengersNumber: params.passengersNumber.toString(), date: params.date.toDateString(), roundTripDate: params.roundTripDate ? params.roundTripDate.toDateString() : "null", currency: params.currency, isRoundtrip: params.isRoundtrip.toString() })));
|
249
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
250
|
-
});
|
251
|
-
});
|
252
|
-
};
|
253
|
-
Booking.prototype.createJourneyCart = function (tripCart) {
|
254
|
-
return __awaiter(this, void 0, void 0, function () {
|
255
|
-
var url;
|
256
|
-
var _this = this;
|
257
|
-
return __generator(this, function (_a) {
|
258
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/journeys/cart");
|
259
|
-
return [2 /*return*/, (0, apiCall_1.makePost)(url, tripCart).then(function (cart) {
|
260
|
-
_this.cart = cart.cart;
|
261
|
-
_this.cartStatus = cart.cart.status;
|
262
|
-
_this.createCartTimer(new Date(cart.cart.bookingDueDate));
|
263
|
-
return cart.cart;
|
264
|
-
})];
|
265
|
-
});
|
266
|
-
});
|
267
|
-
};
|
268
|
-
Booking.prototype.getBusMatrix = function (params) {
|
269
|
-
return __awaiter(this, void 0, void 0, function () {
|
270
|
-
var url;
|
271
|
-
return __generator(this, function (_a) {
|
272
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/journeys/trips/").concat(params.tripId, "/seats?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { departureStopId: params.departureStopId.toString(), destinationStopId: params.destinationStopId.toString() })));
|
273
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
274
|
-
});
|
275
|
-
});
|
276
|
-
};
|
277
|
-
Booking.prototype.getSeatsStatus = function (params) {
|
278
|
-
return __awaiter(this, void 0, void 0, function () {
|
279
|
-
var url;
|
280
|
-
return __generator(this, function (_a) {
|
281
|
-
if (!this.cart) {
|
282
|
-
throw Error("Cart is not initialized yet");
|
283
|
-
}
|
284
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/seats?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { tripId: params.tripId.toString() })));
|
285
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
286
|
-
});
|
287
|
-
});
|
288
|
-
};
|
289
|
-
Booking.prototype.movePassengers = function (params) {
|
290
|
-
return __awaiter(this, void 0, void 0, function () {
|
291
|
-
var url;
|
292
|
-
return __generator(this, function (_a) {
|
293
|
-
if (!this.cart) {
|
294
|
-
throw Error("Cart is not initialized yet");
|
295
|
-
}
|
296
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/seats");
|
297
|
-
return [2 /*return*/, (0, apiCall_1.makePost)(url, params)];
|
298
|
-
});
|
299
|
-
});
|
300
|
-
};
|
301
|
-
//#endregion
|
302
|
-
//#region Subscriptions config
|
303
|
-
/**
|
304
|
-
* This method returns the possible departures for all subscriptions sold by this seller.
|
305
|
-
* @returns {string[]} The list of possible departures
|
306
|
-
*/
|
307
|
-
Booking.prototype.getSubscriptionsDepartures = function () {
|
308
|
-
return __awaiter(this, void 0, void 0, function () {
|
309
|
-
var url;
|
310
|
-
return __generator(this, function (_a) {
|
311
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/departures?").concat(new URLSearchParams(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() }))));
|
312
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
313
|
-
});
|
314
|
-
});
|
315
|
-
};
|
316
|
-
/**
|
317
|
-
* This method returns the possible destination for the subscriptions sold by this seller that start at the selected departure.
|
318
|
-
* @param {string} departureStopName The departure stop name (as returned by {@link getSubscriptionsDepartures})
|
319
|
-
* @returns {string[]} The list of possible destinations
|
320
|
-
*/
|
321
|
-
Booking.prototype.getSubscrptionsDestinations = function (departureStopName) {
|
322
|
-
return __awaiter(this, void 0, void 0, function () {
|
323
|
-
var url;
|
324
|
-
return __generator(this, function (_a) {
|
325
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/destinations?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { departureStopName: departureStopName })));
|
326
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
327
|
-
});
|
328
|
-
});
|
329
|
-
};
|
330
|
-
/**
|
331
|
-
* This method returns the possible validity types for the subscriptions sold by this seller between the selected departure and destination.
|
332
|
-
* The validity type is the duration of the subscription (1 week, 1 month, etc.). See {@link ValidityTypes} for more details.
|
333
|
-
* @param {string} departureStopName The departure stop name (as returned by {@link getSubscriptionsDepartures})
|
334
|
-
* @param {string} destinationStopName The destination stop name (as returned by {@link getSubscriptionsDstinations})
|
335
|
-
* @returns {ValidityTypes[]} The list of possible validity types
|
336
|
-
*/
|
337
|
-
Booking.prototype.getSubscrptionsValidityTypes = function (departureStopName, destinationStopName) {
|
338
|
-
return __awaiter(this, void 0, void 0, function () {
|
339
|
-
var url;
|
340
|
-
return __generator(this, function (_a) {
|
341
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/subscriptions/validityTypes?").concat(new URLSearchParams(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), { departureStopName: departureStopName, destinationStopName: destinationStopName })));
|
342
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
343
|
-
});
|
344
|
-
});
|
345
|
-
};
|
346
|
-
/**
|
347
|
-
* This method returns the subscriptions that match the given parameters.
|
348
|
-
* Note that it will always return the subscription for the one-way trip.
|
349
|
-
* If you want to get the subscription for the round trip, you have to call this method twice (make sure to swap departureStopName and destinationStopName)
|
350
|
-
* @param {string} departureStopName The departure stop name (as returned by {@link getSubscriptionsDepartures})
|
351
|
-
* @param {string} destinationStopName The destination stop name (as returned by {@link getSubscriptionsDstinations})
|
352
|
-
* @param {string} validityType The validity type (as returned by {@link getSubscriptionsValidityTypes})
|
353
|
-
* @returns {Array<Subscription>} The subscriptions that match the given parameters
|
354
|
-
*/
|
355
|
-
Booking.prototype.getSubscrptions = function (departureStopName, destinationStopName, validityType) {
|
356
|
-
return __awaiter(this, void 0, void 0, function () {
|
357
|
-
var url;
|
358
|
-
return __generator(this, function (_a) {
|
359
|
-
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 })));
|
360
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
361
|
-
});
|
362
|
-
});
|
363
|
-
};
|
364
|
-
Booking.prototype.getSubscrptionAvailabilities = function (departureStopName, destinationStopName, validityType) {
|
365
|
-
return __awaiter(this, void 0, void 0, function () {
|
366
|
-
var url;
|
367
|
-
return __generator(this, function (_a) {
|
368
|
-
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 })));
|
369
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
370
|
-
});
|
371
|
-
});
|
372
|
-
};
|
373
|
-
//#endregion
|
374
|
-
Booking.prototype.getPassengersDetails = function () {
|
375
|
-
return __awaiter(this, void 0, void 0, function () {
|
376
|
-
var url;
|
377
|
-
return __generator(this, function (_a) {
|
378
|
-
if (!this.cart) {
|
379
|
-
throw Error("Cart is not initialized yet");
|
380
|
-
}
|
381
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/details?").concat(new URLSearchParams(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() }))));
|
382
|
-
return [2 /*return*/, (0, apiCall_1.makeGet)(url)];
|
383
|
-
});
|
384
|
-
});
|
385
|
-
};
|
386
|
-
Booking.prototype.updatePassengersDetails = function (passengersDetails) {
|
387
|
-
return __awaiter(this, void 0, void 0, function () {
|
388
|
-
var url;
|
389
|
-
return __generator(this, function (_a) {
|
390
|
-
if (!this.cart) {
|
391
|
-
throw Error("Cart is not initialized yet");
|
392
|
-
}
|
393
|
-
url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cart.id, "/details");
|
394
|
-
return [2 /*return*/, (0, apiCall_1.makePost)(url, passengersDetails)];
|
395
|
-
});
|
396
|
-
});
|
397
|
-
};
|
398
|
-
return Booking;
|
399
|
-
}());
|
400
|
-
exports.Booking = Booking;
|
401
|
-
(function (Booking) {
|
402
|
-
var Currencies;
|
403
|
-
(function (Currencies) {
|
404
|
-
Currencies["EUR"] = "EUR";
|
405
|
-
Currencies["USD"] = "USD";
|
406
|
-
Currencies["CHF"] = "CHF";
|
407
|
-
})(Currencies = Booking.Currencies || (Booking.Currencies = {}));
|
408
|
-
var CartStatus;
|
409
|
-
(function (CartStatus) {
|
410
|
-
CartStatus["EMPTY"] = "EMPTY";
|
411
|
-
CartStatus["CREATION"] = "CREATION";
|
412
|
-
CartStatus["PASSENGERS"] = "PASSENGERS";
|
413
|
-
CartStatus["SEATS"] = "SEATS";
|
414
|
-
CartStatus["EXTRAS"] = "EXTRAS";
|
415
|
-
CartStatus["PAYMENT"] = "PAYMENT";
|
416
|
-
})(CartStatus = Booking.CartStatus || (Booking.CartStatus = {}));
|
417
|
-
})(Booking || (exports.Booking = Booking = {}));
|
3
|
+
exports.DEFAULT_JOURNEY_SEARCH = exports.DEFAULT_PERSON = exports.SubscriptionBooking = exports.ServiceBooking = exports.JourneyBooking = void 0;
|
4
|
+
//#region Export Booking classes
|
5
|
+
var journeyBooking_1 = require("./booking/journeyBooking");
|
6
|
+
Object.defineProperty(exports, "JourneyBooking", { enumerable: true, get: function () { return journeyBooking_1.JourneyBooking; } });
|
7
|
+
var serviceBooking_1 = require("./booking/serviceBooking");
|
8
|
+
Object.defineProperty(exports, "ServiceBooking", { enumerable: true, get: function () { return serviceBooking_1.ServiceBooking; } });
|
9
|
+
var subscriptionBooking_1 = require("./booking/subscriptionBooking");
|
10
|
+
Object.defineProperty(exports, "SubscriptionBooking", { enumerable: true, get: function () { return subscriptionBooking_1.SubscriptionBooking; } });
|
11
|
+
//#endregion
|
12
|
+
//#region Export common types
|
13
|
+
// @note: Cart is not exported because it is extended by other types
|
14
|
+
var Person_1 = require("./types/common/Person");
|
15
|
+
Object.defineProperty(exports, "DEFAULT_PERSON", { enumerable: true, get: function () { return Person_1.DEFAULT_PERSON; } });
|
16
|
+
var JourneySearch_1 = require("./types/journeys/JourneySearch");
|
17
|
+
Object.defineProperty(exports, "DEFAULT_JOURNEY_SEARCH", { enumerable: true, get: function () { return JourneySearch_1.DEFAULT_JOURNEY_SEARCH; } });
|
18
|
+
//#endregion
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import { Booking } from "../../booking/booking";
|
2
|
+
import { Person } from "./Person";
|
3
|
+
/**
|
4
|
+
* @description Cart is the object returned by the API when a cart is created.
|
5
|
+
* Note that depending on the type of booking, this type will be extended with different fields:
|
6
|
+
* - TourCart: {@link TourCart.ts}
|
7
|
+
* - JourneyCart: {@link JourneyCart.ts}
|
8
|
+
* - SubscriptionCart: {@link SubscriptionCart.ts}
|
9
|
+
* @property {number} id The id of the cart
|
10
|
+
* @property {string} cartCode The code of the cart
|
11
|
+
* @property {Booking.CartStatus} status The status of the cart. See {@link Booking.CartStatus}
|
12
|
+
* @property {Booking.CartStatus} nextStatus The next status of the cart. See {@link Booking.CartStatus}
|
13
|
+
* @property {Booking.Currencies} currency The currency of the cart. See {@link Booking.Currencies}
|
14
|
+
*/
|
15
|
+
export type Cart = {
|
16
|
+
id: number;
|
17
|
+
cartCode: string;
|
18
|
+
status: Booking.CartStatus;
|
19
|
+
nextStatus: Booking.CartStatus;
|
20
|
+
currency: Booking.Currencies;
|
21
|
+
bookingDueDate: string;
|
22
|
+
buyer: Person;
|
23
|
+
reductions: {
|
24
|
+
tripId: number;
|
25
|
+
tripName: string;
|
26
|
+
value: number;
|
27
|
+
isPercentage: boolean;
|
28
|
+
voucherCode?: string;
|
29
|
+
}[];
|
30
|
+
isSeatsSelectionAllowed: boolean;
|
31
|
+
sellingMethod: string;
|
32
|
+
totalValue: number;
|
33
|
+
totalResellerFee?: number;
|
34
|
+
totalCreditFromChange: number;
|
35
|
+
totalAmountToPay: number;
|
36
|
+
extas: {
|
37
|
+
id: number;
|
38
|
+
resourceId: number;
|
39
|
+
name: string;
|
40
|
+
description: string;
|
41
|
+
notes: string;
|
42
|
+
tariff: {
|
43
|
+
tariffId: number;
|
44
|
+
tariffName: string;
|
45
|
+
};
|
46
|
+
}[];
|
47
|
+
};
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* @description Represents a person, that can be a passenger or the buyer.
|
3
|
+
*
|
4
|
+
* @property {number} id - The unique identifier for the person.
|
5
|
+
* @property {string} name - The name of the person.
|
6
|
+
* @property {string} lastName - The last name of the person.
|
7
|
+
* @property {string} email - The email of the person.
|
8
|
+
* @property {string} phoneNumber - The phone number of the person.
|
9
|
+
*/
|
10
|
+
export type Person = {
|
11
|
+
id: number;
|
12
|
+
name: string;
|
13
|
+
lastName: string;
|
14
|
+
email: string;
|
15
|
+
phoneNumber: string;
|
16
|
+
};
|
17
|
+
export declare const DEFAULT_PERSON: Person;
|
18
|
+
/**
|
19
|
+
* @description Represents the passengers details.
|
20
|
+
*
|
21
|
+
* @property {Person[]} passengers - An array of {@link Person} extended by the map `tripsToTariffs` objects representing the passengers.
|
22
|
+
* @property {Person} buyer - The {@link Person} object representing the buyer.
|
23
|
+
*/
|
24
|
+
export type PassengersDetails = {
|
25
|
+
passengers: Person[] & {
|
26
|
+
tripsToTariffs: {
|
27
|
+
[tripId: number]: number;
|
28
|
+
};
|
29
|
+
};
|
30
|
+
buyer: Person;
|
31
|
+
};
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"use strict";
|
2
|
+
// This module contains the types to manage the passengers information
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
4
|
+
exports.DEFAULT_PERSON = void 0;
|
5
|
+
exports.DEFAULT_PERSON = {
|
6
|
+
id: 0,
|
7
|
+
name: '',
|
8
|
+
lastName: '',
|
9
|
+
email: '',
|
10
|
+
phoneNumber: ''
|
11
|
+
};
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import { Booking } from "../../booking/booking";
|
2
|
+
import { Cart } from "../common/Cart";
|
3
|
+
import { TariffMatrix, TariffSummary } from "../common/Tariffs";
|
4
|
+
import { Stop } from "./Stop";
|
5
|
+
/**
|
6
|
+
* @description Object containing information about the selected journey, to be used when booking the journey.
|
7
|
+
*
|
8
|
+
* @property {number} tripId - The unique identifier for the trip.
|
9
|
+
* @property {number} departureStopId - The unique identifier for the departure stop.
|
10
|
+
* @property {number} destinationStopId - The unique identifier for the destination stop.
|
11
|
+
* @property {TariffMatrix} tariffsMatrix - The tariff matrix for pricing the outbound journey.
|
12
|
+
*/
|
13
|
+
export type JourneyBookingInfo = {
|
14
|
+
tripId: number;
|
15
|
+
departureStopId: number;
|
16
|
+
destinationStopId: number;
|
17
|
+
tariffsMatrix: TariffMatrix;
|
18
|
+
};
|
19
|
+
/**
|
20
|
+
* @description This is the object to be passed to `JourneyBooking.createJourneyCart`, containing information about the selected service.
|
21
|
+
*
|
22
|
+
* @property {number|undefined} [cartId=0] - The unique identifier for the cart (optional).
|
23
|
+
* @property {Booking.Currencies} currency - The currency in which the journey is priced.
|
24
|
+
* @property {JourneyBookingInfo[]} outboundJourney - Information about outbound journeys.
|
25
|
+
* @property {JourneyBookingInfo[]|null} returnJourney - Information about return journeys (optional, can be null).
|
26
|
+
*/
|
27
|
+
export type CreateJourneyCartRequest = {
|
28
|
+
cartId?: number;
|
29
|
+
currency: Booking.Currencies;
|
30
|
+
outboundJourney: JourneyBookingInfo[];
|
31
|
+
returnJourney: JourneyBookingInfo[] | null;
|
32
|
+
};
|
33
|
+
/**
|
34
|
+
* @description Represents a `JourneyCart`, which extends the {@link Cart} type by including additional
|
35
|
+
* information about the bookings
|
36
|
+
*
|
37
|
+
* @property {JourneyBookingType[]} bookings - An array of {@link JourneyBookingType} objects representing the bookings associated
|
38
|
+
* with this journey cart.
|
39
|
+
*/
|
40
|
+
export type JourneyCart = Cart & {
|
41
|
+
bookings: JourneyBookingType[];
|
42
|
+
};
|
43
|
+
/**
|
44
|
+
* @description Represents a `JourneyBooking`, which contains information about a journey booking.
|
45
|
+
*
|
46
|
+
* @property {Booking.BookingTypes} type - The type of booking.
|
47
|
+
* @property {TariffSummary[]} summary - An array of {@link TariffSummary} objects representing the tariff summary
|
48
|
+
* associated with this journey booking.
|
49
|
+
* @property {Stop[]} info - An array of {@link Stop} objects representing the stops associated with this journey booking.
|
50
|
+
*/
|
51
|
+
export type JourneyBookingType = {
|
52
|
+
type: Booking.BookingTypes;
|
53
|
+
summary: TariffSummary[];
|
54
|
+
info: Stop[];
|
55
|
+
};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
/**
|
2
|
+
* @description Represents information about a journey.
|
3
|
+
*
|
4
|
+
* @property {string} sellerName - The name of the seller offering the journey.
|
5
|
+
* @property {string} minimumTotalPrice - The minimum total price for booking the journey, meaning the price if all passenger choose the cheapest tariff.
|
6
|
+
* @property {number} remainingSeats - The number of remaining seats for the journey.
|
7
|
+
* @property {number} totalNumberOfSeats - The total number of seats for the journey (including booked seats).
|
8
|
+
* @property {string} bookingProcessMessage - Optional message to be displayed to the user when booking this journey.
|
9
|
+
* @property {boolean} isBookable - Indicates whether the journey is bookable (true) or not (false).
|
10
|
+
*/
|
11
|
+
export type JourneyInfo = {
|
12
|
+
sellerName: string;
|
13
|
+
minimumTotalPrice: string;
|
14
|
+
remainingSeats: number;
|
15
|
+
totalNumberOfSeats: number;
|
16
|
+
bookingProcessMessage: string;
|
17
|
+
isBookable: boolean;
|
18
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { Booking } from "../../booking/booking";
|
2
|
+
import { JourneyInfo } from "./JourneyInfo";
|
3
|
+
import { Stop } from "./Stop";
|
4
|
+
import { Trip } from "./Trip";
|
5
|
+
export type JourneySearchRequest = {
|
6
|
+
departureStopName: string | undefined;
|
7
|
+
destinationStopName: string | undefined;
|
8
|
+
passengersNumber: number;
|
9
|
+
date: string;
|
10
|
+
roundTripDate: string | null;
|
11
|
+
currency: Booking.Currencies;
|
12
|
+
isRoundtrip: boolean;
|
13
|
+
};
|
14
|
+
export declare const DEFAULT_JOURNEY_SEARCH: JourneySearchRequest;
|
15
|
+
export type JourneySearchResult = {
|
16
|
+
stops: Stop[];
|
17
|
+
info: JourneyInfo;
|
18
|
+
trips: Trip[];
|
19
|
+
};
|
@@ -1,13 +1,15 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
4
|
-
var
|
5
|
-
exports.
|
3
|
+
exports.DEFAULT_JOURNEY_SEARCH = void 0;
|
4
|
+
var booking_1 = require("../../booking/booking");
|
5
|
+
exports.DEFAULT_JOURNEY_SEARCH = {
|
6
6
|
departureStopName: "",
|
7
7
|
destinationStopName: "",
|
8
8
|
passengersNumber: 1,
|
9
|
-
date: new Date(Date.UTC(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), 0, 1))
|
9
|
+
date: new Date(Date.UTC(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), 0, 1))
|
10
|
+
.toISOString()
|
11
|
+
.slice(0, -1),
|
10
12
|
roundTripDate: null,
|
11
|
-
currency:
|
13
|
+
currency: booking_1.Booking.Currencies.EUR,
|
12
14
|
isRoundtrip: false,
|
13
15
|
};
|