@mirai/core 0.3.206 → 0.3.208
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/build/Core.js +51 -48
- package/build/Core.js.map +1 -1
- package/build/components/Finder/Finder.js +18 -7
- package/build/components/Finder/Finder.js.map +1 -1
- package/build/components/Finder/components/Places/Places.js +3 -1
- package/build/components/Finder/components/Places/Places.js.map +1 -1
- package/build/components/Finder/helpers/getForwarderUrl.js +1 -1
- package/build/components/Finder/helpers/getForwarderUrl.js.map +1 -1
- package/build/components/Rates/Rates.Unavailability.js +5 -5
- package/build/components/Rates/Rates.Unavailability.js.map +1 -1
- package/build/components/Rates/Rates.js +8 -0
- package/build/components/Rates/Rates.js.map +1 -1
- package/build/components/Rates/Rates.l10n.js +3 -0
- package/build/components/Rates/Rates.l10n.js.map +1 -1
- package/build/components/Rates/components/CardHotel/CardHotel.js +9 -11
- package/build/components/Rates/components/CardHotel/CardHotel.js.map +1 -1
- package/build/components/Rates/components/Item/Item.l10n.js +3 -0
- package/build/components/Rates/components/Item/Item.l10n.js.map +1 -1
- package/build/components/Rates/components/Item/components/ModalInfo/ModalInfo.js +8 -1
- package/build/components/Rates/components/Item/components/ModalInfo/ModalInfo.js.map +1 -1
- package/build/components/Rates/components/ModalExtras/ModalExtras.js +34 -9
- package/build/components/Rates/components/ModalExtras/ModalExtras.js.map +1 -1
- package/build/components/Rates/components/ModalExtras/ModalExtras.l10n.js +6 -9
- package/build/components/Rates/components/ModalExtras/ModalExtras.l10n.js.map +1 -1
- package/build/components/Rates/components/ModalExtras/ModalExtras.module.css +4 -0
- package/build/components/Rates/components/ModalExtras/helpers/getCaption.js +41 -5
- package/build/components/Rates/components/ModalExtras/helpers/getCaption.js.map +1 -1
- package/build/components/helpers/getOccupationItems.js +43 -0
- package/build/components/helpers/getOccupationItems.js.map +1 -0
- package/build/components/helpers/index.js +11 -0
- package/build/components/helpers/index.js.map +1 -1
- package/build/services/Rates/__tests__/__mocks__/rates-response-no-taxes.json +3 -0
- package/build/services/Rates/constants.js +6 -6
- package/build/services/Rates/constants.js.map +1 -1
- package/build/services/Rates/extras.js +17 -7
- package/build/services/Rates/extras.js.map +1 -1
- package/build/services/Rates/helpers/getCalendarSuggestions.js +5 -5
- package/build/services/Rates/helpers/getCalendarSuggestions.js.map +1 -1
- package/build/services/Rates/helpers/getItems.js +13 -10
- package/build/services/Rates/helpers/getItems.js.map +1 -1
- package/build/services/Rates/helpers/getOccupationSuggestions.js +8 -2
- package/build/services/Rates/helpers/getOccupationSuggestions.js.map +1 -1
- package/build/services/Rates/helpers/parseUnavailability.js +2 -1
- package/build/services/Rates/helpers/parseUnavailability.js.map +1 -1
- package/build/services/Rates/rates.js +2 -1
- package/build/services/Rates/rates.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["SINGLE","DOUBLE","BED_DISPOSITION","exports","ONE_SINGLE","amount","type","ONE_DOUBLE","TWO_SINGLES","TWO_DOUBLES","THREE_SINGLES","ONE_DOUBLE_ONE_SINGLE","FOUR_SINGLES","ONE_DOUBLE_TWO_SINGLES","FIVE_SINGLES","ONE_DOUBLE_THREE_SINGLES","TWO_DOUBLES_ONE_SINGLE","MORE_THAN_FIVE_BEDS","NO_BED","BED_TYPE","CURRENCIES_WITHOUT_DECIMALS","DEFAULT_LANGUAGE","EXTERNAL","TYPE","URL","en","es","de","fr","it","pt","ru","nl","EXTRA_TYPE","ROOM","GUEST","RANGE","UNIT","FREQUENCY","ONCE","NIGHTLY","KEY_HASH","
|
|
1
|
+
{"version":3,"file":"constants.js","names":["SINGLE","DOUBLE","BED_DISPOSITION","exports","ONE_SINGLE","amount","type","ONE_DOUBLE","TWO_SINGLES","TWO_DOUBLES","THREE_SINGLES","ONE_DOUBLE_ONE_SINGLE","FOUR_SINGLES","ONE_DOUBLE_TWO_SINGLES","FIVE_SINGLES","ONE_DOUBLE_THREE_SINGLES","TWO_DOUBLES_ONE_SINGLE","MORE_THAN_FIVE_BEDS","NO_BED","BED_TYPE","CURRENCIES_WITHOUT_DECIMALS","DEFAULT_LANGUAGE","EXTERNAL","TYPE","URL","en","es","de","fr","it","pt","ru","nl","EXTRA_TYPE","ROOM","GUEST","RANGE","UNIT","FREQUENCY","ONCE","NIGHTLY","KEY_HASH","GUEST_TYPE","ALL","ADULT","CHILD","imperial","bed","size","metric","VALID"],"sources":["../../../src/services/Rates/constants.js"],"sourcesContent":["const SINGLE = 1;\nconst DOUBLE = 2;\n\nconst BED_DISPOSITION = {\n ONE_SINGLE: [{ amount: 1, type: SINGLE }],\n ONE_DOUBLE: [{ amount: 1, type: DOUBLE }],\n TWO_SINGLES: [{ amount: 2, type: SINGLE }],\n TWO_DOUBLES: [{ amount: 2, type: DOUBLE }],\n THREE_SINGLES: [{ amount: 3, type: SINGLE }],\n ONE_DOUBLE_ONE_SINGLE: [\n { amount: 1, type: DOUBLE },\n { amount: 1, type: SINGLE },\n ],\n FOUR_SINGLES: [{ amount: 4, type: SINGLE }],\n ONE_DOUBLE_TWO_SINGLES: [\n { amount: 1, type: DOUBLE },\n { amount: 2, type: SINGLE },\n ],\n FIVE_SINGLES: [{ amount: 5, type: SINGLE }],\n ONE_DOUBLE_THREE_SINGLES: [\n { amount: 1, type: DOUBLE },\n { amount: 3, type: SINGLE },\n ],\n TWO_DOUBLES_ONE_SINGLE: [\n { amount: 2, type: DOUBLE },\n { amount: 1, type: SINGLE },\n ],\n MORE_THAN_FIVE_BEDS: [\n { amount: 6, type: DOUBLE },\n { amount: 6, type: SINGLE },\n ],\n NO_BED: [],\n};\n\nconst BED_TYPE = { SINGLE, DOUBLE };\n\nconst CURRENCIES_WITHOUT_DECIMALS = ['KRW', 'JPY', 'IDR', 'ISK'];\n\nconst DEFAULT_LANGUAGE = 'en';\n\nconst EXTERNAL = {\n TYPE: 3,\n URL: {\n en: 'https://www.pestana.com/en/contents/pgc/pgc-regulation',\n es: 'https://www.pestana.com/es/contents/pgc/pgc-reglamento',\n de: 'https://www.pestana.com/de/contents/pgc/pgc-regulierung',\n fr: 'https://www.pestana.com/fr/contents/pgc/pgc-reglement',\n it: 'https://www.pestana.com/it/contents/pgc/pgc-regolazione',\n pt: 'https://www.pestana.com/pt/contents/pgc/pgc-regulamento',\n ru: 'https://www.pestana.com/ru/contents/pgc/pgc-regulation',\n nl: 'https://www.pestana.com/en/contents/pgc/pgc-regulation',\n },\n};\n\nconst EXTRA_TYPE = {\n ROOM: 0,\n GUEST: 1,\n RANGE: 2,\n UNIT: 3,\n};\n\nconst FREQUENCY = {\n ONCE: 0,\n NIGHTLY: 1,\n};\n\nconst KEY_HASH = 'm14357';\n\nconst GUEST_TYPE = {\n ALL: 1,\n ADULT: 2,\n CHILD: 3,\n};\n\nconst UNIT = {\n imperial: { bed: 'inches', size: 'sq ft' },\n metric: { bed: 'cm', size: 'm²' },\n};\n\nconst VALID = 'VALID';\n\nexport {\n BED_DISPOSITION,\n BED_TYPE,\n CURRENCIES_WITHOUT_DECIMALS,\n DEFAULT_LANGUAGE,\n EXTERNAL,\n EXTRA_TYPE,\n FREQUENCY,\n KEY_HASH,\n GUEST_TYPE,\n UNIT,\n VALID,\n};\n"],"mappings":"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"}
|
|
@@ -11,13 +11,19 @@ var _helpers = require("./helpers");
|
|
|
11
11
|
/* eslint-disable no-async-promise-executor */
|
|
12
12
|
|
|
13
13
|
const {
|
|
14
|
+
GUEST,
|
|
14
15
|
RANGE,
|
|
15
16
|
ROOM,
|
|
16
|
-
GUEST,
|
|
17
17
|
UNIT
|
|
18
18
|
} = _constants.EXTRA_TYPE;
|
|
19
|
+
const {
|
|
20
|
+
ADULT,
|
|
21
|
+
CHILD
|
|
22
|
+
} = _constants.GUEST_TYPE;
|
|
19
23
|
const extras = function () {
|
|
20
24
|
let {
|
|
25
|
+
adults,
|
|
26
|
+
children,
|
|
21
27
|
clubDiscount: applyClubDiscount,
|
|
22
28
|
currency: userCurrency,
|
|
23
29
|
hotelCurrency = userCurrency,
|
|
@@ -76,10 +82,10 @@ const extras = function () {
|
|
|
76
82
|
return includedInOffer || !draft;
|
|
77
83
|
}).map(id => {
|
|
78
84
|
const {
|
|
79
|
-
ageCategory
|
|
85
|
+
ageCategory,
|
|
80
86
|
conditionDetails: conditions,
|
|
81
|
-
defaultQuantity
|
|
82
|
-
description
|
|
87
|
+
defaultQuantity,
|
|
88
|
+
description,
|
|
83
89
|
includedInOffer: included,
|
|
84
90
|
guestsPresent: guestThreshold,
|
|
85
91
|
name: title,
|
|
@@ -94,8 +100,13 @@ const extras = function () {
|
|
|
94
100
|
priceOptionValues: priceOptions,
|
|
95
101
|
showApplyNights: inputNights,
|
|
96
102
|
showApplyPersons: inputGuests,
|
|
103
|
+
subtitle,
|
|
97
104
|
taxesInformation: taxes
|
|
98
105
|
} = extras[id] || {};
|
|
106
|
+
const text = subtitle ? "".concat(subtitle, ". ").concat(description) : description;
|
|
107
|
+
const guestType = _constants.GUEST_TYPE[ageCategory];
|
|
108
|
+
const type = perRoom ? ROOM : perRange ? RANGE : perReserve ? UNIT : perGuest ? GUEST : undefined;
|
|
109
|
+
const amount = [GUEST, RANGE].includes(type) ? guestType === ADULT ? adults : guestType === CHILD ? children : adults + children : defaultQuantity;
|
|
99
110
|
const {
|
|
100
111
|
discounts: [discount] = [],
|
|
101
112
|
value: {
|
|
@@ -108,7 +119,6 @@ const extras = function () {
|
|
|
108
119
|
} = _ref2;
|
|
109
120
|
return option === amount;
|
|
110
121
|
}) || priceOptions[0];
|
|
111
|
-
const type = perRoom ? ROOM : perRange ? RANGE : perReserve ? UNIT : perGuest ? GUEST : undefined;
|
|
112
122
|
const {
|
|
113
123
|
percent,
|
|
114
124
|
value: {
|
|
@@ -160,14 +170,14 @@ const extras = function () {
|
|
|
160
170
|
percent
|
|
161
171
|
},
|
|
162
172
|
frequency: perNight ? _constants.FREQUENCY.NIGHTLY : _constants.FREQUENCY.ONCE,
|
|
173
|
+
guestThreshold,
|
|
174
|
+
guestType,
|
|
163
175
|
id,
|
|
164
176
|
image,
|
|
165
177
|
included,
|
|
166
178
|
inputGuests,
|
|
167
179
|
inputNights,
|
|
168
|
-
guestThreshold,
|
|
169
180
|
nights,
|
|
170
|
-
priceType: _constants.PRICE_TYPE[guestType],
|
|
171
181
|
taxes: price !== basePrice ? taxes : undefined,
|
|
172
182
|
text: text ? text : undefined,
|
|
173
183
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extras.js","names":["_dataSources","require","_services","_constants","_helpers","RANGE","ROOM","GUEST","UNIT","EXTRA_TYPE","extras","clubDiscount","applyClubDiscount","currency","userCurrency","hotelCurrency","locale","offersAppliedBySelectedRoom","price","rooms","session","authorization","others","arguments","length","undefined","Promise","resolve","reject","language","split","params","Object","entries","accessClubToken","lang","totalPrice","filter","_ref","value","response","request","hostname","process","env","SERVICE_BOOKING","endpoint","concat","URLSearchParams","headers","catch","error","result","sortedExtrasIds","ServiceCurrency","exchange","id","draft","includedInOffer","map","ageCategory","guestType","conditionDetails","conditions","defaultQuantity","amount","description","text","included","guestsPresent","guestThreshold","name","title","nights","occupationsPresent","accommodationThreshold","perGuest","perNight","perRange","perReserve","perRoom","photo","image","priceOptionValues","priceOptions","showApplyNights","inputNights","showApplyPersons","inputGuests","taxesInformation","taxes","discounts","discount","basePrice","withTaxes","find","_ref2","option","type","percent","originalPrice","getValue","base","fromEntries","Array","from","_","indexAmount","indexNights","withoutTaxes","_ref3","getAmount","getPrice","normalize","baseValue","frequency","FREQUENCY","NIGHTLY","ONCE","priceType","PRICE_TYPE","exports"],"sources":["../../../src/services/Rates/extras.js"],"sourcesContent":["/* eslint-disable no-async-promise-executor */\nimport { request } from '@mirai/data-sources';\nimport { ServiceCurrency } from '@mirai/services';\n\nimport { EXTRA_TYPE, FREQUENCY, PRICE_TYPE } from './constants';\nimport { getPrice } from './helpers';\n\nconst { RANGE, ROOM, GUEST, UNIT } = EXTRA_TYPE;\n\nexport const extras = ({\n clubDiscount: applyClubDiscount,\n currency: userCurrency,\n hotelCurrency = userCurrency,\n locale,\n offersAppliedBySelectedRoom,\n price,\n rooms,\n session: { authorization } = {},\n ...others\n} = {}) =>\n new Promise(async (resolve, reject) => {\n if (!userCurrency || !locale) return reject();\n\n const language = locale?.split('-')[0];\n const params = Object.entries({\n applyClubDiscount,\n currency: userCurrency,\n ...others,\n accessClubToken: authorization,\n lang: language,\n rooms,\n offersAppliedBySelectedRoom,\n totalPrice: price,\n }).filter(([, value]) => value !== undefined);\n\n const response = await request({\n hostname: process.env.SERVICE_BOOKING,\n endpoint: `/request_extras_v2.json?${new URLSearchParams(params)}`,\n //TODO: back have to change the endpoint for don`t have remove this headers\n headers: { 'Content-Type': undefined, 'X-Requested-With': undefined },\n }).catch((error) => {\n reject(error);\n });\n\n if (!response || response.result === 'EXCEPTION') return reject({ error: 'Upss, something bad happened!' }); //TODO\n\n const { extras = {}, sortedExtrasIds = [] } = response;\n const currency = userCurrency || hotelCurrency;\n if (userCurrency !== hotelCurrency) await ServiceCurrency.exchange(currency);\n\n resolve({\n extras: sortedExtrasIds\n .filter((id) => {\n const { draft, includedInOffer } = extras[id] || {};\n\n return includedInOffer || !draft;\n })\n .map((id) => {\n const {\n ageCategory: guestType,\n conditionDetails: conditions,\n defaultQuantity: amount,\n description: text,\n includedInOffer: included,\n guestsPresent: guestThreshold,\n name: title,\n nights,\n occupationsPresent: accommodationThreshold,\n perGuest,\n perNight,\n perRange,\n perReserve,\n perRoom,\n photo: image,\n priceOptionValues: priceOptions,\n showApplyNights: inputNights,\n showApplyPersons: inputGuests,\n taxesInformation: taxes,\n } = extras[id] || {};\n\n const { discounts: [discount] = [], value: { price: basePrice, withTaxes: price } = {} } =\n priceOptions.find(({ option }) => option === amount) || priceOptions[0];\n const type = perRoom ? ROOM : perRange ? RANGE : perReserve ? UNIT : perGuest ? GUEST : undefined;\n const { percent, value: { price: originalPrice } = {} } = discount || {};\n\n const getValue = (base = false) =>\n Object.fromEntries(\n Array.from({ length: amount }, (_, indexAmount) => [\n indexAmount + 1,\n Object.fromEntries(\n Array.from({ length: nights }, (_, indexNights) => {\n const amount = indexAmount + 1;\n const nights = indexNights + 1;\n const { value: { price, withTaxes, withoutTaxes: basePrice } = {} } =\n priceOptions.find(({ option }) => option === amount) || priceOptions[0];\n const taxes = withTaxes - basePrice;\n\n const getAmount = (value) =>\n getPrice({\n currency,\n hotelCurrency: base ? currency : hotelCurrency,\n normalize: false,\n price: type !== RANGE ? (perNight ? amount * nights * value : amount * value) : value,\n });\n\n return [\n nights,\n { basePrice: getAmount(basePrice), price: getAmount(price), taxes: getAmount(taxes) },\n ];\n }),\n ),\n ]),\n );\n\n return {\n accommodationThreshold,\n amount,\n baseValue: getValue(true),\n conditions: conditions ? conditions : undefined,\n discount: discount && { originalPrice, percent },\n frequency: perNight ? FREQUENCY.NIGHTLY : FREQUENCY.ONCE,\n id,\n image,\n included,\n inputGuests,\n inputNights,\n guestThreshold,\n nights,\n priceType: PRICE_TYPE[guestType],\n taxes: price !== basePrice ? taxes : undefined,\n text: text ? text : undefined,\n title,\n type,\n value: getValue(),\n };\n }),\n });\n });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extras.js","names":["_dataSources","require","_services","_constants","_helpers","GUEST","RANGE","ROOM","UNIT","EXTRA_TYPE","ADULT","CHILD","GUEST_TYPE","extras","adults","children","clubDiscount","applyClubDiscount","currency","userCurrency","hotelCurrency","locale","offersAppliedBySelectedRoom","price","rooms","session","authorization","others","arguments","length","undefined","Promise","resolve","reject","language","split","params","Object","entries","accessClubToken","lang","totalPrice","filter","_ref","value","response","request","hostname","process","env","SERVICE_BOOKING","endpoint","concat","URLSearchParams","headers","catch","error","result","sortedExtrasIds","ServiceCurrency","exchange","id","draft","includedInOffer","map","ageCategory","conditionDetails","conditions","defaultQuantity","description","included","guestsPresent","guestThreshold","name","title","nights","occupationsPresent","accommodationThreshold","perGuest","perNight","perRange","perReserve","perRoom","photo","image","priceOptionValues","priceOptions","showApplyNights","inputNights","showApplyPersons","inputGuests","subtitle","taxesInformation","taxes","text","guestType","type","amount","includes","discounts","discount","basePrice","withTaxes","find","_ref2","option","percent","originalPrice","getValue","base","fromEntries","Array","from","_","indexAmount","indexNights","withoutTaxes","_ref3","getAmount","getPrice","normalize","baseValue","frequency","FREQUENCY","NIGHTLY","ONCE","exports"],"sources":["../../../src/services/Rates/extras.js"],"sourcesContent":["/* eslint-disable no-async-promise-executor */\nimport { request } from '@mirai/data-sources';\nimport { ServiceCurrency } from '@mirai/services';\n\nimport { EXTRA_TYPE, FREQUENCY, GUEST_TYPE } from './constants';\nimport { getPrice } from './helpers';\n\nconst { GUEST, RANGE, ROOM, UNIT } = EXTRA_TYPE;\nconst { ADULT, CHILD } = GUEST_TYPE;\n\nexport const extras = ({\n adults,\n children,\n clubDiscount: applyClubDiscount,\n currency: userCurrency,\n hotelCurrency = userCurrency,\n locale,\n offersAppliedBySelectedRoom,\n price,\n rooms,\n session: { authorization } = {},\n ...others\n} = {}) =>\n new Promise(async (resolve, reject) => {\n if (!userCurrency || !locale) return reject();\n\n const language = locale?.split('-')[0];\n const params = Object.entries({\n applyClubDiscount,\n currency: userCurrency,\n ...others,\n accessClubToken: authorization,\n lang: language,\n rooms,\n offersAppliedBySelectedRoom,\n totalPrice: price,\n }).filter(([, value]) => value !== undefined);\n\n const response = await request({\n hostname: process.env.SERVICE_BOOKING,\n endpoint: `/request_extras_v2.json?${new URLSearchParams(params)}`,\n //TODO: back have to change the endpoint for don`t have remove this headers\n headers: { 'Content-Type': undefined, 'X-Requested-With': undefined },\n }).catch((error) => {\n reject(error);\n });\n\n if (!response || response.result === 'EXCEPTION') return reject({ error: 'Upss, something bad happened!' }); //TODO\n\n const { extras = {}, sortedExtrasIds = [] } = response;\n const currency = userCurrency || hotelCurrency;\n if (userCurrency !== hotelCurrency) await ServiceCurrency.exchange(currency);\n\n resolve({\n extras: sortedExtrasIds\n .filter((id) => {\n const { draft, includedInOffer } = extras[id] || {};\n\n return includedInOffer || !draft;\n })\n .map((id) => {\n const {\n ageCategory,\n conditionDetails: conditions,\n defaultQuantity,\n description,\n includedInOffer: included,\n guestsPresent: guestThreshold,\n name: title,\n nights,\n occupationsPresent: accommodationThreshold,\n perGuest,\n perNight,\n perRange,\n perReserve,\n perRoom,\n photo: image,\n priceOptionValues: priceOptions,\n showApplyNights: inputNights,\n showApplyPersons: inputGuests,\n subtitle,\n taxesInformation: taxes,\n } = extras[id] || {};\n\n const text = subtitle ? `${subtitle}. ${description}` : description;\n const guestType = GUEST_TYPE[ageCategory];\n const type = perRoom ? ROOM : perRange ? RANGE : perReserve ? UNIT : perGuest ? GUEST : undefined;\n const amount = [GUEST, RANGE].includes(type)\n ? guestType === ADULT\n ? adults\n : guestType === CHILD\n ? children\n : adults + children\n : defaultQuantity;\n\n const { discounts: [discount] = [], value: { price: basePrice, withTaxes: price } = {} } =\n priceOptions.find(({ option }) => option === amount) || priceOptions[0];\n const { percent, value: { price: originalPrice } = {} } = discount || {};\n\n const getValue = (base = false) =>\n Object.fromEntries(\n Array.from({ length: amount }, (_, indexAmount) => [\n indexAmount + 1,\n Object.fromEntries(\n Array.from({ length: nights }, (_, indexNights) => {\n const amount = indexAmount + 1;\n const nights = indexNights + 1;\n const { value: { price, withTaxes, withoutTaxes: basePrice } = {} } =\n priceOptions.find(({ option }) => option === amount) || priceOptions[0];\n const taxes = withTaxes - basePrice;\n\n const getAmount = (value) =>\n getPrice({\n currency,\n hotelCurrency: base ? currency : hotelCurrency,\n normalize: false,\n price: type !== RANGE ? (perNight ? amount * nights * value : amount * value) : value,\n });\n\n return [\n nights,\n { basePrice: getAmount(basePrice), price: getAmount(price), taxes: getAmount(taxes) },\n ];\n }),\n ),\n ]),\n );\n\n return {\n accommodationThreshold,\n amount,\n baseValue: getValue(true),\n conditions: conditions ? conditions : undefined,\n discount: discount && { originalPrice, percent },\n frequency: perNight ? FREQUENCY.NIGHTLY : FREQUENCY.ONCE,\n guestThreshold,\n guestType,\n id,\n image,\n included,\n inputGuests,\n inputNights,\n nights,\n taxes: price !== basePrice ? taxes : undefined,\n text: text ? text : undefined,\n title,\n type,\n value: getValue(),\n };\n }),\n });\n });\n"],"mappings":"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"}
|
|
@@ -18,15 +18,15 @@ const getCalendarSuggestions = function () {
|
|
|
18
18
|
} = {},
|
|
19
19
|
checkIn: propCheckIn,
|
|
20
20
|
minStayType,
|
|
21
|
-
nights
|
|
21
|
+
nights: propNights
|
|
22
22
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
23
23
|
let allSuggestions = [];
|
|
24
24
|
const date = (0, _locale.parseDate)(initialDate);
|
|
25
|
-
const
|
|
25
|
+
const nights = Number(propNights);
|
|
26
26
|
for (let index = 0; index < daysInfo.length; index++) {
|
|
27
27
|
const from = index > 0 ? (0, _locale.dateCalc)(date, index) : date;
|
|
28
|
-
const rangeDays = daysInfo.slice(index, index +
|
|
29
|
-
if (rangeDays.length !==
|
|
28
|
+
const rangeDays = daysInfo.slice(index, index + nights);
|
|
29
|
+
if (rangeDays.length !== nights) break;
|
|
30
30
|
if (rangeDays.every(day => day > 0) && (minStayType === CHECK_IN && (daysInfo[index] === 1 || daysInfo[index] > 1 && nights >= daysInfo[index]) || minStayType === STAY && daysInfo[index] > 0 && nights >= Math.max(...rangeDays))) {
|
|
31
31
|
//!TODO: get price for nights and occupation
|
|
32
32
|
allSuggestions.push({
|
|
@@ -46,7 +46,7 @@ const getCalendarSuggestions = function () {
|
|
|
46
46
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
47
47
|
let index = arguments.length > 1 ? arguments[1] : undefined;
|
|
48
48
|
if (from > checkIn && !hasNext || hasNext && suggestions.length < 3 && checkIn.getDay() === from.getDay()) {
|
|
49
|
-
if (!hasPrevious && !hasNext && index > 0) {
|
|
49
|
+
if (!hasPrevious && !hasNext && index > 0 && allSuggestions[index - 1].from.getTime() !== checkIn.getTime()) {
|
|
50
50
|
suggestions.push(allSuggestions[index - 1]);
|
|
51
51
|
hasPrevious = true;
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCalendarSuggestions.js","names":["_locale","require","_Core","CHECK_IN","STAY","MIN_STAY_TYPE","getCalendarSuggestions","calendar","daysInfo","initialDate","checkIn","propCheckIn","minStayType","nights","arguments","length","undefined","allSuggestions","date","parseDate","
|
|
1
|
+
{"version":3,"file":"getCalendarSuggestions.js","names":["_locale","require","_Core","CHECK_IN","STAY","MIN_STAY_TYPE","getCalendarSuggestions","calendar","daysInfo","initialDate","checkIn","propCheckIn","minStayType","nights","propNights","arguments","length","undefined","allSuggestions","date","parseDate","Number","index","from","dateCalc","rangeDays","slice","every","day","Math","max","push","to","price","floor","random","suggestions","hasPrevious","hasNext","forEach","getDay","getTime","exports"],"sources":["../../../../src/services/Rates/helpers/getCalendarSuggestions.js"],"sourcesContent":["import { dateCalc, parseDate } from '@mirai/locale';\n\nimport { MIN_STAY_TYPE } from '../../../Core.constants';\n\nconst { CHECK_IN, STAY } = MIN_STAY_TYPE;\n\nexport const getCalendarSuggestions = ({\n calendar: { daysInfo = [], initialDate } = {},\n checkIn: propCheckIn,\n minStayType,\n nights: propNights,\n} = {}) => {\n let allSuggestions = [];\n const date = parseDate(initialDate);\n const nights = Number(propNights);\n\n for (let index = 0; index < daysInfo.length; index++) {\n const from = index > 0 ? dateCalc(date, index) : date;\n const rangeDays = daysInfo.slice(index, index + nights);\n if (rangeDays.length !== nights) break;\n\n if (\n rangeDays.every((day) => day > 0) &&\n ((minStayType === CHECK_IN && (daysInfo[index] === 1 || (daysInfo[index] > 1 && nights >= daysInfo[index]))) ||\n (minStayType === STAY && daysInfo[index] > 0 && nights >= Math.max(...rangeDays)))\n ) {\n //!TODO: get price for nights and occupation\n allSuggestions.push({ from, to: dateCalc(from, nights), price: Math.floor(Math.random() * 500) + 100 });\n }\n }\n\n const checkIn = parseDate(propCheckIn);\n let suggestions = [];\n let hasPrevious = false;\n let hasNext = false;\n allSuggestions.forEach(({ from } = {}, index) => {\n if ((from > checkIn && !hasNext) || (hasNext && suggestions.length < 3 && checkIn.getDay() === from.getDay())) {\n if (!hasPrevious && !hasNext && index > 0 && allSuggestions[index - 1].from.getTime() !== checkIn.getTime()) {\n suggestions.push(allSuggestions[index - 1]);\n hasPrevious = true;\n }\n suggestions.push(allSuggestions[index]);\n hasNext = true;\n }\n });\n\n return suggestions;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAEA,MAAM;EAAEE,QAAQ;EAAEC;AAAK,CAAC,GAAGC,mBAAa;AAEjC,MAAMC,sBAAsB,GAAG,SAAAA,CAAA,EAK3B;EAAA,IAL4B;IACrCC,QAAQ,EAAE;MAAEC,QAAQ,GAAG,EAAE;MAAEC;IAAY,CAAC,GAAG,CAAC,CAAC;IAC7CC,OAAO,EAAEC,WAAW;IACpBC,WAAW;IACXC,MAAM,EAAEC;EACV,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACJ,IAAIG,cAAc,GAAG,EAAE;EACvB,MAAMC,IAAI,GAAG,IAAAC,iBAAS,EAACX,WAAW,CAAC;EACnC,MAAMI,MAAM,GAAGQ,MAAM,CAACP,UAAU,CAAC;EAEjC,KAAK,IAAIQ,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGd,QAAQ,CAACQ,MAAM,EAAEM,KAAK,EAAE,EAAE;IACpD,MAAMC,IAAI,GAAGD,KAAK,GAAG,CAAC,GAAG,IAAAE,gBAAQ,EAACL,IAAI,EAAEG,KAAK,CAAC,GAAGH,IAAI;IACrD,MAAMM,SAAS,GAAGjB,QAAQ,CAACkB,KAAK,CAACJ,KAAK,EAAEA,KAAK,GAAGT,MAAM,CAAC;IACvD,IAAIY,SAAS,CAACT,MAAM,KAAKH,MAAM,EAAE;IAEjC,IACEY,SAAS,CAACE,KAAK,CAAEC,GAAG,IAAKA,GAAG,GAAG,CAAC,CAAC,KAC/BhB,WAAW,KAAKT,QAAQ,KAAKK,QAAQ,CAACc,KAAK,CAAC,KAAK,CAAC,IAAKd,QAAQ,CAACc,KAAK,CAAC,GAAG,CAAC,IAAIT,MAAM,IAAIL,QAAQ,CAACc,KAAK,CAAE,CAAC,IACxGV,WAAW,KAAKR,IAAI,IAAII,QAAQ,CAACc,KAAK,CAAC,GAAG,CAAC,IAAIT,MAAM,IAAIgB,IAAI,CAACC,GAAG,CAAC,GAAGL,SAAS,CAAE,CAAC,EACpF;MACA;MACAP,cAAc,CAACa,IAAI,CAAC;QAAER,IAAI;QAAES,EAAE,EAAE,IAAAR,gBAAQ,EAACD,IAAI,EAAEV,MAAM,CAAC;QAAEoB,KAAK,EAAEJ,IAAI,CAACK,KAAK,CAACL,IAAI,CAACM,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG;MAAI,CAAC,CAAC;IACzG;EACF;EAEA,MAAMzB,OAAO,GAAG,IAAAU,iBAAS,EAACT,WAAW,CAAC;EACtC,IAAIyB,WAAW,GAAG,EAAE;EACpB,IAAIC,WAAW,GAAG,KAAK;EACvB,IAAIC,OAAO,GAAG,KAAK;EACnBpB,cAAc,CAACqB,OAAO,CAAC,YAA0B;IAAA,IAAzB;MAAEhB;IAAK,CAAC,GAAAR,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEO,KAAK,GAAAP,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IAC1C,IAAKM,IAAI,GAAGb,OAAO,IAAI,CAAC4B,OAAO,IAAMA,OAAO,IAAIF,WAAW,CAACpB,MAAM,GAAG,CAAC,IAAIN,OAAO,CAAC8B,MAAM,CAAC,CAAC,KAAKjB,IAAI,CAACiB,MAAM,CAAC,CAAE,EAAE;MAC7G,IAAI,CAACH,WAAW,IAAI,CAACC,OAAO,IAAIhB,KAAK,GAAG,CAAC,IAAIJ,cAAc,CAACI,KAAK,GAAG,CAAC,CAAC,CAACC,IAAI,CAACkB,OAAO,CAAC,CAAC,KAAK/B,OAAO,CAAC+B,OAAO,CAAC,CAAC,EAAE;QAC3GL,WAAW,CAACL,IAAI,CAACb,cAAc,CAACI,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3Ce,WAAW,GAAG,IAAI;MACpB;MACAD,WAAW,CAACL,IAAI,CAACb,cAAc,CAACI,KAAK,CAAC,CAAC;MACvCgB,OAAO,GAAG,IAAI;IAChB;EACF,CAAC,CAAC;EAEF,OAAOF,WAAW;AACpB,CAAC;AAACM,OAAA,CAAApC,sBAAA,GAAAA,sBAAA"}
|
|
@@ -31,6 +31,7 @@ const getItems = function () {
|
|
|
31
31
|
description,
|
|
32
32
|
roomTypeInfo: {
|
|
33
33
|
bedDistributions: bedType = [],
|
|
34
|
+
doubleBedWidth,
|
|
34
35
|
galleryMedia: {
|
|
35
36
|
url3D,
|
|
36
37
|
urlVideo
|
|
@@ -53,20 +54,22 @@ const getItems = function () {
|
|
|
53
54
|
rates
|
|
54
55
|
} = Object.values(occupationOptions)[0] || {};
|
|
55
56
|
const maxOccupation = adults + children;
|
|
57
|
+
const bedTypes = bedType.reduce((result, next) => {
|
|
58
|
+
_constants.BED_DISPOSITION[next].forEach(function () {
|
|
59
|
+
let {
|
|
60
|
+
amount,
|
|
61
|
+
type
|
|
62
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
63
|
+
if ([DOUBLE, SINGLE].includes(type) && amount > 0) result[result.length ? 1 : 0] = type;
|
|
64
|
+
});
|
|
65
|
+
return result;
|
|
66
|
+
}, []);
|
|
56
67
|
return {
|
|
57
68
|
amenities: (0, _parseAmenities.parseAmenities)(info),
|
|
58
69
|
availability,
|
|
59
70
|
bedDisposition: bedType.map(type => _constants.BED_DISPOSITION[type]),
|
|
60
|
-
bedTypes
|
|
61
|
-
|
|
62
|
-
let {
|
|
63
|
-
amount,
|
|
64
|
-
type
|
|
65
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
66
|
-
if ([DOUBLE, SINGLE].includes(type) && amount > 0) result[result.length ? 1 : 0] = type;
|
|
67
|
-
});
|
|
68
|
-
return result;
|
|
69
|
-
}, []),
|
|
71
|
+
bedTypes,
|
|
72
|
+
doubleBedWidth: doubleBedWidth && bedTypes.includes(DOUBLE) ? "".concat(doubleBedWidth, " ").concat(_constants.UNIT[unit].bed) : undefined,
|
|
70
73
|
...(0, _parseBoards.parseBoards)({
|
|
71
74
|
currency,
|
|
72
75
|
fees,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getItems.js","names":["_parseAmenities","require","_parseBoards","_constants","DOUBLE","SINGLE","BED_TYPE","getItems","currency","currencyCode","hotelCurrency","measureUnit","unit","roomTypes","showLocalTaxes","fees","vatIncluded","taxes","arguments","length","undefined","Object","values","map","amountAvailable","availability","name","newInfoRoom","info","occupationOptions","description","roomTypeInfo","bedDistributions","bedType","galleryMedia","url3D","urlVideo","photos","roomSize","size","occupationQuantities","numFirstRangeChildren","minRange","numSecondRangeChildren","maxRange","numAdults","adults","numBabies","babies","totalChildren","children","posibilities","nights","nightsDeal","rates","maxOccupation","
|
|
1
|
+
{"version":3,"file":"getItems.js","names":["_parseAmenities","require","_parseBoards","_constants","DOUBLE","SINGLE","BED_TYPE","getItems","currency","currencyCode","hotelCurrency","measureUnit","unit","roomTypes","showLocalTaxes","fees","vatIncluded","taxes","arguments","length","undefined","Object","values","map","amountAvailable","availability","name","newInfoRoom","info","occupationOptions","description","roomTypeInfo","bedDistributions","bedType","doubleBedWidth","galleryMedia","url3D","urlVideo","photos","roomSize","size","occupationQuantities","numFirstRangeChildren","minRange","numSecondRangeChildren","maxRange","numAdults","adults","numBabies","babies","totalChildren","children","posibilities","nights","nightsDeal","rates","maxOccupation","bedTypes","reduce","result","next","BED_DISPOSITION","forEach","amount","type","includes","amenities","parseAmenities","bedDisposition","concat","UNIT","bed","parseBoards","images","photoAltDescription","alt","urlLarge","large","urlMediumRect","thumbnail","media","occupation","ages","filter","item","exports"],"sources":["../../../../src/services/Rates/helpers/getItems.js"],"sourcesContent":["import { parseAmenities } from './parseAmenities';\nimport { parseBoards } from './parseBoards';\nimport { BED_DISPOSITION, BED_TYPE, UNIT } from '../constants';\n\nconst { DOUBLE, SINGLE } = BED_TYPE;\n\nexport const getItems = ({\n currency,\n currencyCode: hotelCurrency,\n measureUnit: unit,\n roomTypes,\n showLocalTaxes: fees,\n vatIncluded: taxes,\n} = {}) =>\n Object.values(roomTypes).map(\n ({ amountAvailable: availability, name, newInfoRoom: info = {}, occupationOptions = {} } = {}) => {\n const {\n description,\n roomTypeInfo: {\n bedDistributions: bedType = [],\n doubleBedWidth,\n galleryMedia: { url3D, urlVideo } = {},\n photos,\n roomSize: size,\n } = {},\n } = info;\n\n const {\n occupationQuantities: {\n numFirstRangeChildren: minRange = 0,\n numSecondRangeChildren: maxRange = 0,\n numAdults: adults = 0,\n numBabies: babies = 0,\n totalChildren: children = 0,\n } = {},\n posibilities: [{ nights: nightsDeal } = {}] = [],\n rates,\n } = Object.values(occupationOptions)[0] || {};\n\n const maxOccupation = adults + children;\n const bedTypes = bedType.reduce((result, next) => {\n BED_DISPOSITION[next].forEach(({ amount, type } = {}) => {\n if ([DOUBLE, SINGLE].includes(type) && amount > 0) result[result.length ? 1 : 0] = type;\n });\n\n return result;\n }, []);\n\n return {\n amenities: parseAmenities(info),\n availability,\n bedDisposition: bedType.map((type) => BED_DISPOSITION[type]),\n bedTypes,\n doubleBedWidth: doubleBedWidth && bedTypes.includes(DOUBLE) ? `${doubleBedWidth} ${UNIT[unit].bed}` : undefined,\n ...parseBoards({ currency, fees, hotelCurrency, rates, taxes }),\n description,\n images: photos?.map(({ photoAltDescription: alt, urlLarge: large, urlMediumRect: thumbnail } = {}) => ({\n alt,\n large,\n thumbnail,\n })),\n name,\n nightsDeal,\n maxOccupation,\n media: url3D || urlVideo ? { url3D, urlVideo } : undefined,\n occupation: maxOccupation\n ? [\n adults > 0 ? { type: 2, amount: adults } : undefined,\n children > 0 ? { type: 3, ages: [minRange, maxRange], amount: children } : undefined,\n babies > 0 ? { type: 4, amount: babies } : undefined,\n ].filter((item) => !!item)\n : [],\n size: size ? `${size} ${UNIT[unit].size}` : undefined,\n };\n },\n );\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,MAAM;EAAEG,MAAM;EAAEC;AAAO,CAAC,GAAGC,mBAAQ;AAE5B,MAAMC,QAAQ,GAAG,SAAAA,CAAA;EAAA,IAAC;IACvBC,QAAQ;IACRC,YAAY,EAAEC,aAAa;IAC3BC,WAAW,EAAEC,IAAI;IACjBC,SAAS;IACTC,cAAc,EAAEC,IAAI;IACpBC,WAAW,EAAEC;EACf,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,OACJG,MAAM,CAACC,MAAM,CAACT,SAAS,CAAC,CAACU,GAAG,CAC1B,YAAkG;IAAA,IAAjG;MAAEC,eAAe,EAAEC,YAAY;MAAEC,IAAI;MAAEC,WAAW,EAAEC,IAAI,GAAG,CAAC,CAAC;MAAEC,iBAAiB,GAAG,CAAC;IAAE,CAAC,GAAAX,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAC3F,MAAM;MACJY,WAAW;MACXC,YAAY,EAAE;QACZC,gBAAgB,EAAEC,OAAO,GAAG,EAAE;QAC9BC,cAAc;QACdC,YAAY,EAAE;UAAEC,KAAK;UAAEC;QAAS,CAAC,GAAG,CAAC,CAAC;QACtCC,MAAM;QACNC,QAAQ,EAAEC;MACZ,CAAC,GAAG,CAAC;IACP,CAAC,GAAGZ,IAAI;IAER,MAAM;MACJa,oBAAoB,EAAE;QACpBC,qBAAqB,EAAEC,QAAQ,GAAG,CAAC;QACnCC,sBAAsB,EAAEC,QAAQ,GAAG,CAAC;QACpCC,SAAS,EAAEC,MAAM,GAAG,CAAC;QACrBC,SAAS,EAAEC,MAAM,GAAG,CAAC;QACrBC,aAAa,EAAEC,QAAQ,GAAG;MAC5B,CAAC,GAAG,CAAC,CAAC;MACNC,YAAY,EAAE,CAAC;QAAEC,MAAM,EAAEC;MAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;MAChDC;IACF,CAAC,GAAGlC,MAAM,CAACC,MAAM,CAACO,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE7C,MAAM2B,aAAa,GAAGT,MAAM,GAAGI,QAAQ;IACvC,MAAMM,QAAQ,GAAGxB,OAAO,CAACyB,MAAM,CAAC,CAACC,MAAM,EAAEC,IAAI,KAAK;MAChDC,0BAAe,CAACD,IAAI,CAAC,CAACE,OAAO,CAAC,YAA2B;QAAA,IAA1B;UAAEC,MAAM;UAAEC;QAAK,CAAC,GAAA9C,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;QAClD,IAAI,CAACd,MAAM,EAAEC,MAAM,CAAC,CAAC4D,QAAQ,CAACD,IAAI,CAAC,IAAID,MAAM,GAAG,CAAC,EAAEJ,MAAM,CAACA,MAAM,CAACxC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG6C,IAAI;MACzF,CAAC,CAAC;MAEF,OAAOL,MAAM;IACf,CAAC,EAAE,EAAE,CAAC;IAEN,OAAO;MACLO,SAAS,EAAE,IAAAC,8BAAc,EAACvC,IAAI,CAAC;MAC/BH,YAAY;MACZ2C,cAAc,EAAEnC,OAAO,CAACV,GAAG,CAAEyC,IAAI,IAAKH,0BAAe,CAACG,IAAI,CAAC,CAAC;MAC5DP,QAAQ;MACRvB,cAAc,EAAEA,cAAc,IAAIuB,QAAQ,CAACQ,QAAQ,CAAC7D,MAAM,CAAC,MAAAiE,MAAA,CAAMnC,cAAc,OAAAmC,MAAA,CAAIC,eAAI,CAAC1D,IAAI,CAAC,CAAC2D,GAAG,IAAKnD,SAAS;MAC/G,GAAG,IAAAoD,wBAAW,EAAC;QAAEhE,QAAQ;QAAEO,IAAI;QAAEL,aAAa;QAAE6C,KAAK;QAAEtC;MAAM,CAAC,CAAC;MAC/Da,WAAW;MACX2C,MAAM,EAAEnC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEf,GAAG,CAAC;QAAA,IAAC;UAAEmD,mBAAmB,EAAEC,GAAG;UAAEC,QAAQ,EAAEC,KAAK;UAAEC,aAAa,EAAEC;QAAU,CAAC,GAAA7D,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;QAAA,OAAM;UACrGyD,GAAG;UACHE,KAAK;UACLE;QACF,CAAC;MAAA,CAAC,CAAC;MACHrD,IAAI;MACJ4B,UAAU;MACVE,aAAa;MACbwB,KAAK,EAAE5C,KAAK,IAAIC,QAAQ,GAAG;QAAED,KAAK;QAAEC;MAAS,CAAC,GAAGjB,SAAS;MAC1D6D,UAAU,EAAEzB,aAAa,GACrB,CACET,MAAM,GAAG,CAAC,GAAG;QAAEiB,IAAI,EAAE,CAAC;QAAED,MAAM,EAAEhB;MAAO,CAAC,GAAG3B,SAAS,EACpD+B,QAAQ,GAAG,CAAC,GAAG;QAAEa,IAAI,EAAE,CAAC;QAAEkB,IAAI,EAAE,CAACvC,QAAQ,EAAEE,QAAQ,CAAC;QAAEkB,MAAM,EAAEZ;MAAS,CAAC,GAAG/B,SAAS,EACpF6B,MAAM,GAAG,CAAC,GAAG;QAAEe,IAAI,EAAE,CAAC;QAAED,MAAM,EAAEd;MAAO,CAAC,GAAG7B,SAAS,CACrD,CAAC+D,MAAM,CAAEC,IAAI,IAAK,CAAC,CAACA,IAAI,CAAC,GAC1B,EAAE;MACN5C,IAAI,EAAEA,IAAI,MAAA6B,MAAA,CAAM7B,IAAI,OAAA6B,MAAA,CAAIC,eAAI,CAAC1D,IAAI,CAAC,CAAC4B,IAAI,IAAKpB;IAC9C,CAAC;EACH,CACF,CAAC;AAAA;AAACiE,OAAA,CAAA9E,QAAA,GAAAA,QAAA"}
|
|
@@ -15,6 +15,7 @@ const {
|
|
|
15
15
|
const getOccupationSuggestions = _ref => {
|
|
16
16
|
let {
|
|
17
17
|
infantAge,
|
|
18
|
+
maxRooms,
|
|
18
19
|
occupation = [],
|
|
19
20
|
...others
|
|
20
21
|
} = _ref;
|
|
@@ -175,7 +176,12 @@ const getOccupationSuggestions = _ref => {
|
|
|
175
176
|
hasFees,
|
|
176
177
|
hasTaxes
|
|
177
178
|
}] = rooms || [];
|
|
178
|
-
return suggestions.
|
|
179
|
+
return suggestions.filter(function () {
|
|
180
|
+
let {
|
|
181
|
+
rooms
|
|
182
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
183
|
+
return rooms.length <= maxRooms && adults >= rooms.length;
|
|
184
|
+
}).map(function () {
|
|
179
185
|
let {
|
|
180
186
|
price,
|
|
181
187
|
rooms
|
|
@@ -186,7 +192,7 @@ const getOccupationSuggestions = _ref => {
|
|
|
186
192
|
price,
|
|
187
193
|
rooms
|
|
188
194
|
};
|
|
189
|
-
}).sort((a, b) => a.price - b.price);
|
|
195
|
+
}).sort((a, b) => a.price - b.price).slice(0, 3);
|
|
190
196
|
};
|
|
191
197
|
exports.getOccupationSuggestions = getOccupationSuggestions;
|
|
192
198
|
//# sourceMappingURL=getOccupationSuggestions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOccupationSuggestions.js","names":["_compareSuggestions","require","_getRooms","_shared__","ADULT","CHILD","GUEST","TYPE_OCCUPATION","getOccupationSuggestions","_ref","infantAge","occupation","others","isGuest","flat","some","type","arguments","length","undefined","adults","reduce","total","amount","children","ages","agesChildren","filter","totalAges","ageBaby","find","age","rooms","getRooms","suggestions","search","_ref2","availability","babies","startIndex","suggestion","compareSuggestions","initAges","push","map","name","Array","fill","pop","price","index","room","totalRooms","id","totalAvailability","occupied","hasFees","hasTaxes","sort","a","b","exports"],"sources":["../../../../src/services/Rates/helpers/getOccupationSuggestions.js"],"sourcesContent":["import { compareSuggestions } from './compareSuggestions';\nimport { getRooms } from './getRooms';\nimport { TYPE_OCCUPATION } from '../../../components/__shared__';\n\nconst { ADULT, CHILD, GUEST } = TYPE_OCCUPATION;\n\nexport const getOccupationSuggestions = ({ infantAge, occupation = [], ...others }) => {\n const isGuest = occupation.flat().some(({ type } = {}) => type === GUEST);\n const adults = occupation.flat().reduce((total, { amount, type } = {}) => total + (type !== CHILD ? amount : 0), 0);\n const { amount: children, ages: agesChildren } = occupation\n .flat()\n .filter(({ type } = {}) => type === CHILD)\n .reduce(\n ({ ages: totalAges, amount: total } = {}, { ages, amount } = {}) => ({\n amount: total + amount,\n ages: [...totalAges, ...ages],\n }),\n { amount: 0, ages: [] },\n );\n const ageBaby = agesChildren.find((age) => age < infantAge);\n const rooms = getRooms(others);\n const suggestions = [];\n\n const search = ({ adults, availability, babies, children, rooms, startIndex = 0, suggestion = [] }) => {\n if (\n adults === 0 &&\n children === 0 &&\n babies === 0 &&\n availability >= 0 &&\n !compareSuggestions({ suggestion, suggestions })\n ) {\n const initAges = [...agesChildren].filter((age) => age !== ageBaby);\n suggestions.push({\n rooms: suggestion.map(({ adults, babies, children, name } = {}) => {\n const occupation = [];\n if (adults > 0) {\n occupation.push({ ages: Array(adults).fill(undefined), amount: adults, type: isGuest ? GUEST : ADULT });\n }\n\n const ages = Array(children)\n .fill(undefined)\n .map(() => initAges.pop());\n if (babies > 0) ages.push(ageBaby);\n if (children + babies > 0) occupation.push({ ages, amount: children + babies, type: CHILD });\n\n return { name, occupation };\n }),\n price: suggestion.reduce((total, { price } = {}) => total + price, 0),\n suggestion,\n });\n\n return;\n }\n\n for (let index = startIndex; index < rooms.length; index++) {\n const room = rooms[index];\n if (room.adults <= adults && room.children <= children && room.babies <= babies) {\n const totalRooms = rooms.filter(({ id } = {}) => id === room.id).length;\n const totalAvailability = rooms\n .filter(({ id } = {}) => id === room.id)\n .reduce((total, { availability } = {}) => total + availability, 0);\n const occupied = suggestion.filter(({ id } = {}) => id === room.id).length;\n\n search({\n adults: adults - room.adults,\n availability: totalAvailability - totalRooms - occupied,\n babies: babies - room.babies,\n children: children - room.children,\n rooms,\n startIndex: index + 1,\n suggestion: [\n ...suggestion,\n {\n id: room.id,\n adults: room.adults,\n children: room.children,\n babies: room.babies,\n name: room.name,\n price: room.price,\n },\n ],\n });\n }\n }\n };\n\n search({ adults, babies: ageBaby >= 0 ? 1 : 0, children: ageBaby >= 0 ? children - 1 : children, rooms });\n\n if (suggestions.length === 0) {\n search({\n adults: ageBaby >= 0 ? adults + children - 1 : adults + children,\n babies: ageBaby >= 0 ? 1 : 0,\n children: 0,\n rooms,\n });\n }\n\n const [{ hasFees, hasTaxes }] = rooms || [];\n\n return suggestions\n .map(({ price, rooms } = {}) => ({ hasFees, hasTaxes, price, rooms }))\n .sort((a, b) => a.price - b.price);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEA,MAAM;EAAEG,KAAK;EAAEC,KAAK;EAAEC;AAAM,CAAC,GAAGC,yBAAe;AAExC,MAAMC,wBAAwB,GAAGC,IAAA,IAA+C;EAAA,IAA9C;IAAEC,SAAS;IAAEC,UAAU,GAAG,EAAE;IAAE,GAAGC;EAAO,CAAC,GAAAH,IAAA;EAChF,MAAMI,OAAO,GAAGF,UAAU,CAACG,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC;IAAA,IAAC;MAAEC;IAAK,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,OAAKD,IAAI,KAAKV,KAAK;EAAA,EAAC;EACzE,MAAMc,MAAM,GAAGT,UAAU,CAACG,IAAI,CAAC,CAAC,CAACO,MAAM,CAAC,UAACC,KAAK;IAAA,IAAE;MAAEC,MAAM;MAAEP;IAAK,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,OAAKK,KAAK,IAAIN,IAAI,KAAKX,KAAK,GAAGkB,MAAM,GAAG,CAAC,CAAC;EAAA,GAAE,CAAC,CAAC;EACnH,MAAM;IAAEA,MAAM,EAAEC,QAAQ;IAAEC,IAAI,EAAEC;EAAa,CAAC,GAAGf,UAAU,CACxDG,IAAI,CAAC,CAAC,CACNa,MAAM,CAAC;IAAA,IAAC;MAAEX;IAAK,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,OAAKD,IAAI,KAAKX,KAAK;EAAA,EAAC,CACzCgB,MAAM,CACL;IAAA,IAAC;MAAEI,IAAI,EAAEG,SAAS;MAAEL,MAAM,EAAED;IAAM,CAAC,GAAAL,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAE;MAAEQ,IAAI;MAAEF;IAAO,CAAC,GAAAN,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MACnEM,MAAM,EAAED,KAAK,GAAGC,MAAM;MACtBE,IAAI,EAAE,CAAC,GAAGG,SAAS,EAAE,GAAGH,IAAI;IAC9B,CAAC;EAAA,CAAC,EACF;IAAEF,MAAM,EAAE,CAAC;IAAEE,IAAI,EAAE;EAAG,CACxB,CAAC;EACH,MAAMI,OAAO,GAAGH,YAAY,CAACI,IAAI,CAAEC,GAAG,IAAKA,GAAG,GAAGrB,SAAS,CAAC;EAC3D,MAAMsB,KAAK,GAAG,IAAAC,kBAAQ,EAACrB,MAAM,CAAC;EAC9B,MAAMsB,WAAW,GAAG,EAAE;EAEtB,MAAMC,MAAM,GAAGC,KAAA,IAAwF;IAAA,IAAvF;MAAEhB,MAAM;MAAEiB,YAAY;MAAEC,MAAM;MAAEd,QAAQ;MAAEQ,KAAK;MAAEO,UAAU,GAAG,CAAC;MAAEC,UAAU,GAAG;IAAG,CAAC,GAAAJ,KAAA;IAChG,IACEhB,MAAM,KAAK,CAAC,IACZI,QAAQ,KAAK,CAAC,IACdc,MAAM,KAAK,CAAC,IACZD,YAAY,IAAI,CAAC,IACjB,CAAC,IAAAI,sCAAkB,EAAC;MAAED,UAAU;MAAEN;IAAY,CAAC,CAAC,EAChD;MACA,MAAMQ,QAAQ,GAAG,CAAC,GAAGhB,YAAY,CAAC,CAACC,MAAM,CAAEI,GAAG,IAAKA,GAAG,KAAKF,OAAO,CAAC;MACnEK,WAAW,CAACS,IAAI,CAAC;QACfX,KAAK,EAAEQ,UAAU,CAACI,GAAG,CAAC,YAA6C;UAAA,IAA5C;YAAExB,MAAM;YAAEkB,MAAM;YAAEd,QAAQ;YAAEqB;UAAK,CAAC,GAAA5B,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;UAC5D,MAAMN,UAAU,GAAG,EAAE;UACrB,IAAIS,MAAM,GAAG,CAAC,EAAE;YACdT,UAAU,CAACgC,IAAI,CAAC;cAAElB,IAAI,EAAEqB,KAAK,CAAC1B,MAAM,CAAC,CAAC2B,IAAI,CAAC5B,SAAS,CAAC;cAAEI,MAAM,EAAEH,MAAM;cAAEJ,IAAI,EAAEH,OAAO,GAAGP,KAAK,GAAGF;YAAM,CAAC,CAAC;UACzG;UAEA,MAAMqB,IAAI,GAAGqB,KAAK,CAACtB,QAAQ,CAAC,CACzBuB,IAAI,CAAC5B,SAAS,CAAC,CACfyB,GAAG,CAAC,MAAMF,QAAQ,CAACM,GAAG,CAAC,CAAC,CAAC;UAC5B,IAAIV,MAAM,GAAG,CAAC,EAAEb,IAAI,CAACkB,IAAI,CAACd,OAAO,CAAC;UAClC,IAAIL,QAAQ,GAAGc,MAAM,GAAG,CAAC,EAAE3B,UAAU,CAACgC,IAAI,CAAC;YAAElB,IAAI;YAAEF,MAAM,EAAEC,QAAQ,GAAGc,MAAM;YAAEtB,IAAI,EAAEX;UAAM,CAAC,CAAC;UAE5F,OAAO;YAAEwC,IAAI;YAAElC;UAAW,CAAC;QAC7B,CAAC,CAAC;QACFsC,KAAK,EAAET,UAAU,CAACnB,MAAM,CAAC,UAACC,KAAK;UAAA,IAAE;YAAE2B;UAAM,CAAC,GAAAhC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;UAAA,OAAKK,KAAK,GAAG2B,KAAK;QAAA,GAAE,CAAC,CAAC;QACrET;MACF,CAAC,CAAC;MAEF;IACF;IAEA,KAAK,IAAIU,KAAK,GAAGX,UAAU,EAAEW,KAAK,GAAGlB,KAAK,CAACd,MAAM,EAAEgC,KAAK,EAAE,EAAE;MAC1D,MAAMC,IAAI,GAAGnB,KAAK,CAACkB,KAAK,CAAC;MACzB,IAAIC,IAAI,CAAC/B,MAAM,IAAIA,MAAM,IAAI+B,IAAI,CAAC3B,QAAQ,IAAIA,QAAQ,IAAI2B,IAAI,CAACb,MAAM,IAAIA,MAAM,EAAE;QAC/E,MAAMc,UAAU,GAAGpB,KAAK,CAACL,MAAM,CAAC;UAAA,IAAC;YAAE0B;UAAG,CAAC,GAAApC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;UAAA,OAAKoC,EAAE,KAAKF,IAAI,CAACE,EAAE;QAAA,EAAC,CAACnC,MAAM;QACvE,MAAMoC,iBAAiB,GAAGtB,KAAK,CAC5BL,MAAM,CAAC;UAAA,IAAC;YAAE0B;UAAG,CAAC,GAAApC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;UAAA,OAAKoC,EAAE,KAAKF,IAAI,CAACE,EAAE;QAAA,EAAC,CACvChC,MAAM,CAAC,UAACC,KAAK;UAAA,IAAE;YAAEe;UAAa,CAAC,GAAApB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;UAAA,OAAKK,KAAK,GAAGe,YAAY;QAAA,GAAE,CAAC,CAAC;QACpE,MAAMkB,QAAQ,GAAGf,UAAU,CAACb,MAAM,CAAC;UAAA,IAAC;YAAE0B;UAAG,CAAC,GAAApC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;UAAA,OAAKoC,EAAE,KAAKF,IAAI,CAACE,EAAE;QAAA,EAAC,CAACnC,MAAM;QAE1EiB,MAAM,CAAC;UACLf,MAAM,EAAEA,MAAM,GAAG+B,IAAI,CAAC/B,MAAM;UAC5BiB,YAAY,EAAEiB,iBAAiB,GAAGF,UAAU,GAAGG,QAAQ;UACvDjB,MAAM,EAAEA,MAAM,GAAGa,IAAI,CAACb,MAAM;UAC5Bd,QAAQ,EAAEA,QAAQ,GAAG2B,IAAI,CAAC3B,QAAQ;UAClCQ,KAAK;UACLO,UAAU,EAAEW,KAAK,GAAG,CAAC;UACrBV,UAAU,EAAE,CACV,GAAGA,UAAU,EACb;YACEa,EAAE,EAAEF,IAAI,CAACE,EAAE;YACXjC,MAAM,EAAE+B,IAAI,CAAC/B,MAAM;YACnBI,QAAQ,EAAE2B,IAAI,CAAC3B,QAAQ;YACvBc,MAAM,EAAEa,IAAI,CAACb,MAAM;YACnBO,IAAI,EAAEM,IAAI,CAACN,IAAI;YACfI,KAAK,EAAEE,IAAI,CAACF;UACd,CAAC;QAEL,CAAC,CAAC;MACJ;IACF;EACF,CAAC;EAEDd,MAAM,CAAC;IAAEf,MAAM;IAAEkB,MAAM,EAAET,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAAEL,QAAQ,EAAEK,OAAO,IAAI,CAAC,GAAGL,QAAQ,GAAG,CAAC,GAAGA,QAAQ;IAAEQ;EAAM,CAAC,CAAC;EAEzG,IAAIE,WAAW,CAAChB,MAAM,KAAK,CAAC,EAAE;IAC5BiB,MAAM,CAAC;MACLf,MAAM,EAAES,OAAO,IAAI,CAAC,GAAGT,MAAM,GAAGI,QAAQ,GAAG,CAAC,GAAGJ,MAAM,GAAGI,QAAQ;MAChEc,MAAM,EAAET,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;MAC5BL,QAAQ,EAAE,CAAC;MACXQ;IACF,CAAC,CAAC;EACJ;EAEA,MAAM,CAAC;IAAEwB,OAAO;IAAEC;EAAS,CAAC,CAAC,GAAGzB,KAAK,IAAI,EAAE;EAE3C,OAAOE,WAAW,CACfU,GAAG,CAAC;IAAA,IAAC;MAAEK,KAAK;MAAEjB;IAAM,CAAC,GAAAf,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MAAEuC,OAAO;MAAEC,QAAQ;MAAER,KAAK;MAAEjB;IAAM,CAAC;EAAA,CAAC,CAAC,CACrE0B,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACV,KAAK,GAAGW,CAAC,CAACX,KAAK,CAAC;AACtC,CAAC;AAACY,OAAA,CAAArD,wBAAA,GAAAA,wBAAA"}
|
|
1
|
+
{"version":3,"file":"getOccupationSuggestions.js","names":["_compareSuggestions","require","_getRooms","_shared__","ADULT","CHILD","GUEST","TYPE_OCCUPATION","getOccupationSuggestions","_ref","infantAge","maxRooms","occupation","others","isGuest","flat","some","type","arguments","length","undefined","adults","reduce","total","amount","children","ages","agesChildren","filter","totalAges","ageBaby","find","age","rooms","getRooms","suggestions","search","_ref2","availability","babies","startIndex","suggestion","compareSuggestions","initAges","push","map","name","Array","fill","pop","price","index","room","totalRooms","id","totalAvailability","occupied","hasFees","hasTaxes","sort","a","b","slice","exports"],"sources":["../../../../src/services/Rates/helpers/getOccupationSuggestions.js"],"sourcesContent":["import { compareSuggestions } from './compareSuggestions';\nimport { getRooms } from './getRooms';\nimport { TYPE_OCCUPATION } from '../../../components/__shared__';\n\nconst { ADULT, CHILD, GUEST } = TYPE_OCCUPATION;\n\nexport const getOccupationSuggestions = ({ infantAge, maxRooms, occupation = [], ...others }) => {\n const isGuest = occupation.flat().some(({ type } = {}) => type === GUEST);\n const adults = occupation.flat().reduce((total, { amount, type } = {}) => total + (type !== CHILD ? amount : 0), 0);\n const { amount: children, ages: agesChildren } = occupation\n .flat()\n .filter(({ type } = {}) => type === CHILD)\n .reduce(\n ({ ages: totalAges, amount: total } = {}, { ages, amount } = {}) => ({\n amount: total + amount,\n ages: [...totalAges, ...ages],\n }),\n { amount: 0, ages: [] },\n );\n const ageBaby = agesChildren.find((age) => age < infantAge);\n const rooms = getRooms(others);\n const suggestions = [];\n\n const search = ({ adults, availability, babies, children, rooms, startIndex = 0, suggestion = [] }) => {\n if (\n adults === 0 &&\n children === 0 &&\n babies === 0 &&\n availability >= 0 &&\n !compareSuggestions({ suggestion, suggestions })\n ) {\n const initAges = [...agesChildren].filter((age) => age !== ageBaby);\n suggestions.push({\n rooms: suggestion.map(({ adults, babies, children, name } = {}) => {\n const occupation = [];\n if (adults > 0) {\n occupation.push({ ages: Array(adults).fill(undefined), amount: adults, type: isGuest ? GUEST : ADULT });\n }\n\n const ages = Array(children)\n .fill(undefined)\n .map(() => initAges.pop());\n if (babies > 0) ages.push(ageBaby);\n if (children + babies > 0) occupation.push({ ages, amount: children + babies, type: CHILD });\n\n return { name, occupation };\n }),\n price: suggestion.reduce((total, { price } = {}) => total + price, 0),\n suggestion,\n });\n\n return;\n }\n\n for (let index = startIndex; index < rooms.length; index++) {\n const room = rooms[index];\n if (room.adults <= adults && room.children <= children && room.babies <= babies) {\n const totalRooms = rooms.filter(({ id } = {}) => id === room.id).length;\n const totalAvailability = rooms\n .filter(({ id } = {}) => id === room.id)\n .reduce((total, { availability } = {}) => total + availability, 0);\n const occupied = suggestion.filter(({ id } = {}) => id === room.id).length;\n\n search({\n adults: adults - room.adults,\n availability: totalAvailability - totalRooms - occupied,\n babies: babies - room.babies,\n children: children - room.children,\n rooms,\n startIndex: index + 1,\n suggestion: [\n ...suggestion,\n {\n id: room.id,\n adults: room.adults,\n children: room.children,\n babies: room.babies,\n name: room.name,\n price: room.price,\n },\n ],\n });\n }\n }\n };\n\n search({ adults, babies: ageBaby >= 0 ? 1 : 0, children: ageBaby >= 0 ? children - 1 : children, rooms });\n\n if (suggestions.length === 0) {\n search({\n adults: ageBaby >= 0 ? adults + children - 1 : adults + children,\n babies: ageBaby >= 0 ? 1 : 0,\n children: 0,\n rooms,\n });\n }\n\n const [{ hasFees, hasTaxes }] = rooms || [];\n\n return suggestions\n .filter(({ rooms } = {}) => rooms.length <= maxRooms && adults >= rooms.length)\n .map(({ price, rooms } = {}) => ({ hasFees, hasTaxes, price, rooms }))\n .sort((a, b) => a.price - b.price)\n .slice(0, 3);\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseUnavailability.js","names":["_getCalendarSuggestions","require","_getDisabledDates","_getMinStayDates","_getOccupationSuggestions","_getTaxesType","_Core","BY_CHECK_IN","parseUnavailability","availabilitySuggestions","availability","firstChildInterval","hotelEmail","email","hotelPhone","phone","messages","availabilityMessage","noAvailabilityMessage","occupation","propOccupation","roomTypes","showLocalTaxes","fees","vatIncluded","taxes","response","arguments","length","undefined","calendar","disabledDates","description","minStayDates","minStayType","hotels","_availability$hotelSu","minimumStayConfig","config","MIN_STAY_TYPE","CHECK_IN","STAY","getCalendarSuggestions","getDisabledDates","getMinStayDates","noDispoMessage","hotelSuggestions","map","_ref","distanceMessage","distance","idtokenprovider","id","location","name","photo","rates","price","url","rest","split","features","images","join","notOccupationRequested","infantAge","lowerBound","getOccupationSuggestions","hasFees","hasTaxes","hotel","suggestions","taxesType","getTaxesType","exports"],"sources":["../../../../src/services/Rates/helpers/parseUnavailability.js"],"sourcesContent":["import { getCalendarSuggestions } from './getCalendarSuggestions';\nimport { getDisabledDates } from './getDisabledDates';\nimport { getMinStayDates } from './getMinStayDates';\nimport { getOccupationSuggestions } from './getOccupationSuggestions';\nimport { getTaxesType } from './getTaxesType';\nimport { MIN_STAY_TYPE } from '../../../Core.constants';\n\nconst BY_CHECK_IN = 'BY_CHECKIN';\n\nexport const parseUnavailability = ({\n availabilitySuggestions: availability,\n firstChildInterval,\n hotelEmail: email,\n hotelPhone: phone,\n messages: { availabilityMessage, noAvailabilityMessage } = {},\n occupation: propOccupation,\n roomTypes,\n showLocalTaxes: fees,\n vatIncluded: taxes,\n ...response\n} = {}) => {\n let calendar;\n let disabledDates;\n let description;\n let minStayDates;\n let minStayType;\n let occupation;\n let hotels;\n\n if (availability !== null) {\n const { calendar: { minimumStayConfig: config = BY_CHECK_IN } = {} } = availability;\n\n minStayType = config === BY_CHECK_IN ? MIN_STAY_TYPE.CHECK_IN : MIN_STAY_TYPE.STAY;\n calendar = getCalendarSuggestions({ ...availability, ...response, minStayType });\n disabledDates = getDisabledDates(availability);\n minStayDates = getMinStayDates(availability);\n description = noAvailabilityMessage?.noDispoMessage;\n hotels = availability?.hotelSuggestions?.map(\n ({\n distanceMessage: distance,\n idtokenprovider: id,\n location,\n name,\n photo,\n rates: [{ price = 0 } = {}] = [],\n url,\n }) => {\n const [, ...rest] = name.split(' ');\n\n return { features: { distance, location, url }, id, images: [photo], name: rest.join(' '), price: price / 100 };\n },\n );\n }\n if (availabilityMessage !== null && availabilityMessage.notOccupationRequested != null) {\n const infantAge = firstChildInterval?.lowerBound;\n occupation = getOccupationSuggestions({ infantAge, roomTypes, occupation: propOccupation });\n }\n\n const [{ hasFees, hasTaxes } = {}] = occupation || [];\n\n return hotels || calendar || occupation\n ? {\n calendar: { disabledDates, minStayDates, minStayType },\n hotel: { email, phone },\n hotels,\n suggestions: { calendar, description, occupation },\n taxesType: getTaxesType({ fees, hasFees, hasTaxes, taxes }),\n }\n : undefined;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,yBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAEA,MAAMM,WAAW,GAAG,YAAY;AAEzB,MAAMC,mBAAmB,GAAG,SAAAA,CAAA,EAWxB;EAAA,IAXyB;IAClCC,uBAAuB,EAAEC,YAAY;IACrCC,kBAAkB;IAClBC,UAAU,EAAEC,KAAK;IACjBC,UAAU,EAAEC,KAAK;IACjBC,QAAQ,EAAE;MAAEC,mBAAmB;MAAEC;IAAsB,CAAC,GAAG,CAAC,CAAC;IAC7DC,UAAU,EAAEC,cAAc;IAC1BC,SAAS;IACTC,cAAc,EAAEC,IAAI;IACpBC,WAAW,EAAEC,KAAK;IAClB,GAAGC;EACL,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACJ,IAAIG,QAAQ;EACZ,IAAIC,aAAa;EACjB,IAAIC,WAAW;EACf,IAAIC,YAAY;EAChB,IAAIC,WAAW;EACf,IAAIf,UAAU;EACd,IAAIgB,MAAM;EAEV,IAAIzB,YAAY,KAAK,IAAI,EAAE;IAAA,IAAA0B,qBAAA;IACzB,MAAM;MAAEN,QAAQ,EAAE;QAAEO,iBAAiB,EAAEC,MAAM,GAAG/B;MAAY,CAAC,GAAG,CAAC;IAAE,CAAC,GAAGG,YAAY;IAEnFwB,WAAW,GAAGI,MAAM,KAAK/B,WAAW,GAAGgC,mBAAa,CAACC,QAAQ,GAAGD,mBAAa,CAACE,IAAI;IAClFX,QAAQ,GAAG,IAAAY,8CAAsB,EAAC;MAAE,GAAGhC,YAAY;MAAE,GAAGgB,QAAQ;MAAEQ;IAAY,CAAC,CAAC;IAChFH,aAAa,GAAG,IAAAY,kCAAgB,EAACjC,YAAY,CAAC;IAC9CuB,YAAY,GAAG,IAAAW,gCAAe,EAAClC,YAAY,CAAC;IAC5CsB,WAAW,GAAGd,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAE2B,cAAc;IACnDV,MAAM,GAAGzB,YAAY,aAAZA,YAAY,wBAAA0B,qBAAA,GAAZ1B,YAAY,CAAEoC,gBAAgB,cAAAV,qBAAA,uBAA9BA,qBAAA,CAAgCW,GAAG,CAC1CC,IAAA,IAQM;MAAA,IARL;QACCC,eAAe,EAAEC,QAAQ;QACzBC,eAAe,EAAEC,EAAE;QACnBC,QAAQ;QACRC,IAAI;QACJC,KAAK;QACLC,KAAK,EAAE,CAAC;UAAEC,KAAK,GAAG;QAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;QAChCC;MACF,CAAC,GAAAV,IAAA;MACC,MAAM,GAAG,GAAGW,IAAI,CAAC,GAAGL,IAAI,CAACM,KAAK,CAAC,GAAG,CAAC;MAEnC,OAAO;QAAEC,QAAQ,EAAE;UAAEX,QAAQ;UAAEG,QAAQ;UAAEK;QAAI,CAAC;QAAEN,EAAE;QAAEU,MAAM,EAAE,CAACP,KAAK,CAAC;QAAED,IAAI,EAAEK,IAAI,CAACI,IAAI,CAAC,GAAG,CAAC;QAAEN,KAAK,EAAEA,KAAK,GAAG;MAAI,CAAC;IACjH,CACF,CAAC;EACH;EACA,IAAIxC,mBAAmB,KAAK,IAAI,IAAIA,mBAAmB,CAAC+C,sBAAsB,IAAI,IAAI,EAAE;IACtF,MAAMC,SAAS,GAAGtD,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAEuD,UAAU;IAChD/C,UAAU,GAAG,IAAAgD,kDAAwB,EAAC;MAAEF,SAAS;MAAE5C,SAAS;MAAEF,UAAU,EAAEC;
|
|
1
|
+
{"version":3,"file":"parseUnavailability.js","names":["_getCalendarSuggestions","require","_getDisabledDates","_getMinStayDates","_getOccupationSuggestions","_getTaxesType","_Core","BY_CHECK_IN","parseUnavailability","availabilitySuggestions","availability","firstChildInterval","hotelEmail","email","hotelPhone","phone","messages","availabilityMessage","noAvailabilityMessage","occupation","propOccupation","roomTypes","showLocalTaxes","fees","vatIncluded","taxes","response","arguments","length","undefined","calendar","disabledDates","description","minStayDates","minStayType","hotels","_availability$hotelSu","minimumStayConfig","config","MIN_STAY_TYPE","CHECK_IN","STAY","getCalendarSuggestions","getDisabledDates","getMinStayDates","noDispoMessage","hotelSuggestions","map","_ref","distanceMessage","distance","idtokenprovider","id","location","name","photo","rates","price","url","rest","split","features","images","join","notOccupationRequested","infantAge","lowerBound","getOccupationSuggestions","hasFees","hasTaxes","hotel","suggestions","taxesType","getTaxesType","exports"],"sources":["../../../../src/services/Rates/helpers/parseUnavailability.js"],"sourcesContent":["import { getCalendarSuggestions } from './getCalendarSuggestions';\nimport { getDisabledDates } from './getDisabledDates';\nimport { getMinStayDates } from './getMinStayDates';\nimport { getOccupationSuggestions } from './getOccupationSuggestions';\nimport { getTaxesType } from './getTaxesType';\nimport { MIN_STAY_TYPE } from '../../../Core.constants';\n\nconst BY_CHECK_IN = 'BY_CHECKIN';\n\nexport const parseUnavailability = ({\n availabilitySuggestions: availability,\n firstChildInterval,\n hotelEmail: email,\n hotelPhone: phone,\n messages: { availabilityMessage, noAvailabilityMessage } = {},\n occupation: propOccupation,\n roomTypes,\n showLocalTaxes: fees,\n vatIncluded: taxes,\n ...response\n} = {}) => {\n let calendar;\n let disabledDates;\n let description;\n let minStayDates;\n let minStayType;\n let occupation;\n let hotels;\n\n if (availability !== null) {\n const { calendar: { minimumStayConfig: config = BY_CHECK_IN } = {} } = availability;\n\n minStayType = config === BY_CHECK_IN ? MIN_STAY_TYPE.CHECK_IN : MIN_STAY_TYPE.STAY;\n calendar = getCalendarSuggestions({ ...availability, ...response, minStayType });\n disabledDates = getDisabledDates(availability);\n minStayDates = getMinStayDates(availability);\n description = noAvailabilityMessage?.noDispoMessage;\n hotels = availability?.hotelSuggestions?.map(\n ({\n distanceMessage: distance,\n idtokenprovider: id,\n location,\n name,\n photo,\n rates: [{ price = 0 } = {}] = [],\n url,\n }) => {\n const [, ...rest] = name.split(' ');\n\n return { features: { distance, location, url }, id, images: [photo], name: rest.join(' '), price: price / 100 };\n },\n );\n }\n if (availabilityMessage !== null && availabilityMessage.notOccupationRequested != null) {\n const infantAge = firstChildInterval?.lowerBound;\n occupation = getOccupationSuggestions({ infantAge, roomTypes, occupation: propOccupation, ...response });\n }\n\n const [{ hasFees, hasTaxes } = {}] = occupation || [];\n\n return hotels || calendar || occupation\n ? {\n calendar: { disabledDates, minStayDates, minStayType },\n hotel: { email, phone },\n hotels,\n suggestions: { calendar, description, occupation },\n taxesType: getTaxesType({ fees, hasFees, hasTaxes, taxes }),\n }\n : undefined;\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rates.js","names":["_dataSources","require","_services","_jsSha","_interopRequireDefault","_constants","_helpers","obj","__esModule","default","FEATURE","PESTANA","rates","session","authorization","clubDiscount","locale","occupation","userCurrency","others","arguments","length","undefined","Promise","resolve","reject","_club$clubLogin","idtokenprovider","id","checkin","nights","club","authentication","type","rest","language","split","params","Object","entries","applyClubDiscount","cid","sha1","concat","KEY_HASH","currency","accessClubToken","lang","parseExternalToken","filter","_ref","value","response","request","hostname","process","env","SERVICE_BOOKING","endpoint","URLSearchParams","headers","catch","result","error","unavailability","parseUnavailability","checkIn","currencyCode","hotelCurrency","firstChildInterval","hotelverse","messages","availabilityMessage","increments","showLocalTaxes","fees","userCountry","country","vatIncluded","taxes","ServiceCurrency","exchange","infantAge","lowerBound","items","getItems","boards","hasFees","hasTaxes","clubConditions","ServiceFeatures","get","EXTERNAL","URL","DEFAULT_LANGUAGE","externalSignout","TYPE","clubLogin","status","VALID","taxesType","getTaxesType","tracking","parseTracking","exports"],"sources":["../../../src/services/Rates/rates.js"],"sourcesContent":["/* eslint-disable no-async-promise-executor */\nimport { request } from '@mirai/data-sources';\nimport { ServiceCurrency, ServiceFeatures } from '@mirai/services';\nimport sha1 from 'js-sha1';\n\nimport { DEFAULT_LANGUAGE, EXTERNAL, KEY_HASH, VALID } from './constants';\nimport { getItems, getTaxesType, parseExternalToken, parseTracking, parseUnavailability } from './helpers';\n\nconst FEATURE = { PESTANA: 'pestana' };\n\nexport const rates = ({\n session: { authorization } = {},\n clubDiscount,\n locale,\n occupation,\n userCurrency,\n ...others\n} = {}) =>\n new Promise(async (resolve, reject) => {\n const {\n idtokenprovider: id,\n checkin,\n nights,\n club: { authentication: { type } = {} } = {},\n ...rest\n } = others || {};\n\n const language = locale?.split('-')[0];\n\n const params = Object.entries({\n applyClubDiscount: clubDiscount,\n checkin,\n cid: sha1(`${KEY_HASH}-${id}-${checkin}-${nights}`),\n currency: userCurrency,\n idtokenprovider: id,\n nights,\n ...rest,\n accessClubToken: authorization,\n lang: language,\n ...parseExternalToken(rest),\n }).filter(([, value]) => value !== undefined);\n\n const response = await request({\n hostname: process.env.SERVICE_BOOKING,\n endpoint: `/request_availability_v2.json?${new URLSearchParams(params)}`,\n headers: { 'Content-Type': undefined, 'X-Requested-With': undefined },\n }).catch(reject);\n\n if (!response || response.result === 'EXCEPTION') return reject({ error: 'Upss, something bad happened!' }); //TODO\n\n const unavailability = parseUnavailability({ ...response, checkIn: checkin, nights, occupation });\n if (unavailability) return reject(unavailability);\n\n const {\n club,\n currencyCode: hotelCurrency,\n firstChildInterval = {},\n hotelverse,\n messages: { availabilityMessage: { increments } = {} } = {},\n showLocalTaxes: fees,\n userCountry: country,\n vatIncluded: taxes,\n } = response;\n\n const currency = userCurrency || hotelCurrency;\n await ServiceCurrency.exchange(currency);\n\n const infantAge = firstChildInterval?.lowerBound;\n const items = getItems({ ...response, currency });\n\n const [{ boards: [{ fees: hasFees, taxes: hasTaxes } = {}] = [] } = {}] = items || [];\n\n resolve({\n clubConditions: ServiceFeatures.get(FEATURE.PESTANA, id)\n ? EXTERNAL.URL[language] || EXTERNAL.URL[DEFAULT_LANGUAGE]\n : undefined,\n country,\n currency: hotelCurrency,\n externalSignout: authorization && type === EXTERNAL.TYPE && club?.clubLogin?.status !== VALID,\n hotelverse,\n increments: increments || undefined,\n infantAge: infantAge !== null ? infantAge : undefined,\n items,\n taxesType: getTaxesType({ fees, hasFees, hasTaxes, taxes }),\n tracking: parseTracking(response),\n });\n });\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAA2G,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAN3G;;AAQA,MAAMG,OAAO,GAAG;EAAEC,OAAO,EAAE;AAAU,CAAC;AAE/B,MAAMC,KAAK,GAAG,SAAAA,CAAA;EAAA,IAAC;IACpBC,OAAO,EAAE;MAAEC;IAAc,CAAC,GAAG,CAAC,CAAC;IAC/BC,YAAY;IACZC,MAAM;IACNC,UAAU;IACVC,YAAY;IACZ,GAAGC;EACL,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,OACJ,IAAIG,OAAO,CAAC,OAAOC,OAAO,EAAEC,MAAM,KAAK;IAAA,IAAAC,eAAA;IACrC,MAAM;MACJC,eAAe,EAAEC,EAAE;MACnBC,OAAO;MACPC,MAAM;MACNC,IAAI,EAAE;QAAEC,cAAc,EAAE;UAAEC;QAAK,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,CAAC,CAAC;MAC5C,GAAGC;IACL,CAAC,GAAGf,MAAM,IAAI,CAAC,CAAC;IAEhB,MAAMgB,QAAQ,GAAGnB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEoB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAMC,MAAM,GAAGC,MAAM,CAACC,OAAO,CAAC;MAC5BC,iBAAiB,EAAEzB,YAAY;MAC/Bc,OAAO;MACPY,GAAG,EAAE,IAAAC,cAAI,KAAAC,MAAA,CAAIC,mBAAQ,OAAAD,MAAA,CAAIf,EAAE,OAAAe,MAAA,CAAId,OAAO,OAAAc,MAAA,CAAIb,MAAM,CAAE,CAAC;MACnDe,QAAQ,EAAE3B,YAAY;MACtBS,eAAe,EAAEC,EAAE;MACnBE,MAAM;MACN,GAAGI,IAAI;MACPY,eAAe,EAAEhC,aAAa;MAC9BiC,IAAI,EAAEZ,QAAQ;MACd,GAAG,IAAAa,2BAAkB,EAACd,IAAI;IAC5B,CAAC,CAAC,CAACe,MAAM,CAACC,IAAA;MAAA,IAAC,GAAGC,KAAK,CAAC,GAAAD,IAAA;MAAA,OAAKC,KAAK,KAAK7B,SAAS;IAAA,EAAC;IAE7C,MAAM8B,QAAQ,GAAG,MAAM,IAAAC,oBAAO,EAAC;MAC7BC,QAAQ,EAAEC,OAAO,CAACC,GAAG,CAACC,eAAe;MACrCC,QAAQ,mCAAAf,MAAA,CAAmC,IAAIgB,eAAe,CAACtB,MAAM,CAAC,CAAE;MACxEuB,OAAO,EAAE;QAAE,cAAc,EAAEtC,SAAS;QAAE,kBAAkB,EAAEA;MAAU;IACtE,CAAC,CAAC,CAACuC,KAAK,CAACpC,MAAM,CAAC;IAEhB,IAAI,CAAC2B,QAAQ,IAAIA,QAAQ,CAACU,MAAM,KAAK,WAAW,EAAE,OAAOrC,MAAM,CAAC;MAAEsC,KAAK,EAAE;IAAgC,CAAC,CAAC,CAAC,CAAC;;IAE7G,MAAMC,cAAc,GAAG,IAAAC,4BAAmB,EAAC;MAAE,GAAGb,QAAQ;MAAEc,OAAO,EAAErC,OAAO;MAAEC,MAAM;MAAEb;
|
|
1
|
+
{"version":3,"file":"rates.js","names":["_dataSources","require","_services","_jsSha","_interopRequireDefault","_constants","_helpers","obj","__esModule","default","FEATURE","PESTANA","rates","session","authorization","clubDiscount","locale","occupation","userCurrency","others","arguments","length","undefined","Promise","resolve","reject","_club$clubLogin","idtokenprovider","id","checkin","nights","club","authentication","type","rest","language","split","params","Object","entries","applyClubDiscount","cid","sha1","concat","KEY_HASH","currency","accessClubToken","lang","parseExternalToken","filter","_ref","value","response","request","hostname","process","env","SERVICE_BOOKING","endpoint","URLSearchParams","headers","catch","result","error","unavailability","parseUnavailability","checkIn","currencyCode","hotelCurrency","firstChildInterval","hotelverse","messages","availabilityMessage","increments","showLocalTaxes","fees","userCountry","country","vatIncluded","taxes","ServiceCurrency","exchange","infantAge","lowerBound","items","getItems","boards","hasFees","hasTaxes","clubConditions","ServiceFeatures","get","EXTERNAL","URL","DEFAULT_LANGUAGE","externalSignout","TYPE","clubLogin","status","VALID","taxesType","getTaxesType","tracking","parseTracking","exports"],"sources":["../../../src/services/Rates/rates.js"],"sourcesContent":["/* eslint-disable no-async-promise-executor */\nimport { request } from '@mirai/data-sources';\nimport { ServiceCurrency, ServiceFeatures } from '@mirai/services';\nimport sha1 from 'js-sha1';\n\nimport { DEFAULT_LANGUAGE, EXTERNAL, KEY_HASH, VALID } from './constants';\nimport { getItems, getTaxesType, parseExternalToken, parseTracking, parseUnavailability } from './helpers';\n\nconst FEATURE = { PESTANA: 'pestana' };\n\nexport const rates = ({\n session: { authorization } = {},\n clubDiscount,\n locale,\n occupation,\n userCurrency,\n ...others\n} = {}) =>\n new Promise(async (resolve, reject) => {\n const {\n idtokenprovider: id,\n checkin,\n nights,\n club: { authentication: { type } = {} } = {},\n ...rest\n } = others || {};\n\n const language = locale?.split('-')[0];\n\n const params = Object.entries({\n applyClubDiscount: clubDiscount,\n checkin,\n cid: sha1(`${KEY_HASH}-${id}-${checkin}-${nights}`),\n currency: userCurrency,\n idtokenprovider: id,\n nights,\n ...rest,\n accessClubToken: authorization,\n lang: language,\n ...parseExternalToken(rest),\n }).filter(([, value]) => value !== undefined);\n\n const response = await request({\n hostname: process.env.SERVICE_BOOKING,\n endpoint: `/request_availability_v2.json?${new URLSearchParams(params)}`,\n headers: { 'Content-Type': undefined, 'X-Requested-With': undefined },\n }).catch(reject);\n\n if (!response || response.result === 'EXCEPTION') return reject({ error: 'Upss, something bad happened!' }); //TODO\n\n const unavailability = parseUnavailability({ ...response, checkIn: checkin, nights, occupation, ...others });\n if (unavailability) return reject(unavailability);\n\n const {\n club,\n currencyCode: hotelCurrency,\n firstChildInterval = {},\n hotelverse,\n messages: { availabilityMessage: { increments } = {} } = {},\n showLocalTaxes: fees,\n userCountry: country,\n vatIncluded: taxes,\n } = response;\n\n const currency = userCurrency || hotelCurrency;\n await ServiceCurrency.exchange(currency);\n\n const infantAge = firstChildInterval?.lowerBound;\n const items = getItems({ ...response, currency });\n\n const [{ boards: [{ fees: hasFees, taxes: hasTaxes } = {}] = [] } = {}] = items || [];\n\n resolve({\n clubConditions: ServiceFeatures.get(FEATURE.PESTANA, id)\n ? EXTERNAL.URL[language] || EXTERNAL.URL[DEFAULT_LANGUAGE]\n : undefined,\n country,\n currency: hotelCurrency,\n externalSignout: authorization && type === EXTERNAL.TYPE && club?.clubLogin?.status !== VALID,\n hotelverse,\n increments: increments || undefined,\n infantAge: infantAge !== null ? infantAge : undefined,\n items,\n taxesType: getTaxesType({ fees, hasFees, hasTaxes, taxes }),\n tracking: parseTracking(response),\n });\n });\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAA2G,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAN3G;;AAQA,MAAMG,OAAO,GAAG;EAAEC,OAAO,EAAE;AAAU,CAAC;AAE/B,MAAMC,KAAK,GAAG,SAAAA,CAAA;EAAA,IAAC;IACpBC,OAAO,EAAE;MAAEC;IAAc,CAAC,GAAG,CAAC,CAAC;IAC/BC,YAAY;IACZC,MAAM;IACNC,UAAU;IACVC,YAAY;IACZ,GAAGC;EACL,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,OACJ,IAAIG,OAAO,CAAC,OAAOC,OAAO,EAAEC,MAAM,KAAK;IAAA,IAAAC,eAAA;IACrC,MAAM;MACJC,eAAe,EAAEC,EAAE;MACnBC,OAAO;MACPC,MAAM;MACNC,IAAI,EAAE;QAAEC,cAAc,EAAE;UAAEC;QAAK,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,CAAC,CAAC;MAC5C,GAAGC;IACL,CAAC,GAAGf,MAAM,IAAI,CAAC,CAAC;IAEhB,MAAMgB,QAAQ,GAAGnB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEoB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAMC,MAAM,GAAGC,MAAM,CAACC,OAAO,CAAC;MAC5BC,iBAAiB,EAAEzB,YAAY;MAC/Bc,OAAO;MACPY,GAAG,EAAE,IAAAC,cAAI,KAAAC,MAAA,CAAIC,mBAAQ,OAAAD,MAAA,CAAIf,EAAE,OAAAe,MAAA,CAAId,OAAO,OAAAc,MAAA,CAAIb,MAAM,CAAE,CAAC;MACnDe,QAAQ,EAAE3B,YAAY;MACtBS,eAAe,EAAEC,EAAE;MACnBE,MAAM;MACN,GAAGI,IAAI;MACPY,eAAe,EAAEhC,aAAa;MAC9BiC,IAAI,EAAEZ,QAAQ;MACd,GAAG,IAAAa,2BAAkB,EAACd,IAAI;IAC5B,CAAC,CAAC,CAACe,MAAM,CAACC,IAAA;MAAA,IAAC,GAAGC,KAAK,CAAC,GAAAD,IAAA;MAAA,OAAKC,KAAK,KAAK7B,SAAS;IAAA,EAAC;IAE7C,MAAM8B,QAAQ,GAAG,MAAM,IAAAC,oBAAO,EAAC;MAC7BC,QAAQ,EAAEC,OAAO,CAACC,GAAG,CAACC,eAAe;MACrCC,QAAQ,mCAAAf,MAAA,CAAmC,IAAIgB,eAAe,CAACtB,MAAM,CAAC,CAAE;MACxEuB,OAAO,EAAE;QAAE,cAAc,EAAEtC,SAAS;QAAE,kBAAkB,EAAEA;MAAU;IACtE,CAAC,CAAC,CAACuC,KAAK,CAACpC,MAAM,CAAC;IAEhB,IAAI,CAAC2B,QAAQ,IAAIA,QAAQ,CAACU,MAAM,KAAK,WAAW,EAAE,OAAOrC,MAAM,CAAC;MAAEsC,KAAK,EAAE;IAAgC,CAAC,CAAC,CAAC,CAAC;;IAE7G,MAAMC,cAAc,GAAG,IAAAC,4BAAmB,EAAC;MAAE,GAAGb,QAAQ;MAAEc,OAAO,EAAErC,OAAO;MAAEC,MAAM;MAAEb,UAAU;MAAE,GAAGE;IAAO,CAAC,CAAC;IAC5G,IAAI6C,cAAc,EAAE,OAAOvC,MAAM,CAACuC,cAAc,CAAC;IAEjD,MAAM;MACJjC,IAAI;MACJoC,YAAY,EAAEC,aAAa;MAC3BC,kBAAkB,GAAG,CAAC,CAAC;MACvBC,UAAU;MACVC,QAAQ,EAAE;QAAEC,mBAAmB,EAAE;UAAEC;QAAW,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,CAAC,CAAC;MAC3DC,cAAc,EAAEC,IAAI;MACpBC,WAAW,EAAEC,OAAO;MACpBC,WAAW,EAAEC;IACf,CAAC,GAAG3B,QAAQ;IAEZ,MAAMP,QAAQ,GAAG3B,YAAY,IAAIkD,aAAa;IAC9C,MAAMY,yBAAe,CAACC,QAAQ,CAACpC,QAAQ,CAAC;IAExC,MAAMqC,SAAS,GAAGb,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAEc,UAAU;IAChD,MAAMC,KAAK,GAAG,IAAAC,iBAAQ,EAAC;MAAE,GAAGjC,QAAQ;MAAEP;IAAS,CAAC,CAAC;IAEjD,MAAM,CAAC;MAAEyC,MAAM,EAAE,CAAC;QAAEX,IAAI,EAAEY,OAAO;QAAER,KAAK,EAAES;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;IAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAGJ,KAAK,IAAI,EAAE;IAErF5D,OAAO,CAAC;MACNiE,cAAc,EAAEC,yBAAe,CAACC,GAAG,CAACjF,OAAO,CAACC,OAAO,EAAEiB,EAAE,CAAC,GACpDgE,mBAAQ,CAACC,GAAG,CAAC1D,QAAQ,CAAC,IAAIyD,mBAAQ,CAACC,GAAG,CAACC,2BAAgB,CAAC,GACxDxE,SAAS;MACbuD,OAAO;MACPhC,QAAQ,EAAEuB,aAAa;MACvB2B,eAAe,EAAEjF,aAAa,IAAImB,IAAI,KAAK2D,mBAAQ,CAACI,IAAI,IAAI,CAAAjE,IAAI,aAAJA,IAAI,wBAAAL,eAAA,GAAJK,IAAI,CAAEkE,SAAS,cAAAvE,eAAA,uBAAfA,eAAA,CAAiBwE,MAAM,MAAKC,gBAAK;MAC7F7B,UAAU;MACVG,UAAU,EAAEA,UAAU,IAAInD,SAAS;MACnC4D,SAAS,EAAEA,SAAS,KAAK,IAAI,GAAGA,SAAS,GAAG5D,SAAS;MACrD8D,KAAK;MACLgB,SAAS,EAAE,IAAAC,qBAAY,EAAC;QAAE1B,IAAI;QAAEY,OAAO;QAAEC,QAAQ;QAAET;MAAM,CAAC,CAAC;MAC3DuB,QAAQ,EAAE,IAAAC,sBAAa,EAACnD,QAAQ;IAClC,CAAC,CAAC;EACJ,CAAC,CAAC;AAAA;AAACoD,OAAA,CAAA5F,KAAA,GAAAA,KAAA"}
|