five-server
Version:
Development Server with Live Reload Capability. (Maintained Fork of Live Server)
151 lines • 5.84 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.donate = exports.getConfigFile = exports.defaultPHPPath = exports.fileDoesExist = exports.createHttpError = void 0;
const colors_1 = require("./colors");
const fs_1 = __importDefault(require("fs"));
const msg_1 = require("./msg");
const os_1 = __importDefault(require("os"));
const path_1 = __importDefault(require("path"));
__exportStar(require("./helpers"), exports);
// just a fallback for removing http-errors dependency
const createHttpError = (code = 500, msg = 'unknown', _nothing) => {
if (code !== 404)
msg_1.message.log(`ERROR: ${code} ${msg}`);
return { message: msg, code, status: code, statusCode: code, name: code };
};
exports.createHttpError = createHttpError;
const fileDoesExist = (path) => {
return new Promise(resolve => {
fs_1.default.stat(path, (err, stat) => {
if (err && err.code === 'ENOENT') {
return resolve(false);
}
else
return resolve(true);
});
});
};
exports.fileDoesExist = fileDoesExist;
const defaultPHPPath = (is_ci = false) => {
// is_ci is for macos on github actions for shivammathur/setup-php@v2
// (https://github.com/marketplace/actions/setup-php-action)
switch (os_1.default.platform()) {
case 'darwin':
return is_ci ? '/opt/homebrew/bin/php' : '/usr/local/bin/php';
case 'linux':
return '/usr/bin/php';
case 'win32':
return 'c:\\tools\\php\\php.exe';
}
return '';
};
exports.defaultPHPPath = defaultPHPPath;
/**
* Get and parse the configFile.
* @param configFile Absolute path of configFile, or true, or false.
* @param workspace Absolute path to the current workspace.
* @returns LiveServerParams
*/
const getConfigFile = (configFile = true, workspace) => {
let options = {};
if (configFile === false)
return options;
const dirs = [];
const files = [
'.fiveserverrc',
'.fiveserverrc.json',
'.fiveserverrc.js',
'.fiveserverrc.cjs',
'.fiveserverrc.mjs',
'fiveserver.config.js',
'fiveserver.config.cjs',
'fiveserver.config.mjs',
'.live-server.json'
];
if (typeof configFile === 'string') {
// TODO: Add support for this
files.unshift(configFile);
}
if (workspace)
dirs.push(workspace);
dirs.push(path_1.default.resolve());
const homeDir = process.env[process.platform === 'win32' ? 'USERPROFILE' : 'HOME'];
if (homeDir)
dirs.push(homeDir);
dirs.push(process.cwd());
const isJSReg = /\.c?m?js$/;
loop: for (const d of dirs) {
for (const f of files) {
const configPath = path_1.default.join(d, f);
if (fs_1.default.existsSync(configPath)) {
const isJS = isJSReg.test(path_1.default.extname(configPath));
if (isJS) {
try {
delete require.cache[configPath];
const config = require(configPath);
if (Object.keys(config).length === 0) {
msg_1.message.warn(`Config file "${f}" is empty or has issues`);
}
options = { ...options, ...config };
}
catch (err) {
msg_1.message.error(err.message, f, false);
}
}
else {
const config = fs_1.default.readFileSync(configPath, 'utf8');
try {
options = { ...options, ...JSON.parse(config) };
}
catch (err) {
msg_1.message.error(err.message, f, false);
}
}
if (options.ignorePattern)
options.ignorePattern = new RegExp(options.ignorePattern);
break loop;
}
}
}
// some small adjustments
if (options.root)
options.root = options.root.replace(/^\/+/, '');
if (options.open === 'true')
options.open = true;
if (options.open === 'false')
options.open = false;
if (options.https === 'true')
options.https = true;
return options;
};
exports.getConfigFile = getConfigFile;
const donate = () => {
// show only 2% of the time
if (Math.random() > 0.02)
return;
msg_1.message.log('');
msg_1.message.log(` ${(0, colors_1.colors)('Thank you for using ', 'gray')}Five Server${(0, colors_1.colors)('!', 'gray')}`);
msg_1.message.log(` ${(0, colors_1.colors)('Please consider supporting it on GitHub.', 'gray')}`);
msg_1.message.log('');
msg_1.message.log(` ${(0, colors_1.colors)('Donate: https://github.com/sponsors/yandeu', 'yellow')}`);
msg_1.message.log('');
};
exports.donate = donate;
//# sourceMappingURL=misc.js.map