euparliamentmonitor 0.9.19 → 0.9.21

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 (158) hide show
  1. package/README.md +2 -2
  2. package/package.json +4 -3
  3. package/scripts/aggregator/editorial-brief-resolver.d.ts +38 -0
  4. package/scripts/aggregator/editorial-brief-resolver.js +32 -0
  5. package/scripts/aggregator/generator/render-one.js +35 -0
  6. package/scripts/aggregator/html/localize-body.d.ts +32 -0
  7. package/scripts/aggregator/html/localize-body.js +69 -0
  8. package/scripts/aggregator/html/shell.d.ts +10 -0
  9. package/scripts/aggregator/html/shell.js +11 -1
  10. package/scripts/aggregator/markdown-renderer.d.ts +23 -24
  11. package/scripts/aggregator/markdown-renderer.js +39 -25
  12. package/scripts/aggregator/metadata/artifact-highlight.d.ts +15 -22
  13. package/scripts/aggregator/metadata/artifact-highlight.js +14 -230
  14. package/scripts/aggregator/metadata/artifact-walker.d.ts +34 -0
  15. package/scripts/aggregator/metadata/artifact-walker.js +177 -0
  16. package/scripts/aggregator/metadata/editorial-highlight.d.ts +15 -0
  17. package/scripts/aggregator/metadata/editorial-highlight.js +53 -0
  18. package/scripts/aggregator/metadata/priority-finding-highlight.js +7 -2
  19. package/scripts/aggregator/metadata/resolve-helpers.js +9 -3
  20. package/scripts/aggregator/metadata/text-utils.js +7 -0
  21. package/scripts/aggregator/metadata/translated-sibling.d.ts +23 -0
  22. package/scripts/aggregator/metadata/translated-sibling.js +39 -0
  23. package/scripts/aggregator/reader-guide/builder.js +3 -1
  24. package/scripts/aggregator/reader-guide/labels.d.ts +7 -0
  25. package/scripts/aggregator/reader-guide/labels.js +22 -0
  26. package/scripts/aggregator/reader-intelligence-guide.d.ts +1 -1
  27. package/scripts/aggregator/reader-intelligence-guide.js +1 -1
  28. package/scripts/aggregator/seo-entity-extractor.d.ts +45 -0
  29. package/scripts/aggregator/seo-entity-extractor.js +211 -0
  30. package/scripts/constants/articles/breaking-strings-central.d.ts +8 -0
  31. package/scripts/constants/articles/breaking-strings-central.js +105 -0
  32. package/scripts/constants/articles/breaking-strings-east.d.ts +8 -0
  33. package/scripts/constants/articles/breaking-strings-east.js +203 -0
  34. package/scripts/constants/articles/breaking-strings-nordic.d.ts +8 -0
  35. package/scripts/constants/articles/breaking-strings-nordic.js +252 -0
  36. package/scripts/constants/articles/breaking-strings-west.d.ts +8 -0
  37. package/scripts/constants/articles/breaking-strings-west.js +154 -0
  38. package/scripts/constants/articles/breaking.d.ts +0 -1
  39. package/scripts/constants/articles/breaking.js +9 -6
  40. package/scripts/constants/articles/dashboard/ar.d.ts +8 -0
  41. package/scripts/constants/articles/dashboard/ar.js +71 -0
  42. package/scripts/constants/articles/dashboard/da.d.ts +8 -0
  43. package/scripts/constants/articles/dashboard/da.js +71 -0
  44. package/scripts/constants/articles/dashboard/de.d.ts +8 -0
  45. package/scripts/constants/articles/dashboard/de.js +71 -0
  46. package/scripts/constants/articles/dashboard/en.d.ts +8 -0
  47. package/scripts/constants/articles/dashboard/en.js +71 -0
  48. package/scripts/constants/articles/dashboard/es.d.ts +8 -0
  49. package/scripts/constants/articles/dashboard/es.js +71 -0
  50. package/scripts/constants/articles/dashboard/fi.d.ts +8 -0
  51. package/scripts/constants/articles/dashboard/fi.js +71 -0
  52. package/scripts/constants/articles/dashboard/fr.d.ts +8 -0
  53. package/scripts/constants/articles/dashboard/fr.js +71 -0
  54. package/scripts/constants/articles/dashboard/he.d.ts +8 -0
  55. package/scripts/constants/articles/dashboard/he.js +71 -0
  56. package/scripts/constants/articles/dashboard/index.d.ts +7 -0
  57. package/scripts/constants/articles/dashboard/index.js +33 -0
  58. package/scripts/constants/articles/dashboard/ja.d.ts +8 -0
  59. package/scripts/constants/articles/dashboard/ja.js +71 -0
  60. package/scripts/constants/articles/dashboard/ko.d.ts +8 -0
  61. package/scripts/constants/articles/dashboard/ko.js +71 -0
  62. package/scripts/constants/articles/dashboard/nl.d.ts +8 -0
  63. package/scripts/constants/articles/dashboard/nl.js +71 -0
  64. package/scripts/constants/articles/dashboard/no.d.ts +8 -0
  65. package/scripts/constants/articles/dashboard/no.js +71 -0
  66. package/scripts/constants/articles/dashboard/sv.d.ts +8 -0
  67. package/scripts/constants/articles/dashboard/sv.js +71 -0
  68. package/scripts/constants/articles/dashboard/zh.d.ts +8 -0
  69. package/scripts/constants/articles/dashboard/zh.js +71 -0
  70. package/scripts/constants/articles/dashboard.d.ts +7 -2
  71. package/scripts/constants/articles/dashboard.js +4 -8
  72. package/scripts/constants/articles/deep-analysis/ar.d.ts +8 -0
  73. package/scripts/constants/articles/deep-analysis/ar.js +75 -0
  74. package/scripts/constants/articles/deep-analysis/da.d.ts +8 -0
  75. package/scripts/constants/articles/deep-analysis/da.js +75 -0
  76. package/scripts/constants/articles/deep-analysis/de.d.ts +8 -0
  77. package/scripts/constants/articles/deep-analysis/de.js +75 -0
  78. package/scripts/constants/articles/deep-analysis/en.d.ts +8 -0
  79. package/scripts/constants/articles/deep-analysis/en.js +75 -0
  80. package/scripts/constants/articles/deep-analysis/es.d.ts +8 -0
  81. package/scripts/constants/articles/deep-analysis/es.js +75 -0
  82. package/scripts/constants/articles/deep-analysis/fi.d.ts +8 -0
  83. package/scripts/constants/articles/deep-analysis/fi.js +75 -0
  84. package/scripts/constants/articles/deep-analysis/fr.d.ts +8 -0
  85. package/scripts/constants/articles/deep-analysis/fr.js +75 -0
  86. package/scripts/constants/articles/deep-analysis/he.d.ts +8 -0
  87. package/scripts/constants/articles/deep-analysis/he.js +75 -0
  88. package/scripts/constants/articles/deep-analysis/index.d.ts +7 -0
  89. package/scripts/constants/articles/deep-analysis/index.js +33 -0
  90. package/scripts/constants/articles/deep-analysis/ja.d.ts +8 -0
  91. package/scripts/constants/articles/deep-analysis/ja.js +75 -0
  92. package/scripts/constants/articles/deep-analysis/ko.d.ts +8 -0
  93. package/scripts/constants/articles/deep-analysis/ko.js +75 -0
  94. package/scripts/constants/articles/deep-analysis/nl.d.ts +8 -0
  95. package/scripts/constants/articles/deep-analysis/nl.js +75 -0
  96. package/scripts/constants/articles/deep-analysis/no.d.ts +8 -0
  97. package/scripts/constants/articles/deep-analysis/no.js +75 -0
  98. package/scripts/constants/articles/deep-analysis/sv.d.ts +8 -0
  99. package/scripts/constants/articles/deep-analysis/sv.js +75 -0
  100. package/scripts/constants/articles/deep-analysis/zh.d.ts +8 -0
  101. package/scripts/constants/articles/deep-analysis/zh.js +75 -0
  102. package/scripts/constants/articles/deep-analysis.d.ts +4 -3
  103. package/scripts/constants/articles/deep-analysis.js +3 -7
  104. package/scripts/constants/articles/localized-keywords-central.d.ts +8 -0
  105. package/scripts/constants/articles/localized-keywords-central.js +118 -0
  106. package/scripts/constants/articles/localized-keywords-nordic.d.ts +8 -0
  107. package/scripts/constants/articles/localized-keywords-nordic.js +303 -0
  108. package/scripts/constants/articles/localized-keywords.js +4 -2
  109. package/scripts/constants/articles/swot-builder-central.d.ts +8 -0
  110. package/scripts/constants/articles/swot-builder-central.js +90 -0
  111. package/scripts/constants/articles/swot-builder-nordic.d.ts +8 -0
  112. package/scripts/constants/articles/swot-builder-nordic.js +216 -0
  113. package/scripts/constants/articles/swot.js +4 -2
  114. package/scripts/constants/articles/week-ahead-eu.d.ts +12 -0
  115. package/scripts/constants/articles/week-ahead-eu.js +278 -0
  116. package/scripts/constants/articles/week-ahead-global.d.ts +12 -0
  117. package/scripts/constants/articles/week-ahead-global.js +278 -0
  118. package/scripts/constants/articles/week-ahead.d.ts +4 -7
  119. package/scripts/constants/articles/week-ahead.js +11 -535
  120. package/scripts/constants/world-bank/category-map-analysis.d.ts +9 -0
  121. package/scripts/constants/world-bank/category-map-analysis.js +204 -0
  122. package/scripts/constants/world-bank/category-map-legislative.d.ts +9 -0
  123. package/scripts/constants/world-bank/category-map-legislative.js +130 -0
  124. package/scripts/constants/world-bank/category-map-periodic.d.ts +9 -0
  125. package/scripts/constants/world-bank/category-map-periodic.js +176 -0
  126. package/scripts/constants/world-bank/category-map.d.ts +3 -26
  127. package/scripts/constants/world-bank/category-map.js +8 -501
  128. package/scripts/discover-untranslated-briefs.js +123 -4
  129. package/scripts/generators/news-indexes/per-language.js +21 -7
  130. package/scripts/generators/political-intelligence/html.js +39 -8
  131. package/scripts/generators/sitemap/html.js +25 -7
  132. package/scripts/mcp/ep/client.d.ts +0 -1
  133. package/scripts/mcp/ep/client.js +0 -65
  134. package/scripts/mcp/ep/error-classifier.d.ts +2 -2
  135. package/scripts/mcp/ep/error-classifier.js +2 -2
  136. package/scripts/mcp/ep/tools-list.d.ts +13 -0
  137. package/scripts/mcp/ep/tools-list.js +79 -0
  138. package/scripts/mcp/ep-mcp-client.d.ts +1 -0
  139. package/scripts/mcp/ep-mcp-client.js +1 -0
  140. package/scripts/mcp/imf/client.d.ts +3 -64
  141. package/scripts/mcp/imf/client.js +18 -207
  142. package/scripts/mcp/imf/http-transport.d.ts +92 -0
  143. package/scripts/mcp/imf/http-transport.js +232 -0
  144. package/scripts/mcp/transport/connection.d.ts +25 -53
  145. package/scripts/mcp/transport/connection.js +90 -250
  146. package/scripts/mcp/transport/process.d.ts +62 -0
  147. package/scripts/mcp/transport/process.js +147 -0
  148. package/scripts/mcp/transport/reconnect.d.ts +73 -0
  149. package/scripts/mcp/transport/reconnect.js +96 -0
  150. package/scripts/validate-brief-translations.js +122 -6
  151. package/scripts/constants/articles/breaking-strings-eu.d.ts +0 -7
  152. package/scripts/constants/articles/breaking-strings-global.d.ts +0 -7
  153. package/scripts/constants/articles/dashboard-builder-eu.d.ts +0 -7
  154. package/scripts/constants/articles/dashboard-builder-global.d.ts +0 -7
  155. package/scripts/constants/articles/deep-analysis-strings-eu.d.ts +0 -7
  156. package/scripts/constants/articles/deep-analysis-strings-global.d.ts +0 -7
  157. package/scripts/constants/articles/localized-keywords-eu.d.ts +0 -7
  158. package/scripts/constants/articles/swot-builder-eu.d.ts +0 -7
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @module Constants/Articles/LocalizedKeywordsCentral
3
+ * @description Central localized-keyword arrays.
4
+ */
5
+ import type { LanguageMap } from '../../types/index.js';
6
+ /** Central localized keyword arrays */
7
+ export declare const LOCALIZED_KEYWORDS_CENTRAL: Pick<LanguageMap<Record<string, readonly string[]>>, 'de' | 'fr'>;
8
+ //# sourceMappingURL=localized-keywords-central.d.ts.map
@@ -0,0 +1,118 @@
1
+ // SPDX-FileCopyrightText: 2024-2026 Hack23 AB
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /* eslint-disable sonarjs/no-duplicate-string -- Intentional keyword duplication across language groups */
4
+ import { ArticleCategory } from '../../types/index.js';
5
+ /** Central localized keyword arrays */
6
+ export const LOCALIZED_KEYWORDS_CENTRAL = {
7
+ de: {
8
+ [ArticleCategory.WEEK_AHEAD]: [
9
+ 'EU-Parlament',
10
+ 'Woche voraus',
11
+ 'Ausschusssitzungen',
12
+ 'Plenardebatte',
13
+ 'Europäisches Parlament',
14
+ 'Gesetzgebung',
15
+ ],
16
+ [ArticleCategory.MONTH_AHEAD]: [
17
+ 'EU-Parlament',
18
+ 'Monat voraus',
19
+ 'Gesetzgebungsagenda',
20
+ 'Europäisches Parlament',
21
+ 'Plenarsitzung',
22
+ ],
23
+ [ArticleCategory.BREAKING_NEWS]: [
24
+ 'EU-Parlament',
25
+ 'Eilmeldung',
26
+ 'Europäisches Parlament',
27
+ 'Gesetzgebung',
28
+ 'Abstimmung',
29
+ ],
30
+ [ArticleCategory.COMMITTEE_REPORTS]: [
31
+ 'EU-Parlament',
32
+ 'Ausschusstätigkeit',
33
+ 'Europäisches Parlament',
34
+ 'Ausschussbericht',
35
+ 'Gesetzgebung',
36
+ ],
37
+ [ArticleCategory.PROPOSITIONS]: [
38
+ 'EU-Parlament',
39
+ 'Gesetzgebungsverfahren',
40
+ 'Europäisches Parlament',
41
+ 'Vorschlag',
42
+ 'Verordnung',
43
+ ],
44
+ [ArticleCategory.MOTIONS]: [
45
+ 'EU-Parlament',
46
+ 'Plenar-Abstimmungen',
47
+ 'Entschließungen',
48
+ 'Europäisches Parlament',
49
+ 'Abstimmungsprotokoll',
50
+ ],
51
+ [ArticleCategory.WEEK_IN_REVIEW]: [
52
+ 'EU-Parlament',
53
+ 'Wochenrückblick',
54
+ 'Europäisches Parlament',
55
+ 'Zusammenfassung',
56
+ 'Gesetzgebung',
57
+ ],
58
+ [ArticleCategory.MONTH_IN_REVIEW]: [
59
+ 'EU-Parlament',
60
+ 'Monatsrückblick',
61
+ 'Europäisches Parlament',
62
+ 'Zusammenfassung',
63
+ 'Gesetzgebungsübersicht',
64
+ ],
65
+ },
66
+ fr: {
67
+ [ArticleCategory.WEEK_AHEAD]: [
68
+ 'Parlement européen',
69
+ 'semaine à venir',
70
+ 'réunions de commission',
71
+ 'débat en plénière',
72
+ 'législation',
73
+ ],
74
+ [ArticleCategory.MONTH_AHEAD]: [
75
+ 'Parlement européen',
76
+ 'mois à venir',
77
+ 'agenda législatif',
78
+ 'session plénière',
79
+ ],
80
+ [ArticleCategory.BREAKING_NEWS]: [
81
+ 'Parlement européen',
82
+ 'dernières nouvelles',
83
+ 'législation',
84
+ 'vote en plénière',
85
+ ],
86
+ [ArticleCategory.COMMITTEE_REPORTS]: [
87
+ 'Parlement européen',
88
+ 'travaux des commissions',
89
+ 'rapport de commission',
90
+ 'législation',
91
+ ],
92
+ [ArticleCategory.PROPOSITIONS]: [
93
+ 'Parlement européen',
94
+ 'procédures législatives',
95
+ 'proposition',
96
+ 'règlement',
97
+ ],
98
+ [ArticleCategory.MOTIONS]: [
99
+ 'Parlement européen',
100
+ 'votes en plénière',
101
+ 'résolutions',
102
+ 'protocole de vote',
103
+ ],
104
+ [ArticleCategory.WEEK_IN_REVIEW]: [
105
+ 'Parlement européen',
106
+ 'bilan de la semaine',
107
+ 'résumé',
108
+ 'législation',
109
+ ],
110
+ [ArticleCategory.MONTH_IN_REVIEW]: [
111
+ 'Parlement européen',
112
+ 'bilan du mois',
113
+ 'résumé',
114
+ 'revue législative',
115
+ ],
116
+ },
117
+ };
118
+ //# sourceMappingURL=localized-keywords-central.js.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @module Constants/Articles/LocalizedKeywordsNordic
3
+ * @description Nordic localized-keyword arrays.
4
+ */
5
+ import type { LanguageMap } from '../../types/index.js';
6
+ /** Nordic localized keyword arrays */
7
+ export declare const LOCALIZED_KEYWORDS_NORDIC: Pick<LanguageMap<Record<string, readonly string[]>>, 'en' | 'sv' | 'da' | 'no' | 'fi'>;
8
+ //# sourceMappingURL=localized-keywords-nordic.d.ts.map
@@ -0,0 +1,303 @@
1
+ // SPDX-FileCopyrightText: 2024-2026 Hack23 AB
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /* eslint-disable sonarjs/no-duplicate-string -- Intentional keyword duplication across language groups */
4
+ import { ArticleCategory } from '../../types/index.js';
5
+ /** Nordic localized keyword arrays */
6
+ export const LOCALIZED_KEYWORDS_NORDIC = {
7
+ en: {
8
+ [ArticleCategory.WEEK_AHEAD]: [
9
+ 'EU Parliament',
10
+ 'week ahead',
11
+ 'committee meetings',
12
+ 'plenary debate',
13
+ 'European Parliament',
14
+ 'legislation',
15
+ ],
16
+ [ArticleCategory.MONTH_AHEAD]: [
17
+ 'EU Parliament',
18
+ 'month ahead',
19
+ 'legislative agenda',
20
+ 'European Parliament',
21
+ 'plenary session',
22
+ ],
23
+ [ArticleCategory.BREAKING_NEWS]: [
24
+ 'EU Parliament',
25
+ 'breaking news',
26
+ 'European Parliament',
27
+ 'legislation',
28
+ 'plenary vote',
29
+ ],
30
+ [ArticleCategory.COMMITTEE_REPORTS]: [
31
+ 'EU Parliament',
32
+ 'committee activity',
33
+ 'European Parliament',
34
+ 'committee report',
35
+ 'legislation',
36
+ ],
37
+ [ArticleCategory.PROPOSITIONS]: [
38
+ 'EU Parliament',
39
+ 'legislative procedures',
40
+ 'European Parliament',
41
+ 'proposal',
42
+ 'regulation',
43
+ ],
44
+ [ArticleCategory.MOTIONS]: [
45
+ 'EU Parliament',
46
+ 'plenary votes',
47
+ 'resolutions',
48
+ 'European Parliament',
49
+ 'voting record',
50
+ ],
51
+ [ArticleCategory.WEEK_IN_REVIEW]: [
52
+ 'EU Parliament',
53
+ 'week in review',
54
+ 'European Parliament',
55
+ 'summary',
56
+ 'legislation',
57
+ ],
58
+ [ArticleCategory.MONTH_IN_REVIEW]: [
59
+ 'EU Parliament',
60
+ 'month in review',
61
+ 'European Parliament',
62
+ 'summary',
63
+ 'legislative review',
64
+ ],
65
+ },
66
+ sv: {
67
+ [ArticleCategory.WEEK_AHEAD]: [
68
+ 'EU-parlamentet',
69
+ 'veckan framåt',
70
+ 'utskottsmöten',
71
+ 'plenardebatt',
72
+ 'Europaparlamentet',
73
+ 'lagstiftning',
74
+ ],
75
+ [ArticleCategory.MONTH_AHEAD]: [
76
+ 'EU-parlamentet',
77
+ 'månaden framåt',
78
+ 'lagstiftningsagenda',
79
+ 'Europaparlamentet',
80
+ 'plenarsession',
81
+ ],
82
+ [ArticleCategory.BREAKING_NEWS]: [
83
+ 'EU-parlamentet',
84
+ 'senaste nytt',
85
+ 'Europaparlamentet',
86
+ 'lagstiftning',
87
+ 'omröstning',
88
+ ],
89
+ [ArticleCategory.COMMITTEE_REPORTS]: [
90
+ 'EU-parlamentet',
91
+ 'utskottsverksamhet',
92
+ 'Europaparlamentet',
93
+ 'utskottsrapport',
94
+ 'lagstiftning',
95
+ ],
96
+ [ArticleCategory.PROPOSITIONS]: [
97
+ 'EU-parlamentet',
98
+ 'lagstiftningsförfaranden',
99
+ 'Europaparlamentet',
100
+ 'förslag',
101
+ 'förordning',
102
+ ],
103
+ [ArticleCategory.MOTIONS]: [
104
+ 'EU-parlamentet',
105
+ 'omröstningar',
106
+ 'resolutioner',
107
+ 'Europaparlamentet',
108
+ 'röstprotokoll',
109
+ ],
110
+ [ArticleCategory.WEEK_IN_REVIEW]: [
111
+ 'EU-parlamentet',
112
+ 'veckans sammanfattning',
113
+ 'Europaparlamentet',
114
+ 'sammanfattning',
115
+ 'lagstiftning',
116
+ ],
117
+ [ArticleCategory.MONTH_IN_REVIEW]: [
118
+ 'EU-parlamentet',
119
+ 'månadens sammanfattning',
120
+ 'Europaparlamentet',
121
+ 'sammanfattning',
122
+ 'lagstiftningsöversikt',
123
+ ],
124
+ },
125
+ da: {
126
+ [ArticleCategory.WEEK_AHEAD]: [
127
+ 'EU-Parlamentet',
128
+ 'ugen fremover',
129
+ 'udvalgsmøder',
130
+ 'plenardebat',
131
+ 'Europa-Parlamentet',
132
+ 'lovgivning',
133
+ ],
134
+ [ArticleCategory.MONTH_AHEAD]: [
135
+ 'EU-Parlamentet',
136
+ 'måneden fremover',
137
+ 'lovgivningsdagsorden',
138
+ 'Europa-Parlamentet',
139
+ 'plenarsamling',
140
+ ],
141
+ [ArticleCategory.BREAKING_NEWS]: [
142
+ 'EU-Parlamentet',
143
+ 'seneste nyt',
144
+ 'Europa-Parlamentet',
145
+ 'lovgivning',
146
+ 'afstemning',
147
+ ],
148
+ [ArticleCategory.COMMITTEE_REPORTS]: [
149
+ 'EU-Parlamentet',
150
+ 'udvalgsaktivitet',
151
+ 'Europa-Parlamentet',
152
+ 'udvalgsrapport',
153
+ 'lovgivning',
154
+ ],
155
+ [ArticleCategory.PROPOSITIONS]: [
156
+ 'EU-Parlamentet',
157
+ 'lovgivningsprocedurer',
158
+ 'Europa-Parlamentet',
159
+ 'forslag',
160
+ 'forordning',
161
+ ],
162
+ [ArticleCategory.MOTIONS]: [
163
+ 'EU-Parlamentet',
164
+ 'plenar-afstemninger',
165
+ 'beslutninger',
166
+ 'Europa-Parlamentet',
167
+ 'stemmeoversigt',
168
+ ],
169
+ [ArticleCategory.WEEK_IN_REVIEW]: [
170
+ 'EU-Parlamentet',
171
+ 'ugens overblik',
172
+ 'Europa-Parlamentet',
173
+ 'sammenfatning',
174
+ 'lovgivning',
175
+ ],
176
+ [ArticleCategory.MONTH_IN_REVIEW]: [
177
+ 'EU-Parlamentet',
178
+ 'månedens overblik',
179
+ 'Europa-Parlamentet',
180
+ 'sammenfatning',
181
+ 'lovgivningsoversigt',
182
+ ],
183
+ },
184
+ no: {
185
+ [ArticleCategory.WEEK_AHEAD]: [
186
+ 'EU-parlamentet',
187
+ 'uken fremover',
188
+ 'komitémøter',
189
+ 'plenardebatt',
190
+ 'Europaparlamentet',
191
+ 'lovgivning',
192
+ ],
193
+ [ArticleCategory.MONTH_AHEAD]: [
194
+ 'EU-parlamentet',
195
+ 'måneden fremover',
196
+ 'lovgivningsagenda',
197
+ 'Europaparlamentet',
198
+ 'plenarsesjon',
199
+ ],
200
+ [ArticleCategory.BREAKING_NEWS]: [
201
+ 'EU-parlamentet',
202
+ 'siste nytt',
203
+ 'Europaparlamentet',
204
+ 'lovgivning',
205
+ 'avstemning',
206
+ ],
207
+ [ArticleCategory.COMMITTEE_REPORTS]: [
208
+ 'EU-parlamentet',
209
+ 'komitéaktivitet',
210
+ 'Europaparlamentet',
211
+ 'komitérapport',
212
+ 'lovgivning',
213
+ ],
214
+ [ArticleCategory.PROPOSITIONS]: [
215
+ 'EU-parlamentet',
216
+ 'lovgivningsprosedyrer',
217
+ 'Europaparlamentet',
218
+ 'forslag',
219
+ 'forordning',
220
+ ],
221
+ [ArticleCategory.MOTIONS]: [
222
+ 'EU-parlamentet',
223
+ 'plenaravstemninger',
224
+ 'vedtak',
225
+ 'Europaparlamentet',
226
+ 'stemmeprotokoll',
227
+ ],
228
+ [ArticleCategory.WEEK_IN_REVIEW]: [
229
+ 'EU-parlamentet',
230
+ 'ukens oppsummering',
231
+ 'Europaparlamentet',
232
+ 'sammendrag',
233
+ 'lovgivning',
234
+ ],
235
+ [ArticleCategory.MONTH_IN_REVIEW]: [
236
+ 'EU-parlamentet',
237
+ 'månedens oppsummering',
238
+ 'Europaparlamentet',
239
+ 'sammendrag',
240
+ 'lovgivningsoversikt',
241
+ ],
242
+ },
243
+ fi: {
244
+ [ArticleCategory.WEEK_AHEAD]: [
245
+ 'EU-parlamentti',
246
+ 'tuleva viikko',
247
+ 'valiokuntakokoukset',
248
+ 'täysistuntokeskustelu',
249
+ 'Euroopan parlamentti',
250
+ 'lainsäädäntö',
251
+ ],
252
+ [ArticleCategory.MONTH_AHEAD]: [
253
+ 'EU-parlamentti',
254
+ 'tuleva kuukausi',
255
+ 'lainsäädäntöohjelma',
256
+ 'Euroopan parlamentti',
257
+ 'täysistunto',
258
+ ],
259
+ [ArticleCategory.BREAKING_NEWS]: [
260
+ 'EU-parlamentti',
261
+ 'uusimmat uutiset',
262
+ 'Euroopan parlamentti',
263
+ 'lainsäädäntö',
264
+ 'äänestys',
265
+ ],
266
+ [ArticleCategory.COMMITTEE_REPORTS]: [
267
+ 'EU-parlamentti',
268
+ 'valiokuntatoiminta',
269
+ 'Euroopan parlamentti',
270
+ 'valiokuntaraportti',
271
+ 'lainsäädäntö',
272
+ ],
273
+ [ArticleCategory.PROPOSITIONS]: [
274
+ 'EU-parlamentti',
275
+ 'lainsäädäntömenettelyt',
276
+ 'Euroopan parlamentti',
277
+ 'ehdotus',
278
+ 'asetus',
279
+ ],
280
+ [ArticleCategory.MOTIONS]: [
281
+ 'EU-parlamentti',
282
+ 'täysistuntoäänestykset',
283
+ 'päätöslauselmat',
284
+ 'Euroopan parlamentti',
285
+ 'äänestyspöytäkirja',
286
+ ],
287
+ [ArticleCategory.WEEK_IN_REVIEW]: [
288
+ 'EU-parlamentti',
289
+ 'viikon katsaus',
290
+ 'Euroopan parlamentti',
291
+ 'yhteenveto',
292
+ 'lainsäädäntö',
293
+ ],
294
+ [ArticleCategory.MONTH_IN_REVIEW]: [
295
+ 'EU-parlamentti',
296
+ 'kuukauden katsaus',
297
+ 'Euroopan parlamentti',
298
+ 'yhteenveto',
299
+ 'lainsäädäntökatsaus',
300
+ ],
301
+ },
302
+ };
303
+ //# sourceMappingURL=localized-keywords-nordic.js.map
@@ -1,9 +1,11 @@
1
1
  // SPDX-FileCopyrightText: 2024-2026 Hack23 AB
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { LOCALIZED_KEYWORDS_EU } from './localized-keywords-eu.js';
3
+ import { LOCALIZED_KEYWORDS_NORDIC } from './localized-keywords-nordic.js';
4
+ import { LOCALIZED_KEYWORDS_CENTRAL } from './localized-keywords-central.js';
4
5
  import { LOCALIZED_KEYWORDS_GLOBAL } from './localized-keywords-global.js';
5
6
  export const LOCALIZED_KEYWORDS = {
6
- ...LOCALIZED_KEYWORDS_EU,
7
+ ...LOCALIZED_KEYWORDS_NORDIC,
8
+ ...LOCALIZED_KEYWORDS_CENTRAL,
7
9
  ...LOCALIZED_KEYWORDS_GLOBAL,
8
10
  };
9
11
  /** Week ahead title templates per language */
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @module Constants/Articles/SwotBuilderCentral
3
+ * @description Central SWOT-builder strings.
4
+ */
5
+ import type { LanguageMap, SwotBuilderStrings } from '../../types/index.js';
6
+ /** Central SWOT-builder strings */
7
+ export declare const SWOT_BUILDER_STRINGS_CENTRAL: Pick<LanguageMap<SwotBuilderStrings>, 'de' | 'fr'>;
8
+ //# sourceMappingURL=swot-builder-central.d.ts.map
@@ -0,0 +1,90 @@
1
+ // SPDX-FileCopyrightText: 2024-2026 Hack23 AB
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /** Central SWOT-builder strings */
4
+ export const SWOT_BUILDER_STRINGS_CENTRAL = {
5
+ de: {
6
+ votingHighCohesion: (n) => `${n} Fraktionen mit Kohäsion über 80 % — disziplinierte Abstimmungsblöcke`,
7
+ votingAdopted: (n) => `${n} Texte angenommen — zeigt gesetzgeberische Produktivität`,
8
+ votingActiveVotes: (n) => `${n} Abstimmungen erfasst — aktives Plenarengagement`,
9
+ votingLowCohesion: (n) => `${n} Fraktionen mit Kohäsion unter 50 % — interne Spaltungen schwächen Verhandlungsmacht`,
10
+ votingAnomalies: (n) => `${n} Abstimmungsanomalien erkannt — signalisiert unvorhersehbares Koalitionsverhalten`,
11
+ votingCrossParty: 'Fraktionsübergreifende Allianzen bei spezifischer Gesetzgebung können breiteren Konsens schaffen',
12
+ votingDiverseGroups: (n) => `${n} aktive Fraktionen — vielfältige Koalitionsbildungsmöglichkeiten`,
13
+ votingHighSeverity: (n) => `${n} schwerwiegende Anomalien — Risiko der Koalitionsfragmentierung`,
14
+ votingShiftingAlliances: 'Wechselnde Allianzen können den Gesetzgebungsfortschritt bei wichtigen Dossiers verzögern',
15
+ prospectiveEvents: (n) => `${n} Plenarveranstaltungen geplant — aktive Gesetzgebungsagenda`,
16
+ prospectiveCommittees: (n) => `${n} Ausschusssitzungen — breites politisches Engagement`,
17
+ prospectiveBottlenecks: (n) => `${n} Gesetzgebungsverfahren mit Engpassrisiko`,
18
+ prospectiveHighDensity: (n) => `Hohe Veranstaltungsdichte (${n}) birgt Risiko komprimierter Debattenzeit`,
19
+ prospectiveDocuments: (n) => `${n} Dokumente in Beratung — gesetzgeberisches Momentum`,
20
+ prospectiveQuestions: (n) => `${n} parlamentarische Anfragen — MdEP-Engagement für Bürgeranliegen`,
21
+ prospectiveBottleneckRisk: 'Engpassverfahren können zu Verfahrensabkürzungen zwingen oder wichtige Dossiers verzögern',
22
+ prospectiveSchedulingRisk: 'Terminierungsdichte erhöht das Risiko von Last-Minute-Änderungsanträgen',
23
+ breakingAdopted: (n) => `${n} Texte angenommen — Parlament demonstriert Gesetzgebungskapazität`,
24
+ breakingEvents: (n) => `${n} parlamentarische Veranstaltungen — aktives institutionelles Engagement`,
25
+ breakingAnomalyWeakness: 'Abstimmungsanomalien erkannt — potenzielle Koalitionsinstabilität',
26
+ breakingNoProcedures: 'Keine neuen Gesetzgebungsverfahren — begrenztes Pipeline-Momentum',
27
+ breakingProceduresActive: (n) => `${n} Verfahren schreiten voran — Gesetzgebungspipeline aktiv`,
28
+ breakingCoalitionOpportunity: 'Koalitionsdynamik verschiebt sich — neue Allianzmöglichkeiten entstehen',
29
+ breakingAnomalyThreat: 'Erkannte Anomalien könnten tiefere politische Neuausrichtung signalisieren',
30
+ breakingRapidEvents: 'Sich schnell entwickelnde Ereignisse könnten die Gesetzgebungskapazität übersteigen',
31
+ propositionsHealthStrong: (pct) => `Pipeline-Gesundheit bei ${pct} % — starkes Gesetzgebungsmanagement`,
32
+ propositionsThroughputGood: (n) => `Durchsatz ${n} — gesundes Verarbeitungstempo`,
33
+ propositionsHealthWeak: (pct) => `Pipeline-Gesundheit bei ${pct} % — Risiko gesetzgeberischer Stauung`,
34
+ propositionsThroughputLow: (n) => `Niedriger Durchsatz (${n}) — langsame Verarbeitung verzögert politische Maßnahmen`,
35
+ propositionsPrioritisation: 'Priorisierung von Leuchtturm-Dossiers kann die Pipeline-Effizienz verbessern',
36
+ propositionsTrilogueAcceleration: 'Trilog-Beschleunigung reifer Dossiers kann den Durchsatz steigern',
37
+ propositionsCriticalCongestion: 'Kritische Pipeline-Stauung kann zum Aufgeben von Gesetzgebungsdossiers führen',
38
+ propositionsOverlapping: 'Überlappende Umsetzungszeitpläne belasten die Umsetzungskapazität der Mitgliedstaaten',
39
+ committeeActive: (active, total) => `${active} von ${total} Ausschüssen produzieren aktiv Dokumente`,
40
+ committeeDocuments: (n) => `${n} Dokumente produziert — starke gesetzgeberische Produktion`,
41
+ committeeInactive: (n) => `${n} Ausschüsse ohne jüngste Dokumentenaktivität`,
42
+ committeeCrossCollaboration: 'Ausschussübergreifende Zusammenarbeit bei horizontalen Politikdossiers kann die Wirkung erhöhen',
43
+ committeeHearings: 'Ausschussanhörungen bieten Plattform für Experten-Stakeholder-Engagement',
44
+ committeeLowActivity: 'Niedrige Ausschussaktivität birgt Risiko gesetzgeberischer Engpässe im weiteren Verlauf',
45
+ committeeCompetingPriorities: 'Konkurrierende politische Prioritäten können den Ausschussfokus verwässern',
46
+ },
47
+ fr: {
48
+ votingHighCohesion: (n) => `${n} groupes politiques avec cohésion supérieure à 80 % — blocs de vote disciplinés`,
49
+ votingAdopted: (n) => `${n} textes adoptés — démontre la productivité législative`,
50
+ votingActiveVotes: (n) => `${n} votes enregistrés — engagement actif en plénière`,
51
+ votingLowCohesion: (n) => `${n} groupes avec cohésion inférieure à 50 % — divisions internes affaiblissent le pouvoir de négociation`,
52
+ votingAnomalies: (n) => `${n} anomalies de vote détectées — signale un comportement de coalition imprévisible`,
53
+ votingCrossParty: 'Les alliances transpartisanes sur des législations spécifiques peuvent construire un consensus plus large',
54
+ votingDiverseGroups: (n) => `${n} groupes politiques actifs — possibilités diverses de formation de coalition`,
55
+ votingHighSeverity: (n) => `${n} anomalies de haute gravité — risque de fragmentation de la coalition`,
56
+ votingShiftingAlliances: 'Les alliances mouvantes peuvent retarder les progrès législatifs sur les dossiers clés',
57
+ prospectiveEvents: (n) => `${n} événements pléniers programmés — agenda législatif actif`,
58
+ prospectiveCommittees: (n) => `${n} réunions de commission — large engagement politique`,
59
+ prospectiveBottlenecks: (n) => `${n} procédures législatives confrontées à des risques de goulot d'étranglement`,
60
+ prospectiveHighDensity: (n) => `Haute densité d'événements (${n}) risque de comprimer le temps de débat`,
61
+ prospectiveDocuments: (n) => `${n} documents en examen — momentum législatif`,
62
+ prospectiveQuestions: (n) => `${n} questions parlementaires — engagement des députés envers les préoccupations citoyennes`,
63
+ prospectiveBottleneckRisk: "Les procédures en goulot d'étranglement peuvent forcer des raccourcis ou reporter des dossiers clés",
64
+ prospectiveSchedulingRisk: "La densité de programmation augmente le risque d'amendements de dernière minute",
65
+ breakingAdopted: (n) => `${n} textes adoptés — le Parlement démontre sa capacité législative`,
66
+ breakingEvents: (n) => `${n} événements parlementaires — engagement institutionnel actif`,
67
+ breakingAnomalyWeakness: 'Anomalies de vote détectées — instabilité potentielle de la coalition',
68
+ breakingNoProcedures: 'Pas de nouvelles procédures législatives — momentum limité du pipeline',
69
+ breakingProceduresActive: (n) => `${n} procédures en cours — pipeline législatif actif`,
70
+ breakingCoalitionOpportunity: "La dynamique de coalition évolue — de nouvelles opportunités d'alliance émergent",
71
+ breakingAnomalyThreat: 'Les anomalies détectées peuvent signaler un réalignement politique plus profond',
72
+ breakingRapidEvents: 'Les événements à évolution rapide peuvent dépasser la capacité de réponse législative',
73
+ propositionsHealthStrong: (pct) => `Santé du pipeline à ${pct} % — gestion législative solide`,
74
+ propositionsThroughputGood: (n) => `Débit ${n} — rythme de traitement sain`,
75
+ propositionsHealthWeak: (pct) => `Santé du pipeline à ${pct} % — risque de congestion législative`,
76
+ propositionsThroughputLow: (n) => `Faible débit (${n}) — le traitement lent retarde la mise en œuvre des politiques`,
77
+ propositionsPrioritisation: "La priorisation des dossiers phares peut améliorer l'efficacité du pipeline",
78
+ propositionsTrilogueAcceleration: "L'accélération des trilogues sur les dossiers mûrs peut augmenter le débit",
79
+ propositionsCriticalCongestion: "Une congestion critique du pipeline peut forcer l'abandon de dossiers législatifs",
80
+ propositionsOverlapping: 'Les calendriers de mise en œuvre qui se chevauchent mettent à rude épreuve la capacité de transposition des États membres',
81
+ committeeActive: (active, total) => `${active} sur ${total} commissions produisent activement des documents`,
82
+ committeeDocuments: (n) => `${n} documents produits — forte production législative`,
83
+ committeeInactive: (n) => `${n} commissions sans activité documentaire récente`,
84
+ committeeCrossCollaboration: "La collaboration inter-commissions sur les dossiers politiques horizontaux peut accroître l'impact",
85
+ committeeHearings: "Les auditions en commission offrent une plateforme pour l'engagement des parties prenantes expertes",
86
+ committeeLowActivity: "Une faible activité des commissions risque de créer des goulots d'étranglement législatifs en aval",
87
+ committeeCompetingPriorities: 'Les priorités politiques concurrentes peuvent diluer la concentration des commissions',
88
+ },
89
+ };
90
+ //# sourceMappingURL=swot-builder-central.js.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @module Constants/Articles/SwotBuilderNordic
3
+ * @description Nordic SWOT-builder strings.
4
+ */
5
+ import type { LanguageMap, SwotBuilderStrings } from '../../types/index.js';
6
+ /** Nordic SWOT-builder strings */
7
+ export declare const SWOT_BUILDER_STRINGS_NORDIC: Pick<LanguageMap<SwotBuilderStrings>, 'en' | 'sv' | 'da' | 'no' | 'fi'>;
8
+ //# sourceMappingURL=swot-builder-nordic.d.ts.map