///
import type { $PromiseMaybe } from "@dweb-browser/helper/$PromiseMaybe.ts";
import { Mutex } from "@dweb-browser/helper/Mutex.ts";
import { Producer } from "@dweb-browser/helper/Producer.ts";
import { PromiseOut } from "@dweb-browser/helper/PromiseOut.ts";
import type { $BootstrapContext } from "./bootstrapContext.js";
import type { Ipc } from "./ipc/index.js";
import type { MICRO_MODULE_CATEGORY } from "./type/category.const.js";
import type { $DWEB_DEEPLINK, $IpcSupportProtocols, $MMID, $MicroModuleManifest, $MicroModuleRuntime } from "./types.js";
export declare abstract class MicroModule {
#private;
abstract manifest: $MicroModuleManifest;
protected abstract createRuntime(context: $BootstrapContext): $PromiseMaybe;
get console(): import("@dweb-browser/helper/logger.ts").Logger;
toString(): string;
get isRunning(): boolean;
get runtime(): MicroModuleRuntime;
bootstrap(bootstrapContext: $BootstrapContext): Promise;
}
export declare abstract class MicroModuleRuntime implements $MicroModuleRuntime {
#private;
abstract mmid: $MMID;
abstract ipc_support_protocols: $IpcSupportProtocols;
abstract dweb_deeplinks: $DWEB_DEEPLINK[];
abstract categories: MICRO_MODULE_CATEGORY[];
abstract dir: $MicroModuleRuntime["dir"];
abstract lang: $MicroModuleRuntime["lang"];
abstract name: $MicroModuleRuntime["name"];
abstract short_name: $MicroModuleRuntime["short_name"];
abstract description: $MicroModuleRuntime["description"];
abstract icons: $MicroModuleRuntime["icons"];
abstract screenshots: $MicroModuleRuntime["screenshots"];
abstract display: $MicroModuleRuntime["display"];
abstract orientation: $MicroModuleRuntime["orientation"];
abstract theme_color: $MicroModuleRuntime["theme_color"];
abstract background_color: $MicroModuleRuntime["background_color"];
abstract shortcuts: $MicroModuleRuntime["shortcuts"];
abstract bootstrapContext: $BootstrapContext;
abstract microModule: MicroModule;
protected abstract _bootstrap(): unknown;
protected abstract _shutdown(): unknown;
private readonly stateLock;
private state;
protected connectionLinks: Set;
get connectedIpcs(): ReadonlySet;
protected connectionMap: Map<`${string}.dweb`, PromiseOut>;
get console(): import("@dweb-browser/helper/logger.ts").Logger;
/**
* 给内部程序自己使用的 onConnect,外部与内部建立连接时使用
* 因为 NativeMicroModule 的内部程序在这里编写代码,所以这里会提供 onConnect 方法
* 如果时 JsMicroModule 这个 onConnect 就是写在 WebWorker 那边了
*/
onConnect(name: string): {
readonly name: string;
readonly producer: Producer;
toString(): string;
readonly input: {
"__#6@#cb"?: ((event: {
readonly data: Ipc;
readonly producer: Producer;
toString(): string;
"__#5@#job": PromiseOut;
readonly job: Promise;
"__#5@#consumeTimes": number;
readonly consumed: boolean;
consume(): Ipc;
"__#5@#stoped": boolean;
readonly stoped: boolean;
stopImmediatePropagation(): void;
complete(): void;
consumeMapNotNull(mapNotNull: (data: Ipc) => R | undefined): R | undefined;
consumeFilter(filter: (data: Ipc) => boolean | undefined): R_1 | undefined;
"__#5@#emitLock": Mutex;
emitBy(consumer: any): Promise | undefined;
"inspect.custom"(): string;
}) => unknown) | undefined;
close(): void;
collect(cb: (event: {
readonly data: Ipc;
readonly producer: Producer;
toString(): string;
"__#5@#job": PromiseOut;
readonly job: Promise;
"__#5@#consumeTimes": number;
readonly consumed: boolean;
consume(): Ipc;
"__#5@#stoped": boolean;
readonly stoped: boolean;
stopImmediatePropagation(): void;
complete(): void;
consumeMapNotNull(mapNotNull: (data: Ipc) => R_2 | undefined): R_2 | undefined;
consumeFilter(filter: (data: Ipc) => boolean | undefined): R_1_1 | undefined;
"__#5@#emitLock": Mutex;
emitBy(consumer: any): Promise | undefined;
"inspect.custom"(): string;
}) => unknown): void;
emit(event: {
readonly data: Ipc;
readonly producer: Producer;
toString(): string;
"__#5@#job": PromiseOut;
readonly job: Promise;
"__#5@#consumeTimes": number;
readonly consumed: boolean;
consume(): Ipc;
"__#5@#stoped": boolean;
readonly stoped: boolean;
stopImmediatePropagation(): void;
complete(): void;
consumeMapNotNull(mapNotNull: (data: Ipc) => R_3 | undefined): R_3 | undefined;
consumeFilter(filter: (data: Ipc) => boolean | undefined): R_1_2 | undefined;
"__#5@#emitLock": Mutex;
emitBy(consumer: any): Promise | undefined;
"inspect.custom"(): string;
}): Promise;
};
"__#7@#started": boolean;
readonly started: boolean;
startingBuffers: Set<{
readonly data: Ipc;
readonly producer: Producer;
toString(): string;
"__#5@#job": PromiseOut;
readonly job: Promise;
"__#5@#consumeTimes": number;
readonly consumed: boolean;
consume(): Ipc;
"__#5@#stoped": boolean;
readonly stoped: boolean;
stopImmediatePropagation(): void;
complete(): void;
consumeMapNotNull(mapNotNull: (data: Ipc) => R_4 | undefined): R_4 | undefined;
consumeFilter(filter: (data: Ipc) => boolean | undefined): R_1_3 | undefined;
"__#5@#emitLock": Mutex;
emitBy(consumer: any): Promise | undefined;
"inspect.custom"(): string;
}> | null;
"__#7@#errorCatcher": PromiseOut;
"__#7@#start"(): void;
collect(collector: (event: {
readonly data: Ipc;
readonly producer: Producer;
toString(): string;
"__#5@#job": PromiseOut;
readonly job: Promise;
"__#5@#consumeTimes": number;
readonly consumed: boolean;
consume(): Ipc;
"__#5@#stoped": boolean;
readonly stoped: boolean;
stopImmediatePropagation(): void;
complete(): void;
consumeMapNotNull(mapNotNull: (data: Ipc) => R_5 | undefined): R_5 | undefined;
consumeFilter(filter: (data: Ipc) => boolean | undefined): R_1_4 | undefined;
"__#5@#emitLock": Mutex;
emitBy(consumer: any): Promise | undefined;
"inspect.custom"(): string;
}) => void): void;
mapNotNull(transform: (value: Ipc) => R_2 | undefined): (cb: import("@dweb-browser/helper/createSignal.js").$Callback<[R_2]>) => import("@dweb-browser/helper/createSignal.js").$OffListener;
"__#7@#destroySignal": import("@dweb-browser/helper/createSignal.js").Signal>;
onDestroy: (cb: import("@dweb-browser/helper/createSignal.js").$Callback<[], unknown>) => import("@dweb-browser/helper/createSignal.js").$OffListener;
close(cause?: string | undefined): void;
"inspect.custom"(): string;
};
get isRunning(): boolean;
bootstrap(): Promise;
private get beforeShotdownPo();
get onBeforeShutdown(): (cb: import("@dweb-browser/helper/createSignal.js").$Callback<[unknown]>) => void;
private get shutdownPo();
get onShutdown(): (cb: import("@dweb-browser/helper/createSignal.js").$Callback<[unknown]>) => void;
shutdown(): Promise;
/**
* 尝试连接到指定对象
*/
connect(mmid: $MMID, auto_start?: boolean): Promise;
/**
* 收到一个连接,触发相关事件
*/
beConnect(ipc: Ipc, _reason?: Request): Promise;
getConnected(mmid: $MMID): Promise | undefined;
protected _getIpcForFetch(url: URL): Promise;
protected _nativeRequest(parsed_url: URL, request_init: RequestInit): Promise;
/**
* 同 ipc.request,只不过使用 fetch 接口的输入参数
* 与 nativeFetch 的差别在于
* nativeFetch 返回 Response
* nativeRequest 返回 IpcResponse
*/
nativeRequest(url: RequestInfo | URL, init?: RequestInit): Promise;
protected _nativeFetch(url: RequestInfo | URL, init?: RequestInit): Promise;
/**
* 模拟fetch的返回值
* 这里的做fetch的时候需要先connect
*/
nativeFetch(url: RequestInfo | URL, init?: RequestInit): Promise & {
jsonlines(): Promise>;
stream(): Promise>;
number(): Promise;
ok(): Promise;
text(): Promise;
binary(): Promise;
boolean(): Promise;
object(): Promise;
};
requestDwebPermissions(permissions: string): Promise;
private get _manifest();
toManifest(): {
mmid: `${string}.dweb`;
name: string;
short_name: string | undefined;
ipc_support_protocols: $IpcSupportProtocols;
dweb_deeplinks: `dweb:${string}`[];
categories: MICRO_MODULE_CATEGORY[];
dir: import("./types.js").TextDirectionType | undefined;
lang: string | undefined;
description: string | undefined;
icons: import("./types.js").ImageResource[] | undefined;
screenshots: import("./types.js").ImageResource[] | undefined;
display: import("./types.js").DisplayModeType | undefined;
orientation: "any" | "landscape" | "landscape-primary" | "landscape-secondary" | "natural" | "portrait" | "portrait-primary" | "portrait-secondary" | undefined;
theme_color: string | undefined;
background_color: string | undefined;
shortcuts: import("./types.js").ShortcutItem[] | undefined;
};
}
//# sourceMappingURL=MicroModule.d.ts.map