heyujie
2021-06-07 8f8155aa4c83f7c2577ac123add550766b6a7ce3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"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));
};