@tricoteuses/tisseuse 0.19.3 → 0.21.0

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 (54) hide show
  1. package/README.md +79 -0
  2. package/dist/{html-EuDDYMr2.js → html-jaUHsXKQ.js} +6449 -5951
  3. package/dist/index.js +115 -115
  4. package/dist/{resolver-tBQRf8TL.js → resolver-CzmDH4S3.js} +125 -97
  5. package/dist/server-f-legi.js +73 -92
  6. package/dist/server.js +892 -722
  7. package/dist/src/lib/extractors/action_directives_cpu.test.d.ts +1 -0
  8. package/dist/src/lib/extractors/links.citation_scope.test.d.ts +1 -0
  9. package/dist/src/lib/extractors/links.d.ts +2 -1
  10. package/dist/src/lib/extractors/portion_references_cpu.test.d.ts +1 -0
  11. package/dist/src/lib/extractors/qualified_versions.d.ts +6 -0
  12. package/dist/src/lib/extractors/references.d.ts +8 -8
  13. package/dist/src/lib/f_legi/resolver.d.ts +0 -2
  14. package/dist/src/lib/index.d.ts +1 -0
  15. package/dist/src/lib/legi/canutes_article_preload.test.d.ts +1 -0
  16. package/dist/src/lib/legi/canutes_candidates.test.d.ts +1 -0
  17. package/dist/src/lib/legi/canutes_resolver.d.ts +5 -4
  18. package/dist/src/lib/legi/canutes_resolver_cache.test.d.ts +1 -0
  19. package/dist/src/lib/legi/canutes_section_roots.test.d.ts +1 -0
  20. package/dist/src/lib/legi/canutes_sql.d.ts +4 -0
  21. package/dist/src/lib/legi/canutes_text_titles_cache.d.ts +24 -0
  22. package/dist/src/lib/legi/canutes_text_titles_cache.integration.test.d.ts +1 -0
  23. package/dist/src/lib/legi/canutes_titles_metrics.d.ts +13 -0
  24. package/dist/src/lib/legi/text_titles_infos.d.ts +1 -0
  25. package/dist/src/lib/linkers/html.d.ts +6 -4
  26. package/dist/src/lib/linkers/markdown.d.ts +2 -2
  27. package/dist/src/lib/server/akn_rendering.test.d.ts +1 -0
  28. package/dist/src/lib/server/bill_action_resolver_invariance.test.d.ts +1 -0
  29. package/dist/src/lib/server/bill_action_target_fixtures.d.ts +7 -0
  30. package/dist/src/lib/server/bill_citation_anaphora.test.d.ts +1 -0
  31. package/dist/src/lib/server/bill_comparison.d.ts +42 -0
  32. package/dist/src/lib/server/bill_comparison.test.d.ts +1 -0
  33. package/dist/src/lib/server/bill_target_scope.test.d.ts +1 -0
  34. package/dist/src/lib/server/canutes_legacy_candidates.d.ts +19 -0
  35. package/dist/src/lib/server/canutes_only_compatibility.test.d.ts +1 -0
  36. package/dist/src/lib/server/databases/canutes_text_titles_cache.d.ts +8 -0
  37. package/dist/src/lib/server/flegi_profiling.d.ts +14 -0
  38. package/dist/src/lib/server/flegi_profiling.test.d.ts +1 -0
  39. package/dist/src/lib/server/masquage-typesense.test.d.ts +1 -0
  40. package/dist/src/lib/server/masquage_typesense.d.ts +36 -0
  41. package/dist/src/lib/server/parsed_bills.d.ts +4 -0
  42. package/dist/src/lib/server/sql_profiling.d.ts +30 -0
  43. package/dist/src/lib/server/sql_profiling.test.d.ts +1 -0
  44. package/dist/src/lib/text_parsers/action_words.d.ts +2 -0
  45. package/dist/src/lib/text_parsers/action_words.test.d.ts +1 -0
  46. package/dist/src/lib/text_parsers/qualified_versions.d.ts +2 -0
  47. package/dist/src/lib/text_parsers/texts.d.ts +1 -0
  48. package/dist/src/lib/text_parsers/transformers.d.ts +2 -0
  49. package/dist/src/scripts/compare_legi_bills.d.ts +1 -0
  50. package/dist/src/scripts/configure_postgres_legi_resolver.d.ts +1 -0
  51. package/dist/src/scripts/profile_canutes_bill.d.ts +1 -0
  52. package/dist/src/scripts/test_canutes_titles_cache.d.ts +1 -0
  53. package/dist/src/scripts/warm_canutes_text_titles_cache.d.ts +1 -0
  54. package/package.json +7 -1
@@ -889,8 +889,8 @@ var we = [
889
889
  })), F = S("ci ?- ?(après|avant|dessous|dessus)", {
890
890
  flags: "i",
891
891
  value: (e) => `ci-${e[1]}`
892
- }), Ue = _([T, F], { value: (e) => e[1] }), We = S(" précitée?", { flags: "i" }), Ge = g(F, N), Ke = _([x(S("ces ", { flags: "i" }), { default: "" }), N], { value: (e) => e[1] }), qe = g(F, P), Je = _([x(S("ce(tte|t)? ", { flags: "i" }), { default: "" }), P], { value: (e) => e[1] }), I = /^<\/?(!DOCTYPE|\?XML|[A-Z][A-Z0-9]*)/i;
893
- function L(e, t) {
892
+ }), Ue = _([T, F], { value: (e) => e[1] }), We = S(" précitée?", { flags: "i" }), Ge = g(F, N), Ke = _([x(S("ces ", { flags: "i" }), { default: "" }), N], { value: (e) => e[1] }), qe = g(F, P), I = _([x(S("ce(tte|t)? ", { flags: "i" }), { default: "" }), P], { value: (e) => e[1] }), L = /^<\/?(!DOCTYPE|\?XML|[A-Z][A-Z0-9]*)/i;
893
+ function R(e, t) {
894
894
  return (n) => {
895
895
  let r = [], i = n;
896
896
  for (let e of t) {
@@ -905,12 +905,32 @@ function L(e, t) {
905
905
  };
906
906
  };
907
907
  }
908
- function* R(e) {
908
+ function Je(e) {
909
+ return (t) => {
910
+ let n = [], r = [], i = 0, a = 0;
911
+ for (let { start: o, stop: s } of e) {
912
+ if (o < i || s <= o || s > t.length) throw RangeError("Source ranges must be ordered, disjoint and nonempty");
913
+ n.push(t.slice(i, o)), a += o - i, r.push({
914
+ inputIndex: o,
915
+ inputLength: s - o,
916
+ outputIndex: a,
917
+ outputLength: 0
918
+ }), i = s;
919
+ }
920
+ return n.push(t.slice(i)), {
921
+ input: t,
922
+ output: n.join(""),
923
+ sourceMap: r,
924
+ title: "Omission des éléments de présentation"
925
+ };
926
+ };
927
+ }
928
+ function* z(e) {
909
929
  if (e.transformations === void 0) yield e;
910
- else for (let t of e.transformations) yield* R(t);
930
+ else for (let t of e.transformations) yield* z(t);
911
931
  }
912
932
  function* Ye(e) {
913
- let t = [...R(e)].reverse(), n = { position: {
933
+ let t = [...z(e)].reverse(), n = { position: {
914
934
  start: 0,
915
935
  stop: 0
916
936
  } }, r = t.map((e) => {
@@ -967,7 +987,7 @@ function* Xe(e) {
967
987
  if (i + 1 < d) {
968
988
  let r = !1, o = n[i + 1];
969
989
  if (o.openingTag !== void 0 && o.outputIndex + o.outputLength < e.start) {
970
- let e = o.openingTag.match(I);
990
+ let e = o.openingTag.match(L);
971
991
  if (e !== null) {
972
992
  let t = e[1], n = t.toUpperCase();
973
993
  [
@@ -992,7 +1012,7 @@ function* Xe(e) {
992
1012
  if (i + 1 > f) {
993
1013
  let a = !1, s = n[r], l = n[i + 1];
994
1014
  if (s.openingTag !== void 0 && e.stop < l.outputIndex) {
995
- let e = s.openingTag.match(I);
1015
+ let e = s.openingTag.match(L);
996
1016
  if (e !== null) {
997
1017
  let t = e[1], n = t.toUpperCase();
998
1018
  [
@@ -1041,7 +1061,7 @@ function Ze(e) {
1041
1061
  }
1042
1062
  function Qe(e, t) {
1043
1063
  let n = t.map((e) => [e]);
1044
- for (let { sourceMap: t } of [...R(e)].reverse()) n = $e(t, n);
1064
+ for (let { sourceMap: t } of [...z(e)].reverse()) n = $e(t, n);
1045
1065
  return n;
1046
1066
  }
1047
1067
  function $e(e, t) {
@@ -1154,7 +1174,7 @@ function at({ removeAWithHref: e } = {}) {
1154
1174
  sourceMap: a,
1155
1175
  title: s
1156
1176
  };
1157
- let u = t.slice(c, l + 1), d = u.startsWith("</"), f = u.length, p = u.match(I);
1177
+ let u = t.slice(c, l + 1), d = u.startsWith("</"), f = u.length, p = u.match(L);
1158
1178
  if (p === null) {
1159
1179
  i.push(t.slice(n, l + 1).replace(/[\n\r]/g, " ")), n = l + 1;
1160
1180
  continue;
@@ -1372,7 +1392,7 @@ function ct(e) {
1372
1392
  [/<script.*?>.*?<\/script>/gis, ""],
1373
1393
  [/<style.*?>.*?<\/style>/gis, ""]
1374
1394
  ]) {
1375
- let i = z(e, r)(n);
1395
+ let i = B(e, r)(n);
1376
1396
  i.sourceMap.length !== 0 && (t.push(i), n = i.output);
1377
1397
  }
1378
1398
  return {
@@ -1382,7 +1402,7 @@ function ct(e) {
1382
1402
  transformations: t
1383
1403
  };
1384
1404
  }
1385
- function z(e, t) {
1405
+ function B(e, t) {
1386
1406
  return (n) => {
1387
1407
  let r = [], i = n.replaceAll(e, (e, ...n) => {
1388
1408
  let i = n.at(-2), a = t;
@@ -1402,14 +1422,14 @@ function z(e, t) {
1402
1422
  };
1403
1423
  };
1404
1424
  }
1405
- function B(e) {
1425
+ function V(e) {
1406
1426
  let t = [], n = e;
1407
1427
  for (let [e, r] of [
1408
1428
  [/(\sn°)([^\s])/gi, "$1 $2"],
1409
1429
  [/[\u200E\u200F]/g, ""],
1410
1430
  [/[\uF031-\uF039\uF041-\uF054\uF061-\uF06A]/g, ""]
1411
1431
  ]) {
1412
- let i = z(e, r)(n);
1432
+ let i = B(e, r)(n);
1413
1433
  i.sourceMap.length !== 0 && (t.push(i), n = i.output);
1414
1434
  }
1415
1435
  return {
@@ -1420,24 +1440,24 @@ function B(e) {
1420
1440
  };
1421
1441
  }
1422
1442
  function lt({ removeAWithHref: e } = {}) {
1423
- return (t) => L("Simplification du HTML", [
1443
+ return (t) => R("Simplification du HTML", [
1424
1444
  ot,
1425
1445
  st,
1426
1446
  ct,
1427
- B,
1428
- H,
1447
+ V,
1448
+ U,
1429
1449
  at({ removeAWithHref: e }),
1430
- V
1450
+ H
1431
1451
  ])(t);
1432
1452
  }
1433
1453
  function ut(e) {
1434
- return L("Simplification du texte brut", [
1435
- B,
1436
- H,
1437
- V
1454
+ return R("Simplification du texte brut", [
1455
+ V,
1456
+ U,
1457
+ H
1438
1458
  ])(e);
1439
1459
  }
1440
- function V(e) {
1460
+ function H(e) {
1441
1461
  let t = [], n = e;
1442
1462
  for (let [e, r, i] of [
1443
1463
  [
@@ -1495,8 +1515,8 @@ function V(e) {
1495
1515
  transformations: t
1496
1516
  };
1497
1517
  }
1498
- function H(e) {
1499
- return L("Simplification des caractères unicodes", [
1518
+ function U(e) {
1519
+ return R("Simplification des caractères unicodes", [
1500
1520
  ["À", "À"],
1501
1521
  ["Â", "Â"],
1502
1522
  ["Ä", "Ä"],
@@ -1531,19 +1551,23 @@ function H(e) {
1531
1551
  [/[‐‑–·]/g, "-"],
1532
1552
  [/’/g, "'"],
1533
1553
  ["İ", "I"]
1534
- ].map(([e, t]) => z(e, t)))(e);
1554
+ ].map(([e, t]) => B(e, t)))(e);
1535
1555
  }
1536
1556
  //#endregion
1537
1557
  //#region src/lib/text_parsers/texts.ts
1538
- var U = {}, dt = {}, ft = {}, pt = {}, mt = {}, ht = {};
1539
- function gt(e) {
1558
+ var W = {}, dt = {}, ft = {}, pt = {}, mt = {}, ht = {}, gt = 0;
1559
+ function _t() {
1560
+ return gt;
1561
+ }
1562
+ function vt(e) {
1563
+ gt++;
1540
1564
  let t = e ?? {};
1541
- W(dt, t.codeTitleVersionsByCid ?? {}), W(ft, t.textCidByOtherTitleWordsTree ?? {}), W(pt, t.textCidByTitleRestWordsTree ?? {}), W(U, Object.fromEntries(Object.entries(t.textInfosByCid ?? {}).map(([e, t]) => [e, Array.isArray(t) ? {
1565
+ G(dt, t.codeTitleVersionsByCid ?? {}), G(ft, t.textCidByOtherTitleWordsTree ?? {}), G(pt, t.textCidByTitleRestWordsTree ?? {}), G(W, Object.fromEntries(Object.entries(t.textInfosByCid ?? {}).map(([e, t]) => [e, Array.isArray(t) ? {
1542
1566
  nature: t[0],
1543
1567
  title: t[1]
1544
- } : t]))), W(mt, t.textsCidsByNatureAndDate ?? {}), W(ht, t.textsCidsByNatureAndNum ?? {});
1568
+ } : t]))), G(mt, t.textsCidsByNatureAndDate ?? {}), G(ht, t.textsCidsByNatureAndNum ?? {});
1545
1569
  }
1546
- function _t(e, t) {
1570
+ function yt(e, t) {
1547
1571
  let n = (e) => {
1548
1572
  let n = dt[e] ?? [], r = n.filter(({ debut: e, fin: n }) => e <= t && t < n), i = (r.length > 0 ? r : n.filter(({ debut: e }) => e <= t)).toSorted((e, t) => t.fin.localeCompare(e.fin) || t.debut.localeCompare(e.debut))[0];
1549
1573
  return [
@@ -1557,12 +1581,12 @@ function _t(e, t) {
1557
1581
  return i[0] - r[0] || i[1].localeCompare(r[1]) || i[2].localeCompare(r[2]) || e.localeCompare(t);
1558
1582
  });
1559
1583
  }
1560
- function W(e, t) {
1584
+ function G(e, t) {
1561
1585
  let n = e;
1562
1586
  for (let e of Object.keys(n)) delete n[e];
1563
1587
  Object.assign(e, t);
1564
1588
  }
1565
- var vt = (e) => Array.isArray(e) ? e : [e], G = v(g(S("Constitution", { value: "CONSTITUTION" }), S("arrêtés?|circulaires?|code professionnel local|code|décret-loi|décrets?|livre(?= des procédures fiscales)|loi constitutionnelle|loi d'orientation quinquennale|loi d'orientation|loi de programme|loi locale|loi organique|loi quinquennale|loi|ordonnance (?:du Roi|locale|ministérielle|royale)|ordonnance", {
1589
+ var bt = (e) => Array.isArray(e) ? e : [e], K = v(g(S("Constitution", { value: "CONSTITUTION" }), S("arrêtés?|circulaires?|code professionnel local|code|décret-loi|décrets?|livre(?= des procédures fiscales)|loi constitutionnelle|loi d'orientation quinquennale|loi d'orientation|loi de programme|loi locale|loi organique|loi quinquennale|loi|ordonnance (?:du Roi|locale|ministérielle|royale)|ordonnance", {
1566
1590
  flags: "i",
1567
1591
  value: (e) => {
1568
1592
  let t = e[0].toLowerCase();
@@ -1571,7 +1595,7 @@ var vt = (e) => Array.isArray(e) ? e : [e], G = v(g(S("Constitution", { value: "
1571
1595
  })), { value: (e) => ({
1572
1596
  nature: e,
1573
1597
  type: "texte"
1574
- }) }), yt = _([x(E, { default: null }), S(String.raw`\d+(-\d+)?`)], { value: (e) => e[1] }), K = g(M, _([yt, x(Pe, { default: null })], { value: (e) => e[1] === null ? { num: e[0] } : {
1598
+ }) }), xt = _([x(E, { default: null }), S(String.raw`\d+(-\d+)?`)], { value: (e) => e[1] }), q = g(M, _([xt, x(Pe, { default: null })], { value: (e) => e[1] === null ? { num: e[0] } : {
1575
1599
  ...e[1],
1576
1600
  num: e[0]
1577
1601
  } }));
@@ -1583,11 +1607,11 @@ S("décision( du Conseil constitutionnel)? (?<numero>[-/0-9A-Z]+ (QPC|DC|AN|D|EL
1583
1607
  type: "décision du Conseil constitutionnel"
1584
1608
  })
1585
1609
  });
1586
- var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", { flags: "i" })), { default: null }), bt = g(_([
1587
- G,
1588
- q,
1589
- T,
1610
+ var J = x(g(S(" de la République française", { flags: "i" }), S(" du pays", { flags: "i" })), { default: null }), St = g(_([
1590
1611
  K,
1612
+ J,
1613
+ T,
1614
+ q,
1591
1615
  S(".*")
1592
1616
  ], { value: (e) => {
1593
1617
  let t = {
@@ -1596,10 +1620,10 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1596
1620
  }, n = e[4].trim() || void 0;
1597
1621
  return n !== void 0 && (t.titleRest = n), t;
1598
1622
  } }), _([
1599
- G,
1623
+ K,
1600
1624
  S("[^()]+"),
1601
1625
  S(String.raw`\( ?`),
1602
- K,
1626
+ q,
1603
1627
  S(String.raw` ?\)`)
1604
1628
  ], { value: (e) => {
1605
1629
  let t = {
@@ -1616,10 +1640,10 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1616
1640
  })), S(".+")], { value: (e) => {
1617
1641
  let t = { ...e[0] }, n = e[1].trim() || void 0;
1618
1642
  return n !== void 0 && (t.titleRest = n), t;
1619
- } })), J = g(_([
1620
- G,
1621
- q,
1622
- x([T, K], {
1643
+ } })), Y = g(_([
1644
+ K,
1645
+ J,
1646
+ x([T, q], {
1623
1647
  default: null,
1624
1648
  value: (e) => e[1]
1625
1649
  }),
@@ -1632,7 +1656,7 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1632
1656
  }),
1633
1657
  x([
1634
1658
  S(String.raw` ?\( ?`),
1635
- K,
1659
+ q,
1636
1660
  S(String.raw` ?\)`)
1637
1661
  ], {
1638
1662
  default: null,
@@ -1646,22 +1670,22 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1646
1670
  if (r !== void 0) {
1647
1671
  let e = mt[t]?.[r];
1648
1672
  if (e !== void 0) {
1649
- let t = vt(e);
1673
+ let t = bt(e);
1650
1674
  s = s.size === 0 ? new Set(t) : s.intersection(new Set(t));
1651
1675
  }
1652
1676
  }
1653
1677
  if (i !== void 0) {
1654
1678
  let e = ht[t]?.[i];
1655
1679
  if (e !== void 0) {
1656
- let t = vt(e);
1680
+ let t = bt(e);
1657
1681
  s = s.size === 0 ? new Set(t) : s.intersection(new Set(t));
1658
1682
  }
1659
1683
  }
1660
1684
  if (a !== void 0) {
1661
1685
  let e = Array.isArray(a) ? a : [a];
1662
- s = s.size === 0 ? new Set(e) : s.intersection(new Set(e.filter((e) => U[e].nature === t)));
1686
+ s = s.size === 0 ? new Set(e) : s.intersection(new Set(e.filter((e) => W[e].nature === t)));
1663
1687
  }
1664
- let c = s.size === 1 ? s.values().next().value : void 0, l = c === void 0 ? void 0 : U[c];
1688
+ let c = s.size === 1 ? s.values().next().value : void 0, l = c === void 0 ? void 0 : W[c];
1665
1689
  return Object.fromEntries(Object.entries({
1666
1690
  cid: c,
1667
1691
  candidateCids: t === "CODE" && s.size > 1 ? [...s] : void 0,
@@ -1673,21 +1697,21 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1673
1697
  type: n
1674
1698
  }).filter(([, e]) => e !== void 0));
1675
1699
  } }), _([w(ft), x(We, { default: "" })], { value: (e) => {
1676
- let { cid: t } = e[0], n = typeof t == "string" ? U[t] : void 0;
1700
+ let { cid: t } = e[0], n = typeof t == "string" ? W[t] : void 0;
1677
1701
  return Object.fromEntries(Object.entries({
1678
1702
  cid: t,
1679
1703
  ...n ?? {},
1680
1704
  type: "texte"
1681
1705
  }).filter(([, e]) => e !== void 0));
1682
- } })), xt = _([
1706
+ } })), Ct = _([
1683
1707
  O,
1684
1708
  S("/"),
1685
1709
  O,
1686
1710
  x(S(" ?/ ?(CEE?)", { value: (e) => e[1] }), { default: "" })
1687
- ], { value: (e) => `${e[0]}/${e[2]}${e[3] ? `/${e[3]}` : ""}` }), St = _([x(E, { default: "" }), xt], { value: (e) => e[1] }), Y = g(_([St, x(Pe, { default: null })], { value: (e) => e[1] === null ? { num: e[0] } : {
1711
+ ], { value: (e) => `${e[0]}/${e[2]}${e[3] ? `/${e[3]}` : ""}` }), wt = _([x(E, { default: "" }), Ct], { value: (e) => e[1] }), Tt = g(_([wt, x(Pe, { default: null })], { value: (e) => e[1] === null ? { num: e[0] } : {
1688
1712
  ...e[1],
1689
1713
  num: e[0]
1690
- } }), M), Ct = _([S("arrêtés?|arrêts?|avis|décisions?|déclarations?|délibérations?|directive(?: d'exécution|déléguée)?|informations?|instructions?|lettres?|règlement(?: d'exécution)?", {
1714
+ } }), M), Et = _([S("arrêtés?|arrêts?|avis|décisions?|déclarations?|délibérations?|directive(?: d'exécution|déléguée)?|informations?|instructions?|lettres?|règlement(?: d'exécution)?", {
1691
1715
  flags: "i",
1692
1716
  value: (e) => {
1693
1717
  let t = e[0].toLowerCase();
@@ -1698,9 +1722,9 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1698
1722
  legislation: "UE",
1699
1723
  type: "texte"
1700
1724
  }) }), X = _([
1701
- Ct,
1725
+ Et,
1702
1726
  T,
1703
- Y
1727
+ Tt
1704
1728
  ], { value: (e) => ({
1705
1729
  ...e[2],
1706
1730
  ...e[0]
@@ -1711,39 +1735,21 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1711
1735
  legislation: "international",
1712
1736
  type: "texte"
1713
1737
  }
1714
- }), wt = _([x(Ve, { default: !1 }), g(_([
1715
- Je,
1738
+ }), Dt = _([x(Ve, { default: !1 }), g(_([
1739
+ I,
1716
1740
  T,
1717
- g(J, X, Z, G, Ct)
1741
+ g(Y, X, Z, K, Et)
1718
1742
  ], { value: (e) => ({
1719
1743
  ...e[2],
1720
1744
  ...e[0] === void 0 ? {} : e[0]
1721
- }) }), J, X, Z)], { value: (e, t) => {
1745
+ }) }), Y, X, Z)], { value: (e, t) => {
1722
1746
  let n = {
1723
1747
  ...e[1],
1724
1748
  ...e[0] ? { ofTheSaid: !0 } : {},
1725
1749
  position: t.position()
1726
1750
  };
1727
1751
  return t.currentText = n, n;
1728
- } }), Q = (e) => e?.replace(/\n/g, " ").replace(/ {2,}/g, " ").replace(/ \(\d+\)\.?$/, "").replace(/\.$/, ""), Tt = (e) => {
1729
- let t = e.META.META_SPEC.META_TEXTE_VERSION.DATE_DEBUT;
1730
- return t === void 0 || ["2222-02-22", "2999-01-01"].includes(t) ? e.META.META_SPEC.META_TEXTE_CHRONICLE.DATE_PUBLI : t;
1731
- }, Et = (e) => {
1732
- let t = e.META.META_SPEC.META_TEXTE_CHRONICLE.DATE_TEXTE;
1733
- if (!["2222-02-22", "2999-01-01"].includes(t)) return t;
1734
- let n = e.META.META_SPEC.META_TEXTE_VERSION.DATE_DEBUT;
1735
- if (n !== void 0 && !["2222-02-22", "2999-01-01"].includes(n)) return n;
1736
- throw Error(`Missing date signature in text ${e.META.META_COMMUN.ID}`);
1737
- }, Dt = (e) => (t, n) => {
1738
- let r = e(t), i = e(n);
1739
- if (r !== i) return r.localeCompare(i);
1740
- let a = t.META.META_COMMUN, o = a.ORIGINE, s = n.META.META_COMMUN, c = s.ORIGINE;
1741
- if (o !== c) {
1742
- if (o === "JORF") return -1;
1743
- if (c === "JORF") return 1;
1744
- }
1745
- throw Error(`TODO: Unable to sort texts ${a.ID} & ${s.ID} by date.`);
1746
- }, Ot = class {
1752
+ } }), Ot = class {
1747
1753
  label;
1748
1754
  enabled;
1749
1755
  metrics = [];
@@ -1800,26 +1806,48 @@ function At() {
1800
1806
  return e?.PJL_BUILD_TIMINGS_PROGRESS === "1" || e?.PJL_BUILD_TIMINGS_PROGRESS === "true";
1801
1807
  }
1802
1808
  //#endregion
1803
- //#region src/lib/legi/text_titles_infos.ts
1804
- var jt = "current";
1805
- function Mt(e, t, n, r) {
1809
+ //#region src/lib/textes.ts
1810
+ var Q = (e) => e?.replace(/\n/g, " ").replace(/ {2,}/g, " ").replace(/ \(\d+\)\.?$/, "").replace(/\.$/, ""), jt = (e) => {
1811
+ let t = e.META.META_SPEC.META_TEXTE_VERSION.DATE_DEBUT;
1812
+ return t === void 0 || ["2222-02-22", "2999-01-01"].includes(t) ? e.META.META_SPEC.META_TEXTE_CHRONICLE.DATE_PUBLI : t;
1813
+ }, Mt = (e) => {
1814
+ let t = e.META.META_SPEC.META_TEXTE_CHRONICLE.DATE_TEXTE;
1815
+ if (!["2222-02-22", "2999-01-01"].includes(t)) return t;
1816
+ let n = e.META.META_SPEC.META_TEXTE_VERSION.DATE_DEBUT;
1817
+ if (n !== void 0 && !["2222-02-22", "2999-01-01"].includes(n)) return n;
1818
+ throw Error(`Missing date signature in text ${e.META.META_COMMUN.ID}`);
1819
+ }, Nt = (e) => (t, n) => {
1820
+ let r = e(t), i = e(n);
1821
+ if (r !== i) return r.localeCompare(i);
1822
+ let a = t.META.META_COMMUN, o = a.ORIGINE, s = n.META.META_COMMUN, c = s.ORIGINE;
1823
+ if (o !== c) {
1824
+ if (o === "JORF") return -1;
1825
+ if (c === "JORF") return 1;
1826
+ }
1827
+ throw Error(`TODO: Unable to sort texts ${a.ID} & ${s.ID} by date.`);
1828
+ }, Pt = "current";
1829
+ function Ft(e, t, n, r) {
1806
1830
  n != null && ((e[t] ??= {})[n] ??= []).push(r);
1807
1831
  }
1808
- function Nt(e) {
1832
+ function It(e) {
1809
1833
  return ut(e).output;
1810
1834
  }
1811
- function Pt(e, t, n) {
1812
- let r = Nt(Q(t).replace(/[,()]/g, " ")).split(" ").map((e) => /^[IVX]+$/gi.test(e) ? d(e).toString() : e.toLowerCase().replace(/^no$/, "n°")), i = e;
1835
+ function Lt(e, t, n) {
1836
+ let r = It(Q(t).replace(/[,()]/g, " ")).split(" ").map((e) => /^[IVX]+$/gi.test(e) ? d(e).toString() : e.toLowerCase().replace(/^no$/, "n°")), i = e;
1813
1837
  for (let e of r) i = i[e] ??= {};
1814
1838
  i.cid === void 0 ? i.cid = n : Array.isArray(i.cid) ? i.cid.push(n) : i.cid = [i.cid, n];
1815
1839
  }
1816
- async function Ft(e, t = {}) {
1817
- It(await Lt(e, t));
1840
+ async function Rt(e, t = {}) {
1841
+ Bt(await Ht(e, t));
1818
1842
  }
1819
- function It(e) {
1820
- gt(e);
1843
+ var zt = /* @__PURE__ */ new WeakMap();
1844
+ function Bt(e) {
1845
+ vt(e), zt.set(e, _t());
1846
+ }
1847
+ function Vt(e) {
1848
+ return zt.get(e) === _t();
1821
1849
  }
1822
- async function Lt(e, { onProgress: t } = {}) {
1850
+ async function Ht(e, { onProgress: t } = {}) {
1823
1851
  let n = new Ot("legi.buildTextTitlesInfos"), r = {}, i = {}, a = {}, o = {}, s = {}, c = {}, l = {
1824
1852
  addOtherTitleWordsTreeMs: 0,
1825
1853
  addTitleRestWordsTreeMs: 0,
@@ -1893,7 +1921,7 @@ async function Lt(e, { onProgress: t } = {}) {
1893
1921
  }
1894
1922
  }), u.otherTitleCount += y.size;
1895
1923
  for (let e of b) {
1896
- let t = d("parseTitleMs", () => bt(new h(Nt(e))));
1924
+ let t = d("parseTitleMs", () => St(new h(It(e))));
1897
1925
  if (t === void 0 && g === "DECRET" && (u.fallbackDecretTitleCount++, t = {
1898
1926
  date: m ?? void 0,
1899
1927
  nature: g,
@@ -1902,16 +1930,16 @@ async function Lt(e, { onProgress: t } = {}) {
1902
1930
  type: "texte"
1903
1931
  }), t === void 0) throw Error(`Unparsable title of ${g} n° ${_ ?? ""} du ${m ?? ""} (${l}): ${e}`);
1904
1932
  if (u.parsedTitleCount++, d("indexNatureDateNumMs", () => {
1905
- Mt(s, g, t.date, l), Mt(c, g, t.num, l);
1933
+ Ft(s, g, t.date, l), Ft(c, g, t.num, l);
1906
1934
  }), t.titleRest !== void 0) {
1907
1935
  let { titleRest: e } = t;
1908
1936
  u.titleRestCount++, d("addTitleRestWordsTreeMs", () => {
1909
- Pt(i, e, l);
1937
+ Lt(i, e, l);
1910
1938
  });
1911
1939
  }
1912
1940
  }
1913
1941
  for (let e of y) d("addOtherTitleWordsTreeMs", () => {
1914
- Pt(r, e, l);
1942
+ Lt(r, e, l);
1915
1943
  });
1916
1944
  }
1917
1945
  t?.({
@@ -1923,8 +1951,8 @@ async function Lt(e, { onProgress: t } = {}) {
1923
1951
  textCidByOtherTitleWordsTree: $(r),
1924
1952
  textCidByTitleRestWordsTree: $(i),
1925
1953
  textInfosByCid: a,
1926
- textsCidsByNatureAndDate: Rt(s),
1927
- textsCidsByNatureAndNum: Rt(c)
1954
+ textsCidsByNatureAndDate: Ut(s),
1955
+ textsCidsByNatureAndNum: Ut(c)
1928
1956
  }));
1929
1957
  t?.({ phase: "compact:done" });
1930
1958
  for (let [e, t] of Object.entries(l)) n.add({
@@ -1936,7 +1964,7 @@ async function Lt(e, { onProgress: t } = {}) {
1936
1964
  ...u
1937
1965
  }), f;
1938
1966
  }
1939
- function Rt(e) {
1967
+ function Ut(e) {
1940
1968
  return Object.fromEntries(Object.entries(e).map(([e, t]) => [e, Object.fromEntries(Object.entries(t).map(([e, t]) => [e, t.length === 1 ? t[0] : t]))]));
1941
1969
  }
1942
1970
  function $(e) {
@@ -1955,7 +1983,7 @@ function $(e) {
1955
1983
  }
1956
1984
  //#endregion
1957
1985
  //#region src/lib/legi/resolver.ts
1958
- var zt = class {
1986
+ var Wt = class {
1959
1987
  getArticleHistoryInfo(e) {
1960
1988
  return Promise.resolve(void 0);
1961
1989
  }
@@ -1967,4 +1995,4 @@ var zt = class {
1967
1995
  }
1968
1996
  };
1969
1997
  //#endregion
1970
- export { Le as $, ut as A, v as At, N as B, c as Bt, at as C, oe as Ct, z as D, h as Dt, ct as E, le as Et, Qe as F, S as Ft, Ke as G, F as H, u as Ht, tt as I, te as It, He as J, qe as K, et as L, C as Lt, H as M, b as Mt, L as N, x as Nt, B as O, g as Ot, Ze as P, ee as Pt, Ie as Q, nt as R, w as Rt, Z as S, ae as St, st as T, ce as Tt, Ue as U, d as Ut, P as V, l as Vt, Ge as W, Ve as X, Be as Y, Fe as Z, q as _, xe as _t, jt as a, ve as at, X as b, T as bt, Tt as c, de as ct, bt as d, Te as dt, ze as et, Y as f, ue as ft, yt as g, me as gt, St as h, pe as ht, It as i, je as it, V as j, y as jt, lt as k, _ as kt, Et as l, ye as lt, K as m, fe as mt, Ft as n, j as nt, Ot as o, k as ot, G as p, O as pt, Je as q, Lt as r, M as rt, Q as s, be as st, zt as t, Re as tt, Dt as u, Ee as ut, _t as v, Ce as vt, ot as w, E as wt, J as x, ie as xt, wt as y, re as yt, rt as z, m as zt };
1998
+ export { Fe as $, lt as A, g as At, nt as B, w as Bt, Z as C, ie as Ct, ct as D, ce as Dt, st as E, E as Et, Ze as F, x as Ft, Ue as G, d as Gt, N as H, c as Ht, Je as I, ee as It, qe as J, Ge as K, Qe as L, S as Lt, H as M, v as Mt, U as N, y as Nt, B as O, le as Ot, R as P, b as Pt, Ve as Q, tt as R, te as Rt, Y as S, T as St, ot as T, oe as Tt, P as U, l as Ut, rt as V, m as Vt, F as W, u as Wt, He as X, I as Y, Be as Z, xt as _, pe as _t, Vt as a, M as at, Dt as b, Ce as bt, jt as c, k as ct, Ot as d, ye as dt, Ie as et, St as f, Ee as ft, wt as g, fe as gt, q as h, O as ht, Bt as i, j as it, ut as j, _ as jt, V as k, h as kt, Mt as l, be as lt, K as m, ue as mt, Rt as n, ze as nt, Pt as o, je as ot, Tt as p, Te as pt, Ke as q, Ht as r, Re as rt, Q as s, ve as st, Wt as t, Le as tt, Nt as u, de as ut, J as v, me as vt, at as w, ae as wt, X as x, re as xt, yt as y, xe as yt, et as z, C as zt };