current commit
250401.5 · test: update test for lateset swc
type SwcError = {
	code: "UnsupportedSyntax" | "InvalidSyntax";
	message: string;
	startColumn: number;
	startLine: number;
	snippet: string;
	filename: string;
	endColumn: number;
	endLine: number;
};

// Type guard to check if error is SwcError
export function isSwcError(error: unknown): error is SwcError {
	return (error as SwcError).code !== undefined;
}

// Since swc throw an object, we need to wrap it in a proper error
export function wrapAndReThrowSwcError(error: SwcError): never {
	const errorHints = `${error.filename}:${error.startLine}\n${error.snippet}\n`;
	switch (error.code) {
		case "UnsupportedSyntax": {
			const unsupportedSyntaxError = new Error(error.message);
			unsupportedSyntaxError.name = "UnsupportedSyntaxError";
			unsupportedSyntaxError.stack = `${errorHints}${unsupportedSyntaxError.stack}`;
			throw unsupportedSyntaxError;
		}
		case "InvalidSyntax": {
			const syntaxError = new SyntaxError(error.message);
			syntaxError.stack = `${errorHints}${syntaxError.stack}`;
			throw syntaxError;
		}
		default:
			throw new Error(error.message);
	}
}