@tricoteuses/tisseuse 0.20.0 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +113 -0
  2. package/dist/{html-C07GdZ0O.js → html-tp0cMUmA.js} +4170 -3730
  3. package/dist/index.js +136 -135
  4. package/dist/{resolver-4v_fWVor.js → resolver-CzmDH4S3.js} +138 -130
  5. package/dist/server-f-legi.js +73 -92
  6. package/dist/server.js +831 -793
  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 +3 -1
  10. package/dist/src/lib/extractors/portion_references_cpu.test.d.ts +1 -0
  11. package/dist/src/lib/extractors/references.d.ts +12 -8
  12. package/dist/src/lib/f_legi/resolver.d.ts +0 -2
  13. package/dist/src/lib/index.d.ts +2 -1
  14. package/dist/src/lib/legi/canutes_article_preload.test.d.ts +1 -0
  15. package/dist/src/lib/legi/canutes_candidates.test.d.ts +1 -0
  16. package/dist/src/lib/legi/canutes_resolver.d.ts +5 -4
  17. package/dist/src/lib/legi/canutes_resolver_cache.test.d.ts +1 -0
  18. package/dist/src/lib/legi/canutes_root_cid_index.integration.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 +5 -3
  27. package/dist/src/lib/linkers/reference-mode.test.d.ts +1 -0
  28. package/dist/src/lib/server/akn_rendering.test.d.ts +1 -0
  29. package/dist/src/lib/server/bill_action_resolver_invariance.test.d.ts +1 -0
  30. package/dist/src/lib/server/bill_action_target_fixtures.d.ts +7 -0
  31. package/dist/src/lib/server/bill_citation_anaphora.test.d.ts +1 -0
  32. package/dist/src/lib/server/bill_comparison.d.ts +42 -0
  33. package/dist/src/lib/server/bill_comparison.test.d.ts +1 -0
  34. package/dist/src/lib/server/bill_target_scope.test.d.ts +1 -0
  35. package/dist/src/lib/server/canutes_legacy_candidates.d.ts +19 -0
  36. package/dist/src/lib/server/canutes_only_compatibility.test.d.ts +1 -0
  37. package/dist/src/lib/server/databases/canutes_root_cid_index.d.ts +11 -0
  38. package/dist/src/lib/server/databases/canutes_text_titles_cache.d.ts +8 -0
  39. package/dist/src/lib/server/flegi_profiling.d.ts +14 -0
  40. package/dist/src/lib/server/flegi_profiling.test.d.ts +1 -0
  41. package/dist/src/lib/server/masquage-typesense.test.d.ts +1 -0
  42. package/dist/src/lib/server/masquage_typesense.d.ts +36 -0
  43. package/dist/src/lib/server/sql_profiling.d.ts +30 -0
  44. package/dist/src/lib/server/sql_profiling.test.d.ts +1 -0
  45. package/dist/src/lib/text_parsers/action_words.d.ts +2 -0
  46. package/dist/src/lib/text_parsers/action_words.test.d.ts +1 -0
  47. package/dist/src/lib/text_parsers/texts.d.ts +1 -0
  48. package/dist/src/scripts/compare_legi_bills.d.ts +1 -0
  49. package/dist/src/scripts/configure_postgres_legi_resolver.d.ts +1 -0
  50. package/dist/src/scripts/configure_postgres_root_cid_index.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 +9 -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,7 +905,7 @@ function L(e, t) {
905
905
  };
906
906
  };
907
907
  }
908
- function Ye(e) {
908
+ function Je(e) {
909
909
  return (t) => {
910
910
  let n = [], r = [], i = 0, a = 0;
911
911
  for (let { start: o, stop: s } of e) {
@@ -925,16 +925,16 @@ function Ye(e) {
925
925
  };
926
926
  };
927
927
  }
928
- function* R(e) {
928
+ function* z(e) {
929
929
  if (e.transformations === void 0) yield e;
930
- else for (let t of e.transformations) yield* R(t);
930
+ else for (let t of e.transformations) yield* z(t);
931
931
  }
932
- function* Xe(e) {
933
- let t = [...R(e)].reverse(), n = { position: {
932
+ function* Ye(e) {
933
+ let t = [...z(e)].reverse(), n = { position: {
934
934
  start: 0,
935
935
  stop: 0
936
936
  } }, r = t.map((e) => {
937
- let t = Ze(e);
937
+ let t = Xe(e);
938
938
  return t.next(n), t;
939
939
  }), i = yield n;
940
940
  for (; i !== void 0;) {
@@ -948,7 +948,7 @@ function* Xe(e) {
948
948
  }
949
949
  for (let e of r) e.next(void 0);
950
950
  }
951
- function* Ze(e) {
951
+ function* Xe(e) {
952
952
  let t = yield { position: {
953
953
  start: 0,
954
954
  stop: 0
@@ -987,7 +987,7 @@ function* Ze(e) {
987
987
  if (i + 1 < d) {
988
988
  let r = !1, o = n[i + 1];
989
989
  if (o.openingTag !== void 0 && o.outputIndex + o.outputLength < e.start) {
990
- let e = o.openingTag.match(I);
990
+ let e = o.openingTag.match(L);
991
991
  if (e !== null) {
992
992
  let t = e[1], n = t.toUpperCase();
993
993
  [
@@ -1012,7 +1012,7 @@ function* Ze(e) {
1012
1012
  if (i + 1 > f) {
1013
1013
  let a = !1, s = n[r], l = n[i + 1];
1014
1014
  if (s.openingTag !== void 0 && e.stop < l.outputIndex) {
1015
- let e = s.openingTag.match(I);
1015
+ let e = s.openingTag.match(L);
1016
1016
  if (e !== null) {
1017
1017
  let t = e[1], n = t.toUpperCase();
1018
1018
  [
@@ -1052,19 +1052,19 @@ function* Ze(e) {
1052
1052
  }).filter(([, e]) => e !== void 0));
1053
1053
  }
1054
1054
  }
1055
- function Qe(e) {
1056
- let t = Xe(e);
1055
+ function Ze(e) {
1056
+ let t = Ye(e);
1057
1057
  return t.next({
1058
1058
  start: 0,
1059
1059
  stop: 0
1060
1060
  }), t;
1061
1061
  }
1062
- function $e(e, t) {
1062
+ function Qe(e, t) {
1063
1063
  let n = t.map((e) => [e]);
1064
- for (let { sourceMap: t } of [...R(e)].reverse()) n = et(t, n);
1064
+ for (let { sourceMap: t } of [...z(e)].reverse()) n = $e(t, n);
1065
1065
  return n;
1066
1066
  }
1067
- function et(e, t) {
1067
+ function $e(e, t) {
1068
1068
  let n = [];
1069
1069
  e = [
1070
1070
  {
@@ -1129,16 +1129,16 @@ function et(e, t) {
1129
1129
  }
1130
1130
  return n;
1131
1131
  }
1132
- function tt(e, t) {
1133
- let n = Qe(e);
1134
- return t.map((e) => nt(n, e));
1132
+ function et(e, t) {
1133
+ let n = Ze(e);
1134
+ return t.map((e) => tt(n, e));
1135
1135
  }
1136
- function nt(e, t) {
1136
+ function tt(e, t) {
1137
1137
  let n = e.next(t);
1138
1138
  if (n.done) throw Error(`Reverse transformation of position failed: ${t}`);
1139
1139
  return n.value;
1140
1140
  }
1141
- var rt = (e, t, n = 0) => t === void 0 ? e : (t.innerPrefix ?? "") + e.slice(t.position.start + n, t.position.stop + n) + (t.innerSuffix ?? ""), it = (e, t) => (e.outerPrefix ?? "") + t + (e.outerSuffix ?? ""), at = {
1141
+ var nt = (e, t, n = 0) => t === void 0 ? e : (t.innerPrefix ?? "") + e.slice(t.position.start + n, t.position.stop + n) + (t.innerSuffix ?? ""), rt = (e, t) => (e.outerPrefix ?? "") + t + (e.outerSuffix ?? ""), it = {
1142
1142
  amp: "&",
1143
1143
  apos: "'",
1144
1144
  asymp: "≈",
@@ -1156,7 +1156,7 @@ var rt = (e, t, n = 0) => t === void 0 ? e : (t.innerPrefix ?? "") + e.slice(t.p
1156
1156
  reg: "®",
1157
1157
  trade: "™"
1158
1158
  };
1159
- function ot({ removeAWithHref: e } = {}) {
1159
+ function at({ removeAWithHref: e } = {}) {
1160
1160
  return (t) => {
1161
1161
  let n = 0, r = 0, i = [], a = [], o = [], s = "Conversion des éléments HTML en texte";
1162
1162
  for (; n < t.length;) {
@@ -1174,7 +1174,7 @@ function ot({ removeAWithHref: e } = {}) {
1174
1174
  sourceMap: a,
1175
1175
  title: s
1176
1176
  };
1177
- 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);
1178
1178
  if (p === null) {
1179
1179
  i.push(t.slice(n, l + 1).replace(/[\n\r]/g, " ")), n = l + 1;
1180
1180
  continue;
@@ -1351,12 +1351,12 @@ function ot({ removeAWithHref: e } = {}) {
1351
1351
  };
1352
1352
  };
1353
1353
  }
1354
- function st(e) {
1354
+ function ot(e) {
1355
1355
  let t = 0, n = [];
1356
1356
  return {
1357
1357
  input: e,
1358
1358
  output: e.replace(/&(amp|apos|asymp|copy|deg|euro|gt|lt|mdash|nbsp|ndash|ne|pound|quot|reg|trade);/gi, (e, r, i) => {
1359
- let a = at[r.toLowerCase()];
1359
+ let a = it[r.toLowerCase()];
1360
1360
  return n.push({
1361
1361
  inputIndex: i,
1362
1362
  inputLength: e.length,
@@ -1368,7 +1368,7 @@ function st(e) {
1368
1368
  title: "Décodage des entités HTML nommées"
1369
1369
  };
1370
1370
  }
1371
- function ct(e) {
1371
+ function st(e) {
1372
1372
  let t = 0, n = [];
1373
1373
  return {
1374
1374
  input: e,
@@ -1385,14 +1385,14 @@ function ct(e) {
1385
1385
  title: "Décodage des entités HTML numériques"
1386
1386
  };
1387
1387
  }
1388
- function lt(e) {
1388
+ function ct(e) {
1389
1389
  let t = [], n = e;
1390
1390
  for (let [e, r] of [
1391
1391
  [/<!--.*?-->/gs, ""],
1392
1392
  [/<script.*?>.*?<\/script>/gis, ""],
1393
1393
  [/<style.*?>.*?<\/style>/gis, ""]
1394
1394
  ]) {
1395
- let i = z(e, r)(n);
1395
+ let i = B(e, r)(n);
1396
1396
  i.sourceMap.length !== 0 && (t.push(i), n = i.output);
1397
1397
  }
1398
1398
  return {
@@ -1402,7 +1402,7 @@ function lt(e) {
1402
1402
  transformations: t
1403
1403
  };
1404
1404
  }
1405
- function z(e, t) {
1405
+ function B(e, t) {
1406
1406
  return (n) => {
1407
1407
  let r = [], i = n.replaceAll(e, (e, ...n) => {
1408
1408
  let i = n.at(-2), a = t;
@@ -1422,14 +1422,14 @@ function z(e, t) {
1422
1422
  };
1423
1423
  };
1424
1424
  }
1425
- function B(e) {
1425
+ function V(e) {
1426
1426
  let t = [], n = e;
1427
1427
  for (let [e, r] of [
1428
1428
  [/(\sn°)([^\s])/gi, "$1 $2"],
1429
1429
  [/[\u200E\u200F]/g, ""],
1430
1430
  [/[\uF031-\uF039\uF041-\uF054\uF061-\uF06A]/g, ""]
1431
1431
  ]) {
1432
- let i = z(e, r)(n);
1432
+ let i = B(e, r)(n);
1433
1433
  i.sourceMap.length !== 0 && (t.push(i), n = i.output);
1434
1434
  }
1435
1435
  return {
@@ -1439,25 +1439,25 @@ function B(e) {
1439
1439
  transformations: t
1440
1440
  };
1441
1441
  }
1442
- function ut({ removeAWithHref: e } = {}) {
1443
- return (t) => L("Simplification du HTML", [
1442
+ function lt({ removeAWithHref: e } = {}) {
1443
+ return (t) => R("Simplification du HTML", [
1444
+ ot,
1444
1445
  st,
1445
1446
  ct,
1446
- lt,
1447
- B,
1448
- H,
1449
- ot({ removeAWithHref: e }),
1450
- V
1447
+ V,
1448
+ U,
1449
+ at({ removeAWithHref: e }),
1450
+ H
1451
1451
  ])(t);
1452
1452
  }
1453
- function dt(e) {
1454
- return L("Simplification du texte brut", [
1455
- B,
1456
- H,
1457
- V
1453
+ function ut(e) {
1454
+ return R("Simplification du texte brut", [
1455
+ V,
1456
+ U,
1457
+ H
1458
1458
  ])(e);
1459
1459
  }
1460
- function V(e) {
1460
+ function H(e) {
1461
1461
  let t = [], n = e;
1462
1462
  for (let [e, r, i] of [
1463
1463
  [
@@ -1515,8 +1515,8 @@ function V(e) {
1515
1515
  transformations: t
1516
1516
  };
1517
1517
  }
1518
- function H(e) {
1519
- return L("Simplification des caractères unicodes", [
1518
+ function U(e) {
1519
+ return R("Simplification des caractères unicodes", [
1520
1520
  ["À", "À"],
1521
1521
  ["Â", "Â"],
1522
1522
  ["Ä", "Ä"],
@@ -1551,21 +1551,25 @@ function H(e) {
1551
1551
  [/[‐‑–·]/g, "-"],
1552
1552
  [/’/g, "'"],
1553
1553
  ["İ", "I"]
1554
- ].map(([e, t]) => z(e, t)))(e);
1554
+ ].map(([e, t]) => B(e, t)))(e);
1555
1555
  }
1556
1556
  //#endregion
1557
1557
  //#region src/lib/text_parsers/texts.ts
1558
- var U = {}, ft = {}, pt = {}, mt = {}, ht = {}, gt = {};
1559
- function _t(e) {
1558
+ var W = {}, dt = {}, ft = {}, pt = {}, mt = {}, ht = {}, gt = 0;
1559
+ function _t() {
1560
+ return gt;
1561
+ }
1562
+ function vt(e) {
1563
+ gt++;
1560
1564
  let t = e ?? {};
1561
- W(ft, t.codeTitleVersionsByCid ?? {}), W(pt, t.textCidByOtherTitleWordsTree ?? {}), W(mt, 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) ? {
1562
1566
  nature: t[0],
1563
1567
  title: t[1]
1564
- } : t]))), W(ht, t.textsCidsByNatureAndDate ?? {}), W(gt, t.textsCidsByNatureAndNum ?? {});
1568
+ } : t]))), G(mt, t.textsCidsByNatureAndDate ?? {}), G(ht, t.textsCidsByNatureAndNum ?? {});
1565
1569
  }
1566
- function vt(e, t) {
1570
+ function yt(e, t) {
1567
1571
  let n = (e) => {
1568
- let n = ft[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];
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];
1569
1573
  return [
1570
1574
  +(r.length > 0),
1571
1575
  i?.fin ?? "",
@@ -1577,12 +1581,12 @@ function vt(e, t) {
1577
1581
  return i[0] - r[0] || i[1].localeCompare(r[1]) || i[2].localeCompare(r[2]) || e.localeCompare(t);
1578
1582
  });
1579
1583
  }
1580
- function W(e, t) {
1584
+ function G(e, t) {
1581
1585
  let n = e;
1582
1586
  for (let e of Object.keys(n)) delete n[e];
1583
1587
  Object.assign(e, t);
1584
1588
  }
1585
- var yt = (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", {
1586
1590
  flags: "i",
1587
1591
  value: (e) => {
1588
1592
  let t = e[0].toLowerCase();
@@ -1591,7 +1595,7 @@ var yt = (e) => Array.isArray(e) ? e : [e], G = v(g(S("Constitution", { value: "
1591
1595
  })), { value: (e) => ({
1592
1596
  nature: e,
1593
1597
  type: "texte"
1594
- }) }), bt = _([x(E, { default: null }), S(String.raw`\d+(-\d+)?`)], { value: (e) => e[1] }), K = g(M, _([bt, 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] } : {
1595
1599
  ...e[1],
1596
1600
  num: e[0]
1597
1601
  } }));
@@ -1603,11 +1607,11 @@ S("décision( du Conseil constitutionnel)? (?<numero>[-/0-9A-Z]+ (QPC|DC|AN|D|EL
1603
1607
  type: "décision du Conseil constitutionnel"
1604
1608
  })
1605
1609
  });
1606
- var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", { flags: "i" })), { default: null }), xt = g(_([
1607
- G,
1608
- q,
1609
- T,
1610
+ var J = x(g(S(" de la République française", { flags: "i" }), S(" du pays", { flags: "i" })), { default: null }), St = g(_([
1610
1611
  K,
1612
+ J,
1613
+ T,
1614
+ q,
1611
1615
  S(".*")
1612
1616
  ], { value: (e) => {
1613
1617
  let t = {
@@ -1616,10 +1620,10 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1616
1620
  }, n = e[4].trim() || void 0;
1617
1621
  return n !== void 0 && (t.titleRest = n), t;
1618
1622
  } }), _([
1619
- G,
1623
+ K,
1620
1624
  S("[^()]+"),
1621
1625
  S(String.raw`\( ?`),
1622
- K,
1626
+ q,
1623
1627
  S(String.raw` ?\)`)
1624
1628
  ], { value: (e) => {
1625
1629
  let t = {
@@ -1636,14 +1640,14 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1636
1640
  })), S(".+")], { value: (e) => {
1637
1641
  let t = { ...e[0] }, n = e[1].trim() || void 0;
1638
1642
  return n !== void 0 && (t.titleRest = n), t;
1639
- } })), J = g(_([
1640
- G,
1641
- q,
1642
- x([T, K], {
1643
+ } })), Y = g(_([
1644
+ K,
1645
+ J,
1646
+ x([T, q], {
1643
1647
  default: null,
1644
1648
  value: (e) => e[1]
1645
1649
  }),
1646
- x([T, v(w(mt), { value: (e, t) => ({
1650
+ x([T, v(w(pt), { value: (e, t) => ({
1647
1651
  ...e,
1648
1652
  titleRest: t.text()
1649
1653
  }) })], {
@@ -1652,7 +1656,7 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1652
1656
  }),
1653
1657
  x([
1654
1658
  S(String.raw` ?\( ?`),
1655
- K,
1659
+ q,
1656
1660
  S(String.raw` ?\)`)
1657
1661
  ], {
1658
1662
  default: null,
@@ -1664,24 +1668,24 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1664
1668
  if (a === void 0 && r === void 0 && i === void 0) return;
1665
1669
  let s = /* @__PURE__ */ new Set();
1666
1670
  if (r !== void 0) {
1667
- let e = ht[t]?.[r];
1671
+ let e = mt[t]?.[r];
1668
1672
  if (e !== void 0) {
1669
- let t = yt(e);
1673
+ let t = bt(e);
1670
1674
  s = s.size === 0 ? new Set(t) : s.intersection(new Set(t));
1671
1675
  }
1672
1676
  }
1673
1677
  if (i !== void 0) {
1674
- let e = gt[t]?.[i];
1678
+ let e = ht[t]?.[i];
1675
1679
  if (e !== void 0) {
1676
- let t = yt(e);
1680
+ let t = bt(e);
1677
1681
  s = s.size === 0 ? new Set(t) : s.intersection(new Set(t));
1678
1682
  }
1679
1683
  }
1680
1684
  if (a !== void 0) {
1681
1685
  let e = Array.isArray(a) ? a : [a];
1682
- 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)));
1683
1687
  }
1684
- 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];
1685
1689
  return Object.fromEntries(Object.entries({
1686
1690
  cid: c,
1687
1691
  candidateCids: t === "CODE" && s.size > 1 ? [...s] : void 0,
@@ -1692,22 +1696,22 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1692
1696
  titleRest: o,
1693
1697
  type: n
1694
1698
  }).filter(([, e]) => e !== void 0));
1695
- } }), _([w(pt), x(We, { default: "" })], { value: (e) => {
1696
- let { cid: t } = e[0], n = typeof t == "string" ? U[t] : void 0;
1699
+ } }), _([w(ft), x(We, { default: "" })], { value: (e) => {
1700
+ let { cid: t } = e[0], n = typeof t == "string" ? W[t] : void 0;
1697
1701
  return Object.fromEntries(Object.entries({
1698
1702
  cid: t,
1699
1703
  ...n ?? {},
1700
1704
  type: "texte"
1701
1705
  }).filter(([, e]) => e !== void 0));
1702
- } })), St = _([
1706
+ } })), Ct = _([
1703
1707
  O,
1704
1708
  S("/"),
1705
1709
  O,
1706
1710
  x(S(" ?/ ?(CEE?)", { value: (e) => e[1] }), { default: "" })
1707
- ], { value: (e) => `${e[0]}/${e[2]}${e[3] ? `/${e[3]}` : ""}` }), Y = _([x(E, { default: "" }), St], { value: (e) => e[1] }), Ct = g(_([Y, 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] } : {
1708
1712
  ...e[1],
1709
1713
  num: e[0]
1710
- } }), M), wt = _([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)?", {
1711
1715
  flags: "i",
1712
1716
  value: (e) => {
1713
1717
  let t = e[0].toLowerCase();
@@ -1718,9 +1722,9 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1718
1722
  legislation: "UE",
1719
1723
  type: "texte"
1720
1724
  }) }), X = _([
1721
- wt,
1725
+ Et,
1722
1726
  T,
1723
- Ct
1727
+ Tt
1724
1728
  ], { value: (e) => ({
1725
1729
  ...e[2],
1726
1730
  ...e[0]
@@ -1731,48 +1735,30 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1731
1735
  legislation: "international",
1732
1736
  type: "texte"
1733
1737
  }
1734
- }), Tt = _([x(Ve, { default: !1 }), g(_([
1735
- Je,
1738
+ }), Dt = _([x(Ve, { default: !1 }), g(_([
1739
+ I,
1736
1740
  T,
1737
- g(J, X, Z, G, wt)
1741
+ g(Y, X, Z, K, Et)
1738
1742
  ], { value: (e) => ({
1739
1743
  ...e[2],
1740
1744
  ...e[0] === void 0 ? {} : e[0]
1741
- }) }), J, X, Z)], { value: (e, t) => {
1745
+ }) }), Y, X, Z)], { value: (e, t) => {
1742
1746
  let n = {
1743
1747
  ...e[1],
1744
1748
  ...e[0] ? { ofTheSaid: !0 } : {},
1745
1749
  position: t.position()
1746
1750
  };
1747
1751
  return t.currentText = n, n;
1748
- } }), Q = (e) => e?.replace(/\n/g, " ").replace(/ {2,}/g, " ").replace(/ \(\d+\)\.?$/, "").replace(/\.$/, ""), Et = (e) => {
1749
- let t = e.META.META_SPEC.META_TEXTE_VERSION.DATE_DEBUT;
1750
- return t === void 0 || ["2222-02-22", "2999-01-01"].includes(t) ? e.META.META_SPEC.META_TEXTE_CHRONICLE.DATE_PUBLI : t;
1751
- }, Dt = (e) => {
1752
- let t = e.META.META_SPEC.META_TEXTE_CHRONICLE.DATE_TEXTE;
1753
- if (!["2222-02-22", "2999-01-01"].includes(t)) return t;
1754
- let n = e.META.META_SPEC.META_TEXTE_VERSION.DATE_DEBUT;
1755
- if (n !== void 0 && !["2222-02-22", "2999-01-01"].includes(n)) return n;
1756
- throw Error(`Missing date signature in text ${e.META.META_COMMUN.ID}`);
1757
- }, Ot = (e) => (t, n) => {
1758
- let r = e(t), i = e(n);
1759
- if (r !== i) return r.localeCompare(i);
1760
- let a = t.META.META_COMMUN, o = a.ORIGINE, s = n.META.META_COMMUN, c = s.ORIGINE;
1761
- if (o !== c) {
1762
- if (o === "JORF") return -1;
1763
- if (c === "JORF") return 1;
1764
- }
1765
- throw Error(`TODO: Unable to sort texts ${a.ID} & ${s.ID} by date.`);
1766
- }, kt = class {
1752
+ } }), Ot = class {
1767
1753
  label;
1768
1754
  enabled;
1769
1755
  metrics = [];
1770
1756
  startedAt = performance.now();
1771
- constructor(e, t = At()) {
1757
+ constructor(e, t = kt()) {
1772
1758
  this.label = e, this.enabled = t;
1773
1759
  }
1774
1760
  add(e) {
1775
- this.enabled && (this.metrics.push(e), jt() && console.info(`[timing:${this.label}]`, JSON.stringify(e)));
1761
+ this.enabled && (this.metrics.push(e), At() && console.info(`[timing:${this.label}]`, JSON.stringify(e)));
1776
1762
  }
1777
1763
  async time(e, t, n) {
1778
1764
  if (!this.enabled) return t();
@@ -1811,36 +1797,58 @@ var q = x(g(S(" de la République française", { flags: "i" }), S(" du pays", {
1811
1797
  }, null, 2));
1812
1798
  }
1813
1799
  };
1814
- function At() {
1800
+ function kt() {
1815
1801
  let e = globalThis.process?.env;
1816
1802
  return e?.PJL_BUILD_TIMINGS === "1" || e?.PJL_BUILD_TIMINGS === "true";
1817
1803
  }
1818
- function jt() {
1804
+ function At() {
1819
1805
  let e = globalThis.process?.env;
1820
1806
  return e?.PJL_BUILD_TIMINGS_PROGRESS === "1" || e?.PJL_BUILD_TIMINGS_PROGRESS === "true";
1821
1807
  }
1822
1808
  //#endregion
1823
- //#region src/lib/legi/text_titles_infos.ts
1824
- var Mt = "current";
1825
- function Nt(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) {
1826
1830
  n != null && ((e[t] ??= {})[n] ??= []).push(r);
1827
1831
  }
1828
- function Pt(e) {
1829
- return dt(e).output;
1832
+ function It(e) {
1833
+ return ut(e).output;
1830
1834
  }
1831
- function Ft(e, t, n) {
1832
- let r = Pt(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;
1833
1837
  for (let e of r) i = i[e] ??= {};
1834
1838
  i.cid === void 0 ? i.cid = n : Array.isArray(i.cid) ? i.cid.push(n) : i.cid = [i.cid, n];
1835
1839
  }
1836
- async function It(e, t = {}) {
1837
- Lt(await Rt(e, t));
1840
+ async function Rt(e, t = {}) {
1841
+ Bt(await Ht(e, t));
1842
+ }
1843
+ var zt = /* @__PURE__ */ new WeakMap();
1844
+ function Bt(e) {
1845
+ vt(e), zt.set(e, _t());
1838
1846
  }
1839
- function Lt(e) {
1840
- _t(e);
1847
+ function Vt(e) {
1848
+ return zt.get(e) === _t();
1841
1849
  }
1842
- async function Rt(e, { onProgress: t } = {}) {
1843
- let n = new kt("legi.buildTextTitlesInfos"), r = {}, i = {}, a = {}, o = {}, s = {}, c = {}, l = {
1850
+ async function Ht(e, { onProgress: t } = {}) {
1851
+ let n = new Ot("legi.buildTextTitlesInfos"), r = {}, i = {}, a = {}, o = {}, s = {}, c = {}, l = {
1844
1852
  addOtherTitleWordsTreeMs: 0,
1845
1853
  addTitleRestWordsTreeMs: 0,
1846
1854
  cleanTitleMs: 0,
@@ -1913,7 +1921,7 @@ async function Rt(e, { onProgress: t } = {}) {
1913
1921
  }
1914
1922
  }), u.otherTitleCount += y.size;
1915
1923
  for (let e of b) {
1916
- let t = d("parseTitleMs", () => xt(new h(Pt(e))));
1924
+ let t = d("parseTitleMs", () => St(new h(It(e))));
1917
1925
  if (t === void 0 && g === "DECRET" && (u.fallbackDecretTitleCount++, t = {
1918
1926
  date: m ?? void 0,
1919
1927
  nature: g,
@@ -1922,16 +1930,16 @@ async function Rt(e, { onProgress: t } = {}) {
1922
1930
  type: "texte"
1923
1931
  }), t === void 0) throw Error(`Unparsable title of ${g} n° ${_ ?? ""} du ${m ?? ""} (${l}): ${e}`);
1924
1932
  if (u.parsedTitleCount++, d("indexNatureDateNumMs", () => {
1925
- Nt(s, g, t.date, l), Nt(c, g, t.num, l);
1933
+ Ft(s, g, t.date, l), Ft(c, g, t.num, l);
1926
1934
  }), t.titleRest !== void 0) {
1927
1935
  let { titleRest: e } = t;
1928
1936
  u.titleRestCount++, d("addTitleRestWordsTreeMs", () => {
1929
- Ft(i, e, l);
1937
+ Lt(i, e, l);
1930
1938
  });
1931
1939
  }
1932
1940
  }
1933
1941
  for (let e of y) d("addOtherTitleWordsTreeMs", () => {
1934
- Ft(r, e, l);
1942
+ Lt(r, e, l);
1935
1943
  });
1936
1944
  }
1937
1945
  t?.({
@@ -1943,8 +1951,8 @@ async function Rt(e, { onProgress: t } = {}) {
1943
1951
  textCidByOtherTitleWordsTree: $(r),
1944
1952
  textCidByTitleRestWordsTree: $(i),
1945
1953
  textInfosByCid: a,
1946
- textsCidsByNatureAndDate: zt(s),
1947
- textsCidsByNatureAndNum: zt(c)
1954
+ textsCidsByNatureAndDate: Ut(s),
1955
+ textsCidsByNatureAndNum: Ut(c)
1948
1956
  }));
1949
1957
  t?.({ phase: "compact:done" });
1950
1958
  for (let [e, t] of Object.entries(l)) n.add({
@@ -1956,7 +1964,7 @@ async function Rt(e, { onProgress: t } = {}) {
1956
1964
  ...u
1957
1965
  }), f;
1958
1966
  }
1959
- function zt(e) {
1967
+ function Ut(e) {
1960
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]))]));
1961
1969
  }
1962
1970
  function $(e) {
@@ -1975,7 +1983,7 @@ function $(e) {
1975
1983
  }
1976
1984
  //#endregion
1977
1985
  //#region src/lib/legi/resolver.ts
1978
- var Bt = class {
1986
+ var Wt = class {
1979
1987
  getArticleHistoryInfo(e) {
1980
1988
  return Promise.resolve(void 0);
1981
1989
  }
@@ -1987,4 +1995,4 @@ var Bt = class {
1987
1995
  }
1988
1996
  };
1989
1997
  //#endregion
1990
- export { Ie as $, dt as A, _ as At, it as B, m as Bt, ot as C, ae as Ct, z as D, le as Dt, lt as E, ce as Et, Ye as F, ee as Ft, Ge as G, P as H, l as Ht, $e as I, S as It, Je as J, Ke as K, nt as L, te as Lt, H as M, y as Mt, L as N, b as Nt, B as O, h as Ot, Qe as P, x as Pt, Fe as Q, tt as R, C as Rt, Z as S, ie as St, ct as T, E as Tt, F as U, u as Ut, N as V, c as Vt, Ue as W, d as Wt, Be as X, He as Y, Ve as Z, q as _, me as _t, Mt as a, je as at, X as b, re as bt, Et as c, be as ct, xt as d, Ee as dt, Le as et, Ct as f, Te as ft, bt as g, pe as gt, Y as h, fe as ht, Lt as i, M as it, V as j, v as jt, ut as k, g as kt, Dt as l, de as lt, K as m, O as mt, It as n, Re as nt, kt as o, ve as ot, G as p, ue as pt, qe as q, Rt as r, j as rt, Q as s, k as st, Bt as t, ze as tt, Ot as u, ye as ut, vt as v, xe as vt, st as w, oe as wt, J as x, T as xt, Tt as y, Ce as yt, rt as z, w 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 };