@ryo-98/react-api-bridge
Version:
A registry for component imperative api
43 lines (32 loc) • 1.54 kB
TypeScript
import {ResolveInit} from "./init.js";
import {BoundaryContextValue} from "./boundary.js";
import {APIParams, ResolveAPI} from "./api.js";
export interface APIOptions {
isMulti?: boolean;
}
export type BridgeAPIOptions<A extends APIParams> = Partial<Record<keyof A, APIOptions>>;
export interface BaseOptions<A extends APIParams, O extends BridgeAPIOptions<A> = BridgeAPIOptions<A>, P = any> {
contextValue?: BoundaryContextValue<A, P, O>;
}
export interface GetAPIOptions<A extends APIParams, N extends keyof A, O extends BridgeAPIOptions<A>, P = any>
extends BaseOptions<A, O, P> {
onInit?: ResolveInit<A, O, N>;
}
export type AllAPI<A extends APIParams, O extends BridgeAPIOptions<A> = BridgeAPIOptions<A>> = {
[N in keyof A]?: ResolveAPI<A, O, N> | undefined
};
export interface UpperOptions<A extends APIParams, O extends BridgeAPIOptions<A> = BridgeAPIOptions<A>, P = any>
extends BaseOptions<A, O, P> {
shouldForwardYield?: (boundaryDetail:
Pick<BoundaryContextValue<A, P, O>, 'payload' | 'parent'>
& {
allAPI: AllAPI<A, O>
}
) => any;
}
export interface GetUpperAPIOptions<A extends APIParams, N extends keyof A, O extends BridgeAPIOptions<A>, P = any>
extends GetAPIOptions<A, N, O, P>, UpperOptions<A, O, P> {
}
export interface GetAPIAsyncOptions<A extends APIParams, O extends BridgeAPIOptions<A>, P = any> extends BaseOptions<A, O, P> {
initial?: boolean;
}