/** * Internal dependencies */ import { isStagingSimulated } from './is-staging-simulated'; import type { Settings } from '../../types'; export async function maybeLoadCheckerScript(): Promise< void > { const win = window as unknown; if ( ! hasSettings( win ) ) { return; } const { debugGui } = win.nabSettings; if ( ! debugGui ) { return; } if ( ! win.nabSettings.isStagingSite && ! isStagingSimulated() ) { return; } await new Promise< void >( ( resolve ) => { const script = document.createElement( 'script' ); script.src = debugGui; script.async = true; const actualResolve = resolve; resolve = () => { setTimeout( actualResolve, 1000 ); }; script.onload = () => resolve(); script.onerror = () => { // eslint-disable-next-line no-console console.error( `Failed to load ${ debugGui }` ); resolve(); }; document.head.appendChild( script ); } ); } // ======== // INTERNAL // ======== const hasSettings = ( win: unknown ): win is { nabSettings: Partial< Settings > } => !! win && 'object' === typeof win && 'nabSettings' in win;