///
///
import { Cancellable } from "./cancellable";
import { Signal } from "./signals";
import { inspect } from "util";
export declare class Script {
private impl;
destroyed: Signal;
message: Signal;
private exportsProxy;
private logHandlerImpl;
constructor(impl: any);
get isDestroyed(): boolean;
get exports(): ScriptExports;
get logHandler(): ScriptLogHandler;
set logHandler(handler: ScriptLogHandler);
get defaultLogHandler(): ScriptLogHandler;
load(cancellable?: Cancellable): Promise;
unload(cancellable?: Cancellable): Promise;
eternalize(cancellable?: Cancellable): Promise;
post(message: any, data?: Buffer | null): void;
[inspect.custom](depth: any, options: any): string;
}
export interface ScriptOptions {
name?: string;
runtime?: ScriptRuntime;
}
export declare enum ScriptRuntime {
Default = "default",
QJS = "qjs",
V8 = "v8"
}
export declare type ScriptDestroyedHandler = () => void;
export declare type ScriptMessageHandler = (message: Message, data: Buffer | null) => void;
export declare type ScriptLogHandler = (level: LogLevel, text: string) => void;
export declare type Message = SendMessage | ErrorMessage;
export declare enum MessageType {
Send = "send",
Error = "error"
}
export interface SendMessage {
type: MessageType.Send;
payload: any;
}
export interface ErrorMessage {
type: MessageType.Error;
description: string;
stack?: string;
fileName?: string;
lineNumber?: number;
columnNumber?: number;
}
export interface ScriptExports {
[name: string]: (...args: any[]) => Promise;
}
export declare enum LogLevel {
Info = "info",
Warning = "warning",
Error = "error"
}