UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

115 lines (113 loc) 3.61 kB
const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); let node_process = require("node:process"); node_process = require_runtime.__toESM(node_process, 1); let _clack_prompts = require("@clack/prompts"); _clack_prompts = require_runtime.__toESM(_clack_prompts, 1); //#region src/cli/prompts.ts function parseExtendsRef(ref) { const match = (ref.startsWith("bos://") ? ref : `bos://${ref}`).match(/^bos:\/\/([^/]+)\/(.+)$/); if (!match) return null; return { account: match[1], gateway: match[2] }; } function deriveAccountFromExtends(domain, extendsAccount) { const firstSegment = domain.split(".")[0]; if (!firstSegment) return ""; return `${firstSegment}.${extendsAccount.includes(".") ? extendsAccount.substring(extendsAccount.indexOf(".") + 1) : extendsAccount}`; } const OVERRIDE_OPTIONS = [ { value: "ui", label: "ui", hint: "Override UI with local source" }, { value: "api", label: "api", hint: "Override API with local source" }, { value: "host", label: "host", hint: "Override host with local source" }, { value: "plugins", label: "plugins", hint: "Override selected plugins with local source" } ]; async function promptInitBasic(input) { _clack_prompts.intro("Let's build an app..."); const domain = input.domain ?? await _clack_prompts.text({ message: "Starting with a domain?", placeholder: "no" }); if (_clack_prompts.isCancel(domain)) node_process.default.exit(0); let extendsAccount = "dev.everything.near"; let extendsGateway = "everything.dev"; const accountDefault = domain ? deriveAccountFromExtends(domain, extendsAccount) : ""; const account = input.account ?? await _clack_prompts.text({ message: "What NEAR account will you publish from?", placeholder: accountDefault || "skip", defaultValue: accountDefault }); if (_clack_prompts.isCancel(account)) node_process.default.exit(0); const resolvedAccount = account || accountDefault; const extendsInput = input.extends ?? await _clack_prompts.text({ message: "Extending an existing app?", placeholder: "bos://dev.everything.near/everything.dev" }); if (_clack_prompts.isCancel(extendsInput)) node_process.default.exit(0); if (extendsInput) { const parsed = parseExtendsRef(extendsInput); if (parsed) { extendsAccount = parsed.account; extendsGateway = parsed.gateway; } } return { extendsAccount, extendsGateway, domain: domain || "", account: resolvedAccount || void 0 }; } async function promptInitOverrides(input) { const overrides = input.overrides ?? await _clack_prompts.multiselect({ message: "What do you want to customize?", options: OVERRIDE_OPTIONS, initialValues: ["ui", "api"], required: false }); if (_clack_prompts.isCancel(overrides)) node_process.default.exit(0); let plugins = []; if (overrides.includes("plugins")) { const parentPlugins = input.parentPluginKeys ?? []; const pluginOptions = parentPlugins.length > 0 ? parentPlugins.map((key) => ({ value: key, label: key })) : []; plugins = input.plugins ?? (pluginOptions.length > 0 ? await _clack_prompts.multiselect({ message: "Select plugins to include:", options: pluginOptions, required: false }) : []); if (_clack_prompts.isCancel(plugins)) node_process.default.exit(0); } const go = await _clack_prompts.confirm({ message: "GO!", initialValue: true }); if (_clack_prompts.isCancel(go) || !go) node_process.default.exit(0); return { overrides, plugins }; } //#endregion exports.promptInitBasic = promptInitBasic; exports.promptInitOverrides = promptInitOverrides; //# sourceMappingURL=prompts.cjs.map