UNPKG

@lynx-js/rspeedy

Version:

A webpack/rspack-based frontend toolchain for Lynx

172 lines (171 loc) 8.19 kB
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 };