riksdagsmonitor 0.8.21 → 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 +54 -22
- 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 -495
- 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 -41
- package/dist/scripts/pre-article-analysis.d.ts.map +0 -1
- package/dist/scripts/pre-article-analysis.js +0 -591
- 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,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pipeline/orchestrator
|
|
3
|
-
* @description Unified pipeline orchestrator.
|
|
4
|
-
*
|
|
5
|
-
* The `PipelineOrchestrator` runs a collection of `ContentPipeline` instances
|
|
6
|
-
* either sequentially (default) or in parallel, collects results, logs
|
|
7
|
-
* progress, and surfaces a structured `OrchestratorResult`.
|
|
8
|
-
*
|
|
9
|
-
* Usage (sequential):
|
|
10
|
-
* ```ts
|
|
11
|
-
* import { PipelineOrchestrator } from './pipeline/orchestrator.js';
|
|
12
|
-
* import { MotionsPipeline } from './pipeline/plugins/motions-pipeline.js';
|
|
13
|
-
*
|
|
14
|
-
* const orchestrator = new PipelineOrchestrator({
|
|
15
|
-
* pipelines: [new MotionsPipeline()],
|
|
16
|
-
* });
|
|
17
|
-
* const result = await orchestrator.run();
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @author Hack23 AB
|
|
21
|
-
* @license Apache-2.0
|
|
22
|
-
*/
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// PipelineOrchestrator
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
/**
|
|
27
|
-
* Orchestrates the execution of one or more `ContentPipeline` instances.
|
|
28
|
-
*
|
|
29
|
-
* Key behaviours:
|
|
30
|
-
* - **Error isolation**: a failure in one pipeline does not abort others.
|
|
31
|
-
* - **Parallel mode**: when `config.parallel = true` all pipelines run via
|
|
32
|
-
* `Promise.allSettled` for throughput and robust error handling; otherwise
|
|
33
|
-
* they execute sequentially for predictable log output.
|
|
34
|
-
* - **Result aggregation**: all per-pipeline `PipelineResult` objects are
|
|
35
|
-
* merged into a single `OrchestratorResult`.
|
|
36
|
-
*/
|
|
37
|
-
export class PipelineOrchestrator {
|
|
38
|
-
pipelines;
|
|
39
|
-
parallel;
|
|
40
|
-
defaultOptions;
|
|
41
|
-
constructor(config) {
|
|
42
|
-
this.pipelines = config.pipelines;
|
|
43
|
-
this.parallel = config.parallel ?? false;
|
|
44
|
-
this.defaultOptions = config.defaultOptions ?? {};
|
|
45
|
-
}
|
|
46
|
-
// -------------------------------------------------------------------------
|
|
47
|
-
// Public API
|
|
48
|
-
// -------------------------------------------------------------------------
|
|
49
|
-
/**
|
|
50
|
-
* Run all pipelines and return an aggregated `OrchestratorResult`.
|
|
51
|
-
*
|
|
52
|
-
* @param overrideOptions - Options forwarded to every pipeline, merged on
|
|
53
|
-
* top of `defaultOptions`.
|
|
54
|
-
*/
|
|
55
|
-
async run(overrideOptions) {
|
|
56
|
-
const startTime = Date.now();
|
|
57
|
-
const effectiveOptions = {
|
|
58
|
-
...this.defaultOptions,
|
|
59
|
-
...(overrideOptions ?? {}),
|
|
60
|
-
};
|
|
61
|
-
const results = {};
|
|
62
|
-
if (this.parallel) {
|
|
63
|
-
const settled = await Promise.allSettled(this.pipelines.map(p => this._runSingle(p, effectiveOptions)));
|
|
64
|
-
for (let i = 0; i < this.pipelines.length; i++) {
|
|
65
|
-
const pipeline = this.pipelines[i];
|
|
66
|
-
const outcome = settled[i];
|
|
67
|
-
if (outcome.status === 'fulfilled') {
|
|
68
|
-
results[pipeline.name] = outcome.value;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
// Promise should never reject because _runSingle catches all errors,
|
|
72
|
-
// but handle it defensively.
|
|
73
|
-
results[pipeline.name] = {
|
|
74
|
-
success: false,
|
|
75
|
-
error: String(outcome.reason),
|
|
76
|
-
warnings: [],
|
|
77
|
-
degraded: false,
|
|
78
|
-
files: 0,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
for (const pipeline of this.pipelines) {
|
|
85
|
-
results[pipeline.name] = await this._runSingle(pipeline, effectiveOptions);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return this._aggregate(results, Date.now() - startTime);
|
|
89
|
-
}
|
|
90
|
-
// -------------------------------------------------------------------------
|
|
91
|
-
// Private helpers
|
|
92
|
-
// -------------------------------------------------------------------------
|
|
93
|
-
/**
|
|
94
|
-
* Run a single pipeline, wrapping any unexpected throws in a failed result.
|
|
95
|
-
*/
|
|
96
|
-
async _runSingle(pipeline, options) {
|
|
97
|
-
console.log(`[Orchestrator] ▶ Starting pipeline: ${pipeline.name}`);
|
|
98
|
-
const t0 = Date.now();
|
|
99
|
-
try {
|
|
100
|
-
const result = await pipeline.run(options);
|
|
101
|
-
const durationMs = Date.now() - t0;
|
|
102
|
-
console.log(`[Orchestrator] ${result.success ? '✅' : '❌'} Pipeline "${pipeline.name}" completed in ${durationMs}ms`);
|
|
103
|
-
return { ...result, durationMs };
|
|
104
|
-
}
|
|
105
|
-
catch (err) {
|
|
106
|
-
const durationMs = Date.now() - t0;
|
|
107
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
108
|
-
console.error(`[Orchestrator] 💥 Pipeline "${pipeline.name}" threw unexpectedly after ${durationMs}ms: ${message}`);
|
|
109
|
-
return {
|
|
110
|
-
success: false,
|
|
111
|
-
error: message,
|
|
112
|
-
durationMs,
|
|
113
|
-
warnings: [`Unexpected throw from pipeline "${pipeline.name}": ${message}`],
|
|
114
|
-
degraded: false,
|
|
115
|
-
files: 0,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Aggregate individual pipeline results into a single orchestrator result.
|
|
121
|
-
*/
|
|
122
|
-
_aggregate(results, totalDurationMs) {
|
|
123
|
-
let totalFiles = 0;
|
|
124
|
-
let allSucceeded = true;
|
|
125
|
-
const warnings = [];
|
|
126
|
-
for (const [name, result] of Object.entries(results)) {
|
|
127
|
-
if (!result.success) {
|
|
128
|
-
allSucceeded = false;
|
|
129
|
-
console.warn(`[Orchestrator] ⚠ Pipeline "${name}" did not succeed: ${result.error ?? 'unknown error'}`);
|
|
130
|
-
}
|
|
131
|
-
totalFiles += result.files ?? 0;
|
|
132
|
-
if (result.warnings) {
|
|
133
|
-
warnings.push(...result.warnings);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
console.log(`[Orchestrator] 🏁 All pipelines done. ` +
|
|
137
|
-
`success=${allSucceeded}, files=${totalFiles}, duration=${totalDurationMs}ms`);
|
|
138
|
-
return {
|
|
139
|
-
allSucceeded,
|
|
140
|
-
totalFiles,
|
|
141
|
-
results,
|
|
142
|
-
warnings,
|
|
143
|
-
durationMs: totalDurationMs,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../scripts/pipeline/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pipeline/types
|
|
3
|
-
* @description ContentPipeline interface and related types for the standardised
|
|
4
|
-
* article-generation lifecycle: fetch → transform → generate → validate → write.
|
|
5
|
-
*
|
|
6
|
-
* Each article type implements `ContentPipeline` and is executed by the
|
|
7
|
-
* `PipelineOrchestrator` in `orchestrator.ts`.
|
|
8
|
-
*
|
|
9
|
-
* @author Hack23 AB
|
|
10
|
-
* @license Apache-2.0
|
|
11
|
-
*/
|
|
12
|
-
import type { Language } from '../types/language.js';
|
|
13
|
-
import type { GenerationResult } from '../types/article.js';
|
|
14
|
-
/**
|
|
15
|
-
* Named stages of the article-generation lifecycle.
|
|
16
|
-
* Stages execute sequentially for each language variant.
|
|
17
|
-
*/
|
|
18
|
-
export type PipelineStage = 'fetch' | 'transform' | 'generate' | 'validate' | 'write';
|
|
19
|
-
/**
|
|
20
|
-
* Rich result returned by a completed pipeline run.
|
|
21
|
-
* Extends `GenerationResult` with per-stage timing and degradation metadata.
|
|
22
|
-
*/
|
|
23
|
-
export interface PipelineResult extends GenerationResult {
|
|
24
|
-
/** Wall-clock time in milliseconds for the complete pipeline run. */
|
|
25
|
-
durationMs?: number;
|
|
26
|
-
/**
|
|
27
|
-
* Per-stage duration breakdown (ms).
|
|
28
|
-
* Keys match `PipelineStage` values.
|
|
29
|
-
*/
|
|
30
|
-
stageDurations?: Partial<Record<PipelineStage, number>>;
|
|
31
|
-
/**
|
|
32
|
-
* Warnings collected during the run (e.g. MCP queries that returned no data
|
|
33
|
-
* but were handled via graceful degradation).
|
|
34
|
-
*/
|
|
35
|
-
warnings?: string[];
|
|
36
|
-
/**
|
|
37
|
-
* Whether the pipeline used cached / fallback data for any stage.
|
|
38
|
-
* `true` indicates at least one graceful-degradation path was taken.
|
|
39
|
-
*/
|
|
40
|
-
degraded?: boolean;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Common options accepted by every `ContentPipeline.run()` implementation.
|
|
44
|
-
*/
|
|
45
|
-
export interface PipelineOptions {
|
|
46
|
-
/** Language variants to generate. Defaults to `['en', 'sv']`. */
|
|
47
|
-
languages?: Language[];
|
|
48
|
-
/**
|
|
49
|
-
* Callback invoked after each article HTML is generated.
|
|
50
|
-
* Used by the orchestrator to write files. When `null` the article is
|
|
51
|
-
* generated in-memory only (useful for tests / dry-run mode).
|
|
52
|
-
*/
|
|
53
|
-
writeArticle?: ((html: string, filename: string) => Promise<void>) | null;
|
|
54
|
-
/**
|
|
55
|
-
* When `true` articles are generated even when source data is sparse.
|
|
56
|
-
* Defaults to `false`.
|
|
57
|
-
*/
|
|
58
|
-
allowDegradedContent?: boolean;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Contract that every article-type plugin must implement.
|
|
62
|
-
*
|
|
63
|
-
* Lifecycle:
|
|
64
|
-
* 1. **fetch** – Retrieve raw data from MCP tools (may partially fail).
|
|
65
|
-
* 2. **transform** – Convert raw data into article payloads per language.
|
|
66
|
-
* 3. **generate** – Render HTML via `generateArticleHTML`.
|
|
67
|
-
* 4. **validate** – Verify HTML structure before writing.
|
|
68
|
-
* 5. **write** – Persist files to `news/` directory.
|
|
69
|
-
*
|
|
70
|
-
* Implementations are responsible for graceful degradation: if the `fetch`
|
|
71
|
-
* stage partially fails they should log a warning and continue with whatever
|
|
72
|
-
* data is available rather than throwing.
|
|
73
|
-
*/
|
|
74
|
-
export interface ContentPipeline {
|
|
75
|
-
/**
|
|
76
|
-
* Human-readable name of this pipeline (e.g. `'motions'`).
|
|
77
|
-
* Used for logging and metrics.
|
|
78
|
-
*/
|
|
79
|
-
readonly name: string;
|
|
80
|
-
/**
|
|
81
|
-
* Execute the full pipeline lifecycle and return a `PipelineResult`.
|
|
82
|
-
*
|
|
83
|
-
* Implementations **must not throw** — all errors should be caught and
|
|
84
|
-
* returned via `PipelineResult.success = false` and `PipelineResult.error`.
|
|
85
|
-
*/
|
|
86
|
-
run(options?: PipelineOptions): Promise<PipelineResult>;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Configuration passed to `PipelineOrchestrator`.
|
|
90
|
-
*/
|
|
91
|
-
export interface OrchestratorConfig {
|
|
92
|
-
/** Pipelines to run. Order matters when `parallel = false`. */
|
|
93
|
-
pipelines: ContentPipeline[];
|
|
94
|
-
/**
|
|
95
|
-
* When `true` all pipelines run concurrently via `Promise.allSettled`.
|
|
96
|
-
* Defaults to `false` (sequential) for predictable logging.
|
|
97
|
-
*/
|
|
98
|
-
parallel?: boolean;
|
|
99
|
-
/** Default options forwarded to each pipeline unless overridden. */
|
|
100
|
-
defaultOptions?: PipelineOptions;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Aggregate result produced by the orchestrator after running all pipelines.
|
|
104
|
-
*/
|
|
105
|
-
export interface OrchestratorResult {
|
|
106
|
-
/** `true` when every pipeline in the run reported success. */
|
|
107
|
-
allSucceeded: boolean;
|
|
108
|
-
/** Total number of files written across all pipelines. */
|
|
109
|
-
totalFiles: number;
|
|
110
|
-
/** Individual results keyed by pipeline name. */
|
|
111
|
-
results: Record<string, PipelineResult>;
|
|
112
|
-
/** Warnings collected across all pipelines. */
|
|
113
|
-
warnings: string[];
|
|
114
|
-
/** Total wall-clock time for the orchestrator run (ms). */
|
|
115
|
-
durationMs: number;
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../scripts/pipeline/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM5D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAMtF;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1E;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAMD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACzD;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,YAAY,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pipeline/types
|
|
3
|
-
* @description ContentPipeline interface and related types for the standardised
|
|
4
|
-
* article-generation lifecycle: fetch → transform → generate → validate → write.
|
|
5
|
-
*
|
|
6
|
-
* Each article type implements `ContentPipeline` and is executed by the
|
|
7
|
-
* `PipelineOrchestrator` in `orchestrator.ts`.
|
|
8
|
-
*
|
|
9
|
-
* @author Hack23 AB
|
|
10
|
-
* @license Apache-2.0
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../scripts/pipeline/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pipeline/validation
|
|
3
|
-
* @description Post-generation HTML structure validation.
|
|
4
|
-
*
|
|
5
|
-
* Validates that generated article HTML meets minimum structural requirements
|
|
6
|
-
* before the file is written to disk. Failures are non-fatal by default —
|
|
7
|
-
* the orchestrator collects validation warnings and continues.
|
|
8
|
-
*
|
|
9
|
-
* @author Hack23 AB
|
|
10
|
-
* @license Apache-2.0
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Result of validating a single HTML article string.
|
|
14
|
-
*/
|
|
15
|
-
export interface ArticleValidationResult {
|
|
16
|
-
/** `true` when the HTML passes all required checks. */
|
|
17
|
-
passed: boolean;
|
|
18
|
-
/** Informational messages about checks that passed. */
|
|
19
|
-
passedChecks: string[];
|
|
20
|
-
/** Error messages for checks that failed (non-empty means `passed = false`). */
|
|
21
|
-
errors: string[];
|
|
22
|
-
/** Warning messages for checks that are advisory only. */
|
|
23
|
-
warnings: string[];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Options controlling which checks are enforced.
|
|
27
|
-
*/
|
|
28
|
-
export interface ValidationOptions {
|
|
29
|
-
/** Require a `<h1>` element (default: `true`). */
|
|
30
|
-
requireH1?: boolean;
|
|
31
|
-
/** Require at least one `<h2>` section (default: `true`). */
|
|
32
|
-
requireSections?: boolean;
|
|
33
|
-
/** Require the sources footer block and fail when absent (default: `true`). */
|
|
34
|
-
requireSources?: boolean;
|
|
35
|
-
/** Minimum word count threshold (default: `50`). */
|
|
36
|
-
minWordCount?: number;
|
|
37
|
-
/** Require valid `<html lang="…">` attribute (default: `true`). */
|
|
38
|
-
requireLangAttr?: boolean;
|
|
39
|
-
/** Require `<!DOCTYPE html>` declaration (default: `true`). */
|
|
40
|
-
requireDoctype?: boolean;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Validate the structure of a generated article HTML string.
|
|
44
|
-
*
|
|
45
|
-
* This is a lightweight regex / string-based check, not a full DOM parse.
|
|
46
|
-
* It is intentionally fast and dependency-free.
|
|
47
|
-
*
|
|
48
|
-
* @param html - The complete HTML string to validate.
|
|
49
|
-
* @param opts - Optional configuration overrides.
|
|
50
|
-
* @returns Structured validation result.
|
|
51
|
-
*/
|
|
52
|
-
export declare function validateArticleHTML(html: string, opts?: ValidationOptions): ArticleValidationResult;
|
|
53
|
-
/**
|
|
54
|
-
* Validate a batch of articles and return a summary.
|
|
55
|
-
*
|
|
56
|
-
* @param articles - Array of `{ filename, html }` objects.
|
|
57
|
-
* @param opts - Optional validation configuration.
|
|
58
|
-
* @returns Array of per-article validation results.
|
|
59
|
-
*/
|
|
60
|
-
export declare function validateArticleBatch(articles: ReadonlyArray<{
|
|
61
|
-
filename: string;
|
|
62
|
-
html: string;
|
|
63
|
-
}>, opts?: ValidationOptions): Array<ArticleValidationResult & {
|
|
64
|
-
filename: string;
|
|
65
|
-
}>;
|
|
66
|
-
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../scripts/pipeline/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;IAChB,uDAAuD;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gFAAgF;IAChF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAmBD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,uBAAuB,CAoFzB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3D,IAAI,GAAE,iBAAsB,GAC3B,KAAK,CAAC,uBAAuB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAKvD"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module pipeline/validation
|
|
3
|
-
* @description Post-generation HTML structure validation.
|
|
4
|
-
*
|
|
5
|
-
* Validates that generated article HTML meets minimum structural requirements
|
|
6
|
-
* before the file is written to disk. Failures are non-fatal by default —
|
|
7
|
-
* the orchestrator collects validation warnings and continues.
|
|
8
|
-
*
|
|
9
|
-
* @author Hack23 AB
|
|
10
|
-
* @license Apache-2.0
|
|
11
|
-
*/
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
// Default options
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
const DEFAULT_OPTIONS = {
|
|
16
|
-
requireH1: true,
|
|
17
|
-
requireSections: true,
|
|
18
|
-
requireSources: true,
|
|
19
|
-
minWordCount: 50,
|
|
20
|
-
requireLangAttr: true,
|
|
21
|
-
requireDoctype: true,
|
|
22
|
-
};
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// HTML structure validation
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
/**
|
|
27
|
-
* Validate the structure of a generated article HTML string.
|
|
28
|
-
*
|
|
29
|
-
* This is a lightweight regex / string-based check, not a full DOM parse.
|
|
30
|
-
* It is intentionally fast and dependency-free.
|
|
31
|
-
*
|
|
32
|
-
* @param html - The complete HTML string to validate.
|
|
33
|
-
* @param opts - Optional configuration overrides.
|
|
34
|
-
* @returns Structured validation result.
|
|
35
|
-
*/
|
|
36
|
-
export function validateArticleHTML(html, opts = {}) {
|
|
37
|
-
const options = { ...DEFAULT_OPTIONS, ...opts };
|
|
38
|
-
const errors = [];
|
|
39
|
-
const warnings = [];
|
|
40
|
-
const passedChecks = [];
|
|
41
|
-
if (!html || typeof html !== 'string') {
|
|
42
|
-
return {
|
|
43
|
-
passed: false,
|
|
44
|
-
passedChecks,
|
|
45
|
-
errors: ['HTML is empty or not a string'],
|
|
46
|
-
warnings,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
// --- DOCTYPE ---
|
|
50
|
-
if (options.requireDoctype) {
|
|
51
|
-
if (/<!DOCTYPE\s+html>/i.test(html)) {
|
|
52
|
-
passedChecks.push('DOCTYPE present');
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
errors.push('Missing <!DOCTYPE html> declaration');
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// --- lang attribute ---
|
|
59
|
-
if (options.requireLangAttr) {
|
|
60
|
-
if (/<html[^>]+lang=["'][a-z]{2,5}["']/i.test(html)) {
|
|
61
|
-
passedChecks.push('lang attribute present');
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
errors.push('Missing valid lang attribute on <html> element');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// --- H1 ---
|
|
68
|
-
if (options.requireH1) {
|
|
69
|
-
if (/<h1[^>]*>[\s\S]+?<\/h1>/i.test(html)) {
|
|
70
|
-
passedChecks.push('H1 heading present');
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
errors.push('Missing <h1> heading');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// --- Sections (H2) ---
|
|
77
|
-
if (options.requireSections) {
|
|
78
|
-
const h2Matches = html.match(/<h2[^>]*>/gi);
|
|
79
|
-
const h2Count = h2Matches ? h2Matches.length : 0;
|
|
80
|
-
if (h2Count >= 1) {
|
|
81
|
-
passedChecks.push(`${h2Count} <h2> section(s) present`);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
errors.push('No <h2> sections found — article content may be missing');
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// --- Sources footer ---
|
|
88
|
-
if (options.requireSources) {
|
|
89
|
-
if (/article-sources|data-sources|riksdag-regering-mcp/i.test(html)) {
|
|
90
|
-
passedChecks.push('Sources block present');
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
errors.push('Sources footer block not detected — article may lack attribution');
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// --- Word count (article body only: strip <head>, <script>, <style> blocks first) ---
|
|
97
|
-
const bodyOnly = html
|
|
98
|
-
.replace(/<head[\s\S]*?<\/head>/gi, '')
|
|
99
|
-
.replace(/<script[\s\S]*?<\/script>/gi, '')
|
|
100
|
-
.replace(/<style[\s\S]*?<\/style>/gi, '');
|
|
101
|
-
const textContent = bodyOnly.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim();
|
|
102
|
-
const wordCount = textContent.split(' ').filter(w => w.length > 0).length;
|
|
103
|
-
if (wordCount >= options.minWordCount) {
|
|
104
|
-
passedChecks.push(`Word count ${wordCount} meets minimum ${options.minWordCount}`);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
errors.push(`Word count ${wordCount} is below minimum ${options.minWordCount} — article content may be too thin`);
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
passed: errors.length === 0,
|
|
111
|
-
passedChecks,
|
|
112
|
-
errors,
|
|
113
|
-
warnings,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Validate a batch of articles and return a summary.
|
|
118
|
-
*
|
|
119
|
-
* @param articles - Array of `{ filename, html }` objects.
|
|
120
|
-
* @param opts - Optional validation configuration.
|
|
121
|
-
* @returns Array of per-article validation results.
|
|
122
|
-
*/
|
|
123
|
-
export function validateArticleBatch(articles, opts = {}) {
|
|
124
|
-
return articles.map(({ filename, html }) => ({
|
|
125
|
-
filename,
|
|
126
|
-
...validateArticleHTML(html, opts),
|
|
127
|
-
}));
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../scripts/pipeline/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +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
|
-
/**
|
|
32
|
-
* Compute riksmöte (parliamentary session year) from an ISO date string.
|
|
33
|
-
* Swedish parliamentary year runs Oct → Sep:
|
|
34
|
-
* - 2025-10-01 to 2026-09-30 → "2025/26"
|
|
35
|
-
* - 2026-10-01 to 2027-09-30 → "2026/27"
|
|
36
|
-
*
|
|
37
|
-
* @param dateStr - ISO date string (YYYY-MM-DD)
|
|
38
|
-
* @returns Riksmöte identifier (e.g. "2025/26")
|
|
39
|
-
*/
|
|
40
|
-
export declare function riksMoteFromDate(dateStr: string): string;
|
|
41
|
-
//# sourceMappingURL=populate-analysis-data.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"populate-analysis-data.d.ts","sourceRoot":"","sources":["../../scripts/populate-analysis-data.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAgCH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD"}
|