@tricoteuses/assemblee
Version:
Retrieve, clean up & handle French Assemblée nationale's open data
70 lines • 9.89 kB
JavaScript
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import * as git from "./git.mjs";
import { load, write, getFiles } from "./file_systems.mjs";
export class BasePlugin {
constructor(options, name) {
_defineProperty(this, "options", void 0);
_defineProperty(this, "name", void 0);
this.options = options;
this.name = name;
}
async preFix() {}
async fix(_content, _filename) {
return null;
}
async preCheck() {}
async check(_content, _filename) {
return null;
}
async postCheck(_analysis) {}
}
export class SchemaBugs {
constructor(options) {
_defineProperty(this, "options", void 0);
_defineProperty(this, "plugins", void 0);
this.options = options;
this.get(this.options.schema);
}
get(schema) {
this.plugins = [];
const bugsDir = this.options["bugs-dir"] || ".";
const files = getFiles([`${bugsDir}/src/bugs/${schema}-*.ts`]).filter(f => this.options.bug == undefined || f.includes(this.options.bug));
for (const file of files) {
const module = require(`../${file}`);
this.plugins.push(new module["Plugin"](this.options));
}
}
async preFix() {
for (const plugin of this.plugins) await plugin.preFix();
}
async fix(filenames) {
let results = {};
for (const plugin of this.plugins) {
for (const filename of filenames) {
const content = load(filename);
const result = await plugin.fix(content, filename);
results[plugin.name] = result;
if (result == true) write(content, filename);
if (this.options.debug) console.log(`${plugin.name} ${filename} ${result ? "FIXED" : "OK"}`);
}
if (this.options.commit) {
git.commit(this.options.commit, `Fix ${plugin.name}`);
}
}
return results;
}
async preCheck() {
for (const plugin of this.plugins) await plugin.preCheck();
}
async check(content, filename) {
let results = {};
for (const plugin of this.plugins) results[plugin.name] = await plugin.check(content, filename);
return results;
}
async postCheck(analysis) {
for (const plugin of this.plugins) await plugin.postCheck(analysis);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnaXQiLCJsb2FkIiwid3JpdGUiLCJnZXRGaWxlcyIsIkJhc2VQbHVnaW4iLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJuYW1lIiwiX2RlZmluZVByb3BlcnR5IiwicHJlRml4IiwiZml4IiwiX2NvbnRlbnQiLCJfZmlsZW5hbWUiLCJwcmVDaGVjayIsImNoZWNrIiwicG9zdENoZWNrIiwiX2FuYWx5c2lzIiwiU2NoZW1hQnVncyIsImdldCIsInNjaGVtYSIsInBsdWdpbnMiLCJidWdzRGlyIiwiZmlsZXMiLCJmaWx0ZXIiLCJmIiwiYnVnIiwidW5kZWZpbmVkIiwiaW5jbHVkZXMiLCJmaWxlIiwibW9kdWxlIiwicmVxdWlyZSIsInB1c2giLCJwbHVnaW4iLCJmaWxlbmFtZXMiLCJyZXN1bHRzIiwiZmlsZW5hbWUiLCJjb250ZW50IiwicmVzdWx0IiwiZGVidWciLCJjb25zb2xlIiwibG9nIiwiY29tbWl0IiwiYW5hbHlzaXMiXSwic291cmNlcyI6WyIuLi9zcmMvYnVncy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4vZ2l0XCJcbmltcG9ydCB7IGxvYWQsIHdyaXRlLCBnZXRGaWxlcyB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5cbmV4cG9ydCBjbGFzcyBCYXNlUGx1Z2luIHtcbiAgb3B0aW9uczogYW55XG4gIG5hbWU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgfVxuXG4gIGFzeW5jIHByZUZpeCgpOiBQcm9taXNlPGFueT4ge31cblxuICBhc3luYyBmaXgoX2NvbnRlbnQ6IGFueSwgX2ZpbGVuYW1lOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBhc3luYyBwcmVDaGVjaygpOiBQcm9taXNlPGFueT4ge31cblxuICBhc3luYyBjaGVjayhfY29udGVudDogYW55LCBfZmlsZW5hbWU6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGFzeW5jIHBvc3RDaGVjayhfYW5hbHlzaXM6IGFueSk6IFByb21pc2U8YW55PiB7fVxufVxuXG5leHBvcnQgY2xhc3MgU2NoZW1hQnVncyB7XG4gIG9wdGlvbnM6IGFueVxuICBwbHVnaW5zOiBhbnlcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy5nZXQodGhpcy5vcHRpb25zLnNjaGVtYSlcbiAgfVxuXG4gIGdldChzY2hlbWE6IGFueSk6IGFueSB7XG4gICAgdGhpcy5wbHVnaW5zID0gW11cbiAgICBjb25zdCBidWdzRGlyID0gdGhpcy5vcHRpb25zW1wiYnVncy1kaXJcIl0gfHwgXCIuXCJcbiAgICBjb25zdCBmaWxlcyA9IGdldEZpbGVzKFtgJHtidWdzRGlyfS9zcmMvYnVncy8ke3NjaGVtYX0tKi50c2BdKS5maWx0ZXIoXG4gICAgICAoZjogYW55KSA9PiB0aGlzLm9wdGlvbnMuYnVnID09IHVuZGVmaW5lZCB8fCBmLmluY2x1ZGVzKHRoaXMub3B0aW9ucy5idWcpLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoYC4uLyR7ZmlsZX1gKVxuICAgICAgdGhpcy5wbHVnaW5zLnB1c2gobmV3IG1vZHVsZVtcIlBsdWdpblwiXSh0aGlzLm9wdGlvbnMpKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHByZUZpeCgpOiBQcm9taXNlPGFueT4ge1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykgYXdhaXQgcGx1Z2luLnByZUZpeCgpXG4gIH1cblxuICBhc3luYyBmaXgoZmlsZW5hbWVzOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCByZXN1bHRzOiBhbnkgPSB7fVxuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmaWxlbmFtZXMpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGxvYWQoZmlsZW5hbWUpXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5maXgoY29udGVudCwgZmlsZW5hbWUpXG4gICAgICAgIHJlc3VsdHNbcGx1Z2luLm5hbWVdID0gcmVzdWx0XG4gICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgd3JpdGUoY29udGVudCwgZmlsZW5hbWUpXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgY29uc29sZS5sb2coYCR7cGx1Z2luLm5hbWV9ICR7ZmlsZW5hbWV9ICR7cmVzdWx0ID8gXCJGSVhFRFwiIDogXCJPS1wifWApXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBnaXQuY29tbWl0KHRoaXMub3B0aW9ucy5jb21taXQsIGBGaXggJHtwbHVnaW4ubmFtZX1gKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgYXN5bmMgcHJlQ2hlY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdGhpcy5wbHVnaW5zKSBhd2FpdCBwbHVnaW4ucHJlQ2hlY2soKVxuICB9XG5cbiAgYXN5bmMgY2hlY2soY29udGVudDogYW55LCBmaWxlbmFtZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgcmVzdWx0czogYW55ID0ge31cbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMpXG4gICAgICByZXN1bHRzW3BsdWdpbi5uYW1lXSA9IGF3YWl0IHBsdWdpbi5jaGVjayhjb250ZW50LCBmaWxlbmFtZSlcbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgYXN5bmMgcG9zdENoZWNrKGFuYWx5c2lzOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykgYXdhaXQgcGx1Z2luLnBvc3RDaGVjayhhbmFseXNpcylcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7T0FBTyxLQUFLQSxHQUFHO0FBQUEsU0FDTkMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLFFBQVE7QUFFOUIsT0FBTyxNQUFNQyxVQUFVLENBQUM7RUFJdEJDLFdBQVdBLENBQUNDLE9BQVksRUFBRUMsSUFBWSxFQUFFO0lBQUFDLGVBQUE7SUFBQUEsZUFBQTtJQUN0QyxJQUFJLENBQUNGLE9BQU8sR0FBR0EsT0FBTztJQUN0QixJQUFJLENBQUNDLElBQUksR0FBR0EsSUFBSTtFQUNsQjtFQUVBLE1BQU1FLE1BQU1BLENBQUEsRUFBaUIsQ0FBQztFQUU5QixNQUFNQyxHQUFHQSxDQUFDQyxRQUFhLEVBQUVDLFNBQWMsRUFBZ0I7SUFDckQsT0FBTyxJQUFJO0VBQ2I7RUFFQSxNQUFNQyxRQUFRQSxDQUFBLEVBQWlCLENBQUM7RUFFaEMsTUFBTUMsS0FBS0EsQ0FBQ0gsUUFBYSxFQUFFQyxTQUFjLEVBQWdCO0lBQ3ZELE9BQU8sSUFBSTtFQUNiO0VBRUEsTUFBTUcsU0FBU0EsQ0FBQ0MsU0FBYyxFQUFnQixDQUFDO0FBQ2pEO0FBRUEsT0FBTyxNQUFNQyxVQUFVLENBQUM7RUFJdEJaLFdBQVdBLENBQUNDLE9BQVksRUFBRTtJQUFBRSxlQUFBO0lBQUFBLGVBQUE7SUFDeEIsSUFBSSxDQUFDRixPQUFPLEdBQUdBLE9BQU87SUFDdEIsSUFBSSxDQUFDWSxHQUFHLENBQUMsSUFBSSxDQUFDWixPQUFPLENBQUNhLE1BQU0sQ0FBQztFQUMvQjtFQUVBRCxHQUFHQSxDQUFDQyxNQUFXLEVBQU87SUFDcEIsSUFBSSxDQUFDQyxPQUFPLEdBQUcsRUFBRTtJQUNqQixNQUFNQyxPQUFPLEdBQUcsSUFBSSxDQUFDZixPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRztJQUMvQyxNQUFNZ0IsS0FB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