messageformat
Version:
Intl.MessageFormat / Unicode MessageFormat 2 parser, runtime and polyfill
72 lines (71 loc) • 1.57 kB
JavaScript
import { cstKey } from "./data-model/from-cst.js";
/**
* Base error class used by MessageFormat
*
* @category Errors
*/
export class MessageError extends Error {
type;
constructor(type, message) {
super(message);
this.type = type;
}
}
/**
* Errors in the message syntax.
*
* @category Errors
*/
export class MessageSyntaxError extends MessageError {
start;
end;
/** @private */
constructor(type, start, end, expected) {
let message = expected ? `Missing ${expected}` : type;
if (start >= 0)
message += ` at ${start}`;
super(type, message);
this.start = start;
this.end = end ?? start + 1;
}
}
/**
* Errors in the message data model.
*
* @category Errors
*/
export class MessageDataModelError extends MessageSyntaxError {
/** @private */
constructor(type, node) {
const { start, end } = node[cstKey] ?? { start: -1, end: -1 };
super(type, start, end);
}
}
/**
* Message runtime resolution errors
*
* @category Errors
*/
export class MessageResolutionError extends MessageError {
source;
cause;
constructor(type, message, source, cause) {
super(type, message);
this.source = source;
if (cause !== undefined)
this.cause = cause;
}
}
/**
* Message runtime resolution errors
*
* @category Errors
*/
export class MessageFunctionError extends MessageError {
source;
cause;
constructor(type, message) {
super(type, message);
this.source = '�';
}
}