@rxx/worker
Version:
React MVI micro framework.
76 lines (75 loc) • 2.97 kB
TypeScript
/**
* The MIT License (MIT)
* Copyright (c) Taketoshi Aono
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* @fileoverview
* @author Taketoshi Aono
*/
import { StateHandler } from '../handler/state-handler';
import { HandlerResponse, StreamStore } from '../handler/handler';
import { Subscription } from 'rxjs';
/**
* User defined Intent instance.
*/
export interface IntentClass {
}
/**
* User defined Intent class constructor.
*/
export interface IntentConstructor {
new (dispatch: (type: string, payload: any) => void, handlers: {
[key: string]: HandlerResponse;
}): IntentClass;
}
/**
* Intent decorator that assign StateHandler to instance properties.
*/
export declare function intent<T extends IntentConstructor>(Base: T): any;
/**
* Singleton event publisher.
*/
export declare class Intent extends StateHandler {
/**
* Event history.
*/
private history;
private children;
private parent;
private subscribers;
subscribeEvent(subscriber: (type: string, payload?: any) => void): void;
unsubscribeEvent(subscriber: (type: string, payload?: any) => void): void;
unsubscribeAll(): void;
subscribe(props: {
[key: string]: any;
}): Subscription;
clone(...args: any[]): this;
/**
* Publish event.
* @override
* @param key Event name. If 'RETRY' passed, past published event will be republishing.
* @param args Event args. If a first argument was 'RETRY', specify history index.
* If empty, last event will be publishing.
*/
push(key: string, args?: any): Promise<any>;
getStreamStore(): StreamStore;
/**
* Return callback function that will publish event.
* @override
* @param key Event name.
* @param v Event args. Override publish args.
*/
callback<Args = any, ReturnType = any>(key: string, v?: any): (args?: Args) => Promise<ReturnType>;
private findSubjects;
private findHistory;
}