{"version":3,"file":"full.mjs","sources":["../src/utils/constants.ts","../src/utils/serialization.ts","../src/utils/encoder.ts","../src/utils/internalSymbol.ts","../src/core/notify.ts","../src/core/batch.ts","../src/utils/error.ts","../src/utils/jsonrpc.ts","../src/utils/generateRandomID.ts","../src/utils/normalizeOptions.ts","../src/Async-Call.ts","../src/Async-Call-Generator.ts"],"sourcesContent":["export const isString = (x: unknown): x is string => typeof x === 'string'\nexport const isBoolean = (x: unknown): x is boolean => typeof x === 'boolean'\nexport const isFunction = (x: unknown): x is Function => typeof x === 'function'\nexport const isObject = (params: any): params is object => typeof params === 'object' && params !== null\nexport const ERROR = 'Error'\nexport const undefined = void 0\nexport const { setPrototypeOf } = Object\nexport const Promise_resolve = <T>(x: T) => Promise.resolve(x)\nexport const { isArray } = Array as { isArray(arg: any): arg is readonly any[] }\nexport const { apply } = Reflect\n","import { isObject, undefined } from './constants.ts'\nimport type { Serialization } from '../types.ts'\n\n/**\n * Serialization implementation that do nothing\n * @remarks {@link Serialization}\n * @public\n * @deprecated Will be removed in next major version\n */\nexport const NoSerialization: Serialization = {\n    serialization(from) {\n        return from\n    },\n    deserialization(serialized) {\n        return serialized\n    },\n}\n\n/**\n * Create a serialization by JSON.parse/stringify\n *\n * @param replacerAndReceiver - Replacer and receiver of JSON.parse/stringify\n * @param space - Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n * @param undefinedKeepingBehavior - How to keep \"undefined\" in result of SuccessResponse?\n *\n * If it is not handled properly, JSON.stringify will emit an invalid JSON RPC object.\n *\n * Options:\n * - `\"null\"`(**default**): convert it to null.\n * - `\"keep\"`: try to keep it by additional property \"undef\".\n * - `false`: Don't keep it, let it break.\n * @remarks {@link Serialization}\n * @public\n */\nexport const JSONSerialization = (\n    replacerAndReceiver: [((key: string, value: any) => any)?, ((key: string, value: any) => any)?] = [\n        undefined,\n        undefined,\n    ],\n    space?: string | number | undefined,\n    undefinedKeepingBehavior: 'keep' | 'null' | false = 'null',\n): Serialization => ({\n    serialization(from) {\n        if (undefinedKeepingBehavior && isObject(from) && 'result' in from && from.result === undefined) {\n            const alt = { ...from }\n            alt.result = null\n            if (undefinedKeepingBehavior === 'keep') (alt as any).undef = true\n            from = alt\n        }\n        return JSON.stringify(from, replacerAndReceiver[0], space)\n    },\n    deserialization(serialized) {\n        const result = JSON.parse(serialized as string, replacerAndReceiver[1])\n        if (\n            isObject(result) &&\n            'result' in result &&\n            result.result === null &&\n            'undef' in result &&\n            result.undef === true\n        ) {\n            result.result = undefined\n            delete result.undef\n        }\n        return result\n    },\n})\n","import type { IsomorphicEncoder, Request, Requests, Response, Responses, SuccessResponse } from '../types.ts'\nimport { isArray, undefined } from './constants.ts'\n\n/**\n * @public\n * Options of {@link (JSONEncoder:function)}\n */\nexport interface JSONEncoderOptions {\n    /** Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. */\n    space?: string | number | undefined\n    /**\n     * How to handle `\"undefined\"` in the result of {@link SuccessResponse}.\n     *\n     * @remarks\n     * If you need a full support of encoding `undefined`, for example, when the result is `{ field: undefined }` and you want to keep it,\n     * you need to find another library to do this.\n     *\n     * If this is not handled properly, `JSON.stringify` will emit an invalid JSON-RPC object (fields with `undefined` value will be omitted).\n     *\n     * Options:\n     * - `\"null\"`(**default**): convert it to `null`.\n     * - `false`: do not do anything, let it break.\n     */\n    keepUndefined?: false | 'null' | undefined\n    /** A function that transforms the results. */\n    replacer?: ((this: any, key: string, value: any) => any) | undefined\n    /** A function that transforms the results. This function is called for each member of the object. If a member contains nested objects, the nested objects are transformed before the parent object is. */\n    reviver?: ((this: any, key: string, value: any) => any) | undefined\n}\n/**\n * Create a encoder by JSON.parse/stringify\n *\n * @public\n * @param options - Options for this encoder.\n * @remarks {@link IsomorphicEncoder}\n */\nexport function JSONEncoder({\n    keepUndefined = 'null',\n    replacer,\n    reviver,\n    space,\n}: JSONEncoderOptions = {}): IsomorphicEncoder {\n    return {\n        encode(data) {\n            if (keepUndefined) {\n                isArray(data) ? data.forEach(undefinedEncode) : undefinedEncode(data)\n            }\n            return JSON.stringify(data, replacer, space)\n        },\n        decode(encoded) {\n            const data: Requests | Responses = JSON.parse(encoded as string, reviver)\n            return data\n        },\n    }\n}\n\nconst undefinedEncode = (i: Response | Request) => {\n    if ('result' in i && i.result === undefined) {\n        i.result = null\n    }\n}\n\n/** @public */\nexport namespace JSONEncoder {\n    export const Default: IsomorphicEncoder<unknown, unknown> = JSONEncoder()\n}\n","const i = 'AsyncCall/'\n// ! side effect\nexport const AsyncCallIgnoreResponse = Symbol.for(i + 'ignored')\nexport const AsyncCallNotify = Symbol.for(i + 'notify')\nexport const AsyncCallBatch = Symbol.for(i + 'batch')\n","import { AsyncCallNotify } from '../utils/internalSymbol.ts'\nimport { isFunction } from '../utils/constants.ts'\n\n/**\n * Make the returning type to `Promise<void>`\n * @internal\n * @remarks\n * Due to the limitation of TypeScript, generic signatures cannot be preserved\n * if the function is the top level parameter of this utility type,\n * or the function is not returning `Promise<void>`.\n */\nexport type _IgnoreResponse<T> = T extends (...args: infer Args) => unknown\n    ? (...args: Args) => Promise<void>\n    : {\n          [key in keyof T as T[key] extends Function ? key : never]: T[key] extends (\n              ...args: infer Args\n          ) => infer Return\n              ? Return extends Promise<void>\n                  ? T[key]\n                  : (...args: Args) => Promise<void>\n              : never\n      }\n/**\n * Wrap the AsyncCall instance to send notification.\n * @param instanceOrFnOnInstance - The AsyncCall instance or function on the AsyncCall instance\n * @example\n * const notifyOnly = notify(AsyncCall(...))\n * @public\n */\n\nexport function notify<T extends object>(instanceOrFnOnInstance: T): _IgnoreResponse<T> {\n    if (isFunction(instanceOrFnOnInstance)) return (instanceOrFnOnInstance as any)[AsyncCallNotify]\n    return new Proxy(instanceOrFnOnInstance, { get: notifyTrap }) as any\n}\nconst notifyTrap = (target: any, p: string | number | symbol) => {\n    return target[p][AsyncCallNotify]\n}\n","import { isString } from '../utils/constants.ts'\nimport { AsyncCallBatch, AsyncCallNotify } from '../utils/internalSymbol.ts'\nimport type { Request } from '../types.ts'\n/**\n * Wrap the AsyncCall instance to use batch call.\n * @param asyncCallInstance - The AsyncCall instance\n * @example\n * const [batched, send, drop] = batch(AsyncCall(...))\n * batched.call1() // pending\n * batched.call2() // pending\n * send() // send all pending requests\n * drop() // drop all pending requests\n * @returns It will return a tuple.\n *\n * The first item is the batched version of AsyncCall instance passed in.\n *\n * The second item is a function to send all pending requests.\n *\n * The third item is a function to drop and reject all pending requests.\n * @public\n */\n// TODO: use private field in the future.\nexport function batch<T extends object>(asyncCallInstance: T): [T, () => void, (error?: unknown) => void] {\n    const queue: BatchQueue = []\n    const getTrap = new Proxy(\n        {},\n        {\n            get(_, p) {\n                // @ts-expect-error\n                const f = (...args: any) => asyncCallInstance[AsyncCallBatch](queue, p, ...args)\n                // @ts-expect-error\n                f[AsyncCallNotify] = (...args: any) =>\n                    // @ts-expect-error\n                    asyncCallInstance[AsyncCallBatch][AsyncCallNotify](queue, p, ...args)\n                f[AsyncCallNotify][AsyncCallNotify] = f[AsyncCallNotify]\n                isString(p) && Object.defineProperty(methodContainer, p, { value: f, configurable: true })\n                return f\n            },\n        },\n    )\n    const methodContainer = { __proto__: getTrap } as any\n    return [\n        new Proxy(methodContainer, {\n            getPrototypeOf: () => null,\n            setPrototypeOf: (_, value) => value === null,\n        }),\n        () => {\n            queue.length && queue.r![0]()\n            queue.length = 0\n        },\n        (error = new Error('Aborted')) => {\n            queue.length && queue.r![1](error)\n            queue.length = 0\n        },\n    ]\n}\nexport type BatchQueue = Request[] & {\n    /** Request handler */\n    r?: [emit: () => void, reject: (error?: unknown) => void]\n}\n","import type { AbortSignalLike } from '../types.ts'\n\nclass CustomError extends Error {\n    // TODO: support cause\n    constructor(\n        public name: string,\n        message: string,\n        public code: number,\n        public stack: string,\n    ) {\n        super(message)\n    }\n}\nexport const Err_Cannot_find_a_running_iterator_with_given_ID: unique symbol = {} as any\nexport const Err_Only_string_can_be_the_RPC_method_name: unique symbol = {} as any\nexport const Err_Cannot_call_method_starts_with_rpc_dot_directly: unique symbol = {} as any\nexport const Err_Then_is_accessed_on_local_implementation_Please_explicitly_mark_if_it_is_thenable_in_the_options: unique symbol =\n    {} as any\nconst Messages = [\n    Err_Cannot_find_a_running_iterator_with_given_ID,\n    Err_Only_string_can_be_the_RPC_method_name,\n    Err_Cannot_call_method_starts_with_rpc_dot_directly,\n    Err_Then_is_accessed_on_local_implementation_Please_explicitly_mark_if_it_is_thenable_in_the_options,\n] as const\n// https://github.com/Jack-Works/async-call-rpc/wiki/Error-messages\nexport const makeHostedMessage = (id: (typeof Messages)[number], error: Error) => {\n    const n = Messages.indexOf(id)\n    error.message += `Error ${n}: https://github.com/Jack-Works/async-call-rpc/wiki/Errors#` + n\n    return error\n}\n// ! side effect\n/** These Error is defined in ECMAScript spec */\nconst errors: Record<string, typeof EvalError> = {\n    // @ts-expect-error\n    __proto__: null,\n    Error,\n    EvalError,\n    RangeError,\n    ReferenceError,\n    SyntaxError,\n    TypeError,\n    URIError,\n}\nexport const DOMExceptionHeader = 'DOMException:'\n/**\n * AsyncCall support somehow transfer ECMAScript Error\n */\nexport const RecoverError = (type: string, message: string, code: number, stack: string): Error => {\n    try {\n        let E\n        if (type.startsWith(DOMExceptionHeader) && (E = globalDOMException())) {\n            const name = type.slice(DOMExceptionHeader.length)\n            return new E(message, name)\n        } else if (type in errors) {\n            const e = new errors[type]!(message)\n            e.stack = stack\n            // @ts-expect-error\n            e.code = code\n            return e\n        } else {\n            return new CustomError(type, message, code, stack)\n        }\n    } catch {\n        return new Error(`E${code} ${type}: ${message}\\n${stack}`)\n    }\n}\nexport const removeStackHeader = (stack: unknown) => String(stack).replace(/^.+\\n.+\\n/, '')\n// ! side effect\nexport const globalDOMException = (() => {\n    try {\n        // @ts-expect-error\n        return DOMException\n    } catch {}\n}) as () => DOMException | undefined\ntype DOMException = { new (message: string, name: string): any }\nexport function onAbort(signal: AbortSignalLike | undefined, callback: () => void) {\n    signal && signal.addEventListener('abort', callback, { once: true })\n}\n","import { globalDOMException as DOMException, DOMExceptionHeader } from './error.ts'\nimport type { ErrorMapFunction } from '../Async-Call.ts'\nimport { ERROR, isArray, isFunction, isObject, undefined } from './constants.ts'\nimport type { Request, SuccessResponse, ErrorResponse, ID, Response } from '../types.ts'\n\nexport const jsonrpc = '2.0'\nexport const makeRequest = (\n    id: ID,\n    method: string,\n    params: readonly unknown[] | object,\n    remoteStack?: string,\n): Request => {\n    const x: Request = { jsonrpc, id, method, params, remoteStack }\n    deleteUndefined(x, 'id')\n    deleteFalsy(x, 'remoteStack')\n    return x\n}\nexport const makeSuccessResponse = (id: ID, result: unknown): SuccessResponse => {\n    const x: SuccessResponse = { jsonrpc, id, result }\n    deleteUndefined(x, 'id')\n    return x\n}\nexport const makeErrorResponse = <T>(id: ID, code: number, message: string, data?: T): ErrorResponse<T> => {\n    if (id === undefined) id = null\n    code = Math.floor(code)\n    if (Number.isNaN(code)) code = -1\n    const x: ErrorResponse<T> = { jsonrpc, id, error: { code, message, data } }\n    deleteUndefined(x.error, 'data')\n    return x\n}\n// Pre defined error in section 5.1\n// ! side effect\nexport const ErrorResponseParseError = <T>(e: unknown, mapper: ErrorMapFunction<T>): ErrorResponse<T> => {\n    const obj = ErrorResponseMapped({} as any, e, mapper)\n    const o = obj.error as Mutable<ErrorResponse['error']>\n    o.code = -32700\n    o.message = 'Parse error'\n    return obj\n}\n\n// Not using.\n// InvalidParams -32602 'Invalid params'\n// InternalError -32603 'Internal error'\nexport const ErrorResponseInvalidRequest = (id: ID) => makeErrorResponse(id, -32600, 'Invalid Request')\nexport const ErrorResponseMethodNotFound = (id: ID) => makeErrorResponse(id, -32601, 'Method not found')\n\ntype AsyncCallErrorDetail = {\n    stack?: string\n    type?: string\n}\nexport const ErrorResponseMapped = <T>(request: Request, e: unknown, mapper: ErrorMapFunction<T>): ErrorResponse<T> => {\n    const { id } = request\n    const { code, message, data } = mapper(e, request)\n    return makeErrorResponse(id, code, message, data)\n}\n\nexport const defaultErrorMapper =\n    (stack = '', code = -1): ErrorMapFunction<AsyncCallErrorDetail> =>\n    (e) => {\n        let message = toString('', () => (e as any).message)\n        let type = toString(ERROR, (ctor = (e as any).constructor) => isFunction(ctor) && ctor.name)\n        const E = DOMException()\n        if (E && e instanceof E) type = DOMExceptionHeader + e.name\n        const eType = typeof e\n        if (eType == 'string' || eType === 'number' || eType == 'boolean' || eType == 'bigint') {\n            type = ERROR\n            message = String(e)\n        }\n        const data: AsyncCallErrorDetail = stack ? { stack, type } : { type }\n        return { code, message, data }\n    }\n\nexport const isJSONRPCObject = (data: any): data is Response | Request => {\n    if (!isObject(data)) return false\n    if (!('jsonrpc' in data)) return false\n    if (data.jsonrpc !== jsonrpc) return false\n    if ('params' in data) {\n        const params = data.params\n        if (!isArray(params) && !isObject(params)) return false\n    }\n    return true\n}\n\nconst toString = (_default: string, val: () => any) => {\n    try {\n        const v = val()\n        if (v === undefined) return _default\n        return String(v)\n    } catch {\n        return _default\n    }\n}\nconst deleteUndefined = <O>(x: O, key: keyof O) => {\n    if (x[key] === undefined) delete x[key]\n}\nconst deleteFalsy = <T>(x: T, key: keyof T) => {\n    if (!x[key]) delete x[key]\n}\ntype Mutable<T> = { -readonly [key in keyof T]: T[key] }\n","export const generateRandomID = () => Math.random().toString(36).slice(2)\n","import type { AsyncCallOptions } from '../Async-Call.ts'\nimport { isBoolean } from './constants.ts'\nconst undefinedToTrue = (x: undefined | boolean) => (x === void 0 ? true : x)\ntype NormalizedLogOptions = readonly [\n    beCalled: boolean,\n    localError: boolean,\n    remoteError: boolean,\n    isPretty?: boolean,\n    requestReplay?: boolean,\n    sendLocalStack?: boolean,\n]\n\nexport const normalizeLogOptions = (log: NonNullable<AsyncCallOptions['log']>): NormalizedLogOptions | [] => {\n    if (log === 'all') return [true, true, true, true, true, true]\n    if (!isBoolean(log)) {\n        const { beCalled, localError, remoteError, type, requestReplay, sendLocalStack } = log\n        return [\n            undefinedToTrue(beCalled),\n            undefinedToTrue(localError),\n            undefinedToTrue(remoteError),\n            type !== 'basic',\n            requestReplay,\n            sendLocalStack,\n        ]\n    }\n    if (log) return [true, true, true, true] as const\n    return []\n}\n\nexport const normalizeStrictOptions = (strict: NonNullable<AsyncCallOptions['strict']>) => {\n    if (!isBoolean(strict)) {\n        const { methodNotFound, unknownMessage } = strict\n        return [methodNotFound, unknownMessage] as const\n    }\n    return [strict, strict] as const\n}\n","export type * from './types.ts'\nexport type { _IgnoreResponse } from './core/notify.ts'\nexport { JSONSerialization, NoSerialization } from './utils/serialization.ts'\nexport { JSONEncoder, type JSONEncoderOptions } from './utils/encoder.ts'\nexport { notify } from './core/notify.ts'\nexport { batch } from './core/batch.ts'\n\nimport {\n    makeRequest,\n    ErrorResponseMapped,\n    makeSuccessResponse,\n    isJSONRPCObject,\n    defaultErrorMapper,\n    ErrorResponseMethodNotFound,\n    ErrorResponseInvalidRequest,\n    ErrorResponseParseError,\n} from './utils/jsonrpc.ts'\nimport {\n    removeStackHeader,\n    RecoverError,\n    makeHostedMessage,\n    Err_Cannot_call_method_starts_with_rpc_dot_directly,\n    Err_Then_is_accessed_on_local_implementation_Please_explicitly_mark_if_it_is_thenable_in_the_options,\n    onAbort,\n} from './utils/error.ts'\nimport { generateRandomID } from './utils/generateRandomID.ts'\nimport { normalizeStrictOptions, normalizeLogOptions } from './utils/normalizeOptions.ts'\nimport { AsyncCallIgnoreResponse, AsyncCallNotify, AsyncCallBatch } from './utils/internalSymbol.ts'\nimport type { BatchQueue } from './core/batch.ts'\nimport type {\n    CallbackBasedChannel,\n    EventBasedChannel,\n    AsyncCallOptions,\n    ConsoleInterface,\n    AsyncVersionOf,\n    Request,\n    Response,\n    SuccessResponse,\n    ErrorResponse,\n    IsomorphicEncoderFull,\n    IsomorphicEncoder,\n    Requests,\n    Responses,\n} from './types.ts'\nimport { apply, ERROR, isArray, isFunction, isObject, isString, Promise_resolve, undefined } from './utils/constants.ts'\n\n/**\n * Create a RPC server & client.\n *\n * @remarks\n * See {@link AsyncCallOptions}\n *\n * thisSideImplementation can be a Promise so you can write:\n *\n * ```ts\n * export const service = AsyncCall(typeof window === 'object' ? {} : import('./backend/service.js'), {})\n * ```\n *\n * @param thisSideImplementation - The implementation when this AsyncCall acts as a JSON RPC server. Can be a Promise.\n * @param options - {@link AsyncCallOptions}\n * @typeParam OtherSideImplementedFunctions - The type of the API that server expose. For any function on this interface, it will be converted to the async version.\n * @returns Same as the `OtherSideImplementedFunctions` type parameter, but every function in that interface becomes async and non-function value is removed. Method called \"then\" are also removed.\n * @public\n */\nexport function AsyncCall<OtherSideImplementedFunctions = {}>(\n    thisSideImplementation: null | undefined | object | Promise<object>,\n    options: AsyncCallOptions,\n): AsyncVersionOf<OtherSideImplementedFunctions> {\n    type Hint = 'request' | 'response' | undefined\n\n    let isThisSideImplementationPending = true\n    let resolvedThisSideImplementationValue: unknown\n    let rejectedThisSideImplementation: unknown\n\n    let resolvedChannel: EventBasedChannel | CallbackBasedChannel | undefined\n    let channelPromise: Promise<EventBasedChannel | CallbackBasedChannel> | undefined\n    // This promise should never fail\n    const awaitThisSideImplementation = async () => {\n        try {\n            resolvedThisSideImplementationValue = await thisSideImplementation\n        } catch (e) {\n            rejectedThisSideImplementation = e\n            console_error('AsyncCall failed to start', e)\n        } finally {\n            isThisSideImplementationPending = false\n        }\n    }\n    const onChannelResolved = (channel: EventBasedChannel | CallbackBasedChannel) => {\n        resolvedChannel = channel\n        if (isCallbackBasedChannel(channel)) {\n            channel.setup(\n                (data, hint) => rawMessageReceiver(data, hint).then(rawMessageSender),\n                (data, hint) => {\n                    let _ = hintedDecode(data, hint)\n\n                    if (isJSONRPCObject(_)) return true\n                    return Promise_resolve(_).then(isJSONRPCObject)\n                },\n            )\n        }\n        if (isEventBasedChannel(channel)) {\n            const m = channel\n            m.on &&\n                m.on((_, hint) =>\n                    rawMessageReceiver(_, hint)\n                        .then(rawMessageSender)\n                        .then((x) => x && m.send!(x)),\n                )\n        }\n        return channel\n    }\n\n    const {\n        serializer,\n        encoder,\n        key: deprecatedName,\n        name,\n        strict = true,\n        log = true,\n        parameterStructures: deprecatedParameterStructures,\n        parameterStructure,\n        preferLocalImplementation = false,\n        idGenerator = generateRandomID,\n        mapError,\n        logger,\n        channel,\n        thenable,\n        signal,\n        forceSignal,\n    } = options\n\n    // Note: we're not shorten this error message because it will be removed in the next major version.\n    if (serializer && encoder) throw new TypeError('Please remove serializer.')\n    if (name && deprecatedName) throw new TypeError('Please remove key.')\n    if (deprecatedParameterStructures && parameterStructure) throw new TypeError('Please remove parameterStructure.')\n    const paramStyle = deprecatedParameterStructures || parameterStructure || 'by-position'\n    const logKey = name || deprecatedName || 'rpc'\n\n    const throwIfAborted = () => {\n        signal && signal.throwIfAborted()\n        forceSignal && forceSignal.throwIfAborted()\n    }\n\n    const {\n        encode: encodeFromOption,\n        encodeRequest: encodeRequestFromOption,\n        encodeResponse: encodeResponseFromOption,\n        decode,\n        decodeRequest,\n        decodeResponse,\n    } = (encoder || {}) as IsomorphicEncoder & IsomorphicEncoderFull\n\n    const encodeRequest: (data: Requests | Responses) => any = encoder\n        ? (data) => apply(encodeRequestFromOption || encodeFromOption, encoder, [data])\n        : serializer\n          ? (data) => serializer.serialization(data)\n          : Object\n\n    const encodeResponse: (data: Requests | Responses) => any = encoder\n        ? (data) => apply(encodeResponseFromOption || encodeFromOption, encoder, [data])\n        : serializer\n          ? (data) => serializer.serialization(data)\n          : Object\n\n    const hintedDecode: (data: unknown, hint: Hint) => unknown = encoder\n        ? (data, hint) =>\n              hint == 'request'\n                  ? apply(decodeRequest || decode, encoder, [data])\n                  : hint == 'response'\n                    ? apply(decodeResponse || decode, encoder, [data])\n                    : apply(decode, encoder, [data])\n        : serializer\n          ? (data) => serializer.deserialization(data)\n          : Object\n\n    if (thisSideImplementation instanceof Promise) awaitThisSideImplementation()\n    else {\n        resolvedThisSideImplementationValue = thisSideImplementation\n        isThisSideImplementationPending = false\n    }\n\n    const [banMethodNotFound, banUnknownMessage] = normalizeStrictOptions(strict)\n    const [log_beCalled, log_localError, log_remoteError, log_pretty, log_requestReplay, log_sendLocalStack] =\n        normalizeLogOptions(log)\n    const {\n        log: console_log,\n        error: console_error = console_log,\n        debug: console_debug = console_log,\n        groupCollapsed: console_groupCollapsed = console_log,\n        groupEnd: console_groupEnd = console_log,\n        warn: console_warn = console_log,\n    } = (logger || console) as ConsoleInterface\n    type PromiseParam = [resolve: (value?: any) => void, reject: (reason?: any) => void, stack?: string]\n    const requestContext = new Map<string | number, PromiseParam>()\n\n    onAbort(forceSignal, () => {\n        requestContext.forEach((x) => x[1](forceSignal!.reason))\n        requestContext.clear()\n    })\n\n    const onRequest = async (data: Request): Promise<Response | undefined> => {\n        if ((signal && signal.aborted) || (forceSignal && forceSignal.aborted))\n            return makeErrorObject((signal && signal.reason) || (forceSignal && forceSignal.reason), '', data)\n        if (isThisSideImplementationPending) await awaitThisSideImplementation()\n        // TODO: in next major version we should not send this message since it might contain sensitive info.\n        else if (rejectedThisSideImplementation) return makeErrorObject(rejectedThisSideImplementation, '', data)\n        let frameworkStack: string = ''\n        try {\n            const { params, method, id: req_id, remoteStack } = data\n            // ? We're mapping any method starts with 'rpc.' to a Symbol.for\n            const key = (method.startsWith('rpc.') ? Symbol.for(method) : method) as keyof object\n            const executor: unknown = resolvedThisSideImplementationValue && resolvedThisSideImplementationValue[key]\n            if (!isFunction(executor)) {\n                if (!banMethodNotFound) {\n                    if (log_localError) console_debug('Missing method', key, data)\n                    return\n                } else return ErrorResponseMethodNotFound(req_id)\n            }\n            const args = isArray(params) ? params : [params]\n            frameworkStack = removeStackHeader(new Error().stack)\n            const promise = new Promise((resolve) =>\n                resolve(apply(executor, resolvedThisSideImplementationValue, args)),\n            )\n            if (log_beCalled) {\n                if (log_pretty) {\n                    const logArgs: unknown[] = [\n                        `${logKey}.%c${method}%c(${args.map(() => '%o').join(', ')}%c)\\n%o %c@${req_id}`,\n                        'color:#d2c057',\n                        '',\n                        ...args,\n                        '',\n                        promise,\n                        'color:gray;font-style:italic;',\n                    ]\n                    if (log_requestReplay) {\n                        const replay = () => {\n                            debugger\n                            return apply(executor, resolvedThisSideImplementationValue, args)\n                        }\n                        // this function will be logged, keep it short.\n                        // Do not inline it, it's hard to keep it in a single line after build step.\n                        logArgs.push(() => replay())\n                    }\n                    if (remoteStack) {\n                        console_groupCollapsed(...logArgs)\n                        console_log(remoteStack)\n                        console_groupEnd()\n                    } else console_log(...logArgs)\n                } else console_log(`${logKey}.${method}(${[...args].toString()}) @${req_id}`)\n            }\n            const result = await promise\n            if (result === AsyncCallIgnoreResponse) return\n            return makeSuccessResponse(req_id, result)\n        } catch (e) {\n            return makeErrorObject(e, frameworkStack, data)\n        }\n    }\n    const onResponse = async (data: Response): Promise<void> => {\n        let errorMessage = '',\n            remoteErrorStack = '',\n            errorCode = 0,\n            errorType = ERROR\n        if ('error' in data) {\n            const e = data.error\n            errorMessage = e.message\n            errorCode = e.code\n            const detail = e.data\n\n            if (isObject(detail) && 'stack' in detail && isString(detail.stack)) remoteErrorStack = detail.stack\n            else remoteErrorStack = '<remote stack not available>'\n\n            if (isObject(detail) && 'type' in detail && isString(detail.type)) errorType = detail.type\n            else errorType = ERROR\n\n            if (log_remoteError)\n                log_pretty\n                    ? console_error(\n                          `${errorType}: ${errorMessage}(${errorCode}) %c@${data.id}\\n%c${remoteErrorStack}`,\n                          'color: gray',\n                          '',\n                      )\n                    : console_error(`${errorType}: ${errorMessage}(${errorCode}) @${data.id}\\n${remoteErrorStack}`)\n        }\n        const { id } = data\n        if (id === null || id === undefined || !requestContext.has(id)) return\n        const [resolve, reject, localErrorStack = ''] = requestContext.get(id)!\n        requestContext.delete(id)\n        if ('error' in data) {\n            reject(\n                // TODO: add a hook to customize this\n                RecoverError(\n                    errorType,\n                    errorMessage,\n                    errorCode,\n                    // ? We use \\u0430 which looks like \"a\" to prevent browser think \"at AsyncCall\" is a real stack\n                    remoteErrorStack + '\\n    \\u0430t AsyncCall (rpc) \\n' + localErrorStack,\n                ),\n            )\n        } else {\n            resolve(data.result)\n        }\n        return\n    }\n    const rawMessageReceiver = async (\n        _: unknown,\n        hint: Hint,\n    ): Promise<undefined | Response | (Response | undefined)[]> => {\n        let data: unknown\n        let result: Response | undefined = undefined\n        try {\n            data = await hintedDecode(_, hint)\n            if (isJSONRPCObject(data)) {\n                return (result = await handleSingleMessage(data))\n            } else if (isArray(data) && data.every(isJSONRPCObject) && data.length !== 0) {\n                return Promise.all(data.map(handleSingleMessage))\n            } else {\n                if (banUnknownMessage) {\n                    let id = (data as any).id\n                    if (id === undefined) id = null\n                    return ErrorResponseInvalidRequest(id)\n                } else {\n                    // ? Ignore this message. The message channel maybe also used to transfer other message too.\n                    return undefined\n                }\n            }\n        } catch (e) {\n            if (log_localError) console_error(e, data, result)\n            let stack: string | undefined\n            try {\n                stack = '' + (e as any).stack\n            } catch {}\n            return ErrorResponseParseError(e, mapError || defaultErrorMapper(stack))\n        }\n    }\n    const rawMessageSender = async (res: undefined | Response | (Response | undefined)[]) => {\n        if (!res) return\n        if (isArray(res)) {\n            const reply = res.filter((x): x is Response => (x && 'id' in x) as boolean)\n            if (reply.length === 0) return\n            return encodeResponse(reply)\n        } else {\n            return encodeResponse(res)\n        }\n    }\n\n    if (channel instanceof Promise) channelPromise = channel.then(onChannelResolved)\n    else onChannelResolved(channel)\n\n    const makeErrorObject = (e: any, frameworkStack: string, data: Request) => {\n        if (isObject(e) && 'stack' in e)\n            e.stack = frameworkStack\n                .split('\\n')\n                .reduce((stack, fstack) => stack.replace(fstack + '\\n', ''), '' + e.stack)\n        if (log_localError) console_error(e)\n        return ErrorResponseMapped(data, e, mapError || defaultErrorMapper(log_sendLocalStack ? e.stack : undefined))\n    }\n\n    const sendPayload = async (payload: Requests | BatchQueue, removeQueueR?: true) => {\n        if (removeQueueR) payload = [...(payload as BatchQueue)]\n        const data = await encodeRequest(payload)\n        return (resolvedChannel || (await channelPromise))!.send!(data)\n    }\n    const rejectsQueue = (queue: BatchQueue, error: unknown) => {\n        for (const x of queue) {\n            if ('id' in x) {\n                const ctx = requestContext.get(x.id!)\n                ctx && ctx[1](error)\n            }\n        }\n    }\n    const handleSingleMessage = async (\n        data: SuccessResponse | ErrorResponse | Request,\n    ): Promise<SuccessResponse | ErrorResponse | undefined> => {\n        if ('method' in data) {\n            if ('id' in data) {\n                if (!forceSignal) return onRequest(data)\n                return new Promise((resolve, reject) => {\n                    const handleForceAbort = () => resolve(makeErrorObject(forceSignal.reason, '', data))\n                    onRequest(data)\n                        .then(resolve, reject)\n                        .finally(() => forceSignal.removeEventListener('abort', handleForceAbort))\n                    onAbort(forceSignal, handleForceAbort)\n                })\n            }\n            onRequest(data).catch(() => {})\n            return // Skip response for notifications\n        }\n        return onResponse(data) as Promise<undefined>\n    }\n    const call = (method: string | symbol, args: unknown[], stack: string | undefined, notify = false) => {\n        return new Promise<void>((resolve, reject) => {\n            throwIfAborted()\n            let queue: BatchQueue | undefined = undefined\n            if (method === AsyncCallBatch) {\n                queue = args.shift() as any\n                method = args.shift() as any\n            }\n            if (typeof method === 'symbol') {\n                const RPCInternalMethod: string = Symbol.keyFor(method) || (method as any).description\n                if (RPCInternalMethod) {\n                    if (RPCInternalMethod.startsWith('rpc.')) method = RPCInternalMethod\n                    else throw new TypeError('Not start with rpc.')\n                }\n            } else if (method.startsWith('rpc.')) {\n                throw makeHostedMessage(Err_Cannot_call_method_starts_with_rpc_dot_directly, new TypeError())\n            }\n\n            if (preferLocalImplementation && !isThisSideImplementationPending && isString(method)) {\n                const localImpl: unknown =\n                    resolvedThisSideImplementationValue && (resolvedThisSideImplementationValue as any)[method]\n                if (isFunction(localImpl)) return resolve(localImpl(...args))\n            }\n            const id = idGenerator()\n            stack = removeStackHeader(stack)\n            const param = paramStyle === 'by-name' && args.length === 1 && isObject(args[0]) ? args[0] : args\n            const request = makeRequest(\n                notify ? undefined : id,\n                method as string,\n                param,\n                log_sendLocalStack ? stack : undefined,\n            )\n            if (queue) {\n                queue.push(request)\n                if (!queue.r) queue.r = [() => sendPayload(queue!, true), (e) => rejectsQueue(queue!, e)]\n            } else sendPayload(request).catch(reject)\n            if (notify) return resolve()\n            requestContext.set(id, [resolve, reject, stack])\n        })\n    }\n    const getTrap = (_: any, method: string | symbol) => {\n        const f = {\n            // This function will be logged to the console so it must be 1 line\n            [method]: (..._: unknown[]) => call(method, _, new Error().stack),\n        }[method as any]!\n        const f2 = {\n            [method]: (..._: unknown[]) => call(method, _, new Error().stack, true),\n        }[method as any]!\n        // @ts-expect-error\n        f[AsyncCallNotify] = f2[AsyncCallNotify] = f2\n        isString(method) && Object.defineProperty(methodContainer, method, { value: f, configurable: true })\n        return f\n    }\n    const methodContainer: any = { __proto__: new Proxy({}, { get: getTrap }) }\n    if (thenable === false) methodContainer.then = undefined\n    else if (thenable === undefined) {\n        Object.defineProperty(methodContainer, 'then', {\n            configurable: true,\n            get() {\n                console_warn(\n                    makeHostedMessage(\n                        Err_Then_is_accessed_on_local_implementation_Please_explicitly_mark_if_it_is_thenable_in_the_options,\n                        new TypeError('RPC used as Promise: '),\n                    ),\n                )\n            },\n        })\n    }\n    return new Proxy(methodContainer, {\n        getPrototypeOf: () => null,\n        setPrototypeOf: (_, value) => value === null,\n        // some library will treat this object as a normal object and run algorithm steps in https://tc39.es/ecma262/#sec-ordinaryget\n        getOwnPropertyDescriptor(_, method) {\n            if (!(method in methodContainer)) getTrap(_, method) // trigger [[Get]]\n            return Object.getOwnPropertyDescriptor(methodContainer, method)\n        },\n    }) as AsyncVersionOf<OtherSideImplementedFunctions>\n}\n// Assume a console object in global if there is no custom logger provided\ndeclare const console: ConsoleInterface\n\nconst isEventBasedChannel = (x: EventBasedChannel | CallbackBasedChannel): x is EventBasedChannel =>\n    'send' in x && isFunction(x.send)\nconst isCallbackBasedChannel = (x: EventBasedChannel | CallbackBasedChannel): x is CallbackBasedChannel =>\n    'setup' in x && isFunction(x.setup)\n","/**\n * See the document at https://github.com/Jack-Works/async-call/\n */\nimport type { AsyncCallOptions } from './types.ts'\nimport { AsyncCall } from './Async-Call.ts'\nimport { AsyncCallIgnoreResponse } from './utils/internalSymbol.ts'\nimport { normalizeStrictOptions } from './utils/normalizeOptions.ts'\nimport { generateRandomID } from './utils/generateRandomID.ts'\nimport { isFunction, isString, setPrototypeOf } from './utils/constants.ts'\nimport {\n    Err_Cannot_find_a_running_iterator_with_given_ID,\n    Err_Only_string_can_be_the_RPC_method_name,\n    makeHostedMessage,\n} from './utils/error.ts'\n\nconst i = 'rpc.async-iterator.'\n// ! side effect\nconst AsyncIteratorStart = Symbol.for(i + 'start')\nconst AsyncIteratorNext = Symbol.for(i + 'next')\nconst AsyncIteratorReturn = Symbol.for(i + 'return')\nconst AsyncIteratorThrow = Symbol.for(i + 'throw')\n\ninterface AsyncGeneratorInternalMethods {\n    [AsyncIteratorStart](method: string, params: unknown[]): Promise<string>\n    [AsyncIteratorNext](id: string, value: unknown): Promise<IteratorResult<unknown>>\n    [AsyncIteratorReturn](id: string, value: unknown): Promise<IteratorResult<unknown>>\n    [AsyncIteratorThrow](id: string, value: unknown): Promise<IteratorResult<unknown>>\n}\n\n/** @internal */\nexport type _IteratorOrIterableFunction = (\n    ...args: any\n) => Iterator<any, any, any> | Iterable<any> | AsyncIterator<any, any, any> | AsyncIterable<any>\n/** @internal */\nexport type _IteratorLikeToAsyncGenerator<T extends _IteratorOrIterableFunction> = T extends (\n    ...args: any\n) => AsyncGenerator<any>\n    ? T // return async generator as-is so generics can be preserved\n    : T extends (\n          ...args: infer Args\n      ) =>\n          | Iterator<infer Yield, infer Return, infer Next>\n          | Iterable<infer Yield>\n          | AsyncIterator<infer Yield, infer Return, infer Next>\n          | AsyncIterable<infer Yield>\n    ? (...args: Args) => AsyncGenerator<Yield, Return, Next>\n    : never\n\n/**\n * Make all generator in the type T becomes AsyncGenerator\n *\n * @remarks\n * Only generics signatures on function that returning an AsyncGenerator<T> will be preserved due to the limitation of TypeScript.\n *\n * Method called `then` are intentionally removed because it is very likely to be a foot gun in promise auto-unwrap.\n * @public\n */\nexport type AsyncGeneratorVersionOf<T> = T extends Record<keyof T, _IteratorOrIterableFunction>\n    ? 'then' extends keyof T\n        ? Omit<Readonly<T>, 'then'>\n        : // in this case we don't want to use Readonly<T>, so it will provide a better experience\n          T\n    : _AsyncGeneratorVersionOf<T>\n/** @internal */\nexport type _AsyncGeneratorVersionOf<T> = {\n    // Omit 'then'\n    [key in keyof T as key extends 'then'\n        ? never\n        : // Omit non-iterator/iterable\n        T[key] extends _IteratorOrIterableFunction\n        ? key\n        : never]: T[key] extends _IteratorOrIterableFunction ? _IteratorLikeToAsyncGenerator<T[key]> : never\n}\n\ntype Iter = Iterator<unknown, unknown, unknown> | AsyncIterator<unknown>\ntype IterResult = IteratorResult<unknown> | Promise<IteratorResult<unknown>>\n/**\n * The async generator version of the AsyncCall\n * @param thisSideImplementation - The implementation when this AsyncCall acts as a JSON RPC server.\n * @param options - {@link AsyncCallOptions}\n * @typeParam OtherSideImplementedFunctions - The type of the API that server expose. For any function on this interface, AsyncCall will convert it to the Promised type.\n * @remarks\n * Warning: Due to technical limitation, AsyncGeneratorCall will leak memory. Use it at your own risk.\n *\n * To use AsyncGeneratorCall, the server and the client MUST support the following JSON RPC internal methods which is pre ECMAScript async generator semantics:\n *\n * - `rpc.async-iterator.start`\n *\n * - `rpc.async-iterator.next`\n *\n * - `rpc.async-iterator.return`\n *\n * - `rpc.async-iterator.throw`\n *\n * @example\n * ```ts\n * const server = {\n *      async *generator() {\n *          let last = 0\n *          while (true) yield last++\n *      },\n * }\n * type Server = typeof server\n * const serverRPC = AsyncGeneratorCall<Server>({}, { channel })\n * async function main() {\n *      for await (const x of serverRPC.generator()) {\n *          console.log('Server yielded number', x)\n *      }\n * }\n * ```\n * @public\n */\nexport function AsyncGeneratorCall<OtherSideImplementedFunctions = {}>(\n    thisSideImplementation: null | undefined | object | Promise<object>,\n    options: AsyncCallOptions,\n): AsyncGeneratorVersionOf<OtherSideImplementedFunctions> {\n    if (!AsyncGeneratorPrototypeSet) {\n        const EmptyAsyncGenerator = async function* () {}\n        const AsyncGeneratorConstructor = (AsyncGeneratorPrototypeSet = EmptyAsyncGenerator.constructor)\n        const AsyncGeneratorConstructorPrototype = AsyncGeneratorConstructor.prototype\n        setPrototypeOf(_AsyncGenerator, AsyncGeneratorConstructorPrototype)\n        const AsyncGeneratorPrototype = Object.getPrototypeOf(EmptyAsyncGenerator())\n        setPrototypeOf(_AsyncGenerator.prototype, AsyncGeneratorPrototype)\n    }\n    const iterators = new Map<string | number, Iter>()\n    const [methodNotFound] = normalizeStrictOptions(options.strict ?? true)\n    const { idGenerator = generateRandomID } = options\n    const findIterator = (\n        id: string,\n        next: (iterator: Iter) => IterResult | undefined | false,\n    ): false | undefined | IterResult | typeof AsyncCallIgnoreResponse => {\n        const it = iterators.get(id)\n        if (!it) {\n            if (methodNotFound)\n                throw makeHostedMessage(Err_Cannot_find_a_running_iterator_with_given_ID, new Error(`Iterator ${id}, `))\n            else return AsyncCallIgnoreResponse\n        }\n        const result = next(it)\n        isFinished(result, () => iterators.delete(id))\n        return result\n    }\n    const server = {\n        async [AsyncIteratorStart](method, args) {\n            const iteratorGenerator: unknown = ((await thisSideImplementation) as any)[method]\n            if (!isFunction(iteratorGenerator)) {\n                if (methodNotFound) throw new TypeError(method + ' is not a function')\n                else return AsyncCallIgnoreResponse\n            }\n            const iterator = iteratorGenerator(...args)\n            const id = idGenerator()\n            iterators.set(id, iterator)\n            return id\n        },\n        [AsyncIteratorNext](id, val) {\n            return findIterator(id, (it) => it.next(val as any))\n        },\n        [AsyncIteratorReturn](id, val) {\n            return findIterator(id, (it) => isFunction(it.return) && it.return(val))\n        },\n        [AsyncIteratorThrow](id, val) {\n            return findIterator(id, (it) => isFunction(it.throw) && it.throw(val))\n        },\n    } as AsyncGeneratorInternalMethods\n    const remote = AsyncCall<AsyncGeneratorInternalMethods>(server, options)\n\n    const getTrap = (_: any, method: PropertyKey) => {\n        if (!isString(method)) throw makeHostedMessage(Err_Only_string_can_be_the_RPC_method_name, new TypeError(''))\n        const f = {\n            [method]: (..._: unknown[]) => {\n                const id = remote[AsyncIteratorStart](method, _)\n                return new _AsyncGenerator(remote, id)\n            },\n        }[method]!\n        Object.defineProperty(methodContainer, method, { value: f, configurable: true })\n        return f\n    }\n    const methodContainer: any = { __proto__: new Proxy({}, { get: getTrap }) }\n    return new Proxy(methodContainer, {\n        getPrototypeOf: () => null,\n        setPrototypeOf: (_, val) => val === null,\n        // some library will treat this object as a normal object and run algorithm steps in https://tc39.es/ecma262/#sec-ordinaryget\n        getOwnPropertyDescriptor(_, method) {\n            if (!(method in methodContainer)) getTrap(_, method) // trigger [[Get]]\n            return Object.getOwnPropertyDescriptor(methodContainer, method)\n        },\n    }) as AsyncGeneratorVersionOf<OtherSideImplementedFunctions>\n}\nclass _AsyncGenerator implements AsyncIterableIterator<unknown>, AsyncIterator<unknown, unknown, unknown> {\n    /** done? */\n    private d: boolean = false\n    /** check */\n    private c = async (val: IterResult) => {\n        await isFinished(val, () => (this.d = true))\n        return val\n    }\n    /**\n     * @param r Remote Implementation\n     * @param i id\n     */\n    constructor(\n        private r: AsyncGeneratorInternalMethods,\n        private i: Promise<string>,\n    ) {}\n    async return(val: unknown) {\n        if (this.d) return makeIteratorResult(true, val)\n        return this.c(this.r[AsyncIteratorReturn](await this.i, val))\n    }\n    async next(val?: unknown) {\n        if (this.d) return makeIteratorResult(true)\n        return this.c(this.r[AsyncIteratorNext](await this.i, val))\n    }\n    async throw(val?: unknown) {\n        if (!this.d) return this.c(this.r[AsyncIteratorThrow](await this.i, val))\n        throw val\n    }\n    // Inherited from AsyncGeneratorPrototype\n    declare [Symbol.asyncIterator]: () => this\n}\nlet AsyncGeneratorPrototypeSet: unknown = false\n\nconst isFinished = async (result: IterResult | undefined | false, cb: () => void) => {\n    try {\n        const x = await result\n        x && x.done && cb()\n    } catch {}\n}\n\nconst makeIteratorResult = (done: boolean, value: unknown = undefined): IteratorResult<unknown, unknown> => ({\n    done,\n    value,\n})\n"],"names":["isString","x","isBoolean","isFunction","isObject","params","ERROR","undefined","setPrototypeOf","Object","Promise_resolve","Promise","resolve","isArray","Array","apply","Reflect","NoSerialization","serialization","from","deserialization","serialized","JSONSerialization","replacerAndReceiver","space","undefinedKeepingBehavior","result","alt","undef","JSON","stringify","parse","JSONEncoder","keepUndefined","replacer","reviver","encode","data","forEach","undefinedEncode","decode","encoded","i","Default","AsyncCallIgnoreResponse","Symbol","for","AsyncCallNotify","AsyncCallBatch","notify","instanceOrFnOnInstance","Proxy","get","notifyTrap","target","p","batch","asyncCallInstance","queue","getTrap","_","f","args","defineProperty","methodContainer","value","configurable","__proto__","getPrototypeOf","length","r","error","Error","CustomError","constructor","name","message","code","stack","Err_Cannot_find_a_running_iterator_with_given_ID","Err_Only_string_can_be_the_RPC_method_name","Err_Cannot_call_method_starts_with_rpc_dot_directly","Err_Then_is_accessed_on_local_implementation_Please_explicitly_mark_if_it_is_thenable_in_the_options","Messages","makeHostedMessage","id","n","indexOf","errors","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","DOMExceptionHeader","RecoverError","type","E","startsWith","globalDOMException","slice","e","removeStackHeader","String","replace","DOMException","onAbort","signal","callback","addEventListener","once","jsonrpc","makeRequest","method","remoteStack","deleteUndefined","deleteFalsy","makeSuccessResponse","makeErrorResponse","Math","floor","Number","isNaN","ErrorResponseParseError","mapper","obj","ErrorResponseMapped","o","ErrorResponseInvalidRequest","ErrorResponseMethodNotFound","request","defaultErrorMapper","toString","ctor","eType","isJSONRPCObject","_default","val","v","key","generateRandomID","random","undefinedToTrue","normalizeLogOptions","log","beCalled","localError","remoteError","requestReplay","sendLocalStack","normalizeStrictOptions","strict","methodNotFound","unknownMessage","AsyncCall","thisSideImplementation","options","isThisSideImplementationPending","resolvedThisSideImplementationValue","rejectedThisSideImplementation","resolvedChannel","channelPromise","awaitThisSideImplementation","console_error","onChannelResolved","channel","isCallbackBasedChannel","setup","hint","rawMessageReceiver","then","rawMessageSender","hintedDecode","isEventBasedChannel","m","on","send","serializer","encoder","deprecatedName","parameterStructures","deprecatedParameterStructures","parameterStructure","preferLocalImplementation","idGenerator","mapError","logger","thenable","forceSignal","paramStyle","logKey","throwIfAborted","encodeFromOption","encodeRequest","encodeRequestFromOption","encodeResponse","encodeResponseFromOption","decodeRequest","decodeResponse","banMethodNotFound","banUnknownMessage","log_beCalled","log_localError","log_remoteError","log_pretty","log_requestReplay","log_sendLocalStack","console_log","debug","console_debug","groupCollapsed","console_groupCollapsed","groupEnd","console_groupEnd","warn","console_warn","console","requestContext","Map","reason","clear","onRequest","aborted","makeErrorObject","frameworkStack","req_id","executor","promise","logArgs","map","join","replay","push","onResponse","errorMessage","remoteErrorStack","errorCode","errorType","detail","has","reject","localErrorStack","delete","handleSingleMessage","every","all","res","reply","filter","split","reduce","fstack","sendPayload","payload","removeQueueR","rejectsQueue","ctx","handleForceAbort","finally","removeEventListener","catch","call","shift","RPCInternalMethod","keyFor","description","localImpl","param","set","f2","getOwnPropertyDescriptor","AsyncIteratorStart","AsyncIteratorNext","AsyncIteratorReturn","AsyncIteratorThrow","AsyncGeneratorCall","AsyncGeneratorPrototypeSet","EmptyAsyncGenerator","AsyncGeneratorConstructor","AsyncGeneratorConstructorPrototype","prototype","_AsyncGenerator","AsyncGeneratorPrototype","iterators","findIterator","next","it","isFinished","server","iteratorGenerator","iterator","return","throw","remote","d","makeIteratorResult","c","cb","done"],"mappings":"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"}