66 turbolinksVersion5 ,
77} from './turbolinksUtils' ;
88
9- type PageLifecycleCallback = ( ) => void ;
9+ type PageLifecycleCallback = ( ) => void | Promise < void > ;
1010type PageState = 'load' | 'unload' | 'initial' ;
1111
1212const pageLoadedCallbacks = new Set < PageLifecycleCallback > ( ) ;
@@ -16,12 +16,16 @@ let currentPageState: PageState = 'initial';
1616
1717function runPageLoadedCallbacks ( ) : void {
1818 currentPageState = 'load' ;
19- pageLoadedCallbacks . forEach ( ( callback ) => callback ( ) ) ;
19+ pageLoadedCallbacks . forEach ( ( callback ) => {
20+ void callback ( ) ;
21+ } ) ;
2022}
2123
2224function runPageUnloadedCallbacks ( ) : void {
2325 currentPageState = 'unload' ;
24- pageUnloadedCallbacks . forEach ( ( callback ) => callback ( ) ) ;
26+ pageUnloadedCallbacks . forEach ( ( callback ) => {
27+ void callback ( ) ;
28+ } ) ;
2529}
2630
2731function setupTurbolinksEventListeners ( ) : void {
@@ -69,17 +73,17 @@ function initializePageEventListeners(): void {
6973 }
7074}
7175
72- export function onPageLoaded ( callback : PageLifecycleCallback ) : void {
76+ export async function onPageLoaded ( callback : PageLifecycleCallback ) : Promise < void > {
7377 if ( currentPageState === 'load' ) {
74- callback ( ) ;
78+ await callback ( ) ;
7579 }
7680 pageLoadedCallbacks . add ( callback ) ;
7781 initializePageEventListeners ( ) ;
7882}
7983
80- export function onPageUnloaded ( callback : PageLifecycleCallback ) : void {
84+ export async function onPageUnloaded ( callback : PageLifecycleCallback ) : Promise < void > {
8185 if ( currentPageState === 'unload' ) {
82- callback ( ) ;
86+ await callback ( ) ;
8387 }
8488 pageUnloadedCallbacks . add ( callback ) ;
8589 initializePageEventListeners ( ) ;
0 commit comments