@lynx-js/rspeedy
Version:
A webpack/rspack-based frontend toolchain for Lynx
172 lines (171 loc) • 8.19 kB
JavaScript
import { existsSync, readFileSync } from "node:fs";
import { dirname, join } from "node:path";
import { pathToFileURL } from "node:url";
import { logger } from "@rsbuild/core";
var __webpack_modules__ = {
"../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js": function(module) {
let p = process || {}, argv = p.argv || [], env = p.env || {};
let isColorSupported = !(!!env.NO_COLOR || argv.includes("--no-color")) && (!!env.FORCE_COLOR || argv.includes("--color") || "win32" === p.platform || (p.stdout || {}).isTTY && "dumb" !== env.TERM || !!env.CI);
let formatter = (open, close, replace = open)=>(input)=>{
let string = "" + input, index = string.indexOf(close, open.length);
return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
};
let replaceClose = (string, close, replace, index)=>{
let result = "", cursor = 0;
do {
result += string.substring(cursor, index) + replace;
cursor = index + close.length;
index = string.indexOf(close, cursor);
}while (~index);
return result + string.substring(cursor);
};
let createColors = (enabled = isColorSupported)=>{
let f = enabled ? formatter : ()=>String;
return {
isColorSupported: enabled,
reset: f("\x1b[0m", "\x1b[0m"),
bold: f("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m"),
dim: f("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m"),
italic: f("\x1b[3m", "\x1b[23m"),
underline: f("\x1b[4m", "\x1b[24m"),
inverse: f("\x1b[7m", "\x1b[27m"),
hidden: f("\x1b[8m", "\x1b[28m"),
strikethrough: f("\x1b[9m", "\x1b[29m"),
black: f("\x1b[30m", "\x1b[39m"),
red: f("\x1b[31m", "\x1b[39m"),
green: f("\x1b[32m", "\x1b[39m"),
yellow: f("\x1b[33m", "\x1b[39m"),
blue: f("\x1b[34m", "\x1b[39m"),
magenta: f("\x1b[35m", "\x1b[39m"),
cyan: f("\x1b[36m", "\x1b[39m"),
white: f("\x1b[37m", "\x1b[39m"),
gray: f("\x1b[90m", "\x1b[39m"),
bgBlack: f("\x1b[40m", "\x1b[49m"),
bgRed: f("\x1b[41m", "\x1b[49m"),
bgGreen: f("\x1b[42m", "\x1b[49m"),
bgYellow: f("\x1b[43m", "\x1b[49m"),
bgBlue: f("\x1b[44m", "\x1b[49m"),
bgMagenta: f("\x1b[45m", "\x1b[49m"),
bgCyan: f("\x1b[46m", "\x1b[49m"),
bgWhite: f("\x1b[47m", "\x1b[49m"),
blackBright: f("\x1b[90m", "\x1b[39m"),
redBright: f("\x1b[91m", "\x1b[39m"),
greenBright: f("\x1b[92m", "\x1b[39m"),
yellowBright: f("\x1b[93m", "\x1b[39m"),
blueBright: f("\x1b[94m", "\x1b[39m"),
magentaBright: f("\x1b[95m", "\x1b[39m"),
cyanBright: f("\x1b[96m", "\x1b[39m"),
whiteBright: f("\x1b[97m", "\x1b[39m"),
bgBlackBright: f("\x1b[100m", "\x1b[49m"),
bgRedBright: f("\x1b[101m", "\x1b[49m"),
bgGreenBright: f("\x1b[102m", "\x1b[49m"),
bgYellowBright: f("\x1b[103m", "\x1b[49m"),
bgBlueBright: f("\x1b[104m", "\x1b[49m"),
bgMagentaBright: f("\x1b[105m", "\x1b[49m"),
bgCyanBright: f("\x1b[106m", "\x1b[49m"),
bgWhiteBright: f("\x1b[107m", "\x1b[49m")
};
};
module.exports = createColors();
module.exports.createColors = createColors;
}
};
var __webpack_module_cache__ = {};
function __webpack_require__(moduleId) {
var cachedModule = __webpack_module_cache__[moduleId];
if (void 0 !== cachedModule) return cachedModule.exports;
var module = __webpack_module_cache__[moduleId] = {
exports: {}
};
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
return module.exports;
}
(()=>{
__webpack_require__.n = (module)=>{
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
__webpack_require__.d(getter, {
a: getter
});
return getter;
};
})();
(()=>{
__webpack_require__.d = (exports, definition)=>{
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
enumerable: true,
get: definition[key]
});
};
})();
(()=>{
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
})();
var picocolors = __webpack_require__("../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js");
var picocolors_default = /*#__PURE__*/ __webpack_require__.n(picocolors);
const isDebug = ()=>{
if (!process.env['DEBUG']) return false;
const values = process.env['DEBUG'].toLocaleLowerCase().split(',');
return [
'rsbuild',
'rspeedy',
'*'
].some((key)=>values.includes(key));
};
const label = picocolors_default().bgCyan('lynx');
const debug = (message)=>{
if (isDebug()) {
const result = 'string' == typeof message ? message : message();
logger.level = 'verbose';
logger.debug(`${label} ${result}`);
}
};
function tryGetPackageFolderFor(resolvedFileOrFolderPath) {
if (existsSync(join(resolvedFileOrFolderPath, 'package.json'))) return resolvedFileOrFolderPath;
const parentFolder = dirname(resolvedFileOrFolderPath);
if (!parentFolder || parentFolder === resolvedFileOrFolderPath) return;
return tryGetPackageFolderFor(parentFolder);
}
function tryStartLocalRspeedy(root = process.cwd()) {
if (process.argv.includes("--unmanaged")) {
logger.info(`Bypassing the Rspeedy version selector because ${JSON.stringify("--unmanaged")} was specified.`);
logger.info();
return false;
}
debug(`Searching for a locally installed version of Rspeedy. Use the ${JSON.stringify("--unmanaged")} flag if you want to avoid this.`);
const projectFolder = tryGetPackageFolderFor(root);
if (projectFolder) {
debug(`found project at ${projectFolder}`);
let rspeedyEntryPoint;
let packageJson;
try {
const packageJsonPath = join(projectFolder, 'package.json');
const packageJsonContent = readFileSync(packageJsonPath).toString();
try {
packageJson = JSON.parse(packageJsonContent);
} catch (error) {
throw new Error(`Error parsing ${packageJsonPath}:${error.message}`);
}
if (!packageJson.dependencies?.["@lynx-js/rspeedy"] && !packageJson.devDependencies?.["@lynx-js/rspeedy"]) {
debug('The project does not have a dependency on Rspeedy');
return false;
}
const rspeedyFolder = join(projectFolder, 'node_modules', ..."@lynx-js/rspeedy".split('/'));
rspeedyEntryPoint = join(rspeedyFolder, 'dist', 'cli', 'main.js');
if (!existsSync(rspeedyEntryPoint)) {
debug(`Unable to find rspeedy entry point: ${rspeedyEntryPoint}, trying the legacy location.`);
rspeedyEntryPoint = join(rspeedyFolder, 'lib', 'cli', 'main.js');
if (!existsSync(rspeedyEntryPoint)) {
debug(`Unable to find rspeedy entry point: ${rspeedyEntryPoint}, using the unmanaged version.`);
return false;
}
}
} catch (error) {
throw new Error(`Error probing for local rspeedy version: ${error.message}`);
}
debug(`found rspeedy entry point at ${rspeedyEntryPoint}`);
return import(pathToFileURL(rspeedyEntryPoint).toString()).then(({ main })=>main(process.argv));
}
debug(`no project folder found from ${process.cwd()}`);
return false;
}
export { tryStartLocalRspeedy };