@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
56 lines (54 loc) • 1.45 kB
JavaScript
;
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