UNPKG

ionic

Version:

A tool for creating and developing Ionic Framework mobile apps.

141 lines (140 loc) 5.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const string_1 = require("@ionic/cli-framework/utils/string"); const serve_1 = require("../../serve"); const common_1 = require("../common"); class Ionic1ServeRunner extends serve_1.ServeRunner { constructor(e) { super(); this.e = e; } async getCommandMetadata() { return { options: [ { name: 'consolelogs', summary: 'Print app console logs to Ionic CLI', type: Boolean, groups: ['cordova'], aliases: ['c'], }, { name: 'serverlogs', summary: 'Print dev server logs to Ionic CLI', type: Boolean, aliases: ['s'], groups: ["hidden" /* HIDDEN */, 'cordova'], }, { name: 'livereload-port', summary: 'Use specific port for live-reload', default: serve_1.DEFAULT_LIVERELOAD_PORT.toString(), aliases: ['r'], groups: ["advanced" /* ADVANCED */, 'cordova'], spec: { value: 'port' }, }, { name: 'dev-logger-port', summary: 'Use specific port for dev server communication', default: serve_1.DEFAULT_DEV_LOGGER_PORT.toString(), groups: ["advanced" /* ADVANCED */, 'cordova'], spec: { value: 'port' }, }, { name: 'proxy', summary: 'Do not add proxies', type: Boolean, default: true, groups: ["advanced" /* ADVANCED */, 'cordova'], }, ], exampleCommands: [ '-c', ], }; } createOptionsFromCommandLine(inputs, options) { const baseOptions = super.createOptionsFromCommandLine(inputs, options); const livereloadPort = string_1.str2num(options['livereload-port'], serve_1.DEFAULT_LIVERELOAD_PORT); const notificationPort = string_1.str2num(options['dev-logger-port'], serve_1.DEFAULT_DEV_LOGGER_PORT); return { ...baseOptions, consolelogs: options['consolelogs'] ? true : false, serverlogs: options['serverlogs'] ? true : false, livereloadPort, notificationPort, }; } modifyOpenUrl(url, options) { return `${url}${options.browserOption ? options.browserOption : ''}${options.platform ? `?ionicplatform=${options.platform}` : ''}`; } async serveProject(options) { const [externalIP, availableInterfaces] = await this.selectExternalIP(options); const { port, livereloadPort, notificationPort } = await common_1.findOpenIonicPorts(options.address, options); options.port = port; options.livereloadPort = livereloadPort; options.notificationPort = notificationPort; const v1 = new Ionic1ServeCLI(this.e); await v1.serve(options); return { custom: v1.resolvedProgram !== v1.program, protocol: 'http', localAddress: 'localhost', externalAddress: externalIP, externalNetworkInterfaces: availableInterfaces, port, externallyAccessible: ![serve_1.BIND_ALL_ADDRESS, ...serve_1.LOCAL_ADDRESSES].includes(externalIP), }; } getUsedPorts(options, details) { return [ ...super.getUsedPorts(options, details), ...options.livereloadPort ? [options.livereloadPort] : [], ...options.notificationPort ? [options.notificationPort] : [], ]; } } exports.Ionic1ServeRunner = Ionic1ServeRunner; class Ionic1ServeCLI extends serve_1.ServeCLI { constructor() { super(...arguments); this.name = 'Ionic 1 Toolkit'; this.pkg = '@ionic/v1-toolkit'; this.program = 'ionic-v1'; this.prefix = 'v1'; this.script = serve_1.SERVE_SCRIPT; } stdoutFilter(line) { if (this.resolvedProgram !== this.program) { return super.stdoutFilter(line); } if (line.includes('server running')) { this.emit('ready'); return false; } return true; } async buildArgs(options) { const { pkgManagerArgs } = await Promise.resolve().then(() => require('../../utils/npm')); const args = [ `--host=${options.address}`, `--port=${String(options.port)}`, `--livereload-port=${String(options.livereloadPort)}`, `--dev-port=${String(options.notificationPort)}`, `--engine=${options.engine}`, ]; if (options.platform) { args.push(`--platform=${options.platform}`); } if (options.consolelogs) { args.push('-c'); } if (this.resolvedProgram === this.program) { return ['serve', ...args]; } else { const [, ...pkgArgs] = await pkgManagerArgs(this.e.config.get('npmClient'), { command: 'run', script: this.script, scriptArgs: [...args] }); return pkgArgs; } } }