@openfisca/json-model
Version:
Library to handle informations extracted in JSON or YAML format from OpenFisca parameters, variables, etc
27 lines • 6.49 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, "long_title", true, errors, remainingKeys, auditTrimString);
audit.attribute(data, "note", true, errors, remainingKeys, auditTrimString);
audit.attribute(data, "title", true, errors, remainingKeys, auditTrimString);
if (errors.href === undefined && errors.long_title === undefined && errors.note === undefined && errors.title === undefined && data.href == null && data.long_title == null && data.note == null && data.title == null) {
errors.href = errors.long_title = errors.note = errors.title = "A reference object must contain a href and/or a note and/or a title and/or a long_title";
}
return audit.reduceRemaining(data, errors, remainingKeys);
}
export const auditReferencesByDate = auditKeyValueDictionary(auditDate, auditCleanArray(auditReference));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhdWRpdENsZWFuQXJyYXkiLCJhdWRpdEZ1bmN0aW9uIiwiYXVkaXRIdHRwVXJsIiwiYXVkaXRLZXlWYWx1ZURpY3Rpb25hcnkiLCJhdWRpdFRyaW1TdHJpbmciLCJhdWRpdERhdGUiLCJhdWRpdFJlZmVyZW5jZSIsImF1ZGl0IiwiZGF0YVVua25vd24iLCJ1bmV4cGVjdGVkVHlwZSIsImRhdGEiLCJlcnJvcnMiLCJyZW1haW5pbmdLZXlzIiwiU2V0IiwiT2JqZWN0Iiwia2V5cyIsImF0dHJpYnV0ZSIsInVybCIsInJlcGxhY2UiLCJocmVmIiwidW5kZWZpbmVkIiwibG9uZ190aXRsZSIsIm5vdGUiLCJ0aXRsZSIsInJlZHVjZVJlbWFpbmluZyIsImF1ZGl0UmVmZXJlbmNlc0J5RGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpdG9ycy9yZWZlcmVuY2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF1ZGl0LFxuICBhdWRpdENsZWFuQXJyYXksXG4gIGF1ZGl0RnVuY3Rpb24sXG4gIGF1ZGl0SHR0cFVybCxcbiAgYXVkaXRLZXlWYWx1ZURpY3Rpb25hcnksXG4gIGF1ZGl0VHJpbVN0cmluZyxcbn0gZnJvbSBcIkBhdWRpdG9ycy9jb3JlXCJcblxuaW1wb3J0IHsgYXVkaXREYXRlIH0gZnJvbSBcIi4vcGVyaW9kc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBhdWRpdFJlZmVyZW5jZShcbiAgYXVkaXQ6IEF1ZGl0LFxuICBkYXRhVW5rbm93bjogdW5rbm93bixcbik6IFt1bmtub3duLCB1bmtub3duXSB7XG4gIGlmIChkYXRhVW5rbm93biA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtkYXRhVW5rbm93biwgbnVsbF1cbiAgfVxuICBpZiAodHlwZW9mIGRhdGFVbmtub3duICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGF1ZGl0LnVuZXhwZWN0ZWRUeXBlKGRhdGFVbmtub3duLCBcIm9iamVjdFwiKVxuICB9XG5cbiAgY29uc3QgZGF0YTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPSB7IC4uLmRhdGFVbmtub3duIH1cbiAgY29uc3QgZXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9XG4gIGNvbnN0IHJlbWFpbmluZ0tleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGRhdGEpKVxuXG4gIGF1ZGl0LmF0dHJpYnV0ZShcbiAgICBkYXRhLFxuICAgIFwiaHJlZlwiLFxuICAgIHRydWUsXG4gICAgZXJyb3JzLFxuICAgIHJlbWFpbmluZ0tleXMsXG4gICAgYXVkaXRIdHRwVXJsLFxuICAgIC8vIFJlbW92ZSBqc2Vzc2lvbmlkIGZyb20gTMOpZ2lmcmFuY2UgVVJMcy5cbiAgICBhdWRpdEZ1bmN0aW9uKCh1cmwpID0+IHVybC5yZXBsYWNlKC87anNlc3Npb25pZD1bXlxcLz9dKi8sIFwiXCIpKSxcbiAgKVxuICBhdWRpdC5hdHRyaWJ1dGUoXG4gICAgZGF0YSxcbiAgICBcImxvbmdfdGl0bGVcIixcbiAgICB0cnVlLFxuICAgIGVycm9ycyxcbiAgICByZW1haW5pbmdLZXlzLFxuICAgIGF1ZGl0VHJpbVN0cmluZyxcbiAgKVxuICBhdWRpdC5hdHRyaWJ1dGUoZGF0YSwgXCJub3RlXCIsIHRydWUsIGVycm9ycywgcmVtYWluaW5nS2V5cywgYXVkaXRUcmltU3RyaW5nKVxuICBhdWRpdC5hdHRyaWJ1dGUoZGF0YSwgXCJ0aXRsZVwiLCB0cnVlLCBlcnJvcnMsIHJlbWFpbmluZ0tleXMsIGF1ZGl0VHJpbVN0cmluZylcblxuICBpZiAoXG4gICAgZXJyb3JzLmhyZWYgPT09IHVuZGVmaW5lZCAmJlxuICAgIGVycm9ycy5sb25nX3RpdGxlID09PSB1bmRlZmluZWQgJiZcbiAgICBlcnJvcnMubm90ZSA9PT0gdW5kZWZpbmVkICYmXG4gICAgZXJyb3JzLnRpdGxlID09PSB1bmRlZmluZWQgJiZcbiAgICBkYXRhLmhyZWYgPT0gbnVsbCAmJlxuICAgIGRhdGEubG9uZ190aXRsZSA9PSBudWxsICYmXG4gICAgZGF0YS5ub3RlID09IG51bGwgJiZcbiAgICBkYXRhLnRpdGxlID09IG51bGxcbiAgKSB7XG4gICAgZXJyb3JzLmhyZWYgPVxuICAgICAgZXJyb3JzLmxvbmdfdGl0bGUgPVxuICAgICAgZXJyb3JzLm5vdGUgPVxuICAgICAgZXJyb3JzLnRpdGxlID1cbiAgICAgICAgXCJBIHJlZmVyZW5jZSBvYmplY3QgbXVzdCBjb250YWluIGEgaHJlZiBhbmQvb3IgYSBub3RlIGFuZC9vciBhIHRpdGxlIGFuZC9vciBhIGxvbmdfdGl0bGVcIlxuICB9XG5cbiAgcmV0dXJuIGF1ZGl0LnJlZHVjZVJlbWFpbmluZyhkYXRhLCBlcnJvcnMsIHJlbWFpbmluZ0tleXMpXG59XG5cbmV4cG9ydCBjb25zdCBhdWRpdFJlZmVyZW5jZXNCeURhdGUgPSBhdWRpdEtleVZhbHVlRGljdGlvbmFyeShcbiAgYXVkaXREYXRlLFxuICBhdWRpdENsZWFuQXJyYXkoYXVkaXRSZWZlcmVuY2UpLFxuKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUVFQSxlQUFlLEVBQ2ZDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyx1QkFBdUIsRUFDdkJDLGVBQWUsUUFDVixnQkFBZ0I7QUFBQSxTQUVkQyxTQUFTO0FBRWxCLE9BQU8sU0FBU0MsY0FBY0EsQ0FDNUJDLEtBQVksRUFDWkMsV0FBb0IsRUFDQTtFQUNwQixJQUFJQSxXQUFXLElBQUksSUFBSSxFQUFFO0lBQ3ZCLE9BQU8sQ0FBQ0EsV0FBVyxFQUFFLElBQUksQ0FBQztFQUM1QjtFQUNBLElBQUksT0FBT0EsV0FBVyxLQUFLLFFBQVEsRUFBRTtJQUNuQyxPQUFPRCxLQUFLLENBQUNFLGNBQWMsQ0FBQ0QsV0FBVyxFQUFFLFFBQVEsQ0FBQztFQUNwRDtFQUVBLE1BQU1FLElBQWdDLEdBQUc7SUFBRSxHQUFHRjtFQUFZLENBQUM7RUFDM0QsTUFBTUcsTUFBa0MsR0FBRyxDQUFDLENBQUM7RUFDN0MsTUFBTUMsYUFBYSxHQUFHLElBQUlDLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDQyxJQUFJLENBQUNMLElBQUksQ0FBQyxDQUFDO0VBRWhESCxLQUFLLENBQUNTLFNBQVMsQ0FDYk4sSUFBSSxFQUNKLE1BQU0sRUFDTixJQUFJLEVBQ0pDLE1BQU0sRUFDTkMsYUFBYSxFQUNiVixZQUFZO0VBQ1o7RUFDQUQsYUFBYSxDQUFFZ0IsR0FBRyxJQUFLQSxHQUFHLENBQUNDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FDL0QsQ0FBQztFQUNEWCxLQUFLLENBQUNTLFNBQVMsQ0FDYk4sSUFBSSxFQUNKLFlBQVksRUFDWixJQUFJLEVBQ0pDLE1BQU0sRUFDTkMsYUFBYSxFQUNiUixlQUNGLENBQUM7RUFDREcsS0FBSyxDQUFDUyxTQUFTLENBQUNOLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLGFBQWEsRUFBRVIsZUFBZSxDQUFDO0VBQzNFRyxLQUFLLENBQUNTLFNBQVMsQ0FBQ04sSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsYUFBYSxFQUFFUixlQUFlLENBQUM7RUFFNUUsSUFDRU8sTUFBTSxDQUFDUSxJQUFJLEtBQUtDLFNBQVMsSUFDekJULE1BQU0sQ0FBQ1UsVUFBVSxLQUFLRCxTQUFTLElBQy9CVCxNQUFNLENBQUNXLElBQUksS0FBS0YsU0FBUyxJQUN6QlQsTUFBTSxDQUFDWSxLQUFLLEtBQUtILFNBQVMsSUFDMUJWLElBQUksQ0FBQ1MsSUFBSSxJQUFJLElBQUksSUFDakJULElBQUksQ0FBQ1csVUFBVSxJQUFJLElBQUksSUFDdkJYLElBQUksQ0FBQ1ksSUFBSSxJQUFJLElBQUksSUFDakJaLElBQUksQ0FBQ2EsS0FBSyxJQUFJLElBQUksRUFDbEI7SUFDQVosTUFBTSxDQUFDUSxJQUFJLEdBQ1RSLE1BQU0sQ0FBQ1UsVUFBVSxHQUNqQlYsTUFBTSxDQUFDVyxJQUFJLEdBQ1hYLE1BQU0sQ0FBQ1ksS0FBSyxHQUNWLHlGQUF5RjtFQUMvRjtFQUVBLE9BQU9oQixLQUFLLENBQUNpQixlQUFlLENBQUNkLElBQUksRUFBRUMsTUFBTSxFQUFFQyxhQUFhLENBQUM7QUFDM0Q7QUFFQSxPQUFPLE1BQU1hLHFCQUFxQixHQUFHdEIsdUJBQXVCLENBQzFERSxTQUFTLEVBQ1RMLGVBQWUsQ0FBQ00sY0FBYyxDQUNoQyxDQUFDIiwiaWdub3JlTGlzdCI6W119