import { ClientOptions, TokenDetails, TokenParams, TokenRequest } from 'ably'; import { nanoid } from 'nanoid'; import { registerAuthCallback } from './jsonrpc/async'; export const transformRealtimeClientOptions = (clientOptions: ClientOptions) => { const authCallbackId = nanoid(); if (clientOptions.authCallback) { registerAuthCallback( authCallbackId, (data: TokenParams) => new Promise((resolve, reject) => { clientOptions.authCallback?.(data, (error, tokenRequestOrDetails) => { if (error || !tokenRequestOrDetails) { reject(error); } else { resolve(tokenRequestOrDetails); } }); }), ); } return { ...clientOptions, authCallback: clientOptions.authCallback ? authCallbackId : undefined, }; };