@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.
- package/README.md +76 -0
- package/dist/index.js +109 -100
- package/dist/server.js +21511 -21259
- package/dist/src/lib/articles.d.ts +18 -4
- package/dist/src/lib/cache.d.ts +2 -1
- package/dist/src/lib/index.d.ts +3 -3
- package/dist/src/lib/loaders/legifrance.d.ts +11 -9
- package/dist/src/lib/server/assemblee_amendment_search.d.ts +13 -0
- package/dist/src/lib/server/assemblee_amendment_search.test.d.ts +1 -0
- package/dist/src/lib/server/assemblee_document_search.d.ts +29 -0
- package/dist/src/lib/server/assemblee_document_search.test.d.ts +1 -0
- package/dist/src/lib/server/databases/index.d.ts +2 -2
- package/dist/src/lib/server/index.d.ts +5 -0
- package/dist/src/lib/server/legifrance_article_search.d.ts +23 -0
- package/dist/src/lib/server/legifrance_article_search.test.d.ts +1 -0
- package/dist/src/lib/server/parsed_bills.d.ts +1 -0
- package/dist/src/lib/server/senat_amendment_search.d.ts +12 -0
- package/dist/src/lib/server/senat_amendment_search.test.d.ts +1 -0
- package/dist/src/lib/server/senat_document_search.d.ts +17 -0
- package/dist/src/lib/server/senat_document_search.test.d.ts +1 -0
- package/dist/src/lib/server/senat_document_sources.d.ts +15 -0
- package/dist/src/lib/textes.d.ts +4 -4
- package/dist/src/scripts/configure_postgres_assemblee_document_triggers.d.ts +1 -0
- package/dist/src/scripts/configure_postgres_senat_document_triggers.d.ts +1 -0
- package/dist/src/scripts/index_postgres_assemblee_amendments.d.ts +1 -0
- package/dist/src/scripts/index_postgres_assemblee_texts.d.ts +1 -0
- package/dist/src/scripts/index_postgres_legifrance_articles.d.ts +1 -0
- package/dist/src/scripts/index_postgres_senat_amendments.d.ts +1 -0
- package/dist/src/scripts/index_postgres_senat_texts.d.ts +1 -0
- package/dist/src/scripts/profile_assemblee_document_parsing.d.ts +1 -0
- package/dist/src/scripts/sync_postgres_assemblee_document_content.d.ts +1 -0
- package/dist/src/scripts/sync_postgres_senat_document_content.d.ts +1 -0
- package/dist/{textes-8dVwaLo9.js → textes-BIJjrNwg.js} +2463 -2435
- package/package.json +16 -2
- /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
|
|
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
|
|
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
|
|
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
|
|
24
|
+
let n = k(new f(e, t));
|
|
18
25
|
if (typeof n == "string") return n;
|
|
19
26
|
}
|
|
20
|
-
},
|
|
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 && !
|
|
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 ? [] :
|
|
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 && !
|
|
33
|
+
if (a !== void 0 && !F.includes(a)) return a;
|
|
27
34
|
let o = n["@date_signature"];
|
|
28
|
-
if (o !== void 0 && !
|
|
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 && !
|
|
31
|
-
let c =
|
|
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 (
|
|
40
|
+
if (F.includes(t ?? "")) return t;
|
|
34
41
|
throw Error(`Missing date signature in article ${e.META.META_COMMUN.ID}`);
|
|
35
|
-
},
|
|
42
|
+
}, z = (e) => {
|
|
36
43
|
let t = e.META.META_SPEC.META_ARTICLE.DATE_DEBUT;
|
|
37
|
-
if (t !== void 0 && !
|
|
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 && !
|
|
46
|
+
if (r !== void 0 && !F.includes(r)) return r;
|
|
40
47
|
let i = n["@date_publi"];
|
|
41
|
-
if (i !== void 0 && !
|
|
42
|
-
let a = n.TITRE_TXT, o = [...a === void 0 ? [] : (Array.isArray(a) ? a : [a]).map((e) => e["@debut"]), ...n.TM === void 0 ? [] :
|
|
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 && !
|
|
46
|
-
let c =
|
|
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 (
|
|
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
|
|
52
|
-
let i = await
|
|
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 =
|
|
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 =
|
|
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) =>
|
|
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 ?
|
|
75
|
+
return await (r === -1 ? W : U)(e, t, n, a, i.num, l);
|
|
67
76
|
}
|
|
68
|
-
async function
|
|
69
|
-
let
|
|
70
|
-
if (
|
|
71
|
-
let
|
|
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 =
|
|
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] =
|
|
89
|
+
r[n] = s = {
|
|
81
90
|
area: "LIEN_ART",
|
|
82
91
|
index: t,
|
|
83
|
-
sectionTa:
|
|
92
|
+
sectionTa: c
|
|
84
93
|
};
|
|
85
94
|
} else {
|
|
86
|
-
let e =
|
|
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] =
|
|
99
|
+
r[n] = s = {
|
|
91
100
|
area: "LIEN_SECTION_TA",
|
|
92
101
|
index: t,
|
|
93
|
-
sectionTa:
|
|
102
|
+
sectionTa: c
|
|
94
103
|
};
|
|
95
104
|
}
|
|
96
105
|
}
|
|
97
|
-
return
|
|
106
|
+
return s;
|
|
98
107
|
}
|
|
99
|
-
async function
|
|
100
|
-
let r = await
|
|
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
|
|
107
|
-
if (
|
|
108
|
-
let r = await
|
|
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
|
|
113
|
-
let r = await
|
|
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
|
|
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
|
|
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
|
|
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
|
|
137
|
-
if (n !== void 0 &&
|
|
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
|
|
151
|
+
let r = await V(e, t, n["@id"]);
|
|
143
152
|
if (r !== void 0) return r;
|
|
144
153
|
}
|
|
145
|
-
return await
|
|
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
|
|
159
|
+
let r = await V(e, t, c[n]["@id"]);
|
|
151
160
|
if (r !== void 0) return r;
|
|
152
161
|
}
|
|
153
|
-
return await
|
|
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
|
|
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
|
|
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
|
|
171
|
-
if (n !== void 0 &&
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
},
|
|
207
|
-
function
|
|
208
|
-
return
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
323
|
+
var J = _("art(?:icle|icl|ic|i|s)?\\.?|al(?:inéa|inea|in|i)?\\.?", { flags: "i" }), Y = M([
|
|
315
324
|
J,
|
|
316
|
-
|
|
317
|
-
|
|
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 =
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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 =
|
|
439
|
+
})), Z = v(X, r(a, { value: (e, t) => e === void 0 ? void 0 : {
|
|
431
440
|
...e,
|
|
432
441
|
position: t.position()
|
|
433
|
-
} }),
|
|
442
|
+
} }), r(P, { value: (e, t) => ({
|
|
434
443
|
...e,
|
|
435
444
|
position: t.position()
|
|
436
|
-
}) })), Q =
|
|
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
|
-
}), $ =
|
|
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
|
-
}),
|
|
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
|
-
} }),
|
|
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
|
-
}) }),
|
|
472
|
-
|
|
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
|
-
} }),
|
|
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, $),
|
|
501
|
+
}) }), Y, Z, $), Tn = q;
|
|
493
502
|
//#endregion
|
|
494
|
-
export {
|
|
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 };
|