@admin-layout/tailwind-travel-pro 12.0.16-alpha.7
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/LICENSE +21 -0
- package/lib/components/CardList.d.ts +61 -0
- package/lib/components/CardList.d.ts.map +1 -0
- package/lib/components/CardList.js +43 -0
- package/lib/components/CardList.js.map +1 -0
- package/lib/components/CategoriesTypeList.d.ts +29 -0
- package/lib/components/CategoriesTypeList.d.ts.map +1 -0
- package/lib/components/CategoriesTypeList.js +139 -0
- package/lib/components/CategoriesTypeList.js.map +1 -0
- package/lib/components/LazyLoadingGoogleMarker.d.ts +83 -0
- package/lib/components/LazyLoadingGoogleMarker.d.ts.map +1 -0
- package/lib/components/LazyLoadingGoogleMarker.js +107 -0
- package/lib/components/LazyLoadingGoogleMarker.js.map +1 -0
- package/lib/components/Pagination.d.ts +6 -0
- package/lib/components/Pagination.d.ts.map +1 -0
- package/lib/components/Pagination.js +56 -0
- package/lib/components/Pagination.js.map +1 -0
- package/lib/components/ParamSearchResultContainer.d.ts +99 -0
- package/lib/components/ParamSearchResultContainer.d.ts.map +1 -0
- package/lib/components/ParamSearchResultContainer.js +120 -0
- package/lib/components/ParamSearchResultContainer.js.map +1 -0
- package/lib/components/PropertyCard.d.ts +24 -0
- package/lib/components/PropertyCard.d.ts.map +1 -0
- package/lib/components/PropertyCard.js +423 -0
- package/lib/components/PropertyCard.js.map +1 -0
- package/lib/components/PropertyCardOnMap.d.ts +10 -0
- package/lib/components/PropertyCardOnMap.d.ts.map +1 -0
- package/lib/components/PropertyCardOnMap.js +108 -0
- package/lib/components/PropertyCardOnMap.js.map +1 -0
- package/lib/components/VehicleCard/PricePopover.d.ts +8 -0
- package/lib/components/VehicleCard/PricePopover.d.ts.map +1 -0
- package/lib/components/VehicleCard/PricePopover.js +98 -0
- package/lib/components/VehicleCard/PricePopover.js.map +1 -0
- package/lib/components/VehicleCard/VehicleBadge.d.ts +7 -0
- package/lib/components/VehicleCard/VehicleBadge.d.ts.map +1 -0
- package/lib/components/VehicleCard/VehicleFeature.d.ts +9 -0
- package/lib/components/VehicleCard/VehicleFeature.d.ts.map +1 -0
- package/lib/components/VehicleCard/VehicleFeature.js +22 -0
- package/lib/components/VehicleCard/VehicleFeature.js.map +1 -0
- package/lib/components/VehicleCard/types.d.ts +59 -0
- package/lib/components/VehicleCard/types.d.ts.map +1 -0
- package/lib/components/VehicleCard.d.ts +15 -0
- package/lib/components/VehicleCard.d.ts.map +1 -0
- package/lib/components/VehicleCard.js +166 -0
- package/lib/components/VehicleCard.js.map +1 -0
- package/lib/components/VehicleCardList.d.ts +14 -0
- package/lib/components/VehicleCardList.d.ts.map +1 -0
- package/lib/components/VehicleCardList.js +38 -0
- package/lib/components/VehicleCardList.js.map +1 -0
- package/lib/components/VehicleParamSearchResultContainer.d.ts +90 -0
- package/lib/components/VehicleParamSearchResultContainer.d.ts.map +1 -0
- package/lib/components/icons/LocationIcon.d.ts +7 -0
- package/lib/components/icons/LocationIcon.d.ts.map +1 -0
- package/lib/components/icons/LocationIcon.js +18 -0
- package/lib/components/icons/LocationIcon.js.map +1 -0
- package/lib/components/icons/index.d.ts +2 -0
- package/lib/components/icons/index.d.ts.map +1 -0
- package/lib/components/index.d.ts +10 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/config/analytics-config.d.ts +59 -0
- package/lib/config/analytics-config.d.ts.map +1 -0
- package/lib/config/constants.d.ts +7 -0
- package/lib/config/constants.d.ts.map +1 -0
- package/lib/config/constants.js +6 -0
- package/lib/config/constants.js.map +1 -0
- package/lib/config/env-config.d.ts +19 -0
- package/lib/config/env-config.d.ts.map +1 -0
- package/lib/config/env-config.js +70 -0
- package/lib/config/env-config.js.map +1 -0
- package/lib/config/index.d.ts +3 -0
- package/lib/config/index.d.ts.map +1 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/index.d.ts.map +1 -0
- package/lib/hooks/use-get-current-lat-long.d.ts +18 -0
- package/lib/hooks/use-get-current-lat-long.d.ts.map +1 -0
- package/lib/hooks/use-get-current-lat-long.js +29 -0
- package/lib/hooks/use-get-current-lat-long.js.map +1 -0
- package/lib/hooks/useWindowSize.d.ts +5 -0
- package/lib/hooks/useWindowSize.d.ts.map +1 -0
- package/lib/hooks/useWindowSize.js +20 -0
- package/lib/hooks/useWindowSize.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces/travel.d.ts +6 -0
- package/lib/interfaces/travel.d.ts.map +1 -0
- package/lib/interfaces/travel.js +6 -0
- package/lib/interfaces/travel.js.map +1 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts +6 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.js +121 -0
- package/lib/middlewares/airbnbDatasourcesMiddleware.js.map +1 -0
- package/lib/middlewares/bookingCarRentalMiddleware.d.ts +6 -0
- package/lib/middlewares/bookingCarRentalMiddleware.d.ts.map +1 -0
- package/lib/middlewares/bookingCarRentalMiddleware.js +109 -0
- package/lib/middlewares/bookingCarRentalMiddleware.js.map +1 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.d.ts +7 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.js +137 -0
- package/lib/middlewares/bookingDatasourcesMiddleware.js.map +1 -0
- package/lib/middlewares/datasourcesMiddleware.d.ts +6 -0
- package/lib/middlewares/datasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/datasourcesMiddleware.js +29 -0
- package/lib/middlewares/datasourcesMiddleware.js.map +1 -0
- package/lib/middlewares/index.d.ts +6 -0
- package/lib/middlewares/index.d.ts.map +1 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts +7 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts.map +1 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.js +95 -0
- package/lib/middlewares/pricelineDatasourcesMiddleware.js.map +1 -0
- package/lib/routes.json +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import {config}from'../config/env-config.js';const middleware = async ({
|
|
2
|
+
context,
|
|
3
|
+
request,
|
|
4
|
+
params
|
|
5
|
+
}, dataLoader, next) => {
|
|
6
|
+
const {
|
|
7
|
+
apolloClient,
|
|
8
|
+
logger
|
|
9
|
+
} = context;
|
|
10
|
+
let bookingQuery;
|
|
11
|
+
try {
|
|
12
|
+
// Create a promise that will fetch the Booking.com data
|
|
13
|
+
const url = new URL(request.url);
|
|
14
|
+
const searchParams = url.searchParams;
|
|
15
|
+
const from = searchParams.get('from') ? new Date(searchParams.get('from')) : null;
|
|
16
|
+
const to = searchParams.get('to') ? new Date(searchParams.get('to')) : null;
|
|
17
|
+
const adults = parseInt(searchParams.get('adults') || '0', 10);
|
|
18
|
+
const children = parseInt(searchParams.get('children') || '0', 10);
|
|
19
|
+
const coordinates = searchParams.get('coordinates') ? JSON.parse(searchParams.get('coordinates')) : {};
|
|
20
|
+
const page = parseInt(searchParams.get('page') || '1', 10);
|
|
21
|
+
const infants = parseInt(searchParams.get('infants') || '0', 10);
|
|
22
|
+
const maxPrice = parseInt(searchParams.get('priceSliderValue') || '0', 10);
|
|
23
|
+
const latitude = coordinates.lat || '';
|
|
24
|
+
const longitude = coordinates.lng || '';
|
|
25
|
+
const radiusParamValue = parseInt(searchParams.get('distanceSliderValue') || '0', 10);
|
|
26
|
+
const zoom = parseInt(searchParams.get('zoom') || '12', 10);
|
|
27
|
+
// Calculate the radius based on the zoom level
|
|
28
|
+
// Assuming zoom level 12 is the closest view and 1 is the farthest
|
|
29
|
+
const calculateRadius = zoomLevel => {
|
|
30
|
+
const maxZoom = 12;
|
|
31
|
+
const minZoom = 1;
|
|
32
|
+
const minRadius = 10; // Minimum radius when fully zoomed in
|
|
33
|
+
const maxRadius = 360; // Maximum radius when fully zoomed out
|
|
34
|
+
// Linear interpolation between minRadius and maxRadius based on zoom level
|
|
35
|
+
const radius = minRadius + (maxZoom - zoomLevel) / (maxZoom - minZoom) * (maxRadius - minRadius);
|
|
36
|
+
return Math.round(Math.max(minRadius, Math.min(maxRadius, radius))); // Ensure radius is within bounds
|
|
37
|
+
};
|
|
38
|
+
const radius = calculateRadius(zoom);
|
|
39
|
+
// Parse viewport coordinates
|
|
40
|
+
let viewport = {};
|
|
41
|
+
try {
|
|
42
|
+
viewport = searchParams.get('viewport') ? JSON.parse(searchParams.get('viewport')) : null;
|
|
43
|
+
} catch (e) {
|
|
44
|
+
logger.warn('Failed to parse viewport parameter');
|
|
45
|
+
}
|
|
46
|
+
bookingQuery = new Promise(async (resolve, reject) => {
|
|
47
|
+
try {
|
|
48
|
+
const sampleParams = {
|
|
49
|
+
checkIn: from || '',
|
|
50
|
+
checkOut: to || '',
|
|
51
|
+
guest: adults + children || 1
|
|
52
|
+
};
|
|
53
|
+
const {
|
|
54
|
+
checkIn,
|
|
55
|
+
checkOut,
|
|
56
|
+
guest
|
|
57
|
+
} = sampleParams;
|
|
58
|
+
const rapidApiKey = config.BOOKING_COM_API_KEY;
|
|
59
|
+
const response = await fetch('https://booking-com15.p.rapidapi.com/api/v1/hotels/searchHotelsByCoordinates?' + new URLSearchParams({
|
|
60
|
+
latitude: latitude.toString(),
|
|
61
|
+
longitude: longitude.toString(),
|
|
62
|
+
arrival_date: from ? from.toISOString().split('T')[0] : '',
|
|
63
|
+
departure_date: to ? to.toISOString().split('T')[0] : '',
|
|
64
|
+
adults: guest.toString(),
|
|
65
|
+
page_number: page.toString(),
|
|
66
|
+
languagecode: 'en-us',
|
|
67
|
+
radius: radiusParamValue > 0 ? radiusParamValue.toString() : radius.toString(),
|
|
68
|
+
...(maxPrice > 0 ? {
|
|
69
|
+
price_max: maxPrice.toString()
|
|
70
|
+
} : {})
|
|
71
|
+
}), {
|
|
72
|
+
headers: {
|
|
73
|
+
'x-rapidapi-host': 'booking-com15.p.rapidapi.com',
|
|
74
|
+
'x-rapidapi-key': rapidApiKey
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const responseData = await response.json();
|
|
78
|
+
// Check if responseData.data is not present and responseData.message exists
|
|
79
|
+
if (!responseData.data && responseData.message) {
|
|
80
|
+
logger.error('Booking.com API error:', JSON.stringify(responseData.message));
|
|
81
|
+
// Instead of throwing, return empty results
|
|
82
|
+
const emptyResponse = {
|
|
83
|
+
data: {
|
|
84
|
+
count: 0,
|
|
85
|
+
result: []
|
|
86
|
+
},
|
|
87
|
+
pagination: {
|
|
88
|
+
currentPage: page,
|
|
89
|
+
totalPages: 0,
|
|
90
|
+
totalCount: 0
|
|
91
|
+
},
|
|
92
|
+
metadata: {
|
|
93
|
+
viewport: viewport,
|
|
94
|
+
filters: {
|
|
95
|
+
adults,
|
|
96
|
+
children,
|
|
97
|
+
infants
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
resolve(emptyResponse);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const restructuredData = {
|
|
105
|
+
...responseData,
|
|
106
|
+
pagination: {
|
|
107
|
+
currentPage: page,
|
|
108
|
+
totalPages: Math.ceil(responseData.data.count / config.BOOKING_COM_DEFAULT_PAGE_SIZE),
|
|
109
|
+
// Use the calculated totalPages
|
|
110
|
+
totalCount: responseData.data.count
|
|
111
|
+
},
|
|
112
|
+
metadata: {
|
|
113
|
+
viewport: viewport,
|
|
114
|
+
filters: {
|
|
115
|
+
adults,
|
|
116
|
+
children,
|
|
117
|
+
infants
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
data: responseData.data.result || [] // Assuming the Booking.com API returns results in 'result' field
|
|
121
|
+
};
|
|
122
|
+
resolve(restructuredData);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
reject(error);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
logger.info('Booking.com properties data loaded and cached');
|
|
128
|
+
// Ensure componentData is initialized
|
|
129
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
130
|
+
// Store as an async function that returns the promise
|
|
131
|
+
dataLoader.componentData.bookingResults = async () => await bookingQuery;
|
|
132
|
+
await next();
|
|
133
|
+
} catch (error) {
|
|
134
|
+
logger.error(error, 'Failed to load Booking.com properties data:');
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
};export{middleware};//# sourceMappingURL=bookingDatasourcesMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookingDatasourcesMiddleware.js","sources":["../../src/middlewares/bookingDatasourcesMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasourcesMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/datasourcesMiddleware.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAU;;;;CAA4B,EAAE,eAAU,EAAE,SAAI,kBAsB9E,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const middleware = async ({
|
|
2
|
+
context,
|
|
3
|
+
request,
|
|
4
|
+
params
|
|
5
|
+
}, dataLoader, next) => {
|
|
6
|
+
const {
|
|
7
|
+
apolloClient,
|
|
8
|
+
logger
|
|
9
|
+
} = context;
|
|
10
|
+
let query1;
|
|
11
|
+
try {
|
|
12
|
+
query1 = new Promise(resolve => {
|
|
13
|
+
setTimeout(() => {
|
|
14
|
+
resolve({
|
|
15
|
+
data: 'Airbnb data'
|
|
16
|
+
});
|
|
17
|
+
}, 1000);
|
|
18
|
+
});
|
|
19
|
+
logger.info('Accommodation data loaded and cached');
|
|
20
|
+
// Ensure componentData is initialized
|
|
21
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
22
|
+
// Await the promise to ensure it's resolved before assigning
|
|
23
|
+
dataLoader.componentData.airbnb = async () => await query1;
|
|
24
|
+
await next(); // Proceed to next middleware or route handler
|
|
25
|
+
} catch (error) {
|
|
26
|
+
logger.error(error, 'Failed to load accommodation data:');
|
|
27
|
+
// Handle errors appropriately
|
|
28
|
+
}
|
|
29
|
+
};export{middleware};//# sourceMappingURL=datasourcesMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasourcesMiddleware.js","sources":["../../src/middlewares/datasourcesMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAa,MAAA,UAAU,GAAG,OAAO;AAC7B,EAAA,OAAA;AACA,EAAA;AACA,EAAA;AACI,CAAA,EAAA,UAAA,MAAa,KAAA;;AAEL,IAAA,YAAA;;AAER,GAAA,GAAA,OAAG;AAEH,EAAA,IAAA,MAAA;;UAGU,GAAA,IAAA,eAAc,IAAG;gBACkC,CAAA,MAAA;QAC7D,OAAU,CAAA;AAEV,UAAA,IAAM,EAAI;SACb,CAAA;OAAQ,EAAA,IAAA,CAAA;AACL,KAAA,CAAA;UAC8B,CAAA,IAAA,CAAA,sCAAA,CAAA;;AAEtC,IAAE,UAAA,CAAA,aAAA,GAAA,UAAA,CAAA,aAAA,IAAA,EAAA;;;;;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { middleware as airbnbDatasourcesMiddleware } from './airbnbDatasourcesMiddleware';
|
|
2
|
+
export { middleware as bookingCarRentalDatasourcesMiddleware } from './bookingCarRentalMiddleware';
|
|
3
|
+
export { middleware as bookingDatasourcesMiddleware } from './bookingDatasourcesMiddleware';
|
|
4
|
+
export { middleware as datasourcesMiddleware } from './datasourcesMiddleware';
|
|
5
|
+
export { middleware as pricelineDatasourcesMiddleware } from './pricelineDatasourcesMiddleware';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,UAAU,IAAI,qCAAqC,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,UAAU,IAAI,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,UAAU,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,UAAU,IAAI,8BAA8B,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricelineDatasourcesMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/pricelineDatasourcesMiddleware.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,UAAU,GAAU;;;;CAA4B,EAAE,eAAU,EAAE,SAAI,kBAkGvE,CAAC;AACF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {config}from'../config/env-config.js';import axios from'axios';const middleware = async ({
|
|
2
|
+
context,
|
|
3
|
+
request,
|
|
4
|
+
params
|
|
5
|
+
}, dataLoader, next) => {
|
|
6
|
+
const {
|
|
7
|
+
logger
|
|
8
|
+
} = context;
|
|
9
|
+
let pricelineQuery;
|
|
10
|
+
try {
|
|
11
|
+
const url = new URL(request.url);
|
|
12
|
+
const searchParams = url.searchParams;
|
|
13
|
+
const coordinates = searchParams.get('coordinates') ? JSON.parse(searchParams.get('coordinates')) : {};
|
|
14
|
+
const latitude = coordinates?.lat || JSON.parse(config.DEFAULT_COORDINATES).lat;
|
|
15
|
+
const longitude = coordinates?.lng || JSON.parse(config.DEFAULT_COORDINATES).lng;
|
|
16
|
+
const page = parseInt(searchParams.get('page') || '1', 10);
|
|
17
|
+
const limit = 100;
|
|
18
|
+
const offset = page * limit;
|
|
19
|
+
const from = searchParams.get('from') ? new Date(searchParams.get('from')) : null;
|
|
20
|
+
const to = searchParams.get('to') ? new Date(searchParams.get('to')) : null;
|
|
21
|
+
pricelineQuery = new Promise(async resolve => {
|
|
22
|
+
try {
|
|
23
|
+
const options = {
|
|
24
|
+
method: 'GET',
|
|
25
|
+
url: 'https://priceline-com-provider.p.rapidapi.com/v2/hotels/expressResults',
|
|
26
|
+
params: {
|
|
27
|
+
limit: offset,
|
|
28
|
+
check_in: from ? from.toISOString().split('T')[0] : '',
|
|
29
|
+
check_out: to ? to.toISOString().split('T')[0] : '',
|
|
30
|
+
latitude: latitude,
|
|
31
|
+
longitude: longitude,
|
|
32
|
+
output_version: '3'
|
|
33
|
+
},
|
|
34
|
+
headers: {
|
|
35
|
+
'x-rapidapi-key': config.PRICELINE_API_KEY,
|
|
36
|
+
'x-rapidapi-host': 'priceline-com-provider.p.rapidapi.com',
|
|
37
|
+
Accept: 'application/json'
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const response = await axios.request(options);
|
|
41
|
+
// Handle API error response
|
|
42
|
+
if (!response.data || response.data['getHotelExpress.Results'].error) {
|
|
43
|
+
logger.error('Priceline API error:', response.data?.['getHotelExpress.Results']?.error || 'Unknown error');
|
|
44
|
+
resolve({
|
|
45
|
+
pagination: {
|
|
46
|
+
currentPage: page,
|
|
47
|
+
totalCount: 0,
|
|
48
|
+
totalPages: 0
|
|
49
|
+
},
|
|
50
|
+
data: []
|
|
51
|
+
});
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const restructuredData = {
|
|
55
|
+
...response.data,
|
|
56
|
+
pagination: {
|
|
57
|
+
currentPage: page,
|
|
58
|
+
totalCount: response.data['getHotelExpress.Results'].results.results_data.rate_count,
|
|
59
|
+
totalPages: Math.ceil(response.data['getHotelExpress.Results'].results.results_data.rate_count / limit)
|
|
60
|
+
},
|
|
61
|
+
data: response.data['getHotelExpress.Results'].results?.hotel_data || []
|
|
62
|
+
};
|
|
63
|
+
resolve(restructuredData);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
// Handle any other errors (network, parsing, etc.)
|
|
66
|
+
logger.error('Error in Priceline API request:', error);
|
|
67
|
+
resolve({
|
|
68
|
+
pagination: {
|
|
69
|
+
currentPage: page,
|
|
70
|
+
totalCount: 0,
|
|
71
|
+
totalPages: 0
|
|
72
|
+
},
|
|
73
|
+
data: []
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
logger.info('Priceline nearby hotels data loaded and cached');
|
|
78
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
79
|
+
dataLoader.componentData.pricelineResults = async () => await pricelineQuery;
|
|
80
|
+
await next();
|
|
81
|
+
} catch (error) {
|
|
82
|
+
// Handle setup errors
|
|
83
|
+
logger.error('Failed to load Priceline nearby hotels data:', error);
|
|
84
|
+
dataLoader.componentData = dataLoader.componentData || {};
|
|
85
|
+
dataLoader.componentData.pricelineResults = async () => ({
|
|
86
|
+
pagination: {
|
|
87
|
+
currentPage: 1,
|
|
88
|
+
totalCount: 0,
|
|
89
|
+
totalPages: 0
|
|
90
|
+
},
|
|
91
|
+
data: []
|
|
92
|
+
});
|
|
93
|
+
await next();
|
|
94
|
+
}
|
|
95
|
+
};export{middleware};//# sourceMappingURL=pricelineDatasourcesMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricelineDatasourcesMiddleware.js","sources":["../../src/middlewares/pricelineDatasourcesMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/lib/routes.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@admin-layout/tailwind-travel-pro",
|
|
3
|
+
"version": "12.0.16-alpha.7",
|
|
4
|
+
"description": "Sample core for higher packages to depend on",
|
|
5
|
+
"license": "ISC",
|
|
6
|
+
"author": "CDMBase LLC",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "lib/index.js",
|
|
9
|
+
"module": "lib/index.js",
|
|
10
|
+
"typings": "lib/index.d.ts",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "yarn build:clean && yarn build:lib",
|
|
13
|
+
"build:clean": "rimraf lib",
|
|
14
|
+
"build:lib": "rollup -c rollup.config.mjs",
|
|
15
|
+
"build:lib:watch": "yarn build:lib -- --watch",
|
|
16
|
+
"jest": "./node_modules/.bin/jest",
|
|
17
|
+
"prepublish": "yarn build",
|
|
18
|
+
"test": "cross-env ENV_FILE=../../config/test/test.env jest",
|
|
19
|
+
"test:debug": "npm test -- --runInBand",
|
|
20
|
+
"test:watch": "npm test -- --watch",
|
|
21
|
+
"watch": "yarn build:lib:watch"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@admin-layout/tailwind-design-pro": "12.0.16-alpha.7",
|
|
25
|
+
"@admin-layout/tailwind-ui": "12.0.16-alpha.7",
|
|
26
|
+
"@cdmbase/react-splide": "^0.7.12",
|
|
27
|
+
"@react-google-maps/api": "^2.20.7",
|
|
28
|
+
"@vis.gl/react-google-maps": "^1.5.4",
|
|
29
|
+
"react-infinite-scroll-component": "^6.1.0",
|
|
30
|
+
"react-rating": "^2.0.5"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@adminide-stack/extension-api": "^12.0.4-alpha.35",
|
|
34
|
+
"@tailwindcss/aspect-ratio": "^0.4.2",
|
|
35
|
+
"@tailwindcss/forms": "^0.5.4",
|
|
36
|
+
"@tailwindcss/typography": "^0.5.9",
|
|
37
|
+
"tailwindcss": "^3.3.3"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"inversify": "*"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"typescript": {
|
|
46
|
+
"definition": "lib/index.d.ts"
|
|
47
|
+
},
|
|
48
|
+
"gitHead": "dc4d290fb02b1a5c8512168953772c8aeeec585b"
|
|
49
|
+
}
|