@tricoteuses/tisseuse 0.13.2 → 0.13.4

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 (35) hide show
  1. package/README.md +76 -0
  2. package/dist/index.js +109 -100
  3. package/dist/server.js +21511 -21259
  4. package/dist/src/lib/articles.d.ts +18 -4
  5. package/dist/src/lib/cache.d.ts +2 -1
  6. package/dist/src/lib/index.d.ts +3 -3
  7. package/dist/src/lib/loaders/legifrance.d.ts +11 -9
  8. package/dist/src/lib/server/assemblee_amendment_search.d.ts +13 -0
  9. package/dist/src/lib/server/assemblee_amendment_search.test.d.ts +1 -0
  10. package/dist/src/lib/server/assemblee_document_search.d.ts +29 -0
  11. package/dist/src/lib/server/assemblee_document_search.test.d.ts +1 -0
  12. package/dist/src/lib/server/databases/index.d.ts +2 -2
  13. package/dist/src/lib/server/index.d.ts +5 -0
  14. package/dist/src/lib/server/legifrance_article_search.d.ts +23 -0
  15. package/dist/src/lib/server/legifrance_article_search.test.d.ts +1 -0
  16. package/dist/src/lib/server/parsed_bills.d.ts +1 -0
  17. package/dist/src/lib/server/senat_amendment_search.d.ts +12 -0
  18. package/dist/src/lib/server/senat_amendment_search.test.d.ts +1 -0
  19. package/dist/src/lib/server/senat_document_search.d.ts +17 -0
  20. package/dist/src/lib/server/senat_document_search.test.d.ts +1 -0
  21. package/dist/src/lib/server/senat_document_sources.d.ts +15 -0
  22. package/dist/src/lib/textes.d.ts +4 -4
  23. package/dist/src/scripts/configure_postgres_assemblee_document_triggers.d.ts +1 -0
  24. package/dist/src/scripts/configure_postgres_senat_document_triggers.d.ts +1 -0
  25. package/dist/src/scripts/index_postgres_assemblee_amendments.d.ts +1 -0
  26. package/dist/src/scripts/index_postgres_assemblee_texts.d.ts +1 -0
  27. package/dist/src/scripts/index_postgres_legifrance_articles.d.ts +1 -0
  28. package/dist/src/scripts/index_postgres_senat_amendments.d.ts +1 -0
  29. package/dist/src/scripts/index_postgres_senat_texts.d.ts +1 -0
  30. package/dist/src/scripts/profile_assemblee_document_parsing.d.ts +1 -0
  31. package/dist/src/scripts/sync_postgres_assemblee_document_content.d.ts +1 -0
  32. package/dist/src/scripts/sync_postgres_senat_document_content.d.ts +1 -0
  33. package/dist/{textes-8dVwaLo9.js → textes-BIJjrNwg.js} +2463 -2435
  34. package/package.json +16 -2
  35. /package/dist/src/{scripts/enrich_senat_documents.d.ts → lib/article_temporal_status.test.d.ts} +0 -0
package/README.md CHANGED
@@ -39,6 +39,82 @@ Create a `.env` file to set configuration variables (you can use `example.env` a
39
39
  npm run configure
40
40
  ```
41
41
 
42
+ ### Pilote de recherche plein texte Légifrance
43
+
44
+ La projection native PostgreSQL `tisseuse.legifrance_article_search` indexe une ligne par version d’article Légifrance. Elle s’appuie sur le contenu déjà enrichi par Tisseuse lorsqu’il est disponible, sinon sur le bloc textuel source.
45
+
46
+ Exécuter la commande **sur le primaire PostgreSQL avec un rôle en écriture**, après les imports ; le contenu enrichi par Tisseuse est utilisé lorsqu’il est disponible :
47
+
48
+ ```sh
49
+ npm run index:postgres:legifrance
50
+ ```
51
+
52
+ La table, son `tsvector` français, ses index GIN/B-tree et une file durable d’articles sont créés par `npm run configure`. Cette configuration installe des triggers sur les articles source et sur les contenus enrichis : toute insertion, modification ou suppression place l’identifiant de l’article dans la file, dans la même transaction que la modification source. Lors de sa première installation, le trigger place aussi le corpus existant dans la file.
53
+
54
+ La CI `tricoteuses-legal-update` exécute la configuration puis vide la file après chaque import `jorf` ou `legi` qui a effectivement changé les données. L’indexeur traite la file par lots verrouillés et ne retire un identifiant qu’après avoir mis à jour ou supprimé sa projection dans la même transaction : une interruption laisse donc les travaux non terminés rejouables. Les articles inchangés ne sont pas réécrits grâce à leur hash source.
55
+
56
+ Pour demander explicitement une réconciliation complète, par exemple après une évolution de la projection :
57
+
58
+ ```sh
59
+ npm run index:postgres:legifrance -- --all
60
+ ```
61
+
62
+ La projection, la file et ses index suivent la réplication physique PostgreSQL ; ne pas exécuter cette commande sur un standby.
63
+
64
+ Pour les articles dont Légifrance fournit une date de début sentinelle (`2222-02-22` ou `2999-01-01`), la projection utilise `getArticleDateDebut`, le repli déjà employé par Tisseuse. Cette fonction peut retrouver un repère de création ou de signature dans le contexte de l’article ; elle ne transforme pas ce repère en période de vigueur certaine. La projection conserve aussi les bornes source et les classe dans `temporal_status` : `dated`, `open_ended`, `never_effective` ou `unknown`. Les recherches du droit applicable doivent limiter les résultats aux deux premiers statuts. Après une évolution de cette projection, lancer la réconciliation explicite `--all` avant d’interpréter les dates de l’ensemble du corpus avec la nouvelle logique.
65
+
66
+ Le pilote est exposé par Exploratrice à `GET /legifrance/recherche-plein-texte?q=...`, avec les filtres facultatifs `date=YYYY-MM-DD`, `nature`, `texte_cid` et `limit`.
67
+
68
+ ### Contenus et recherche plein texte Assemblée nationale
69
+
70
+ Les documents de l’Assemblée nationale sont acquis depuis les URL institutionnelles déduites de `assemblee.documents`, puis stockés dans `tisseuse.assemblee_document_content`. Cette projection est la source de contenu d’Exploratrice : elle contient un HTML simplifié, sa version enrichie de liens lorsque disponible, le sommaire, la provenance et l’état d’acquisition. Le répertoire local `Documents/` peut servir à diagnostiquer ou à amorcer un import historique, mais n’est pas lu par le service web ou l’indexeur.
71
+
72
+ Exécuter ces commandes **sur le primaire PostgreSQL avec un rôle en écriture** :
73
+
74
+ ```sh
75
+ npm run sync:postgres:assemblee-content -- --all
76
+ npm run index:postgres:assemblee -- --all
77
+ ```
78
+
79
+ `npm run configure` doit être exécuté avec le rôle en écriture du schéma `tisseuse`. Les déclencheurs de `assemblee.documents` sont installés séparément avec `npm run configure:postgres:assemblee-triggers`, sous le rôle propriétaire du schéma `assemblee`. Les déclencheurs de `senat.dosleg_texte` et `senat.ameli_amd` le sont avec `npm run configure:postgres:senat-triggers`, sous le rôle propriétaire du schéma `senat`. Les pipelines d’import effectuent ces étapes avec les identifiants appropriés.
80
+
81
+ La première commande consomme la file des documents à acquérir, simplifier et enrichir. La seconde indexe dans `tisseuse.assemblee_text_search` les articles et les exposés des motifs comme résultats distincts. Les déclencheurs sur `assemblee.documents`, le hash du contenu et les files PostgreSQL permettent les mises à jour ciblées ; les options `--all` demandent une réconciliation complète.
82
+
83
+ Exploratrice et Moulineuse ne téléchargent jamais un document pendant une lecture. Lorsqu’un document source existe mais que son contenu n’est pas encore disponible, son état est conservé en base et l’interface doit l’indiquer au lieu de servir une copie locale périmée.
84
+
85
+ ### Première itération de recherche plein texte Sénat
86
+
87
+ La recherche Sénat indexe les articles et les exposés des motifs des états documentaires `senat.dosleg_texte`. Elle conserve la source Akoma Ntoso institutionnelle, son rendu HTML et une projection PostgreSQL par fragment ; un résultat est donc toujours associé à un `texcod`, une étape et un dossier, jamais présenté comme une version du droit en vigueur.
88
+
89
+ Après l’import des tables Sénat, exécuter ces commandes **sur le primaire PostgreSQL avec un rôle d’écriture** :
90
+
91
+ ```sh
92
+ npm run configure
93
+ npm run configure:postgres:senat-triggers
94
+ npm run sync:postgres:senat-content
95
+ npm run index:postgres:senat
96
+ npm run index:postgres:senat-amendments
97
+ ```
98
+
99
+ `sync:postgres:senat-content` vide la file d’acquisition : il résout les URL `senat.dosleg_texte.texurl` vers `https://www.senat.fr/akomantoso/<nom>.akn.xml`, valide que la réponse est bien du XML Akoma Ntoso et conserve le XML, les rendus et les erreurs dans `tisseuse.senat_document_content`. Il ne doit jamais être exécuté par une requête utilisateur, un affichage Exploratrice ou un appel MCP.
100
+
101
+ `index:postgres:senat` vide la file d’indexation et produit `tisseuse.senat_text_search` depuis le contenu déjà stocké. Il peut donc recalculer l’index après une évolution du parseur ou des métadonnées sans relire le réseau. Pour réconcilier explicitement toutes les lignes, par exemple après un import Sénat qui modifie des libellés ou des dossiers :
102
+
103
+ ```sh
104
+ npm run index:postgres:senat -- --all
105
+ ```
106
+
107
+ Pour forcer une nouvelle acquisition de l’ensemble du corpus, par exemple après une évolution du récupérateur :
108
+
109
+ ```sh
110
+ npm run sync:postgres:senat-content -- --all
111
+ npm run index:postgres:senat
112
+ ```
113
+
114
+ Les documents sans URL, externes au Sénat, sans Akoma Ntoso ou en échec de parsing ont un statut explicite et ne sont pas silencieusement remplacés par un fichier local.
115
+
116
+ `index:postgres:senat-amendments` consomme la file AMELI et produit deux fragments distincts par amendement dans `tisseuse.senat_amendment_search` : `dispositif` depuis `senat.ameli_amd.dis` et `expose_sommaire` depuis `senat.ameli_amd.obj`. Les métadonnées parlementaires restent liées à chaque résultat. L'option `--all` réconcilie l'ensemble du corpus sans téléchargement réseau.
117
+
42
118
  ## Legal reference resolver
43
119
 
44
120
  Tisseuse resolves legal references through a `LegiResolver`. The default
package/dist/index.js CHANGED
@@ -1,130 +1,139 @@
1
- import { $ as e, $t as t, A as n, An as r, At as i, B as a, Bn as o, Bt as s, C as c, Cn as l, Ct as u, D as d, Dn as f, Dt as p, E as m, En as h, Et as ee, F as te, Fn as ne, Ft as re, G as ie, Gn as ae, Gt as oe, H as se, Hn as ce, Ht as le, I as ue, In as de, It as fe, J as pe, Jt as me, K as he, Kn as g, Kt as ge, Ln as _, Lt as _e, M as ve, Mn as v, Mt as ye, N as be, Nn as xe, Nt as Se, O as Ce, On as y, Ot as b, P as we, Pn as Te, Pt as Ee, Q as De, Qt as Oe, R as x, Rn as S, Rt as C, S as w, Sn as T, St as ke, T as Ae, Tn as je, Tt as Me, U as Ne, Un as Pe, Ut as Fe, V as Ie, Vn as Le, Vt as Re, W as ze, Wn as Be, Wt as Ve, X as He, Xt as Ue, Y as We, Yt as Ge, Z as Ke, Zt as qe, _ as Je, _n as Ye, _t as Xe, a as Ze, an as Qe, at as $e, b as et, bn as tt, bt as nt, c as E, cn as rt, ct as it, d as at, dn as ot, dt as D, en as st, et as ct, f as O, fn as k, ft as A, g as lt, gn as ut, gt as dt, h as ft, hn as pt, ht as mt, i as ht, in as gt, it as _t, j as vt, jn as yt, jt as bt, k as xt, kn as j, kt as St, l as Ct, ln as wt, lt as Tt, m as Et, mn as Dt, mt as Ot, n as kt, nn as M, nt as At, o as jt, on as Mt, ot as Nt, p as Pt, pn as Ft, q as It, qt as Lt, r as Rt, rn as zt, rt as N, s as Bt, sn as Vt, st as Ht, t as Ut, tn as Wt, tt as Gt, u as Kt, un as qt, ut as Jt, v as Yt, vn as Xt, vt as Zt, w as Qt, wn as $t, wt as en, x as tn, xn as P, xt as nn, y as rn, yn as an, yt as on, z as F, zn as I, zt as sn } from "./textes-8dVwaLo9.js";
1
+ import { $ as e, $t as t, A as n, An as r, At as i, B as a, Bn as o, Bt as s, C as c, Cn as l, Ct as u, D as d, Dn as f, Dt as p, E as m, En as ee, Et as te, F as ne, Fn as re, Ft as h, G as ie, Gn as ae, Gt as oe, H as se, Hn as ce, Ht as le, I as ue, In as de, It as fe, J as pe, Jn as g, Jt as me, K as he, Kn as ge, Kt as _e, Ln as ve, Lt as ye, M as be, Mn as xe, Mt as Se, N as Ce, Nn as _, Nt as we, O as Te, On as v, Ot as y, P as Ee, Pn as De, Pt as Oe, Q as ke, Qt as b, R as x, Rn as S, Rt as C, S as w, Sn as T, St as Ae, T as je, Tn as Me, Tt as Ne, U as Pe, Un as Fe, Ut as Ie, V as Le, Vn as Re, Vt as ze, W as Be, Wn as Ve, Wt as He, X as Ue, Xt as We, Y as Ge, Yt as Ke, Z as qe, Zt as Je, _ as Ye, _n as Xe, _t as Ze, a as Qe, an as $e, at as et, b as tt, bn as nt, bt as rt, c as E, cn as it, ct as at, d as ot, dn as st, dt as D, en as ct, et as lt, f as O, fn as k, ft as A, g as ut, gn as dt, gt as ft, h as pt, hn as mt, ht, i as gt, in as _t, it as vt, j as yt, jn as j, jt as bt, k as xt, kn as M, kt as St, l as Ct, ln as wt, lt as Tt, m as Et, mn as Dt, mt as Ot, n as kt, nn as At, nt as jt, o as Mt, on as Nt, ot as Pt, p as Ft, pn as It, q as Lt, qn as Rt, qt as zt, r as Bt, rn as Vt, rt as N, s as Ht, sn as Ut, st as Wt, t as Gt, tn as Kt, tt as qt, u as Jt, un as Yt, ut as Xt, v as Zt, vn as Qt, vt as $t, w as en, wn as tn, wt as nn, x as rn, xn as an, xt as on, y as sn, yn as cn, yt as ln, z as P, zn as un, zt as dn } from "./textes-BIJjrNwg.js";
2
2
  //#region ../../node_modules/@tricoteuses/legifrance/dist/legal/index.js
3
- function cn(e, t) {
3
+ function fn(e, t) {
4
4
  if (e != null) {
5
5
  if (!Array.isArray(e)) return e;
6
6
  for (let n of e) if (n["@debut"] <= t && t <= n["@fin"]) return n;
7
7
  return e[0];
8
8
  }
9
9
  }
10
- function* L(e) {
11
- yield e, e.TM !== void 0 && (yield* L(e.TM));
12
- }
13
10
  //#endregion
14
11
  //#region src/lib/articles.ts
15
- var R = ["2222-02-22", "2999-01-01"], ln = (e) => {
12
+ var F = ["2222-02-22", "2999-01-01"];
13
+ function I(e) {
14
+ return [e, ...e.TM === void 0 ? [] : I(e.TM)];
15
+ }
16
+ function L(e) {
17
+ return e !== void 0 && F.includes(e);
18
+ }
19
+ function pn({ dateDebut: e, sourceDateDebut: t, sourceDateFin: n }) {
20
+ return t !== void 0 && n !== void 0 && !L(t) && !L(n) && n <= t ? "never_effective" : e === void 0 || L(e) ? "unknown" : n === "2999-01-01" ? "open_ended" : n === void 0 || L(n) ? "unknown" : n > e ? "dated" : "unknown";
21
+ }
22
+ var mn = (e) => {
16
23
  if (e !== void 0) for (let t = 0; t < e.length; ++t) {
17
- let n = k(new h(e, t));
24
+ let n = k(new f(e, t));
18
25
  if (typeof n == "string") return n;
19
26
  }
20
- }, z = (e) => (e === void 0 ? [] : Array.isArray(e) ? e : [e]).map((e) => ln(e["#text"])).find((e) => e !== void 0), un = (e) => {
27
+ }, R = (e) => (e === void 0 ? [] : Array.isArray(e) ? e : [e]).map((e) => mn(e["#text"])).find((e) => e !== void 0), hn = (e) => {
21
28
  let t = e.META.META_SPEC.META_ARTICLE.DATE_DEBUT;
22
- if (t !== void 0 && !R.includes(t)) return t;
23
- let n = e.CONTEXTE.TEXTE, r = n.TITRE_TXT, i = [...r === void 0 ? [] : (Array.isArray(r) ? r : [r]).map((e) => e["@debut"]), ...n.TM === void 0 ? [] : L(n.TM).map((e) => (Array.isArray(e.TITRE_TM) ? e.TITRE_TM : [e.TITRE_TM]).map((e) => e["@debut"])).toArray().flat()].filter((e) => !R.includes(e));
29
+ if (t !== void 0 && !F.includes(t)) return t;
30
+ let n = e.CONTEXTE.TEXTE, r = n.TITRE_TXT, i = [...r === void 0 ? [] : (Array.isArray(r) ? r : [r]).map((e) => e["@debut"]), ...n.TM === void 0 ? [] : I(n.TM).map((e) => (Array.isArray(e.TITRE_TM) ? e.TITRE_TM : [e.TITRE_TM]).map((e) => e["@debut"])).flat()].filter((e) => !F.includes(e));
24
31
  if (i.length > 0) return i.sort().at(-1);
25
32
  let a = n["@date_publi"];
26
- if (a !== void 0 && !R.includes(a)) return a;
33
+ if (a !== void 0 && !F.includes(a)) return a;
27
34
  let o = n["@date_signature"];
28
- if (o !== void 0 && !R.includes(o)) return o;
35
+ if (o !== void 0 && !F.includes(o)) return o;
29
36
  let s = e.META.META_SPEC.META_ARTICLE.DATE_FIN;
30
- if (s !== void 0 && !R.includes(s)) return s;
31
- let c = z(r);
37
+ if (s !== void 0 && !F.includes(s)) return s;
38
+ let c = R(r);
32
39
  if (c !== void 0) return c;
33
- if (R.includes(t ?? "")) return t;
40
+ if (F.includes(t ?? "")) return t;
34
41
  throw Error(`Missing date signature in article ${e.META.META_COMMUN.ID}`);
35
- }, B = (e) => {
42
+ }, z = (e) => {
36
43
  let t = e.META.META_SPEC.META_ARTICLE.DATE_DEBUT;
37
- if (t !== void 0 && !R.includes(t)) return t;
44
+ if (t !== void 0 && !F.includes(t)) return t;
38
45
  let n = e.CONTEXTE.TEXTE, r = n["@date_signature"];
39
- if (r !== void 0 && !R.includes(r)) return r;
46
+ if (r !== void 0 && !F.includes(r)) return r;
40
47
  let i = n["@date_publi"];
41
- if (i !== void 0 && !R.includes(i)) return i;
42
- let a = n.TITRE_TXT, o = [...a === void 0 ? [] : (Array.isArray(a) ? a : [a]).map((e) => e["@debut"]), ...n.TM === void 0 ? [] : L(n.TM).map((e) => (Array.isArray(e.TITRE_TM) ? e.TITRE_TM : [e.TITRE_TM]).map((e) => e["@debut"])).toArray().flat()].filter((e) => !R.includes(e));
48
+ if (i !== void 0 && !F.includes(i)) return i;
49
+ let a = n.TITRE_TXT, o = [...a === void 0 ? [] : (Array.isArray(a) ? a : [a]).map((e) => e["@debut"]), ...n.TM === void 0 ? [] : I(n.TM).map((e) => (Array.isArray(e.TITRE_TM) ? e.TITRE_TM : [e.TITRE_TM]).map((e) => e["@debut"])).flat()].filter((e) => !F.includes(e));
43
50
  if (o.length > 0) return o.sort().at(-1);
44
51
  let s = e.META.META_SPEC.META_ARTICLE.DATE_FIN;
45
- if (s !== void 0 && !R.includes(s)) return s;
46
- let c = z(a);
52
+ if (s !== void 0 && !F.includes(s)) return s;
53
+ let c = R(a);
47
54
  if (c !== void 0) return c;
48
- if (R.includes(t ?? "")) return t;
55
+ if (F.includes(t ?? "")) return t;
49
56
  throw Error(`Missing date signature in article ${e.META.META_COMMUN.ID}`);
50
57
  };
51
- async function dn(e, t, n, r) {
52
- let i = await _(e, t, n);
58
+ async function gn(e, t, n, r) {
59
+ let i = await S(e, t, n);
53
60
  if (i === void 0) return;
54
- let a = B(i), o = i.META.META_COMMUN.ORIGINE, s = i.CONTEXTE.TEXTE;
61
+ let a = z(i), o = i.META.META_COMMUN.ORIGINE;
62
+ if (o === "KALI") return;
63
+ let s = i.CONTEXTE.TEXTE;
55
64
  if (s.TM === void 0) return;
56
- let c = L(s.TM).toArray().reverse(), l;
65
+ let c = I(s.TM).reverse(), l;
57
66
  switch (o) {
58
67
  case "JORF":
59
68
  l = c.map((e) => e.TITRE_TM["@id"]);
60
69
  break;
61
70
  case "LEGI":
62
- l = c.map((e) => cn(e.TITRE_TM, a)?.["@id"]);
71
+ l = c.map((e) => fn(e.TITRE_TM, a)?.["@id"]);
63
72
  break;
64
73
  default: g("getOrLoadArticleSiblingId origine", o);
65
74
  }
66
- return await (r === -1 ? G : W)(e, t, n, a, i.num, l);
75
+ return await (r === -1 ? W : U)(e, t, n, a, i.num, l);
67
76
  }
68
- async function V(e, t, n, r, i, a) {
69
- let o = r[n];
70
- if (o === void 0) {
71
- let s = await I(e, t, n);
72
- if (s === void 0) return;
73
- let c = s.STRUCTURE_TA;
77
+ async function B(e, t, n, r, i, a) {
78
+ let s = r[n];
79
+ if (s === void 0) {
80
+ let c = await o(e, t, n);
74
81
  if (c === void 0) return;
82
+ let l = c.STRUCTURE_TA;
83
+ if (l === void 0) return;
75
84
  if (a === void 0) {
76
- let e = c.LIEN_ART;
85
+ let e = l.LIEN_ART;
77
86
  if (e === void 0) return;
78
87
  let t = e.findIndex((e) => e["@id"] === i);
79
88
  if (t === -1) return;
80
- r[n] = o = {
89
+ r[n] = s = {
81
90
  area: "LIEN_ART",
82
91
  index: t,
83
- sectionTa: s
92
+ sectionTa: c
84
93
  };
85
94
  } else {
86
- let e = c.LIEN_SECTION_TA;
95
+ let e = l.LIEN_SECTION_TA;
87
96
  if (e === void 0) return;
88
97
  let t = e.findIndex((e) => e["@id"] === a);
89
98
  if (t === -1) return;
90
- r[n] = o = {
99
+ r[n] = s = {
91
100
  area: "LIEN_SECTION_TA",
92
101
  index: t,
93
- sectionTa: s
102
+ sectionTa: c
94
103
  };
95
104
  }
96
105
  }
97
- return o;
106
+ return s;
98
107
  }
99
- async function H(e, t, n) {
100
- let r = await I(e, t, n);
108
+ async function V(e, t, n) {
109
+ let r = await o(e, t, n);
101
110
  if (r === void 0) return;
102
111
  let i = r.STRUCTURE_TA;
103
112
  if (i === void 0) return;
104
113
  let a = i.LIEN_ART;
105
114
  if (a !== void 0) return a[0]["@id"];
106
- let o = i.LIEN_SECTION_TA;
107
- if (o !== void 0) for (let n of o) {
108
- let r = await H(e, t, n["@id"]);
115
+ let s = i.LIEN_SECTION_TA;
116
+ if (s !== void 0) for (let n of s) {
117
+ let r = await V(e, t, n["@id"]);
109
118
  if (r !== void 0) return r;
110
119
  }
111
120
  }
112
- async function U(e, t, n) {
113
- let r = await I(e, t, n);
121
+ async function H(e, t, n) {
122
+ let r = await o(e, t, n);
114
123
  if (r === void 0) return;
115
124
  let i = r.STRUCTURE_TA;
116
125
  if (i === void 0) return;
117
126
  let a = i.LIEN_SECTION_TA;
118
127
  if (a !== void 0) for (let n of a.toReversed()) {
119
- let r = await U(e, t, n["@id"]);
128
+ let r = await H(e, t, n["@id"]);
120
129
  if (r !== void 0) return r;
121
130
  }
122
131
  return i.LIEN_ART?.at(-1)?.["@id"];
123
132
  }
124
- async function W(e, t, n, r, i, a, o = 0, s = {}, c = void 0) {
133
+ async function U(e, t, n, r, i, a, o = 0, s = {}, c = void 0) {
125
134
  let l = a[o];
126
135
  if (l === void 0) return;
127
- let u = await V(e, t, l, s, n, c);
136
+ let u = await B(e, t, l, s, n, c);
128
137
  if (u === void 0) return;
129
138
  let { area: d, index: f, sectionTa: p } = u, m = p.STRUCTURE_TA;
130
139
  switch (d) {
@@ -133,32 +142,32 @@ async function W(e, t, n, r, i, a, o = 0, s = {}, c = void 0) {
133
142
  for (let n = f + 1; n < c.length; n++) {
134
143
  let a = c[n];
135
144
  if (a["@num"] !== i) {
136
- let n = await _(e, t, a["@id"]);
137
- if (n !== void 0 && B(n) <= r) return a["@id"];
145
+ let n = await S(e, t, a["@id"]);
146
+ if (n !== void 0 && z(n) <= r) return a["@id"];
138
147
  }
139
148
  }
140
149
  let u = m.LIEN_SECTION_TA;
141
150
  if (u !== void 0) for (let n of u) {
142
- let r = await H(e, t, n["@id"]);
151
+ let r = await V(e, t, n["@id"]);
143
152
  if (r !== void 0) return r;
144
153
  }
145
- return await W(e, t, n, r, i, a, o + 1, s, l);
154
+ return await U(e, t, n, r, i, a, o + 1, s, l);
146
155
  }
147
156
  case "LIEN_SECTION_TA": {
148
157
  let c = m.LIEN_SECTION_TA;
149
158
  for (let n = f + 1; n < c.length; n++) {
150
- let r = await H(e, t, c[n]["@id"]);
159
+ let r = await V(e, t, c[n]["@id"]);
151
160
  if (r !== void 0) return r;
152
161
  }
153
- return await W(e, t, n, r, i, a, o + 1, s, l);
162
+ return await U(e, t, n, r, i, a, o + 1, s, l);
154
163
  }
155
164
  default: g("moveToNextArticleId area", d);
156
165
  }
157
166
  }
158
- async function G(e, t, n, r, i, a, o = 0, s = {}, c = void 0) {
167
+ async function W(e, t, n, r, i, a, o = 0, s = {}, c = void 0) {
159
168
  let l = a[o];
160
169
  if (l === void 0) return;
161
- let u = await V(e, t, l, s, n, c);
170
+ let u = await B(e, t, l, s, n, c);
162
171
  if (u === void 0) return;
163
172
  let { area: d, index: f, sectionTa: p } = u, m = p.STRUCTURE_TA;
164
173
  switch (d) {
@@ -167,24 +176,24 @@ async function G(e, t, n, r, i, a, o = 0, s = {}, c = void 0) {
167
176
  for (let n = f - 1; n >= 0; n--) {
168
177
  let a = c[n];
169
178
  if (a["@num"] !== i) {
170
- let n = await _(e, t, a["@id"]);
171
- if (n !== void 0 && B(n) <= r) return a["@id"];
179
+ let n = await S(e, t, a["@id"]);
180
+ if (n !== void 0 && z(n) <= r) return a["@id"];
172
181
  }
173
182
  }
174
- return await G(e, t, n, r, i, a, o + 1, s, l);
183
+ return await W(e, t, n, r, i, a, o + 1, s, l);
175
184
  }
176
185
  case "LIEN_SECTION_TA": {
177
186
  for (let n = f - 1; n >= 0; n--) {
178
- let r = await U(e, t, m.LIEN_SECTION_TA[n]["@id"]);
187
+ let r = await H(e, t, m.LIEN_SECTION_TA[n]["@id"]);
179
188
  if (r !== void 0) return r;
180
189
  }
181
190
  let c = m.LIEN_ART;
182
- return c === void 0 ? await G(e, t, n, r, i, a, o + 1, s, l) : (u.area = "LIEN_ART", u.index = c.length, await G(e, t, n, r, i, a, o, s));
191
+ return c === void 0 ? await W(e, t, n, r, i, a, o + 1, s, l) : (u.area = "LIEN_ART", u.index = c.length, await W(e, t, n, r, i, a, o, s));
183
192
  }
184
193
  default: g("moveToPreviousArticleId area", d);
185
194
  }
186
195
  }
187
- var fn = (e) => (t, n) => {
196
+ var G = (e) => (t, n) => {
188
197
  let r = e(t), i = e(n);
189
198
  if (r !== i) return r.localeCompare(i);
190
199
  let a = t.META.META_COMMUN, o = a.ORIGINE, s = n.META.META_COMMUN, c = s.ORIGINE;
@@ -203,13 +212,13 @@ var fn = (e) => (t, n) => {
203
212
  if (m <= i) return 1;
204
213
  }
205
214
  throw Error(`TODO: Unable to sort articles ${a.ID} & ${s.ID} by date.`);
206
- }, pn = new Intl.DateTimeFormat("fr-FR", { dateStyle: "long" });
207
- function mn(e) {
208
- return pn.format(new Date(e)).replace(/^1 /, "1er ");
215
+ }, _n = new Intl.DateTimeFormat("fr-FR", { dateStyle: "long" });
216
+ function vn(e) {
217
+ return _n.format(new Date(e)).replace(/^1 /, "1er ");
209
218
  }
210
219
  //#endregion
211
220
  //#region src/lib/json.ts
212
- var hn = (e, t) => t instanceof Object && !Array.isArray(t) ? Object.keys(t).sort().reduce((e, n) => (e[n] = t[n], e), {}) : t;
221
+ var yn = (e, t) => t instanceof Object && !Array.isArray(t) ? Object.keys(t).sort().reduce((e, n) => (e[n] = t[n], e), {}) : t;
213
222
  //#endregion
214
223
  //#region src/lib/markdown.ts
215
224
  function K(e) {
@@ -218,7 +227,7 @@ function K(e) {
218
227
  //#endregion
219
228
  //#region src/lib/linkers/markdown.ts
220
229
  async function q({ canutesDb: e, date: t, linkBaseUrl: n, linkType: r, previousContext: i, text: a }) {
221
- let o = N(a), s = new h(o.output);
230
+ let o = N(a), s = new f(o.output);
222
231
  s.currentArticle = i?.currentArticle, s.currentText = i?.currentText;
223
232
  let c = a, l = 0;
224
233
  for await (let i of O({
@@ -281,7 +290,7 @@ async function q({ canutesDb: e, date: t, linkBaseUrl: n, linkType: r, previousC
281
290
  }
282
291
  //#endregion
283
292
  //#region src/lib/loaders/assemblee.ts
284
- async function gn(e, t, n) {
293
+ async function bn(e, t, n) {
285
294
  let r = t.get("Document");
286
295
  r === void 0 && (r = /* @__PURE__ */ new Map(), t.set("Document", r));
287
296
  let i = r.get(n);
@@ -291,7 +300,7 @@ async function gn(e, t, n) {
291
300
  WHERE uid = ${n}
292
301
  `)[0]?.data, r.set(n, i ?? null)), i ?? void 0;
293
302
  }
294
- async function _n(e, t, n) {
303
+ async function xn(e, t, n) {
295
304
  let r = t.get("Document");
296
305
  return r === void 0 && (r = /* @__PURE__ */ new Map(), t.set("Document", r)), (await e`
297
306
  SELECT data, uid
@@ -299,7 +308,7 @@ async function _n(e, t, n) {
299
308
  WHERE data ->> 'dossierRef' = ${n}
300
309
  `).map(({ data: e, uid: t }) => (r.set(t, e ?? null), e));
301
310
  }
302
- async function vn(e, t, n) {
311
+ async function Sn(e, t, n) {
303
312
  let r = t.get("DossierParlementaire");
304
313
  r === void 0 && (r = /* @__PURE__ */ new Map(), t.set("DossierParlementaire", r));
305
314
  let i = r.get(n);
@@ -311,15 +320,15 @@ async function vn(e, t, n) {
311
320
  }
312
321
  //#endregion
313
322
  //#region src/lib/text_parsers/search_queries.ts
314
- var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i" }), Y = y([
323
+ var J = _("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i" }), Y = M([
315
324
  J,
316
- r(P, { default: "" }),
317
- f(p, b)
325
+ j(T, { default: "" }),
326
+ v(p, y)
318
327
  ], { value: (e, t) => ({
319
328
  num: e[2],
320
329
  position: t.position(),
321
330
  type: "article"
322
- }) }), X = f(v("c(?:ode|\\.)? ?civ(?:il)?", {
331
+ }) }), X = v(_("c(?:ode|\\.)? ?civ(?:il)?", {
323
332
  flags: "i",
324
333
  value: (e, t) => ({
325
334
  cid: "LEGITEXT000006070721",
@@ -328,7 +337,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
328
337
  title: "Code civil",
329
338
  type: "texte"
330
339
  })
331
- }), v("c(?:ode|\\.)? ?trav(?:ail)?", {
340
+ }), _("c(?:ode|\\.)? ?trav(?:ail)?", {
332
341
  flags: "i",
333
342
  value: (e, t) => ({
334
343
  cid: "LEGITEXT000006072050",
@@ -337,7 +346,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
337
346
  title: "Code du travail",
338
347
  type: "texte"
339
348
  })
340
- }), v("c(?:ode|\\.)? ?p[eé]n(?:al)?", {
349
+ }), _("c(?:ode|\\.)? ?p[eé]n(?:al)?", {
341
350
  flags: "i",
342
351
  value: (e, t) => ({
343
352
  cid: "LEGITEXT000006070719",
@@ -346,7 +355,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
346
355
  title: "Code pénal",
347
356
  type: "texte"
348
357
  })
349
- }), v("c(?:ode|\\.)? ?pr(?:oc(?:[eé]dure)?)? ?p[eé]n(?:al)?|cpp", {
358
+ }), _("c(?:ode|\\.)? ?pr(?:oc(?:[eé]dure)?)? ?p[eé]n(?:al)?|cpp", {
350
359
  flags: "i",
351
360
  value: (e, t) => ({
352
361
  cid: "LEGITEXT000006071154",
@@ -355,7 +364,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
355
364
  title: "Code de procédure pénale",
356
365
  type: "texte"
357
366
  })
358
- }), v("c(?:ode|\\.)? ?pr(?:oc(?:[eé]dure)?)? ?civ(?:il)?|cpc", {
367
+ }), _("c(?:ode|\\.)? ?pr(?:oc(?:[eé]dure)?)? ?civ(?:il)?|cpc", {
359
368
  flags: "i",
360
369
  value: (e, t) => ({
361
370
  cid: "LEGITEXT000006070716",
@@ -364,7 +373,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
364
373
  title: "Code de procédure civile",
365
374
  type: "texte"
366
375
  })
367
- }), v("c(?:ode|\\.)? ?s[eé]cur(?:it[eé])? ?soc(?:iale)?|css", {
376
+ }), _("c(?:ode|\\.)? ?s[eé]cur(?:it[eé])? ?soc(?:iale)?|css", {
368
377
  flags: "i",
369
378
  value: (e, t) => ({
370
379
  cid: "LEGITEXT000006073189",
@@ -373,7 +382,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
373
382
  title: "Code de la sécurité sociale",
374
383
  type: "texte"
375
384
  })
376
- }), v("c(?:ode|\\.)? ?rur(?:al)?(?: et de la p[êe]che maritime)?", {
385
+ }), _("c(?:ode|\\.)? ?rur(?:al)?(?: et de la p[êe]che maritime)?", {
377
386
  flags: "i",
378
387
  value: (e, t) => ({
379
388
  cid: "LEGITEXT000006071367",
@@ -382,7 +391,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
382
391
  title: "Code rural et de la pêche maritime",
383
392
  type: "texte"
384
393
  })
385
- }), v("c(?:ode|\\.)? ?env(?:ironnement)?", {
394
+ }), _("c(?:ode|\\.)? ?env(?:ironnement)?", {
386
395
  flags: "i",
387
396
  value: (e, t) => ({
388
397
  cid: "LEGITEXT000006074220",
@@ -391,7 +400,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
391
400
  title: "Code de l'environnement",
392
401
  type: "texte"
393
402
  })
394
- }), v("c(?:ode|\\.)? ?urb(?:anisme)?", {
403
+ }), _("c(?:ode|\\.)? ?urb(?:anisme)?", {
395
404
  flags: "i",
396
405
  value: (e, t) => ({
397
406
  cid: "LEGITEXT000006074075",
@@ -400,7 +409,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
400
409
  title: "Code de l'urbanisme",
401
410
  type: "texte"
402
411
  })
403
- }), v("c(?:ode|\\.)? ?jus(?:tice)? ?adm(?:in(?:istrative)?)?|cja", {
412
+ }), _("c(?:ode|\\.)? ?jus(?:tice)? ?adm(?:in(?:istrative)?)?|cja", {
404
413
  flags: "i",
405
414
  value: (e, t) => ({
406
415
  cid: "LEGITEXT000006070933",
@@ -409,7 +418,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
409
418
  title: "Code de justice administrative",
410
419
  type: "texte"
411
420
  })
412
- }), v("cgi", {
421
+ }), _("cgi", {
413
422
  flags: "i",
414
423
  value: (e, t) => ({
415
424
  cid: "LEGITEXT000006069577",
@@ -418,7 +427,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
418
427
  title: "Code général des impôts",
419
428
  type: "texte"
420
429
  })
421
- }), v("c(?:ode|\\.)? ?com(?:merce)?", {
430
+ }), _("c(?:ode|\\.)? ?com(?:merce)?", {
422
431
  flags: "i",
423
432
  value: (e, t) => ({
424
433
  cid: "LEGITEXT000005634379",
@@ -427,27 +436,27 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
427
436
  title: "Code de commerce",
428
437
  type: "texte"
429
438
  })
430
- })), Z = f(X, j(a, { value: (e, t) => e === void 0 ? void 0 : {
439
+ })), Z = v(X, r(a, { value: (e, t) => e === void 0 ? void 0 : {
431
440
  ...e,
432
441
  position: t.position()
433
- } }), j(F, { value: (e, t) => ({
442
+ } }), r(P, { value: (e, t) => ({
434
443
  ...e,
435
444
  position: t.position()
436
- }) })), Q = r(v(" (?:du |de la |de l'|des |de |d')?", { flags: "i" }), { default: "" }), yn = v(".+?(?=\\s*(?:du |de la |de l'|des |de |d')?\\s*(?:art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?))", {
445
+ }) })), Q = j(_(" (?:du |de la |de l'|des |de |d')?", { flags: "i" }), { default: "" }), Cn = _(".+?(?=\\s*(?:du |de la |de l'|des |de |d')?\\s*(?:art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?))", {
437
446
  flags: "i",
438
447
  value: (e, t) => ({
439
448
  type: "texte",
440
449
  title: e[0].trim(),
441
450
  position: t.position()
442
451
  })
443
- }), $ = v(".+", {
452
+ }), $ = _(".+", {
444
453
  flags: "i",
445
454
  value: (e, t) => ({
446
455
  type: "texte",
447
456
  title: e[0].trim(),
448
457
  position: t.position()
449
458
  })
450
- }), bn = f(y([
459
+ }), wn = v(M([
451
460
  Z,
452
461
  Q,
453
462
  Y
@@ -459,7 +468,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
459
468
  position: t.position(),
460
469
  type: "parent-enfant"
461
470
  };
462
- } }), y([
471
+ } }), M([
463
472
  Y,
464
473
  Q,
465
474
  Z
@@ -468,8 +477,8 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
468
477
  parent: e[2],
469
478
  position: t.position(),
470
479
  type: "parent-enfant"
471
- }) }), y([
472
- yn,
480
+ }) }), M([
481
+ Cn,
473
482
  Q,
474
483
  Y
475
484
  ], { value: (e, t) => {
@@ -480,7 +489,7 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
480
489
  position: t.position(),
481
490
  type: "parent-enfant"
482
491
  };
483
- } }), y([
492
+ } }), M([
484
493
  Y,
485
494
  Q,
486
495
  $
@@ -489,6 +498,6 @@ var J = v("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i"
489
498
  parent: e[2],
490
499
  position: t.position(),
491
500
  type: "parent-enfant"
492
- }) }), Y, Z, $), xn = q;
501
+ }) }), Y, Z, $), Tn = q;
493
502
  //#endregion
494
- export { h as TextParserContext, se as action, rn as actionDirective, qe as actionTargets, oe as addChildLeftToLastChild, Ze as addLinksOrReferencesToHtmlPage, jt as addLinksToHtml, q as addLinksToMarkdown, xn as addLinksToText, Ct as addPositionsToTableOfContentsItems, Dt as adjectifNumeralOrdinalCourt, C as adjectifTemporelSingulier, pt as adverbeMultiplicatifLatin, Ee as adverbeRelatif, f as alternatives, nn as article, ke as articles, g as assertNever, St as auPortion, i as auxPortions, he as buildArticlePortionTreeFromHtml, y as chain, Nt as chainTransformers, Ne as citation, ze as citationLigne, ie as citationSimple, Ut as cleanTexteTitle, Oe as compoundReferencesSeparators, j as convert, He as convertHtmlElementsToText, ge as createEnumerationOrBoundedInterval, Lt as createParentChildTreeFromReferences, k as date, Ke as decodeNamedHtmlEntities, De as decodeNumericHtmlEntities, u as definitionArticleDansCitation, en as definitionArticleDansProjetOuPropositionLoi, mt as definitionDivision, n as definitionTexteFrancais, Me as designationArticle, dt as designationDivision, sn as ditPluriel, s as ditSingulier, Xe as division, t as divisionTypes, Zt as divisions, Ft as duDate, P as espace, re as espaceAdverbeRelatif, st as europeanLawNatures, de as extendLoadedArticle, Et as extractActionDirectiveAstsFromText, ft as extractActionDirectivesFromHtml, lt as extractActionDirectivesFromText, Ot as extractBillDefinitions, et as extractCitationReferences, It as extractPortionSelectors, tn as extractReferences, w as extractReferencesWithOriginalTransformations, O as extractTextLinks, mn as formatLongDate, Wt as frenchLawNatures, un as getArticleDateDebut, B as getArticleDateSignature, c as getExtractedReferences, Qt as getExtractedReferencesWithOriginalTransformations, Kt as getExtractedTableOfContentsFromTextBill, _ as getOrLoadArticle, dn as getOrLoadArticleSiblingId, gn as getOrLoadDocument, _n as getOrLoadDocumentsByDossierParlementaireUid, vn as getOrLoadDossierParlementaire, S as getOrLoadJo, I as getOrLoadSectionTa, o as getOrLoadSectionsTa, Le as getOrLoadTexteVersion, ce as getOrLoadTextelr, Pe as getOrLoadTextesVersions, Be as getOrLoadTexteslr, kt as getTexteVersionDateDebut, Rt as getTexteVersionDateSignature, vt as identificationTexteEuropeen, M as internationalLawNatures, Re as introPluriel, le as introSingulier, pe as isArticlePortionStructuralStart, zt as isTextAstAtomicReference, gt as isTextAstDivision, Qe as isTextAstPortion, me as iterAtomicFirstParentReferences, Ge as iterAtomicReferences, Ue as iterIncludedReferences, Pt as iterReferenceLinks, hn as jsonReplacer, Mt as lawNatures, T as lettreAscii, Fe as liaisonPluriel, Ve as liaisonSingulier, Bt as linkTypes, ee as listeArticles, Ae as listeReferencesSeules, ae as loadArticles, Vt as localizationAdverbs, on as natureDivisionSingulier, ve as natureTexteFrancais, wt as newAssembleeObjectCache, qt as newLegifranceObjectCache, ot as newObjectCache, Ht as newReverseTransformationsMergedFromPositionsIterator, p as nomArticle, b as nomSpecialArticle, ut as nombreAsTextAstNumber, Ye as nombreCardinal, Xt as nombreRomainCardinal, an as nombreRomainOrdinal, tt as nombreRomainOu0iAsTextAstNumber, l as nonLettre, $t as numero, nt as numeroDivision, be as numeroEtOuDateTexteFrancais, bt as numeroPortion, we as numeroTexteEuropeen, te as numeroTexteFrancais, r as optional, ue as optionalEspaceDuTerritoire, yt as parseText, rt as portionTypes, ye as portions, m as reference, d as referenceSeule, v as regExp, fe as relatifPlurielPrepose, _e as relatifSingulierPrepose, xe as repeat, e as replaceHtmlPatterns, ct as replacePattern, Gt as replaceTextPatterns, Je as resolveActionDirectivesFromHtml, Yt as resolveActionDirectivesFromText, We as resolvePortionSelector, it as reversePositionsSplitFromPositions, Tt as reverseTransformationFromPosition, Jt as reverseTransformationsMergedFromPositions, D as reverseTransformedInnerFragment, A as reverseTransformedReplacement, Y as searchArticle, J as searchArticleKeyword, bn as searchQueryReference, Z as searchTexte, X as searchTexteAbbreviations, At as simplifyHtml, N as simplifyPlainText, _t as simplifyText, $e as simplifyUnicodeCharacters, fn as sortArticlesByDate, ht as sortTextesVersionsByDate, x as texte, F as texteEuropeen, a as texteFrancais, Ie as texteInternational, Se as unePortion, Ce as uniteBasePreciseeSingulier, xt as uniteBaseSingulier, E as urlFromLegalId, Te as variable, je as virguleOuEspace, at as walkTableOfContents, ne as wordsTree };
503
+ export { f as TextParserContext, se as action, sn as actionDirective, Je as actionTargets, oe as addChildLeftToLastChild, Qe as addLinksOrReferencesToHtmlPage, Mt as addLinksToHtml, q as addLinksToMarkdown, Tn as addLinksToText, Ct as addPositionsToTableOfContentsItems, Dt as adjectifNumeralCardinal, mt as adjectifNumeralOrdinalCourt, C as adjectifTemporelSingulier, dt as adverbeMultiplicatifLatin, Oe as adverbeRelatif, v as alternatives, on as article, Ae as articles, g as assertNever, St as auPortion, i as auxPortions, he as buildArticlePortionTreeFromHtml, M as chain, Pt as chainTransformers, Pe as citation, Be as citationLigne, ie as citationSimple, pn as classifyArticleTemporalStatus, Gt as cleanTexteTitle, b as compoundReferencesSeparators, r as convert, Ue as convertHtmlElementsToText, _e as createEnumerationOrBoundedInterval, zt as createParentChildTreeFromReferences, k as date, qe as decodeNamedHtmlEntities, ke as decodeNumericHtmlEntities, u as definitionArticleDansCitation, nn as definitionArticleDansProjetOuPropositionLoi, ht as definitionDivision, n as definitionTexteFrancais, Ne as designationArticle, ft as designationDivision, dn as ditPluriel, s as ditSingulier, Ze as division, t as divisionTypes, $t as divisions, It as duDate, T as espace, h as espaceAdverbeRelatif, ct as europeanLawNatures, ve as extendLoadedArticle, Et as extractActionDirectiveAstsFromText, pt as extractActionDirectivesFromHtml, ut as extractActionDirectivesFromText, Ot as extractBillDefinitions, tt as extractCitationReferences, Lt as extractPortionSelectors, rn as extractReferences, w as extractReferencesWithOriginalTransformations, O as extractTextLinks, vn as formatLongDate, Kt as frenchLawNatures, hn as getArticleDateDebut, z as getArticleDateSignature, c as getExtractedReferences, en as getExtractedReferencesWithOriginalTransformations, Jt as getExtractedTableOfContentsFromTextBill, S as getOrLoadArticle, gn as getOrLoadArticleSiblingId, bn as getOrLoadDocument, xn as getOrLoadDocumentsByDossierParlementaireUid, Sn as getOrLoadDossierParlementaire, un as getOrLoadJo, o as getOrLoadSectionTa, Re as getOrLoadSectionsTa, ce as getOrLoadTexteVersion, Fe as getOrLoadTextekali, Ve as getOrLoadTextelr, ae as getOrLoadTextesVersions, ge as getOrLoadTexteslr, kt as getTexteVersionDateDebut, Bt as getTexteVersionDateSignature, yt as identificationTexteEuropeen, At as internationalLawNatures, ze as introPluriel, le as introSingulier, pe as isArticlePortionStructuralStart, L as isLegifranceSentinelDate, Vt as isTextAstAtomicReference, _t as isTextAstDivision, $e as isTextAstPortion, me as iterAtomicFirstParentReferences, Ke as iterAtomicReferences, We as iterIncludedReferences, Ft as iterReferenceLinks, yn as jsonReplacer, Nt as lawNatures, l as lettreAscii, Ie as liaisonPluriel, He as liaisonSingulier, Ht as linkTypes, te as listeArticles, je as listeReferencesSeules, Rt as loadArticles, Ut as localizationAdverbs, ln as natureDivisionSingulier, be as natureTexteFrancais, wt as newAssembleeObjectCache, Yt as newLegifranceObjectCache, st as newObjectCache, Wt as newReverseTransformationsMergedFromPositionsIterator, p as nomArticle, y as nomSpecialArticle, Xe as nombreAsTextAstNumber, Qt as nombreCardinal, cn as nombreRomainCardinal, nt as nombreRomainOrdinal, an as nombreRomainOu0iAsTextAstNumber, tn as nonLettre, Me as numero, rt as numeroDivision, Ce as numeroEtOuDateTexteFrancais, bt as numeroPortion, Ee as numeroTexteEuropeen, ne as numeroTexteFrancais, j as optional, ue as optionalEspaceDuTerritoire, xe as parseText, it as portionTypes, Se as portions, m as reference, d as referenceSeule, _ as regExp, fe as relatifPlurielPrepose, ye as relatifSingulierPrepose, De as repeat, e as replaceHtmlPatterns, lt as replacePattern, qt as replaceTextPatterns, Ye as resolveActionDirectivesFromHtml, Zt as resolveActionDirectivesFromText, Ge as resolvePortionSelector, at as reversePositionsSplitFromPositions, Tt as reverseTransformationFromPosition, Xt as reverseTransformationsMergedFromPositions, D as reverseTransformedInnerFragment, A as reverseTransformedReplacement, Y as searchArticle, J as searchArticleKeyword, wn as searchQueryReference, Z as searchTexte, X as searchTexteAbbreviations, jt as simplifyHtml, N as simplifyPlainText, vt as simplifyText, et as simplifyUnicodeCharacters, G as sortArticlesByDate, gt as sortTextesVersionsByDate, x as texte, P as texteEuropeen, a as texteFrancais, Le as texteInternational, we as unePortion, Te as uniteBasePreciseeSingulier, xt as uniteBaseSingulier, E as urlFromLegalId, re as variable, ee as virguleOuEspace, ot as walkTableOfContents, de as wordsTree };