@natlibfi/marc-record
Version:
MARC record implementation in JavaScript
65 lines (62 loc) • 2.36 kB
JavaScript
;
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