declare const window ; private export const get = ( element , path ) : any => { const paths = path . split ( '.' ) ; let obj = element ; for ( let i = 0 ; i < paths . length ; i ++ ) { if ( ! obj ) { return null ; } obj = obj [ paths [ i ] ] ; } return obj ; } ; private export const getPromise = ( callback ) : Promise < any > => { const tryNativePromise = ( ) => { if ( window . Promise ) { return new Promise ( ( resolve , reject ) => { callback ( resolve , reject ) ; } ) ; } else { console . error ( 'No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.' ) ; } } ; return tryNativePromise ( ) ; } ; private param pluginRef returns { null | * } export const getPlugin = ( pluginRef ) : any => { return get ( window , pluginRef ) ; } ; private export const pluginWarn = ( pluginName , plugin ? , method ? ) : void => { if ( method ) { console . warn ( 'Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.' ) ; } else { console . warn ( `'Native: tried accessing the ${ pluginName } plugin but it's not installed.` ) ; } if ( plugin ) { console . warn ( `Install the ${ pluginName }  plugin: 'ionic cordova plugin add ${ plugin }'` ) ; } } ; private param pluginName param method export const cordovaWarn = ( pluginName , method ? ) : void => { if ( method ) { console . warn ( 'Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator' ) ; } else { console . warn ( 'Native: tried accessing the ' + pluginName + ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator' ) ; } } ;