UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

48 lines (47 loc) 1.72 kB
"use strict"; 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