You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
782 B
21 lines
782 B
"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)); |
|
};
|
|
|