@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
48 lines (47 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.typeNameFromTemplate = exports.parseStringDefinition = exports.isStringFieldDefinition = exports.isOptionalTemplate = exports.isListTemplate = void 0;
var _utils = require("@backland/utils");
var _fieldTypes = require("./fields/fieldTypes");
function _parseStringDefinition(typeName) {
const t = typeNameFromTemplate(typeName);
const isOptional = isOptionalTemplate(typeName);
const isList = isListTemplate(typeName);
const obj = {
type: t
};
if (isList) {
obj.list = true;
}
if (isOptional) {
obj.optional = true;
}
return obj;
}
function _isOptionalTemplate(type) {
return !!type.match(/\?$/);
}
function _isListTemplate(type) {
return !!type.match(/]\??$/);
}
function _typeNameFromTemplate(enhanced) {
return enhanced.replace(/[\[\]?, ]/g, '');
}
function _isStringFieldDefinition(t) {
if (typeof t !== 'string') return false;
const field = typeNameFromTemplate(t);
return (0, _fieldTypes.isFieldTypeName)(field);
}
const parseStringDefinition = (0, _utils.memoize)(_parseStringDefinition);
exports.parseStringDefinition = parseStringDefinition;
const typeNameFromTemplate = (0, _utils.memoize)(_typeNameFromTemplate);
exports.typeNameFromTemplate = typeNameFromTemplate;
const isStringFieldDefinition = (0, _utils.memoize)(_isStringFieldDefinition);
exports.isStringFieldDefinition = isStringFieldDefinition;
const isListTemplate = (0, _utils.memoize)(_isListTemplate);
exports.isListTemplate = isListTemplate;
const isOptionalTemplate = (0, _utils.memoize)(_isOptionalTemplate);
exports.isOptionalTemplate = isOptionalTemplate;
//# sourceMappingURL=parseStringDefinition.js.map