@openfisca/json-model
Version:
Library to handle informations extracted in JSON or YAML format from OpenFisca parameters, variables, etc
26 lines • 5.73 kB
JavaScript
import { auditCleanArray, auditFunction, auditHttpUrl, auditKeyValueDictionary, auditTrimString } from "@auditors/core";
import { auditDate } from "./periods.js";
export function auditReference(audit, dataUnknown) {
if (dataUnknown == null) {
return [dataUnknown, null];
}
if (typeof dataUnknown !== "object") {
return audit.unexpectedType(dataUnknown, "object");
}
const data = {
...dataUnknown
};
const errors = {};
const remainingKeys = new Set(Object.keys(data));
audit.attribute(data, "href", true, errors, remainingKeys, auditHttpUrl,
// Remove jsessionid from Légifrance URLs.
auditFunction(url => url.replace(/;jsessionid=[^\/?]*/, "")));
audit.attribute(data, "note", true, errors, remainingKeys, auditTrimString);
audit.attribute(data, "title", true, errors, remainingKeys, auditTrimString);
if (errors.href === undefined && errors.note === undefined && errors.title === undefined && data.href == null && data.note == null && data.title == null) {
errors.href = errors.note = errors.title = "A reference object must contain a href and/or a note and/or a title";
}
return audit.reduceRemaining(data, errors, remainingKeys);
}
export const auditReferencesByDate = auditKeyValueDictionary(auditDate, auditCleanArray(auditReference));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhdWRpdENsZWFuQXJyYXkiLCJhdWRpdEZ1bmN0aW9uIiwiYXVkaXRIdHRwVXJsIiwiYXVkaXRLZXlWYWx1ZURpY3Rpb25hcnkiLCJhdWRpdFRyaW1TdHJpbmciLCJhdWRpdERhdGUiLCJhdWRpdFJlZmVyZW5jZSIsImF1ZGl0IiwiZGF0YVVua25vd24iLCJ1bmV4cGVjdGVkVHlwZSIsImRhdGEiLCJlcnJvcnMiLCJyZW1haW5pbmdLZXlzIiwiU2V0IiwiT2JqZWN0Iiwia2V5cyIsImF0dHJpYnV0ZSIsInVybCIsInJlcGxhY2UiLCJocmVmIiwidW5kZWZpbmVkIiwibm90ZSIsInRpdGxlIiwicmVkdWNlUmVtYWluaW5nIiwiYXVkaXRSZWZlcmVuY2VzQnlEYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1ZGl0b3JzL3JlZmVyZW5jZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXVkaXQsXG4gIGF1ZGl0Q2xlYW5BcnJheSxcbiAgYXVkaXRGdW5jdGlvbixcbiAgYXVkaXRIdHRwVXJsLFxuICBhdWRpdEtleVZhbHVlRGljdGlvbmFyeSxcbiAgYXVkaXRUcmltU3RyaW5nLFxufSBmcm9tIFwiQGF1ZGl0b3JzL2NvcmVcIlxuXG5pbXBvcnQgeyBhdWRpdERhdGUgfSBmcm9tIFwiLi9wZXJpb2RzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0UmVmZXJlbmNlKFxuICBhdWRpdDogQXVkaXQsXG4gIGRhdGFVbmtub3duOiB1bmtub3duLFxuKTogW3Vua25vd24sIHVua25vd25dIHtcbiAgaWYgKGRhdGFVbmtub3duID09IG51bGwpIHtcbiAgICByZXR1cm4gW2RhdGFVbmtub3duLCBudWxsXVxuICB9XG4gIGlmICh0eXBlb2YgZGF0YVVua25vd24gIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gYXVkaXQudW5leHBlY3RlZFR5cGUoZGF0YVVua25vd24sIFwib2JqZWN0XCIpXG4gIH1cblxuICBjb25zdCBkYXRhOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHsgLi4uZGF0YVVua25vd24gfVxuICBjb25zdCBlcnJvcnM6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9ID0ge31cbiAgY29uc3QgcmVtYWluaW5nS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZGF0YSkpXG5cbiAgYXVkaXQuYXR0cmlidXRlKFxuICAgIGRhdGEsXG4gICAgXCJocmVmXCIsXG4gICAgdHJ1ZSxcbiAgICBlcnJvcnMsXG4gICAgcmVtYWluaW5nS2V5cyxcbiAgICBhdWRpdEh0dHBVcmwsXG4gICAgLy8gUmVtb3ZlIGpzZXNzaW9uaWQgZnJvbSBMw6lnaWZyYW5jZSBVUkxzLlxuICAgIGF1ZGl0RnVuY3Rpb24oKHVybCkgPT4gdXJsLnJlcGxhY2UoLztqc2Vzc2lvbmlkPVteXFwvP10qLywgXCJcIikpLFxuICApXG4gIGF1ZGl0LmF0dHJpYnV0ZShkYXRhLCBcIm5vdGVcIiwgdHJ1ZSwgZXJyb3JzLCByZW1haW5pbmdLZXlzLCBhdWRpdFRyaW1TdHJpbmcpXG4gIGF1ZGl0LmF0dHJpYnV0ZShkYXRhLCBcInRpdGxlXCIsIHRydWUsIGVycm9ycywgcmVtYWluaW5nS2V5cywgYXVkaXRUcmltU3RyaW5nKVxuXG4gIGlmIChcbiAgICBlcnJvcnMuaHJlZiA9PT0gdW5kZWZpbmVkICYmXG4gICAgZXJyb3JzLm5vdGUgPT09IHVuZGVmaW5lZCAmJlxuICAgIGVycm9ycy50aXRsZSA9PT0gdW5kZWZpbmVkICYmXG4gICAgZGF0YS5ocmVmID09IG51bGwgJiZcbiAgICBkYXRhLm5vdGUgPT0gbnVsbCAmJlxuICAgIGRhdGEudGl0bGUgPT0gbnVsbFxuICApIHtcbiAgICBlcnJvcnMuaHJlZiA9XG4gICAgICBlcnJvcnMubm90ZSA9XG4gICAgICBlcnJvcnMudGl0bGUgPVxuICAgICAgICBcIkEgcmVmZXJlbmNlIG9iamVjdCBtdXN0IGNvbnRhaW4gYSBocmVmIGFuZC9vciBhIG5vdGUgYW5kL29yIGEgdGl0bGVcIlxuICB9XG5cbiAgcmV0dXJuIGF1ZGl0LnJlZHVjZVJlbWFpbmluZyhkYXRhLCBlcnJvcnMsIHJlbWFpbmluZ0tleXMpXG59XG5cbmV4cG9ydCBjb25zdCBhdWRpdFJlZmVyZW5jZXNCeURhdGUgPSBhdWRpdEtleVZhbHVlRGljdGlvbmFyeShcbiAgYXVkaXREYXRlLFxuICBhdWRpdENsZWFuQXJyYXkoYXVkaXRSZWZlcmVuY2UpLFxuKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUVFQSxlQUFlLEVBQ2ZDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyx1QkFBdUIsRUFDdkJDLGVBQWUsUUFDVixnQkFBZ0I7QUFBQSxTQUVkQyxTQUFTO0FBRWxCLE9BQU8sU0FBU0MsY0FBY0EsQ0FDNUJDLEtBQVksRUFDWkMsV0FBb0IsRUFDQTtFQUNwQixJQUFJQSxXQUFXLElBQUksSUFBSSxFQUFFO0lBQ3ZCLE9BQU8sQ0FBQ0EsV0FBVyxFQUFFLElBQUksQ0FBQztFQUM1QjtFQUNBLElBQUksT0FBT0EsV0FBVyxLQUFLLFFBQVEsRUFBRTtJQUNuQyxPQUFPRCxLQUFLLENBQUNFLGNBQWMsQ0FBQ0QsV0FBVyxFQUFFLFFBQVEsQ0FBQztFQUNwRDtFQUVBLE1BQU1FLElBQWdDLEdBQUc7SUFBRSxHQUFHRjtFQUFZLENBQUM7RUFDM0QsTUFBTUcsTUFBa0MsR0FBRyxDQUFDLENBQUM7RUFDN0MsTUFBTUMsYUFBYSxHQUFHLElBQUlDLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDQyxJQUFJLENBQUNMLElBQUksQ0FBQyxDQUFDO0VBRWhESCxLQUFLLENBQUNTLFNBQVMsQ0FDYk4sSUFBSSxFQUNKLE1BQU0sRUFDTixJQUFJLEVBQ0pDLE1BQU0sRUFDTkMsYUFBYSxFQUNiVixZQUFZO0VBQ1o7RUFDQUQsYUFBYSxDQUFFZ0IsR0FBRyxJQUFLQSxHQUFHLENBQUNDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FDL0QsQ0FBQztFQUNEWCxLQUFLLENBQUNTLFNBQVMsQ0FBQ04sSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsYUFBYSxFQUFFUixlQUFlLENBQUM7RUFDM0VHLEtBQUssQ0FBQ1MsU0FBUyxDQUFDTixJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRUMsTUFBTSxFQUFFQyxhQUFhLEVBQUVSLGVBQWUsQ0FBQztFQUU1RSxJQUNFTyxNQUFNLENBQUNRLElBQUksS0FBS0MsU0FBUyxJQUN6QlQsTUFBTSxDQUFDVSxJQUFJLEtBQUtELFNBQVMsSUFDekJULE1BQU0sQ0FBQ1csS0FBSyxLQUFLRixTQUFTLElBQzFCVixJQUFJLENBQUNTLElBQUksSUFBSSxJQUFJLElBQ2pCVCxJQUFJLENBQUNXLElBQUksSUFBSSxJQUFJLElBQ2pCWCxJQUFJLENBQUNZLEtBQUssSUFBSSxJQUFJLEVBQ2xCO0lBQ0FYLE1BQU0sQ0FBQ1EsSUFBSSxHQUNUUixNQUFNLENBQUNVLElBQUksR0FDWFYsTUFBTSxDQUFDVyxLQUFLLEdBQ1YscUVBQXFFO0VBQzNFO0VBRUEsT0FBT2YsS0FBSyxDQUFDZ0IsZUFBZSxDQUFDYixJQUFJLEVBQUVDLE1BQU0sRUFBRUMsYUFBYSxDQUFDO0FBQzNEO0FBRUEsT0FBTyxNQUFNWSxxQkFBcUIsR0FBR3JCLHVCQUF1QixDQUMxREUsU0FBUyxFQUNUTCxlQUFlLENBQUNNLGNBQWMsQ0FDaEMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==