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.
- package/README.md +53 -1
- package/dist/lib/dashboards/party-dashboard.js +2 -1
- package/dist/lib/dashboards/party-dashboard.js.map +1 -1
- package/dist/lib/dashboards/risk-dashboard.js +2 -1
- package/dist/lib/dashboards/risk-dashboard.js.map +1 -1
- package/dist/lib/shared/index.d.ts +0 -1
- package/dist/lib/shared/index.d.ts.map +1 -1
- package/dist/lib/shared/index.js +3 -1
- package/dist/lib/shared/index.js.map +1 -1
- package/dist/lib/shared/register-globals.d.ts +1 -1
- package/dist/lib/shared/register-globals.d.ts.map +1 -1
- package/dist/lib/shared/register-globals.js +7 -1
- package/dist/lib/shared/register-globals.js.map +1 -1
- package/package.json +53 -21
- package/dist/scripts/analysis-reader.d.ts +0 -241
- package/dist/scripts/analysis-reader.d.ts.map +0 -1
- package/dist/scripts/analysis-reader.js +0 -531
- package/dist/scripts/analysis-reader.js.map +0 -1
- package/dist/scripts/article-quality-enhancer.d.ts +0 -148
- package/dist/scripts/article-quality-enhancer.d.ts.map +0 -1
- package/dist/scripts/article-quality-enhancer.js +0 -430
- package/dist/scripts/article-quality-enhancer.js.map +0 -1
- package/dist/scripts/article-template/constants.d.ts +0 -104
- package/dist/scripts/article-template/constants.d.ts.map +0 -1
- package/dist/scripts/article-template/constants.js +0 -225
- package/dist/scripts/article-template/constants.js.map +0 -1
- package/dist/scripts/article-template/helpers.d.ts +0 -83
- package/dist/scripts/article-template/helpers.d.ts.map +0 -1
- package/dist/scripts/article-template/helpers.js +0 -236
- package/dist/scripts/article-template/helpers.js.map +0 -1
- package/dist/scripts/article-template/index.d.ts +0 -39
- package/dist/scripts/article-template/index.d.ts.map +0 -1
- package/dist/scripts/article-template/index.js +0 -37
- package/dist/scripts/article-template/index.js.map +0 -1
- package/dist/scripts/article-template/registry.d.ts +0 -64
- package/dist/scripts/article-template/registry.d.ts.map +0 -1
- package/dist/scripts/article-template/registry.js +0 -405
- package/dist/scripts/article-template/registry.js.map +0 -1
- package/dist/scripts/article-template/template.d.ts +0 -18
- package/dist/scripts/article-template/template.d.ts.map +0 -1
- package/dist/scripts/article-template/template.js +0 -359
- package/dist/scripts/article-template/template.js.map +0 -1
- package/dist/scripts/article-template/types.d.ts +0 -90
- package/dist/scripts/article-template/types.d.ts.map +0 -1
- package/dist/scripts/article-template/types.js +0 -96
- package/dist/scripts/article-template/types.js.map +0 -1
- package/dist/scripts/article-template.d.ts +0 -18
- package/dist/scripts/article-template.d.ts.map +0 -1
- package/dist/scripts/article-template.js +0 -18
- package/dist/scripts/article-template.js.map +0 -1
- package/dist/scripts/catalog-downloaded-data.d.ts +0 -66
- package/dist/scripts/catalog-downloaded-data.d.ts.map +0 -1
- package/dist/scripts/catalog-downloaded-data.js +0 -239
- package/dist/scripts/catalog-downloaded-data.js.map +0 -1
- package/dist/scripts/check-cia-schema-updates.d.ts +0 -186
- package/dist/scripts/check-cia-schema-updates.d.ts.map +0 -1
- package/dist/scripts/check-cia-schema-updates.js +0 -363
- package/dist/scripts/check-cia-schema-updates.js.map +0 -1
- package/dist/scripts/data-transformers/calendar.d.ts +0 -16
- package/dist/scripts/data-transformers/calendar.d.ts.map +0 -1
- package/dist/scripts/data-transformers/calendar.js +0 -137
- package/dist/scripts/data-transformers/calendar.js.map +0 -1
- package/dist/scripts/data-transformers/constants/committee-names.d.ts +0 -15
- package/dist/scripts/data-transformers/constants/committee-names.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/committee-names.js +0 -30
- package/dist/scripts/data-transformers/constants/committee-names.js.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts +0 -11
- package/dist/scripts/data-transformers/constants/content-labels-part1.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part1.js +0 -900
- package/dist/scripts/data-transformers/constants/content-labels-part1.js.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts +0 -11
- package/dist/scripts/data-transformers/constants/content-labels-part2.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels-part2.js +0 -900
- package/dist/scripts/data-transformers/constants/content-labels-part2.js.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels.d.ts +0 -13
- package/dist/scripts/data-transformers/constants/content-labels.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/content-labels.js +0 -18
- package/dist/scripts/data-transformers/constants/content-labels.js.map +0 -1
- package/dist/scripts/data-transformers/constants/index.d.ts +0 -15
- package/dist/scripts/data-transformers/constants/index.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/index.js +0 -15
- package/dist/scripts/data-transformers/constants/index.js.map +0 -1
- package/dist/scripts/data-transformers/constants/locale-map.d.ts +0 -13
- package/dist/scripts/data-transformers/constants/locale-map.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants/locale-map.js +0 -17
- package/dist/scripts/data-transformers/constants/locale-map.js.map +0 -1
- package/dist/scripts/data-transformers/constants.d.ts +0 -14
- package/dist/scripts/data-transformers/constants.d.ts.map +0 -1
- package/dist/scripts/data-transformers/constants.js +0 -14
- package/dist/scripts/data-transformers/constants.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts +0 -64
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js +0 -805
- package/dist/scripts/data-transformers/content-generators/ai-mindmap-analyzer.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts +0 -50
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js +0 -310
- package/dist/scripts/data-transformers/content-generators/cia-overview-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/committee.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/committee.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/committee.js +0 -247
- package/dist/scripts/data-transformers/content-generators/committee.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts +0 -124
- package/dist/scripts/data-transformers/content-generators/dashboard-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js +0 -564
- package/dist/scripts/data-transformers/content-generators/dashboard-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts +0 -82
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js +0 -321
- package/dist/scripts/data-transformers/content-generators/economic-dashboard-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/generic.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/generic.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/generic.js +0 -295
- package/dist/scripts/data-transformers/content-generators/generic.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/index.d.ts +0 -84
- package/dist/scripts/data-transformers/content-generators/index.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/index.js +0 -47
- package/dist/scripts/data-transformers/content-generators/index.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/interpellations.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/interpellations.js +0 -124
- package/dist/scripts/data-transformers/content-generators/interpellations.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts +0 -137
- package/dist/scripts/data-transformers/content-generators/mindmap-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js +0 -286
- package/dist/scripts/data-transformers/content-generators/mindmap-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts +0 -17
- package/dist/scripts/data-transformers/content-generators/month-ahead.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/month-ahead.js +0 -212
- package/dist/scripts/data-transformers/content-generators/month-ahead.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts +0 -17
- package/dist/scripts/data-transformers/content-generators/monthly-review.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/monthly-review.js +0 -173
- package/dist/scripts/data-transformers/content-generators/monthly-review.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/motions.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/motions.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/motions.js +0 -158
- package/dist/scripts/data-transformers/content-generators/motions.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts +0 -62
- package/dist/scripts/data-transformers/content-generators/newsworthiness.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js +0 -254
- package/dist/scripts/data-transformers/content-generators/newsworthiness.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/propositions.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/propositions.js +0 -263
- package/dist/scripts/data-transformers/content-generators/propositions.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts +0 -92
- package/dist/scripts/data-transformers/content-generators/sankey-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/sankey-section.js +0 -257
- package/dist/scripts/data-transformers/content-generators/sankey-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/shared.d.ts +0 -139
- package/dist/scripts/data-transformers/content-generators/shared.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/shared.js +0 -935
- package/dist/scripts/data-transformers/content-generators/shared.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts +0 -50
- package/dist/scripts/data-transformers/content-generators/swot-section.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/swot-section.js +0 -177
- package/dist/scripts/data-transformers/content-generators/swot-section.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts +0 -12
- package/dist/scripts/data-transformers/content-generators/week-ahead.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators/week-ahead.js +0 -332
- package/dist/scripts/data-transformers/content-generators/week-ahead.js.map +0 -1
- package/dist/scripts/data-transformers/content-generators.d.ts +0 -15
- package/dist/scripts/data-transformers/content-generators.d.ts.map +0 -1
- package/dist/scripts/data-transformers/content-generators.js +0 -14
- package/dist/scripts/data-transformers/content-generators.js.map +0 -1
- package/dist/scripts/data-transformers/document-analysis.d.ts +0 -58
- package/dist/scripts/data-transformers/document-analysis.d.ts.map +0 -1
- package/dist/scripts/data-transformers/document-analysis.js +0 -396
- package/dist/scripts/data-transformers/document-analysis.js.map +0 -1
- package/dist/scripts/data-transformers/helpers.d.ts +0 -144
- package/dist/scripts/data-transformers/helpers.d.ts.map +0 -1
- package/dist/scripts/data-transformers/helpers.js +0 -408
- package/dist/scripts/data-transformers/helpers.js.map +0 -1
- package/dist/scripts/data-transformers/index.d.ts +0 -45
- package/dist/scripts/data-transformers/index.d.ts.map +0 -1
- package/dist/scripts/data-transformers/index.js +0 -66
- package/dist/scripts/data-transformers/index.js.map +0 -1
- package/dist/scripts/data-transformers/metadata.d.ts +0 -42
- package/dist/scripts/data-transformers/metadata.d.ts.map +0 -1
- package/dist/scripts/data-transformers/metadata.js +0 -385
- package/dist/scripts/data-transformers/metadata.js.map +0 -1
- package/dist/scripts/data-transformers/policy-analysis.d.ts +0 -105
- package/dist/scripts/data-transformers/policy-analysis.d.ts.map +0 -1
- package/dist/scripts/data-transformers/policy-analysis.js +0 -686
- package/dist/scripts/data-transformers/policy-analysis.js.map +0 -1
- package/dist/scripts/data-transformers/risk-analysis.d.ts +0 -104
- package/dist/scripts/data-transformers/risk-analysis.d.ts.map +0 -1
- package/dist/scripts/data-transformers/risk-analysis.js +0 -279
- package/dist/scripts/data-transformers/risk-analysis.js.map +0 -1
- package/dist/scripts/data-transformers/types.d.ts +0 -260
- package/dist/scripts/data-transformers/types.d.ts.map +0 -1
- package/dist/scripts/data-transformers/types.js +0 -11
- package/dist/scripts/data-transformers/types.js.map +0 -1
- package/dist/scripts/data-transformers.d.ts +0 -23
- package/dist/scripts/data-transformers.d.ts.map +0 -1
- package/dist/scripts/data-transformers.js +0 -35
- package/dist/scripts/data-transformers.js.map +0 -1
- package/dist/scripts/deep-inspection/index.d.ts +0 -55
- package/dist/scripts/deep-inspection/index.d.ts.map +0 -1
- package/dist/scripts/deep-inspection/index.js +0 -66
- package/dist/scripts/deep-inspection/index.js.map +0 -1
- package/dist/scripts/detect-swedish-leakage.d.ts +0 -69
- package/dist/scripts/detect-swedish-leakage.d.ts.map +0 -1
- package/dist/scripts/detect-swedish-leakage.js +0 -417
- package/dist/scripts/detect-swedish-leakage.js.map +0 -1
- package/dist/scripts/editorial-framework.d.ts +0 -121
- package/dist/scripts/editorial-framework.d.ts.map +0 -1
- package/dist/scripts/editorial-framework.js +0 -364
- package/dist/scripts/editorial-framework.js.map +0 -1
- package/dist/scripts/editorial-pillars.d.ts +0 -43
- package/dist/scripts/editorial-pillars.d.ts.map +0 -1
- package/dist/scripts/editorial-pillars.js +0 -215
- package/dist/scripts/editorial-pillars.js.map +0 -1
- package/dist/scripts/extract-news-metadata.d.ts +0 -12
- package/dist/scripts/extract-news-metadata.d.ts.map +0 -1
- package/dist/scripts/extract-news-metadata.js +0 -107
- package/dist/scripts/extract-news-metadata.js.map +0 -1
- package/dist/scripts/extract-vocabulary.d.ts +0 -15
- package/dist/scripts/extract-vocabulary.d.ts.map +0 -1
- package/dist/scripts/extract-vocabulary.js +0 -255
- package/dist/scripts/extract-vocabulary.js.map +0 -1
- package/dist/scripts/fix-article-navigation.d.ts +0 -37
- package/dist/scripts/fix-article-navigation.d.ts.map +0 -1
- package/dist/scripts/fix-article-navigation.js +0 -198
- package/dist/scripts/fix-article-navigation.js.map +0 -1
- package/dist/scripts/fix-keywords-localization.d.ts +0 -18
- package/dist/scripts/fix-keywords-localization.d.ts.map +0 -1
- package/dist/scripts/fix-keywords-localization.js +0 -270
- package/dist/scripts/fix-keywords-localization.js.map +0 -1
- package/dist/scripts/fix-old-articles-branding.d.ts +0 -17
- package/dist/scripts/fix-old-articles-branding.d.ts.map +0 -1
- package/dist/scripts/fix-old-articles-branding.js +0 -229
- package/dist/scripts/fix-old-articles-branding.js.map +0 -1
- package/dist/scripts/generate-news-backport.d.ts +0 -16
- package/dist/scripts/generate-news-backport.d.ts.map +0 -1
- package/dist/scripts/generate-news-backport.js +0 -379
- package/dist/scripts/generate-news-backport.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts +0 -141
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js +0 -546
- package/dist/scripts/generate-news-enhanced/ai-analysis-pipeline.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts +0 -59
- package/dist/scripts/generate-news-enhanced/analysis-cache.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-cache.js +0 -116
- package/dist/scripts/generate-news-enhanced/analysis-cache.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts +0 -58
- package/dist/scripts/generate-news-enhanced/analysis-labels.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/analysis-labels.js +0 -144
- package/dist/scripts/generate-news-enhanced/analysis-labels.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/config.d.ts +0 -58
- package/dist/scripts/generate-news-enhanced/config.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/config.js +0 -286
- package/dist/scripts/generate-news-enhanced/config.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/generators.d.ts +0 -119
- package/dist/scripts/generate-news-enhanced/generators.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/generators.js +0 -2131
- package/dist/scripts/generate-news-enhanced/generators.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/helpers.d.ts +0 -122
- package/dist/scripts/generate-news-enhanced/helpers.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/helpers.js +0 -468
- package/dist/scripts/generate-news-enhanced/helpers.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/index.d.ts +0 -19
- package/dist/scripts/generate-news-enhanced/index.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/index.js +0 -221
- package/dist/scripts/generate-news-enhanced/index.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts +0 -46
- package/dist/scripts/generate-news-enhanced/swot-analyzer.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js +0 -1227
- package/dist/scripts/generate-news-enhanced/swot-analyzer.js.map +0 -1
- package/dist/scripts/generate-news-enhanced/types.d.ts +0 -34
- package/dist/scripts/generate-news-enhanced/types.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced/types.js +0 -9
- package/dist/scripts/generate-news-enhanced/types.js.map +0 -1
- package/dist/scripts/generate-news-enhanced.d.ts +0 -25
- package/dist/scripts/generate-news-enhanced.d.ts.map +0 -1
- package/dist/scripts/generate-news-enhanced.js +0 -37
- package/dist/scripts/generate-news-enhanced.js.map +0 -1
- package/dist/scripts/generate-news-indexes/constants.d.ts +0 -20
- package/dist/scripts/generate-news-indexes/constants.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/constants.js +0 -308
- package/dist/scripts/generate-news-indexes/constants.js.map +0 -1
- package/dist/scripts/generate-news-indexes/helpers.d.ts +0 -73
- package/dist/scripts/generate-news-indexes/helpers.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/helpers.js +0 -352
- package/dist/scripts/generate-news-indexes/helpers.js.map +0 -1
- package/dist/scripts/generate-news-indexes/index.d.ts +0 -20
- package/dist/scripts/generate-news-indexes/index.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/index.js +0 -75
- package/dist/scripts/generate-news-indexes/index.js.map +0 -1
- package/dist/scripts/generate-news-indexes/template.d.ts +0 -25
- package/dist/scripts/generate-news-indexes/template.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/template.js +0 -644
- package/dist/scripts/generate-news-indexes/template.js.map +0 -1
- package/dist/scripts/generate-news-indexes/types.d.ts +0 -96
- package/dist/scripts/generate-news-indexes/types.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes/types.js +0 -9
- package/dist/scripts/generate-news-indexes/types.js.map +0 -1
- package/dist/scripts/generate-news-indexes.d.ts +0 -20
- package/dist/scripts/generate-news-indexes.d.ts.map +0 -1
- package/dist/scripts/generate-news-indexes.js +0 -19
- package/dist/scripts/generate-news-indexes.js.map +0 -1
- package/dist/scripts/generate-rss.d.ts +0 -48
- package/dist/scripts/generate-rss.d.ts.map +0 -1
- package/dist/scripts/generate-rss.js +0 -299
- package/dist/scripts/generate-rss.js.map +0 -1
- package/dist/scripts/generate-sitemap-html.d.ts +0 -79
- package/dist/scripts/generate-sitemap-html.d.ts.map +0 -1
- package/dist/scripts/generate-sitemap-html.js +0 -878
- package/dist/scripts/generate-sitemap-html.js.map +0 -1
- package/dist/scripts/generate-sitemap.d.ts +0 -23
- package/dist/scripts/generate-sitemap.d.ts.map +0 -1
- package/dist/scripts/generate-sitemap.js +0 -476
- package/dist/scripts/generate-sitemap.js.map +0 -1
- package/dist/scripts/generate-types-from-cia-schemas.d.ts +0 -176
- package/dist/scripts/generate-types-from-cia-schemas.d.ts.map +0 -1
- package/dist/scripts/generate-types-from-cia-schemas.js +0 -318
- package/dist/scripts/generate-types-from-cia-schemas.js.map +0 -1
- package/dist/scripts/government-role-validator.d.ts +0 -65
- package/dist/scripts/government-role-validator.d.ts.map +0 -1
- package/dist/scripts/government-role-validator.js +0 -217
- package/dist/scripts/government-role-validator.js.map +0 -1
- package/dist/scripts/html-utils.d.ts +0 -17
- package/dist/scripts/html-utils.d.ts.map +0 -1
- package/dist/scripts/html-utils.js +0 -29
- package/dist/scripts/html-utils.js.map +0 -1
- package/dist/scripts/load-cia-stats.d.ts +0 -89
- package/dist/scripts/load-cia-stats.d.ts.map +0 -1
- package/dist/scripts/load-cia-stats.js +0 -400
- package/dist/scripts/load-cia-stats.js.map +0 -1
- package/dist/scripts/mcp-client/client.d.ts +0 -73
- package/dist/scripts/mcp-client/client.d.ts.map +0 -1
- package/dist/scripts/mcp-client/client.js +0 -526
- package/dist/scripts/mcp-client/client.js.map +0 -1
- package/dist/scripts/mcp-client/document-types.d.ts +0 -23
- package/dist/scripts/mcp-client/document-types.d.ts.map +0 -1
- package/dist/scripts/mcp-client/document-types.js +0 -62
- package/dist/scripts/mcp-client/document-types.js.map +0 -1
- package/dist/scripts/mcp-client/index.d.ts +0 -34
- package/dist/scripts/mcp-client/index.d.ts.map +0 -1
- package/dist/scripts/mcp-client/index.js +0 -67
- package/dist/scripts/mcp-client/index.js.map +0 -1
- package/dist/scripts/mcp-client/transport.d.ts +0 -32
- package/dist/scripts/mcp-client/transport.d.ts.map +0 -1
- package/dist/scripts/mcp-client/transport.js +0 -102
- package/dist/scripts/mcp-client/transport.js.map +0 -1
- package/dist/scripts/mcp-client.d.ts +0 -18
- package/dist/scripts/mcp-client.d.ts.map +0 -1
- package/dist/scripts/mcp-client.js +0 -18
- package/dist/scripts/mcp-client.js.map +0 -1
- package/dist/scripts/mcp-query-cli.d.ts +0 -25
- package/dist/scripts/mcp-query-cli.d.ts.map +0 -1
- package/dist/scripts/mcp-query-cli.js +0 -66
- package/dist/scripts/mcp-query-cli.js.map +0 -1
- package/dist/scripts/news-types/breaking-news.d.ts +0 -178
- package/dist/scripts/news-types/breaking-news.d.ts.map +0 -1
- package/dist/scripts/news-types/breaking-news.js +0 -432
- package/dist/scripts/news-types/breaking-news.js.map +0 -1
- package/dist/scripts/news-types/committee-reports.d.ts +0 -212
- package/dist/scripts/news-types/committee-reports.d.ts.map +0 -1
- package/dist/scripts/news-types/committee-reports.js +0 -404
- package/dist/scripts/news-types/committee-reports.js.map +0 -1
- package/dist/scripts/news-types/month-ahead.d.ts +0 -71
- package/dist/scripts/news-types/month-ahead.d.ts.map +0 -1
- package/dist/scripts/news-types/month-ahead.js +0 -392
- package/dist/scripts/news-types/month-ahead.js.map +0 -1
- package/dist/scripts/news-types/monthly-review.d.ts +0 -61
- package/dist/scripts/news-types/monthly-review.d.ts.map +0 -1
- package/dist/scripts/news-types/monthly-review.js +0 -417
- package/dist/scripts/news-types/monthly-review.js.map +0 -1
- package/dist/scripts/news-types/motions.d.ts +0 -214
- package/dist/scripts/news-types/motions.d.ts.map +0 -1
- package/dist/scripts/news-types/motions.js +0 -447
- package/dist/scripts/news-types/motions.js.map +0 -1
- package/dist/scripts/news-types/propositions.d.ts +0 -204
- package/dist/scripts/news-types/propositions.d.ts.map +0 -1
- package/dist/scripts/news-types/propositions.js +0 -401
- package/dist/scripts/news-types/propositions.js.map +0 -1
- package/dist/scripts/news-types/week-ahead.d.ts +0 -231
- package/dist/scripts/news-types/week-ahead.d.ts.map +0 -1
- package/dist/scripts/news-types/week-ahead.js +0 -441
- package/dist/scripts/news-types/week-ahead.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/analysis.d.ts +0 -47
- package/dist/scripts/news-types/weekly-review/analysis.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/analysis.js +0 -276
- package/dist/scripts/news-types/weekly-review/analysis.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts +0 -51
- package/dist/scripts/news-types/weekly-review/data-loader.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/data-loader.js +0 -298
- package/dist/scripts/news-types/weekly-review/data-loader.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/generator.d.ts +0 -18
- package/dist/scripts/news-types/weekly-review/generator.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/generator.js +0 -284
- package/dist/scripts/news-types/weekly-review/generator.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/index.d.ts +0 -20
- package/dist/scripts/news-types/weekly-review/index.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/index.js +0 -23
- package/dist/scripts/news-types/weekly-review/index.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/types.d.ts +0 -72
- package/dist/scripts/news-types/weekly-review/types.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/types.js +0 -20
- package/dist/scripts/news-types/weekly-review/types.js.map +0 -1
- package/dist/scripts/news-types/weekly-review/validation.d.ts +0 -10
- package/dist/scripts/news-types/weekly-review/validation.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review/validation.js +0 -95
- package/dist/scripts/news-types/weekly-review/validation.js.map +0 -1
- package/dist/scripts/news-types/weekly-review.d.ts +0 -15
- package/dist/scripts/news-types/weekly-review.d.ts.map +0 -1
- package/dist/scripts/news-types/weekly-review.js +0 -14
- package/dist/scripts/news-types/weekly-review.js.map +0 -1
- package/dist/scripts/party-variants.d.ts +0 -23
- package/dist/scripts/party-variants.d.ts.map +0 -1
- package/dist/scripts/party-variants.js +0 -50
- package/dist/scripts/party-variants.js.map +0 -1
- package/dist/scripts/pipeline/index.d.ts +0 -19
- package/dist/scripts/pipeline/index.d.ts.map +0 -1
- package/dist/scripts/pipeline/index.js +0 -17
- package/dist/scripts/pipeline/index.js.map +0 -1
- package/dist/scripts/pipeline/orchestrator.d.ts +0 -56
- package/dist/scripts/pipeline/orchestrator.d.ts.map +0 -1
- package/dist/scripts/pipeline/orchestrator.js +0 -147
- package/dist/scripts/pipeline/orchestrator.js.map +0 -1
- package/dist/scripts/pipeline/types.d.ts +0 -117
- package/dist/scripts/pipeline/types.d.ts.map +0 -1
- package/dist/scripts/pipeline/types.js +0 -13
- package/dist/scripts/pipeline/types.js.map +0 -1
- package/dist/scripts/pipeline/validation.d.ts +0 -66
- package/dist/scripts/pipeline/validation.d.ts.map +0 -1
- package/dist/scripts/pipeline/validation.js +0 -129
- package/dist/scripts/pipeline/validation.js.map +0 -1
- package/dist/scripts/populate-analysis-data.d.ts +0 -41
- package/dist/scripts/populate-analysis-data.d.ts.map +0 -1
- package/dist/scripts/populate-analysis-data.js +0 -255
- package/dist/scripts/populate-analysis-data.js.map +0 -1
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts +0 -80
- package/dist/scripts/pre-article-analysis/data-downloader.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/data-downloader.js +0 -230
- package/dist/scripts/pre-article-analysis/data-downloader.js.map +0 -1
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts +0 -141
- package/dist/scripts/pre-article-analysis/data-persistence.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/data-persistence.js +0 -345
- package/dist/scripts/pre-article-analysis/data-persistence.js.map +0 -1
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts +0 -158
- package/dist/scripts/pre-article-analysis/markdown-serializer.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/markdown-serializer.js +0 -648
- package/dist/scripts/pre-article-analysis/markdown-serializer.js.map +0 -1
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts +0 -58
- package/dist/scripts/pre-article-analysis/pdf-converter.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis/pdf-converter.js +0 -142
- package/dist/scripts/pre-article-analysis/pdf-converter.js.map +0 -1
- package/dist/scripts/pre-article-analysis.d.ts +0 -42
- package/dist/scripts/pre-article-analysis.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis.js +0 -642
- package/dist/scripts/pre-article-analysis.js.map +0 -1
- package/dist/scripts/scb-client.d.ts +0 -104
- package/dist/scripts/scb-client.d.ts.map +0 -1
- package/dist/scripts/scb-client.js +0 -286
- package/dist/scripts/scb-client.js.map +0 -1
- package/dist/scripts/scb-context.d.ts +0 -88
- package/dist/scripts/scb-context.d.ts.map +0 -1
- package/dist/scripts/scb-context.js +0 -307
- package/dist/scripts/scb-context.js.map +0 -1
- package/dist/scripts/shared/version.d.ts +0 -9
- package/dist/scripts/shared/version.d.ts.map +0 -1
- package/dist/scripts/shared/version.js +0 -28
- package/dist/scripts/shared/version.js.map +0 -1
- package/dist/scripts/statistical-claims-detector.d.ts +0 -119
- package/dist/scripts/statistical-claims-detector.d.ts.map +0 -1
- package/dist/scripts/statistical-claims-detector.js +0 -391
- package/dist/scripts/statistical-claims-detector.js.map +0 -1
- package/dist/scripts/sync-cia-schemas.d.ts +0 -52
- package/dist/scripts/sync-cia-schemas.d.ts.map +0 -1
- package/dist/scripts/sync-cia-schemas.js +0 -195
- package/dist/scripts/sync-cia-schemas.js.map +0 -1
- package/dist/scripts/translation-dictionary.d.ts +0 -45
- package/dist/scripts/translation-dictionary.d.ts.map +0 -1
- package/dist/scripts/translation-dictionary.js +0 -3642
- package/dist/scripts/translation-dictionary.js.map +0 -1
- package/dist/scripts/types/article.d.ts +0 -392
- package/dist/scripts/types/article.d.ts.map +0 -1
- package/dist/scripts/types/article.js +0 -6
- package/dist/scripts/types/article.js.map +0 -1
- package/dist/scripts/types/content.d.ts +0 -167
- package/dist/scripts/types/content.d.ts.map +0 -1
- package/dist/scripts/types/content.js +0 -6
- package/dist/scripts/types/content.js.map +0 -1
- package/dist/scripts/types/editorial.d.ts +0 -17
- package/dist/scripts/types/editorial.d.ts.map +0 -1
- package/dist/scripts/types/editorial.js +0 -6
- package/dist/scripts/types/editorial.js.map +0 -1
- package/dist/scripts/types/language.d.ts +0 -7
- package/dist/scripts/types/language.d.ts.map +0 -1
- package/dist/scripts/types/language.js +0 -6
- package/dist/scripts/types/language.js.map +0 -1
- package/dist/scripts/types/mcp.d.ts +0 -117
- package/dist/scripts/types/mcp.d.ts.map +0 -1
- package/dist/scripts/types/mcp.js +0 -6
- package/dist/scripts/types/mcp.js.map +0 -1
- package/dist/scripts/types/party.d.ts +0 -9
- package/dist/scripts/types/party.d.ts.map +0 -1
- package/dist/scripts/types/party.js +0 -6
- package/dist/scripts/types/party.js.map +0 -1
- package/dist/scripts/types/validation.d.ts +0 -136
- package/dist/scripts/types/validation.d.ts.map +0 -1
- package/dist/scripts/types/validation.js +0 -6
- package/dist/scripts/types/validation.js.map +0 -1
- package/dist/scripts/types/workflow.d.ts +0 -78
- package/dist/scripts/types/workflow.d.ts.map +0 -1
- package/dist/scripts/types/workflow.js +0 -6
- package/dist/scripts/types/workflow.js.map +0 -1
- package/dist/scripts/update-stats-from-cia.d.ts +0 -44
- package/dist/scripts/update-stats-from-cia.d.ts.map +0 -1
- package/dist/scripts/update-stats-from-cia.js +0 -310
- package/dist/scripts/update-stats-from-cia.js.map +0 -1
- package/dist/scripts/validate-against-cia-schemas.d.ts +0 -126
- package/dist/scripts/validate-against-cia-schemas.d.ts.map +0 -1
- package/dist/scripts/validate-against-cia-schemas.js +0 -299
- package/dist/scripts/validate-against-cia-schemas.js.map +0 -1
- package/dist/scripts/validate-cross-references.d.ts +0 -49
- package/dist/scripts/validate-cross-references.d.ts.map +0 -1
- package/dist/scripts/validate-cross-references.js +0 -183
- package/dist/scripts/validate-cross-references.js.map +0 -1
- package/dist/scripts/validate-file-ownership.d.ts +0 -68
- package/dist/scripts/validate-file-ownership.d.ts.map +0 -1
- package/dist/scripts/validate-file-ownership.js +0 -135
- package/dist/scripts/validate-file-ownership.js.map +0 -1
- package/dist/scripts/validate-news-translations.d.ts +0 -27
- package/dist/scripts/validate-news-translations.d.ts.map +0 -1
- package/dist/scripts/validate-news-translations.js +0 -258
- package/dist/scripts/validate-news-translations.js.map +0 -1
- package/dist/scripts/validate-translations.d.ts +0 -162
- package/dist/scripts/validate-translations.d.ts.map +0 -1
- package/dist/scripts/validate-translations.js +0 -378
- package/dist/scripts/validate-translations.js.map +0 -1
- package/dist/scripts/workflow-state-coordinator.d.ts +0 -354
- package/dist/scripts/workflow-state-coordinator.d.ts.map +0 -1
- package/dist/scripts/workflow-state-coordinator.js +0 -876
- package/dist/scripts/workflow-state-coordinator.js.map +0 -1
- package/dist/scripts/world-bank-client.d.ts +0 -122
- package/dist/scripts/world-bank-client.d.ts.map +0 -1
- package/dist/scripts/world-bank-client.js +0 -192
- package/dist/scripts/world-bank-client.js.map +0 -1
- package/dist/scripts/world-bank-context.d.ts +0 -88
- package/dist/scripts/world-bank-context.d.ts.map +0 -1
- package/dist/scripts/world-bank-context.js +0 -331
- package/dist/scripts/world-bank-context.js.map +0 -1
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* @module populate-analysis-data
|
|
4
|
-
* @description Standalone script that fetches recent data from **all** MCP sources
|
|
5
|
-
* (riksdag-regering, SCB, World Bank) and persists it to `analysis/data/`.
|
|
6
|
-
*
|
|
7
|
-
* This populates the analysis folder with **all** supported data types:
|
|
8
|
-
* - **Documents**: propositions, motions, committeeReports, votes, speeches,
|
|
9
|
-
* questions, interpellations
|
|
10
|
-
* - **Calendar events**: upcoming parliamentary events
|
|
11
|
-
* - **MPs**: current member profiles
|
|
12
|
-
* - **Government documents**: recent government publications (regeringen.se)
|
|
13
|
-
* - **Voting groups**: party-level voting patterns
|
|
14
|
-
* - **World Bank indicators**: Swedish economic context (GDP, unemployment, etc.)
|
|
15
|
-
* - **SCB statistics**: Swedish official statistics for key policy domains
|
|
16
|
-
*
|
|
17
|
-
* The script reuses the existing MCP client and data-persistence modules,
|
|
18
|
-
* ensuring the collision-free sidecar design (data + .meta.json) is
|
|
19
|
-
* consistently applied.
|
|
20
|
-
*
|
|
21
|
-
* Usage:
|
|
22
|
-
* npx tsx scripts/populate-analysis-data.ts [--limit N] [--date YYYY-MM-DD]
|
|
23
|
-
*
|
|
24
|
-
* Options:
|
|
25
|
-
* --limit N Max documents per type (default: 20)
|
|
26
|
-
* --date YYYY-MM-DD Target date for analysis (default: today UTC)
|
|
27
|
-
*
|
|
28
|
-
* @author Hack23 AB
|
|
29
|
-
* @license Apache-2.0
|
|
30
|
-
*/
|
|
31
|
-
import { MCPClient } from './mcp-client/client.js';
|
|
32
|
-
import { downloadAllDocuments, flattenDocuments, } from './pre-article-analysis/data-downloader.js';
|
|
33
|
-
import { persistDownloadedData, persistEvents, persistMPs, persistMCPResponse, persistWorldBankData, persistSCBData, getDataRoot, resolveDocId, } from './pre-article-analysis/data-persistence.js';
|
|
34
|
-
import { WorldBankClient, INDICATOR_IDS, COUNTRY_CODES, } from './world-bank-client.js';
|
|
35
|
-
import { SCBClient, SCB_DOMAINS, } from './scb-client.js';
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
// Helpers
|
|
38
|
-
// ---------------------------------------------------------------------------
|
|
39
|
-
/**
|
|
40
|
-
* Compute riksmöte (parliamentary session year) from an ISO date string.
|
|
41
|
-
* Swedish parliamentary year runs Oct → Sep:
|
|
42
|
-
* - 2025-10-01 to 2026-09-30 → "2025/26"
|
|
43
|
-
* - 2026-10-01 to 2027-09-30 → "2026/27"
|
|
44
|
-
*
|
|
45
|
-
* @param dateStr - ISO date string (YYYY-MM-DD)
|
|
46
|
-
* @returns Riksmöte identifier (e.g. "2025/26")
|
|
47
|
-
*/
|
|
48
|
-
export function riksMoteFromDate(dateStr) {
|
|
49
|
-
const d = new Date(dateStr + 'T00:00:00Z');
|
|
50
|
-
const year = d.getUTCFullYear();
|
|
51
|
-
const month = d.getUTCMonth() + 1;
|
|
52
|
-
if (month >= 10)
|
|
53
|
-
return `${year}/${String(year + 1).slice(-2)}`;
|
|
54
|
-
return `${year - 1}/${String(year).slice(-2)}`;
|
|
55
|
-
}
|
|
56
|
-
/** Format a Date to YYYY-MM-DD. */
|
|
57
|
-
function formatDate(d) {
|
|
58
|
-
return d.toISOString().slice(0, 10);
|
|
59
|
-
}
|
|
60
|
-
/** Safely extract error message from unknown thrown value. */
|
|
61
|
-
function errorMessage(err) {
|
|
62
|
-
return err instanceof Error ? err.message : String(err);
|
|
63
|
-
}
|
|
64
|
-
function parseArgs() {
|
|
65
|
-
const args = process.argv.slice(2);
|
|
66
|
-
let limit = 20;
|
|
67
|
-
let date = formatDate(new Date());
|
|
68
|
-
for (let i = 0; i < args.length; i++) {
|
|
69
|
-
if (args[i] === '--limit' && args[i + 1]) {
|
|
70
|
-
limit = Math.max(1, parseInt(args[i + 1], 10) || 20);
|
|
71
|
-
i++;
|
|
72
|
-
}
|
|
73
|
-
else if (args[i] === '--date' && args[i + 1]) {
|
|
74
|
-
const candidate = args[i + 1];
|
|
75
|
-
const dm = /^(\d{4})-(\d{2})-(\d{2})$/.exec(candidate);
|
|
76
|
-
if (!dm) {
|
|
77
|
-
console.error(`❌ Invalid date: "${candidate}". Expected YYYY-MM-DD format.`);
|
|
78
|
-
process.exit(1);
|
|
79
|
-
}
|
|
80
|
-
const [, yStr, mStr, dStr] = dm;
|
|
81
|
-
const y = Number(yStr), mo = Number(mStr), da = Number(dStr);
|
|
82
|
-
const parsed = new Date(Date.UTC(y, mo - 1, da));
|
|
83
|
-
if (Number.isNaN(parsed.getTime()) || parsed.getUTCFullYear() !== y || parsed.getUTCMonth() + 1 !== mo || parsed.getUTCDate() !== da) {
|
|
84
|
-
console.error(`❌ Invalid date: "${candidate}". Expected a valid YYYY-MM-DD date.`);
|
|
85
|
-
process.exit(1);
|
|
86
|
-
}
|
|
87
|
-
date = candidate;
|
|
88
|
-
i++;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return { limit, date };
|
|
92
|
-
}
|
|
93
|
-
// ---------------------------------------------------------------------------
|
|
94
|
-
// Main
|
|
95
|
-
// ---------------------------------------------------------------------------
|
|
96
|
-
async function main() {
|
|
97
|
-
const { limit, date } = parseArgs();
|
|
98
|
-
const rm = riksMoteFromDate(date);
|
|
99
|
-
console.log('╔══════════════════════════════════════════════════════════════╗');
|
|
100
|
-
console.log('║ 📥 Populate Analysis Data — MCP Data Fetcher ║');
|
|
101
|
-
console.log('╚══════════════════════════════════════════════════════════════╝');
|
|
102
|
-
console.log(` 📅 Date: ${date}`);
|
|
103
|
-
console.log(` 🏛️ Riksmöte: ${rm}`);
|
|
104
|
-
console.log(` 📊 Limit: ${limit} per type`);
|
|
105
|
-
console.log(` 📂 Data root: ${getDataRoot()}`);
|
|
106
|
-
console.log('');
|
|
107
|
-
const client = new MCPClient();
|
|
108
|
-
// ── Step 1: Download all document types ─────────────────────────────────
|
|
109
|
-
console.log('📄 Step 1/7: Downloading parliamentary documents...');
|
|
110
|
-
try {
|
|
111
|
-
const { data, manifest } = await downloadAllDocuments(client, { limit, rm });
|
|
112
|
-
const allDocs = flattenDocuments(data);
|
|
113
|
-
console.log(` ✅ Downloaded ${allDocs.length} documents from ${manifest.dataSources.length} MCP tools (${manifest.durationMs}ms)`);
|
|
114
|
-
const persistResult = persistDownloadedData(data, rm);
|
|
115
|
-
console.log(` 🗄️ Persisted ${persistResult.written} document files (${persistResult.skipped} skipped)`);
|
|
116
|
-
}
|
|
117
|
-
catch (err) {
|
|
118
|
-
console.error(' ❌ Document download failed:', errorMessage(err));
|
|
119
|
-
}
|
|
120
|
-
// ── Step 2: Download calendar events ────────────────────────────────────
|
|
121
|
-
console.log('\n📅 Step 2/7: Downloading calendar events...');
|
|
122
|
-
try {
|
|
123
|
-
const today = new Date(date + 'T00:00:00Z');
|
|
124
|
-
const twoWeeksAhead = new Date(today);
|
|
125
|
-
twoWeeksAhead.setUTCDate(twoWeeksAhead.getUTCDate() + 14);
|
|
126
|
-
const rawEvents = await client.fetchCalendarEvents(formatDate(today), formatDate(twoWeeksAhead));
|
|
127
|
-
const events = (Array.isArray(rawEvents) ? rawEvents : []);
|
|
128
|
-
console.log(` ✅ Downloaded ${events.length} calendar events`);
|
|
129
|
-
if (events.length > 0) {
|
|
130
|
-
const persistResult = persistEvents(events, rm);
|
|
131
|
-
console.log(` 🗄️ Persisted ${persistResult.written} event files (${persistResult.skipped} skipped)`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch (err) {
|
|
135
|
-
console.error(' ❌ Calendar event download failed:', errorMessage(err));
|
|
136
|
-
}
|
|
137
|
-
// ── Step 3: Download MP profiles ────────────────────────────────────────
|
|
138
|
-
console.log('\n👤 Step 3/7: Downloading MP profiles...');
|
|
139
|
-
try {
|
|
140
|
-
const rawMPs = await client.fetchMPs({ limit });
|
|
141
|
-
const mps = (Array.isArray(rawMPs) ? rawMPs : []);
|
|
142
|
-
console.log(` ✅ Downloaded ${mps.length} MP profiles`);
|
|
143
|
-
if (mps.length > 0) {
|
|
144
|
-
const persistResult = persistMPs(mps, rm);
|
|
145
|
-
console.log(` 🗄️ Persisted ${persistResult.written} MP files (${persistResult.skipped} skipped)`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
catch (err) {
|
|
149
|
-
console.error(' ❌ MP download failed:', errorMessage(err));
|
|
150
|
-
}
|
|
151
|
-
// ── Step 4: Download government documents ───────────────────────────────
|
|
152
|
-
console.log('\n🏛️ Step 4/7: Downloading government documents...');
|
|
153
|
-
try {
|
|
154
|
-
const thirtyDaysAgo = new Date(date + 'T00:00:00Z');
|
|
155
|
-
thirtyDaysAgo.setUTCDate(thirtyDaysAgo.getUTCDate() - 30);
|
|
156
|
-
const rawGovDocs = await client.fetchGovernmentDocuments({
|
|
157
|
-
dateFrom: formatDate(thirtyDaysAgo),
|
|
158
|
-
dateTo: date,
|
|
159
|
-
limit,
|
|
160
|
-
});
|
|
161
|
-
const govDocs = (Array.isArray(rawGovDocs) ? rawGovDocs : []);
|
|
162
|
-
console.log(` ✅ Downloaded ${govDocs.length} government documents`);
|
|
163
|
-
let govWritten = 0;
|
|
164
|
-
for (let i = 0; i < govDocs.length; i++) {
|
|
165
|
-
const doc = govDocs[i];
|
|
166
|
-
if (!doc)
|
|
167
|
-
continue;
|
|
168
|
-
persistMCPResponse({ tool: 'search_regering', params: { dateFrom: formatDate(thirtyDaysAgo), dateTo: date, limit }, server: 'riksdag-regering' }, doc, resolveDocId(doc, i));
|
|
169
|
-
govWritten++;
|
|
170
|
-
}
|
|
171
|
-
console.log(` 🗄️ Persisted ${govWritten} government document files`);
|
|
172
|
-
}
|
|
173
|
-
catch (err) {
|
|
174
|
-
console.error(' ❌ Government document download failed:', errorMessage(err));
|
|
175
|
-
}
|
|
176
|
-
// ── Step 5: Download voting groups by party ─────────────────────────────
|
|
177
|
-
console.log('\n🗳️ Step 5/7: Downloading voting groups by party...');
|
|
178
|
-
try {
|
|
179
|
-
const rawGroups = await client.fetchVotingGroup({ rm, groupBy: 'parti', limit });
|
|
180
|
-
const groups = (Array.isArray(rawGroups) ? rawGroups : []);
|
|
181
|
-
console.log(` ✅ Downloaded ${groups.length} voting group records`);
|
|
182
|
-
let voteGroupWritten = 0;
|
|
183
|
-
for (let i = 0; i < groups.length; i++) {
|
|
184
|
-
const group = groups[i];
|
|
185
|
-
if (!group)
|
|
186
|
-
continue;
|
|
187
|
-
const record = group;
|
|
188
|
-
const id = (typeof record['parti'] === 'string' && record['parti'])
|
|
189
|
-
|| `group-${i + 1}`;
|
|
190
|
-
persistMCPResponse({ tool: 'get_voting_group', params: { rm, groupBy: 'parti', limit }, server: 'riksdag-regering' }, group, `${rm.replace('/', '-')}-${id}`);
|
|
191
|
-
voteGroupWritten++;
|
|
192
|
-
}
|
|
193
|
-
console.log(` 🗄️ Persisted ${voteGroupWritten} voting group files`);
|
|
194
|
-
}
|
|
195
|
-
catch (err) {
|
|
196
|
-
console.error(' ❌ Voting group download failed:', errorMessage(err));
|
|
197
|
-
}
|
|
198
|
-
// ── Step 6: Download World Bank indicators for Sweden ───────────────────
|
|
199
|
-
console.log('\n🌍 Step 6/7: Downloading World Bank indicators for Sweden...');
|
|
200
|
-
try {
|
|
201
|
-
const wb = new WorldBankClient();
|
|
202
|
-
const indicatorEntries = Object.entries(INDICATOR_IDS);
|
|
203
|
-
let wbWritten = 0;
|
|
204
|
-
let wbFailed = 0;
|
|
205
|
-
for (const [_name, indicatorId] of indicatorEntries) {
|
|
206
|
-
try {
|
|
207
|
-
const dataPoints = await wb.getIndicator(COUNTRY_CODES.sweden, indicatorId, 10);
|
|
208
|
-
if (dataPoints.length > 0) {
|
|
209
|
-
persistWorldBankData(indicatorId, COUNTRY_CODES.sweden, dataPoints);
|
|
210
|
-
wbWritten++;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
catch {
|
|
214
|
-
wbFailed++;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
console.log(` ✅ Persisted ${wbWritten}/${indicatorEntries.length} World Bank indicators (${wbFailed} failed)`);
|
|
218
|
-
}
|
|
219
|
-
catch (err) {
|
|
220
|
-
console.error(' ❌ World Bank data download failed:', errorMessage(err));
|
|
221
|
-
}
|
|
222
|
-
// ── Step 7: Download SCB statistics for key domains ─────────────────────
|
|
223
|
-
console.log('\n📊 Step 7/7: Downloading SCB statistics...');
|
|
224
|
-
try {
|
|
225
|
-
const scb = new SCBClient();
|
|
226
|
-
const domainsWithTables = SCB_DOMAINS.filter(d => d.tables.length > 0);
|
|
227
|
-
let scbWritten = 0;
|
|
228
|
-
let scbFailed = 0;
|
|
229
|
-
for (const domain of domainsWithTables) {
|
|
230
|
-
for (const tableId of domain.tables) {
|
|
231
|
-
try {
|
|
232
|
-
const data = await scb.getTableData(tableId);
|
|
233
|
-
if (data && (Array.isArray(data) ? data.length > 0 : true)) {
|
|
234
|
-
persistSCBData(tableId, data, { domain: domain.domain, query: domain.query });
|
|
235
|
-
scbWritten++;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
catch {
|
|
239
|
-
scbFailed++;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
console.log(` ✅ Persisted ${scbWritten} SCB tables (${scbFailed} failed)`);
|
|
244
|
-
}
|
|
245
|
-
catch (err) {
|
|
246
|
-
console.error(' ❌ SCB data download failed:', errorMessage(err));
|
|
247
|
-
}
|
|
248
|
-
console.log('\n✅ Analysis data population complete.');
|
|
249
|
-
console.log(` 📂 Data written to: ${getDataRoot()}`);
|
|
250
|
-
}
|
|
251
|
-
main().catch((err) => {
|
|
252
|
-
console.error('Fatal error:', err);
|
|
253
|
-
process.exit(1);
|
|
254
|
-
});
|
|
255
|
-
//# sourceMappingURL=populate-analysis-data.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"populate-analysis-data.js","sourceRoot":"","sources":["../../scripts/populate-analysis-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pre-article-analysis/data-downloader
|
|
3
|
-
* @description Downloads all relevant parliamentary documents from riksdag-regering-mcp
|
|
4
|
-
* for the current Swedish parliamentary session (riksmöte). Returns typed `RawDocument[]`
|
|
5
|
-
* collections plus a manifest of which MCP tools returned successful results and how many
|
|
6
|
-
* documents each returned.
|
|
7
|
-
*
|
|
8
|
-
* Note: The download methods fetch session-wide latest documents (bounded by `limit`
|
|
9
|
-
* and `rm`). Date-specific filtering should be applied by the caller after download
|
|
10
|
-
* (e.g., filtering by the `datum` field on each `RawDocument`).
|
|
11
|
-
*
|
|
12
|
-
* This module is intentionally side-effect-free with respect to the filesystem;
|
|
13
|
-
* callers are responsible for writing any output.
|
|
14
|
-
*
|
|
15
|
-
* @author Hack23 AB
|
|
16
|
-
* @license Apache-2.0
|
|
17
|
-
*/
|
|
18
|
-
import type { RawDocument } from '../data-transformers/types.js';
|
|
19
|
-
import type { MCPClient } from '../mcp-client/client.js';
|
|
20
|
-
/** Supported document type keys for scoped downloads. */
|
|
21
|
-
export type DocumentTypeKey = 'propositions' | 'motions' | 'committeeReports' | 'votes' | 'speeches' | 'questions' | 'interpellations';
|
|
22
|
-
export interface DownloadedData {
|
|
23
|
-
/** Government propositions */
|
|
24
|
-
propositions: RawDocument[];
|
|
25
|
-
/** Parliamentary motions */
|
|
26
|
-
motions: RawDocument[];
|
|
27
|
-
/** Committee reports */
|
|
28
|
-
committeeReports: RawDocument[];
|
|
29
|
-
/** Parliamentary votes */
|
|
30
|
-
votes: RawDocument[];
|
|
31
|
-
/** Parliamentary speeches (anföranden) */
|
|
32
|
-
speeches: RawDocument[];
|
|
33
|
-
/** Written questions */
|
|
34
|
-
questions: RawDocument[];
|
|
35
|
-
/** Interpellations */
|
|
36
|
-
interpellations: RawDocument[];
|
|
37
|
-
}
|
|
38
|
-
export interface DownloadManifest {
|
|
39
|
-
/** Names of MCP tools with successful fetch + post-processing during download */
|
|
40
|
-
dataSources: string[];
|
|
41
|
-
/** Document counts per type */
|
|
42
|
-
docCounts: Record<string, number>;
|
|
43
|
-
/** Total download duration in milliseconds */
|
|
44
|
-
durationMs: number;
|
|
45
|
-
}
|
|
46
|
-
export interface DownloadResult {
|
|
47
|
-
data: DownloadedData;
|
|
48
|
-
manifest: DownloadManifest;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Download all relevant documents from riksdag-regering-mcp.
|
|
52
|
-
*
|
|
53
|
-
* Each document type is fetched with a configurable limit (default 20).
|
|
54
|
-
* Failures in individual calls are caught so a partial result is returned
|
|
55
|
-
* rather than failing the entire pipeline.
|
|
56
|
-
*
|
|
57
|
-
* When `docTypes` is provided, only the listed document types are fetched.
|
|
58
|
-
* This prevents multiple workflows (e.g. propositions and committee-reports)
|
|
59
|
-
* from downloading the same documents and writing conflicting analysis.
|
|
60
|
-
*
|
|
61
|
-
* @param client - MCPClient instance (caller-supplied for testability)
|
|
62
|
-
* @param options - Optional overrides for limits, riksmöte, and document type scoping
|
|
63
|
-
*/
|
|
64
|
-
export declare function downloadAllDocuments(client: MCPClient, options?: {
|
|
65
|
-
limit?: number;
|
|
66
|
-
rm?: string;
|
|
67
|
-
docTypes?: DocumentTypeKey[];
|
|
68
|
-
}): Promise<DownloadResult>;
|
|
69
|
-
/**
|
|
70
|
-
* Flatten all downloaded document collections into a single array,
|
|
71
|
-
* deduplicated by a best-effort document identifier.
|
|
72
|
-
*
|
|
73
|
-
* The primary deduplication key is `dok_id` when present. If `dok_id` is
|
|
74
|
-
* missing or empty, the function falls back in order to:
|
|
75
|
-
* `dokument_id`, `id`, `dok_url`, `url`, `rel_dok_id`, `titel`, and `title`.
|
|
76
|
-
* The first non-empty string among these fields is used as the dedup key,
|
|
77
|
-
* and documents resolving to the same key are treated as duplicates.
|
|
78
|
-
*/
|
|
79
|
-
export declare function flattenDocuments(data: DownloadedData): RawDocument[];
|
|
80
|
-
//# sourceMappingURL=data-downloader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-downloader.d.ts","sourceRoot":"","sources":["../../../scripts/pre-article-analysis/data-downloader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMzD,yDAAyD;AACzD,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,SAAS,GACT,kBAAkB,GAClB,OAAO,GACP,UAAU,GACV,WAAW,GACX,iBAAiB,CAAC;AAEtB,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,4BAA4B;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,wBAAwB;IACxB,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,0BAA0B;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,0CAA0C;IAC1C,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,wBAAwB;IACxB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,sBAAsB;IACtB,eAAe,EAAE,WAAW,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AA8DD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAAO,GAC1E,OAAO,CAAC,cAAc,CAAC,CAqHzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,EAAE,CAgCpE"}
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pre-article-analysis/data-downloader
|
|
3
|
-
* @description Downloads all relevant parliamentary documents from riksdag-regering-mcp
|
|
4
|
-
* for the current Swedish parliamentary session (riksmöte). Returns typed `RawDocument[]`
|
|
5
|
-
* collections plus a manifest of which MCP tools returned successful results and how many
|
|
6
|
-
* documents each returned.
|
|
7
|
-
*
|
|
8
|
-
* Note: The download methods fetch session-wide latest documents (bounded by `limit`
|
|
9
|
-
* and `rm`). Date-specific filtering should be applied by the caller after download
|
|
10
|
-
* (e.g., filtering by the `datum` field on each `RawDocument`).
|
|
11
|
-
*
|
|
12
|
-
* This module is intentionally side-effect-free with respect to the filesystem;
|
|
13
|
-
* callers are responsible for writing any output.
|
|
14
|
-
*
|
|
15
|
-
* @author Hack23 AB
|
|
16
|
-
* @license Apache-2.0
|
|
17
|
-
*/
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
// Helpers
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
function normalise(raw) {
|
|
22
|
-
return raw.filter(Boolean);
|
|
23
|
-
}
|
|
24
|
-
/** All internal fetch task names, kept in sync with the `fetchTasks` array
|
|
25
|
-
* inside `downloadAllDocuments()`. Used to derive the `FetchTaskName` type
|
|
26
|
-
* and to validate the `FETCH_TASK_TYPE_MAP` at compile time. */
|
|
27
|
-
const FETCH_TASK_NAMES = [
|
|
28
|
-
'fetchPropositions',
|
|
29
|
-
'fetchMotions',
|
|
30
|
-
'fetchCommitteeReports',
|
|
31
|
-
'fetchVotingRecords',
|
|
32
|
-
'searchSpeeches',
|
|
33
|
-
'fetchWrittenQuestions',
|
|
34
|
-
'fetchInterpellations',
|
|
35
|
-
];
|
|
36
|
-
/** Maps internal fetch task names to their corresponding DocumentTypeKey.
|
|
37
|
-
* `satisfies` ensures every FetchTaskName maps to a valid DocumentTypeKey
|
|
38
|
-
* at compile time — adding/renaming a task without updating the map is a
|
|
39
|
-
* compile error. */
|
|
40
|
-
const FETCH_TASK_TYPE_MAP = {
|
|
41
|
-
fetchPropositions: 'propositions',
|
|
42
|
-
fetchMotions: 'motions',
|
|
43
|
-
fetchCommitteeReports: 'committeeReports',
|
|
44
|
-
fetchVotingRecords: 'votes',
|
|
45
|
-
searchSpeeches: 'speeches',
|
|
46
|
-
fetchWrittenQuestions: 'questions',
|
|
47
|
-
fetchInterpellations: 'interpellations',
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Returns the current Swedish parliamentary session (riksmöte) in `YYYY/YY` format.
|
|
51
|
-
* The Swedish parliamentary year runs from October to September:
|
|
52
|
-
* - October–December of year N: session is `N/N+1`
|
|
53
|
-
* - January–September of year N: session is `N-1/N`
|
|
54
|
-
*
|
|
55
|
-
* Examples: 2025-11 → "2025/26", 2026-03 → "2025/26", 2026-10 → "2026/27"
|
|
56
|
-
*/
|
|
57
|
-
function currentRm() {
|
|
58
|
-
const now = new Date();
|
|
59
|
-
const year = now.getUTCFullYear();
|
|
60
|
-
const month = now.getUTCMonth() + 1; // 1-based
|
|
61
|
-
// Swedish parliamentary year runs roughly October–September
|
|
62
|
-
if (month >= 10) {
|
|
63
|
-
return `${year}/${String(year + 1).slice(-2)}`;
|
|
64
|
-
}
|
|
65
|
-
return `${year - 1}/${String(year).slice(-2)}`;
|
|
66
|
-
}
|
|
67
|
-
// ---------------------------------------------------------------------------
|
|
68
|
-
// Download orchestration
|
|
69
|
-
// ---------------------------------------------------------------------------
|
|
70
|
-
/**
|
|
71
|
-
* Download all relevant documents from riksdag-regering-mcp.
|
|
72
|
-
*
|
|
73
|
-
* Each document type is fetched with a configurable limit (default 20).
|
|
74
|
-
* Failures in individual calls are caught so a partial result is returned
|
|
75
|
-
* rather than failing the entire pipeline.
|
|
76
|
-
*
|
|
77
|
-
* When `docTypes` is provided, only the listed document types are fetched.
|
|
78
|
-
* This prevents multiple workflows (e.g. propositions and committee-reports)
|
|
79
|
-
* from downloading the same documents and writing conflicting analysis.
|
|
80
|
-
*
|
|
81
|
-
* @param client - MCPClient instance (caller-supplied for testability)
|
|
82
|
-
* @param options - Optional overrides for limits, riksmöte, and document type scoping
|
|
83
|
-
*/
|
|
84
|
-
export async function downloadAllDocuments(client, options = {}) {
|
|
85
|
-
const start = Date.now();
|
|
86
|
-
const limit = options.limit ?? 20;
|
|
87
|
-
const rm = options.rm ?? currentRm();
|
|
88
|
-
const docTypes = options.docTypes ?? null; // null means fetch all types
|
|
89
|
-
const dataSources = [];
|
|
90
|
-
const data = {
|
|
91
|
-
propositions: [],
|
|
92
|
-
motions: [],
|
|
93
|
-
committeeReports: [],
|
|
94
|
-
votes: [],
|
|
95
|
-
speeches: [],
|
|
96
|
-
questions: [],
|
|
97
|
-
interpellations: [],
|
|
98
|
-
};
|
|
99
|
-
// Run independent MCP fetches in parallel to reduce total latency while
|
|
100
|
-
// still collecting partial results on failure.
|
|
101
|
-
const fetchTasks = [
|
|
102
|
-
{
|
|
103
|
-
name: 'fetchPropositions',
|
|
104
|
-
source: 'get_propositioner',
|
|
105
|
-
fetch: () => client.fetchPropositions(limit, rm),
|
|
106
|
-
assign: (raw) => { data.propositions = raw; },
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: 'fetchMotions',
|
|
110
|
-
source: 'get_motioner',
|
|
111
|
-
fetch: () => client.fetchMotions(limit, rm),
|
|
112
|
-
assign: (raw) => { data.motions = raw; },
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
name: 'fetchCommitteeReports',
|
|
116
|
-
source: 'get_betankanden',
|
|
117
|
-
fetch: () => client.fetchCommitteeReports(limit, rm),
|
|
118
|
-
assign: (raw) => { data.committeeReports = raw; },
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
name: 'fetchVotingRecords',
|
|
122
|
-
source: 'search_voteringar',
|
|
123
|
-
fetch: () => client.fetchVotingRecords({ limit, rm }),
|
|
124
|
-
assign: (raw) => { data.votes = raw; },
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
name: 'searchSpeeches',
|
|
128
|
-
source: 'search_anforanden',
|
|
129
|
-
fetch: () => client.searchSpeeches({ limit, rm }),
|
|
130
|
-
assign: (raw) => { data.speeches = raw; },
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
name: 'fetchWrittenQuestions',
|
|
134
|
-
source: 'get_fragor',
|
|
135
|
-
fetch: () => client.fetchWrittenQuestions({ limit, rm }),
|
|
136
|
-
assign: (raw) => { data.questions = raw; },
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
name: 'fetchInterpellations',
|
|
140
|
-
source: 'get_interpellationer',
|
|
141
|
-
fetch: () => client.fetchInterpellations({ limit, rm }),
|
|
142
|
-
assign: (raw) => { data.interpellations = raw; },
|
|
143
|
-
},
|
|
144
|
-
];
|
|
145
|
-
// When docTypes is specified, only fetch the listed document types.
|
|
146
|
-
// task.name is typed as FetchTaskName via the `as const` assertion on
|
|
147
|
-
// fetchTasks, so the lookup is safe without a cast.
|
|
148
|
-
const activeTasks = docTypes
|
|
149
|
-
? fetchTasks.filter(task => {
|
|
150
|
-
const mapped = FETCH_TASK_TYPE_MAP[task.name];
|
|
151
|
-
return docTypes.includes(mapped);
|
|
152
|
-
})
|
|
153
|
-
: fetchTasks;
|
|
154
|
-
const fetchResults = await Promise.allSettled(activeTasks.map(task => task.fetch()));
|
|
155
|
-
fetchResults.forEach((result, index) => {
|
|
156
|
-
const task = activeTasks[index];
|
|
157
|
-
if (result.status === 'fulfilled') {
|
|
158
|
-
try {
|
|
159
|
-
task.assign(normalise(result.value));
|
|
160
|
-
dataSources.push(task.source);
|
|
161
|
-
}
|
|
162
|
-
catch (err) {
|
|
163
|
-
console.warn(`[pre-analysis] ${task.name} post-processing failed:`, err instanceof Error ? err.message : String(err));
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
console.warn(`[pre-analysis] ${task.name} failed:`, result.reason instanceof Error ? result.reason.message : String(result.reason));
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
const docCounts = {
|
|
171
|
-
propositions: data.propositions.length,
|
|
172
|
-
motions: data.motions.length,
|
|
173
|
-
committeeReports: data.committeeReports.length,
|
|
174
|
-
votes: data.votes.length,
|
|
175
|
-
speeches: data.speeches.length,
|
|
176
|
-
questions: data.questions.length,
|
|
177
|
-
interpellations: data.interpellations.length,
|
|
178
|
-
};
|
|
179
|
-
return {
|
|
180
|
-
data,
|
|
181
|
-
manifest: {
|
|
182
|
-
dataSources,
|
|
183
|
-
docCounts,
|
|
184
|
-
durationMs: Date.now() - start,
|
|
185
|
-
},
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Flatten all downloaded document collections into a single array,
|
|
190
|
-
* deduplicated by a best-effort document identifier.
|
|
191
|
-
*
|
|
192
|
-
* The primary deduplication key is `dok_id` when present. If `dok_id` is
|
|
193
|
-
* missing or empty, the function falls back in order to:
|
|
194
|
-
* `dokument_id`, `id`, `dok_url`, `url`, `rel_dok_id`, `titel`, and `title`.
|
|
195
|
-
* The first non-empty string among these fields is used as the dedup key,
|
|
196
|
-
* and documents resolving to the same key are treated as duplicates.
|
|
197
|
-
*/
|
|
198
|
-
export function flattenDocuments(data) {
|
|
199
|
-
const all = [
|
|
200
|
-
...data.propositions,
|
|
201
|
-
...data.motions,
|
|
202
|
-
...data.committeeReports,
|
|
203
|
-
...data.votes,
|
|
204
|
-
...data.speeches,
|
|
205
|
-
...data.questions,
|
|
206
|
-
...data.interpellations,
|
|
207
|
-
];
|
|
208
|
-
const seen = new Set();
|
|
209
|
-
return all.filter(doc => {
|
|
210
|
-
if (!doc)
|
|
211
|
-
return false;
|
|
212
|
-
const record = doc;
|
|
213
|
-
const idCandidates = [
|
|
214
|
-
record['dok_id'],
|
|
215
|
-
record['dokument_id'],
|
|
216
|
-
record['id'],
|
|
217
|
-
record['dok_url'],
|
|
218
|
-
record['url'],
|
|
219
|
-
record['rel_dok_id'],
|
|
220
|
-
record['titel'],
|
|
221
|
-
record['title'],
|
|
222
|
-
];
|
|
223
|
-
const id = idCandidates.find((candidate) => typeof candidate === 'string' && candidate.trim().length > 0)?.trim() ?? '';
|
|
224
|
-
if (!id || seen.has(id))
|
|
225
|
-
return false;
|
|
226
|
-
seen.add(id);
|
|
227
|
-
return true;
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=data-downloader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-downloader.js","sourceRoot":"","sources":["../../../scripts/pre-article-analysis/data-downloader.ts"],"names":[],"mappings":"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"}
|