riksdagsmonitor 0.8.62 β†’ 0.8.65

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/SECURITY.md CHANGED
@@ -10,10 +10,10 @@
10
10
  </p>
11
11
 
12
12
  <p align="center">
13
- <a href="#"><img src="https://img.shields.io/badge/Owner-CEO-0A66C2?style=for-the-badge" alt="Owner"/></a>
14
- <a href="#"><img src="https://img.shields.io/badge/Version-1.0-555?style=for-the-badge" alt="Version"/></a>
15
- <a href="#"><img src="https://img.shields.io/badge/Effective-2026--02--20-success?style=for-the-badge" alt="Effective Date"/></a>
16
- <a href="#"><img src="https://img.shields.io/badge/Review-Quarterly-orange?style=for-the-badge" alt="Review Cycle"/></a>
13
+ <img src="https://img.shields.io/badge/Owner-CEO-0A66C2?style=for-the-badge" alt="Owner"/>
14
+ <img src="https://img.shields.io/badge/Version-1.0-555?style=for-the-badge" alt="Version"/>
15
+ <img src="https://img.shields.io/badge/Effective-2026--02--20-success?style=for-the-badge" alt="Effective Date"/>
16
+ <img src="https://img.shields.io/badge/Review-Quarterly-orange?style=for-the-badge" alt="Review Cycle"/>
17
17
  </p>
18
18
 
19
19
  **πŸ“‹ Document Owner:** CEO | **πŸ“„ Version:** 1.0 | **πŸ“… Last Updated:** 2026-02-20 (UTC)
@@ -198,3 +198,56 @@ If you discover a vulnerability in our IMF integration (e.g., cache integrity by
198
198
  **Egress hosts** (allow-list): `www.imf.org` (Datamapper REST Β· WEO/FM), `sdmxcentral.imf.org` (SDMX 3.0 REST Β· IFS/BOP/DOTS/GFS/PCPS/ER/MFS_IR/MFS_PR). Both HTTPS-only, anonymous, public β€” no credentials required.
199
199
 
200
200
  **Canonical rule.** Every economic claim in a Riksdagsmonitor article cites an IMF dataflow first; World Bank citations are reserved for governance, environment and social residue (the classes IMF does not publish). SCB is the Swedish-specific ground truth layer. See `ECONOMIC_DATA_CONTRACT.md` v2.1 for the banned-phrase list and vintage discipline (>6 mo β†’ annotation).
201
+
202
+ ---
203
+
204
+ ## πŸ”— Hack23 Ecosystem
205
+
206
+ <table>
207
+ <tr>
208
+ <th width="33%">🌐 Platforms</th>
209
+ <th width="33%">πŸ“¦ Open-Source Projects</th>
210
+ <th width="33%">πŸ›‘οΈ Governance &amp; Standards</th>
211
+ </tr>
212
+ <tr>
213
+ <td valign="top">
214
+ πŸ—³οΈ <a href="https://riksdagsmonitor.com">Riksdagsmonitor</a> β€” Swedish Parliament intelligence<br>
215
+ πŸ‡ͺπŸ‡Ί <a href="https://www.euparliamentmonitor.com">EU Parliament Monitor</a> β€” European coverage<br>
216
+ πŸ•΅οΈ <a href="https://www.hack23.com/cia">Citizen Intelligence Agency</a> β€” political-data engine<br>
217
+ 🌐 <a href="https://www.hack23.com">Hack23 AB</a> β€” corporate site<br>
218
+ πŸ“° <a href="https://hack23.com/blog.html">Hack23 Blog</a> β€” engineering &amp; policy<br>
219
+ πŸ’Ό <a href="https://www.linkedin.com/company/hack23/">Hack23 on LinkedIn</a>
220
+ </td>
221
+ <td valign="top">
222
+ πŸ—³οΈ <a href="https://github.com/Hack23/riksdagsmonitor">Hack23/riksdagsmonitor</a><br>
223
+ πŸ•΅οΈ <a href="https://github.com/Hack23/cia">Hack23/cia</a><br>
224
+ πŸ‡ͺπŸ‡Ί <a href="https://github.com/Hack23/euparliamentmonitor">Hack23/euparliamentmonitor</a><br>
225
+ πŸ”Œ <a href="https://github.com/Hack23/european-parliament-mcp">Hack23/european-parliament-mcp</a><br>
226
+ βœ… <a href="https://github.com/Hack23/cia-compliance-manager">Hack23/cia-compliance-manager</a><br>
227
+ πŸ₯‹ <a href="https://github.com/Hack23/black-trigram">Hack23/black-trigram</a><br>
228
+ 🏠 <a href="https://github.com/Hack23/homepage">Hack23/homepage</a>
229
+ </td>
230
+ <td valign="top">
231
+ πŸ›‘οΈ <a href="https://github.com/Hack23/ISMS-PUBLIC">Hack23 ISMS-PUBLIC</a> β€” public ISMS<br>
232
+ πŸ”’ <a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/Information_Security_Policy.md">Information Security Policy</a><br>
233
+ πŸ€– <a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/AI_Policy.md">AI Policy</a><br>
234
+ πŸ§ͺ <a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/Secure_Development_Policy.md">Secure Development Policy</a><br>
235
+ 🎯 <a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/Threat_Modeling.md">Threat Modeling Policy</a><br>
236
+ ⚠️ <a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/Vulnerability_Management.md">Vulnerability Management</a><br>
237
+ 🏷️ <a href="https://github.com/Hack23/ISMS-PUBLIC/blob/main/CLASSIFICATION.md">Classification Framework</a>
238
+ </td>
239
+ </tr>
240
+ </table>
241
+
242
+ <p align="center">
243
+ <a href="https://www.bestpractices.dev/projects/12069"><img src="https://www.bestpractices.dev/projects/12069/badge" alt="OpenSSF Best Practices"/></a>
244
+ <a href="https://scorecard.dev/viewer/?uri=github.com/Hack23/riksdagsmonitor"><img src="https://api.securityscorecards.dev/projects/github.com/Hack23/riksdagsmonitor/badge" alt="OpenSSF Scorecard"/></a>
245
+ <a href="https://github.com/Hack23/ISMS-PUBLIC"><img src="https://img.shields.io/badge/ISO_27001-2022-blue?style=flat-square&logo=iso&logoColor=white" alt="ISO 27001:2022"/></a>
246
+ <a href="https://github.com/Hack23/ISMS-PUBLIC"><img src="https://img.shields.io/badge/NIST_CSF-2.0-green?style=flat-square&logo=nist&logoColor=white" alt="NIST CSF 2.0"/></a>
247
+ <a href="https://github.com/Hack23/ISMS-PUBLIC"><img src="https://img.shields.io/badge/CIS_Controls-v8.1-orange?style=flat-square&logo=cisecurity&logoColor=white" alt="CIS Controls v8.1"/></a>
248
+ <a href="https://www.apache.org/licenses/LICENSE-2.0"><img src="https://img.shields.io/badge/License-Apache_2.0-blue?style=flat-square" alt="Apache 2.0"/></a>
249
+ </p>
250
+
251
+ <p align="center"><em>πŸ—³οΈ Empower citizens Β· πŸ” Strengthen democratic accountability Β· πŸ•΅οΈ Illuminate the political process</em></p>
252
+
253
+ <p align="center"><sub>Β© 2008–2026 <a href="https://www.hack23.com">Hack23 AB</a> (Org.nr 559534-7807) Β· Maintainer: <a href="https://www.linkedin.com/in/jamessorling/">James Pether SΓΆrling, CISSP CISM</a></sub></p>
@@ -1 +1 @@
1
- {"version":3,"file":"csv-utils.d.ts","sourceRoot":"","sources":["../../../src/browser/cia/csv-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,MAAM,OAAO,GAAG,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEvB;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqClD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,OAAO,CAG3E"}
1
+ {"version":3,"file":"csv-utils.d.ts","sourceRoot":"","sources":["../../../src/browser/cia/csv-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,4EAA4E;AAC5E,MAAM,MAAM,OAAO,GAAG,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEvB;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,OAAO,CAG3E"}
@@ -14,6 +14,7 @@
14
14
  * @license Apache-2.0
15
15
  * @since 2026
16
16
  */
17
+ import Papa from 'papaparse';
17
18
  /**
18
19
  * Parse CSV text into an array of header-keyed rows with auto-typed values.
19
20
  *
@@ -25,42 +26,22 @@
25
26
  * @returns Parsed rows (empty array if header-only or empty)
26
27
  */
27
28
  export function parseCSV(csvText) {
28
- const lines = csvText.trim().split('\n');
29
- if (lines.length < 2)
29
+ const trimmed = csvText.trim();
30
+ if (!trimmed || !trimmed.includes('\n'))
30
31
  return [];
31
- const headers = lines[0].split(',').map(h => h.trim().replace(/^"|"$/g, ''));
32
- const rows = [];
33
- for (let i = 1; i < lines.length; i++) {
34
- const line = lines[i].trim();
35
- if (!line)
36
- continue;
37
- // Simple CSV parsing (handles basic quoting)
38
- const values = [];
39
- let current = '';
40
- let inQuotes = false;
41
- for (let j = 0; j < line.length; j++) {
42
- const ch = line[j];
43
- if (ch === '"') {
44
- inQuotes = !inQuotes;
45
- }
46
- else if (ch === ',' && !inQuotes) {
47
- values.push(current.trim());
48
- current = '';
49
- }
50
- else {
51
- current += ch;
52
- }
53
- }
54
- values.push(current.trim());
55
- const row = {};
56
- headers.forEach((h, idx) => {
57
- const val = values[idx] || '';
58
- const num = Number(val);
59
- row[h] = val !== '' && !isNaN(num) ? num : val;
60
- });
61
- rows.push(row);
32
+ const parsed = Papa.parse(trimmed, {
33
+ header: true,
34
+ dynamicTyping: true,
35
+ skipEmptyLines: true,
36
+ transformHeader: header => header.trim().replace(/^"|"$/g, ''),
37
+ });
38
+ if (parsed.errors.length > 0) {
39
+ const errorSummary = parsed.errors
40
+ .map(error => `${error.code} at row ${error.row ?? 'unknown'}: ${error.message}`)
41
+ .join('; ');
42
+ throw new Error(`CSV parse error: ${errorSummary}`);
62
43
  }
63
- return rows;
44
+ return parsed.data.filter(row => Object.values(row).some(value => value !== null && value !== undefined && value !== ''));
64
45
  }
65
46
  /**
66
47
  * Join a base URL with a relative path using exactly one slash between them.
@@ -1 +1 @@
1
- {"version":3,"file":"csv-utils.js","sourceRoot":"","sources":["../../../src/browser/cia/csv-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csv-utils.js","sourceRoot":"","sources":["../../../src/browser/cia/csv-utils.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,5 @@
22
22
  *
23
23
  * @marketing First-load experience quality β€” dashboard initialization speed and reliability determine first-impression quality for new users. Time to Interactive (< 3s target) is critical for conversion from landing page visitor to engaged user. Loading state UX affects bounce rate.
24
24
  * */
25
- export {};
25
+ export declare function startDashboard(): void;
26
26
  //# sourceMappingURL=dashboard-init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-init.d.ts","sourceRoot":"","sources":["../../../src/browser/cia/dashboard-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;KAuBK"}
1
+ {"version":3,"file":"dashboard-init.d.ts","sourceRoot":"","sources":["../../../src/browser/cia/dashboard-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;KAuBK;AAwFL,wBAAgB,cAAc,IAAI,IAAI,CAMrC"}
@@ -98,11 +98,12 @@ async function initDashboard() {
98
98
  }
99
99
  }
100
100
  }
101
- // Initialize on DOM ready
102
- if (document.readyState === 'loading') {
103
- document.addEventListener('DOMContentLoaded', initDashboard);
104
- }
105
- else {
106
- initDashboard();
101
+ export function startDashboard() {
102
+ if (document.readyState === 'loading') {
103
+ document.addEventListener('DOMContentLoaded', () => void initDashboard());
104
+ }
105
+ else {
106
+ void initDashboard();
107
+ }
107
108
  }
108
109
  //# sourceMappingURL=dashboard-init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-init.js","sourceRoot":"","sources":["../../../src/browser/cia/dashboard-init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-init.js","sourceRoot":"","sources":["../../../src/browser/cia/dashboard-init.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,5 @@
10
10
  *
11
11
  * @security No inline scripts β€” all library loading is programmatic via Vite bundling
12
12
  */
13
- export {};
13
+ export declare function registerBrowserGlobals(): void;
14
14
  //# sourceMappingURL=register-globals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-globals.d.ts","sourceRoot":"","sources":["../../../src/browser/shared/register-globals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
1
+ {"version":3,"file":"register-globals.d.ts","sourceRoot":"","sources":["../../../src/browser/shared/register-globals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
@@ -13,10 +13,12 @@
13
13
  import { Chart } from 'chart.js/auto';
14
14
  import * as d3 from 'd3';
15
15
  import Papa from 'papaparse';
16
- // Expose on globalThis so dashboard modules can access via (globalThis as any).Chart / .d3 / .Papa
17
- globalThis.Chart = Chart;
18
- globalThis.d3 = d3;
19
- globalThis.Papa = Papa;
16
+ export function registerBrowserGlobals() {
17
+ // Expose on globalThis so dashboard modules can access via (globalThis as any).Chart / .d3 / .Papa
18
+ globalThis.Chart = Chart;
19
+ globalThis.d3 = d3;
20
+ globalThis.Papa = Papa;
21
+ }
20
22
  // Optional Chart.js plugins must be imported explicitly by applications that
21
23
  // need them. Do not dynamically import `chartjs-plugin-annotation` here:
22
24
  // bundlers such as Vite/Rollup/Webpack will still try to resolve the module
@@ -1 +1 @@
1
- {"version":3,"file":"register-globals.js","sourceRoot":"","sources":["../../../src/browser/shared/register-globals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,mGAAmG;AAClG,UAAsC,CAAC,KAAK,GAAG,KAAK,CAAC;AACrD,UAAsC,CAAC,EAAE,GAAG,EAAE,CAAC;AAC/C,UAAsC,CAAC,IAAI,GAAG,IAAI,CAAC;AAEpD,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,6EAA6E;AAC7E,wEAAwE"}
1
+ {"version":3,"file":"register-globals.js","sourceRoot":"","sources":["../../../src/browser/shared/register-globals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,sBAAsB;IACpC,mGAAmG;IAClG,UAAsC,CAAC,KAAK,GAAG,KAAK,CAAC;IACrD,UAAsC,CAAC,EAAE,GAAG,EAAE,CAAC;IAC/C,UAAsC,CAAC,IAAI,GAAG,IAAI,CAAC;AACtD,CAAC;AAED,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,6EAA6E;AAC7E,wEAAwE"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "riksdagsmonitor",
3
- "version": "0.8.62",
3
+ "version": "0.8.65",
4
4
  "type": "module",
5
5
  "description": "Swedish Parliament (Riksdag) intelligence platform β€” TypeScript utilities for political data visualization, dashboards, and open data analysis with Chart.js and D3.js",
6
6
  "main": "dist/lib/shared/index.js",
7
7
  "module": "dist/lib/shared/index.js",
8
8
  "types": "dist/lib/shared/index.d.ts",
9
9
  "sideEffects": [
10
- "./dist/lib/shared/register-globals.js"
10
+ "./dist/lib/shared/register-globals.js",
11
+ "./src/browser/cia-entry.ts"
11
12
  ],
12
13
  "exports": {
13
14
  ".": {
@@ -50,7 +51,7 @@
50
51
  "dev": "vite",
51
52
  "predev": "npx tsx scripts/copy-vendor-mermaid.ts --quiet",
52
53
  "copy-vendor": "npx tsx scripts/copy-vendor-mermaid.ts",
53
- "prebuild": "npx tsx scripts/copy-vendor-mermaid.ts --quiet && npx tsx scripts/aggregate-analysis.ts --all --quiet && npx tsx scripts/render-articles.ts --all --lang en,sv --quiet && npx tsx scripts/generate-news-indexes/index.ts && npx tsx scripts/extract-news-metadata.ts && npx tsx scripts/generate-sitemap-html.ts && npx tsx scripts/generate-political-intelligence.ts && npx tsx scripts/generate-rss.ts && npx tsx scripts/generate-sitemap.ts",
54
+ "prebuild": "npx tsx scripts/copy-vendor-mermaid.ts --quiet && npx tsx scripts/aggregate-analysis.ts --all --quiet && npx tsx scripts/render-articles.ts --all --lang en,sv --quiet && npx tsx scripts/generate-news-indexes/index.ts && npx tsx scripts/extract-news-metadata.ts && npx tsx scripts/generate-sitemap-html.ts && npx tsx scripts/generate-political-intelligence.ts && npx tsx scripts/generate-rss.ts && npx tsx scripts/generate-sitemap.ts && npx tsx scripts/normalize-static-html-chrome.ts && npx tsx scripts/backfill-translated-chrome.ts",
54
55
  "build": "vite build",
55
56
  "build:lib": "tsc -p tsconfig.lib.json && tsc -p tsconfig.npm-scripts.json",
56
57
  "postbuild": "cp rss.xml dist/rss.xml && cp sitemap.xml dist/sitemap.xml && cp -r cia-data dist/cia-data",
@@ -77,7 +78,7 @@
77
78
  "aggregate-analysis": "npx tsx scripts/aggregate-analysis.ts --all",
78
79
  "render-articles": "npx tsx scripts/render-articles.ts --all --lang en,sv",
79
80
  "generate-news-indexes": "node scripts/generate-news-indexes.ts",
80
- "generate-sitemap": "node scripts/generate-sitemap.ts",
81
+ "generate-sitemap": "tsx scripts/generate-sitemap.ts",
81
82
  "generate-sitemap-html": "npx tsx scripts/generate-sitemap-html.ts",
82
83
  "generate-political-intelligence": "npx tsx scripts/generate-political-intelligence.ts",
83
84
  "generate-rss": "npx tsx scripts/generate-rss.ts",
@@ -92,7 +93,7 @@
92
93
  "test:e2ereportmerge": "echo 'Cypress report merge placeholder - mochawesome-merge if multi-spec reports exist'",
93
94
  "test:e2ereporthtmlall": "echo 'Cypress HTML report generation placeholder - mochawesome-report-generator'",
94
95
  "build:test-reports": "mkdir -p docs/test-results docs/cypress docs/coverage && ([ -d builds/coverage ] && [ -n \"$(ls -A builds/coverage 2>/dev/null)\" ] && cp -r builds/coverage/* docs/coverage/ || echo 'No coverage directory to copy') && ([ -d builds/test-results ] && [ -n \"$(ls -A builds/test-results 2>/dev/null)\" ] && cp -r builds/test-results/* docs/test-results/ || echo 'No test-results directory to copy') && ([ -d builds/cypress ] && [ -n \"$(ls -A builds/cypress 2>/dev/null)\" ] && cp -r builds/cypress/* docs/cypress/ || echo 'No cypress directory to copy') && echo 'Test reports copied to docs/'",
95
- "docs:sitemap": "node scripts/generate-sitemap.ts",
96
+ "docs:sitemap": "tsx scripts/generate-sitemap.ts",
96
97
  "serve": "python3 -m http.server 8080",
97
98
  "linkcheck": "linkinator http://localhost:8080/ --recurse",
98
99
  "prepublishOnly": "npm run lint && npm run build:lib && npm test",
@@ -200,7 +201,7 @@
200
201
  "typedoc": "0.28.19",
201
202
  "typedoc-plugin-mdn-links": "5.1.1",
202
203
  "typescript": "6.0.3",
203
- "typescript-eslint": "8.59.0",
204
+ "typescript-eslint": "8.59.1",
204
205
  "unified": "^11.0.5",
205
206
  "vite": "8.0.10",
206
207
  "vite-plugin-sri-gen": "1.4.1",