@tricoteuses/senat 1.1.2 → 1.3.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/README.md +53 -15
- package/lib/aggregates.d.ts +4 -6
- package/lib/aggregates.mjs +908 -780
- package/lib/aggregates.ts +8 -122
- package/lib/data/legislatures.json +38 -0
- package/lib/databases.d.ts +9 -0
- package/lib/databases.js +41 -11
- package/lib/databases.mjs +32 -1
- package/lib/databases.ts +40 -1
- package/lib/fields.mjs +64 -18
- package/lib/index.d.ts +5 -7
- package/lib/index.js +8 -112
- package/lib/index.mjs +4 -7
- package/lib/index.ts +9 -30
- package/lib/inserters.d.ts +0 -4
- package/lib/inserters.mjs +461 -337
- package/lib/inserters.ts +0 -24
- package/lib/legislatures.json +38 -0
- package/lib/loaders.d.ts +64 -0
- package/lib/loaders.js +682 -0
- package/lib/loaders.mjs +158 -0
- package/lib/loaders.ts +271 -0
- package/lib/model/ameli.d.ts +105 -4
- package/lib/model/ameli.js +20 -160
- package/lib/model/ameli.mjs +84 -57
- package/lib/model/ameli.ts +94 -80
- package/lib/model/debats.d.ts +0 -4
- package/lib/model/debats.js +1 -122
- package/lib/model/debats.mjs +1 -43
- package/lib/model/debats.ts +0 -68
- package/lib/model/dosleg.d.ts +227 -29
- package/lib/model/dosleg.js +92 -832
- package/lib/model/dosleg.mjs +196 -337
- package/lib/model/dosleg.ts +213 -531
- package/lib/model/index.d.ts +4 -5
- package/lib/model/index.js +14 -15
- package/lib/model/index.mjs +4 -5
- package/lib/model/index.ts +8 -5
- package/lib/model/questions.d.ts +88 -2
- package/lib/model/questions.js +40 -45
- package/lib/model/questions.mjs +71 -8
- package/lib/model/questions.ts +90 -11
- package/lib/model/sens.d.ts +524 -2
- package/lib/model/sens.js +172 -49
- package/lib/model/sens.mjs +415 -9
- package/lib/model/sens.ts +514 -16
- package/lib/model/texte.d.ts +7 -0
- package/lib/model/texte.js +321 -0
- package/lib/model/texte.mjs +208 -0
- package/lib/model/texte.ts +229 -0
- package/lib/model/util.d.ts +7 -1
- package/lib/model/util.js +37 -53
- package/lib/model/util.mjs +19 -10
- package/lib/model/util.ts +30 -14
- package/lib/raw_types/ameli.d.ts +912 -538
- package/lib/raw_types/ameli.js +1 -39
- package/lib/raw_types/ameli.mjs +4 -1
- package/lib/raw_types/ameli.ts +947 -597
- package/lib/raw_types/debats.d.ts +204 -124
- package/lib/raw_types/debats.js +1 -18
- package/lib/raw_types/debats.mjs +4 -1
- package/lib/raw_types/debats.ts +218 -141
- package/lib/raw_types/dosleg.d.ts +3533 -2024
- package/lib/raw_types/dosleg.js +1 -92
- package/lib/raw_types/dosleg.mjs +4 -1
- package/lib/raw_types/dosleg.ts +3621 -2189
- package/lib/raw_types/questions.d.ts +404 -220
- package/lib/raw_types/questions.js +1 -18
- package/lib/raw_types/questions.mjs +4 -1
- package/lib/raw_types/questions.ts +404 -226
- package/lib/raw_types/sens.d.ts +4391 -2706
- package/lib/raw_types/sens.js +1 -108
- package/lib/raw_types/sens.mjs +4 -1
- package/lib/raw_types/sens.ts +4495 -2903
- package/lib/raw_types_kysely/ameli.d.ts +6 -0
- package/lib/raw_types_kysely/ameli.mjs +7 -0
- package/lib/raw_types_kysely/ameli.ts +6 -0
- package/lib/raw_types_kysely/debats.d.ts +6 -0
- package/lib/raw_types_kysely/debats.mjs +7 -0
- package/lib/raw_types_kysely/debats.ts +6 -0
- package/lib/raw_types_kysely/dosleg.d.ts +6 -0
- package/lib/raw_types_kysely/dosleg.mjs +7 -0
- package/lib/raw_types_kysely/dosleg.ts +6 -0
- package/lib/raw_types_kysely/questions.d.ts +6 -0
- package/lib/raw_types_kysely/questions.mjs +7 -0
- package/lib/raw_types_kysely/questions.ts +6 -0
- package/lib/raw_types_kysely/sens.d.ts +6 -0
- package/lib/raw_types_kysely/sens.mjs +7 -0
- package/lib/raw_types_kysely/sens.ts +6 -0
- package/lib/raw_types_kysely/texte.d.ts +45 -0
- package/lib/raw_types_kysely/texte.mjs +7 -0
- package/lib/raw_types_kysely/texte.ts +53 -0
- package/lib/raw_types_schemats/ameli.d.ts +541 -0
- package/lib/raw_types_schemats/ameli.js +45 -0
- package/lib/raw_types_schemats/ameli.mjs +2 -0
- package/lib/raw_types_schemats/ameli.ts +601 -0
- package/lib/raw_types_schemats/debats.d.ts +127 -0
- package/lib/raw_types_schemats/debats.js +24 -0
- package/lib/raw_types_schemats/debats.mjs +2 -0
- package/lib/raw_types_schemats/debats.ts +145 -0
- package/lib/raw_types_schemats/dosleg.d.ts +2029 -0
- package/lib/raw_types_schemats/dosleg.js +98 -0
- package/lib/raw_types_schemats/dosleg.mjs +2 -0
- package/lib/raw_types_schemats/dosleg.ts +2195 -0
- package/lib/raw_types_schemats/questions.d.ts +233 -0
- package/lib/raw_types_schemats/questions.js +24 -0
- package/lib/raw_types_schemats/questions.mjs +2 -0
- package/lib/raw_types_schemats/questions.ts +251 -0
- package/lib/raw_types_schemats/sens.d.ts +2709 -0
- package/lib/raw_types_schemats/sens.js +114 -0
- package/lib/raw_types_schemats/sens.mjs +2 -0
- package/lib/raw_types_schemats/sens.ts +2907 -0
- package/lib/scripts/convert_data.js +574 -215
- package/lib/scripts/convert_data.mjs +134 -99
- package/lib/scripts/convert_data.ts +173 -112
- package/lib/scripts/datautil.d.ts +5 -0
- package/lib/scripts/datautil.js +64 -0
- package/lib/scripts/datautil.mjs +16 -0
- package/lib/scripts/datautil.ts +19 -0
- package/lib/scripts/parse_textes.js +132 -0
- package/lib/scripts/parse_textes.mjs +46 -0
- package/lib/scripts/parse_textes.ts +65 -0
- package/lib/scripts/retrieve_documents.d.ts +1 -0
- package/lib/scripts/retrieve_documents.js +521 -0
- package/lib/scripts/retrieve_documents.mjs +249 -0
- package/lib/scripts/retrieve_documents.ts +298 -0
- package/lib/scripts/retrieve_open_data.js +77 -69
- package/lib/scripts/retrieve_open_data.mjs +48 -49
- package/lib/scripts/retrieve_open_data.ts +74 -58
- package/lib/scripts/retrieve_senateurs_photos.js +45 -63
- package/lib/scripts/retrieve_senateurs_photos.mjs +4 -21
- package/lib/scripts/retrieve_senateurs_photos.ts +6 -29
- package/lib/scripts/retrieve_textes.mjs +325 -74
- package/lib/scripts/retrieve_textes.ts +111 -63
- package/lib/scripts/shared/cli_helpers.d.ts +44 -0
- package/lib/scripts/shared/cli_helpers.js +35 -0
- package/lib/scripts/shared/cli_helpers.ts +36 -0
- package/lib/scripts/shared/util.d.ts +3 -0
- package/lib/scripts/shared/util.js +102 -0
- package/lib/scripts/shared/util.ts +33 -0
- package/lib/src/aggregates.d.ts +52 -0
- package/lib/src/aggregates.mjs +726 -0
- package/lib/src/config.d.ts +2 -0
- package/lib/src/config.mjs +16 -0
- package/lib/src/databases.d.ts +18 -0
- package/lib/src/databases.mjs +55 -0
- package/lib/src/datasets.d.ts +28 -0
- package/lib/src/datasets.mjs +78 -0
- package/lib/src/fields.d.ts +10 -0
- package/lib/src/fields.mjs +22 -0
- package/lib/src/index.d.ts +8 -0
- package/lib/src/index.mjs +7 -0
- package/lib/src/inserters.d.ts +98 -0
- package/lib/src/inserters.mjs +360 -0
- package/lib/src/loaders.d.ts +36 -0
- package/lib/src/loaders.mjs +107 -0
- package/lib/src/model/ameli.d.ts +4 -0
- package/lib/src/model/ameli.js +57 -0
- package/lib/src/model/debats.d.ts +4 -0
- package/lib/src/model/debats.js +43 -0
- package/lib/src/model/dosleg.d.ts +197 -0
- package/lib/src/model/dosleg.js +169 -0
- package/lib/src/model/index.d.ts +4 -0
- package/lib/src/model/index.js +4 -0
- package/lib/src/model/questions.d.ts +89 -0
- package/lib/src/model/questions.js +76 -0
- package/lib/src/model/sens.d.ts +390 -0
- package/lib/src/model/sens.js +339 -0
- package/lib/src/model/texte.d.ts +7 -0
- package/lib/src/model/texte.js +183 -0
- package/lib/src/raw_types_kysely/ameli.d.ts +915 -0
- package/lib/src/raw_types_kysely/ameli.js +5 -0
- package/lib/src/raw_types_kysely/debats.d.ts +207 -0
- package/lib/src/raw_types_kysely/debats.js +5 -0
- package/lib/src/raw_types_kysely/dosleg.d.ts +3532 -0
- package/lib/src/raw_types_kysely/dosleg.js +5 -0
- package/lib/src/raw_types_kysely/questions.d.ts +414 -0
- package/lib/src/raw_types_kysely/questions.js +5 -0
- package/lib/src/raw_types_kysely/sens.d.ts +4394 -0
- package/lib/src/raw_types_kysely/sens.js +5 -0
- package/lib/src/raw_types_schemats/ameli.d.ts +541 -0
- package/lib/src/raw_types_schemats/ameli.js +2 -0
- package/lib/src/raw_types_schemats/debats.d.ts +127 -0
- package/lib/src/raw_types_schemats/debats.js +2 -0
- package/lib/src/raw_types_schemats/dosleg.d.ts +2027 -0
- package/lib/src/raw_types_schemats/dosleg.js +2 -0
- package/lib/src/raw_types_schemats/questions.d.ts +231 -0
- package/lib/src/raw_types_schemats/questions.js +2 -0
- package/lib/src/raw_types_schemats/sens.d.ts +2709 -0
- package/lib/src/raw_types_schemats/sens.js +2 -0
- package/lib/src/scripts/convert_data.d.ts +1 -0
- package/lib/src/scripts/convert_data.js +95 -0
- package/lib/src/scripts/datautil.d.ts +5 -0
- package/lib/src/scripts/datautil.js +16 -0
- package/lib/src/scripts/parse_textes.d.ts +1 -0
- package/lib/src/scripts/parse_textes.js +47 -0
- package/lib/src/scripts/retrieve_documents.d.ts +1 -0
- package/lib/src/scripts/retrieve_documents.js +258 -0
- package/lib/src/scripts/retrieve_open_data.d.ts +1 -0
- package/lib/src/scripts/retrieve_open_data.js +214 -0
- package/lib/src/scripts/retrieve_senateurs_photos.d.ts +1 -0
- package/lib/src/scripts/retrieve_senateurs_photos.js +147 -0
- package/lib/src/scripts/shared/cli_helpers.d.ts +44 -0
- package/lib/src/scripts/shared/cli_helpers.js +32 -0
- package/lib/src/scripts/shared/util.d.ts +3 -0
- package/lib/src/scripts/shared/util.js +28 -0
- package/lib/src/strings.d.ts +1 -0
- package/lib/src/strings.mjs +18 -0
- package/lib/src/types/ameli.d.ts +10 -0
- package/lib/src/types/ameli.js +13 -0
- package/lib/src/types/debats.d.ts +4 -0
- package/lib/src/types/debats.js +2 -0
- package/lib/src/types/dosleg.d.ts +98 -0
- package/lib/src/types/dosleg.js +151 -0
- package/lib/src/types/questions.d.ts +2 -0
- package/lib/src/types/questions.js +1 -0
- package/lib/src/types/sens.d.ts +10 -0
- package/lib/src/types/sens.js +1 -0
- package/lib/src/types/sessions.d.ts +42 -0
- package/lib/src/types/sessions.js +43 -0
- package/lib/src/types/texte.d.ts +61 -0
- package/lib/src/types/texte.js +16 -0
- package/lib/src/validators/config.d.ts +1 -0
- package/lib/src/validators/config.js +54 -0
- package/lib/src/validators/senat.d.ts +0 -0
- package/lib/src/validators/senat.js +24 -0
- package/lib/types/ameli.d.ts +1 -1
- package/lib/types/ameli.js +2 -2
- package/lib/types/ameli.ts +1 -1
- package/lib/types/debats.d.ts +1 -1
- package/lib/types/debats.js +2 -2
- package/lib/types/debats.ts +1 -1
- package/lib/types/dosleg.d.ts +2 -2
- package/lib/types/dosleg.js +2 -2
- package/lib/types/dosleg.ts +2 -2
- package/lib/types/questions.d.ts +1 -1
- package/lib/types/questions.js +2 -2
- package/lib/types/questions.ts +1 -1
- package/lib/types/sens.d.ts +1 -3
- package/lib/types/sens.js +2 -5
- package/lib/types/sens.mjs +1 -23
- package/lib/types/sens.ts +1 -25
- package/lib/types/sessions.d.ts +42 -0
- package/lib/types/sessions.js +51 -0
- package/lib/types/sessions.mjs +43 -0
- package/lib/types/sessions.ts +42 -0
- package/lib/types/texte.d.ts +65 -0
- package/lib/types/texte.js +24 -0
- package/lib/types/texte.mjs +16 -0
- package/lib/types/texte.ts +76 -0
- package/package.json +35 -10
- package/lib/aggregates.js +0 -1122
- package/lib/fields.js +0 -68
- package/lib/inserters.js +0 -518
- package/lib/scripts/fix_db.js +0 -144
- package/lib/scripts/fix_db.mjs +0 -64
- package/lib/scripts/fix_db.ts +0 -75
- package/lib/scripts/retrieve_textes.js +0 -179
- /package/lib/scripts/{fix_db.d.ts → parse_textes.d.ts} +0 -0
|
@@ -0,0 +1,521 @@
|
|
|
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.iterator.js");
|
|
7
|
+
require("core-js/modules/es.array.for-each.js");
|
|
8
|
+
require("core-js/modules/es.array.from.js");
|
|
9
|
+
require("core-js/modules/es.array.is-array.js");
|
|
10
|
+
require("core-js/modules/es.array.iterator.js");
|
|
11
|
+
require("core-js/modules/es.array.slice.js");
|
|
12
|
+
require("core-js/modules/es.object.create.js");
|
|
13
|
+
require("core-js/modules/es.object.define-property.js");
|
|
14
|
+
require("core-js/modules/es.object.get-prototype-of.js");
|
|
15
|
+
require("core-js/modules/es.object.set-prototype-of.js");
|
|
16
|
+
require("core-js/modules/es.promise.js");
|
|
17
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
18
|
+
require("core-js/modules/es.string.iterator.js");
|
|
19
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
20
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
21
|
+
require("core-js/modules/es.array.concat.js");
|
|
22
|
+
require("core-js/modules/es.array.join.js");
|
|
23
|
+
require("core-js/modules/es.date.to-string.js");
|
|
24
|
+
require("core-js/modules/es.function.name.js");
|
|
25
|
+
require("core-js/modules/es.object.to-string.js");
|
|
26
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
27
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
28
|
+
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
29
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
30
|
+
var _path = _interopRequireDefault(require("path"));
|
|
31
|
+
var _loaders = require("../loaders");
|
|
32
|
+
var _texte = require("../model/texte");
|
|
33
|
+
var _datautil = require("./datautil");
|
|
34
|
+
var _cli_helpers = require("./shared/cli_helpers");
|
|
35
|
+
var _util = require("./shared/util");
|
|
36
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
37
|
+
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; } } }; }
|
|
38
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return r; }; var t, r = {}, e = Object.prototype, n = e.hasOwnProperty, o = "function" == typeof Symbol ? Symbol : {}, i = o.iterator || "@@iterator", a = o.asyncIterator || "@@asyncIterator", u = o.toStringTag || "@@toStringTag"; function c(t, r, e, n) { Object.defineProperty(t, r, { value: e, enumerable: !n, configurable: !n, writable: !n }); } try { c({}, ""); } catch (t) { c = function c(t, r, e) { return t[r] = e; }; } function h(r, e, n, o) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype); return c(a, "_invoke", function (r, e, n) { var o = 1; return function (i, a) { if (3 === o) throw Error("Generator is already running"); if (4 === o) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var u = n.delegate; if (u) { var c = d(u, n); if (c) { if (c === f) continue; return c; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (1 === o) throw o = 4, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = 3; var h = s(r, e, n); if ("normal" === h.type) { if (o = n.done ? 4 : 2, h.arg === f) continue; return { value: h.arg, done: n.done }; } "throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg); } }; }(r, n, new Context(o || [])), !0), a; } function s(t, r, e) { try { return { type: "normal", arg: t.call(r, e) }; } catch (t) { return { type: "throw", arg: t }; } } r.wrap = h; var f = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var l = {}; c(l, i, function () { return this; }); var p = Object.getPrototypeOf, y = p && p(p(x([]))); y && y !== e && n.call(y, i) && (l = y); var v = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(l); function g(t) { ["next", "throw", "return"].forEach(function (r) { c(t, r, function (t) { return this._invoke(r, t); }); }); } function AsyncIterator(t, r) { function e(o, i, a, u) { var c = s(t[o], t, i); if ("throw" !== c.type) { var h = c.arg, f = h.value; return f && "object" == _typeof(f) && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) { e("next", t, a, u); }, function (t) { e("throw", t, a, u); }) : r.resolve(f).then(function (t) { h.value = t, a(h); }, function (t) { return e("throw", t, a, u); }); } u(c.arg); } var o; c(this, "_invoke", function (t, n) { function i() { return new r(function (r, o) { e(t, n, r, o); }); } return o = o ? o.then(i, i) : i(); }, !0); } function d(r, e) { var n = e.method, o = r.i[n]; if (o === t) return e.delegate = null, "throw" === n && r.i["return"] && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f; var i = s(o, r.i, e.arg); if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f; var a = i.arg; return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f); } function w(t) { this.tryEntries.push(t); } function m(r) { var e = r[4] || {}; e.type = "normal", e.arg = t, r[4] = e; } function Context(t) { this.tryEntries = [[-1]], t.forEach(w, this), this.reset(!0); } function x(r) { if (null != r) { var e = r[i]; if (e) return e.call(r); if ("function" == typeof r.next) return r; if (!isNaN(r.length)) { var o = -1, a = function e() { for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = !1, e; return e.value = t, e.done = !0, e; }; return a.next = a; } } throw new TypeError(_typeof(r) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), c(GeneratorFunctionPrototype, u, GeneratorFunction.displayName = "GeneratorFunction"), r.isGeneratorFunction = function (t) { var r = "function" == typeof t && t.constructor; return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name)); }, r.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = Object.create(v), t; }, r.awrap = function (t) { return { __await: t }; }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () { return this; }), r.AsyncIterator = AsyncIterator, r.async = function (t, e, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(h(t, e, n, o), i); return r.isGeneratorFunction(e) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, g(v), c(v, u, "Generator"), c(v, i, function () { return this; }), c(v, "toString", function () { return "[object Generator]"; }), r.keys = function (t) { var r = Object(t), e = []; for (var n in r) e.unshift(n); return function t() { for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = !1, t; return t.done = !0, t; }; }, r.values = x, Context.prototype = { constructor: Context, reset: function reset(r) { if (this.prev = this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(m), !r) for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0][4]; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(r) { if (this.done) throw r; var e = this; function n(t) { a.type = "throw", a.arg = r, e.next = t; } for (var o = e.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i[4], u = this.prev, c = i[1], h = i[2]; if (-1 === i[0]) return n("end"), !1; if (!c && !h) throw Error("try statement without catch or finally"); if (null != i[0] && i[0] <= u) { if (u < c) return this.method = "next", this.arg = t, n(c), !0; if (u < h) return n(h), !1; } } }, abrupt: function abrupt(t, r) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) { var o = n; break; } } o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null); var i = o ? o[4] : {}; return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i); }, complete: function complete(t, r) { 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 && r && (this.next = r), f; }, finish: function finish(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[2] === t) return this.complete(e[4], e[3]), m(e), f; } }, "catch": function _catch(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[0] === t) { var n = e[4]; if ("throw" === n.type) { var o = n.arg; m(e); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(r, e, n) { return this.delegate = { i: x(r), r: e, n: n }, "next" === this.method && (this.arg = t), f; } }, r; }
|
|
39
|
+
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); }
|
|
40
|
+
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); }); }; }
|
|
41
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
42
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
43
|
+
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; } }
|
|
44
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
45
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
46
|
+
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; }
|
|
47
|
+
var optionsDefinitions = [].concat(_toConsumableArray(_cli_helpers.commonOptions), [{
|
|
48
|
+
help: "sessions of textes to retrieve; leave empty for all",
|
|
49
|
+
multiple: true,
|
|
50
|
+
name: "sessions",
|
|
51
|
+
type: String
|
|
52
|
+
}, {
|
|
53
|
+
help: "parse and convert documents into JSON (textes only for now, requires format xml)",
|
|
54
|
+
name: "parseDocuments",
|
|
55
|
+
type: Boolean
|
|
56
|
+
}, {
|
|
57
|
+
alias: "F",
|
|
58
|
+
help: "formats of documents to retrieve (xml/html/pdf for textes, html/pdf for rapports); leave empty for all",
|
|
59
|
+
multiple: true,
|
|
60
|
+
name: "formats",
|
|
61
|
+
type: String
|
|
62
|
+
}, {
|
|
63
|
+
help: "types of documents to retrieve (textes/rapports); leave empty for all",
|
|
64
|
+
multiple: true,
|
|
65
|
+
name: "types",
|
|
66
|
+
type: String
|
|
67
|
+
}, {
|
|
68
|
+
help: "force retrieve all documents, even already retrieved ones",
|
|
69
|
+
name: "force",
|
|
70
|
+
type: Boolean
|
|
71
|
+
}]);
|
|
72
|
+
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
73
|
+
var textDecoder = new TextDecoder("utf8");
|
|
74
|
+
function retrieveDocument(_x) {
|
|
75
|
+
return _retrieveDocument.apply(this, arguments);
|
|
76
|
+
}
|
|
77
|
+
function _retrieveDocument() {
|
|
78
|
+
_retrieveDocument = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(documentUrl) {
|
|
79
|
+
var response;
|
|
80
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
81
|
+
while (1) switch (_context.prev = _context.next) {
|
|
82
|
+
case 0:
|
|
83
|
+
if (!options.silent) {
|
|
84
|
+
console.log("Retrieving document ".concat(documentUrl, "\u2026"));
|
|
85
|
+
}
|
|
86
|
+
_context.prev = 1;
|
|
87
|
+
_context.next = 4;
|
|
88
|
+
return (0, _util.fetchWithRetry)(documentUrl);
|
|
89
|
+
case 4:
|
|
90
|
+
response = _context.sent;
|
|
91
|
+
if (response.ok) {
|
|
92
|
+
_context.next = 8;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
if (response.status === 404) {
|
|
96
|
+
console.warn("Texte ".concat(documentUrl, " not found"));
|
|
97
|
+
} else {
|
|
98
|
+
console.error("An error occurred while retrieving texte ".concat(documentUrl, ": ").concat(response.status));
|
|
99
|
+
}
|
|
100
|
+
return _context.abrupt("return", null);
|
|
101
|
+
case 8:
|
|
102
|
+
return _context.abrupt("return", response.arrayBuffer());
|
|
103
|
+
case 11:
|
|
104
|
+
_context.prev = 11;
|
|
105
|
+
_context.t0 = _context["catch"](1);
|
|
106
|
+
console.error(_context.t0.message);
|
|
107
|
+
return _context.abrupt("return", null);
|
|
108
|
+
case 15:
|
|
109
|
+
case "end":
|
|
110
|
+
return _context.stop();
|
|
111
|
+
}
|
|
112
|
+
}, _callee, null, [[1, 11]]);
|
|
113
|
+
}));
|
|
114
|
+
return _retrieveDocument.apply(this, arguments);
|
|
115
|
+
}
|
|
116
|
+
function retrieveTextes(_x2) {
|
|
117
|
+
return _retrieveTextes.apply(this, arguments);
|
|
118
|
+
}
|
|
119
|
+
function _retrieveTextes() {
|
|
120
|
+
_retrieveTextes = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(dataDir) {
|
|
121
|
+
var textesDir, originalTextesDir, transformedTextesDir, retrievedTextesCount, texteUrlsNotFoundOrError, texteUrlsParseError, _iterator, _step, session, _iterator2, _step2, _texteMetadata$sessio, texteMetadata, texteDir, exposeDesMotifsContent, exposeDesMotifsPath, textePath, texteBuffer, _texteMetadata$sessio2, parsedTexte, texteXml, exposeDesMotifsHtml, transformedTexteDir, _textePath, _texteBuffer, _textePath2, _texteBuffer2;
|
|
122
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
123
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
124
|
+
case 0:
|
|
125
|
+
textesDir = _path["default"].join(dataDir, _loaders.TEXTE_FOLDER);
|
|
126
|
+
_fsExtra["default"].ensureDirSync(textesDir);
|
|
127
|
+
originalTextesDir = _path["default"].join(textesDir, _loaders.TEXTE_ORIGINAL_FOLDER);
|
|
128
|
+
transformedTextesDir = _path["default"].join(textesDir, _loaders.TEXTE_TRANSFORMED_FOLDER);
|
|
129
|
+
if (options.parseDocuments) {
|
|
130
|
+
(0, _util.ensureAndClearDir)(transformedTextesDir);
|
|
131
|
+
}
|
|
132
|
+
retrievedTextesCount = 0;
|
|
133
|
+
texteUrlsNotFoundOrError = [];
|
|
134
|
+
texteUrlsParseError = [];
|
|
135
|
+
_iterator = _createForOfIteratorHelper(options.sessions);
|
|
136
|
+
_context2.prev = 9;
|
|
137
|
+
_iterator.s();
|
|
138
|
+
case 11:
|
|
139
|
+
if ((_step = _iterator.n()).done) {
|
|
140
|
+
_context2.next = 103;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
session = _step.value;
|
|
144
|
+
_iterator2 = _createForOfIteratorHelper((0, _loaders.iterLoadSenatDossiersLegislatifsTexteUrls)(dataDir, session));
|
|
145
|
+
_context2.prev = 14;
|
|
146
|
+
_iterator2.s();
|
|
147
|
+
case 16:
|
|
148
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
149
|
+
_context2.next = 93;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
texteMetadata = _step2.value.item;
|
|
153
|
+
texteDir = _path["default"].join(originalTextesDir, "".concat((_texteMetadata$sessio = texteMetadata.session) !== null && _texteMetadata$sessio !== void 0 ? _texteMetadata$sessio : _datautil.UNDEFINED_SESSION), texteMetadata.name);
|
|
154
|
+
_fsExtra["default"].ensureDirSync(texteDir);
|
|
155
|
+
exposeDesMotifsContent = null;
|
|
156
|
+
if (!texteMetadata.url_expose_des_motifs) {
|
|
157
|
+
_context2.next = 30;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
if (!options.silent) {
|
|
161
|
+
console.log("Retrieving exposé des motifs…");
|
|
162
|
+
}
|
|
163
|
+
exposeDesMotifsPath = _path["default"].join(texteDir, "".concat(texteMetadata.name, "-expose.html"));
|
|
164
|
+
_context2.next = 26;
|
|
165
|
+
return retrieveDocument(texteMetadata.url_expose_des_motifs.toString());
|
|
166
|
+
case 26:
|
|
167
|
+
exposeDesMotifsContent = _context2.sent;
|
|
168
|
+
if (exposeDesMotifsContent) {
|
|
169
|
+
_context2.next = 29;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
return _context2.abrupt("continue", 91);
|
|
173
|
+
case 29:
|
|
174
|
+
_fsExtra["default"].writeFileSync(exposeDesMotifsPath, Buffer.from(exposeDesMotifsContent));
|
|
175
|
+
case 30:
|
|
176
|
+
if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "xml")) {
|
|
177
|
+
_context2.next = 63;
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
textePath = _path["default"].join(texteDir, "".concat(texteMetadata.name, ".xml"));
|
|
181
|
+
texteBuffer = null;
|
|
182
|
+
if (!(!options.force && _fsExtra["default"].existsSync(textePath))) {
|
|
183
|
+
_context2.next = 37;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
if (!options.silent) {
|
|
187
|
+
console.info("Already retrieved texte ".concat(textePath, "\u2026"));
|
|
188
|
+
}
|
|
189
|
+
_context2.next = 45;
|
|
190
|
+
break;
|
|
191
|
+
case 37:
|
|
192
|
+
_context2.next = 39;
|
|
193
|
+
return retrieveDocument(texteMetadata.url_xml.toString());
|
|
194
|
+
case 39:
|
|
195
|
+
texteBuffer = _context2.sent;
|
|
196
|
+
if (texteBuffer) {
|
|
197
|
+
_context2.next = 43;
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
texteUrlsNotFoundOrError.push(texteMetadata.url_xml);
|
|
201
|
+
return _context2.abrupt("continue", 91);
|
|
202
|
+
case 43:
|
|
203
|
+
_fsExtra["default"].writeFileSync(textePath, Buffer.from(texteBuffer));
|
|
204
|
+
retrievedTextesCount++;
|
|
205
|
+
case 45:
|
|
206
|
+
if (!options.parseDocuments) {
|
|
207
|
+
_context2.next = 63;
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
if (!options.silent) {
|
|
211
|
+
console.log("Parsing texte ".concat(texteMetadata.name, ".xml\u2026"));
|
|
212
|
+
}
|
|
213
|
+
parsedTexte = null;
|
|
214
|
+
if (!texteBuffer) {
|
|
215
|
+
_context2.next = 53;
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
texteXml = textDecoder.decode(texteBuffer);
|
|
219
|
+
parsedTexte = (0, _texte.parseTexte)(texteXml);
|
|
220
|
+
_context2.next = 56;
|
|
221
|
+
break;
|
|
222
|
+
case 53:
|
|
223
|
+
_context2.next = 55;
|
|
224
|
+
return (0, _texte.parseTexteFromFile)(textePath);
|
|
225
|
+
case 55:
|
|
226
|
+
parsedTexte = _context2.sent;
|
|
227
|
+
case 56:
|
|
228
|
+
if (parsedTexte) {
|
|
229
|
+
_context2.next = 59;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
texteUrlsParseError.push(texteMetadata.url_xml);
|
|
233
|
+
return _context2.abrupt("continue", 91);
|
|
234
|
+
case 59:
|
|
235
|
+
if (exposeDesMotifsContent) {
|
|
236
|
+
if (!options.silent) {
|
|
237
|
+
console.log("Parsing exposé des motifs…");
|
|
238
|
+
}
|
|
239
|
+
exposeDesMotifsHtml = textDecoder.decode(exposeDesMotifsContent);
|
|
240
|
+
parsedTexte.exposeDesMotifs = (0, _texte.parseExposeDesMotifs)(exposeDesMotifsHtml);
|
|
241
|
+
}
|
|
242
|
+
transformedTexteDir = _path["default"].join(transformedTextesDir, "".concat((_texteMetadata$sessio2 = texteMetadata.session) !== null && _texteMetadata$sessio2 !== void 0 ? _texteMetadata$sessio2 : _datautil.UNDEFINED_SESSION), texteMetadata.name);
|
|
243
|
+
_fsExtra["default"].ensureDirSync(transformedTexteDir);
|
|
244
|
+
_fsExtra["default"].writeJSONSync(_path["default"].join(transformedTexteDir, "".concat(texteMetadata.name, ".json")), parsedTexte, {
|
|
245
|
+
spaces: 2
|
|
246
|
+
});
|
|
247
|
+
case 63:
|
|
248
|
+
if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "html")) {
|
|
249
|
+
_context2.next = 77;
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
_textePath = _path["default"].join(texteDir, "".concat(texteMetadata.name, ".html"));
|
|
253
|
+
if (!(!options.force && _fsExtra["default"].existsSync(_textePath))) {
|
|
254
|
+
_context2.next = 69;
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
if (!options.silent) {
|
|
258
|
+
console.info("Already retrieved texte ".concat(_textePath, "\u2026"));
|
|
259
|
+
}
|
|
260
|
+
_context2.next = 77;
|
|
261
|
+
break;
|
|
262
|
+
case 69:
|
|
263
|
+
_context2.next = 71;
|
|
264
|
+
return retrieveDocument(texteMetadata.url_html.toString());
|
|
265
|
+
case 71:
|
|
266
|
+
_texteBuffer = _context2.sent;
|
|
267
|
+
if (_texteBuffer) {
|
|
268
|
+
_context2.next = 75;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
texteUrlsNotFoundOrError.push(texteMetadata.url_html);
|
|
272
|
+
return _context2.abrupt("continue", 91);
|
|
273
|
+
case 75:
|
|
274
|
+
_fsExtra["default"].writeFileSync(_textePath, Buffer.from(_texteBuffer));
|
|
275
|
+
retrievedTextesCount++;
|
|
276
|
+
case 77:
|
|
277
|
+
if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "pdf")) {
|
|
278
|
+
_context2.next = 91;
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
_textePath2 = _path["default"].join(texteDir, "".concat(texteMetadata.name, ".pdf"));
|
|
282
|
+
if (!(!options.force && _fsExtra["default"].existsSync(_textePath2))) {
|
|
283
|
+
_context2.next = 83;
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
if (!options.silent) {
|
|
287
|
+
console.info("Already retrieved texte ".concat(_textePath2, "\u2026"));
|
|
288
|
+
}
|
|
289
|
+
_context2.next = 91;
|
|
290
|
+
break;
|
|
291
|
+
case 83:
|
|
292
|
+
_context2.next = 85;
|
|
293
|
+
return retrieveDocument(texteMetadata.url_pdf.toString());
|
|
294
|
+
case 85:
|
|
295
|
+
_texteBuffer2 = _context2.sent;
|
|
296
|
+
if (_texteBuffer2) {
|
|
297
|
+
_context2.next = 89;
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
texteUrlsNotFoundOrError.push(texteMetadata.url_pdf);
|
|
301
|
+
return _context2.abrupt("continue", 91);
|
|
302
|
+
case 89:
|
|
303
|
+
_fsExtra["default"].writeFileSync(_textePath2, Buffer.from(_texteBuffer2));
|
|
304
|
+
retrievedTextesCount++;
|
|
305
|
+
case 91:
|
|
306
|
+
_context2.next = 16;
|
|
307
|
+
break;
|
|
308
|
+
case 93:
|
|
309
|
+
_context2.next = 98;
|
|
310
|
+
break;
|
|
311
|
+
case 95:
|
|
312
|
+
_context2.prev = 95;
|
|
313
|
+
_context2.t0 = _context2["catch"](14);
|
|
314
|
+
_iterator2.e(_context2.t0);
|
|
315
|
+
case 98:
|
|
316
|
+
_context2.prev = 98;
|
|
317
|
+
_iterator2.f();
|
|
318
|
+
return _context2.finish(98);
|
|
319
|
+
case 101:
|
|
320
|
+
_context2.next = 11;
|
|
321
|
+
break;
|
|
322
|
+
case 103:
|
|
323
|
+
_context2.next = 108;
|
|
324
|
+
break;
|
|
325
|
+
case 105:
|
|
326
|
+
_context2.prev = 105;
|
|
327
|
+
_context2.t1 = _context2["catch"](9);
|
|
328
|
+
_iterator.e(_context2.t1);
|
|
329
|
+
case 108:
|
|
330
|
+
_context2.prev = 108;
|
|
331
|
+
_iterator.f();
|
|
332
|
+
return _context2.finish(108);
|
|
333
|
+
case 111:
|
|
334
|
+
if (options.verbose) {
|
|
335
|
+
console.log("".concat(retrievedTextesCount, " textes retrieved"));
|
|
336
|
+
console.log("".concat(texteUrlsNotFoundOrError.length, " textes failed to be retrieved with URLs ").concat(texteUrlsNotFoundOrError.join(", ")));
|
|
337
|
+
if (options.parseDocuments) {
|
|
338
|
+
console.log("".concat(texteUrlsParseError.length, " textes failed to be parsed with URLs ").concat(texteUrlsParseError.join(", ")));
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
case 112:
|
|
342
|
+
case "end":
|
|
343
|
+
return _context2.stop();
|
|
344
|
+
}
|
|
345
|
+
}, _callee2, null, [[9, 105, 108, 111], [14, 95, 98, 101]]);
|
|
346
|
+
}));
|
|
347
|
+
return _retrieveTextes.apply(this, arguments);
|
|
348
|
+
}
|
|
349
|
+
function retrieveRapports(_x3) {
|
|
350
|
+
return _retrieveRapports.apply(this, arguments);
|
|
351
|
+
}
|
|
352
|
+
function _retrieveRapports() {
|
|
353
|
+
_retrieveRapports = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(dataDir) {
|
|
354
|
+
var rapportsDir, retrievedRapportsCount, rapportUrlsNotFoundOrError, _iterator3, _step3, session, _iterator4, _step4, _rapportMetadata$sess, rapportMetadata, rapportDir, rapportPath, rapportBuffer, _rapportPath, _rapportBuffer;
|
|
355
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
356
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
357
|
+
case 0:
|
|
358
|
+
rapportsDir = _path["default"].join(dataDir, _loaders.RAPPORT_FOLDER);
|
|
359
|
+
_fsExtra["default"].ensureDirSync(rapportsDir);
|
|
360
|
+
retrievedRapportsCount = 0;
|
|
361
|
+
rapportUrlsNotFoundOrError = [];
|
|
362
|
+
_iterator3 = _createForOfIteratorHelper(options.sessions);
|
|
363
|
+
_context3.prev = 5;
|
|
364
|
+
_iterator3.s();
|
|
365
|
+
case 7:
|
|
366
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
367
|
+
_context3.next = 54;
|
|
368
|
+
break;
|
|
369
|
+
}
|
|
370
|
+
session = _step3.value;
|
|
371
|
+
_iterator4 = _createForOfIteratorHelper((0, _loaders.iterLoadSenatDossiersLegislatifsRapportUrls)(dataDir, session));
|
|
372
|
+
_context3.prev = 10;
|
|
373
|
+
_iterator4.s();
|
|
374
|
+
case 12:
|
|
375
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
376
|
+
_context3.next = 44;
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
rapportMetadata = _step4.value.item;
|
|
380
|
+
rapportDir = _path["default"].join(rapportsDir, "".concat((_rapportMetadata$sess = rapportMetadata.session) !== null && _rapportMetadata$sess !== void 0 ? _rapportMetadata$sess : _datautil.UNDEFINED_SESSION), rapportMetadata.name);
|
|
381
|
+
_fsExtra["default"].ensureDirSync(rapportDir);
|
|
382
|
+
if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "html")) {
|
|
383
|
+
_context3.next = 29;
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
rapportPath = _path["default"].join(rapportDir, "".concat(rapportMetadata.name, ".html"));
|
|
387
|
+
if (!(!options.force && _fsExtra["default"].existsSync(rapportPath))) {
|
|
388
|
+
_context3.next = 21;
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
if (!options.silent) {
|
|
392
|
+
console.info("Already retrieved rapport ".concat(rapportPath, "\u2026"));
|
|
393
|
+
}
|
|
394
|
+
return _context3.abrupt("continue", 42);
|
|
395
|
+
case 21:
|
|
396
|
+
_context3.next = 23;
|
|
397
|
+
return retrieveDocument(rapportMetadata.url_html.toString());
|
|
398
|
+
case 23:
|
|
399
|
+
rapportBuffer = _context3.sent;
|
|
400
|
+
if (rapportBuffer) {
|
|
401
|
+
_context3.next = 27;
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
404
|
+
rapportUrlsNotFoundOrError.push(rapportMetadata.url_html);
|
|
405
|
+
return _context3.abrupt("continue", 42);
|
|
406
|
+
case 27:
|
|
407
|
+
_fsExtra["default"].writeFileSync(rapportPath, Buffer.from(rapportBuffer));
|
|
408
|
+
retrievedRapportsCount++;
|
|
409
|
+
case 29:
|
|
410
|
+
if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "pdf")) {
|
|
411
|
+
_context3.next = 42;
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
414
|
+
_rapportPath = _path["default"].join(rapportDir, "".concat(rapportMetadata.name, ".pdf"));
|
|
415
|
+
if (!(!options.force && _fsExtra["default"].existsSync(_rapportPath))) {
|
|
416
|
+
_context3.next = 34;
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
if (!options.silent) {
|
|
420
|
+
console.info("Already retrieved rapport ".concat(_rapportPath, "\u2026"));
|
|
421
|
+
}
|
|
422
|
+
return _context3.abrupt("continue", 42);
|
|
423
|
+
case 34:
|
|
424
|
+
_context3.next = 36;
|
|
425
|
+
return retrieveDocument(rapportMetadata.url_pdf.toString());
|
|
426
|
+
case 36:
|
|
427
|
+
_rapportBuffer = _context3.sent;
|
|
428
|
+
if (_rapportBuffer) {
|
|
429
|
+
_context3.next = 40;
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
432
|
+
rapportUrlsNotFoundOrError.push(rapportMetadata.url_pdf);
|
|
433
|
+
return _context3.abrupt("continue", 42);
|
|
434
|
+
case 40:
|
|
435
|
+
_fsExtra["default"].writeFileSync(_rapportPath, Buffer.from(_rapportBuffer));
|
|
436
|
+
retrievedRapportsCount++;
|
|
437
|
+
case 42:
|
|
438
|
+
_context3.next = 12;
|
|
439
|
+
break;
|
|
440
|
+
case 44:
|
|
441
|
+
_context3.next = 49;
|
|
442
|
+
break;
|
|
443
|
+
case 46:
|
|
444
|
+
_context3.prev = 46;
|
|
445
|
+
_context3.t0 = _context3["catch"](10);
|
|
446
|
+
_iterator4.e(_context3.t0);
|
|
447
|
+
case 49:
|
|
448
|
+
_context3.prev = 49;
|
|
449
|
+
_iterator4.f();
|
|
450
|
+
return _context3.finish(49);
|
|
451
|
+
case 52:
|
|
452
|
+
_context3.next = 7;
|
|
453
|
+
break;
|
|
454
|
+
case 54:
|
|
455
|
+
_context3.next = 59;
|
|
456
|
+
break;
|
|
457
|
+
case 56:
|
|
458
|
+
_context3.prev = 56;
|
|
459
|
+
_context3.t1 = _context3["catch"](5);
|
|
460
|
+
_iterator3.e(_context3.t1);
|
|
461
|
+
case 59:
|
|
462
|
+
_context3.prev = 59;
|
|
463
|
+
_iterator3.f();
|
|
464
|
+
return _context3.finish(59);
|
|
465
|
+
case 62:
|
|
466
|
+
if (options.verbose) {
|
|
467
|
+
console.log("".concat(retrievedRapportsCount, " rapports retrieved"));
|
|
468
|
+
console.log("".concat(rapportUrlsNotFoundOrError.length, " rapports failed with URLs ").concat(rapportUrlsNotFoundOrError.join(", ")));
|
|
469
|
+
}
|
|
470
|
+
case 63:
|
|
471
|
+
case "end":
|
|
472
|
+
return _context3.stop();
|
|
473
|
+
}
|
|
474
|
+
}, _callee3, null, [[5, 56, 59, 62], [10, 46, 49, 52]]);
|
|
475
|
+
}));
|
|
476
|
+
return _retrieveRapports.apply(this, arguments);
|
|
477
|
+
}
|
|
478
|
+
function main() {
|
|
479
|
+
return _main.apply(this, arguments);
|
|
480
|
+
}
|
|
481
|
+
function _main() {
|
|
482
|
+
_main = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
483
|
+
var dataDir;
|
|
484
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
485
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
486
|
+
case 0:
|
|
487
|
+
dataDir = options.dataDir;
|
|
488
|
+
(0, _assert["default"])(dataDir, "Missing argument: data directory");
|
|
489
|
+
console.time("documents processing time");
|
|
490
|
+
if (!(0, _util.isOptionEmptyOrHasValue)(options.types, "textes")) {
|
|
491
|
+
_context4.next = 6;
|
|
492
|
+
break;
|
|
493
|
+
}
|
|
494
|
+
_context4.next = 6;
|
|
495
|
+
return retrieveTextes(dataDir);
|
|
496
|
+
case 6:
|
|
497
|
+
if (!(0, _util.isOptionEmptyOrHasValue)(options.types, "rapports")) {
|
|
498
|
+
_context4.next = 9;
|
|
499
|
+
break;
|
|
500
|
+
}
|
|
501
|
+
_context4.next = 9;
|
|
502
|
+
return retrieveRapports(dataDir);
|
|
503
|
+
case 9:
|
|
504
|
+
if (!options.silent) {
|
|
505
|
+
console.timeEnd("documents processing time");
|
|
506
|
+
}
|
|
507
|
+
case 10:
|
|
508
|
+
case "end":
|
|
509
|
+
return _context4.stop();
|
|
510
|
+
}
|
|
511
|
+
}, _callee4);
|
|
512
|
+
}));
|
|
513
|
+
return _main.apply(this, arguments);
|
|
514
|
+
}
|
|
515
|
+
main().then(function () {
|
|
516
|
+
return process.exit(0);
|
|
517
|
+
})["catch"](function (error) {
|
|
518
|
+
console.log(error);
|
|
519
|
+
process.exit(1);
|
|
520
|
+
});
|
|
521
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9sb2FkZXJzIiwiX3RleHRlIiwiX2RhdGF1dGlsIiwiX2NsaV9oZWxwZXJzIiwiX3V0aWwiLCJlIiwiX19lc01vZHVsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiaSIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImgiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJFcnJvciIsIm1ldGhvZCIsImFyZyIsImRlbGVnYXRlIiwiZCIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwidHlwZSIsIkNvbnRleHQiLCJ3cmFwIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImwiLCJwIiwiZ2V0UHJvdG90eXBlT2YiLCJ5IiwieCIsInYiLCJnIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsInciLCJ0cnlFbnRyaWVzIiwicHVzaCIsIm0iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwidW5zaGlmdCIsInBvcCIsInZhbHVlcyIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNvbmNhdCIsImNvbW1vbk9wdGlvbnMiLCJoZWxwIiwibXVsdGlwbGUiLCJTdHJpbmciLCJCb29sZWFuIiwiYWxpYXMiLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwidGV4dERlY29kZXIiLCJUZXh0RGVjb2RlciIsInJldHJpZXZlRG9jdW1lbnQiLCJfeCIsIl9yZXRyaWV2ZURvY3VtZW50IiwiX2NhbGxlZSIsImRvY3VtZW50VXJsIiwicmVzcG9uc2UiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImZldGNoV2l0aFJldHJ5Iiwib2siLCJzdGF0dXMiLCJ3YXJuIiwiZXJyb3IiLCJhcnJheUJ1ZmZlciIsInQwIiwibWVzc2FnZSIsInJldHJpZXZlVGV4dGVzIiwiX3gyIiwiX3JldHJpZXZlVGV4dGVzIiwiX2NhbGxlZTIiLCJkYXRhRGlyIiwidGV4dGVzRGlyIiwib3JpZ2luYWxUZXh0ZXNEaXIiLCJ0cmFuc2Zvcm1lZFRleHRlc0RpciIsInJldHJpZXZlZFRleHRlc0NvdW50IiwidGV4dGVVcmxzTm90Rm91bmRPckVycm9yIiwidGV4dGVVcmxzUGFyc2VFcnJvciIsIl9pdGVyYXRvciIsIl9zdGVwIiwic2Vzc2lvbiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdGV4dGVNZXRhZGF0YSRzZXNzaW8iLCJ0ZXh0ZU1ldGFkYXRhIiwidGV4dGVEaXIiLCJleHBvc2VEZXNNb3RpZnNDb250ZW50IiwiZXhwb3NlRGVzTW90aWZzUGF0aCIsInRleHRlUGF0aCIsInRleHRlQnVmZmVyIiwiX3RleHRlTWV0YWRhdGEkc2Vzc2lvMiIsInBhcnNlZFRleHRlIiwidGV4dGVYbWwiLCJleHBvc2VEZXNNb3RpZnNIdG1sIiwidHJhbnNmb3JtZWRUZXh0ZURpciIsIl90ZXh0ZVBhdGgiLCJfdGV4dGVCdWZmZXIiLCJfdGV4dGVQYXRoMiIsIl90ZXh0ZUJ1ZmZlcjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwYXRoIiwiam9pbiIsIlRFWFRFX0ZPTERFUiIsImZzIiwiZW5zdXJlRGlyU3luYyIsIlRFWFRFX09SSUdJTkFMX0ZPTERFUiIsIlRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiIsInBhcnNlRG9jdW1lbnRzIiwiZW5zdXJlQW5kQ2xlYXJEaXIiLCJzZXNzaW9ucyIsIml0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzVGV4dGVVcmxzIiwiaXRlbSIsIlVOREVGSU5FRF9TRVNTSU9OIiwidXJsX2V4cG9zZV9kZXNfbW90aWZzIiwid3JpdGVGaWxlU3luYyIsIkJ1ZmZlciIsImlzT3B0aW9uRW1wdHlPckhhc1ZhbHVlIiwiZm9ybWF0cyIsImZvcmNlIiwiZXhpc3RzU3luYyIsImluZm8iLCJ1cmxfeG1sIiwiZGVjb2RlIiwicGFyc2VUZXh0ZSIsInBhcnNlVGV4dGVGcm9tRmlsZSIsImV4cG9zZURlc01vdGlmcyIsInBhcnNlRXhwb3NlRGVzTW90aWZzIiwid3JpdGVKU09OU3luYyIsInNwYWNlcyIsInVybF9odG1sIiwidXJsX3BkZiIsInQxIiwidmVyYm9zZSIsInJldHJpZXZlUmFwcG9ydHMiLCJfeDMiLCJfcmV0cmlldmVSYXBwb3J0cyIsIl9jYWxsZWUzIiwicmFwcG9ydHNEaXIiLCJyZXRyaWV2ZWRSYXBwb3J0c0NvdW50IiwicmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIl9yYXBwb3J0TWV0YWRhdGEkc2VzcyIsInJhcHBvcnRNZXRhZGF0YSIsInJhcHBvcnREaXIiLCJyYXBwb3J0UGF0aCIsInJhcHBvcnRCdWZmZXIiLCJfcmFwcG9ydFBhdGgiLCJfcmFwcG9ydEJ1ZmZlciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlJBUFBPUlRfRk9MREVSIiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyIsIm1haW4iLCJfbWFpbiIsIl9jYWxsZWU0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiYXNzZXJ0IiwidGltZSIsInR5cGVzIiwidGltZUVuZCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfZG9jdW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHtcbiAgaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyxcbiAgaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNUZXh0ZVVybHMsXG4gIFJBUFBPUlRfRk9MREVSLFxuICBURVhURV9GT0xERVIsXG4gIFRFWFRFX09SSUdJTkFMX0ZPTERFUixcbiAgVEVYVEVfVFJBTlNGT1JNRURfRk9MREVSLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBwYXJzZUV4cG9zZURlc01vdGlmcywgcGFyc2VUZXh0ZSwgcGFyc2VUZXh0ZUZyb21GaWxlIH0gZnJvbSBcIi4uL21vZGVsL3RleHRlXCJcbmltcG9ydCB7IFVOREVGSU5FRF9TRVNTSU9OIH0gZnJvbSBcIi4vZGF0YXV0aWxcIlxuaW1wb3J0IHsgY29tbW9uT3B0aW9ucyB9IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5pbXBvcnQgeyBlbnN1cmVBbmRDbGVhckRpciwgZmV0Y2hXaXRoUmV0cnksIGlzT3B0aW9uRW1wdHlPckhhc1ZhbHVlIH0gZnJvbSBcIi4vc2hhcmVkL3V0aWxcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIC4uLmNvbW1vbk9wdGlvbnMsXG4gIHtcbiAgICBoZWxwOiBcInNlc3Npb25zIG9mIHRleHRlcyB0byByZXRyaWV2ZTsgbGVhdmUgZW1wdHkgZm9yIGFsbFwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwic2Vzc2lvbnNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBoZWxwOiBcInBhcnNlIGFuZCBjb252ZXJ0IGRvY3VtZW50cyBpbnRvIEpTT04gKHRleHRlcyBvbmx5IGZvciBub3csIHJlcXVpcmVzIGZvcm1hdCB4bWwpXCIsXG4gICAgbmFtZTogXCJwYXJzZURvY3VtZW50c1wiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJGXCIsXG4gICAgaGVscDogXCJmb3JtYXRzIG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZSAoeG1sL2h0bWwvcGRmIGZvciB0ZXh0ZXMsIGh0bWwvcGRmIGZvciByYXBwb3J0cyk7IGxlYXZlIGVtcHR5IGZvciBhbGxcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImZvcm1hdHNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBoZWxwOiBcInR5cGVzIG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZSAodGV4dGVzL3JhcHBvcnRzKTsgbGVhdmUgZW1wdHkgZm9yIGFsbFwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwidHlwZXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBoZWxwOiBcImZvcmNlIHJldHJpZXZlIGFsbCBkb2N1bWVudHMsIGV2ZW4gYWxyZWFkeSByZXRyaWV2ZWQgb25lc1wiLFxuICAgIG5hbWU6IFwiZm9yY2VcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmNvbnN0IHRleHREZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKFwidXRmOFwiKVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZURvY3VtZW50IChkb2N1bWVudFVybDogc3RyaW5nKTogUHJvbWlzZTxBcnJheUJ1ZmZlciB8IG51bGw+IHtcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBSZXRyaWV2aW5nIGRvY3VtZW50ICR7ZG9jdW1lbnRVcmx94oCmYClcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhSZXRyeShkb2N1bWVudFVybClcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUZXh0ZSAke2RvY3VtZW50VXJsfSBub3QgZm91bmRgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmV0cmlldmluZyB0ZXh0ZSAke2RvY3VtZW50VXJsfTogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVRleHRlcyAoZGF0YURpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRleHRlc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBURVhURV9GT0xERVIpXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVzRGlyKVxuXG4gIGNvbnN0IG9yaWdpbmFsVGV4dGVzRGlyID0gcGF0aC5qb2luKHRleHRlc0RpciwgVEVYVEVfT1JJR0lOQUxfRk9MREVSKVxuICBjb25zdCB0cmFuc2Zvcm1lZFRleHRlc0RpciA9IHBhdGguam9pbih0ZXh0ZXNEaXIsIFRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUilcbiAgaWYgKG9wdGlvbnMucGFyc2VEb2N1bWVudHMpIHtcbiAgICBlbnN1cmVBbmRDbGVhckRpcih0cmFuc2Zvcm1lZFRleHRlc0RpcilcbiAgfVxuXG4gIGxldCByZXRyaWV2ZWRUZXh0ZXNDb3VudCA9IDBcbiAgY29uc3QgdGV4dGVVcmxzTm90Rm91bmRPckVycm9yID0gW11cbiAgY29uc3QgdGV4dGVVcmxzUGFyc2VFcnJvciA9IFtdXG5cbiAgZm9yIChjb25zdCBzZXNzaW9uIG9mIG9wdGlvbnMuc2Vzc2lvbnMpIHtcbiAgICBmb3IgKGNvbnN0IHsgaXRlbTogdGV4dGVNZXRhZGF0YSB9IG9mIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzVGV4dGVVcmxzKGRhdGFEaXIsIHNlc3Npb24pKSB7XG4gICAgICBjb25zdCB0ZXh0ZURpciA9IHBhdGguam9pbihvcmlnaW5hbFRleHRlc0RpciwgYCR7dGV4dGVNZXRhZGF0YS5zZXNzaW9uID8/IFVOREVGSU5FRF9TRVNTSU9OfWAsIHRleHRlTWV0YWRhdGEubmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmModGV4dGVEaXIpXG5cbiAgICAgIGxldCBleHBvc2VEZXNNb3RpZnNDb250ZW50ID0gbnVsbFxuICAgICAgaWYgKHRleHRlTWV0YWRhdGEudXJsX2V4cG9zZV9kZXNfbW90aWZzKSB7XG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlJldHJpZXZpbmcgZXhwb3PDqSBkZXMgbW90aWZz4oCmXCIpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleHBvc2VEZXNNb3RpZnNQYXRoID0gcGF0aC5qb2luKHRleHRlRGlyLCBgJHt0ZXh0ZU1ldGFkYXRhLm5hbWV9LWV4cG9zZS5odG1sYClcblxuICAgICAgICBleHBvc2VEZXNNb3RpZnNDb250ZW50ID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudCh0ZXh0ZU1ldGFkYXRhLnVybF9leHBvc2VfZGVzX21vdGlmcy50b1N0cmluZygpKVxuICAgICAgICBpZiAoIWV4cG9zZURlc01vdGlmc0NvbnRlbnQpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZXhwb3NlRGVzTW90aWZzUGF0aCwgQnVmZmVyLmZyb20oZXhwb3NlRGVzTW90aWZzQ29udGVudCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLmZvcm1hdHMsIFwieG1sXCIpKSB7XG4gICAgICAgIGNvbnN0IHRleHRlUGF0aCA9IHBhdGguam9pbih0ZXh0ZURpciwgYCR7dGV4dGVNZXRhZGF0YS5uYW1lfS54bWxgKVxuICAgICAgICBsZXQgdGV4dGVCdWZmZXIgPSBudWxsXG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmZvcmNlICYmIGZzLmV4aXN0c1N5bmModGV4dGVQYXRoKSkge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQWxyZWFkeSByZXRyaWV2ZWQgdGV4dGUgJHt0ZXh0ZVBhdGh94oCmYClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGV4dGVCdWZmZXIgPSBhd2FpdCByZXRyaWV2ZURvY3VtZW50KHRleHRlTWV0YWRhdGEudXJsX3htbC50b1N0cmluZygpKVxuICAgICAgICAgIGlmICghdGV4dGVCdWZmZXIpIHtcbiAgICAgICAgICAgIHRleHRlVXJsc05vdEZvdW5kT3JFcnJvci5wdXNoKHRleHRlTWV0YWRhdGEudXJsX3htbClcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmModGV4dGVQYXRoLCBCdWZmZXIuZnJvbSh0ZXh0ZUJ1ZmZlcikpXG4gICAgICAgICAgcmV0cmlldmVkVGV4dGVzQ291bnQrK1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucGFyc2VEb2N1bWVudHMpIHtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgUGFyc2luZyB0ZXh0ZSAke3RleHRlTWV0YWRhdGEubmFtZX0ueG1s4oCmYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcGFyc2VkVGV4dGUgPSBudWxsXG4gICAgICAgICAgaWYgKHRleHRlQnVmZmVyKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ZVhtbCA9IHRleHREZWNvZGVyLmRlY29kZSh0ZXh0ZUJ1ZmZlcilcbiAgICAgICAgICAgIHBhcnNlZFRleHRlID0gcGFyc2VUZXh0ZSh0ZXh0ZVhtbClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyc2VkVGV4dGUgPSBhd2FpdCBwYXJzZVRleHRlRnJvbUZpbGUodGV4dGVQYXRoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghcGFyc2VkVGV4dGUpIHtcbiAgICAgICAgICAgIHRleHRlVXJsc1BhcnNlRXJyb3IucHVzaCh0ZXh0ZU1ldGFkYXRhLnVybF94bWwpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChleHBvc2VEZXNNb3RpZnNDb250ZW50KSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUGFyc2luZyBleHBvc8OpIGRlcyBtb3RpZnPigKZcIilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZXhwb3NlRGVzTW90aWZzSHRtbCA9IHRleHREZWNvZGVyLmRlY29kZShleHBvc2VEZXNNb3RpZnNDb250ZW50KVxuICAgICAgICAgICAgcGFyc2VkVGV4dGUuZXhwb3NlRGVzTW90aWZzID0gcGFyc2VFeHBvc2VEZXNNb3RpZnMoZXhwb3NlRGVzTW90aWZzSHRtbClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFRleHRlRGlyXG4gICAgICAgICAgICA9IHBhdGguam9pbih0cmFuc2Zvcm1lZFRleHRlc0RpciwgYCR7dGV4dGVNZXRhZGF0YS5zZXNzaW9uID8/IFVOREVGSU5FRF9TRVNTSU9OfWAsIHRleHRlTWV0YWRhdGEubmFtZSlcbiAgICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHRyYW5zZm9ybWVkVGV4dGVEaXIpXG5cbiAgICAgICAgICBmcy53cml0ZUpTT05TeW5jKHBhdGguam9pbih0cmFuc2Zvcm1lZFRleHRlRGlyLCBgJHt0ZXh0ZU1ldGFkYXRhLm5hbWV9Lmpzb25gKSwgcGFyc2VkVGV4dGUsIHsgc3BhY2VzOiAyIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT3B0aW9uRW1wdHlPckhhc1ZhbHVlKG9wdGlvbnMuZm9ybWF0cywgXCJodG1sXCIpKSB7XG4gICAgICAgIGNvbnN0IHRleHRlUGF0aCA9IHBhdGguam9pbih0ZXh0ZURpciwgYCR7dGV4dGVNZXRhZGF0YS5uYW1lfS5odG1sYClcblxuICAgICAgICBpZiAoIW9wdGlvbnMuZm9yY2UgJiYgZnMuZXhpc3RzU3luYyh0ZXh0ZVBhdGgpKSB7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBBbHJlYWR5IHJldHJpZXZlZCB0ZXh0ZSAke3RleHRlUGF0aH3igKZgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIGNvbnN0IHRleHRlQnVmZmVyID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudCh0ZXh0ZU1ldGFkYXRhLnVybF9odG1sLnRvU3RyaW5nKCkpXG4gICAgICAgICAgaWYgKCF0ZXh0ZUJ1ZmZlcikge1xuICAgICAgICAgICAgdGV4dGVVcmxzTm90Rm91bmRPckVycm9yLnB1c2godGV4dGVNZXRhZGF0YS51cmxfaHRtbClcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmModGV4dGVQYXRoLCBCdWZmZXIuZnJvbSh0ZXh0ZUJ1ZmZlcikpXG4gICAgICAgICAgcmV0cmlldmVkVGV4dGVzQ291bnQrK1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLmZvcm1hdHMsIFwicGRmXCIpKSB7XG4gICAgICAgIGNvbnN0IHRleHRlUGF0aCA9IHBhdGguam9pbih0ZXh0ZURpciwgYCR7dGV4dGVNZXRhZGF0YS5uYW1lfS5wZGZgKVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiBmcy5leGlzdHNTeW5jKHRleHRlUGF0aCkpIHtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oYEFscmVhZHkgcmV0cmlldmVkIHRleHRlICR7dGV4dGVQYXRofeKApmApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgY29uc3QgdGV4dGVCdWZmZXIgPSBhd2FpdCByZXRyaWV2ZURvY3VtZW50KHRleHRlTWV0YWRhdGEudXJsX3BkZi50b1N0cmluZygpKVxuICAgICAgICAgIGlmICghdGV4dGVCdWZmZXIpIHtcbiAgICAgICAgICAgIHRleHRlVXJsc05vdEZvdW5kT3JFcnJvci5wdXNoKHRleHRlTWV0YWRhdGEudXJsX3BkZilcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmModGV4dGVQYXRoLCBCdWZmZXIuZnJvbSh0ZXh0ZUJ1ZmZlcikpXG4gICAgICAgICAgcmV0cmlldmVkVGV4dGVzQ291bnQrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgIGNvbnNvbGUubG9nKGAke3JldHJpZXZlZFRleHRlc0NvdW50fSB0ZXh0ZXMgcmV0cmlldmVkYClcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAke3RleHRlVXJsc05vdEZvdW5kT3JFcnJvci5sZW5ndGh9IHRleHRlcyBmYWlsZWQgdG8gYmUgcmV0cmlldmVkIHdpdGggVVJMcyAke3RleHRlVXJsc05vdEZvdW5kT3JFcnJvci5qb2luKFwiLCBcIil9YFxuICAgIClcbiAgICBpZiAob3B0aW9ucy5wYXJzZURvY3VtZW50cykge1xuICAgICAgY29uc29sZS5sb2coYCR7dGV4dGVVcmxzUGFyc2VFcnJvci5sZW5ndGh9IHRleHRlcyBmYWlsZWQgdG8gYmUgcGFyc2VkIHdpdGggVVJMcyAke3RleHRlVXJsc1BhcnNlRXJyb3Iuam9pbihcIiwgXCIpfWApXG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUmFwcG9ydHMgKGRhdGFEaXI6IHN0cmluZykge1xuICBjb25zdCByYXBwb3J0c0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBSQVBQT1JUX0ZPTERFUilcbiAgZnMuZW5zdXJlRGlyU3luYyhyYXBwb3J0c0RpcilcblxuICBsZXQgcmV0cmlldmVkUmFwcG9ydHNDb3VudCA9IDBcbiAgY29uc3QgcmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IgPSBbXVxuXG4gIGZvciAoY29uc3Qgc2Vzc2lvbiBvZiBvcHRpb25zLnNlc3Npb25zKSB7XG4gICAgZm9yIChjb25zdCB7IGl0ZW06IHJhcHBvcnRNZXRhZGF0YSB9IG9mIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzUmFwcG9ydFVybHMoZGF0YURpciwgc2Vzc2lvbikpIHtcbiAgICAgIGNvbnN0IHJhcHBvcnREaXIgPSBwYXRoLmpvaW4ocmFwcG9ydHNEaXIsIGAke3JhcHBvcnRNZXRhZGF0YS5zZXNzaW9uID8/IFVOREVGSU5FRF9TRVNTSU9OfWAsIHJhcHBvcnRNZXRhZGF0YS5uYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhyYXBwb3J0RGlyKVxuXG4gICAgICBpZiAoaXNPcHRpb25FbXB0eU9ySGFzVmFsdWUob3B0aW9ucy5mb3JtYXRzLCBcImh0bWxcIikpIHtcbiAgICAgICAgY29uc3QgcmFwcG9ydFBhdGggPSBwYXRoLmpvaW4ocmFwcG9ydERpciwgYCR7cmFwcG9ydE1ldGFkYXRhLm5hbWV9Lmh0bWxgKVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiBmcy5leGlzdHNTeW5jKHJhcHBvcnRQYXRoKSkge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQWxyZWFkeSByZXRyaWV2ZWQgcmFwcG9ydCAke3JhcHBvcnRQYXRofeKApmApXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYXBwb3J0QnVmZmVyID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudChyYXBwb3J0TWV0YWRhdGEudXJsX2h0bWwudG9TdHJpbmcoKSlcbiAgICAgICAgaWYgKCFyYXBwb3J0QnVmZmVyKSB7XG4gICAgICAgICAgcmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IucHVzaChyYXBwb3J0TWV0YWRhdGEudXJsX2h0bWwpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHJhcHBvcnRQYXRoLCBCdWZmZXIuZnJvbShyYXBwb3J0QnVmZmVyKSlcbiAgICAgICAgcmV0cmlldmVkUmFwcG9ydHNDb3VudCsrXG4gICAgICB9XG5cbiAgICAgIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLmZvcm1hdHMsIFwicGRmXCIpKSB7XG4gICAgICAgIGNvbnN0IHJhcHBvcnRQYXRoID0gcGF0aC5qb2luKHJhcHBvcnREaXIsIGAke3JhcHBvcnRNZXRhZGF0YS5uYW1lfS5wZGZgKVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiBmcy5leGlzdHNTeW5jKHJhcHBvcnRQYXRoKSkge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQWxyZWFkeSByZXRyaWV2ZWQgcmFwcG9ydCAke3JhcHBvcnRQYXRofeKApmApXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYXBwb3J0QnVmZmVyID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudChyYXBwb3J0TWV0YWRhdGEudXJsX3BkZi50b1N0cmluZygpKVxuICAgICAgICBpZiAoIXJhcHBvcnRCdWZmZXIpIHtcbiAgICAgICAgICByYXBwb3J0VXJsc05vdEZvdW5kT3JFcnJvci5wdXNoKHJhcHBvcnRNZXRhZGF0YS51cmxfcGRmKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhyYXBwb3J0UGF0aCwgQnVmZmVyLmZyb20ocmFwcG9ydEJ1ZmZlcikpXG4gICAgICAgIHJldHJpZXZlZFJhcHBvcnRzQ291bnQrK1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtyZXRyaWV2ZWRSYXBwb3J0c0NvdW50fSByYXBwb3J0cyByZXRyaWV2ZWRgKVxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7cmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IubGVuZ3RofSByYXBwb3J0cyBmYWlsZWQgd2l0aCBVUkxzICR7cmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3Iuam9pbihcIiwgXCIpfWBcbiAgICApXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBhc3NlcnQoZGF0YURpciwgXCJNaXNzaW5nIGFyZ3VtZW50OiBkYXRhIGRpcmVjdG9yeVwiKVxuXG4gIGNvbnNvbGUudGltZShcImRvY3VtZW50cyBwcm9jZXNzaW5nIHRpbWVcIilcblxuICBpZiAoaXNPcHRpb25FbXB0eU9ySGFzVmFsdWUob3B0aW9ucy50eXBlcywgXCJ0ZXh0ZXNcIikpIHtcbiAgICBhd2FpdCByZXRyaWV2ZVRleHRlcyhkYXRhRGlyKVxuICB9XG4gIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLnR5cGVzLCBcInJhcHBvcnRzXCIpKSB7XG4gICAgYXdhaXQgcmV0cmlldmVSYXBwb3J0cyhkYXRhRGlyKVxuICB9XG5cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS50aW1lRW5kKFwiZG9jdW1lbnRzIHByb2Nlc3NpbmcgdGltZVwiKVxuICB9XG59XG5cbm1haW4oKVxuICAudGhlbigoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxP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
|