@tricoteuses/senat 1.3.1 → 1.3.2

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 (253) hide show
  1. package/lib/config.d.ts +1 -0
  2. package/lib/config.js +14 -45
  3. package/lib/databases.js +86 -143
  4. package/lib/datasets.js +78 -83
  5. package/lib/index.d.ts +7 -4
  6. package/lib/index.js +42 -419
  7. package/lib/loaders.js +149 -654
  8. package/lib/model/ameli.js +83 -21
  9. package/lib/model/debats.js +0 -1
  10. package/lib/model/dosleg.d.ts +1 -1
  11. package/lib/model/dosleg.js +179 -73
  12. package/lib/model/index.d.ts +3 -3
  13. package/lib/model/index.js +12 -46
  14. package/lib/model/questions.js +68 -39
  15. package/lib/model/sens.js +383 -113
  16. package/lib/model/texte.js +220 -290
  17. package/lib/model/util.js +9 -26
  18. package/lib/raw_types/ameli.js +5 -6
  19. package/lib/raw_types/debats.js +5 -6
  20. package/lib/raw_types/dosleg.js +5 -6
  21. package/lib/raw_types/questions.js +5 -6
  22. package/lib/raw_types/sens.js +5 -6
  23. package/lib/raw_types_schemats/ameli.js +1 -43
  24. package/lib/raw_types_schemats/debats.js +1 -22
  25. package/lib/raw_types_schemats/dosleg.js +1 -96
  26. package/lib/raw_types_schemats/questions.js +1 -22
  27. package/lib/raw_types_schemats/sens.js +1 -112
  28. package/lib/scripts/convert_data.js +181 -631
  29. package/lib/scripts/datautil.js +17 -60
  30. package/lib/scripts/parse_textes.js +46 -129
  31. package/lib/scripts/retrieve_documents.js +247 -513
  32. package/lib/scripts/retrieve_open_data.js +211 -368
  33. package/lib/scripts/retrieve_senateurs_photos.js +144 -239
  34. package/lib/scripts/shared/cli_helpers.js +30 -30
  35. package/lib/scripts/shared/util.js +28 -94
  36. package/lib/strings.js +20 -45
  37. package/lib/types/ameli.d.ts +1 -1
  38. package/lib/types/ameli.js +14 -25
  39. package/lib/types/debats.d.ts +1 -1
  40. package/lib/types/debats.js +3 -21
  41. package/lib/types/dosleg.d.ts +1 -1
  42. package/lib/types/dosleg.js +152 -119
  43. package/lib/types/questions.d.ts +1 -1
  44. package/lib/types/questions.js +1 -13
  45. package/lib/types/sens.d.ts +1 -1
  46. package/lib/types/sens.js +1 -13
  47. package/lib/types/sessions.js +44 -49
  48. package/lib/types/texte.js +17 -22
  49. package/lib/validators/config.js +47 -111
  50. package/lib/validators/senat.js +1 -5
  51. package/package.json +16 -38
  52. package/lib/aggregates.d.ts +0 -52
  53. package/lib/aggregates.mjs +0 -930
  54. package/lib/aggregates.ts +0 -833
  55. package/lib/config.mjs +0 -16
  56. package/lib/config.ts +0 -26
  57. package/lib/data/legislatures.json +0 -38
  58. package/lib/databases.mjs +0 -57
  59. package/lib/databases.ts +0 -71
  60. package/lib/datasets.mjs +0 -78
  61. package/lib/datasets.ts +0 -118
  62. package/lib/fields.d.ts +0 -10
  63. package/lib/fields.mjs +0 -68
  64. package/lib/fields.ts +0 -29
  65. package/lib/index.mjs +0 -4
  66. package/lib/index.ts +0 -42
  67. package/lib/inserters.d.ts +0 -98
  68. package/lib/inserters.mjs +0 -500
  69. package/lib/inserters.ts +0 -521
  70. package/lib/loaders.mjs +0 -158
  71. package/lib/loaders.ts +0 -271
  72. package/lib/model/ameli.mjs +0 -84
  73. package/lib/model/ameli.ts +0 -100
  74. package/lib/model/debats.mjs +0 -1
  75. package/lib/model/debats.ts +0 -0
  76. package/lib/model/dosleg.mjs +0 -196
  77. package/lib/model/dosleg.ts +0 -240
  78. package/lib/model/index.mjs +0 -4
  79. package/lib/model/index.ts +0 -14
  80. package/lib/model/questions.mjs +0 -71
  81. package/lib/model/questions.ts +0 -93
  82. package/lib/model/sens.mjs +0 -415
  83. package/lib/model/sens.ts +0 -516
  84. package/lib/model/texte.mjs +0 -208
  85. package/lib/model/texte.ts +0 -229
  86. package/lib/model/util.mjs +0 -19
  87. package/lib/model/util.ts +0 -32
  88. package/lib/raw_types/ameli.mjs +0 -5
  89. package/lib/raw_types/ameli.ts +0 -951
  90. package/lib/raw_types/debats.mjs +0 -5
  91. package/lib/raw_types/debats.ts +0 -222
  92. package/lib/raw_types/dosleg.mjs +0 -5
  93. package/lib/raw_types/dosleg.ts +0 -3625
  94. package/lib/raw_types/questions.mjs +0 -5
  95. package/lib/raw_types/questions.ts +0 -427
  96. package/lib/raw_types/sens.mjs +0 -5
  97. package/lib/raw_types/sens.ts +0 -4499
  98. package/lib/raw_types_kysely/ameli.d.ts +0 -6
  99. package/lib/raw_types_kysely/ameli.mjs +0 -7
  100. package/lib/raw_types_kysely/ameli.ts +0 -6
  101. package/lib/raw_types_kysely/debats.d.ts +0 -6
  102. package/lib/raw_types_kysely/debats.mjs +0 -7
  103. package/lib/raw_types_kysely/debats.ts +0 -6
  104. package/lib/raw_types_kysely/dosleg.d.ts +0 -6
  105. package/lib/raw_types_kysely/dosleg.mjs +0 -7
  106. package/lib/raw_types_kysely/dosleg.ts +0 -6
  107. package/lib/raw_types_kysely/questions.d.ts +0 -6
  108. package/lib/raw_types_kysely/questions.mjs +0 -7
  109. package/lib/raw_types_kysely/questions.ts +0 -6
  110. package/lib/raw_types_kysely/sens.d.ts +0 -6
  111. package/lib/raw_types_kysely/sens.mjs +0 -7
  112. package/lib/raw_types_kysely/sens.ts +0 -6
  113. package/lib/raw_types_kysely/texte.d.ts +0 -45
  114. package/lib/raw_types_kysely/texte.mjs +0 -7
  115. package/lib/raw_types_kysely/texte.ts +0 -53
  116. package/lib/raw_types_schemats/ameli.mjs +0 -2
  117. package/lib/raw_types_schemats/ameli.ts +0 -601
  118. package/lib/raw_types_schemats/debats.mjs +0 -2
  119. package/lib/raw_types_schemats/debats.ts +0 -145
  120. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  121. package/lib/raw_types_schemats/dosleg.ts +0 -2195
  122. package/lib/raw_types_schemats/questions.mjs +0 -2
  123. package/lib/raw_types_schemats/questions.ts +0 -251
  124. package/lib/raw_types_schemats/sens.mjs +0 -2
  125. package/lib/raw_types_schemats/sens.ts +0 -2907
  126. package/lib/scripts/convert_data.mjs +0 -181
  127. package/lib/scripts/convert_data.ts +0 -243
  128. package/lib/scripts/datautil.mjs +0 -16
  129. package/lib/scripts/datautil.ts +0 -19
  130. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  131. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  132. package/lib/scripts/parse_textes.mjs +0 -46
  133. package/lib/scripts/parse_textes.ts +0 -65
  134. package/lib/scripts/retrieve_documents.mjs +0 -249
  135. package/lib/scripts/retrieve_documents.ts +0 -298
  136. package/lib/scripts/retrieve_open_data.mjs +0 -217
  137. package/lib/scripts/retrieve_open_data.ts +0 -274
  138. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  139. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  140. package/lib/scripts/retrieve_textes.d.ts +0 -1
  141. package/lib/scripts/retrieve_textes.mjs +0 -328
  142. package/lib/scripts/retrieve_textes.ts +0 -143
  143. package/lib/scripts/shared/cli_helpers.ts +0 -36
  144. package/lib/scripts/shared/util.ts +0 -33
  145. package/lib/src/aggregates.d.ts +0 -52
  146. package/lib/src/aggregates.mjs +0 -726
  147. package/lib/src/config.d.ts +0 -2
  148. package/lib/src/config.mjs +0 -16
  149. package/lib/src/databases.d.ts +0 -18
  150. package/lib/src/databases.mjs +0 -55
  151. package/lib/src/datasets.d.ts +0 -28
  152. package/lib/src/datasets.mjs +0 -78
  153. package/lib/src/fields.d.ts +0 -10
  154. package/lib/src/fields.mjs +0 -22
  155. package/lib/src/index.d.ts +0 -8
  156. package/lib/src/index.mjs +0 -7
  157. package/lib/src/inserters.d.ts +0 -98
  158. package/lib/src/inserters.mjs +0 -360
  159. package/lib/src/loaders.d.ts +0 -36
  160. package/lib/src/loaders.mjs +0 -107
  161. package/lib/src/model/ameli.d.ts +0 -4
  162. package/lib/src/model/ameli.js +0 -57
  163. package/lib/src/model/debats.d.ts +0 -4
  164. package/lib/src/model/debats.js +0 -43
  165. package/lib/src/model/dosleg.d.ts +0 -197
  166. package/lib/src/model/dosleg.js +0 -169
  167. package/lib/src/model/index.d.ts +0 -4
  168. package/lib/src/model/index.js +0 -4
  169. package/lib/src/model/questions.d.ts +0 -89
  170. package/lib/src/model/questions.js +0 -76
  171. package/lib/src/model/sens.d.ts +0 -390
  172. package/lib/src/model/sens.js +0 -339
  173. package/lib/src/model/texte.d.ts +0 -7
  174. package/lib/src/model/texte.js +0 -183
  175. package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
  176. package/lib/src/raw_types_kysely/ameli.js +0 -5
  177. package/lib/src/raw_types_kysely/debats.d.ts +0 -207
  178. package/lib/src/raw_types_kysely/debats.js +0 -5
  179. package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
  180. package/lib/src/raw_types_kysely/dosleg.js +0 -5
  181. package/lib/src/raw_types_kysely/questions.d.ts +0 -414
  182. package/lib/src/raw_types_kysely/questions.js +0 -5
  183. package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
  184. package/lib/src/raw_types_kysely/sens.js +0 -5
  185. package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
  186. package/lib/src/raw_types_schemats/ameli.js +0 -2
  187. package/lib/src/raw_types_schemats/debats.d.ts +0 -127
  188. package/lib/src/raw_types_schemats/debats.js +0 -2
  189. package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
  190. package/lib/src/raw_types_schemats/dosleg.js +0 -2
  191. package/lib/src/raw_types_schemats/questions.d.ts +0 -231
  192. package/lib/src/raw_types_schemats/questions.js +0 -2
  193. package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
  194. package/lib/src/raw_types_schemats/sens.js +0 -2
  195. package/lib/src/scripts/convert_data.d.ts +0 -1
  196. package/lib/src/scripts/convert_data.js +0 -95
  197. package/lib/src/scripts/datautil.d.ts +0 -5
  198. package/lib/src/scripts/datautil.js +0 -16
  199. package/lib/src/scripts/parse_textes.d.ts +0 -1
  200. package/lib/src/scripts/parse_textes.js +0 -47
  201. package/lib/src/scripts/retrieve_documents.d.ts +0 -1
  202. package/lib/src/scripts/retrieve_documents.js +0 -258
  203. package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
  204. package/lib/src/scripts/retrieve_open_data.js +0 -214
  205. package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
  206. package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
  207. package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
  208. package/lib/src/scripts/shared/cli_helpers.js +0 -32
  209. package/lib/src/scripts/shared/util.d.ts +0 -3
  210. package/lib/src/scripts/shared/util.js +0 -28
  211. package/lib/src/strings.d.ts +0 -1
  212. package/lib/src/strings.mjs +0 -18
  213. package/lib/src/types/ameli.d.ts +0 -10
  214. package/lib/src/types/ameli.js +0 -13
  215. package/lib/src/types/debats.d.ts +0 -4
  216. package/lib/src/types/debats.js +0 -2
  217. package/lib/src/types/dosleg.d.ts +0 -98
  218. package/lib/src/types/dosleg.js +0 -151
  219. package/lib/src/types/questions.d.ts +0 -2
  220. package/lib/src/types/questions.js +0 -1
  221. package/lib/src/types/sens.d.ts +0 -10
  222. package/lib/src/types/sens.js +0 -1
  223. package/lib/src/types/sessions.d.ts +0 -42
  224. package/lib/src/types/sessions.js +0 -43
  225. package/lib/src/types/texte.d.ts +0 -61
  226. package/lib/src/types/texte.js +0 -16
  227. package/lib/src/validators/config.d.ts +0 -1
  228. package/lib/src/validators/config.js +0 -54
  229. package/lib/src/validators/senat.d.ts +0 -0
  230. package/lib/src/validators/senat.js +0 -24
  231. package/lib/strings.mjs +0 -18
  232. package/lib/strings.ts +0 -26
  233. package/lib/types/ameli.mjs +0 -13
  234. package/lib/types/ameli.ts +0 -21
  235. package/lib/types/debats.mjs +0 -2
  236. package/lib/types/debats.ts +0 -6
  237. package/lib/types/dosleg.mjs +0 -151
  238. package/lib/types/dosleg.ts +0 -284
  239. package/lib/types/questions.mjs +0 -1
  240. package/lib/types/questions.ts +0 -3
  241. package/lib/types/sens.mjs +0 -1
  242. package/lib/types/sens.ts +0 -12
  243. package/lib/types/sessions.mjs +0 -43
  244. package/lib/types/sessions.ts +0 -42
  245. package/lib/types/texte.mjs +0 -16
  246. package/lib/types/texte.ts +0 -76
  247. package/lib/typings/windows-1252.d.js +0 -2
  248. package/lib/typings/windows-1252.d.mjs +0 -2
  249. package/lib/typings/windows-1252.d.ts +0 -11
  250. package/lib/validators/config.mjs +0 -54
  251. package/lib/validators/config.ts +0 -79
  252. package/lib/validators/senat.mjs +0 -24
  253. package/lib/validators/senat.ts +0 -26
@@ -1,321 +1,251 @@
1
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.is-array.js");
8
- require("core-js/modules/es.array.iterator.js");
9
- require("core-js/modules/es.array.slice.js");
10
- require("core-js/modules/es.function.name.js");
11
- require("core-js/modules/es.object.create.js");
12
- require("core-js/modules/es.object.define-property.js");
13
- require("core-js/modules/es.object.get-prototype-of.js");
14
- require("core-js/modules/es.object.set-prototype-of.js");
15
- require("core-js/modules/es.promise.js");
16
- require("core-js/modules/web.dom-collections.iterator.js");
17
- Object.defineProperty(exports, "__esModule", {
18
- value: true
19
- });
20
- exports.parseExposeDesMotifs = parseExposeDesMotifs;
21
- exports.parseExposeDesMotifsFromFile = parseExposeDesMotifsFromFile;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformTexte = transformTexte;
4
+ exports.transformExposeDesMotifs = transformExposeDesMotifs;
22
5
  exports.parseTexte = parseTexte;
23
6
  exports.parseTexteFromFile = parseTexteFromFile;
24
- exports.transformExposeDesMotifs = transformExposeDesMotifs;
25
- exports.transformTexte = transformTexte;
26
- require("core-js/modules/es.array.concat.js");
27
- require("core-js/modules/es.array.filter.js");
28
- require("core-js/modules/es.array.for-each.js");
29
- require("core-js/modules/es.array.from.js");
30
- require("core-js/modules/es.date.to-string.js");
31
- require("core-js/modules/es.object.to-string.js");
32
- require("core-js/modules/es.parse-int.js");
33
- require("core-js/modules/es.regexp.constructor.js");
34
- require("core-js/modules/es.regexp.exec.js");
35
- require("core-js/modules/es.regexp.to-string.js");
36
- require("core-js/modules/es.string.iterator.js");
37
- require("core-js/modules/es.string.trim.js");
38
- require("core-js/modules/web.dom-collections.for-each.js");
39
- var _jsdom = require("jsdom");
40
- var _datautil = require("../scripts/datautil");
41
- var _texte = require("../types/texte");
42
- 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; }
43
- 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); }
44
- 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); }); }; }
45
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
46
- 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."); }
47
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
48
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
49
- 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; } } }; }
50
- 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; } }
51
- 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; }
7
+ exports.parseExposeDesMotifs = parseExposeDesMotifs;
8
+ exports.parseExposeDesMotifsFromFile = parseExposeDesMotifsFromFile;
9
+ const jsdom_1 = require("jsdom");
10
+ const datautil_1 = require("../scripts/datautil");
11
+ const texte_1 = require("../types/texte");
52
12
  function buildWorklow(metaElement) {
53
- var stepElements = metaElement.querySelectorAll("workflow step");
54
- var steps = [];
55
- var _iterator = _createForOfIteratorHelper(stepElements),
56
- _step;
57
- try {
58
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
59
- var _stepElement$getAttri, _AKN_WORKFLOW_IDENTIF, _stepElement$getAttri2;
60
- var stepElement = _step.value;
61
- var identification = (_stepElement$getAttri = stepElement.getAttribute("href")) !== null && _stepElement$getAttri !== void 0 ? _stepElement$getAttri : "";
62
- var identificationParts = (_AKN_WORKFLOW_IDENTIF = _datautil.AKN_WORKFLOW_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)) === null || _AKN_WORKFLOW_IDENTIF === void 0 ? void 0 : _AKN_WORKFLOW_IDENTIF.groups;
63
- steps.push({
64
- eId: stepElement.getAttribute("eId"),
65
- date: stepElement.getAttribute("date") ? new Date((_stepElement$getAttri2 = stepElement.getAttribute("date")) !== null && _stepElement$getAttri2 !== void 0 ? _stepElement$getAttri2 : "") : null,
66
- type: (identificationParts === null || identificationParts === void 0 ? void 0 : identificationParts.type) || null,
67
- session: (identificationParts === null || identificationParts === void 0 ? void 0 : identificationParts.session) || null,
68
- numero: (identificationParts === null || identificationParts === void 0 ? void 0 : identificationParts.numTexte) || null,
69
- version: identificationParts !== null && identificationParts !== void 0 && identificationParts.version ? identificationParts.version : null,
70
- outcome: stepElement.getAttribute("outcome")
71
- });
13
+ const stepElements = metaElement.querySelectorAll("workflow step");
14
+ const steps = [];
15
+ for (const stepElement of stepElements) {
16
+ const identification = stepElement.getAttribute("href") ?? "";
17
+ const identificationParts = datautil_1.AKN_WORKFLOW_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)?.groups;
18
+ steps.push({
19
+ eId: stepElement.getAttribute("eId"),
20
+ date: stepElement.getAttribute("date")
21
+ ? new Date(stepElement.getAttribute("date") ?? "")
22
+ : null,
23
+ type: identificationParts?.["type"] || null,
24
+ session: identificationParts?.["session"] || null,
25
+ numero: identificationParts?.["numTexte"] || null,
26
+ version: identificationParts?.["version"]
27
+ ? identificationParts["version"]
28
+ : null,
29
+ outcome: stepElement.getAttribute("outcome"),
30
+ });
72
31
  }
73
- } catch (err) {
74
- _iterator.e(err);
75
- } finally {
76
- _iterator.f();
77
- }
78
- return steps;
32
+ return steps;
79
33
  }
80
34
  function buildDivision(node, index) {
81
- var _titleNode$textConten, _titleNode$textConten2, _titleNode$innerHTML$, _titleNode$innerHTML, _subtitleNode$textCon, _subtitleNode$textCon2, _subtitleNode$innerHT, _subtitleNode$innerHT2;
82
- var eId = node.getAttribute("eId");
83
- var tag = node.nodeName;
84
- var level = _texte.DivisionType[tag];
85
- var titleNode = node.querySelector("num");
86
- var subtitleNode = node.querySelector("heading");
87
- var headings = [].concat(_toConsumableArray(titleNode ? [{
88
- text: (_titleNode$textConten = (_titleNode$textConten2 = titleNode.textContent) === null || _titleNode$textConten2 === void 0 ? void 0 : _titleNode$textConten2.trim()) !== null && _titleNode$textConten !== void 0 ? _titleNode$textConten : null,
89
- html: (_titleNode$innerHTML$ = (_titleNode$innerHTML = titleNode.innerHTML) === null || _titleNode$innerHTML === void 0 ? void 0 : _titleNode$innerHTML.trim()) !== null && _titleNode$innerHTML$ !== void 0 ? _titleNode$innerHTML$ : null
90
- }] : []), _toConsumableArray(subtitleNode ? [{
91
- text: (_subtitleNode$textCon = (_subtitleNode$textCon2 = subtitleNode.textContent) === null || _subtitleNode$textCon2 === void 0 ? void 0 : _subtitleNode$textCon2.trim()) !== null && _subtitleNode$textCon !== void 0 ? _subtitleNode$textCon : null,
92
- html: (_subtitleNode$innerHT = (_subtitleNode$innerHT2 = subtitleNode.innerHTML) === null || _subtitleNode$innerHT2 === void 0 ? void 0 : _subtitleNode$innerHT2.trim()) !== null && _subtitleNode$innerHT !== void 0 ? _subtitleNode$innerHT : null
93
- }] : []));
94
- var division = {
95
- index: index,
96
- eId: eId,
97
- tag: tag,
98
- level: level,
99
- headings: headings
100
- };
101
- if (tag === "article") {
102
- division.alineas = [];
103
- }
104
- return division;
35
+ const eId = node.getAttribute("eId");
36
+ const tag = node.nodeName;
37
+ const level = texte_1.DivisionType[tag];
38
+ const titleNode = node.querySelector("num");
39
+ const subtitleNode = node.querySelector("heading");
40
+ const headings = [
41
+ ...(titleNode
42
+ ? [
43
+ {
44
+ text: titleNode.textContent?.trim() ?? null,
45
+ html: titleNode.innerHTML?.trim() ?? null,
46
+ },
47
+ ]
48
+ : []),
49
+ ...(subtitleNode
50
+ ? [
51
+ {
52
+ text: subtitleNode.textContent?.trim() ?? null,
53
+ html: subtitleNode.innerHTML?.trim() ?? null,
54
+ },
55
+ ]
56
+ : []),
57
+ ];
58
+ const division = {
59
+ index,
60
+ eId,
61
+ tag,
62
+ level,
63
+ headings,
64
+ };
65
+ if (tag === "article") {
66
+ ;
67
+ division.alineas = [];
68
+ }
69
+ return division;
105
70
  }
106
71
  function buildAlinea(contentNode, alineaNode) {
107
- var _querySelector$textCo, _querySelector, _getAttribute, _textContent$trim, _textContent, _innerHTML$trim, _innerHTML;
108
- var eId = alineaNode.getAttribute("eId");
109
- var heading = {
110
- text: (_querySelector$textCo = (_querySelector = alineaNode.querySelector("num")) === null || _querySelector === void 0 ? void 0 : _querySelector.textContent) !== null && _querySelector$textCo !== void 0 ? _querySelector$textCo : null
111
- };
112
- var pastille = (_getAttribute = alineaNode.getAttribute("data:pastille")) !== null && _getAttribute !== void 0 ? _getAttribute : null;
113
- return {
114
- eId: eId,
115
- heading: heading,
116
- text: (_textContent$trim = (_textContent = contentNode.textContent) === null || _textContent === void 0 ? void 0 : _textContent.trim()) !== null && _textContent$trim !== void 0 ? _textContent$trim : null,
117
- html: (_innerHTML$trim = (_innerHTML = contentNode.innerHTML) === null || _innerHTML === void 0 ? void 0 : _innerHTML.trim()) !== null && _innerHTML$trim !== void 0 ? _innerHTML$trim : null,
118
- pastille: pastille
119
- };
72
+ const eId = alineaNode.getAttribute("eId");
73
+ const heading = {
74
+ text: alineaNode.querySelector("num")?.textContent ?? null,
75
+ };
76
+ const pastille = alineaNode.getAttribute("data:pastille") ?? null;
77
+ return {
78
+ eId,
79
+ heading,
80
+ text: contentNode.textContent?.trim() ?? null,
81
+ html: contentNode.innerHTML?.trim() ?? null,
82
+ pastille,
83
+ };
120
84
  }
121
85
  function buildEmptyArticle(index) {
122
- return {
123
- index: index,
124
- eId: "",
125
- tag: "article",
126
- level: _texte.DivisionType["article"],
127
- headings: [],
128
- alineas: []
129
- };
86
+ return {
87
+ index: index,
88
+ eId: "",
89
+ tag: "article",
90
+ level: texte_1.DivisionType["article"],
91
+ headings: [],
92
+ alineas: [],
93
+ };
130
94
  }
131
95
  function flattenTexte(texteContentRoot) {
132
- var divisions = [];
133
- var divisionIndex = 0;
134
- var _iter = function iter(node) {
135
- if (node.nodeName === "content") {
136
- return;
137
- }
138
- switch (node.nodeName) {
139
- case "tome":
140
- case "part":
141
- case "book":
142
- case "title":
143
- case "subtitle":
144
- case "chapter":
145
- case "section":
146
- case "subsection":
147
- case "paragraph":
148
- case "article":
149
- divisions.push(buildDivision(node, divisionIndex++));
150
- break;
151
- }
152
- if (node.nodeName === "alinea") {
153
- Array.from(node.childNodes)
154
- // Find direct content children programmatically
155
- // because `:scope` selector does not work
156
- // https://github.com/jsdom/jsdom/issues/2998
157
- .filter(function (alineaChildNode) {
158
- return alineaChildNode.nodeName === "content";
159
- }).forEach(function (alineaContentNode) {
160
- // Hypothesis: alineas should always be enclosed in articles
161
- var lastArticle = divisions.findLast(function (division) {
162
- return division.tag === "article";
163
- });
164
- if (!lastArticle) {
165
- lastArticle = buildEmptyArticle(divisionIndex++);
166
- divisions.push(lastArticle);
96
+ const divisions = [];
97
+ let divisionIndex = 0;
98
+ const iter = (node) => {
99
+ if (node.nodeName === "content") {
100
+ return;
167
101
  }
168
- lastArticle.alineas.push(buildAlinea(alineaContentNode, node));
169
- });
170
- }
171
- if (node.hasChildNodes()) {
172
- node.childNodes.forEach(function (childNode) {
173
- return _iter(childNode);
174
- });
175
- }
176
- };
177
- _iter(texteContentRoot);
178
- return divisions;
102
+ switch (node.nodeName) {
103
+ case "tome":
104
+ case "part":
105
+ case "book":
106
+ case "title":
107
+ case "subtitle":
108
+ case "chapter":
109
+ case "section":
110
+ case "subsection":
111
+ case "paragraph":
112
+ case "article":
113
+ divisions.push(buildDivision(node, divisionIndex++));
114
+ break;
115
+ }
116
+ if (node.nodeName === "alinea") {
117
+ Array.from(node.childNodes)
118
+ // Find direct content children programmatically
119
+ // because `:scope` selector does not work
120
+ // https://github.com/jsdom/jsdom/issues/2998
121
+ .filter((alineaChildNode) => alineaChildNode.nodeName === "content")
122
+ .forEach((alineaContentNode) => {
123
+ // Hypothesis: alineas should always be enclosed in articles
124
+ let lastArticle = divisions.findLast((division) => division.tag === "article");
125
+ if (!lastArticle) {
126
+ lastArticle = buildEmptyArticle(divisionIndex++);
127
+ divisions.push(lastArticle);
128
+ }
129
+ lastArticle.alineas.push(buildAlinea(alineaContentNode, node));
130
+ });
131
+ }
132
+ if (node.hasChildNodes()) {
133
+ node.childNodes.forEach((childNode) => iter(childNode));
134
+ }
135
+ };
136
+ iter(texteContentRoot);
137
+ return divisions;
179
138
  }
180
139
  function transformTexte(document) {
181
- var _metaElement$querySel, _metaElement$querySel2, _AKN_IDENTIFICATION_S, _metaElement$querySel3, _metaElement$querySel4, _metaElement$querySel5, _preambleElement$quer, _metaElement$querySel6, _metaElement$querySel7, _metaElement$querySel8, _metaElement$querySel9;
182
- var metaElement = document.querySelector("meta");
183
- var preambleElement = document.querySelector("preamble");
184
- var identification = (_metaElement$querySel = metaElement === null || metaElement === void 0 || (_metaElement$querySel2 = metaElement.querySelector("FRBRExpression FRBRuri")) === null || _metaElement$querySel2 === void 0 ? void 0 : _metaElement$querySel2.getAttribute("value")) !== null && _metaElement$querySel !== void 0 ? _metaElement$querySel : "";
185
- var identificationParts = (_AKN_IDENTIFICATION_S = _datautil.AKN_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)) === null || _AKN_IDENTIFICATION_S === void 0 ? void 0 : _AKN_IDENTIFICATION_S.groups;
186
- var bodyElement = document.querySelector("body");
187
- var datePresentation = metaElement === null || metaElement === void 0 || (_metaElement$querySel3 = metaElement.querySelector("FRBRdate[name='#presentation']")) === null || _metaElement$querySel3 === void 0 ? void 0 : _metaElement$querySel3.getAttribute("date");
188
- var dateDepot = metaElement === null || metaElement === void 0 || (_metaElement$querySel4 = metaElement.querySelector("FRBRdate[name='#depot']")) === null || _metaElement$querySel4 === void 0 ? void 0 : _metaElement$querySel4.getAttribute("date");
189
- var datePublicationXml = metaElement === null || metaElement === void 0 || (_metaElement$querySel5 = metaElement.querySelector("FRBRdate[name='#publication-xml']")) === null || _metaElement$querySel5 === void 0 ? void 0 : _metaElement$querySel5.getAttribute("date");
190
- return {
191
- titre: (preambleElement === null || preambleElement === void 0 || (_preambleElement$quer = preambleElement.querySelector("docTitle")) === null || _preambleElement$quer === void 0 ? void 0 : _preambleElement$quer.textContent) || null,
192
- titreCourt: (metaElement === null || metaElement === void 0 || (_metaElement$querySel6 = metaElement.querySelector("FRBRalias[name='intitule-court']")) === null || _metaElement$querySel6 === void 0 ? void 0 : _metaElement$querySel6.getAttribute("value")) || null,
193
- signetDossier: (metaElement === null || metaElement === void 0 || (_metaElement$querySel7 = metaElement.querySelector("FRBRalias[name='signet-dossier-legislatif-senat']")) === null || _metaElement$querySel7 === void 0 ? void 0 : _metaElement$querySel7.getAttribute("value")) || null,
194
- urlDossierSenat: (metaElement === null || metaElement === void 0 || (_metaElement$querySel8 = metaElement.querySelector("FRBRalias[name='url-senat']")) === null || _metaElement$querySel8 === void 0 ? void 0 : _metaElement$querySel8.getAttribute("value")) || null,
195
- urlDossierAssemblee: (metaElement === null || metaElement === void 0 || (_metaElement$querySel9 = metaElement.querySelector("FRBRalias[name='url-AN']")) === null || _metaElement$querySel9 === void 0 ? void 0 : _metaElement$querySel9.getAttribute("value")) || null,
196
- type: (identificationParts === null || identificationParts === void 0 ? void 0 : identificationParts.type) || null,
197
- session: (identificationParts === null || identificationParts === void 0 ? void 0 : identificationParts.session) || null,
198
- numero: identificationParts !== null && identificationParts !== void 0 && identificationParts.numTexte ? parseInt(identificationParts.numTexte) : null,
199
- datePresentation: datePresentation ? new Date(datePresentation) : null,
200
- dateDepot: dateDepot ? new Date(dateDepot) : null,
201
- datePublicationXml: datePublicationXml ? new Date(datePublicationXml) : null,
202
- version: identificationParts !== null && identificationParts !== void 0 && identificationParts.version ? identificationParts.version : null,
203
- workflow: metaElement ? buildWorklow(metaElement) : [],
204
- divisions: bodyElement ? flattenTexte(bodyElement) : []
205
- };
140
+ const metaElement = document.querySelector("meta");
141
+ const preambleElement = document.querySelector("preamble");
142
+ const identification = metaElement
143
+ ?.querySelector("FRBRExpression FRBRuri")
144
+ ?.getAttribute("value") ?? "";
145
+ const identificationParts = datautil_1.AKN_IDENTIFICATION_STRUCTURE_REGEXP.exec(identification)?.groups;
146
+ const bodyElement = document.querySelector("body");
147
+ const datePresentation = metaElement
148
+ ?.querySelector("FRBRdate[name='#presentation']")
149
+ ?.getAttribute("date");
150
+ const dateDepot = metaElement
151
+ ?.querySelector("FRBRdate[name='#depot']")
152
+ ?.getAttribute("date");
153
+ const datePublicationXml = metaElement
154
+ ?.querySelector("FRBRdate[name='#publication-xml']")
155
+ ?.getAttribute("date");
156
+ return {
157
+ titre: preambleElement?.querySelector("docTitle")?.textContent || null,
158
+ titreCourt: metaElement
159
+ ?.querySelector("FRBRalias[name='intitule-court']")
160
+ ?.getAttribute("value") || null,
161
+ signetDossier: metaElement
162
+ ?.querySelector("FRBRalias[name='signet-dossier-legislatif-senat']")
163
+ ?.getAttribute("value") || null,
164
+ urlDossierSenat: metaElement
165
+ ?.querySelector("FRBRalias[name='url-senat']")
166
+ ?.getAttribute("value") || null,
167
+ urlDossierAssemblee: metaElement
168
+ ?.querySelector("FRBRalias[name='url-AN']")
169
+ ?.getAttribute("value") || null,
170
+ type: identificationParts?.["type"] || null,
171
+ session: identificationParts?.["session"] || null,
172
+ numero: identificationParts?.["numTexte"]
173
+ ? parseInt(identificationParts["numTexte"])
174
+ : null,
175
+ datePresentation: datePresentation ? new Date(datePresentation) : null,
176
+ dateDepot: dateDepot ? new Date(dateDepot) : null,
177
+ datePublicationXml: datePublicationXml
178
+ ? new Date(datePublicationXml)
179
+ : null,
180
+ version: identificationParts?.["version"]
181
+ ? identificationParts["version"]
182
+ : null,
183
+ workflow: metaElement ? buildWorklow(metaElement) : [],
184
+ divisions: bodyElement ? flattenTexte(bodyElement) : [],
185
+ };
206
186
  }
207
187
  function transformExposeDesMotifs(document) {
208
- var sectionElements = document.querySelectorAll("section");
209
- var exposeDesMotifsRegexp = new RegExp("EXPOS.{1,2}[\\n\\s]DES[\\n\\s]MOTIFS");
210
- var _iterator2 = _createForOfIteratorHelper(sectionElements),
211
- _step2;
212
- try {
213
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
214
- var _sectionElement$textC, _sectionElement$textC2, _sectionElement$inner, _sectionElement$inner2;
215
- var sectionElement = _step2.value;
216
- var firstParagraph = sectionElement.querySelector("p:first-of-type");
217
- var secondParagraph = sectionElement.querySelector("p:nth-of-type(2)");
218
- if (!firstParagraph) {
219
- continue;
220
- }
221
- var firstParagraphContent = firstParagraph.textContent;
222
- var secondParagraphContent = secondParagraph === null || secondParagraph === void 0 ? void 0 : secondParagraph.textContent;
223
- if (!firstParagraphContent || !exposeDesMotifsRegexp.test(firstParagraphContent.toUpperCase())) {
224
- if (!secondParagraphContent || !exposeDesMotifsRegexp.test(secondParagraphContent.toUpperCase())) {
225
- continue;
226
- } else {
227
- sectionElement.removeChild(secondParagraph);
188
+ const sectionElements = document.querySelectorAll("section");
189
+ const exposeDesMotifsRegexp = new RegExp("EXPOS.{1,2}[\\n\\s]DES[\\n\\s]MOTIFS");
190
+ for (const sectionElement of sectionElements) {
191
+ const firstParagraph = sectionElement.querySelector("p:first-of-type");
192
+ const secondParagraph = sectionElement.querySelector("p:nth-of-type(2)");
193
+ if (!firstParagraph) {
194
+ continue;
195
+ }
196
+ const firstParagraphContent = firstParagraph.textContent;
197
+ const secondParagraphContent = secondParagraph?.textContent;
198
+ if (!firstParagraphContent ||
199
+ !exposeDesMotifsRegexp.test(firstParagraphContent.toUpperCase())) {
200
+ if (!secondParagraphContent ||
201
+ !exposeDesMotifsRegexp.test(secondParagraphContent.toUpperCase())) {
202
+ continue;
203
+ }
204
+ else {
205
+ sectionElement.removeChild(secondParagraph);
206
+ }
228
207
  }
229
- }
230
- sectionElement.removeChild(firstParagraph);
231
- return {
232
- text: (_sectionElement$textC = (_sectionElement$textC2 = sectionElement.textContent) === null || _sectionElement$textC2 === void 0 ? void 0 : _sectionElement$textC2.trim()) !== null && _sectionElement$textC !== void 0 ? _sectionElement$textC : null,
233
- html: (_sectionElement$inner = (_sectionElement$inner2 = sectionElement.innerHTML) === null || _sectionElement$inner2 === void 0 ? void 0 : _sectionElement$inner2.trim()) !== null && _sectionElement$inner !== void 0 ? _sectionElement$inner : null
234
- };
208
+ sectionElement.removeChild(firstParagraph);
209
+ return {
210
+ text: sectionElement.textContent?.trim() ?? null,
211
+ html: sectionElement.innerHTML?.trim() ?? null,
212
+ };
235
213
  }
236
- } catch (err) {
237
- _iterator2.e(err);
238
- } finally {
239
- _iterator2.f();
240
- }
241
- return null;
214
+ return null;
242
215
  }
243
216
  function parseTexte(texteXml) {
244
- try {
245
- var document = new _jsdom.JSDOM(texteXml, {
246
- contentType: "text/xml"
247
- }).window.document;
248
- return transformTexte(document);
249
- } catch (error) {
250
- console.error("Could not parse texte with error ".concat(error));
251
- }
252
- return null;
217
+ try {
218
+ const { document } = new jsdom_1.JSDOM(texteXml, {
219
+ contentType: "text/xml",
220
+ }).window;
221
+ return transformTexte(document);
222
+ }
223
+ catch (error) {
224
+ console.error(`Could not parse texte with error ${error}`);
225
+ }
226
+ return null;
253
227
  }
254
-
255
228
  // Prevent from memory leak
256
229
  // https://github.com/jsdom/jsdom/issues/2583#issuecomment-559520814
257
- function parseTexteFromFile(_x) {
258
- return _parseTexteFromFile.apply(this, arguments);
259
- }
260
- function _parseTexteFromFile() {
261
- _parseTexteFromFile = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(xmlFilePath) {
262
- var document;
263
- return _regeneratorRuntime().wrap(function _callee$(_context) {
264
- while (1) switch (_context.prev = _context.next) {
265
- case 0:
266
- _context.prev = 0;
267
- _context.next = 3;
268
- return _jsdom.JSDOM.fromFile(xmlFilePath, {
269
- contentType: "text/xml"
270
- });
271
- case 3:
272
- document = _context.sent.window.document;
273
- return _context.abrupt("return", transformTexte(document));
274
- case 7:
275
- _context.prev = 7;
276
- _context.t0 = _context["catch"](0);
277
- console.error("Could not parse texte with error ".concat(_context.t0));
278
- case 10:
279
- return _context.abrupt("return", null);
280
- case 11:
281
- case "end":
282
- return _context.stop();
283
- }
284
- }, _callee, null, [[0, 7]]);
285
- }));
286
- return _parseTexteFromFile.apply(this, arguments);
230
+ async function parseTexteFromFile(xmlFilePath) {
231
+ try {
232
+ const { document } = (await jsdom_1.JSDOM.fromFile(xmlFilePath, { contentType: "text/xml" })).window;
233
+ return transformTexte(document);
234
+ }
235
+ catch (error) {
236
+ console.error(`Could not parse texte with error ${error}`);
237
+ }
238
+ return null;
287
239
  }
288
240
  function parseExposeDesMotifs(exposeDesMotifsHtml) {
289
- var document = new _jsdom.JSDOM(exposeDesMotifsHtml, {
290
- contentType: "text/html"
291
- }).window.document;
292
- return transformExposeDesMotifs(document);
241
+ const { document } = new jsdom_1.JSDOM(exposeDesMotifsHtml, {
242
+ contentType: "text/html",
243
+ }).window;
244
+ return transformExposeDesMotifs(document);
293
245
  }
294
-
295
246
  // Prevent from memory leak
296
247
  // https://github.com/jsdom/jsdom/issues/2583#issuecomment-559520814
297
- function parseExposeDesMotifsFromFile(_x2) {
298
- return _parseExposeDesMotifsFromFile.apply(this, arguments);
299
- }
300
- function _parseExposeDesMotifsFromFile() {
301
- _parseExposeDesMotifsFromFile = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(htmlFilePath) {
302
- var document;
303
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
304
- while (1) switch (_context2.prev = _context2.next) {
305
- case 0:
306
- _context2.next = 2;
307
- return _jsdom.JSDOM.fromFile(htmlFilePath, {
308
- contentType: "text/html"
309
- });
310
- case 2:
311
- document = _context2.sent.window.document;
312
- return _context2.abrupt("return", transformExposeDesMotifs(document));
313
- case 4:
314
- case "end":
315
- return _context2.stop();
316
- }
317
- }, _callee2);
318
- }));
319
- return _parseExposeDesMotifsFromFile.apply(this, arguments);
248
+ async function parseExposeDesMotifsFromFile(htmlFilePath) {
249
+ const { document } = (await jsdom_1.JSDOM.fromFile(htmlFilePath, { contentType: "text/html" })).window;
250
+ return transformExposeDesMotifs(document);
320
251
  }
321
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfanNkb20iLCJyZXF1aXJlIiwiX2RhdGF1dGlsIiwiX3RleHRlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInIiLCJ0IiwiZSIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJTeW1ib2wiLCJpIiwiaXRlcmF0b3IiLCJhIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImMiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImFyZyIsImRlbGVnYXRlIiwiZCIsImYiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsInMiLCJ0eXBlIiwiQ29udGV4dCIsImNhbGwiLCJ3cmFwIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImwiLCJwIiwiZ2V0UHJvdG90eXBlT2YiLCJ5IiwieCIsInYiLCJnIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsIlR5cGVFcnJvciIsIm5leHQiLCJ3IiwidHJ5RW50cmllcyIsInB1c2giLCJtIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInVuc2hpZnQiLCJwb3AiLCJ2YWx1ZXMiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9uIiwiRiIsInRvU3RyaW5nIiwidGVzdCIsImJ1aWxkV29ya2xvdyIsIm1ldGFFbGVtZW50Iiwic3RlcEVsZW1lbnRzIiwicXVlcnlTZWxlY3RvckFsbCIsInN0ZXBzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfc3RlcEVsZW1lbnQkZ2V0QXR0cmkiLCJfQUtOX1dPUktGTE9XX0lERU5USUYiLCJfc3RlcEVsZW1lbnQkZ2V0QXR0cmkyIiwic3RlcEVsZW1lbnQiLCJpZGVudGlmaWNhdGlvbiIsImdldEF0dHJpYnV0ZSIsImlkZW50aWZpY2F0aW9uUGFydHMiLCJBS05fV09SS0ZMT1dfSURFTlRJRklDQVRJT05fU1RSVUNUVVJFX1JFR0VYUCIsImV4ZWMiLCJncm91cHMiLCJlSWQiLCJkYXRlIiwiRGF0ZSIsInNlc3Npb24iLCJudW1lcm8iLCJudW1UZXh0ZSIsInZlcnNpb24iLCJvdXRjb21lIiwiZXJyIiwiYnVpbGREaXZpc2lvbiIsIm5vZGUiLCJpbmRleCIsIl90aXRsZU5vZGUkdGV4dENvbnRlbiIsIl90aXRsZU5vZGUkdGV4dENvbnRlbjIiLCJfdGl0bGVOb2RlJGlubmVySFRNTCQiLCJfdGl0bGVOb2RlJGlubmVySFRNTCIsIl9zdWJ0aXRsZU5vZGUkdGV4dENvbiIsIl9zdWJ0aXRsZU5vZGUkdGV4dENvbjIiLCJfc3VidGl0bGVOb2RlJGlubmVySFQiLCJfc3VidGl0bGVOb2RlJGlubmVySFQyIiwidGFnIiwibm9kZU5hbWUiLCJsZXZlbCIsIkRpdmlzaW9uVHlwZSIsInRpdGxlTm9kZSIsInF1ZXJ5U2VsZWN0b3IiLCJzdWJ0aXRsZU5vZGUiLCJoZWFkaW5ncyIsImNvbmNhdCIsInRleHQiLCJ0ZXh0Q29udGVudCIsInRyaW0iLCJodG1sIiwiaW5uZXJIVE1MIiwiZGl2aXNpb24iLCJhbGluZWFzIiwiYnVpbGRBbGluZWEiLCJjb250ZW50Tm9kZSIsImFsaW5lYU5vZGUiLCJfcXVlcnlTZWxlY3RvciR0ZXh0Q28iLCJfcXVlcnlTZWxlY3RvciIsIl9nZXRBdHRyaWJ1dGUiLCJfdGV4dENvbnRlbnQkdHJpbSIsIl90ZXh0Q29udGVudCIsIl9pbm5lckhUTUwkdHJpbSIsIl9pbm5lckhUTUwiLCJoZWFkaW5nIiwicGFzdGlsbGUiLCJidWlsZEVtcHR5QXJ0aWNsZSIsImZsYXR0ZW5UZXh0ZSIsInRleHRlQ29udGVudFJvb3QiLCJkaXZpc2lvbnMiLCJkaXZpc2lvbkluZGV4IiwiaXRlciIsImNoaWxkTm9kZXMiLCJmaWx0ZXIiLCJhbGluZWFDaGlsZE5vZGUiLCJhbGluZWFDb250ZW50Tm9kZSIsImxhc3RBcnRpY2xlIiwiZmluZExhc3QiLCJoYXNDaGlsZE5vZGVzIiwiY2hpbGROb2RlIiwidHJhbnNmb3JtVGV4dGUiLCJkb2N1bWVudCIsIl9tZXRhRWxlbWVudCRxdWVyeVNlbCIsIl9tZXRhRWxlbWVudCRxdWVyeVNlbDIiLCJfQUtOX0lERU5USUZJQ0FUSU9OX1MiLCJfbWV0YUVsZW1lbnQkcXVlcnlTZWwzIiwiX21ldGFFbGVtZW50JHF1ZXJ5U2VsNCIsIl9tZXRhRWxlbWVudCRxdWVyeVNlbDUiLCJfcHJlYW1ibGVFbGVtZW50JHF1ZXIiLCJfbWV0YUVsZW1lbnQkcXVlcnlTZWw2IiwiX21ldGFFbGVtZW50JHF1ZXJ5U2VsNyIsIl9tZXRhRWxlbWVudCRxdWVyeVNlbDgiLCJfbWV0YUVsZW1lbnQkcXVlcnlTZWw5IiwicHJlYW1ibGVFbGVtZW50IiwiQUtOX0lERU5USUZJQ0FUSU9OX1NUUlVDVFVSRV9SRUdFWFAiLCJib2R5RWxlbWVudCIsImRhdGVQcmVzZW50YXRpb24iLCJkYXRlRGVwb3QiLCJkYXRlUHVibGljYXRpb25YbWwiLCJ0aXRyZSIsInRpdHJlQ291cnQiLCJzaWduZXREb3NzaWVyIiwidXJsRG9zc2llclNlbmF0IiwidXJsRG9zc2llckFzc2VtYmxlZSIsInBhcnNlSW50Iiwid29ya2Zsb3ciLCJ0cmFuc2Zvcm1FeHBvc2VEZXNNb3RpZnMiLCJzZWN0aW9uRWxlbWVudHMiLCJleHBvc2VEZXNNb3RpZnNSZWdleHAiLCJSZWdFeHAiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3NlY3Rpb25FbGVtZW50JHRleHRDIiwiX3NlY3Rpb25FbGVtZW50JHRleHRDMiIsIl9zZWN0aW9uRWxlbWVudCRpbm5lciIsIl9zZWN0aW9uRWxlbWVudCRpbm5lcjIiLCJzZWN0aW9uRWxlbWVudCIsImZpcnN0UGFyYWdyYXBoIiwic2Vjb25kUGFyYWdyYXBoIiwiZmlyc3RQYXJhZ3JhcGhDb250ZW50Iiwic2Vjb25kUGFyYWdyYXBoQ29udGVudCIsInRvVXBwZXJDYXNlIiwicmVtb3ZlQ2hpbGQiLCJwYXJzZVRleHRlIiwidGV4dGVYbWwiLCJKU0RPTSIsImNvbnRlbnRUeXBlIiwid2luZG93IiwiZXJyb3IiLCJjb25zb2xlIiwicGFyc2VUZXh0ZUZyb21GaWxlIiwiX3giLCJfcGFyc2VUZXh0ZUZyb21GaWxlIiwiX2NhbGxlZSIsInhtbEZpbGVQYXRoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImZyb21GaWxlIiwidDAiLCJwYXJzZUV4cG9zZURlc01vdGlmcyIsImV4cG9zZURlc01vdGlmc0h0bWwiLCJwYXJzZUV4cG9zZURlc01vdGlmc0Zyb21GaWxlIiwiX3gyIiwiX3BhcnNlRXhwb3NlRGVzTW90aWZzRnJvbUZpbGUiLCJfY2FsbGVlMiIsImh0bWxGaWxlUGF0aCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC90ZXh0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKU0RPTSB9IGZyb20gXCJqc2RvbVwiXG5cbmltcG9ydCB7IEFLTl9XT1JLRkxPV19JREVOVElGSUNBVElPTl9TVFJVQ1RVUkVfUkVHRVhQLCBBS05fSURFTlRJRklDQVRJT05fU1RSVUNUVVJFX1JFR0VYUCB9IGZyb20gXCIuLi9zY3JpcHRzL2RhdGF1dGlsXCJcbmltcG9ydCB7XG4gIEFsaW5lYSxcbiAgQXJ0aWNsZSxcbiAgRGl2aXNpb24sXG4gIERpdmlzaW9uQ29udGVudCxcbiAgRGl2aXNpb25UYWcsXG4gIERpdmlzaW9uVHlwZSwgRXhwb3NlRGVzTW90aWZzLFxuICBGbGF0VGV4dGUsIFN0ZXAsXG4gIFZlcnNpb24sXG59IGZyb20gXCIuLi90eXBlcy90ZXh0ZVwiXG5cbmZ1bmN0aW9uIGJ1aWxkV29ya2xvdyAobWV0YUVsZW1lbnQ6IEhUTUxNZXRhRWxlbWVudCk6IFN0ZXBbXSB7XG4gIGNvbnN0IHN0ZXBFbGVtZW50cyA9IG1ldGFFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ3b3JrZmxvdyBzdGVwXCIpXG4gIGNvbnN0IHN0ZXBzOiBTdGVwW10gPSBbXVxuICBmb3IgKGNvbnN0IHN0ZXBFbGVtZW50IG9mIHN0ZXBFbGVtZW50cykge1xuICAgIGNvbnN0IGlkZW50aWZpY2F0aW9uID0gc3RlcEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSA/PyBcIlwiXG4gICAgY29uc3QgaWRlbnRpZmljYXRpb25QYXJ0cyA9IEFLTl9XT1JLRkxPV19JREVOVElGSUNBVElPTl9TVFJVQ1RVUkVfUkVHRVhQLmV4ZWMoaWRlbnRpZmljYXRpb24pPy5ncm91cHNcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIGVJZDogc3RlcEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZUlkXCIpISxcbiAgICAgIGRhdGU6IHN0ZXBFbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGVcIikgPyBuZXcgRGF0ZShzdGVwRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRlXCIpID8/IFwiXCIpIDogbnVsbCxcbiAgICAgIHR5cGU6IGlkZW50aWZpY2F0aW9uUGFydHM/LnR5cGUgfHwgbnVsbCxcbiAgICAgIHNlc3Npb246IGlkZW50aWZpY2F0aW9uUGFydHM/LnNlc3Npb24gfHwgbnVsbCxcbiAgICAgIG51bWVybzogaWRlbnRpZmljYXRpb25QYXJ0cz8ubnVtVGV4dGUgfHwgbnVsbCxcbiAgICAgIHZlcnNpb246IGlkZW50aWZpY2F0aW9uUGFydHM/LnZlcnNpb24gPyBpZGVudGlmaWNhdGlvblBhcnRzLnZlcnNpb24gYXMgVmVyc2lvbiA6IG51bGwsXG4gICAgICBvdXRjb21lOiBzdGVwRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvdXRjb21lXCIpLFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIHN0ZXBzXG59XG5cbmZ1bmN0aW9uIGJ1aWxkRGl2aXNpb24gKG5vZGU6IE5vZGUsIGluZGV4OiBudW1iZXIpOiBEaXZpc2lvbiB7XG4gIGNvbnN0IGVJZCA9IChub2RlIGFzIEVsZW1lbnQpLmdldEF0dHJpYnV0ZShcImVJZFwiKSFcbiAgY29uc3QgdGFnID0gbm9kZS5ub2RlTmFtZSBhcyBEaXZpc2lvblRhZ1xuICBjb25zdCBsZXZlbCA9IERpdmlzaW9uVHlwZVt0YWddXG4gIGNvbnN0IHRpdGxlTm9kZSA9IChub2RlIGFzIEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoXCJudW1cIilcbiAgY29uc3Qgc3VidGl0bGVOb2RlID0gKG5vZGUgYXMgRWxlbWVudCkucXVlcnlTZWxlY3RvcihcImhlYWRpbmdcIilcbiAgY29uc3QgaGVhZGluZ3M6IERpdmlzaW9uQ29udGVudFtdID0gW1xuICAgIC4uLih0aXRsZU5vZGUgPyBbe1xuICAgICAgdGV4dDogdGl0bGVOb2RlLnRleHRDb250ZW50Py50cmltKCkgPz8gbnVsbCxcbiAgICAgIGh0bWw6IHRpdGxlTm9kZS5pbm5lckhUTUw/LnRyaW0oKSA/PyBudWxsLFxuICAgIH1dIDogW10pLFxuICAgIC4uLihzdWJ0aXRsZU5vZGUgPyBbe1xuICAgICAgdGV4dDogc3VidGl0bGVOb2RlLnRleHRDb250ZW50Py50cmltKCkgPz8gbnVsbCxcbiAgICAgIGh0bWw6IHN1YnRpdGxlTm9kZS5pbm5lckhUTUw/LnRyaW0oKSA/PyBudWxsLFxuICAgIH1dIDogW10pLFxuICBdXG4gIGNvbnN0IGRpdmlzaW9uID0ge1xuICAgIGluZGV4LFxuICAgIGVJZCxcbiAgICB0YWcsXG4gICAgbGV2ZWwsXG4gICAgaGVhZGluZ3MsXG4gIH1cbiAgaWYgKHRhZyA9PT0gXCJhcnRpY2xlXCIpIHtcbiAgICAoZGl2aXNpb24gYXMgQXJ0aWNsZSkuYWxpbmVhcyA9IFtdXG4gIH1cbiAgcmV0dXJuIGRpdmlzaW9uXG59XG5cbmZ1bmN0aW9uIGJ1aWxkQWxpbmVhIChjb250ZW50Tm9kZTogTm9kZSwgYWxpbmVhTm9kZTogTm9kZSk6IEFsaW5lYSB7XG4gIGNvbnN0IGVJZCA9IChhbGluZWFOb2RlIGFzIEVsZW1lbnQpLmdldEF0dHJpYnV0ZShcImVJZFwiKSFcbiAgY29uc3QgaGVhZGluZyA9IHtcbiAgICB0ZXh0OiAoYWxpbmVhTm9kZSBhcyBFbGVtZW50KS5xdWVyeVNlbGVjdG9yKFwibnVtXCIpPy50ZXh0Q29udGVudCA/PyBudWxsLFxuICB9XG4gIGNvbnN0IHBhc3RpbGxlID0gKGFsaW5lYU5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwiZGF0YTpwYXN0aWxsZVwiKSA/PyBudWxsXG4gIHJldHVybiB7XG4gICAgZUlkLFxuICAgIGhlYWRpbmcsXG4gICAgdGV4dDogKGNvbnRlbnROb2RlIGFzIEVsZW1lbnQpLnRleHRDb250ZW50Py50cmltKCkgPz8gbnVsbCxcbiAgICBodG1sOiAoY29udGVudE5vZGUgYXMgRWxlbWVudCkuaW5uZXJIVE1MPy50cmltKCkgPz8gbnVsbCxcbiAgICBwYXN0aWxsZSxcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEVtcHR5QXJ0aWNsZSAoaW5kZXg6IG51bWJlcik6IEFydGljbGUge1xuICByZXR1cm4ge1xuICAgIGluZGV4OiBpbmRleCxcbiAgICBlSWQ6IFwiXCIsXG4gICAgdGFnOiBcImFydGljbGVcIixcbiAgICBsZXZlbDogRGl2aXNpb25UeXBlW1wiYXJ0aWNsZVwiXSxcbiAgICBoZWFkaW5nczogW10sXG4gICAgYWxpbmVhczogW10sXG4gIH1cbn1cblxuZnVuY3Rpb24gZmxhdHRlblRleHRlICh0ZXh0ZUNvbnRlbnRSb290OiBOb2RlKTogRGl2aXNpb25bXSB7XG4gIGNvbnN0IGRpdmlzaW9uczogRGl2aXNpb25bXSA9IFtdXG4gIGxldCBkaXZpc2lvbkluZGV4ID0gMFxuICBjb25zdCBpdGVyID0gKG5vZGU6IE5vZGUpID0+IHtcbiAgICBpZiAobm9kZS5ub2RlTmFtZSA9PT0gXCJjb250ZW50XCIpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzd2l0Y2ggKG5vZGUubm9kZU5hbWUpIHtcbiAgICAgIGNhc2UgXCJ0b21lXCI6XG4gICAgICBjYXNlIFwicGFydFwiOlxuICAgICAgY2FzZSBcImJvb2tcIjpcbiAgICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgY2FzZSBcInN1YnRpdGxlXCI6XG4gICAgICBjYXNlIFwiY2hhcHRlclwiOlxuICAgICAgY2FzZSBcInNlY3Rpb25cIjpcbiAgICAgIGNhc2UgXCJzdWJzZWN0aW9uXCI6XG4gICAgICBjYXNlIFwicGFyYWdyYXBoXCI6XG4gICAgICBjYXNlIFwiYXJ0aWNsZVwiOlxuICAgICAgICBkaXZpc2lvbnMucHVzaChidWlsZERpdmlzaW9uKG5vZGUsIGRpdmlzaW9uSW5kZXgrKykpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChub2RlLm5vZGVOYW1lID09PSBcImFsaW5lYVwiKSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuY2hpbGROb2RlcylcbiAgICAgICAgLy8gRmluZCBkaXJlY3QgY29udGVudCBjaGlsZHJlbiBwcm9ncmFtbWF0aWNhbGx5XG4gICAgICAgIC8vIGJlY2F1c2UgYDpzY29wZWAgc2VsZWN0b3IgZG9lcyBub3Qgd29ya1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanNkb20vanNkb20vaXNzdWVzLzI5OThcbiAgICAgICAgLmZpbHRlcigoYWxpbmVhQ2hpbGROb2RlOiBOb2RlKSA9PiBhbGluZWFDaGlsZE5vZGUubm9kZU5hbWUgPT09IFwiY29udGVudFwiKVxuICAgICAgICAuZm9yRWFjaCgoYWxpbmVhQ29udGVudE5vZGU6IE5vZGUpID0+IHtcbiAgICAgICAgICAvLyBIeXBvdGhlc2lzOiBhbGluZWFzIHNob3VsZCBhbHdheXMgYmUgZW5jbG9zZWQgaW4gYXJ0aWNsZXNcbiAgICAgICAgICBsZXQgbGFzdEFydGljbGUgPSBkaXZpc2lvbnMuZmluZExhc3QoZGl2aXNpb24gPT4gZGl2aXNpb24udGFnID09PSBcImFydGljbGVcIikgYXMgQXJ0aWNsZVxuICAgICAgICAgIGlmICghbGFzdEFydGljbGUpIHtcbiAgICAgICAgICAgIGxhc3RBcnRpY2xlID0gYnVpbGRFbXB0eUFydGljbGUoZGl2aXNpb25JbmRleCsrKVxuICAgICAgICAgICAgZGl2aXNpb25zLnB1c2gobGFzdEFydGljbGUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGxhc3RBcnRpY2xlLmFsaW5lYXMucHVzaChidWlsZEFsaW5lYShhbGluZWFDb250ZW50Tm9kZSwgbm9kZSkpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGlmIChub2RlLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgbm9kZS5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogTm9kZSkgPT4gaXRlcihjaGlsZE5vZGUpKVxuICAgIH1cbiAgfVxuICBpdGVyKHRleHRlQ29udGVudFJvb3QpXG4gIHJldHVybiBkaXZpc2lvbnNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVRleHRlIChkb2N1bWVudDogRG9jdW1lbnQpOiBGbGF0VGV4dGUgfCBudWxsIHtcbiAgY29uc3QgbWV0YUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibWV0YVwiKVxuICBjb25zdCBwcmVhbWJsZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwicHJlYW1ibGVcIilcbiAgY29uc3QgaWRlbnRpZmljYXRpb24gPSBtZXRhRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcIkZSQlJFeHByZXNzaW9uIEZSQlJ1cmlcIik/LmdldEF0dHJpYnV0ZShcInZhbHVlXCIpID8/IFwiXCJcbiAgY29uc3QgaWRlbnRpZmljYXRpb25QYXJ0cyA9IEFLTl9JREVOVElGSUNBVElPTl9TVFJVQ1RVUkVfUkVHRVhQLmV4ZWMoaWRlbnRpZmljYXRpb24pPy5ncm91cHNcbiAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiYm9keVwiKVxuICBjb25zdCBkYXRlUHJlc2VudGF0aW9uID0gbWV0YUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXCJGUkJSZGF0ZVtuYW1lPScjcHJlc2VudGF0aW9uJ11cIik/LmdldEF0dHJpYnV0ZShcImRhdGVcIilcbiAgY29uc3QgZGF0ZURlcG90ID0gbWV0YUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXCJGUkJSZGF0ZVtuYW1lPScjZGVwb3QnXVwiKT8uZ2V0QXR0cmlidXRlKFwiZGF0ZVwiKVxuICBjb25zdCBkYXRlUHVibGljYXRpb25YbWwgPSBtZXRhRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcIkZSQlJkYXRlW25hbWU9JyNwdWJsaWNhdGlvbi14bWwnXVwiKT8uZ2V0QXR0cmlidXRlKFwiZGF0ZVwiKVxuICByZXR1cm4ge1xuICAgIHRpdHJlOiBwcmVhbWJsZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXCJkb2NUaXRsZVwiKT8udGV4dENvbnRlbnQgfHwgbnVsbCxcbiAgICB0aXRyZUNvdXJ0OiBtZXRhRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcIkZSQlJhbGlhc1tuYW1lPSdpbnRpdHVsZS1jb3VydCddXCIpXG4gICAgICA/LmdldEF0dHJpYnV0ZShcInZhbHVlXCIpIHx8IG51bGwsXG4gICAgc2lnbmV0RG9zc2llcjpcbiAgICAgIG1ldGFFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFwiRlJCUmFsaWFzW25hbWU9J3NpZ25ldC1kb3NzaWVyLWxlZ2lzbGF0aWYtc2VuYXQnXVwiKVxuICAgICAgICA/LmdldEF0dHJpYnV0ZShcInZhbHVlXCIpIHx8IG51bGwsXG4gICAgdXJsRG9zc2llclNlbmF0OiBtZXRhRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcIkZSQlJhbGlhc1tuYW1lPSd1cmwtc2VuYXQnXVwiKT8uZ2V0QXR0cmlidXRlKFwidmFsdWVcIikgfHwgbnVsbCxcbiAgICB1cmxEb3NzaWVyQXNzZW1ibGVlOiBtZXRhRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcIkZSQlJhbGlhc1tuYW1lPSd1cmwtQU4nXVwiKT8uZ2V0QXR0cmlidXRlKFwidmFsdWVcIikgfHwgbnVsbCxcbiAgICB0eXBlOiBpZGVudGlmaWNhdGlvblBhcnRzPy50eXBlIHx8IG51bGwsXG4gICAgc2Vzc2lvbjogaWRlbnRpZmljYXRpb25QYXJ0cz8uc2Vzc2lvbiB8fCBudWxsLFxuICAgIG51bWVybzogaWRlbnRpZmljYXRpb25QYXJ0cz8ubnVtVGV4dGUgPyBwYXJzZUludChpZGVudGlmaWNhdGlvblBhcnRzLm51bVRleHRlKSA6IG51bGwsXG4gICAgZGF0ZVByZXNlbnRhdGlvbjogZGF0ZVByZXNlbnRhdGlvbiA/IG5ldyBEYXRlKGRhdGVQcmVzZW50YXRpb24pIDogbnVsbCxcbiAgICBkYXRlRGVwb3Q6IGRhdGVEZXBvdCA/IG5ldyBEYXRlKGRhdGVEZXBvdCkgOiBudWxsLFxuICAgIGRhdGVQdWJsaWNhdGlvblhtbDogZGF0ZVB1YmxpY2F0aW9uWG1sID8gbmV3IERhdGUoZGF0ZVB1YmxpY2F0aW9uWG1sKSA6IG51bGwsXG4gICAgdmVyc2lvbjogaWRlbnRpZmljYXRpb25QYXJ0cz8udmVyc2lvbiA/IGlkZW50aWZpY2F0aW9uUGFydHMudmVyc2lvbiBhcyBWZXJzaW9uIDogbnVsbCxcbiAgICB3b3JrZmxvdzogbWV0YUVsZW1lbnQgPyBidWlsZFdvcmtsb3cobWV0YUVsZW1lbnQpIDogW10sXG4gICAgZGl2aXNpb25zOiBib2R5RWxlbWVudCA/IGZsYXR0ZW5UZXh0ZShib2R5RWxlbWVudCkgOiBbXSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRXhwb3NlRGVzTW90aWZzIChkb2N1bWVudDogRG9jdW1lbnQpOiBFeHBvc2VEZXNNb3RpZnMgfCBudWxsIHtcbiAgY29uc3Qgc2VjdGlvbkVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNlY3Rpb25cIilcbiAgY29uc3QgZXhwb3NlRGVzTW90aWZzUmVnZXhwID0gbmV3IFJlZ0V4cChcIkVYUE9TLnsxLDJ9W1xcXFxuXFxcXHNdREVTW1xcXFxuXFxcXHNdTU9USUZTXCIpXG4gIGZvciAoY29uc3Qgc2VjdGlvbkVsZW1lbnQgb2Ygc2VjdGlvbkVsZW1lbnRzKSB7XG4gICAgY29uc3QgZmlyc3RQYXJhZ3JhcGggPSBzZWN0aW9uRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwicDpmaXJzdC1vZi10eXBlXCIpXG4gICAgY29uc3Qgc2Vjb25kUGFyYWdyYXBoID0gc2VjdGlvbkVsZW1lbnQucXVlcnlTZWxlY3RvcihcInA6bnRoLW9mLXR5cGUoMilcIilcbiAgICBpZiAoIWZpcnN0UGFyYWdyYXBoKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0UGFyYWdyYXBoQ29udGVudCA9IGZpcnN0UGFyYWdyYXBoLnRleHRDb250ZW50XG4gICAgY29uc3Qgc2Vjb25kUGFyYWdyYXBoQ29udGVudCA9IHNlY29uZFBhcmFncmFwaD8udGV4dENvbnRlbnRcbiAgICBpZiAoIWZpcnN0UGFyYWdyYXBoQ29udGVudCB8fCAhZXhwb3NlRGVzTW90aWZzUmVnZXhwLnRlc3QoZmlyc3RQYXJhZ3JhcGhDb250ZW50LnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICBpZiAoIXNlY29uZFBhcmFncmFwaENvbnRlbnQgfHwgIWV4cG9zZURlc01vdGlmc1JlZ2V4cC50ZXN0KHNlY29uZFBhcmFncmFwaENvbnRlbnQudG9VcHBlckNhc2UoKSkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlY3Rpb25FbGVtZW50LnJlbW92ZUNoaWxkKHNlY29uZFBhcmFncmFwaClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWN0aW9uRWxlbWVudC5yZW1vdmVDaGlsZChmaXJzdFBhcmFncmFwaClcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogc2VjdGlvbkVsZW1lbnQudGV4dENvbnRlbnQ/LnRyaW0oKSA/PyBudWxsLFxuICAgICAgaHRtbDogc2VjdGlvbkVsZW1lbnQuaW5uZXJIVE1MPy50cmltKCkgPz8gbnVsbCxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGV4dGUgKHRleHRlWG1sOiBzdHJpbmcpOiBGbGF0VGV4dGUgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IGRvY3VtZW50IH0gPSAobmV3IEpTRE9NKHRleHRlWG1sLCB7XG4gICAgICBjb250ZW50VHlwZTogXCJ0ZXh0L3htbFwiLFxuICAgIH0pKS53aW5kb3dcbiAgICByZXR1cm4gdHJhbnNmb3JtVGV4dGUoZG9jdW1lbnQpXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgcGFyc2UgdGV4dGUgd2l0aCBlcnJvciAke2Vycm9yfWApXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLy8gUHJldmVudCBmcm9tIG1lbW9yeSBsZWFrXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanNkb20vanNkb20vaXNzdWVzLzI1ODMjaXNzdWVjb21tZW50LTU1OTUyMDgxNFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlVGV4dGVGcm9tRmlsZSAoeG1sRmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8RmxhdFRleHRlIHwgbnVsbD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHsgZG9jdW1lbnQgfSA9IChhd2FpdCBKU0RPTS5mcm9tRmlsZSh4bWxGaWxlUGF0aCwgeyBjb250ZW50VHlwZTogXCJ0ZXh0L3htbFwiIH0pKS53aW5kb3dcbiAgICByZXR1cm4gdHJhbnNmb3JtVGV4dGUoZG9jdW1lbnQpXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgcGFyc2UgdGV4dGUgd2l0aCBlcnJvciAke2Vycm9yfWApXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRXhwb3NlRGVzTW90aWZzIChleHBvc2VEZXNNb3RpZnNIdG1sOiBzdHJpbmcpOiBFeHBvc2VEZXNNb3RpZnMgfCBudWxsIHtcbiAgY29uc3QgeyBkb2N1bWVudCB9ID0gKG5ldyBKU0RPTShleHBvc2VEZXNNb3RpZnNIdG1sLCB7XG4gICAgY29udGVudFR5cGU6IFwidGV4dC9odG1sXCIsXG4gIH0pKS53aW5kb3dcbiAgcmV0dXJuIHRyYW5zZm9ybUV4cG9zZURlc01vdGlmcyhkb2N1bWVudClcbn1cblxuLy8gUHJldmVudCBmcm9tIG1lbW9yeSBsZWFrXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanNkb20vanNkb20vaXNzdWVzLzI1ODMjaXNzdWVjb21tZW50LTU1OTUyMDgxNFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlRXhwb3NlRGVzTW90aWZzRnJvbUZpbGUgKGh0bWxGaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxFeHBvc2VEZXNNb3RpZnMgfCBudWxsPiB7XG4gIGNvbnN0IHsgZG9jdW1lbnQgfSA9IChhd2FpdCBKU0RPTS5mcm9tRmlsZShodG1sRmlsZVBhdGgsIHsgY29udGVudFR5cGU6IFwidGV4dC9odG1sXCIgfSkpLndpbmRvd1xuICByZXR1cm4gdHJhbnNmb3JtRXhwb3NlRGVzTW90aWZzKGRvY3VtZW50KVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFD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