22 lines
782 B
Plaintext
22 lines
782 B
Plaintext
"use strict";
|
|
|
|
var isValue = require("../value/is")
|
|
, isObject = require("../object/is")
|
|
, stringCoerce = require("../string/coerce")
|
|
, toShortString = require("./to-short-string");
|
|
|
|
var resolveMessage = function (message, value) {
|
|
return message.replace("%v", toShortString(value));
|
|
};
|
|
|
|
module.exports = function (value, defaultMessage, inputOptions) {
|
|
if (!isObject(inputOptions)) throw new TypeError(resolveMessage(defaultMessage, value));
|
|
if (!isValue(value)) {
|
|
if ("default" in inputOptions) return inputOptions["default"];
|
|
if (inputOptions.isOptional) return null;
|
|
}
|
|
var errorMessage = stringCoerce(inputOptions.errorMessage);
|
|
if (!isValue(errorMessage)) errorMessage = defaultMessage;
|
|
throw new TypeError(resolveMessage(errorMessage, value));
|
|
};
|