UNPKG

worker-tls

Version:

worker-tls 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。

134 lines 4.94 kB
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