UNPKG

@kitmi/types

Version:

JavaScript semantic data types

111 lines (110 loc) 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _errors = require("./errors"); const _csvLineParse = /*#__PURE__*/ _interop_require_default(require("@kitmi/utils/csvLineParse")); const _arrayToCsv = /*#__PURE__*/ _interop_require_default(require("@kitmi/utils/arrayToCsv")); const _padding = require("@kitmi/utils/padding"); const _batchAsync_ = /*#__PURE__*/ _interop_require_default(require("@kitmi/utils/batchAsync_")); function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class T_ARRAY { validate(value) { return Array.isArray(value); } _sanitize(value, meta, opts) { if (typeof value === 'string') { if (meta.csv) { value = (0, _csvLineParse.default)(value, { delimiter: meta.delimiter || ',' }); } else { const trimmed = value.trim(); if (trimmed.startsWith('[') && trimmed.endsWith(']')) { value = JSON.parse(trimmed); } } } if (Array.isArray(value)) { if (meta.element) { const schema = typeof meta.element === 'function' ? meta.element() : meta.element; return value.map((a, i)=>this.system.sanitize(a, schema, opts.i18n, { root: opts.root, parent: value, path: (0, _padding.padLeft)(`[${i}]`, opts.path) })); } return value; } throw new _errors.ValidationError('Invalid array value.', { value: opts.rawValue, path: opts.path }); } async _sanitizeAsync(value, meta, opts) { if (typeof value === 'string') { if (meta.csv) { value = (0, _csvLineParse.default)(value, { delimiter: meta.delimiter || ',' }); } else { const trimmed = value.trim(); if (trimmed.startsWith('[') && trimmed.endsWith(']')) { value = JSON.parse(trimmed); } } } if (Array.isArray(value)) { if (meta.element) { const schema = typeof meta.element === 'function' ? meta.element() : meta.element; return (0, _batchAsync_.default)(value, (a, i)=>this.system.sanitize_(a, schema, opts.i18n, { root: opts.root, parent: value, path: (0, _padding.padLeft)(`[${i}]`, opts.path) })); } return value; } throw new _errors.ValidationError('Invalid array value.', { value: opts.rawValue, path: opts.path }); } serialize(value, typeInfo) { return value == null ? null : typeInfo?.csv ? (0, _arrayToCsv.default)(value, typeInfo?.delimiter, this.system.getStringifier()) : this.system.safeJsonStringify(value); } constructor(system){ _define_property(this, "name", 'array'); _define_property(this, "alias", [ 'list' ]); _define_property(this, "primitive", true); _define_property(this, "defaultValue", []); this.system = system; } } const _default = T_ARRAY; //# sourceMappingURL=array.js.map