vue-ts-types
Version:
Lightweight TypeScript-first Vue prop type definitions
49 lines (48 loc) • 2.41 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isSymbol = exports.isOneOf = exports.isInteger = exports.isInstanceOf = void 0;
exports.vuePropValidator = vuePropValidator;
const vue_1 = __importDefault(require("vue"));
/**
* Creates a Vue prop validator that runs all type validators and the user validator (if specified).
* @param userValidator Validator function specified by the user.
* @param typeValidators Validator functions hard-coded by the prop type function.
*/
function vuePropValidator(userValidator, ...typeValidators) {
const validators = userValidator
? [...typeValidators, userValidator]
: typeValidators;
if (validators.length === 0) {
return undefined;
}
return (value) => {
for (const validator of validators) {
const errorMessage = validator(value);
if (errorMessage) {
if (typeof vue_1.default === 'object' && 'util' in vue_1.default) {
// @ts-expect-error -- Vue.util is only available in Vue 2, but provides more context than console.warn
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
vue_1.default.util.warn(`${errorMessage} (received: '${String(value)}')`);
}
else {
console.warn(`${errorMessage} (received: '${String(value)}')`);
}
return false;
}
}
return true;
};
}
// for internal use only
var isInstanceOf_1 = require("./isInstanceOf");
Object.defineProperty(exports, "isInstanceOf", { enumerable: true, get: function () { return isInstanceOf_1.isInstanceOf; } });
var isInteger_1 = require("./isInteger");
Object.defineProperty(exports, "isInteger", { enumerable: true, get: function () { return isInteger_1.isInteger; } });
var isOneOf_1 = require("./isOneOf");
Object.defineProperty(exports, "isOneOf", { enumerable: true, get: function () { return isOneOf_1.isOneOf; } });
var isSymbol_1 = require("./isSymbol");
Object.defineProperty(exports, "isSymbol", { enumerable: true, get: function () { return isSymbol_1.isSymbol; } });
// custom validators provided for user convenience are exported from main entrypoint
;