UNPKG

@auth0/auth0-spa-js

Version:

Auth0 SDK for Single Page Applications using Authorization Code Grant Flow with PKCE

35 lines (31 loc) 1.1 kB
import { WorkerRefreshTokenMessage, WorkerRevokeTokenMessage } from './worker.types'; /** * Sends a message to a Web Worker and returns a Promise that resolves with * the worker's response, or rejects if the worker replies with an error. * * Uses a {@link MessageChannel} so each call gets its own private reply port, * making concurrent calls safe without shared state. * * @param message - The typed message to send (`refresh` or `revoke`). * @param to - The target {@link Worker} instance. * @returns A Promise that resolves with the worker's response payload. */ export const sendMessage = <T = any>( message: WorkerRefreshTokenMessage | WorkerRevokeTokenMessage, to: Worker ): Promise<T> => new Promise<T>(function (resolve, reject) { const messageChannel = new MessageChannel(); messageChannel.port1.onmessage = function (event) { if (event.data.error) { reject(new Error(event.data.error)); } else { resolve(event.data); } messageChannel.port1.close(); }; to.postMessage(message, [messageChannel.port2]); });