@tricoteuses/tisseuse 0.19.0 → 0.19.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 (2) hide show
  1. package/dist/server.js +677 -647
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -1,11 +1,11 @@
1
- import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as ne, j as C, k as re, kt as w, m as ie, n as ae, p as oe, s as se, t as ce, u as le, ut as T, v as ue, w as de, x as fe } from "./html-EuDDYMr2.js";
2
- import { A as pe, Dt as E, Ft as D, I as me, L as he, Nt as O, Ot as k, P as ge, _t as _e, bt as A, jt as ve, k as ye, kt as j, n as be, nt as xe, o as Se, r as Ce, t as we, ut as Te } from "./resolver-tBQRf8TL.js";
3
- import * as Ee from "node:crypto";
4
- import { createHash as De } from "node:crypto";
5
- import M from "fs-extra";
6
- import Oe from "node:path";
1
+ import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as C, j as w, k as ne, kt as T, m as re, n as ie, p as ae, s as oe, t as se, u as ce, ut as E, v as le, w as ue, x as de } from "./html-EuDDYMr2.js";
2
+ import { A as fe, Dt as D, Ft as O, I as pe, L as me, Nt as k, Ot as A, P as he, _t as ge, bt as j, jt as _e, k as ve, kt as M, n as ye, nt as be, o as xe, r as Se, t as Ce, ut as we } from "./resolver-tBQRf8TL.js";
3
+ import * as Te from "node:crypto";
4
+ import { createHash as Ee } from "node:crypto";
5
+ import N from "fs-extra";
6
+ import De from "node:path";
7
7
  //#region src/lib/server/assemblee_amendment_search.ts
8
- function ke(e, t) {
8
+ function Oe(e, t) {
9
9
  let n = e;
10
10
  for (let e of t) {
11
11
  if (typeof n != "object" || !n) return null;
@@ -13,34 +13,34 @@ function ke(e, t) {
13
13
  }
14
14
  return typeof n == "string" && n.trim() ? n.trim() : null;
15
15
  }
16
- function Ae(e) {
16
+ function ke(e) {
17
17
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
18
18
  }
19
- function je(e) {
20
- return Ae(T(e).text());
19
+ function Ae(e) {
20
+ return ke(E(e).text());
21
21
  }
22
- function Me(e) {
23
- let t = Ae([
24
- ke(e, [
22
+ function je(e) {
23
+ let t = ke([
24
+ Oe(e, [
25
25
  "corps",
26
26
  "contenuAuteur",
27
27
  "dispositif"
28
28
  ]),
29
- ke(e, [
29
+ Oe(e, [
30
30
  "corps",
31
31
  "contenuAuteur",
32
32
  "dispositifAmdtCreditPLF"
33
33
  ]),
34
- ke(e, [
34
+ Oe(e, [
35
35
  "corps",
36
36
  "contenuAuteur",
37
37
  "dispositifAmdtCreditPLFR"
38
38
  ])
39
- ].filter((e) => e !== null).map((e) => je(e)).join("\n")), n = ke(e, [
39
+ ].filter((e) => e !== null).map((e) => Ae(e)).join("\n")), n = Oe(e, [
40
40
  "corps",
41
41
  "contenuAuteur",
42
42
  "exposeSommaire"
43
- ]), r = n === null ? "" : je(n);
43
+ ]), r = n === null ? "" : Ae(n);
44
44
  return [...t ? [{
45
45
  content: t,
46
46
  itemKind: "dispositif",
@@ -51,24 +51,24 @@ function Me(e) {
51
51
  label: "Exposé sommaire"
52
52
  }] : []];
53
53
  }
54
- function Ne(e, t) {
55
- return De("sha256").update(JSON.stringify({
54
+ function Me(e, t) {
55
+ return Ee("sha256").update(JSON.stringify({
56
56
  item: e,
57
57
  metadata: t
58
58
  })).digest("hex");
59
59
  }
60
60
  //#endregion
61
61
  //#region src/lib/extractors/article_action_targets.ts
62
- function N(e) {
62
+ function P(e) {
63
63
  switch (e.type) {
64
- case "reference_et_action": return N(e.reference);
65
- case "enumeration": return [...N(e.left), ...N(e.right)];
64
+ case "reference_et_action": return P(e.reference);
65
+ case "enumeration": return [...P(e.left), ...P(e.right)];
66
66
  case "parent-enfant": {
67
67
  let t = [...r(e.parent)].filter((e) => e.type === "article");
68
68
  return t.length === 1 ? [{
69
69
  article: t[0],
70
70
  reference: e
71
- }] : t.length > 1 ? [] : N(e.child).map((t) => ({
71
+ }] : t.length > 1 ? [] : P(e.child).map((t) => ({
72
72
  article: t.article,
73
73
  reference: {
74
74
  ...e,
@@ -89,11 +89,11 @@ function N(e) {
89
89
  }
90
90
  //#endregion
91
91
  //#region src/lib/extractors/article_action_effects.ts
92
- function Pe(e, t) {
92
+ function Ne(e, t) {
93
93
  if (t < 2) return null;
94
- let n = pe(e), r = S(e);
94
+ let n = fe(e), r = S(e);
95
95
  if (r.length !== t) return null;
96
- let i = u(new E(n.output)), a = (e) => he(n, [e])[0].position;
96
+ let i = u(new D(n.output)), a = (e) => me(n, [e])[0].position;
97
97
  return r.map((t, n) => ({
98
98
  sourceText: e,
99
99
  referencePosition: a({
@@ -103,20 +103,20 @@ function Pe(e, t) {
103
103
  actionPosition: a(t.position)
104
104
  }));
105
105
  }
106
- function Fe(e, t, n) {
106
+ function Pe(e, t, n) {
107
107
  if (t.length < 2) return null;
108
- let r = pe(e), i = r.output, a = (e) => he(r, [e])[0].position, o = u(new E(i)), s = o.flatMap(N);
108
+ let r = fe(e), i = r.output, a = (e) => me(r, [e])[0].position, o = u(new D(i)), s = o.flatMap(P);
109
109
  if (s.length !== t.length || s.length < 2) return null;
110
- let c = fe(i);
110
+ let c = de(i);
111
111
  if (c.length > 0) return n?.kind !== "replace_portion" || c.length !== s.length || c.some((e, t) => {
112
112
  let n = s[t];
113
- return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !ne(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
113
+ return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !C(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
114
114
  }) ? null : s.map((r, i) => ({
115
115
  targetId: t[i],
116
116
  directive: {
117
117
  ...n,
118
118
  reference: r.reference,
119
- portionSelectors: ne(r.reference),
119
+ portionSelectors: C(r.reference),
120
120
  tableTarget: {
121
121
  type: "table",
122
122
  rowIndex: c[i].rowIndex,
@@ -161,12 +161,12 @@ function Fe(e, t, n) {
161
161
  let d = [], f = 0;
162
162
  for (let e = 1; e < o.length; e += 1) {
163
163
  let t = o[e];
164
- t.type !== "reference_et_action" || N(t).length === 0 || o.slice(f, e).flatMap(N).length === 0 || y(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && y(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
164
+ t.type !== "reference_et_action" || P(t).length === 0 || o.slice(f, e).flatMap(P).length === 0 || y(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && y(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
165
165
  }
166
166
  d.push(o.length - 1);
167
167
  let p = [], m = 0, h = 0;
168
168
  for (let n of d) {
169
- let r = o.slice(m, n + 1).flatMap(N);
169
+ let r = o.slice(m, n + 1).flatMap(P);
170
170
  if (r.length === 0) {
171
171
  m = n + 1;
172
172
  continue;
@@ -195,7 +195,7 @@ function Fe(e, t, n) {
195
195
  stop: i.length
196
196
  },
197
197
  reference: n.reference,
198
- portionSelectors: ne(n.reference)
198
+ portionSelectors: C(n.reference)
199
199
  }
200
200
  });
201
201
  }
@@ -203,16 +203,16 @@ function Fe(e, t, n) {
203
203
  }
204
204
  return h === t.length ? p : null;
205
205
  }
206
- var Ie = ve("dans sa rédaction", j([j([D("dans sa rédaction ", { flags: "i" }), k(D("issue ", { flags: "i" }), D("résultante ", { flags: "i" }), D("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), k(j([D("de l'", { flags: "i" }), l], { value: (e) => e[1] }), n)], { value: (e) => e[1] }));
206
+ var Fe = _e("dans sa rédaction", M([M([O("dans sa rédaction ", { flags: "i" }), A(O("issue ", { flags: "i" }), O("résultante ", { flags: "i" }), O("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), A(M([O("de l'", { flags: "i" }), l], { value: (e) => e[1] }), n)], { value: (e) => e[1] }));
207
207
  //#endregion
208
208
  //#region src/lib/extractors/qualified_versions.ts
209
- function Le(e) {
210
- let t = pe(e), n = [];
211
- for (let e of Ie.extract(new E(t.output), { jumpExact: !0 })) for (let i of _(e)) {
209
+ function Ie(e) {
210
+ let t = fe(e), n = [];
211
+ for (let e of Fe.extract(new D(t.output), { jumpExact: !0 })) for (let i of _(e)) {
212
212
  if (i.type !== "parent-enfant" || i.parent.type !== "texte" || i.parent.nature !== "LOI") continue;
213
213
  let e = [...r(i.child)].filter((e) => e.type === "article" && e.position.start < i.parent.position.start);
214
214
  if (e.length === 1) {
215
- n.push(he(t, [e[0].position])[0].position);
215
+ n.push(me(t, [e[0].position])[0].position);
216
216
  break;
217
217
  }
218
218
  }
@@ -220,29 +220,29 @@ function Le(e) {
220
220
  }
221
221
  //#endregion
222
222
  //#region src/lib/server/parsed_bills.ts
223
- var Re = /^expos[ée]\s+des\s+motifs\b/iu;
224
- function P(e) {
223
+ var Le = /^expos[ée]\s+des\s+motifs\b/iu;
224
+ function F(e) {
225
225
  return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
226
226
  }
227
- function F(e) {
228
- return P(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
227
+ function I(e) {
228
+ return F(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
229
229
  }
230
- function ze(e) {
231
- return s(P(e));
230
+ function Re(e) {
231
+ return s(F(e));
232
232
  }
233
- function I(e) {
234
- return `_TocArt${ze(e).replace(/\s+/gu, "")}`;
233
+ function L(e) {
234
+ return `_TocArt${Re(e).replace(/\s+/gu, "")}`;
235
235
  }
236
- function Be(e, t) {
236
+ function ze(e, t) {
237
237
  return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
238
238
  }
239
+ function Be(e) {
240
+ return I(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
241
+ }
239
242
  function Ve(e) {
240
- return F(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
243
+ return Be(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
241
244
  }
242
245
  function He(e) {
243
- return Ve(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
244
- }
245
- function Ue(e) {
246
246
  switch (e.kind) {
247
247
  case "insert_after":
248
248
  case "insert_before": return e.insertText;
@@ -260,12 +260,12 @@ function Ue(e) {
260
260
  default: return;
261
261
  }
262
262
  }
263
- function We(e) {
264
- let t = P(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
263
+ function Ue(e) {
264
+ let t = F(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
265
265
  if (n?.[1] !== void 0) return h(n[1]);
266
266
  }
267
- function Ge(e) {
268
- let t = Ue(e), n = a(t ?? "");
267
+ function We(e) {
268
+ let t = He(e), n = a(t ?? "");
269
269
  if (n.length > 0 && t !== void 0) return n.map((e, r) => {
270
270
  let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
271
271
  return {
@@ -273,58 +273,58 @@ function Ge(e) {
273
273
  text: o
274
274
  };
275
275
  });
276
- let r = We(e);
276
+ let r = Ue(e);
277
277
  return r === void 0 ? [] : [{
278
278
  num: r,
279
279
  text: t ?? e.sourceText
280
280
  }];
281
281
  }
282
- function Ke(e, t = /* @__PURE__ */ new Set()) {
282
+ function Ge(e, t = /* @__PURE__ */ new Set()) {
283
283
  if (e == null) return t;
284
284
  if (Array.isArray(e)) {
285
- for (let n of e) Ke(n, t);
285
+ for (let n of e) Ge(n, t);
286
286
  return t;
287
287
  }
288
288
  if (typeof e != "object") return t;
289
289
  let n = e;
290
290
  n.type === "article" && typeof n.num == "string" && t.add(n.num);
291
- for (let e of Object.values(n)) Ke(e, t);
291
+ for (let e of Object.values(n)) Ge(e, t);
292
292
  return t;
293
293
  }
294
- function qe(e) {
295
- let t = F(e.sourceText);
294
+ function Ke(e) {
295
+ let t = I(e.sourceText);
296
296
  return /\b(?:cree|cree[e]?s?|resultant|issu|prevu|mentionne)\b[\s\S]{0,80}\b(?:present|presente|pjl|projet\s+de\s+loi)\b/u.test(t);
297
297
  }
298
- function Je(e) {
299
- return P(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
298
+ function qe(e) {
299
+ return F(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
300
300
  }
301
- function Ye(e, t) {
302
- let n = new E(e, t), r = xe(n);
301
+ function Je(e, t) {
302
+ let n = new D(e, t), r = be(n);
303
303
  return typeof r != "string" || n.offset <= t ? null : {
304
304
  date: r,
305
305
  start: t,
306
306
  stop: n.offset
307
307
  };
308
308
  }
309
- function Xe(e, t) {
309
+ function Ye(e, t) {
310
310
  let n = /\d/u.exec(e.slice(t));
311
311
  if (!n) return null;
312
312
  let r = t + n.index;
313
- return e.slice(t, r).trim().length > 0 ? null : Ye(e, r);
313
+ return e.slice(t, r).trim().length > 0 ? null : Je(e, r);
314
314
  }
315
- function Ze(e) {
315
+ function Xe(e) {
316
316
  let t = /^la présente loi (?:s['’]appli(?:que|quent)|entr(?:e|ent) en vigueur) (?:[aà] compter (?:du|de|d['’])|au|le)\s*/u, n = /^la présente loi s['’]appli(?:que|quent)\s*:\s*/u, r = /\b[aà] compter (?:du|de|d['’])\s*/gu, i = [], a = "la présente loi", o = e.indexOf(a);
317
317
  for (; o !== -1;) {
318
318
  let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
319
319
  if (l) {
320
- let e = Xe(c, l[0].length);
320
+ let e = Ye(c, l[0].length);
321
321
  e && i.push(e.date);
322
322
  }
323
323
  let u = n.exec(c);
324
324
  if (u) {
325
325
  let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
326
326
  for (r.lastIndex = 0; r.exec(t) !== null;) {
327
- let e = Xe(t, r.lastIndex);
327
+ let e = Ye(t, r.lastIndex);
328
328
  e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
329
329
  }
330
330
  }
@@ -332,20 +332,20 @@ function Ze(e) {
332
332
  }
333
333
  return i;
334
334
  }
335
- function Qe(e) {
336
- let t = Ze(Je(e).toLowerCase()), n = Array.from(new Set(t));
335
+ function Ze(e) {
336
+ let t = Xe(qe(e).toLowerCase()), n = Array.from(new Set(t));
337
337
  return n.length === 1 ? n[0] : void 0;
338
338
  }
339
- function $e(e) {
340
- return F(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
339
+ function Qe(e) {
340
+ return I(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
341
341
  }
342
- function L(e) {
342
+ function R(e) {
343
343
  return e?.type === "tag";
344
344
  }
345
- function et(e, t) {
345
+ function $e(e, t) {
346
346
  return e.html(t) ?? "";
347
347
  }
348
- function tt(e, t) {
348
+ function et(e, t) {
349
349
  let n = [], r = /* @__PURE__ */ new Set();
350
350
  for (let i of e(t).find("a").get()) {
351
351
  let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
@@ -353,43 +353,43 @@ function tt(e, t) {
353
353
  let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
354
354
  if (r.has(l)) continue;
355
355
  r.add(l);
356
- let u = P(e(i).text());
356
+ let u = F(e(i).text());
357
357
  n.push({
358
358
  id: c,
359
- ...nt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
359
+ ...tt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
360
360
  ...u ? { text: u } : {},
361
361
  type: s
362
362
  });
363
363
  }
364
364
  return n;
365
365
  }
366
- function nt(e, t, n) {
367
- let r = rt(e, t, n);
366
+ function tt(e, t, n) {
367
+ let r = nt(e, t, n);
368
368
  return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
369
369
  }
370
- function rt(e, t, n) {
370
+ function nt(e, t, n) {
371
371
  if (t === n) return "";
372
372
  if (t.type === "text") return t.data ?? "";
373
- if (!L(t)) return "";
373
+ if (!R(t)) return "";
374
374
  let r = "";
375
375
  for (let i of e(t).contents().get()) {
376
376
  if (i === n) return r;
377
- if (L(i) && e.contains(i, n)) return r + rt(e, i, n);
377
+ if (R(i) && e.contains(i, n)) return r + nt(e, i, n);
378
378
  r += e(i).text();
379
379
  }
380
380
  return r;
381
381
  }
382
- function it(e, t) {
383
- return t.map((t) => P(e(t).text())).filter(Boolean).join("\n");
382
+ function rt(e, t) {
383
+ return t.map((t) => F(e(t).text())).filter(Boolean).join("\n");
384
384
  }
385
- function at(e) {
386
- let t = F(e);
387
- return !t || Re.test(t) ? "noise" : m.test(e) ? "directive_candidate" : "context";
385
+ function it(e) {
386
+ let t = I(e);
387
+ return !t || Le.test(t) ? "noise" : m.test(e) ? "directive_candidate" : "context";
388
388
  }
389
- async function ot(e, t, n) {
389
+ async function at(e, t, n) {
390
390
  if (n === void 0) throw Error("A document date is required to add links to legal references.");
391
391
  if (t.legiResolver === void 0 && t.canutesDb === void 0) throw Error("A Canutes database or an explicit legal resolver is required to add links to legal references.");
392
- let r = t.legiResolver ?? new oe(t.canutesDb), { output: i } = await ae({
392
+ let r = t.legiResolver ?? new ae(t.canutesDb), { output: i } = await ie({
393
393
  date: n,
394
394
  html: e,
395
395
  includeInternalArticleLinks: t.includeInternalArticleLinks,
@@ -402,23 +402,30 @@ async function ot(e, t, n) {
402
402
  });
403
403
  return i ?? e;
404
404
  }
405
- function st(e, t) {
405
+ function ot(e, t) {
406
406
  let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
407
- return L(r) && L(n) && e(n).parents("table").get(0) === r ? r : L(n) ? n : t;
407
+ return R(r) && R(n) && e(n).parents("table").get(0) === r ? r : R(n) ? n : t;
408
408
  }
409
- function ct(e, t, n, r) {
410
- if (t.has(r.container)) return;
411
- let i = r.id ?? I(r.num ?? r.label);
412
- n.has(i) || (n.add(i), t.add(r.container), e.push({
413
- id: i,
414
- label: r.label,
415
- num: r.num,
416
- title: r.title,
417
- element: r.element,
418
- container: r.container
419
- }));
409
+ function st(e, t, n, r, i) {
410
+ if (n.has(i.container)) return;
411
+ let a = i.id ?? L(i.num ?? i.label);
412
+ if (r.has(a)) return;
413
+ r.add(a), n.add(i.container);
414
+ let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = R(o) ? lt(e, o) : null, c = s ? e(o).text() : "", l = R(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) => I(e) === I(c)) ? {
415
+ element: o,
416
+ text: `${s.label}\n${s.title}`
417
+ } : void 0;
418
+ t.push({
419
+ id: a,
420
+ label: i.label,
421
+ num: i.num,
422
+ title: i.title,
423
+ element: i.element,
424
+ container: i.container,
425
+ splitAtBreak: l
426
+ });
420
427
  }
421
- function R(e) {
428
+ function ct(e) {
422
429
  let t = /* @__PURE__ */ new Map();
423
430
  return e("body *").each((e, n) => {
424
431
  t.set(n, e);
@@ -427,54 +434,66 @@ function R(e) {
427
434
  function z(e, t) {
428
435
  return e.get(t) ?? 2 ** 53 - 1;
429
436
  }
430
- function lt(e) {
437
+ function lt(e, t) {
438
+ if (!e(t).hasClass("assnat9ArticleNum") && !dt(e, t) || e(t).find("br").length !== 1) return null;
439
+ let n = "", r = "", i = !1, a = (e) => {
440
+ if (e.type === "text") i ? r += e.data : n += e.data;
441
+ else if (R(e)) if (e.tagName.toLowerCase() === "br") i = !0;
442
+ else for (let t of e.children) a(t);
443
+ };
444
+ a(t);
445
+ let o = T(F(n)), s = F(r);
446
+ return o && !o.title && s ? {
447
+ ...o,
448
+ title: s
449
+ } : null;
450
+ }
451
+ function ut(e) {
431
452
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
432
453
  e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
433
- if (Be(e, a)) return;
434
- let o = w(P(e(a).text()));
435
- if (!o) return;
436
- let s = e(a).attr("id");
454
+ if (ze(e, a)) return;
455
+ let o = F(e(a).text()), s = e(a).attr("id");
437
456
  if (!s || r.has(s)) return;
438
- let c = st(e, a);
439
- ct(t, n, r, {
457
+ let c = ot(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), u = T(o) ?? (R(l) && (a === l || e(a).find("br").length === 1) ? lt(e, l) : null);
458
+ u && st(e, t, n, r, {
440
459
  id: s,
441
- ...o,
460
+ ...u,
442
461
  element: a,
443
462
  container: c
444
463
  });
445
464
  }), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
446
465
  if (n.has(a)) return;
447
- let o = w(P(e(a).text()));
448
- o && ct(t, n, r, {
466
+ let o = T(F(e(a).text())) ?? lt(e, a);
467
+ o && st(e, t, n, r, {
449
468
  ...o,
450
469
  element: a,
451
470
  container: a
452
471
  });
453
472
  });
454
- let i = R(e);
473
+ let i = ct(e);
455
474
  return t.sort((e, t) => z(i, e.container) - z(i, t.container)), t;
456
475
  }
457
- function ut(e, t) {
458
- if (Be(e, t)) return !1;
476
+ function dt(e, t) {
477
+ if (ze(e, t)) return !1;
459
478
  let n = t.tagName?.toLowerCase();
460
479
  if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
461
480
  let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
462
481
  return /text-align\s*:\s*center/iu.test(r) && (/font-weight\s*:\s*bold/iu.test(r) || /font-weight\s*:\s*bold/iu.test(i) || /<(?:strong|b)(?:\s|>)/iu.test(i));
463
482
  }
464
- function dt(e) {
483
+ function ft(e) {
465
484
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
466
485
  return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
467
- if (Be(e, a) || !e(a).hasClass("assnat9ArticleNum") && !ut(e, a)) return;
468
- let o = w(e(a).text());
469
- o && ct(t, n, r, {
486
+ if (ze(e, a) || !e(a).hasClass("assnat9ArticleNum") && !dt(e, a)) return;
487
+ let o = T(e(a).text()) ?? lt(e, a);
488
+ o && st(e, t, n, r, {
470
489
  ...o,
471
490
  element: a,
472
491
  container: a
473
492
  });
474
493
  }), t;
475
494
  }
476
- function ft(e) {
477
- let t = ze(e ?? "").replace(/[()]/gu, "").trim();
495
+ function pt(e) {
496
+ let t = Re(e ?? "").replace(/[()]/gu, "").trim();
478
497
  if (!t || t.toLowerCase() === "liminaire") return;
479
498
  if (t.toLowerCase() === "unique") return {
480
499
  base: 1,
@@ -483,7 +502,7 @@ function ft(e) {
483
502
  };
484
503
  let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
485
504
  if (!n) return;
486
- let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : mt(i);
505
+ let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : ht(i);
487
506
  if (a !== void 0) return {
488
507
  base: r,
489
508
  suffixOrder: a,
@@ -491,7 +510,7 @@ function ft(e) {
491
510
  text: t
492
511
  };
493
512
  }
494
- function pt(e, t) {
513
+ function mt(e, t) {
495
514
  if (t.base !== e.base) return t.base - e.base;
496
515
  if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
497
516
  for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
@@ -500,14 +519,14 @@ function pt(e, t) {
500
519
  }
501
520
  return 0;
502
521
  }
503
- function mt(e) {
504
- let t = new E(e), n = Te(t);
522
+ function ht(e) {
523
+ let t = new D(e), n = we(t);
505
524
  if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
506
525
  }
507
- function ht(e) {
526
+ function gt(e) {
508
527
  let t = [], n = e.map((e) => ({
509
528
  heading: e,
510
- token: ft(e.num)
529
+ token: pt(e.num)
511
530
  }));
512
531
  n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
513
532
  code: "article_toc_out_of_order",
@@ -516,7 +535,7 @@ function ht(e) {
516
535
  let r;
517
536
  for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
518
537
  if (r !== void 0) {
519
- let n = pt(r, i);
538
+ let n = mt(r, i);
520
539
  n === 0 ? t.push({
521
540
  code: "article_toc_duplicate_number",
522
541
  message: `Article ${e.num ?? e.label} is repeated`,
@@ -545,52 +564,52 @@ function ht(e) {
545
564
  }
546
565
  return t;
547
566
  }
548
- function gt(e) {
549
- let t = ht(e);
567
+ function _t(e) {
568
+ let t = gt(e);
550
569
  t.length > 0 && process.env.TISSEUSE_WARN_ASSEMBLEE_HEADING_SEQUENCE === "1" && console.warn("Incoherent Assemblée article heading sequence", { issues: t.map((e) => e.message) });
551
570
  }
552
- function _t(e, { warn: t = !0 } = {}) {
553
- let n = lt(e), r = dt(e);
554
- if (n.length === 0) return t && gt(r), r;
555
- let i = R(e), a = (e, t) => {
556
- let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => I(e.num ?? e.label)));
571
+ function vt(e, { warn: t = !0 } = {}) {
572
+ let n = ut(e), r = ft(e);
573
+ if (n.length === 0) return t && _t(r), r;
574
+ let i = ct(e), a = (e, t) => {
575
+ let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => L(e.num ?? e.label)));
557
576
  for (let i of t) {
558
- let t = I(i.num ?? i.label);
577
+ let t = L(i.num ?? i.label);
559
578
  n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
560
579
  }
561
580
  return e.sort((e, t) => z(i, e.container) - z(i, t.container)), e;
562
- }, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && ht(c).length > ht(s).length ? s : c;
563
- return t && gt(l), l;
581
+ }, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && gt(c).length > gt(s).length ? s : c;
582
+ return t && _t(l), l;
564
583
  }
565
- function vt(e) {
584
+ function yt(e) {
566
585
  let t = e.next;
567
586
  for (; t !== null;) {
568
- if (L(t)) return t;
587
+ if (R(t)) return t;
569
588
  t = t.next;
570
589
  }
571
590
  return null;
572
591
  }
573
- function yt(e, t, n) {
592
+ function bt(e, t, n) {
574
593
  let r = e(t.container);
575
594
  if (!r.is("p.assnat9ArticleNum")) return;
576
595
  let i = r.parent(), a = i.parent();
577
596
  if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
578
597
  let o = a.children().get();
579
- if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || P(e(o[1]).text()) !== "") return;
598
+ if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || F(e(o[1]).text()) !== "") return;
580
599
  let s = o.length === 4 ? o[2] : void 0;
581
- if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(P(e(s).text())))) return;
600
+ if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(F(e(s).text())))) return;
582
601
  let c = o.at(-1);
583
- if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => w(e(t).text()) !== null))) return [
602
+ if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => T(e(t).text()) !== null))) return [
584
603
  t.container,
585
604
  ...s === void 0 ? [] : [s],
586
605
  c
587
606
  ];
588
607
  }
589
- function bt(e, t, n, r = R(e)) {
608
+ function xt(e, t, n, r = ct(e)) {
590
609
  let i = [t.container], a = n?.container;
591
- for (let e = vt(t.container); e !== null && e !== a; e = vt(e)) i.push(e);
610
+ for (let e = yt(t.container); e !== null && e !== a; e = yt(e)) i.push(e);
592
611
  if (i.length > 1) return i;
593
- let o = yt(e, t, n);
612
+ let o = bt(e, t, n);
594
613
  if (o !== void 0) return o;
595
614
  let s = z(r, t.container), c = a ? z(r, a) : -1;
596
615
  return e("body > *").get().filter((e) => {
@@ -598,7 +617,7 @@ function bt(e, t, n, r = R(e)) {
598
617
  return t >= s && (c === -1 || t < c);
599
618
  });
600
619
  }
601
- function xt(e, t) {
620
+ function St(e, t) {
602
621
  let n = [], r = /* @__PURE__ */ new Set();
603
622
  for (let i of t) {
604
623
  let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
@@ -606,63 +625,63 @@ function xt(e, t) {
606
625
  }
607
626
  return n;
608
627
  }
609
- function St(e, t, n) {
610
- let r = [], i = !1;
611
- for (let a of xt(e, n)) {
612
- let n = e(a).is("table.akn-quoted-table") ? un(e, a) : P(e(a).text());
613
- if (!n) continue;
614
- Re.test(n) && (i = !0);
615
- let o = i ? "noise" : at(n), s = `${t}-b${r.length + 1}`;
616
- e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
617
- id: s,
628
+ function Ct(e, t, n, r) {
629
+ let i = [], a = !1;
630
+ for (let o of St(e, n)) {
631
+ let n = e(o).is("table.akn-quoted-table") ? dn(e, o) : F(e(o).text());
632
+ if (o === r?.splitAtBreak?.element && (n = r.splitAtBreak.text), !n) continue;
633
+ Le.test(n) && (a = !0);
634
+ let s = a ? "noise" : it(n), c = `${t}-b${i.length + 1}`;
635
+ e(o).attr("data-pjl-parsed-article-id", t), e(o).attr("data-pjl-parsed-block-id", c), i.push({
636
+ id: c,
618
637
  articleId: t,
619
- kind: o,
620
- links: tt(e, a),
638
+ kind: s,
639
+ links: et(e, o),
621
640
  text: n,
622
- html: et(e, a)
641
+ html: $e(e, o)
623
642
  });
624
643
  }
625
- return r;
644
+ return i;
626
645
  }
627
- function Ct(e, t) {
646
+ function wt(e, t) {
628
647
  if (t.length === 0) return e;
629
648
  let n = `<div style="display: none;">\n${t.map((e) => `<p class="assnatTOC6"><a href="#${e.id}"><span class="assnatHyperlink" style="font-weight:bold; text-decoration:none; color:#000000">${e.label.toUpperCase()}</span></a></p>`).join("\n")}\n</div>`;
630
649
  return e.includes("class=\"assnatSection3\"") ? e.replace(/(<div class="assnatSection3">)/u, `${n}$1`) : e.includes("id=\"formCorrection:panel:1:table\"") ? e.replace(/(<div id="formCorrection:panel:1:table">)/u, `${n}$1`) : `${n}\n${e}`;
631
650
  }
632
- function wt(e) {
633
- let t = T(e), n = Tt(t);
634
- for (let e of _t(t, { warn: !1 })) {
635
- let r = I(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
651
+ function Tt(e) {
652
+ let t = E(e), n = Et(t);
653
+ for (let e of vt(t, { warn: !1 })) {
654
+ let r = L(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
636
655
  if (a !== r) {
637
- if (a?.startsWith("_Toc") && !Dt(n, a, e.element)) {
656
+ if (a?.startsWith("_Toc") && !Ot(n, a, e.element)) {
638
657
  let e = t("<span></span>").attr("id", a);
639
658
  i.before(e);
640
659
  let r = e.get(0);
641
- L(r) && B(n, a, r);
660
+ R(r) && B(n, a, r);
642
661
  }
643
- a && Et(n, a, e.element), i.attr("id", r), B(n, r, e.element);
662
+ a && Dt(n, a, e.element), i.attr("id", r), B(n, r, e.element);
644
663
  }
645
664
  }
646
- let r = _t(t), i = R(t);
665
+ let r = vt(t), i = ct(t);
647
666
  for (let [e, a] of r.entries()) {
648
- let o = bt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
667
+ let o = xt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
649
668
  for (let e of o) {
650
669
  let r = t(e).attr("data-alinea")?.trim();
651
670
  if (!r) continue;
652
671
  let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
653
- if (Dt(n, i, e)) continue;
672
+ if (Ot(n, i, e)) continue;
654
673
  let o = t(e).attr("id");
655
674
  if (o && o !== i) {
656
675
  let r = t("<span></span>").attr("id", i);
657
676
  t(e).before(r);
658
677
  let a = r.get(0);
659
- L(a) && B(n, i, a);
660
- } else o && Et(n, o, e), t(e).attr("id", i), B(n, i, e);
678
+ R(a) && B(n, i, a);
679
+ } else o && Dt(n, o, e), t(e).attr("id", i), B(n, i, e);
661
680
  }
662
681
  }
663
682
  return t.html();
664
683
  }
665
- function Tt(e) {
684
+ function Et(e) {
666
685
  let t = /* @__PURE__ */ new Map();
667
686
  for (let n of e("[id]").get()) {
668
687
  let r = e(n).attr("id");
@@ -674,29 +693,29 @@ function B(e, t, n) {
674
693
  let r = e.get(t);
675
694
  r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
676
695
  }
677
- function Et(e, t, n) {
696
+ function Dt(e, t, n) {
678
697
  let r = e.get(t);
679
698
  r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
680
699
  }
681
- function Dt(e, t, n) {
700
+ function Ot(e, t, n) {
682
701
  for (let r of e.get(t) ?? []) if (r !== n) return !0;
683
702
  return !1;
684
703
  }
685
- function Ot(e, t) {
686
- let n = $e("sourceText" in t ? t.sourceText : "");
704
+ function kt(e, t) {
705
+ let n = Qe("sourceText" in t ? t.sourceText : "");
687
706
  if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
688
- let t = $e(e.text);
707
+ let t = Qe(e.text);
689
708
  return t.length > 0 && (n.includes(t) || t.includes(n));
690
709
  });
691
710
  }
692
- function kt(e, t) {
711
+ function At(e, t) {
693
712
  if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
694
713
  }
695
- function At(e) {
714
+ function jt(e) {
696
715
  return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
697
716
  }
698
- function jt(e) {
699
- let t = Le(e.text);
717
+ function Mt(e) {
718
+ let t = Ie(e.text);
700
719
  if (t.length !== 1) return;
701
720
  let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
702
721
  let r = n.text ?? "", i = e.text.indexOf(r);
@@ -710,21 +729,21 @@ function jt(e) {
710
729
  modifyingArticleLabel: i.text ?? ""
711
730
  };
712
731
  }
713
- function Mt(e, t) {
714
- let n = P(e);
732
+ function Nt(e, t) {
733
+ let n = F(e);
715
734
  if (!n) return;
716
735
  let r = x(n);
717
736
  return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
718
737
  }
719
- function Nt(e) {
720
- let t = /* @__PURE__ */ new Map(), n = [], r = ie(e.map((e) => e.text)), i = -1;
738
+ function Pt(e) {
739
+ let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
721
740
  for (let [a, o] of e.entries()) {
722
741
  let e = r.get(a);
723
742
  if (e && (i = e.endIndex), a <= i) {
724
743
  t.set(o.id, [...n.map((e) => e.block), o]);
725
744
  continue;
726
745
  }
727
- let s = Mt(o.text, n.at(-1)?.level);
746
+ let s = Nt(o.text, n.at(-1)?.level);
728
747
  if (s === void 0) {
729
748
  t.set(o.id, [...n.map((e) => e.block), o]);
730
749
  continue;
@@ -737,14 +756,14 @@ function Nt(e) {
737
756
  }
738
757
  return t;
739
758
  }
740
- function Pt(e, t) {
759
+ function Ft(e, t) {
741
760
  let n = [], r = /* @__PURE__ */ new Set();
742
761
  for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
743
762
  return n;
744
763
  }
745
- function Ft(e, t, n) {
764
+ function It(e, t, n) {
746
765
  if (!t) return;
747
- let r = Pt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
766
+ let r = Ft(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
748
767
  if (r.length === 0) return;
749
768
  let i = r.map((e) => e.id);
750
769
  if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
@@ -759,7 +778,7 @@ function Ft(e, t, n) {
759
778
  }
760
779
  };
761
780
  }
762
- function It(e) {
781
+ function Lt(e) {
763
782
  let t = [], n = 0;
764
783
  for (let r of e.blocks) {
765
784
  let i = e.directiveText.indexOf(r.text, n);
@@ -773,7 +792,7 @@ function It(e) {
773
792
  }
774
793
  return t;
775
794
  }
776
- function Lt(e, t, n) {
795
+ function Rt(e, t, n) {
777
796
  let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
778
797
  if (a.length === 0) return;
779
798
  let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
@@ -787,7 +806,7 @@ function Lt(e, t, n) {
787
806
  }
788
807
  };
789
808
  }
790
- function Rt(e, t, n) {
809
+ function zt(e, t, n) {
791
810
  if (!t) return;
792
811
  let r = e.directiveText.indexOf(t.text);
793
812
  if (r === -1) return;
@@ -800,15 +819,26 @@ function Rt(e, t, n) {
800
819
  stop: a
801
820
  };
802
821
  }
803
- function zt(e, t) {
804
- let n = performance.now(), r = performance.now(), i = It(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Nt(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
822
+ function Bt(e, t) {
823
+ let n = performance.now(), r = performance.now(), i = Lt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Pt(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
805
824
  for (let t of e.blocks) {
806
- t.qualifiedVersion = jt(t);
807
- let e = At(t);
825
+ t.qualifiedVersion = Mt(t);
826
+ let e = jt(t);
808
827
  (e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
809
828
  }
810
- let p = performance.now() - o, m = performance.now(), h = te(), g = ue(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
811
- let n = Lt(e, i, t), r = kt(s, n) ?? Ot(e.blocks, t), a = At(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Rt(e, r, t), f = Ft(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
829
+ let p = performance.now() - o, m = performance.now(), h = te(), g = e.blocks[0], _ = e.title !== void 0 && g?.text.startsWith(`${e.label}\n`) && (e.directiveText === g.text || e.directiveText.startsWith(`${g.text}\n`)), v = _ && e.text.startsWith(`${e.label} ${e.title}`) ? " " : "", y = le(_ ? `${e.label}${v}${e.title}${e.directiveText.slice(g.text.length)}` : e.directiveText, t === void 0 ? void 0 : h);
830
+ if (_ && !v) {
831
+ let t = e.label.length;
832
+ y = y.map((e) => ({
833
+ ...e,
834
+ sourcePosition: {
835
+ start: e.sourcePosition.start > t ? e.sourcePosition.start + 1 : e.sourcePosition.start,
836
+ stop: e.sourcePosition.stop > t ? e.sourcePosition.stop + 1 : e.sourcePosition.stop
837
+ }
838
+ }));
839
+ }
840
+ let b = performance.now() - m, x = performance.now(), ee = y.map((t) => {
841
+ let n = Rt(e, i, t), r = At(s, n) ?? kt(e.blocks, t), a = jt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = zt(e, r, t), f = It(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
812
842
  return {
813
843
  articleId: e.id,
814
844
  blockId: r?.id,
@@ -827,19 +857,19 @@ function zt(e, t) {
827
857
  ...o.length > 0 ? { targetIds: o } : {},
828
858
  ...r?.id !== void 0 && u.get(r.id) ? { qualifiedVersion: u.get(r.id) } : {}
829
859
  };
830
- }), b = /* @__PURE__ */ new Set(), x = /* @__PURE__ */ new Map(), ee = y.flatMap((e) => {
860
+ }), S = /* @__PURE__ */ new Set(), C = /* @__PURE__ */ new Map(), w = ee.flatMap((e) => {
831
861
  let t = e.blockId ? s.get(e.blockId) : void 0;
832
862
  if (!t) return [e];
833
- if (b.has(t.id)) return [];
834
- let n = x.get(t.id);
835
- if (n === void 0 && (n = Fe(t.text, At(t), e.directive), x.set(t.id, n)), !n) {
836
- let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Pe(t.text, n.operations.length) : null;
863
+ if (S.has(t.id)) return [];
864
+ let n = C.get(t.id);
865
+ if (n === void 0 && (n = Pe(t.text, jt(t), e.directive), C.set(t.id, n)), !n) {
866
+ let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ne(t.text, n.operations.length) : null;
837
867
  return [r ? {
838
868
  ...e,
839
869
  sourceAnnotations: r
840
870
  } : e];
841
871
  }
842
- return b.add(t.id), [{
872
+ return S.add(t.id), [{
843
873
  ...e,
844
874
  effects: n.map((t) => ({
845
875
  ...t,
@@ -850,27 +880,27 @@ function zt(e, t) {
850
880
  }
851
881
  }))
852
882
  }];
853
- }), S = performance.now() - v;
883
+ }), ne = performance.now() - x;
854
884
  return t?.push({
855
885
  actionDirectiveExtraction: h,
856
886
  articleId: e.id,
857
887
  blockCount: e.blocks.length,
858
888
  buildRangesMs: Math.round(a * 10) / 10,
859
- directiveCount: ee.length,
889
+ directiveCount: w.length,
860
890
  directiveTextSize: e.directiveText.length,
861
- extractActionDirectivesMs: Math.round(_ * 10) / 10,
862
- mapDirectivesMs: Math.round(S * 10) / 10,
891
+ extractActionDirectivesMs: Math.round(b * 10) / 10,
892
+ mapDirectivesMs: Math.round(ne * 10) / 10,
863
893
  prepareBlockIndexesMs: Math.round(p * 10) / 10,
864
894
  totalMs: Math.round((performance.now() - n) * 10) / 10
865
- }), ee;
895
+ }), w;
866
896
  }
867
- function Bt(e) {
897
+ function Vt(e) {
868
898
  let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
869
899
  for (let i of e) {
870
- let e = Ge(i.directive);
900
+ let e = We(i.directive);
871
901
  if (e.length === 0) continue;
872
902
  let a = e.map(({ num: e }) => ({
873
- definitionId: `${i.articleId}:article:${He(e)}`,
903
+ definitionId: `${i.articleId}:article:${Ve(e)}`,
874
904
  num: e
875
905
  }));
876
906
  t.set(i, a);
@@ -893,13 +923,13 @@ function Bt(e) {
893
923
  definitions: n
894
924
  };
895
925
  }
896
- function Vt(e, t, n) {
897
- let r = new Map(t.map((e) => [Ve(e.num), e]));
926
+ function Ht(e, t, n) {
927
+ let r = new Map(t.map((e) => [Be(e.num), e]));
898
928
  return e.map((e) => {
899
- let t = n.get(e), i = t?.[0], a = [...Ke(e.directive.reference)].map((e) => r.get(Ve(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
929
+ let t = n.get(e), i = t?.[0], a = [...Ge(e.directive.reference)].map((e) => r.get(Be(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
900
930
  definitionId: a.definitionId,
901
931
  num: a.num
902
- }, s = qe(e.directive), c = (e.targetIds?.length ?? 0) > 0;
932
+ }, s = Ke(e.directive), c = (e.targetIds?.length ?? 0) > 0;
903
933
  return {
904
934
  ...e,
905
935
  ...i === void 0 ? {} : { createdArticle: i },
@@ -912,7 +942,7 @@ function Vt(e, t, n) {
912
942
  };
913
943
  });
914
944
  }
915
- function Ht(e) {
945
+ function Ut(e) {
916
946
  switch (e.kind) {
917
947
  case "insert_after":
918
948
  case "insert_before": return [e.insertText];
@@ -930,8 +960,8 @@ function Ht(e) {
930
960
  default: return [];
931
961
  }
932
962
  }
933
- function Ut(e) {
934
- return e.flatMap((e) => Ht(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
963
+ function Wt(e) {
964
+ return e.flatMap((e) => Ut(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
935
965
  code: "nested_french_quote_in_redaction",
936
966
  message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
937
967
  details: {
@@ -943,18 +973,18 @@ function Ut(e) {
943
973
  }
944
974
  })));
945
975
  }
946
- function Wt(e) {
947
- return Ht(e).map((t) => ({
976
+ function Gt(e) {
977
+ return Ut(e).map((t) => ({
948
978
  directiveKind: e.kind,
949
979
  text: t
950
980
  }));
951
981
  }
952
- function Gt(e) {
982
+ function Kt(e) {
953
983
  let t = /* @__PURE__ */ new Set();
954
984
  for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
955
985
  return Array.from(t);
956
986
  }
957
- function Kt(e, t) {
987
+ function qt(e, t) {
958
988
  let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
959
989
  for (let e of r) {
960
990
  let t = n.get(e);
@@ -966,11 +996,11 @@ function Kt(e, t) {
966
996
  }
967
997
  return i;
968
998
  }
969
- function qt(e, t, n) {
999
+ function Jt(e, t, n) {
970
1000
  return e.find((e) => t >= e.start && n <= e.stop);
971
1001
  }
972
- function Jt(e, t, n) {
973
- let r = Gt(n), i = r.flatMap((t) => {
1002
+ function Yt(e, t, n) {
1003
+ let r = Kt(n), i = r.flatMap((t) => {
974
1004
  for (let n of e.blocks) {
975
1005
  let e = n.text.indexOf(t);
976
1006
  if (e !== -1) return [{
@@ -989,7 +1019,7 @@ function Jt(e, t, n) {
989
1019
  e.directiveText
990
1020
  ].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
991
1021
  if (!o) return [];
992
- let s = Kt(e, t);
1022
+ let s = qt(e, t);
993
1023
  if (s.length === 0) return [];
994
1024
  let c = [], l = 0;
995
1025
  for (let e of r) {
@@ -997,7 +1027,7 @@ function Jt(e, t, n) {
997
1027
  if (t === -1) continue;
998
1028
  let n = t + e.length;
999
1029
  l = n;
1000
- let r = qt(s, t, n);
1030
+ let r = Jt(s, t, n);
1001
1031
  r && c.push({
1002
1032
  blockId: r.block.id,
1003
1033
  start: t - r.start,
@@ -1007,15 +1037,15 @@ function Jt(e, t, n) {
1007
1037
  }
1008
1038
  return c;
1009
1039
  }
1010
- function Yt(e, t) {
1040
+ function Xt(e, t) {
1011
1041
  let n = new Map(e.map((e) => [e.id, e]));
1012
1042
  return t.flatMap((e) => {
1013
1043
  let t = n.get(e.articleId);
1014
- return t ? Wt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1044
+ return t ? Gt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1015
1045
  articleId: e.articleId,
1016
1046
  code: "nested_french_quote_in_redaction",
1017
1047
  message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
1018
- ranges: Jt(t, e, r),
1048
+ ranges: Yt(t, e, r),
1019
1049
  severity: "warning",
1020
1050
  details: {
1021
1051
  blockId: e.blockId,
@@ -1026,8 +1056,8 @@ function Yt(e, t) {
1026
1056
  })) : [];
1027
1057
  });
1028
1058
  }
1029
- function Xt(e, t) {
1030
- let n = new Map(e.flatMap((e) => [...ie(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1059
+ function Zt(e, t) {
1060
+ let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1031
1061
  articleId: e.id,
1032
1062
  blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
1033
1063
  ...n
@@ -1049,8 +1079,8 @@ function Xt(e, t) {
1049
1079
  }];
1050
1080
  });
1051
1081
  }
1052
- function Zt(e, t, n, r, i, a, o = !0, s) {
1053
- let c = new Se("parsedBill.buildParsedDocument"), l = i.reduce((e, t) => e + t.blocks.length, 0), u = c.timeSync("buildDirectiveText", () => i.map((e) => e.directiveText).filter(Boolean).join("\n")), d = {
1082
+ function Qt(e, t, n, r, i, a, o = !0, s) {
1083
+ let c = new xe("parsedBill.buildParsedDocument"), l = i.reduce((e, t) => e + t.blocks.length, 0), u = c.timeSync("buildDirectiveText", () => i.map((e) => e.directiveText).filter(Boolean).join("\n")), d = {
1054
1084
  sourceFormat: e,
1055
1085
  documentDate: r,
1056
1086
  html: t,
@@ -1071,14 +1101,14 @@ function Zt(e, t, n, r, i, a, o = !0, s) {
1071
1101
  directiveTextSize: u.length
1072
1102
  }), e;
1073
1103
  }
1074
- let f = c.timeSync("extractGlobalApplicabilityDate", () => Qe(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1104
+ let f = c.timeSync("extractGlobalApplicabilityDate", () => Ze(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1075
1105
  let e = [];
1076
1106
  for (let t of i) {
1077
- let n = zt(t, c.enabled ? p : void 0);
1107
+ let n = Bt(t, c.enabled ? p : void 0);
1078
1108
  e.push(...n);
1079
1109
  }
1080
1110
  return e;
1081
- }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Bt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Vt(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Ut(_), { count: _.length }), y = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Yt(i, _), ...Xt(i, _)], { count: _.length }), ee = {
1111
+ }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Vt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Ht(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Wt(_), { count: _.length }), y = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Xt(i, _), ...Zt(i, _)], { count: _.length }), ee = {
1082
1112
  ...d,
1083
1113
  ...f ? { globalApplicabilityDate: f } : {},
1084
1114
  ...g.length > 0 ? { internalArticleDefinitions: g } : {},
@@ -1172,18 +1202,18 @@ function Zt(e, t, n, r, i, a, o = !0, s) {
1172
1202
  slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
1173
1203
  }), ee;
1174
1204
  }
1175
- function Qt(e) {
1205
+ function $t(e) {
1176
1206
  return { items: e.map((e) => ({
1177
1207
  id: e.id,
1178
1208
  line: e.title ? `${e.label} : ${e.title}` : e.label,
1179
1209
  type: "article"
1180
1210
  })) };
1181
1211
  }
1182
- function $t(e) {
1183
- return Array.from(le(e)).filter((e) => e.type === "article").map((e) => F(e.line.split(/[::]/u)[0]));
1212
+ function en(e) {
1213
+ return Array.from(ce(e)).filter((e) => e.type === "article").map((e) => I(e.line.split(/[::]/u)[0]));
1184
1214
  }
1185
- function en(e, t, n, r) {
1186
- let i = ht(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(le(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? I(e.num) : T(e.html)("p.TCNumArticle").first().attr("id") ?? I(e.label) : e.id), c = o.map((e) => e.id);
1215
+ function tn(e, t, n, r) {
1216
+ let i = gt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ce(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? L(e.num) : E(e.html)("p.TCNumArticle").first().attr("id") ?? L(e.label) : e.id), c = o.map((e) => e.id);
1187
1217
  (c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
1188
1218
  code: "article_toc_source_heading_mismatch",
1189
1219
  message: "The table of contents differs from the parsed article headings",
@@ -1199,8 +1229,8 @@ function en(e, t, n, r) {
1199
1229
  });
1200
1230
  return i;
1201
1231
  }
1202
- function tn(e, t, n) {
1203
- let r = $t(b(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => F(e.label)), a = Qt(e), o = [...n, ...en(e, a, t, "assemblee-html")];
1232
+ function nn(e, t, n) {
1233
+ let r = en(b(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => I(e.label)), a = $t(e), o = [...n, ...tn(e, a, t, "assemblee-html")];
1204
1234
  if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
1205
1235
  let t = r.findIndex((e, t) => e !== i[t]);
1206
1236
  o.push({
@@ -1224,24 +1254,24 @@ function tn(e, t, n) {
1224
1254
  tableOfContents: a
1225
1255
  };
1226
1256
  }
1227
- async function nn(e, t) {
1228
- let n = new Se("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => rn(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => wt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => T(i)), o = n.timeSync("extractArticleHeadings", () => _t(a)), s = new Set(o.map((e) => e.id)), c = dt(a).filter((e) => !s.has(I(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1257
+ async function rn(e, t) {
1258
+ let n = new xe("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => an(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Tt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => E(i)), o = n.timeSync("extractArticleHeadings", () => vt(a)), s = new Set(o.map((e) => e.id)), c = ft(a).filter((e) => !s.has(L(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1229
1259
  code: "article_toc_source_heading_mismatch",
1230
1260
  message: "Some structural article headings were not retained",
1231
1261
  details: { discardedCandidates: c }
1232
- }] : [], u = R(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1233
- let n = bt(a, e, o[t + 1], u), r = St(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1262
+ }] : [], u = ct(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1263
+ let n = xt(a, e, o[t + 1], u), r = Ct(a, e.id, n, e), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1234
1264
  return {
1235
1265
  id: e.id,
1236
1266
  label: e.label,
1237
1267
  num: e.num,
1238
1268
  title: e.title,
1239
- text: it(a, n),
1240
- html: n.map((e) => et(a, e)).join("\n"),
1269
+ text: rt(a, n),
1270
+ html: n.map((e) => $e(a, e)).join("\n"),
1241
1271
  directiveText: i,
1242
1272
  blocks: r
1243
1273
  };
1244
- }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Ct(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => tn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => Zt("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1274
+ }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => wt(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => nn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => Qt("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1245
1275
  return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
1246
1276
  articleCount: h.articles.length,
1247
1277
  blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1249,18 +1279,18 @@ async function nn(e, t) {
1249
1279
  targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
1250
1280
  }), h;
1251
1281
  }
1252
- async function rn(e, t) {
1282
+ async function an(e, t) {
1253
1283
  return {
1254
1284
  sourceFormat: "assemblee-html",
1255
1285
  documentDate: t.date,
1256
1286
  html: e,
1257
- linkedHtml: await ot(e, t, t.date)
1287
+ linkedHtml: await at(e, t, t.date)
1258
1288
  };
1259
1289
  }
1260
1290
  function V(e) {
1261
1291
  return e.replace(/&/gu, "&amp;").replace(/</gu, "&lt;").replace(/>/gu, "&gt;").replace(/"/gu, "&quot;");
1262
1292
  }
1263
- function an(e) {
1293
+ function on(e) {
1264
1294
  let t = e;
1265
1295
  for (let e = 0; e < 3; e++) {
1266
1296
  let e = t;
@@ -1268,27 +1298,27 @@ function an(e) {
1268
1298
  }
1269
1299
  return t;
1270
1300
  }
1271
- function on(e) {
1301
+ function sn(e) {
1272
1302
  return /(?:&lt;|&amp;lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
1273
1303
  }
1274
1304
  function H(e) {
1275
1305
  return e.name.replace(/^.*:/u, "");
1276
1306
  }
1277
- function sn(e, t) {
1307
+ function cn(e, t) {
1278
1308
  return t.children.map((t) => U(e, t)).filter(Boolean).join("");
1279
1309
  }
1280
- function cn(e, t) {
1281
- return t.children.map((t) => t.type === "text" && on(t.data) ? an(t.data) : U(e, t)).filter(Boolean).join("");
1310
+ function ln(e, t) {
1311
+ return t.children.map((t) => t.type === "text" && sn(t.data) ? on(t.data) : U(e, t)).filter(Boolean).join("");
1282
1312
  }
1283
1313
  function U(e, t) {
1284
1314
  if (t.type === "text") {
1285
1315
  let e = t.data.replace(/\s+\./gu, ".");
1286
- return on(e) ? an(e) : V(e);
1316
+ return sn(e) ? on(e) : V(e);
1287
1317
  }
1288
- if (!L(t)) return "";
1289
- let n = H(t), r = sn(e, t);
1318
+ if (!R(t)) return "";
1319
+ let n = H(t), r = cn(e, t);
1290
1320
  switch (n) {
1291
- case "p": return `<p${dn(e, t, [
1321
+ case "p": return `<p${fn(e, t, [
1292
1322
  "id",
1293
1323
  "class",
1294
1324
  "align",
@@ -1302,13 +1332,13 @@ function U(e, t) {
1302
1332
  case "u":
1303
1333
  case "sup":
1304
1334
  case "sub":
1305
- case "abbr": return `<${n}${dn(e, t, [
1335
+ case "abbr": return `<${n}${fn(e, t, [
1306
1336
  "id",
1307
1337
  "class",
1308
1338
  "title",
1309
1339
  "style"
1310
1340
  ])}>${r}</${n}>`;
1311
- case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${dn(e, t, [
1341
+ case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${fn(e, t, [
1312
1342
  "id",
1313
1343
  "class",
1314
1344
  "title",
@@ -1319,8 +1349,8 @@ function U(e, t) {
1319
1349
  case "tbody":
1320
1350
  case "tr":
1321
1351
  case "th":
1322
- case "td": return fn(e, t, n, r);
1323
- case "caption": return `<caption${dn(e, t, [
1352
+ case "td": return pn(e, t, n, r);
1353
+ case "caption": return `<caption${fn(e, t, [
1324
1354
  "id",
1325
1355
  "class",
1326
1356
  "align",
@@ -1328,12 +1358,12 @@ function U(e, t) {
1328
1358
  ])}>${r}</caption>`;
1329
1359
  case "num": return `<span class="akn-num">${r}</span> `;
1330
1360
  case "heading": return `<p class="akn-heading">${r}</p>`;
1331
- case "content": return cn(e, t);
1332
- case "alinea": return Dn(e, t, "div", "akn-alinea");
1333
- case "article": return Dn(e, t, "article", "akn-article");
1361
+ case "content": return ln(e, t);
1362
+ case "alinea": return On(e, t, "div", "akn-alinea");
1363
+ case "article": return On(e, t, "article", "akn-article");
1334
1364
  case "blockList":
1335
1365
  case "list": return `<div class="akn-list">${r}</div>`;
1336
- case "item": return Dn(e, t, "div", "akn-item");
1366
+ case "item": return On(e, t, "div", "akn-item");
1337
1367
  case "listIntroduction":
1338
1368
  case "listWrapUp":
1339
1369
  case "intro":
@@ -1349,12 +1379,12 @@ function U(e, t) {
1349
1379
  case "book":
1350
1380
  case "tome":
1351
1381
  case "subchapter":
1352
- case "subsection": return Dn(e, t, "section", `akn-${n}`);
1382
+ case "subsection": return On(e, t, "section", `akn-${n}`);
1353
1383
  case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
1354
1384
  default: return r;
1355
1385
  }
1356
1386
  }
1357
- function ln(e, t) {
1387
+ function un(e, t) {
1358
1388
  let n = e(t).text();
1359
1389
  if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
1360
1390
  let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
@@ -1365,28 +1395,28 @@ function ln(e, t) {
1365
1395
  let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
1366
1396
  if (l) {
1367
1397
  let t = Number(e(l).attr("rowspan") ?? "1");
1368
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && P(e(l).text()) !== "«") return [];
1398
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && F(e(l).text()) !== "«") return [];
1369
1399
  i = t - 1;
1370
1400
  }
1371
1401
  if (u) {
1372
1402
  let t = Number(e(u).attr("rowspan") ?? "1");
1373
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(P(e(u).text()))) return [];
1403
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(F(e(u).text()))) return [];
1374
1404
  a = t - 1;
1375
1405
  }
1376
1406
  return [l, u];
1377
1407
  });
1378
1408
  if (o.some((e) => e.length !== 2)) return;
1379
- let s = o.map(([t]) => t ? P(e(t).text()) : ""), c = o.map(([, t]) => t ? P(e(t).text()) : "");
1409
+ let s = o.map(([t]) => t ? F(e(t).text()) : ""), c = o.map(([, t]) => t ? F(e(t).text()) : "");
1380
1410
  if (!(s.filter((e) => e === "«").length !== 1 || c.filter((e) => /^»\s*;?$/u.test(e)).length !== 1 || s.some((e) => e !== "" && e !== "«") || c.some((e) => e !== "" && !/^»\s*;?$/u.test(e)) || o.some(([t, n]) => [t, n].some((t) => t && e(t).attr("colspan") !== void 0))) && !(s.indexOf("«") > c.findIndex((e) => e.startsWith("»")))) {
1381
1411
  e(t).addClass("akn-quoted-table");
1382
1412
  for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
1383
1413
  }
1384
1414
  }
1385
- function un(e, t) {
1386
- let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(P(e(t).text())))).text();
1387
- return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => P(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1415
+ function dn(e, t) {
1416
+ let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(F(e(t).text())))).text();
1417
+ return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => F(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1388
1418
  }
1389
- function dn(e, t, n, r = {}) {
1419
+ function fn(e, t, n, r = {}) {
1390
1420
  let i = [];
1391
1421
  for (let r of n) {
1392
1422
  if (r === "style") continue;
@@ -1396,8 +1426,8 @@ function dn(e, t, n, r = {}) {
1396
1426
  let a = r.style ?? e(t).attr("style");
1397
1427
  return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1398
1428
  }
1399
- function fn(e, t, n, r) {
1400
- return `<${n}${dn(e, t, [
1429
+ function pn(e, t, n, r) {
1430
+ return `<${n}${fn(e, t, [
1401
1431
  "id",
1402
1432
  "class",
1403
1433
  "colspan",
@@ -1410,105 +1440,105 @@ function fn(e, t, n, r) {
1410
1440
  "cellspacing",
1411
1441
  "cellpadding",
1412
1442
  "style"
1413
- ], { style: pn(e, t, n) })}>${r}</${n}>`;
1443
+ ], { style: mn(e, t, n) })}>${r}</${n}>`;
1414
1444
  }
1415
- function pn(e, t, n) {
1445
+ function mn(e, t, n) {
1416
1446
  let r = e(t).attr("style") ?? "";
1417
- return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = mn(r, "text-align", "center")), r || void 0;
1447
+ return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = hn(r, "text-align", "center")), r || void 0;
1418
1448
  }
1419
- function mn(e, t, n) {
1449
+ function hn(e, t, n) {
1420
1450
  let r = e.trim();
1421
1451
  return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
1422
1452
  }
1423
- function hn(e, t) {
1424
- let n = [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean);
1453
+ function gn(e, t) {
1454
+ let n = [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean);
1425
1455
  return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
1426
1456
  }
1427
- function gn(e, t) {
1457
+ function _n(e, t) {
1428
1458
  if (!t) return !1;
1429
- let n = (e) => P(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1430
- return n(P(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1459
+ let n = (e) => F(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1460
+ return n(F(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1431
1461
  }
1432
- function _n(e) {
1462
+ function vn(e) {
1433
1463
  let t = V(e);
1434
1464
  return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
1435
1465
  }
1436
- function vn(e, t) {
1437
- return yn([bn({
1466
+ function yn(e, t) {
1467
+ return bn([xn({
1438
1468
  content: e,
1439
1469
  pastille: t
1440
1470
  })]);
1441
1471
  }
1442
- function yn(e) {
1472
+ function bn(e) {
1443
1473
  return `<table class="fixed-size large akn-pastille-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
1444
1474
  }
1445
- function bn({ content: e, pastille: t, style: n, contextClass: r }) {
1475
+ function xn({ content: e, pastille: t, style: n, contextClass: r }) {
1446
1476
  let i = n ? ` style="${V(n)}"` : "", a = r ? ` ${V(r)}` : "";
1447
- return `<tr${r ? ` class="${V(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${_n(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
1477
+ return `<tr${r ? ` class="${V(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${vn(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
1448
1478
  }
1449
- function xn({ content: e, style: t, contextClass: n }) {
1479
+ function Sn({ content: e, style: t, contextClass: n }) {
1450
1480
  let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
1451
1481
  return `<tr${n ? ` class="${V(n)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 no-right-border"><div class="tableauComparatifCell${i}"><p class="pastille"><br></p></div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${i}"${r}>${e}</div></td></tr>`;
1452
1482
  }
1453
- function Sn(e, t) {
1454
- return e(t).attr("data:pastille") ?? e(t).attr("pastille");
1455
- }
1456
1483
  function Cn(e, t) {
1457
- return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
1484
+ return e(t).attr("data:pastille") ?? e(t).attr("pastille");
1458
1485
  }
1459
1486
  function wn(e, t) {
1460
- return e(t).children().get().filter((e) => L(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1487
+ return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
1461
1488
  }
1462
1489
  function Tn(e, t) {
1490
+ return e(t).children().get().filter((e) => R(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1491
+ }
1492
+ function En(e, t) {
1463
1493
  let n = [];
1464
1494
  return e(t).children().each((t, r) => {
1465
- if (!L(r)) return;
1495
+ if (!R(r)) return;
1466
1496
  let i = H(r);
1467
1497
  i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
1468
1498
  }), n.filter(Boolean);
1469
1499
  }
1470
- function En(e, t) {
1471
- let n = [], r = H(t), i = r === "alinea" ? Sn(e, t) : void 0, a = wn(e, t), o = On(e, t, r, i), s = Pn(e, t);
1500
+ function Dn(e, t) {
1501
+ let n = [], r = H(t), i = r === "alinea" ? Cn(e, t) : void 0, a = Tn(e, t), o = kn(e, t, r, i), s = Fn(e, t);
1472
1502
  if (i) {
1473
- let r = [gn(a, P(e(t).children("num").first().text())) ? "" : hn(e, t), a].filter(Boolean).join("\n");
1474
- P(r) && n.push(bn({
1503
+ let r = [_n(a, F(e(t).children("num").first().text())) ? "" : gn(e, t), a].filter(Boolean).join("\n");
1504
+ F(r) && n.push(xn({
1475
1505
  content: r,
1476
1506
  pastille: i,
1477
1507
  style: o,
1478
1508
  contextClass: s
1479
1509
  }));
1480
- } else a && n.push(xn({
1510
+ } else a && n.push(Sn({
1481
1511
  content: a,
1482
1512
  style: o,
1483
1513
  contextClass: s
1484
1514
  }));
1485
1515
  for (let r of e(t).children().get()) {
1486
- if (!L(r)) continue;
1516
+ if (!R(r)) continue;
1487
1517
  let t = H(r);
1488
- t === "num" || t === "heading" || t === "content" || (t === "alinea" || Cn(e, r)) && n.push(...En(e, r));
1518
+ t === "num" || t === "heading" || t === "content" || (t === "alinea" || wn(e, r)) && n.push(...Dn(e, r));
1489
1519
  }
1490
1520
  return n;
1491
1521
  }
1492
- function Dn(e, t, n, r) {
1493
- let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Sn(e, t), s = On(e, t, i, o), c = [`<${n} ${[
1522
+ function On(e, t, n, r) {
1523
+ let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Cn(e, t), s = kn(e, t, i, o), c = [`<${n} ${[
1494
1524
  a ? `id="${V(a)}"` : void 0,
1495
1525
  `class="${r}"`,
1496
1526
  o ? `data-pastille="${V(o)}"` : void 0,
1497
1527
  s ? `style="${V(s)}"` : void 0
1498
1528
  ].filter((e) => e !== void 0).join(" ")}>`];
1499
1529
  if (i === "part" || i === "title") {
1500
- let r = jn(e, t, i), a = Nn(e, t), o = r ? [xn({
1530
+ let r = Mn(e, t, i), a = Pn(e, t), o = r ? [Sn({
1501
1531
  content: r,
1502
1532
  contextClass: a
1503
1533
  })] : [], s = () => {
1504
- o.length !== 0 && (c.push(An(o)), o = []);
1534
+ o.length !== 0 && (c.push(jn(o)), o = []);
1505
1535
  };
1506
1536
  return e(t).children().each((t, n) => {
1507
- if (!L(n)) return;
1537
+ if (!R(n)) return;
1508
1538
  let r = H(n);
1509
1539
  if (!(r === "num" || r === "heading" || r === "content")) {
1510
1540
  if (r === "alinea") {
1511
- o.push(...En(e, n));
1541
+ o.push(...Dn(e, n));
1512
1542
  return;
1513
1543
  }
1514
1544
  s(), c.push(U(e, n));
@@ -1516,49 +1546,49 @@ function Dn(e, t, n, r) {
1516
1546
  }), s(), c.push(`</${n}>`), c.join("\n");
1517
1547
  }
1518
1548
  if (i === "article") {
1519
- let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = w(r) ?? {
1549
+ let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = T(r) ?? {
1520
1550
  label: r,
1521
1551
  num: r
1522
1552
  }, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${V(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${V(a.label)}${i ? ` : ${V(i)}` : ""}</p>`;
1523
- if (Cn(e, t)) {
1524
- let r = [xn({
1553
+ if (wn(e, t)) {
1554
+ let r = [Sn({
1525
1555
  content: o,
1526
- contextClass: In(a.label)
1527
- }), ...En(e, t)];
1528
- c.push(yn(r));
1529
- for (let n of Tn(e, t)) n.includes("akn-pastille-table") || c.push(n);
1556
+ contextClass: Ln(a.label)
1557
+ }), ...Dn(e, t)];
1558
+ c.push(bn(r));
1559
+ for (let n of En(e, t)) n.includes("akn-pastille-table") || c.push(n);
1530
1560
  return c.push(`</${n}>`), c.join("\n");
1531
1561
  }
1532
1562
  c.push(o);
1533
1563
  }
1534
1564
  let l = [];
1535
1565
  for (let n of ["content", "children"]) e(t).children().each((t, r) => {
1536
- if (!L(r)) return;
1566
+ if (!R(r)) return;
1537
1567
  let i = H(r);
1538
1568
  i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(U(e, r));
1539
1569
  });
1540
1570
  let u = l.join("\n");
1541
1571
  if (i !== "article") {
1542
- let n = gn(u, P(e(t).children("num").first().text())) ? "" : hn(e, t);
1572
+ let n = _n(u, F(e(t).children("num").first().text())) ? "" : gn(e, t);
1543
1573
  n && c.push(n);
1544
1574
  }
1545
- return c.push(o ? vn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1575
+ return c.push(o ? yn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1546
1576
  }
1547
- function On(e, t, n, r) {
1548
- let i = kn(e(t).attr("style") ?? "", "font-family");
1549
- return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = mn(i, "text-align", "center")), i || void 0;
1577
+ function kn(e, t, n, r) {
1578
+ let i = An(e(t).attr("style") ?? "", "font-family");
1579
+ return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = hn(i, "text-align", "center")), i || void 0;
1550
1580
  }
1551
- function kn(e, t) {
1581
+ function An(e, t) {
1552
1582
  return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
1553
1583
  }
1554
- function An(e) {
1584
+ function jn(e) {
1555
1585
  return `<table class="fixed-size large akn-section-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
1556
1586
  }
1557
- function jn(e, t, n) {
1558
- let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = Mn(n), o = [];
1587
+ function Mn(e, t, n) {
1588
+ let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = Nn(n), o = [];
1559
1589
  return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${V(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${V(i)}</span></p>`), o.join("\n");
1560
1590
  }
1561
- function Mn(e) {
1591
+ function Nn(e) {
1562
1592
  switch (e) {
1563
1593
  case "part": return {
1564
1594
  num: "TCNumPartie",
@@ -1582,22 +1612,22 @@ function Mn(e) {
1582
1612
  };
1583
1613
  }
1584
1614
  }
1585
- function Nn(e, t) {
1586
- let n = Fn(P(e(t).children("num").first().text()));
1615
+ function Pn(e, t) {
1616
+ let n = In(F(e(t).children("num").first().text()));
1587
1617
  if (n) return n;
1588
1618
  for (let n of e(t).parents().get()) {
1589
- if (!L(n)) continue;
1619
+ if (!R(n)) continue;
1590
1620
  let t = H(n);
1591
1621
  if (t !== "title" && t !== "part") continue;
1592
- let r = Fn(P(e(n).children("num").first().text()));
1622
+ let r = In(F(e(n).children("num").first().text()));
1593
1623
  if (r) return r;
1594
1624
  }
1595
1625
  }
1596
- function Pn(e, t) {
1597
- return Nn(e, t);
1626
+ function Fn(e, t) {
1627
+ return Pn(e, t);
1598
1628
  }
1599
- function Fn(e) {
1600
- let [t, ...n] = P(e).split(/\s+/u);
1629
+ function In(e) {
1630
+ let [t, ...n] = F(e).split(/\s+/u);
1601
1631
  if (!t || n.length === 0) return;
1602
1632
  let r = t.toLocaleLowerCase("fr-FR");
1603
1633
  if ([
@@ -1607,10 +1637,10 @@ function Fn(e) {
1607
1637
  "section"
1608
1638
  ].includes(r)) return `${r}-${n.join("_")}`;
1609
1639
  }
1610
- function In(e) {
1611
- return `article-${P(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1612
- }
1613
1640
  function Ln(e) {
1641
+ return `article-${F(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1642
+ }
1643
+ function Rn(e) {
1614
1644
  switch (e) {
1615
1645
  case "part": return "partie";
1616
1646
  case "book": return "livre";
@@ -1622,11 +1652,11 @@ function Ln(e) {
1622
1652
  default: return;
1623
1653
  }
1624
1654
  }
1625
- function Rn(e, t) {
1626
- return [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1627
- }
1628
1655
  function zn(e, t) {
1629
- let n = P(e(t).children("num").first().text()), r = P(e(t).children("heading").first().text()), i = w(n) ?? {
1656
+ return [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1657
+ }
1658
+ function Bn(e, t) {
1659
+ let n = F(e(t).children("num").first().text()), r = F(e(t).children("heading").first().text()), i = T(n) ?? {
1630
1660
  label: n,
1631
1661
  num: n
1632
1662
  };
@@ -1636,24 +1666,24 @@ function zn(e, t) {
1636
1666
  type: "article"
1637
1667
  };
1638
1668
  }
1639
- function Bn(e, t) {
1669
+ function Vn(e, t) {
1640
1670
  e.items.push(...t.items);
1641
1671
  }
1642
- function Vn(e, t) {
1672
+ function Hn(e, t) {
1643
1673
  let n = { items: [] };
1644
1674
  return e(t).children().each((t, r) => {
1645
- if (!L(r)) return;
1675
+ if (!R(r)) return;
1646
1676
  let i = H(r);
1647
1677
  if (i === "article") {
1648
- n.items.push(zn(e, r));
1678
+ n.items.push(Bn(e, r));
1649
1679
  return;
1650
1680
  }
1651
- let a = Ln(i);
1681
+ let a = Rn(i);
1652
1682
  if (!a) {
1653
- Bn(n, Vn(e, r));
1683
+ Vn(n, Hn(e, r));
1654
1684
  return;
1655
1685
  }
1656
- let o = Rn(e, r), s = Vn(e, r);
1686
+ let o = zn(e, r), s = Hn(e, r);
1657
1687
  !o && s.items.length === 0 || n.items.push({
1658
1688
  ...s,
1659
1689
  id: e(r).attr("eId") ?? e(r).attr("GUID"),
@@ -1662,27 +1692,27 @@ function Vn(e, t) {
1662
1692
  });
1663
1693
  }), n;
1664
1694
  }
1665
- function Hn(e) {
1695
+ function Un(e) {
1666
1696
  let t = e("body").first().get(0);
1667
- return t === void 0 ? { items: [] } : Vn(e, t);
1697
+ return t === void 0 ? { items: [] } : Hn(e, t);
1668
1698
  }
1669
- function Un(e) {
1699
+ function Wn(e) {
1670
1700
  return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
1671
1701
  }
1672
- function Wn(e) {
1673
- e("table").each((t, n) => ln(e, n));
1702
+ function Gn(e) {
1703
+ e("table").each((t, n) => un(e, n));
1674
1704
  let t = e("preamble").first(), n = e("body").first(), r = ["<div class=\"akn-bill\">", "<style>.akn-bill p.pastille span:empty::before{content:attr(data-pastille)}</style>"];
1675
- return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(sn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1676
- L(n) && r.push(H(n) === "article" ? Dn(e, n, "article", "akn-article") : U(e, n));
1705
+ return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(cn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1706
+ R(n) && r.push(H(n) === "article" ? On(e, n, "article", "akn-article") : U(e, n));
1677
1707
  }), r.push("</section></div>"), r.join("\n");
1678
1708
  }
1679
- function Gn(e) {
1680
- let t = T(e, { xml: {
1709
+ function Kn(e) {
1710
+ let t = E(e, { xml: {
1681
1711
  decodeEntities: !1,
1682
1712
  lowerCaseTags: !1,
1683
1713
  lowerCaseAttributeNames: !1,
1684
1714
  xmlMode: !0
1685
- } }), n = Un(t), r = Wn(t);
1715
+ } }), n = Wn(t), r = Gn(t);
1686
1716
  return {
1687
1717
  sourceFormat: "akoma-ntoso",
1688
1718
  documentDate: n,
@@ -1690,42 +1720,42 @@ function Gn(e) {
1690
1720
  linkedHtml: r
1691
1721
  };
1692
1722
  }
1693
- function Kn(e) {
1694
- return qn(T(e));
1695
- }
1696
1723
  function qn(e) {
1724
+ return Jn(E(e));
1725
+ }
1726
+ function Jn(e) {
1697
1727
  let t = [];
1698
1728
  return e("article.akn-article").each((n, r) => {
1699
- let i = e(r).find("p.TCNumArticle").first().get(0), a = P(i ? e(i).text() : ""), o = w(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = St(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1729
+ let i = e(r).find("p.TCNumArticle").first().get(0), a = F(i ? e(i).text() : ""), o = T(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Ct(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1700
1730
  t.push({
1701
1731
  id: s,
1702
1732
  label: o.label,
1703
1733
  num: o.num,
1704
1734
  title: o.title,
1705
- text: it(e, c),
1706
- html: et(e, r),
1735
+ text: rt(e, c),
1736
+ html: $e(e, r),
1707
1737
  directiveText: u,
1708
1738
  blocks: l
1709
1739
  });
1710
1740
  }), t;
1711
1741
  }
1712
- function Jn(e) {
1713
- let t = T(e);
1742
+ function Yn(e) {
1743
+ let t = E(e);
1714
1744
  return {
1715
- articles: qn(t),
1745
+ articles: Jn(t),
1716
1746
  htmlWithLinks: t.html()
1717
1747
  };
1718
1748
  }
1719
- async function Yn(e, t) {
1720
- let n = new Se("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => T(e, { xml: {
1749
+ async function Xn(e, t) {
1750
+ let n = new xe("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => E(e, { xml: {
1721
1751
  decodeEntities: !1,
1722
1752
  lowerCaseTags: !1,
1723
1753
  lowerCaseAttributeNames: !1,
1724
1754
  xmlMode: !0
1725
- } })), i = t.date ?? Un(r), a = n.timeSync("renderAknHtml", () => Wn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => ot(a, {
1755
+ } })), i = t.date ?? Wn(r), a = n.timeSync("renderAknHtml", () => Gn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => at(a, {
1726
1756
  ...t,
1727
1757
  date: i
1728
- }, i)), s = n.timeSync("extractRenderedAknArticles", () => Kn(a)), c = n.timeSync("injectHiddenArticleSummary", () => Ct(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Jn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Hn(r)), p = n.timeSync("buildParsedDocument", () => Zt("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, en(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1758
+ }, i)), s = n.timeSync("extractRenderedAknArticles", () => qn(a)), c = n.timeSync("injectHiddenArticleSummary", () => wt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Yn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Un(r)), p = n.timeSync("buildParsedDocument", () => Qt("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, tn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1729
1759
  return n.log({
1730
1760
  articleCount: p.articles.length,
1731
1761
  blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1733,25 +1763,25 @@ async function Yn(e, t) {
1733
1763
  targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
1734
1764
  }), p;
1735
1765
  }
1736
- async function Xn(e, t) {
1737
- let n = Gn(e), r = t.date ?? n.documentDate;
1766
+ async function Zn(e, t) {
1767
+ let n = Kn(e), r = t.date ?? n.documentDate;
1738
1768
  return {
1739
1769
  sourceFormat: "akoma-ntoso",
1740
1770
  documentDate: r,
1741
1771
  html: n.html,
1742
- linkedHtml: await ot(n.html, t, r)
1772
+ linkedHtml: await at(n.html, t, r)
1743
1773
  };
1744
1774
  }
1745
1775
  //#endregion
1746
1776
  //#region src/lib/server/assemblee_document_search.ts
1747
- var Zn = /\bexpos[ée]\s+des\s+motifs\b/giu, Qn = /\barticle\s+(?:premier|1er|\d+)/iu;
1748
- function $n(e) {
1777
+ var Qn = /\bexpos[ée]\s+des\s+motifs\b/giu, $n = /\barticle\s+(?:premier|1er|\d+)/iu;
1778
+ function er(e) {
1749
1779
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
1750
1780
  }
1751
- function er(e) {
1752
- let t = $n(T(e).text()), n = [...t.matchAll(Zn)], r = /* @__PURE__ */ new Set(), i = [];
1781
+ function tr(e) {
1782
+ let t = er(E(e).text()), n = [...t.matchAll(Qn)], r = /* @__PURE__ */ new Set(), i = [];
1753
1783
  for (let [e, a] of n.entries()) {
1754
- let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = Qn.exec(s), l = $n(s.slice(0, c?.index ?? s.length));
1784
+ let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = $n.exec(s), l = er(s.slice(0, c?.index ?? s.length));
1755
1785
  if (l.length < 20 || r.has(l)) continue;
1756
1786
  r.add(l);
1757
1787
  let u = `expose-des-motifs-${e + 1}`;
@@ -1767,8 +1797,8 @@ function er(e) {
1767
1797
  }
1768
1798
  return i;
1769
1799
  }
1770
- async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1771
- let i = await nn(t, {
1800
+ async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1801
+ let i = await rn(t, {
1772
1802
  date: e,
1773
1803
  includeDirectiveAnalysis: !1,
1774
1804
  linkBaseUrl: n,
@@ -1777,7 +1807,7 @@ async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1777
1807
  });
1778
1808
  return {
1779
1809
  items: [...i.articles.map((e) => {
1780
- let t = $n(e.directiveText || e.text);
1810
+ let t = er(e.directiveText || e.text);
1781
1811
  if (t) return {
1782
1812
  anchor: e.id,
1783
1813
  articleNumber: e.num ?? null,
@@ -1787,17 +1817,17 @@ async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1787
1817
  label: e.label,
1788
1818
  title: e.title ?? null
1789
1819
  };
1790
- }).filter((e) => e !== void 0), ...er(t)],
1820
+ }).filter((e) => e !== void 0), ...tr(t)],
1791
1821
  tableOfContents: i.tableOfContents
1792
1822
  };
1793
1823
  }
1794
- function nr(e, t) {
1795
- return De("sha256").update(JSON.stringify({
1824
+ function rr(e, t) {
1825
+ return Ee("sha256").update(JSON.stringify({
1796
1826
  item: e,
1797
1827
  metadata: t
1798
1828
  })).digest("hex");
1799
1829
  }
1800
- function rr(e) {
1830
+ function ir(e) {
1801
1831
  if (typeof e != "object" || !e) return;
1802
1832
  let t = e.cycleDeVie?.chrono;
1803
1833
  if (t !== void 0) for (let e of [
@@ -1812,11 +1842,11 @@ function rr(e) {
1812
1842
  }
1813
1843
  //#endregion
1814
1844
  //#region src/lib/server/senat_amendment_search.ts
1815
- function ir(e) {
1816
- return e?.trim() ? T(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1845
+ function ar(e) {
1846
+ return e?.trim() ? E(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1817
1847
  }
1818
- function ar({ dispositifHtml: e, objetHtml: t }) {
1819
- let n = ir(e), r = ir(t);
1848
+ function or({ dispositifHtml: e, objetHtml: t }) {
1849
+ let n = ar(e), r = ar(t);
1820
1850
  return [...n ? [{
1821
1851
  content: n,
1822
1852
  itemKind: "dispositif",
@@ -1827,8 +1857,8 @@ function ar({ dispositifHtml: e, objetHtml: t }) {
1827
1857
  label: "Objet"
1828
1858
  }] : []];
1829
1859
  }
1830
- function or(e, t) {
1831
- return De("sha256").update(JSON.stringify({
1860
+ function sr(e, t) {
1861
+ return Ee("sha256").update(JSON.stringify({
1832
1862
  item: e,
1833
1863
  metadata: t
1834
1864
  })).digest("hex");
@@ -1842,76 +1872,76 @@ function W(e, t) {
1842
1872
  type: "amendment_action_directive"
1843
1873
  };
1844
1874
  }
1845
- function sr(e, t) {
1875
+ function cr(e, t) {
1846
1876
  return {
1847
1877
  type: e === "start" ? "head_of_target" : "tail_after_target",
1848
- unit: t ? de(t) : "article"
1878
+ unit: t ? ue(t) : "article"
1849
1879
  };
1850
1880
  }
1851
- function cr(e) {
1881
+ function lr(e) {
1852
1882
  return e === "start" ? "insert_before" : "insert_after";
1853
1883
  }
1854
- var lr = O(D("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = k(t, j([D("les?\\s+", { flags: "i" }), p], { value: (e) => e[1] }), p, n), ur = k(j([D("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1884
+ var ur = k(O("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = A(t, M([O("les?\\s+", { flags: "i" }), p], { value: (e) => e[1] }), p, n), dr = A(M([O("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1855
1885
  let t = e[1];
1856
1886
  return {
1857
1887
  targetReference: t,
1858
1888
  targetScope: {
1859
1889
  type: "tail_after_target",
1860
- unit: de(t)
1890
+ unit: ue(t)
1861
1891
  }
1862
1892
  };
1863
- } }), j([i], { value: (e) => ({ targetScope: e[0] }) })), K = O(j([
1864
- O(D("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1865
- O(D("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1893
+ } }), M([i], { value: (e) => ({ targetScope: e[0] }) })), K = k(M([
1894
+ k(O("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1895
+ k(O("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1866
1896
  G,
1867
- O(D("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1897
+ k(O("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1868
1898
  ], { value: (e, t) => ({
1869
1899
  reference: e[2],
1870
1900
  text: t.text()
1871
- }) }), { default: null }), dr = O(D(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${_e})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1901
+ }) }), { default: null }), fr = k(O(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ge})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1872
1902
  function q(e) {
1873
1903
  return e?.text ?? "";
1874
1904
  }
1875
- function fr(e) {
1905
+ function pr(e) {
1876
1906
  return { citation: ee(e.position()) };
1877
1907
  }
1878
- var J = k(j([v], { value: (e) => ({ citation: e[0] }) }), D("\\S[\\s\\S]*", { value: (e, t) => fr(t) })), pr = D("\\S[\\s\\S]*", { value: (e, t) => fr(t) }), Y = D("[^:«“\"]*(?::\\s*)?", { flags: "i" }), mr = D("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1908
+ var J = A(M([v], { value: (e) => ({ citation: e[0] }) }), O("\\S[\\s\\S]*", { value: (e, t) => pr(t) })), mr = O("\\S[\\s\\S]*", { value: (e, t) => pr(t) }), Y = O("[^:«“\"]*(?::\\s*)?", { flags: "i" }), hr = O("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1879
1909
  flags: "i",
1880
- value: (e, t) => fr(t)
1881
- }), hr = D("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1910
+ value: (e, t) => pr(t)
1911
+ }), gr = O("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1882
1912
  flags: "i",
1883
- value: (e, t) => fr(t)
1884
- }), gr = D("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1913
+ value: (e, t) => pr(t)
1914
+ }), _r = O("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1885
1915
  flags: "i",
1886
- value: (e, t) => fr(t)
1887
- }), _r = k(j([v], { value: (e) => ({ citation: e[0] }) }), mr), vr = k(j([v], { value: (e) => ({ citation: e[0] }) }), gr), yr = j([D(`${o}s?\\s*:?\\s*`, { flags: "i" }), _r], { value: (e) => e[1] }), br = j([D(`${c}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = k(j([v], { value: (e) => ({ citation: e[0] }) }), hr), Sr = j([
1888
- dr,
1889
- D(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1890
- xr
1891
- ], { value: (e) => e[2] }), Cr = j([
1892
- dr,
1893
- D(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1894
- k(j([v], { value: (e) => ({ citation: e[0] }) }), pr)
1916
+ value: (e, t) => pr(t)
1917
+ }), vr = A(M([v], { value: (e) => ({ citation: e[0] }) }), hr), yr = A(M([v], { value: (e) => ({ citation: e[0] }) }), _r), br = M([O(`${o}s?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = M([O(`${c}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), yr], { value: (e) => e[1] }), Sr = A(M([v], { value: (e) => ({ citation: e[0] }) }), gr), Cr = M([
1918
+ fr,
1919
+ O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1920
+ Sr
1921
+ ], { value: (e) => e[2] }), wr = M([
1922
+ fr,
1923
+ O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1924
+ A(M([v], { value: (e) => ({ citation: e[0] }) }), mr)
1895
1925
  ], { value: (e) => e[2] });
1896
1926
  function X(e) {
1897
1927
  return e?.reference;
1898
1928
  }
1899
- var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1929
+ var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1900
1930
  contextText: e[0],
1901
1931
  kind: "delete_article"
1902
- }) }), Tr = j([
1932
+ }) }), Er = M([
1903
1933
  K,
1904
- D("supprimer", { flags: "i" }),
1905
- O(j([A, G], { value: (e) => e[1] }), { default: null }),
1906
- O(j([A, Cr], { value: (e) => e[1] }), { default: null })
1934
+ O("supprimer", { flags: "i" }),
1935
+ k(M([j, G], { value: (e) => e[1] }), { default: null }),
1936
+ k(M([j, wr], { value: (e) => e[1] }), { default: null })
1907
1937
  ], { value: (e, t) => W(t, {
1908
1938
  contextText: q(e[0]),
1909
1939
  kind: "delete_portion",
1910
1940
  targetCitation: e[3]?.citation ?? void 0,
1911
1941
  targetReference: e[2] ?? X(e[0])
1912
- }) }), Er = j([
1942
+ }) }), Dr = M([
1913
1943
  K,
1914
- k(D("r[eé]diger\\s+ainsi", { flags: "i" }), D("r[eé]tablir", { flags: "i" })),
1944
+ A(O("r[eé]diger\\s+ainsi", { flags: "i" }), O("r[eé]tablir", { flags: "i" })),
1915
1945
  Y,
1916
1946
  J
1917
1947
  ], { value: (e, t) => W(t, {
@@ -1919,76 +1949,76 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1919
1949
  kind: "rewrite_portion",
1920
1950
  replacementCitation: e[3].citation,
1921
1951
  targetReference: X(e[0])
1922
- }) }), Dr = j([
1952
+ }) }), Or = M([
1923
1953
  K,
1924
- k(D("substituer", { flags: "i" }), D("remplacer", { flags: "i" })),
1925
- A,
1926
- dr,
1927
- yr,
1928
- D("\\s*,?\\s*"),
1929
- O(D("par\\s+", { flags: "i" }), { default: "" }),
1930
- br
1954
+ A(O("substituer", { flags: "i" }), O("remplacer", { flags: "i" })),
1955
+ j,
1956
+ fr,
1957
+ br,
1958
+ O("\\s*,?\\s*"),
1959
+ k(O("par\\s+", { flags: "i" }), { default: "" }),
1960
+ xr
1931
1961
  ], { value: (e, t) => W(t, {
1932
1962
  contextText: q(e[0]),
1933
1963
  kind: "replace",
1934
1964
  replacementCitation: e[7].citation,
1935
1965
  targetCitation: e[4].citation,
1936
1966
  targetReference: X(e[0])
1937
- }) }), Or = j([
1967
+ }) }), kr = M([
1938
1968
  K,
1939
- D("substituer", { flags: "i" }),
1940
- A,
1941
- O(D("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1969
+ O("substituer", { flags: "i" }),
1970
+ j,
1971
+ k(O("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1942
1972
  G,
1943
- D("[\\s\\S]*?(?=[«“\"]|$)"),
1973
+ O("[\\s\\S]*?(?=[«“\"]|$)"),
1944
1974
  J
1945
1975
  ], { value: (e, t) => W(t, {
1946
1976
  contextText: q(e[0]),
1947
1977
  kind: "rewrite_portion",
1948
1978
  replacementCitation: e[6].citation,
1949
1979
  targetReference: e[4] ?? X(e[0])
1950
- }) }), kr = j([
1980
+ }) }), Ar = M([
1951
1981
  d,
1952
- A,
1953
- D("l['’ ]article", { flags: "i" }),
1954
- D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1955
- D("ins[eé]rer", { flags: "i" }),
1982
+ j,
1983
+ O("l['’ ]article", { flags: "i" }),
1984
+ O("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1985
+ O("ins[eé]rer", { flags: "i" }),
1956
1986
  Y,
1957
1987
  J
1958
1988
  ], { value: (e, t) => W(t, {
1959
1989
  contextText: "",
1960
1990
  insertCitation: e[6].citation,
1961
1991
  kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
1962
- }) }), Ar = j([
1992
+ }) }), jr = M([
1963
1993
  d,
1964
- A,
1994
+ j,
1965
1995
  G,
1966
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1967
- k(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
1996
+ O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1997
+ A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
1968
1998
  Y,
1969
1999
  J
1970
2000
  ], { value: (e, t) => W(t, {
1971
2001
  contextText: "",
1972
2002
  insertCitation: e[6].citation,
1973
- kind: C(e[0]),
2003
+ kind: w(e[0]),
1974
2004
  targetReference: e[2]
1975
- }) }), jr = j([
2005
+ }) }), Mr = M([
1976
2006
  d,
1977
- A,
1978
- D("l['’ ]alin[eé]a", { flags: "i" }),
1979
- D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1980
- D("ins[eé]rer", { flags: "i" }),
2007
+ j,
2008
+ O("l['’ ]alin[eé]a", { flags: "i" }),
2009
+ O("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2010
+ O("ins[eé]rer", { flags: "i" }),
1981
2011
  Y,
1982
2012
  J
1983
2013
  ], { value: (e, t) => W(t, {
1984
2014
  contextText: "",
1985
2015
  insertCitation: e[6].citation,
1986
- kind: C(e[0])
1987
- }) }), Mr = j([
2016
+ kind: w(e[0])
2017
+ }) }), Nr = M([
1988
2018
  K,
1989
- re,
1990
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1991
- k(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2019
+ ne,
2020
+ O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2021
+ A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
1992
2022
  Y,
1993
2023
  J
1994
2024
  ], { value: (e, t) => {
@@ -1996,62 +2026,62 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1996
2026
  return W(t, {
1997
2027
  contextText: q(n),
1998
2028
  insertCitation: e[5].citation,
1999
- kind: cr(i),
2029
+ kind: lr(i),
2000
2030
  targetReference: r,
2001
- targetScope: sr(i, r)
2031
+ targetScope: cr(i, r)
2002
2032
  });
2003
- } }), Nr = j([
2033
+ } }), Pr = M([
2004
2034
  K,
2005
2035
  d,
2006
- A,
2007
- Sr,
2008
- D("[\\s\\S]*?(?=ins[eé]rer)"),
2009
- D("ins[eé]rer", { flags: "i" }),
2010
- A,
2011
- br
2036
+ j,
2037
+ Cr,
2038
+ O("[\\s\\S]*?(?=ins[eé]rer)"),
2039
+ O("ins[eé]rer", { flags: "i" }),
2040
+ j,
2041
+ xr
2012
2042
  ], { value: (e, t) => W(t, {
2013
2043
  contextText: q(e[0]),
2014
2044
  insertCitation: e[7].citation,
2015
- kind: C(e[1]),
2045
+ kind: w(e[1]),
2016
2046
  targetCitation: e[3].citation,
2017
2047
  targetReference: X(e[0])
2018
- }) }), Pr = j([
2048
+ }) }), Fr = M([
2019
2049
  K,
2020
2050
  d,
2021
- A,
2051
+ j,
2022
2052
  G,
2023
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2024
- k(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2053
+ O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2054
+ A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
2025
2055
  Y,
2026
2056
  J
2027
2057
  ], { value: (e, t) => W(t, {
2028
2058
  contextText: q(e[0]),
2029
2059
  insertCitation: e[7].citation,
2030
- kind: C(e[1]),
2060
+ kind: w(e[1]),
2031
2061
  targetReference: X(e[0]) ?? e[3]
2032
- }) }), Fr = k(Mr, kr, Ar, jr, Or, j([
2062
+ }) }), Ir = A(Nr, Ar, jr, Mr, kr, M([
2033
2063
  K,
2034
2064
  d,
2035
- A,
2036
- Sr,
2037
- D("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2038
- k(j([
2039
- D("supprimer", {
2065
+ j,
2066
+ Cr,
2067
+ O("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2068
+ A(M([
2069
+ O("supprimer", {
2040
2070
  flags: "i",
2041
2071
  value: "delete_portion"
2042
2072
  }),
2043
- A,
2044
- ur
2073
+ j,
2074
+ dr
2045
2075
  ], { value: (e) => ({
2046
2076
  kind: e[0],
2047
2077
  ...e[2]
2048
- }) }), j([
2049
- D("r[eé]diger\\s+ainsi", {
2078
+ }) }), M([
2079
+ O("r[eé]diger\\s+ainsi", {
2050
2080
  flags: "i",
2051
2081
  value: "rewrite_portion"
2052
2082
  }),
2053
- A,
2054
- ur,
2083
+ j,
2084
+ dr,
2055
2085
  Y,
2056
2086
  J
2057
2087
  ], { value: (e) => ({
@@ -2069,10 +2099,10 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2069
2099
  targetReference: X(e[0]) ?? n.targetReference,
2070
2100
  targetScope: n.targetScope
2071
2101
  });
2072
- } }), Nr, Pr, j([
2073
- lr,
2074
- D("ins[eé]rer", { flags: "i" }),
2075
- D(`[\\s\\S]*?(?=${f})`, { flags: "i" }),
2102
+ } }), Pr, Fr, M([
2103
+ ur,
2104
+ O("ins[eé]rer", { flags: "i" }),
2105
+ O(`[\\s\\S]*?(?=${f})`, { flags: "i" }),
2076
2106
  d,
2077
2107
  Y,
2078
2108
  v,
@@ -2081,12 +2111,12 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2081
2111
  ], { value: (e, t) => W(t, {
2082
2112
  contextText: e[0],
2083
2113
  insertCitation: e[8],
2084
- kind: C(e[3]),
2114
+ kind: w(e[3]),
2085
2115
  targetCitation: e[6]
2086
- }) }), Dr, Er, j([
2116
+ }) }), Or, Dr, M([
2087
2117
  K,
2088
- D("compl[eé]ter", { flags: "i" }),
2089
- O(j([A, G], { value: (e) => e[1] }), { default: null }),
2118
+ O("compl[eé]ter", { flags: "i" }),
2119
+ k(M([j, G], { value: (e) => e[1] }), { default: null }),
2090
2120
  Y,
2091
2121
  J
2092
2122
  ], { value: (e, t) => W(t, {
@@ -2094,16 +2124,16 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2094
2124
  insertCitation: e[4].citation,
2095
2125
  kind: "insert_after",
2096
2126
  targetReference: e[2] ?? X(e[0])
2097
- }) }), wr, Tr);
2127
+ }) }), Tr, Er);
2098
2128
  //#endregion
2099
2129
  //#region src/lib/server/parsed_amendments.ts
2100
- function Ir(e) {
2130
+ function Lr(e) {
2101
2131
  return e.replace(/\s+/gu, " ").trim();
2102
2132
  }
2103
- function Lr(e) {
2104
- return e.split(/\n/gu).map(Ir).filter(Boolean).join("\n");
2133
+ function Rr(e) {
2134
+ return e.split(/\n/gu).map(Lr).filter(Boolean).join("\n");
2105
2135
  }
2106
- function Rr(e, t) {
2136
+ function zr(e, t) {
2107
2137
  let { start: n, stop: r } = t;
2108
2138
  for (; n < r && /\s/u.test(e[n]);) n++;
2109
2139
  for (; r > n && /\s/u.test(e[r - 1]);) r--;
@@ -2112,16 +2142,16 @@ function Rr(e, t) {
2112
2142
  stop: r
2113
2143
  } : null;
2114
2144
  }
2115
- function zr(e, t) {
2116
- return me(ge(e), t);
2145
+ function Br(e, t) {
2146
+ return pe(he(e), t);
2117
2147
  }
2118
- function Br(e) {
2148
+ function Vr(e) {
2119
2149
  return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
2120
2150
  }
2121
- function Vr(e) {
2151
+ function Hr(e) {
2122
2152
  return {
2123
2153
  articleLabel: e.targetArticleLabel ?? null,
2124
- targetPosition: Br(e.targetPosition),
2154
+ targetPosition: Vr(e.targetPosition),
2125
2155
  alinea: e.targetAlinea ?? null,
2126
2156
  alineaLabel: e.targetAlineaLabel ?? null,
2127
2157
  subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
@@ -2136,36 +2166,36 @@ function Z(e) {
2136
2166
  sourceText: e.text
2137
2167
  };
2138
2168
  }
2139
- function Hr(e) {
2169
+ function Ur(e) {
2140
2170
  return {
2141
2171
  ...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
2142
2172
  sourcePosition: e.position,
2143
2173
  sourceText: e.text
2144
2174
  };
2145
2175
  }
2146
- function Ur(e) {
2176
+ function Wr(e) {
2147
2177
  return {
2148
2178
  ...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
2149
2179
  ...e === null ? {} : { dispositifPosition: e.position },
2150
2180
  dispositifText: e?.text ?? null
2151
2181
  };
2152
2182
  }
2153
- function Wr(e, t, n, r = Lr(e.slice(n.start, n.stop))) {
2183
+ function Gr(e, t, n, r = Rr(e.slice(n.start, n.stop))) {
2154
2184
  return {
2155
- originalTransformation: zr(t, n),
2185
+ originalTransformation: Br(t, n),
2156
2186
  position: n,
2157
2187
  text: r
2158
2188
  };
2159
2189
  }
2160
- function Gr(e) {
2190
+ function Kr(e) {
2161
2191
  let t = e.dispositifHtml ?? e.dispositifText;
2162
2192
  if (!t) return null;
2163
- let n = e.dispositifHtml ? ye()(t) : pe(t), r = n.output, i = Rr(r, {
2193
+ let n = e.dispositifHtml ? ve()(t) : fe(t), r = n.output, i = zr(r, {
2164
2194
  start: 0,
2165
2195
  stop: r.length
2166
2196
  });
2167
2197
  return {
2168
- dispositif: i === null ? null : Wr(r, n, i),
2198
+ dispositif: i === null ? null : Gr(r, n, i),
2169
2199
  simplifiedText: r,
2170
2200
  transformation: n
2171
2201
  };
@@ -2185,7 +2215,7 @@ function Q(e) {
2185
2215
  for (let t of r(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2186
2216
  return [];
2187
2217
  }
2188
- function Kr(e, t) {
2218
+ function qr(e, t) {
2189
2219
  let n = Q(t);
2190
2220
  return {
2191
2221
  ...e,
@@ -2193,11 +2223,11 @@ function Kr(e, t) {
2193
2223
  ...n.length > 0 ? { alineas: n } : {}
2194
2224
  };
2195
2225
  }
2196
- function qr(e) {
2226
+ function Jr(e) {
2197
2227
  return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
2198
2228
  }
2199
- function Jr(e, t) {
2200
- let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(qr(t.text));
2229
+ function Yr(e, t) {
2230
+ let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Jr(t.text));
2201
2231
  if (!n) return null;
2202
2232
  let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
2203
2233
  return !Number.isFinite(r) || r < 1 ? null : {
@@ -2206,25 +2236,25 @@ function Jr(e, t) {
2206
2236
  alineas: [r]
2207
2237
  };
2208
2238
  }
2209
- function Yr(e, t) {
2239
+ function Xr(e, t) {
2210
2240
  if (e) return e.unit === "article" && t.alinea !== null ? {
2211
2241
  ...e,
2212
2242
  unit: "alinéa"
2213
2243
  } : e;
2214
2244
  }
2215
- function Xr(e) {
2216
- return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(qr(e.text));
2245
+ function Zr(e) {
2246
+ return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Jr(e.text));
2217
2247
  }
2218
- function Zr(e, t, n, r) {
2219
- return Wr(e, t, {
2248
+ function Qr(e, t, n, r) {
2249
+ return Gr(e, t, {
2220
2250
  start: n.position.start,
2221
2251
  stop: r.position.stop
2222
2252
  });
2223
2253
  }
2224
- function Qr(e) {
2254
+ function $r(e) {
2225
2255
  return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
2226
2256
  }
2227
- function $r(e, t) {
2257
+ function ei(e, t) {
2228
2258
  let n = { ...t.position };
2229
2259
  function r(t) {
2230
2260
  let r = t.exec(e.slice(n.start, n.stop));
@@ -2233,29 +2263,29 @@ function $r(e, t) {
2233
2263
  stop: n.stop
2234
2264
  });
2235
2265
  }
2236
- return r(/^(?:(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*|[a-z]\)\s*(?:[.\-–—]\s*)*|\d+°\s*)/iu), r(/^[.\-–—]\s*/u), r(/^en\s+cons[ée]quence\s*,\s*/iu), Rr(e, n);
2266
+ return r(/^(?:(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*|[a-z]\)\s*(?:[.\-–—]\s*)*|\d+°\s*)/iu), r(/^[.\-–—]\s*/u), r(/^en\s+cons[ée]quence\s*,\s*/iu), zr(e, n);
2237
2267
  }
2238
- function ei(e) {
2268
+ function ti(e) {
2239
2269
  return g(e);
2240
2270
  }
2241
- function ti(e, t) {
2242
- return Fr(new E(e.slice(0, t.stop), t.start)) ?? null;
2271
+ function ni(e, t) {
2272
+ return Ir(new D(e.slice(0, t.stop), t.start)) ?? null;
2243
2273
  }
2244
2274
  function $(t, n, r) {
2245
- if (r) return Wr(t, n, r.position, Lr(e(t, r)));
2275
+ if (r) return Gr(t, n, r.position, Rr(e(t, r)));
2246
2276
  }
2247
- function ni(e, t) {
2277
+ function ri(e, t) {
2248
2278
  if (!e) return;
2249
2279
  let n = structuredClone(e);
2250
- for (let e of _(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = zr(t, e.position));
2280
+ for (let e of _(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Br(t, e.position));
2251
2281
  return n;
2252
2282
  }
2253
- function ri(e, t, n, r) {
2254
- let i = $r(e, n);
2283
+ function ii(e, t, n, r) {
2284
+ let i = ei(e, n);
2255
2285
  if (!i) return null;
2256
- let a = ti(e, i);
2286
+ let a = ni(e, i);
2257
2287
  if (!a) return null;
2258
- let o = Wr(e, t, i), s = ni(a.targetReference, t), c = Kr(r, s), l = ei(o.text);
2288
+ let o = Gr(e, t, i), s = ri(a.targetReference, t), c = qr(r, s), l = ti(o.text);
2259
2289
  if (a.kind === "delete_article") return {
2260
2290
  kind: "delete_article",
2261
2291
  ...Z(o),
@@ -2273,7 +2303,7 @@ function ri(e, t, n, r) {
2273
2303
  },
2274
2304
  targetOccurrence: l,
2275
2305
  targetReference: s,
2276
- targetScope: Yr(a.targetScope, c)
2306
+ targetScope: Xr(a.targetScope, c)
2277
2307
  };
2278
2308
  }
2279
2309
  if (a.kind === "rewrite_portion") {
@@ -2290,7 +2320,7 @@ function ri(e, t, n, r) {
2290
2320
  },
2291
2321
  targetOccurrence: l,
2292
2322
  targetReference: s,
2293
- targetScope: Yr(a.targetScope, c),
2323
+ targetScope: Xr(a.targetScope, c),
2294
2324
  replacementCitation: n,
2295
2325
  replacementText: n.text
2296
2326
  };
@@ -2345,19 +2375,19 @@ function ri(e, t, n, r) {
2345
2375
  targetReference: s,
2346
2376
  insertCitation: n,
2347
2377
  insertText: n.text,
2348
- targetScope: Yr(a.targetScope, c)
2378
+ targetScope: Xr(a.targetScope, c)
2349
2379
  };
2350
2380
  }
2351
2381
  return null;
2352
2382
  }
2353
- function ii(e, t) {
2383
+ function ai(e, t) {
2354
2384
  let n = [], r = 0, i = 0;
2355
2385
  function a(r) {
2356
- let a = Rr(e, {
2386
+ let a = zr(e, {
2357
2387
  start: i,
2358
2388
  stop: r
2359
2389
  });
2360
- a !== null && n.push(Wr(e, t, a));
2390
+ a !== null && n.push(Gr(e, t, a));
2361
2391
  }
2362
2392
  function o(t) {
2363
2393
  let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
@@ -2375,7 +2405,7 @@ function ii(e, t) {
2375
2405
  continue;
2376
2406
  }
2377
2407
  if (r > 0) continue;
2378
- let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) && Xr({
2408
+ let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) && Zr({
2379
2409
  originalTransformation: void 0,
2380
2410
  position: {
2381
2411
  start: i,
@@ -2387,8 +2417,8 @@ function ii(e, t) {
2387
2417
  }
2388
2418
  return a(e.length), n;
2389
2419
  }
2390
- function ai(e) {
2391
- let t = Gr(e), n = t?.dispositif ?? null, r = Ur(n), i = [], a = [], o = Vr(e);
2420
+ function oi(e) {
2421
+ let t = Kr(e), n = t?.dispositif ?? null, r = Wr(n), i = [], a = [], o = Hr(e);
2392
2422
  if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
2393
2423
  code: "unsupported_sub_amendment",
2394
2424
  message: "Les sous-amendements ne sont pas encore projetés."
@@ -2406,9 +2436,9 @@ function ai(e) {
2406
2436
  });
2407
2437
  else {
2408
2438
  let { simplifiedText: e, transformation: r } = t, s = o, c = null;
2409
- for (let t of ii(e, r)) {
2410
- Qr(t) && (s = o, c = null);
2411
- let n = c ? Zr(e, r, c, t) : t, i = ri(e, r, n, s);
2439
+ for (let t of ai(e, r)) {
2440
+ $r(t) && (s = o, c = null);
2441
+ let n = c ? Qr(e, r, c, t) : t, i = ii(e, r, n, s);
2412
2442
  if (i) {
2413
2443
  a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
2414
2444
  continue;
@@ -2417,12 +2447,12 @@ function ai(e) {
2417
2447
  c = n;
2418
2448
  continue;
2419
2449
  }
2420
- let l = Jr(o, t);
2450
+ let l = Yr(o, t);
2421
2451
  if (l !== null) {
2422
2452
  s = l;
2423
2453
  continue;
2424
2454
  }
2425
- Xr(t) && (c = t);
2455
+ Zr(t) && (c = t);
2426
2456
  }
2427
2457
  a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
2428
2458
  kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
@@ -2433,7 +2463,7 @@ function ai(e) {
2433
2463
  }), a.length === 0 && i.push({
2434
2464
  code: "unrecognized_dispositif",
2435
2465
  message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
2436
- ...Hr(n)
2466
+ ...Ur(n)
2437
2467
  });
2438
2468
  }
2439
2469
  return {
@@ -2447,25 +2477,25 @@ function ai(e) {
2447
2477
  }
2448
2478
  //#endregion
2449
2479
  //#region src/lib/server/senat_document_search.ts
2450
- function oi(e) {
2480
+ function si(e) {
2451
2481
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
2452
2482
  }
2453
- function si(e) {
2454
- let t = w(e);
2483
+ function ci(e) {
2484
+ let t = T(e);
2455
2485
  if (!t) return {
2456
2486
  articleNumber: null,
2457
2487
  label: e,
2458
2488
  title: null
2459
2489
  };
2460
- let n = oi(t.num ?? "") || null, r = oi(t.title ?? "") || null;
2490
+ let n = si(t.num ?? "") || null, r = si(t.title ?? "") || null;
2461
2491
  return {
2462
2492
  articleNumber: n,
2463
2493
  label: t.label,
2464
2494
  title: r
2465
2495
  };
2466
2496
  }
2467
- function ci(e) {
2468
- let t = T(e), n = [], r = oi(t("section.akn-preamble").text());
2497
+ function li(e) {
2498
+ let t = E(e), n = [], r = si(t("section.akn-preamble").text());
2469
2499
  return r && n.push({
2470
2500
  anchor: "senat-expose-des-motifs",
2471
2501
  articleNumber: null,
@@ -2475,9 +2505,9 @@ function ci(e) {
2475
2505
  label: "Exposé des motifs",
2476
2506
  title: null
2477
2507
  }), t("article.akn-article").each((e, r) => {
2478
- let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = oi(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = si(o || s), l = i.clone();
2508
+ let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = si(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = ci(o || s), l = i.clone();
2479
2509
  l.children("p.TCNumArticle").remove();
2480
- let u = oi(l.text());
2510
+ let u = si(l.text());
2481
2511
  u && n.push({
2482
2512
  anchor: i.attr("id") || null,
2483
2513
  articleNumber: c.articleNumber,
@@ -2489,40 +2519,40 @@ function ci(e) {
2489
2519
  });
2490
2520
  }), n;
2491
2521
  }
2492
- function li(e, t) {
2493
- return De("sha256").update(JSON.stringify({
2522
+ function ui(e, t) {
2523
+ return Ee("sha256").update(JSON.stringify({
2494
2524
  item: e,
2495
2525
  metadata: t
2496
2526
  })).digest("hex");
2497
2527
  }
2498
2528
  //#endregion
2499
2529
  //#region src/lib/server/senat_document_sources.ts
2500
- var ui = new Set(["senat.fr", "www.senat.fr"]), di = "https://www.senat.fr";
2501
- function fi(e) {
2530
+ var di = new Set(["senat.fr", "www.senat.fr"]), fi = "https://www.senat.fr";
2531
+ function pi(e) {
2502
2532
  return e?.trim() || void 0;
2503
2533
  }
2504
- function pi(e) {
2534
+ function mi(e) {
2505
2535
  try {
2506
- let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, di);
2507
- return ui.has(n.hostname.toLowerCase()) ? n : void 0;
2536
+ let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, fi);
2537
+ return di.has(n.hostname.toLowerCase()) ? n : void 0;
2508
2538
  } catch {
2509
2539
  return;
2510
2540
  }
2511
2541
  }
2512
- function mi(e) {
2513
- let t = fi(e);
2542
+ function hi(e) {
2543
+ let t = pi(e);
2514
2544
  if (t === void 0) return {
2515
2545
  publicUrl: null,
2516
2546
  status: "no_url"
2517
2547
  };
2518
- let n = pi(t);
2548
+ let n = mi(t);
2519
2549
  if (n === void 0) return {
2520
2550
  publicUrl: t,
2521
2551
  status: "unsupported_source"
2522
2552
  };
2523
2553
  let r = n.pathname;
2524
2554
  if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
2525
- akomaNtosoUrl: `${di}${r}`,
2555
+ akomaNtosoUrl: `${fi}${r}`,
2526
2556
  publicUrl: n.toString(),
2527
2557
  status: "available"
2528
2558
  };
@@ -2531,17 +2561,17 @@ function mi(e) {
2531
2561
  publicUrl: n.toString(),
2532
2562
  status: "unsupported_source"
2533
2563
  } : {
2534
- akomaNtosoUrl: `${di}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2564
+ akomaNtosoUrl: `${fi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2535
2565
  publicUrl: n.toString(),
2536
2566
  status: "available"
2537
2567
  };
2538
2568
  }
2539
- function hi(e) {
2569
+ function gi(e) {
2540
2570
  return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
2541
2571
  }
2542
2572
  //#endregion
2543
2573
  //#region src/lib/alineas/alineas_numbers.ts
2544
- var gi = {
2574
+ var _i = {
2545
2575
  "0150a855548f15a2af52ea057be53f5d": 1,
2546
2576
  "039826cf379b94afefe90b25c6045ca0": 1,
2547
2577
  "03a7e564b84662f4d957c51018e26244": 1,
@@ -21515,7 +21545,7 @@ var gi = {
21515
21545
  d16d29c923bd60c7b095b66c6058fe60: 1664,
21516
21546
  "1c14c2adf5cfda3220b2057160e10e91": 1665,
21517
21547
  e44c55ca1ac46ff46420686a466c9fc6: 1665
21518
- }, _i = "\np:has(.alinea) {\n margin: 0.6em 0;\n}\n.alinea {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n margin-right: 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n vertical-align: middle;\n}\n", vi = "\nh1 {\n font-size: 1.8em;\n margin: 1em 0 0.5em 0;\n}\nh2 {\n font-size: 1.5em;\n margin: 0.9em 0 0.4em 0;\n}\nh3 {\n font-size: 1.3em;\n margin: 0.8em 0 0.4em 0;\n}\nh4 {\n font-size: 1.15em;\n margin: 0.7em 0 0.3em 0;\n}\nh5 {\n font-size: 1.05em;\n margin: 0.6em 0 0.3em 0;\n}\nh6 {\n font-size: 1em;\n margin: 0.5em 0 0.3em 0;\n}\n", yi = "\n.expose-motifs-titre {\n font-size: 1.1em;\n font-weight: bold;\n color: #0070b9;\n margin: 1em 0 0.5em 0;\n}\n.expose-motifs {\n border-left: 3px solid #0070b9;\n padding-left: 1em;\n margin: 0.5em 0 1em 0;\n color: #333;\n}\n.expose-motifs p {\n margin: 0.5em 0;\n}\n", bi = "\nol {\n list-style: none;\n padding-left: 0;\n margin: 0.5em 0;\n counter-reset: list-counter;\n}\nol > li {\n counter-increment: list-counter;\n margin: 0.3em 0;\n padding-left: 2.3em;\n position: relative;\n}\nol > li::before {\n content: counter(list-counter);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n position: absolute;\n left: 0;\n top: 0.1em;\n}\n", xi = "\n.cover-title {\n font-size: 1.8em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n.cover-subtitle {\n font-size: 1.4em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 0.8em 0;\n}\n.cover-info {\n text-align: center;\n margin: 0.3em 0;\n color: #333;\n}\n.cover-year {\n font-size: 2em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n", Si = {
21548
+ }, vi = "\np:has(.alinea) {\n margin: 0.6em 0;\n}\n.alinea {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n margin-right: 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n vertical-align: middle;\n}\n", yi = "\nh1 {\n font-size: 1.8em;\n margin: 1em 0 0.5em 0;\n}\nh2 {\n font-size: 1.5em;\n margin: 0.9em 0 0.4em 0;\n}\nh3 {\n font-size: 1.3em;\n margin: 0.8em 0 0.4em 0;\n}\nh4 {\n font-size: 1.15em;\n margin: 0.7em 0 0.3em 0;\n}\nh5 {\n font-size: 1.05em;\n margin: 0.6em 0 0.3em 0;\n}\nh6 {\n font-size: 1em;\n margin: 0.5em 0 0.3em 0;\n}\n", bi = "\n.expose-motifs-titre {\n font-size: 1.1em;\n font-weight: bold;\n color: #0070b9;\n margin: 1em 0 0.5em 0;\n}\n.expose-motifs {\n border-left: 3px solid #0070b9;\n padding-left: 1em;\n margin: 0.5em 0 1em 0;\n color: #333;\n}\n.expose-motifs p {\n margin: 0.5em 0;\n}\n", xi = "\nol {\n list-style: none;\n padding-left: 0;\n margin: 0.5em 0;\n counter-reset: list-counter;\n}\nol > li {\n counter-increment: list-counter;\n margin: 0.3em 0;\n padding-left: 2.3em;\n position: relative;\n}\nol > li::before {\n content: counter(list-counter);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n position: absolute;\n left: 0;\n top: 0.1em;\n}\n", Si = "\n.cover-title {\n font-size: 1.8em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n.cover-subtitle {\n font-size: 1.4em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 0.8em 0;\n}\n.cover-info {\n text-align: center;\n margin: 0.3em 0;\n color: #333;\n}\n.cover-year {\n font-size: 2em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n", Ci = {
21519
21549
  assnatetatagr: { bold: !0 },
21520
21550
  assnatetatagrgr: { bold: !0 },
21521
21551
  assnatetatatr: { bold: !0 },
@@ -21616,29 +21646,29 @@ var gi = {
21616
21646
  assnatxl67: { align: "center" },
21617
21647
  assnatenteteequilibre: { align: "center" }
21618
21648
  };
21619
- function Ci(e) {
21620
- let t = Object.keys(Si).sort((e, t) => t.length - e.length);
21621
- for (let n of t) if (e.includes(n)) return Si[n];
21622
- return null;
21623
- }
21624
21649
  function wi(e) {
21625
- return Ee.createHash("md5").update(e).digest("hex");
21650
+ let t = Object.keys(Ci).sort((e, t) => t.length - e.length);
21651
+ for (let n of t) if (e.includes(n)) return Ci[n];
21652
+ return null;
21626
21653
  }
21627
21654
  function Ti(e) {
21628
- return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
21655
+ return Te.createHash("md5").update(e).digest("hex");
21629
21656
  }
21630
21657
  function Ei(e) {
21631
- return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
21658
+ return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
21632
21659
  }
21633
21660
  function Di(e) {
21661
+ return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
21662
+ }
21663
+ function Oi(e) {
21634
21664
  if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
21635
21665
  let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
21636
21666
  return !(t && parseFloat(t[1]) < 8);
21637
21667
  }
21638
- function Oi(e) {
21668
+ function ki(e) {
21639
21669
  return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
21640
21670
  }
21641
- function ki(e) {
21671
+ function Ai(e) {
21642
21672
  if (!e) return;
21643
21673
  let t = [
21644
21674
  "width",
@@ -21673,15 +21703,15 @@ function ki(e) {
21673
21703
  }
21674
21704
  return n.length > 0 ? n.join("; ") : void 0;
21675
21705
  }
21676
- function Ai(e, t) {
21706
+ function ji(e, t) {
21677
21707
  return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
21678
21708
  }
21679
- function ji(e) {
21709
+ function Mi(e) {
21680
21710
  if (!e) return null;
21681
21711
  let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
21682
21712
  return t ? t[1].toLowerCase() : null;
21683
21713
  }
21684
- function Mi(e) {
21714
+ function Ni(e) {
21685
21715
  if (!e) return null;
21686
21716
  for (let [t, n] of [
21687
21717
  [/assnat1Tome|assnatAN1PARTIE/i, 1],
@@ -21693,8 +21723,8 @@ function Mi(e) {
21693
21723
  ]) if (t.test(e)) return n;
21694
21724
  return null;
21695
21725
  }
21696
- function Ni(e, t = {}) {
21697
- let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = T(e, { xml: { decodeEntities: !1 } });
21726
+ function Pi(e, t = {}) {
21727
+ let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = E(e, { xml: { decodeEntities: !1 } });
21698
21728
  a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
21699
21729
  let n = a(t).closest("table");
21700
21730
  n.length > 0 && n.remove();
@@ -21719,7 +21749,7 @@ function Ni(e, t = {}) {
21719
21749
  if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
21720
21750
  let e = i.attr();
21721
21751
  if (e && (e.width === "45" && (e.height === "31" || e.height === "30") || parseInt(e.width || "0", 10) < 50 && parseInt(e.height || "0", 10) < 50) && r.includes("position:absolute")) {
21722
- let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? wi(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21752
+ let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Ti(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21723
21753
  n.replaceWith(`<span class="alinea"${i}></span>`);
21724
21754
  return;
21725
21755
  }
@@ -21738,7 +21768,7 @@ function Ni(e, t = {}) {
21738
21768
  (!r || r === "\xA0") && n.remove();
21739
21769
  }), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
21740
21770
  function o(e) {
21741
- let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Ti(n) || r === "b" || r === "strong", o = Ei(n) || r === "i" || r === "em", s = Di(n) || r === "sup", c = Oi(n) || r === "sub", l = t.attr("class") || "";
21771
+ let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Ei(n) || r === "b" || r === "strong", o = Di(n) || r === "i" || r === "em", s = Oi(n) || r === "sup", c = ki(n) || r === "sub", l = t.attr("class") || "";
21742
21772
  return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
21743
21773
  bold: i,
21744
21774
  italic: o,
@@ -21772,7 +21802,7 @@ function Ni(e, t = {}) {
21772
21802
  c = e;
21773
21803
  }
21774
21804
  for (a("p").each((e, t) => {
21775
- let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Mi(i);
21805
+ let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Ni(i);
21776
21806
  if (i.includes("assnatFARCouvTitreD")) {
21777
21807
  let e = r.html() || "";
21778
21808
  r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
@@ -21805,11 +21835,11 @@ function Ni(e, t = {}) {
21805
21835
  let c = r.text().trim().startsWith("«");
21806
21836
  if (s && !c) {
21807
21837
  let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
21808
- n && Ai(o, i) && e.attr("align", "center"), r.replaceWith(e);
21838
+ n && ji(o, i) && e.attr("align", "center"), r.replaceWith(e);
21809
21839
  } else {
21810
- let e = Ci(i), t;
21840
+ let e = wi(i), t;
21811
21841
  if (n) {
21812
- let n = ji(o);
21842
+ let n = Mi(o);
21813
21843
  n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
21814
21844
  }
21815
21845
  if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
@@ -21819,7 +21849,7 @@ function Ni(e, t = {}) {
21819
21849
  }
21820
21850
  }), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
21821
21851
  let r = a(t), i = r.attr("style"), o = r.attr("class");
21822
- n && Ai(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21852
+ n && ji(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21823
21853
  }), a("a").each((e, t) => {
21824
21854
  let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
21825
21855
  for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
@@ -21858,7 +21888,7 @@ function Ni(e, t = {}) {
21858
21888
  }), a("br").each((e, t) => {
21859
21889
  a(t).removeAttr("style").removeAttr("class");
21860
21890
  }), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
21861
- let n = a(t), r = ki(n.attr("style"));
21891
+ let n = a(t), r = Ai(n.attr("style"));
21862
21892
  n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
21863
21893
  }), a("td, th").each((e, t) => {
21864
21894
  let n = a(t), r = n.children();
@@ -21876,17 +21906,17 @@ function Ni(e, t = {}) {
21876
21906
  !isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
21877
21907
  }
21878
21908
  }), a("li").each((e, t) => {
21879
- let n = a(t), r = ji(n.attr("style"));
21909
+ let n = a(t), r = Mi(n.attr("style"));
21880
21910
  n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
21881
21911
  let i = n.html() || "", o = i.replace(/^(\s|&#xa0;|&#160;|\u00a0)+/, "");
21882
21912
  o !== i && n.html(o);
21883
- }), Pi(a), Fi(a, i);
21913
+ }), Fi(a), Ii(a, i);
21884
21914
  let l = a("body").html() || a.html(), u = l.includes("class=\"alinea"), d = a("ol").length > 0, f = a("h1, h2, h3, h4, h5, h6").length > 0, p = l.includes("class=\"expose-motifs"), m = l.includes("class=\"cover-title\"") || l.includes("class=\"cover-subtitle\"") || l.includes("class=\"cover-info\"") || l.includes("class=\"cover-year\""), h = "";
21885
- m && (h += xi), f && (h += vi), p && (h += yi), u && (h += _i), d && (h += bi);
21915
+ m && (h += Si), f && (h += yi), p && (h += bi), u && (h += vi), d && (h += xi);
21886
21916
  let g = h ? `<style>${h}</style>\n${l}` : l;
21887
- return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/&nbsp;/g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g = Ii(g), g = g.replace(/<(strong|em|b|i|sup|sub)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>/gi, "").replace(/<(strong|em|b|i)>(&nbsp;|&#xa0;|&#160;|\u00a0)+<\/\1>/gi, " ").replace(/<br\s*\/?>/gi, "<br/>").replace(/ +/g, " ").trim(), g;
21917
+ return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/&nbsp;/g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g = Li(g), g = g.replace(/<(strong|em|b|i|sup|sub)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>/gi, "").replace(/<(strong|em|b|i)>(&nbsp;|&#xa0;|&#160;|\u00a0)+<\/\1>/gi, " ").replace(/<br\s*\/?>/gi, "<br/>").replace(/ +/g, " ").trim(), g;
21888
21918
  }
21889
- function Pi(e) {
21919
+ function Fi(e) {
21890
21920
  e("span[id]").each((t, n) => {
21891
21921
  let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
21892
21922
  if (o.length !== 1 || o[0] !== "id") return;
@@ -21909,13 +21939,13 @@ function Pi(e) {
21909
21939
  l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
21910
21940
  });
21911
21941
  }
21912
- function Fi(e, t = !1) {
21942
+ function Ii(e, t = !1) {
21913
21943
  let n = e("body");
21914
21944
  if (n.length === 0) return;
21915
21945
  let r = n.find("span.alinea[data-image-hash]"), i = -1;
21916
21946
  r.each((n, r) => {
21917
21947
  let a = e(r), o = a.attr("data-image-hash"), s;
21918
- if (o && gi[o] !== void 0 && (s = gi[o]), s === void 0) {
21948
+ if (o && _i[o] !== void 0 && (s = _i[o]), s === void 0) {
21919
21949
  if (t) throw Error(`Missing alinea number mapping for image hash: "${o}". Please extract images, review them, and update the mapping in "src/lib/alineas/alineas_numbers.ts".`);
21920
21950
  a.remove();
21921
21951
  return;
@@ -21927,11 +21957,11 @@ function Fi(e, t = !1) {
21927
21957
  i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
21928
21958
  });
21929
21959
  }
21930
- function Ii(e) {
21960
+ function Li(e) {
21931
21961
  let t = e;
21932
21962
  return t = t.replace(/<\/strong>(\s*)<strong>/gi, "$1"), t = t.replace(/<\/em>(\s*)<em>/gi, "$1"), t = t.replace(/<\/sup>(\s*)<sup>/gi, "$1"), t = t.replace(/<\/sub>(\s*)<sub>/gi, "$1"), t;
21933
21963
  }
21934
- function Li(e, t = {}) {
21964
+ function Ri(e, t = {}) {
21935
21965
  return `<!DOCTYPE html>
21936
21966
  <html lang="fr">
21937
21967
  <head>
@@ -21939,33 +21969,33 @@ function Li(e, t = {}) {
21939
21969
  <title>Document simplifié</title>
21940
21970
  </head>
21941
21971
  <body>
21942
- ${Ni(e, t)}
21972
+ ${Pi(e, t)}
21943
21973
  </body>
21944
21974
  </html>`;
21945
21975
  }
21946
21976
  //#endregion
21947
21977
  //#region src/lib/server/text_parsers/transformers.ts
21948
- function Ri(e, t) {
21978
+ function zi(e, t) {
21949
21979
  let n = "transformation_", r = {};
21950
- for (let e of M.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21980
+ for (let e of N.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21951
21981
  let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
21952
21982
  for (let e of a.slice(1)) {
21953
21983
  let t = o.transformations ??= [];
21954
21984
  for (; e >= t.length;) t.push({});
21955
21985
  o = t[e];
21956
21986
  }
21957
- o.output = M.readFileSync(Oe.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21958
- let { sourceMap: s, title: c } = M.readJsonSync(Oe.join(t, e), { encoding: "utf-8" });
21987
+ o.output = N.readFileSync(De.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21988
+ let { sourceMap: s, title: c } = N.readJsonSync(De.join(t, e), { encoding: "utf-8" });
21959
21989
  o.sourceMap = s ?? [], o.title = c;
21960
21990
  }
21961
- return zi(r, e), r;
21991
+ return Bi(r, e), r;
21962
21992
  }
21963
- function zi(e, t) {
21964
- if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) zi(n, t), t = n.output;
21993
+ function Bi(e, t) {
21994
+ if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Bi(n, t), t = n.output;
21965
21995
  return t;
21966
21996
  }
21967
- function Bi(e, t, n = "1") {
21968
- if (M.ensureDirSync(t), e.transformations === void 0) M.writeJsonSync(Oe.join(t, `transformation_${n}.json`), {
21997
+ function Vi(e, t, n = "1") {
21998
+ if (N.ensureDirSync(t), e.transformations === void 0) N.writeJsonSync(De.join(t, `transformation_${n}.json`), {
21969
21999
  sourceMap: e.sourceMap,
21970
22000
  title: e.title
21971
22001
  }, {
@@ -21973,24 +22003,24 @@ function Bi(e, t, n = "1") {
21973
22003
  spaces: 2
21974
22004
  });
21975
22005
  else {
21976
- M.writeJsonSync(Oe.join(t, `transformation_${n}.json`), { title: e.title }, {
22006
+ N.writeJsonSync(De.join(t, `transformation_${n}.json`), { title: e.title }, {
21977
22007
  encoding: "utf-8",
21978
22008
  spaces: 2
21979
22009
  });
21980
- for (let [r, i] of e.transformations.entries()) Bi(i, t, `${n}.${r + 1}`);
22010
+ for (let [r, i] of e.transformations.entries()) Vi(i, t, `${n}.${r + 1}`);
21981
22011
  }
21982
- e.output !== void 0 && M.writeFileSync(Oe.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
22012
+ e.output !== void 0 && N.writeFileSync(De.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
21983
22013
  }
21984
22014
  //#endregion
21985
22015
  //#region src/lib/server/linkers/html.ts
21986
- async function Vi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, htmlFilePath: i, htmlTransformationsInputDir: a, htmlTransformationsOutputDir: o, htmlWithLinksFilePath: s, htmlWithLinksOrReferencesFilePath: c, htmlWithLinksTransformationsOutputDir: l, htmlWithReferencesFilePath: u, linkBaseUrl: d, linkType: f, logIgnoredReferencesTypes: p, logPartialReferences: m, logReferences: h, referredLegifranceTextsInfosFilePath: g }) {
21987
- let _ = t ?? (e === void 0 ? void 0 : new oe(e));
22016
+ async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, htmlFilePath: i, htmlTransformationsInputDir: a, htmlTransformationsOutputDir: o, htmlWithLinksFilePath: s, htmlWithLinksOrReferencesFilePath: c, htmlWithLinksTransformationsOutputDir: l, htmlWithReferencesFilePath: u, linkBaseUrl: d, linkType: f, logIgnoredReferencesTypes: p, logPartialReferences: m, logReferences: h, referredLegifranceTextsInfosFilePath: g }) {
22017
+ let _ = t ?? (e === void 0 ? void 0 : new ae(e));
21988
22018
  if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
21989
- let v = await M.readFile(i, { encoding: "utf-8" }), y;
21990
- a === void 0 ? (y = ye({ removeAWithHref: !0 })(v), o !== void 0 && Bi(y, o)) : y = Ri(v, a);
22019
+ let v = await N.readFile(i, { encoding: "utf-8" }), y;
22020
+ a === void 0 ? (y = ve({ removeAWithHref: !0 })(v), o !== void 0 && Vi(y, o)) : y = zi(v, a);
21991
22021
  let b = [];
21992
22022
  s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
21993
- let { outputByType: x, referredLegifranceTextCountByCid: ee } = await ce({
22023
+ let { outputByType: x, referredLegifranceTextCountByCid: ee } = await se({
21994
22024
  legiResolver: _,
21995
22025
  date: n,
21996
22026
  defaultTextId: r,
@@ -22007,38 +22037,38 @@ async function Vi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
22007
22037
  s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
22008
22038
  for (let [e, t] of Object.entries(x)) {
22009
22039
  let n = S[e];
22010
- n !== void 0 && await M.writeFile(n, t.html, { encoding: "utf-8" });
22040
+ n !== void 0 && await N.writeFile(n, t.html, { encoding: "utf-8" });
22011
22041
  }
22012
- x.links !== void 0 && l !== void 0 && Bi(ye()(x.links.html), l), g !== void 0 && await M.writeJson(g, ee, {
22042
+ x.links !== void 0 && l !== void 0 && Vi(ve()(x.links.html), l), g !== void 0 && await N.writeJson(g, ee, {
22013
22043
  encoding: "utf-8",
22014
22044
  spaces: 2
22015
22045
  });
22016
22046
  }
22017
22047
  //#endregion
22018
22048
  //#region src/lib/server/tables_of_contents.ts
22019
- async function Hi(e, t, n, r) {
22020
- let i = Ri(await M.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new E(a), s = await M.readJson(n, { encoding: "utf-8" });
22021
- for await (let e of se({
22049
+ async function Ui(e, t, n, r) {
22050
+ let i = zi(await N.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new D(a), s = await N.readJson(n, { encoding: "utf-8" });
22051
+ for await (let e of oe({
22022
22052
  context: o,
22023
22053
  tableOfContents: s,
22024
22054
  transformation: i
22025
22055
  }));
22026
- await M.writeJson(r, s, {
22056
+ await N.writeJson(r, s, {
22027
22057
  encoding: "utf-8",
22028
22058
  spaces: 2
22029
22059
  });
22030
22060
  }
22031
- async function Ui(e, t, n) {
22032
- let r = Ri(await M.readFile(e, { encoding: "utf-8" }), t).output, i = b(r);
22033
- await M.writeJson(n, i, {
22061
+ async function Wi(e, t, n) {
22062
+ let r = zi(await N.readFile(e, { encoding: "utf-8" }), t).output, i = b(r);
22063
+ await N.writeJson(n, i, {
22034
22064
  encoding: "utf-8",
22035
22065
  spaces: 2
22036
22066
  });
22037
22067
  }
22038
22068
  //#endregion
22039
22069
  //#region src/lib/server/legi/resolvers.ts
22040
- function Wi({ canutesDb: e }) {
22041
- return new oe(e);
22070
+ function Gi({ canutesDb: e }) {
22071
+ return new ae(e);
22042
22072
  }
22043
22073
  //#endregion
22044
- export { we as LegiResolver, Vi as addLinksOrReferencesToHtmlFile, Hi as addPositionsToTableOfContentsFile, be as buildAndInstallTextTitlesInfos, Ce as buildTextTitlesInfos, Wi as createLegiResolver, Me as extractAssembleeAmendmentSearchItems, er as extractAssembleeExposesDesMotifs, ar as extractSenatAmendmentSearchItems, Ne as hashAssembleeAmendmentSearchItem, nr as hashAssembleeSearchItem, or as hashSenatAmendmentSearchItem, li as hashSenatSearchItem, hi as isAkomaNtosoXml, rr as isoDateFromAssembleeDocument, Xn as linkAkomaNtosoBillRaw, rn as linkAssembleeBillRaw, Yn as parseAkomaNtosoBillRaw, ai as parseAmendment, nn as parseAssembleeBillRaw, tr as parseAssembleeDocumentSearchContent, ci as parseSenatDocumentSearchContent, Ri as readTransformation, Gn as renderAkomaNtosoBillRaw, mi as resolveSenatAkomaNtosoSource, Ui as simplifiedHtmlBillFileToTableOfContentsFile, Ni as simplifyWordHtml, Li as simplifyWordHtmlToDocument, Bi as writeTransformation };
22074
+ export { Ce as LegiResolver, Hi as addLinksOrReferencesToHtmlFile, Ui as addPositionsToTableOfContentsFile, ye as buildAndInstallTextTitlesInfos, Se as buildTextTitlesInfos, Gi as createLegiResolver, je as extractAssembleeAmendmentSearchItems, tr as extractAssembleeExposesDesMotifs, or as extractSenatAmendmentSearchItems, Me as hashAssembleeAmendmentSearchItem, rr as hashAssembleeSearchItem, sr as hashSenatAmendmentSearchItem, ui as hashSenatSearchItem, gi as isAkomaNtosoXml, ir as isoDateFromAssembleeDocument, Zn as linkAkomaNtosoBillRaw, an as linkAssembleeBillRaw, Xn as parseAkomaNtosoBillRaw, oi as parseAmendment, rn as parseAssembleeBillRaw, nr as parseAssembleeDocumentSearchContent, li as parseSenatDocumentSearchContent, zi as readTransformation, Kn as renderAkomaNtosoBillRaw, hi as resolveSenatAkomaNtosoSource, Wi as simplifiedHtmlBillFileToTableOfContentsFile, Pi as simplifyWordHtml, Ri as simplifyWordHtmlToDocument, Vi as writeTransformation };