You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							1.1 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
const open = require('opn'); | 
						|
const isAbsoluteUrl = require('is-absolute-url'); | 
						|
 | 
						|
function runOpen(uri, options, log) { | 
						|
  // https://github.com/webpack/webpack-dev-server/issues/1990 | 
						|
  let openOptions = { wait: false }; | 
						|
  let openOptionValue = ''; | 
						|
 | 
						|
  if (typeof options.open === 'string') { | 
						|
    openOptions = Object.assign({}, openOptions, { app: options.open }); | 
						|
    openOptionValue = `: "${options.open}"`; | 
						|
  } else if (typeof options.open === 'object') { | 
						|
    openOptions = options.open; | 
						|
    openOptionValue = `: "${JSON.stringify(options.open)}"`; | 
						|
  } | 
						|
 | 
						|
  const pages = | 
						|
    typeof options.openPage === 'string' | 
						|
      ? [options.openPage] | 
						|
      : options.openPage || ['']; | 
						|
 | 
						|
  return Promise.all( | 
						|
    pages.map((page) => { | 
						|
      const pageUrl = page && isAbsoluteUrl(page) ? page : `${uri}${page}`; | 
						|
 | 
						|
      return open(pageUrl, openOptions).catch(() => { | 
						|
        log.warn( | 
						|
          `Unable to open "${pageUrl}" in browser${openOptionValue}. If you are running in a headless environment, please do not use the --open flag` | 
						|
        ); | 
						|
      }); | 
						|
    }) | 
						|
  ); | 
						|
} | 
						|
 | 
						|
module.exports = runOpen;
 | 
						|
 |