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,391 +0,0 @@
1
- /**
2
- * @module Intelligence/StatisticalClaimsDetector
3
- * @description Detects and fact-checks statistical claims made by politicians
4
- * in parliamentary speeches and debates. Cross-references claimed figures
5
- * against official data from World Bank and SCB (Statistics Sweden) MCP servers.
6
- *
7
- * This enables breaking-news or commentary articles when politicians use
8
- * statistics to validate policy claims — surfacing whether the data supports
9
- * or contradicts their assertions.
10
- *
11
- * @author Hack23 AB
12
- * @license Apache-2.0
13
- */
14
- /**
15
- * Patterns for detecting statistical claims in Swedish and English political text.
16
- * Each pattern maps to a specific topic and data source for verification.
17
- */
18
- const CLAIM_PATTERNS = [
19
- // Unemployment claims
20
- {
21
- pattern: /arbetslöshet(?:en)?\s+(?:ligger\s+på|är|uppgår\s+till|(?:har\s+)?(?:sjunkit|ökat|minskat)\s+till)\s+(\d+[,.]?\d*)\s*(?:procent|%)/gi,
22
- topic: 'unemployment',
23
- verificationSource: 'both',
24
- worldBankIndicator: 'SL.UEM.TOTL.ZS',
25
- scbTableId: 'TAB5765',
26
- },
27
- {
28
- pattern: /unemployment\s+(?:rate\s+)?(?:is|stands?\s+at|(?:has\s+)?(?:fallen|risen|dropped)\s+to)\s+(\d+[,.]?\d*)\s*(?:percent|%)/gi,
29
- topic: 'unemployment',
30
- verificationSource: 'both',
31
- worldBankIndicator: 'SL.UEM.TOTL.ZS',
32
- scbTableId: 'TAB5765',
33
- },
34
- // GDP claims
35
- {
36
- pattern: /(?:BNP|bruttonationalprodukt)(?:en)?\s+(?:växer|ökar|krymper|sjunker|har\s+(?:vuxit|ökat|krympt))\s+(?:med\s+)?(\d+[,.]?\d*)\s*(?:procent|%)/gi,
37
- topic: 'gdp',
38
- verificationSource: 'both',
39
- worldBankIndicator: 'NY.GDP.MKTP.KD.ZG',
40
- scbTableId: 'TAB5802',
41
- },
42
- {
43
- pattern: /GDP\s+(?:growth\s+)?(?:grew|expanded|contracted|shrank)\s+(?:by\s+)?(\d+[,.]?\d*)\s*(?:percent|%)/gi,
44
- topic: 'gdp',
45
- verificationSource: 'both',
46
- worldBankIndicator: 'NY.GDP.MKTP.KD.ZG',
47
- scbTableId: 'TAB5802',
48
- },
49
- // Inflation claims
50
- {
51
- pattern: /inflation(?:en)?\s+(?:ligger\s+på|är|uppgår\s+till|(?:har\s+)?(?:sjunkit|ökat)\s+till)\s+(\d+[,.]?\d*)\s*(?:procent|%)/gi,
52
- topic: 'inflation',
53
- verificationSource: 'both',
54
- worldBankIndicator: 'FP.CPI.TOTL.ZG',
55
- },
56
- {
57
- pattern: /inflation\s+(?:rate\s+)?(?:is|stands?\s+at|(?:has\s+)?(?:fallen|risen)\s+to)\s+(\d+[,.]?\d*)\s*(?:percent|%)/gi,
58
- topic: 'inflation',
59
- verificationSource: 'both',
60
- worldBankIndicator: 'FP.CPI.TOTL.ZG',
61
- },
62
- // Migration claims
63
- {
64
- pattern: /(?:invandring|immigration)(?:en)?\s+(?:ligger\s+på|är|uppgår\s+till|(?:har\s+)?(?:ökat|minskat)\s+till)\s+(\d+[\s,.]?\d*)\s*(?:personer|person|människor)?/gi,
65
- topic: 'migration',
66
- verificationSource: 'scb',
67
- scbTableId: 'TAB637',
68
- },
69
- {
70
- pattern: /immigration\s+(?:stands?\s+at|(?:has\s+)?(?:risen|fallen)\s+to)\s+(\d+[\s,.]?\d*)\s*(?:people|persons?)?/gi,
71
- topic: 'migration',
72
- verificationSource: 'scb',
73
- scbTableId: 'TAB637',
74
- },
75
- // Crime statistics claims
76
- {
77
- pattern: /(?:brott|brottslighet)(?:en)?\s+(?:har\s+)?(?:ökat|minskat)\s+(?:med\s+)?(\d+[,.]?\d*)\s*(?:procent|%)/gi,
78
- topic: 'crime',
79
- verificationSource: 'scb',
80
- scbTableId: 'TAB1172',
81
- },
82
- // Defence spending claims
83
- {
84
- pattern: /försvarsutgift(?:er|erna)?\s+(?:ligger\s+på|uppgår\s+till|är)\s+(\d+[,.]?\d*)\s*(?:procent|%)\s*(?:av\s+BNP)?/gi,
85
- topic: 'defence',
86
- verificationSource: 'both',
87
- worldBankIndicator: 'MS.MIL.XPND.GD.ZS',
88
- },
89
- {
90
- pattern: /(?:military|defence|defense)\s+spending\s+(?:is|stands?\s+at)\s+(\d+[,.]?\d*)\s*(?:percent|%)\s*(?:of\s+GDP)?/gi,
91
- topic: 'defence',
92
- verificationSource: 'both',
93
- worldBankIndicator: 'MS.MIL.XPND.GD.ZS',
94
- },
95
- // Education spending claims
96
- {
97
- pattern: /utbildning(?:sutgifter|sbudget)?\s+(?:uppgår\s+till|är|ligger\s+på)\s+(\d+[,.]?\d*)\s*(?:miljarder|procent|%)/gi,
98
- topic: 'education',
99
- verificationSource: 'scb',
100
- scbTableId: 'TAB4787',
101
- },
102
- // Housing claims
103
- {
104
- pattern: /bostadsbyggande(?:t)?\s+(?:har\s+)?(?:ökat|minskat)\s+(?:med\s+)?(\d+[,.]?\d*)\s*(?:procent|%|bostäder)/gi,
105
- topic: 'housing',
106
- verificationSource: 'scb',
107
- scbTableId: 'TAB2052',
108
- },
109
- // Generic numeric claims with percent
110
- {
111
- pattern: /(\d+[,.]?\d*)\s*(?:procent|%)\s+(?:av\s+)?(?:BNP|bruttonationalprodukt)/gi,
112
- topic: 'gdp-share',
113
- verificationSource: 'scb',
114
- },
115
- ];
116
- // ---------------------------------------------------------------------------
117
- // Localized headings
118
- // ---------------------------------------------------------------------------
119
- /**
120
- * Localized section headings for fact-check sections in articles.
121
- */
122
- export const FACT_CHECK_HEADINGS = {
123
- en: {
124
- factCheck: 'Fact Check',
125
- claimVsReality: 'Claim vs. Reality',
126
- verdict: 'Verdict',
127
- dataSource: 'Data Source',
128
- },
129
- sv: {
130
- factCheck: 'Faktakoll',
131
- claimVsReality: 'Påstående kontra verklighet',
132
- verdict: 'Bedömning',
133
- dataSource: 'Datakälla',
134
- },
135
- da: {
136
- factCheck: 'Faktatjek',
137
- claimVsReality: 'Påstand kontra virkelighed',
138
- verdict: 'Vurdering',
139
- dataSource: 'Datakilde',
140
- },
141
- no: {
142
- factCheck: 'Faktasjekk',
143
- claimVsReality: 'Påstand kontra virkelighet',
144
- verdict: 'Vurdering',
145
- dataSource: 'Datakilde',
146
- },
147
- fi: {
148
- factCheck: 'Faktatarkistus',
149
- claimVsReality: 'Väite vastaan todellisuus',
150
- verdict: 'Arvio',
151
- dataSource: 'Tietolähde',
152
- },
153
- de: {
154
- factCheck: 'Faktencheck',
155
- claimVsReality: 'Behauptung vs. Realität',
156
- verdict: 'Bewertung',
157
- dataSource: 'Datenquelle',
158
- },
159
- fr: {
160
- factCheck: 'Vérification des faits',
161
- claimVsReality: 'Affirmation vs. Réalité',
162
- verdict: 'Verdict',
163
- dataSource: 'Source des données',
164
- },
165
- es: {
166
- factCheck: 'Verificación de datos',
167
- claimVsReality: 'Afirmación vs. Realidad',
168
- verdict: 'Veredicto',
169
- dataSource: 'Fuente de datos',
170
- },
171
- nl: {
172
- factCheck: 'Feitencontrole',
173
- claimVsReality: 'Bewering vs. Werkelijkheid',
174
- verdict: 'Oordeel',
175
- dataSource: 'Databron',
176
- },
177
- ar: {
178
- factCheck: 'تدقيق الحقائق',
179
- claimVsReality: 'الادعاء مقابل الواقع',
180
- verdict: 'الحكم',
181
- dataSource: 'مصدر البيانات',
182
- },
183
- he: {
184
- factCheck: 'בדיקת עובדות',
185
- claimVsReality: 'טענה מול מציאות',
186
- verdict: 'הכרעה',
187
- dataSource: 'מקור נתונים',
188
- },
189
- ja: {
190
- factCheck: 'ファクトチェック',
191
- claimVsReality: '主張 vs. 現実',
192
- verdict: '判定',
193
- dataSource: 'データソース',
194
- },
195
- ko: {
196
- factCheck: '팩트체크',
197
- claimVsReality: '주장 대 현실',
198
- verdict: '판정',
199
- dataSource: '데이터 출처',
200
- },
201
- zh: {
202
- factCheck: '事实核查',
203
- claimVsReality: '声称与现实',
204
- verdict: '判定',
205
- dataSource: '数据来源',
206
- },
207
- };
208
- // ---------------------------------------------------------------------------
209
- // Core detection functions
210
- // ---------------------------------------------------------------------------
211
- /**
212
- * Extract statistical claims from text content (speech, debate transcript, document).
213
- *
214
- * Scans for patterns where politicians cite specific numbers related to
215
- * economic indicators, social statistics, or policy metrics that can be
216
- * verified against World Bank or SCB data.
217
- *
218
- * @param text - Text content to analyze (speech transcript, article, etc.)
219
- * @param speaker - Optional speaker name
220
- * @param party - Optional party affiliation
221
- * @returns Array of detected statistical claims
222
- */
223
- export function detectStatisticalClaims(text, speaker, party) {
224
- if (!text || text.trim().length === 0) {
225
- return [];
226
- }
227
- const claims = [];
228
- const seen = new Set();
229
- for (const claimPattern of CLAIM_PATTERNS) {
230
- // Reset regex state for each iteration
231
- const pattern = new RegExp(claimPattern.pattern.source, claimPattern.pattern.flags);
232
- let match;
233
- while ((match = pattern.exec(text)) !== null) {
234
- const sourceText = match[0];
235
- // Deduplicate by source text
236
- const key = `${claimPattern.topic}:${sourceText}`;
237
- if (seen.has(key))
238
- continue;
239
- seen.add(key);
240
- // Parse the claimed numeric value
241
- let claimedValue;
242
- if (match[1]) {
243
- const normalized = match[1].replace(/\s/g, '').replace(',', '.');
244
- claimedValue = parseFloat(normalized);
245
- if (isNaN(claimedValue))
246
- claimedValue = undefined;
247
- }
248
- // Determine unit from context
249
- const claimedUnit = detectUnit(sourceText);
250
- claims.push({
251
- sourceText,
252
- topic: claimPattern.topic,
253
- claimedValue,
254
- claimedUnit,
255
- speaker,
256
- party,
257
- verificationSource: claimPattern.verificationSource,
258
- worldBankIndicator: claimPattern.worldBankIndicator,
259
- scbTableId: claimPattern.scbTableId,
260
- });
261
- }
262
- }
263
- return claims;
264
- }
265
- /**
266
- * Determine the verdict for a claim based on deviation from official data.
267
- *
268
- * @param claimedValue - The value claimed by the politician
269
- * @param officialValue - The official value from data source
270
- * @returns Verdict and deviation percentage
271
- */
272
- export function assessClaim(claimedValue, officialValue) {
273
- if (officialValue === 0) {
274
- return {
275
- verdict: claimedValue === 0 ? 'accurate' : 'unverifiable',
276
- deviationPercent: claimedValue === 0 ? 0 : 100,
277
- };
278
- }
279
- const deviation = Math.abs(claimedValue - officialValue) / Math.abs(officialValue) * 100;
280
- if (deviation <= 5) {
281
- return { verdict: 'accurate', deviationPercent: deviation };
282
- }
283
- if (deviation <= 15) {
284
- return { verdict: 'mostly-accurate', deviationPercent: deviation };
285
- }
286
- if (deviation <= 30) {
287
- return { verdict: 'misleading', deviationPercent: deviation };
288
- }
289
- return { verdict: 'inaccurate', deviationPercent: deviation };
290
- }
291
- /**
292
- * Generate a human-readable explanation for a fact-check result.
293
- *
294
- * @param claim - The statistical claim
295
- * @param officialValue - Official value (if available)
296
- * @param officialPeriod - Period of official data
297
- * @param verdict - The assessed verdict
298
- * @param lang - Language code for localization
299
- * @returns Explanation string
300
- */
301
- export function generateExplanation(claim, officialValue, officialPeriod, verdict, lang = 'en') {
302
- const isSwedish = lang === 'sv';
303
- if (verdict === 'unverifiable') {
304
- return isSwedish
305
- ? `Påståendet om ${claim.topic} kunde inte verifieras mot tillgängliga datakällor.`
306
- : `The claim about ${claim.topic} could not be verified against available data sources.`;
307
- }
308
- if (claim.claimedValue === undefined || officialValue === undefined) {
309
- return isSwedish
310
- ? `Kvantitativt påstående om ${claim.topic} detekterat men saknar verifierbart värde.`
311
- : `Quantitative claim about ${claim.topic} detected but lacks a verifiable value.`;
312
- }
313
- const sourceName = claim.verificationSource === 'scb'
314
- ? 'SCB (Statistics Sweden)'
315
- : claim.verificationSource === 'world-bank'
316
- ? 'World Bank'
317
- : 'SCB / World Bank';
318
- const period = officialPeriod ? ` (${officialPeriod})` : '';
319
- const verdictLabels = {
320
- accurate: { en: 'Accurate', sv: 'Korrekt' },
321
- 'mostly-accurate': { en: 'Mostly accurate', sv: 'I huvudsak korrekt' },
322
- misleading: { en: 'Misleading', sv: 'Missvisande' },
323
- inaccurate: { en: 'Inaccurate', sv: 'Felaktigt' },
324
- unverifiable: { en: 'Unverifiable', sv: 'Ej verifierbart' },
325
- outdated: { en: 'Outdated data', sv: 'Föråldrade data' },
326
- };
327
- const verdictLabel = isSwedish ? verdictLabels[verdict].sv : verdictLabels[verdict].en;
328
- if (isSwedish) {
329
- return `${verdictLabel}: Påstått värde ${claim.claimedValue}${claim.claimedUnit ? ' ' + claim.claimedUnit : ''} jämfört med officiellt värde ${officialValue}${period} enligt ${sourceName}.`;
330
- }
331
- return `${verdictLabel}: Claimed value ${claim.claimedValue}${claim.claimedUnit ? ' ' + claim.claimedUnit : ''} compared to official value ${officialValue}${period} from ${sourceName}.`;
332
- }
333
- /**
334
- * Get localized fact-check section heading.
335
- *
336
- * @param lang - Language code
337
- * @param section - Section key
338
- * @returns Localized heading string
339
- */
340
- export function getFactCheckHeading(lang, section) {
341
- const headings = FACT_CHECK_HEADINGS[lang] ?? FACT_CHECK_HEADINGS.en;
342
- return headings[section];
343
- }
344
- /**
345
- * Check if content contains statistical claims worth fact-checking.
346
- * Quick pre-filter before running full detection.
347
- *
348
- * @param content - Text content to check
349
- * @returns True if content likely contains statistical claims
350
- */
351
- export function hasStatisticalClaims(content) {
352
- const text = content.toLowerCase();
353
- const patterns = [
354
- /\d+[,.]?\d*\s*(?:procent|percent|%)/i,
355
- /(?:ökade?|minskade?|sjönk|steg)\s+(?:med|till)\s+\d/i,
356
- /\b(?:increased?|decreased?|fell|rose|dropped)\s+(?:by|to)\s+\d/i,
357
- /\barbetslöshet/i,
358
- /\bunemployment/i,
359
- /\bBNP\b/i,
360
- /\bGDP\b/i,
361
- /\binflation/i,
362
- /\binvandring/i,
363
- /\bimmigration\b/i,
364
- /\bbrott/i,
365
- /\bcrime\b/i,
366
- /\bförsvarsutgift/i,
367
- /\bmilitary\s+spending\b/i,
368
- ];
369
- return patterns.some((p) => p.test(text));
370
- }
371
- // ---------------------------------------------------------------------------
372
- // Internal helpers
373
- // ---------------------------------------------------------------------------
374
- /**
375
- * Detect the unit of measurement from claim text.
376
- */
377
- function detectUnit(text) {
378
- const lower = text.toLowerCase();
379
- if (/procent|percent|%/.test(lower))
380
- return 'percent';
381
- if (/miljarder/.test(lower))
382
- return 'billions SEK';
383
- if (/miljoner/.test(lower))
384
- return 'millions SEK';
385
- if (/personer|person|människor|people|persons?/.test(lower))
386
- return 'persons';
387
- if (/bostäder/.test(lower))
388
- return 'housing units';
389
- return undefined;
390
- }
391
- //# sourceMappingURL=statistical-claims-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statistical-claims-detector.js","sourceRoot":"","sources":["../../scripts/statistical-claims-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgFH;;;GAGG;AACH,MAAM,cAAc,GAA4B;IAC9C,sBAAsB;IACtB;QACE,OAAO,EAAE,qIAAqI;QAC9I,KAAK,EAAE,cAAc;QACrB,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,gBAAgB;QACpC,UAAU,EAAE,SAAS;KACtB;IACD;QACE,OAAO,EAAE,2HAA2H;QACpI,KAAK,EAAE,cAAc;QACrB,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,gBAAgB;QACpC,UAAU,EAAE,SAAS;KACtB;IACD,aAAa;IACb;QACE,OAAO,EAAE,gJAAgJ;QACzJ,KAAK,EAAE,KAAK;QACZ,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,mBAAmB;QACvC,UAAU,EAAE,SAAS;KACtB;IACD;QACE,OAAO,EAAE,qGAAqG;QAC9G,KAAK,EAAE,KAAK;QACZ,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,mBAAmB;QACvC,UAAU,EAAE,SAAS;KACtB;IACD,mBAAmB;IACnB;QACE,OAAO,EAAE,0HAA0H;QACnI,KAAK,EAAE,WAAW;QAClB,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,gBAAgB;KACrC;IACD;QACE,OAAO,EAAE,gHAAgH;QACzH,KAAK,EAAE,WAAW;QAClB,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,gBAAgB;KACrC;IACD,mBAAmB;IACnB;QACE,OAAO,EAAE,8JAA8J;QACvK,KAAK,EAAE,WAAW;QAClB,kBAAkB,EAAE,KAAK;QACzB,UAAU,EAAE,QAAQ;KACrB;IACD;QACE,OAAO,EAAE,4GAA4G;QACrH,KAAK,EAAE,WAAW;QAClB,kBAAkB,EAAE,KAAK;QACzB,UAAU,EAAE,QAAQ;KACrB;IACD,0BAA0B;IAC1B;QACE,OAAO,EAAE,0GAA0G;QACnH,KAAK,EAAE,OAAO;QACd,kBAAkB,EAAE,KAAK;QACzB,UAAU,EAAE,SAAS;KACtB;IACD,0BAA0B;IAC1B;QACE,OAAO,EAAE,iHAAiH;QAC1H,KAAK,EAAE,SAAS;QAChB,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,mBAAmB;KACxC;IACD;QACE,OAAO,EAAE,iHAAiH;QAC1H,KAAK,EAAE,SAAS;QAChB,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,mBAAmB;KACxC;IACD,4BAA4B;IAC5B;QACE,OAAO,EAAE,iHAAiH;QAC1H,KAAK,EAAE,WAAW;QAClB,kBAAkB,EAAE,KAAK;QACzB,UAAU,EAAE,SAAS;KACtB;IACD,iBAAiB;IACjB;QACE,OAAO,EAAE,2GAA2G;QACpH,KAAK,EAAE,SAAS;QAChB,kBAAkB,EAAE,KAAK;QACzB,UAAU,EAAE,SAAS;KACtB;IACD,sCAAsC;IACtC;QACE,OAAO,EAAE,2EAA2E;QACpF,KAAK,EAAE,WAAW;QAClB,kBAAkB,EAAE,KAAK;KAC1B;CACF,CAAC;AAEF,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkD;IAChF,EAAE,EAAE;QACF,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,mBAAmB;QACnC,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,aAAa;KAC1B;IACD,EAAE,EAAE;QACF,SAAS,EAAE,WAAW;QACtB,cAAc,EAAE,6BAA6B;QAC7C,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,WAAW;KACxB;IACD,EAAE,EAAE;QACF,SAAS,EAAE,WAAW;QACtB,cAAc,EAAE,4BAA4B;QAC5C,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,WAAW;KACxB;IACD,EAAE,EAAE;QACF,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,4BAA4B;QAC5C,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,WAAW;KACxB;IACD,EAAE,EAAE;QACF,SAAS,EAAE,gBAAgB;QAC3B,cAAc,EAAE,2BAA2B;QAC3C,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,YAAY;KACzB;IACD,EAAE,EAAE;QACF,SAAS,EAAE,aAAa;QACxB,cAAc,EAAE,yBAAyB;QACzC,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,aAAa;KAC1B;IACD,EAAE,EAAE;QACF,SAAS,EAAE,wBAAwB;QACnC,cAAc,EAAE,yBAAyB;QACzC,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,oBAAoB;KACjC;IACD,EAAE,EAAE;QACF,SAAS,EAAE,uBAAuB;QAClC,cAAc,EAAE,yBAAyB;QACzC,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,iBAAiB;KAC9B;IACD,EAAE,EAAE;QACF,SAAS,EAAE,gBAAgB;QAC3B,cAAc,EAAE,4BAA4B;QAC5C,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,UAAU;KACvB;IACD,EAAE,EAAE;QACF,SAAS,EAAE,eAAe;QAC1B,cAAc,EAAE,sBAAsB;QACtC,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,eAAe;KAC5B;IACD,EAAE,EAAE;QACF,SAAS,EAAE,cAAc;QACzB,cAAc,EAAE,iBAAiB;QACjC,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,aAAa;KAC1B;IACD,EAAE,EAAE;QACF,SAAS,EAAE,UAAU;QACrB,cAAc,EAAE,WAAW;QAC3B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,QAAQ;KACrB;IACD,EAAE,EAAE;QACF,SAAS,EAAE,MAAM;QACjB,cAAc,EAAE,SAAS;QACzB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,QAAQ;KACrB;IACD,EAAE,EAAE;QACF,SAAS,EAAE,MAAM;QACjB,cAAc,EAAE,OAAO;QACvB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,MAAM;KACnB;CACO,CAAC;AAEX,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,OAAgB,EAChB,KAAc;IAEd,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;QAC1C,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,IAAI,KAA6B,CAAC;QAElC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,6BAA6B;YAC7B,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEd,kCAAkC;YAClC,IAAI,YAAgC,CAAC;YACrC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjE,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;gBACtC,IAAI,KAAK,CAAC,YAAY,CAAC;oBAAE,YAAY,GAAG,SAAS,CAAC;YACpD,CAAC;YAED,8BAA8B;YAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YAE3C,MAAM,CAAC,IAAI,CAAC;gBACV,UAAU;gBACV,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,YAAY;gBACZ,WAAW;gBACX,OAAO;gBACP,KAAK;gBACL,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;gBACnD,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;gBACnD,UAAU,EAAE,YAAY,CAAC,UAAU;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,YAAoB,EACpB,aAAqB;IAErB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc;YACzD,gBAAgB,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;IAEzF,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAuB,EACvB,aAAiC,EACjC,cAAkC,EAClC,OAAqB,EACrB,OAA0B,IAAI;IAE9B,MAAM,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAEhC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,OAAO,SAAS;YACd,CAAC,CAAC,iBAAiB,KAAK,CAAC,KAAK,qDAAqD;YACnF,CAAC,CAAC,mBAAmB,KAAK,CAAC,KAAK,wDAAwD,CAAC;IAC7F,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,SAAS;YACd,CAAC,CAAC,6BAA6B,KAAK,CAAC,KAAK,4CAA4C;YACtF,CAAC,CAAC,4BAA4B,KAAK,CAAC,KAAK,yCAAyC,CAAC;IACvF,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,KAAK,KAAK;QACnD,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY;YACzC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,kBAAkB,CAAC;IAEzB,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,MAAM,aAAa,GAAqD;QACtE,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE;QAC3C,iBAAiB,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,oBAAoB,EAAE;QACtE,UAAU,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE;QACnD,UAAU,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE;QACjD,YAAY,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,iBAAiB,EAAE;QAC3D,QAAQ,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE;KACzD,CAAC;IAEF,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAEvF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,GAAG,YAAY,mBAAmB,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,iCAAiC,aAAa,GAAG,MAAM,WAAW,UAAU,GAAG,CAAC;IAChM,CAAC;IAED,OAAO,GAAG,YAAY,mBAAmB,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,+BAA+B,aAAa,GAAG,MAAM,SAAS,UAAU,GAAG,CAAC;AAC5L,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAuB,EACvB,OAAgC;IAEhC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAgB,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC;IACjF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAsB;QAClC,sCAAsC;QACtC,sDAAsD;QACtD,iEAAiE;QACjE,iBAAiB;QACjB,iBAAiB;QACjB,UAAU;QACV,UAAU;QACV,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,0BAA0B;KAC3B,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACnD,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAClD,IAAI,2CAA2C,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9E,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * @module Infrastructure/SchemaManagement
4
- * @category Intelligence Operations / Supporting Infrastructure
5
- * @name CIA Schema Synchronization - Upstream Schema Caching System
6
- *
7
- * @description
8
- * Automated schema synchronization system fetching and caching all 19 JSON schemas
9
- * from the CIA GitHub repository. Maintains local copies of data product schemas
10
- * for validation, type generation, and data consistency verification. Enables offline
11
- * operation and faster validation cycles compared to remote fetching.
12
- *
13
- * Usage:
14
- * npx tsx scripts/sync-cia-schemas.ts
15
- *
16
- * @author Hack23 AB (Data Infrastructure Team)
17
- * @license Apache-2.0
18
- * @version 1.4.0
19
- */
20
- /** Minimal shape of a JSON Schema file we fetch. */
21
- interface JsonSchema {
22
- $schema?: string;
23
- $id?: string;
24
- type?: string;
25
- version?: string;
26
- properties?: Record<string, unknown>;
27
- [key: string]: unknown;
28
- }
29
- declare class CIASchemaSync {
30
- private readonly schemasDir;
31
- private readonly metadataDir;
32
- private readonly results;
33
- constructor();
34
- /**
35
- * Fetch a single schema from CIA repository
36
- */
37
- fetchSchema(schemaName: string): Promise<JsonSchema | null>;
38
- /**
39
- * Sync all CIA schemas
40
- */
41
- syncAllSchemas(): Promise<number>;
42
- /**
43
- * Save synchronization metadata
44
- */
45
- saveMetadata(): Promise<void>;
46
- /**
47
- * Print synchronization summary
48
- */
49
- printSummary(): void;
50
- }
51
- export default CIASchemaSync;
52
- //# sourceMappingURL=sync-cia-schemas.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-cia-schemas.d.ts","sourceRoot":"","sources":["../../scripts/sync-cia-schemas.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AA6EH,oDAAoD;AACpD,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;;IAYtC;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiDjE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IA4BvC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CnC;;OAEG;IACH,YAAY,IAAI,IAAI;CAyBrB;AAmBD,eAAe,aAAa,CAAC"}
@@ -1,195 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * @module Infrastructure/SchemaManagement
4
- * @category Intelligence Operations / Supporting Infrastructure
5
- * @name CIA Schema Synchronization - Upstream Schema Caching System
6
- *
7
- * @description
8
- * Automated schema synchronization system fetching and caching all 19 JSON schemas
9
- * from the CIA GitHub repository. Maintains local copies of data product schemas
10
- * for validation, type generation, and data consistency verification. Enables offline
11
- * operation and faster validation cycles compared to remote fetching.
12
- *
13
- * Usage:
14
- * npx tsx scripts/sync-cia-schemas.ts
15
- *
16
- * @author Hack23 AB (Data Infrastructure Team)
17
- * @license Apache-2.0
18
- * @version 1.4.0
19
- */
20
- import fs from 'node:fs/promises';
21
- import path from 'node:path';
22
- import { fileURLToPath } from 'node:url';
23
- const __filename = fileURLToPath(import.meta.url);
24
- const __dirname = path.dirname(__filename);
25
- // Base URL for CIA schemas (raw GitHub content)
26
- const CIA_SCHEMA_BASE_URL = 'https://raw.githubusercontent.com/Hack23/cia/master/json-export-specs/schemas/';
27
- // All 19 CIA data products with their schema names
28
- const CIA_SCHEMAS = [
29
- 'overview-dashboard',
30
- 'party-performance',
31
- 'cabinet-scorecard',
32
- 'election-analysis',
33
- 'top10-influential-mps',
34
- 'top10-productive-mps',
35
- 'top10-controversial-mps',
36
- 'top10-absent-mps',
37
- 'top10-rebels',
38
- 'top10-coalition-brokers',
39
- 'top10-rising-stars',
40
- 'top10-electoral-risk',
41
- 'top10-ethics-concerns',
42
- 'top10-media-presence',
43
- 'committee-network',
44
- 'politician-career',
45
- 'party-longitudinal',
46
- 'riksdag-overview',
47
- 'ministry-performance',
48
- ];
49
- class CIASchemaSync {
50
- schemasDir;
51
- metadataDir;
52
- results;
53
- constructor() {
54
- this.schemasDir = path.join(__dirname, '..', 'schemas', 'cia');
55
- this.metadataDir = path.join(__dirname, '..', 'schemas', 'metadata');
56
- this.results = {
57
- synced: [],
58
- failed: [],
59
- total: CIA_SCHEMAS.length,
60
- };
61
- }
62
- /**
63
- * Fetch a single schema from CIA repository
64
- */
65
- async fetchSchema(schemaName) {
66
- const url = `${CIA_SCHEMA_BASE_URL}${schemaName}.schema.json`;
67
- console.log(`📥 Fetching: ${schemaName}...`);
68
- try {
69
- const response = await fetch(url);
70
- if (!response.ok) {
71
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
72
- }
73
- const schema = (await response.json());
74
- // Validate it's a valid JSON schema
75
- if (!schema.$schema && !schema.$id && !schema.type) {
76
- throw new Error('Invalid JSON schema format');
77
- }
78
- // Save schema to local file
79
- const schemaPath = path.join(this.schemasDir, `${schemaName}.schema.json`);
80
- await fs.writeFile(schemaPath, JSON.stringify(schema, null, 2), 'utf8');
81
- console.log(` ✅ Synced: ${schemaName}`);
82
- this.results.synced.push({
83
- name: schemaName,
84
- url: url,
85
- size: JSON.stringify(schema).length,
86
- timestamp: new Date().toISOString(),
87
- });
88
- return schema;
89
- }
90
- catch (error) {
91
- console.error(` ❌ Failed: ${schemaName} - ${error.message}`);
92
- this.results.failed.push({
93
- name: schemaName,
94
- url: url,
95
- error: error.message,
96
- timestamp: new Date().toISOString(),
97
- });
98
- return null;
99
- }
100
- }
101
- /**
102
- * Sync all CIA schemas
103
- */
104
- async syncAllSchemas() {
105
- console.log('🔄 CIA Schema Synchronization');
106
- console.log('='.repeat(50));
107
- console.log(`📋 Total schemas: ${CIA_SCHEMAS.length}`);
108
- console.log(`🎯 Source: ${CIA_SCHEMA_BASE_URL}`);
109
- console.log('');
110
- // Ensure directories exist
111
- await fs.mkdir(this.schemasDir, { recursive: true });
112
- await fs.mkdir(this.metadataDir, { recursive: true });
113
- // Fetch all schemas
114
- for (const schemaName of CIA_SCHEMAS) {
115
- await this.fetchSchema(schemaName);
116
- // Small delay to avoid rate limiting
117
- await new Promise((resolve) => setTimeout(resolve, 100));
118
- }
119
- // Save metadata
120
- await this.saveMetadata();
121
- // Print summary
122
- this.printSummary();
123
- // Return exit code
124
- return this.results.failed.length === 0 ? 0 : 1;
125
- }
126
- /**
127
- * Save synchronization metadata
128
- */
129
- async saveMetadata() {
130
- const metadata = {
131
- lastSync: new Date().toISOString(),
132
- source: CIA_SCHEMA_BASE_URL,
133
- totalSchemas: this.results.total,
134
- syncedCount: this.results.synced.length,
135
- failedCount: this.results.failed.length,
136
- schemas: this.results.synced,
137
- failures: this.results.failed,
138
- };
139
- const metadataPath = path.join(this.metadataDir, 'last-sync.json');
140
- await fs.writeFile(metadataPath, JSON.stringify(metadata, null, 2), 'utf8');
141
- // Create schema versions file
142
- const versions = {};
143
- for (const result of this.results.synced) {
144
- const schemaPath = path.join(this.schemasDir, `${result.name}.schema.json`);
145
- const schema = JSON.parse(await fs.readFile(schemaPath, 'utf8'));
146
- versions[result.name] = {
147
- version: schema.version ?? '1.0.0',
148
- $schema: schema.$schema ?? 'http://json-schema.org/draft-07/schema#',
149
- lastUpdated: result.timestamp,
150
- };
151
- }
152
- const versionsPath = path.join(this.metadataDir, 'schema-versions.json');
153
- await fs.writeFile(versionsPath, JSON.stringify(versions, null, 2), 'utf8');
154
- }
155
- /**
156
- * Print synchronization summary
157
- */
158
- printSummary() {
159
- console.log('');
160
- console.log('='.repeat(50));
161
- console.log('📊 Synchronization Summary');
162
- console.log('='.repeat(50));
163
- console.log(`✅ Successfully synced: ${this.results.synced.length}/${this.results.total}`);
164
- console.log(`❌ Failed: ${this.results.failed.length}/${this.results.total}`);
165
- if (this.results.failed.length > 0) {
166
- console.log('');
167
- console.log('⚠️ Failed schemas:');
168
- for (const failure of this.results.failed) {
169
- console.log(` - ${failure.name}: ${failure.error}`);
170
- }
171
- }
172
- console.log('');
173
- console.log(`📁 Schemas saved to: ${this.schemasDir}`);
174
- console.log(`📋 Metadata saved to: ${this.metadataDir}`);
175
- console.log('='.repeat(50));
176
- }
177
- }
178
- // Main execution
179
- async function main() {
180
- try {
181
- const syncer = new CIASchemaSync();
182
- const exitCode = await syncer.syncAllSchemas();
183
- process.exit(exitCode);
184
- }
185
- catch (error) {
186
- console.error('💥 Fatal error:', error);
187
- process.exit(1);
188
- }
189
- }
190
- // Run if called directly
191
- if (import.meta.url === `file://${process.argv[1]}`) {
192
- main();
193
- }
194
- export default CIASchemaSync;
195
- //# sourceMappingURL=sync-cia-schemas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-cia-schemas.js","sourceRoot":"","sources":["../../scripts/sync-cia-schemas.ts"],"names":[],"mappings":"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"}