npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@holmdigital/standards

v2.5.0

Published

Machine-readable regulatory database for WCAG, EN 301 549 and the DOS Act

Readme

@holmdigital/standards

npm version License: MIT TypeScript Downloads

Machine-readable regulatory database for WCAG, EN 301 549, DOS-lagen, EU Legal Frameworks (WAD/EAA), Australian DDA, and U.S. ADA (Title II / Title III / Section 508).

Why this package?

This package serves as the Single Source of Truth for accessibility compliance mapping in the HolmDigital ecosystem. It eliminates the need to manually cross-reference standard documents by providing:

  1. WCAG 2.1 Criteria (Technical Base)
  2. EN 301 549 (EU Standard Mapping)
  3. National Laws (Specific legal references for SE, NL, DE, IT, PT, PL, AU, etc.)
  4. Legal Frameworks (WAD 2016/2102, EAA 2019/882, DDA 1992 Australia, ADA 1990 USA)
  5. Nordic Authority Data (Digg, PTS, UU-tilsynet, etc.)

It allows developers to query: "Which law mandates WCAG 1.4.3 in Sweden?" and get the exact legal paragraph (Lag (2018:1937) 12 §).

For the full regulatory database details, API reference, and legal framework mappings (WAD/EAA), see the Standards Library Catalog.

Installation

npm install @holmdigital/standards

Features

  • Multi-Language Support (12 rule locale databases):
    • en (Generic / EU baseline)
    • en-gb (UK / PSBAR)
    • en-us (USA / Section 508 & ADA)
    • en-ca (Canada / AODA + ACA)
    • sv (Sweden / DOS-lagen)
    • no (Norway / Forskrift om universell utforming av IKT)
    • fi (Finland / 306/2019)
    • da (Denmark / Tilgængelighed)
    • de (Germany / BITV 2.0)
    • fr (France / RGAA)
    • es (Spain / UNE 139803)
    • nl (Netherlands / Digitoegankelijk)
    • it, pt, pl, au — national law metadata only; rule text uses en
  • Risk Assessment: DIGG-aligned risk levels (critical, high, medium, low).
  • Remediation: Maps issues to @holmdigital/components for fixing.
  • Legal Frameworks: WAD (EU public sector), EAA (EU private sector), DDA (Australia — both sectors), and ADA (USA — Title II public, Title III private; Section 508 remains separate for federal agencies).
  • Sector-Aware Enforcement: getEnforcementBody(country, 'public'|'private') returns the correct authority based on WAD, EAA, DDA, or ADA sector.
  • Compliance Deadlines: Optional NationalLaw.complianceDeadlines field captures entity-size-based deadlines. Currently populated for ADA Title II (2026-04-24 for 50k+ populations, 2027-04-24 otherwise).
  • Authorities & Enforcement: Shared database of regulatory bodies (ENFORCEMENT_BODIES) covering 16 countries + EU (17 jurisdictions total) — Nordic, UK, US, CA, AU, and the EU Commission (DG CNECT / DG JUST).

Usage

Basic Mapping

import { 
  getEN301549Mapping, 
  getDOSLagenReference 
} from '@holmdigital/standards';

// Get EN 301 549 Mapping
const mapping = getEN301549Mapping('1.4.3');
// { en301549Criteria: "9.1.4.3", ... }

// Get Swedish Law Reference
const ref = getDOSLagenReference('1.4.3', 'sv');
// "EN 301 549 V3.2.1, WCAG 2.1 Level AA required"

EU Legal Framework Queries

import { 
  getRulesByFramework,
  getRulesBySector,
  getLegalFramework,
  getNordicAuthorities,
  getEAADeadlineRules
} from '@holmdigital/standards';

// Get all rules applicable to WAD (Web Accessibility Directive)
const wadRules = getRulesByFramework('WAD');

// Get rules for public sector
const publicRules = getRulesBySector('public');

// Get rules with EAA 2025 deadline
const eaaRules = getEAADeadlineRules();

// Get WAD directive details
const wad = getLegalFramework('WAD');
// { id: "2016/2102", name: "Web Accessibility Directive", ... }

// Get Nordic authorities
const authorities = getNordicAuthorities();
// [{ id: "se-digg", name: "Myndigheten för digital förvaltning (Digg)", ... }]

Statement Tools

import { getStatementTools } from '@holmdigital/standards';

// Get accessibility statement generators
const tools = getStatementTools();
// [{ id: "digg-generator", url: "https://webbriktlinjer.se/...", ... }]

National Laws & Sanctions

import { 
  getNationalLaws,
  getNationalLaw,
  getSanctions,
  getMaxSanction,
  getSectorAuthorities
} from '@holmdigital/standards';

// Get all laws for Sweden
const seLaws = getNationalLaws('SE');
// [{ id: "dos-lagen", law: "DOS-lagen", ... }, { id: "lptt", law: "LPTT", ... }]

// Get sanctions for a specific law
const sanctions = getSanctions('lptt', 'SE');
// { type: "Sanktionsavgift", maxAmount: 10000000, currency: "SEK" }

// Get maximum sanction for a country
const maxSanction = getMaxSanction('DE');
// { law: "BFSG", amount: 500000, currency: "EUR" }

// Get sector-specific EAA authorities
const sectors = getSectorAuthorities('SE');
// [{ authority: "Konsumentverket", responsibility: "Transport" }, ...]

Supported Countries & Maximum Sanctions

| Country | WAD Law | EAA Law | Max Sanction | |---------|---------|---------|--------------| | 🇸🇪 SE | DOS-lagen | LPTT | 1M SEK (Vite) / 10M SEK (EAA) | | 🇳🇱 NL | Digitoegankelijk | Warenwet | 900k EUR | | 🇩🇪 DE | BITV 2.0 | BFSG | 500k EUR | | 🇫🇷 FR | RGAA | - | 300k EUR | | 🇪🇸 ES | Real Decreto | - | 1M EUR | | 🇮🇪 IE | S.I. 358/2020 | - | 60k EUR | | 🇳🇴 NO | IKT-forskrift | - | Daily fines | | 🇫🇮 FI | 306/2019 | EAA | Vite | | 🇩🇰 DK | Tilgængelighed | - | Fines | | 🇮🇹 IT | Legge 4/2004 | D.Lgs. 82/2024 | Up to 5% of turnover | | 🇵🇹 PT | DL 83/2018 | DL 101-D/2023 | 44k EUR | | 🇵🇱 PL | Ustawa o dostępności cyfrowej | Ustawa o dostępności produktów i usług | 100k PLN | | 🇬🇧 GB | PSBAR | - | Unlawful Act Notice | | 🇺🇸 US | Section 508 (federal, GSA) / ADA Title II (state+local, DOJ) | ADA Title III (private, DOJ) | Up to $150k/violation + civil rights lawsuits | | 🇨🇦 CA | AODA (Ontario) | ACA (federal) | $100k per day | | 🇦🇺 AU | DDA 1992 | — (DDA covers both sectors) | Court-determined (AHRC complaint) |

API Reference

Core Functions

| Function | Description | |----------|-------------| | getEN301549Mapping(criteria, lang?) | Get EN 301 549 mapping for WCAG criteria | | getDOSLagenReference(criteria, lang?) | Get DOS-lagen reference for criteria | | getAllConvergenceRules(lang?) | Get all convergence rules | | getConvergenceRule(ruleId, lang?) | Get specific rule by ID | | searchRulesByTags(tags, lang?) | Search rules by tags |

Type Exports

| Type | Description | |------|-------------| | EnrichedReport | Extended RegulatoryReport with failingNodes and legalContext | | FailingNode | Target selector, HTML snippet, and failure summary for a single failing element | | LegalContext | WAD/EAA applicability, sectors, articles, and EAA deadline | | RegulatoryReport | Core scan result with WCAG criteria, EN 301 549, remediation, and insight | | HolmDigitalInsight | DIGG risk, EAA impact, Swedish interpretation, and common mistakes | | ConvergenceRule | Full convergence rule with remediation, testability, and legal context | | DiggRisk | 'low' \| 'medium' \| 'high' \| 'critical' | | EAAImpact | 'none' \| 'low' \| 'medium' \| 'high' \| 'critical' |

EU Legal Framework Functions

| Function | Description | |----------|-------------| | getRulesByFramework(framework, lang?) | Get rules by WAD, EAA, or DDA | | getRulesBySector(sector, lang?) | Get rules by public/private sector | | getLegalFrameworks() | Get all legal frameworks | | getLegalFramework(id) | Get specific framework (WAD/EAA/DDA) | | getNordicAuthorities() | Get all Nordic authorities | | getNordicAuthority(id) | Get authority by ID | | getNordicAuthoritiesByCountry(country) | Get authorities by country | | getStatementTools() | Get all registered statement generator tools | | getStatementToolsByCountry(country) | Get statement generator tools for a specific country | | getEAADeadlineRules(lang?) | Get rules with EAA deadlines |

National Laws & Sanctions Functions

| Function | Description | |----------|-------------| | getNationalLaws(country) | Get all laws for a country | | getNationalLaw(id, country?) | Get specific law by ID | | getNationalLawByFramework(framework, country?) | Get law by WAD/EAA/DDA | | getEnforcementBody(country, sector?) | Get enforcement authority name | | getSanctions(lawId, country?) | Get sanctions for a law | | getMaxSanction(country?) | Get maximum sanction amount | | getSectorAuthorities(country?) | Get EAA sector authorities | | getDatabaseStats(lang?) | Get rule counts and coverage stats |

Constants

| Export | Type | Description | |--------|------|-------------| | ENFORCEMENT_BODIES | Record<Country, string> | WAD (public sector) enforcement authority per jurisdiction (17 entries incl. EU) | | ENFORCEMENT_BODIES_DETAILED | Record<Country, { wad: string; eaa: string }> | Sector-split enforcement bodies — .wad for public, .eaa for private/EAA |

License

MIT © Holm Digital AB