| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439 | /*  @license	Rollup.js v2.56.3	Mon, 23 Aug 2021 05:06:39 GMT - commit c41d17ceedfa6c1d7430da70c6c80d86a91e9434	https://github.com/rollup/rollup	Released under the MIT License.*/'use strict';var fs = require('fs');var index = require('./index.js');var loadConfigFile_js = require('./loadConfigFile.js');var cli = require('../bin/rollup');var require$$0 = require('assert');var require$$0$1 = require('events');var rollup = require('./rollup.js');require('path');require('util');require('stream');require('os');require('url');require('./mergeOptions.js');require('module');require('crypto');function timeZone(date = new Date()) {	const offset = date.getTimezoneOffset();	const absOffset = Math.abs(offset);	const hours = Math.floor(absOffset / 60);	const minutes = absOffset % 60;	const minutesOut = minutes > 0 ? ':' + ('0' + minutes).slice(-2) : '';	return (offset < 0 ? '+' : '-') + hours + minutesOut;}function dateTime(options = {}) {	let {		date = new Date(),		local = true,		showTimeZone = false,		showMilliseconds = false	} = options;	if (local) {		// Offset the date so it will return the correct value when getting the ISO string.		date = new Date(date.getTime() - (date.getTimezoneOffset() * 60000));	}	let end = '';	if (showTimeZone) {		end = ' UTC' + (local ? timeZone(date) : '');	}	if (showMilliseconds && date.getUTCMilliseconds() > 0) {		end = ` ${date.getUTCMilliseconds()}ms${end}`;	}	return date		.toISOString()		.replace(/T/, ' ')		.replace(/\..+/, end);}var signalExit = {exports: {}};var signals$1 = {exports: {}};(function (module) {// This is not the set of all possible signals.//// It IS, however, the set of all signals that trigger// an exit on either Linux or BSD systems.  Linux is a// superset of the signal names supported on BSD, and// the unknown signals just fail to register, so we can// catch that easily enough.//// Don't bother with SIGKILL.  It's uncatchable, which// means that we can't fire any callbacks anyway.//// If a user does happen to register a handler on a non-// fatal signal like SIGWINCH or something, and then// exit, it'll end up firing `process.emit('exit')`, so// the handler will be fired anyway.//// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised// artificially, inherently leave the process in a// state from which it is not safe to try and enter JS// listeners.module.exports = [  'SIGABRT',  'SIGALRM',  'SIGHUP',  'SIGINT',  'SIGTERM'];if (process.platform !== 'win32') {  module.exports.push(    'SIGVTALRM',    'SIGXCPU',    'SIGXFSZ',    'SIGUSR2',    'SIGTRAP',    'SIGSYS',    'SIGQUIT',    'SIGIOT'    // should detect profiler and enable/disable accordingly.    // see #21    // 'SIGPROF'  );}if (process.platform === 'linux') {  module.exports.push(    'SIGIO',    'SIGPOLL',    'SIGPWR',    'SIGSTKFLT',    'SIGUNUSED'  );}}(signals$1));// Note: since nyc uses this module to output coverage, any lines// that are in the direct sync flow of nyc's outputCoverage are// ignored, since we can never get coverage for them.var assert = require$$0;var signals = signals$1.exports;var isWin = /^win/i.test(process.platform);var EE = require$$0$1;/* istanbul ignore if */if (typeof EE !== 'function') {  EE = EE.EventEmitter;}var emitter;if (process.__signal_exit_emitter__) {  emitter = process.__signal_exit_emitter__;} else {  emitter = process.__signal_exit_emitter__ = new EE();  emitter.count = 0;  emitter.emitted = {};}// Because this emitter is a global, we have to check to see if a// previous version of this library failed to enable infinite listeners.// I know what you're about to say.  But literally everything about// signal-exit is a compromise with evil.  Get used to it.if (!emitter.infinite) {  emitter.setMaxListeners(Infinity);  emitter.infinite = true;}signalExit.exports = function (cb, opts) {  assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler');  if (loaded === false) {    load();  }  var ev = 'exit';  if (opts && opts.alwaysLast) {    ev = 'afterexit';  }  var remove = function () {    emitter.removeListener(ev, cb);    if (emitter.listeners('exit').length === 0 &&        emitter.listeners('afterexit').length === 0) {      unload();    }  };  emitter.on(ev, cb);  return remove};signalExit.exports.unload = unload;function unload () {  if (!loaded) {    return  }  loaded = false;  signals.forEach(function (sig) {    try {      process.removeListener(sig, sigListeners[sig]);    } catch (er) {}  });  process.emit = originalProcessEmit;  process.reallyExit = originalProcessReallyExit;  emitter.count -= 1;}function emit (event, code, signal) {  if (emitter.emitted[event]) {    return  }  emitter.emitted[event] = true;  emitter.emit(event, code, signal);}// { <signal>: <listener fn>, ... }var sigListeners = {};signals.forEach(function (sig) {  sigListeners[sig] = function listener () {    // If there are no other listeners, an exit is coming!    // Simplest way: remove us and then re-send the signal.    // We know that this will kill the process, so we can    // safely emit now.    var listeners = process.listeners(sig);    if (listeners.length === emitter.count) {      unload();      emit('exit', null, sig);      /* istanbul ignore next */      emit('afterexit', null, sig);      /* istanbul ignore next */      if (isWin && sig === 'SIGHUP') {        // "SIGHUP" throws an `ENOSYS` error on Windows,        // so use a supported signal instead        sig = 'SIGINT';      }      process.kill(process.pid, sig);    }  };});signalExit.exports.signals = function () {  return signals};signalExit.exports.load = load;var loaded = false;function load () {  if (loaded) {    return  }  loaded = true;  // This is the number of onSignalExit's that are in play.  // It's important so that we can count the correct number of  // listeners on signals, and don't wait for the other one to  // handle it instead of us.  emitter.count += 1;  signals = signals.filter(function (sig) {    try {      process.on(sig, sigListeners[sig]);      return true    } catch (er) {      return false    }  });  process.emit = processEmit;  process.reallyExit = processReallyExit;}var originalProcessReallyExit = process.reallyExit;function processReallyExit (code) {  process.exitCode = code || 0;  emit('exit', process.exitCode, null);  /* istanbul ignore next */  emit('afterexit', process.exitCode, null);  /* istanbul ignore next */  originalProcessReallyExit.call(process, process.exitCode);}var originalProcessEmit = process.emit;function processEmit (ev, arg) {  if (ev === 'exit') {    if (arg !== undefined) {      process.exitCode = arg;    }    var ret = originalProcessEmit.apply(this, arguments);    emit('exit', process.exitCode, null);    /* istanbul ignore next */    emit('afterexit', process.exitCode, null);    return ret  } else {    return originalProcessEmit.apply(this, arguments)  }}var onExit = signalExit.exports;const CLEAR_SCREEN = '\u001Bc';function getResetScreen(configs, allowClearScreen) {    let clearScreen = allowClearScreen;    for (const config of configs) {        if (config.watch && config.watch.clearScreen === false) {            clearScreen = false;        }    }    if (clearScreen) {        return (heading) => loadConfigFile_js.stderr(CLEAR_SCREEN + heading);    }    let firstRun = true;    return (heading) => {        if (firstRun) {            loadConfigFile_js.stderr(heading);            firstRun = false;        }    };}async function watch(command) {    process.env.ROLLUP_WATCH = 'true';    const isTTY = process.stderr.isTTY;    const silent = command.silent;    let configs;    let warnings;    let watcher;    let configWatcher;    const configFile = command.config ? cli.getConfigPath(command.config) : null;    onExit(close);    process.on('uncaughtException', close);    if (!process.stdin.isTTY) {        process.stdin.on('end', close);        process.stdin.resume();    }    async function loadConfigFromFileAndTrack(configFile) {        let reloadingConfig = false;        let aborted = false;        let configFileData = null;        configWatcher = index.chokidar.watch(configFile).on('change', () => reloadConfigFile());        await reloadConfigFile();        async function reloadConfigFile() {            try {                const newConfigFileData = fs.readFileSync(configFile, 'utf-8');                if (newConfigFileData === configFileData) {                    return;                }                if (reloadingConfig) {                    aborted = true;                    return;                }                if (configFileData) {                    loadConfigFile_js.stderr(`\nReloading updated config...`);                }                configFileData = newConfigFileData;                reloadingConfig = true;                ({ options: configs, warnings } = await loadConfigFile_js.loadAndParseConfigFile(configFile, command));                reloadingConfig = false;                if (aborted) {                    aborted = false;                    reloadConfigFile();                }                else {                    if (watcher) {                        watcher.close();                    }                    start(configs);                }            }            catch (err) {                configs = [];                reloadingConfig = false;                loadConfigFile_js.handleError(err, true);            }        }    }    if (configFile) {        await loadConfigFromFileAndTrack(configFile);    }    else {        ({ options: configs, warnings } = await cli.loadConfigFromCommand(command));        start(configs);    }    const resetScreen = getResetScreen(configs, isTTY);    function start(configs) {        try {            watcher = rollup.watch(configs);        }        catch (err) {            return loadConfigFile_js.handleError(err);        }        watcher.on('event', event => {            switch (event.code) {                case 'ERROR':                    warnings.flush();                    loadConfigFile_js.handleError(event.error, true);                    break;                case 'START':                    if (!silent) {                        resetScreen(loadConfigFile_js.underline(`rollup v${rollup.version}`));                    }                    break;                case 'BUNDLE_START':                    if (!silent) {                        let input = event.input;                        if (typeof input !== 'string') {                            input = Array.isArray(input)                                ? input.join(', ')                                : Object.values(input).join(', ');                        }                        loadConfigFile_js.stderr(loadConfigFile_js.cyan(`bundles ${loadConfigFile_js.bold(input)} → ${loadConfigFile_js.bold(event.output.map(rollup.relativeId).join(', '))}...`));                    }                    break;                case 'BUNDLE_END':                    warnings.flush();                    if (!silent)                        loadConfigFile_js.stderr(loadConfigFile_js.green(`created ${loadConfigFile_js.bold(event.output.map(rollup.relativeId).join(', '))} in ${loadConfigFile_js.bold(cli.ms(event.duration))}`));                    if (event.result && event.result.getTimings) {                        cli.printTimings(event.result.getTimings());                    }                    break;                case 'END':                    if (!silent && isTTY) {                        loadConfigFile_js.stderr(`\n[${dateTime()}] waiting for changes...`);                    }            }            if ('result' in event && event.result) {                event.result.close().catch(error => loadConfigFile_js.handleError(error, true));            }        });    }    function close(code) {        process.removeListener('uncaughtException', close);        // removing a non-existent listener is a no-op        process.stdin.removeListener('end', close);        if (watcher)            watcher.close();        if (configWatcher)            configWatcher.close();        if (code) {            process.exit(code);        }    }}exports.watch = watch;//# sourceMappingURL=watch-cli.js.map
 |