mirror of
https://github.com/bitwarden/browser
synced 2026-02-17 09:59:41 +00:00
* refactor: introduce @bitwarden/serialization * refactor: introduce @bitwarden/guid * refactor: introduce @bitwaren/client-type * refactor: introduce @bitwarden/core-test-utils * refactor: introduce @bitwarden/state and @bitwarden/state-test-utils Creates initial project structure for centralized application state management. Part of modularization effort to extract state code from common. * Added state provider documentation to README. * Changed callouts to Github format. * Fixed linting on file name. * Forced git to accept rename --------- Co-authored-by: Todd Martin <tmartin@bitwarden.com>
26 lines
977 B
TypeScript
26 lines
977 B
TypeScript
import { Observable } from "rxjs";
|
|
|
|
import { DerivedStateDependencies } from "../types/state";
|
|
|
|
import { DeriveDefinition } from "./derive-definition";
|
|
import { DerivedState } from "./derived-state";
|
|
|
|
/**
|
|
* State derived from an observable and a derive function
|
|
*/
|
|
export abstract class DerivedStateProvider {
|
|
/**
|
|
* Creates a derived state observable from a parent state observable, a deriveDefinition, and the dependencies
|
|
* required by the deriveDefinition
|
|
* @param parentState$ The parent state observable
|
|
* @param deriveDefinition The deriveDefinition that defines conversion from the parent state to the derived state as
|
|
* well as some memory persistent information.
|
|
* @param dependencies The dependencies of the derive function
|
|
*/
|
|
abstract get<TFrom, TTo, TDeps extends DerivedStateDependencies>(
|
|
parentState$: Observable<TFrom>,
|
|
deriveDefinition: DeriveDefinition<TFrom, TTo, TDeps>,
|
|
dependencies: TDeps,
|
|
): DerivedState<TTo>;
|
|
}
|