worker-tls
Version:
worker-tls 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。
134 lines • 4.94 kB
TypeScript
import { Fun, JSIdentifier } from "./stringify";
import type { Optional, AnyFunction } from "type-tls";
/**
* 将一组脚本内容构造成 ObjectURL
* @param scripts - 脚本内容
* @param options - 选项
* @returns url字符串
*/
export declare function createObjectURLByContents(scripts: BlobPart[], options?: BlobPropertyBag | null): string;
/**
* 代码片段
*/
export type CodePart = Fun | BlobPart;
/**
* 通过代码构建 ObjectURL
* @param codes
* @param args - 对于立即调用的函数传的参数
* @returns
*/
export declare function createObjectURLByCodes(codes: CodePart[], args?: Optional<any[]>): string;
/**
* 定义命名的函数
*
* @remarks
* 属性名字作为保存函数的变量名,即:函数名
*/
export interface INamedFunctionMap {
[name: string | number]: AnyFunction;
}
/**
* 定义命名的函数
*
*/
export interface INamedFunction {
/**
* 保存函数的变量名
*/
name?: Optional<string>;
/**
* 函数
*/
fun: AnyFunction;
}
/**
* 命名函数的数组
*/
export type INamedFunctionList = (AnyFunction | INamedFunction | INamedFunctionMap)[];
/**
* 命名函数选项的综合定义
*/
export type INamedFunctions = INamedFunctionList | INamedFunctionMap;
/**
* 代码块列表
*/
export type CodePartList = (CodePart | INamedFunction | INamedFunctionMap)[];
/**
* 代码块选项的综合定义
*/
export type CodePartOptions = CodePartList | INamedFunctionMap;
/**
* worker 的代码选项
*/
export interface IWorkerCodes {
/**
* 代码块
* @remarks
* - `code` 和 `named` 中的所有具有名字的 函数和数据都会被挂载在 `Worker` 中的 `globalThis` 上,其中 名字会作为 属性名字;
*
* - `code` 和 `named`中的 匿名函数 以及 `iife` 中的函数 会被作为 立即调用函数在 `Worker` 启动时作为顶层代码被立即执行;
*/
code?: Optional<CodePartOptions>;
/**
* 命名的函数
*
* @remarks
* 这些函数会被保存在 `Worker` 中的对应名字的全局变量中。
*
* - `code` 和 `named` 中的所有具有名字的 函数和数据都会被挂载在 `Worker` 中的 `globalThis` 上,其中 名字会作为 属性名字;
*
* - `code` 和 `named`中的 匿名函数 以及 `iife` 中的函数 会被作为 立即调用函数在 `Worker` 启动时作为顶层代码被立即执行;
*/
named?: Optional<INamedFunctions>;
/**
* 在 Wokrer 中会被立即执行的函数
* @remarks
* 这些函数会被作为 立即调用函数在 Worker 启动时作为顶层代码被立即执行;
*/
iife?: Optional<AnyFunction[]>;
/**
* 会作为 message 事件监听器的函数。
* @remarks
* 这些函数会在 Worker 中接收 `message` 事件;
*
* **注意:** 并不是所有的 监听器 都会被直接添加到 `message` 事件上;只有以 函数名字(即:`JSIdentifier` 类型的监听器) 指定的 事件会被直接添加到 `message` 事件上,其它类型的监听器都是以函数调用并传递 `message` 事件参数的形式来响应 `message` 事件,
*/
message?: Optional<(AnyFunction | JSIdentifier | Partial<INamedFunction>)[]>;
}
/**
* 打包 options 中的代码并转成 BlobPart[]
* @remarks
* 传入的所有的代码块最终会被分为以下几类:
*
* 1. `code` 和 `named` 中的所有具有名字的 函数和数据都会被挂载在 Worker 中的 `globalThis` 上,其中 名字会作为 属性名字;
*
* 2. `code` 和 `named`中的 匿名函数 以及 `iife` 中的函数 会被作为 立即调用函数在 Worker 启动时作为顶层代码被立即执行;
*
* 3. `message` 监听器会在 Worker 中接收 `message` 事件;
*
* @param options
* @param noDep - 禁止包含 创建 Worker 时所需要的其它依赖代码(环境代码)
* @returns
*/
export declare function createBlobParts(options: IWorkerCodes, noDep?: Optional<boolean>): BlobPart[];
/**
* 生成可用于创建 worker 的 url
* @remarks
* 打包 codeOptions 中的代码并生成可用于创建 worker 的 url
* @param codeOptions - 往 Worker 中注入代码的配置选项
* @param noDep - 禁止包含 创建 Worker 时所需要的其它依赖代码(环境代码)
* @returns
*/
export declare function createWorkerURL(codeOptions: IWorkerCodes, noDep?: Optional<boolean>): string;
/**
* 生成可用于创建动态 Worker 的 url
*
* @remarks
*
* {@inheritDoc ./stringify.ts#dynamicWorkerCodeString}
*
* @param codeOptions - 往 Worker 中注入代码的配置选项
* @param noDep - 禁止包含 创建 Worker 时所需要的其它依赖代码(环境代码)
*/
export declare function createDynamicWorkerURL(codeOptions?: Optional<IWorkerCodes>, noDep?: Optional<boolean>): string;
//# sourceMappingURL=createWorkerURL.d.ts.map