@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.
Files changed (101) hide show
  1. package/lib/bugs/acteur-00010/plugin.test.js +2 -2
  2. package/lib/bugs/acteur-00010.js +3 -3
  3. package/lib/bugs/agenda-00002/plugin.test.js +3 -3
  4. package/lib/bugs/agenda-00002.js +5 -5
  5. package/lib/bugs/agenda-00008/plugin.test.js +2 -2
  6. package/lib/bugs/agenda-00008.js +3 -3
  7. package/lib/bugs/agenda-00011/plugin.test.js +6 -6
  8. package/lib/bugs/agenda-00011.js +8 -8
  9. package/lib/bugs.js +11 -11
  10. package/lib/cleaners/index.d.ts +1 -0
  11. package/lib/cleaners/index.js +8 -1
  12. package/lib/cleaners/index.mjs +2 -1
  13. package/lib/cleaners/scrutins.js +2 -1
  14. package/lib/cleaners/scrutins.mjs +3 -2
  15. package/lib/cleaners/textes_loi.d.ts +1 -0
  16. package/lib/cleaners/textes_loi.js +12 -0
  17. package/lib/cleaners/textes_loi.mjs +5 -0
  18. package/lib/cleaners/xml.d.ts +3 -0
  19. package/lib/cleaners/xml.js +13 -1
  20. package/lib/cleaners/xml.mjs +11 -1
  21. package/lib/datasets.d.ts +9 -2
  22. package/lib/datasets.js +24 -3
  23. package/lib/datasets.mjs +24 -3
  24. package/lib/dates.js +3 -3
  25. package/lib/examples/PIONANR5L15B0020/input.d.ts +2 -0
  26. package/lib/examples/PIONANR5L15B0020/input.js +10 -0
  27. package/lib/examples/PIONANR5L15B0020/input.mjs +193 -0
  28. package/lib/examples/PRJLANR5L16B0914/input.d.ts +2 -0
  29. package/lib/examples/PRJLANR5L16B0914/input.js +10 -0
  30. package/lib/examples/PRJLANR5L16B0914/input.mjs +322 -0
  31. package/lib/examples/PRJLANR5L16B2014/input.d.ts +2 -0
  32. package/lib/examples/PRJLANR5L16B2014/input.js +10 -0
  33. package/lib/examples/PRJLANR5L16B2014/input.mjs +577 -0
  34. package/lib/examples/PRJLANR5L16B2424/input.d.ts +2 -0
  35. package/lib/examples/PRJLANR5L16B2424/input.js +10 -0
  36. package/lib/examples/PRJLANR5L16B2424/input.mjs +322 -0
  37. package/lib/examples/PRJLANR5L16B2462/input.d.ts +2 -0
  38. package/lib/examples/PRJLANR5L16B2462/input.js +10 -0
  39. package/lib/examples/PRJLANR5L16B2462/input.mjs +1308 -0
  40. package/lib/loaders.d.ts +5 -0
  41. package/lib/loaders.js +308 -262
  42. package/lib/loaders.mjs +16 -3
  43. package/lib/logger.d.ts +16 -0
  44. package/lib/logger.js +35 -0
  45. package/lib/logger.mjs +26 -0
  46. package/lib/parsers/documents.js +2 -2
  47. package/lib/parsers/textes_lois.d.ts +16 -1
  48. package/lib/parsers/textes_lois.js +733 -28
  49. package/lib/parsers/textes_lois.mjs +587 -22
  50. package/lib/raw_types/acteurs_et_organes.js +1 -1
  51. package/lib/raw_types/agendas.js +1 -1
  52. package/lib/raw_types/amendements.js +1 -1
  53. package/lib/raw_types/debats.js +1 -1
  54. package/lib/raw_types/dossiers_legislatifs.js +1 -1
  55. package/lib/raw_types/questions.js +1 -1
  56. package/lib/raw_types/scrutins.d.ts +18 -13
  57. package/lib/raw_types/scrutins.js +28 -14
  58. package/lib/raw_types/scrutins.mjs +28 -14
  59. package/lib/raw_types/textes_loi.d.ts +93 -0
  60. package/lib/raw_types/textes_loi.js +429 -0
  61. package/lib/raw_types/textes_loi.mjs +378 -0
  62. package/lib/scripts/bugs_helper.js +9 -9
  63. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  64. package/lib/scripts/process_open_dataset.d.ts +17 -0
  65. package/lib/scripts/process_open_dataset.js +302 -0
  66. package/lib/scripts/process_open_dataset.mjs +136 -0
  67. package/lib/scripts/process_textes_loi_dataset.d.ts +7 -0
  68. package/lib/scripts/process_textes_loi_dataset.js +374 -0
  69. package/lib/scripts/process_textes_loi_dataset.mjs +237 -0
  70. package/lib/scripts/raw_types_from_amendements.js +2 -2
  71. package/lib/scripts/reorganize_data.js +1 -1
  72. package/lib/scripts/reorganize_data.mjs +1 -1
  73. package/lib/scripts/retrieve_deputes_photos.js +3 -3
  74. package/lib/scripts/retrieve_documents.js +4 -4
  75. package/lib/scripts/retrieve_open_data.js +41 -279
  76. package/lib/scripts/retrieve_open_data.mjs +13 -126
  77. package/lib/scripts/retrieve_pending_amendments.js +2 -2
  78. package/lib/scripts/retrieve_senateurs_photos.js +2 -2
  79. package/lib/scripts/retrieve_textes_lois.js +2 -2
  80. package/lib/scripts/shared/cli_helpers.d.ts +5 -0
  81. package/lib/scripts/shared/cli_helpers.js +7 -2
  82. package/lib/scripts/shared/cli_helpers.mjs +6 -1
  83. package/lib/scripts/test_iter_load.js +25 -10
  84. package/lib/scripts/test_iter_load.mjs +19 -11
  85. package/lib/scripts/validate_json.js +3 -3
  86. package/lib/types/acteurs_et_organes.js +1 -1
  87. package/lib/types/agendas.js +1 -1
  88. package/lib/types/amendements.js +1 -1
  89. package/lib/types/debats.js +1 -1
  90. package/lib/types/dossiers_legislatifs.js +1 -1
  91. package/lib/types/questions.js +1 -1
  92. package/lib/types/scrutins.d.ts +6 -3
  93. package/lib/types/scrutins.js +13 -7
  94. package/lib/types/scrutins.mjs +13 -7
  95. package/lib/types/textes_loi.d.ts +94 -0
  96. package/lib/types/textes_loi.js +429 -0
  97. package/lib/types/textes_loi.mjs +378 -0
  98. package/package.json +13 -12
  99. package/lib/scripts/retrieve_textes_lois_llm.d.ts +0 -1
  100. package/lib/scripts/retrieve_textes_lois_llm.js +0 -188
  101. package/lib/scripts/retrieve_textes_lois_llm.mjs +0 -85
@@ -0,0 +1,302 @@
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.reverse.js");
13
+ require("core-js/modules/es.array.slice.js");
14
+ require("core-js/modules/es.date.to-string.js");
15
+ require("core-js/modules/es.function.name.js");
16
+ require("core-js/modules/es.json.to-string-tag.js");
17
+ require("core-js/modules/es.math.to-string-tag.js");
18
+ require("core-js/modules/es.object.create.js");
19
+ require("core-js/modules/es.object.define-property.js");
20
+ require("core-js/modules/es.object.get-prototype-of.js");
21
+ require("core-js/modules/es.object.set-prototype-of.js");
22
+ require("core-js/modules/es.regexp.to-string.js");
23
+ require("core-js/modules/web.dom-collections.for-each.js");
24
+ Object.defineProperty(exports, "__esModule", {
25
+ value: true
26
+ });
27
+ exports.processDataset = processDataset;
28
+ require("core-js/modules/es.array.concat.js");
29
+ require("core-js/modules/es.array.iterator.js");
30
+ require("core-js/modules/es.array.join.js");
31
+ require("core-js/modules/es.date.to-json.js");
32
+ require("core-js/modules/es.object.keys.js");
33
+ require("core-js/modules/es.object.to-string.js");
34
+ require("core-js/modules/es.promise.js");
35
+ require("core-js/modules/es.regexp.exec.js");
36
+ require("core-js/modules/es.string.ends-with.js");
37
+ require("core-js/modules/es.string.iterator.js");
38
+ require("core-js/modules/es.string.replace.js");
39
+ require("core-js/modules/web.dom-collections.iterator.js");
40
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
41
+ var _path = _interopRequireDefault(require("path"));
42
+ var _stream = _interopRequireDefault(require("stream"));
43
+ var _nodeStreamZip = _interopRequireDefault(require("node-stream-zip"));
44
+ var _util = _interopRequireDefault(require("util"));
45
+ var _file_systems = require("../file_systems");
46
+ var _fastXmlParser = require("fast-xml-parser");
47
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
48
+ 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; }
49
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
50
+ 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."); }
51
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
52
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
53
+ 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; } } }; }
54
+ 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; } }
55
+ 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; }
56
+ 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); }
57
+ 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); }); }; }
58
+ var pipeline = _util["default"].promisify(_stream["default"].pipeline);
59
+
60
+ // Function to fetch zip files with retry mechanism
61
+ function fetchZipFile(_x, _x2) {
62
+ return _fetchZipFile.apply(this, arguments);
63
+ }
64
+ function _fetchZipFile() {
65
+ _fetchZipFile = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(url, zipFilePath) {
66
+ var retries,
67
+ attempt,
68
+ response,
69
+ _args = arguments;
70
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
71
+ while (1) switch (_context.prev = _context.next) {
72
+ case 0:
73
+ retries = _args.length > 2 && _args[2] !== undefined ? _args[2] : 3;
74
+ attempt = 0;
75
+ case 2:
76
+ if (!(attempt < retries)) {
77
+ _context.next = 21;
78
+ break;
79
+ }
80
+ _context.next = 5;
81
+ return fetch(url);
82
+ case 5:
83
+ response = _context.sent;
84
+ if (!response.ok) {
85
+ _context.next = 12;
86
+ break;
87
+ }
88
+ _context.next = 9;
89
+ return pipeline(response.body, _fsExtra["default"].createWriteStream(zipFilePath));
90
+ case 9:
91
+ return _context.abrupt("return");
92
+ case 12:
93
+ if (!(attempt < retries - 1)) {
94
+ _context.next = 16;
95
+ break;
96
+ }
97
+ console.warn("Retrying fetch for ".concat(url, ": ").concat(response.statusText));
98
+ _context.next = 18;
99
+ break;
100
+ case 16:
101
+ console.error("Failed to fetch ".concat(url, " after ").concat(retries, " attempts"));
102
+ throw new Error("Fetch failed: ".concat(url));
103
+ case 18:
104
+ attempt++;
105
+ _context.next = 2;
106
+ break;
107
+ case 21:
108
+ case "end":
109
+ return _context.stop();
110
+ }
111
+ }, _callee);
112
+ }));
113
+ return _fetchZipFile.apply(this, arguments);
114
+ }
115
+ function extractZip(_x3, _x4) {
116
+ return _extractZip.apply(this, arguments);
117
+ }
118
+ function _extractZip() {
119
+ _extractZip = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(zipFilePath, outputDir) {
120
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
121
+ while (1) switch (_context2.prev = _context2.next) {
122
+ case 0:
123
+ return _context2.abrupt("return", new Promise(function (resolve, reject) {
124
+ var zip = new _nodeStreamZip["default"]({
125
+ file: zipFilePath,
126
+ storeEntries: true
127
+ });
128
+ zip.on("ready", function () {
129
+ zip.extract(null, outputDir, function (err) {
130
+ zip.close();
131
+ if (err) {
132
+ reject(err);
133
+ } else {
134
+ resolve();
135
+ }
136
+ });
137
+ });
138
+ }));
139
+ case 1:
140
+ case "end":
141
+ return _context2.stop();
142
+ }
143
+ }, _callee2);
144
+ }));
145
+ return _extractZip.apply(this, arguments);
146
+ }
147
+ function reindentJsonFiles(dataDirOrFilePath) {
148
+ if (_fsExtra["default"].statSync(dataDirOrFilePath).isDirectory()) {
149
+ var _iterator = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath)),
150
+ _step;
151
+ try {
152
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
153
+ var dataFileSplitPath = _step.value;
154
+ var dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
155
+ if (dataFilePath.endsWith(".json")) {
156
+ var data = JSON.parse(_fsExtra["default"].readFileSync(dataFilePath, {
157
+ encoding: "utf-8"
158
+ }));
159
+ _fsExtra["default"].writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
160
+ }
161
+ }
162
+ } catch (err) {
163
+ _iterator.e(err);
164
+ } finally {
165
+ _iterator.f();
166
+ }
167
+ } else {
168
+ var _data = JSON.parse(_fsExtra["default"].readFileSync(dataDirOrFilePath, {
169
+ encoding: "utf-8"
170
+ }));
171
+ _fsExtra["default"].writeFileSync(dataDirOrFilePath, JSON.stringify(_data, null, 2));
172
+ }
173
+ }
174
+ var defaultParser = new _fastXmlParser.XMLParser({
175
+ ignoreDeclaration: true,
176
+ ignoreAttributes: false,
177
+ ignorePiTags: true,
178
+ attributeNamePrefix: "",
179
+ textNodeName: "_",
180
+ processEntities: false,
181
+ trimValues: true,
182
+ stopNodes: ["*.texte", "*.intitule"],
183
+ parseTagValue: false,
184
+ parseAttributeValue: false,
185
+ transformTagName: function transformTagName(tagName) {
186
+ return tagName === "Para" ? "para" : tagName;
187
+ }
188
+ });
189
+
190
+ /**
191
+ * Processes a dataset by fetching, unzipping, and converting files from XML to JSON format.
192
+ *
193
+ * @param {any} dataset - The dataset object containing metadata and processing instructions.
194
+ * @param {string} dataDir - The directory where the dataset files will be stored.
195
+ * @param {any} parser - The parser used to convert XML data to JSON.
196
+ * @param {any} options - Options to control the processing behavior, such as fetching and silent mode.
197
+ * @returns {Promise<void>} A promise that resolves when the dataset processing is complete.
198
+ */
199
+ function processDataset(_x5) {
200
+ return _processDataset.apply(this, arguments);
201
+ }
202
+ function _processDataset() {
203
+ _processDataset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(args) {
204
+ var dataset, dataDir, _args$parser, parser, options, zipFilePath, dataDirOrFilePath, _iterator2, _step2, _loop;
205
+ return _regeneratorRuntime().wrap(function _callee3$(_context4) {
206
+ while (1) switch (_context4.prev = _context4.next) {
207
+ case 0:
208
+ dataset = args.dataset, dataDir = args.dataDir, _args$parser = args.parser, parser = _args$parser === void 0 ? defaultParser : _args$parser, options = args.options;
209
+ zipFilePath = _path["default"].join(dataDir, "".concat(dataset.filename, ".zip"));
210
+ dataDirOrFilePath = _path["default"].join(dataDir, dataset.filename);
211
+ _fsExtra["default"].removeSync(dataDirOrFilePath);
212
+ if (!options.fetch) {
213
+ _context4.next = 8;
214
+ break;
215
+ }
216
+ // Fetch & save ZIP file.
217
+ if (!options.silent) {
218
+ console.log("Loading ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
219
+ }
220
+ _context4.next = 8;
221
+ return fetchZipFile(dataset.url, zipFilePath);
222
+ case 8:
223
+ if (!options.silent) {
224
+ console.log("Unzipping ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
225
+ }
226
+ _context4.next = 11;
227
+ return extractZip(zipFilePath, dataDir);
228
+ case 11:
229
+ if (dataset.repairZip !== undefined) {
230
+ if (!options.silent) {
231
+ console.log("Repairing ".concat(dataset.title, ": ").concat(dataset.filename));
232
+ }
233
+ dataset.repairZip(dataset, dataDir);
234
+ }
235
+
236
+ // Convert xml to JSON.
237
+ if (!dataset.filename.endsWith(".xml")) {
238
+ _context4.next = 29;
239
+ break;
240
+ }
241
+ _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath));
242
+ _context4.prev = 14;
243
+ _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
244
+ var dataFileSplitPath, dataFilePath;
245
+ return _regeneratorRuntime().wrap(function _loop$(_context3) {
246
+ while (1) switch (_context3.prev = _context3.next) {
247
+ case 0:
248
+ dataFileSplitPath = _step2.value;
249
+ dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
250
+ if (dataFilePath.endsWith(".xml")) {
251
+ _fsExtra["default"].readFile(dataFilePath, function (err, data) {
252
+ if (err) return console.error(err);
253
+ var result = parser.parse(data);
254
+ var newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
255
+ _fsExtra["default"].copy(dataFilePath, newDataFilePath, function (err) {
256
+ _fsExtra["default"].writeFileSync(newDataFilePath, JSON.stringify(result, null, 2));
257
+ if (err) return console.error(err);
258
+ });
259
+ });
260
+ }
261
+ case 3:
262
+ case "end":
263
+ return _context3.stop();
264
+ }
265
+ }, _loop);
266
+ });
267
+ _iterator2.s();
268
+ case 17:
269
+ if ((_step2 = _iterator2.n()).done) {
270
+ _context4.next = 21;
271
+ break;
272
+ }
273
+ return _context4.delegateYield(_loop(), "t0", 19);
274
+ case 19:
275
+ _context4.next = 17;
276
+ break;
277
+ case 21:
278
+ _context4.next = 26;
279
+ break;
280
+ case 23:
281
+ _context4.prev = 23;
282
+ _context4.t1 = _context4["catch"](14);
283
+ _iterator2.e(_context4.t1);
284
+ case 26:
285
+ _context4.prev = 26;
286
+ _iterator2.f();
287
+ return _context4.finish(26);
288
+ case 29:
289
+ // Reindent JSON file.
290
+ if (!options.silent) {
291
+ console.log("Reidenting ".concat(dataset.title, ": ").concat(dataset.filename));
292
+ }
293
+ reindentJsonFiles(dataDirOrFilePath);
294
+ case 31:
295
+ case "end":
296
+ return _context4.stop();
297
+ }
298
+ }, _callee3, null, [[14, 23, 26, 29]]);
299
+ }));
300
+ return _processDataset.apply(this, arguments);
301
+ }
302
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnNFeHRyYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BhdGgiLCJfc3RyZWFtIiwiX25vZGVTdHJlYW1aaXAiLCJfdXRpbCIsIl9maWxlX3N5c3RlbXMiLCJfZmFzdFhtbFBhcnNlciIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwicGlwZWxpbmUiLCJ1dGlsIiwicHJvbWlzaWZ5Iiwic3RyZWFtIiwiZmV0Y2haaXBGaWxlIiwiX3giLCJfeDIiLCJfZmV0Y2haaXBGaWxlIiwiX2NhbGxlZSIsInVybCIsInppcEZpbGVQYXRoIiwicmV0cmllcyIsImF0dGVtcHQiLCJyZXNwb25zZSIsIl9hcmdzIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInVuZGVmaW5lZCIsImZldGNoIiwib2siLCJib2R5IiwiZnMiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0Iiwic3RhdHVzVGV4dCIsImVycm9yIiwiZXh0cmFjdFppcCIsIl94MyIsIl94NCIsIl9leHRyYWN0WmlwIiwiX2NhbGxlZTIiLCJvdXRwdXREaXIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJyZWplY3QiLCJ6aXAiLCJTdHJlYW1aaXAiLCJmaWxlIiwic3RvcmVFbnRyaWVzIiwib24iLCJleHRyYWN0IiwiZXJyIiwiY2xvc2UiLCJyZWluZGVudEpzb25GaWxlcyIsImRhdGFEaXJPckZpbGVQYXRoIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsIl9pdGVyYXRvciIsIndhbGtEaXIiLCJfc3RlcCIsImRhdGFGaWxlU3BsaXRQYXRoIiwiZGF0YUZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJlbmRzV2l0aCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJkZWZhdWx0UGFyc2VyIiwiWE1MUGFyc2VyIiwiaWdub3JlRGVjbGFyYXRpb24iLCJpZ25vcmVBdHRyaWJ1dGVzIiwiaWdub3JlUGlUYWdzIiwiYXR0cmlidXRlTmFtZVByZWZpeCIsInRleHROb2RlTmFtZSIsInByb2Nlc3NFbnRpdGllcyIsInRyaW1WYWx1ZXMiLCJzdG9wTm9kZXMiLCJwYXJzZVRhZ1ZhbHVlIiwicGFyc2VBdHRyaWJ1dGVWYWx1ZSIsInRyYW5zZm9ybVRhZ05hbWUiLCJ0YWdOYW1lIiwicHJvY2Vzc0RhdGFzZXQiLCJfeDUiLCJfcHJvY2Vzc0RhdGFzZXQiLCJfY2FsbGVlMyIsImFyZ3MiLCJkYXRhc2V0IiwiZGF0YURpciIsIl9hcmdzJHBhcnNlciIsInBhcnNlciIsIm9wdGlvbnMiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2xvb3AiLCJfY2FsbGVlMyQiLCJfY29udGV4dDQiLCJmaWxlbmFtZSIsInJlbW92ZVN5bmMiLCJzaWxlbnQiLCJsb2ciLCJ0aXRsZSIsInJlcGFpclppcCIsIl9sb29wJCIsIl9jb250ZXh0MyIsInJlYWRGaWxlIiwicmVzdWx0IiwibmV3RGF0YUZpbGVQYXRoIiwicmVwbGFjZSIsImNvcHkiLCJ0MSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Byb2Nlc3Nfb3Blbl9kYXRhc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbmltcG9ydCBTdHJlYW1aaXAgZnJvbSBcIm5vZGUtc3RyZWFtLXppcFwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5cbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gXCJmYXN0LXhtbC1wYXJzZXJcIlxuXG5jb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuLy8gRnVuY3Rpb24gdG8gZmV0Y2ggemlwIGZpbGVzIHdpdGggcmV0cnkgbWVjaGFuaXNtXG5hc3luYyBmdW5jdGlvbiBmZXRjaFppcEZpbGUoXG4gIHVybDogc3RyaW5nLFxuICB6aXBGaWxlUGF0aDogc3RyaW5nLFxuICByZXRyaWVzID0gMyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IHJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgYXdhaXQgcGlwZWxpbmUoXG4gICAgICAgIHJlc3BvbnNlLmJvZHkgYXMgdW5rbm93biBhcyBOb2RlSlMuUmVhZGFibGVTdHJlYW0sXG4gICAgICAgIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHppcEZpbGVQYXRoKSxcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoYXR0ZW1wdCA8IHJldHJpZXMgLSAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIGZldGNoIGZvciAke3VybH06ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9IGFmdGVyICR7cmV0cmllc30gYXR0ZW1wdHNgKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGZXRjaCBmYWlsZWQ6ICR7dXJsfWApXG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RaaXAoXG4gIHppcEZpbGVQYXRoOiBzdHJpbmcsXG4gIG91dHB1dERpcjogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgemlwID0gbmV3IFN0cmVhbVppcCh7XG4gICAgICBmaWxlOiB6aXBGaWxlUGF0aCxcbiAgICAgIHN0b3JlRW50cmllczogdHJ1ZSxcbiAgICB9KVxuXG4gICAgemlwLm9uKFwicmVhZHlcIiwgKCkgPT4ge1xuICAgICAgemlwLmV4dHJhY3QobnVsbCEsIG91dHB1dERpciwgKGVycikgPT4ge1xuICAgICAgICB6aXAuY2xvc2UoKVxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWluZGVudEpzb25GaWxlcyhkYXRhRGlyT3JGaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChmcy5zdGF0U3luYyhkYXRhRGlyT3JGaWxlUGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRhdGFGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyT3JGaWxlUGF0aCwgLi4uZGF0YUZpbGVTcGxpdFBhdGgpXG4gICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgZnMucmVhZEZpbGVTeW5jKGRhdGFGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pLFxuICAgICAgICApXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZGF0YUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSlcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMoZGF0YURpck9yRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgICApXG4gICAgZnMud3JpdGVGaWxlU3luYyhkYXRhRGlyT3JGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpXG4gIH1cbn1cblxudHlwZSBQcm9jZXNzRGF0YXNldEFyZ3VtZW50cyA9IHtcbiAgZGF0YXNldDogYW55XG4gIGRhdGFEaXI6IHN0cmluZ1xuICBwYXJzZXI6IGFueVxuICBvcHRpb25zOiBhbnlcbn1cblxuY29uc3QgZGVmYXVsdFBhcnNlciA9IG5ldyBYTUxQYXJzZXIoe1xuICBpZ25vcmVEZWNsYXJhdGlvbjogdHJ1ZSxcbiAgaWdub3JlQXR0cmlidXRlczogZmFsc2UsXG4gIGlnbm9yZVBpVGFnczogdHJ1ZSxcbiAgYXR0cmlidXRlTmFtZVByZWZpeDogXCJcIixcbiAgdGV4dE5vZGVOYW1lOiBcIl9cIixcbiAgcHJvY2Vzc0VudGl0aWVzOiBmYWxzZSxcbiAgdHJpbVZhbHVlczogdHJ1ZSxcbiAgc3RvcE5vZGVzOiBbXCIqLnRleHRlXCIsIFwiKi5pbnRpdHVsZVwiXSxcbiAgcGFyc2VUYWdWYWx1ZTogZmFsc2UsXG4gIHBhcnNlQXR0cmlidXRlVmFsdWU6IGZhbHNlLFxuICB0cmFuc2Zvcm1UYWdOYW1lOiAodGFnTmFtZTogc3RyaW5nKSA9PlxuICAgIHRhZ05hbWUgPT09IFwiUGFyYVwiID8gXCJwYXJhXCIgOiB0YWdOYW1lLFxufSlcblxuLyoqXG4gKiBQcm9jZXNzZXMgYSBkYXRhc2V0IGJ5IGZldGNoaW5nLCB1bnppcHBpbmcsIGFuZCBjb252ZXJ0aW5nIGZpbGVzIGZyb20gWE1MIHRvIEpTT04gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7YW55fSBkYXRhc2V0IC0gVGhlIGRhdGFzZXQgb2JqZWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgYW5kIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLlxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGFEaXIgLSBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBkYXRhc2V0IGZpbGVzIHdpbGwgYmUgc3RvcmVkLlxuICogQHBhcmFtIHthbnl9IHBhcnNlciAtIFRoZSBwYXJzZXIgdXNlZCB0byBjb252ZXJ0IFhNTCBkYXRhIHRvIEpTT04uXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29udHJvbCB0aGUgcHJvY2Vzc2luZyBiZWhhdmlvciwgc3VjaCBhcyBmZXRjaGluZyBhbmQgc2lsZW50IG1vZGUuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZGF0YXNldCBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RhdGFzZXQoXG4gIGFyZ3M6IFByb2Nlc3NEYXRhc2V0QXJndW1lbnRzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGF0YXNldCwgZGF0YURpciwgcGFyc2VyID0gZGVmYXVsdFBhcnNlciwgb3B0aW9ucyB9ID0gYXJnc1xuICBjb25zdCB6aXBGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBgJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICBjb25zdCBkYXRhRGlyT3JGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICBmcy5yZW1vdmVTeW5jKGRhdGFEaXJPckZpbGVQYXRoKVxuXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgLy8gRmV0Y2ggJiBzYXZlIFpJUCBmaWxlLlxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgICB9XG4gICAgYXdhaXQgZmV0Y2haaXBGaWxlKGRhdGFzZXQudXJsLCB6aXBGaWxlUGF0aClcbiAgfVxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYFVuemlwcGluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9LnppcGApXG4gIH1cbiAgYXdhaXQgZXh0cmFjdFppcCh6aXBGaWxlUGF0aCwgZGF0YURpcilcblxuICBpZiAoZGF0YXNldC5yZXBhaXJaaXAgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBSZXBhaXJpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfWApXG4gICAgfVxuICAgIGRhdGFzZXQucmVwYWlyWmlwKGRhdGFzZXQsIGRhdGFEaXIpXG4gIH1cblxuICAvLyBDb252ZXJ0IHhtbCB0byBKU09OLlxuICBpZiAoZGF0YXNldC5maWxlbmFtZS5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFGaWxlU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YURpck9yRmlsZVBhdGgpKSB7XG4gICAgICBjb25zdCBkYXRhRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpck9yRmlsZVBhdGgsIC4uLmRhdGFGaWxlU3BsaXRQYXRoKVxuICAgICAgaWYgKGRhdGFGaWxlUGF0aC5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICAgICAgZnMucmVhZEZpbGUoZGF0YUZpbGVQYXRoLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICAgIGxldCByZXN1bHQgPSBwYXJzZXIucGFyc2UoZGF0YSlcbiAgICAgICAgICBjb25zdCBuZXdEYXRhRmlsZVBhdGggPSBkYXRhRmlsZVBhdGgucmVwbGFjZSgvXFwuW14uXSskLywgXCIuanNvblwiKVxuICAgICAgICAgIGZzLmNvcHkoZGF0YUZpbGVQYXRoLCBuZXdEYXRhRmlsZVBhdGgsIChlcnIpID0+IHtcbiAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMobmV3RGF0YUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpKVxuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVpbmRlbnQgSlNPTiBmaWxlLlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYFJlaWRlbnRpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfWApXG4gIH1cbiAgcmVpbmRlbnRKc29uRmlsZXMoZGF0YURpck9yRmlsZVBhdGgpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFLLGFB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
@@ -0,0 +1,136 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import stream from "stream";
4
+ import StreamZip from "node-stream-zip";
5
+ import util from "util";
6
+ import { walkDir } from "../file_systems.mjs";
7
+ import { XMLParser } from "fast-xml-parser";
8
+ const pipeline = util.promisify(stream.pipeline);
9
+
10
+ // Function to fetch zip files with retry mechanism
11
+ async function fetchZipFile(url, zipFilePath, retries = 3) {
12
+ for (let attempt = 0; attempt < retries; attempt++) {
13
+ const response = await fetch(url);
14
+ if (response.ok) {
15
+ await pipeline(response.body, fs.createWriteStream(zipFilePath));
16
+ return;
17
+ } else if (attempt < retries - 1) {
18
+ console.warn(`Retrying fetch for ${url}: ${response.statusText}`);
19
+ } else {
20
+ console.error(`Failed to fetch ${url} after ${retries} attempts`);
21
+ throw new Error(`Fetch failed: ${url}`);
22
+ }
23
+ }
24
+ }
25
+ async function extractZip(zipFilePath, outputDir) {
26
+ return new Promise((resolve, reject) => {
27
+ const zip = new StreamZip({
28
+ file: zipFilePath,
29
+ storeEntries: true
30
+ });
31
+ zip.on("ready", () => {
32
+ zip.extract(null, outputDir, err => {
33
+ zip.close();
34
+ if (err) {
35
+ reject(err);
36
+ } else {
37
+ resolve();
38
+ }
39
+ });
40
+ });
41
+ });
42
+ }
43
+ function reindentJsonFiles(dataDirOrFilePath) {
44
+ if (fs.statSync(dataDirOrFilePath).isDirectory()) {
45
+ for (const dataFileSplitPath of walkDir(dataDirOrFilePath)) {
46
+ const dataFilePath = path.join(dataDirOrFilePath, ...dataFileSplitPath);
47
+ if (dataFilePath.endsWith(".json")) {
48
+ const data = JSON.parse(fs.readFileSync(dataFilePath, {
49
+ encoding: "utf-8"
50
+ }));
51
+ fs.writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
52
+ }
53
+ }
54
+ } else {
55
+ const data = JSON.parse(fs.readFileSync(dataDirOrFilePath, {
56
+ encoding: "utf-8"
57
+ }));
58
+ fs.writeFileSync(dataDirOrFilePath, JSON.stringify(data, null, 2));
59
+ }
60
+ }
61
+ const defaultParser = new XMLParser({
62
+ ignoreDeclaration: true,
63
+ ignoreAttributes: false,
64
+ ignorePiTags: true,
65
+ attributeNamePrefix: "",
66
+ textNodeName: "_",
67
+ processEntities: false,
68
+ trimValues: true,
69
+ stopNodes: ["*.texte", "*.intitule"],
70
+ parseTagValue: false,
71
+ parseAttributeValue: false,
72
+ transformTagName: tagName => tagName === "Para" ? "para" : tagName
73
+ });
74
+
75
+ /**
76
+ * Processes a dataset by fetching, unzipping, and converting files from XML to JSON format.
77
+ *
78
+ * @param {any} dataset - The dataset object containing metadata and processing instructions.
79
+ * @param {string} dataDir - The directory where the dataset files will be stored.
80
+ * @param {any} parser - The parser used to convert XML data to JSON.
81
+ * @param {any} options - Options to control the processing behavior, such as fetching and silent mode.
82
+ * @returns {Promise<void>} A promise that resolves when the dataset processing is complete.
83
+ */
84
+ export async function processDataset(args) {
85
+ const {
86
+ dataset,
87
+ dataDir,
88
+ parser = defaultParser,
89
+ options
90
+ } = args;
91
+ const zipFilePath = path.join(dataDir, `${dataset.filename}.zip`);
92
+ const dataDirOrFilePath = path.join(dataDir, dataset.filename);
93
+ fs.removeSync(dataDirOrFilePath);
94
+ if (options.fetch) {
95
+ // Fetch & save ZIP file.
96
+ if (!options.silent) {
97
+ console.log(`Loading ${dataset.title}: ${dataset.filename}.zip`);
98
+ }
99
+ await fetchZipFile(dataset.url, zipFilePath);
100
+ }
101
+ if (!options.silent) {
102
+ console.log(`Unzipping ${dataset.title}: ${dataset.filename}.zip`);
103
+ }
104
+ await extractZip(zipFilePath, dataDir);
105
+ if (dataset.repairZip !== undefined) {
106
+ if (!options.silent) {
107
+ console.log(`Repairing ${dataset.title}: ${dataset.filename}`);
108
+ }
109
+ dataset.repairZip(dataset, dataDir);
110
+ }
111
+
112
+ // Convert xml to JSON.
113
+ if (dataset.filename.endsWith(".xml")) {
114
+ for (const dataFileSplitPath of walkDir(dataDirOrFilePath)) {
115
+ const dataFilePath = path.join(dataDirOrFilePath, ...dataFileSplitPath);
116
+ if (dataFilePath.endsWith(".xml")) {
117
+ fs.readFile(dataFilePath, function (err, data) {
118
+ if (err) return console.error(err);
119
+ let result = parser.parse(data);
120
+ const newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
121
+ fs.copy(dataFilePath, newDataFilePath, err => {
122
+ fs.writeFileSync(newDataFilePath, JSON.stringify(result, null, 2));
123
+ if (err) return console.error(err);
124
+ });
125
+ });
126
+ }
127
+ }
128
+ }
129
+
130
+ // Reindent JSON file.
131
+ if (!options.silent) {
132
+ console.log(`Reidenting ${dataset.title}: ${dataset.filename}`);
133
+ }
134
+ reindentJsonFiles(dataDirOrFilePath);
135
+ }
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInBhdGgiLCJzdHJlYW0iLCJTdHJlYW1aaXAiLCJ1dGlsIiwid2Fsa0RpciIsIlhNTFBhcnNlciIsInBpcGVsaW5lIiwicHJvbWlzaWZ5IiwiZmV0Y2haaXBGaWxlIiwidXJsIiwiemlwRmlsZVBhdGgiLCJyZXRyaWVzIiwiYXR0ZW1wdCIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImNvbnNvbGUiLCJ3YXJuIiwic3RhdHVzVGV4dCIsImVycm9yIiwiRXJyb3IiLCJleHRyYWN0WmlwIiwib3V0cHV0RGlyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ6aXAiLCJmaWxlIiwic3RvcmVFbnRyaWVzIiwib24iLCJleHRyYWN0IiwiZXJyIiwiY2xvc2UiLCJyZWluZGVudEpzb25GaWxlcyIsImRhdGFEaXJPckZpbGVQYXRoIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsImRhdGFGaWxlU3BsaXRQYXRoIiwiZGF0YUZpbGVQYXRoIiwiam9pbiIsImVuZHNXaXRoIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImRlZmF1bHRQYXJzZXIiLCJpZ25vcmVEZWNsYXJhdGlvbiIsImlnbm9yZUF0dHJpYnV0ZXMiLCJpZ25vcmVQaVRhZ3MiLCJhdHRyaWJ1dGVOYW1lUHJlZml4IiwidGV4dE5vZGVOYW1lIiwicHJvY2Vzc0VudGl0aWVzIiwidHJpbVZhbHVlcyIsInN0b3BOb2RlcyIsInBhcnNlVGFnVmFsdWUiLCJwYXJzZUF0dHJpYnV0ZVZhbHVlIiwidHJhbnNmb3JtVGFnTmFtZSIsInRhZ05hbWUiLCJwcm9jZXNzRGF0YXNldCIsImFyZ3MiLCJkYXRhc2V0IiwiZGF0YURpciIsInBhcnNlciIsIm9wdGlvbnMiLCJmaWxlbmFtZSIsInJlbW92ZVN5bmMiLCJzaWxlbnQiLCJsb2ciLCJ0aXRsZSIsInJlcGFpclppcCIsInVuZGVmaW5lZCIsInJlYWRGaWxlIiwicmVzdWx0IiwibmV3RGF0YUZpbGVQYXRoIiwicmVwbGFjZSIsImNvcHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9wcm9jZXNzX29wZW5fZGF0YXNldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBzdHJlYW0gZnJvbSBcInN0cmVhbVwiXG5pbXBvcnQgU3RyZWFtWmlwIGZyb20gXCJub2RlLXN0cmVhbS16aXBcIlxuaW1wb3J0IHV0aWwgZnJvbSBcInV0aWxcIlxuXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBYTUxQYXJzZXIgfSBmcm9tIFwiZmFzdC14bWwtcGFyc2VyXCJcblxuY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbi8vIEZ1bmN0aW9uIHRvIGZldGNoIHppcCBmaWxlcyB3aXRoIHJldHJ5IG1lY2hhbmlzbVxuYXN5bmMgZnVuY3Rpb24gZmV0Y2haaXBGaWxlKFxuICB1cmw6IHN0cmluZyxcbiAgemlwRmlsZVBhdGg6IHN0cmluZyxcbiAgcmV0cmllcyA9IDMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPCByZXRyaWVzOyBhdHRlbXB0KyspIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGF3YWl0IHBpcGVsaW5lKFxuICAgICAgICByZXNwb25zZS5ib2R5IGFzIHVua25vd24gYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLFxuICAgICAgICBmcy5jcmVhdGVXcml0ZVN0cmVhbSh6aXBGaWxlUGF0aCksXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKGF0dGVtcHQgPCByZXRyaWVzIC0gMSkge1xuICAgICAgY29uc29sZS53YXJuKGBSZXRyeWluZyBmZXRjaCBmb3IgJHt1cmx9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoICR7dXJsfSBhZnRlciAke3JldHJpZXN9IGF0dGVtcHRzYClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmV0Y2ggZmFpbGVkOiAke3VybH1gKVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0WmlwKFxuICB6aXBGaWxlUGF0aDogc3RyaW5nLFxuICBvdXRwdXREaXI6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHppcCA9IG5ldyBTdHJlYW1aaXAoe1xuICAgICAgZmlsZTogemlwRmlsZVBhdGgsXG4gICAgICBzdG9yZUVudHJpZXM6IHRydWUsXG4gICAgfSlcblxuICAgIHppcC5vbihcInJlYWR5XCIsICgpID0+IHtcbiAgICAgIHppcC5leHRyYWN0KG51bGwhLCBvdXRwdXREaXIsIChlcnIpID0+IHtcbiAgICAgICAgemlwLmNsb3NlKClcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVpbmRlbnRKc29uRmlsZXMoZGF0YURpck9yRmlsZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoZnMuc3RhdFN5bmMoZGF0YURpck9yRmlsZVBhdGgpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFGaWxlU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YURpck9yRmlsZVBhdGgpKSB7XG4gICAgICBjb25zdCBkYXRhRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpck9yRmlsZVBhdGgsIC4uLmRhdGFGaWxlU3BsaXRQYXRoKVxuICAgICAgaWYgKGRhdGFGaWxlUGF0aC5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKFxuICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhkYXRhRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgICAgICAgKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRhdGFGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKGRhdGFEaXJPckZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSksXG4gICAgKVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZGF0YURpck9yRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKVxuICB9XG59XG5cbnR5cGUgUHJvY2Vzc0RhdGFzZXRBcmd1bWVudHMgPSB7XG4gIGRhdGFzZXQ6IGFueVxuICBkYXRhRGlyOiBzdHJpbmdcbiAgcGFyc2VyOiBhbnlcbiAgb3B0aW9uczogYW55XG59XG5cbmNvbnN0IGRlZmF1bHRQYXJzZXIgPSBuZXcgWE1MUGFyc2VyKHtcbiAgaWdub3JlRGVjbGFyYXRpb246IHRydWUsXG4gIGlnbm9yZUF0dHJpYnV0ZXM6IGZhbHNlLFxuICBpZ25vcmVQaVRhZ3M6IHRydWUsXG4gIGF0dHJpYnV0ZU5hbWVQcmVmaXg6IFwiXCIsXG4gIHRleHROb2RlTmFtZTogXCJfXCIsXG4gIHByb2Nlc3NFbnRpdGllczogZmFsc2UsXG4gIHRyaW1WYWx1ZXM6IHRydWUsXG4gIHN0b3BOb2RlczogW1wiKi50ZXh0ZVwiLCBcIiouaW50aXR1bGVcIl0sXG4gIHBhcnNlVGFnVmFsdWU6IGZhbHNlLFxuICBwYXJzZUF0dHJpYnV0ZVZhbHVlOiBmYWxzZSxcbiAgdHJhbnNmb3JtVGFnTmFtZTogKHRhZ05hbWU6IHN0cmluZykgPT5cbiAgICB0YWdOYW1lID09PSBcIlBhcmFcIiA/IFwicGFyYVwiIDogdGFnTmFtZSxcbn0pXG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZGF0YXNldCBieSBmZXRjaGluZywgdW56aXBwaW5nLCBhbmQgY29udmVydGluZyBmaWxlcyBmcm9tIFhNTCB0byBKU09OIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge2FueX0gZGF0YXNldCAtIFRoZSBkYXRhc2V0IG9iamVjdCBjb250YWluaW5nIG1ldGFkYXRhIGFuZCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhRGlyIC0gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgZGF0YXNldCBmaWxlcyB3aWxsIGJlIHN0b3JlZC5cbiAqIEBwYXJhbSB7YW55fSBwYXJzZXIgLSBUaGUgcGFyc2VyIHVzZWQgdG8gY29udmVydCBYTUwgZGF0YSB0byBKU09OLlxuICogQHBhcmFtIHthbnl9IG9wdGlvbnMgLSBPcHRpb25zIHRvIGNvbnRyb2wgdGhlIHByb2Nlc3NpbmcgYmVoYXZpb3IsIHN1Y2ggYXMgZmV0Y2hpbmcgYW5kIHNpbGVudCBtb2RlLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGRhdGFzZXQgcHJvY2Vzc2luZyBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NEYXRhc2V0KFxuICBhcmdzOiBQcm9jZXNzRGF0YXNldEFyZ3VtZW50cyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGRhdGFzZXQsIGRhdGFEaXIsIHBhcnNlciA9IGRlZmF1bHRQYXJzZXIsIG9wdGlvbnMgfSA9IGFyZ3NcbiAgY29uc3QgemlwRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpciwgYCR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgY29uc3QgZGF0YURpck9yRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgZnMucmVtb3ZlU3luYyhkYXRhRGlyT3JGaWxlUGF0aClcblxuICBpZiAob3B0aW9ucy5mZXRjaCkge1xuICAgIC8vIEZldGNoICYgc2F2ZSBaSVAgZmlsZS5cbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9LnppcGApXG4gICAgfVxuICAgIGF3YWl0IGZldGNoWmlwRmlsZShkYXRhc2V0LnVybCwgemlwRmlsZVBhdGgpXG4gIH1cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBVbnppcHBpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICB9XG4gIGF3YWl0IGV4dHJhY3RaaXAoemlwRmlsZVBhdGgsIGRhdGFEaXIpXG5cbiAgaWYgKGRhdGFzZXQucmVwYWlyWmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhgUmVwYWlyaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX1gKVxuICAgIH1cbiAgICBkYXRhc2V0LnJlcGFpclppcChkYXRhc2V0LCBkYXRhRGlyKVxuICB9XG5cbiAgLy8gQ29udmVydCB4bWwgdG8gSlNPTi5cbiAgaWYgKGRhdGFzZXQuZmlsZW5hbWUuZW5kc1dpdGgoXCIueG1sXCIpKSB7XG4gICAgZm9yIChjb25zdCBkYXRhRmlsZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFEaXJPckZpbGVQYXRoKSkge1xuICAgICAgY29uc3QgZGF0YUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXJPckZpbGVQYXRoLCAuLi5kYXRhRmlsZVNwbGl0UGF0aClcbiAgICAgIGlmIChkYXRhRmlsZVBhdGguZW5kc1dpdGgoXCIueG1sXCIpKSB7XG4gICAgICAgIGZzLnJlYWRGaWxlKGRhdGFGaWxlUGF0aCwgZnVuY3Rpb24gKGVyciwgZGF0YSkge1xuICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjb25zb2xlLmVycm9yKGVycilcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcGFyc2VyLnBhcnNlKGRhdGEpXG4gICAgICAgICAgY29uc3QgbmV3RGF0YUZpbGVQYXRoID0gZGF0YUZpbGVQYXRoLnJlcGxhY2UoL1xcLlteLl0rJC8sIFwiLmpzb25cIilcbiAgICAgICAgICBmcy5jb3B5KGRhdGFGaWxlUGF0aCwgbmV3RGF0YUZpbGVQYXRoLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG5ld0RhdGFGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSlcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjb25zb2xlLmVycm9yKGVycilcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlaW5kZW50IEpTT04gZmlsZS5cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBSZWlkZW50aW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX1gKVxuICB9XG4gIHJlaW5kZW50SnNvbkZpbGVzKGRhdGFEaXJPckZpbGVQYXRoKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUN2QixPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixPQUFPQyxTQUFTLE1BQU0saUJBQWlCO0FBQ3ZDLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQUEsU0FFZEMsT0FBTztBQUNoQixTQUFTQyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDLE1BQU1DLFFB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
@@ -0,0 +1,7 @@
1
+ type RetrieveTexteLoiArguments = {
2
+ dataset: any;
3
+ dataDir: string;
4
+ options: any;
5
+ };
6
+ export declare function processTextesLoiDataset(args: RetrieveTexteLoiArguments): Promise<number>;
7
+ export {};