riksdagsmonitor 0.8.23 ā 0.8.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -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,878 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module Infrastructure/SEO
|
|
3
|
-
* @category Intelligence Operations / Supporting Infrastructure
|
|
4
|
-
* @name Sitemap HTML Generation - Multi-Language HTML Sitemap Pages
|
|
5
|
-
*
|
|
6
|
-
* @description
|
|
7
|
-
* Generates localized sitemap HTML pages for all 14 language variants.
|
|
8
|
-
* Extracts article titles and descriptions from news HTML files and
|
|
9
|
-
* generates human-readable sitemap pages with proper localization.
|
|
10
|
-
*
|
|
11
|
-
* @author Hack23 AB (Infrastructure Team)
|
|
12
|
-
* @license Apache-2.0
|
|
13
|
-
* @version 1.0.0
|
|
14
|
-
*/
|
|
15
|
-
import fs from 'fs';
|
|
16
|
-
import path from 'path';
|
|
17
|
-
import { fileURLToPath } from 'url';
|
|
18
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
-
const __dirname = path.dirname(__filename);
|
|
20
|
-
console.log('šŗļø Sitemap HTML Generation Script');
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
// Configuration
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
const BASE_URL = 'https://riksdagsmonitor.com';
|
|
25
|
-
const NEWS_DIR = path.join(__dirname, '..', 'news');
|
|
26
|
-
const DOCS_DIR = path.join(__dirname, '..', 'docs');
|
|
27
|
-
const ROOT_DIR = path.join(__dirname, '..');
|
|
28
|
-
const LANGUAGES = ['en', 'sv', 'da', 'no', 'fi', 'de', 'fr', 'es', 'nl', 'ar', 'he', 'ja', 'ko', 'zh'];
|
|
29
|
-
const LANGUAGE_META = {
|
|
30
|
-
en: {
|
|
31
|
-
name: 'English', nativeName: 'English', flag: 'š¬š§', dir: 'ltr', locale: 'en_US', hreflang: 'en',
|
|
32
|
-
translations: {
|
|
33
|
-
siteMap: 'Sitemap', completeNavigation: 'Complete navigation for Riksdagsmonitor platform',
|
|
34
|
-
quickJumpTo: 'Quick Jump To', mainPlatform: 'Main Platform', dashboards: 'Interactive Dashboards',
|
|
35
|
-
newsAnalysis: 'News & Analysis', multiLanguage: 'Multi-Language Platform Access',
|
|
36
|
-
documentation: 'Documentation', resources: 'Additional Resources',
|
|
37
|
-
sitemapLanguages: 'This Sitemap in Other Languages', home: 'Home',
|
|
38
|
-
newsIndex: 'News Index', newsDesc: 'Latest political news, analysis, and updates from the Swedish Parliament and Government.',
|
|
39
|
-
ciaDashboard: 'CIA Intelligence Dashboard', ciaDashboardDesc: 'Interactive visualization of CIA intelligence exports: Party performance, election predictions, MP rankings.',
|
|
40
|
-
politicianDashboard: 'Politician Career & Productivity Analytics', politicianDashboardDesc: 'Comprehensive politician career and productivity dashboard for Sweden\'s 349 MPs.',
|
|
41
|
-
mainPlatformDesc: 'Swedish Election 2026 live intelligence platform: Real-time monitoring, coalition predictions, comprehensive parliamentary analysis.',
|
|
42
|
-
xmlSitemap: 'XML Sitemap', xmlSitemapDesc: 'Machine-readable sitemap for search engines (XML format).',
|
|
43
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'Search engine crawler instructions.',
|
|
44
|
-
sitemapInOtherLanguages: 'This Sitemap in Other Languages', accessPlatform: 'Access the main platform in your preferred language.',
|
|
45
|
-
apiDocs: 'API Documentation', apiDocsDesc: 'Generated API documentation for platform scripts and modules.',
|
|
46
|
-
coverageReports: 'Code Coverage Reports', coverageReportsDesc: 'Test coverage reports for JavaScript and TypeScript code.',
|
|
47
|
-
testResults: 'Test Results', testResultsDesc: 'Automated test results and reports.',
|
|
48
|
-
recentArticles: 'Recent News Articles', newsIndexPages: 'News Index Pages',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
sv: {
|
|
52
|
-
name: 'Swedish', nativeName: 'Svenska', flag: 'šøšŖ', dir: 'ltr', locale: 'sv_SE', hreflang: 'sv',
|
|
53
|
-
translations: {
|
|
54
|
-
siteMap: 'Webbplatskarta', completeNavigation: 'Komplett navigering fƶr Riksdagsmonitor-plattformen',
|
|
55
|
-
quickJumpTo: 'Snabbnavigering', mainPlatform: 'Huvudplattform', dashboards: 'Interaktiva instrumentpaneler',
|
|
56
|
-
newsAnalysis: 'Nyheter & Analys', multiLanguage: 'FlersprƄkig plattformsƄtkomst',
|
|
57
|
-
documentation: 'Dokumentation', resources: 'Ytterligare resurser',
|
|
58
|
-
sitemapLanguages: 'Denna webbplatskarta pƄ andra sprƄk', home: 'Hem',
|
|
59
|
-
newsIndex: 'Nyhetsindex', newsDesc: 'Senaste politiska nyheter, analyser och uppdateringar frƄn Sveriges riksdag och regering.',
|
|
60
|
-
ciaDashboard: 'CIA Intelligens-instrumentpanel', ciaDashboardDesc: 'Interaktiv visualisering av CIA intelligensexporter: Partiprestation, valprognoser, MP-rankningar.',
|
|
61
|
-
politicianDashboard: 'Politiker karriƤr & produktivitetsanalys', politicianDashboardDesc: 'Omfattande politiker karriƤr- och produktivitetspanel fƶr Sveriges 349 riksdagsledamƶter.',
|
|
62
|
-
mainPlatformDesc: 'Sveriges val 2026 live: Realtidsƶvervakning, koalitionsprognoser, omfattande parlamentarisk analys.',
|
|
63
|
-
xmlSitemap: 'XML-webbplatskarta', xmlSitemapDesc: 'MaskinlƤsbar webbplatskarta fƶr sƶkmotorer (XML-format).',
|
|
64
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'Instruktioner fƶr sƶkmotorsƶkare.',
|
|
65
|
-
sitemapInOtherLanguages: 'Denna webbplatskarta pĆ„ andra sprĆ„k', accessPlatform: 'Ćppna huvudplattformen pĆ„ ditt fƶredragna sprĆ„k.',
|
|
66
|
-
apiDocs: 'API-dokumentation', apiDocsDesc: 'Genererad API-dokumentation fƶr plattformens skript och moduler.',
|
|
67
|
-
coverageReports: 'KodtƤckningsrapporter', coverageReportsDesc: 'TesttƤckningsrapporter fƶr JavaScript och TypeScript-kod.',
|
|
68
|
-
testResults: 'Testresultat', testResultsDesc: 'Automatiserade testresultat och rapporter.',
|
|
69
|
-
recentArticles: 'Senaste nyhetsartiklar', newsIndexPages: 'Nyhetsindexsidor',
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
da: {
|
|
73
|
-
name: 'Danish', nativeName: 'Dansk', flag: 'š©š°', dir: 'ltr', locale: 'da_DK', hreflang: 'da',
|
|
74
|
-
translations: {
|
|
75
|
-
siteMap: 'Sitemap', completeNavigation: 'Komplet navigation for Riksdagsmonitor-platformen',
|
|
76
|
-
quickJumpTo: 'Hurtig navigation', mainPlatform: 'Hovedplatform', dashboards: 'Interaktive dashboards',
|
|
77
|
-
newsAnalysis: 'Nyheder & Analyse', multiLanguage: 'Flersproget platformsadgang',
|
|
78
|
-
documentation: 'Dokumentation', resources: 'Yderligere ressourcer',
|
|
79
|
-
sitemapLanguages: 'Dette sitemap pƄ andre sprog', home: 'Hjem',
|
|
80
|
-
newsIndex: 'Nyhedsindeks', newsDesc: 'Seneste politiske nyheder, analyser og opdateringer fra Sveriges Riksdag og regering.',
|
|
81
|
-
ciaDashboard: 'CIA Efterretningspanel', ciaDashboardDesc: 'Interaktivt CIA efterretningspanel: Partiydelse, valgprognoser, folketingsmedlemmer.',
|
|
82
|
-
politicianDashboard: 'Politiker karriere & produktivitetsanalyse', politicianDashboardDesc: 'Omfattende politiker karriere- og produktivitetspanel.',
|
|
83
|
-
mainPlatformDesc: 'Sveriges valg 2026 live: RealtidsovervƄgning, koalitionsprognoser, parlamentarisk analyse.',
|
|
84
|
-
xmlSitemap: 'XML Sitemap', xmlSitemapDesc: 'Maskinlæsbart sitemap til søgemaskiner (XML-format).',
|
|
85
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'SĆøgemaskine-crawler-instruktioner.',
|
|
86
|
-
sitemapInOtherLanguages: 'Dette sitemap pƄ andre sprog', accessPlatform: 'Adgang til hovedplatformen pƄ dit foretrukne sprog.',
|
|
87
|
-
apiDocs: 'API-dokumentation', apiDocsDesc: 'Genereret API-dokumentation for platformens scripts og moduler.',
|
|
88
|
-
coverageReports: 'KodedƦkningsrapporter', coverageReportsDesc: 'TestdƦkningsrapporter for JavaScript og TypeScript-kode.',
|
|
89
|
-
testResults: 'Testresultater', testResultsDesc: 'Automatiserede testresultater og rapporter.',
|
|
90
|
-
recentArticles: 'Seneste nyheder', newsIndexPages: 'Nyhedsindekssider',
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
no: {
|
|
94
|
-
name: 'Norwegian', nativeName: 'Norsk', flag: 'š³š“', dir: 'ltr', locale: 'nb_NO', hreflang: 'nb',
|
|
95
|
-
translations: {
|
|
96
|
-
siteMap: 'Nettstedskart', completeNavigation: 'Komplett navigering for Riksdagsmonitor-plattformen',
|
|
97
|
-
quickJumpTo: 'Hurtignavigering', mainPlatform: 'Hovedplattform', dashboards: 'Interaktive dashbord',
|
|
98
|
-
newsAnalysis: 'Nyheter & Analyse', multiLanguage: 'FlersprƄklig plattformstilgang',
|
|
99
|
-
documentation: 'Dokumentasjon', resources: 'Ytterligere ressurser',
|
|
100
|
-
sitemapLanguages: 'Dette nettstedskartet pƄ andre sprƄk', home: 'Hjem',
|
|
101
|
-
newsIndex: 'Nyhetsindeks', newsDesc: 'Siste politiske nyheter, analyser og oppdateringer fra Sveriges Riksdag og regjering.',
|
|
102
|
-
ciaDashboard: 'CIA Etterretningspanel', ciaDashboardDesc: 'Interaktivt CIA etterretningspanel: Partiytelse, valgprognoser, stortingsrepresentanter.',
|
|
103
|
-
politicianDashboard: 'Politiker karriere & produktivitetsanalyse', politicianDashboardDesc: 'Omfattende politiker karriere- og produktivitetspanel.',
|
|
104
|
-
mainPlatformDesc: 'Sveriges valg 2026 live: SanntidsovervƄking, koalisjonsprognoser, parlamentarisk analyse.',
|
|
105
|
-
xmlSitemap: 'XML Nettstedskart', xmlSitemapDesc: 'Maskinlesbart nettstedskart for sĆøkemotorer (XML-format).',
|
|
106
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'SĆøkemotor-crawler-instruksjoner.',
|
|
107
|
-
sitemapInOtherLanguages: 'Dette nettstedskartet pƄ andre sprƄk', accessPlatform: 'Tilgang til hovedplattformen pƄ ditt foretrukne sprƄk.',
|
|
108
|
-
apiDocs: 'API-dokumentasjon', apiDocsDesc: 'Generert API-dokumentasjon for plattformens skript og moduler.',
|
|
109
|
-
coverageReports: 'Kodedekkningsrapporter', coverageReportsDesc: 'Testdekkningsrapporter for JavaScript og TypeScript-kode.',
|
|
110
|
-
testResults: 'Testresultater', testResultsDesc: 'Automatiserte testresultater og rapporter.',
|
|
111
|
-
recentArticles: 'Siste nyheter', newsIndexPages: 'Nyhetsindekssider',
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
fi: {
|
|
115
|
-
name: 'Finnish', nativeName: 'Suomi', flag: 'š«š®', dir: 'ltr', locale: 'fi_FI', hreflang: 'fi',
|
|
116
|
-
translations: {
|
|
117
|
-
siteMap: 'Sivukartta', completeNavigation: 'Riksdagsmonitor-alustan tƤydellinen navigointi',
|
|
118
|
-
quickJumpTo: 'Pikanavigaatio', mainPlatform: 'PƤƤalusta', dashboards: 'Interaktiiviset kojetaulut',
|
|
119
|
-
newsAnalysis: 'Uutiset & Analyysi', multiLanguage: 'Monikielinen alustapƤƤsy',
|
|
120
|
-
documentation: 'Dokumentaatio', resources: 'LisƤresurssit',
|
|
121
|
-
sitemapLanguages: 'TƤmƤ sivukartta muilla kielillƤ', home: 'Etusivu',
|
|
122
|
-
newsIndex: 'Uutisindeksi', newsDesc: 'Uusimmat poliittiset uutiset, analyysit ja pƤivitykset Ruotsin parlamentista ja hallituksesta.',
|
|
123
|
-
ciaDashboard: 'CIA Tiedustelupaneeli', ciaDashboardDesc: 'Interaktiivinen CIA tiedustelupaneeli: Puolueiden suorituskyky, vaaliennusteet, kansanedustajat.',
|
|
124
|
-
politicianDashboard: 'Poliitikon ura & tuottavuusanalyysi', politicianDashboardDesc: 'Kattava poliitikon ura- ja tuottavuuspaneeli.',
|
|
125
|
-
mainPlatformDesc: 'Ruotsin vaalit 2026 live: Reaaliaikainen seuranta, koalitioennusteet, parlamentaarinen analyysi.',
|
|
126
|
-
xmlSitemap: 'XML-sivukartta', xmlSitemapDesc: 'Koneluettava sivukartta hakukoneille (XML-muoto).',
|
|
127
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'Hakukoneiden indeksointi-ohjeet.',
|
|
128
|
-
sitemapInOtherLanguages: 'TƤmƤ sivukartta muilla kielillƤ', accessPlatform: 'Avaa pƤƤalusta haluamallasi kielellƤ.',
|
|
129
|
-
apiDocs: 'API-dokumentaatio', apiDocsDesc: 'Generoitu API-dokumentaatio alustan skripteille ja moduuleille.',
|
|
130
|
-
coverageReports: 'Koodikattavuusraportit', coverageReportsDesc: 'Testikattavuusraportit JavaScript- ja TypeScript-koodille.',
|
|
131
|
-
testResults: 'Testitulokset', testResultsDesc: 'Automatisoidut testitulokset ja raportit.',
|
|
132
|
-
recentArticles: 'ViimeisimmƤt uutiset', newsIndexPages: 'Uutisindeksisivut',
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
de: {
|
|
136
|
-
name: 'German', nativeName: 'Deutsch', flag: 'š©šŖ', dir: 'ltr', locale: 'de_DE', hreflang: 'de',
|
|
137
|
-
translations: {
|
|
138
|
-
siteMap: 'Sitemap', completeNavigation: 'Vollständige Navigation für die Riksdagsmonitor-Plattform',
|
|
139
|
-
quickJumpTo: 'Schnellnavigation', mainPlatform: 'Hauptplattform', dashboards: 'Interaktive Dashboards',
|
|
140
|
-
newsAnalysis: 'Nachrichten & Analyse', multiLanguage: 'Mehrsprachiger Plattformzugang',
|
|
141
|
-
documentation: 'Dokumentation', resources: 'Weitere Ressourcen',
|
|
142
|
-
sitemapLanguages: 'Diese Sitemap in anderen Sprachen', home: 'Startseite',
|
|
143
|
-
newsIndex: 'Nachrichtenindex', newsDesc: 'Neueste politische Nachrichten, Analysen und Updates aus dem schwedischen Reichstag und der Regierung.',
|
|
144
|
-
ciaDashboard: 'CIA Nachrichtendienst-Dashboard', ciaDashboardDesc: 'Interaktives CIA Dashboard: Parteileistung, Wahlprognosen, Abgeordnete und Analyse.',
|
|
145
|
-
politicianDashboard: 'Politiker Karriere- & ProduktivitƤtsanalyse', politicianDashboardDesc: 'Umfassendes Politiker-Karriere- und ProduktivitƤts-Dashboard.',
|
|
146
|
-
mainPlatformDesc: 'Schwedische Wahl 2026 live: Echtzeitüberwachung, Koalitionsprognosen, parlamentarische Analyse.',
|
|
147
|
-
xmlSitemap: 'XML-Sitemap', xmlSitemapDesc: 'Maschinenlesbare Sitemap für Suchmaschinen (XML-Format).',
|
|
148
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'Suchmaschinen-Crawler-Anweisungen.',
|
|
149
|
-
sitemapInOtherLanguages: 'Diese Sitemap in anderen Sprachen', accessPlatform: 'Zugriff auf die Hauptplattform in Ihrer bevorzugten Sprache.',
|
|
150
|
-
apiDocs: 'API-Dokumentation', apiDocsDesc: 'Generierte API-Dokumentation für Plattform-Skripte und Module.',
|
|
151
|
-
coverageReports: 'Code-Coverage-Berichte', coverageReportsDesc: 'Testabdeckungsberichte für JavaScript und TypeScript-Code.',
|
|
152
|
-
testResults: 'Testergebnisse', testResultsDesc: 'Automatisierte Testergebnisse und Berichte.',
|
|
153
|
-
recentArticles: 'Aktuelle Nachrichten', newsIndexPages: 'Nachrichtenindexseiten',
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
|
-
fr: {
|
|
157
|
-
name: 'French', nativeName: 'FranƧais', flag: 'š«š·', dir: 'ltr', locale: 'fr_FR', hreflang: 'fr',
|
|
158
|
-
translations: {
|
|
159
|
-
siteMap: 'Plan du site', completeNavigation: 'Navigation complĆØte pour la plateforme Riksdagsmonitor',
|
|
160
|
-
quickJumpTo: 'Navigation rapide', mainPlatform: 'Plateforme principale', dashboards: 'Tableaux de bord interactifs',
|
|
161
|
-
newsAnalysis: 'Actualités & Analyse', multiLanguage: 'Accès multilingue à la plateforme',
|
|
162
|
-
documentation: 'Documentation', resources: 'Ressources supplƩmentaires',
|
|
163
|
-
sitemapLanguages: 'Ce plan du site dans d\'autres langues', home: 'Accueil',
|
|
164
|
-
newsIndex: 'Index des actualités', newsDesc: 'Dernières actualités politiques, analyses et mises à jour du Parlement et du gouvernement suédois.',
|
|
165
|
-
ciaDashboard: 'Tableau de bord CIA', ciaDashboardDesc: 'Tableau de bord CIA interactif: Performance des partis, prƩvisions Ʃlectorales, dƩputƩs.',
|
|
166
|
-
politicianDashboard: 'Carrière politique & analyse de productivité', politicianDashboardDesc: 'Tableau de bord complet de carrière et productivité des politiciens.',
|
|
167
|
-
mainPlatformDesc: 'Ćlections suĆ©doises 2026 en direct: Surveillance en temps rĆ©el, prĆ©visions de coalition, analyse parlementaire.',
|
|
168
|
-
xmlSitemap: 'Plan du site XML', xmlSitemapDesc: 'Plan du site lisible par les machines pour les moteurs de recherche (format XML).',
|
|
169
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'Instructions pour les robots des moteurs de recherche.',
|
|
170
|
-
sitemapInOtherLanguages: 'Ce plan du site dans d\'autres langues', accessPlatform: 'Accédez à la plateforme principale dans votre langue préférée.',
|
|
171
|
-
apiDocs: 'Documentation API', apiDocsDesc: 'Documentation API gƩnƩrƩe pour les scripts et modules de la plateforme.',
|
|
172
|
-
coverageReports: 'Rapports de couverture de code', coverageReportsDesc: 'Rapports de couverture de tests pour le code JavaScript et TypeScript.',
|
|
173
|
-
testResults: 'RƩsultats des tests', testResultsDesc: 'RƩsultats de tests automatisƩs et rapports.',
|
|
174
|
-
recentArticles: 'Articles rƩcents', newsIndexPages: 'Pages d\'index des actualitƩs',
|
|
175
|
-
},
|
|
176
|
-
},
|
|
177
|
-
es: {
|
|
178
|
-
name: 'Spanish', nativeName: 'EspaƱol', flag: 'šŖšø', dir: 'ltr', locale: 'es_ES', hreflang: 'es',
|
|
179
|
-
translations: {
|
|
180
|
-
siteMap: 'Mapa del sitio', completeNavigation: 'Navegación completa para la plataforma Riksdagsmonitor',
|
|
181
|
-
quickJumpTo: 'Navegación rÔpida', mainPlatform: 'Plataforma principal', dashboards: 'Paneles interactivos',
|
|
182
|
-
newsAnalysis: 'Noticias & AnÔlisis', multiLanguage: 'Acceso multilingüe a la plataforma',
|
|
183
|
-
documentation: 'Documentación', resources: 'Recursos adicionales',
|
|
184
|
-
sitemapLanguages: 'Este mapa del sitio en otros idiomas', home: 'Inicio',
|
|
185
|
-
newsIndex: 'Ćndice de noticias', newsDesc: 'Ćltimas noticias polĆticas, anĆ”lisis y actualizaciones del Parlamento y Gobierno de Suecia.',
|
|
186
|
-
ciaDashboard: 'Panel de inteligencia CIA', ciaDashboardDesc: 'Panel interactivo CIA: Rendimiento de partidos, pronósticos electorales, diputados.',
|
|
187
|
-
politicianDashboard: 'Carrera polĆtica & anĆ”lisis de productividad', politicianDashboardDesc: 'Panel completo de carrera y productividad de polĆticos.',
|
|
188
|
-
mainPlatformDesc: 'Elecciones suecas 2026 en vivo: Monitoreo en tiempo real, pronósticos de coalición, anÔlisis parlamentario.',
|
|
189
|
-
xmlSitemap: 'Mapa del sitio XML', xmlSitemapDesc: 'Mapa del sitio legible por mÔquinas para motores de búsqueda (formato XML).',
|
|
190
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'Instrucciones para rastreadores de motores de bĆŗsqueda.',
|
|
191
|
-
sitemapInOtherLanguages: 'Este mapa del sitio en otros idiomas', accessPlatform: 'Acceda a la plataforma principal en su idioma preferido.',
|
|
192
|
-
apiDocs: 'Documentación API', apiDocsDesc: 'Documentación API generada para scripts y módulos de la plataforma.',
|
|
193
|
-
coverageReports: 'Informes de cobertura de código', coverageReportsDesc: 'Informes de cobertura de pruebas para código JavaScript y TypeScript.',
|
|
194
|
-
testResults: 'Resultados de pruebas', testResultsDesc: 'Resultados de pruebas automatizadas e informes.',
|
|
195
|
-
recentArticles: 'ArtĆculos recientes', newsIndexPages: 'PĆ”ginas de Ćndice de noticias',
|
|
196
|
-
},
|
|
197
|
-
},
|
|
198
|
-
nl: {
|
|
199
|
-
name: 'Dutch', nativeName: 'Nederlands', flag: 'š³š±', dir: 'ltr', locale: 'nl_NL', hreflang: 'nl',
|
|
200
|
-
translations: {
|
|
201
|
-
siteMap: 'Sitemap', completeNavigation: 'Volledige navigatie voor het Riksdagsmonitor-platform',
|
|
202
|
-
quickJumpTo: 'Snelnavigatie', mainPlatform: 'Hoofdplatform', dashboards: 'Interactieve dashboards',
|
|
203
|
-
newsAnalysis: 'Nieuws & Analyse', multiLanguage: 'Meertalige platformtoegang',
|
|
204
|
-
documentation: 'Documentatie', resources: 'Aanvullende bronnen',
|
|
205
|
-
sitemapLanguages: 'Deze sitemap in andere talen', home: 'Home',
|
|
206
|
-
newsIndex: 'Nieuwsindex', newsDesc: 'Laatste politieke nieuws, analyses en updates van het Zweedse Parlement en de regering.',
|
|
207
|
-
ciaDashboard: 'CIA Inlichtingendashboard', ciaDashboardDesc: 'Interactief CIA inlichtingendashboard: Partijprestaties, verkiezingsprognoses, parlementariƫrs.',
|
|
208
|
-
politicianDashboard: 'Politicus carriĆØre & productiviteitsanalyse', politicianDashboardDesc: 'Uitgebreid politicus carriĆØre- en productiviteitsdashboard.',
|
|
209
|
-
mainPlatformDesc: 'Zweedse verkiezingen 2026 live: Realtime monitoring, coalitieprognoses, parlementaire analyse.',
|
|
210
|
-
xmlSitemap: 'XML Sitemap', xmlSitemapDesc: 'Machineleesbare sitemap voor zoekmachines (XML-formaat).',
|
|
211
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'Zoekmachine-crawler-instructies.',
|
|
212
|
-
sitemapInOtherLanguages: 'Deze sitemap in andere talen', accessPlatform: 'Toegang tot het hoofdplatform in uw voorkeurstaal.',
|
|
213
|
-
apiDocs: 'API-documentatie', apiDocsDesc: 'Gegenereerde API-documentatie voor platformscripts en modules.',
|
|
214
|
-
coverageReports: 'Codedekkingsrapporten', coverageReportsDesc: 'Testdekkingsrapporten voor JavaScript en TypeScript-code.',
|
|
215
|
-
testResults: 'Testresultaten', testResultsDesc: 'Geautomatiseerde testresultaten en rapporten.',
|
|
216
|
-
recentArticles: 'Recente artikelen', newsIndexPages: 'Nieuwsindexpagina\'s',
|
|
217
|
-
},
|
|
218
|
-
},
|
|
219
|
-
ar: {
|
|
220
|
-
name: 'Arabic', nativeName: 'Ų§ŁŲ¹Ų±ŲØŁŲ©', flag: 'šøš¦', dir: 'rtl', locale: 'ar_SA', hreflang: 'ar',
|
|
221
|
-
translations: {
|
|
222
|
-
siteMap: 'Ų®Ų±ŁŲ·Ų© Ų§ŁŁ
ŁŁŲ¹', completeNavigation: 'Ų§ŁŲŖŁŁŁ Ų§ŁŁŲ§Ł
Ł ŁŁ
ŁŲµŲ© Riksdagsmonitor',
|
|
223
|
-
quickJumpTo: 'Ų§ŁŲŖŁŲ§Ł Ų³Ų±ŁŲ¹', mainPlatform: 'Ų§ŁŁ
ŁŲµŲ© Ų§ŁŲ±Ų¦ŁŲ³ŁŲ©', dashboards: 'ŁŁŲŲ§ŲŖ Ų§ŁŁ
Ų¹ŁŁŁ
Ų§ŲŖ Ų§ŁŲŖŁŲ§Ų¹ŁŁŲ©',
|
|
224
|
-
newsAnalysis: 'Ų§ŁŲ£Ų®ŲØŲ§Ų± ŁŲ§ŁŲŖŲŁŁŁ', multiLanguage: 'ŁŲµŁŁ Ł
ŲŖŲ¹ŲÆŲÆ Ų§ŁŁŲŗŲ§ŲŖ ŁŁŁ
ŁŲµŲ©',
|
|
225
|
-
documentation: 'Ų§ŁŲŖŁŲ«ŁŁ', resources: 'Ł
ŁŲ§Ų±ŲÆ Ų„Ų¶Ų§ŁŁŲ©',
|
|
226
|
-
sitemapLanguages: 'Ų®Ų±ŁŲ·Ų© Ų§ŁŁ
ŁŁŲ¹ ŁŲ°Ł ŲØŁŲŗŲ§ŲŖ Ų£Ų®Ų±Ł', home: 'Ų§ŁŲ±Ų¦ŁŲ³ŁŲ©',
|
|
227
|
-
newsIndex: 'ŁŁŲ±Ų³ Ų§ŁŲ£Ų®ŲØŲ§Ų±', newsDesc: 'Ų¢Ų®Ų± Ų§ŁŲ£Ų®ŲØŲ§Ų± Ų§ŁŲ³ŁŲ§Ų³ŁŲ© ŁŲ§ŁŲŖŲŁŁŁŲ§ŲŖ ŁŲ§ŁŲŖŲŲÆŁŲ«Ų§ŲŖ Ł
Ł Ų§ŁŲØŲ±ŁŁ
Ų§Ł ŁŲ§ŁŲŁŁŁ
Ų© Ų§ŁŲ³ŁŁŲÆŁŲ©.',
|
|
228
|
-
ciaDashboard: 'ŁŁŲŲ© Ł
Ų¹ŁŁŁ
Ų§ŲŖ Ų§Ų³ŲŖŲ®ŲØŲ§Ų±Ų§ŲŖŁŲ©', ciaDashboardDesc: 'ŁŁŲŲ© Ł
Ų¹ŁŁŁ
Ų§ŲŖ Ų§Ų³ŲŖŲ®ŲØŲ§Ų±Ų§ŲŖŁŲ© ŲŖŁŲ§Ų¹ŁŁŲ©: Ų£ŲÆŲ§Ų” Ų§ŁŲ£ŲŲ²Ų§ŲØŲ ŲŖŁŁŲ¹Ų§ŲŖ Ų§ŁŲ§ŁŲŖŲ®Ų§ŲØŲ§ŲŖŲ Ų£Ų¹Ų¶Ų§Ų” Ų§ŁŲØŲ±ŁŁ
Ų§Ł.',
|
|
229
|
-
politicianDashboard: 'ŲŖŲŁŁŁ Ł
Ų³ŁŲ±Ų© Ų§ŁŲ³ŁŲ§Ų³ŁŁŁ ŁŲ§ŁŲ„ŁŲŖŲ§Ų¬ŁŲ©', politicianDashboardDesc: 'ŁŁŲŲ© Ų“Ų§Ł
ŁŲ© ŁŁ
Ų³ŁŲ±Ų© Ų§ŁŲ³ŁŲ§Ų³ŁŁŁ ŁŲ§ŁŲ„ŁŲŖŲ§Ų¬ŁŲ©.',
|
|
230
|
-
mainPlatformDesc: 'Ų§ŁŲ§ŁŲŖŲ®Ų§ŲØŲ§ŲŖ Ų§ŁŲ³ŁŁŲÆŁŲ© 2026 Ł
ŲØŲ§Ų“Ų±: Ł
Ų±Ų§ŁŲØŲ© ŁŁ Ų§ŁŁŁŲŖ Ų§ŁŁŲ¹ŁŁŲ ŲŖŁŁŲ¹Ų§ŲŖ Ų§ŁŲ§Ų¦ŲŖŁŲ§ŁŲ ŲŖŲŁŁŁ ŲØŲ±ŁŁ
Ų§ŁŁ.',
|
|
231
|
-
xmlSitemap: 'Ų®Ų±ŁŲ·Ų© Ł
ŁŁŲ¹ XML', xmlSitemapDesc: 'Ų®Ų±ŁŲ·Ų© Ł
ŁŁŲ¹ ŁŲ§ŲØŁŲ© ŁŁŁŲ±Ų§Ų”Ų© Ų¢ŁŁŁŲ§ ŁŁ
ŲŲ±ŁŲ§ŲŖ Ų§ŁŲØŲŲ« (ŲŖŁŲ³ŁŁ XML).',
|
|
232
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'ŲŖŲ¹ŁŁŁ
Ų§ŲŖ Ų²Ų§ŲŁ Ł
Ųر٠اŁŲØŲŲ«.',
|
|
233
|
-
sitemapInOtherLanguages: 'Ų®Ų±ŁŲ·Ų© Ų§ŁŁ
ŁŁŲ¹ ŁŲ°Ł ŲØŁŲŗŲ§ŲŖ Ų£Ų®Ų±Ł', accessPlatform: 'Ų§ŁŁŲµŁŁ Ų„ŁŁ Ų§ŁŁ
ŁŲµŲ© Ų§ŁŲ±Ų¦ŁŲ³ŁŲ© ŲØŁŲŗŲŖŁ Ų§ŁŁ
ŁŲ¶ŁŲ©.',
|
|
234
|
-
apiDocs: 'ŲŖŁŲ«ŁŁ API', apiDocsDesc: 'ŲŖŁŲ«ŁŁ API Ų§ŁŁ
ŁŁŲ“Ų£ ŁŁŲµŁŲµ ŁŁŲŲÆŲ§ŲŖ Ų§ŁŁ
ŁŲµŲ©.',
|
|
235
|
-
coverageReports: 'ŲŖŁŲ§Ų±ŁŲ± ŲŖŲŗŲ·ŁŲ© Ų§ŁŁŁŲÆ', coverageReportsDesc: 'ŲŖŁŲ§Ų±ŁŲ± ŲŖŲŗŲ·ŁŲ© Ų§ŁŲ§Ų®ŲŖŲØŲ§Ų±Ų§ŲŖ ŁŁŁŲÆ JavaScript Ł TypeScript.',
|
|
236
|
-
testResults: 'ŁŲŖŲ§Ų¦Ų¬ Ų§ŁŲ§Ų®ŲŖŲØŲ§Ų±Ų§ŲŖ', testResultsDesc: 'ŁŲŖŲ§Ų¦Ų¬ Ų§ŁŲ§Ų®ŲŖŲØŲ§Ų±Ų§ŲŖ Ų§ŁŲ¢ŁŁŲ© ŁŲ§ŁŲŖŁŲ§Ų±ŁŲ±.',
|
|
237
|
-
recentArticles: 'Ų£ŲŲÆŲ« Ų§ŁŁ
ŁŲ§ŁŲ§ŲŖ', newsIndexPages: 'ŲµŁŲŲ§ŲŖ ŁŁŲ±Ų³ Ų§ŁŲ£Ų®ŲØŲ§Ų±',
|
|
238
|
-
},
|
|
239
|
-
},
|
|
240
|
-
he: {
|
|
241
|
-
name: 'Hebrew', nativeName: '×¢×ר××Ŗ', flag: 'š®š±', dir: 'rtl', locale: 'he_IL', hreflang: 'he',
|
|
242
|
-
translations: {
|
|
243
|
-
siteMap: '×פת ××תר', completeNavigation: '× ×××× ××× ×פ××פ×ר××Ŗ Riksdagsmonitor',
|
|
244
|
-
quickJumpTo: '× ×××× ×××ר', mainPlatform: 'פ××פ×ר×× ×Ø×ש××Ŗ', dashboards: '×××××Ŗ ××××× ×× ××× ×ר××§××××××',
|
|
245
|
-
newsAnalysis: '××ש××Ŗ ×× ××Ŗ××', multiLanguage: '×××©× ×Ø×-×ש×× ××Ŗ ×פ××פ×ר××',
|
|
246
|
-
documentation: '×Ŗ××¢××', resources: '×ש×××× × ×הפ××',
|
|
247
|
-
sitemapLanguages: '×פת ×תר ×× ×שפ××Ŗ ××ר××Ŗ', home: '××£ ××××Ŗ',
|
|
248
|
-
newsIndex: '××× ××§×” ××ש××Ŗ', newsDesc: '×××ש××Ŗ ×פ×××××××Ŗ, ×× ××Ŗ×××× ×××¢×××× ×× ×××ר×× ×× ××פר××× × ××××ש×× ×ש××××××.',
|
|
249
|
-
ciaDashboard: '××× ××××× ×× ×××××¢×× ×', ciaDashboardDesc: '××× ××××× ×× ×××××¢×× × ××× ×ר××§××××: ××צ××¢× ×פ××××Ŗ, ×Ŗ×××××Ŗ ×××ר××Ŗ, ×××Ø× ×× ×”×Ŗ.',
|
|
250
|
-
politicianDashboard: 'קר×××Ø× ×¤××××××Ŗ ×× ××Ŗ×× ×¤×Ø××××§××××××Ŗ', politicianDashboardDesc: '××× ××××× ×× ××§××£ ×קר×××Ø× ×פר××××§××××××Ŗ ×©× ×¤××××××§×××.',
|
|
251
|
-
mainPlatformDesc: '×××ר××Ŗ ש××××× 2026 ×ש×××ר ××: × ×××ר ×××× ×××Ŗ, ×Ŗ×××××Ŗ ×§××××צ××, × ××Ŗ×× ×¤×Ø××× ×ר×.',
|
|
252
|
-
xmlSitemap: '×פת ×תר XML', xmlSitemapDesc: '×פת ×תר קר××× ××××× ××Ŗ ×¢××ר ×× ××¢× ××פ×ש (פ×ר×× XML).',
|
|
253
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: '××ר×××Ŗ ××”××Ø×§× ×× ××¢× ××פ×ש.',
|
|
254
|
-
sitemapInOtherLanguages: '×פת ×תר ×× ×שפ××Ŗ ××ר××Ŗ', accessPlatform: '×××©× ×פ××פ×ר×× ×ר×ש××Ŗ ××©×¤× ××××¢×פת ×¢×××.',
|
|
255
|
-
apiDocs: '×Ŗ××¢×× API', apiDocsDesc: '×Ŗ××¢×× API ×©× ×צר ×¢××ר הקר×פ××× ×××××××× ×©× ×פ××פ×ר××.',
|
|
256
|
-
coverageReports: '×××××Ŗ ×××”×× ×§××', coverageReportsDesc: '×××××Ŗ ×××”×× ××××§××Ŗ ×¢××ר ×§×× JavaScript ×-TypeScript.',
|
|
257
|
-
testResults: '×Ŗ×צ×××Ŗ ××××§××Ŗ', testResultsDesc: '×Ŗ×צ×××Ŗ ××××§××Ŗ ×××××××××Ŗ ××××××Ŗ.',
|
|
258
|
-
recentArticles: '××Ŗ×××Ŗ ××ר×× ××Ŗ', newsIndexPages: '××¤× ××× ××§×” ××ש××Ŗ',
|
|
259
|
-
},
|
|
260
|
-
},
|
|
261
|
-
ja: {
|
|
262
|
-
name: 'Japanese', nativeName: 'ę„ę¬čŖ', flag: 'šÆšµ', dir: 'ltr', locale: 'ja_JP', hreflang: 'ja',
|
|
263
|
-
translations: {
|
|
264
|
-
siteMap: 'ćµć¤ćććć', completeNavigation: 'Riksdagsmonitorćć©ćććć©ć¼ć ć®å®å
ØćŖććć²ć¼ć·ć§ć³',
|
|
265
|
-
quickJumpTo: 'ćÆć¤ććÆććć²ć¼ć·ć§ć³', mainPlatform: 'ć”ć¤ć³ćć©ćććć©ć¼ć ', dashboards: 'ć¤ć³ćæć©ćÆćć£ćććć·ć„ćć¼ć',
|
|
266
|
-
newsAnalysis: 'ćć„ć¼ć¹ļ¼åę', multiLanguage: 'å¤čØčŖćć©ćććć©ć¼ć ć¢ćÆć»ć¹',
|
|
267
|
-
documentation: 'ććć„ć”ć³ć', resources: 'čæ½å ćŖć½ć¼ć¹',
|
|
268
|
-
sitemapLanguages: 'ćć®ćµć¤ććććć®ä»čØčŖē', home: 'ćć¼ć ',
|
|
269
|
-
newsIndex: 'ćć„ć¼ć¹ć¤ć³ćććÆć¹', newsDesc: 'ć¹ć¦ć§ć¼ćć³č°ä¼ćØęæåŗććć®ęę°ć®ęæę²»ćć„ć¼ć¹ćåęćć¢ćććć¼ćć',
|
|
270
|
-
ciaDashboard: 'CIAę
å ±ććć·ć„ćć¼ć', ciaDashboardDesc: 'ć¤ć³ćæć©ćÆćć£ćCIAę
å ±ććć·ć„ćć¼ć: ęæå
ććć©ć¼ćć³ć¹ćéøęäŗęø¬ćå½ä¼č°å”ć©ć³ćć³ć°ć',
|
|
271
|
-
politicianDashboard: 'ęæę²»å®¶ć®ćć£ćŖć¢ćØēē£ę§åę', politicianDashboardDesc: 'å
ę¬ēćŖęæę²»å®¶ć®ćć£ćŖć¢ćØēē£ę§ććć·ć„ćć¼ćć',
|
|
272
|
-
mainPlatformDesc: 'ć¹ć¦ć§ć¼ćć³éøę2026ć©ć¤ć: ćŖć¢ć«ćæć¤ć ē£č¦ćé£ē«äŗęø¬ćč°ä¼åęć',
|
|
273
|
-
xmlSitemap: 'XMLćµć¤ćććć', xmlSitemapDesc: 'ę¤ē“¢ćØć³ćøć³åćę©ę¢°åÆčŖćµć¤ććććļ¼XMLå½¢å¼ļ¼ć',
|
|
274
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'ę¤ē“¢ćØć³ćøć³ćÆćć¼ć©ć¼ć®ę示ć',
|
|
275
|
-
sitemapInOtherLanguages: 'ćć®ćµć¤ććććć®ä»čØčŖē', accessPlatform: 'ć儽ćæć®čØčŖć§ć”ć¤ć³ćć©ćććć©ć¼ć ć«ć¢ćÆć»ć¹ćć¦ćć ććć',
|
|
276
|
-
apiDocs: 'APIććć„ć”ć³ć', apiDocsDesc: 'ćć©ćććć©ć¼ć ć®ć¹ćÆćŖćććØć¢ćøć„ć¼ć«ć®ēęćććAPIććć„ć”ć³ćć',
|
|
277
|
-
coverageReports: 'ć³ć¼ćć«ćć¬ććøć¬ćć¼ć', coverageReportsDesc: 'JavaScript/TypeScriptć³ć¼ćć®ćć¹ćć«ćć¬ććøć¬ćć¼ćć',
|
|
278
|
-
testResults: 'ćć¹ćēµę', testResultsDesc: 'čŖåćć¹ćēµęćØć¬ćć¼ćć',
|
|
279
|
-
recentArticles: 'ęę°čØäŗ', newsIndexPages: 'ćć„ć¼ć¹ć¤ć³ćććÆć¹ćć¼ćø',
|
|
280
|
-
},
|
|
281
|
-
},
|
|
282
|
-
ko: {
|
|
283
|
-
name: 'Korean', nativeName: 'ķźµģ“', flag: 'š°š·', dir: 'ltr', locale: 'ko_KR', hreflang: 'ko',
|
|
284
|
-
translations: {
|
|
285
|
-
siteMap: 'ģ¬ģ“ķøė§µ', completeNavigation: 'Riksdagsmonitor ķė«ķ¼ģ ģģ ķ ķģ',
|
|
286
|
-
quickJumpTo: 'ė¹ ė„ø ķģ', mainPlatform: 'ė©ģø ķė«ķ¼', dashboards: 'ģøķ°ėķ°ėø ėģ볓ė',
|
|
287
|
-
newsAnalysis: 'ė“ģ¤ & ė¶ģ', multiLanguage: 'ė¤źµģ“ ķė«ķ¼ ģ ź·¼',
|
|
288
|
-
documentation: '문ģ', resources: 'ģ¶ź° 리ģģ¤',
|
|
289
|
-
sitemapLanguages: 'ė¤ė„ø ģøģ“ģ ģ¬ģ“ķøė§µ', home: 'ķ',
|
|
290
|
-
newsIndex: 'ė“ģ¤ ģøė±ģ¤', newsDesc: 'ģ¤ģØė“ ģķģ ģ ė¶ģ ģµģ ģ ģ¹ ė“ģ¤, ė¶ģ ė° ģ
ė°ģ“ķø.',
|
|
291
|
-
ciaDashboard: 'CIA ģ 볓 ėģ볓ė', ciaDashboardDesc: 'CIA ģ 볓 ėģ볓ė: ģ ė¹ ģ±ź³¼, ģ ź±° ģģø”, źµķģģ ģģ.',
|
|
292
|
-
politicianDashboard: 'ģ ģ¹ģø ź²½ė „ & ģģ°ģ± ė¶ģ', politicianDashboardDesc: 'ķ¬ź“ģ ģø ģ ģ¹ģø ź²½ė „ ė° ģģ°ģ± ėģ볓ė.',
|
|
293
|
-
mainPlatformDesc: 'ģ¤ģØė“ ģ ź±° 2026 ė¼ģ“ėø: ģ¤ģź° ėŖØėķ°ė§, ģ°ķ© ģģø”, ģķ ė¶ģ.',
|
|
294
|
-
xmlSitemap: 'XML ģ¬ģ“ķøė§µ', xmlSitemapDesc: 'ź²ģ ģģ§ģ© źø°ź³ ķė
ź°ė„ ģ¬ģ“ķøė§µ (XML ķģ).',
|
|
295
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'ź²ģ ģģ§ ķ¬ė”¤ė¬ ģ§ģ¹Ø.',
|
|
296
|
-
sitemapInOtherLanguages: 'ė¤ė„ø ģøģ“ģ ģ¬ģ“ķøė§µ', accessPlatform: 'ģ ķøķė ģøģ“ė” ė©ģø ķė«ķ¼ģ ģ ź·¼ķģøģ.',
|
|
297
|
-
apiDocs: 'API 문ģ', apiDocsDesc: 'ķė«ķ¼ ģ¤ķ¬ė¦½ķø ė° ėŖØėģ ģģ±ė API 문ģ.',
|
|
298
|
-
coverageReports: 'ģ½ė 커ė²ė¦¬ģ§ ė³“ź³ ģ', coverageReportsDesc: 'JavaScript ė° TypeScript ģ½ėģ ķ
ģ¤ķø 커ė²ė¦¬ģ§ ė³“ź³ ģ.',
|
|
299
|
-
testResults: 'ķ
ģ¤ķø ź²°ź³¼', testResultsDesc: 'ģėķė ķ
ģ¤ķø ź²°ź³¼ ė° ė³“ź³ ģ.',
|
|
300
|
-
recentArticles: 'ģµģ źø°ģ¬', newsIndexPages: 'ė“ģ¤ ģøė±ģ¤ ķģ“ģ§',
|
|
301
|
-
},
|
|
302
|
-
},
|
|
303
|
-
zh: {
|
|
304
|
-
name: 'Chinese', nativeName: 'äøę', flag: 'šØš³', dir: 'ltr', locale: 'zh_CN', hreflang: 'zh',
|
|
305
|
-
translations: {
|
|
306
|
-
siteMap: 'ē½ē«å°å¾', completeNavigation: 'Riksdagsmonitorå¹³å°å®ę“导čŖ',
|
|
307
|
-
quickJumpTo: 'åæ«é导čŖ', mainPlatform: '主平å°', dashboards: 'äŗ¤äŗå¼ä»Ŗč”Øęæ',
|
|
308
|
-
newsAnalysis: 'ę°é»äøåę', multiLanguage: 'å¤čÆčØå¹³å°č®æé®',
|
|
309
|
-
documentation: 'ę攣', resources: 'éå čµęŗ',
|
|
310
|
-
sitemapLanguages: 'ę¬ē«ē¹å°å¾ēå
¶ä»čÆčØēę¬', home: 'é¦é”µ',
|
|
311
|
-
newsIndex: 'ę°é»ē“¢å¼', newsDesc: 'ę„čŖēå
øč®®ä¼åęæåŗēęę°ęæę²»ę°é»ćåęåę“ę°ć',
|
|
312
|
-
ciaDashboard: 'CIAę
ę„仪蔨ęæ', ciaDashboardDesc: 'CIAę
ę„仪蔨ęæļ¼ęæå
蔨ē°ćéäø¾é¢ęµćå½ä¼č®®åęåć',
|
|
313
|
-
politicianDashboard: 'ęæę²»å®¶čäøäøēäŗ§ååę', politicianDashboardDesc: 'å
Øé¢ēęæę²»å®¶čäøåēäŗ§å仪蔨ęæć',
|
|
314
|
-
mainPlatformDesc: 'ēå
ø2026幓éäø¾ē“ęļ¼å®ę¶ēę§ćčēé¢ęµćč®®ä¼åęć',
|
|
315
|
-
xmlSitemap: 'XMLē«ē¹å°å¾', xmlSitemapDesc: 'ä¾ęē“¢å¼ę使ēØēęŗåØåÆčÆ»ē«ē¹å°å¾ļ¼XMLę ¼å¼ļ¼ć',
|
|
316
|
-
robotsTxt: 'Robots.txt', robotsTxtDesc: 'ęē“¢å¼ęē¬č«ę令ć',
|
|
317
|
-
sitemapInOtherLanguages: 'ę¬ē«ē¹å°å¾ēå
¶ä»čÆčØēę¬', accessPlatform: '仄ęØå儽ēčÆčØč®æé®äø»å¹³å°ć',
|
|
318
|
-
apiDocs: 'APIę攣', apiDocsDesc: 'äøŗå¹³å°čę¬å樔åēęēAPIę攣ć',
|
|
319
|
-
coverageReports: '代ē č¦ēēę„å', coverageReportsDesc: 'JavaScriptåTypeScript代ē ēęµčÆč¦ēēę„åć',
|
|
320
|
-
testResults: 'ęµčÆē»ę', testResultsDesc: 'čŖåØåęµčÆē»ęåę„åć',
|
|
321
|
-
recentArticles: 'ęę°ęē« ', newsIndexPages: 'ę°é»ē“¢å¼é”µé¢',
|
|
322
|
-
},
|
|
323
|
-
},
|
|
324
|
-
};
|
|
325
|
-
// ---------------------------------------------------------------------------
|
|
326
|
-
// Functions
|
|
327
|
-
// ---------------------------------------------------------------------------
|
|
328
|
-
/**
|
|
329
|
-
* Extract title and description from an HTML file.
|
|
330
|
-
*/
|
|
331
|
-
function extractArticleMeta(filePath) {
|
|
332
|
-
try {
|
|
333
|
-
const content = fs.readFileSync(filePath, 'utf8');
|
|
334
|
-
const titleMatch = content.match(/<title>([^<]+)<\/title>/i);
|
|
335
|
-
const descMatch = content.match(/<meta\s+name="description"\s+content="([^"]+)"/i);
|
|
336
|
-
return {
|
|
337
|
-
title: titleMatch ? titleMatch[1].trim() : path.basename(filePath, '.html'),
|
|
338
|
-
description: descMatch ? descMatch[1].trim() : '',
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
catch (_error) {
|
|
342
|
-
return { title: path.basename(filePath, '.html'), description: '' };
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
/**
|
|
346
|
-
* Scan news articles and group by language.
|
|
347
|
-
*/
|
|
348
|
-
function getArticlesByLanguage() {
|
|
349
|
-
const articlesByLang = new Map();
|
|
350
|
-
if (!fs.existsSync(NEWS_DIR))
|
|
351
|
-
return articlesByLang;
|
|
352
|
-
const files = fs
|
|
353
|
-
.readdirSync(NEWS_DIR)
|
|
354
|
-
.filter((file) => file.endsWith('.html') && file !== 'index.html' && !file.startsWith('index_'))
|
|
355
|
-
.sort()
|
|
356
|
-
.reverse(); // Most recent first
|
|
357
|
-
for (const file of files) {
|
|
358
|
-
const match = file.match(/^(.+?)-(en|sv|da|no|fi|de|fr|es|nl|ar|he|ja|ko|zh)\.html$/);
|
|
359
|
-
if (match) {
|
|
360
|
-
const baseSlug = match[1];
|
|
361
|
-
const lang = match[2];
|
|
362
|
-
const filePath = path.join(NEWS_DIR, file);
|
|
363
|
-
const meta = extractArticleMeta(filePath);
|
|
364
|
-
if (!articlesByLang.has(lang)) {
|
|
365
|
-
articlesByLang.set(lang, []);
|
|
366
|
-
}
|
|
367
|
-
articlesByLang.get(lang).push({
|
|
368
|
-
file,
|
|
369
|
-
title: meta.title,
|
|
370
|
-
description: meta.description,
|
|
371
|
-
lang,
|
|
372
|
-
baseSlug,
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
return articlesByLang;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Check which docs sections exist.
|
|
380
|
-
*/
|
|
381
|
-
function getDocsSections() {
|
|
382
|
-
return {
|
|
383
|
-
index: fs.existsSync(path.join(DOCS_DIR, 'index.html')),
|
|
384
|
-
api: fs.existsSync(path.join(DOCS_DIR, 'api', 'index.html')),
|
|
385
|
-
coverage: fs.existsSync(path.join(DOCS_DIR, 'coverage', 'index.html')),
|
|
386
|
-
testResults: fs.existsSync(path.join(DOCS_DIR, 'test-results', 'index.html')),
|
|
387
|
-
cypress: fs.existsSync(path.join(DOCS_DIR, 'cypress', 'index.html')),
|
|
388
|
-
};
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Escape HTML special characters to prevent XSS.
|
|
392
|
-
*/
|
|
393
|
-
function escapeHtml(text) {
|
|
394
|
-
return text
|
|
395
|
-
// Escape & only when it is NOT already part of a valid HTML entity
|
|
396
|
-
.replace(/&(?!(?:#\d+|#x[0-9a-fA-F]+|[a-zA-Z]+);)/g, '&')
|
|
397
|
-
.replace(/</g, '<')
|
|
398
|
-
.replace(/>/g, '>')
|
|
399
|
-
.replace(/"/g, '"')
|
|
400
|
-
.replace(/'/g, ''');
|
|
401
|
-
}
|
|
402
|
-
/**
|
|
403
|
-
* Generate a sitemap HTML page for a specific language.
|
|
404
|
-
*/
|
|
405
|
-
function generateSitemapHtml(lang, articlesByLang) {
|
|
406
|
-
const meta = LANGUAGE_META[lang];
|
|
407
|
-
const t = meta.translations;
|
|
408
|
-
const isEnglish = lang === 'en';
|
|
409
|
-
const sitemapFile = isEnglish ? 'sitemap.html' : `sitemap_${lang}.html`;
|
|
410
|
-
const indexFile = isEnglish ? 'index.html' : `index_${lang}.html`;
|
|
411
|
-
const newsIndexFile = isEnglish ? 'news/index.html' : `news/index_${lang}.html`;
|
|
412
|
-
const articles = articlesByLang.get(lang) || [];
|
|
413
|
-
// Limit to 50 most recent articles for readability
|
|
414
|
-
const recentArticles = articles.slice(0, 50);
|
|
415
|
-
const docsSections = getDocsSections();
|
|
416
|
-
// Build hreflang tags
|
|
417
|
-
const hreflangTags = LANGUAGES.map((l) => {
|
|
418
|
-
const hreflangCode = LANGUAGE_META[l].hreflang;
|
|
419
|
-
const href = l === 'en' ? 'sitemap.html' : `sitemap_${l}.html`;
|
|
420
|
-
return ` <link rel="alternate" hreflang="${hreflangCode}" href="${BASE_URL}/${href}">`;
|
|
421
|
-
}).join('\n');
|
|
422
|
-
// Build other language links section
|
|
423
|
-
const otherLanguageLinks = LANGUAGES
|
|
424
|
-
.filter((l) => l !== lang)
|
|
425
|
-
.map((l) => {
|
|
426
|
-
const lm = LANGUAGE_META[l];
|
|
427
|
-
const href = l === 'en' ? 'sitemap.html' : `sitemap_${l}.html`;
|
|
428
|
-
return ` <li>
|
|
429
|
-
<a href="${href}">${lm.flag} ${lm.nativeName} (${lm.name})</a>
|
|
430
|
-
</li>`;
|
|
431
|
-
})
|
|
432
|
-
.join('\n');
|
|
433
|
-
// Build multi-language platform links
|
|
434
|
-
const multiLangLinks = LANGUAGES.map((l) => {
|
|
435
|
-
const lm = LANGUAGE_META[l];
|
|
436
|
-
const href = l === 'en' ? 'index.html' : `index_${l}.html`;
|
|
437
|
-
return ` <li>
|
|
438
|
-
<a href="${href}">${lm.flag} ${lm.nativeName} (${lm.name})</a>
|
|
439
|
-
</li>`;
|
|
440
|
-
}).join('\n');
|
|
441
|
-
// Build dashboard links
|
|
442
|
-
const dashboardLinks = LANGUAGES.map((l) => {
|
|
443
|
-
const lm = LANGUAGE_META[l];
|
|
444
|
-
const dFile = l === 'en' ? 'dashboard/index.html' : `dashboard/index_${l}.html`;
|
|
445
|
-
const dashPath = path.join(ROOT_DIR, dFile);
|
|
446
|
-
if (!fs.existsSync(dashPath))
|
|
447
|
-
return '';
|
|
448
|
-
return ` <li>
|
|
449
|
-
<a href="${dFile}">${escapeHtml(t.ciaDashboard)} - ${lm.nativeName}</a>
|
|
450
|
-
</li>`;
|
|
451
|
-
}).filter(Boolean).join('\n');
|
|
452
|
-
// Build news article list
|
|
453
|
-
const articleListHtml = recentArticles.map((article) => {
|
|
454
|
-
const escapedTitle = escapeHtml(article.title);
|
|
455
|
-
const escapedDesc = escapeHtml(article.description);
|
|
456
|
-
return ` <li>
|
|
457
|
-
<a href="news/${escapeHtml(article.file)}">${escapedTitle}</a>
|
|
458
|
-
${escapedDesc ? `<p class="sitemap-description">${escapedDesc}</p>` : ''}
|
|
459
|
-
</li>`;
|
|
460
|
-
}).join('\n');
|
|
461
|
-
// Build docs section
|
|
462
|
-
let docsHtml = '';
|
|
463
|
-
if (docsSections.index || docsSections.api || docsSections.coverage || docsSections.testResults || docsSections.cypress) {
|
|
464
|
-
docsHtml = `
|
|
465
|
-
<section class="sitemap-section" id="documentation">
|
|
466
|
-
<h2>${escapeHtml(t.documentation)}</h2>
|
|
467
|
-
<ul class="sitemap-list">`;
|
|
468
|
-
if (docsSections.index) {
|
|
469
|
-
docsHtml += `
|
|
470
|
-
<li>
|
|
471
|
-
<a href="docs/index.html">${escapeHtml(t.documentation)}</a>
|
|
472
|
-
<p class="sitemap-description">${escapeHtml(t.apiDocsDesc)}</p>
|
|
473
|
-
</li>`;
|
|
474
|
-
}
|
|
475
|
-
if (docsSections.api) {
|
|
476
|
-
docsHtml += `
|
|
477
|
-
<li>
|
|
478
|
-
<a href="docs/api/index.html">${escapeHtml(t.apiDocs)}</a>
|
|
479
|
-
<p class="sitemap-description">${escapeHtml(t.apiDocsDesc)}</p>
|
|
480
|
-
</li>`;
|
|
481
|
-
}
|
|
482
|
-
if (docsSections.coverage) {
|
|
483
|
-
docsHtml += `
|
|
484
|
-
<li>
|
|
485
|
-
<a href="docs/coverage/index.html">${escapeHtml(t.coverageReports)}</a>
|
|
486
|
-
<p class="sitemap-description">${escapeHtml(t.coverageReportsDesc)}</p>
|
|
487
|
-
</li>`;
|
|
488
|
-
}
|
|
489
|
-
if (docsSections.testResults) {
|
|
490
|
-
docsHtml += `
|
|
491
|
-
<li>
|
|
492
|
-
<a href="docs/test-results/index.html">${escapeHtml(t.testResults)}</a>
|
|
493
|
-
<p class="sitemap-description">${escapeHtml(t.testResultsDesc)}</p>
|
|
494
|
-
</li>`;
|
|
495
|
-
}
|
|
496
|
-
if (docsSections.cypress) {
|
|
497
|
-
docsHtml += `
|
|
498
|
-
<li>
|
|
499
|
-
<a href="docs/cypress/index.html">${escapeHtml(t.testResults)} (Cypress)</a>
|
|
500
|
-
<p class="sitemap-description">${escapeHtml(t.testResultsDesc)}</p>
|
|
501
|
-
</li>`;
|
|
502
|
-
}
|
|
503
|
-
docsHtml += `
|
|
504
|
-
</ul>
|
|
505
|
-
</section>`;
|
|
506
|
-
}
|
|
507
|
-
return `<!DOCTYPE html>
|
|
508
|
-
<html lang="${lang}" dir="${meta.dir}">
|
|
509
|
-
<head>
|
|
510
|
-
<title>${escapeHtml(t.siteMap)} | Riksdagsmonitor</title>
|
|
511
|
-
<meta charset="UTF-8">
|
|
512
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
513
|
-
<link rel="stylesheet" type="text/css" href="styles.css">
|
|
514
|
-
<link rel="canonical" href="${BASE_URL}/${sitemapFile}">
|
|
515
|
-
<meta name="description" content="${escapeHtml(t.completeNavigation)}">
|
|
516
|
-
<meta name="keywords" content="sitemap, site navigation, riksdagsmonitor pages, Swedish parliament monitoring">
|
|
517
|
-
<meta name="robots" content="index, follow">
|
|
518
|
-
<meta name="author" content="James Pether Sƶrling, CISSP, CISM">
|
|
519
|
-
|
|
520
|
-
<!-- Open Graph -->
|
|
521
|
-
<meta property="og:title" content="${escapeHtml(t.siteMap)} | Riksdagsmonitor">
|
|
522
|
-
<meta property="og:description" content="${escapeHtml(t.completeNavigation)}">
|
|
523
|
-
<meta property="og:type" content="website">
|
|
524
|
-
<meta property="og:url" content="${BASE_URL}/${sitemapFile}">
|
|
525
|
-
<meta property="og:image" content="https://riksdagsmonitor.com/images/og-image.webp">
|
|
526
|
-
<meta property="og:image:width" content="1200">
|
|
527
|
-
<meta property="og:image:height" content="630">
|
|
528
|
-
<meta property="og:image:alt" content="Riksdagsmonitor ${escapeHtml(t.siteMap)}">
|
|
529
|
-
<meta property="og:locale" content="${meta.locale}">
|
|
530
|
-
<meta property="og:site_name" content="Riksdagsmonitor">
|
|
531
|
-
|
|
532
|
-
<!-- Twitter Card -->
|
|
533
|
-
<meta name="twitter:card" content="summary">
|
|
534
|
-
<meta name="twitter:title" content="${escapeHtml(t.siteMap)} | Riksdagsmonitor">
|
|
535
|
-
<meta name="twitter:description" content="${escapeHtml(t.completeNavigation)}">
|
|
536
|
-
<meta name="twitter:image" content="https://riksdagsmonitor.com/images/og-image.webp">
|
|
537
|
-
<meta name="twitter:site" content="@riksdagsmonitor">
|
|
538
|
-
|
|
539
|
-
<!-- Additional Meta Tags -->
|
|
540
|
-
<meta name="theme-color" content="#0a0e27">
|
|
541
|
-
<meta name="color-scheme" content="dark light">
|
|
542
|
-
<!-- Favicons -->
|
|
543
|
-
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
|
|
544
|
-
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
|
|
545
|
-
<link rel="icon" type="image/png" sizes="96x96" href="/images/favicon-96x96.png">
|
|
546
|
-
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
|
|
547
|
-
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
|
548
|
-
<link rel="manifest" href="/site.webmanifest">
|
|
549
|
-
|
|
550
|
-
<!-- Hreflang tags for all language versions -->
|
|
551
|
-
${hreflangTags}
|
|
552
|
-
<link rel="alternate" hreflang="x-default" href="${BASE_URL}/sitemap.html">
|
|
553
|
-
|
|
554
|
-
<style>
|
|
555
|
-
.sitemap-container {
|
|
556
|
-
max-width: 1200px;
|
|
557
|
-
margin: 0 auto;
|
|
558
|
-
padding: 2rem 1rem;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
.sitemap-header {
|
|
562
|
-
text-align: center;
|
|
563
|
-
margin-bottom: 3rem;
|
|
564
|
-
padding-bottom: 2rem;
|
|
565
|
-
border-bottom: 2px solid var(--primary-cyan);
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
.sitemap-header h1 {
|
|
569
|
-
font-family: var(--font-heading);
|
|
570
|
-
color: var(--primary-cyan);
|
|
571
|
-
font-size: clamp(2rem, 4vw, 3rem);
|
|
572
|
-
margin-bottom: 1rem;
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
.sitemap-header p {
|
|
576
|
-
color: var(--light-text);
|
|
577
|
-
font-size: 1.125rem;
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
.sitemap-section {
|
|
581
|
-
margin-bottom: 3rem;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
.sitemap-section h2 {
|
|
585
|
-
font-family: var(--font-heading);
|
|
586
|
-
color: var(--primary-magenta);
|
|
587
|
-
font-size: clamp(1.5rem, 3vw, 2rem);
|
|
588
|
-
margin-bottom: 1.5rem;
|
|
589
|
-
padding-bottom: 0.5rem;
|
|
590
|
-
border-bottom: 1px solid var(--primary-magenta);
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
.sitemap-section h3 {
|
|
594
|
-
font-family: var(--font-heading);
|
|
595
|
-
color: var(--primary-yellow);
|
|
596
|
-
font-size: 1.25rem;
|
|
597
|
-
margin-top: 2rem;
|
|
598
|
-
margin-bottom: 1rem;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
.sitemap-list {
|
|
602
|
-
list-style: none;
|
|
603
|
-
padding: 0;
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
.sitemap-list li {
|
|
607
|
-
margin-bottom: 1.5rem;
|
|
608
|
-
padding: 1rem;
|
|
609
|
-
background: var(--card-bg);
|
|
610
|
-
border-radius: 8px;
|
|
611
|
-
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
.sitemap-list li:hover {
|
|
615
|
-
transform: translateX(5px);
|
|
616
|
-
box-shadow: 0 4px 12px rgba(0, 217, 255, 0.2);
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
.sitemap-list a {
|
|
620
|
-
color: var(--primary-cyan);
|
|
621
|
-
text-decoration: none;
|
|
622
|
-
font-weight: 600;
|
|
623
|
-
font-size: 1.125rem;
|
|
624
|
-
display: block;
|
|
625
|
-
margin-bottom: 0.5rem;
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
.sitemap-list a:hover {
|
|
629
|
-
text-decoration: underline;
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
.sitemap-list a:focus {
|
|
633
|
-
outline: 2px solid var(--primary-cyan);
|
|
634
|
-
outline-offset: 2px;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
.sitemap-description {
|
|
638
|
-
color: var(--muted-text);
|
|
639
|
-
font-size: 0.9375rem;
|
|
640
|
-
line-height: 1.6;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
.language-grid {
|
|
644
|
-
display: grid;
|
|
645
|
-
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
646
|
-
gap: 1rem;
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
.language-grid li {
|
|
650
|
-
margin-bottom: 0;
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
@media (max-width: 768px) {
|
|
654
|
-
.sitemap-container {
|
|
655
|
-
padding: 1rem 0.5rem;
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
.language-grid {
|
|
659
|
-
grid-template-columns: 1fr;
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
/* Table of Contents */
|
|
664
|
-
.toc-nav {
|
|
665
|
-
background: var(--mid-bg);
|
|
666
|
-
border-radius: 8px;
|
|
667
|
-
padding: 1.5rem;
|
|
668
|
-
margin-bottom: 2rem;
|
|
669
|
-
border-left: 4px solid var(--primary-cyan);
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
.toc-nav h2 {
|
|
673
|
-
font-family: var(--font-heading);
|
|
674
|
-
color: var(--primary-cyan);
|
|
675
|
-
font-size: 1.25rem;
|
|
676
|
-
margin-bottom: 1rem;
|
|
677
|
-
border: none;
|
|
678
|
-
padding: 0;
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
.toc-list {
|
|
682
|
-
list-style: none;
|
|
683
|
-
padding: 0;
|
|
684
|
-
display: grid;
|
|
685
|
-
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
686
|
-
gap: 0.5rem;
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
.toc-list li {
|
|
690
|
-
margin: 0;
|
|
691
|
-
padding: 0;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
.toc-list a {
|
|
695
|
-
color: var(--primary-cyan);
|
|
696
|
-
text-decoration: none;
|
|
697
|
-
display: inline-block;
|
|
698
|
-
padding: 0.5rem 0;
|
|
699
|
-
transition: transform 0.2s ease;
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
.toc-list a:hover {
|
|
703
|
-
transform: translateX(5px);
|
|
704
|
-
text-decoration: underline;
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
.toc-list a:focus {
|
|
708
|
-
outline: 2px solid var(--primary-cyan);
|
|
709
|
-
outline-offset: 2px;
|
|
710
|
-
}
|
|
711
|
-
</style>
|
|
712
|
-
|
|
713
|
-
<!-- JSON-LD Structured Data -->
|
|
714
|
-
<script type="application/ld+json">
|
|
715
|
-
{
|
|
716
|
-
"@context": "https://schema.org",
|
|
717
|
-
"@type": "WebSite",
|
|
718
|
-
"name": "Riksdagsmonitor",
|
|
719
|
-
"url": "${BASE_URL}",
|
|
720
|
-
"description": "Swedish Parliament Intelligence Platform - Real-time monitoring, coalition predictions, and comprehensive political analysis",
|
|
721
|
-
"inLanguage": ["en", "sv", "da", "nb", "fi", "de", "fr", "es", "nl", "ar", "he", "ja", "ko", "zh"],
|
|
722
|
-
"publisher": {
|
|
723
|
-
"@type": "Organization",
|
|
724
|
-
"name": "Hack23 AB",
|
|
725
|
-
"url": "https://www.hack23.com"
|
|
726
|
-
}
|
|
727
|
-
}
|
|
728
|
-
</script>
|
|
729
|
-
<script type="application/ld+json">
|
|
730
|
-
{
|
|
731
|
-
"@context": "https://schema.org",
|
|
732
|
-
"@type": "SiteNavigationElement",
|
|
733
|
-
"name": "${escapeHtml(t.siteMap)}",
|
|
734
|
-
"url": "${BASE_URL}/${sitemapFile}",
|
|
735
|
-
"inLanguage": "${lang}"
|
|
736
|
-
}
|
|
737
|
-
</script>
|
|
738
|
-
</head>
|
|
739
|
-
<body>
|
|
740
|
-
<a href="#main-content" class="skip-link">Skip to main content</a>
|
|
741
|
-
|
|
742
|
-
<div class="sitemap-container">
|
|
743
|
-
<header class="sitemap-header">
|
|
744
|
-
<a href="/${indexFile}" aria-label="Riksdagsmonitor Home">
|
|
745
|
-
<img src="/images/riksdagsmonitor-logo.webp" alt="Riksdagsmonitor" style="display:block;max-width:100px;height:auto;margin:0 auto 0.75rem" width="100" height="100" loading="eager">
|
|
746
|
-
</a>
|
|
747
|
-
<h1>${escapeHtml(t.siteMap)}</h1>
|
|
748
|
-
<p>${escapeHtml(t.completeNavigation)}</p>
|
|
749
|
-
</header>
|
|
750
|
-
|
|
751
|
-
<!-- Quick Navigation -->
|
|
752
|
-
<nav class="toc-nav" aria-label="${escapeHtml(t.quickJumpTo)}">
|
|
753
|
-
<h2>${escapeHtml(t.quickJumpTo)}</h2>
|
|
754
|
-
<ul class="toc-list">
|
|
755
|
-
<li><a href="#main-platform">${escapeHtml(t.mainPlatform)}</a></li>
|
|
756
|
-
<li><a href="#dashboards">${escapeHtml(t.dashboards)}</a></li>
|
|
757
|
-
<li><a href="#news">${escapeHtml(t.newsAnalysis)}</a></li>
|
|
758
|
-
<li><a href="#languages">${escapeHtml(t.multiLanguage)}</a></li>${docsHtml ? `
|
|
759
|
-
<li><a href="#documentation">${escapeHtml(t.documentation)}</a></li>` : ''}
|
|
760
|
-
<li><a href="#resources">${escapeHtml(t.resources)}</a></li>
|
|
761
|
-
<li><a href="#sitemap-languages">${escapeHtml(t.sitemapLanguages)}</a></li>
|
|
762
|
-
</ul>
|
|
763
|
-
</nav>
|
|
764
|
-
|
|
765
|
-
<main id="main-content">
|
|
766
|
-
<!-- Main Platform Section -->
|
|
767
|
-
<section class="sitemap-section" id="main-platform">
|
|
768
|
-
<h2>${escapeHtml(t.mainPlatform)}</h2>
|
|
769
|
-
<ul class="sitemap-list">
|
|
770
|
-
<li>
|
|
771
|
-
<a href="${indexFile}">${escapeHtml(t.home)} - ${escapeHtml(meta.nativeName)}</a>
|
|
772
|
-
<p class="sitemap-description">${escapeHtml(t.mainPlatformDesc)}</p>
|
|
773
|
-
</li>
|
|
774
|
-
</ul>
|
|
775
|
-
</section>
|
|
776
|
-
|
|
777
|
-
<!-- Dashboards Section -->
|
|
778
|
-
<section class="sitemap-section" id="dashboards">
|
|
779
|
-
<h2>${escapeHtml(t.dashboards)}</h2>
|
|
780
|
-
<ul class="sitemap-list">
|
|
781
|
-
${dashboardLinks}
|
|
782
|
-
<li>
|
|
783
|
-
<a href="politician-dashboard.html">${escapeHtml(t.politicianDashboard)}</a>
|
|
784
|
-
<p class="sitemap-description">${escapeHtml(t.politicianDashboardDesc)}</p>
|
|
785
|
-
</li>
|
|
786
|
-
</ul>
|
|
787
|
-
</section>
|
|
788
|
-
|
|
789
|
-
<!-- News Section -->
|
|
790
|
-
<section class="sitemap-section" id="news">
|
|
791
|
-
<h2>${escapeHtml(t.newsAnalysis)}</h2>
|
|
792
|
-
<h3>${escapeHtml(t.newsIndexPages)}</h3>
|
|
793
|
-
<ul class="sitemap-list">
|
|
794
|
-
<li>
|
|
795
|
-
<a href="${newsIndexFile}">${escapeHtml(t.newsIndex)} - ${escapeHtml(meta.nativeName)}</a>
|
|
796
|
-
<p class="sitemap-description">${escapeHtml(t.newsDesc)}</p>
|
|
797
|
-
</li>
|
|
798
|
-
</ul>
|
|
799
|
-
${recentArticles.length > 0 ? `
|
|
800
|
-
<h3>${escapeHtml(t.recentArticles)}</h3>
|
|
801
|
-
<ul class="sitemap-list">
|
|
802
|
-
${articleListHtml}
|
|
803
|
-
</ul>` : ''}
|
|
804
|
-
</section>
|
|
805
|
-
|
|
806
|
-
<!-- Multi-Language Section -->
|
|
807
|
-
<section class="sitemap-section" id="languages">
|
|
808
|
-
<h2>${escapeHtml(t.multiLanguage)}</h2>
|
|
809
|
-
<p class="sitemap-description" style="margin-bottom: 1.5rem;">${escapeHtml(t.accessPlatform)}</p>
|
|
810
|
-
<ul class="sitemap-list language-grid">
|
|
811
|
-
${multiLangLinks}
|
|
812
|
-
</ul>
|
|
813
|
-
</section>
|
|
814
|
-
${docsHtml}
|
|
815
|
-
<!-- Additional Resources -->
|
|
816
|
-
<section class="sitemap-section" id="resources">
|
|
817
|
-
<h2>${escapeHtml(t.resources)}</h2>
|
|
818
|
-
<ul class="sitemap-list">
|
|
819
|
-
<li>
|
|
820
|
-
<a href="sitemap.xml">${escapeHtml(t.xmlSitemap)}</a>
|
|
821
|
-
<p class="sitemap-description">${escapeHtml(t.xmlSitemapDesc)}</p>
|
|
822
|
-
</li>
|
|
823
|
-
<li>
|
|
824
|
-
<a href="robots.txt">${escapeHtml(t.robotsTxt)}</a>
|
|
825
|
-
<p class="sitemap-description">${escapeHtml(t.robotsTxtDesc)}</p>
|
|
826
|
-
</li>
|
|
827
|
-
</ul>
|
|
828
|
-
</section>
|
|
829
|
-
|
|
830
|
-
<!-- Other Sitemap Languages -->
|
|
831
|
-
<section class="sitemap-section" id="sitemap-languages">
|
|
832
|
-
<h2>${escapeHtml(t.sitemapInOtherLanguages)}</h2>
|
|
833
|
-
<ul class="sitemap-list language-grid">
|
|
834
|
-
${otherLanguageLinks}
|
|
835
|
-
</ul>
|
|
836
|
-
</section>
|
|
837
|
-
</main>
|
|
838
|
-
|
|
839
|
-
<footer style="text-align: center; margin-top: 4rem; padding-top: 2rem; border-top: 1px solid var(--primary-cyan); color: var(--muted-text);">
|
|
840
|
-
<p>© 2026 Riksdagsmonitor | <a href="${indexFile}" style="color: var(--primary-cyan);">${escapeHtml(t.home)}</a></p>
|
|
841
|
-
</footer>
|
|
842
|
-
</div>
|
|
843
|
-
</body>
|
|
844
|
-
</html>`;
|
|
845
|
-
}
|
|
846
|
-
/**
|
|
847
|
-
* Main function.
|
|
848
|
-
*/
|
|
849
|
-
function main() {
|
|
850
|
-
try {
|
|
851
|
-
console.log('š Starting sitemap HTML generation...\n');
|
|
852
|
-
const articlesByLang = getArticlesByLanguage();
|
|
853
|
-
console.log(`š° Found articles in ${articlesByLang.size} languages`);
|
|
854
|
-
let generated = 0;
|
|
855
|
-
for (const lang of LANGUAGES) {
|
|
856
|
-
const html = generateSitemapHtml(lang, articlesByLang);
|
|
857
|
-
const fileName = lang === 'en' ? 'sitemap.html' : `sitemap_${lang}.html`;
|
|
858
|
-
const filePath = path.join(ROOT_DIR, fileName);
|
|
859
|
-
fs.writeFileSync(filePath, html, 'utf8');
|
|
860
|
-
const articleCount = (articlesByLang.get(lang) || []).length;
|
|
861
|
-
console.log(` ā
Generated ${fileName} (${articleCount} articles)`);
|
|
862
|
-
generated++;
|
|
863
|
-
}
|
|
864
|
-
console.log(`\nā
Generated ${generated} sitemap HTML files`);
|
|
865
|
-
return 0;
|
|
866
|
-
}
|
|
867
|
-
catch (error) {
|
|
868
|
-
console.error('ā Error generating sitemap HTML:', error.message);
|
|
869
|
-
return 1;
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
// Run if called directly
|
|
873
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
874
|
-
const exitCode = main();
|
|
875
|
-
process.exit(exitCode);
|
|
876
|
-
}
|
|
877
|
-
export { generateSitemapHtml, getArticlesByLanguage, escapeHtml, LANGUAGE_META };
|
|
878
|
-
//# sourceMappingURL=generate-sitemap-html.js.map
|