UNPKG

@natlibfi/marc-record

Version:

MARC record implementation in JavaScript

65 lines (62 loc) 2.36 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.clone = clone; exports.validateField = validateField; exports.validateRecord = validateRecord; var _jsonschema = require("jsonschema"); var _schema = _interopRequireDefault(require("./schema")); var _error = _interopRequireDefault(require("./error")); //import createDebugLogger from 'debug'; //import {inspect} from 'util'; function clone(obj) { return JSON.parse(JSON.stringify(obj)); } //const debug = createDebugLogger('@natlibfi/marc-record:utils'); //const debugData = debug.extend('data'); //const debugDev = debug.extend('dev'); function validateRecord(record) { let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; const { noFailValidation } = options; const validationResults = (0, _jsonschema.validate)(record, (0, _schema.default)(options), { nestedErrors: false }); //debugData(JSON.stringify(record)); //debugDev(inspect(validationResults), {depth: 3}); //debugDev(inspect(validationResults.errors)); //debugData(validationResults.errors.toString()); if (noFailValidation) { return validationResults.errors.map(valError => valError.toString()); } if (validationResults.errors.length > 0) { // eslint-disable-line functional/no-conditional-statements throw new _error.default('Record is invalid', validationResults); } return []; } function validateField(field) { let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; const { noFailValidation } = options; const validationResults = (0, _jsonschema.validate)(field, (0, _schema.default)(options).properties.fields.items, { nestedErrors: false }); //debugData(JSON.stringify(field)); //debugDev(inspect(validationResults)); //debugDev(inspect(validationResults.errors)); //debugData(validationResults.errors.toString()); if (noFailValidation) { return validationResults.errors.map(valError => valError.toString()); } if (validationResults.errors.length > 0) { // eslint-disable-line functional/no-conditional-statements throw new _error.default(`Field is invalid: ${JSON.stringify(field)}`, validationResults); } return []; } //# sourceMappingURL=utils.js.map