@tricoteuses/assemblee 1.8.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/bugs/acteur-00010/plugin.test.js +2 -2
- package/lib/bugs/acteur-00010.js +3 -3
- package/lib/bugs/agenda-00002/plugin.test.js +3 -3
- package/lib/bugs/agenda-00002.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.js +2 -2
- package/lib/bugs/agenda-00008.js +3 -3
- package/lib/bugs/agenda-00011/plugin.test.js +6 -6
- package/lib/bugs/agenda-00011.js +8 -8
- package/lib/bugs.js +11 -11
- package/lib/cleaners/index.d.ts +1 -0
- package/lib/cleaners/index.js +8 -1
- package/lib/cleaners/index.mjs +2 -1
- package/lib/cleaners/scrutins.js +2 -1
- package/lib/cleaners/scrutins.mjs +3 -2
- package/lib/cleaners/textes_loi.d.ts +1 -0
- package/lib/cleaners/textes_loi.js +12 -0
- package/lib/cleaners/textes_loi.mjs +5 -0
- package/lib/cleaners/xml.d.ts +3 -0
- package/lib/cleaners/xml.js +13 -1
- package/lib/cleaners/xml.mjs +11 -1
- package/lib/datasets.d.ts +9 -2
- package/lib/datasets.js +24 -3
- package/lib/datasets.mjs +24 -3
- package/lib/dates.js +3 -3
- package/lib/examples/PIONANR5L15B0020/input.d.ts +2 -0
- package/lib/examples/PIONANR5L15B0020/input.js +10 -0
- package/lib/examples/PIONANR5L15B0020/input.mjs +193 -0
- package/lib/examples/PRJLANR5L16B0914/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B0914/input.js +10 -0
- package/lib/examples/PRJLANR5L16B0914/input.mjs +322 -0
- package/lib/examples/PRJLANR5L16B2014/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2014/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2014/input.mjs +577 -0
- package/lib/examples/PRJLANR5L16B2424/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2424/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2424/input.mjs +322 -0
- package/lib/examples/PRJLANR5L16B2462/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2462/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2462/input.mjs +1308 -0
- package/lib/loaders.d.ts +5 -0
- package/lib/loaders.js +308 -262
- package/lib/loaders.mjs +16 -3
- package/lib/logger.d.ts +16 -0
- package/lib/logger.js +35 -0
- package/lib/logger.mjs +26 -0
- package/lib/parsers/documents.js +2 -2
- package/lib/parsers/textes_lois.d.ts +16 -1
- package/lib/parsers/textes_lois.js +733 -28
- package/lib/parsers/textes_lois.mjs +587 -22
- package/lib/raw_types/acteurs_et_organes.js +1 -1
- package/lib/raw_types/agendas.js +1 -1
- package/lib/raw_types/amendements.js +1 -1
- package/lib/raw_types/debats.js +1 -1
- package/lib/raw_types/dossiers_legislatifs.js +1 -1
- package/lib/raw_types/questions.js +1 -1
- package/lib/raw_types/scrutins.d.ts +18 -13
- package/lib/raw_types/scrutins.js +28 -14
- package/lib/raw_types/scrutins.mjs +28 -14
- package/lib/raw_types/textes_loi.d.ts +93 -0
- package/lib/raw_types/textes_loi.js +429 -0
- package/lib/raw_types/textes_loi.mjs +378 -0
- package/lib/scripts/bugs_helper.js +9 -9
- package/lib/scripts/document_dossiers_legislatifs.js +1 -1
- package/lib/scripts/process_open_dataset.d.ts +17 -0
- package/lib/scripts/process_open_dataset.js +302 -0
- package/lib/scripts/process_open_dataset.mjs +136 -0
- package/lib/scripts/process_textes_loi_dataset.d.ts +7 -0
- package/lib/scripts/process_textes_loi_dataset.js +374 -0
- package/lib/scripts/process_textes_loi_dataset.mjs +237 -0
- package/lib/scripts/raw_types_from_amendements.js +2 -2
- package/lib/scripts/reorganize_data.js +1 -1
- package/lib/scripts/reorganize_data.mjs +1 -1
- package/lib/scripts/retrieve_deputes_photos.js +3 -3
- package/lib/scripts/retrieve_documents.js +4 -4
- package/lib/scripts/retrieve_open_data.js +41 -279
- package/lib/scripts/retrieve_open_data.mjs +13 -126
- package/lib/scripts/retrieve_pending_amendments.js +2 -2
- package/lib/scripts/retrieve_senateurs_photos.js +2 -2
- package/lib/scripts/retrieve_textes_lois.js +2 -2
- package/lib/scripts/shared/cli_helpers.d.ts +5 -0
- package/lib/scripts/shared/cli_helpers.js +7 -2
- package/lib/scripts/shared/cli_helpers.mjs +6 -1
- package/lib/scripts/test_iter_load.js +25 -10
- package/lib/scripts/test_iter_load.mjs +19 -11
- package/lib/scripts/validate_json.js +3 -3
- package/lib/types/acteurs_et_organes.js +1 -1
- package/lib/types/agendas.js +1 -1
- package/lib/types/amendements.js +1 -1
- package/lib/types/debats.js +1 -1
- package/lib/types/dossiers_legislatifs.js +1 -1
- package/lib/types/questions.js +1 -1
- package/lib/types/scrutins.d.ts +6 -3
- package/lib/types/scrutins.js +13 -7
- package/lib/types/scrutins.mjs +13 -7
- package/lib/types/textes_loi.d.ts +94 -0
- package/lib/types/textes_loi.js +429 -0
- package/lib/types/textes_loi.mjs +378 -0
- package/package.json +13 -12
- package/lib/scripts/retrieve_textes_lois_llm.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois_llm.js +0 -188
- package/lib/scripts/retrieve_textes_lois_llm.mjs +0 -85
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
-
require("core-js/modules/es.symbol.js");
|
|
5
|
-
require("core-js/modules/es.symbol.description.js");
|
|
6
|
-
require("core-js/modules/es.symbol.async-iterator.js");
|
|
7
|
-
require("core-js/modules/es.symbol.iterator.js");
|
|
8
|
-
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
9
|
-
require("core-js/modules/es.array.for-each.js");
|
|
10
|
-
require("core-js/modules/es.array.from.js");
|
|
11
|
-
require("core-js/modules/es.array.is-array.js");
|
|
12
|
-
require("core-js/modules/es.array.iterator.js");
|
|
13
|
-
require("core-js/modules/es.array.reverse.js");
|
|
14
|
-
require("core-js/modules/es.array.slice.js");
|
|
15
|
-
require("core-js/modules/es.date.to-string.js");
|
|
16
|
-
require("core-js/modules/es.function.name.js");
|
|
17
|
-
require("core-js/modules/es.json.to-string-tag.js");
|
|
18
|
-
require("core-js/modules/es.math.to-string-tag.js");
|
|
19
|
-
require("core-js/modules/es.object.create.js");
|
|
20
|
-
require("core-js/modules/es.object.define-property.js");
|
|
21
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
22
|
-
require("core-js/modules/es.object.get-prototype-of.js");
|
|
23
|
-
require("core-js/modules/es.object.set-prototype-of.js");
|
|
24
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
25
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
26
|
-
require("core-js/modules/es.string.iterator.js");
|
|
27
|
-
require("core-js/modules/es.weak-map.js");
|
|
28
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
29
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
30
|
-
require("core-js/modules/es.array.concat.js");
|
|
31
|
-
require("core-js/modules/es.array.includes.js");
|
|
32
|
-
require("core-js/modules/es.array.join.js");
|
|
33
|
-
require("core-js/modules/es.date.to-json.js");
|
|
34
|
-
require("core-js/modules/es.object.to-string.js");
|
|
35
|
-
require("core-js/modules/es.promise.js");
|
|
36
|
-
require("core-js/modules/es.string.includes.js");
|
|
37
|
-
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
38
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
39
|
-
var _path = _interopRequireDefault(require("path"));
|
|
40
|
-
var _util = _interopRequireDefault(require("util"));
|
|
41
|
-
var _stream = _interopRequireDefault(require("stream"));
|
|
42
|
-
var _loaders = require("../loaders");
|
|
43
|
-
var git = _interopRequireWildcard(require("../git"));
|
|
44
|
-
var _textes_lois = require("../parsers/textes_lois");
|
|
45
|
-
var _cli_helpers = require("./shared/cli_helpers");
|
|
46
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
47
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
48
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
49
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
50
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
51
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
52
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
53
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
54
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
55
|
-
var optionsDefinitions = [_cli_helpers.commitOption, _cli_helpers.legislatureOption, _cli_helpers.remoteOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, {
|
|
56
|
-
alias: "f",
|
|
57
|
-
help: "retrieve all documents, even already retrieved ones",
|
|
58
|
-
name: "full",
|
|
59
|
-
type: Boolean
|
|
60
|
-
}];
|
|
61
|
-
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
62
|
-
var pipeline = _util["default"].promisify(_stream["default"].pipeline);
|
|
63
|
-
function retrieveTextesLois() {
|
|
64
|
-
return _retrieveTextesLois.apply(this, arguments);
|
|
65
|
-
}
|
|
66
|
-
function _retrieveTextesLois() {
|
|
67
|
-
_retrieveTextesLois = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
68
|
-
var dataDir, documentsDir, _iterator, _step, _document$classificat, document, documentDir, documentType, allowedTypes, htmlFilePath, htmlTempFilePath, url, response, jsonFilePath, html, texteLoiParsed;
|
|
69
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
70
|
-
while (1) switch (_context.prev = _context.next) {
|
|
71
|
-
case 0:
|
|
72
|
-
dataDir = options.dataDir;
|
|
73
|
-
documentsDir = _path["default"].join(dataDir, "Documents");
|
|
74
|
-
_fsExtra["default"].ensureDirSync(documentsDir);
|
|
75
|
-
_iterator = _createForOfIteratorHelper((0, _loaders.iterLoadAssembleeDocuments)(dataDir, options.legislature, {
|
|
76
|
-
noValidation: true
|
|
77
|
-
}));
|
|
78
|
-
_context.prev = 4;
|
|
79
|
-
_iterator.s();
|
|
80
|
-
case 6:
|
|
81
|
-
if ((_step = _iterator.n()).done) {
|
|
82
|
-
_context.next = 39;
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
document = _step.value.document;
|
|
86
|
-
documentDir = (0, _loaders.pathFromDocumentUid)(documentsDir, document.uid);
|
|
87
|
-
_fsExtra["default"].ensureDirSync(documentDir);
|
|
88
|
-
documentType = (_document$classificat = document.classification) === null || _document$classificat === void 0 || (_document$classificat = _document$classificat.type) === null || _document$classificat === void 0 ? void 0 : _document$classificat.code;
|
|
89
|
-
allowedTypes = ["PION", "PRJL"];
|
|
90
|
-
if (allowedTypes.includes(documentType)) {
|
|
91
|
-
_context.next = 14;
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
return _context.abrupt("continue", 37);
|
|
95
|
-
case 14:
|
|
96
|
-
htmlFilePath = _path["default"].join(documentDir, "dyn-opendata.html");
|
|
97
|
-
htmlTempFilePath = _path["default"].join(documentDir, "dyn-opendata_temp.html");
|
|
98
|
-
url = "https://www.assemblee-nationale.fr/dyn/opendata/".concat(document.uid, ".html");
|
|
99
|
-
if (!options.silent) {
|
|
100
|
-
console.log("Retrieving document ".concat(document.uid, " at ").concat(url, "\u2026"));
|
|
101
|
-
}
|
|
102
|
-
_context.next = 20;
|
|
103
|
-
return fetch(url);
|
|
104
|
-
case 20:
|
|
105
|
-
response = _context.sent;
|
|
106
|
-
if (!response.ok) {
|
|
107
|
-
_context.next = 25;
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
_context.next = 24;
|
|
111
|
-
return pipeline(response.body, _fsExtra["default"].createWriteStream(htmlTempFilePath));
|
|
112
|
-
case 24:
|
|
113
|
-
_fsExtra["default"].renameSync(htmlTempFilePath, htmlFilePath);
|
|
114
|
-
case 25:
|
|
115
|
-
jsonFilePath = _path["default"].join(documentDir, "parsed.json"); // If HTML does not exist, continue
|
|
116
|
-
if (_fsExtra["default"].existsSync(htmlFilePath)) {
|
|
117
|
-
_context.next = 29;
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
if (!options.silent) {
|
|
121
|
-
console.log("Skipping document ".concat(document.uid));
|
|
122
|
-
}
|
|
123
|
-
return _context.abrupt("continue", 37);
|
|
124
|
-
case 29:
|
|
125
|
-
if (!(_fsExtra["default"].existsSync(jsonFilePath) && !options.full)) {
|
|
126
|
-
_context.next = 31;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
return _context.abrupt("continue", 37);
|
|
130
|
-
case 31:
|
|
131
|
-
html = _fsExtra["default"].readFileSync(htmlFilePath, {
|
|
132
|
-
encoding: "utf8"
|
|
133
|
-
});
|
|
134
|
-
if (!options.silent) {
|
|
135
|
-
console.log("Parsing document ".concat(document.uid, "\u2026"));
|
|
136
|
-
}
|
|
137
|
-
_context.next = 35;
|
|
138
|
-
return (0, _textes_lois.parseTexteLoi)(html);
|
|
139
|
-
case 35:
|
|
140
|
-
texteLoiParsed = _context.sent;
|
|
141
|
-
if (texteLoiParsed) {
|
|
142
|
-
texteLoiParsed.documentRef = document.uid;
|
|
143
|
-
_fsExtra["default"].writeFileSync(jsonFilePath, JSON.stringify(texteLoiParsed, null, 2));
|
|
144
|
-
if (!options.silent) {
|
|
145
|
-
console.log("Document ".concat(document.uid, " successfully parsed !"));
|
|
146
|
-
}
|
|
147
|
-
} else {
|
|
148
|
-
if (!options.silent) {
|
|
149
|
-
console.log("Error when parsing document ".concat(document.uid));
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
case 37:
|
|
153
|
-
_context.next = 6;
|
|
154
|
-
break;
|
|
155
|
-
case 39:
|
|
156
|
-
_context.next = 44;
|
|
157
|
-
break;
|
|
158
|
-
case 41:
|
|
159
|
-
_context.prev = 41;
|
|
160
|
-
_context.t0 = _context["catch"](4);
|
|
161
|
-
_iterator.e(_context.t0);
|
|
162
|
-
case 44:
|
|
163
|
-
_context.prev = 44;
|
|
164
|
-
_iterator.f();
|
|
165
|
-
return _context.finish(44);
|
|
166
|
-
case 47:
|
|
167
|
-
if (!options.commit) {
|
|
168
|
-
_context.next = 49;
|
|
169
|
-
break;
|
|
170
|
-
}
|
|
171
|
-
return _context.abrupt("return", git.commitAndPush(documentsDir, "Nouvelle moisson", options.remote));
|
|
172
|
-
case 49:
|
|
173
|
-
return _context.abrupt("return", 0);
|
|
174
|
-
case 50:
|
|
175
|
-
case "end":
|
|
176
|
-
return _context.stop();
|
|
177
|
-
}
|
|
178
|
-
}, _callee, null, [[4, 41, 44, 47]]);
|
|
179
|
-
}));
|
|
180
|
-
return _retrieveTextesLois.apply(this, arguments);
|
|
181
|
-
}
|
|
182
|
-
retrieveTextesLois().then(function (exitCode) {
|
|
183
|
-
return process.exit(exitCode);
|
|
184
|
-
})["catch"](function (error) {
|
|
185
|
-
console.log(error);
|
|
186
|
-
process.exit(1);
|
|
187
|
-
});
|
|
188
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX3V0aWwiLCJfc3RyZWFtIiwiX2xvYWRlcnMiLCJnaXQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl90ZXh0ZXNfbG9pcyIsIl9jbGlfaGVscGVycyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJwcm90b3R5cGUiLCJvIiwidmFsdWUiLCJTeW1ib2wiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiY29tbWl0T3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJyZW1vdGVPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJ2ZXJib3NlT3B0aW9uIiwiZGF0YURpckRlZmF1bHRPcHRpb24iLCJhbGlhcyIsImhlbHAiLCJCb29sZWFuIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsInBpcGVsaW5lIiwidXRpbCIsInByb21pc2lmeSIsInN0cmVhbSIsInJldHJpZXZlVGV4dGVzTG9pcyIsIl9yZXRyaWV2ZVRleHRlc0xvaXMiLCJfY2FsbGVlIiwiZGF0YURpciIsImRvY3VtZW50c0RpciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX2RvY3VtZW50JGNsYXNzaWZpY2F0IiwiZG9jdW1lbnQiLCJkb2N1bWVudERpciIsImRvY3VtZW50VHlwZSIsImFsbG93ZWRUeXBlcyIsImh0bWxGaWxlUGF0aCIsImh0bWxUZW1wRmlsZVBhdGgiLCJ1cmwiLCJyZXNwb25zZSIsImpzb25GaWxlUGF0aCIsImh0bWwiLCJ0ZXh0ZUxvaVBhcnNlZCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwYXRoIiwiam9pbiIsImZzIiwiZW5zdXJlRGlyU3luYyIsIml0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzIiwibGVnaXNsYXR1cmUiLCJub1ZhbGlkYXRpb24iLCJwYXRoRnJvbURvY3VtZW50VWlkIiwidWlkIiwiY2xhc3NpZmljYXRpb24iLCJjb2RlIiwiaW5jbHVkZXMiLCJjb25jYXQiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwiZmV0Y2giLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlbmFtZVN5bmMiLCJleGlzdHNTeW5jIiwiZnVsbCIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwicGFyc2VUZXh0ZUxvaSIsImRvY3VtZW50UmVmIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0MCIsImNvbW1pdCIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJleGl0Q29kZSIsInByb2Nlc3MiLCJleGl0IiwiZXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV90ZXh0ZXNfbG9pc19sbG0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5pbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuaW1wb3J0IHsgaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMsIHBhdGhGcm9tRG9jdW1lbnRVaWQgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyBwYXJzZVRleHRlTG9pIH0gZnJvbSBcIi4uL3BhcnNlcnMvdGV4dGVzX2xvaXNcIlxuaW1wb3J0IHtcbiAgY29tbWl0T3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIGNvbW1pdE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcInJldHJpZXZlIGFsbCBkb2N1bWVudHMsIGV2ZW4gYWxyZWFkeSByZXRyaWV2ZWQgb25lc1wiLFxuICAgIG5hbWU6IFwiZnVsbFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcbmNvbnN0IHBpcGVsaW5lID0gdXRpbC5wcm9taXNpZnkoc3RyZWFtLnBpcGVsaW5lKVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVRleHRlc0xvaXMoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgXCJEb2N1bWVudHNcIilcbiAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudHNEaXIpXG5cbiAgZm9yIChjb25zdCB7IGRvY3VtZW50IH0gb2YgaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMoXG4gICAgZGF0YURpcixcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAgIHsgbm9WYWxpZGF0aW9uOiB0cnVlIH0sXG4gICkpIHtcbiAgICBjb25zdCBkb2N1bWVudERpciA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudERpcilcblxuICAgIGNvbnN0IGRvY3VtZW50VHlwZTogc3RyaW5nID0gZG9jdW1lbnQuY2xhc3NpZmljYXRpb24/LnR5cGU/LmNvZGVcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBbXCJQSU9OXCIsIFwiUFJKTFwiXVxuXG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZG9jdW1lbnRUeXBlKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBodG1sRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihkb2N1bWVudERpciwgXCJkeW4tb3BlbmRhdGEuaHRtbFwiKVxuICAgIGNvbnN0IGh0bWxUZW1wRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgIGRvY3VtZW50RGlyLFxuICAgICAgXCJkeW4tb3BlbmRhdGFfdGVtcC5odG1sXCIsXG4gICAgKVxuICAgIGNvbnN0IHVybCA9IGBodHRwczovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL2R5bi9vcGVuZGF0YS8ke2RvY3VtZW50LnVpZH0uaHRtbGBcblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBSZXRyaWV2aW5nIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfSBhdCAke3VybH3igKZgKVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICBhd2FpdCBwaXBlbGluZShcbiAgICAgICAgcmVzcG9uc2UuYm9keSBhcyB1bmtub3duIGFzIE5vZGVKUy5SZWFkYWJsZVN0cmVhbSxcbiAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oaHRtbFRlbXBGaWxlUGF0aCksXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKGh0bWxUZW1wRmlsZVBhdGgsIGh0bWxGaWxlUGF0aClcbiAgICB9XG5cbiAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihkb2N1bWVudERpciwgXCJwYXJzZWQuanNvblwiKVxuXG4gICAgLy8gSWYgSFRNTCBkb2VzIG5vdCBleGlzdCwgY29udGludWVcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoaHRtbEZpbGVQYXRoKSkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9YClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSAmJiAhb3B0aW9ucy5mdWxsKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGh0bWw6IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhodG1sRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG5cbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhgUGFyc2luZyBkb2N1bWVudCAke2RvY3VtZW50LnVpZH3igKZgKVxuICAgIH1cbiAgICBjb25zdCB0ZXh0ZUxvaVBhcnNlZDogYW55ID0gYXdhaXQgcGFyc2VUZXh0ZUxvaShodG1sKVxuXG4gICAgaWYgKHRleHRlTG9pUGFyc2VkKSB7XG4gICAgICB0ZXh0ZUxvaVBhcnNlZC5kb2N1bWVudFJlZiA9IGRvY3VtZW50LnVpZFxuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGpzb25GaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkodGV4dGVMb2lQYXJzZWQsIG51bGwsIDIpKVxuXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBEb2N1bWVudCAke2RvY3VtZW50LnVpZH0gc3VjY2Vzc2Z1bGx5IHBhcnNlZCAhYClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3Igd2hlbiBwYXJzaW5nIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgcmV0dXJuIGdpdC5jb21taXRBbmRQdXNoKGRvY3VtZW50c0RpciwgXCJOb3V2ZWxsZSBtb2lzc29uXCIsIG9wdGlvbnMucmVtb3RlKVxuICB9XG4gIHJldHVybiAwXG59XG5cbnJldHJpZXZlVGV4dGVzTG9pcygpXG4gIC50aGVuKChleGl0Q29kZSkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sR0FB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
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import commandLineArgs from "command-line-args";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import util from "util";
|
|
5
|
-
import stream from "stream";
|
|
6
|
-
import { iterLoadAssembleeDocuments, pathFromDocumentUid } from "../loaders.mjs";
|
|
7
|
-
import * as git from "../git.mjs";
|
|
8
|
-
import { parseTexteLoi } from "../parsers/textes_lois.mjs";
|
|
9
|
-
import { commitOption, dataDirDefaultOption, legislatureOption, remoteOption, silentOption, verboseOption } from "./shared/cli_helpers.mjs";
|
|
10
|
-
const optionsDefinitions = [commitOption, legislatureOption, remoteOption, silentOption, verboseOption, dataDirDefaultOption, {
|
|
11
|
-
alias: "f",
|
|
12
|
-
help: "retrieve all documents, even already retrieved ones",
|
|
13
|
-
name: "full",
|
|
14
|
-
type: Boolean
|
|
15
|
-
}];
|
|
16
|
-
const options = commandLineArgs(optionsDefinitions);
|
|
17
|
-
const pipeline = util.promisify(stream.pipeline);
|
|
18
|
-
async function retrieveTextesLois() {
|
|
19
|
-
const dataDir = options.dataDir;
|
|
20
|
-
const documentsDir = path.join(dataDir, "Documents");
|
|
21
|
-
fs.ensureDirSync(documentsDir);
|
|
22
|
-
for (const {
|
|
23
|
-
document
|
|
24
|
-
} of iterLoadAssembleeDocuments(dataDir, options.legislature, {
|
|
25
|
-
noValidation: true
|
|
26
|
-
})) {
|
|
27
|
-
const documentDir = pathFromDocumentUid(documentsDir, document.uid);
|
|
28
|
-
fs.ensureDirSync(documentDir);
|
|
29
|
-
const documentType = document.classification?.type?.code;
|
|
30
|
-
const allowedTypes = ["PION", "PRJL"];
|
|
31
|
-
if (!allowedTypes.includes(documentType)) {
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
const htmlFilePath = path.join(documentDir, "dyn-opendata.html");
|
|
35
|
-
const htmlTempFilePath = path.join(documentDir, "dyn-opendata_temp.html");
|
|
36
|
-
const url = `https://www.assemblee-nationale.fr/dyn/opendata/${document.uid}.html`;
|
|
37
|
-
if (!options.silent) {
|
|
38
|
-
console.log(`Retrieving document ${document.uid} at ${url}…`);
|
|
39
|
-
}
|
|
40
|
-
const response = await fetch(url);
|
|
41
|
-
if (response.ok) {
|
|
42
|
-
await pipeline(response.body, fs.createWriteStream(htmlTempFilePath));
|
|
43
|
-
fs.renameSync(htmlTempFilePath, htmlFilePath);
|
|
44
|
-
}
|
|
45
|
-
const jsonFilePath = path.join(documentDir, "parsed.json");
|
|
46
|
-
|
|
47
|
-
// If HTML does not exist, continue
|
|
48
|
-
if (!fs.existsSync(htmlFilePath)) {
|
|
49
|
-
if (!options.silent) {
|
|
50
|
-
console.log(`Skipping document ${document.uid}`);
|
|
51
|
-
}
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
if (fs.existsSync(jsonFilePath) && !options.full) {
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
const html = fs.readFileSync(htmlFilePath, {
|
|
58
|
-
encoding: "utf8"
|
|
59
|
-
});
|
|
60
|
-
if (!options.silent) {
|
|
61
|
-
console.log(`Parsing document ${document.uid}…`);
|
|
62
|
-
}
|
|
63
|
-
const texteLoiParsed = await parseTexteLoi(html);
|
|
64
|
-
if (texteLoiParsed) {
|
|
65
|
-
texteLoiParsed.documentRef = document.uid;
|
|
66
|
-
fs.writeFileSync(jsonFilePath, JSON.stringify(texteLoiParsed, null, 2));
|
|
67
|
-
if (!options.silent) {
|
|
68
|
-
console.log(`Document ${document.uid} successfully parsed !`);
|
|
69
|
-
}
|
|
70
|
-
} else {
|
|
71
|
-
if (!options.silent) {
|
|
72
|
-
console.log(`Error when parsing document ${document.uid}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (options.commit) {
|
|
77
|
-
return git.commitAndPush(documentsDir, "Nouvelle moisson", options.remote);
|
|
78
|
-
}
|
|
79
|
-
return 0;
|
|
80
|
-
}
|
|
81
|
-
retrieveTextesLois().then(exitCode => process.exit(exitCode)).catch(error => {
|
|
82
|
-
console.log(error);
|
|
83
|
-
process.exit(1);
|
|
84
|
-
});
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJ1dGlsIiwic3RyZWFtIiwiaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZ2l0IiwicGFyc2VUZXh0ZUxvaSIsImNvbW1pdE9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJyZW1vdGVPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJ2ZXJib3NlT3B0aW9uIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwib3B0aW9ucyIsInBpcGVsaW5lIiwicHJvbWlzaWZ5IiwicmV0cmlldmVUZXh0ZXNMb2lzIiwiZGF0YURpciIsImRvY3VtZW50c0RpciIsImpvaW4iLCJlbnN1cmVEaXJTeW5jIiwiZG9jdW1lbnQiLCJsZWdpc2xhdHVyZSIsIm5vVmFsaWRhdGlvbiIsImRvY3VtZW50RGlyIiwidWlkIiwiZG9jdW1lbnRUeXBlIiwiY2xhc3NpZmljYXRpb24iLCJjb2RlIiwiYWxsb3dlZFR5cGVzIiwiaW5jbHVkZXMiLCJodG1sRmlsZVBhdGgiLCJodG1sVGVtcEZpbGVQYXRoIiwidXJsIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlbmFtZVN5bmMiLCJqc29uRmlsZVBhdGgiLCJleGlzdHNTeW5jIiwiZnVsbCIsImh0bWwiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInRleHRlTG9pUGFyc2VkIiwiZG9jdW1lbnRSZWYiLCJ3cml0ZUZpbGVTeW5jIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvbW1pdCIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJ0aGVuIiwiZXhpdENvZGUiLCJwcm9jZXNzIiwiZXhpdCIsImNhdGNoIiwiZXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV90ZXh0ZXNfbG9pc19sbG0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5pbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuaW1wb3J0IHsgaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMsIHBhdGhGcm9tRG9jdW1lbnRVaWQgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyBwYXJzZVRleHRlTG9pIH0gZnJvbSBcIi4uL3BhcnNlcnMvdGV4dGVzX2xvaXNcIlxuaW1wb3J0IHtcbiAgY29tbWl0T3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIGNvbW1pdE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcInJldHJpZXZlIGFsbCBkb2N1bWVudHMsIGV2ZW4gYWxyZWFkeSByZXRyaWV2ZWQgb25lc1wiLFxuICAgIG5hbWU6IFwiZnVsbFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcbmNvbnN0IHBpcGVsaW5lID0gdXRpbC5wcm9taXNpZnkoc3RyZWFtLnBpcGVsaW5lKVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVRleHRlc0xvaXMoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgXCJEb2N1bWVudHNcIilcbiAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudHNEaXIpXG5cbiAgZm9yIChjb25zdCB7IGRvY3VtZW50IH0gb2YgaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMoXG4gICAgZGF0YURpcixcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAgIHsgbm9WYWxpZGF0aW9uOiB0cnVlIH0sXG4gICkpIHtcbiAgICBjb25zdCBkb2N1bWVudERpciA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudERpcilcblxuICAgIGNvbnN0IGRvY3VtZW50VHlwZTogc3RyaW5nID0gZG9jdW1lbnQuY2xhc3NpZmljYXRpb24/LnR5cGU/LmNvZGVcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBbXCJQSU9OXCIsIFwiUFJKTFwiXVxuXG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZG9jdW1lbnRUeXBlKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBodG1sRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihkb2N1bWVudERpciwgXCJkeW4tb3BlbmRhdGEuaHRtbFwiKVxuICAgIGNvbnN0IGh0bWxUZW1wRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgIGRvY3VtZW50RGlyLFxuICAgICAgXCJkeW4tb3BlbmRhdGFfdGVtcC5odG1sXCIsXG4gICAgKVxuICAgIGNvbnN0IHVybCA9IGBodHRwczovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL2R5bi9vcGVuZGF0YS8ke2RvY3VtZW50LnVpZH0uaHRtbGBcblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBSZXRyaWV2aW5nIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfSBhdCAke3VybH3igKZgKVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICBhd2FpdCBwaXBlbGluZShcbiAgICAgICAgcmVzcG9uc2UuYm9keSBhcyB1bmtub3duIGFzIE5vZGVKUy5SZWFkYWJsZVN0cmVhbSxcbiAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oaHRtbFRlbXBGaWxlUGF0aCksXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKGh0bWxUZW1wRmlsZVBhdGgsIGh0bWxGaWxlUGF0aClcbiAgICB9XG5cbiAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihkb2N1bWVudERpciwgXCJwYXJzZWQuanNvblwiKVxuXG4gICAgLy8gSWYgSFRNTCBkb2VzIG5vdCBleGlzdCwgY29udGludWVcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoaHRtbEZpbGVQYXRoKSkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9YClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSAmJiAhb3B0aW9ucy5mdWxsKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGh0bWw6IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhodG1sRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG5cbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhgUGFyc2luZyBkb2N1bWVudCAke2RvY3VtZW50LnVpZH3igKZgKVxuICAgIH1cbiAgICBjb25zdCB0ZXh0ZUxvaVBhcnNlZDogYW55ID0gYXdhaXQgcGFyc2VUZXh0ZUxvaShodG1sKVxuXG4gICAgaWYgKHRleHRlTG9pUGFyc2VkKSB7XG4gICAgICB0ZXh0ZUxvaVBhcnNlZC5kb2N1bWVudFJlZiA9IGRvY3VtZW50LnVpZFxuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGpzb25GaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkodGV4dGVMb2lQYXJzZWQsIG51bGwsIDIpKVxuXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBEb2N1bWVudCAke2RvY3VtZW50LnVpZH0gc3VjY2Vzc2Z1bGx5IHBhcnNlZCAhYClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3Igd2hlbiBwYXJzaW5nIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgcmV0dXJuIGdpdC5jb21taXRBbmRQdXNoKGRvY3VtZW50c0RpciwgXCJOb3V2ZWxsZSBtb2lzc29uXCIsIG9wdGlvbnMucmVtb3RlKVxuICB9XG4gIHJldHVybiAwXG59XG5cbnJldHJpZXZlVGV4dGVzTG9pcygpXG4gIC50aGVuKChleGl0Q29kZSkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxlQUFlLE1BQU0sbUJBQW1CO0FBQy9DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFN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
|