riksdagsmonitor 0.8.23 β†’ 0.8.24

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 +53 -21
  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 +0,0 @@
1
- {"version":3,"file":"markdown-serializer.d.ts","sourceRoot":"","sources":["../../../scripts/pre-article-analysis/markdown-serializer.ts"],"names":[],"mappings":"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"}
@@ -1,648 +0,0 @@
1
- /**
2
- * @module pre-article-analysis/markdown-serializer
3
- * @description Serializes analysis framework results as structured markdown
4
- * files for persistence in `analysis/daily/YYYY-MM-DD/`.
5
- *
6
- * Each output file follows the standard analysis template:
7
- * ```markdown
8
- * # [Analysis Type] β€” YYYY-MM-DD
9
- * **Generated**: YYYY-MM-DD HH:MM UTC
10
- * **Data Sources**: [list]
11
- * **Documents Analyzed**: N
12
- * **Confidence**: HIGH/MEDIUM/LOW
13
- * ## Summary / ## Detailed Analysis / ## Key Findings / ## Implications
14
- * ```
15
- *
16
- * @author Hack23 AB
17
- * @license Apache-2.0
18
- */
19
- // ---------------------------------------------------------------------------
20
- // Helpers
21
- // ---------------------------------------------------------------------------
22
- /**
23
- * Map a numeric confidence score (0–100) to a categorical label.
24
- * - β‰₯70: HIGH β€” strong evidence, full-text content available for most documents
25
- * - 40–69: MEDIUM β€” moderate evidence, mix of full-text and metadata-only
26
- * - <40: LOW β€” weak evidence, metadata-only documents or small batch
27
- */
28
- function confidenceLabel(score) {
29
- if (score >= 70)
30
- return 'HIGH';
31
- if (score >= 40)
32
- return 'MEDIUM';
33
- return 'LOW';
34
- }
35
- /** Maximum number of documents shown in the detailed analysis section */
36
- const MAX_DETAILED_RESULTS = 20;
37
- function significanceLabel(score) {
38
- if (score >= 8)
39
- return 'πŸ”΄ Critical';
40
- if (score >= 6)
41
- return '🟠 High';
42
- if (score >= 4)
43
- return '🟑 Medium';
44
- return '🟒 Low';
45
- }
46
- function escapeMarkdownTableCell(value) {
47
- return value
48
- .replace(/\\/g, '\\\\')
49
- .replace(/\r?\n/g, ' ')
50
- .replace(/\|/g, '\\|')
51
- .trim();
52
- }
53
- /** Escape user-sourced text for safe inline Markdown rendering. */
54
- function escapeMarkdownInline(value) {
55
- return value
56
- .replace(/\r?\n/g, ' ')
57
- .replace(/[#*_`[\]<>|\\~]/g, '\\$&')
58
- .trim();
59
- }
60
- function frontmatter(ctx, title, docCount, confidenceScore) {
61
- return [
62
- `# ${title} β€” ${ctx.date}`,
63
- '',
64
- `**Generated**: ${ctx.generatedAt}`,
65
- `**Data Sources**: ${ctx.dataSources.join(', ')}`,
66
- `**Documents Analyzed**: ${docCount}`,
67
- `**Confidence**: ${confidenceLabel(confidenceScore)}`,
68
- '',
69
- ].join('\n');
70
- }
71
- // ---------------------------------------------------------------------------
72
- // Data-download manifest
73
- // ---------------------------------------------------------------------------
74
- export function serializeDataManifest(ctx, docCounts, dateFilteredTotal) {
75
- const totalDocs = Object.values(docCounts).reduce((a, b) => a + b, 0);
76
- const analyzedCount = dateFilteredTotal ?? totalDocs;
77
- const lines = [
78
- frontmatter(ctx, 'Data Download Manifest', analyzedCount, 100),
79
- '## Summary',
80
- '',
81
- `Downloaded **${totalDocs}** documents (session-wide) from ${ctx.dataSources.length} MCP data sources.`,
82
- '',
83
- ];
84
- if (dateFilteredTotal !== undefined) {
85
- lines.push(`After date filtering to **${ctx.date}**: **${dateFilteredTotal}** documents selected for analysis.`, '');
86
- }
87
- lines.push('## Document Counts by Type', '');
88
- for (const [type, count] of Object.entries(docCounts)) {
89
- lines.push(`- **${type}**: ${count} documents`);
90
- }
91
- lines.push('', '## Data Quality Notes', '', 'All documents sourced from official riksdag-regering-mcp API.');
92
- return lines.join('\n');
93
- }
94
- // ---------------------------------------------------------------------------
95
- // Classification results
96
- // ---------------------------------------------------------------------------
97
- export function serializeClassificationResults(ctx, results) {
98
- const avgConfidence = results.length > 0
99
- ? results.reduce((sum, r) => sum + r.confidenceScore, 0) / results.length
100
- : 0;
101
- const lines = [
102
- frontmatter(ctx, 'Political Classification Results', results.length, avgConfidence),
103
- '## Summary',
104
- '',
105
- `Classified **${results.length}** parliamentary documents by sensitivity, impact, urgency, and domain.`,
106
- '',
107
- '## Detailed Analysis',
108
- '',
109
- ];
110
- for (const result of results.slice(0, MAX_DETAILED_RESULTS)) {
111
- const title = result.document.titel || result.document.title || result.document.dok_id || 'Unknown';
112
- const dokId = result.document.dok_id || 'N/A';
113
- const domains = result.perspectives
114
- .flatMap(p => p.relatedPolicies)
115
- .filter((v, i, arr) => arr.indexOf(v) === i)
116
- .slice(0, 3);
117
- lines.push(`### ${title}`);
118
- lines.push(`- **dok_id**: ${dokId}`);
119
- lines.push(`- **Type**: ${result.document.doktyp || 'unknown'}`);
120
- lines.push(`- **Significance**: ${significanceLabel(result.overallSignificance)} (${result.overallSignificance}/10)`);
121
- lines.push(`- **Domains**: ${domains.join(', ') || 'General'}`);
122
- lines.push(`- **Confidence**: ${confidenceLabel(result.confidenceScore)} (${Math.round(result.confidenceScore)}%)`);
123
- lines.push('');
124
- }
125
- lines.push('## Key Findings', '');
126
- const topDocs = [...results].sort((a, b) => b.overallSignificance - a.overallSignificance).slice(0, 5);
127
- topDocs.forEach((r, i) => {
128
- const title = r.document.titel || r.document.title || r.document.dok_id || 'Unknown';
129
- lines.push(`${i + 1}. **${title}** (dok_id: ${r.document.dok_id || 'N/A'}) β€” Significance: ${r.overallSignificance}/10`);
130
- });
131
- lines.push('', '## Implications', '');
132
- lines.push('Classification drives article prioritisation. High-significance documents should receive deep-inspection treatment.');
133
- lines.push('', '## Data Quality Notes', '');
134
- lines.push(`Classification confidence: ${confidenceLabel(avgConfidence)}. Higher confidence when full-text content is available.`);
135
- return lines.join('\n');
136
- }
137
- // ---------------------------------------------------------------------------
138
- // Risk assessment
139
- // ---------------------------------------------------------------------------
140
- export function serializeRiskAssessment(ctx, docCount, risk) {
141
- const confidenceScore = risk.riskLevel === 'LOW' ? 80 : risk.riskLevel === 'MEDIUM' ? 60 : 40;
142
- const lines = [
143
- frontmatter(ctx, 'Political Risk Assessment', docCount, confidenceScore),
144
- '## Summary',
145
- '',
146
- risk.riskSummary,
147
- '',
148
- '## Detailed Analysis',
149
- '',
150
- `**Coalition Risk Score**: ${risk.coalitionRiskScore}/100`,
151
- `**Risk Level**: ${risk.riskLevel}`,
152
- '',
153
- '### Anomaly Flags',
154
- '',
155
- ];
156
- if (risk.anomalyFlags.length > 0) {
157
- for (const flag of risk.anomalyFlags) {
158
- lines.push(`- **[${flag.severity}]** ${flag.type}: ${flag.description}`);
159
- }
160
- }
161
- else {
162
- lines.push('No anomalous patterns detected in current data.');
163
- }
164
- lines.push('', '## Key Findings', '');
165
- lines.push(`1. Coalition stability at risk score **${risk.coalitionRiskScore}** (${risk.riskLevel})`);
166
- if (risk.anomalyFlags.length > 0) {
167
- lines.push(`2. **${risk.anomalyFlags.length}** anomaly flag(s) detected requiring monitoring`);
168
- }
169
- lines.push('', '## Implications', '');
170
- for (const impl of risk.implications) {
171
- lines.push(`- ${impl}`);
172
- }
173
- lines.push('', '## Data Quality Notes', '');
174
- lines.push('Risk assessment derived from CIA coalition metrics and document significance scores.');
175
- return lines.join('\n');
176
- }
177
- // ---------------------------------------------------------------------------
178
- // SWOT analysis
179
- // ---------------------------------------------------------------------------
180
- export function serializeSwotAnalysis(ctx, docCount, swots) {
181
- const lines = [
182
- frontmatter(ctx, 'Political SWOT Analysis', docCount, 70),
183
- '## Summary',
184
- '',
185
- `Generated SWOT analysis for **${swots.length}** political actor(s) based on ${docCount} documents.`,
186
- '',
187
- '## Detailed Analysis',
188
- '',
189
- ];
190
- for (const swot of swots) {
191
- lines.push(`### ${swot.forStakeholder}`, '');
192
- lines.push('**Strengths**');
193
- swot.strengths.forEach(s => lines.push(`- ${s}`));
194
- lines.push('');
195
- lines.push('**Weaknesses**');
196
- swot.weaknesses.forEach(s => lines.push(`- ${s}`));
197
- lines.push('');
198
- lines.push('**Opportunities**');
199
- swot.opportunities.forEach(s => lines.push(`- ${s}`));
200
- lines.push('');
201
- lines.push('**Threats**');
202
- swot.threats.forEach(s => lines.push(`- ${s}`));
203
- lines.push('');
204
- }
205
- lines.push('## Key Findings', '');
206
- lines.push('1. SWOT entries derived from all six perspective analyses across downloaded documents.');
207
- lines.push('', '## Implications', '');
208
- lines.push('SWOT insights should inform stakeholder framing in generated articles.');
209
- lines.push('', '## Data Quality Notes', '');
210
- lines.push('SWOT confidence is proportional to document richness (full-text vs metadata-only).');
211
- return lines.join('\n');
212
- }
213
- // ---------------------------------------------------------------------------
214
- // Threat analysis
215
- // ---------------------------------------------------------------------------
216
- export function serializeThreatAnalysis(ctx, results) {
217
- const threatEntries = results.flatMap(r => r.perspectives.flatMap(p => p.swotContribution
218
- .filter(c => c.quadrant === 'threat')
219
- .map(c => ({ title: r.document.titel || r.document.title || r.document.dok_id || 'Unknown', text: c.text, forStakeholder: c.forStakeholder }))));
220
- const avgConfidence = results.length > 0
221
- ? results.reduce((sum, r) => sum + r.confidenceScore, 0) / results.length
222
- : 0;
223
- const lines = [
224
- frontmatter(ctx, 'Political Threat Analysis', results.length, avgConfidence),
225
- '## Summary',
226
- '',
227
- `Identified **${threatEntries.length}** threat indicators across ${results.length} documents.`,
228
- '',
229
- '## Detailed Analysis',
230
- '',
231
- ];
232
- const grouped = new Map();
233
- for (const entry of threatEntries) {
234
- const arr = grouped.get(entry.forStakeholder) ?? [];
235
- arr.push(`[${entry.title}] ${entry.text}`);
236
- grouped.set(entry.forStakeholder, arr);
237
- }
238
- for (const [stakeholder, threats] of grouped) {
239
- lines.push(`### Threats for: ${stakeholder}`, '');
240
- threats.slice(0, 5).forEach(t => lines.push(`- ${t}`));
241
- lines.push('');
242
- }
243
- lines.push('## Key Findings', '');
244
- lines.push(`1. **${threatEntries.length}** threat indicators identified targeting ${grouped.size} stakeholder group(s)`);
245
- lines.push('', '## Implications', '');
246
- lines.push('Threat analysis should inform risk-focused article framing and editorial prioritisation.');
247
- lines.push('', '## Data Quality Notes', '');
248
- lines.push(`Analysis confidence: ${confidenceLabel(avgConfidence)}.`);
249
- return lines.join('\n');
250
- }
251
- // ---------------------------------------------------------------------------
252
- // Stakeholder perspectives
253
- // ---------------------------------------------------------------------------
254
- export function serializeStakeholderPerspectives(ctx, results) {
255
- const avgConfidence = results.length > 0
256
- ? results.reduce((sum, r) => sum + r.confidenceScore, 0) / results.length
257
- : 0;
258
- // Aggregate perspectives by lens across all documents
259
- const lensMap = new Map();
260
- for (const result of results) {
261
- for (const p of result.perspectives) {
262
- const arr = lensMap.get(p.lens) ?? [];
263
- arr.push(p);
264
- lensMap.set(p.lens, arr);
265
- }
266
- }
267
- const lines = [
268
- frontmatter(ctx, 'Stakeholder Perspective Analysis', results.length, avgConfidence),
269
- '## Summary',
270
- '',
271
- `Applied **6 analysis lenses** to **${results.length}** documents.`,
272
- '',
273
- '## Detailed Analysis',
274
- '',
275
- ];
276
- const lensEmoji = {
277
- government: 'πŸ›οΈ',
278
- opposition: 'βš–οΈ',
279
- citizen: 'πŸ‘₯',
280
- economic: 'πŸ’°',
281
- international: '🌍',
282
- media: 'πŸ“°',
283
- };
284
- for (const [lens, perspectives] of lensMap) {
285
- const emoji = lensEmoji[lens] || 'πŸ”';
286
- const high = perspectives.filter(p => p.impact === 'high').length;
287
- const avgConf = perspectives.reduce((s, p) => s + p.confidence, 0) / perspectives.length;
288
- const topActors = [...new Set(perspectives.flatMap(p => p.keyActors))].slice(0, 5);
289
- lines.push(`### ${emoji} ${lens.charAt(0).toUpperCase() + lens.slice(1)} Perspective`, '');
290
- lines.push(`- **Documents with High Impact**: ${high}/${perspectives.length}`);
291
- lines.push(`- **Avg Confidence**: ${Math.round(avgConf)}%`);
292
- lines.push(`- **Key Actors**: ${topActors.join(', ') || 'N/A'}`);
293
- lines.push('');
294
- // Show top 3 summaries
295
- const topThree = [...perspectives].sort((a, b) => b.confidence - a.confidence).slice(0, 3);
296
- for (const p of topThree) {
297
- if (p.summary) {
298
- lines.push(`> ${p.summary}`);
299
- lines.push('');
300
- }
301
- }
302
- }
303
- lines.push('## Key Findings', '');
304
- lines.push('1. All six stakeholder perspectives applied consistently across the document batch.');
305
- lines.push('2. Cross-perspective conflicts indicate politically contentious documents.');
306
- lines.push('', '## Implications', '');
307
- lines.push('Perspective analysis feeds directly into article stakeholder framing and balance.');
308
- lines.push('', '## Data Quality Notes', '');
309
- lines.push(`Aggregate confidence: ${confidenceLabel(avgConfidence)}.`);
310
- return lines.join('\n');
311
- }
312
- // ---------------------------------------------------------------------------
313
- // Significance scoring
314
- // ---------------------------------------------------------------------------
315
- export function serializeSignificanceScoring(ctx, entries) {
316
- const lines = [
317
- frontmatter(ctx, 'Document Significance Scoring', entries.length, 80),
318
- '## Summary',
319
- '',
320
- `Scored **${entries.length}** documents for political significance (0–10 scale).`,
321
- '',
322
- '## Detailed Analysis',
323
- '',
324
- '| Score | Level | Type | dok_id | Title |',
325
- '|-------|-------|------|--------|-------|',
326
- ];
327
- const sorted = [...entries].sort((a, b) => b.score - a.score);
328
- for (const entry of sorted.slice(0, 30)) {
329
- const level = escapeMarkdownTableCell(significanceLabel(entry.score).replace(/πŸ”΄|🟠|🟑|🟒/g, '').trim());
330
- const titleValue = entry.title.length > 50 ? entry.title.slice(0, 47) + '...' : entry.title;
331
- const doctype = escapeMarkdownTableCell(entry.doctype);
332
- const dokId = escapeMarkdownTableCell(entry.dok_id);
333
- const title = escapeMarkdownTableCell(titleValue);
334
- lines.push(`| ${entry.score}/10 | ${level} | ${doctype} | ${dokId} | ${title} |`);
335
- }
336
- lines.push('', '## Key Findings', '');
337
- const critical = sorted.filter(e => e.score >= 8);
338
- lines.push(`1. **${critical.length}** document(s) rated Critical (score β‰₯ 8)`);
339
- const high = sorted.filter(e => e.score >= 6 && e.score < 8);
340
- lines.push(`2. **${high.length}** document(s) rated High (score 6–7)`);
341
- lines.push('', '## Implications', '');
342
- lines.push('High-significance documents should be prioritised for deep-inspection article generation.');
343
- lines.push('', '## Data Quality Notes', '');
344
- lines.push('Significance scores use document type, committee tier, domain breadth, coalition context, and content richness.');
345
- return lines.join('\n');
346
- }
347
- // ---------------------------------------------------------------------------
348
- // Cross-reference map
349
- // ---------------------------------------------------------------------------
350
- export function serializeCrossReferenceMap(ctx, summary) {
351
- const lines = [
352
- frontmatter(ctx, 'Cross-Reference Map', summary.docCount, 75),
353
- '## Summary',
354
- '',
355
- `Detected **${summary.totalLinks}** cross-document relationships.`,
356
- '',
357
- '## Detailed Analysis',
358
- '',
359
- ];
360
- if (summary.links.length === 0) {
361
- lines.push('No cross-document relationships detected in current batch.');
362
- }
363
- else {
364
- const byType = new Map();
365
- for (const link of summary.links) {
366
- const arr = byType.get(link.type) ?? [];
367
- arr.push(link);
368
- byType.set(link.type, arr);
369
- }
370
- for (const [type, links] of byType) {
371
- lines.push(`### ${type}`, '');
372
- for (const link of links.slice(0, 10)) {
373
- lines.push(`- **${link.sourceId}** β†’ **${link.targetId}** (confidence: ${link.confidence}%)`);
374
- lines.push(` _${link.reason}_`);
375
- }
376
- lines.push('');
377
- }
378
- }
379
- lines.push('## Key Findings', '');
380
- lines.push(`1. **${summary.totalLinks}** inter-document relationships mapped`);
381
- lines.push('', '## Implications', '');
382
- lines.push('Cross-references enrich article narratives by linking related legislative developments.');
383
- lines.push('', '## Data Quality Notes', '');
384
- lines.push('Cross-reference confidence is driven by shared policy domains and textual similarity.');
385
- return lines.join('\n');
386
- }
387
- // ---------------------------------------------------------------------------
388
- // Synthesis summary
389
- // ---------------------------------------------------------------------------
390
- export function serializeSynthesisSummary(ctx, synthesis) {
391
- const confScore = synthesis.overallConfidence === 'HIGH' ? 80 : synthesis.overallConfidence === 'MEDIUM' ? 55 : 30;
392
- const lines = [
393
- frontmatter(ctx, 'Analysis Synthesis Summary', synthesis.totalDocs, confScore),
394
- '## Summary',
395
- '',
396
- synthesis.executiveSummary,
397
- '',
398
- '## Key Findings',
399
- '',
400
- ];
401
- synthesis.keyFindings.forEach((f, i) => lines.push(`${i + 1}. ${f}`));
402
- lines.push('', '## Top Documents by Significance', '', '| Score | Type | dok_id | Title |', '|-------|------|--------|-------|');
403
- for (const doc of synthesis.topDocuments.slice(0, 10)) {
404
- const titleValue = doc.title.length > 50 ? doc.title.slice(0, 47) + '...' : doc.title;
405
- const doctype = escapeMarkdownTableCell(doc.doctype);
406
- const dokId = escapeMarkdownTableCell(doc.dok_id);
407
- const title = escapeMarkdownTableCell(titleValue);
408
- lines.push(`| ${doc.score}/10 | ${doctype} | ${dokId} | ${title} |`);
409
- }
410
- lines.push('', '## Implications', '');
411
- lines.push(`Overall political risk level: **${synthesis.aggregateRiskLevel}**`);
412
- lines.push('Articles should reference this synthesis to ensure analytical depth and consistency.');
413
- lines.push('', '## Data Quality Notes', '');
414
- lines.push(`Overall confidence: **${synthesis.overallConfidence}**. All analysis results are available in sibling files.`);
415
- return lines.join('\n');
416
- }
417
- // ---------------------------------------------------------------------------
418
- // Per-document analysis (full AI-quality SWOT + intelligence per document)
419
- // ---------------------------------------------------------------------------
420
- /**
421
- * Serialize a per-document analysis markdown file.
422
- *
423
- * Each document gets its own analysis file with:
424
- * - Full document metadata
425
- * - Detailed SWOT analysis
426
- * - Multi-lens stakeholder perspective analysis
427
- * - Significance scoring factors
428
- * - Cross-document references (where available)
429
- * - Key insights
430
- * - Data quality / methodology notes
431
- *
432
- * Note: Explicit risk indicator extraction and implications sections are
433
- * produced at the synthesis level rather than by this per-document serializer.
434
- */
435
- export function serializeDocumentAnalysis(ctx, result) {
436
- const doc = result.document;
437
- const title = escapeMarkdownInline(doc.titel || doc.title || doc.dok_id || 'Unknown Document');
438
- const dokId = escapeMarkdownInline(doc.dok_id || 'N/A');
439
- const docType = escapeMarkdownInline(doc.doktyp || 'unknown');
440
- const committee = escapeMarkdownInline(doc.organ || doc.committee || 'N/A');
441
- const date = escapeMarkdownInline(doc.datum || ctx.date);
442
- const author = escapeMarkdownInline(doc.intressent_namn || doc.author || 'N/A');
443
- const party = escapeMarkdownInline(doc.parti || 'N/A');
444
- const rm = escapeMarkdownInline(doc.rm || 'N/A');
445
- const lines = [
446
- `# Document Analysis: ${title}`,
447
- '',
448
- `**Generated**: ${ctx.generatedAt}`,
449
- `**dok_id**: ${dokId}`,
450
- `**Document Type**: ${docType}`,
451
- `**Committee**: ${committee}`,
452
- `**Date**: ${date}`,
453
- `**Author**: ${author}`,
454
- `**Party**: ${party}`,
455
- `**RiksmΓΆte**: ${rm}`,
456
- `**Significance**: ${significanceLabel(result.overallSignificance)} (${result.overallSignificance}/10)`,
457
- `**Confidence**: ${confidenceLabel(result.confidenceScore)} (${Math.round(result.confidenceScore)}%)`,
458
- '',
459
- '---',
460
- '',
461
- ];
462
- // ── Executive Summary ──────────────────────────────────────────────────
463
- lines.push('## Executive Summary', '');
464
- if (result.keyInsights.length > 0) {
465
- for (const insight of result.keyInsights) {
466
- lines.push(`- ${escapeMarkdownInline(insight)}`);
467
- }
468
- }
469
- else {
470
- lines.push('No key insights extracted β€” document may be metadata-only.');
471
- }
472
- lines.push('');
473
- // ── Document Content Summary ───────────────────────────────────────────
474
- lines.push('## Document Content', '');
475
- if (doc.summary) {
476
- lines.push(`**Summary**: ${escapeMarkdownInline(doc.summary)}`);
477
- lines.push('');
478
- }
479
- if (doc.rubrik) {
480
- lines.push(`**Rubrik**: ${escapeMarkdownInline(doc.rubrik)}`);
481
- lines.push('');
482
- }
483
- if (doc.undertitel) {
484
- lines.push(`**Undertitel**: ${escapeMarkdownInline(doc.undertitel)}`);
485
- lines.push('');
486
- }
487
- if (doc.notis) {
488
- lines.push(`**Notis**: ${escapeMarkdownInline(doc.notis)}`);
489
- lines.push('');
490
- }
491
- if (doc.mottagare) {
492
- lines.push(`**Mottagare (Recipient)**: ${escapeMarkdownInline(doc.mottagare)}`);
493
- lines.push('');
494
- }
495
- const hasFullText = !!(doc.fullText || doc.fullContent);
496
- lines.push(`**Full-text available**: ${hasFullText ? 'Yes βœ…' : 'No β€” metadata-only ⚠️'}`);
497
- lines.push('');
498
- // ── SWOT Analysis ──────────────────────────────────────────────────────
499
- lines.push('## SWOT Analysis', '');
500
- const swotMap = new Map();
501
- for (const p of result.perspectives) {
502
- for (const c of p.swotContribution) {
503
- if (!swotMap.has(c.forStakeholder)) {
504
- swotMap.set(c.forStakeholder, { strengths: [], weaknesses: [], opportunities: [], threats: [] });
505
- }
506
- const entry = swotMap.get(c.forStakeholder);
507
- switch (c.quadrant) {
508
- case 'strength':
509
- entry.strengths.push(c.text);
510
- break;
511
- case 'weakness':
512
- entry.weaknesses.push(c.text);
513
- break;
514
- case 'opportunity':
515
- entry.opportunities.push(c.text);
516
- break;
517
- case 'threat':
518
- entry.threats.push(c.text);
519
- break;
520
- }
521
- }
522
- }
523
- if (swotMap.size === 0) {
524
- lines.push('_No SWOT contributions extracted. Document may lack sufficient content for structured analysis._');
525
- lines.push('');
526
- }
527
- for (const [stakeholder, swot] of swotMap) {
528
- lines.push(`### SWOT: ${escapeMarkdownInline(stakeholder)}`, '');
529
- lines.push('#### Strengths πŸ’ͺ');
530
- if (swot.strengths.length > 0) {
531
- [...new Set(swot.strengths)].forEach(s => lines.push(`- ${escapeMarkdownInline(s)}`));
532
- }
533
- else {
534
- lines.push('- _No strengths identified_');
535
- }
536
- lines.push('');
537
- lines.push('#### Weaknesses ⚠️');
538
- if (swot.weaknesses.length > 0) {
539
- [...new Set(swot.weaknesses)].forEach(s => lines.push(`- ${escapeMarkdownInline(s)}`));
540
- }
541
- else {
542
- lines.push('- _No weaknesses identified_');
543
- }
544
- lines.push('');
545
- lines.push('#### Opportunities 🌟');
546
- if (swot.opportunities.length > 0) {
547
- [...new Set(swot.opportunities)].forEach(s => lines.push(`- ${escapeMarkdownInline(s)}`));
548
- }
549
- else {
550
- lines.push('- _No opportunities identified_');
551
- }
552
- lines.push('');
553
- lines.push('#### Threats πŸ”΄');
554
- if (swot.threats.length > 0) {
555
- [...new Set(swot.threats)].forEach(s => lines.push(`- ${escapeMarkdownInline(s)}`));
556
- }
557
- else {
558
- lines.push('- _No threats identified_');
559
- }
560
- lines.push('');
561
- }
562
- // ── Stakeholder Perspective Analysis ───────────────────────────────────
563
- lines.push('## Stakeholder Perspective Analysis', '');
564
- const lensEmoji = {
565
- government: 'πŸ›οΈ',
566
- opposition: 'βš–οΈ',
567
- citizen: 'πŸ‘₯',
568
- economic: 'πŸ’°',
569
- international: '🌍',
570
- media: 'πŸ“°',
571
- };
572
- for (const p of result.perspectives) {
573
- const emoji = lensEmoji[p.lens] || 'πŸ”';
574
- lines.push(`### ${emoji} ${p.lens.charAt(0).toUpperCase() + p.lens.slice(1)} Perspective`, '');
575
- lines.push(`- **Impact**: ${escapeMarkdownInline(p.impact)}`);
576
- lines.push(`- **Sentiment**: ${escapeMarkdownInline(p.sentiment)}`);
577
- lines.push(`- **Confidence**: ${Math.round(p.confidence)}%`);
578
- lines.push(`- **Key Actors**: ${p.keyActors.map(a => escapeMarkdownInline(a)).join(', ') || 'N/A'}`);
579
- lines.push(`- **Related Policies**: ${p.relatedPolicies.map(r => escapeMarkdownInline(r)).join(', ') || 'N/A'}`);
580
- lines.push('');
581
- if (p.summary) {
582
- lines.push(`> ${escapeMarkdownInline(p.summary)}`);
583
- lines.push('');
584
- }
585
- // Dashboard metrics
586
- if (p.dashboardMetrics.length > 0) {
587
- lines.push('**Dashboard Metrics**:');
588
- for (const m of p.dashboardMetrics) {
589
- lines.push(`- ${escapeMarkdownInline(m.metricName)}: ${m.value}${m.unit ? ' ' + escapeMarkdownInline(m.unit) : ''}`);
590
- }
591
- lines.push('');
592
- }
593
- }
594
- // ── Cross-Document References ──────────────────────────────────────────
595
- lines.push('## Cross-Document References', '');
596
- if (result.crossDocumentLinks.length > 0) {
597
- for (const link of result.crossDocumentLinks) {
598
- lines.push(`- **${escapeMarkdownInline(link.type)}**: ${escapeMarkdownInline(link.sourceId)} β†’ ${escapeMarkdownInline(link.targetId)} (confidence: ${link.confidence}%)`);
599
- lines.push(` _${escapeMarkdownInline(link.reason)}_`);
600
- }
601
- }
602
- else {
603
- lines.push('_No cross-document references detected for this document._');
604
- }
605
- lines.push('');
606
- // ── Significance Assessment ────────────────────────────────────────────
607
- lines.push('## Significance Assessment', '');
608
- lines.push(`**Overall Score**: ${result.overallSignificance}/10 β€” ${significanceLabel(result.overallSignificance)}`);
609
- lines.push('');
610
- lines.push('**Scoring Factors**:');
611
- lines.push(`- Document type tier (${docType})`);
612
- lines.push(`- Committee tier (${committee})`);
613
- const domains = [...new Set(result.perspectives.flatMap(p => p.relatedPolicies))].slice(0, 5);
614
- lines.push(`- Policy domain breadth: ${domains.length} domain(s) β€” ${domains.join(', ') || 'N/A'}`);
615
- lines.push(`- Content richness: ${hasFullText ? 'Full-text available' : 'Metadata-only'}`);
616
- lines.push(`- Perspective impact: ${result.perspectives.filter(p => p.impact === 'high').length}/6 high-impact perspectives`);
617
- lines.push('');
618
- // ── Key Insights ───────────────────────────────────────────────────────
619
- lines.push('## Key Insights', '');
620
- if (result.keyInsights.length > 0) {
621
- result.keyInsights.forEach((insight, i) => lines.push(`${i + 1}. ${escapeMarkdownInline(insight)}`));
622
- }
623
- else {
624
- lines.push('_No key insights extracted._');
625
- }
626
- lines.push('');
627
- // ── Data Quality Notes ─────────────────────────────────────────────────
628
- lines.push('## Data Quality Notes', '');
629
- lines.push(`- **Analysis confidence**: ${confidenceLabel(result.confidenceScore)} (${Math.round(result.confidenceScore)}%)`);
630
- lines.push(`- **Full-text content**: ${hasFullText ? 'Available β€” high confidence' : 'Unavailable β€” analysis based on metadata only'}`);
631
- lines.push(`- **Data sources**: ${ctx.dataSources.map(escapeMarkdownInline).join(', ')}`);
632
- lines.push(`- **Analysis method**: 6-lens stakeholder analysis with SWOT extraction`);
633
- lines.push('');
634
- return lines.join('\n');
635
- }
636
- /**
637
- * Sanitize a document identifier for use as a safe filename.
638
- * Replaces non-alphanumeric characters with hyphens and lowercases.
639
- */
640
- export function sanitizeDokId(dokId) {
641
- return dokId
642
- .toLowerCase()
643
- .replace(/[^a-z0-9Γ₯Àâ-]/g, '-')
644
- .replace(/-+/g, '-')
645
- .replace(/^-|-$/g, '')
646
- .slice(0, 100);
647
- }
648
- //# sourceMappingURL=markdown-serializer.js.map