mirror of
https://github.com/mblanke/holiday-travel-app.git
synced 2026-03-01 05:20:22 -05:00
76 lines
69 KiB
JavaScript
76 lines
69 KiB
JavaScript
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
(() => {
|
|
var exports = {};
|
|
exports.id = "app/api/resort-compare/route";
|
|
exports.ids = ["app/api/resort-compare/route"];
|
|
exports.modules = {
|
|
|
|
/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
|
|
/*!*************************************************************************!*\
|
|
!*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
|
|
\*************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "next/dist/compiled/next-server/app-route.runtime.dev.js":
|
|
/*!**************************************************************************!*\
|
|
!*** external "next/dist/compiled/next-server/app-route.runtime.dev.js" ***!
|
|
\**************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
module.exports = require("next/dist/compiled/next-server/app-route.runtime.dev.js");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!":
|
|
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***!
|
|
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ requestAsyncStorage: () => (/* binding */ requestAsyncStorage),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ serverHooks: () => (/* binding */ serverHooks),\n/* harmony export */ staticGenerationAsyncStorage: () => (/* binding */ staticGenerationAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-route/module.compiled */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var D_Projects_Dev_Holiday_Travel_App_app_api_resort_compare_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/api/resort-compare/route.ts */ \"(rsc)/./app/api/resort-compare/route.ts\");\n\n\n\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppRouteRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_ROUTE,\n page: \"/api/resort-compare/route\",\n pathname: \"/api/resort-compare\",\n filename: \"route\",\n bundlePath: \"app/api/resort-compare/route\"\n },\n resolvedPagePath: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\api\\\\resort-compare\\\\route.ts\",\n nextConfigOutput,\n userland: D_Projects_Dev_Holiday_Travel_App_app_api_resort_compare_route_ts__WEBPACK_IMPORTED_MODULE_3__\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { requestAsyncStorage, staticGenerationAsyncStorage, serverHooks } = routeModule;\nconst originalPathname = \"/api/resort-compare/route\";\nfunction patchFetch() {\n return (0,next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__.patchFetch)({\n serverHooks,\n staticGenerationAsyncStorage\n });\n}\n\n\n//# sourceMappingURL=app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZhcGklMkZyZXNvcnQtY29tcGFyZSUyRnJvdXRlJnBhZ2U9JTJGYXBpJTJGcmVzb3J0LWNvbXBhcmUlMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZyZXNvcnQtY29tcGFyZSUyRnJvdXRlLnRzJmFwcERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJTVDYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBc0c7QUFDdkM7QUFDYztBQUN5QjtBQUN0RztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0hBQW1CO0FBQzNDO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsWUFBWTtBQUNaLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlFQUFpRTtBQUN6RTtBQUNBO0FBQ0EsV0FBVyw0RUFBVztBQUN0QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ3VIOztBQUV2SCIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvPzUwY2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwUm91dGVSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuY29tcGlsZWRcIjtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1raW5kXCI7XG5pbXBvcnQgeyBwYXRjaEZldGNoIGFzIF9wYXRjaEZldGNoIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3BhdGNoLWZldGNoXCI7XG5pbXBvcnQgKiBhcyB1c2VybGFuZCBmcm9tIFwiRDpcXFxcUHJvamVjdHNcXFxcRGV2XFxcXEhvbGlkYXkgVHJhdmVsIEFwcFxcXFxhcHBcXFxcYXBpXFxcXHJlc29ydC1jb21wYXJlXFxcXHJvdXRlLnRzXCI7XG4vLyBXZSBpbmplY3QgdGhlIG5leHRDb25maWdPdXRwdXQgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IG5leHRDb25maWdPdXRwdXQgPSBcIlwiXG5jb25zdCByb3V0ZU1vZHVsZSA9IG5ldyBBcHBSb3V0ZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUk9VVEUsXG4gICAgICAgIHBhZ2U6IFwiL2FwaS9yZXNvcnQtY29tcGFyZS9yb3V0ZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvYXBpL3Jlc29ydC1jb21wYXJlXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcInJvdXRlXCIsXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiYXBwL2FwaS9yZXNvcnQtY29tcGFyZS9yb3V0ZVwiXG4gICAgfSxcbiAgICByZXNvbHZlZFBhZ2VQYXRoOiBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcYXBwXFxcXGFwaVxcXFxyZXNvcnQtY29tcGFyZVxcXFxyb3V0ZS50c1wiLFxuICAgIG5leHRDb25maWdPdXRwdXQsXG4gICAgdXNlcmxhbmRcbn0pO1xuLy8gUHVsbCBvdXQgdGhlIGV4cG9ydHMgdGhhdCB3ZSBuZWVkIHRvIGV4cG9zZSBmcm9tIHRoZSBtb2R1bGUuIFRoaXMgc2hvdWxkXG4vLyBiZSBlbGltaW5hdGVkIHdoZW4gd2UndmUgbW92ZWQgdGhlIG90aGVyIHJvdXRlcyB0byB0aGUgbmV3IGZvcm1hdC4gVGhlc2Vcbi8vIGFyZSB1c2VkIHRvIGhvb2sgaW50byB0aGUgcm91dGUuXG5jb25zdCB7IHJlcXVlc3RBc3luY1N0b3JhZ2UsIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UsIHNlcnZlckhvb2tzIH0gPSByb3V0ZU1vZHVsZTtcbmNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9hcGkvcmVzb3J0LWNvbXBhcmUvcm91dGVcIjtcbmZ1bmN0aW9uIHBhdGNoRmV0Y2goKSB7XG4gICAgcmV0dXJuIF9wYXRjaEZldGNoKHtcbiAgICAgICAgc2VydmVySG9va3MsXG4gICAgICAgIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2VcbiAgICB9KTtcbn1cbmV4cG9ydCB7IHJvdXRlTW9kdWxlLCByZXF1ZXN0QXN5bmNTdG9yYWdlLCBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlLCBzZXJ2ZXJIb29rcywgb3JpZ2luYWxQYXRobmFtZSwgcGF0Y2hGZXRjaCwgIH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1yb3V0ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./app/api/resort-compare/route.ts":
|
|
/*!*****************************************!*\
|
|
!*** ./app/api/resort-compare/route.ts ***!
|
|
\*****************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ POST: () => (/* binding */ POST)\n/* harmony export */ });\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zod */ \"(rsc)/./node_modules/zod/v3/types.js\");\n/* harmony import */ var _lib_resorts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/lib/resorts */ \"(rsc)/./lib/resorts.ts\");\n/* harmony import */ var _barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,format!=!date-fns */ \"(rsc)/./node_modules/date-fns/format.mjs\");\n/* harmony import */ var _barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,format!=!date-fns */ \"(rsc)/./node_modules/date-fns/addDays.mjs\");\n\n\n\nconst schema = zod__WEBPACK_IMPORTED_MODULE_1__.object({\n resorts: zod__WEBPACK_IMPORTED_MODULE_1__.array(zod__WEBPACK_IMPORTED_MODULE_1__.string()).nonempty(),\n departureDate: zod__WEBPACK_IMPORTED_MODULE_1__.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n origin: zod__WEBPACK_IMPORTED_MODULE_1__.string().min(3).max(4).default(\"YOW\"),\n tripLength: zod__WEBPACK_IMPORTED_MODULE_1__.number().int().positive().default(7),\n budget: zod__WEBPACK_IMPORTED_MODULE_1__.number().positive().optional(),\n contingencyPercent: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(50).optional().default(15),\n preferences: zod__WEBPACK_IMPORTED_MODULE_1__.object({\n beach: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n pool: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n golf: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n spa: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n food: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n nightlife: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n shopping: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n culture: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n outdoor: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n family: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional()\n }).optional()\n});\nfunction buildFlightLinks(origin, destination, departureDate, returnDate) {\n const depFormatted = departureDate.replace(/-/g, \"\");\n const retFormatted = returnDate.replace(/-/g, \"\");\n return {\n skyscanner: `https://www.skyscanner.ca/transport/flights/${origin.toLowerCase()}/${destination.toLowerCase()}/${depFormatted}/${retFormatted}/`,\n googleFlights: `https://www.google.com/travel/flights?q=${encodeURIComponent(`flights from ${origin} to ${destination} ${departureDate} to ${returnDate}`)}`,\n airCanada: `https://www.aircanada.com/ca/en/aco/home/book/travel.html?${new URLSearchParams({\n org1: origin.toUpperCase(),\n dest1: destination.toUpperCase(),\n departureDate1: departureDate,\n returnDate1: returnDate,\n tripType: \"2\",\n lang: \"en-CA\"\n }).toString()}`\n };\n}\nfunction estimateResortCost(priceRange, nights) {\n // CANADIAN ALL-INCLUSIVE PACKAGE PRICING (per person, CAD)\n // Based on real travel agent quotes for 7-night packages from Ottawa\n // Includes: flights, accommodations, transfers, taxes\n const packageRanges = {\n \"$\": {\n min: 1200,\n max: 1600\n },\n \"$$\": {\n min: 1600,\n max: 2000\n },\n \"$$$\": {\n min: 2000,\n max: 2400\n },\n \"$$$$\": {\n min: 2400,\n max: 2800\n },\n \"$$$$$\": {\n min: 2800,\n max: 3500\n } // Luxury packages\n };\n // Adjust for trip length (base is 7 nights)\n const baseDays = 7;\n const lengthMultiplier = nights / baseDays;\n const range = packageRanges[priceRange] || packageRanges[\"$$$\"];\n return {\n min: Math.round(range.min * lengthMultiplier),\n max: Math.round(range.max * lengthMultiplier)\n };\n}\nasync function POST(req) {\n try {\n const body = await req.json();\n const parsed = schema.parse(body);\n const comparisons = [];\n const notFound = [];\n // Calculate return date\n const returnDate = (0,_barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_2__.format)((0,_barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_3__.addDays)(new Date(parsed.departureDate), parsed.tripLength), \"yyyy-MM-dd\");\n for (const resortName of parsed.resorts){\n const resort = (0,_lib_resorts__WEBPACK_IMPORTED_MODULE_0__.findResort)(resortName);\n if (!resort) {\n notFound.push(resortName);\n continue;\n }\n const matchScore = (0,_lib_resorts__WEBPACK_IMPORTED_MODULE_0__.calculateResortScore)(resort, parsed.preferences);\n const flightLinks = buildFlightLinks(parsed.origin, resort.airportCode, parsed.departureDate, returnDate);\n // Package pricing (per person, includes flights)\n const packageCost = estimateResortCost(resort.priceRange || \"$$$\", parsed.tripLength);\n // Total cost for 2 people (standard package assumption)\n const estimatedTotalMin = packageCost.min * 2;\n const estimatedTotalMax = packageCost.max * 2;\n // Per person cost for display\n const estimatedPerPerson = `$${packageCost.min}-$${packageCost.max} per person`;\n // Budget analysis\n let withinBudget = true;\n let budgetStatus = \"Within Budget\";\n let overBudgetAmount = 0;\n if (parsed.budget) {\n const contingencyAmount = parsed.budget * ((parsed.contingencyPercent || 15) / 100);\n const budgetWithContingency = parsed.budget + contingencyAmount;\n if (estimatedTotalMin > parsed.budget) {\n overBudgetAmount = estimatedTotalMin - parsed.budget;\n // Check if high score justifies going over budget\n if (matchScore >= 1800 && estimatedTotalMin <= budgetWithContingency) {\n withinBudget = true;\n budgetStatus = `Over budget by $${overBudgetAmount.toFixed(0)} but HIGH MATCH (within ${parsed.contingencyPercent}% contingency)`;\n } else if (estimatedTotalMin <= budgetWithContingency) {\n withinBudget = true;\n budgetStatus = `Within ${parsed.contingencyPercent}% contingency (+$${overBudgetAmount.toFixed(0)})`;\n } else {\n withinBudget = false;\n budgetStatus = `Over budget by $${overBudgetAmount.toFixed(0)} (exceeds contingency)`;\n }\n } else {\n budgetStatus = `Under budget by $${(parsed.budget - estimatedTotalMin).toFixed(0)}`;\n }\n }\n comparisons.push({\n resort,\n matchScore,\n flightLinks,\n estimatedFlightPrice: estimatedPerPerson,\n estimatedFlightPriceMin: packageCost.min,\n estimatedFlightPriceMax: packageCost.max,\n estimatedTotalMin,\n estimatedTotalMax,\n withinBudget,\n budgetStatus,\n overBudgetAmount: overBudgetAmount > 0 ? overBudgetAmount : undefined\n });\n }\n // Sort by match score (highest first)\n comparisons.sort((a, b)=>b.matchScore - a.matchScore);\n // Filter by budget if specified (but include high-scoring resorts within contingency)\n let budgetFiltered = comparisons;\n if (parsed.budget) {\n budgetFiltered = comparisons.filter((c)=>c.withinBudget);\n }\n return new Response(JSON.stringify({\n comparisons: budgetFiltered,\n allComparisons: comparisons,\n notFound,\n budgetInfo: parsed.budget ? {\n budget: parsed.budget,\n contingencyPercent: parsed.contingencyPercent || 15,\n contingencyAmount: parsed.budget * ((parsed.contingencyPercent || 15) / 100),\n maxBudget: parsed.budget + parsed.budget * ((parsed.contingencyPercent || 15) / 100),\n withinBudgetCount: budgetFiltered.length,\n totalCount: comparisons.length,\n overBudgetCount: comparisons.length - budgetFiltered.length\n } : null,\n flightInfo: {\n origin: parsed.origin,\n departureDate: parsed.departureDate,\n returnDate,\n tripLength: parsed.tripLength\n },\n packageSites: [\n \"Sunwing Vacations\",\n \"Air Canada Vacations\",\n \"WestJet Vacations\",\n \"Air Transat Holidays\",\n \"RedTag.ca\"\n ],\n pricingNote: \"Estimates are for individual bookings (flight + resort). Package deals are typically 30-40% cheaper.\"\n }), {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n } catch (e) {\n return new Response(JSON.stringify({\n error: e?.message || \"Invalid payload\"\n }), {\n status: 400,\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvYXBpL3Jlc29ydC1jb21wYXJlL3JvdXRlLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ3dCO0FBQ3NEO0FBQ25DO0FBRTNDLE1BQU1LLFNBQVNMLHVDQUFRLENBQUM7SUFDdEJPLFNBQVNQLHNDQUFPLENBQUNBLHVDQUFRLElBQUlVLFFBQVE7SUFDckNDLGVBQWVYLHVDQUFRLEdBQUdZLEtBQUssQ0FBQztJQUNoQ0MsUUFBUWIsdUNBQVEsR0FBR2MsR0FBRyxDQUFDLEdBQUdDLEdBQUcsQ0FBQyxHQUFHQyxPQUFPLENBQUM7SUFDekNDLFlBQVlqQix1Q0FBUSxHQUFHbUIsR0FBRyxHQUFHQyxRQUFRLEdBQUdKLE9BQU8sQ0FBQztJQUNoREssUUFBUXJCLHVDQUFRLEdBQUdvQixRQUFRLEdBQUdFLFFBQVE7SUFDdENDLG9CQUFvQnZCLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUSxHQUFHTixPQUFPLENBQUM7SUFDakVRLGFBQWF4Qix1Q0FBUSxDQUFDO1FBQ3BCeUIsT0FBT3pCLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUN6Q0ksTUFBTTFCLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUN4Q0ssTUFBTTNCLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUN4Q00sS0FBSzVCLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUN2Q08sTUFBTTdCLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUN4Q1EsV0FBVzlCLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUM3Q1MsVUFBVS9CLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUM1Q1UsU0FBU2hDLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUMzQ1csU0FBU2pDLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtRQUMzQ1ksUUFBUWxDLHVDQUFRLEdBQUdjLEdBQUcsQ0FBQyxHQUFHQyxHQUFHLENBQUMsSUFBSU8sUUFBUTtJQUM1QyxHQUFHQSxRQUFRO0FBQ2I7QUFvQkEsU0FBU2EsaUJBQWlCdEIsTUFBYyxFQUFFdUIsV0FBbUIsRUFBRXpCLGFBQXFCLEVBQUUwQixVQUFrQjtJQUN0RyxNQUFNQyxlQUFlM0IsY0FBYzRCLE9BQU8sQ0FBQyxNQUFNO0lBQ2pELE1BQU1DLGVBQWVILFdBQVdFLE9BQU8sQ0FBQyxNQUFNO0lBRTlDLE9BQU87UUFDTEUsWUFBWSxDQUFDLDRDQUE0QyxFQUFFNUIsT0FBTzZCLFdBQVcsR0FBRyxDQUFDLEVBQUVOLFlBQVlNLFdBQVcsR0FBRyxDQUFDLEVBQUVKLGFBQWEsQ0FBQyxFQUFFRSxhQUFhLENBQUMsQ0FBQztRQUMvSUcsZUFBZSxDQUFDLHdDQUF3QyxFQUFFQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUvQixPQUFPLElBQUksRUFBRXVCLFlBQVksQ0FBQyxFQUFFekIsY0FBYyxJQUFJLEVBQUUwQixXQUFXLENBQUMsRUFBRSxDQUFDO1FBQzVKUSxXQUFXLENBQUMsMERBQTBELEVBQUUsSUFBSUMsZ0JBQWdCO1lBQzFGQyxNQUFNbEMsT0FBT21DLFdBQVc7WUFDeEJDLE9BQU9iLFlBQVlZLFdBQVc7WUFDOUJFLGdCQUFnQnZDO1lBQ2hCd0MsYUFBYWQ7WUFDYmUsVUFBVTtZQUNWQyxNQUFNO1FBQ1IsR0FBR0MsUUFBUSxHQUFHLENBQUM7SUFDakI7QUFDRjtBQUVBLFNBQVNDLG1CQUFtQkMsVUFBa0IsRUFBRUMsTUFBYztJQUM1RCwyREFBMkQ7SUFDM0QscUVBQXFFO0lBQ3JFLHNEQUFzRDtJQUN0RCxNQUFNQyxnQkFBOEQ7UUFDbEUsS0FBSztZQUFFNUMsS0FBSztZQUFNQyxLQUFLO1FBQUs7UUFDNUIsTUFBTTtZQUFFRCxLQUFLO1lBQU1DLEtBQUs7UUFBSztRQUM3QixPQUFPO1lBQUVELEtBQUs7WUFBTUMsS0FBSztRQUFLO1FBQzlCLFFBQVE7WUFBRUQsS0FBSztZQUFNQyxLQUFLO1FBQUs7UUFDL0IsU0FBUztZQUFFRCxLQUFLO1lBQU1DLEtBQUs7UUFBSyxFQUFJLGtCQUFrQjtJQUN4RDtJQUVBLDRDQUE0QztJQUM1QyxNQUFNNEMsV0FBVztJQUNqQixNQUFNQyxtQkFBbUJILFNBQVNFO0lBRWxDLE1BQU1FLFFBQVFILGFBQWEsQ0FBQ0YsV0FBVyxJQUFJRSxhQUFhLENBQUMsTUFBTTtJQUMvRCxPQUFPO1FBQ0w1QyxLQUFLZ0QsS0FBS0MsS0FBSyxDQUFDRixNQUFNL0MsR0FBRyxHQUFHOEM7UUFDNUI3QyxLQUFLK0MsS0FBS0MsS0FBSyxDQUFDRixNQUFNOUMsR0FBRyxHQUFHNkM7SUFDOUI7QUFDRjtBQUVPLGVBQWVJLEtBQUtDLEdBQWdCO0lBQ3pDLElBQUk7UUFDRixNQUFNQyxPQUFPLE1BQU1ELElBQUlFLElBQUk7UUFDM0IsTUFBTUMsU0FBUy9ELE9BQU9nRSxLQUFLLENBQUNIO1FBRTVCLE1BQU1JLGNBQWtDLEVBQUU7UUFDMUMsTUFBTUMsV0FBcUIsRUFBRTtRQUU3Qix3QkFBd0I7UUFDeEIsTUFBTWxDLGFBQWFsQyxzRkFBTUEsQ0FBQ0MsdUZBQU9BLENBQUMsSUFBSW9FLEtBQUtKLE9BQU96RCxhQUFhLEdBQUd5RCxPQUFPbkQsVUFBVSxHQUFHO1FBRXRGLEtBQUssTUFBTXdELGNBQWNMLE9BQU83RCxPQUFPLENBQUU7WUFDdkMsTUFBTW1FLFNBQVN6RSx3REFBVUEsQ0FBQ3dFO1lBRTFCLElBQUksQ0FBQ0MsUUFBUTtnQkFDWEgsU0FBU0ksSUFBSSxDQUFDRjtnQkFDZDtZQUNGO1lBRUEsTUFBTUcsYUFBYTFFLGtFQUFvQkEsQ0FBQ3dFLFFBQVFOLE9BQU81QyxXQUFXO1lBQ2xFLE1BQU1xRCxjQUFjMUMsaUJBQWlCaUMsT0FBT3ZELE1BQU0sRUFBRTZELE9BQU9JLFdBQVcsRUFBRVYsT0FBT3pELGFBQWEsRUFBRTBCO1lBRTlGLGlEQUFpRDtZQUNqRCxNQUFNMEMsY0FBY3hCLG1CQUFtQm1CLE9BQU9sQixVQUFVLElBQUksT0FBT1ksT0FBT25ELFVBQVU7WUFFcEYsd0RBQXdEO1lBQ3hELE1BQU0rRCxvQkFBb0JELFlBQVlqRSxHQUFHLEdBQUc7WUFDNUMsTUFBTW1FLG9CQUFvQkYsWUFBWWhFLEdBQUcsR0FBRztZQUU1Qyw4QkFBOEI7WUFDOUIsTUFBTW1FLHFCQUFxQixDQUFDLENBQUMsRUFBRUgsWUFBWWpFLEdBQUcsQ0FBQyxFQUFFLEVBQUVpRSxZQUFZaEUsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUcvRSxrQkFBa0I7WUFDbEIsSUFBSW9FLGVBQWU7WUFDbkIsSUFBSUMsZUFBZTtZQUNuQixJQUFJQyxtQkFBbUI7WUFFdkIsSUFBSWpCLE9BQU8vQyxNQUFNLEVBQUU7Z0JBQ2pCLE1BQU1pRSxvQkFBb0JsQixPQUFPL0MsTUFBTSxHQUFJLEVBQUMrQyxPQUFPN0Msa0JBQWtCLElBQUksRUFBQyxJQUFLLEdBQUU7Z0JBQ2pGLE1BQU1nRSx3QkFBd0JuQixPQUFPL0MsTUFBTSxHQUFHaUU7Z0JBRTlDLElBQUlOLG9CQUFvQlosT0FBTy9DLE1BQU0sRUFBRTtvQkFDckNnRSxtQkFBbUJMLG9CQUFvQlosT0FBTy9DLE1BQU07b0JBRXBELGtEQUFrRDtvQkFDbEQsSUFBSXVELGNBQWMsUUFBUUkscUJBQXFCTyx1QkFBdUI7d0JBQ3BFSixlQUFlO3dCQUNmQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUVDLGlCQUFpQkcsT0FBTyxDQUFDLEdBQUcsd0JBQXdCLEVBQUVwQixPQUFPN0Msa0JBQWtCLENBQUMsY0FBYyxDQUFDO29CQUNuSSxPQUFPLElBQUl5RCxxQkFBcUJPLHVCQUF1Qjt3QkFDckRKLGVBQWU7d0JBQ2ZDLGVBQWUsQ0FBQyxPQUFPLEVBQUVoQixPQUFPN0Msa0JBQWtCLENBQUMsaUJBQWlCLEVBQUU4RCxpQkFBaUJHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdEcsT0FBTzt3QkFDTEwsZUFBZTt3QkFDZkMsZUFBZSxDQUFDLGdCQUFnQixFQUFFQyxpQkFBaUJHLE9BQU8sQ0FBQyxHQUFHLHNCQUFzQixDQUFDO29CQUN2RjtnQkFDRixPQUFPO29CQUNMSixlQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBQ2hCLE9BQU8vQyxNQUFNLEdBQUcyRCxpQkFBZ0IsRUFBR1EsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDckY7WUFDRjtZQUVBbEIsWUFBWUssSUFBSSxDQUFDO2dCQUNmRDtnQkFDQUU7Z0JBQ0FDO2dCQUNBWSxzQkFBc0JQO2dCQUN0QlEseUJBQXlCWCxZQUFZakUsR0FBRztnQkFDeEM2RSx5QkFBeUJaLFlBQVloRSxHQUFHO2dCQUN4Q2lFO2dCQUNBQztnQkFDQUU7Z0JBQ0FDO2dCQUNBQyxrQkFBa0JBLG1CQUFtQixJQUFJQSxtQkFBbUJPO1lBQzlEO1FBQ0Y7UUFFQSxzQ0FBc0M7UUFDdEN0QixZQUFZdUIsSUFBSSxDQUFDLENBQUNDLEdBQUdDLElBQU1BLEVBQUVuQixVQUFVLEdBQUdrQixFQUFFbEIsVUFBVTtRQUV0RCxzRkFBc0Y7UUFDdEYsSUFBSW9CLGlCQUFpQjFCO1FBQ3JCLElBQUlGLE9BQU8vQyxNQUFNLEVBQUU7WUFDakIyRSxpQkFBaUIxQixZQUFZMkIsTUFBTSxDQUFDQyxDQUFBQSxJQUFLQSxFQUFFZixZQUFZO1FBQ3pEO1FBRUEsT0FBTyxJQUFJZ0IsU0FBU0MsS0FBS0MsU0FBUyxDQUFDO1lBQ2pDL0IsYUFBYTBCO1lBQ2JNLGdCQUFnQmhDO1lBQ2hCQztZQUNBZ0MsWUFBWW5DLE9BQU8vQyxNQUFNLEdBQUc7Z0JBQzFCQSxRQUFRK0MsT0FBTy9DLE1BQU07Z0JBQ3JCRSxvQkFBb0I2QyxPQUFPN0Msa0JBQWtCLElBQUk7Z0JBQ2pEK0QsbUJBQW1CbEIsT0FBTy9DLE1BQU0sR0FBSSxFQUFDK0MsT0FBTzdDLGtCQUFrQixJQUFJLEVBQUMsSUFBSyxHQUFFO2dCQUMxRWlGLFdBQVdwQyxPQUFPL0MsTUFBTSxHQUFJK0MsT0FBTy9DLE1BQU0sR0FBSSxFQUFDK0MsT0FBTzdDLGtCQUFrQixJQUFJLEVBQUMsSUFBSyxHQUFFO2dCQUNuRmtGLG1CQUFtQlQsZUFBZVUsTUFBTTtnQkFDeENDLFlBQVlyQyxZQUFZb0MsTUFBTTtnQkFDOUJFLGlCQUFpQnRDLFlBQVlvQyxNQUFNLEdBQUdWLGVBQWVVLE1BQU07WUFDN0QsSUFBSTtZQUNKRyxZQUFZO2dCQUNWaEcsUUFBUXVELE9BQU92RCxNQUFNO2dCQUNyQkYsZUFBZXlELE9BQU96RCxhQUFhO2dCQUNuQzBCO2dCQUNBcEIsWUFBWW1ELE9BQU9uRCxVQUFVO1lBQy9CO1lBQ0E2RixjQUFjO2dCQUNaO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2FBQ0Q7WUFDREMsYUFBYTtRQUNmLElBQUk7WUFDRkMsU0FBUztnQkFBRSxnQkFBZ0I7WUFBbUI7UUFDaEQ7SUFFRixFQUFFLE9BQU9DLEdBQVE7UUFDZixPQUFPLElBQUlkLFNBQVNDLEtBQUtDLFNBQVMsQ0FBQztZQUNqQ2EsT0FBT0QsR0FBR0UsV0FBVztRQUN2QixJQUFJO1lBQ0ZDLFFBQVE7WUFDUkosU0FBUztnQkFBRSxnQkFBZ0I7WUFBbUI7UUFDaEQ7SUFDRjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL2FwcC9hcGkvcmVzb3J0LWNvbXBhcmUvcm91dGUudHM/NTQ2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZXh0UmVxdWVzdCB9IGZyb20gXCJuZXh0L3NlcnZlclwiO1xyXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xyXG5pbXBvcnQgeyBmaW5kUmVzb3J0LCBjYWxjdWxhdGVSZXNvcnRTY29yZSwgdHlwZSBSZXNvcnQgfSBmcm9tIFwiQC9saWIvcmVzb3J0c1wiO1xyXG5pbXBvcnQgeyBmb3JtYXQsIGFkZERheXMgfSBmcm9tIFwiZGF0ZS1mbnNcIjtcclxuXHJcbmNvbnN0IHNjaGVtYSA9IHoub2JqZWN0KHtcclxuICByZXNvcnRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm5vbmVtcHR5KCksXHJcbiAgZGVwYXJ0dXJlRGF0ZTogei5zdHJpbmcoKS5yZWdleCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8pLFxyXG4gIG9yaWdpbjogei5zdHJpbmcoKS5taW4oMykubWF4KDQpLmRlZmF1bHQoXCJZT1dcIiksXHJcbiAgdHJpcExlbmd0aDogei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLmRlZmF1bHQoNyksXHJcbiAgYnVkZ2V0OiB6Lm51bWJlcigpLnBvc2l0aXZlKCkub3B0aW9uYWwoKSxcclxuICBjb250aW5nZW5jeVBlcmNlbnQ6IHoubnVtYmVyKCkubWluKDApLm1heCg1MCkub3B0aW9uYWwoKS5kZWZhdWx0KDE1KSwgLy8gQWxsb3cgdXAgdG8gMTUlIG92ZXIgYnVkZ2V0IGZvciBoaWdoIHNjb3Jlc1xyXG4gIHByZWZlcmVuY2VzOiB6Lm9iamVjdCh7XHJcbiAgICBiZWFjaDogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxyXG4gICAgcG9vbDogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxyXG4gICAgZ29sZjogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxyXG4gICAgc3BhOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBmb29kOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBuaWdodGxpZmU6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcclxuICAgIHNob3BwaW5nOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBjdWx0dXJlOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBvdXRkb29yOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBmYW1pbHk6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcclxuICB9KS5vcHRpb25hbCgpXHJcbn0pO1xyXG5cclxudHlwZSBSZXNvcnRDb21wYXJpc29uID0ge1xyXG4gIHJlc29ydDogUmVzb3J0O1xyXG4gIG1hdGNoU2NvcmU6IG51bWJlcjtcclxuICBmbGlnaHRMaW5rczoge1xyXG4gICAgc2t5c2Nhbm5lcjogc3RyaW5nO1xyXG4gICAgZ29vZ2xlRmxpZ2h0czogc3RyaW5nO1xyXG4gICAgYWlyQ2FuYWRhOiBzdHJpbmc7XHJcbiAgfTtcclxuICBlc3RpbWF0ZWRGbGlnaHRQcmljZT86IHN0cmluZztcclxuICBlc3RpbWF0ZWRGbGlnaHRQcmljZU1pbj86IG51bWJlcjtcclxuICBlc3RpbWF0ZWRGbGlnaHRQcmljZU1heD86IG51bWJlcjtcclxuICBlc3RpbWF0ZWRUb3RhbE1pbj86IG51bWJlcjtcclxuICBlc3RpbWF0ZWRUb3RhbE1heD86IG51bWJlcjtcclxuICB3aXRoaW5CdWRnZXQ/OiBib29sZWFuO1xyXG4gIGJ1ZGdldFN0YXR1cz86IHN0cmluZztcclxuICBvdmVyQnVkZ2V0QW1vdW50PzogbnVtYmVyO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gYnVpbGRGbGlnaHRMaW5rcyhvcmlnaW46IHN0cmluZywgZGVzdGluYXRpb246IHN0cmluZywgZGVwYXJ0dXJlRGF0ZTogc3RyaW5nLCByZXR1cm5EYXRlOiBzdHJpbmcpIHtcclxuICBjb25zdCBkZXBGb3JtYXR0ZWQgPSBkZXBhcnR1cmVEYXRlLnJlcGxhY2UoLy0vZywgXCJcIik7XHJcbiAgY29uc3QgcmV0Rm9ybWF0dGVkID0gcmV0dXJuRGF0ZS5yZXBsYWNlKC8tL2csIFwiXCIpO1xyXG4gIFxyXG4gIHJldHVybiB7XHJcbiAgICBza3lzY2FubmVyOiBgaHR0cHM6Ly93d3cuc2t5c2Nhbm5lci5jYS90cmFuc3BvcnQvZmxpZ2h0cy8ke29yaWdpbi50b0xvd2VyQ2FzZSgpfS8ke2Rlc3RpbmF0aW9uLnRvTG93ZXJDYXNlKCl9LyR7ZGVwRm9ybWF0dGVkfS8ke3JldEZvcm1hdHRlZH0vYCxcclxuICAgIGdvb2dsZUZsaWdodHM6IGBodHRwczovL3d3dy5nb29nbGUuY29tL3RyYXZlbC9mbGlnaHRzP3E9JHtlbmNvZGVVUklDb21wb25lbnQoYGZsaWdodHMgZnJvbSAke29yaWdpbn0gdG8gJHtkZXN0aW5hdGlvbn0gJHtkZXBhcnR1cmVEYXRlfSB0byAke3JldHVybkRhdGV9YCl9YCxcclxuICAgIGFpckNhbmFkYTogYGh0dHBzOi8vd3d3LmFpcmNhbmFkYS5jb20vY2EvZW4vYWNvL2hvbWUvYm9vay90cmF2ZWwuaHRtbD8ke25ldyBVUkxTZWFyY2hQYXJhbXMoe1xyXG4gICAgICBvcmcxOiBvcmlnaW4udG9VcHBlckNhc2UoKSxcclxuICAgICAgZGVzdDE6IGRlc3RpbmF0aW9uLnRvVXBwZXJDYXNlKCksXHJcbiAgICAgIGRlcGFydHVyZURhdGUxOiBkZXBhcnR1cmVEYXRlLFxyXG4gICAgICByZXR1cm5EYXRlMTogcmV0dXJuRGF0ZSxcclxuICAgICAgdHJpcFR5cGU6IFwiMlwiLFxyXG4gICAgICBsYW5nOiBcImVuLUNBXCJcclxuICAgIH0pLnRvU3RyaW5nKCl9YFxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVzdGltYXRlUmVzb3J0Q29zdChwcmljZVJhbmdlOiBzdHJpbmcsIG5pZ2h0czogbnVtYmVyKTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSB7XHJcbiAgLy8gQ0FOQURJQU4gQUxMLUlOQ0xVU0lWRSBQQUNLQUdFIFBSSUNJTkcgKHBlciBwZXJzb24sIENBRClcclxuICAvLyBCYXNlZCBvbiByZWFsIHRyYXZlbCBhZ2VudCBxdW90ZXMgZm9yIDctbmlnaHQgcGFja2FnZXMgZnJvbSBPdHRhd2FcclxuICAvLyBJbmNsdWRlczogZmxpZ2h0cywgYWNjb21tb2RhdGlvbnMsIHRyYW5zZmVycywgdGF4ZXNcclxuICBjb25zdCBwYWNrYWdlUmFuZ2VzOiBSZWNvcmQ8c3RyaW5nLCB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9PiA9IHtcclxuICAgIFwiJFwiOiB7IG1pbjogMTIwMCwgbWF4OiAxNjAwIH0sICAgICAgLy8gQnVkZ2V0IHBhY2thZ2VzXHJcbiAgICBcIiQkXCI6IHsgbWluOiAxNjAwLCBtYXg6IDIwMDAgfSwgICAgIC8vIE1pZC1yYW5nZSBwYWNrYWdlc1xyXG4gICAgXCIkJCRcIjogeyBtaW46IDIwMDAsIG1heDogMjQwMCB9LCAgICAvLyBVcHBlciBtaWQtcmFuZ2VcclxuICAgIFwiJCQkJFwiOiB7IG1pbjogMjQwMCwgbWF4OiAyODAwIH0sICAgLy8gUHJlbWl1bSAoRHJlYW1zIE9ueXg6ICQyNTA5KVxyXG4gICAgXCIkJCQkJFwiOiB7IG1pbjogMjgwMCwgbWF4OiAzNTAwIH0gICAvLyBMdXh1cnkgcGFja2FnZXNcclxuICB9O1xyXG4gIFxyXG4gIC8vIEFkanVzdCBmb3IgdHJpcCBsZW5ndGggKGJhc2UgaXMgNyBuaWdodHMpXHJcbiAgY29uc3QgYmFzZURheXMgPSA3O1xyXG4gIGNvbnN0IGxlbmd0aE11bHRpcGxpZXIgPSBuaWdodHMgLyBiYXNlRGF5cztcclxuICBcclxuICBjb25zdCByYW5nZSA9IHBhY2thZ2VSYW5nZXNbcHJpY2VSYW5nZV0gfHwgcGFja2FnZVJhbmdlc1tcIiQkJFwiXTtcclxuICByZXR1cm4ge1xyXG4gICAgbWluOiBNYXRoLnJvdW5kKHJhbmdlLm1pbiAqIGxlbmd0aE11bHRpcGxpZXIpLFxyXG4gICAgbWF4OiBNYXRoLnJvdW5kKHJhbmdlLm1heCAqIGxlbmd0aE11bHRpcGxpZXIpXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIFBPU1QocmVxOiBOZXh0UmVxdWVzdCkge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVxLmpzb24oKTtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHNjaGVtYS5wYXJzZShib2R5KTtcclxuICAgIFxyXG4gICAgY29uc3QgY29tcGFyaXNvbnM6IFJlc29ydENvbXBhcmlzb25bXSA9IFtdO1xyXG4gICAgY29uc3Qgbm90Rm91bmQ6IHN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIC8vIENhbGN1bGF0ZSByZXR1cm4gZGF0ZVxyXG4gICAgY29uc3QgcmV0dXJuRGF0ZSA9IGZvcm1hdChhZGREYXlzKG5ldyBEYXRlKHBhcnNlZC5kZXBhcnR1cmVEYXRlKSwgcGFyc2VkLnRyaXBMZW5ndGgpLCBcInl5eXktTU0tZGRcIik7XHJcbiAgICBcclxuICAgIGZvciAoY29uc3QgcmVzb3J0TmFtZSBvZiBwYXJzZWQucmVzb3J0cykge1xyXG4gICAgICBjb25zdCByZXNvcnQgPSBmaW5kUmVzb3J0KHJlc29ydE5hbWUpO1xyXG4gICAgICBcclxuICAgICAgaWYgKCFyZXNvcnQpIHtcclxuICAgICAgICBub3RGb3VuZC5wdXNoKHJlc29ydE5hbWUpO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBtYXRjaFNjb3JlID0gY2FsY3VsYXRlUmVzb3J0U2NvcmUocmVzb3J0LCBwYXJzZWQucHJlZmVyZW5jZXMpO1xyXG4gICAgICBjb25zdCBmbGlnaHRMaW5rcyA9IGJ1aWxkRmxpZ2h0TGlua3MocGFyc2VkLm9yaWdpbiwgcmVzb3J0LmFpcnBvcnRDb2RlLCBwYXJzZWQuZGVwYXJ0dXJlRGF0ZSwgcmV0dXJuRGF0ZSk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBQYWNrYWdlIHByaWNpbmcgKHBlciBwZXJzb24sIGluY2x1ZGVzIGZsaWdodHMpXHJcbiAgICAgIGNvbnN0IHBhY2thZ2VDb3N0ID0gZXN0aW1hdGVSZXNvcnRDb3N0KHJlc29ydC5wcmljZVJhbmdlIHx8IFwiJCQkXCIsIHBhcnNlZC50cmlwTGVuZ3RoKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFRvdGFsIGNvc3QgZm9yIDIgcGVvcGxlIChzdGFuZGFyZCBwYWNrYWdlIGFzc3VtcHRpb24pXHJcbiAgICAgIGNvbnN0IGVzdGltYXRlZFRvdGFsTWluID0gcGFja2FnZUNvc3QubWluICogMjtcclxuICAgICAgY29uc3QgZXN0aW1hdGVkVG90YWxNYXggPSBwYWNrYWdlQ29zdC5tYXggKiAyO1xyXG4gICAgICBcclxuICAgICAgLy8gUGVyIHBlcnNvbiBjb3N0IGZvciBkaXNwbGF5XHJcbiAgICAgIGNvbnN0IGVzdGltYXRlZFBlclBlcnNvbiA9IGAkJHtwYWNrYWdlQ29zdC5taW59LSQke3BhY2thZ2VDb3N0Lm1heH0gcGVyIHBlcnNvbmA7XHJcblxyXG4gICAgICBcclxuICAgICAgLy8gQnVkZ2V0IGFuYWx5c2lzXHJcbiAgICAgIGxldCB3aXRoaW5CdWRnZXQgPSB0cnVlO1xyXG4gICAgICBsZXQgYnVkZ2V0U3RhdHVzID0gXCJXaXRoaW4gQnVkZ2V0XCI7XHJcbiAgICAgIGxldCBvdmVyQnVkZ2V0QW1vdW50ID0gMDtcclxuICAgICAgXHJcbiAgICAgIGlmIChwYXJzZWQuYnVkZ2V0KSB7XHJcbiAgICAgICAgY29uc3QgY29udGluZ2VuY3lBbW91bnQgPSBwYXJzZWQuYnVkZ2V0ICogKChwYXJzZWQuY29udGluZ2VuY3lQZXJjZW50IHx8IDE1KSAvIDEwMCk7XHJcbiAgICAgICAgY29uc3QgYnVkZ2V0V2l0aENvbnRpbmdlbmN5ID0gcGFyc2VkLmJ1ZGdldCArIGNvbnRpbmdlbmN5QW1vdW50O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChlc3RpbWF0ZWRUb3RhbE1pbiA+IHBhcnNlZC5idWRnZXQpIHtcclxuICAgICAgICAgIG92ZXJCdWRnZXRBbW91bnQgPSBlc3RpbWF0ZWRUb3RhbE1pbiAtIHBhcnNlZC5idWRnZXQ7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIENoZWNrIGlmIGhpZ2ggc2NvcmUganVzdGlmaWVzIGdvaW5nIG92ZXIgYnVkZ2V0XHJcbiAgICAgICAgICBpZiAobWF0Y2hTY29yZSA+PSAxODAwICYmIGVzdGltYXRlZFRvdGFsTWluIDw9IGJ1ZGdldFdpdGhDb250aW5nZW5jeSkge1xyXG4gICAgICAgICAgICB3aXRoaW5CdWRnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBidWRnZXRTdGF0dXMgPSBgT3ZlciBidWRnZXQgYnkgJCR7b3ZlckJ1ZGdldEFtb3VudC50b0ZpeGVkKDApfSBidXQgSElHSCBNQVRDSCAod2l0aGluICR7cGFyc2VkLmNvbnRpbmdlbmN5UGVyY2VudH0lIGNvbnRpbmdlbmN5KWA7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGVzdGltYXRlZFRvdGFsTWluIDw9IGJ1ZGdldFdpdGhDb250aW5nZW5jeSkge1xyXG4gICAgICAgICAgICB3aXRoaW5CdWRnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBidWRnZXRTdGF0dXMgPSBgV2l0aGluICR7cGFyc2VkLmNvbnRpbmdlbmN5UGVyY2VudH0lIGNvbnRpbmdlbmN5ICgrJCR7b3ZlckJ1ZGdldEFtb3VudC50b0ZpeGVkKDApfSlgO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgd2l0aGluQnVkZ2V0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJ1ZGdldFN0YXR1cyA9IGBPdmVyIGJ1ZGdldCBieSAkJHtvdmVyQnVkZ2V0QW1vdW50LnRvRml4ZWQoMCl9IChleGNlZWRzIGNvbnRpbmdlbmN5KWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJ1ZGdldFN0YXR1cyA9IGBVbmRlciBidWRnZXQgYnkgJCR7KHBhcnNlZC5idWRnZXQgLSBlc3RpbWF0ZWRUb3RhbE1pbikudG9GaXhlZCgwKX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgY29tcGFyaXNvbnMucHVzaCh7XHJcbiAgICAgICAgcmVzb3J0LFxyXG4gICAgICAgIG1hdGNoU2NvcmUsXHJcbiAgICAgICAgZmxpZ2h0TGlua3MsXHJcbiAgICAgICAgZXN0aW1hdGVkRmxpZ2h0UHJpY2U6IGVzdGltYXRlZFBlclBlcnNvbixcclxuICAgICAgICBlc3RpbWF0ZWRGbGlnaHRQcmljZU1pbjogcGFja2FnZUNvc3QubWluLFxyXG4gICAgICAgIGVzdGltYXRlZEZsaWdodFByaWNlTWF4OiBwYWNrYWdlQ29zdC5tYXgsXHJcbiAgICAgICAgZXN0aW1hdGVkVG90YWxNaW4sXHJcbiAgICAgICAgZXN0aW1hdGVkVG90YWxNYXgsXHJcbiAgICAgICAgd2l0aGluQnVkZ2V0LFxyXG4gICAgICAgIGJ1ZGdldFN0YXR1cyxcclxuICAgICAgICBvdmVyQnVkZ2V0QW1vdW50OiBvdmVyQnVkZ2V0QW1vdW50ID4gMCA/IG92ZXJCdWRnZXRBbW91bnQgOiB1bmRlZmluZWRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIFNvcnQgYnkgbWF0Y2ggc2NvcmUgKGhpZ2hlc3QgZmlyc3QpXHJcbiAgICBjb21wYXJpc29ucy5zb3J0KChhLCBiKSA9PiBiLm1hdGNoU2NvcmUgLSBhLm1hdGNoU2NvcmUpO1xyXG4gICAgXHJcbiAgICAvLyBGaWx0ZXIgYnkgYnVkZ2V0IGlmIHNwZWNpZmllZCAoYnV0IGluY2x1ZGUgaGlnaC1zY29yaW5nIHJlc29ydHMgd2l0aGluIGNvbnRpbmdlbmN5KVxyXG4gICAgbGV0IGJ1ZGdldEZpbHRlcmVkID0gY29tcGFyaXNvbnM7XHJcbiAgICBpZiAocGFyc2VkLmJ1ZGdldCkge1xyXG4gICAgICBidWRnZXRGaWx0ZXJlZCA9IGNvbXBhcmlzb25zLmZpbHRlcihjID0+IGMud2l0aGluQnVkZ2V0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IFxyXG4gICAgICBjb21wYXJpc29uczogYnVkZ2V0RmlsdGVyZWQsXHJcbiAgICAgIGFsbENvbXBhcmlzb25zOiBjb21wYXJpc29ucywgLy8gSW5jbHVkZSBhbGwgZm9yIHJlZmVyZW5jZVxyXG4gICAgICBub3RGb3VuZCxcclxuICAgICAgYnVkZ2V0SW5mbzogcGFyc2VkLmJ1ZGdldCA/IHtcclxuICAgICAgICBidWRnZXQ6IHBhcnNlZC5idWRnZXQsXHJcbiAgICAgICAgY29udGluZ2VuY3lQZXJjZW50OiBwYXJzZWQuY29udGluZ2VuY3lQZXJjZW50IHx8IDE1LFxyXG4gICAgICAgIGNvbnRpbmdlbmN5QW1vdW50OiBwYXJzZWQuYnVkZ2V0ICogKChwYXJzZWQuY29udGluZ2VuY3lQZXJjZW50IHx8IDE1KSAvIDEwMCksXHJcbiAgICAgICAgbWF4QnVkZ2V0OiBwYXJzZWQuYnVkZ2V0ICsgKHBhcnNlZC5idWRnZXQgKiAoKHBhcnNlZC5jb250aW5nZW5jeVBlcmNlbnQgfHwgMTUpIC8gMTAwKSksXHJcbiAgICAgICAgd2l0aGluQnVkZ2V0Q291bnQ6IGJ1ZGdldEZpbHRlcmVkLmxlbmd0aCxcclxuICAgICAgICB0b3RhbENvdW50OiBjb21wYXJpc29ucy5sZW5ndGgsXHJcbiAgICAgICAgb3ZlckJ1ZGdldENvdW50OiBjb21wYXJpc29ucy5sZW5ndGggLSBidWRnZXRGaWx0ZXJlZC5sZW5ndGhcclxuICAgICAgfSA6IG51bGwsXHJcbiAgICAgIGZsaWdodEluZm86IHtcclxuICAgICAgICBvcmlnaW46IHBhcnNlZC5vcmlnaW4sXHJcbiAgICAgICAgZGVwYXJ0dXJlRGF0ZTogcGFyc2VkLmRlcGFydHVyZURhdGUsXHJcbiAgICAgICAgcmV0dXJuRGF0ZSxcclxuICAgICAgICB0cmlwTGVuZ3RoOiBwYXJzZWQudHJpcExlbmd0aFxyXG4gICAgICB9LFxyXG4gICAgICBwYWNrYWdlU2l0ZXM6IFtcclxuICAgICAgICBcIlN1bndpbmcgVmFjYXRpb25zXCIsXHJcbiAgICAgICAgXCJBaXIgQ2FuYWRhIFZhY2F0aW9uc1wiLFxyXG4gICAgICAgIFwiV2VzdEpldCBWYWNhdGlvbnNcIixcclxuICAgICAgICBcIkFpciBUcmFuc2F0IEhvbGlkYXlzXCIsXHJcbiAgICAgICAgXCJSZWRUYWcuY2FcIlxyXG4gICAgICBdLFxyXG4gICAgICBwcmljaW5nTm90ZTogXCJFc3RpbWF0ZXMgYXJlIGZvciBpbmRpdmlkdWFsIGJvb2tpbmdzIChmbGlnaHQgKyByZXNvcnQpLiBQYWNrYWdlIGRlYWxzIGFyZSB0eXBpY2FsbHkgMzAtNDAlIGNoZWFwZXIuXCJcclxuICAgIH0pLCB7IFxyXG4gICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gXHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH0gY2F0Y2ggKGU6IGFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IFxyXG4gICAgICBlcnJvcjogZT8ubWVzc2FnZSB8fCBcIkludmFsaWQgcGF5bG9hZFwiIFxyXG4gICAgfSksIHsgXHJcbiAgICAgIHN0YXR1czogNDAwLCBcclxuICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9IFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdLCJuYW1lcyI6WyJ6IiwiZmluZFJlc29ydCIsImNhbGN1bGF0ZVJlc29ydFNjb3JlIiwiZm9ybWF0IiwiYWRkRGF5cyIsInNjaGVtYSIsIm9iamVjdCIsInJlc29ydHMiLCJhcnJheSIsInN0cmluZyIsIm5vbmVtcHR5IiwiZGVwYXJ0dXJlRGF0ZSIsInJlZ2V4Iiwib3JpZ2luIiwibWluIiwibWF4IiwiZGVmYXVsdCIsInRyaXBMZW5ndGgiLCJudW1iZXIiLCJpbnQiLCJwb3NpdGl2ZSIsImJ1ZGdldCIsIm9wdGlvbmFsIiwiY29udGluZ2VuY3lQZXJjZW50IiwicHJlZmVyZW5jZXMiLCJiZWFjaCIsInBvb2wiLCJnb2xmIiwic3BhIiwiZm9vZCIsIm5pZ2h0bGlmZSIsInNob3BwaW5nIiwiY3VsdHVyZSIsIm91dGRvb3IiLCJmYW1pbHkiLCJidWlsZEZsaWdodExpbmtzIiwiZGVzdGluYXRpb24iLCJyZXR1cm5EYXRlIiwiZGVwRm9ybWF0dGVkIiwicmVwbGFjZSIsInJldEZvcm1hdHRlZCIsInNreXNjYW5uZXIiLCJ0b0xvd2VyQ2FzZSIsImdvb2dsZUZsaWdodHMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJhaXJDYW5hZGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJvcmcxIiwidG9VcHBlckNhc2UiLCJkZXN0MSIsImRlcGFydHVyZURhdGUxIiwicmV0dXJuRGF0ZTEiLCJ0cmlwVHlwZSIsImxhbmciLCJ0b1N0cmluZyIsImVzdGltYXRlUmVzb3J0Q29zdCIsInByaWNlUmFuZ2UiLCJuaWdodHMiLCJwYWNrYWdlUmFuZ2VzIiwiYmFzZURheXMiLCJsZW5ndGhNdWx0aXBsaWVyIiwicmFuZ2UiLCJNYXRoIiwicm91bmQiLCJQT1NUIiwicmVxIiwiYm9keSIsImpzb24iLCJwYXJzZWQiLCJwYXJzZSIsImNvbXBhcmlzb25zIiwibm90Rm91bmQiLCJEYXRlIiwicmVzb3J0TmFtZSIsInJlc29ydCIsInB1c2giLCJtYXRjaFNjb3JlIiwiZmxpZ2h0TGlua3MiLCJhaXJwb3J0Q29kZSIsInBhY2thZ2VDb3N0IiwiZXN0aW1hdGVkVG90YWxNaW4iLCJlc3RpbWF0ZWRUb3RhbE1heCIsImVzdGltYXRlZFBlclBlcnNvbiIsIndpdGhpbkJ1ZGdldCIsImJ1ZGdldFN0YXR1cyIsIm92ZXJCdWRnZXRBbW91bnQiLCJjb250aW5nZW5jeUFtb3VudCIsImJ1ZGdldFdpdGhDb250aW5nZW5jeSIsInRvRml4ZWQiLCJlc3RpbWF0ZWRGbGlnaHRQcmljZSIsImVzdGltYXRlZEZsaWdodFByaWNlTWluIiwiZXN0aW1hdGVkRmxpZ2h0UHJpY2VNYXgiLCJ1bmRlZmluZWQiLCJzb3J0IiwiYSIsImIiLCJidWRnZXRGaWx0ZXJlZCIsImZpbHRlciIsImMiLCJSZXNwb25zZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhbGxDb21wYXJpc29ucyIsImJ1ZGdldEluZm8iLCJtYXhCdWRnZXQiLCJ3aXRoaW5CdWRnZXRDb3VudCIsImxlbmd0aCIsInRvdGFsQ291bnQiLCJvdmVyQnVkZ2V0Q291bnQiLCJmbGlnaHRJbmZvIiwicGFja2FnZVNpdGVzIiwicHJpY2luZ05vdGUiLCJoZWFkZXJzIiwiZSIsImVycm9yIiwibWVzc2FnZSIsInN0YXR1cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/api/resort-compare/route.ts\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./lib/resorts.ts":
|
|
/*!************************!*\
|
|
!*** ./lib/resorts.ts ***!
|
|
\************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RESORT_DATABASE: () => (/* binding */ RESORT_DATABASE),\n/* harmony export */ calculateResortScore: () => (/* binding */ calculateResortScore),\n/* harmony export */ findResort: () => (/* binding */ findResort)\n/* harmony export */ });\n// Resort database with features and ratings\n// Resort database\nconst RESORT_DATABASE = {\n \"bahia principe luxury sian ka'an\": {\n name: \"Bahia Principe Luxury Sian Ka'an\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 8,\n golf: 5,\n spa: 8,\n food: 8,\n nightlife: 6,\n shopping: 5,\n culture: 6,\n outdoor: 7,\n family: 9\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 8234,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"catalonia royal tulum\": {\n name: \"Catalonia Royal Tulum\",\n destination: \"Tulum\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 9,\n golf: 4,\n spa: 7,\n food: 8,\n nightlife: 6,\n shopping: 4,\n culture: 7,\n outdoor: 8,\n family: 7\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 6421,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"secrets akumal riviera maya\": {\n name: \"Secrets Akumal Riviera Maya\",\n destination: \"Akumal\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 9,\n golf: 5,\n spa: 9,\n food: 9,\n nightlife: 7,\n shopping: 5,\n culture: 6,\n outdoor: 9,\n family: 6\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 9127,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"unico 20\\xb087\\xb0 hotel riviera maya\": {\n name: \"UNICO 20\\xb087\\xb0 Hotel Riviera Maya\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 10,\n golf: 6,\n spa: 10,\n food: 10,\n nightlife: 8,\n shopping: 6,\n culture: 7,\n outdoor: 8,\n family: 7\n },\n tripAdvisorRating: 5.0,\n tripAdvisorReviews: 3894,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"trs yucat\\xe1n hotel\": {\n name: \"TRS Yucat\\xe1n Hotel\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 9,\n golf: 7,\n spa: 8,\n food: 8,\n nightlife: 7,\n shopping: 5,\n culture: 5,\n outdoor: 7,\n family: 8\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 5621,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"barcelo maya riviera\": {\n name: \"Barcelo Maya Riviera\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 9,\n golf: 8,\n spa: 7,\n food: 8,\n nightlife: 7,\n shopping: 6,\n culture: 5,\n outdoor: 7,\n family: 9\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 12453,\n priceRange: \"$$$\",\n allInclusive: true\n },\n \"valentin imperial riviera maya\": {\n name: \"Valentin Imperial Riviera Maya\",\n destination: \"Playa del Carmen\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 8,\n golf: 5,\n spa: 8,\n food: 9,\n nightlife: 6,\n shopping: 5,\n culture: 5,\n outdoor: 7,\n family: 7\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 8934,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"grand sirenis riviera maya\": {\n name: \"Grand Sirenis Riviera Maya\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 8,\n pool: 8,\n golf: 6,\n spa: 7,\n food: 7,\n nightlife: 6,\n shopping: 5,\n culture: 5,\n outdoor: 7,\n family: 9\n },\n tripAdvisorRating: 4.0,\n tripAdvisorReviews: 7821,\n priceRange: \"$$$\",\n allInclusive: true\n },\n \"dreams tulum resort & spa\": {\n name: \"Dreams Tulum Resort & Spa\",\n destination: \"Tulum\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 8,\n golf: 4,\n spa: 8,\n food: 8,\n nightlife: 6,\n shopping: 4,\n culture: 7,\n outdoor: 8,\n family: 8\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 6754,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"hyatt zilara cap cana\": {\n name: \"Hyatt Zilara Cap Cana\",\n destination: \"Cap Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 10,\n pool: 9,\n golf: 8,\n spa: 9,\n food: 9,\n nightlife: 8,\n shopping: 6,\n culture: 5,\n outdoor: 8,\n family: 5\n },\n tripAdvisorRating: 5.0,\n tripAdvisorReviews: 9821,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"secrets cap cana\": {\n name: \"Secrets Cap Cana\",\n destination: \"Cap Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 10,\n pool: 9,\n golf: 9,\n spa: 9,\n food: 9,\n nightlife: 8,\n shopping: 6,\n culture: 5,\n outdoor: 8,\n family: 6\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 8432,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"dreams onyx resort & spa\": {\n name: \"Dreams Onyx Resort & Spa\",\n destination: \"Punta Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 9,\n pool: 9,\n golf: 6,\n spa: 8,\n food: 8,\n nightlife: 7,\n shopping: 6,\n culture: 4,\n outdoor: 7,\n family: 8\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 5643,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"royalton chic punta cana\": {\n name: \"Royalton CHIC Punta Cana\",\n destination: \"Punta Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 9,\n pool: 9,\n golf: 6,\n spa: 8,\n food: 8,\n nightlife: 9,\n shopping: 7,\n culture: 4,\n outdoor: 7,\n family: 5\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 7234,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"iberostar grand b\\xe1varo\": {\n name: \"Iberostar Grand B\\xe1varo\",\n destination: \"B\\xe1varo\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 10,\n pool: 8,\n golf: 7,\n spa: 8,\n food: 8,\n nightlife: 7,\n shopping: 6,\n culture: 4,\n outdoor: 7,\n family: 7\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 6821,\n priceRange: \"$$$$\",\n allInclusive: true\n }\n};\nfunction findResort(name) {\n const normalized = name.toLowerCase().trim();\n return RESORT_DATABASE[normalized] || null;\n}\nfunction calculateResortScore(resort, preferences) {\n if (!preferences) return 0;\n let score = 0;\n let totalWeight = 0;\n for (const [feature, userRating] of Object.entries(preferences)){\n if (userRating && userRating > 0) {\n const resortRating = resort.features[feature] || 5;\n score += userRating * resortRating;\n totalWeight += userRating * 10;\n }\n }\n // Add TripAdvisor bonus\n if (resort.tripAdvisorRating) {\n score += resort.tripAdvisorRating * 100;\n }\n return totalWeight > 0 ? Math.round(score / totalWeight * 1000) : 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkMsTUFBYyxFQUFFQyxXQUFvQztJQUN2RixJQUFJLENBQUNBLGFBQWEsT0FBTztJQUV6QixJQUFJQyxRQUFRO0lBQ1osSUFBSUMsY0FBYztJQUVsQixLQUFLLE1BQU0sQ0FBQ0MsU0FBU0MsV0FBVyxJQUFJQyxPQUFPQyxPQUFPLENBQUNOLGFBQWM7UUFDL0QsSUFBSUksY0FBY0EsYUFBYSxHQUFHO1lBQ2hDLE1BQU1HLGVBQWVSLE9BQU9wQixRQUFRLENBQUN3QixRQUF3QyxJQUFJO1lBQ2pGRixTQUFVRyxhQUFhRztZQUN2QkwsZUFBZ0JFLGFBQWE7UUFDL0I7SUFDRjtJQUVBLHdCQUF3QjtJQUN4QixJQUFJTCxPQUFPVCxpQkFBaUIsRUFBRTtRQUM1QlcsU0FBU0YsT0FBT1QsaUJBQWlCLEdBQUc7SUFDdEM7SUFFQSxPQUFPWSxjQUFjLElBQUlNLEtBQUtDLEtBQUssQ0FBQyxRQUFTUCxjQUFlLFFBQVE7QUFDdEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbGliL3Jlc29ydHMudHM/MzIxOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZXNvcnQgZGF0YWJhc2Ugd2l0aCBmZWF0dXJlcyBhbmQgcmF0aW5nc1xyXG5leHBvcnQgdHlwZSBSZXNvcnQgPSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRlc3RpbmF0aW9uOiBzdHJpbmc7XHJcbiAgY291bnRyeTogc3RyaW5nO1xyXG4gIGFpcnBvcnRDb2RlOiBzdHJpbmc7XHJcbiAgZmVhdHVyZXM6IHtcclxuICAgIGJlYWNoOiBudW1iZXI7XHJcbiAgICBwb29sOiBudW1iZXI7XHJcbiAgICBnb2xmOiBudW1iZXI7XHJcbiAgICBzcGE6IG51bWJlcjtcclxuICAgIGZvb2Q6IG51bWJlcjtcclxuICAgIG5pZ2h0bGlmZTogbnVtYmVyO1xyXG4gICAgc2hvcHBpbmc6IG51bWJlcjtcclxuICAgIGN1bHR1cmU6IG51bWJlcjtcclxuICAgIG91dGRvb3I6IG51bWJlcjtcclxuICAgIGZhbWlseTogbnVtYmVyO1xyXG4gIH07XHJcbiAgdHJpcEFkdmlzb3JSYXRpbmc/OiBudW1iZXI7XHJcbiAgdHJpcEFkdmlzb3JSZXZpZXdzPzogbnVtYmVyO1xyXG4gIHByaWNlUmFuZ2U/OiBzdHJpbmc7IC8vICQkJCwgJCQkJCwgZXRjLlxyXG4gIGFsbEluY2x1c2l2ZTogYm9vbGVhbjtcclxufTtcclxuXHJcbi8vIFJlc29ydCBkYXRhYmFzZVxyXG5leHBvcnQgY29uc3QgUkVTT1JUX0RBVEFCQVNFOiBSZWNvcmQ8c3RyaW5nLCBSZXNvcnQ+ID0ge1xyXG4gIFwiYmFoaWEgcHJpbmNpcGUgbHV4dXJ5IHNpYW4ga2EnYW5cIjoge1xyXG4gICAgbmFtZTogXCJCYWhpYSBQcmluY2lwZSBMdXh1cnkgU2lhbiBLYSdhblwiLFxyXG4gICAgZGVzdGluYXRpb246IFwiUml2aWVyYSBNYXlhXCIsXHJcbiAgICBjb3VudHJ5OiBcIk1leGljb1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiQ1VOXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogOSxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNSxcclxuICAgICAgc3BhOiA4LFxyXG4gICAgICBmb29kOiA4LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA1LFxyXG4gICAgICBjdWx0dXJlOiA2LFxyXG4gICAgICBvdXRkb29yOiA3LFxyXG4gICAgICBmYW1pbHk6IDlcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC41LFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA4MjM0LFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwiY2F0YWxvbmlhIHJveWFsIHR1bHVtXCI6IHtcclxuICAgIG5hbWU6IFwiQ2F0YWxvbmlhIFJveWFsIFR1bHVtXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJUdWx1bVwiLFxyXG4gICAgY291bnRyeTogXCJNZXhpY29cIixcclxuICAgIGFpcnBvcnRDb2RlOiBcIkNVTlwiLFxyXG4gICAgZmVhdHVyZXM6IHtcclxuICAgICAgYmVhY2g6IDEwLFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA0LFxyXG4gICAgICBzcGE6IDcsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNixcclxuICAgICAgc2hvcHBpbmc6IDQsXHJcbiAgICAgIGN1bHR1cmU6IDcsXHJcbiAgICAgIG91dGRvb3I6IDgsXHJcbiAgICAgIGZhbWlseTogN1xyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDY0MjEsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJzZWNyZXRzIGFrdW1hbCByaXZpZXJhIG1heWFcIjoge1xyXG4gICAgbmFtZTogXCJTZWNyZXRzIEFrdW1hbCBSaXZpZXJhIE1heWFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIkFrdW1hbFwiLFxyXG4gICAgY291bnRyeTogXCJNZXhpY29cIixcclxuICAgIGFpcnBvcnRDb2RlOiBcIkNVTlwiLFxyXG4gICAgZmVhdHVyZXM6IHtcclxuICAgICAgYmVhY2g6IDEwLFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA1LFxyXG4gICAgICBzcGE6IDksXHJcbiAgICAgIGZvb2Q6IDksXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDUsXHJcbiAgICAgIGN1bHR1cmU6IDYsXHJcbiAgICAgIG91dGRvb3I6IDksXHJcbiAgICAgIGZhbWlseTogNlxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDkxMjcsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwidW5pY28gMjDCsDg3wrAgaG90ZWwgcml2aWVyYSBtYXlhXCI6IHtcclxuICAgIG5hbWU6IFwiVU5JQ08gMjDCsDg3wrAgSG90ZWwgUml2aWVyYSBNYXlhXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJSaXZpZXJhIE1heWFcIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiAxMCxcclxuICAgICAgZ29sZjogNixcclxuICAgICAgc3BhOiAxMCxcclxuICAgICAgZm9vZDogMTAsXHJcbiAgICAgIG5pZ2h0bGlmZTogOCxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDcsXHJcbiAgICAgIG91dGRvb3I6IDgsXHJcbiAgICAgIGZhbWlseTogN1xyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA1LjAsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDM4OTQsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwidHJzIHl1Y2F0w6FuIGhvdGVsXCI6IHtcclxuICAgIG5hbWU6IFwiVFJTIFl1Y2F0w6FuIEhvdGVsXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJSaXZpZXJhIE1heWFcIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA3LFxyXG4gICAgICBzcGE6IDgsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDUsXHJcbiAgICAgIGN1bHR1cmU6IDUsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogOFxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDU2MjEsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJiYXJjZWxvIG1heWEgcml2aWVyYVwiOiB7XHJcbiAgICBuYW1lOiBcIkJhcmNlbG8gTWF5YSBSaXZpZXJhXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJSaXZpZXJhIE1heWFcIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA4LFxyXG4gICAgICBzcGE6IDcsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDUsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogOVxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDEyNDUzLFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJ2YWxlbnRpbiBpbXBlcmlhbCByaXZpZXJhIG1heWFcIjoge1xyXG4gICAgbmFtZTogXCJWYWxlbnRpbiBJbXBlcmlhbCBSaXZpZXJhIE1heWFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIlBsYXlhIGRlbCBDYXJtZW5cIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiAxMCxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNSxcclxuICAgICAgc3BhOiA4LFxyXG4gICAgICBmb29kOiA5LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA1LFxyXG4gICAgICBjdWx0dXJlOiA1LFxyXG4gICAgICBvdXRkb29yOiA3LFxyXG4gICAgICBmYW1pbHk6IDdcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC41LFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA4OTM0LFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwiZ3JhbmQgc2lyZW5pcyByaXZpZXJhIG1heWFcIjoge1xyXG4gICAgbmFtZTogXCJHcmFuZCBTaXJlbmlzIFJpdmllcmEgTWF5YVwiLFxyXG4gICAgZGVzdGluYXRpb246IFwiUml2aWVyYSBNYXlhXCIsXHJcbiAgICBjb3VudHJ5OiBcIk1leGljb1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiQ1VOXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogOCxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNixcclxuICAgICAgc3BhOiA3LFxyXG4gICAgICBmb29kOiA3LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA1LFxyXG4gICAgICBjdWx0dXJlOiA1LFxyXG4gICAgICBvdXRkb29yOiA3LFxyXG4gICAgICBmYW1pbHk6IDlcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC4wLFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA3ODIxLFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJkcmVhbXMgdHVsdW0gcmVzb3J0ICYgc3BhXCI6IHtcclxuICAgIG5hbWU6IFwiRHJlYW1zIFR1bHVtIFJlc29ydCAmIFNwYVwiLFxyXG4gICAgZGVzdGluYXRpb246IFwiVHVsdW1cIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiAxMCxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNCxcclxuICAgICAgc3BhOiA4LFxyXG4gICAgICBmb29kOiA4LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA0LFxyXG4gICAgICBjdWx0dXJlOiA3LFxyXG4gICAgICBvdXRkb29yOiA4LFxyXG4gICAgICBmYW1pbHk6IDhcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC41LFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA2NzU0LFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwiaHlhdHQgemlsYXJhIGNhcCBjYW5hXCI6IHtcclxuICAgIG5hbWU6IFwiSHlhdHQgWmlsYXJhIENhcCBDYW5hXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJDYXAgQ2FuYVwiLFxyXG4gICAgY291bnRyeTogXCJEb21pbmljYW4gUmVwdWJsaWNcIixcclxuICAgIGFpcnBvcnRDb2RlOiBcIlBVSlwiLFxyXG4gICAgZmVhdHVyZXM6IHtcclxuICAgICAgYmVhY2g6IDEwLFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA4LFxyXG4gICAgICBzcGE6IDksXHJcbiAgICAgIGZvb2Q6IDksXHJcbiAgICAgIG5pZ2h0bGlmZTogOCxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDUsXHJcbiAgICAgIG91dGRvb3I6IDgsXHJcbiAgICAgIGZhbWlseTogNVxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA1LjAsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDk4MjEsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwic2VjcmV0cyBjYXAgY2FuYVwiOiB7XHJcbiAgICBuYW1lOiBcIlNlY3JldHMgQ2FwIENhbmFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIkNhcCBDYW5hXCIsXHJcbiAgICBjb3VudHJ5OiBcIkRvbWluaWNhbiBSZXB1YmxpY1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiUFVKXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogMTAsXHJcbiAgICAgIHBvb2w6IDksXHJcbiAgICAgIGdvbGY6IDksXHJcbiAgICAgIHNwYTogOSxcclxuICAgICAgZm9vZDogOSxcclxuICAgICAgbmlnaHRsaWZlOiA4LFxyXG4gICAgICBzaG9wcGluZzogNixcclxuICAgICAgY3VsdHVyZTogNSxcclxuICAgICAgb3V0ZG9vcjogOCxcclxuICAgICAgZmFtaWx5OiA2XHJcbiAgICB9LFxyXG4gICAgdHJpcEFkdmlzb3JSYXRpbmc6IDQuNSxcclxuICAgIHRyaXBBZHZpc29yUmV2aWV3czogODQzMixcclxuICAgIHByaWNlUmFuZ2U6IFwiJCQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJkcmVhbXMgb255eCByZXNvcnQgJiBzcGFcIjoge1xyXG4gICAgbmFtZTogXCJEcmVhbXMgT255eCBSZXNvcnQgJiBTcGFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIlB1bnRhIENhbmFcIixcclxuICAgIGNvdW50cnk6IFwiRG9taW5pY2FuIFJlcHVibGljXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJQVUpcIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA2LFxyXG4gICAgICBzcGE6IDgsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDQsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogOFxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDU2NDMsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJyb3lhbHRvbiBjaGljIHB1bnRhIGNhbmFcIjoge1xyXG4gICAgbmFtZTogXCJSb3lhbHRvbiBDSElDIFB1bnRhIENhbmFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIlB1bnRhIENhbmFcIixcclxuICAgIGNvdW50cnk6IFwiRG9taW5pY2FuIFJlcHVibGljXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJQVUpcIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA2LFxyXG4gICAgICBzcGE6IDgsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogOSxcclxuICAgICAgc2hvcHBpbmc6IDcsXHJcbiAgICAgIGN1bHR1cmU6IDQsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogNVxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDcyMzQsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJpYmVyb3N0YXIgZ3JhbmQgYsOhdmFyb1wiOiB7XHJcbiAgICBuYW1lOiBcIkliZXJvc3RhciBHcmFuZCBCw6F2YXJvXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJCw6F2YXJvXCIsXHJcbiAgICBjb3VudHJ5OiBcIkRvbWluaWNhbiBSZXB1YmxpY1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiUFVKXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogMTAsXHJcbiAgICAgIHBvb2w6IDgsXHJcbiAgICAgIGdvbGY6IDcsXHJcbiAgICAgIHNwYTogOCxcclxuICAgICAgZm9vZDogOCxcclxuICAgICAgbmlnaHRsaWZlOiA3LFxyXG4gICAgICBzaG9wcGluZzogNixcclxuICAgICAgY3VsdHVyZTogNCxcclxuICAgICAgb3V0ZG9vcjogNyxcclxuICAgICAgZmFtaWx5OiA3XHJcbiAgICB9LFxyXG4gICAgdHJpcEFkdmlzb3JSYXRpbmc6IDQuNSxcclxuICAgIHRyaXBBZHZpc29yUmV2aWV3czogNjgyMSxcclxuICAgIHByaWNlUmFuZ2U6IFwiJCQkJFwiLFxyXG4gICAgYWxsSW5jbHVzaXZlOiB0cnVlXHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRSZXNvcnQobmFtZTogc3RyaW5nKTogUmVzb3J0IHwgbnVsbCB7XHJcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5hbWUudG9Mb3dlckNhc2UoKS50cmltKCk7XHJcbiAgcmV0dXJuIFJFU09SVF9EQVRBQkFTRVtub3JtYWxpemVkXSB8fCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUmVzb3J0U2NvcmUocmVzb3J0OiBSZXNvcnQsIHByZWZlcmVuY2VzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IG51bWJlciB7XHJcbiAgaWYgKCFwcmVmZXJlbmNlcykgcmV0dXJuIDA7XHJcbiAgXHJcbiAgbGV0IHNjb3JlID0gMDtcclxuICBsZXQgdG90YWxXZWlnaHQgPSAwO1xyXG4gIFxyXG4gIGZvciAoY29uc3QgW2ZlYXR1cmUsIHVzZXJSYXRpbmddIG9mIE9iamVjdC5lbnRyaWVzKHByZWZlcmVuY2VzKSkge1xyXG4gICAgaWYgKHVzZXJSYXRpbmcgJiYgdXNlclJhdGluZyA+IDApIHtcclxuICAgICAgY29uc3QgcmVzb3J0UmF0aW5nID0gcmVzb3J0LmZlYXR1cmVzW2ZlYXR1cmUgYXMga2V5b2YgdHlwZW9mIHJlc29ydC5mZWF0dXJlc10gfHwgNTtcclxuICAgICAgc2NvcmUgKz0gKHVzZXJSYXRpbmcgKiByZXNvcnRSYXRpbmcpO1xyXG4gICAgICB0b3RhbFdlaWdodCArPSAodXNlclJhdGluZyAqIDEwKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgLy8gQWRkIFRyaXBBZHZpc29yIGJvbnVzXHJcbiAgaWYgKHJlc29ydC50cmlwQWR2aXNvclJhdGluZykge1xyXG4gICAgc2NvcmUgKz0gcmVzb3J0LnRyaXBBZHZpc29yUmF0aW5nICogMTAwO1xyXG4gIH1cclxuICBcclxuICByZXR1cm4gdG90YWxXZWlnaHQgPiAwID8gTWF0aC5yb3VuZCgoc2NvcmUgLyB0b3RhbFdlaWdodCkgKiAxMDAwKSA6IDA7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJFU09SVF9EQVRBQkFTRSIsIm5hbWUiLCJkZXN0aW5hdGlvbiIsImNvdW50cnkiLCJhaXJwb3J0Q29kZSIsImZlYXR1cmVzIiwiYmVhY2giLCJwb29sIiwiZ29sZiIsInNwYSIsImZvb2QiLCJuaWdodGxpZmUiLCJzaG9wcGluZyIsImN1bHR1cmUiLCJvdXRkb29yIiwiZmFtaWx5IiwidHJpcEFkdmlzb3JSYXRpbmciLCJ0cmlwQWR2aXNvclJldmlld3MiLCJwcmljZVJhbmdlIiwiYWxsSW5jbHVzaXZlIiwiZmluZFJlc29ydCIsIm5vcm1hbGl6ZWQiLCJ0b0xvd2VyQ2FzZSIsInRyaW0iLCJjYWxjdWxhdGVSZXNvcnRTY29yZSIsInJlc29ydCIsInByZWZlcmVuY2VzIiwic2NvcmUiLCJ0b3RhbFdlaWdodCIsImZlYXR1cmUiLCJ1c2VyUmF0aW5nIiwiT2JqZWN0IiwiZW50cmllcyIsInJlc29ydFJhdGluZyIsIk1hdGgiLCJyb3VuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./lib/resorts.ts\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
;
|
|
|
|
// load runtime
|
|
var __webpack_require__ = require("../../../webpack-runtime.js");
|
|
__webpack_require__.C(exports);
|
|
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
|
var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/date-fns","vendor-chunks/next","vendor-chunks/zod"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!")));
|
|
module.exports = __webpack_exports__;
|
|
|
|
})(); |