Home / File/ throw-and-exit.ts — astro Source File

throw-and-exit.ts — astro Source File

Architecture documentation for throw-and-exit.ts, a typescript file in the astro codebase. 6 imports, 0 dependents.

File typescript CoreAstro RenderingEngine 6 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  d6caebb2_f869_cb76_46b3_43d67745224c["throw-and-exit.ts"]
  0e18005f_823b_9864_a584_bf040da30d0c["../core/errors/dev/index.js"]
  d6caebb2_f869_cb76_46b3_43d67745224c --> 0e18005f_823b_9864_a584_bf040da30d0c
  dd6187d6_53c4_ce90_a1d1_3a0b5e7e7d3f["../../core/errors/errors.js"]
  d6caebb2_f869_cb76_46b3_43d67745224c --> dd6187d6_53c4_ce90_a1d1_3a0b5e7e7d3f
  ef8a1e3f_e350_75a6_b92d_62a8566d8db9["../core/errors/index.js"]
  d6caebb2_f869_cb76_46b3_43d67745224c --> ef8a1e3f_e350_75a6_b92d_62a8566d8db9
  d3861967_b647_84d2_ff48_15013353bd56["../core/logger/core.js"]
  d6caebb2_f869_cb76_46b3_43d67745224c --> d3861967_b647_84d2_ff48_15013353bd56
  8db17b08_b9e5_db7e_cd39_46be76c6d5ad["../core/messages.js"]
  d6caebb2_f869_cb76_46b3_43d67745224c --> 8db17b08_b9e5_db7e_cd39_46be76c6d5ad
  e62808d9_0c55_b3a9_00c0_ce588f164dab["../events/index.js"]
  d6caebb2_f869_cb76_46b3_43d67745224c --> e62808d9_0c55_b3a9_00c0_ce588f164dab
  style d6caebb2_f869_cb76_46b3_43d67745224c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { collectErrorMetadata } from '../core/errors/dev/index.js';
import { isAstroConfigZodError } from '../core/errors/errors.js';
import { createSafeError } from '../core/errors/index.js';
import { debug } from '../core/logger/core.js';
import { formatErrorMessage } from '../core/messages.js';
import { eventError, telemetry } from '../events/index.js';

/** Display error and exit */
export async function throwAndExit(cmd: string, err: unknown) {
	// Suppress ZodErrors from AstroConfig as the pre-logged error is sufficient
	if (isAstroConfigZodError(err)) {
		process.exit(1);
	}

	let telemetryPromise: Promise<any>;
	let errorMessage: string;
	function exitWithErrorMessage() {
		console.error(errorMessage);
		process.exit(1);
	}

	const errorWithMetadata = collectErrorMetadata(createSafeError(err));
	telemetryPromise = telemetry.record(eventError({ cmd, err: errorWithMetadata, isFatal: true }));
	errorMessage = formatErrorMessage(errorWithMetadata, true);

	// Timeout the error reporter (very short) because the user is waiting.
	// NOTE(fks): It is better that we miss some events vs. holding too long.
	// TODO(fks): Investigate using an AbortController once we drop Node v14.
	setTimeout(exitWithErrorMessage, 400);
	// Wait for the telemetry event to send, then exit. Ignore any error.
	await telemetryPromise
		.catch((err2) => debug('telemetry', `record() error: ${err2.message}`))
		.then(exitWithErrorMessage);
}

Domain

Subdomains

Functions

Dependencies

  • ../../core/errors/errors.js
  • ../core/errors/dev/index.js
  • ../core/errors/index.js
  • ../core/logger/core.js
  • ../core/messages.js
  • ../events/index.js

Frequently Asked Questions

What does throw-and-exit.ts do?
throw-and-exit.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in throw-and-exit.ts?
throw-and-exit.ts defines 1 function(s): throwAndExit.
What does throw-and-exit.ts depend on?
throw-and-exit.ts imports 6 module(s): ../../core/errors/errors.js, ../core/errors/dev/index.js, ../core/errors/index.js, ../core/logger/core.js, ../core/messages.js, ../events/index.js.
Where is throw-and-exit.ts in the architecture?
throw-and-exit.ts is located at packages/astro/src/cli/throw-and-exit.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/cli).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free