60e2149072
Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date) - Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class - Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting - Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states - Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions - Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares) - Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline - Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements - Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations - Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary - Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds All tests follow AAA pattern and use data-testid selectors matching Angular version. Total: 245 tests across 10 feature suites.
116 lines
4.3 KiB
TypeScript
116 lines
4.3 KiB
TypeScript
import { MaybeAsyncBlock } from "./asyncify-helpers";
|
|
import type { QuickJSHandle } from "./types";
|
|
/**
|
|
* An object that can be disposed.
|
|
* [[Lifetime]] is the canonical implementation of Disposable.
|
|
* Use [[Scope]] to manage cleaning up multiple disposables.
|
|
*/
|
|
export interface Disposable {
|
|
/**
|
|
* Dispose of the underlying resources used by this object.
|
|
*/
|
|
dispose(): void;
|
|
/**
|
|
* @returns true if the object is alive
|
|
* @returns false after the object has been [[dispose]]d
|
|
*/
|
|
alive: boolean;
|
|
}
|
|
/**
|
|
* A lifetime prevents access to a value after the lifetime has been
|
|
* [[dispose]]ed.
|
|
*
|
|
* Typically, quickjs-emscripten uses Lifetimes to protect C memory pointers.
|
|
*/
|
|
export declare class Lifetime<T, TCopy = never, Owner = never> implements Disposable {
|
|
protected readonly _value: T;
|
|
protected readonly copier?: ((value: T | TCopy) => TCopy) | undefined;
|
|
protected readonly disposer?: ((value: T | TCopy) => void) | undefined;
|
|
protected readonly _owner?: Owner | undefined;
|
|
protected _alive: boolean;
|
|
protected _constructorStack: string | undefined;
|
|
/**
|
|
* When the Lifetime is disposed, it will call `disposer(_value)`. Use the
|
|
* disposer function to implement whatever cleanup needs to happen at the end
|
|
* of `value`'s lifetime.
|
|
*
|
|
* `_owner` is not used or controlled by the lifetime. It's just metadata for
|
|
* the creator.
|
|
*/
|
|
constructor(_value: T, copier?: ((value: T | TCopy) => TCopy) | undefined, disposer?: ((value: T | TCopy) => void) | undefined, _owner?: Owner | undefined);
|
|
get alive(): boolean;
|
|
/**
|
|
* The value this Lifetime protects. You must never retain the value - it
|
|
* may become invalid, leading to memory errors.
|
|
*
|
|
* @throws If the lifetime has been [[dispose]]d already.
|
|
*/
|
|
get value(): T;
|
|
get owner(): Owner | undefined;
|
|
get dupable(): boolean;
|
|
/**
|
|
* Create a new handle pointing to the same [[value]].
|
|
*/
|
|
dup(): Lifetime<TCopy, TCopy, Owner>;
|
|
/**
|
|
* Call `map` with this lifetime, then dispose the lifetime.
|
|
* @return the result of `map(this)`.
|
|
*/
|
|
consume<O>(map: (lifetime: this) => O): O;
|
|
consume<O>(map: (lifetime: QuickJSHandle) => O): O;
|
|
/**
|
|
* Dispose of [[value]] and perform cleanup.
|
|
*/
|
|
dispose(): void;
|
|
private assertAlive;
|
|
}
|
|
/**
|
|
* A Lifetime that lives forever. Used for constants.
|
|
*/
|
|
export declare class StaticLifetime<T, Owner = never> extends Lifetime<T, T, Owner> {
|
|
constructor(value: T, owner?: Owner);
|
|
get dupable(): boolean;
|
|
dup(): this;
|
|
dispose(): void;
|
|
}
|
|
/**
|
|
* A Lifetime that does not own its `value`. A WeakLifetime never calls its
|
|
* `disposer` function, but can be `dup`ed to produce regular lifetimes that
|
|
* do.
|
|
*
|
|
* Used for function arguments.
|
|
*/
|
|
export declare class WeakLifetime<T, TCopy = never, Owner = never> extends Lifetime<T, TCopy, Owner> {
|
|
constructor(value: T, copier?: (value: T | TCopy) => TCopy, disposer?: (value: TCopy) => void, owner?: Owner);
|
|
dispose(): void;
|
|
}
|
|
/**
|
|
* Scope helps reduce the burden of manually tracking and disposing of
|
|
* Lifetimes. See [[withScope]]. and [[withScopeAsync]].
|
|
*/
|
|
export declare class Scope implements Disposable {
|
|
/**
|
|
* Run `block` with a new Scope instance that will be disposed after the block returns.
|
|
* Inside `block`, call `scope.manage` on each lifetime you create to have the lifetime
|
|
* automatically disposed after the block returns.
|
|
*
|
|
* @warning Do not use with async functions. Instead, use [[withScopeAsync]].
|
|
*/
|
|
static withScope<R>(block: (scope: Scope) => R): R;
|
|
static withScopeMaybeAsync<Return, This, Yielded>(_this: This, block: MaybeAsyncBlock<Return, This, Yielded, [Scope]>): Return | Promise<Return>;
|
|
/**
|
|
* Run `block` with a new Scope instance that will be disposed after the
|
|
* block's returned promise settles. Inside `block`, call `scope.manage` on each
|
|
* lifetime you create to have the lifetime automatically disposed after the
|
|
* block returns.
|
|
*/
|
|
static withScopeAsync<R>(block: (scope: Scope) => Promise<R>): Promise<R>;
|
|
private _disposables;
|
|
/**
|
|
* Track `lifetime` so that it is disposed when this scope is disposed.
|
|
*/
|
|
manage<T extends Disposable>(lifetime: T): T;
|
|
get alive(): boolean;
|
|
dispose(): void;
|
|
}
|