1+ import { Events , Message } from './constants' ;
12import { clone , parseTypeObject } from './helpers' ;
23
3- export const sendMessage = < T > ( name : string , data ?: { [ key : string ] : any } , expectAnswer = true , skipOriginCheck = false ) => {
4+ export function sendMessage ( name : Message . GET_MESSAGE , data : { message : string } ) : Promise < string > ;
5+ export function sendMessage ( name : Message . GET_QSTATUS ) : Promise < { canNext : boolean , canPrev : boolean } > ;
6+ export function sendMessage < T > ( name : Exclude < Message , Message . GET_MESSAGE | Message . GET_QSTATUS > , data ?: { [ key : string ] : any } , expectAnswer ?: boolean , skipOriginCheck ?: boolean ) : Promise < T > ;
7+ export function sendMessage < T > ( name : Message , data ?: { [ key : string ] : any } , expectAnswer = true , skipOriginCheck = false ) {
48 if ( ! expectAnswer ) {
59 window . parent . postMessage ( JSON . stringify ( { ...data , type : name } ) , '*' ) ;
610 return Promise . resolve ( undefined as T ) ;
@@ -22,10 +26,12 @@ export const sendMessage = <T>(name: string, data?: { [key: string]: any }, expe
2226 window . addEventListener ( 'message' , c ) ;
2327 window . parent . postMessage ( JSON . stringify ( { ...data , type : name , name : e } ) , '*' ) ;
2428 } ) ;
25- } ;
29+ }
2630
27- export type Listener = ( res : any , err : any ) => void ;
28- export const sendEventHandler = ( event : string , listener : Listener , skipOriginCheck = false ) => {
31+ export type Listener < R = any , E = any > = ( res : R , err : E ) => void ;
32+ export function sendEventHandler ( event : Events . QUEUE_CHANGE , listener : Listener < { canNext : boolean , canPrev : boolean } > , skipOriginCheck ?: boolean ) : void ;
33+ export function sendEventHandler ( event : Exclude < Events , Events . QUEUE_CHANGE > , listener : Listener , skipOriginCheck ?: boolean ) : void ;
34+ export function sendEventHandler ( event : Events , listener : Listener , skipOriginCheck = false ) {
2935 const e = `enhancer-event-${ event } -${ Math . random ( ) . toString ( ) . substr ( 2 ) } ` ;
3036 const c = ( ev : MessageEvent ) => {
3137 if ( ! skipOriginCheck && ! ev . origin . match ( / h t t p s ? : \/ \/ (?: w a t c h n e b u l a .c o m | (?: .+ \. ) ? n e b u l a .a p p ) / ) ) return ;
@@ -36,8 +42,8 @@ export const sendEventHandler = (event: string, listener: Listener, skipOriginCh
3642 } catch { }
3743 } ;
3844 window . addEventListener ( 'message' , c ) ;
39- window . parent . postMessage ( JSON . stringify ( { type : 'registerListener' , name : e , event } ) , '*' ) ;
40- } ;
45+ window . parent . postMessage ( JSON . stringify ( { type : Message . REGISTER_LISTENER , name : e , event } ) , '*' ) ;
46+ }
4147
4248export const replyMessage = ( e : MessageEvent , name : string , data ?: any , err ?: any ) => name &&
4349 /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */
0 commit comments