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,378 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* @module Validation/LanguageMetadata
|
|
4
|
-
* @category Validation
|
|
5
|
-
*
|
|
6
|
-
* @title Homepage Language File Validator - SEO & Internationalization Gate
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
* **INTELLIGENCE OPERATIVE PERSPECTIVE**
|
|
10
|
-
*
|
|
11
|
-
* This validator ensures the homepage and main content pages maintain proper
|
|
12
|
-
* language metadata across all 14 supported language editions. While appearing
|
|
13
|
-
* as a technical SEO task, language validation serves critical intelligence
|
|
14
|
-
* functions: ensuring international readers can discover content in their
|
|
15
|
-
* language, preventing search engine deindexing, and maintaining consistent
|
|
16
|
-
* information architecture across the multilingual platform.
|
|
17
|
-
*
|
|
18
|
-
* **METADATA VALIDATION FRAMEWORK:**
|
|
19
|
-
* The validator checks seven critical metadata elements for each language:
|
|
20
|
-
*
|
|
21
|
-
* 1. **HTML lang Attribute Correctness**
|
|
22
|
-
* - Validates lang="xx" matches ISO 639-1 language codes
|
|
23
|
-
* - Detects mismatches (e.g., Swedish content with lang="en")
|
|
24
|
-
* - Critical for: Screen readers, search engines, browser font selection
|
|
25
|
-
* Intelligence impact: Accessibility for visually-impaired international readers
|
|
26
|
-
*
|
|
27
|
-
* 2. **dir="rtl" for Right-to-Left Languages**
|
|
28
|
-
* - Validates Arabic (AR) and Hebrew (HE) have dir="rtl" attribute
|
|
29
|
-
* - Detects LTR incorrectly applied to RTL content
|
|
30
|
-
* - Critical for: Text layout, number display, punctuation handling
|
|
31
|
-
* Intelligence impact: Readability for Middle Eastern audience
|
|
32
|
-
*
|
|
33
|
-
* 3. **Title Tag Presence & Uniqueness**
|
|
34
|
-
* - Ensures <title> tag exists and is language-appropriate
|
|
35
|
-
* - Detects duplicate titles across language versions
|
|
36
|
-
* - Critical for: Browser tab display, search engine indexing
|
|
37
|
-
* Intelligence impact: Click-through rates from search results
|
|
38
|
-
*
|
|
39
|
-
* 4. **Meta Description Presence**
|
|
40
|
-
* - Validates meta description tag for SEO preview
|
|
41
|
-
* - Detects missing or placeholder descriptions
|
|
42
|
-
* - Critical for: Google snippet display, CTR optimization
|
|
43
|
-
* Intelligence impact: Search engine visibility for each language
|
|
44
|
-
*
|
|
45
|
-
* 5. **Canonical URL Correctness**
|
|
46
|
-
* - Ensures canonical URL points to correct language version
|
|
47
|
-
* - Detects broken or missing canonical tags
|
|
48
|
-
* - Critical for: Preventing search engine penalization
|
|
49
|
-
* Intelligence impact: Prevents duplicate content SEO issues
|
|
50
|
-
*
|
|
51
|
-
* 6. **Hreflang Tag Completeness**
|
|
52
|
-
* - Validates presence of hreflang tags for all language versions
|
|
53
|
-
* - Checks all target languages are represented
|
|
54
|
-
* - Critical for: Search engine language targeting
|
|
55
|
-
* Intelligence impact: Users find correct language version
|
|
56
|
-
*
|
|
57
|
-
* 7. **Open Graph Protocol for Social Media**
|
|
58
|
-
* - Ensures og:locale matches language code
|
|
59
|
-
* - Validates og:title and og:description presence
|
|
60
|
-
* - Critical for: Social media preview appearance
|
|
61
|
-
* Intelligence impact: Engagement rates when articles shared
|
|
62
|
-
*
|
|
63
|
-
* 8. **Schema.org Structured Data**
|
|
64
|
-
* - Validates JSON-LD for news articles and organizations
|
|
65
|
-
* - Ensures @language property matches content language
|
|
66
|
-
* - Critical for: Rich snippets, knowledge graph integration
|
|
67
|
-
* Intelligence impact: Enhanced search visibility and credibility
|
|
68
|
-
*
|
|
69
|
-
* **LANGUAGE CONFIGURATIONS (14 Total):**
|
|
70
|
-
* - EN: English (Primary international language)
|
|
71
|
-
* - SV: Swedish (Source/development language)
|
|
72
|
-
* - DA: Danish (Nordic coverage)
|
|
73
|
-
* - NO: Norwegian (Nordic coverage)
|
|
74
|
-
* - FI: Finnish (Nordic coverage)
|
|
75
|
-
* - DE: German (European coverage)
|
|
76
|
-
* - FR: French (European coverage)
|
|
77
|
-
* - ES: Spanish (European coverage)
|
|
78
|
-
* - NL: Dutch (European coverage)
|
|
79
|
-
* - AR: Arabic (Middle Eastern coverage, RTL)
|
|
80
|
-
* - HE: Hebrew (Middle Eastern coverage, RTL)
|
|
81
|
-
* - JA: Japanese (Asian coverage, special encoding)
|
|
82
|
-
* - KO: Korean (Asian coverage, special encoding)
|
|
83
|
-
* - ZH: Chinese Simplified (Asian coverage, special encoding)
|
|
84
|
-
*
|
|
85
|
-
* **VALIDATION ALGORITHM:**
|
|
86
|
-
* 1. Load each language version HTML file
|
|
87
|
-
* 2. Parse metadata fields (lang, dir, title, meta, canonical, etc.)
|
|
88
|
-
* 3. Validate against language configuration rules
|
|
89
|
-
* 4. Cross-validate hreflang consistency across all versions
|
|
90
|
-
* 5. Report validation results with specific errors
|
|
91
|
-
* 6. Exit code 0 if all valid, 1 if any failures
|
|
92
|
-
*
|
|
93
|
-
* **OPERATIONAL INTEGRATION:**
|
|
94
|
-
* - Pre-deployment CI/CD validation (blocks bad metadata)
|
|
95
|
-
* - Automated homepage generation pipeline
|
|
96
|
-
* - Monthly SEO audit to detect drift
|
|
97
|
-
* - Search console monitoring for indexing issues
|
|
98
|
-
*
|
|
99
|
-
* **SEARCH ENGINE OPTIMIZATION IMPACT:**
|
|
100
|
-
* - Proper metadata prevents Google search penalties
|
|
101
|
-
* - Hreflang tags direct users to correct language version
|
|
102
|
-
* - Canonical tags prevent duplicate content issues
|
|
103
|
-
* - Structured data improves SERP visibility
|
|
104
|
-
*
|
|
105
|
-
* **ACCESSIBILITY COMPLIANCE:**
|
|
106
|
-
* - lang attribute critical for screen reader language detection
|
|
107
|
-
* - dir="rtl" essential for RTL language navigation
|
|
108
|
-
* - Meta descriptions describe page purpose for users
|
|
109
|
-
* - Structured data supports assistive technology
|
|
110
|
-
*
|
|
111
|
-
* **KNOWN LIMITATIONS:**
|
|
112
|
-
* - Does not validate hreflang URLs correctness (only counts tags)
|
|
113
|
-
* - Does not verify that hreflang URLs actually exist or are reachable
|
|
114
|
-
* - Does not check translation quality of meta descriptions
|
|
115
|
-
* - Does not validate Open Graph image URLs
|
|
116
|
-
*
|
|
117
|
-
* **PERFORMANCE:**
|
|
118
|
-
* - File read + parse: ~5ms per language
|
|
119
|
-
* - Full validation: ~70ms total (14 languages)
|
|
120
|
-
* - Memory usage: Minimal (streaming parser)
|
|
121
|
-
*
|
|
122
|
-
* **GDPR COMPLIANCE:**
|
|
123
|
-
* - No personal data processing
|
|
124
|
-
* - Meta description validation supports transparency
|
|
125
|
-
* - Language targeting respects user preferences
|
|
126
|
-
* - Cookie consent metadata validation (future enhancement)
|
|
127
|
-
*
|
|
128
|
-
* @osint International Audience Intelligence
|
|
129
|
-
* - Metadata quality determines international discoverability
|
|
130
|
-
* - Hreflang analysis shows language version coverage
|
|
131
|
-
* - SEO metrics track international audience reach
|
|
132
|
-
* - Social media metadata tracks sharing patterns by language
|
|
133
|
-
*
|
|
134
|
-
* @risk Search Visibility Assurance
|
|
135
|
-
* - Prevents Google search penalization
|
|
136
|
-
* - Ensures users find correct language version
|
|
137
|
-
* - Detects metadata corruption from attacks
|
|
138
|
-
* - Monitors for accidental deindexing
|
|
139
|
-
*
|
|
140
|
-
* @gdpr Language & Regional Preferences
|
|
141
|
-
* - Respects user language preferences
|
|
142
|
-
* - Supports accessibility for all languages
|
|
143
|
-
* - Transparent content metadata for users
|
|
144
|
-
* - Supports language-based data handling policies
|
|
145
|
-
*
|
|
146
|
-
* @security Metadata Integrity
|
|
147
|
-
* - Validates metadata isn't corrupted
|
|
148
|
-
* - Prevents injection of malicious metadata
|
|
149
|
-
* - Ensures schema.org data authenticity
|
|
150
|
-
* - Detects unauthorized metadata changes
|
|
151
|
-
*
|
|
152
|
-
* @author Hack23 AB (Multilingual Platform & SEO)
|
|
153
|
-
* @license Apache-2.0
|
|
154
|
-
* @version 2.0.0
|
|
155
|
-
* @since 2024-07-20
|
|
156
|
-
* @see https://schema.org/ (Structured Data Standard)
|
|
157
|
-
* @see https://www.w3.org/International/ (W3C Internationalization)
|
|
158
|
-
* @see tests/validate-translations.test.js (Test Suite)
|
|
159
|
-
* @see Issue #98 (Hreflang Implementation)
|
|
160
|
-
*/
|
|
161
|
-
import { readFileSync } from 'fs';
|
|
162
|
-
import { join } from 'path';
|
|
163
|
-
// Color codes for terminal output
|
|
164
|
-
const colors = {
|
|
165
|
-
reset: '\x1b[0m',
|
|
166
|
-
green: '\x1b[32m',
|
|
167
|
-
red: '\x1b[31m',
|
|
168
|
-
yellow: '\x1b[33m',
|
|
169
|
-
cyan: '\x1b[36m',
|
|
170
|
-
bold: '\x1b[1m'
|
|
171
|
-
};
|
|
172
|
-
// Language configurations
|
|
173
|
-
const languages = [
|
|
174
|
-
{ code: 'en', file: 'index.html', name: 'English', rtl: false },
|
|
175
|
-
{ code: 'sv', file: 'index_sv.html', name: 'Swedish', rtl: false },
|
|
176
|
-
{ code: 'da', file: 'index_da.html', name: 'Danish', rtl: false },
|
|
177
|
-
{ code: 'no', file: 'index_no.html', name: 'Norwegian', rtl: false, langAttr: 'nb' },
|
|
178
|
-
{ code: 'fi', file: 'index_fi.html', name: 'Finnish', rtl: false },
|
|
179
|
-
{ code: 'de', file: 'index_de.html', name: 'German', rtl: false },
|
|
180
|
-
{ code: 'fr', file: 'index_fr.html', name: 'French', rtl: false },
|
|
181
|
-
{ code: 'es', file: 'index_es.html', name: 'Spanish', rtl: false },
|
|
182
|
-
{ code: 'nl', file: 'index_nl.html', name: 'Dutch', rtl: false },
|
|
183
|
-
{ code: 'ar', file: 'index_ar.html', name: 'Arabic', rtl: true },
|
|
184
|
-
{ code: 'he', file: 'index_he.html', name: 'Hebrew', rtl: true },
|
|
185
|
-
{ code: 'ja', file: 'index_ja.html', name: 'Japanese', rtl: false },
|
|
186
|
-
{ code: 'ko', file: 'index_ko.html', name: 'Korean', rtl: false },
|
|
187
|
-
{ code: 'zh', file: 'index_zh.html', name: 'Chinese', rtl: false }
|
|
188
|
-
];
|
|
189
|
-
// Validation checks
|
|
190
|
-
const checks = {
|
|
191
|
-
langAttribute: (content, lang) => {
|
|
192
|
-
const effectiveLang = lang.langAttr ?? lang.code;
|
|
193
|
-
const regex = new RegExp(`<html\\s+lang="${effectiveLang}"`);
|
|
194
|
-
return regex.test(content);
|
|
195
|
-
},
|
|
196
|
-
rtlAttribute: (content, lang) => {
|
|
197
|
-
if (!lang.rtl)
|
|
198
|
-
return true; // Not required for LTR languages
|
|
199
|
-
return content.includes('dir="rtl"');
|
|
200
|
-
},
|
|
201
|
-
hasTitle: (content) => {
|
|
202
|
-
return /<title>.*<\/title>/.test(content);
|
|
203
|
-
},
|
|
204
|
-
hasDescription: (content) => {
|
|
205
|
-
return /<meta\s+name="description"\s+content="[^"]+">/.test(content);
|
|
206
|
-
},
|
|
207
|
-
hasCanonical: (content, lang) => {
|
|
208
|
-
return content.includes(`<link rel="canonical" href="https://riksdagsmonitor.com/${lang.file}">`);
|
|
209
|
-
},
|
|
210
|
-
hasHreflang: (content) => {
|
|
211
|
-
// Check for at least some hreflang tags
|
|
212
|
-
const count = (content.match(/hreflang=/g) || []).length;
|
|
213
|
-
return count >= 14; // Should have at least 14 (one for each language)
|
|
214
|
-
},
|
|
215
|
-
hasOgLocale: (content, _lang) => {
|
|
216
|
-
// Check for Open Graph locale
|
|
217
|
-
return content.includes(`<meta property="og:locale" content="`);
|
|
218
|
-
},
|
|
219
|
-
hasSchemaOrg: (content) => {
|
|
220
|
-
return content.includes('"@context": "https://schema.org"');
|
|
221
|
-
},
|
|
222
|
-
// NEW: Check for untranslated Swedish content markers
|
|
223
|
-
noUntranslatedMarkers: (content, lang) => {
|
|
224
|
-
// Swedish files can have Swedish content
|
|
225
|
-
if (lang.code === 'sv')
|
|
226
|
-
return true;
|
|
227
|
-
// Non-Swedish files should NOT have data-translate markers
|
|
228
|
-
return !content.includes('data-translate="true"');
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
// Main validation function
|
|
232
|
-
function validateLanguageFile(lang) {
|
|
233
|
-
const filepath = join(process.cwd(), lang.file);
|
|
234
|
-
try {
|
|
235
|
-
const content = readFileSync(filepath, 'utf-8');
|
|
236
|
-
const results = {
|
|
237
|
-
lang: lang.name,
|
|
238
|
-
code: lang.code,
|
|
239
|
-
file: lang.file,
|
|
240
|
-
passed: [],
|
|
241
|
-
failed: []
|
|
242
|
-
};
|
|
243
|
-
// Run all checks
|
|
244
|
-
if (checks.langAttribute(content, lang)) {
|
|
245
|
-
results.passed.push('lang attribute');
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
results.failed.push('lang attribute missing or incorrect');
|
|
249
|
-
}
|
|
250
|
-
if (checks.rtlAttribute(content, lang)) {
|
|
251
|
-
results.passed.push('RTL attribute (if needed)');
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
results.failed.push('dir="rtl" attribute missing (required for RTL languages)');
|
|
255
|
-
}
|
|
256
|
-
if (checks.hasTitle(content)) {
|
|
257
|
-
results.passed.push('title tag');
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
results.failed.push('title tag missing');
|
|
261
|
-
}
|
|
262
|
-
if (checks.hasDescription(content)) {
|
|
263
|
-
results.passed.push('meta description');
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
results.failed.push('meta description missing');
|
|
267
|
-
}
|
|
268
|
-
if (checks.hasCanonical(content, lang)) {
|
|
269
|
-
results.passed.push('canonical URL');
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
results.failed.push('canonical URL missing or incorrect');
|
|
273
|
-
}
|
|
274
|
-
if (checks.hasHreflang(content)) {
|
|
275
|
-
results.passed.push('hreflang tags');
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
results.failed.push('insufficient hreflang tags (need 14+)');
|
|
279
|
-
}
|
|
280
|
-
if (checks.hasOgLocale(content, lang)) {
|
|
281
|
-
results.passed.push('Open Graph locale');
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
results.failed.push('Open Graph locale missing');
|
|
285
|
-
}
|
|
286
|
-
if (checks.hasSchemaOrg(content)) {
|
|
287
|
-
results.passed.push('Schema.org structured data');
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
results.failed.push('Schema.org structured data missing');
|
|
291
|
-
}
|
|
292
|
-
// NEW: Check for untranslated Swedish content
|
|
293
|
-
if (checks.noUntranslatedMarkers(content, lang)) {
|
|
294
|
-
results.passed.push('No untranslated Swedish markers');
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
// Count how many markers remain
|
|
298
|
-
const markerCount = (content.match(/data-translate="true"/g) || []).length;
|
|
299
|
-
results.failed.push(`Contains ${markerCount} untranslated Swedish content markers (data-translate="true")`);
|
|
300
|
-
// Extract a sample for debugging
|
|
301
|
-
const sampleMatch = content.match(/<span data-translate="true"[^>]*>([^<]{0,50})/);
|
|
302
|
-
if (sampleMatch) {
|
|
303
|
-
results.untranslatedSample = sampleMatch[1] + (sampleMatch[1].length >= 50 ? '...' : '');
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
return results;
|
|
307
|
-
}
|
|
308
|
-
catch (error) {
|
|
309
|
-
return {
|
|
310
|
-
lang: lang.name,
|
|
311
|
-
code: lang.code,
|
|
312
|
-
file: lang.file,
|
|
313
|
-
error: error.message
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
// Print results
|
|
318
|
-
function printResults(results) {
|
|
319
|
-
console.log(`\n${colors.bold}${colors.cyan}===========================================`);
|
|
320
|
-
console.log(`Translation Validation Report`);
|
|
321
|
-
console.log(`===========================================${colors.reset}\n`);
|
|
322
|
-
let totalPassed = 0;
|
|
323
|
-
let totalFailed = 0;
|
|
324
|
-
let totalErrors = 0;
|
|
325
|
-
results.forEach((result) => {
|
|
326
|
-
if (result.error !== undefined) {
|
|
327
|
-
console.log(`${colors.red}✗ ${result.lang} (${result.code})${colors.reset}`);
|
|
328
|
-
console.log(` ${colors.red}ERROR: ${result.error}${colors.reset}`);
|
|
329
|
-
totalErrors++;
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
const successResult = result;
|
|
333
|
-
const allPassed = successResult.failed.length === 0;
|
|
334
|
-
const status = allPassed
|
|
335
|
-
? `${colors.green}✓ ${successResult.lang} (${successResult.code})${colors.reset}`
|
|
336
|
-
: `${colors.yellow}⚠ ${successResult.lang} (${successResult.code})${colors.reset}`;
|
|
337
|
-
console.log(status);
|
|
338
|
-
console.log(` File: ${successResult.file}`);
|
|
339
|
-
console.log(` ${colors.green}Passed: ${successResult.passed.length}${colors.reset}`);
|
|
340
|
-
if (successResult.failed.length > 0) {
|
|
341
|
-
console.log(` ${colors.red}Failed: ${successResult.failed.length}${colors.reset}`);
|
|
342
|
-
successResult.failed.forEach((failure) => {
|
|
343
|
-
console.log(` ${colors.red}✗ ${failure}${colors.reset}`);
|
|
344
|
-
});
|
|
345
|
-
// Show untranslated sample if available
|
|
346
|
-
if (successResult.untranslatedSample) {
|
|
347
|
-
console.log(` ${colors.yellow}Sample: "${successResult.untranslatedSample}"${colors.reset}`);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
totalPassed += successResult.passed.length;
|
|
351
|
-
totalFailed += successResult.failed.length;
|
|
352
|
-
}
|
|
353
|
-
console.log('');
|
|
354
|
-
});
|
|
355
|
-
// Summary
|
|
356
|
-
console.log(`${colors.bold}${colors.cyan}===========================================`);
|
|
357
|
-
console.log(`Summary`);
|
|
358
|
-
console.log(`===========================================${colors.reset}\n`);
|
|
359
|
-
console.log(`Languages validated: ${results.length}`);
|
|
360
|
-
console.log(`${colors.green}Total checks passed: ${totalPassed}${colors.reset}`);
|
|
361
|
-
console.log(`${colors.red}Total checks failed: ${totalFailed}${colors.reset}`);
|
|
362
|
-
if (totalErrors > 0) {
|
|
363
|
-
console.log(`${colors.red}File errors: ${totalErrors}${colors.reset}`);
|
|
364
|
-
}
|
|
365
|
-
if (totalFailed === 0 && totalErrors === 0) {
|
|
366
|
-
console.log(`\n${colors.bold}${colors.green}✓ All translations validated successfully!${colors.reset}\n`);
|
|
367
|
-
return 0;
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
console.log(`\n${colors.bold}${colors.red}✗ Translation validation found issues${colors.reset}\n`);
|
|
371
|
-
return 1;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
// Run validation
|
|
375
|
-
const results = languages.map((lang) => validateLanguageFile(lang));
|
|
376
|
-
const exitCode = printResults(results);
|
|
377
|
-
process.exit(exitCode);
|
|
378
|
-
//# sourceMappingURL=validate-translations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-translations.js","sourceRoot":"","sources":["../../scripts/validate-translations.ts"],"names":[],"mappings":"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"}
|