riksdagsmonitor 0.8.12 → 0.8.15

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 (779) hide show
  1. package/dist/lib/cia/dashboard-init.d.ts +26 -0
  2. package/dist/lib/cia/dashboard-init.d.ts.map +1 -0
  3. package/dist/lib/cia/dashboard-init.js +108 -0
  4. package/dist/lib/cia/dashboard-init.js.map +1 -0
  5. package/dist/lib/cia/data-loader.d.ts +408 -0
  6. package/dist/lib/cia/data-loader.d.ts.map +1 -0
  7. package/dist/lib/cia/data-loader.js +867 -0
  8. package/dist/lib/cia/data-loader.js.map +1 -0
  9. package/dist/lib/cia/election-predictions.d.ts +78 -0
  10. package/dist/lib/cia/election-predictions.d.ts.map +1 -0
  11. package/dist/lib/cia/election-predictions.js +259 -0
  12. package/dist/lib/cia/election-predictions.js.map +1 -0
  13. package/dist/lib/cia/i18n-translations.d.ts +111 -0
  14. package/dist/lib/cia/i18n-translations.d.ts.map +1 -0
  15. package/dist/lib/cia/i18n-translations.js +619 -0
  16. package/dist/lib/cia/i18n-translations.js.map +1 -0
  17. package/dist/lib/cia/visualizations.d.ts +64 -0
  18. package/dist/lib/cia/visualizations.d.ts.map +1 -0
  19. package/dist/lib/cia/visualizations.js +662 -0
  20. package/dist/lib/cia/visualizations.js.map +1 -0
  21. package/dist/lib/dashboards/anomaly-detection.d.ts +44 -0
  22. package/dist/lib/dashboards/anomaly-detection.d.ts.map +1 -0
  23. package/dist/lib/dashboards/anomaly-detection.js +1017 -0
  24. package/dist/lib/dashboards/anomaly-detection.js.map +1 -0
  25. package/dist/lib/dashboards/coalition-dashboard.d.ts +36 -0
  26. package/dist/lib/dashboards/coalition-dashboard.d.ts.map +1 -0
  27. package/dist/lib/dashboards/coalition-dashboard.js +629 -0
  28. package/dist/lib/dashboards/coalition-dashboard.js.map +1 -0
  29. package/dist/lib/dashboards/coalition-loader.d.ts +43 -0
  30. package/dist/lib/dashboards/coalition-loader.d.ts.map +1 -0
  31. package/dist/lib/dashboards/coalition-loader.js +665 -0
  32. package/dist/lib/dashboards/coalition-loader.js.map +1 -0
  33. package/dist/lib/dashboards/committees-dashboard.d.ts +23 -0
  34. package/dist/lib/dashboards/committees-dashboard.d.ts.map +1 -0
  35. package/dist/lib/dashboards/committees-dashboard.js +886 -0
  36. package/dist/lib/dashboards/committees-dashboard.js.map +1 -0
  37. package/dist/lib/dashboards/election-cycle.d.ts +62 -0
  38. package/dist/lib/dashboards/election-cycle.d.ts.map +1 -0
  39. package/dist/lib/dashboards/election-cycle.js +484 -0
  40. package/dist/lib/dashboards/election-cycle.js.map +1 -0
  41. package/dist/lib/dashboards/ministry-dashboard.d.ts +46 -0
  42. package/dist/lib/dashboards/ministry-dashboard.d.ts.map +1 -0
  43. package/dist/lib/dashboards/ministry-dashboard.js +1114 -0
  44. package/dist/lib/dashboards/ministry-dashboard.js.map +1 -0
  45. package/dist/lib/dashboards/party-dashboard.d.ts +56 -0
  46. package/dist/lib/dashboards/party-dashboard.d.ts.map +1 -0
  47. package/dist/lib/dashboards/party-dashboard.js +981 -0
  48. package/dist/lib/dashboards/party-dashboard.js.map +1 -0
  49. package/dist/lib/dashboards/politician-dashboard.d.ts +41 -0
  50. package/dist/lib/dashboards/politician-dashboard.d.ts.map +1 -0
  51. package/dist/lib/dashboards/politician-dashboard.js +611 -0
  52. package/dist/lib/dashboards/politician-dashboard.js.map +1 -0
  53. package/dist/lib/dashboards/pre-election.d.ts +64 -0
  54. package/dist/lib/dashboards/pre-election.d.ts.map +1 -0
  55. package/dist/lib/dashboards/pre-election.js +604 -0
  56. package/dist/lib/dashboards/pre-election.js.map +1 -0
  57. package/dist/lib/dashboards/risk-dashboard.d.ts +37 -0
  58. package/dist/lib/dashboards/risk-dashboard.d.ts.map +1 -0
  59. package/dist/lib/dashboards/risk-dashboard.js +863 -0
  60. package/dist/lib/dashboards/risk-dashboard.js.map +1 -0
  61. package/dist/lib/dashboards/seasonal-patterns.d.ts +24 -0
  62. package/dist/lib/dashboards/seasonal-patterns.d.ts.map +1 -0
  63. package/dist/lib/dashboards/seasonal-patterns.js +535 -0
  64. package/dist/lib/dashboards/seasonal-patterns.js.map +1 -0
  65. package/dist/lib/dashboards/stats-loader.d.ts +35 -0
  66. package/dist/lib/dashboards/stats-loader.d.ts.map +1 -0
  67. package/dist/lib/dashboards/stats-loader.js +145 -0
  68. package/dist/lib/dashboards/stats-loader.js.map +1 -0
  69. package/dist/lib/shared/chart-factory.d.ts.map +1 -0
  70. package/dist/lib/shared/chart-factory.js.map +1 -0
  71. package/dist/lib/shared/data-loader.d.ts.map +1 -0
  72. package/dist/lib/shared/data-loader.js.map +1 -0
  73. package/dist/lib/shared/dom-utils.d.ts.map +1 -0
  74. package/dist/lib/shared/dom-utils.js.map +1 -0
  75. package/dist/lib/shared/error-boundary.d.ts.map +1 -0
  76. package/dist/lib/shared/error-boundary.js.map +1 -0
  77. package/dist/lib/shared/fallback-ui.d.ts.map +1 -0
  78. package/dist/lib/shared/fallback-ui.js.map +1 -0
  79. package/dist/lib/shared/index.d.ts.map +1 -0
  80. package/dist/lib/shared/index.js.map +1 -0
  81. package/dist/lib/shared/logger.d.ts.map +1 -0
  82. package/dist/lib/shared/logger.js.map +1 -0
  83. package/dist/lib/shared/register-globals.d.ts +14 -0
  84. package/dist/lib/shared/register-globals.d.ts.map +1 -0
  85. package/dist/lib/shared/register-globals.js +21 -0
  86. package/dist/lib/shared/register-globals.js.map +1 -0
  87. package/dist/lib/shared/theme.d.ts.map +1 -0
  88. package/dist/lib/shared/theme.js.map +1 -0
  89. package/dist/lib/shared/types.d.ts.map +1 -0
  90. package/dist/lib/shared/types.js.map +1 -0
  91. package/dist/lib/ui/back-to-top.d.ts +13 -0
  92. package/dist/lib/ui/back-to-top.d.ts.map +1 -0
  93. package/dist/lib/ui/back-to-top.js +48 -0
  94. package/dist/lib/ui/back-to-top.js.map +1 -0
  95. package/dist/scripts/ai-analysis/coalition-detector.d.ts +28 -0
  96. package/dist/scripts/ai-analysis/coalition-detector.d.ts.map +1 -0
  97. package/dist/scripts/ai-analysis/coalition-detector.js +242 -0
  98. package/dist/scripts/ai-analysis/coalition-detector.js.map +1 -0
  99. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts +73 -0
  100. package/dist/scripts/ai-analysis/dashboard-analyzer.d.ts.map +1 -0
  101. package/dist/scripts/ai-analysis/dashboard-analyzer.js +511 -0
  102. package/dist/scripts/ai-analysis/dashboard-analyzer.js.map +1 -0
  103. package/dist/scripts/ai-analysis/document-analyzer.d.ts +196 -0
  104. package/dist/scripts/ai-analysis/document-analyzer.d.ts.map +1 -0
  105. package/dist/scripts/ai-analysis/document-analyzer.js +1001 -0
  106. package/dist/scripts/ai-analysis/document-analyzer.js.map +1 -0
  107. package/dist/scripts/ai-analysis/domains/index.d.ts +15 -0
  108. package/dist/scripts/ai-analysis/domains/index.d.ts.map +1 -0
  109. package/dist/scripts/ai-analysis/domains/index.js +494 -0
  110. package/dist/scripts/ai-analysis/domains/index.js.map +1 -0
  111. package/dist/scripts/ai-analysis/helpers.d.ts +43 -0
  112. package/dist/scripts/ai-analysis/helpers.d.ts.map +1 -0
  113. package/dist/scripts/ai-analysis/helpers.js +79 -0
  114. package/dist/scripts/ai-analysis/helpers.js.map +1 -0
  115. package/dist/scripts/ai-analysis/index.d.ts +15 -0
  116. package/dist/scripts/ai-analysis/index.d.ts.map +1 -0
  117. package/dist/scripts/ai-analysis/index.js +14 -0
  118. package/dist/scripts/ai-analysis/index.js.map +1 -0
  119. package/dist/scripts/ai-analysis/pipeline.d.ts +41 -0
  120. package/dist/scripts/ai-analysis/pipeline.d.ts.map +1 -0
  121. package/dist/scripts/ai-analysis/pipeline.js +208 -0
  122. package/dist/scripts/ai-analysis/pipeline.js.map +1 -0
  123. package/dist/scripts/ai-analysis/political-significance.d.ts +63 -0
  124. package/dist/scripts/ai-analysis/political-significance.d.ts.map +1 -0
  125. package/dist/scripts/ai-analysis/political-significance.js +227 -0
  126. package/dist/scripts/ai-analysis/political-significance.js.map +1 -0
  127. package/dist/scripts/ai-analysis/quality-assessor.d.ts +104 -0
  128. package/dist/scripts/ai-analysis/quality-assessor.d.ts.map +1 -0
  129. package/dist/scripts/ai-analysis/quality-assessor.js +554 -0
  130. package/dist/scripts/ai-analysis/quality-assessor.js.map +1 -0
  131. package/dist/scripts/ai-analysis/swot/index.d.ts +56 -0
  132. package/dist/scripts/ai-analysis/swot/index.d.ts.map +1 -0
  133. package/dist/scripts/ai-analysis/swot/index.js +360 -0
  134. package/dist/scripts/ai-analysis/swot/index.js.map +1 -0
  135. package/dist/scripts/ai-analysis/swot/placeholders.d.ts +30 -0
  136. package/dist/scripts/ai-analysis/swot/placeholders.d.ts.map +1 -0
  137. package/dist/scripts/ai-analysis/swot/placeholders.js +381 -0
  138. package/dist/scripts/ai-analysis/swot/placeholders.js.map +1 -0
  139. package/dist/scripts/ai-analysis/types.d.ts +333 -0
  140. package/dist/scripts/ai-analysis/types.d.ts.map +1 -0
  141. package/dist/scripts/ai-analysis/types.js +19 -0
  142. package/dist/scripts/ai-analysis/types.js.map +1 -0
  143. package/dist/scripts/ai-analysis/visualisation/index.d.ts +15 -0
  144. package/dist/scripts/ai-analysis/visualisation/index.d.ts.map +1 -0
  145. package/dist/scripts/ai-analysis/visualisation/index.js +179 -0
  146. package/dist/scripts/ai-analysis/visualisation/index.js.map +1 -0
  147. package/dist/scripts/analysis-framework/cross-reference.d.ts +35 -0
  148. package/dist/scripts/analysis-framework/cross-reference.d.ts.map +1 -0
  149. package/dist/scripts/analysis-framework/cross-reference.js +290 -0
  150. package/dist/scripts/analysis-framework/cross-reference.js.map +1 -0
  151. package/dist/scripts/analysis-framework/index.d.ts +79 -0
  152. package/dist/scripts/analysis-framework/index.d.ts.map +1 -0
  153. package/dist/scripts/analysis-framework/index.js +133 -0
  154. package/dist/scripts/analysis-framework/index.js.map +1 -0
  155. package/dist/scripts/analysis-framework/lenses/citizen.d.ts +29 -0
  156. package/dist/scripts/analysis-framework/lenses/citizen.d.ts.map +1 -0
  157. package/dist/scripts/analysis-framework/lenses/citizen.js +220 -0
  158. package/dist/scripts/analysis-framework/lenses/citizen.js.map +1 -0
  159. package/dist/scripts/analysis-framework/lenses/economic.d.ts +29 -0
  160. package/dist/scripts/analysis-framework/lenses/economic.d.ts.map +1 -0
  161. package/dist/scripts/analysis-framework/lenses/economic.js +227 -0
  162. package/dist/scripts/analysis-framework/lenses/economic.js.map +1 -0
  163. package/dist/scripts/analysis-framework/lenses/government.d.ts +32 -0
  164. package/dist/scripts/analysis-framework/lenses/government.d.ts.map +1 -0
  165. package/dist/scripts/analysis-framework/lenses/government.js +265 -0
  166. package/dist/scripts/analysis-framework/lenses/government.js.map +1 -0
  167. package/dist/scripts/analysis-framework/lenses/international.d.ts +29 -0
  168. package/dist/scripts/analysis-framework/lenses/international.d.ts.map +1 -0
  169. package/dist/scripts/analysis-framework/lenses/international.js +248 -0
  170. package/dist/scripts/analysis-framework/lenses/international.js.map +1 -0
  171. package/dist/scripts/analysis-framework/lenses/media.d.ts +29 -0
  172. package/dist/scripts/analysis-framework/lenses/media.d.ts.map +1 -0
  173. package/dist/scripts/analysis-framework/lenses/media.js +211 -0
  174. package/dist/scripts/analysis-framework/lenses/media.js.map +1 -0
  175. package/dist/scripts/analysis-framework/lenses/opposition.d.ts +29 -0
  176. package/dist/scripts/analysis-framework/lenses/opposition.d.ts.map +1 -0
  177. package/dist/scripts/analysis-framework/lenses/opposition.js +234 -0
  178. package/dist/scripts/analysis-framework/lenses/opposition.js.map +1 -0
  179. package/dist/scripts/analysis-framework/methodology-types.d.ts +309 -0
  180. package/dist/scripts/analysis-framework/methodology-types.d.ts.map +1 -0
  181. package/dist/scripts/analysis-framework/methodology-types.js +38 -0
  182. package/dist/scripts/analysis-framework/methodology-types.js.map +1 -0
  183. package/dist/scripts/analysis-framework/political-classification.d.ts +58 -0
  184. package/dist/scripts/analysis-framework/political-classification.d.ts.map +1 -0
  185. package/dist/scripts/analysis-framework/political-classification.js +414 -0
  186. package/dist/scripts/analysis-framework/political-classification.js.map +1 -0
  187. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts +74 -0
  188. package/dist/scripts/analysis-framework/political-risk-assessment.d.ts.map +1 -0
  189. package/dist/scripts/analysis-framework/political-risk-assessment.js +656 -0
  190. package/dist/scripts/analysis-framework/political-risk-assessment.js.map +1 -0
  191. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts +65 -0
  192. package/dist/scripts/analysis-framework/political-threat-analysis.d.ts.map +1 -0
  193. package/dist/scripts/analysis-framework/political-threat-analysis.js +553 -0
  194. package/dist/scripts/analysis-framework/political-threat-analysis.js.map +1 -0
  195. package/dist/scripts/analysis-framework/significance-scorer.d.ts +62 -0
  196. package/dist/scripts/analysis-framework/significance-scorer.d.ts.map +1 -0
  197. package/dist/scripts/analysis-framework/significance-scorer.js +196 -0
  198. package/dist/scripts/analysis-framework/significance-scorer.js.map +1 -0
  199. package/dist/scripts/analysis-framework/types.d.ts +138 -0
  200. package/dist/scripts/analysis-framework/types.d.ts.map +1 -0
  201. package/dist/scripts/analysis-framework/types.js +12 -0
  202. package/dist/scripts/analysis-framework/types.js.map +1 -0
  203. package/dist/scripts/analysis-reader.d.ts +240 -0
  204. package/dist/scripts/analysis-reader.d.ts.map +1 -0
  205. package/dist/scripts/analysis-reader.js +495 -0
  206. package/dist/scripts/analysis-reader.js.map +1 -0
  207. package/dist/scripts/article-quality-enhancer.d.ts +148 -0
  208. package/dist/scripts/article-quality-enhancer.d.ts.map +1 -0
  209. package/dist/scripts/article-quality-enhancer.js +430 -0
  210. package/dist/scripts/article-quality-enhancer.js.map +1 -0
  211. package/dist/scripts/article-template/constants.d.ts +104 -0
  212. package/dist/scripts/article-template/constants.d.ts.map +1 -0
  213. package/dist/scripts/article-template/constants.js +225 -0
  214. package/dist/scripts/article-template/constants.js.map +1 -0
  215. package/dist/scripts/article-template/helpers.d.ts +83 -0
  216. package/dist/scripts/article-template/helpers.d.ts.map +1 -0
  217. package/dist/scripts/article-template/helpers.js +236 -0
  218. package/dist/scripts/article-template/helpers.js.map +1 -0
  219. package/dist/scripts/article-template/index.d.ts +39 -0
  220. package/dist/scripts/article-template/index.d.ts.map +1 -0
  221. package/dist/scripts/article-template/index.js +37 -0
  222. package/dist/scripts/article-template/index.js.map +1 -0
  223. package/dist/scripts/article-template/registry.d.ts +64 -0
  224. package/dist/scripts/article-template/registry.d.ts.map +1 -0
  225. package/dist/scripts/article-template/registry.js +405 -0
  226. package/dist/scripts/article-template/registry.js.map +1 -0
  227. package/dist/scripts/article-template/template.d.ts +18 -0
  228. package/dist/scripts/article-template/template.d.ts.map +1 -0
  229. package/dist/scripts/article-template/template.js +359 -0
  230. package/dist/scripts/article-template/template.js.map +1 -0
  231. package/dist/scripts/article-template/types.d.ts +90 -0
  232. package/dist/scripts/article-template/types.d.ts.map +1 -0
  233. package/dist/scripts/article-template/types.js +96 -0
  234. package/dist/scripts/article-template/types.js.map +1 -0
  235. package/dist/scripts/article-template.d.ts +18 -0
  236. package/dist/scripts/article-template.d.ts.map +1 -0
  237. package/dist/scripts/article-template.js +18 -0
  238. package/dist/scripts/article-template.js.map +1 -0
  239. package/dist/scripts/catalog-downloaded-data.d.ts +66 -0
  240. package/dist/scripts/catalog-downloaded-data.d.ts.map +1 -0
  241. package/dist/scripts/catalog-downloaded-data.js +239 -0
  242. package/dist/scripts/catalog-downloaded-data.js.map +1 -0
  243. package/dist/scripts/check-cia-schema-updates.d.ts +186 -0
  244. package/dist/scripts/check-cia-schema-updates.d.ts.map +1 -0
  245. package/dist/scripts/check-cia-schema-updates.js +363 -0
  246. package/dist/scripts/check-cia-schema-updates.js.map +1 -0
  247. package/dist/scripts/data-transformers/calendar.d.ts +16 -0
  248. package/dist/scripts/data-transformers/calendar.d.ts.map +1 -0
  249. package/dist/scripts/data-transformers/calendar.js +137 -0
  250. package/dist/scripts/data-transformers/calendar.js.map +1 -0
  251. package/dist/scripts/data-transformers/constants/committee-names.d.ts +15 -0
  252. package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +1 -0
  253. package/dist/scripts/data-transformers/constants/committee-names.js +30 -0
  254. package/dist/scripts/data-transformers/constants/committee-names.js.map +1 -0
  255. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +11 -0
  256. package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +1 -0
  257. package/dist/scripts/data-transformers/constants/content-labels-part1.js +900 -0
  258. package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +1 -0
  259. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +11 -0
  260. package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +1 -0
  261. package/dist/scripts/data-transformers/constants/content-labels-part2.js +900 -0
  262. package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +1 -0
  263. package/dist/scripts/data-transformers/constants/content-labels.d.ts +13 -0
  264. package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +1 -0
  265. package/dist/scripts/data-transformers/constants/content-labels.js +18 -0
  266. package/dist/scripts/data-transformers/constants/content-labels.js.map +1 -0
  267. package/dist/scripts/data-transformers/constants/index.d.ts +15 -0
  268. package/dist/scripts/data-transformers/constants/index.d.ts.map +1 -0
  269. package/dist/scripts/data-transformers/constants/index.js +15 -0
  270. package/dist/scripts/data-transformers/constants/index.js.map +1 -0
  271. package/dist/scripts/data-transformers/constants/locale-map.d.ts +13 -0
  272. package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +1 -0
  273. package/dist/scripts/data-transformers/constants/locale-map.js +17 -0
  274. package/dist/scripts/data-transformers/constants/locale-map.js.map +1 -0
  275. package/dist/scripts/data-transformers/constants.d.ts +14 -0
  276. package/dist/scripts/data-transformers/constants.d.ts.map +1 -0
  277. package/dist/scripts/data-transformers/constants.js +14 -0
  278. package/dist/scripts/data-transformers/constants.js.map +1 -0
  279. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +64 -0
  280. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +1 -0
  281. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +805 -0
  282. package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +1 -0
  283. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts +89 -0
  284. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.d.ts.map +1 -0
  285. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js +667 -0
  286. package/dist/scripts/data-transformers/content-generators/ai-swot-analyzer.js.map +1 -0
  287. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +50 -0
  288. package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +1 -0
  289. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +310 -0
  290. package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +1 -0
  291. package/dist/scripts/data-transformers/content-generators/committee.d.ts +12 -0
  292. package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +1 -0
  293. package/dist/scripts/data-transformers/content-generators/committee.js +247 -0
  294. package/dist/scripts/data-transformers/content-generators/committee.js.map +1 -0
  295. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +124 -0
  296. package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +1 -0
  297. package/dist/scripts/data-transformers/content-generators/dashboard-section.js +564 -0
  298. package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +1 -0
  299. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +82 -0
  300. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +1 -0
  301. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +321 -0
  302. package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +1 -0
  303. package/dist/scripts/data-transformers/content-generators/generic.d.ts +12 -0
  304. package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +1 -0
  305. package/dist/scripts/data-transformers/content-generators/generic.js +295 -0
  306. package/dist/scripts/data-transformers/content-generators/generic.js.map +1 -0
  307. package/dist/scripts/data-transformers/content-generators/index.d.ts +56 -0
  308. package/dist/scripts/data-transformers/content-generators/index.d.ts.map +1 -0
  309. package/dist/scripts/data-transformers/content-generators/index.js +45 -0
  310. package/dist/scripts/data-transformers/content-generators/index.js.map +1 -0
  311. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +12 -0
  312. package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +1 -0
  313. package/dist/scripts/data-transformers/content-generators/interpellations.js +124 -0
  314. package/dist/scripts/data-transformers/content-generators/interpellations.js.map +1 -0
  315. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +137 -0
  316. package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +1 -0
  317. package/dist/scripts/data-transformers/content-generators/mindmap-section.js +286 -0
  318. package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +1 -0
  319. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +17 -0
  320. package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +1 -0
  321. package/dist/scripts/data-transformers/content-generators/month-ahead.js +212 -0
  322. package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +1 -0
  323. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +17 -0
  324. package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +1 -0
  325. package/dist/scripts/data-transformers/content-generators/monthly-review.js +173 -0
  326. package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +1 -0
  327. package/dist/scripts/data-transformers/content-generators/motions.d.ts +12 -0
  328. package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +1 -0
  329. package/dist/scripts/data-transformers/content-generators/motions.js +158 -0
  330. package/dist/scripts/data-transformers/content-generators/motions.js.map +1 -0
  331. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +52 -0
  332. package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +1 -0
  333. package/dist/scripts/data-transformers/content-generators/newsworthiness.js +244 -0
  334. package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +1 -0
  335. package/dist/scripts/data-transformers/content-generators/propositions.d.ts +12 -0
  336. package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +1 -0
  337. package/dist/scripts/data-transformers/content-generators/propositions.js +263 -0
  338. package/dist/scripts/data-transformers/content-generators/propositions.js.map +1 -0
  339. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +92 -0
  340. package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +1 -0
  341. package/dist/scripts/data-transformers/content-generators/sankey-section.js +257 -0
  342. package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +1 -0
  343. package/dist/scripts/data-transformers/content-generators/shared.d.ts +81 -0
  344. package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +1 -0
  345. package/dist/scripts/data-transformers/content-generators/shared.js +913 -0
  346. package/dist/scripts/data-transformers/content-generators/shared.js.map +1 -0
  347. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts +83 -0
  348. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.d.ts.map +1 -0
  349. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js +219 -0
  350. package/dist/scripts/data-transformers/content-generators/stakeholder-swot-section.js.map +1 -0
  351. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +50 -0
  352. package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +1 -0
  353. package/dist/scripts/data-transformers/content-generators/swot-section.js +177 -0
  354. package/dist/scripts/data-transformers/content-generators/swot-section.js.map +1 -0
  355. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +12 -0
  356. package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +1 -0
  357. package/dist/scripts/data-transformers/content-generators/week-ahead.js +332 -0
  358. package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +1 -0
  359. package/dist/scripts/data-transformers/content-generators.d.ts +15 -0
  360. package/dist/scripts/data-transformers/content-generators.d.ts.map +1 -0
  361. package/dist/scripts/data-transformers/content-generators.js +14 -0
  362. package/dist/scripts/data-transformers/content-generators.js.map +1 -0
  363. package/dist/scripts/data-transformers/document-analysis.d.ts +58 -0
  364. package/dist/scripts/data-transformers/document-analysis.d.ts.map +1 -0
  365. package/dist/scripts/data-transformers/document-analysis.js +396 -0
  366. package/dist/scripts/data-transformers/document-analysis.js.map +1 -0
  367. package/dist/scripts/data-transformers/helpers.d.ts +144 -0
  368. package/dist/scripts/data-transformers/helpers.d.ts.map +1 -0
  369. package/dist/scripts/data-transformers/helpers.js +408 -0
  370. package/dist/scripts/data-transformers/helpers.js.map +1 -0
  371. package/dist/scripts/data-transformers/index.d.ts +45 -0
  372. package/dist/scripts/data-transformers/index.d.ts.map +1 -0
  373. package/dist/scripts/data-transformers/index.js +66 -0
  374. package/dist/scripts/data-transformers/index.js.map +1 -0
  375. package/dist/scripts/data-transformers/metadata.d.ts +42 -0
  376. package/dist/scripts/data-transformers/metadata.d.ts.map +1 -0
  377. package/dist/scripts/data-transformers/metadata.js +385 -0
  378. package/dist/scripts/data-transformers/metadata.js.map +1 -0
  379. package/dist/scripts/data-transformers/policy-analysis.d.ts +105 -0
  380. package/dist/scripts/data-transformers/policy-analysis.d.ts.map +1 -0
  381. package/dist/scripts/data-transformers/policy-analysis.js +686 -0
  382. package/dist/scripts/data-transformers/policy-analysis.js.map +1 -0
  383. package/dist/scripts/data-transformers/risk-analysis.d.ts +104 -0
  384. package/dist/scripts/data-transformers/risk-analysis.d.ts.map +1 -0
  385. package/dist/scripts/data-transformers/risk-analysis.js +279 -0
  386. package/dist/scripts/data-transformers/risk-analysis.js.map +1 -0
  387. package/dist/scripts/data-transformers/types.d.ts +260 -0
  388. package/dist/scripts/data-transformers/types.d.ts.map +1 -0
  389. package/dist/scripts/data-transformers/types.js +11 -0
  390. package/dist/scripts/data-transformers/types.js.map +1 -0
  391. package/dist/scripts/data-transformers.d.ts +23 -0
  392. package/dist/scripts/data-transformers.d.ts.map +1 -0
  393. package/dist/scripts/data-transformers.js +35 -0
  394. package/dist/scripts/data-transformers.js.map +1 -0
  395. package/dist/scripts/deep-inspection/index.d.ts +55 -0
  396. package/dist/scripts/deep-inspection/index.d.ts.map +1 -0
  397. package/dist/scripts/deep-inspection/index.js +66 -0
  398. package/dist/scripts/deep-inspection/index.js.map +1 -0
  399. package/dist/scripts/detect-swedish-leakage.d.ts +69 -0
  400. package/dist/scripts/detect-swedish-leakage.d.ts.map +1 -0
  401. package/dist/scripts/detect-swedish-leakage.js +417 -0
  402. package/dist/scripts/detect-swedish-leakage.js.map +1 -0
  403. package/dist/scripts/editorial-framework.d.ts +121 -0
  404. package/dist/scripts/editorial-framework.d.ts.map +1 -0
  405. package/dist/scripts/editorial-framework.js +364 -0
  406. package/dist/scripts/editorial-framework.js.map +1 -0
  407. package/dist/scripts/editorial-pillars.d.ts +43 -0
  408. package/dist/scripts/editorial-pillars.d.ts.map +1 -0
  409. package/dist/scripts/editorial-pillars.js +215 -0
  410. package/dist/scripts/editorial-pillars.js.map +1 -0
  411. package/dist/scripts/extract-news-metadata.d.ts +12 -0
  412. package/dist/scripts/extract-news-metadata.d.ts.map +1 -0
  413. package/dist/scripts/extract-news-metadata.js +107 -0
  414. package/dist/scripts/extract-news-metadata.js.map +1 -0
  415. package/dist/scripts/extract-vocabulary.d.ts +15 -0
  416. package/dist/scripts/extract-vocabulary.d.ts.map +1 -0
  417. package/dist/scripts/extract-vocabulary.js +255 -0
  418. package/dist/scripts/extract-vocabulary.js.map +1 -0
  419. package/dist/scripts/fix-article-navigation.d.ts +37 -0
  420. package/dist/scripts/fix-article-navigation.d.ts.map +1 -0
  421. package/dist/scripts/fix-article-navigation.js +198 -0
  422. package/dist/scripts/fix-article-navigation.js.map +1 -0
  423. package/dist/scripts/fix-keywords-localization.d.ts +18 -0
  424. package/dist/scripts/fix-keywords-localization.d.ts.map +1 -0
  425. package/dist/scripts/fix-keywords-localization.js +270 -0
  426. package/dist/scripts/fix-keywords-localization.js.map +1 -0
  427. package/dist/scripts/fix-old-articles-branding.d.ts +17 -0
  428. package/dist/scripts/fix-old-articles-branding.d.ts.map +1 -0
  429. package/dist/scripts/fix-old-articles-branding.js +229 -0
  430. package/dist/scripts/fix-old-articles-branding.js.map +1 -0
  431. package/dist/scripts/generate-news-backport.d.ts +16 -0
  432. package/dist/scripts/generate-news-backport.d.ts.map +1 -0
  433. package/dist/scripts/generate-news-backport.js +379 -0
  434. package/dist/scripts/generate-news-backport.js.map +1 -0
  435. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +124 -0
  436. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +1 -0
  437. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +529 -0
  438. package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +1 -0
  439. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +59 -0
  440. package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +1 -0
  441. package/dist/scripts/generate-news-enhanced/analysis-cache.js +116 -0
  442. package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +1 -0
  443. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +58 -0
  444. package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +1 -0
  445. package/dist/scripts/generate-news-enhanced/analysis-labels.js +144 -0
  446. package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +1 -0
  447. package/dist/scripts/generate-news-enhanced/config.d.ts +57 -0
  448. package/dist/scripts/generate-news-enhanced/config.d.ts.map +1 -0
  449. package/dist/scripts/generate-news-enhanced/config.js +286 -0
  450. package/dist/scripts/generate-news-enhanced/config.js.map +1 -0
  451. package/dist/scripts/generate-news-enhanced/generators.d.ts +119 -0
  452. package/dist/scripts/generate-news-enhanced/generators.d.ts.map +1 -0
  453. package/dist/scripts/generate-news-enhanced/generators.js +2108 -0
  454. package/dist/scripts/generate-news-enhanced/generators.js.map +1 -0
  455. package/dist/scripts/generate-news-enhanced/helpers.d.ts +123 -0
  456. package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +1 -0
  457. package/dist/scripts/generate-news-enhanced/helpers.js +438 -0
  458. package/dist/scripts/generate-news-enhanced/helpers.js.map +1 -0
  459. package/dist/scripts/generate-news-enhanced/index.d.ts +19 -0
  460. package/dist/scripts/generate-news-enhanced/index.d.ts.map +1 -0
  461. package/dist/scripts/generate-news-enhanced/index.js +221 -0
  462. package/dist/scripts/generate-news-enhanced/index.js.map +1 -0
  463. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +35 -0
  464. package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +1 -0
  465. package/dist/scripts/generate-news-enhanced/swot-analyzer.js +1179 -0
  466. package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +1 -0
  467. package/dist/scripts/generate-news-enhanced/types.d.ts +34 -0
  468. package/dist/scripts/generate-news-enhanced/types.d.ts.map +1 -0
  469. package/dist/scripts/generate-news-enhanced/types.js +9 -0
  470. package/dist/scripts/generate-news-enhanced/types.js.map +1 -0
  471. package/dist/scripts/generate-news-enhanced.d.ts +25 -0
  472. package/dist/scripts/generate-news-enhanced.d.ts.map +1 -0
  473. package/dist/scripts/generate-news-enhanced.js +37 -0
  474. package/dist/scripts/generate-news-enhanced.js.map +1 -0
  475. package/dist/scripts/generate-news-indexes/constants.d.ts +20 -0
  476. package/dist/scripts/generate-news-indexes/constants.d.ts.map +1 -0
  477. package/dist/scripts/generate-news-indexes/constants.js +308 -0
  478. package/dist/scripts/generate-news-indexes/constants.js.map +1 -0
  479. package/dist/scripts/generate-news-indexes/helpers.d.ts +73 -0
  480. package/dist/scripts/generate-news-indexes/helpers.d.ts.map +1 -0
  481. package/dist/scripts/generate-news-indexes/helpers.js +352 -0
  482. package/dist/scripts/generate-news-indexes/helpers.js.map +1 -0
  483. package/dist/scripts/generate-news-indexes/index.d.ts +20 -0
  484. package/dist/scripts/generate-news-indexes/index.d.ts.map +1 -0
  485. package/dist/scripts/generate-news-indexes/index.js +75 -0
  486. package/dist/scripts/generate-news-indexes/index.js.map +1 -0
  487. package/dist/scripts/generate-news-indexes/template.d.ts +25 -0
  488. package/dist/scripts/generate-news-indexes/template.d.ts.map +1 -0
  489. package/dist/scripts/generate-news-indexes/template.js +644 -0
  490. package/dist/scripts/generate-news-indexes/template.js.map +1 -0
  491. package/dist/scripts/generate-news-indexes/types.d.ts +96 -0
  492. package/dist/scripts/generate-news-indexes/types.d.ts.map +1 -0
  493. package/dist/scripts/generate-news-indexes/types.js +9 -0
  494. package/dist/scripts/generate-news-indexes/types.js.map +1 -0
  495. package/dist/scripts/generate-news-indexes.d.ts +20 -0
  496. package/dist/scripts/generate-news-indexes.d.ts.map +1 -0
  497. package/dist/scripts/generate-news-indexes.js +19 -0
  498. package/dist/scripts/generate-news-indexes.js.map +1 -0
  499. package/dist/scripts/generate-rss.d.ts +48 -0
  500. package/dist/scripts/generate-rss.d.ts.map +1 -0
  501. package/dist/scripts/generate-rss.js +299 -0
  502. package/dist/scripts/generate-rss.js.map +1 -0
  503. package/dist/scripts/generate-sitemap-html.d.ts +79 -0
  504. package/dist/scripts/generate-sitemap-html.d.ts.map +1 -0
  505. package/dist/scripts/generate-sitemap-html.js +878 -0
  506. package/dist/scripts/generate-sitemap-html.js.map +1 -0
  507. package/dist/scripts/generate-sitemap.d.ts +23 -0
  508. package/dist/scripts/generate-sitemap.d.ts.map +1 -0
  509. package/dist/scripts/generate-sitemap.js +476 -0
  510. package/dist/scripts/generate-sitemap.js.map +1 -0
  511. package/dist/scripts/generate-types-from-cia-schemas.d.ts +176 -0
  512. package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +1 -0
  513. package/dist/scripts/generate-types-from-cia-schemas.js +318 -0
  514. package/dist/scripts/generate-types-from-cia-schemas.js.map +1 -0
  515. package/dist/scripts/government-role-validator.d.ts +65 -0
  516. package/dist/scripts/government-role-validator.d.ts.map +1 -0
  517. package/dist/scripts/government-role-validator.js +217 -0
  518. package/dist/scripts/government-role-validator.js.map +1 -0
  519. package/dist/scripts/html-utils.d.ts +17 -0
  520. package/dist/scripts/html-utils.d.ts.map +1 -0
  521. package/dist/scripts/html-utils.js +29 -0
  522. package/dist/scripts/html-utils.js.map +1 -0
  523. package/dist/scripts/load-cia-stats.d.ts +89 -0
  524. package/dist/scripts/load-cia-stats.d.ts.map +1 -0
  525. package/dist/scripts/load-cia-stats.js +400 -0
  526. package/dist/scripts/load-cia-stats.js.map +1 -0
  527. package/dist/scripts/mcp-client/client.d.ts +73 -0
  528. package/dist/scripts/mcp-client/client.d.ts.map +1 -0
  529. package/dist/scripts/mcp-client/client.js +526 -0
  530. package/dist/scripts/mcp-client/client.js.map +1 -0
  531. package/dist/scripts/mcp-client/document-types.d.ts +23 -0
  532. package/dist/scripts/mcp-client/document-types.d.ts.map +1 -0
  533. package/dist/scripts/mcp-client/document-types.js +62 -0
  534. package/dist/scripts/mcp-client/document-types.js.map +1 -0
  535. package/dist/scripts/mcp-client/index.d.ts +34 -0
  536. package/dist/scripts/mcp-client/index.d.ts.map +1 -0
  537. package/dist/scripts/mcp-client/index.js +67 -0
  538. package/dist/scripts/mcp-client/index.js.map +1 -0
  539. package/dist/scripts/mcp-client/transport.d.ts +32 -0
  540. package/dist/scripts/mcp-client/transport.d.ts.map +1 -0
  541. package/dist/scripts/mcp-client/transport.js +102 -0
  542. package/dist/scripts/mcp-client/transport.js.map +1 -0
  543. package/dist/scripts/mcp-client.d.ts +18 -0
  544. package/dist/scripts/mcp-client.d.ts.map +1 -0
  545. package/dist/scripts/mcp-client.js +18 -0
  546. package/dist/scripts/mcp-client.js.map +1 -0
  547. package/dist/scripts/mcp-query-cli.d.ts +25 -0
  548. package/dist/scripts/mcp-query-cli.d.ts.map +1 -0
  549. package/dist/scripts/mcp-query-cli.js +66 -0
  550. package/dist/scripts/mcp-query-cli.js.map +1 -0
  551. package/dist/scripts/news-types/breaking-news.d.ts +178 -0
  552. package/dist/scripts/news-types/breaking-news.d.ts.map +1 -0
  553. package/dist/scripts/news-types/breaking-news.js +428 -0
  554. package/dist/scripts/news-types/breaking-news.js.map +1 -0
  555. package/dist/scripts/news-types/committee-reports.d.ts +212 -0
  556. package/dist/scripts/news-types/committee-reports.d.ts.map +1 -0
  557. package/dist/scripts/news-types/committee-reports.js +404 -0
  558. package/dist/scripts/news-types/committee-reports.js.map +1 -0
  559. package/dist/scripts/news-types/month-ahead.d.ts +71 -0
  560. package/dist/scripts/news-types/month-ahead.d.ts.map +1 -0
  561. package/dist/scripts/news-types/month-ahead.js +392 -0
  562. package/dist/scripts/news-types/month-ahead.js.map +1 -0
  563. package/dist/scripts/news-types/monthly-review.d.ts +61 -0
  564. package/dist/scripts/news-types/monthly-review.d.ts.map +1 -0
  565. package/dist/scripts/news-types/monthly-review.js +417 -0
  566. package/dist/scripts/news-types/monthly-review.js.map +1 -0
  567. package/dist/scripts/news-types/motions.d.ts +214 -0
  568. package/dist/scripts/news-types/motions.d.ts.map +1 -0
  569. package/dist/scripts/news-types/motions.js +447 -0
  570. package/dist/scripts/news-types/motions.js.map +1 -0
  571. package/dist/scripts/news-types/propositions.d.ts +204 -0
  572. package/dist/scripts/news-types/propositions.d.ts.map +1 -0
  573. package/dist/scripts/news-types/propositions.js +401 -0
  574. package/dist/scripts/news-types/propositions.js.map +1 -0
  575. package/dist/scripts/news-types/week-ahead.d.ts +231 -0
  576. package/dist/scripts/news-types/week-ahead.d.ts.map +1 -0
  577. package/dist/scripts/news-types/week-ahead.js +441 -0
  578. package/dist/scripts/news-types/week-ahead.js.map +1 -0
  579. package/dist/scripts/news-types/weekly-review/analysis.d.ts +47 -0
  580. package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +1 -0
  581. package/dist/scripts/news-types/weekly-review/analysis.js +276 -0
  582. package/dist/scripts/news-types/weekly-review/analysis.js.map +1 -0
  583. package/dist/scripts/news-types/weekly-review/data-loader.d.ts +51 -0
  584. package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +1 -0
  585. package/dist/scripts/news-types/weekly-review/data-loader.js +298 -0
  586. package/dist/scripts/news-types/weekly-review/data-loader.js.map +1 -0
  587. package/dist/scripts/news-types/weekly-review/generator.d.ts +18 -0
  588. package/dist/scripts/news-types/weekly-review/generator.d.ts.map +1 -0
  589. package/dist/scripts/news-types/weekly-review/generator.js +284 -0
  590. package/dist/scripts/news-types/weekly-review/generator.js.map +1 -0
  591. package/dist/scripts/news-types/weekly-review/index.d.ts +20 -0
  592. package/dist/scripts/news-types/weekly-review/index.d.ts.map +1 -0
  593. package/dist/scripts/news-types/weekly-review/index.js +23 -0
  594. package/dist/scripts/news-types/weekly-review/index.js.map +1 -0
  595. package/dist/scripts/news-types/weekly-review/types.d.ts +72 -0
  596. package/dist/scripts/news-types/weekly-review/types.d.ts.map +1 -0
  597. package/dist/scripts/news-types/weekly-review/types.js +20 -0
  598. package/dist/scripts/news-types/weekly-review/types.js.map +1 -0
  599. package/dist/scripts/news-types/weekly-review/validation.d.ts +10 -0
  600. package/dist/scripts/news-types/weekly-review/validation.d.ts.map +1 -0
  601. package/dist/scripts/news-types/weekly-review/validation.js +95 -0
  602. package/dist/scripts/news-types/weekly-review/validation.js.map +1 -0
  603. package/dist/scripts/news-types/weekly-review.d.ts +15 -0
  604. package/dist/scripts/news-types/weekly-review.d.ts.map +1 -0
  605. package/dist/scripts/news-types/weekly-review.js +14 -0
  606. package/dist/scripts/news-types/weekly-review.js.map +1 -0
  607. package/dist/scripts/party-variants.d.ts +23 -0
  608. package/dist/scripts/party-variants.d.ts.map +1 -0
  609. package/dist/scripts/party-variants.js +50 -0
  610. package/dist/scripts/party-variants.js.map +1 -0
  611. package/dist/scripts/pipeline/index.d.ts +19 -0
  612. package/dist/scripts/pipeline/index.d.ts.map +1 -0
  613. package/dist/scripts/pipeline/index.js +17 -0
  614. package/dist/scripts/pipeline/index.js.map +1 -0
  615. package/dist/scripts/pipeline/orchestrator.d.ts +56 -0
  616. package/dist/scripts/pipeline/orchestrator.d.ts.map +1 -0
  617. package/dist/scripts/pipeline/orchestrator.js +147 -0
  618. package/dist/scripts/pipeline/orchestrator.js.map +1 -0
  619. package/dist/scripts/pipeline/types.d.ts +117 -0
  620. package/dist/scripts/pipeline/types.d.ts.map +1 -0
  621. package/dist/scripts/pipeline/types.js +13 -0
  622. package/dist/scripts/pipeline/types.js.map +1 -0
  623. package/dist/scripts/pipeline/validation.d.ts +66 -0
  624. package/dist/scripts/pipeline/validation.d.ts.map +1 -0
  625. package/dist/scripts/pipeline/validation.js +129 -0
  626. package/dist/scripts/pipeline/validation.js.map +1 -0
  627. package/dist/scripts/populate-analysis-data.d.ts +41 -0
  628. package/dist/scripts/populate-analysis-data.d.ts.map +1 -0
  629. package/dist/scripts/populate-analysis-data.js +255 -0
  630. package/dist/scripts/populate-analysis-data.js.map +1 -0
  631. package/dist/scripts/pre-article-analysis/data-downloader.d.ts +80 -0
  632. package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +1 -0
  633. package/dist/scripts/pre-article-analysis/data-downloader.js +230 -0
  634. package/dist/scripts/pre-article-analysis/data-downloader.js.map +1 -0
  635. package/dist/scripts/pre-article-analysis/data-persistence.d.ts +141 -0
  636. package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +1 -0
  637. package/dist/scripts/pre-article-analysis/data-persistence.js +345 -0
  638. package/dist/scripts/pre-article-analysis/data-persistence.js.map +1 -0
  639. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +95 -0
  640. package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +1 -0
  641. package/dist/scripts/pre-article-analysis/markdown-serializer.js +648 -0
  642. package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +1 -0
  643. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +58 -0
  644. package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +1 -0
  645. package/dist/scripts/pre-article-analysis/pdf-converter.js +142 -0
  646. package/dist/scripts/pre-article-analysis/pdf-converter.js.map +1 -0
  647. package/dist/scripts/pre-article-analysis.d.ts +41 -0
  648. package/dist/scripts/pre-article-analysis.d.ts.map +1 -0
  649. package/dist/scripts/pre-article-analysis.js +578 -0
  650. package/dist/scripts/pre-article-analysis.js.map +1 -0
  651. package/dist/scripts/scb-client.d.ts +104 -0
  652. package/dist/scripts/scb-client.d.ts.map +1 -0
  653. package/dist/scripts/scb-client.js +286 -0
  654. package/dist/scripts/scb-client.js.map +1 -0
  655. package/dist/scripts/scb-context.d.ts +88 -0
  656. package/dist/scripts/scb-context.d.ts.map +1 -0
  657. package/dist/scripts/scb-context.js +307 -0
  658. package/dist/scripts/scb-context.js.map +1 -0
  659. package/dist/scripts/shared/version.d.ts +9 -0
  660. package/dist/scripts/shared/version.d.ts.map +1 -0
  661. package/dist/scripts/shared/version.js +28 -0
  662. package/dist/scripts/shared/version.js.map +1 -0
  663. package/dist/scripts/statistical-claims-detector.d.ts +119 -0
  664. package/dist/scripts/statistical-claims-detector.d.ts.map +1 -0
  665. package/dist/scripts/statistical-claims-detector.js +391 -0
  666. package/dist/scripts/statistical-claims-detector.js.map +1 -0
  667. package/dist/scripts/sync-cia-schemas.d.ts +52 -0
  668. package/dist/scripts/sync-cia-schemas.d.ts.map +1 -0
  669. package/dist/scripts/sync-cia-schemas.js +195 -0
  670. package/dist/scripts/sync-cia-schemas.js.map +1 -0
  671. package/dist/scripts/translation-dictionary.d.ts +45 -0
  672. package/dist/scripts/translation-dictionary.d.ts.map +1 -0
  673. package/dist/scripts/translation-dictionary.js +3642 -0
  674. package/dist/scripts/translation-dictionary.js.map +1 -0
  675. package/dist/scripts/types/article.d.ts +362 -0
  676. package/dist/scripts/types/article.d.ts.map +1 -0
  677. package/dist/scripts/types/article.js +6 -0
  678. package/dist/scripts/types/article.js.map +1 -0
  679. package/dist/scripts/types/content.d.ts +167 -0
  680. package/dist/scripts/types/content.d.ts.map +1 -0
  681. package/dist/scripts/types/content.js +6 -0
  682. package/dist/scripts/types/content.js.map +1 -0
  683. package/dist/scripts/types/editorial.d.ts +17 -0
  684. package/dist/scripts/types/editorial.d.ts.map +1 -0
  685. package/dist/scripts/types/editorial.js +6 -0
  686. package/dist/scripts/types/editorial.js.map +1 -0
  687. package/dist/scripts/types/language.d.ts +7 -0
  688. package/dist/scripts/types/language.d.ts.map +1 -0
  689. package/dist/scripts/types/language.js +6 -0
  690. package/dist/scripts/types/language.js.map +1 -0
  691. package/dist/scripts/types/mcp.d.ts +117 -0
  692. package/dist/scripts/types/mcp.d.ts.map +1 -0
  693. package/dist/scripts/types/mcp.js +6 -0
  694. package/dist/scripts/types/mcp.js.map +1 -0
  695. package/dist/scripts/types/party.d.ts +9 -0
  696. package/dist/scripts/types/party.d.ts.map +1 -0
  697. package/dist/scripts/types/party.js +6 -0
  698. package/dist/scripts/types/party.js.map +1 -0
  699. package/dist/scripts/types/validation.d.ts +136 -0
  700. package/dist/scripts/types/validation.d.ts.map +1 -0
  701. package/dist/scripts/types/validation.js +6 -0
  702. package/dist/scripts/types/validation.js.map +1 -0
  703. package/dist/scripts/types/workflow.d.ts +78 -0
  704. package/dist/scripts/types/workflow.d.ts.map +1 -0
  705. package/dist/scripts/types/workflow.js +6 -0
  706. package/dist/scripts/types/workflow.js.map +1 -0
  707. package/dist/scripts/update-stats-from-cia.d.ts +44 -0
  708. package/dist/scripts/update-stats-from-cia.d.ts.map +1 -0
  709. package/dist/scripts/update-stats-from-cia.js +310 -0
  710. package/dist/scripts/update-stats-from-cia.js.map +1 -0
  711. package/dist/scripts/validate-against-cia-schemas.d.ts +126 -0
  712. package/dist/scripts/validate-against-cia-schemas.d.ts.map +1 -0
  713. package/dist/scripts/validate-against-cia-schemas.js +299 -0
  714. package/dist/scripts/validate-against-cia-schemas.js.map +1 -0
  715. package/dist/scripts/validate-cross-references.d.ts +49 -0
  716. package/dist/scripts/validate-cross-references.d.ts.map +1 -0
  717. package/dist/scripts/validate-cross-references.js +183 -0
  718. package/dist/scripts/validate-cross-references.js.map +1 -0
  719. package/dist/scripts/validate-file-ownership.d.ts +68 -0
  720. package/dist/scripts/validate-file-ownership.d.ts.map +1 -0
  721. package/dist/scripts/validate-file-ownership.js +135 -0
  722. package/dist/scripts/validate-file-ownership.js.map +1 -0
  723. package/dist/scripts/validate-news-translations.d.ts +27 -0
  724. package/dist/scripts/validate-news-translations.d.ts.map +1 -0
  725. package/dist/scripts/validate-news-translations.js +258 -0
  726. package/dist/scripts/validate-news-translations.js.map +1 -0
  727. package/dist/scripts/validate-translations.d.ts +162 -0
  728. package/dist/scripts/validate-translations.d.ts.map +1 -0
  729. package/dist/scripts/validate-translations.js +378 -0
  730. package/dist/scripts/validate-translations.js.map +1 -0
  731. package/dist/scripts/workflow-state-coordinator.d.ts +354 -0
  732. package/dist/scripts/workflow-state-coordinator.d.ts.map +1 -0
  733. package/dist/scripts/workflow-state-coordinator.js +876 -0
  734. package/dist/scripts/workflow-state-coordinator.js.map +1 -0
  735. package/dist/scripts/world-bank-client.d.ts +122 -0
  736. package/dist/scripts/world-bank-client.d.ts.map +1 -0
  737. package/dist/scripts/world-bank-client.js +192 -0
  738. package/dist/scripts/world-bank-client.js.map +1 -0
  739. package/dist/scripts/world-bank-context.d.ts +88 -0
  740. package/dist/scripts/world-bank-context.d.ts.map +1 -0
  741. package/dist/scripts/world-bank-context.js +331 -0
  742. package/dist/scripts/world-bank-context.js.map +1 -0
  743. package/package.json +32 -7
  744. package/dist/lib/chart-factory.d.ts.map +0 -1
  745. package/dist/lib/chart-factory.js.map +0 -1
  746. package/dist/lib/data-loader.d.ts.map +0 -1
  747. package/dist/lib/data-loader.js.map +0 -1
  748. package/dist/lib/dom-utils.d.ts.map +0 -1
  749. package/dist/lib/dom-utils.js.map +0 -1
  750. package/dist/lib/error-boundary.d.ts.map +0 -1
  751. package/dist/lib/error-boundary.js.map +0 -1
  752. package/dist/lib/fallback-ui.d.ts.map +0 -1
  753. package/dist/lib/fallback-ui.js.map +0 -1
  754. package/dist/lib/index.d.ts.map +0 -1
  755. package/dist/lib/index.js.map +0 -1
  756. package/dist/lib/logger.d.ts.map +0 -1
  757. package/dist/lib/logger.js.map +0 -1
  758. package/dist/lib/theme.d.ts.map +0 -1
  759. package/dist/lib/theme.js.map +0 -1
  760. package/dist/lib/types.d.ts.map +0 -1
  761. package/dist/lib/types.js.map +0 -1
  762. /package/dist/lib/{chart-factory.d.ts → shared/chart-factory.d.ts} +0 -0
  763. /package/dist/lib/{chart-factory.js → shared/chart-factory.js} +0 -0
  764. /package/dist/lib/{data-loader.d.ts → shared/data-loader.d.ts} +0 -0
  765. /package/dist/lib/{data-loader.js → shared/data-loader.js} +0 -0
  766. /package/dist/lib/{dom-utils.d.ts → shared/dom-utils.d.ts} +0 -0
  767. /package/dist/lib/{dom-utils.js → shared/dom-utils.js} +0 -0
  768. /package/dist/lib/{error-boundary.d.ts → shared/error-boundary.d.ts} +0 -0
  769. /package/dist/lib/{error-boundary.js → shared/error-boundary.js} +0 -0
  770. /package/dist/lib/{fallback-ui.d.ts → shared/fallback-ui.d.ts} +0 -0
  771. /package/dist/lib/{fallback-ui.js → shared/fallback-ui.js} +0 -0
  772. /package/dist/lib/{index.d.ts → shared/index.d.ts} +0 -0
  773. /package/dist/lib/{index.js → shared/index.js} +0 -0
  774. /package/dist/lib/{logger.d.ts → shared/logger.d.ts} +0 -0
  775. /package/dist/lib/{logger.js → shared/logger.js} +0 -0
  776. /package/dist/lib/{theme.d.ts → shared/theme.d.ts} +0 -0
  777. /package/dist/lib/{theme.js → shared/theme.js} +0 -0
  778. /package/dist/lib/{types.d.ts → shared/types.d.ts} +0 -0
  779. /package/dist/lib/{types.js → shared/types.js} +0 -0
@@ -0,0 +1,310 @@
1
+ /**
2
+ * @module Intelligence/DataRefresh
3
+ * @category Intelligence Operations / Supporting Infrastructure
4
+ * @name Statistics Update from CIA Database - Automated Metrics Synchronization
5
+ *
6
+ * @description
7
+ * Automated statistics synchronization system updating riksdagsmonitor website with
8
+ * current parliamentary and historical statistics from CIA production database.
9
+ *
10
+ * @author Hack23 AB (Intelligence Metrics Team)
11
+ * @license Apache-2.0
12
+ * @version 1.6.0
13
+ */
14
+ import fs from 'fs';
15
+ import path from 'path';
16
+ import { fileURLToPath } from 'url';
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = path.dirname(__filename);
19
+ const STATS_FILE = path.join(__dirname, '..', 'cia-data', 'production-stats.json');
20
+ const INDEX_FILES = [
21
+ 'index.html',
22
+ 'index_sv.html',
23
+ 'index_da.html',
24
+ 'index_no.html',
25
+ 'index_fi.html',
26
+ 'index_de.html',
27
+ 'index_fr.html',
28
+ 'index_es.html',
29
+ 'index_nl.html',
30
+ 'index_ar.html',
31
+ 'index_he.html',
32
+ 'index_ja.html',
33
+ 'index_ko.html',
34
+ 'index_zh.html',
35
+ ];
36
+ // ---------------------------------------------------------------------------
37
+ // Functions
38
+ // ---------------------------------------------------------------------------
39
+ /**
40
+ * Load production statistics.
41
+ */
42
+ function loadStats() {
43
+ try {
44
+ const data = fs.readFileSync(STATS_FILE, 'utf8');
45
+ return JSON.parse(data);
46
+ }
47
+ catch (err) {
48
+ console.error(`Failed to load stats: ${err.message}`);
49
+ process.exit(1);
50
+ }
51
+ }
52
+ /**
53
+ * Update HTML file with new statistics.
54
+ */
55
+ function updateHTMLFile(filePath, stats) {
56
+ const { counts } = stats;
57
+ // Current MPs (official Riksdag size)
58
+ const currentMPs = 349;
59
+ // Historical politicians (all persons in CIA database)
60
+ const historicalPoliticians = counts.total_persons;
61
+ // Total votes
62
+ const totalVotes = counts.total_votes;
63
+ // Total documents
64
+ const totalDocuments = counts.total_documents;
65
+ // Rule violations
66
+ const ruleViolations = counts.total_rule_violations;
67
+ try {
68
+ let content = fs.readFileSync(filePath, 'utf8');
69
+ const originalContent = content;
70
+ let changeCount = 0;
71
+ // Language-specific descriptions (only update if explicitly defined)
72
+ const descriptions = {
73
+ 'index.html': {
74
+ heroDescription: `Real-time monitoring · Coalition predictions · Systematic transparency. 45 risk rules tracking ${currentMPs} MPs (${historicalPoliticians} historical politicians in database).`,
75
+ twitterDescription: `Real-time monitoring of ${currentMPs} MPs across 8 parties · Coalition predictions with 45 risk rules · Election forecasting · Track Swedish politics 24/7 · ${historicalPoliticians} historical politicians tracked`,
76
+ schemaDescription: `Swedish Election 2026 live intelligence platform with CIA OSINT monitoring of ${currentMPs} MPs across 8 parties. Real-time coalition predictions, 45 risk rules, and comprehensive parliamentary analysis. Database includes ${historicalPoliticians} historical politicians (1971-2024).`,
77
+ eventDescription: `Swedish Parliamentary Election scheduled for 13 September 2026. Live intelligence platform monitoring ${currentMPs} MPs across 8 parties with CIA OSINT capabilities, coalition predictions, and comprehensive risk assessment. Track voting patterns, committee activities, and political transparency in real-time. Historical database: ${historicalPoliticians} politicians tracked since 1971.`,
78
+ aboutText: `Riksdagsmonitor is a comprehensive Swedish Parliament monitoring platform that provides real-time intelligence, election forecasting, and political transparency through CIA OSINT analysis. It tracks ${currentMPs} MPs across 8 parties with 45 risk rules and comprehensive parliamentary analysis. Historical database includes ${historicalPoliticians} politicians from 1971-2024.`,
79
+ mpTrackingText: `Riksdagsmonitor tracks all ${currentMPs} Members of Parliament (MPs) in the Swedish Riksdag, monitoring their voting patterns, attendance, committee work, and debate performance in real-time. Historical database includes ${historicalPoliticians} politicians tracked since 1971.`,
80
+ dashboardDescription: `Comprehensive intelligence analysis using 45 risk rules across ${currentMPs} MPs with statistical anomaly detection (P90/P99 thresholds). Historical analysis includes ${historicalPoliticians} politicians (1971-2024).`,
81
+ riskHeatMapTitle: `Risk Level Heat Map (45 Rules × ${currentMPs} MPs)`,
82
+ featureListMPs: `${currentMPs} MPs tracked (${historicalPoliticians} historical)`,
83
+ organizationText: `Riksdagsmonitor is a live intelligence platform for Swedish Parliament monitoring using CIA OSINT capabilities, tracking ${currentMPs} MPs with 45 risk rules across 4 domains: Politician-level (20 rules), Party-level (12 rules), Committee-level (8 rules), and Ministry-level (5 rules). Historical database: ${historicalPoliticians} politicians (1971-2024).`,
84
+ electionText: `The Swedish Parliamentary Election 2026 is scheduled for September 13, 2026 (second Sunday in September). This is a nationwide election to determine the composition of the Riksdag (Swedish Parliament) with ${currentMPs} seats. Riksdagsmonitor tracks current and historical politicians (${historicalPoliticians} total since 1971).`,
85
+ monitoringText: `The platform monitors all ${currentMPs} members of the Swedish Parliament (Riksdag) across 8 political parties: Social Democrats (S), Moderates (M), Sweden Democrats (SD), Centre Party (C), Left Party (V), Christian Democrats (KD), Liberals (L), and Green Party (MP). Historical database includes ${historicalPoliticians} politicians tracked since 1971.`,
86
+ },
87
+ 'index_sv.html': {
88
+ heroDescription: `Realtidsövervakning · Koalitionsprognoser · Systematisk transparens. 45 riskregler spårar ${currentMPs} riksdagsledamöter (${historicalPoliticians} historiska politiker i databasen).`,
89
+ twitterDescription: `Realtidsövervakning av ${currentMPs} riksdagsledamöter över 8 partier · Koalitionsprognoser med 45 riskregler · Valprognos · Spåra svensk politik 24/7 · ${historicalPoliticians} historiska politiker spårade`,
90
+ schemaDescription: `Svenska valet 2026 live underrättelseplattform med CIA OSINT-övervakning av ${currentMPs} riksdagsledamöter över 8 partier. Realtidskoalitionsprognoser, 45 riskregler och omfattande parlamentarisk analys. Databasen inkluderar ${historicalPoliticians} historiska politiker (1971-2024).`,
91
+ },
92
+ // Note: Other languages (da, no, fi, de, fr, es, nl, ar, he, ja, ko, zh) preserve existing translations
93
+ };
94
+ const lang = path.basename(filePath);
95
+ const desc = descriptions[lang];
96
+ // Update meta description
97
+ const ogDescPattern = /<meta property="og:description" content="[^"]*">/;
98
+ if (ogDescPattern.test(content) && desc?.heroDescription) {
99
+ content = content.replace(ogDescPattern, `<meta property="og:description" content="${desc.heroDescription}">`);
100
+ changeCount++;
101
+ }
102
+ // Update Twitter description
103
+ const twitterDescPattern = /<meta name="twitter:description" content="[^"]*">/;
104
+ if (twitterDescPattern.test(content) && desc?.twitterDescription) {
105
+ content = content.replace(twitterDescPattern, `<meta name="twitter:description" content="${desc.twitterDescription}">`);
106
+ changeCount++;
107
+ }
108
+ // Update stats counter
109
+ const statsCounterPattern = /<span class="number" id="stat-mps">\d+<\/span>/;
110
+ if (statsCounterPattern.test(content)) {
111
+ content = content.replace(statsCounterPattern, `<span class="number" id="stat-mps">${currentMPs}</span>`);
112
+ changeCount++;
113
+ }
114
+ // Update coalition formation text
115
+ const coalitionPattern = /Formation: October 2022 \| Status: Active \| Majority: 176 seats \(of \d+ total\)/;
116
+ if (coalitionPattern.test(content)) {
117
+ content = content.replace(coalitionPattern, `Formation: October 2022 | Status: Active | Majority: 176 seats (of ${currentMPs} total)`);
118
+ changeCount++;
119
+ }
120
+ // Update dashboard description
121
+ const dashboardDescPattern = /Comprehensive intelligence analysis using 45 risk rules(?: \(detecting <span[^>]*>\d+<\/span> violations\))? across \d+ MPs with statistical anomaly detection \(P90\/P99 thresholds\)(?:[^<]*)?(?:<span[^>]*>\d+<\/span>[^.]*)?/;
122
+ if (dashboardDescPattern.test(content) && desc?.dashboardDescription) {
123
+ content = content.replace(dashboardDescPattern, desc.dashboardDescription);
124
+ changeCount++;
125
+ }
126
+ // Update risk heat map title
127
+ const riskHeatMapTitlePattern = /<h3>Risk Level Heat Map \(45 Rules × \d+ MPs\)<\/h3>/;
128
+ if (riskHeatMapTitlePattern.test(content) && desc?.riskHeatMapTitle) {
129
+ content = content.replace(riskHeatMapTitlePattern, `<h3>${desc.riskHeatMapTitle}</h3>`);
130
+ changeCount++;
131
+ }
132
+ // Update risk heat map aria-label
133
+ const riskHeatMapAriaPattern = /aria-label="Risk assessment heat map showing 45 rules by \d+ MPs"/;
134
+ if (riskHeatMapAriaPattern.test(content)) {
135
+ content = content.replace(riskHeatMapAriaPattern, `aria-label="Risk assessment heat map showing 45 rules by ${currentMPs} MPs"`);
136
+ changeCount++;
137
+ }
138
+ // Update feature list
139
+ const featureListPattern = /<li>\d+ MPs tracked( automatically)?<\/li>/;
140
+ if (featureListPattern.test(content) && desc?.featureListMPs) {
141
+ content = content.replace(featureListPattern, `<li>${desc.featureListMPs} automatically</li>`);
142
+ changeCount++;
143
+ }
144
+ // Update Schema.org descriptions
145
+ if (desc?.schemaDescription) {
146
+ const schemaDescPattern1 = /"description": "Swedish Election 2026 live intelligence platform with CIA OSINT monitoring of \d+ MPs[^"]*"/g;
147
+ content = content.replace(schemaDescPattern1, `"description": "${desc.schemaDescription}"`);
148
+ changeCount++;
149
+ }
150
+ if (desc?.eventDescription) {
151
+ const schemaDescPattern2 = /"description": "Swedish Parliamentary Election scheduled for 13 September 2026[^"]*"/g;
152
+ content = content.replace(schemaDescPattern2, `"description": "${desc.eventDescription}"`);
153
+ changeCount++;
154
+ }
155
+ if (desc?.aboutText) {
156
+ const aboutTextPattern = /"text": "Riksdagsmonitor is a comprehensive Swedish Parliament monitoring platform[^"]*"/g;
157
+ content = content.replace(aboutTextPattern, `"text": "${desc.aboutText}"`);
158
+ changeCount++;
159
+ }
160
+ if (desc?.mpTrackingText) {
161
+ const mpTrackingPattern = /"text": "Riksdagsmonitor tracks all \d+ Members of Parliament[^"]*"/g;
162
+ content = content.replace(mpTrackingPattern, `"text": "${desc.mpTrackingText}"`);
163
+ changeCount++;
164
+ }
165
+ if (desc?.organizationText) {
166
+ const orgTextPattern = /"text": "Riksdagsmonitor is a live intelligence platform for Swedish Parliament monitoring using CIA OSINT capabilities, tracking \d+ MPs[^"]*"/g;
167
+ content = content.replace(orgTextPattern, `"text": "${desc.organizationText}"`);
168
+ changeCount++;
169
+ }
170
+ if (desc?.electionText) {
171
+ const electionTextPattern = /"text": "The Swedish Parliamentary Election 2026 is scheduled for September 13, 2026[^"]*"/g;
172
+ content = content.replace(electionTextPattern, `"text": "${desc.electionText}"`);
173
+ changeCount++;
174
+ }
175
+ if (desc?.monitoringText) {
176
+ const monitoringTextPattern = /"text": "The platform monitors all \d+ members of the Swedish Parliament[^"]*"/g;
177
+ content = content.replace(monitoringTextPattern, `"text": "${desc.monitoringText}"`);
178
+ changeCount++;
179
+ }
180
+ // Update JavaScript heat map generation
181
+ const heatMapLoopPattern = /for \(let mpIdx = 0; mpIdx < \d+; mpIdx\+\+\) \{(?: \/\/ Current MPs)*/;
182
+ if (heatMapLoopPattern.test(content)) {
183
+ content = content.replace(heatMapLoopPattern, `for (let mpIdx = 0; mpIdx < ${currentMPs}; mpIdx++) { // Current MPs`);
184
+ changeCount++;
185
+ }
186
+ const heatMapHeightPattern = /const height = \d+ \* cellHeight \+ margin\.top \+ margin\.bottom;(?: \/\/ Current MPs)*/;
187
+ if (heatMapHeightPattern.test(content)) {
188
+ content = content.replace(heatMapHeightPattern, `const height = ${currentMPs} * cellHeight + margin.top + margin.bottom; // Current MPs`);
189
+ changeCount++;
190
+ }
191
+ const heatMapRangePattern = /\.range\(\[0, \d+ \* cellHeight\]\)(?: \/\/ Current MPs)*/;
192
+ if (heatMapRangePattern.test(content)) {
193
+ content = content.replace(heatMapRangePattern, `.range([0, ${currentMPs} * cellHeight]) // Current MPs`);
194
+ changeCount++;
195
+ }
196
+ const heatMapTranslatePattern = /\.translateExtent\(\[\[0, 0\], \[45 \* cellWidth, \d+ \* cellHeight\]\]\)(?: \/\/ Current MPs)*/;
197
+ if (heatMapTranslatePattern.test(content)) {
198
+ content = content.replace(heatMapTranslatePattern, `.translateExtent([[0, 0], [45 * cellWidth, ${currentMPs} * cellHeight]]) // Current MPs`);
199
+ changeCount++;
200
+ }
201
+ // Add CIA database stats comment at the top of the statistics section
202
+ const statsCommentPattern = /<!-- Statistics Section -->/;
203
+ if (statsCommentPattern.test(content)) {
204
+ const comment = `<!-- Statistics Section -->
205
+ <!-- CIA Production Database Stats (as of ${stats.metadata.last_updated}):
206
+ - Current MPs: ${currentMPs}
207
+ - Historical Politicians: ${historicalPoliticians} (1971-2024)
208
+ - Total Votes: ${totalVotes}
209
+ - Total Documents: ${totalDocuments}
210
+ - Rule Violations: ${ruleViolations}
211
+ Source: https://github.com/Hack23/cia/blob/master/service.data.impl/sample-data/extraction_summary_report.csv
212
+ -->`;
213
+ content = content.replace(statsCommentPattern, comment);
214
+ changeCount++;
215
+ }
216
+ // Write back if changed
217
+ if (content !== originalContent) {
218
+ fs.writeFileSync(filePath, content, 'utf8');
219
+ return { file: path.basename(filePath), changes: changeCount, updated: true };
220
+ }
221
+ return { file: path.basename(filePath), changes: 0, updated: false };
222
+ }
223
+ catch (err) {
224
+ console.error(`Failed to update ${filePath}: ${err.message}`);
225
+ return { file: path.basename(filePath), changes: 0, updated: false, error: err.message };
226
+ }
227
+ }
228
+ // ---------------------------------------------------------------------------
229
+ // Main
230
+ // ---------------------------------------------------------------------------
231
+ /**
232
+ * Main execution.
233
+ */
234
+ async function main() {
235
+ console.log('='.repeat(80));
236
+ console.log('Update Website Statistics from CIA Production Database');
237
+ console.log('='.repeat(80));
238
+ console.log();
239
+ // Load statistics
240
+ console.log(`Loading statistics from: ${STATS_FILE}`);
241
+ const stats = loadStats();
242
+ console.log('✅ Statistics loaded');
243
+ console.log();
244
+ console.log('Key Statistics:');
245
+ console.log(` Current MPs: 349 (official Riksdag size)`);
246
+ console.log(` Historical Politicians: ${stats.counts.total_persons.toLocaleString()} (1971-2024)`);
247
+ console.log(` Total Votes: ${stats.counts.total_votes.toLocaleString()}`);
248
+ console.log(` Total Documents: ${stats.counts.total_documents.toLocaleString()}`);
249
+ console.log(` Rule Violations: ${stats.counts.total_rule_violations.toLocaleString()}`);
250
+ console.log(` Last Updated: ${stats.metadata.last_updated}`);
251
+ console.log();
252
+ // Update HTML files
253
+ console.log(`Updating ${INDEX_FILES.length} language files...`);
254
+ console.log();
255
+ const results = [];
256
+ for (const file of INDEX_FILES) {
257
+ const filePath = path.join(__dirname, '..', file);
258
+ if (fs.existsSync(filePath)) {
259
+ const result = updateHTMLFile(filePath, stats);
260
+ results.push(result);
261
+ if (result.updated) {
262
+ console.log(`✅ ${result.file}: ${result.changes} changes`);
263
+ }
264
+ else if (result.error) {
265
+ console.log(`❌ ${result.file}: ${result.error}`);
266
+ }
267
+ else {
268
+ console.log(`⏭️ ${result.file}: No changes needed`);
269
+ }
270
+ }
271
+ else {
272
+ console.log(`⚠️ ${file}: File not found`);
273
+ }
274
+ }
275
+ console.log();
276
+ console.log('='.repeat(80));
277
+ console.log('Summary');
278
+ console.log('='.repeat(80));
279
+ const updatedCount = results.filter((r) => r.updated).length;
280
+ const totalChanges = results.reduce((sum, r) => sum + r.changes, 0);
281
+ console.log(`Files updated: ${updatedCount}/${INDEX_FILES.length}`);
282
+ console.log(`Total changes: ${totalChanges}`);
283
+ console.log();
284
+ if (updatedCount > 0) {
285
+ console.log('✅ Website statistics updated successfully');
286
+ console.log();
287
+ console.log('Next steps:');
288
+ console.log(' 1. Review changes with: git diff');
289
+ console.log(' 2. Validate HTML: npm run htmlhint');
290
+ console.log(' 3. Test locally: npm run dev');
291
+ console.log(' 4. Commit changes: git commit -am "Update statistics from CIA production database"');
292
+ }
293
+ else {
294
+ console.log('ℹ️ No files needed updating');
295
+ }
296
+ console.log();
297
+ }
298
+ // Run if executed directly
299
+ if (import.meta.url === `file://${process.argv[1]}`) {
300
+ main()
301
+ .then(() => {
302
+ process.exit(0);
303
+ })
304
+ .catch((err) => {
305
+ console.error('Fatal error:', err);
306
+ process.exit(1);
307
+ });
308
+ }
309
+ export { main as updateStats, updateHTMLFile };
310
+ //# sourceMappingURL=update-stats-from-cia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-stats-from-cia.js","sourceRoot":"","sources":["../../scripts/update-stats-from-cia.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * @module Validation/SchemaValidation
4
+ * @category Validation
5
+ *
6
+ * @title CIA Schema Validator - Data Quality Assurance Engine
7
+ *
8
+ * @description
9
+ * **INTELLIGENCE OPERATIVE PERSPECTIVE**
10
+ *
11
+ * This module serves as the critical data validation gate in the political intelligence platform,
12
+ * ensuring all CIA platform exports conform to their expected JSON schemas. Operating at the
13
+ * intersection of data integrity and threat detection, the schema validator prevents corrupted,
14
+ * tampered, or malformed data from reaching the analytical intelligence pipeline.
15
+ *
16
+ * **OPERATIONAL ARCHITECTURE:**
17
+ * The validator employs Ajv 2019 specification with strict error reporting to validate:
18
+ * - Parliamentary voting records (voteringar) - integrity critical for vote analysis
19
+ * - Member records (ledamöter) - baseline data for behavioral analysis
20
+ * - Document metadata (dokument) - chain of custody for legislative documents
21
+ * - Committee records (betänkanden) - organizational structure validation
22
+ * - Government documents (regering) - executive branch intelligence
23
+ *
24
+ * **INTELLIGENCE APPLICATIONS:**
25
+ * 1. Anomaly Detection: Schema violations trigger investigation protocols - may indicate
26
+ * data tampering, system compromise, or source reliability degradation
27
+ * 2. Data Provenance: Schema conformance provides baseline assurance for data authenticity
28
+ * 3. Pipeline Integrity: Early validation prevents corrupted data from polluting analytical
29
+ * downstream (news generation, dashboard updates, trend analysis)
30
+ * 4. Incident Response: Failed validations log detailed error chains for forensic analysis
31
+ *
32
+ * **SECURITY & COMPLIANCE:**
33
+ * - JSON Schema validation prevents injection attacks on structured data
34
+ * - Verbose error reporting supports compliance auditing (ISO 27001, GDPR)
35
+ * - Type validation ensures downstream code security (no unexpected object shapes)
36
+ * - Automatic schema updates detect when CIA platform structure evolves
37
+ *
38
+ * **OPERATIONAL NOTES:**
39
+ * - Runs pre-build as quality gate in CI/CD pipeline
40
+ * - Provides detailed error messages for debugging data integration issues
41
+ * - Supports both single-file and batch validation modes
42
+ * - Exit code 1 blocks deployment if critical data is corrupted
43
+ *
44
+ * @usage
45
+ * ```
46
+ * npm run validate-schemas # Validate all exports
47
+ * node scripts/validate-against-cia-schemas.js produktnavn # Validate one export
48
+ * ```
49
+ *
50
+ * @performance
51
+ * - Validation latency: ~50ms per export file
52
+ * - Memory usage: ~10MB for schema compilation (reusable)
53
+ * - Recommended: Run on file change events during development
54
+ *
55
+ * @intelligence Risk Assessment Matrix
56
+ * - Critical: Schema violations in vote records (affects coalition analysis)
57
+ * - High: Member record corruption (impacts behavioral tracking)
58
+ * - Medium: Document metadata errors (non-breaking for some analysis)
59
+ * - Low: Minor field validation failures (caught downstream)
60
+ *
61
+ * @osint Data Source Verification
62
+ * - Validates export consistency against published CIA schema specifications
63
+ * - Detects when CIA platform introduces breaking changes
64
+ * - Enables early detection of data quality issues at source
65
+ *
66
+ * @risk Schema Drift Detection
67
+ * - Monitors for unauthorized schema modifications in CIA exports
68
+ * - Prevents data corruption from propagating through intelligence pipeline
69
+ * - Supports incident response for suspected data integrity breaches
70
+ *
71
+ * @gdpr Data Integrity Assurance
72
+ * - Ensures member personal data conforms to expected format
73
+ * - Validates data retention classifications are preserved
74
+ * - Supports audit trail for data processing compliance
75
+ *
76
+ * @security Input Validation Hardening
77
+ * - Prevents malformed JSON from reaching processing logic
78
+ * - Detects XSS/injection attempts in document fields
79
+ * - Validates schema constraints (string lengths, numeric ranges)
80
+ *
81
+ * @author Hack23 AB (Intelligence & Open Government Initiative)
82
+ * @license Apache-2.0
83
+ * @version 2.0.0
84
+ * @since 2024-06-01
85
+ * @see https://github.com/Hack23/cia (CIA Platform Repository)
86
+ * @see schemas/cia/ (JSON Schema Definitions)
87
+ * @see Issue #89 (Data Quality Enhancement Phase)
88
+ */
89
+ import Ajv2019 from 'ajv/dist/2019.js';
90
+ import type { ErrorObject } from 'ajv';
91
+ interface ValidationResult {
92
+ product: string;
93
+ valid: boolean;
94
+ errorCount?: number;
95
+ errors?: ErrorObject[];
96
+ error?: string;
97
+ }
98
+ declare class CIASchemaValidator {
99
+ schemasDir: string;
100
+ dataDir: string;
101
+ ajv: InstanceType<typeof Ajv2019>;
102
+ results: ValidationResult[];
103
+ constructor();
104
+ /**
105
+ * Load a CIA schema by product name
106
+ */
107
+ loadCIASchema(productName: string): Promise<Record<string, unknown>>;
108
+ /**
109
+ * Validate a single export against its schema
110
+ */
111
+ validateExport(productName: string, data: unknown): Promise<boolean>;
112
+ /**
113
+ * Validate all CIA exports in the data directory
114
+ */
115
+ validateAllExports(): Promise<number>;
116
+ /**
117
+ * Save validation report
118
+ */
119
+ saveReport(): Promise<void>;
120
+ /**
121
+ * Print validation summary
122
+ */
123
+ printSummary(): void;
124
+ }
125
+ export default CIASchemaValidator;
126
+ //# sourceMappingURL=validate-against-cia-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-against-cia-schemas.d.ts","sourceRoot":"","sources":["../../scripts/validate-against-cia-schemas.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AAKH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAKvC,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,cAAM,kBAAkB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,gBAAgB,EAAE,CAAC;;IAe5B;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAc1E;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA4D1E;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAgE3C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACH,YAAY,IAAI,IAAI;CA0BrB;AAmBD,eAAe,kBAAkB,CAAC"}