riksdagsmonitor 0.8.23 → 0.8.26

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 (546) hide show
  1. package/README.md +53 -1
  2. package/dist/lib/dashboards/party-dashboard.js +2 -1
  3. package/dist/lib/dashboards/party-dashboard.js.map +1 -1
  4. package/dist/lib/dashboards/risk-dashboard.js +2 -1
  5. package/dist/lib/dashboards/risk-dashboard.js.map +1 -1
  6. package/dist/lib/shared/index.d.ts +0 -1
  7. package/dist/lib/shared/index.d.ts.map +1 -1
  8. package/dist/lib/shared/index.js +3 -1
  9. package/dist/lib/shared/index.js.map +1 -1
  10. package/dist/lib/shared/register-globals.d.ts +1 -1
  11. package/dist/lib/shared/register-globals.d.ts.map +1 -1
  12. package/dist/lib/shared/register-globals.js +7 -1
  13. package/dist/lib/shared/register-globals.js.map +1 -1
  14. package/package.json +54 -22
  15. package/dist/scripts/analysis-reader.d.ts +0 -241
  16. package/dist/scripts/analysis-reader.d.ts.map +0 -1
  17. package/dist/scripts/analysis-reader.js +0 -531
  18. package/dist/scripts/analysis-reader.js.map +0 -1
  19. package/dist/scripts/article-quality-enhancer.d.ts +0 -148
  20. package/dist/scripts/article-quality-enhancer.d.ts.map +0 -1
  21. package/dist/scripts/article-quality-enhancer.js +0 -430
  22. package/dist/scripts/article-quality-enhancer.js.map +0 -1
  23. package/dist/scripts/article-template/constants.d.ts +0 -104
  24. package/dist/scripts/article-template/constants.d.ts.map +0 -1
  25. package/dist/scripts/article-template/constants.js +0 -225
  26. package/dist/scripts/article-template/constants.js.map +0 -1
  27. package/dist/scripts/article-template/helpers.d.ts +0 -83
  28. package/dist/scripts/article-template/helpers.d.ts.map +0 -1
  29. package/dist/scripts/article-template/helpers.js +0 -236
  30. package/dist/scripts/article-template/helpers.js.map +0 -1
  31. package/dist/scripts/article-template/index.d.ts +0 -39
  32. package/dist/scripts/article-template/index.d.ts.map +0 -1
  33. package/dist/scripts/article-template/index.js +0 -37
  34. package/dist/scripts/article-template/index.js.map +0 -1
  35. package/dist/scripts/article-template/registry.d.ts +0 -64
  36. package/dist/scripts/article-template/registry.d.ts.map +0 -1
  37. package/dist/scripts/article-template/registry.js +0 -405
  38. package/dist/scripts/article-template/registry.js.map +0 -1
  39. package/dist/scripts/article-template/template.d.ts +0 -18
  40. package/dist/scripts/article-template/template.d.ts.map +0 -1
  41. package/dist/scripts/article-template/template.js +0 -359
  42. package/dist/scripts/article-template/template.js.map +0 -1
  43. package/dist/scripts/article-template/types.d.ts +0 -90
  44. package/dist/scripts/article-template/types.d.ts.map +0 -1
  45. package/dist/scripts/article-template/types.js +0 -96
  46. package/dist/scripts/article-template/types.js.map +0 -1
  47. package/dist/scripts/article-template.d.ts +0 -18
  48. package/dist/scripts/article-template.d.ts.map +0 -1
  49. package/dist/scripts/article-template.js +0 -18
  50. package/dist/scripts/article-template.js.map +0 -1
  51. package/dist/scripts/catalog-downloaded-data.d.ts +0 -66
  52. package/dist/scripts/catalog-downloaded-data.d.ts.map +0 -1
  53. package/dist/scripts/catalog-downloaded-data.js +0 -239
  54. package/dist/scripts/catalog-downloaded-data.js.map +0 -1
  55. package/dist/scripts/check-cia-schema-updates.d.ts +0 -186
  56. package/dist/scripts/check-cia-schema-updates.d.ts.map +0 -1
  57. package/dist/scripts/check-cia-schema-updates.js +0 -363
  58. package/dist/scripts/check-cia-schema-updates.js.map +0 -1
  59. package/dist/scripts/data-transformers/calendar.d.ts +0 -16
  60. package/dist/scripts/data-transformers/calendar.d.ts.map +0 -1
  61. package/dist/scripts/data-transformers/calendar.js +0 -137
  62. package/dist/scripts/data-transformers/calendar.js.map +0 -1
  63. package/dist/scripts/data-transformers/constants/committee-names.d.ts +0 -15
  64. package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +0 -1
  65. package/dist/scripts/data-transformers/constants/committee-names.js +0 -30
  66. package/dist/scripts/data-transformers/constants/committee-names.js.map +0 -1
  67. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +0 -11
  68. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +0 -1
  69. package/dist/scripts/data-transformers/constants/content-labels-part1.js +0 -900
  70. package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +0 -1
  71. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +0 -11
  72. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +0 -1
  73. package/dist/scripts/data-transformers/constants/content-labels-part2.js +0 -900
  74. package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +0 -1
  75. package/dist/scripts/data-transformers/constants/content-labels.d.ts +0 -13
  76. package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +0 -1
  77. package/dist/scripts/data-transformers/constants/content-labels.js +0 -18
  78. package/dist/scripts/data-transformers/constants/content-labels.js.map +0 -1
  79. package/dist/scripts/data-transformers/constants/index.d.ts +0 -15
  80. package/dist/scripts/data-transformers/constants/index.d.ts.map +0 -1
  81. package/dist/scripts/data-transformers/constants/index.js +0 -15
  82. package/dist/scripts/data-transformers/constants/index.js.map +0 -1
  83. package/dist/scripts/data-transformers/constants/locale-map.d.ts +0 -13
  84. package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +0 -1
  85. package/dist/scripts/data-transformers/constants/locale-map.js +0 -17
  86. package/dist/scripts/data-transformers/constants/locale-map.js.map +0 -1
  87. package/dist/scripts/data-transformers/constants.d.ts +0 -14
  88. package/dist/scripts/data-transformers/constants.d.ts.map +0 -1
  89. package/dist/scripts/data-transformers/constants.js +0 -14
  90. package/dist/scripts/data-transformers/constants.js.map +0 -1
  91. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +0 -64
  92. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +0 -1
  93. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +0 -805
  94. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +0 -1
  95. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +0 -50
  96. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +0 -1
  97. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +0 -310
  98. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +0 -1
  99. package/dist/scripts/data-transformers/content-generators/committee.d.ts +0 -12
  100. package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +0 -1
  101. package/dist/scripts/data-transformers/content-generators/committee.js +0 -247
  102. package/dist/scripts/data-transformers/content-generators/committee.js.map +0 -1
  103. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +0 -124
  104. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +0 -1
  105. package/dist/scripts/data-transformers/content-generators/dashboard-section.js +0 -564
  106. package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +0 -1
  107. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +0 -82
  108. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +0 -1
  109. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +0 -321
  110. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +0 -1
  111. package/dist/scripts/data-transformers/content-generators/generic.d.ts +0 -12
  112. package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +0 -1
  113. package/dist/scripts/data-transformers/content-generators/generic.js +0 -295
  114. package/dist/scripts/data-transformers/content-generators/generic.js.map +0 -1
  115. package/dist/scripts/data-transformers/content-generators/index.d.ts +0 -84
  116. package/dist/scripts/data-transformers/content-generators/index.d.ts.map +0 -1
  117. package/dist/scripts/data-transformers/content-generators/index.js +0 -47
  118. package/dist/scripts/data-transformers/content-generators/index.js.map +0 -1
  119. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +0 -12
  120. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +0 -1
  121. package/dist/scripts/data-transformers/content-generators/interpellations.js +0 -124
  122. package/dist/scripts/data-transformers/content-generators/interpellations.js.map +0 -1
  123. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +0 -137
  124. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +0 -1
  125. package/dist/scripts/data-transformers/content-generators/mindmap-section.js +0 -286
  126. package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +0 -1
  127. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +0 -17
  128. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +0 -1
  129. package/dist/scripts/data-transformers/content-generators/month-ahead.js +0 -212
  130. package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +0 -1
  131. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +0 -17
  132. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +0 -1
  133. package/dist/scripts/data-transformers/content-generators/monthly-review.js +0 -173
  134. package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +0 -1
  135. package/dist/scripts/data-transformers/content-generators/motions.d.ts +0 -12
  136. package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +0 -1
  137. package/dist/scripts/data-transformers/content-generators/motions.js +0 -158
  138. package/dist/scripts/data-transformers/content-generators/motions.js.map +0 -1
  139. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +0 -62
  140. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +0 -1
  141. package/dist/scripts/data-transformers/content-generators/newsworthiness.js +0 -254
  142. package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +0 -1
  143. package/dist/scripts/data-transformers/content-generators/propositions.d.ts +0 -12
  144. package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +0 -1
  145. package/dist/scripts/data-transformers/content-generators/propositions.js +0 -263
  146. package/dist/scripts/data-transformers/content-generators/propositions.js.map +0 -1
  147. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +0 -92
  148. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +0 -1
  149. package/dist/scripts/data-transformers/content-generators/sankey-section.js +0 -257
  150. package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +0 -1
  151. package/dist/scripts/data-transformers/content-generators/shared.d.ts +0 -139
  152. package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +0 -1
  153. package/dist/scripts/data-transformers/content-generators/shared.js +0 -935
  154. package/dist/scripts/data-transformers/content-generators/shared.js.map +0 -1
  155. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +0 -50
  156. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +0 -1
  157. package/dist/scripts/data-transformers/content-generators/swot-section.js +0 -177
  158. package/dist/scripts/data-transformers/content-generators/swot-section.js.map +0 -1
  159. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +0 -12
  160. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +0 -1
  161. package/dist/scripts/data-transformers/content-generators/week-ahead.js +0 -332
  162. package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +0 -1
  163. package/dist/scripts/data-transformers/content-generators.d.ts +0 -15
  164. package/dist/scripts/data-transformers/content-generators.d.ts.map +0 -1
  165. package/dist/scripts/data-transformers/content-generators.js +0 -14
  166. package/dist/scripts/data-transformers/content-generators.js.map +0 -1
  167. package/dist/scripts/data-transformers/document-analysis.d.ts +0 -58
  168. package/dist/scripts/data-transformers/document-analysis.d.ts.map +0 -1
  169. package/dist/scripts/data-transformers/document-analysis.js +0 -396
  170. package/dist/scripts/data-transformers/document-analysis.js.map +0 -1
  171. package/dist/scripts/data-transformers/helpers.d.ts +0 -144
  172. package/dist/scripts/data-transformers/helpers.d.ts.map +0 -1
  173. package/dist/scripts/data-transformers/helpers.js +0 -408
  174. package/dist/scripts/data-transformers/helpers.js.map +0 -1
  175. package/dist/scripts/data-transformers/index.d.ts +0 -45
  176. package/dist/scripts/data-transformers/index.d.ts.map +0 -1
  177. package/dist/scripts/data-transformers/index.js +0 -66
  178. package/dist/scripts/data-transformers/index.js.map +0 -1
  179. package/dist/scripts/data-transformers/metadata.d.ts +0 -42
  180. package/dist/scripts/data-transformers/metadata.d.ts.map +0 -1
  181. package/dist/scripts/data-transformers/metadata.js +0 -385
  182. package/dist/scripts/data-transformers/metadata.js.map +0 -1
  183. package/dist/scripts/data-transformers/policy-analysis.d.ts +0 -105
  184. package/dist/scripts/data-transformers/policy-analysis.d.ts.map +0 -1
  185. package/dist/scripts/data-transformers/policy-analysis.js +0 -686
  186. package/dist/scripts/data-transformers/policy-analysis.js.map +0 -1
  187. package/dist/scripts/data-transformers/risk-analysis.d.ts +0 -104
  188. package/dist/scripts/data-transformers/risk-analysis.d.ts.map +0 -1
  189. package/dist/scripts/data-transformers/risk-analysis.js +0 -279
  190. package/dist/scripts/data-transformers/risk-analysis.js.map +0 -1
  191. package/dist/scripts/data-transformers/types.d.ts +0 -260
  192. package/dist/scripts/data-transformers/types.d.ts.map +0 -1
  193. package/dist/scripts/data-transformers/types.js +0 -11
  194. package/dist/scripts/data-transformers/types.js.map +0 -1
  195. package/dist/scripts/data-transformers.d.ts +0 -23
  196. package/dist/scripts/data-transformers.d.ts.map +0 -1
  197. package/dist/scripts/data-transformers.js +0 -35
  198. package/dist/scripts/data-transformers.js.map +0 -1
  199. package/dist/scripts/deep-inspection/index.d.ts +0 -55
  200. package/dist/scripts/deep-inspection/index.d.ts.map +0 -1
  201. package/dist/scripts/deep-inspection/index.js +0 -66
  202. package/dist/scripts/deep-inspection/index.js.map +0 -1
  203. package/dist/scripts/detect-swedish-leakage.d.ts +0 -69
  204. package/dist/scripts/detect-swedish-leakage.d.ts.map +0 -1
  205. package/dist/scripts/detect-swedish-leakage.js +0 -417
  206. package/dist/scripts/detect-swedish-leakage.js.map +0 -1
  207. package/dist/scripts/editorial-framework.d.ts +0 -121
  208. package/dist/scripts/editorial-framework.d.ts.map +0 -1
  209. package/dist/scripts/editorial-framework.js +0 -364
  210. package/dist/scripts/editorial-framework.js.map +0 -1
  211. package/dist/scripts/editorial-pillars.d.ts +0 -43
  212. package/dist/scripts/editorial-pillars.d.ts.map +0 -1
  213. package/dist/scripts/editorial-pillars.js +0 -215
  214. package/dist/scripts/editorial-pillars.js.map +0 -1
  215. package/dist/scripts/extract-news-metadata.d.ts +0 -12
  216. package/dist/scripts/extract-news-metadata.d.ts.map +0 -1
  217. package/dist/scripts/extract-news-metadata.js +0 -107
  218. package/dist/scripts/extract-news-metadata.js.map +0 -1
  219. package/dist/scripts/extract-vocabulary.d.ts +0 -15
  220. package/dist/scripts/extract-vocabulary.d.ts.map +0 -1
  221. package/dist/scripts/extract-vocabulary.js +0 -255
  222. package/dist/scripts/extract-vocabulary.js.map +0 -1
  223. package/dist/scripts/fix-article-navigation.d.ts +0 -37
  224. package/dist/scripts/fix-article-navigation.d.ts.map +0 -1
  225. package/dist/scripts/fix-article-navigation.js +0 -198
  226. package/dist/scripts/fix-article-navigation.js.map +0 -1
  227. package/dist/scripts/fix-keywords-localization.d.ts +0 -18
  228. package/dist/scripts/fix-keywords-localization.d.ts.map +0 -1
  229. package/dist/scripts/fix-keywords-localization.js +0 -270
  230. package/dist/scripts/fix-keywords-localization.js.map +0 -1
  231. package/dist/scripts/fix-old-articles-branding.d.ts +0 -17
  232. package/dist/scripts/fix-old-articles-branding.d.ts.map +0 -1
  233. package/dist/scripts/fix-old-articles-branding.js +0 -229
  234. package/dist/scripts/fix-old-articles-branding.js.map +0 -1
  235. package/dist/scripts/generate-news-backport.d.ts +0 -16
  236. package/dist/scripts/generate-news-backport.d.ts.map +0 -1
  237. package/dist/scripts/generate-news-backport.js +0 -379
  238. package/dist/scripts/generate-news-backport.js.map +0 -1
  239. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +0 -141
  240. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +0 -1
  241. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +0 -546
  242. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +0 -1
  243. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +0 -59
  244. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +0 -1
  245. package/dist/scripts/generate-news-enhanced/analysis-cache.js +0 -116
  246. package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +0 -1
  247. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +0 -58
  248. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +0 -1
  249. package/dist/scripts/generate-news-enhanced/analysis-labels.js +0 -144
  250. package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +0 -1
  251. package/dist/scripts/generate-news-enhanced/config.d.ts +0 -58
  252. package/dist/scripts/generate-news-enhanced/config.d.ts.map +0 -1
  253. package/dist/scripts/generate-news-enhanced/config.js +0 -286
  254. package/dist/scripts/generate-news-enhanced/config.js.map +0 -1
  255. package/dist/scripts/generate-news-enhanced/generators.d.ts +0 -119
  256. package/dist/scripts/generate-news-enhanced/generators.d.ts.map +0 -1
  257. package/dist/scripts/generate-news-enhanced/generators.js +0 -2131
  258. package/dist/scripts/generate-news-enhanced/generators.js.map +0 -1
  259. package/dist/scripts/generate-news-enhanced/helpers.d.ts +0 -122
  260. package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +0 -1
  261. package/dist/scripts/generate-news-enhanced/helpers.js +0 -468
  262. package/dist/scripts/generate-news-enhanced/helpers.js.map +0 -1
  263. package/dist/scripts/generate-news-enhanced/index.d.ts +0 -19
  264. package/dist/scripts/generate-news-enhanced/index.d.ts.map +0 -1
  265. package/dist/scripts/generate-news-enhanced/index.js +0 -221
  266. package/dist/scripts/generate-news-enhanced/index.js.map +0 -1
  267. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +0 -46
  268. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +0 -1
  269. package/dist/scripts/generate-news-enhanced/swot-analyzer.js +0 -1227
  270. package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +0 -1
  271. package/dist/scripts/generate-news-enhanced/types.d.ts +0 -34
  272. package/dist/scripts/generate-news-enhanced/types.d.ts.map +0 -1
  273. package/dist/scripts/generate-news-enhanced/types.js +0 -9
  274. package/dist/scripts/generate-news-enhanced/types.js.map +0 -1
  275. package/dist/scripts/generate-news-enhanced.d.ts +0 -25
  276. package/dist/scripts/generate-news-enhanced.d.ts.map +0 -1
  277. package/dist/scripts/generate-news-enhanced.js +0 -37
  278. package/dist/scripts/generate-news-enhanced.js.map +0 -1
  279. package/dist/scripts/generate-news-indexes/constants.d.ts +0 -20
  280. package/dist/scripts/generate-news-indexes/constants.d.ts.map +0 -1
  281. package/dist/scripts/generate-news-indexes/constants.js +0 -308
  282. package/dist/scripts/generate-news-indexes/constants.js.map +0 -1
  283. package/dist/scripts/generate-news-indexes/helpers.d.ts +0 -73
  284. package/dist/scripts/generate-news-indexes/helpers.d.ts.map +0 -1
  285. package/dist/scripts/generate-news-indexes/helpers.js +0 -352
  286. package/dist/scripts/generate-news-indexes/helpers.js.map +0 -1
  287. package/dist/scripts/generate-news-indexes/index.d.ts +0 -20
  288. package/dist/scripts/generate-news-indexes/index.d.ts.map +0 -1
  289. package/dist/scripts/generate-news-indexes/index.js +0 -75
  290. package/dist/scripts/generate-news-indexes/index.js.map +0 -1
  291. package/dist/scripts/generate-news-indexes/template.d.ts +0 -25
  292. package/dist/scripts/generate-news-indexes/template.d.ts.map +0 -1
  293. package/dist/scripts/generate-news-indexes/template.js +0 -644
  294. package/dist/scripts/generate-news-indexes/template.js.map +0 -1
  295. package/dist/scripts/generate-news-indexes/types.d.ts +0 -96
  296. package/dist/scripts/generate-news-indexes/types.d.ts.map +0 -1
  297. package/dist/scripts/generate-news-indexes/types.js +0 -9
  298. package/dist/scripts/generate-news-indexes/types.js.map +0 -1
  299. package/dist/scripts/generate-news-indexes.d.ts +0 -20
  300. package/dist/scripts/generate-news-indexes.d.ts.map +0 -1
  301. package/dist/scripts/generate-news-indexes.js +0 -19
  302. package/dist/scripts/generate-news-indexes.js.map +0 -1
  303. package/dist/scripts/generate-rss.d.ts +0 -48
  304. package/dist/scripts/generate-rss.d.ts.map +0 -1
  305. package/dist/scripts/generate-rss.js +0 -299
  306. package/dist/scripts/generate-rss.js.map +0 -1
  307. package/dist/scripts/generate-sitemap-html.d.ts +0 -79
  308. package/dist/scripts/generate-sitemap-html.d.ts.map +0 -1
  309. package/dist/scripts/generate-sitemap-html.js +0 -878
  310. package/dist/scripts/generate-sitemap-html.js.map +0 -1
  311. package/dist/scripts/generate-sitemap.d.ts +0 -23
  312. package/dist/scripts/generate-sitemap.d.ts.map +0 -1
  313. package/dist/scripts/generate-sitemap.js +0 -476
  314. package/dist/scripts/generate-sitemap.js.map +0 -1
  315. package/dist/scripts/generate-types-from-cia-schemas.d.ts +0 -176
  316. package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +0 -1
  317. package/dist/scripts/generate-types-from-cia-schemas.js +0 -318
  318. package/dist/scripts/generate-types-from-cia-schemas.js.map +0 -1
  319. package/dist/scripts/government-role-validator.d.ts +0 -65
  320. package/dist/scripts/government-role-validator.d.ts.map +0 -1
  321. package/dist/scripts/government-role-validator.js +0 -217
  322. package/dist/scripts/government-role-validator.js.map +0 -1
  323. package/dist/scripts/html-utils.d.ts +0 -17
  324. package/dist/scripts/html-utils.d.ts.map +0 -1
  325. package/dist/scripts/html-utils.js +0 -29
  326. package/dist/scripts/html-utils.js.map +0 -1
  327. package/dist/scripts/load-cia-stats.d.ts +0 -89
  328. package/dist/scripts/load-cia-stats.d.ts.map +0 -1
  329. package/dist/scripts/load-cia-stats.js +0 -400
  330. package/dist/scripts/load-cia-stats.js.map +0 -1
  331. package/dist/scripts/mcp-client/client.d.ts +0 -73
  332. package/dist/scripts/mcp-client/client.d.ts.map +0 -1
  333. package/dist/scripts/mcp-client/client.js +0 -526
  334. package/dist/scripts/mcp-client/client.js.map +0 -1
  335. package/dist/scripts/mcp-client/document-types.d.ts +0 -23
  336. package/dist/scripts/mcp-client/document-types.d.ts.map +0 -1
  337. package/dist/scripts/mcp-client/document-types.js +0 -62
  338. package/dist/scripts/mcp-client/document-types.js.map +0 -1
  339. package/dist/scripts/mcp-client/index.d.ts +0 -34
  340. package/dist/scripts/mcp-client/index.d.ts.map +0 -1
  341. package/dist/scripts/mcp-client/index.js +0 -67
  342. package/dist/scripts/mcp-client/index.js.map +0 -1
  343. package/dist/scripts/mcp-client/transport.d.ts +0 -32
  344. package/dist/scripts/mcp-client/transport.d.ts.map +0 -1
  345. package/dist/scripts/mcp-client/transport.js +0 -102
  346. package/dist/scripts/mcp-client/transport.js.map +0 -1
  347. package/dist/scripts/mcp-client.d.ts +0 -18
  348. package/dist/scripts/mcp-client.d.ts.map +0 -1
  349. package/dist/scripts/mcp-client.js +0 -18
  350. package/dist/scripts/mcp-client.js.map +0 -1
  351. package/dist/scripts/mcp-query-cli.d.ts +0 -25
  352. package/dist/scripts/mcp-query-cli.d.ts.map +0 -1
  353. package/dist/scripts/mcp-query-cli.js +0 -66
  354. package/dist/scripts/mcp-query-cli.js.map +0 -1
  355. package/dist/scripts/news-types/breaking-news.d.ts +0 -178
  356. package/dist/scripts/news-types/breaking-news.d.ts.map +0 -1
  357. package/dist/scripts/news-types/breaking-news.js +0 -432
  358. package/dist/scripts/news-types/breaking-news.js.map +0 -1
  359. package/dist/scripts/news-types/committee-reports.d.ts +0 -212
  360. package/dist/scripts/news-types/committee-reports.d.ts.map +0 -1
  361. package/dist/scripts/news-types/committee-reports.js +0 -404
  362. package/dist/scripts/news-types/committee-reports.js.map +0 -1
  363. package/dist/scripts/news-types/month-ahead.d.ts +0 -71
  364. package/dist/scripts/news-types/month-ahead.d.ts.map +0 -1
  365. package/dist/scripts/news-types/month-ahead.js +0 -392
  366. package/dist/scripts/news-types/month-ahead.js.map +0 -1
  367. package/dist/scripts/news-types/monthly-review.d.ts +0 -61
  368. package/dist/scripts/news-types/monthly-review.d.ts.map +0 -1
  369. package/dist/scripts/news-types/monthly-review.js +0 -417
  370. package/dist/scripts/news-types/monthly-review.js.map +0 -1
  371. package/dist/scripts/news-types/motions.d.ts +0 -214
  372. package/dist/scripts/news-types/motions.d.ts.map +0 -1
  373. package/dist/scripts/news-types/motions.js +0 -447
  374. package/dist/scripts/news-types/motions.js.map +0 -1
  375. package/dist/scripts/news-types/propositions.d.ts +0 -204
  376. package/dist/scripts/news-types/propositions.d.ts.map +0 -1
  377. package/dist/scripts/news-types/propositions.js +0 -401
  378. package/dist/scripts/news-types/propositions.js.map +0 -1
  379. package/dist/scripts/news-types/week-ahead.d.ts +0 -231
  380. package/dist/scripts/news-types/week-ahead.d.ts.map +0 -1
  381. package/dist/scripts/news-types/week-ahead.js +0 -441
  382. package/dist/scripts/news-types/week-ahead.js.map +0 -1
  383. package/dist/scripts/news-types/weekly-review/analysis.d.ts +0 -47
  384. package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +0 -1
  385. package/dist/scripts/news-types/weekly-review/analysis.js +0 -276
  386. package/dist/scripts/news-types/weekly-review/analysis.js.map +0 -1
  387. package/dist/scripts/news-types/weekly-review/data-loader.d.ts +0 -51
  388. package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +0 -1
  389. package/dist/scripts/news-types/weekly-review/data-loader.js +0 -298
  390. package/dist/scripts/news-types/weekly-review/data-loader.js.map +0 -1
  391. package/dist/scripts/news-types/weekly-review/generator.d.ts +0 -18
  392. package/dist/scripts/news-types/weekly-review/generator.d.ts.map +0 -1
  393. package/dist/scripts/news-types/weekly-review/generator.js +0 -284
  394. package/dist/scripts/news-types/weekly-review/generator.js.map +0 -1
  395. package/dist/scripts/news-types/weekly-review/index.d.ts +0 -20
  396. package/dist/scripts/news-types/weekly-review/index.d.ts.map +0 -1
  397. package/dist/scripts/news-types/weekly-review/index.js +0 -23
  398. package/dist/scripts/news-types/weekly-review/index.js.map +0 -1
  399. package/dist/scripts/news-types/weekly-review/types.d.ts +0 -72
  400. package/dist/scripts/news-types/weekly-review/types.d.ts.map +0 -1
  401. package/dist/scripts/news-types/weekly-review/types.js +0 -20
  402. package/dist/scripts/news-types/weekly-review/types.js.map +0 -1
  403. package/dist/scripts/news-types/weekly-review/validation.d.ts +0 -10
  404. package/dist/scripts/news-types/weekly-review/validation.d.ts.map +0 -1
  405. package/dist/scripts/news-types/weekly-review/validation.js +0 -95
  406. package/dist/scripts/news-types/weekly-review/validation.js.map +0 -1
  407. package/dist/scripts/news-types/weekly-review.d.ts +0 -15
  408. package/dist/scripts/news-types/weekly-review.d.ts.map +0 -1
  409. package/dist/scripts/news-types/weekly-review.js +0 -14
  410. package/dist/scripts/news-types/weekly-review.js.map +0 -1
  411. package/dist/scripts/party-variants.d.ts +0 -23
  412. package/dist/scripts/party-variants.d.ts.map +0 -1
  413. package/dist/scripts/party-variants.js +0 -50
  414. package/dist/scripts/party-variants.js.map +0 -1
  415. package/dist/scripts/pipeline/index.d.ts +0 -19
  416. package/dist/scripts/pipeline/index.d.ts.map +0 -1
  417. package/dist/scripts/pipeline/index.js +0 -17
  418. package/dist/scripts/pipeline/index.js.map +0 -1
  419. package/dist/scripts/pipeline/orchestrator.d.ts +0 -56
  420. package/dist/scripts/pipeline/orchestrator.d.ts.map +0 -1
  421. package/dist/scripts/pipeline/orchestrator.js +0 -147
  422. package/dist/scripts/pipeline/orchestrator.js.map +0 -1
  423. package/dist/scripts/pipeline/types.d.ts +0 -117
  424. package/dist/scripts/pipeline/types.d.ts.map +0 -1
  425. package/dist/scripts/pipeline/types.js +0 -13
  426. package/dist/scripts/pipeline/types.js.map +0 -1
  427. package/dist/scripts/pipeline/validation.d.ts +0 -66
  428. package/dist/scripts/pipeline/validation.d.ts.map +0 -1
  429. package/dist/scripts/pipeline/validation.js +0 -129
  430. package/dist/scripts/pipeline/validation.js.map +0 -1
  431. package/dist/scripts/populate-analysis-data.d.ts +0 -41
  432. package/dist/scripts/populate-analysis-data.d.ts.map +0 -1
  433. package/dist/scripts/populate-analysis-data.js +0 -255
  434. package/dist/scripts/populate-analysis-data.js.map +0 -1
  435. package/dist/scripts/pre-article-analysis/data-downloader.d.ts +0 -80
  436. package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +0 -1
  437. package/dist/scripts/pre-article-analysis/data-downloader.js +0 -230
  438. package/dist/scripts/pre-article-analysis/data-downloader.js.map +0 -1
  439. package/dist/scripts/pre-article-analysis/data-persistence.d.ts +0 -141
  440. package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +0 -1
  441. package/dist/scripts/pre-article-analysis/data-persistence.js +0 -345
  442. package/dist/scripts/pre-article-analysis/data-persistence.js.map +0 -1
  443. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +0 -158
  444. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +0 -1
  445. package/dist/scripts/pre-article-analysis/markdown-serializer.js +0 -648
  446. package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +0 -1
  447. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +0 -58
  448. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +0 -1
  449. package/dist/scripts/pre-article-analysis/pdf-converter.js +0 -142
  450. package/dist/scripts/pre-article-analysis/pdf-converter.js.map +0 -1
  451. package/dist/scripts/pre-article-analysis.d.ts +0 -42
  452. package/dist/scripts/pre-article-analysis.d.ts.map +0 -1
  453. package/dist/scripts/pre-article-analysis.js +0 -642
  454. package/dist/scripts/pre-article-analysis.js.map +0 -1
  455. package/dist/scripts/scb-client.d.ts +0 -104
  456. package/dist/scripts/scb-client.d.ts.map +0 -1
  457. package/dist/scripts/scb-client.js +0 -286
  458. package/dist/scripts/scb-client.js.map +0 -1
  459. package/dist/scripts/scb-context.d.ts +0 -88
  460. package/dist/scripts/scb-context.d.ts.map +0 -1
  461. package/dist/scripts/scb-context.js +0 -307
  462. package/dist/scripts/scb-context.js.map +0 -1
  463. package/dist/scripts/shared/version.d.ts +0 -9
  464. package/dist/scripts/shared/version.d.ts.map +0 -1
  465. package/dist/scripts/shared/version.js +0 -28
  466. package/dist/scripts/shared/version.js.map +0 -1
  467. package/dist/scripts/statistical-claims-detector.d.ts +0 -119
  468. package/dist/scripts/statistical-claims-detector.d.ts.map +0 -1
  469. package/dist/scripts/statistical-claims-detector.js +0 -391
  470. package/dist/scripts/statistical-claims-detector.js.map +0 -1
  471. package/dist/scripts/sync-cia-schemas.d.ts +0 -52
  472. package/dist/scripts/sync-cia-schemas.d.ts.map +0 -1
  473. package/dist/scripts/sync-cia-schemas.js +0 -195
  474. package/dist/scripts/sync-cia-schemas.js.map +0 -1
  475. package/dist/scripts/translation-dictionary.d.ts +0 -45
  476. package/dist/scripts/translation-dictionary.d.ts.map +0 -1
  477. package/dist/scripts/translation-dictionary.js +0 -3642
  478. package/dist/scripts/translation-dictionary.js.map +0 -1
  479. package/dist/scripts/types/article.d.ts +0 -392
  480. package/dist/scripts/types/article.d.ts.map +0 -1
  481. package/dist/scripts/types/article.js +0 -6
  482. package/dist/scripts/types/article.js.map +0 -1
  483. package/dist/scripts/types/content.d.ts +0 -167
  484. package/dist/scripts/types/content.d.ts.map +0 -1
  485. package/dist/scripts/types/content.js +0 -6
  486. package/dist/scripts/types/content.js.map +0 -1
  487. package/dist/scripts/types/editorial.d.ts +0 -17
  488. package/dist/scripts/types/editorial.d.ts.map +0 -1
  489. package/dist/scripts/types/editorial.js +0 -6
  490. package/dist/scripts/types/editorial.js.map +0 -1
  491. package/dist/scripts/types/language.d.ts +0 -7
  492. package/dist/scripts/types/language.d.ts.map +0 -1
  493. package/dist/scripts/types/language.js +0 -6
  494. package/dist/scripts/types/language.js.map +0 -1
  495. package/dist/scripts/types/mcp.d.ts +0 -117
  496. package/dist/scripts/types/mcp.d.ts.map +0 -1
  497. package/dist/scripts/types/mcp.js +0 -6
  498. package/dist/scripts/types/mcp.js.map +0 -1
  499. package/dist/scripts/types/party.d.ts +0 -9
  500. package/dist/scripts/types/party.d.ts.map +0 -1
  501. package/dist/scripts/types/party.js +0 -6
  502. package/dist/scripts/types/party.js.map +0 -1
  503. package/dist/scripts/types/validation.d.ts +0 -136
  504. package/dist/scripts/types/validation.d.ts.map +0 -1
  505. package/dist/scripts/types/validation.js +0 -6
  506. package/dist/scripts/types/validation.js.map +0 -1
  507. package/dist/scripts/types/workflow.d.ts +0 -78
  508. package/dist/scripts/types/workflow.d.ts.map +0 -1
  509. package/dist/scripts/types/workflow.js +0 -6
  510. package/dist/scripts/types/workflow.js.map +0 -1
  511. package/dist/scripts/update-stats-from-cia.d.ts +0 -44
  512. package/dist/scripts/update-stats-from-cia.d.ts.map +0 -1
  513. package/dist/scripts/update-stats-from-cia.js +0 -310
  514. package/dist/scripts/update-stats-from-cia.js.map +0 -1
  515. package/dist/scripts/validate-against-cia-schemas.d.ts +0 -126
  516. package/dist/scripts/validate-against-cia-schemas.d.ts.map +0 -1
  517. package/dist/scripts/validate-against-cia-schemas.js +0 -299
  518. package/dist/scripts/validate-against-cia-schemas.js.map +0 -1
  519. package/dist/scripts/validate-cross-references.d.ts +0 -49
  520. package/dist/scripts/validate-cross-references.d.ts.map +0 -1
  521. package/dist/scripts/validate-cross-references.js +0 -183
  522. package/dist/scripts/validate-cross-references.js.map +0 -1
  523. package/dist/scripts/validate-file-ownership.d.ts +0 -68
  524. package/dist/scripts/validate-file-ownership.d.ts.map +0 -1
  525. package/dist/scripts/validate-file-ownership.js +0 -135
  526. package/dist/scripts/validate-file-ownership.js.map +0 -1
  527. package/dist/scripts/validate-news-translations.d.ts +0 -27
  528. package/dist/scripts/validate-news-translations.d.ts.map +0 -1
  529. package/dist/scripts/validate-news-translations.js +0 -258
  530. package/dist/scripts/validate-news-translations.js.map +0 -1
  531. package/dist/scripts/validate-translations.d.ts +0 -162
  532. package/dist/scripts/validate-translations.d.ts.map +0 -1
  533. package/dist/scripts/validate-translations.js +0 -378
  534. package/dist/scripts/validate-translations.js.map +0 -1
  535. package/dist/scripts/workflow-state-coordinator.d.ts +0 -354
  536. package/dist/scripts/workflow-state-coordinator.d.ts.map +0 -1
  537. package/dist/scripts/workflow-state-coordinator.js +0 -876
  538. package/dist/scripts/workflow-state-coordinator.js.map +0 -1
  539. package/dist/scripts/world-bank-client.d.ts +0 -122
  540. package/dist/scripts/world-bank-client.d.ts.map +0 -1
  541. package/dist/scripts/world-bank-client.js +0 -192
  542. package/dist/scripts/world-bank-client.js.map +0 -1
  543. package/dist/scripts/world-bank-context.d.ts +0 -88
  544. package/dist/scripts/world-bank-context.d.ts.map +0 -1
  545. package/dist/scripts/world-bank-context.js +0 -331
  546. package/dist/scripts/world-bank-context.js.map +0 -1
@@ -1,295 +0,0 @@
1
- /**
2
- * @module data-transformers/content-generators/generic
3
- * @description Generator for "generic" article content (weekly-review, breaking, etc.).
4
- * Renders a flexible narrative combining all available data sources.
5
- *
6
- * @author Hack23 AB
7
- * @license Apache-2.0
8
- */
9
- import { escapeHtml } from '../../html-utils.js';
10
- import { getPillarTransition } from '../../editorial-pillars.js';
11
- import { L, svSpan, sanitizeUrl, getCommitteeName, normalizePartyKey, formatDocumentDate, } from '../helpers.js';
12
- import { detectPolicyDomains } from '../policy-analysis.js';
13
- import { generateOppositionStrategySection, generateDocumentIntelligenceAnalysis, } from '../document-analysis.js';
14
- import { TITLE_SUFFIX_TEMPLATES, generateDeepAnalysisSection, analyzeDocumentsForContent } from './shared.js';
15
- export function generateGenericContent(data, lang) {
16
- const docs = data.documents || [];
17
- if (docs.length === 0) {
18
- return `<p>${L(lang, 'genericContent')}</p>`;
19
- }
20
- const cia = data.ciaContext;
21
- let content = '';
22
- // ── Inverted-pyramid lede: lead with most significant document type ──────
23
- // Group by document type first to identify the most newsworthy lead
24
- const byType = {};
25
- docs.forEach(doc => {
26
- const docType = doc.doktyp || doc.documentType || 'other';
27
- if (!byType[docType])
28
- byType[docType] = [];
29
- byType[docType].push(doc);
30
- });
31
- // Significance order: propositions → committee reports → government comms → motions → rest
32
- const typeOrder = ['prop', 'bet', 'skr', 'mot', 'other'];
33
- const sortedTypes = [...Object.keys(byType)].sort((a, b) => {
34
- const ai = typeOrder.indexOf(a);
35
- const bi = typeOrder.indexOf(b);
36
- return (ai === -1 ? 99 : ai) - (bi === -1 ? 99 : bi);
37
- });
38
- // Lead with the most significant type rather than a raw count
39
- const leadType = sortedTypes[0];
40
- const leadDocs = leadType ? (byType[leadType] ?? []) : [];
41
- const leadTitle = leadDocs[0] ? (leadDocs[0].titel || leadDocs[0].title || '') : '';
42
- // Per-language title suffix (e.g. " — including "Prop. 2025/26:42"")
43
- const titleSuffix = leadTitle
44
- ? (TITLE_SUFFIX_TEMPLATES[lang] ?? (t => ` — including "${t}"`))(leadTitle)
45
- : '';
46
- let ledeText;
47
- if (leadType === 'prop' && leadDocs.length > 0) {
48
- const n = leadDocs.length;
49
- ledeText = lang === 'sv'
50
- ? `Riksdagen behandlar ${n} proposition${n !== 1 ? 'er' : ''}${titleSuffix} under denna period.`
51
- : lang === 'da' ? `Folketinget behandler ${n} lovforslag${titleSuffix} i denne periode.`
52
- : lang === 'no' ? `Stortinget behandler ${n} lovproposisjon${n !== 1 ? 'er' : ''}${titleSuffix} i denne perioden.`
53
- : lang === 'fi' ? `Eduskunta käsittelee ${n} hallituksen esitystä${titleSuffix} tällä kaudella.`
54
- : lang === 'de' ? `Das Parlament berät ${n} Regierungsvorlag${n !== 1 ? 'en' : 'e'}${titleSuffix} in dieser Periode.`
55
- : lang === 'fr' ? `Le parlement examine ${n} proposition${n !== 1 ? 's' : ''} gouvernementale${n !== 1 ? 's' : ''}${titleSuffix} pendant cette période.`
56
- : lang === 'es' ? `El parlamento examina ${n} proposición${n !== 1 ? 'es' : ''} gubernamental${n !== 1 ? 'es' : ''}${titleSuffix} durante este período.`
57
- : lang === 'nl' ? `Het parlement bespreekt ${n} regeringsvoorstel${n !== 1 ? 'len' : ''}${titleSuffix} in deze periode.`
58
- : lang === 'ar' ? `يناقش البرلمان ${n} اقتراح${n !== 1 ? 'ات' : ''} حكومية${titleSuffix} خلال هذه الفترة.`
59
- : lang === 'he' ? `הפרלמנט דן ב-${n} הצעת חוק ממשלתית${n !== 1 ? 'ות' : ''}${titleSuffix} בתקופה זו.`
60
- : lang === 'ja' ? `議会はこの期間中に${n}本の政府提出法案を審議しています${titleSuffix}。`
61
- : lang === 'ko' ? `의회는 이 기간 동안 ${n}건의 정부 법안을 심의하고 있습니다${titleSuffix}.`
62
- : lang === 'zh' ? `议会正在审议本期${n}项政府提案${titleSuffix}。`
63
- : `Parliament is considering ${n} government proposition${n !== 1 ? 's' : ''}${titleSuffix} during this period.`;
64
- }
65
- else if (leadType === 'bet' && leadDocs.length > 0) {
66
- const n = leadDocs.length;
67
- ledeText = lang === 'sv'
68
- ? `Utskotten har lämnat ${n} betänkande${n !== 1 ? 'n' : ''}${titleSuffix} för riksdagens beslut.`
69
- : lang === 'da' ? `Udvalgene har afleveret ${n} betænkning${n !== 1 ? 'er' : ''}${titleSuffix} til parlamentarisk beslutning.`
70
- : lang === 'no' ? `Komiteene har levert ${n} innstilling${n !== 1 ? 'er' : ''}${titleSuffix} til parlamentarisk beslutning.`
71
- : lang === 'fi' ? `Valiokunnat ovat toimittaneet ${n} mietinnön${titleSuffix} parlamentin päätettäväksi.`
72
- : lang === 'de' ? `Die Ausschüsse haben ${n} Bericht${n !== 1 ? 'e' : ''}${titleSuffix} zur parlamentarischen Entscheidung vorgelegt.`
73
- : lang === 'fr' ? `Les commissions ont livré ${n} rapport${n !== 1 ? 's' : ''}${titleSuffix} pour décision parlementaire.`
74
- : lang === 'es' ? `Los comités han presentado ${n} informe${n !== 1 ? 's' : ''}${titleSuffix} para decisión parlamentaria.`
75
- : lang === 'nl' ? `De commissies hebben ${n} rapport${n !== 1 ? 'en' : ''}${titleSuffix} ingediend voor parlementaire beslissing.`
76
- : lang === 'ar' ? `قدمت اللجان ${n} تقرير${n !== 1 ? 'اً' : ''}${titleSuffix} للقرار البرلماني.`
77
- : lang === 'he' ? `הוועדות הגישו ${n} דוח${n !== 1 ? 'ות' : ''}${titleSuffix} להחלטה פרלמנטרית.`
78
- : lang === 'ja' ? `委員会は議会の決定のために${n}本の報告書を提出しました${titleSuffix}。`
79
- : lang === 'ko' ? `위원회들이 의회 결정을 위해 ${n}건의 보고서를 제출했습니다${titleSuffix}.`
80
- : lang === 'zh' ? `委员会已提交${n}份报告${titleSuffix}供议会决定。`
81
- : `Committees have delivered ${n} report${n !== 1 ? 's' : ''}${titleSuffix} for parliamentary decision.`;
82
- }
83
- else {
84
- const overviewFn = L(lang, 'genericOverview');
85
- ledeText = typeof overviewFn === 'function'
86
- ? overviewFn(docs.length)
87
- : `During this period, ${docs.length} documents were processed in parliament.`;
88
- }
89
- content += `<p class="article-lede">${escapeHtml(ledeText)}</p>\n`;
90
- content += `\n <h2>${L(lang, 'thematicAnalysis')}</h2>\n`;
91
- // Per-language document type labels
92
- const docTypeLabels = {
93
- mot: { en: 'Motions', sv: 'Motioner', da: 'Forslag', no: 'Forslag', fi: 'Aloitteet', de: 'Anträge', fr: 'Motions', es: 'Mociones', nl: 'Moties', ar: 'اقتراحات', he: 'הצעות', ja: '動議', ko: '동의', zh: '动议' },
94
- prop: { en: 'Propositions', sv: 'Propositioner', da: 'Lovforslag', no: 'Proposisjoner', fi: 'Hallituksen esitykset', de: 'Regierungsvorlagen', fr: 'Propositions', es: 'Proposiciones', nl: 'Regeringsvoorstellen', ar: 'مقترحات حكومية', he: 'הצעות ממשלה', ja: '政府提案', ko: '정부 법안', zh: '政府提案' },
95
- bet: { en: 'Committee Reports', sv: 'Betänkanden', da: 'Betænkninger', no: 'Innstillinger', fi: 'Mietinnöt', de: 'Ausschussberichte', fr: 'Rapports de commission', es: 'Informes de comité', nl: 'Commissierapporten', ar: 'تقارير اللجان', he: 'דוחות ועדה', ja: '委員会報告', ko: '위원회 보고서', zh: '委员会报告' },
96
- skr: { en: 'Government Communications', sv: 'Skrivelser', da: 'Regeringsmeddelelser', no: 'Regjeringsmeldinger', fi: 'Hallituksen kirjeet', de: 'Regierungsschreiben', fr: 'Communications gouvernementales', es: 'Comunicaciones gubernamentales', nl: 'Regeringsmededelingen', ar: 'مراسلات حكومية', he: 'תקשורות ממשלתיות', ja: '政府通知', ko: '정부 서한', zh: '政府通知' },
97
- };
98
- for (const docType of sortedTypes) {
99
- const typeDocs = byType[docType] ?? [];
100
- const otherDocsVal = L(lang, 'otherDocuments');
101
- const otherDocsLabel = typeof otherDocsVal === 'string' ? otherDocsVal : 'Other documents';
102
- const langLabels = docTypeLabels[docType];
103
- const typeLabel = langLabels
104
- ? (langLabels[lang] ?? langLabels['sv'] ?? docType)
105
- : docType === 'other' ? otherDocsLabel : docType;
106
- content += `\n <h3>${escapeHtml(typeLabel)} (${typeDocs.length})</h3>\n`;
107
- // ── Per-document deep analysis ───────────────────────────────────────
108
- for (const doc of typeDocs) {
109
- const titleText = doc.titel || doc.title || '';
110
- const escapedTitle = escapeHtml(titleText);
111
- const titleHtml = (doc.titel && !doc.title)
112
- ? svSpan(escapedTitle, lang)
113
- : escapedTitle;
114
- const analysis = generateDocumentIntelligenceAnalysis(doc, docType, cia, lang);
115
- const dateHtml = formatDocumentDate(doc, lang);
116
- content += ` <div class="document-entry">\n`;
117
- content += ` <h4>${titleHtml}</h4>\n`;
118
- if (dateHtml)
119
- content += ` <p>${dateHtml}</p>\n`;
120
- content += ` <p>${analysis}</p>\n`;
121
- if (doc.url) {
122
- content += ` <p><a href="${sanitizeUrl(doc.url)}" class="document-link" rel="noopener noreferrer">${escapeHtml(doc.dokumentnamn || doc.dok_id || titleText)}</a></p>\n`;
123
- }
124
- content += ` </div>\n`;
125
- }
126
- }
127
- // ── Cross-type analytical sections (bring generic content closer to dedicated generators) ──
128
- // Opposition strategy when motions with multiple parties exist
129
- const motionDocs = docs.filter(d => (d.doktyp || d.documentType) === 'mot');
130
- if (motionDocs.length >= 2) {
131
- const byPartyGeneric = {};
132
- motionDocs.forEach(m => {
133
- const party = normalizePartyKey(m.parti);
134
- if (!byPartyGeneric[party])
135
- byPartyGeneric[party] = [];
136
- byPartyGeneric[party].push(m);
137
- });
138
- const partyCountGeneric = Object.keys(byPartyGeneric).filter(p => p !== 'other').length;
139
- if (partyCountGeneric > 1) {
140
- content += `\n <h2>${L(lang, 'oppositionStrategy')}</h2>\n`;
141
- content += generateOppositionStrategySection(motionDocs, lang);
142
- }
143
- }
144
- // Committee breakdown when committee reports exist
145
- const reportDocs = docs.filter(d => (d.doktyp || d.documentType) === 'bet');
146
- if (reportDocs.length >= 2) {
147
- const byCommitteeGeneric = {};
148
- reportDocs.forEach(r => {
149
- const c = r.organ || r.committee || 'unknown';
150
- byCommitteeGeneric[c] = (byCommitteeGeneric[c] || 0) + 1;
151
- });
152
- const knownCommittees = Object.entries(byCommitteeGeneric).filter(([c]) => c !== 'unknown');
153
- if (knownCommittees.length > 0) {
154
- const committeeSectionLabels = {
155
- en: 'Committee Activity', sv: 'Utskottsaktivitet', da: 'Udvalgsaktivitet',
156
- no: 'Komitéaktivitet', fi: 'Valiokuntatoiminta', de: 'Ausschusstätigkeit',
157
- fr: 'Activité des commissions', es: 'Actividad de comités', nl: 'Commissieactiviteit',
158
- ar: 'نشاط اللجان', he: 'פעילות ועדות', ja: '委員会活動', ko: '위원회 활동', zh: '委员会活动',
159
- };
160
- const committeeSectionLabel = committeeSectionLabels[lang] ?? 'Committee Activity';
161
- content += `\n <h2>${escapeHtml(committeeSectionLabel)}</h2>\n`;
162
- content += ` <div class="context-box">\n <ul>\n`;
163
- knownCommittees
164
- .sort(([, a], [, b]) => b - a)
165
- .forEach(([c, n]) => {
166
- content += ` <li>${escapeHtml(getCommitteeName(c, lang))}: ${n}</li>\n`;
167
- });
168
- content += ` </ul>\n </div>\n`;
169
- }
170
- }
171
- // Government priority signal when multiple propositions target the same committee
172
- const propDocs = docs.filter(d => (d.doktyp || d.documentType) === 'prop');
173
- if (propDocs.length >= 2) {
174
- const byPropCommittee = {};
175
- propDocs.forEach(p => {
176
- const c = p.organ || p.committee || 'unknown';
177
- byPropCommittee[c] = (byPropCommittee[c] || 0) + 1;
178
- });
179
- const sortedPropCommittees = Object.entries(byPropCommittee)
180
- .filter(([c]) => c !== 'unknown')
181
- .sort(([, a], [, b]) => b - a);
182
- if (sortedPropCommittees.length > 0 && sortedPropCommittees[0][1] >= 2) {
183
- const [topC, topN] = sortedPropCommittees[0];
184
- const topCName = escapeHtml(getCommitteeName(topC, lang));
185
- const govPriorityTemplates = {
186
- sv: (n, c) => `${n} tar emot ${c} propositioner – detta signalerar ett prioriterat politikområde.`,
187
- da: (n, c) => `${n} modtager ${c} lovforslag — et klart signal om prioritet.`,
188
- no: (n, c) => `${n} mottar ${c} proposisjoner — et signal om regjeringsprioritet.`,
189
- fi: (n, c) => `${n} vastaanottaa ${c} esitystä — merkki hallituksen painopistealueesta.`,
190
- de: (n, c) => `${n} erhält ${c} Vorlagen — ein Signal für Regierungspriorität.`,
191
- fr: (n, c) => `${n} reçoit ${c} propositions — un signal de priorité gouvernementale.`,
192
- es: (n, c) => `${n} recibe ${c} proposiciones — señal de prioridad gubernamental.`,
193
- nl: (n, c) => `${n} ontvangt ${c} voorstellen — signaal van overheidsprioriteit.`,
194
- ar: (n, c) => `${n} يستقبل ${c} مقترحات — إشارة لأولوية حكومية.`,
195
- he: (n, c) => `${n} מקבל ${c} הצעות — אות לעדיפות ממשלתית.`,
196
- ja: (n, c) => `${n}は${c}件の提案を受け取り、政府の重点分野を示しています。`,
197
- ko: (n, c) => `${n}이(가) ${c}건의 법안을 받아 정부 우선순위를 나타냅니다.`,
198
- zh: (n, c) => `${n}收到${c}项提案——表明这是政府的优先领域。`,
199
- };
200
- const govTpl = govPriorityTemplates[lang];
201
- const govNote = govTpl
202
- ? govTpl(topCName, topN)
203
- : `${topCName} receives ${topN} propositions — signalling government priority in this policy area.`;
204
- content += `\n <h2>${L(lang, 'policyImplications')}</h2>\n`;
205
- content += ` <p>${govNote}</p>\n`;
206
- }
207
- }
208
- // ── Narrative bridge to analytical outlook ───────────────────────────────
209
- const oppositionTransition = getPillarTransition(lang, 'oppositionToAhead');
210
- if (oppositionTransition) {
211
- content += ` <p class="pillar-transition">${escapeHtml(oppositionTransition)}</p>\n`;
212
- }
213
- // Deep Analysis section (5W framework + document analysis framework)
214
- if (docs.length >= 2) {
215
- const { frameworkAnalysis, perspectiveAnalysis } = analyzeDocumentsForContent(docs, lang, cia);
216
- content += generateDeepAnalysisSection({
217
- documents: docs,
218
- lang,
219
- cia,
220
- articleType: 'generic',
221
- frameworkAnalysis,
222
- perspectiveAnalysis,
223
- });
224
- }
225
- // ── Key takeaways ────────────────────────────────────────────────────────
226
- content += `\n <h2>${L(lang, 'keyTakeaways')}</h2>\n`;
227
- content += ` <div class="context-box">\n <ul>\n`;
228
- // Document type distribution (localised labels in summary too)
229
- const typeDescriptions = sortedTypes.map(docType => {
230
- const typeDocs = byType[docType] ?? [];
231
- const langLabels2 = docTypeLabels[docType];
232
- const label = langLabels2
233
- ? (langLabels2[lang] ?? langLabels2['sv'] ?? docType).toLowerCase()
234
- : docType;
235
- return `${typeDocs.length} ${label}`;
236
- });
237
- const processedLabel = L(lang, 'processedThisPeriod');
238
- const processedSuffix = typeof processedLabel === 'string' ? processedLabel : 'processed this period';
239
- if (typeDescriptions.length > 0) {
240
- content += ` <li>${escapeHtml(typeDescriptions.join(', '))} ${escapeHtml(processedSuffix)}</li>\n`;
241
- }
242
- // Policy domains — show labels only to keep the bullet concise
243
- const allDomains = new Set();
244
- const enrichedCount = docs.filter(d => d.contentFetched).length;
245
- docs.forEach(doc => {
246
- detectPolicyDomains(doc, lang).forEach(d => allDomains.add(d));
247
- });
248
- if (allDomains.size > 0) {
249
- const policyContextVal = L(lang, 'policyContext');
250
- content += ` <li>${escapeHtml(String(policyContextVal))}: ${escapeHtml(Array.from(allDomains).slice(0, 4).join('; '))}</li>\n`;
251
- }
252
- if (enrichedCount > 0) {
253
- const analysisDepthLabels = {
254
- en: 'Analysis depth', sv: 'Analysdjup', da: 'Analysedybde', no: 'Analysedybde',
255
- fi: 'Analyysisyvyys', de: 'Analysetiefe', fr: 'Profondeur d\'analyse',
256
- es: 'Profundidad del análisis', nl: 'Analysediepte', ar: 'عمق التحليل',
257
- he: 'עומק הניתוח', ja: '分析の深さ', ko: '분석 깊이', zh: '分析深度',
258
- };
259
- const depthLabel = analysisDepthLabels[lang] ?? 'Analysis depth';
260
- const ofLabels = {
261
- sv: 'av', da: 'af', no: 'av', fi: '/', de: 'von', fr: 'sur', es: 'de',
262
- nl: 'van', ar: 'من', he: 'מתוך', ja: '/', ko: '/', zh: '/',
263
- };
264
- const ofLabel = ofLabels[lang] ?? 'of';
265
- content += ` <li><strong>${escapeHtml(depthLabel)}:</strong> ${enrichedCount} ${ofLabel} ${docs.length}</li>\n`;
266
- }
267
- // ── SECONDARY: CIA context only when it changes interpretation ───────────
268
- // Razor-thin majority is actionable intelligence worth flagging once, in summary
269
- if (cia && cia.coalitionStability.majorityMargin <= 2) {
270
- const margin = cia.coalitionStability.majorityMargin;
271
- const ciaContextTemplates = {
272
- sv: m => `Historisk kontext: nuvarande ${m}-mandatsövertag innebär att en enda avhoppare kan ändra utfallet.`,
273
- da: m => `Historisk kontekst: det nuværende flertal på ${m} mandater betyder, at en enkelt afhopper kan vende resultatet.`,
274
- no: m => `Historisk kontekst: nåværende ${m}-mandats flertall betyr at en enkelt avhopper kan snu utfallet.`,
275
- fi: m => `Historiallinen konteksti: nykyinen ${m} paikan enemmistö tarkoittaa, että yksittäinen loikkari voi kääntää tuloksen.`,
276
- de: m => `Historischer Kontext: Die aktuelle ${m}-Sitze-Mehrheit bedeutet, dass ein einzelner Abweichler das Ergebnis kippen könnte.`,
277
- fr: m => `Contexte historique : la majorité actuelle de ${m} sièges signifie qu'une seule défection pourrait inverser le résultat.`,
278
- es: m => `Contexto histórico: la mayoría actual de ${m} escaños significa que una sola defección podría revertir el resultado.`,
279
- nl: m => `Historische context: de huidige meerderheid van ${m} zetels betekent dat één enkele overloper de uitkomst kan omkeren.`,
280
- ar: m => `السياق التاريخي: الأغلبية الحالية البالغة ${m} مقاعد تعني أن انشقاقاً واحداً يمكن أن يعكس النتائج.`,
281
- he: m => `הקשר היסטורי: הרוב הנוכחי של ${m} מושבים משמעו שעריקות אחת יכולה להפוך את התוצאה.`,
282
- ja: m => `歴史的背景:現在の${m}議席差は、1人の離反で結果が覆る可能性を意味します。`,
283
- ko: m => `역사적 맥락: 현재 ${m}석 차이는 단 한 명의 이탈로도 결과가 뒤집힐 수 있음을 의미합니다.`,
284
- zh: m => `历史背景:目前${m}席的多数意味着任何一位议员的倒戈都可能逆转结果。`,
285
- };
286
- const ciaTpl = ciaContextTemplates[lang];
287
- const ciaText = ciaTpl
288
- ? ciaTpl(margin)
289
- : `Historical context: the current ${margin}-seat majority means any single defection or absence could reverse outcomes this week.`;
290
- content += ` <li><small class="cia-context">${escapeHtml(ciaText)}</small></li>\n`;
291
- }
292
- content += ` </ul>\n </div>\n`;
293
- return content;
294
- }
295
- //# sourceMappingURL=generic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../../scripts/data-transformers/content-generators/generic.ts"],"names":[],"mappings":"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"}
@@ -1,84 +0,0 @@
1
- /**
2
- * @module data-transformers/content-generators
3
- * @description Barrel re-export for all per-article-type content generators.
4
- * The monolithic content-generators.ts has been decomposed into focused modules:
5
- * - **shared** — internal helpers (TITLE_SUFFIX_TEMPLATES, extractKeywords, …)
6
- * - **week-ahead** — generateWeekAheadContent
7
- * - **committee** — generateCommitteeContent
8
- * - **propositions** — generatePropositionsContent
9
- * - **motions** — generateMotionsContent
10
- * - **interpellations** — generateInterpellationsContent (dedicated, separate from motions)
11
- * - **generic** — generateGenericContent
12
- * - **monthly-review** — generateMonthlyReviewContent
13
- * - **month-ahead** — generateMonthAheadContent
14
- * - **swot-section** — generateSwotSection (embeddable SWOT analysis)
15
- * - **dashboard-section** — generateDashboardSection (embeddable Chart.js dashboard)
16
- * - **stakeholder-swot-section** — generateStakeholderSwotSection (multi-stakeholder SWOT)
17
- * - **economic-dashboard-section** — generateEconomicDashboardSection (World Bank dashboards)
18
- * - **sankey-section** — generateSankeySection (inline SVG Sankey flow charts)
19
- * - **mindmap-section** — generateMindmapSection (color-coded CSS mindmaps)
20
- * - **newsworthiness** — scoreNewsworthiness (multi-dimensional news value scoring)
21
- * - **cia-overview-section** — generateCiaOverviewSection (CIA parliamentary intelligence overview)
22
- *
23
- * @author Hack23 AB
24
- * @license Apache-2.0
25
- */
26
- export { generateWeekAheadContent } from './week-ahead.js';
27
- export { generateCommitteeContent } from './committee.js';
28
- export { generatePropositionsContent } from './propositions.js';
29
- export { generateMotionsContent } from './motions.js';
30
- export { generateInterpellationsContent } from './interpellations.js';
31
- export { generateGenericContent } from './generic.js';
32
- export { generateMonthlyReviewContent } from './monthly-review.js';
33
- export { generateMonthAheadContent } from './month-ahead.js';
34
- export { generateDeepAnalysisSection, localizeDocType, DOC_TYPE_DISPLAY, analyzeDocumentsForContent } from './shared.js';
35
- export type { DeepAnalysisOptions, DocTypeLocalization } from './shared.js';
36
- export { generateSwotSection } from './swot-section.js';
37
- export type { SwotSectionOptions } from './swot-section.js';
38
- export { generateDashboardSection, generateMultiPanelDashboardSection } from './dashboard-section.js';
39
- export type { DashboardSectionOptions, MultiPanelDashboardOptions } from './dashboard-section.js';
40
- export { generateEconomicDashboardSection, findIndicatorsForDomains, buildEconomicCharts, buildEconomicTables } from './economic-dashboard-section.js';
41
- export type { EconomicDashboardOptions, EconomicDataPoint } from './economic-dashboard-section.js';
42
- export { scoreNewsworthiness } from './newsworthiness.js';
43
- export type { NewsworthinessScore, NewsworthinessDimension } from './newsworthiness.js';
44
- export { generateMindmapSection } from './mindmap-section.js';
45
- export type { MindmapSectionOptions, MindmapBranch, MindmapBranchColor, MindmapDimension, AIMindmapItem, AIMindmapItemWeight, SubBranch, MindmapConnection } from './mindmap-section.js';
46
- export { buildAIMindmapAnalysis, buildMindmapOptionsFromAnalysis } from './ai-mindmap-analyzer.js';
47
- export type { AIMindmapAnalysis } from './ai-mindmap-analyzer.js';
48
- export { generateSankeySection } from './sankey-section.js';
49
- export type { SankeySectionOptions, SankeyNode, SankeyFlow, SankeyNodeColor } from './sankey-section.js';
50
- export { generateCiaOverviewSection } from './cia-overview-section.js';
51
- export type { CiaOverviewSectionOptions } from './cia-overview-section.js';
52
- import type { Language } from '../../types/language.js';
53
- import type { TemplateSection } from '../../types/article.js';
54
- /** Options for the stakeholder SWOT section generator */
55
- export interface StakeholderSwotSectionOptions {
56
- stakeholders: StakeholderSwot[];
57
- lang: Language;
58
- strategicContext?: string;
59
- }
60
- /** A single stakeholder's SWOT analysis */
61
- export interface StakeholderSwot {
62
- name: string;
63
- role?: string;
64
- category?: string;
65
- swot: {
66
- strengths: Array<{
67
- text: string;
68
- }>;
69
- weaknesses: Array<{
70
- text: string;
71
- }>;
72
- opportunities: Array<{
73
- text: string;
74
- }>;
75
- threats: Array<{
76
- text: string;
77
- }>;
78
- };
79
- evidenceRefs?: string[];
80
- confidenceLevel?: 'high' | 'medium' | 'low';
81
- }
82
- /** Stub: returns an empty section. Real content is AI-generated in workflows. */
83
- export declare function generateStakeholderSwotSection(_options: StakeholderSwotSectionOptions): TemplateSection;
84
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../scripts/data-transformers/content-generators/index.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * @module data-transformers/content-generators
3
- * @description Barrel re-export for all per-article-type content generators.
4
- * The monolithic content-generators.ts has been decomposed into focused modules:
5
- * - **shared** — internal helpers (TITLE_SUFFIX_TEMPLATES, extractKeywords, …)
6
- * - **week-ahead** — generateWeekAheadContent
7
- * - **committee** — generateCommitteeContent
8
- * - **propositions** — generatePropositionsContent
9
- * - **motions** — generateMotionsContent
10
- * - **interpellations** — generateInterpellationsContent (dedicated, separate from motions)
11
- * - **generic** — generateGenericContent
12
- * - **monthly-review** — generateMonthlyReviewContent
13
- * - **month-ahead** — generateMonthAheadContent
14
- * - **swot-section** — generateSwotSection (embeddable SWOT analysis)
15
- * - **dashboard-section** — generateDashboardSection (embeddable Chart.js dashboard)
16
- * - **stakeholder-swot-section** — generateStakeholderSwotSection (multi-stakeholder SWOT)
17
- * - **economic-dashboard-section** — generateEconomicDashboardSection (World Bank dashboards)
18
- * - **sankey-section** — generateSankeySection (inline SVG Sankey flow charts)
19
- * - **mindmap-section** — generateMindmapSection (color-coded CSS mindmaps)
20
- * - **newsworthiness** — scoreNewsworthiness (multi-dimensional news value scoring)
21
- * - **cia-overview-section** — generateCiaOverviewSection (CIA parliamentary intelligence overview)
22
- *
23
- * @author Hack23 AB
24
- * @license Apache-2.0
25
- */
26
- export { generateWeekAheadContent } from './week-ahead.js';
27
- export { generateCommitteeContent } from './committee.js';
28
- export { generatePropositionsContent } from './propositions.js';
29
- export { generateMotionsContent } from './motions.js';
30
- export { generateInterpellationsContent } from './interpellations.js';
31
- export { generateGenericContent } from './generic.js';
32
- export { generateMonthlyReviewContent } from './monthly-review.js';
33
- export { generateMonthAheadContent } from './month-ahead.js';
34
- export { generateDeepAnalysisSection, localizeDocType, DOC_TYPE_DISPLAY, analyzeDocumentsForContent } from './shared.js';
35
- export { generateSwotSection } from './swot-section.js';
36
- export { generateDashboardSection, generateMultiPanelDashboardSection } from './dashboard-section.js';
37
- export { generateEconomicDashboardSection, findIndicatorsForDomains, buildEconomicCharts, buildEconomicTables } from './economic-dashboard-section.js';
38
- export { scoreNewsworthiness } from './newsworthiness.js';
39
- export { generateMindmapSection } from './mindmap-section.js';
40
- export { buildAIMindmapAnalysis, buildMindmapOptionsFromAnalysis } from './ai-mindmap-analyzer.js';
41
- export { generateSankeySection } from './sankey-section.js';
42
- export { generateCiaOverviewSection } from './cia-overview-section.js';
43
- /** Stub: returns an empty section. Real content is AI-generated in workflows. */
44
- export function generateStakeholderSwotSection(_options) {
45
- return { id: 'stakeholder-swot', html: '' };
46
- }
47
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../scripts/data-transformers/content-generators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAEtG,OAAO,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEvJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAEnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AA6BvE,iFAAiF;AACjF,MAAM,UAAU,8BAA8B,CAAC,QAAuC;IACpF,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC9C,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * @module data-transformers/content-generators/interpellations
3
- * @description Generator for "interpellations" article content. Renders parliamentary
4
- * interpellations grouped by submitting party and policy theme, with accountability analysis.
5
- *
6
- * @author Hack23 AB
7
- * @license Apache-2.0
8
- */
9
- import type { Language } from '../../types/language.js';
10
- import type { ArticleContentData } from '../types.js';
11
- export declare function generateInterpellationsContent(data: ArticleContentData, lang: Language | string): string;
12
- //# sourceMappingURL=interpellations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interpellations.d.ts","sourceRoot":"","sources":["../../../../scripts/data-transformers/content-generators/interpellations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAWnE,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAoHxG"}
@@ -1,124 +0,0 @@
1
- /**
2
- * @module data-transformers/content-generators/interpellations
3
- * @description Generator for "interpellations" article content. Renders parliamentary
4
- * interpellations grouped by submitting party and policy theme, with accountability analysis.
5
- *
6
- * @author Hack23 AB
7
- * @license Apache-2.0
8
- */
9
- import { generateDeepAnalysisSection, analyzeDocumentsForContent } from './shared.js';
10
- import { escapeHtml } from '../../html-utils.js';
11
- import { getPillarTransition } from '../../editorial-pillars.js';
12
- import { L, normalizePartyKey, } from '../helpers.js';
13
- import { detectPolicyDomains } from '../policy-analysis.js';
14
- import { renderInterpellationEntry, } from '../document-analysis.js';
15
- export function generateInterpellationsContent(data, lang) {
16
- const interpellations = data.interpellations || [];
17
- let content = `<h2>${L(lang, 'interpellationsTag')}</h2>\n`;
18
- if (interpellations.length === 0) {
19
- content += `<p>${L(lang, 'noInterpellations')}</p>\n`;
20
- return content;
21
- }
22
- // Analytical lede paragraph
23
- const breakdownFn = L(lang, 'interpellationsBreakdown');
24
- const breakdownText = typeof breakdownFn === 'function'
25
- ? breakdownFn(interpellations.length)
26
- : `${interpellations.length} interpellations submitted.`;
27
- content += `<p class="article-lede">${escapeHtml(String(breakdownText))}</p>\n`;
28
- // Group interpellations by submitting party for strategic analysis
29
- const byParty = {};
30
- interpellations.forEach(interp => {
31
- const party = normalizePartyKey(interp.parti);
32
- if (!byParty[party])
33
- byParty[party] = [];
34
- byParty[party].push(interp);
35
- });
36
- const partyCount = Object.keys(byParty).filter(p => p !== 'other').length;
37
- // Parliamentary oversight strategy section with per-party analysis
38
- if (partyCount > 1) {
39
- content += `\n <h2>${L(lang, 'oppositionStrategy')}</h2>\n`;
40
- const strategyFn = L(lang, 'interpellationStrategyContext');
41
- const strategyContext = typeof strategyFn === 'function'
42
- ? strategyFn(partyCount)
43
- : `Interpellations from ${partyCount} different parties reveal coordinated parliamentary oversight efforts.`;
44
- content += ` <p>${escapeHtml(String(strategyContext))}</p>\n`;
45
- }
46
- // Group interpellations by primary policy theme for thematic analysis
47
- const byTheme = {};
48
- interpellations.forEach(interp => {
49
- const domains = detectPolicyDomains(interp, lang);
50
- const theme = domains[0] || String(L(lang, 'generalMatters'));
51
- if (!byTheme[theme])
52
- byTheme[theme] = [];
53
- byTheme[theme].push(interp);
54
- });
55
- const themeCount = Object.keys(byTheme).length;
56
- if (themeCount > 1) {
57
- content += `\n <h2>${L(lang, 'thematicAnalysis')}</h2>\n`;
58
- Object.entries(byTheme).forEach(([theme, themeInterps]) => {
59
- content += `\n <h3>${escapeHtml(theme)} (${themeInterps.length})</h3>\n`;
60
- themeInterps.forEach(interp => {
61
- // Demote entry headings one level when inside a themed section
62
- const entryHtml = renderInterpellationEntry(interp, lang);
63
- const demotedHtml = entryHtml
64
- .replace(/<h3(\b[^>]*)?>/g, '<h4$1>')
65
- .replace(/<\/h3>/g, '</h4>');
66
- content += demotedHtml;
67
- });
68
- });
69
- }
70
- else {
71
- // Single theme or no detection: flat list
72
- interpellations.forEach(interp => { content += renderInterpellationEntry(interp, lang); });
73
- }
74
- // Deep Analysis section (5W framework + document analysis framework)
75
- if (interpellations.length >= 2) {
76
- const { frameworkAnalysis, perspectiveAnalysis } = analyzeDocumentsForContent(interpellations, lang, data.ciaContext);
77
- content += generateDeepAnalysisSection({
78
- documents: interpellations,
79
- lang,
80
- cia: data.ciaContext,
81
- articleType: 'interpellations',
82
- frameworkAnalysis,
83
- perspectiveAnalysis,
84
- });
85
- }
86
- // Party accountability breakdown
87
- if (partyCount > 0) {
88
- const watchTransition = getPillarTransition(lang, 'watchToOpposition');
89
- if (watchTransition) {
90
- content += ` <p class="pillar-transition">${escapeHtml(watchTransition)}</p>\n`;
91
- }
92
- content += `\n <h2>${L(lang, 'coalitionDynamics')}</h2>\n`;
93
- content += ` <div class="context-box">\n <ul>\n`;
94
- Object.entries(byParty).forEach(([party, partyInterps]) => {
95
- if (party !== 'other') {
96
- const detailFn = L(lang, 'partyInterpellationsFiled');
97
- const detail = typeof detailFn === 'function'
98
- ? detailFn(party, partyInterps.length)
99
- : `${party}: ${partyInterps.length} interpellations filed`;
100
- content += ` <li>${escapeHtml(String(detail))}</li>\n`;
101
- }
102
- });
103
- content += ` </ul>\n </div>\n`;
104
- }
105
- // Government department engagement section
106
- const govDeptData = data.govDeptData ?? [];
107
- if (govDeptData.length > 0) {
108
- content += `\n <h2>${L(lang, 'govEngagement')}</h2>\n`;
109
- content += ` <div class="context-box">\n <ul>\n`;
110
- govDeptData.slice(0, 5).forEach(dept => {
111
- const deptName = escapeHtml(String(dept['name'] ?? dept['departement'] ?? dept['department'] ?? ''));
112
- const deptCount = dept['count'] ?? dept['total'] ?? dept['document_count'];
113
- if (deptName) {
114
- const hasDeptCount = deptCount !== null && deptCount !== undefined;
115
- content += hasDeptCount
116
- ? ` <li><strong>${deptName}</strong> (${escapeHtml(String(deptCount))})</li>\n`
117
- : ` <li><strong>${deptName}</strong></li>\n`;
118
- }
119
- });
120
- content += ` </ul>\n </div>\n`;
121
- }
122
- return content;
123
- }
124
- //# sourceMappingURL=interpellations.js.map