UNPKG

typia

Version:

Superfast runtime validators with only one line

52 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TypeGuardError = void 0; /** * Error thrown when type assertion fails. * * Thrown by {@link assert}, {@link assertGuard}, and other assert-family * functions when input doesn't match expected type `T`. Contains detailed * information about the first assertion failure: * * - `method`: Which typia function threw (e.g., `"typia.assert"`) * - `path`: Property path where error occurred (e.g., `"input.user.age"`) * - `expected`: Expected type string (e.g., `"number & ExclusiveMinimum<19>"`) * - `value`: Actual value that failed validation * * @template T Expected type (for type safety) */ class TypeGuardError extends Error { /** * Creates a new TypeGuardError instance. * * @param props Error properties */ constructor(props) { var _a; // MESSAGE CONSTRUCTION // Use custom message if provided, otherwise generate default format super(props.message || `Error on ${props.method}(): invalid type${props.path ? ` on ${props.path}` : ""}, expect to be ${props.expected}`); // INHERITANCE POLYFILL // Set up prototype for compatibility across different JavaScript environments const proto = new.target.prototype; if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto); else this.__proto__ = proto; // ASSIGN MEMBERS this.name = "TypeGuardError"; this.method = props.method; this.path = props.path; this.expected = props.expected; this.value = props.value; if (props.description || props.value === undefined) this.description = (_a = props.description) !== null && _a !== void 0 ? _a : [ "The value at this path is `undefined`.", "", `Please fill the \`${props.expected}\` typed value next time.`, ].join("\n"); } } exports.TypeGuardError = TypeGuardError; //# sourceMappingURL=TypeGuardError.js.map