warehouse
Version:
Simple JSON-based database
88 lines • 2.5 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const schematype_1 = __importDefault(require("../schematype"));
const validation_1 = __importDefault(require("../error/validation"));
/**
* String schema type.
*/
class SchemaTypeString extends schematype_1.default {
cast(value_, data) {
const value = super.cast(value_, data);
if (value == null || typeof value === 'string')
return value;
if (typeof value.toString === 'function')
return value.toString();
}
/**
* Validates a string.
*
* @param {*} value_
* @param {Object} data
* @return {String|Error}
*/
validate(value_, data) {
const value = super.validate(value_, data);
if (value !== undefined && typeof value !== 'string') {
throw new validation_1.default(`\`${value}\` is not a string!`);
}
return value;
}
/**
* Checks the equality of data.
*
* @param {*} value
* @param {String|RegExp} query
* @param {Object} data
* @return {Boolean}
*/
match(value, query, data) {
if (!value || !query) {
return value === query;
}
if (typeof query.test === 'function') {
return query.test(value);
}
return value === query;
}
/**
* Checks whether a string is equal to one of elements in `query`.
*
* @param {String} value
* @param {Array} query
* @param {Object} data
* @return {Boolean}
*/
q$in(value, query, data) {
for (let i = 0, len = query.length; i < len; i++) {
if (this.match(value, query[i], data))
return true;
}
return false;
}
/**
* Checks whether a string is not equal to any elements in `query`.
*
* @param {String} value
* @param {Array} query
* @param {Object} data
* @return {Boolean}
*/
q$nin(value, query, data) {
return !this.q$in(value, query, data);
}
/**
* Checks length of a string.
*
* @param {String} value
* @param {Number} query
* @return {Boolean}
*/
q$length(value, query) {
return (value ? value.length : 0) === query;
}
}
exports.default = SchemaTypeString;
//# sourceMappingURL=string.js.map
;