everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
115 lines (113 loc) • 3.61 kB
JavaScript
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