UNPKG

convex

Version:

Client for the Convex Cloud

101 lines (100 loc) 2.73 kB
"use strict"; import * as Sentry from "@sentry/node"; import chalk from "chalk"; import ora from "ora"; import { nodeFs } from "./fs.js"; import { format } from "util"; async function flushAndExit(exitCode, err) { if (err) { Sentry.captureException(err); } await Sentry.close(); return process.exit(exitCode); } export const oneoffContext = { fs: nodeFs, deprecationMessagePrinted: false, spinner: void 0, async crash(args) { if (args.printedMessage !== null) { logFailure(oneoffContext, args.printedMessage); } return await flushAndExit(args.exitCode, args.errForSentry); }, flushAndExit }; function logToStderr(...args) { process.stderr.write(`${format(...args)} `); } export function logError(ctx, message) { ctx.spinner?.clear(); logToStderr(message); } export function logWarning(ctx, message) { ctx.spinner?.clear(); logToStderr(message); } export function logMessage(ctx, ...logged) { ctx.spinner?.clear(); logToStderr(...logged); } export function logOutput(ctx, ...logged) { ctx.spinner?.clear(); console.log(...logged); } export function logVerbose(ctx, ...logged) { if (process.env.CONVEX_VERBOSE) { logMessage(ctx, `[verbose] ${(/* @__PURE__ */ new Date()).toISOString()}`, ...logged); } } export function showSpinner(ctx, message) { ctx.spinner?.stop(); ctx.spinner = ora({ // Add newline to prevent clobbering when a message // we can't pipe through `logMessage` et al gets printed text: message + "\n", stream: process.stderr, // hideCursor: true doesn't work with `tsx`. // see https://github.com/tapjs/signal-exit/issues/49#issuecomment-1459408082 // See CX-6822 for an issue to bring back cursor hiding, probably by upgrading libraries. hideCursor: process.env.CONVEX_RUNNING_LIVE_IN_MONOREPO ? false : true }).start(); } export function changeSpinner(ctx, message) { if (ctx.spinner) { ctx.spinner.text = message + "\n"; } else { logToStderr(message); } } export function logFailure(ctx, message) { if (ctx.spinner) { ctx.spinner.fail(message); ctx.spinner = void 0; } else { logToStderr(`${chalk.red(`\u2716`)} ${message}`); } } export function logFinishedStep(ctx, message) { if (ctx.spinner) { ctx.spinner.succeed(message); ctx.spinner = void 0; } else { logToStderr(`${chalk.green(`\u2714`)} ${message}`); } } export function stopSpinner(ctx) { if (ctx.spinner) { ctx.spinner.stop(); ctx.spinner = void 0; } } export async function showSpinnerIfSlow(ctx, message, delayMs, fn) { const timeout = setTimeout(() => { showSpinner(ctx, message); }, delayMs); await fn(); clearTimeout(timeout); } //# sourceMappingURL=context.js.map