next
Version:
The React Framework
40 lines (39 loc) • 1.71 kB
JavaScript
import { eventErrorThrown } from '../../../telemetry/events';
import { traceGlobals } from '../../../trace/shared';
/**
* An error caused by a bug in Turbopack, and not the user's code (e.g. a Rust panic). These should
* be written to a log file and details should not be shown to the user.
*
* These are constructed in Turbopack by calling `throwTurbopackInternalError`.
*/ export class TurbopackInternalError extends Error {
constructor({ message, anonymizedLocation }){
super(message), this.name = 'TurbopackInternalError', // Manually set this as this isn't statically determinable
this.__NEXT_ERROR_CODE = 'TurbopackInternalError';
this.location = anonymizedLocation;
}
}
/**
* A helper used by the napi Rust entrypoints to construct and throw a `TurbopackInternalError`.
*
* When called, this will emit a telemetry event.
*/ export function throwTurbopackInternalError(conversionError, opts) {
if (conversionError != null) {
// Somehow napi failed to convert `opts` to a JS object??? Just give up and throw that instead.
throw Object.defineProperty(new Error('NAPI type conversion error in throwTurbopackInternalError', {
cause: conversionError
}), "__NEXT_ERROR_CODE", {
value: "E723",
enumerable: false,
configurable: true
});
}
const err = new TurbopackInternalError(opts);
const telemetry = traceGlobals.get('telemetry');
if (telemetry) {
telemetry.record(eventErrorThrown(err, opts.anonymizedLocation));
} else {
console.error('Expected `telemetry` to be set in globals');
}
throw err;
}
//# sourceMappingURL=internal-error.js.map