@holmdigital/engine 2.1.1 → 2.1.3
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/dist/{chunk-JEA4LJ7Q.mjs → chunk-H5MBYTT7.mjs} +31 -4
- package/dist/chunk-Y6FXYEAI.mjs +10 -0
- package/dist/cli/index.js +28 -6
- package/dist/cli/index.mjs +8 -7
- package/dist/cli/templates/da.json +1 -3
- package/dist/cli/templates/de.json +1 -1
- package/dist/cli/templates/en.json +1 -3
- package/dist/cli/templates/es.json +1 -1
- package/dist/cli/templates/fi.json +1 -3
- package/dist/cli/templates/fr.json +1 -1
- package/dist/cli/templates/nl.json +1 -3
- package/dist/cli/templates/no.json +1 -3
- package/dist/cli/templates/sv.json +1 -3
- package/dist/{github-actions-CGWJSLMB.mjs → github-actions-DYED2EIL.mjs} +2 -0
- package/dist/{i18n-VBP5BVTT.mjs → i18n-JLPALD7H.mjs} +1 -0
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +28 -3
- package/dist/index.mjs +5 -2
- package/dist/{junit-generator-6ITTV4W5.mjs → junit-generator-QIUEEUXW.mjs} +2 -0
- package/dist/templates/da.json +1 -3
- package/dist/templates/de.json +1 -1
- package/dist/templates/en.json +1 -3
- package/dist/templates/es.json +1 -1
- package/dist/templates/fi.json +1 -3
- package/dist/templates/fr.json +1 -1
- package/dist/templates/nl.json +1 -3
- package/dist/templates/no.json +1 -3
- package/dist/templates/sv.json +1 -3
- package/package.json +2 -2
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__require
|
|
3
|
+
} from "./chunk-Y6FXYEAI.mjs";
|
|
4
|
+
|
|
1
5
|
// src/core/virtual-dom.ts
|
|
2
6
|
var VirtualDOMBuilder = class {
|
|
3
7
|
page;
|
|
@@ -131,6 +135,28 @@ var HtmlValidator = class {
|
|
|
131
135
|
};
|
|
132
136
|
|
|
133
137
|
// src/core/regulatory-scanner.ts
|
|
138
|
+
import { readFileSync } from "fs";
|
|
139
|
+
import { resolve, dirname } from "path";
|
|
140
|
+
import { fileURLToPath } from "url";
|
|
141
|
+
function getEngineVersion() {
|
|
142
|
+
try {
|
|
143
|
+
const dir = typeof __dirname !== "undefined" ? __dirname : dirname(fileURLToPath(import.meta.url));
|
|
144
|
+
const pkgPath = resolve(dir, "..", "package.json");
|
|
145
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
146
|
+
return pkg.version;
|
|
147
|
+
} catch {
|
|
148
|
+
return "2.1.1";
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function getStandardsVersion() {
|
|
152
|
+
try {
|
|
153
|
+
const stdPath = __require.resolve("@holmdigital/standards/package.json");
|
|
154
|
+
const pkg = JSON.parse(readFileSync(stdPath, "utf-8"));
|
|
155
|
+
return pkg.version;
|
|
156
|
+
} catch {
|
|
157
|
+
return "unknown";
|
|
158
|
+
}
|
|
159
|
+
}
|
|
134
160
|
var RegulatoryScanner = class {
|
|
135
161
|
browser = null;
|
|
136
162
|
options;
|
|
@@ -178,7 +204,7 @@ var RegulatoryScanner = class {
|
|
|
178
204
|
retries--;
|
|
179
205
|
if (retries === 0) throw e;
|
|
180
206
|
this.log(`Navigation failed, retrying... (${retries} attempts left)`);
|
|
181
|
-
await new Promise((
|
|
207
|
+
await new Promise((resolve2) => setTimeout(resolve2, 2e3));
|
|
182
208
|
}
|
|
183
209
|
}
|
|
184
210
|
try {
|
|
@@ -253,7 +279,7 @@ var RegulatoryScanner = class {
|
|
|
253
279
|
async enrichResults(axeResults) {
|
|
254
280
|
const reports = [];
|
|
255
281
|
const { searchRulesByTags, generateRegulatoryReport, getConvergenceRule } = await import("@holmdigital/standards");
|
|
256
|
-
const { getCurrentLang } = await import("./i18n-
|
|
282
|
+
const { getCurrentLang } = await import("./i18n-JLPALD7H.mjs");
|
|
257
283
|
const lang = getCurrentLang();
|
|
258
284
|
for (const violation of axeResults.violations) {
|
|
259
285
|
let report = generateRegulatoryReport(violation.id, lang);
|
|
@@ -344,9 +370,9 @@ var RegulatoryScanner = class {
|
|
|
344
370
|
break;
|
|
345
371
|
}
|
|
346
372
|
const metadata = {
|
|
347
|
-
engineVersion:
|
|
373
|
+
engineVersion: getEngineVersion(),
|
|
348
374
|
axeCoreVersion: axeCore.version || "4.10.2",
|
|
349
|
-
standardsVersion:
|
|
375
|
+
standardsVersion: getStandardsVersion(),
|
|
350
376
|
scanDuration,
|
|
351
377
|
pageTitle,
|
|
352
378
|
pageLanguage
|
|
@@ -721,6 +747,7 @@ async function generateStatement(result, outputPath, lang = "en", format = "html
|
|
|
721
747
|
|
|
722
748
|
export {
|
|
723
749
|
VirtualDOMBuilder,
|
|
750
|
+
getEngineVersion,
|
|
724
751
|
RegulatoryScanner,
|
|
725
752
|
PseudoAutomationEngine,
|
|
726
753
|
generateBadgeUrl,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
__require
|
|
10
|
+
};
|
package/dist/cli/index.js
CHANGED
|
@@ -766,6 +766,29 @@ var HtmlValidator = class {
|
|
|
766
766
|
};
|
|
767
767
|
|
|
768
768
|
// src/core/regulatory-scanner.ts
|
|
769
|
+
var import_node_fs = require("fs");
|
|
770
|
+
var import_node_path = require("path");
|
|
771
|
+
var import_node_url = require("url");
|
|
772
|
+
var import_meta = {};
|
|
773
|
+
function getEngineVersion() {
|
|
774
|
+
try {
|
|
775
|
+
const dir = typeof __dirname !== "undefined" ? __dirname : (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(import_meta.url));
|
|
776
|
+
const pkgPath = (0, import_node_path.resolve)(dir, "..", "package.json");
|
|
777
|
+
const pkg = JSON.parse((0, import_node_fs.readFileSync)(pkgPath, "utf-8"));
|
|
778
|
+
return pkg.version;
|
|
779
|
+
} catch {
|
|
780
|
+
return "2.1.1";
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
function getStandardsVersion() {
|
|
784
|
+
try {
|
|
785
|
+
const stdPath = require.resolve("@holmdigital/standards/package.json");
|
|
786
|
+
const pkg = JSON.parse((0, import_node_fs.readFileSync)(stdPath, "utf-8"));
|
|
787
|
+
return pkg.version;
|
|
788
|
+
} catch {
|
|
789
|
+
return "unknown";
|
|
790
|
+
}
|
|
791
|
+
}
|
|
769
792
|
var RegulatoryScanner = class {
|
|
770
793
|
browser = null;
|
|
771
794
|
options;
|
|
@@ -813,7 +836,7 @@ var RegulatoryScanner = class {
|
|
|
813
836
|
retries--;
|
|
814
837
|
if (retries === 0) throw e;
|
|
815
838
|
this.log(`Navigation failed, retrying... (${retries} attempts left)`);
|
|
816
|
-
await new Promise((
|
|
839
|
+
await new Promise((resolve2) => setTimeout(resolve2, 2e3));
|
|
817
840
|
}
|
|
818
841
|
}
|
|
819
842
|
try {
|
|
@@ -979,9 +1002,9 @@ var RegulatoryScanner = class {
|
|
|
979
1002
|
break;
|
|
980
1003
|
}
|
|
981
1004
|
const metadata = {
|
|
982
|
-
engineVersion:
|
|
1005
|
+
engineVersion: getEngineVersion(),
|
|
983
1006
|
axeCoreVersion: import_axe_core.default.version || "4.10.2",
|
|
984
|
-
standardsVersion:
|
|
1007
|
+
standardsVersion: getStandardsVersion(),
|
|
985
1008
|
scanDuration,
|
|
986
1009
|
pageTitle,
|
|
987
1010
|
pageLanguage
|
|
@@ -1674,7 +1697,6 @@ async function generateStatement(result, outputPath, lang = "en", format = "html
|
|
|
1674
1697
|
init_i18n();
|
|
1675
1698
|
|
|
1676
1699
|
// src/cli/cloud-client.ts
|
|
1677
|
-
var ENGINE_VERSION = "1.4.4";
|
|
1678
1700
|
function transformToCloudPayload(result) {
|
|
1679
1701
|
const violations = result.reports.map((report) => {
|
|
1680
1702
|
const firstNode = report.failingNodes?.[0];
|
|
@@ -1697,7 +1719,7 @@ function transformToCloudPayload(result) {
|
|
|
1697
1719
|
serious_count: result.stats.high,
|
|
1698
1720
|
moderate_count: result.stats.medium,
|
|
1699
1721
|
minor_count: result.stats.low,
|
|
1700
|
-
engine_version:
|
|
1722
|
+
engine_version: getEngineVersion(),
|
|
1701
1723
|
violations
|
|
1702
1724
|
};
|
|
1703
1725
|
}
|
|
@@ -1763,7 +1785,7 @@ function isValidUrl(urlString) {
|
|
|
1763
1785
|
}
|
|
1764
1786
|
}
|
|
1765
1787
|
var program = new import_commander.Command();
|
|
1766
|
-
program.name("hd-a11y-scan").description("HolmDigital Regulatory Scanner").version(
|
|
1788
|
+
program.name("hd-a11y-scan").description("HolmDigital Regulatory Scanner").version(getEngineVersion());
|
|
1767
1789
|
program.argument("<url>", "URL to scan").option("--lang <code>", "Language code (en, sv)").option("--ci", "Run in CI/CD mode (exit code 1 on critical failures)").option("--generate-tests", "Generate Pseudo-Automation tests").option("--json", "Output as JSON").option("--junit <path>", "Generate JUnit XML report").option("--pdf <path>", "Generate PDF report to path").option("--statement <path>", "Generate accessibility statement HTML to path").option("--format <type>", "Output format for statement (html, md)", "html").option("--viewport <size>", 'Set viewport (e.g. "mobile", "desktop", "1024x768")').option("--threshold <level>", "Severity threshold (critical, high, medium, low)").option("--api-key <key>", "API key for HolmDigital Cloud").option("--cloud-url <url>", "Cloud API URL").option("--invalid-https-cert", "Allow scanning on pages with invalid https certificate").option("--email <email>", "Contact email for accessibility statement").option("--phone <number>", "Contact phone number for accessibility statement").option("--org <name>", "Organization name for accessibility statement").option("--response-time <time>", "Expected response time for accessibility statement").option("--country <code>", "Country code for accessibility statement enforcement body").option("--publish-date <date>", "Publish date for the website (YYYY-MM-DD)").action(async (url, cliOptions) => {
|
|
1768
1790
|
const explorer = (0, import_cosmiconfig.cosmiconfig)("a11y");
|
|
1769
1791
|
const configResult = await explorer.search();
|
package/dist/cli/index.mjs
CHANGED
|
@@ -5,13 +5,15 @@ import {
|
|
|
5
5
|
generateBadgeMarkdown,
|
|
6
6
|
generateBadgeUrl,
|
|
7
7
|
generateStatement,
|
|
8
|
-
generateStatementContent
|
|
9
|
-
|
|
8
|
+
generateStatementContent,
|
|
9
|
+
getEngineVersion
|
|
10
|
+
} from "../chunk-H5MBYTT7.mjs";
|
|
10
11
|
import {
|
|
11
12
|
getCurrentLang,
|
|
12
13
|
setLanguage,
|
|
13
14
|
t
|
|
14
15
|
} from "../chunk-32WU5BD6.mjs";
|
|
16
|
+
import "../chunk-Y6FXYEAI.mjs";
|
|
15
17
|
|
|
16
18
|
// src/cli/index.ts
|
|
17
19
|
import { Command } from "commander";
|
|
@@ -334,7 +336,6 @@ async function generatePDF(htmlContent, outputPath) {
|
|
|
334
336
|
}
|
|
335
337
|
|
|
336
338
|
// src/cli/cloud-client.ts
|
|
337
|
-
var ENGINE_VERSION = "1.4.4";
|
|
338
339
|
function transformToCloudPayload(result) {
|
|
339
340
|
const violations = result.reports.map((report) => {
|
|
340
341
|
const firstNode = report.failingNodes?.[0];
|
|
@@ -357,7 +358,7 @@ function transformToCloudPayload(result) {
|
|
|
357
358
|
serious_count: result.stats.high,
|
|
358
359
|
moderate_count: result.stats.medium,
|
|
359
360
|
minor_count: result.stats.low,
|
|
360
|
-
engine_version:
|
|
361
|
+
engine_version: getEngineVersion(),
|
|
361
362
|
violations
|
|
362
363
|
};
|
|
363
364
|
}
|
|
@@ -423,7 +424,7 @@ function isValidUrl(urlString) {
|
|
|
423
424
|
}
|
|
424
425
|
}
|
|
425
426
|
var program = new Command();
|
|
426
|
-
program.name("hd-a11y-scan").description("HolmDigital Regulatory Scanner").version(
|
|
427
|
+
program.name("hd-a11y-scan").description("HolmDigital Regulatory Scanner").version(getEngineVersion());
|
|
427
428
|
program.argument("<url>", "URL to scan").option("--lang <code>", "Language code (en, sv)").option("--ci", "Run in CI/CD mode (exit code 1 on critical failures)").option("--generate-tests", "Generate Pseudo-Automation tests").option("--json", "Output as JSON").option("--junit <path>", "Generate JUnit XML report").option("--pdf <path>", "Generate PDF report to path").option("--statement <path>", "Generate accessibility statement HTML to path").option("--format <type>", "Output format for statement (html, md)", "html").option("--viewport <size>", 'Set viewport (e.g. "mobile", "desktop", "1024x768")').option("--threshold <level>", "Severity threshold (critical, high, medium, low)").option("--api-key <key>", "API key for HolmDigital Cloud").option("--cloud-url <url>", "Cloud API URL").option("--invalid-https-cert", "Allow scanning on pages with invalid https certificate").option("--email <email>", "Contact email for accessibility statement").option("--phone <number>", "Contact phone number for accessibility statement").option("--org <name>", "Organization name for accessibility statement").option("--response-time <time>", "Expected response time for accessibility statement").option("--country <code>", "Country code for accessibility statement enforcement body").option("--publish-date <date>", "Publish date for the website (YYYY-MM-DD)").action(async (url, cliOptions) => {
|
|
428
429
|
const explorer = cosmiconfig("a11y");
|
|
429
430
|
const configResult = await explorer.search();
|
|
@@ -617,11 +618,11 @@ program.argument("<url>", "URL to scan").option("--lang <code>", "Language code
|
|
|
617
618
|
}
|
|
618
619
|
}
|
|
619
620
|
if (options.ci && result.reports.length > 0) {
|
|
620
|
-
const { generateGitHubActionsAnnotations } = await import("../github-actions-
|
|
621
|
+
const { generateGitHubActionsAnnotations } = await import("../github-actions-DYED2EIL.mjs");
|
|
621
622
|
generateGitHubActionsAnnotations(result.reports);
|
|
622
623
|
}
|
|
623
624
|
if (options.junit) {
|
|
624
|
-
const { generateJUnitXML } = await import("../junit-generator-
|
|
625
|
+
const { generateJUnitXML } = await import("../junit-generator-QIUEEUXW.mjs");
|
|
625
626
|
const fs = await import("fs/promises");
|
|
626
627
|
const xml = generateJUnitXML(result);
|
|
627
628
|
await fs.writeFile(options.junit, xml);
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Dette websted er fuldt ud i overensstemmelse med loven om webtilgængelighed./Dette websted er delvist i overensstemmelse med loven om webtilgængelighed på grund af de mangler, der er beskrevet nedenfor./Dette websted er ikke i overensstemmelse med loven om webtilgængelighed. Utilgængelige dele er beskrevet nedenfor.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Indhold, der ikke er tilgængeligt",
|
|
33
|
-
"content": "Det indhold, der er beskrevet nedenfor, er på den ene eller anden måde ikke helt tilgængeligt.\n\n[\n### Manglende overholdelse af lovkravene\n{<mangler>}\n]"
|
|
31
|
+
"content": "Det indhold, der er beskrevet nedenfor, er på den ene eller anden måde ikke helt tilgængeligt.\n\n[\n**Manglende overholdelse af lovkravene**\n\n{<mangler>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"id": "what-to-do",
|
|
12
12
|
"title": "Nicht barrierefreie Inhalte",
|
|
13
|
-
"content": "Die nachstehend aufgeführten Inhalte sind aus den folgenden Gründen nicht barrierefrei:\n\n[\n
|
|
13
|
+
"content": "Die nachstehend aufgeführten Inhalte sind aus den folgenden Gründen nicht barrierefrei:\n\n[\n**Unvereinbarkeit mit den Barrierefreiheitsanforderungen**\n\n{<mängel>}\n]\n\n[Unsere normale Antwortzeit beträgt {<svarstid>}.]\n\n[Sie können uns auch wie folgt kontaktieren:\n\n* E-Mail an {<e-mailadresse>}\n* Telefon {<telefonnummer>}]"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"id": "reporting",
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{This website is fully compliant with the accessibility regulations./This website is partially compliant with the accessibility regulations, due to the non-compliances listed below./This website is not compliant with the accessibility regulations. The non-accessible sections are listed below.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Non-accessible content",
|
|
33
|
-
"content": "The content described below is, in one way or another, not fully accessible.\n\n[\n### Non-compliance with the accessibility regulations\n\n{<issues>}\n]"
|
|
31
|
+
"content": "The content described below is, in one way or another, not fully accessible.\n\n[\n**Non-compliance with the accessibility regulations**\n\n{<issues>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"id": "what-to-do",
|
|
12
12
|
"title": "Contenido no accesible",
|
|
13
|
-
"content": "El contenido que se recoge a continuación no es accesible por los siguientes motivos:\n\n[\n
|
|
13
|
+
"content": "El contenido que se recoge a continuación no es accesible por los siguientes motivos:\n\n[\n**Falta de conformidad con el estándar**\n\n{<deficiencias>}\n]\n\n[Nuestro tiempo de respuesta normal es de {<svarstid>}.]\n\n[También puede contactar con nosotros de las siguientes maneras:\n\n* enviar un correo electrónico a {<e-mailadresse>}\n* llamar al {<telefoonnummer>}]"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"id": "reporting",
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Tämä verkkosivusto on täysin digitaalisten palvelujen tarjoamisesta annetun lain mukainen./Tämä verkkosivusto on osittain digitaalisten palvelujen tarjoamisesta annetun lain mukainen jäljempänä mainittujen puutteiden vuoksi./Tämä verkkosivusto ei ole digitaalisten palvelujen tarjoamisesta annetun lain mukainen. Puutteelliset osat on kuvattu jäljempänä.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Saavutettavuusvaatimusten vastainen sisältö",
|
|
33
|
-
"content": "Jäljempänä mainittu sisältö ei ole täysin saavutettavaa.\n\n[\n### Puutteet lain vaatimusten täyttämisessä\n{<puutteet>}\n]"
|
|
31
|
+
"content": "Jäljempänä mainittu sisältö ei ole täysin saavutettavaa.\n\n[\n**Puutteet lain vaatimusten täyttämisessä**\n\n{<puutteet>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"id": "what-to-do",
|
|
12
12
|
"title": "Contenus non accessibles",
|
|
13
|
-
"content": "Les contenus listés ci-dessous ne sont pas accessibles pour les raisons suivantes :\n\n[\n
|
|
13
|
+
"content": "Les contenus listés ci-dessous ne sont pas accessibles pour les raisons suivantes :\n\n[\n**Non-conformité avec le RGAA**\n\n{<défauts>}\n]\n\n[Notre délai de réponse habituel est de {<svarstid>}.]\n\n[Vous pouvez également nous contacter des manières suivantes :\n\n* envoyer un e-mail à {<e-mailadresse>}\n* appeler le {<telefoonnummer>}]"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"id": "reporting",
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Deze website is volledig in overeenstemming met de wet digitale toegankelijkheid overheid./Deze website is gedeeltelijk in overeenstemming met de wet digitale toegankelijkheid overheid, vanwege de hieronder beschreven gebreken./Deze website is niet in overeenstemming met de wet digitale toegankelijkheid overheid. De niet-toegankelijke delen worden hieronder beschreven.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Inhoud die niet toegankelijk is",
|
|
33
|
-
"content": "De hieronder beschreven inhoud is op de een of andere manier niet volledig toegankelijk.\n\n[\n### Niet-naleving van de wettelijke eisen\n{<gebreken>}\n]"
|
|
31
|
+
"content": "De hieronder beschreven inhoud is op de een of andere manier niet volledig toegankelijk.\n\n[\n**Niet-naleving van de wettelijke eisen**\n\n{<gebreken>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Dette nettstedet er helt i samsvar med lov om universell utforming av IKT-løsninger./Dette nettstedet er delvis i samsvar med lov om universell utforming av IKT-løsninger, på grunn av manglene beskrevet nedenfor./Dette nettstedet er ikke i samsvar med lov om universell utforming av IKT-løsninger. Utilgjengelige deler er beskrevet nedenfor.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Innhold som ikke er tilgjengelig",
|
|
33
|
-
"content": "Innholdet som er beskrevet nedenfor er på en eller annen måte ikke fullt ut tilgjengelig.\n\n[\n### Manglende samsvar med lovkravene\n{<mangler>}\n]"
|
|
31
|
+
"content": "Innholdet som er beskrevet nedenfor er på en eller annen måte ikke fullt ut tilgjengelig.\n\n[\n**Manglende samsvar med lovkravene**\n\n{<mangler>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Den här webbplatsen är helt förenlig med lagen om tillgänglighet till digital offentlig service./Den här webbplatsen är delvis förenlig med lagen om tillgänglighet till digital offentlig service, på grund av de brister som beskrivs nedan./Den här webbplatsen är inte förenlig med lagen om tillgänglighet till digital offentlig service. Otillgängliga delar beskrivs nedan.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Innehåll som inte är tillgängligt",
|
|
33
|
-
"content": "Det innehåll som beskrivs nedan är på ett eller annat sätt inte helt tillgängligt.\n\n[\n### Bristande förenlighet med lagkraven\n{<brister>}\n]"
|
|
31
|
+
"content": "Det innehåll som beskrivs nedan är på ett eller annat sätt inte helt tillgängligt.\n\n[\n**Bristande förenlighet med lagkraven**\n\n{<brister>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
package/dist/index.d.mts
CHANGED
|
@@ -12,6 +12,7 @@ interface ValidationResult {
|
|
|
12
12
|
}>;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
declare function getEngineVersion(): string;
|
|
15
16
|
interface ScannerOptions {
|
|
16
17
|
url: string;
|
|
17
18
|
headless?: boolean;
|
|
@@ -163,4 +164,4 @@ interface StatementMetadata {
|
|
|
163
164
|
declare function generateStatementContent(result: ScanResult, lang?: string, format?: 'html' | 'md' | 'markdown', metadata?: StatementMetadata): Promise<string>;
|
|
164
165
|
declare function generateStatement(result: ScanResult, outputPath: string, lang?: string, format?: 'html' | 'md' | 'markdown', metadata?: StatementMetadata): Promise<void>;
|
|
165
166
|
|
|
166
|
-
export { PseudoAutomationEngine, RegulatoryScanner, type ScanMetadata, type ScanResult, type ScannerOptions, type StatementMetadata, VirtualDOMBuilder, type VirtualDOMConfig, type VirtualNode, generateStatement, generateStatementContent, getCurrentLang, setLanguage, t };
|
|
167
|
+
export { PseudoAutomationEngine, RegulatoryScanner, type ScanMetadata, type ScanResult, type ScannerOptions, type StatementMetadata, VirtualDOMBuilder, type VirtualDOMConfig, type VirtualNode, generateStatement, generateStatementContent, getCurrentLang, getEngineVersion, setLanguage, t };
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ interface ValidationResult {
|
|
|
12
12
|
}>;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
declare function getEngineVersion(): string;
|
|
15
16
|
interface ScannerOptions {
|
|
16
17
|
url: string;
|
|
17
18
|
headless?: boolean;
|
|
@@ -163,4 +164,4 @@ interface StatementMetadata {
|
|
|
163
164
|
declare function generateStatementContent(result: ScanResult, lang?: string, format?: 'html' | 'md' | 'markdown', metadata?: StatementMetadata): Promise<string>;
|
|
164
165
|
declare function generateStatement(result: ScanResult, outputPath: string, lang?: string, format?: 'html' | 'md' | 'markdown', metadata?: StatementMetadata): Promise<void>;
|
|
165
166
|
|
|
166
|
-
export { PseudoAutomationEngine, RegulatoryScanner, type ScanMetadata, type ScanResult, type ScannerOptions, type StatementMetadata, VirtualDOMBuilder, type VirtualDOMConfig, type VirtualNode, generateStatement, generateStatementContent, getCurrentLang, setLanguage, t };
|
|
167
|
+
export { PseudoAutomationEngine, RegulatoryScanner, type ScanMetadata, type ScanResult, type ScannerOptions, type StatementMetadata, VirtualDOMBuilder, type VirtualDOMConfig, type VirtualNode, generateStatement, generateStatementContent, getCurrentLang, getEngineVersion, setLanguage, t };
|
package/dist/index.js
CHANGED
|
@@ -523,6 +523,7 @@ __export(index_exports, {
|
|
|
523
523
|
generateStatement: () => generateStatement,
|
|
524
524
|
generateStatementContent: () => generateStatementContent,
|
|
525
525
|
getCurrentLang: () => getCurrentLang,
|
|
526
|
+
getEngineVersion: () => getEngineVersion,
|
|
526
527
|
setLanguage: () => setLanguage,
|
|
527
528
|
t: () => t
|
|
528
529
|
});
|
|
@@ -661,6 +662,29 @@ var HtmlValidator = class {
|
|
|
661
662
|
};
|
|
662
663
|
|
|
663
664
|
// src/core/regulatory-scanner.ts
|
|
665
|
+
var import_node_fs = require("fs");
|
|
666
|
+
var import_node_path = require("path");
|
|
667
|
+
var import_node_url = require("url");
|
|
668
|
+
var import_meta = {};
|
|
669
|
+
function getEngineVersion() {
|
|
670
|
+
try {
|
|
671
|
+
const dir = typeof __dirname !== "undefined" ? __dirname : (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(import_meta.url));
|
|
672
|
+
const pkgPath = (0, import_node_path.resolve)(dir, "..", "package.json");
|
|
673
|
+
const pkg = JSON.parse((0, import_node_fs.readFileSync)(pkgPath, "utf-8"));
|
|
674
|
+
return pkg.version;
|
|
675
|
+
} catch {
|
|
676
|
+
return "2.1.1";
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
function getStandardsVersion() {
|
|
680
|
+
try {
|
|
681
|
+
const stdPath = require.resolve("@holmdigital/standards/package.json");
|
|
682
|
+
const pkg = JSON.parse((0, import_node_fs.readFileSync)(stdPath, "utf-8"));
|
|
683
|
+
return pkg.version;
|
|
684
|
+
} catch {
|
|
685
|
+
return "unknown";
|
|
686
|
+
}
|
|
687
|
+
}
|
|
664
688
|
var RegulatoryScanner = class {
|
|
665
689
|
browser = null;
|
|
666
690
|
options;
|
|
@@ -708,7 +732,7 @@ var RegulatoryScanner = class {
|
|
|
708
732
|
retries--;
|
|
709
733
|
if (retries === 0) throw e;
|
|
710
734
|
this.log(`Navigation failed, retrying... (${retries} attempts left)`);
|
|
711
|
-
await new Promise((
|
|
735
|
+
await new Promise((resolve2) => setTimeout(resolve2, 2e3));
|
|
712
736
|
}
|
|
713
737
|
}
|
|
714
738
|
try {
|
|
@@ -874,9 +898,9 @@ var RegulatoryScanner = class {
|
|
|
874
898
|
break;
|
|
875
899
|
}
|
|
876
900
|
const metadata = {
|
|
877
|
-
engineVersion:
|
|
901
|
+
engineVersion: getEngineVersion(),
|
|
878
902
|
axeCoreVersion: import_axe_core.default.version || "4.10.2",
|
|
879
|
-
standardsVersion:
|
|
903
|
+
standardsVersion: getStandardsVersion(),
|
|
880
904
|
scanDuration,
|
|
881
905
|
pageTitle,
|
|
882
906
|
pageLanguage
|
|
@@ -1254,6 +1278,7 @@ async function generateStatement(result, outputPath, lang = "en", format = "html
|
|
|
1254
1278
|
generateStatement,
|
|
1255
1279
|
generateStatementContent,
|
|
1256
1280
|
getCurrentLang,
|
|
1281
|
+
getEngineVersion,
|
|
1257
1282
|
setLanguage,
|
|
1258
1283
|
t
|
|
1259
1284
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -3,13 +3,15 @@ import {
|
|
|
3
3
|
RegulatoryScanner,
|
|
4
4
|
VirtualDOMBuilder,
|
|
5
5
|
generateStatement,
|
|
6
|
-
generateStatementContent
|
|
7
|
-
|
|
6
|
+
generateStatementContent,
|
|
7
|
+
getEngineVersion
|
|
8
|
+
} from "./chunk-H5MBYTT7.mjs";
|
|
8
9
|
import {
|
|
9
10
|
getCurrentLang,
|
|
10
11
|
setLanguage,
|
|
11
12
|
t
|
|
12
13
|
} from "./chunk-32WU5BD6.mjs";
|
|
14
|
+
import "./chunk-Y6FXYEAI.mjs";
|
|
13
15
|
export {
|
|
14
16
|
PseudoAutomationEngine,
|
|
15
17
|
RegulatoryScanner,
|
|
@@ -17,6 +19,7 @@ export {
|
|
|
17
19
|
generateStatement,
|
|
18
20
|
generateStatementContent,
|
|
19
21
|
getCurrentLang,
|
|
22
|
+
getEngineVersion,
|
|
20
23
|
setLanguage,
|
|
21
24
|
t
|
|
22
25
|
};
|
package/dist/templates/da.json
CHANGED
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Dette websted er fuldt ud i overensstemmelse med loven om webtilgængelighed./Dette websted er delvist i overensstemmelse med loven om webtilgængelighed på grund af de mangler, der er beskrevet nedenfor./Dette websted er ikke i overensstemmelse med loven om webtilgængelighed. Utilgængelige dele er beskrevet nedenfor.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Indhold, der ikke er tilgængeligt",
|
|
33
|
-
"content": "Det indhold, der er beskrevet nedenfor, er på den ene eller anden måde ikke helt tilgængeligt.\n\n[\n### Manglende overholdelse af lovkravene\n{<mangler>}\n]"
|
|
31
|
+
"content": "Det indhold, der er beskrevet nedenfor, er på den ene eller anden måde ikke helt tilgængeligt.\n\n[\n**Manglende overholdelse af lovkravene**\n\n{<mangler>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
package/dist/templates/de.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"id": "what-to-do",
|
|
12
12
|
"title": "Nicht barrierefreie Inhalte",
|
|
13
|
-
"content": "Die nachstehend aufgeführten Inhalte sind aus den folgenden Gründen nicht barrierefrei:\n\n[\n
|
|
13
|
+
"content": "Die nachstehend aufgeführten Inhalte sind aus den folgenden Gründen nicht barrierefrei:\n\n[\n**Unvereinbarkeit mit den Barrierefreiheitsanforderungen**\n\n{<mängel>}\n]\n\n[Unsere normale Antwortzeit beträgt {<svarstid>}.]\n\n[Sie können uns auch wie folgt kontaktieren:\n\n* E-Mail an {<e-mailadresse>}\n* Telefon {<telefonnummer>}]"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"id": "reporting",
|
package/dist/templates/en.json
CHANGED
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{This website is fully compliant with the accessibility regulations./This website is partially compliant with the accessibility regulations, due to the non-compliances listed below./This website is not compliant with the accessibility regulations. The non-accessible sections are listed below.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Non-accessible content",
|
|
33
|
-
"content": "The content described below is, in one way or another, not fully accessible.\n\n[\n### Non-compliance with the accessibility regulations\n\n{<issues>}\n]"
|
|
31
|
+
"content": "The content described below is, in one way or another, not fully accessible.\n\n[\n**Non-compliance with the accessibility regulations**\n\n{<issues>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
package/dist/templates/es.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"id": "what-to-do",
|
|
12
12
|
"title": "Contenido no accesible",
|
|
13
|
-
"content": "El contenido que se recoge a continuación no es accesible por los siguientes motivos:\n\n[\n
|
|
13
|
+
"content": "El contenido que se recoge a continuación no es accesible por los siguientes motivos:\n\n[\n**Falta de conformidad con el estándar**\n\n{<deficiencias>}\n]\n\n[Nuestro tiempo de respuesta normal es de {<svarstid>}.]\n\n[También puede contactar con nosotros de las siguientes maneras:\n\n* enviar un correo electrónico a {<e-mailadresse>}\n* llamar al {<telefoonnummer>}]"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"id": "reporting",
|
package/dist/templates/fi.json
CHANGED
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Tämä verkkosivusto on täysin digitaalisten palvelujen tarjoamisesta annetun lain mukainen./Tämä verkkosivusto on osittain digitaalisten palvelujen tarjoamisesta annetun lain mukainen jäljempänä mainittujen puutteiden vuoksi./Tämä verkkosivusto ei ole digitaalisten palvelujen tarjoamisesta annetun lain mukainen. Puutteelliset osat on kuvattu jäljempänä.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Saavutettavuusvaatimusten vastainen sisältö",
|
|
33
|
-
"content": "Jäljempänä mainittu sisältö ei ole täysin saavutettavaa.\n\n[\n### Puutteet lain vaatimusten täyttämisessä\n{<puutteet>}\n]"
|
|
31
|
+
"content": "Jäljempänä mainittu sisältö ei ole täysin saavutettavaa.\n\n[\n**Puutteet lain vaatimusten täyttämisessä**\n\n{<puutteet>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
package/dist/templates/fr.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"id": "what-to-do",
|
|
12
12
|
"title": "Contenus non accessibles",
|
|
13
|
-
"content": "Les contenus listés ci-dessous ne sont pas accessibles pour les raisons suivantes :\n\n[\n
|
|
13
|
+
"content": "Les contenus listés ci-dessous ne sont pas accessibles pour les raisons suivantes :\n\n[\n**Non-conformité avec le RGAA**\n\n{<défauts>}\n]\n\n[Notre délai de réponse habituel est de {<svarstid>}.]\n\n[Vous pouvez également nous contacter des manières suivantes :\n\n* envoyer un e-mail à {<e-mailadresse>}\n* appeler le {<telefoonnummer>}]"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"id": "reporting",
|
package/dist/templates/nl.json
CHANGED
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Deze website is volledig in overeenstemming met de wet digitale toegankelijkheid overheid./Deze website is gedeeltelijk in overeenstemming met de wet digitale toegankelijkheid overheid, vanwege de hieronder beschreven gebreken./Deze website is niet in overeenstemming met de wet digitale toegankelijkheid overheid. De niet-toegankelijke delen worden hieronder beschreven.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Inhoud die niet toegankelijk is",
|
|
33
|
-
"content": "De hieronder beschreven inhoud is op de een of andere manier niet volledig toegankelijk.\n\n[\n### Niet-naleving van de wettelijke eisen\n{<gebreken>}\n]"
|
|
31
|
+
"content": "De hieronder beschreven inhoud is op de een of andere manier niet volledig toegankelijk.\n\n[\n**Niet-naleving van de wettelijke eisen**\n\n{<gebreken>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
package/dist/templates/no.json
CHANGED
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Dette nettstedet er helt i samsvar med lov om universell utforming av IKT-løsninger./Dette nettstedet er delvis i samsvar med lov om universell utforming av IKT-løsninger, på grunn av manglene beskrevet nedenfor./Dette nettstedet er ikke i samsvar med lov om universell utforming av IKT-løsninger. Utilgjengelige deler er beskrevet nedenfor.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Innhold som ikke er tilgjengelig",
|
|
33
|
-
"content": "Innholdet som er beskrevet nedenfor er på en eller annen måte ikke fullt ut tilgjengelig.\n\n[\n### Manglende samsvar med lovkravene\n{<mangler>}\n]"
|
|
31
|
+
"content": "Innholdet som er beskrevet nedenfor er på en eller annen måte ikke fullt ut tilgjengelig.\n\n[\n**Manglende samsvar med lovkravene**\n\n{<mangler>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
package/dist/templates/sv.json
CHANGED
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"content": "{Den här webbplatsen är helt förenlig med lagen om tillgänglighet till digital offentlig service./Den här webbplatsen är delvis förenlig med lagen om tillgänglighet till digital offentlig service, på grund av de brister som beskrivs nedan./Den här webbplatsen är inte förenlig med lagen om tillgänglighet till digital offentlig service. Otillgängliga delar beskrivs nedan.}"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"
|
|
32
|
-
"title": "Innehåll som inte är tillgängligt",
|
|
33
|
-
"content": "Det innehåll som beskrivs nedan är på ett eller annat sätt inte helt tillgängligt.\n\n[\n### Bristande förenlighet med lagkraven\n{<brister>}\n]"
|
|
31
|
+
"content": "Det innehåll som beskrivs nedan är på ett eller annat sätt inte helt tillgängligt.\n\n[\n**Bristande förenlighet med lagkraven**\n\n{<brister>}\n]"
|
|
34
32
|
},
|
|
35
33
|
{
|
|
36
34
|
"id": "testing",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@holmdigital/engine",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"author": "Holm Digital AB",
|
|
61
61
|
"license": "MIT",
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@holmdigital/components": "^2.1.
|
|
63
|
+
"@holmdigital/components": "^2.1.1",
|
|
64
64
|
"@holmdigital/standards": "*",
|
|
65
65
|
"axe-core": "4.10.2",
|
|
66
66
|
"chalk": "^5.3.0",
|