google-fli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +158 -0
- package/dist/core/airports.d.ts +31 -0
- package/dist/core/airports.d.ts.map +1 -0
- package/dist/core/airports.js +168 -0
- package/dist/core/airports.js.map +1 -0
- package/dist/core/builders.d.ts +30 -0
- package/dist/core/builders.d.ts.map +1 -0
- package/dist/core/builders.js +113 -0
- package/dist/core/builders.js.map +1 -0
- package/dist/core/currency.d.ts +21 -0
- package/dist/core/currency.d.ts.map +1 -0
- package/dist/core/currency.js +172 -0
- package/dist/core/currency.js.map +1 -0
- package/dist/core/dates.d.ts +22 -0
- package/dist/core/dates.d.ts.map +1 -0
- package/dist/core/dates.js +41 -0
- package/dist/core/dates.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/links.d.ts +39 -0
- package/dist/core/links.d.ts.map +1 -0
- package/dist/core/links.js +53 -0
- package/dist/core/links.js.map +1 -0
- package/dist/core/parsers.d.ts +34 -0
- package/dist/core/parsers.d.ts.map +1 -0
- package/dist/core/parsers.js +161 -0
- package/dist/core/parsers.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/models/airline.d.ts +1120 -0
- package/dist/models/airline.d.ts.map +1 -0
- package/dist/models/airline.js +2224 -0
- package/dist/models/airline.js.map +1 -0
- package/dist/models/airport.d.ts +7899 -0
- package/dist/models/airport.d.ts.map +1 -0
- package/dist/models/airport.js +15782 -0
- package/dist/models/airport.js.map +1 -0
- package/dist/models/google-flights/base.d.ts +232 -0
- package/dist/models/google-flights/base.d.ts.map +1 -0
- package/dist/models/google-flights/base.js +188 -0
- package/dist/models/google-flights/base.js.map +1 -0
- package/dist/models/google-flights/dates.d.ts +51 -0
- package/dist/models/google-flights/dates.d.ts.map +1 -0
- package/dist/models/google-flights/dates.js +222 -0
- package/dist/models/google-flights/dates.js.map +1 -0
- package/dist/models/google-flights/flights.d.ts +57 -0
- package/dist/models/google-flights/flights.d.ts.map +1 -0
- package/dist/models/google-flights/flights.js +224 -0
- package/dist/models/google-flights/flights.js.map +1 -0
- package/dist/models/google-flights/index.d.ts +4 -0
- package/dist/models/google-flights/index.d.ts.map +1 -0
- package/dist/models/google-flights/index.js +4 -0
- package/dist/models/google-flights/index.js.map +1 -0
- package/dist/models/index.d.ts +4 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +4 -0
- package/dist/models/index.js.map +1 -0
- package/dist/search/client.d.ts +66 -0
- package/dist/search/client.d.ts.map +1 -0
- package/dist/search/client.js +205 -0
- package/dist/search/client.js.map +1 -0
- package/dist/search/concurrency.d.ts +45 -0
- package/dist/search/concurrency.d.ts.map +1 -0
- package/dist/search/concurrency.js +148 -0
- package/dist/search/concurrency.js.map +1 -0
- package/dist/search/dates.d.ts +33 -0
- package/dist/search/dates.d.ts.map +1 -0
- package/dist/search/dates.js +159 -0
- package/dist/search/dates.js.map +1 -0
- package/dist/search/decoders.d.ts +22 -0
- package/dist/search/decoders.d.ts.map +1 -0
- package/dist/search/decoders.js +333 -0
- package/dist/search/decoders.js.map +1 -0
- package/dist/search/exceptions.d.ts +21 -0
- package/dist/search/exceptions.d.ts.map +1 -0
- package/dist/search/exceptions.js +37 -0
- package/dist/search/exceptions.js.map +1 -0
- package/dist/search/flights.d.ts +57 -0
- package/dist/search/flights.d.ts.map +1 -0
- package/dist/search/flights.js +298 -0
- package/dist/search/flights.js.map +1 -0
- package/dist/search/helpers.d.ts +10 -0
- package/dist/search/helpers.d.ts.map +1 -0
- package/dist/search/helpers.js +30 -0
- package/dist/search/helpers.js.map +1 -0
- package/dist/search/index.d.ts +10 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +10 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/proto.d.ts +69 -0
- package/dist/search/proto.d.ts.map +1 -0
- package/dist/search/proto.js +355 -0
- package/dist/search/proto.js.map +1 -0
- package/dist/search/urls.d.ts +9 -0
- package/dist/search/urls.d.ts.map +1 -0
- package/dist/search/urls.js +9 -0
- package/dist/search/urls.js.map +1 -0
- package/dist/search/wire.d.ts +14 -0
- package/dist/search/wire.d.ts.map +1 -0
- package/dist/search/wire.js +120 -0
- package/dist/search/wire.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core data models and enums for the Google Flights API.
|
|
3
|
+
*
|
|
4
|
+
* 1:1 port of fli/models/google_flights/base.py — keeps the same enum
|
|
5
|
+
* integer values (the API uses them on the wire) and the same model field
|
|
6
|
+
* names.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import type { Airline } from "../airline.ts";
|
|
10
|
+
import type { Airport } from "../airport.ts";
|
|
11
|
+
export declare const SeatType: {
|
|
12
|
+
readonly ECONOMY: 1;
|
|
13
|
+
readonly PREMIUM_ECONOMY: 2;
|
|
14
|
+
readonly BUSINESS: 3;
|
|
15
|
+
readonly FIRST: 4;
|
|
16
|
+
};
|
|
17
|
+
export type SeatType = (typeof SeatType)[keyof typeof SeatType];
|
|
18
|
+
export declare const SortBy: {
|
|
19
|
+
readonly TOP_FLIGHTS: 0;
|
|
20
|
+
readonly BEST: 1;
|
|
21
|
+
readonly CHEAPEST: 2;
|
|
22
|
+
readonly DEPARTURE_TIME: 3;
|
|
23
|
+
readonly ARRIVAL_TIME: 4;
|
|
24
|
+
readonly DURATION: 5;
|
|
25
|
+
readonly EMISSIONS: 6;
|
|
26
|
+
};
|
|
27
|
+
export type SortBy = (typeof SortBy)[keyof typeof SortBy];
|
|
28
|
+
export declare const TripType: {
|
|
29
|
+
readonly ROUND_TRIP: 1;
|
|
30
|
+
readonly ONE_WAY: 2;
|
|
31
|
+
readonly MULTI_CITY: 3;
|
|
32
|
+
};
|
|
33
|
+
export type TripType = (typeof TripType)[keyof typeof TripType];
|
|
34
|
+
export declare const MaxStops: {
|
|
35
|
+
readonly ANY: 0;
|
|
36
|
+
readonly NON_STOP: 1;
|
|
37
|
+
readonly ONE_STOP_OR_FEWER: 2;
|
|
38
|
+
readonly TWO_OR_FEWER_STOPS: 3;
|
|
39
|
+
};
|
|
40
|
+
export type MaxStops = (typeof MaxStops)[keyof typeof MaxStops];
|
|
41
|
+
export declare const EmissionsFilter: {
|
|
42
|
+
readonly ALL: 0;
|
|
43
|
+
readonly LESS: 1;
|
|
44
|
+
};
|
|
45
|
+
export type EmissionsFilter = (typeof EmissionsFilter)[keyof typeof EmissionsFilter];
|
|
46
|
+
export declare const Alliance: {
|
|
47
|
+
readonly ONEWORLD: "ONEWORLD";
|
|
48
|
+
readonly SKYTEAM: "SKYTEAM";
|
|
49
|
+
readonly STAR_ALLIANCE: "STAR_ALLIANCE";
|
|
50
|
+
};
|
|
51
|
+
export type Alliance = (typeof Alliance)[keyof typeof Alliance];
|
|
52
|
+
/**
|
|
53
|
+
* ISO 4217 currency codes supported by Google Flights' `curr=` URL param.
|
|
54
|
+
* Pass any 3-letter ISO 4217 code as a plain string for codes not listed.
|
|
55
|
+
*/
|
|
56
|
+
export declare const Currency: {
|
|
57
|
+
readonly AED: "AED";
|
|
58
|
+
readonly ARS: "ARS";
|
|
59
|
+
readonly AUD: "AUD";
|
|
60
|
+
readonly BGN: "BGN";
|
|
61
|
+
readonly BRL: "BRL";
|
|
62
|
+
readonly CAD: "CAD";
|
|
63
|
+
readonly CHF: "CHF";
|
|
64
|
+
readonly CLP: "CLP";
|
|
65
|
+
readonly CNY: "CNY";
|
|
66
|
+
readonly COP: "COP";
|
|
67
|
+
readonly CZK: "CZK";
|
|
68
|
+
readonly DKK: "DKK";
|
|
69
|
+
readonly EGP: "EGP";
|
|
70
|
+
readonly EUR: "EUR";
|
|
71
|
+
readonly GBP: "GBP";
|
|
72
|
+
readonly HKD: "HKD";
|
|
73
|
+
readonly HUF: "HUF";
|
|
74
|
+
readonly IDR: "IDR";
|
|
75
|
+
readonly ILS: "ILS";
|
|
76
|
+
readonly INR: "INR";
|
|
77
|
+
readonly JPY: "JPY";
|
|
78
|
+
readonly KRW: "KRW";
|
|
79
|
+
readonly MXN: "MXN";
|
|
80
|
+
readonly MYR: "MYR";
|
|
81
|
+
readonly NOK: "NOK";
|
|
82
|
+
readonly NZD: "NZD";
|
|
83
|
+
readonly PEN: "PEN";
|
|
84
|
+
readonly PHP: "PHP";
|
|
85
|
+
readonly PLN: "PLN";
|
|
86
|
+
readonly QAR: "QAR";
|
|
87
|
+
readonly RON: "RON";
|
|
88
|
+
readonly SAR: "SAR";
|
|
89
|
+
readonly SEK: "SEK";
|
|
90
|
+
readonly SGD: "SGD";
|
|
91
|
+
readonly THB: "THB";
|
|
92
|
+
readonly TRY: "TRY";
|
|
93
|
+
readonly TWD: "TWD";
|
|
94
|
+
readonly UAH: "UAH";
|
|
95
|
+
readonly USD: "USD";
|
|
96
|
+
readonly VND: "VND";
|
|
97
|
+
readonly ZAR: "ZAR";
|
|
98
|
+
};
|
|
99
|
+
export type Currency = (typeof Currency)[keyof typeof Currency];
|
|
100
|
+
export declare const BagsFilterSchema: z.ZodObject<{
|
|
101
|
+
checked_bags: z.ZodDefault<z.ZodNumber>;
|
|
102
|
+
carry_on: z.ZodDefault<z.ZodBoolean>;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
export type BagsFilter = z.infer<typeof BagsFilterSchema>;
|
|
105
|
+
export declare const TimeRestrictionsSchema: z.ZodPipe<z.ZodObject<{
|
|
106
|
+
earliest_departure: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
107
|
+
latest_departure: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
108
|
+
earliest_arrival: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
109
|
+
latest_arrival: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
110
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
111
|
+
earliest_departure?: number | null | undefined;
|
|
112
|
+
latest_departure?: number | null | undefined;
|
|
113
|
+
earliest_arrival?: number | null | undefined;
|
|
114
|
+
latest_arrival?: number | null | undefined;
|
|
115
|
+
}, {
|
|
116
|
+
earliest_departure?: number | null | undefined;
|
|
117
|
+
latest_departure?: number | null | undefined;
|
|
118
|
+
earliest_arrival?: number | null | undefined;
|
|
119
|
+
latest_arrival?: number | null | undefined;
|
|
120
|
+
}>>;
|
|
121
|
+
export type TimeRestrictions = z.infer<typeof TimeRestrictionsSchema>;
|
|
122
|
+
export declare const PassengerInfoSchema: z.ZodObject<{
|
|
123
|
+
adults: z.ZodDefault<z.ZodNumber>;
|
|
124
|
+
children: z.ZodDefault<z.ZodNumber>;
|
|
125
|
+
infants_in_seat: z.ZodDefault<z.ZodNumber>;
|
|
126
|
+
infants_on_lap: z.ZodDefault<z.ZodNumber>;
|
|
127
|
+
}, z.core.$strip>;
|
|
128
|
+
export type PassengerInfo = z.infer<typeof PassengerInfoSchema>;
|
|
129
|
+
export declare const PriceLimitSchema: z.ZodObject<{
|
|
130
|
+
max_price: z.ZodNumber;
|
|
131
|
+
currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
132
|
+
}, z.core.$strip>;
|
|
133
|
+
export type PriceLimit = z.infer<typeof PriceLimitSchema>;
|
|
134
|
+
export declare const LayoverRestrictionsSchema: z.ZodObject<{
|
|
135
|
+
airports: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
136
|
+
min_duration: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
137
|
+
max_duration: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
138
|
+
}, z.core.$strip>;
|
|
139
|
+
export type LayoverRestrictions = z.infer<typeof LayoverRestrictionsSchema>;
|
|
140
|
+
export declare const AmenitiesSchema: z.ZodObject<{
|
|
141
|
+
wifi: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
142
|
+
power: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
143
|
+
usb_power: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
144
|
+
in_seat_video: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
145
|
+
on_demand_video: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
146
|
+
legroom_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
147
|
+
}, z.core.$strip>;
|
|
148
|
+
export type Amenities = z.infer<typeof AmenitiesSchema>;
|
|
149
|
+
export interface Layover {
|
|
150
|
+
airport: Airport;
|
|
151
|
+
duration: number;
|
|
152
|
+
overnight: boolean;
|
|
153
|
+
change_of_airport: boolean;
|
|
154
|
+
city?: string | null;
|
|
155
|
+
airport_name?: string | null;
|
|
156
|
+
}
|
|
157
|
+
export interface FlightLeg {
|
|
158
|
+
airline: Airline;
|
|
159
|
+
flight_number: string;
|
|
160
|
+
departure_airport: Airport;
|
|
161
|
+
arrival_airport: Airport;
|
|
162
|
+
departure_datetime: Date;
|
|
163
|
+
arrival_datetime: Date;
|
|
164
|
+
duration: number;
|
|
165
|
+
departure_airport_name?: string | null;
|
|
166
|
+
arrival_airport_name?: string | null;
|
|
167
|
+
operating_airline?: Airline | null;
|
|
168
|
+
operating_flight_number?: string | null;
|
|
169
|
+
aircraft?: string | null;
|
|
170
|
+
legroom?: string | null;
|
|
171
|
+
legroom_short?: string | null;
|
|
172
|
+
amenities?: Amenities | null;
|
|
173
|
+
overnight?: boolean;
|
|
174
|
+
co2_emissions_g?: number | null;
|
|
175
|
+
}
|
|
176
|
+
export interface BookingOption {
|
|
177
|
+
vendor_code: string | null;
|
|
178
|
+
vendor_name: string | null;
|
|
179
|
+
is_airline_direct: boolean;
|
|
180
|
+
price: number | null;
|
|
181
|
+
currency: string | null;
|
|
182
|
+
fare_name: string | null;
|
|
183
|
+
booking_url: string | null;
|
|
184
|
+
google_click_url: string | null;
|
|
185
|
+
/** [(airline_code, flight_number), ...] */
|
|
186
|
+
flights: Array<[string, string]> | null;
|
|
187
|
+
}
|
|
188
|
+
export interface FlightResult {
|
|
189
|
+
legs: FlightLeg[];
|
|
190
|
+
/** Price in specified currency. `null` when Google did not surface a price (see Python issue #165). */
|
|
191
|
+
price: number | null;
|
|
192
|
+
currency: string | null;
|
|
193
|
+
/** Total duration in minutes. */
|
|
194
|
+
duration: number;
|
|
195
|
+
stops: number;
|
|
196
|
+
layovers?: Layover[] | null;
|
|
197
|
+
co2_emissions_g?: number | null;
|
|
198
|
+
co2_emissions_typical_g?: number | null;
|
|
199
|
+
co2_emissions_delta_pct?: number | null;
|
|
200
|
+
/** "lower" | "typical" | "higher" */
|
|
201
|
+
emissions_tag?: string | null;
|
|
202
|
+
self_transfer?: boolean | null;
|
|
203
|
+
mixed_cabin?: boolean | null;
|
|
204
|
+
primary_airline?: Airline | null;
|
|
205
|
+
primary_airline_name?: string | null;
|
|
206
|
+
booking_token?: string | null;
|
|
207
|
+
}
|
|
208
|
+
/** `true` when Google did not surface a price for this row (premium-cabin RT). */
|
|
209
|
+
export declare function priceUnknown(f: FlightResult): boolean;
|
|
210
|
+
/**
|
|
211
|
+
* Airport entry inside a segment's departure/arrival list — `[Airport code, 0]`
|
|
212
|
+
* is the standard shape (the trailing int is unused in current API responses
|
|
213
|
+
* but Google still requires it).
|
|
214
|
+
*/
|
|
215
|
+
export type AirportEntry = [Airport, number];
|
|
216
|
+
export interface FlightSegmentInput {
|
|
217
|
+
departure_airport: AirportEntry[][];
|
|
218
|
+
arrival_airport: AirportEntry[][];
|
|
219
|
+
travel_date: string;
|
|
220
|
+
time_restrictions?: TimeRestrictions | null;
|
|
221
|
+
selected_flight?: FlightResult | null;
|
|
222
|
+
}
|
|
223
|
+
export declare class FlightSegment {
|
|
224
|
+
readonly departure_airport: AirportEntry[][];
|
|
225
|
+
readonly arrival_airport: AirportEntry[][];
|
|
226
|
+
travel_date: string;
|
|
227
|
+
readonly time_restrictions: TimeRestrictions | null;
|
|
228
|
+
selected_flight: FlightResult | null;
|
|
229
|
+
constructor(input: FlightSegmentInput);
|
|
230
|
+
get parsed_travel_date(): Date;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/models/google-flights/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core data models and enums for the Google Flights API.
|
|
3
|
+
*
|
|
4
|
+
* 1:1 port of fli/models/google_flights/base.py — keeps the same enum
|
|
5
|
+
* integer values (the API uses them on the wire) and the same model field
|
|
6
|
+
* names.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { parseIsoDate } from "../../core/dates.js";
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Enums (numeric values must match the Google Flights wire format)
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
export const SeatType = {
|
|
14
|
+
ECONOMY: 1,
|
|
15
|
+
PREMIUM_ECONOMY: 2,
|
|
16
|
+
BUSINESS: 3,
|
|
17
|
+
FIRST: 4,
|
|
18
|
+
};
|
|
19
|
+
export const SortBy = {
|
|
20
|
+
TOP_FLIGHTS: 0,
|
|
21
|
+
BEST: 1,
|
|
22
|
+
CHEAPEST: 2,
|
|
23
|
+
DEPARTURE_TIME: 3,
|
|
24
|
+
ARRIVAL_TIME: 4,
|
|
25
|
+
DURATION: 5,
|
|
26
|
+
EMISSIONS: 6,
|
|
27
|
+
};
|
|
28
|
+
export const TripType = {
|
|
29
|
+
ROUND_TRIP: 1,
|
|
30
|
+
ONE_WAY: 2,
|
|
31
|
+
MULTI_CITY: 3,
|
|
32
|
+
};
|
|
33
|
+
export const MaxStops = {
|
|
34
|
+
ANY: 0,
|
|
35
|
+
NON_STOP: 1,
|
|
36
|
+
ONE_STOP_OR_FEWER: 2,
|
|
37
|
+
TWO_OR_FEWER_STOPS: 3,
|
|
38
|
+
};
|
|
39
|
+
export const EmissionsFilter = {
|
|
40
|
+
ALL: 0,
|
|
41
|
+
LESS: 1,
|
|
42
|
+
};
|
|
43
|
+
export const Alliance = {
|
|
44
|
+
ONEWORLD: "ONEWORLD",
|
|
45
|
+
SKYTEAM: "SKYTEAM",
|
|
46
|
+
STAR_ALLIANCE: "STAR_ALLIANCE",
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* ISO 4217 currency codes supported by Google Flights' `curr=` URL param.
|
|
50
|
+
* Pass any 3-letter ISO 4217 code as a plain string for codes not listed.
|
|
51
|
+
*/
|
|
52
|
+
export const Currency = {
|
|
53
|
+
AED: "AED",
|
|
54
|
+
ARS: "ARS",
|
|
55
|
+
AUD: "AUD",
|
|
56
|
+
BGN: "BGN",
|
|
57
|
+
BRL: "BRL",
|
|
58
|
+
CAD: "CAD",
|
|
59
|
+
CHF: "CHF",
|
|
60
|
+
CLP: "CLP",
|
|
61
|
+
CNY: "CNY",
|
|
62
|
+
COP: "COP",
|
|
63
|
+
CZK: "CZK",
|
|
64
|
+
DKK: "DKK",
|
|
65
|
+
EGP: "EGP",
|
|
66
|
+
EUR: "EUR",
|
|
67
|
+
GBP: "GBP",
|
|
68
|
+
HKD: "HKD",
|
|
69
|
+
HUF: "HUF",
|
|
70
|
+
IDR: "IDR",
|
|
71
|
+
ILS: "ILS",
|
|
72
|
+
INR: "INR",
|
|
73
|
+
JPY: "JPY",
|
|
74
|
+
KRW: "KRW",
|
|
75
|
+
MXN: "MXN",
|
|
76
|
+
MYR: "MYR",
|
|
77
|
+
NOK: "NOK",
|
|
78
|
+
NZD: "NZD",
|
|
79
|
+
PEN: "PEN",
|
|
80
|
+
PHP: "PHP",
|
|
81
|
+
PLN: "PLN",
|
|
82
|
+
QAR: "QAR",
|
|
83
|
+
RON: "RON",
|
|
84
|
+
SAR: "SAR",
|
|
85
|
+
SEK: "SEK",
|
|
86
|
+
SGD: "SGD",
|
|
87
|
+
THB: "THB",
|
|
88
|
+
TRY: "TRY",
|
|
89
|
+
TWD: "TWD",
|
|
90
|
+
UAH: "UAH",
|
|
91
|
+
USD: "USD",
|
|
92
|
+
VND: "VND",
|
|
93
|
+
ZAR: "ZAR",
|
|
94
|
+
};
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// Simple value-type models (validated via Zod)
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
export const BagsFilterSchema = z.object({
|
|
99
|
+
checked_bags: z.number().int().nonnegative().default(0),
|
|
100
|
+
carry_on: z.boolean().default(false),
|
|
101
|
+
});
|
|
102
|
+
export const TimeRestrictionsSchema = z
|
|
103
|
+
.object({
|
|
104
|
+
earliest_departure: z.number().int().nonnegative().nullable().optional(),
|
|
105
|
+
latest_departure: z.number().int().positive().nullable().optional(),
|
|
106
|
+
earliest_arrival: z.number().int().nonnegative().nullable().optional(),
|
|
107
|
+
latest_arrival: z.number().int().positive().nullable().optional(),
|
|
108
|
+
})
|
|
109
|
+
.transform((v) => {
|
|
110
|
+
// Mirror the Python validator: if earliest > latest, swap.
|
|
111
|
+
const out = { ...v };
|
|
112
|
+
if (out.earliest_departure != null &&
|
|
113
|
+
out.latest_departure != null &&
|
|
114
|
+
out.earliest_departure > out.latest_departure) {
|
|
115
|
+
[out.earliest_departure, out.latest_departure] = [
|
|
116
|
+
out.latest_departure,
|
|
117
|
+
out.earliest_departure,
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
if (out.earliest_arrival != null &&
|
|
121
|
+
out.latest_arrival != null &&
|
|
122
|
+
out.earliest_arrival > out.latest_arrival) {
|
|
123
|
+
[out.earliest_arrival, out.latest_arrival] = [out.latest_arrival, out.earliest_arrival];
|
|
124
|
+
}
|
|
125
|
+
return out;
|
|
126
|
+
});
|
|
127
|
+
export const PassengerInfoSchema = z.object({
|
|
128
|
+
adults: z.number().int().nonnegative().default(1),
|
|
129
|
+
children: z.number().int().nonnegative().default(0),
|
|
130
|
+
infants_in_seat: z.number().int().nonnegative().default(0),
|
|
131
|
+
infants_on_lap: z.number().int().nonnegative().default(0),
|
|
132
|
+
});
|
|
133
|
+
export const PriceLimitSchema = z.object({
|
|
134
|
+
max_price: z.number().int().positive(),
|
|
135
|
+
currency: z.string().nullable().optional(),
|
|
136
|
+
});
|
|
137
|
+
export const LayoverRestrictionsSchema = z.object({
|
|
138
|
+
airports: z.array(z.string()).nullable().optional(),
|
|
139
|
+
min_duration: z.number().int().positive().nullable().optional(),
|
|
140
|
+
max_duration: z.number().int().positive().nullable().optional(),
|
|
141
|
+
});
|
|
142
|
+
export const AmenitiesSchema = z.object({
|
|
143
|
+
wifi: z.boolean().nullable().optional(),
|
|
144
|
+
power: z.boolean().nullable().optional(),
|
|
145
|
+
usb_power: z.boolean().nullable().optional(),
|
|
146
|
+
in_seat_video: z.boolean().nullable().optional(),
|
|
147
|
+
on_demand_video: z.boolean().nullable().optional(),
|
|
148
|
+
legroom_rating: z.number().int().nonnegative().nullable().optional(),
|
|
149
|
+
});
|
|
150
|
+
/** `true` when Google did not surface a price for this row (premium-cabin RT). */
|
|
151
|
+
export function priceUnknown(f) {
|
|
152
|
+
return f.price == null;
|
|
153
|
+
}
|
|
154
|
+
function todayUtc() {
|
|
155
|
+
const now = new Date();
|
|
156
|
+
return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
|
|
157
|
+
}
|
|
158
|
+
export class FlightSegment {
|
|
159
|
+
departure_airport;
|
|
160
|
+
arrival_airport;
|
|
161
|
+
travel_date;
|
|
162
|
+
time_restrictions;
|
|
163
|
+
selected_flight;
|
|
164
|
+
constructor(input) {
|
|
165
|
+
if (!input.departure_airport?.length || !input.arrival_airport?.length) {
|
|
166
|
+
throw new Error("Both departure and arrival airports must be specified");
|
|
167
|
+
}
|
|
168
|
+
// travel_date must be a valid ISO date and not in the past.
|
|
169
|
+
const travelDate = parseIsoDate(input.travel_date);
|
|
170
|
+
if (travelDate < todayUtc()) {
|
|
171
|
+
throw new Error("Travel date cannot be in the past");
|
|
172
|
+
}
|
|
173
|
+
const depFirst = input.departure_airport[0]?.[0]?.[0];
|
|
174
|
+
const arrFirst = input.arrival_airport[0]?.[0]?.[0];
|
|
175
|
+
if (depFirst && arrFirst && depFirst === arrFirst) {
|
|
176
|
+
throw new Error("Departure and arrival airports must be different");
|
|
177
|
+
}
|
|
178
|
+
this.departure_airport = input.departure_airport;
|
|
179
|
+
this.arrival_airport = input.arrival_airport;
|
|
180
|
+
this.travel_date = input.travel_date;
|
|
181
|
+
this.time_restrictions = input.time_restrictions ?? null;
|
|
182
|
+
this.selected_flight = input.selected_flight ?? null;
|
|
183
|
+
}
|
|
184
|
+
get parsed_travel_date() {
|
|
185
|
+
return parseIsoDate(this.travel_date);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/models/google-flights/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;IAClB,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;CACA,CAAC;AAGX,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,WAAW,EAAE,CAAC;IACd,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;CACJ,CAAC;AAGX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;CACL,CAAC;AAGX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,GAAG,EAAE,CAAC;IACN,QAAQ,EAAE,CAAC;IACX,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,CAAC;CACb,CAAC;AAGX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;CACC,CAAC;AAGX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;CACtB,CAAC;AAGX;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACF,CAAC;AAGX,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACxE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAClE,CAAC;KACD,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;IACf,2DAA2D;IAC3D,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACrB,IACE,GAAG,CAAC,kBAAkB,IAAI,IAAI;QAC9B,GAAG,CAAC,gBAAgB,IAAI,IAAI;QAC5B,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,EAC7C,CAAC;QACD,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAAG;YAC/C,GAAG,CAAC,gBAAgB;YACpB,GAAG,CAAC,kBAAkB;SACvB,CAAC;IACJ,CAAC;IACD,IACE,GAAG,CAAC,gBAAgB,IAAI,IAAI;QAC5B,GAAG,CAAC,cAAc,IAAI,IAAI;QAC1B,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,cAAc,EACzC,CAAC;QACD,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC/D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAClD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACrE,CAAC,CAAC;AAmEH,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,CAAe;IAC1C,OAAO,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;AACzB,CAAC;AAqBD,SAAS,QAAQ;IACf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,OAAO,aAAa;IACf,iBAAiB,CAAmB;IACpC,eAAe,CAAmB;IAC3C,WAAW,CAAS;IACX,iBAAiB,CAA0B;IACpD,eAAe,CAAsB;IAErC,YAAY,KAAyB;QACnC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,4DAA4D;QAC5D,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,UAAU,GAAG,QAAQ,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC;IACvD,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DateSearchFilters — payload for Google Flights' GetCalendarGraph endpoint.
|
|
3
|
+
*
|
|
4
|
+
* 1:1 port of fli/models/google_flights/dates.py.
|
|
5
|
+
*/
|
|
6
|
+
import { type Airline } from "../airline.ts";
|
|
7
|
+
import { type Alliance, type BagsFilter, EmissionsFilter, type FlightSegment, type LayoverRestrictions, MaxStops, type PassengerInfo, type PriceLimit, SeatType, TripType } from "./base.ts";
|
|
8
|
+
export interface DateSearchFiltersInput {
|
|
9
|
+
trip_type?: TripType;
|
|
10
|
+
passenger_info: PassengerInfo;
|
|
11
|
+
flight_segments: FlightSegment[];
|
|
12
|
+
stops?: MaxStops;
|
|
13
|
+
seat_type?: SeatType;
|
|
14
|
+
price_limit?: PriceLimit | null;
|
|
15
|
+
airlines?: Airline[] | null;
|
|
16
|
+
airlines_exclude?: Airline[] | null;
|
|
17
|
+
alliances?: Alliance[] | null;
|
|
18
|
+
alliances_exclude?: Alliance[] | null;
|
|
19
|
+
max_duration?: number | null;
|
|
20
|
+
layover_restrictions?: LayoverRestrictions | null;
|
|
21
|
+
emissions?: EmissionsFilter;
|
|
22
|
+
bags?: BagsFilter | null;
|
|
23
|
+
from_date: string;
|
|
24
|
+
to_date: string;
|
|
25
|
+
duration?: number | null;
|
|
26
|
+
}
|
|
27
|
+
export declare class DateSearchFilters {
|
|
28
|
+
trip_type: TripType;
|
|
29
|
+
passenger_info: PassengerInfo;
|
|
30
|
+
flight_segments: FlightSegment[];
|
|
31
|
+
stops: MaxStops;
|
|
32
|
+
seat_type: SeatType;
|
|
33
|
+
price_limit: PriceLimit | null;
|
|
34
|
+
airlines: Airline[] | null;
|
|
35
|
+
airlines_exclude: Airline[] | null;
|
|
36
|
+
alliances: Alliance[] | null;
|
|
37
|
+
alliances_exclude: Alliance[] | null;
|
|
38
|
+
max_duration: number | null;
|
|
39
|
+
layover_restrictions: LayoverRestrictions | null;
|
|
40
|
+
emissions: EmissionsFilter;
|
|
41
|
+
bags: BagsFilter | null;
|
|
42
|
+
from_date: string;
|
|
43
|
+
to_date: string;
|
|
44
|
+
duration: number | null;
|
|
45
|
+
constructor(input: DateSearchFiltersInput);
|
|
46
|
+
get parsed_from_date(): Date;
|
|
47
|
+
get parsed_to_date(): Date;
|
|
48
|
+
format(): unknown[];
|
|
49
|
+
encode(): string;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=dates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/models/google-flights/dates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,QAAQ,EACR,QAAQ,EACT,MAAM,WAAW,CAAC;AAkBnB,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,cAAc,EAAE,aAAa,CAAC;IAC9B,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC9B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,iBAAiB;IAC5B,SAAS,EAAE,QAAQ,CAAC;IACpB,cAAc,EAAE,aAAa,CAAC;IAC9B,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,QAAQ,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjD,SAAS,EAAE,eAAe,CAAC;IAC3B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEZ,KAAK,EAAE,sBAAsB;IAsEzC,IAAI,gBAAgB,IAAI,IAAI,CAE3B;IAED,IAAI,cAAc,IAAI,IAAI,CAEzB;IAED,MAAM,IAAI,OAAO,EAAE;IAyHnB,MAAM,IAAI,MAAM;CAMjB"}
|