@odynn/awayz-flights 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,7 +13,7 @@ import '../../assets/FlightResult.css';function H(i) {
13
13
  }
14
14
  const Q = ({ details: i, onClick: a }) => {
15
15
  var d;
16
- const [g, C] = N(!1), c = i.origin, l = i.destination, p = i.flightDetails, D = !i.paymentOptions || i.paymentOptions.length === 1, [S, P] = N($), A = async () => {
16
+ const [g, C] = N(!1), c = i.origin, l = i.destination, p = i.flightDetails, S = !i.paymentOptions || i.paymentOptions.length === 1, [D, P] = N($), A = async () => {
17
17
  const n = await b(i.airlineProgram);
18
18
  P(n);
19
19
  }, { flightNumbers: h, airlines: O } = R(() => {
@@ -105,7 +105,7 @@ const Q = ({ details: i, onClick: a }) => {
105
105
  ] }),
106
106
  /* @__PURE__ */ e("div", { className: "flight-detail", children: [
107
107
  /* @__PURE__ */ r("p", { children: "Marketing Carrier" }),
108
- /* @__PURE__ */ r("p", { children: i.flightDetails.slices[0].segments[0].marketingCarrier.name })
108
+ /* @__PURE__ */ r("p", { children: i.airline })
109
109
  ] })
110
110
  ] }),
111
111
  /* @__PURE__ */ e("div", { className: "booking-options", children: [
@@ -118,7 +118,7 @@ const Q = ({ details: i, onClick: a }) => {
118
118
  n.stopPropagation(), a(i, o.CASH);
119
119
  },
120
120
  children: [
121
- /* @__PURE__ */ r("p", { children: D ? "Book For" : "From" }),
121
+ /* @__PURE__ */ r("p", { children: S ? "Book For" : "From" }),
122
122
  /* @__PURE__ */ r("p", { children: /* @__PURE__ */ r(
123
123
  y,
124
124
  {
@@ -137,7 +137,7 @@ const Q = ({ details: i, onClick: a }) => {
137
137
  n.stopPropagation(), a(i, o.POINTS);
138
138
  },
139
139
  children: [
140
- /* @__PURE__ */ r("img", { src: S.programLogo }),
140
+ /* @__PURE__ */ r("img", { src: D.programLogo }),
141
141
  /* @__PURE__ */ e("p", { children: [
142
142
  `${H(i.points)} miles`,
143
143
  ((d = i.cashFee) == null ? void 0 : d.amount) > 0 && /* @__PURE__ */ e(I, { children: [
@@ -86,10 +86,7 @@ export interface IFlightPaymentOption {
86
86
  type: EBaggage | null;
87
87
  quantity: number;
88
88
  }[];
89
- conditions: {
90
- refundBeforeDeparture?: boolean;
91
- changeBeforeDeparture?: boolean;
92
- };
89
+ conditions: IOfferConditions;
93
90
  carrier: {
94
91
  iataCode: string;
95
92
  name: string;
@@ -4,28 +4,28 @@ import "react";
4
4
  import { awayzClient as q } from "@odynn/awayz-core";
5
5
  import { WalletService as Q } from "../services/wallet/WalletService.js";
6
6
  import { ERewardProgramCategories as V } from "../services/wallet/WalletService.types.js";
7
- const G = (s) => s == null ? void 0 : s.map((e) => {
8
- var r, t, a, n, i, o, m, w, g, M, P, N, A, L, h, d, p, c, y, C, b, l, u, D, k, O, f, z, v, _, $, Z, B, E;
7
+ const S = (s) => s == null ? void 0 : s.map((e) => {
8
+ var n, t, r, a, i, o, l, h, g, M, P, N, A, L, w, d, p, c, y, C, b, m, u, D, O, T, z, f, v, E, _, $, Z, G;
9
9
  return {
10
10
  id: e.id,
11
11
  points: (e == null ? void 0 : e.points) >= 0 ? e.points : -1,
12
12
  partial: e == null ? void 0 : e.partial,
13
13
  origin: {
14
- city: ((r = e.slices[0].segments[0].origin) == null ? void 0 : r.cityName) || ((a = (t = e.slices[0].segments[0].origin) == null ? void 0 : t.city) == null ? void 0 : a.name),
15
- country: ((n = e.slices[0].segments[0].origin) == null ? void 0 : n.iataCountryCode) || ((o = (i = e.slices[0].segments[0].origin) == null ? void 0 : i.city) == null ? void 0 : o.iataCountryCode),
16
- airportCode: ((m = e.slices[0].segments[0].origin) == null ? void 0 : m.iataCityCode) || ((g = (w = e.slices[0].segments[0].origin) == null ? void 0 : w.city) == null ? void 0 : g.iataCode),
14
+ city: ((n = e.slices[0].segments[0].origin) == null ? void 0 : n.cityName) || ((r = (t = e.slices[0].segments[0].origin) == null ? void 0 : t.city) == null ? void 0 : r.name),
15
+ country: ((a = e.slices[0].segments[0].origin) == null ? void 0 : a.iataCountryCode) || ((o = (i = e.slices[0].segments[0].origin) == null ? void 0 : i.city) == null ? void 0 : o.iataCountryCode),
16
+ airportCode: ((l = e.slices[0].segments[0].origin) == null ? void 0 : l.iataCityCode) || ((g = (h = e.slices[0].segments[0].origin) == null ? void 0 : h.city) == null ? void 0 : g.iataCode),
17
17
  coordinates: {
18
18
  latitude: (P = (M = e.slices[0].segments[0].origin) == null ? void 0 : M.city) == null ? void 0 : P.latitude,
19
19
  longitude: (A = (N = e.slices[0].segments[0].origin) == null ? void 0 : N.city) == null ? void 0 : A.longitude
20
20
  }
21
21
  },
22
22
  destination: {
23
- city: ((h = (L = e.slices[0].segments.getLast()) == null ? void 0 : L.destination) == null ? void 0 : h.cityName) || ((c = (p = (d = e.slices[0].segments.getLast()) == null ? void 0 : d.destination) == null ? void 0 : p.city) == null ? void 0 : c.name),
24
- country: ((C = (y = e.slices[0].segments.getLast()) == null ? void 0 : y.destination) == null ? void 0 : C.iataCountryCode) || ((u = (l = (b = e.slices[0].segments.getLast()) == null ? void 0 : b.destination) == null ? void 0 : l.city) == null ? void 0 : u.iataCountryCode),
25
- airportCode: ((k = (D = e.slices[0].segments.getLast()) == null ? void 0 : D.destination) == null ? void 0 : k.iataCityCode) || ((z = (f = (O = e.slices[0].segments.getLast()) == null ? void 0 : O.destination) == null ? void 0 : f.city) == null ? void 0 : z.iataCode),
23
+ city: ((w = (L = e.slices[0].segments.getLast()) == null ? void 0 : L.destination) == null ? void 0 : w.cityName) || ((c = (p = (d = e.slices[0].segments.getLast()) == null ? void 0 : d.destination) == null ? void 0 : p.city) == null ? void 0 : c.name),
24
+ country: ((C = (y = e.slices[0].segments.getLast()) == null ? void 0 : y.destination) == null ? void 0 : C.iataCountryCode) || ((u = (m = (b = e.slices[0].segments.getLast()) == null ? void 0 : b.destination) == null ? void 0 : m.city) == null ? void 0 : u.iataCountryCode),
25
+ airportCode: ((O = (D = e.slices[0].segments.getLast()) == null ? void 0 : D.destination) == null ? void 0 : O.iataCityCode) || ((f = (z = (T = e.slices[0].segments.getLast()) == null ? void 0 : T.destination) == null ? void 0 : z.city) == null ? void 0 : f.iataCode),
26
26
  coordinates: {
27
- latitude: ($ = (_ = (v = e.slices[0].segments.getLast()) == null ? void 0 : v.destination) == null ? void 0 : _.city) == null ? void 0 : $.latitude,
28
- longitude: (E = (B = (Z = e.slices[0].segments.getLast()) == null ? void 0 : Z.destination) == null ? void 0 : B.city) == null ? void 0 : E.longitude
27
+ latitude: (_ = (E = (v = e.slices[0].segments.getLast()) == null ? void 0 : v.destination) == null ? void 0 : E.city) == null ? void 0 : _.latitude,
28
+ longitude: (G = (Z = ($ = e.slices[0].segments.getLast()) == null ? void 0 : $.destination) == null ? void 0 : Z.city) == null ? void 0 : G.longitude
29
29
  }
30
30
  },
31
31
  airline: e.owner.name,
@@ -53,39 +53,39 @@ const G = (s) => s == null ? void 0 : s.map((e) => {
53
53
  };
54
54
  }), ee = (s, e) => {
55
55
  if (!(e != null && e.length))
56
- return G(s);
57
- const r = [...e], t = [], a = {};
56
+ return S(s);
57
+ const n = [...e], t = [], r = {};
58
58
  for (const i of s) {
59
- const o = i.slices[0].segments, m = o[0], w = {
60
- iataCode: m.operatingCarrier.iataCode,
61
- flightNumber: T(
62
- m.operatingCarrierFlightNumber
59
+ const o = i.slices[0].segments, l = o[0], h = {
60
+ iataCode: l.operatingCarrier.iataCode,
61
+ flightNumber: k(
62
+ l.operatingCarrierFlightNumber
63
63
  )
64
64
  }, g = {
65
- iataCode: m.marketingCarrier.iataCode,
66
- flightNumber: T(
67
- m.marketingCarrierFlightNumber
65
+ iataCode: l.marketingCarrier.iataCode,
66
+ flightNumber: k(
67
+ l.marketingCarrierFlightNumber
68
68
  )
69
- }, M = i.awayzMatchId, P = `${w.iataCode}_${g.iataCode}-${g.flightNumber}`, N = i.awayzMarketerMatchId, A = !!w.flightNumber && w.flightNumber != "", L = !!g.flightNumber && g.flightNumber != "", h = r.filter((d, p) => {
69
+ }, M = i.awayzMatchId, P = `${h.iataCode}_${g.iataCode}-${g.flightNumber}`, N = i.awayzMarketerMatchId, A = !!h.flightNumber && h.flightNumber != "", L = !!g.flightNumber && g.flightNumber != "", w = n.filter((d, p) => {
70
70
  const c = d.flightDetails, y = d.flightDetails.slices[0].segments[0].operatingCarrierFlightNumber, C = c.id && !!y && y !== "";
71
71
  if (!(c.slices[0].segments.length === (o == null ? void 0 : o.length) && !c.slices[0].segments.find(
72
72
  (u, D) => u.departingAt !== o[D].departingAt || u.arrivingAt !== o[D].arrivingAt || u.duration !== o[D].duration
73
73
  )))
74
74
  return !1;
75
- let l = !1;
76
- return (L && A && c.awayzMatchId === M || !C && c.awayzMatchId === P || A && !L && c.awayzMarketerMatchId === N) && (l = !0), l && (a[c.id] = p), l;
75
+ let m = !1;
76
+ return (L && A && c.awayzMatchId === M || !C && c.awayzMatchId === P || A && !L && c.awayzMarketerMatchId === N) && (m = !0), m && (r[c.id] = p), m;
77
77
  });
78
- if (h.length) {
79
- i.slices[0].comparisonKey = h[0].awayzGroupId;
80
- const d = h.find((p) => {
81
- var C, b, l, u;
78
+ if (w.length) {
79
+ i.slices[0].comparisonKey = w[0].awayzGroupId;
80
+ const d = w.find((p) => {
81
+ var C, b, m, u;
82
82
  const c = (C = p.flightDetails.slices[0].fareBrandName) == null ? void 0 : C.toLowerCase(), y = (b = i.slices[0].fareBrandName) == null ? void 0 : b.toLowerCase();
83
83
  return y === c || // Special Case for AC Only match on first word
84
84
  // Due to differences in scraped points data and Duffel format
85
- g.iataCode === "AC" && ((l = y.split(" ")) == null ? void 0 : l[0]) === ((u = c.split(" ")) == null ? void 0 : u[0]);
85
+ g.iataCode === "AC" && ((m = y.split(" ")) == null ? void 0 : m[0]) === ((u = c.split(" ")) == null ? void 0 : u[0]);
86
86
  });
87
87
  if (d) {
88
- const p = a[d.id], c = {
88
+ const p = r[d.id], c = {
89
89
  ...i,
90
90
  ...d,
91
91
  points: i.points,
@@ -97,52 +97,52 @@ const G = (s) => s == null ? void 0 : s.map((e) => {
97
97
  airlineProgram: i.airlineProgram
98
98
  }
99
99
  };
100
- r[p] = c;
100
+ n[p] = c;
101
101
  } else
102
102
  t.push(i);
103
103
  } else
104
104
  t.push(i);
105
105
  }
106
106
  return [
107
- ...r,
108
- ...G(t) ?? []
107
+ ...n,
108
+ ...S(t) ?? []
109
109
  ];
110
110
  }, j = (s) => {
111
- const e = s.operatingCarrierFlightNumber ? s.operatingCarrier : s.marketingCarrier, r = s.operatingCarrierFlightNumber ?? s.marketingCarrierFlightNumber;
112
- return e.iataCode + " " + T(r);
111
+ const e = s.operatingCarrierFlightNumber ? s.operatingCarrier : s.marketingCarrier, n = s.operatingCarrierFlightNumber ?? s.marketingCarrierFlightNumber;
112
+ return e.iataCode + " " + k(n);
113
113
  }, te = ({
114
114
  originCode: s,
115
115
  destinationCode: e,
116
- departureDate: r,
116
+ departureDate: n,
117
117
  cabinClass: t,
118
- passengerCount: a,
119
- paymentType: n
118
+ passengerCount: r,
119
+ paymentType: a
120
120
  }) => {
121
121
  let i = "/flights/search/one-way/points-cash?";
122
- return i += `origin=${s}`, i += `&destination=${e}`, i += `&departure_date=${r}`, i += `&cabin_class=${t}`, i += `&adults=${a}`, i += `&cash_or_points=[${n}]`, i;
122
+ return i += `origin=${s}`, i += `&destination=${e}`, i += `&departure_date=${n}`, i += `&cabin_class=${t}`, i += `&adults=${r}`, i += `&cash_or_points=[${a}]`, i;
123
123
  }, se = (s) => {
124
124
  const e = {};
125
125
  s.forEach((t) => {
126
- const a = t.flightDetails.slices[0].segments.map((n) => j(n)).join("_");
127
- if (e[a]) {
128
- const n = U(t);
129
- e[a].flight.paymentOptions.push(n);
126
+ const r = t.flightDetails.slices[0].segments.map((a) => j(a)).join("_");
127
+ if (e[r]) {
128
+ const a = U(t);
129
+ e[r].flight.paymentOptions.push(a);
130
130
  const i = I(
131
- e[a].flight.paymentOptions
131
+ e[r].flight.paymentOptions
132
132
  );
133
- e[a].flight.cash = i.lowestCash, e[a].flight.points = i.lowestPoints;
133
+ e[r].flight.cash = i.lowestCash, e[r].flight.points = i.lowestPoints;
134
134
  } else {
135
- const { origin: n, destination: i } = t, o = [U(t)], m = I(o);
136
- e[a] = {
135
+ const { origin: a, destination: i } = t, o = [U(t)], l = I(o);
136
+ e[r] = {
137
137
  programs: [],
138
138
  flight: {
139
139
  id: t.awayzGroupId,
140
140
  partial: t.partial,
141
141
  origin: {
142
- city: n.city,
143
- country: n.country,
144
- airportCode: n.airportCode,
145
- coordinates: n.coordinates
142
+ city: a.city,
143
+ country: a.country,
144
+ airportCode: a.airportCode,
145
+ coordinates: a.coordinates
146
146
  },
147
147
  destination: {
148
148
  city: i.city,
@@ -170,33 +170,52 @@ const G = (s) => s == null ? void 0 : s.map((e) => {
170
170
  destinationTimeZone: t.flightDetails.slices[0].segments.getLast().destination.timeZone,
171
171
  duration: t.flightDetails.slices[0].duration
172
172
  }),
173
- cash: m.lowestCash,
174
- points: m.lowestPoints,
173
+ cash: l.lowestCash,
174
+ points: l.lowestPoints,
175
175
  flightDetails: t.flightDetails,
176
176
  currency: t.flightDetails.baseCurrency,
177
177
  cashFee: t.cashFee
178
178
  }
179
179
  };
180
180
  }
181
- t.airlineProgram && !e[a].programs.includes(t.airlineProgram) && e[a].programs.push(t.airlineProgram);
181
+ t.airlineProgram && !e[r].programs.includes(t.airlineProgram) && e[r].programs.push(t.airlineProgram);
182
182
  });
183
- const r = [];
183
+ const n = [];
184
184
  return Object.values(e).forEach((t) => {
185
+ const r = [
186
+ ...new Set(
187
+ t.flight.paymentOptions.map((a) => a.carrier.name)
188
+ )
189
+ ];
185
190
  t.programs.length > 0 ? t.programs.forEach((a) => {
186
- const n = I(
191
+ r.forEach((i) => {
192
+ const o = I(
193
+ t.flight.paymentOptions.filter(
194
+ (l) => l.program === a || l.cash > 0 && l.carrier.name === i
195
+ )
196
+ );
197
+ n.push({
198
+ ...t.flight,
199
+ airline: i,
200
+ airlineProgram: a,
201
+ cash: o.lowestCash,
202
+ points: o.lowestPoints
203
+ });
204
+ });
205
+ }) : r.forEach((a) => {
206
+ const { lowestCash: i } = I(
187
207
  t.flight.paymentOptions.filter(
188
- (i) => i.program === a || i.cash > 0
208
+ (o) => o.carrier.name === a
189
209
  )
190
210
  );
191
- r.push({
211
+ n.push({
192
212
  ...t.flight,
193
- airlineProgram: a,
194
- cash: n.lowestCash,
195
- points: n.lowestPoints
213
+ airline: a,
214
+ cash: i
196
215
  });
197
- }) : r.push(t.flight);
198
- }), r;
199
- }, T = (s) => s ? s.replace(/^0+/, "") : "", ie = (s) => `https://assets.duffel.com/img/airlines/for-light-background/full-color-logo/${s}.svg`, R = "/img/logo/odynn-eye.svg", S = {
216
+ });
217
+ }), n;
218
+ }, k = (s) => s ? s.replace(/^0+/, "") : "", ie = (s) => `https://assets.duffel.com/img/airlines/for-light-background/full-color-logo/${s}.svg`, R = "/img/logo/odynn-eye.svg", B = {
200
219
  categoryLogo: R,
201
220
  programLogo: R,
202
221
  awayzActive: [],
@@ -215,56 +234,50 @@ const G = (s) => s == null ? void 0 : s.map((e) => {
215
234
  staleTime: 864e5
216
235
  // 24 hours
217
236
  });
218
- let r = e.find(
237
+ let n = e.find(
219
238
  (t) => {
220
- var a, n, i, o;
221
- return ((n = (a = t.mainProgram) == null ? void 0 : a.toLowerCase()) == null ? void 0 : n.includes(s == null ? void 0 : s.toLowerCase())) || ((o = (i = t.displayProgram) == null ? void 0 : i.toLowerCase()) == null ? void 0 : o.includes(s == null ? void 0 : s.toLowerCase()));
239
+ var r, a, i, o;
240
+ return ((a = (r = t.mainProgram) == null ? void 0 : r.toLowerCase()) == null ? void 0 : a.includes(s == null ? void 0 : s.toLowerCase())) || ((o = (i = t.displayProgram) == null ? void 0 : i.toLowerCase()) == null ? void 0 : o.includes(s == null ? void 0 : s.toLowerCase()));
222
241
  }
223
- ) ?? S;
224
- return r || (r = {
225
- ...S,
242
+ ) ?? B;
243
+ return n || (n = {
244
+ ...B,
226
245
  mainProgram: s,
227
246
  displayProgram: s,
228
247
  id: s
229
- }), r;
230
- }, U = (s) => {
231
- var e, r, t, a;
232
- return {
233
- id: s.id,
234
- cash: s.cash,
235
- points: s.points,
236
- program: s.airlineProgram,
237
- baseCurrency: s.flightDetails.baseCurrency,
238
- fareBrandName: s.flightDetails.slices[0].fareBrandName,
239
- cashFee: s.cashFee,
240
- conditions: {
241
- refundBeforeDeparture: (r = (e = s.flightDetails.conditions) == null ? void 0 : e.refundBeforeDeparture) == null ? void 0 : r.allowed,
242
- changeBeforeDeparture: (a = (t = s.flightDetails.conditions) == null ? void 0 : t.changeBeforeDeparture) == null ? void 0 : a.allowed
243
- },
244
- carrier: {
245
- iataCode: s.flightDetails.slices[0].segments[0].marketingCarrier.iataCode,
246
- name: s.flightDetails.slices[0].segments[0].marketingCarrier.name
247
- }
248
- };
249
- }, I = (s) => {
248
+ }), n;
249
+ }, U = (s) => ({
250
+ id: s.id,
251
+ cash: s.cash,
252
+ points: s.points,
253
+ program: s.airlineProgram,
254
+ baseCurrency: s.flightDetails.baseCurrency,
255
+ fareBrandName: s.flightDetails.slices[0].fareBrandName,
256
+ cashFee: s.cashFee,
257
+ conditions: s.flightDetails.conditions,
258
+ carrier: {
259
+ iataCode: s.flightDetails.slices[0].segments[0].marketingCarrier.iataCode,
260
+ name: s.flightDetails.slices[0].segments[0].marketingCarrier.name
261
+ }
262
+ }), I = (s) => {
250
263
  const e = Math.min(
251
264
  ...s.filter((t) => t.cash > 0).map((t) => t.cash)
252
- ), r = Math.min(
265
+ ), n = Math.min(
253
266
  ...s.filter((t) => t.points > 0).map((t) => t.points)
254
267
  );
255
268
  return {
256
269
  lowestCash: e === 1 / 0 ? -1 : e,
257
- lowestPoints: r === 1 / 0 ? -1 : r
270
+ lowestPoints: n === 1 / 0 ? -1 : n
258
271
  };
259
272
  };
260
273
  export {
261
- S as DEFAULT_AIRLINE_PROGRAM,
274
+ B as DEFAULT_AIRLINE_PROGRAM,
262
275
  te as buildFlightSearchQuery,
263
276
  ae as getAirlineProgram,
264
277
  j as getFlightNumber,
265
278
  ie as getLogoPath,
266
279
  se as groupFlightResults,
267
- G as mapFlightDetailsToResults,
280
+ S as mapFlightDetailsToResults,
268
281
  ee as parseFlightDetails,
269
- T as removeLeadingZeros
282
+ k as removeLeadingZeros
270
283
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odynn/awayz-flights",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"