UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

56 lines (54 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArrayField = void 0; var _utils = require("@backland/utils"); var _CircularDeps = require("../CircularDeps"); var _ArrayFieldParse = require("./ArrayFieldParse"); var _FieldType = require("./FieldType"); class ArrayField extends _FieldType.FieldType { // utils = { listItemType: {} }; static is(item) { return (item === null || item === void 0 ? void 0 : item.typeName) === 'list'; } constructor(def) { super({ def: def, name: 'array' }); const { parseObjectField } = _CircularDeps.CircularDeps; try { this.utils.listItemType = parseObjectField(`ListItem`, def.of, true); } catch (e) { let message = `Filed to parse type:`; message += `\n${(0, _utils.inspectObject)(def, { tabSize: 2 })}`; e.stack = message + '\n' + e.stack; throw e; } const self = this; this.parse = this.applyParser({ parse: (input, options) => { if (input === undefined && this.optional) return input; return (0, _ArrayFieldParse.arrayFieldParse)({ arrayOptions: self.def, input, parser: self.utils.listItemType.parse, parserOptions: options }); } }); } static create = def => { return new ArrayField(def); }; } exports.ArrayField = ArrayField; //# sourceMappingURL=ArrayField.js.map