@qualweb/core 0.8.0-alpha → 0.8.0

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.
Files changed (195) hide show
  1. package/README.md +119 -251
  2. package/dist/index.d.ts +5 -19
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +16 -229
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/ClusterOptions.d.ts +6 -0
  7. package/dist/lib/ClusterOptions.d.ts.map +1 -0
  8. package/dist/lib/ClusterOptions.js +3 -0
  9. package/dist/lib/ClusterOptions.js.map +1 -0
  10. package/dist/lib/ErrorManager.object.d.ts +14 -0
  11. package/dist/lib/ErrorManager.object.d.ts.map +1 -0
  12. package/dist/lib/ErrorManager.object.js +57 -0
  13. package/dist/lib/ErrorManager.object.js.map +1 -0
  14. package/dist/lib/EvaluationManager.object.d.ts +11 -0
  15. package/dist/lib/EvaluationManager.object.d.ts.map +1 -0
  16. package/dist/lib/EvaluationManager.object.js +75 -0
  17. package/dist/lib/EvaluationManager.object.js.map +1 -0
  18. package/dist/lib/LogOptions.d.ts +5 -0
  19. package/dist/lib/LogOptions.d.ts.map +1 -0
  20. package/dist/lib/LogOptions.js +3 -0
  21. package/dist/lib/LogOptions.js.map +1 -0
  22. package/dist/lib/PageOptions.d.ts +11 -0
  23. package/dist/lib/PageOptions.d.ts.map +1 -0
  24. package/dist/lib/PageOptions.js +3 -0
  25. package/dist/lib/PageOptions.js.map +1 -0
  26. package/dist/lib/PluginManager.object.d.ts +9 -0
  27. package/dist/lib/PluginManager.object.d.ts.map +1 -0
  28. package/dist/lib/PluginManager.object.js +17 -0
  29. package/dist/lib/PluginManager.object.js.map +1 -0
  30. package/dist/lib/PuppeteerPlugins.d.ts +5 -0
  31. package/dist/lib/PuppeteerPlugins.d.ts.map +1 -0
  32. package/dist/lib/PuppeteerPlugins.js +3 -0
  33. package/dist/lib/PuppeteerPlugins.js.map +1 -0
  34. package/dist/lib/QualwebOptions.d.ts +26 -0
  35. package/dist/lib/QualwebOptions.d.ts.map +1 -0
  36. package/dist/lib/QualwebOptions.js +3 -0
  37. package/dist/lib/QualwebOptions.js.map +1 -0
  38. package/dist/lib/QualwebPage.object.d.ts +33 -0
  39. package/dist/lib/QualwebPage.object.d.ts.map +1 -0
  40. package/dist/lib/QualwebPage.object.js +206 -0
  41. package/dist/lib/QualwebPage.object.js.map +1 -0
  42. package/dist/lib/QualwebPlugin.d.ts +7 -0
  43. package/dist/lib/QualwebPlugin.d.ts.map +1 -0
  44. package/dist/lib/QualwebPlugin.js +3 -0
  45. package/dist/lib/QualwebPlugin.js.map +1 -0
  46. package/dist/lib/Report.object.d.ts +10 -0
  47. package/dist/lib/Report.object.d.ts.map +1 -0
  48. package/dist/lib/Report.object.js +39 -0
  49. package/dist/lib/Report.object.js.map +1 -0
  50. package/dist/lib/constants.d.ts +7 -0
  51. package/dist/lib/constants.d.ts.map +1 -0
  52. package/dist/lib/constants.js +10 -0
  53. package/dist/lib/constants.js.map +1 -0
  54. package/dist/lib/evaluation/Assertion.d.ts +11 -0
  55. package/dist/lib/evaluation/Assertion.d.ts.map +1 -0
  56. package/dist/lib/evaluation/Assertion.js +3 -0
  57. package/dist/lib/evaluation/Assertion.js.map +1 -0
  58. package/dist/lib/evaluation/AssertionMetadata.d.ts +27 -0
  59. package/dist/lib/evaluation/AssertionMetadata.d.ts.map +1 -0
  60. package/dist/lib/evaluation/AssertionMetadata.js +3 -0
  61. package/dist/lib/evaluation/AssertionMetadata.js.map +1 -0
  62. package/dist/lib/evaluation/CounterReport.d.ts +9 -0
  63. package/dist/lib/evaluation/CounterReport.d.ts.map +1 -0
  64. package/dist/lib/evaluation/CounterReport.js +3 -0
  65. package/dist/lib/evaluation/CounterReport.js.map +1 -0
  66. package/dist/lib/evaluation/DomData.d.ts +6 -0
  67. package/dist/lib/evaluation/DomData.d.ts.map +1 -0
  68. package/dist/lib/evaluation/DomData.js +3 -0
  69. package/dist/lib/evaluation/DomData.js.map +1 -0
  70. package/dist/lib/evaluation/EvaluationElement.d.ts +16 -0
  71. package/dist/lib/evaluation/EvaluationElement.d.ts.map +1 -0
  72. package/dist/lib/evaluation/EvaluationElement.js +3 -0
  73. package/dist/lib/evaluation/EvaluationElement.js.map +1 -0
  74. package/dist/lib/evaluation/EvaluationModule.d.ts +20 -0
  75. package/dist/lib/evaluation/EvaluationModule.d.ts.map +1 -0
  76. package/dist/lib/evaluation/EvaluationModule.js +38 -0
  77. package/dist/lib/evaluation/EvaluationModule.js.map +1 -0
  78. package/dist/lib/evaluation/EvaluationReport.d.ts +11 -0
  79. package/dist/lib/evaluation/EvaluationReport.d.ts.map +1 -0
  80. package/dist/lib/evaluation/EvaluationReport.js +3 -0
  81. package/dist/lib/evaluation/EvaluationReport.js.map +1 -0
  82. package/dist/lib/evaluation/ExecutableModule.d.ts +12 -0
  83. package/dist/lib/evaluation/ExecutableModule.d.ts.map +1 -0
  84. package/dist/lib/evaluation/ExecutableModule.js +18 -0
  85. package/dist/lib/evaluation/ExecutableModule.js.map +1 -0
  86. package/dist/lib/evaluation/Guideline.d.ts +12 -0
  87. package/dist/lib/evaluation/Guideline.d.ts.map +1 -0
  88. package/dist/lib/evaluation/Guideline.js +7 -0
  89. package/dist/lib/evaluation/Guideline.js.map +1 -0
  90. package/dist/lib/evaluation/HTMLValidationReport.d.ts +16 -0
  91. package/dist/lib/evaluation/HTMLValidationReport.d.ts.map +1 -0
  92. package/dist/lib/evaluation/HTMLValidationReport.js +3 -0
  93. package/dist/lib/evaluation/HTMLValidationReport.js.map +1 -0
  94. package/dist/lib/evaluation/Level.d.ts +2 -0
  95. package/dist/lib/evaluation/Level.d.ts.map +1 -0
  96. package/dist/lib/evaluation/Level.js +3 -0
  97. package/dist/lib/evaluation/Level.js.map +1 -0
  98. package/dist/lib/evaluation/Metadata.d.ts +5 -0
  99. package/dist/lib/evaluation/Metadata.d.ts.map +1 -0
  100. package/dist/lib/evaluation/Metadata.js +3 -0
  101. package/dist/lib/evaluation/Metadata.js.map +1 -0
  102. package/dist/lib/evaluation/ModuleMetadata.d.ts +5 -0
  103. package/dist/lib/evaluation/ModuleMetadata.d.ts.map +1 -0
  104. package/dist/lib/evaluation/ModuleMetadata.js +3 -0
  105. package/dist/lib/evaluation/ModuleMetadata.js.map +1 -0
  106. package/dist/lib/evaluation/ModuleOptions.d.ts +9 -0
  107. package/dist/lib/evaluation/ModuleOptions.d.ts.map +1 -0
  108. package/dist/lib/evaluation/ModuleOptions.js +3 -0
  109. package/dist/lib/evaluation/ModuleOptions.js.map +1 -0
  110. package/dist/lib/evaluation/ModuleReport.d.ts +12 -0
  111. package/dist/lib/evaluation/ModuleReport.d.ts.map +1 -0
  112. package/dist/lib/evaluation/ModuleReport.js +31 -0
  113. package/dist/lib/evaluation/ModuleReport.js.map +1 -0
  114. package/dist/lib/evaluation/ModuleType.d.ts +8 -0
  115. package/dist/lib/evaluation/ModuleType.d.ts.map +1 -0
  116. package/dist/lib/evaluation/ModuleType.js +12 -0
  117. package/dist/lib/evaluation/ModuleType.js.map +1 -0
  118. package/dist/lib/evaluation/ModulesData.d.ts +10 -0
  119. package/dist/lib/evaluation/ModulesData.d.ts.map +1 -0
  120. package/dist/lib/evaluation/ModulesData.js +3 -0
  121. package/dist/lib/evaluation/ModulesData.js.map +1 -0
  122. package/dist/lib/evaluation/Principle.d.ts +2 -0
  123. package/dist/lib/evaluation/Principle.d.ts.map +1 -0
  124. package/dist/lib/evaluation/Principle.js +3 -0
  125. package/dist/lib/evaluation/Principle.js.map +1 -0
  126. package/dist/lib/evaluation/QualwebReport.d.ts +10 -0
  127. package/dist/lib/evaluation/QualwebReport.d.ts.map +1 -0
  128. package/dist/lib/evaluation/QualwebReport.js +3 -0
  129. package/dist/lib/evaluation/QualwebReport.js.map +1 -0
  130. package/dist/lib/evaluation/SuccessCriteria.d.ts +10 -0
  131. package/dist/lib/evaluation/SuccessCriteria.d.ts.map +1 -0
  132. package/dist/lib/evaluation/SuccessCriteria.js +3 -0
  133. package/dist/lib/evaluation/SuccessCriteria.js.map +1 -0
  134. package/dist/lib/evaluation/SystemData.d.ts +24 -0
  135. package/dist/lib/evaluation/SystemData.d.ts.map +1 -0
  136. package/dist/lib/evaluation/SystemData.js +3 -0
  137. package/dist/lib/evaluation/SystemData.js.map +1 -0
  138. package/dist/lib/evaluation/Test.d.ts +21 -0
  139. package/dist/lib/evaluation/Test.d.ts.map +1 -0
  140. package/dist/lib/evaluation/Test.js +34 -0
  141. package/dist/lib/evaluation/Test.js.map +1 -0
  142. package/dist/lib/evaluation/TestResult.d.ts +10 -0
  143. package/dist/lib/evaluation/TestResult.d.ts.map +1 -0
  144. package/dist/lib/evaluation/TestResult.js +3 -0
  145. package/dist/lib/evaluation/TestResult.js.map +1 -0
  146. package/dist/lib/evaluation/Tester.d.ts +21 -0
  147. package/dist/lib/evaluation/Tester.d.ts.map +1 -0
  148. package/dist/lib/evaluation/Tester.js +54 -0
  149. package/dist/lib/evaluation/Tester.js.map +1 -0
  150. package/dist/lib/evaluation/TestingData.d.ts +7 -0
  151. package/dist/lib/evaluation/TestingData.d.ts.map +1 -0
  152. package/dist/lib/evaluation/TestingData.js +3 -0
  153. package/dist/lib/evaluation/TestingData.js.map +1 -0
  154. package/dist/lib/evaluation/Url.d.ts +9 -0
  155. package/dist/lib/evaluation/Url.d.ts.map +1 -0
  156. package/dist/lib/evaluation/Url.js +3 -0
  157. package/dist/lib/evaluation/Url.js.map +1 -0
  158. package/dist/lib/evaluation/Verdict.d.ts +7 -0
  159. package/dist/lib/evaluation/Verdict.d.ts.map +1 -0
  160. package/dist/lib/evaluation/Verdict.js +11 -0
  161. package/dist/lib/evaluation/Verdict.js.map +1 -0
  162. package/dist/lib/evaluation/index.d.ts +28 -0
  163. package/dist/lib/evaluation/index.d.ts.map +1 -0
  164. package/dist/lib/evaluation/index.js +44 -0
  165. package/dist/lib/evaluation/index.js.map +1 -0
  166. package/dist/lib/i18n/AssertionTranslator.d.ts +10 -0
  167. package/dist/lib/i18n/AssertionTranslator.d.ts.map +1 -0
  168. package/dist/lib/i18n/AssertionTranslator.js +20 -0
  169. package/dist/lib/i18n/AssertionTranslator.js.map +1 -0
  170. package/dist/lib/i18n/ModuleTranslator.d.ts +14 -0
  171. package/dist/lib/i18n/ModuleTranslator.d.ts.map +1 -0
  172. package/dist/lib/i18n/ModuleTranslator.js +41 -0
  173. package/dist/lib/i18n/ModuleTranslator.js.map +1 -0
  174. package/dist/lib/i18n/ReportTranslator.d.ts +9 -0
  175. package/dist/lib/i18n/ReportTranslator.d.ts.map +1 -0
  176. package/dist/lib/i18n/ReportTranslator.js +28 -0
  177. package/dist/lib/i18n/ReportTranslator.js.map +1 -0
  178. package/dist/lib/i18n/TestTranslator.d.ts +11 -0
  179. package/dist/lib/i18n/TestTranslator.d.ts.map +1 -0
  180. package/dist/lib/i18n/TestTranslator.js +23 -0
  181. package/dist/lib/i18n/TestTranslator.js.map +1 -0
  182. package/dist/lib/i18n/index.d.ts +5 -0
  183. package/dist/lib/i18n/index.d.ts.map +1 -0
  184. package/dist/lib/i18n/index.js +21 -0
  185. package/dist/lib/i18n/index.js.map +1 -0
  186. package/dist/lib/index.d.ts +13 -0
  187. package/dist/lib/index.d.ts.map +1 -0
  188. package/dist/lib/index.js +29 -0
  189. package/dist/lib/index.js.map +1 -0
  190. package/dist/qualweb.d.ts +23 -0
  191. package/dist/qualweb.d.ts.map +1 -0
  192. package/dist/qualweb.js +146 -0
  193. package/dist/qualweb.js.map +1 -0
  194. package/package.json +50 -34
  195. package/LICENSE +0 -15
package/README.md CHANGED
@@ -1,164 +1,146 @@
1
1
  # QualWeb core
2
2
 
3
- The core allows you to perform automatic accessibility evaluations on web pages. It contains 3 evaluation modules:
3
+ The core allows you to perform automatic accessibility evaluations on web pages. By itself, core does not contain any
4
+ evaluation modules, but are added separately. The [monorepo](https://github.com/qualweb/qualweb) contains several
5
+ modules that we maintain:
4
6
 
5
- - [@qualweb/act-rules](https://github.com/qualweb/act-rules)
6
- - [@qualweb/wcag-techniques](https://github.com/qualweb/wcag-techniques)
7
- - [@qualweb/best-practices](https://github.com/qualweb/best-practices)
7
+ - [@qualweb/act-rules](https://github.com/qualweb/qualweb/tree/main/packages/act-rules)
8
+ - [@qualweb/wcag-techniques](https://github.com/qualweb/qualweb/tree/main/packages/wcag-techniques)
9
+ - [@qualweb/best-practices](https://github.com/qualweb/qualweb/tree/main/packages/best-practices)
10
+ - [@qualweb/cui-checks](https://github.com/qualweb/qualweb/tree/main/packages/cui-checks)
11
+ - [@qualweb/counter](https://github.com/qualweb/qualweb/tree/main/packages/counter)
8
12
 
9
13
  You can also perform evaluations at [http://qualweb.di.fc.ul.pt/evaluator/](http://qualweb.di.fc.ul.pt/evaluator/), or by installing the [chrome extension](https://chrome.google.com/webstore/detail/qualweb-extension/ljgilomdnehokancdcbkmbndkkiggioc).
10
14
 
11
15
  ## How to install
12
16
 
17
+ As a base example, here's how to install core and the ACT rules module. The procedure for all modules is generally the same (but do check their READMEs for specifics):
18
+
13
19
  ```shell
14
- $ npm i @qualweb/core --save
20
+ $ npm i --save @qualweb/core @qualweb/act-rules
15
21
  ```
16
22
 
17
23
  ## How to run
18
24
 
19
- ```javascript
20
- 'use strict';
21
-
22
- const { QualWeb, generateEARLReport } = require('@qualweb/core');
23
-
24
- (async () => {
25
- const plugins = {
26
- // Check https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-adblocker
27
- adBlock: true, // Default value = false
28
- // Check https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth
29
- stealth: true // Default value = false
30
- };
31
- const qualweb = new QualWeb(plugins);
32
-
33
- const clusterOptions = {
34
- maxConcurrency: 5, // Performs several urls evaluations at the same time - the higher the number given, more resources will be used. Default value = 1
35
- timeout: 60 * 1000, // Timeout for loading page. Default value = 30 seconds
36
- monitor: true // Displays urls information on the terminal. Default value = false
37
- };
38
-
39
- const launchOptions = {
40
- ... // check https://github.com/puppeteer/puppeteer/blob/v10.1.0/docs/api.md#puppeteerlaunchoptions
41
- // In most cases there's no need to give additional options. Just leave the field undefined
42
- };
43
-
44
- // Starts the QualWeb core engine
45
- await qualweb.start(clusterOptions, launchOptions);
46
-
47
- // QualWeb evaluation report
48
- const qualwebOptions = {
49
- url: 'https://act-rules.github.io/pages/about/',
50
- ...
51
- };
52
-
53
- // Evaluates the given options - will only return after all urls have finished evaluating or resulted in an error
54
- const reports = await qualweb.evaluate(qualwebOptions);
55
-
56
- console.log(reports);
57
- // {
58
- // "url": "report",
59
- // "url2": "report2"
60
- // }
61
-
62
- // Stops the QualWeb core engine
63
- await qualweb.stop();
64
-
65
- const earlOptions = {
66
- // Check the options in the section below
67
- };
68
-
69
- // if you want an EARL report
70
- const earlReports = generateEARLReport(reports, earlOptions);
71
-
72
- console.log(earlReports);
73
- // {
74
- // "url": "earlReport",
75
- // "url2": "earlReport2"
76
- // }
77
- })();
78
- ```
25
+ ```typescript
26
+ import { QualWeb } from '@qualweb/core';
27
+ import { ACTRules } from '@qualweb/act-rules';
28
+
29
+ async function main() {
30
+ // First, initialize QualWeb. In this step, you can also enable the use of
31
+ // some Puppeteer plugins that may help in the evaluation process.
32
+ const qualweb = new QualWeb({
33
+ // Check https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-adblocker
34
+ adBlock: true, // Default value = false
35
+ // Check https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth
36
+ stealth: true // Default value = false
37
+ });
38
+
39
+ // Also create an instance of the evaluation module(s) you want to run.
40
+ const actRulesModule = new ACTRules({
41
+ // See @qualweb/act-rules for options.
42
+ });
43
+
44
+ // Then, start the QualWeb core proper. This starts puppeteer and makes core
45
+ // ready to run evaluations.
46
+
47
+ await qualweb.start(
48
+ {
49
+ // Concurrently runs more evaluations. Default = 1
50
+ maxConcurrency: 5,
51
+ // Timeout for reaching remote URLs. Default = 30 seconds.
52
+ timeout: 60 * 1000,
53
+ // Displays diagnost information in stdout/terminal. Default = false
54
+ monitor: true,
55
+ },
56
+ {
57
+ // Disable headless mode (i.e. show a browser window) for evaluations.
58
+ // By default, the browser window is not visible when running.
59
+ headless: false,
60
+ },
61
+ );
79
62
 
80
- ## Options
63
+ const urlToEvaluate = 'https://www.w3.org/WAI/standards-guidelines/act/rules/';
81
64
 
82
- The available options fot the **evaluate()** function are:
65
+ // QualWeb stores resulting reports in a POJO, keyed by the URL.
66
+ const reports = qualweb.evaluate({
67
+ url: urlToEvaluate,
68
+ // Set the modules to be run here. Each module will be run once for each URL
69
+ // that QualWeb visits. In this example, just `urlToEvaluate`.
70
+ modules: [
71
+ actRulesModule,
72
+ ],
73
+ });
83
74
 
84
- ```jsonc
85
- {
86
- "url": "https://act-rules.github.io/pages/about/", // url to evaluate
87
- "urls": ["https://act-rules.github.io/pages/about/", "https://act-rules.github.io/rules/"], // Array of urls
88
- "file": "/path/to/file/with/urls", // urls must be separated by a newline (\n)
89
- "crawl": "https://act-rules.github.io", // Domain to crawl and obtain the urls
90
- "html": "<html-code>", // Full webpage html, or just small snippets
91
- "log": {
92
- "file": true, // Logs errors to a file. Default value = false
93
- "console": false // Logs errors to the console. Default value = false
94
- },
95
- "viewport": {
96
- "mobile": false, // default value = false
97
- "landscape": true, // default value = viewPort.width > viewPort.height
98
- "userAgent": "custom user agent", // default value for desktop = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0', default value for mobile = 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; DROID2 GLOBAL Build/S273) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
99
- "resolution": {
100
- "width": 1920, // default value for desktop = 1366, default value for mobile = 1080
101
- "height": 1080 // default value for desktop = 768, default value for mobile = 1920
102
- }
103
- },
104
- "waitUntil": ["load", "networkidle0"], // Events to wait before starting evaluation, default value = "load". For more check https://github.com/puppeteer/puppeteer/blob/v10.1.0/docs/api.md#pagegotourl-options
105
- "validator": "http://127.0.0.1/validate", // HTML validator service endpoint. The url will be attached after of the given endpoint
106
- "crawlOptions": {
107
- "maxDepth": 2, // max depth to search, 0 to search only the given domain. Default value = -1 (search everything)
108
- "maxUrls": 100, // max urls to find. Default value = -1 (search everything)
109
- "timeout": 60, // how many seconds the domain should be crawled before it ends. Default value = -1 (never stops)
110
- "maxParallelCrawls": 10, // max urls to crawl at the same time. Default value = 5
111
- "logging": true // logs domain, current depth, urls found and time passed to the terminal
112
- },
113
- "translate": "en", // OR { "translate": "en", "fallback": "en" } OR { own translation object } check https://github.com/qualweb/locale#readme. Default = "en"
114
- "execute": {
115
- // choose which modules to execute
116
- "wappalyzer": false, // wappalyzer module (https://github.com/qualweb/wappalyzer) - default value = false
117
- "act": true, // act-rules module (https://github.com/qualweb/act-rules) - default value = true
118
- "wcag": true, // wcag-techniques module (https://github.com/qualweb/wcag-techniques) - default value = true
119
- "bp": false, // best-practices module (https://github.com/qualweb/best-practices) - default value = true
120
- "counter": false // counter module (https://github.com/qualweb/counter) - default value = false
121
- },
122
- "act-rules": {
123
- // More information about this options at https://github.com/qualweb/act-rules
124
- "rules": ["QW-ACT-R1", "b5c3f8"], // Array of rules to execute, can be passed the QualWeb Rule ID or the ACT Rule ID
125
- "exclude": ["QW-ACT-R1", "b5c3f8"], // Array of rules to exclude, can be passed the QualWeb Rule ID or the ACT Rule ID
126
- "levels": ["A", "AA", "AAA"], // Conformance levels to execute,
127
- "principles": ["Perceivable", "Operable", "Understandable", "Robust"] // Principles to execute
128
- },
129
- "wcag-techniques": {
130
- // More information about this options at https://github.com/qualweb/wcag-techniques
131
- "rules": ["QW-WCAG-T1", "H39"], // Array of techniques to execute, can be passed the QualWeb Technique ID or the WCAG 2.1 Technique Code
132
- "exclude": ["QW-WCAG-T1", "H39"], // Array of techniques to exclude, can be passed the QualWeb Technique ID or the WCAG 2.1 Technique Code
133
- "levels": ["A", "AA", "AAA"], // Conformance levels to execute,
134
- "principles": ["Perceivable", "Operable", "Understandable", "Robust"] // Principles to execute
135
- },
136
- "best-practices": {
137
- // More information about this options at https://github.com/qualweb/best-practices
138
- "bestPractices": ["QW-BP1", "QW-BP2"], // Array of best practices to execute
139
- "exclude": ["QW-BP1", "QW-BP2"] // Array of best practices to exclude
140
- }
75
+ const urlReport = reports[urlToEvaluate];
76
+
77
+ console.debug(urlReport.metadata);
78
+
79
+ // Remember to stop QualWeb once you're done. This closes the Puppeteer
80
+ // instance.
81
+ await qualweb.stop();
141
82
  }
142
83
  ```
143
84
 
144
- The available options fot the **generateEARLReport()** function are:
85
+ ### EARL reports
145
86
 
146
- ```jsonc
147
- {
148
- "aggregated": true, // default value = false
149
- "aggregatedName": "websites.json", // The name to save the aggregated earl reports. default value = first url of the list
150
- "modules": {
151
- // Choose which modules to convert the report to earl, by default all modules are converted if they were executed
152
- "act": true, // default value = true
153
- "wcag": false, // default value = true
154
- "best-practices": false // default value = true
155
- } // If the "modules" value is given, any missing module value missing it's automatically set to false
87
+ The package `@qualweb/earl-reporter` can convert a report from QualWeb's own
88
+ format to the [Evaluation And Reporting Language](https://www.w3.org/WAI/standards-guidelines/act/report/earl/) report format:
89
+
90
+ ```typescript
91
+ import { generateEARLReport } from '@qualweb/earl-reporter';
92
+
93
+ // Reports that were previously generated by QualWeb.evaluate()
94
+ const reports = { /** ... */ };
95
+
96
+ const earlReports = generateEARLReport(reports);
97
+
98
+ // EARL reports are also keyed by the evaluated URL.
99
+ ```
100
+
101
+ ### Plugins
102
+
103
+ QualWeb allows for middleware-style plugins to run at set times during evaluation. Use this if you need to set special values prior to loading a page or right before the evaluation itself runs, such as authorization cookies to access a page that requires login.
104
+
105
+ ```typescript
106
+ import { QualWeb } from '@qualweb/core';
107
+
108
+ async function main() {
109
+ const qw = new QualWeb();
110
+
111
+ let cookies: any = {};
112
+
113
+ qw.use({
114
+ beforePageLoad(page, url) {
115
+ // This code runs after a new Puppeteer page has been created but before
116
+ // it navigates to the target URL.
117
+ },
118
+ afterPageLoad(page, url) {
119
+ // This code is called right after a page has been loaded by Puppeteer
120
+ // but before QualWeb runs.
121
+
122
+ cookies = await page.cookies();
123
+ },
124
+ });
125
+
126
+ await qw.start();
127
+
128
+ const reports = await qw.evaluate({
129
+ url: 'https://www.google.com',
130
+ });
131
+
132
+ // reports will now contain the evaluation for google.com while cookies will
133
+ // contain any cookies that were stored as a result of navigating to the URL.
134
+
135
+ await qw.stop();
156
136
  }
157
137
  ```
158
138
 
139
+ The available options fot the **evaluate()** function are documented [here](src/lib/QualwebOptions.ts)
140
+
159
141
  ## Report details
160
142
 
161
- In this section it's explained the evaluation report in detail. For a detailed version of the EARL report check [@qualweb/earl-reporter](https://github.com/qualweb/earl-reporter#report-details).
143
+ In this section it's explained the evaluation report in detail. For a detailed version of the EARL report check [@qualweb/earl-reporter](https://github.com/qualweb/qualweb/tree/main/packages/earl-reporter).
162
144
 
163
145
  ```jsonc
164
146
  {
@@ -367,120 +349,6 @@ In this section it's explained the evaluation report in detail. For a detailed v
367
349
  }
368
350
  ```
369
351
 
370
- ## Implemented ACT Rules
371
-
372
- | QualWeb Rule ID | ACT Rule ID | ACT Rule Name |
373
- | --------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------- |
374
- | QW-ACT-R1 | [2779a5](https://act-rules.github.io/rules/2779a5) | HTML Page has a title |
375
- | QW-ACT-R2 | [b5c3f8](https://act-rules.github.io/rules/b5c3f8) | HTML has lang attribute |
376
- | QW-ACT-R3 | [5b7ae0](https://act-rules.github.io/rules/5b7ae0) | HTML lang and xml:lang match |
377
- | QW-ACT-R4 | [bc659a](https://act-rules.github.io/rules/bc659a) | Meta-refresh no delay |
378
- | QW-ACT-R5 | [bf051a](https://act-rules.github.io/rules/bf051a) | Validity of HTML Lang attribute |
379
- | QW-ACT-R6 | [59796f](https://act-rules.github.io/rules/59796f) | Image button has accessible name |
380
- | QW-ACT-R7 | [b33eff](https://act-rules.github.io/rules/b33eff) | Orientation of the page is not restricted using CSS transform property |
381
- | QW-ACT-R9 | [b20e66](https://act-rules.github.io/rules/b20e66) | Links with identical accessible names have equivalent purpose |
382
- | QW-ACT-R10 | [4b1c6c](https://act-rules.github.io/rules/4b1c6c) | `iframe` elements with identical accessible names have equivalent purpose |
383
- | QW-ACT-R11 | [97a4e1](https://act-rules.github.io/rules/97a4e1) | Button has accessible name |
384
- | QW-ACT-R12 | [c487ae](https://act-rules.github.io/rules/c487ae) | Link has accessible name |
385
- | QW-ACT-R13 | [6cfa84](https://act-rules.github.io/rules/6cfa84) | Element with `aria-hidden` has no focusable content |
386
- | QW-ACT-R14 | [b4f0c3](https://act-rules.github.io/rules/b4f0c3) | meta viewport does not prevent zoom |
387
- | QW-ACT-R15 | [80f0bf](https://act-rules.github.io/rules/80f0bf) | audio or video has no audio that plays automatically |
388
- | QW-ACT-R16 | [e086e5](https://act-rules.github.io/rules/e086e5) | Form control has accessible name |
389
- | QW-ACT-R17 | [23a2a8](https://act-rules.github.io/rules/23a2a8) | Image has accessible name |
390
- | QW-ACT-R18 | [3ea0c8](https://act-rules.github.io/rules/3ea0c8) | `id` attribute value is unique |
391
- | QW-ACT-R19 | [cae760](https://act-rules.github.io/rules/cae760) | iframe element has accessible name |
392
- | QW-ACT-R20 | [674b10](https://act-rules.github.io/rules/674b10) | role attribute has valid value |
393
- | QW-ACT-R21 | [7d6734](https://act-rules.github.io/rules/7d6734) | svg element with explicit role has accessible name |
394
- | QW-ACT-R22 | [de46e4](https://act-rules.github.io/rules/de46e4) | Element within body has valid lang attribute |
395
- | QW-ACT-R23 | [c5a4ea](https://act-rules.github.io/rules/c5a4ea) | video element visual content has accessible alternative |
396
- | QW-ACT-R24 | [73f2c2](https://act-rules.github.io/rules/73f2c2) | autocomplete attribute has valid value |
397
- | QW-ACT-R25 | [5c01ea](https://act-rules.github.io/rules/5c01ea) | ARIA state or property is permitted |
398
- | QW-ACT-R26 | [eac66b](https://act-rules.github.io/rules/eac66b) | video element auditory content has accessible alternative |
399
- | QW-ACT-R27 | [5f99a7](https://act-rules.github.io/rules/5f99a7) | This rule checks that each aria- attribute specified is defined in ARIA 1.1. |
400
- | QW-ACT-R28 | [4e8ab6](https://act-rules.github.io/rules/4e8ab6) | Element with role attribute has required states and properties |
401
- | QW-ACT-R29 | [e7aa44](https://act-rules.github.io/rules/e7aa44) | Audio element content has text alternative |
402
- | QW-ACT-R30 | [2ee8b8](https://act-rules.github.io/rules/2ee8b8) | Visible label is part of accessible name |
403
- | QW-ACT-R31 | [c3232f](https://act-rules.github.io/rules/c3232f) | Video element visual-only content has accessible alternative |
404
- | QW-ACT-R32 | [1ec09b](https://act-rules.github.io/rules/1ec09b) | video element visual content has strict accessible alternative |
405
- | QW-ACT-R33 | [ff89c9](https://act-rules.github.io/rules/ff89c9) | ARIA required context role |
406
- | QW-ACT-R34 | [6a7281](https://act-rules.github.io/rules/6a7281) | ARIA state or property has valid value |
407
- | QW-ACT-R35 | [ffd0e9](https://act-rules.github.io/rules/ffd0e9) | Heading has accessible name |
408
- | QW-ACT-R36 | [a25f45](https://act-rules.github.io/rules/a25f45) | Headers attribute specified on a cell refers to cells in the same table element |
409
- | QW-ACT-R37 | [afw4f7](https://act-rules.github.io/rules/afw4f7) | Text has minimum contrast |
410
- | QW-ACT-R38 | [bc4a75](https://act-rules.github.io/rules/bc4a75) | ARIA required owned elements |
411
- | QW-ACT-R39 | [d0f69e](https://act-rules.github.io/rules/d0f69e) | All table header cells have assigned data cells |
412
- | QW-ACT-R40 | [59br37](https://act-rules.github.io/rules/59br37) | Zoomed text node is not clipped with CSS overflow |
413
- | QW-ACT-R41 | [36b590](https://act-rules.github.io/rules/36b590) | Error message describes invalid form field value |
414
- | QW-ACT-R42 | [8fc3b6](https://act-rules.github.io/rules/8fc3b6) | Object element has non-empty accessible name |
415
- | QW-ACT-R43 | [0ssw9k](https://act-rules.github.io/rules/0ssw9k) | Scrollable element is keyboard accessible |
416
- | QW-ACT-R44 | [fd3a94](https://act-rules.github.io/rules/fd3a94) | Links with identical accessible names and context serve equivalent purpose |
417
- | QW-ACT-R48 | [46ca7f](https://act-rules.github.io/rules/46ca7f) | Element marked as decorative is not exposed |
418
- | QW-ACT-R49 | [aaa1bf](https://act-rules.github.io/rules/aaa1bf) | Audio or video that plays automatically has no audio that lasts more than 3 seconds |
419
- | QW-ACT-R50 | [4c31df](https://act-rules.github.io/rules/4c31df) | Audio or video that plays automatically has a control mechanism |
420
- | QW-ACT-R51 | [fd26cf](https://act-rules.github.io/rules/fd26cf) | video element visual-only content is media alternative for text |
421
- | QW-ACT-R52 | [ac7dc6](https://act-rules.github.io/rules/ac7dc6) | video element visual-only content has description track |
422
- | QW-ACT-R53 | [ee13b5](https://act-rules.github.io/rules/ee13b5) | video element visual-only content has transcript |
423
- | QW-ACT-R54 | [d7ba54](https://act-rules.github.io/rules/d7ba54) | video element visual-only content has audio track alternative |
424
- | QW-ACT-R55 | [1ea59c](https://act-rules.github.io/rules/1ea59c) | video element visual content has audio description |
425
- | QW-ACT-R56 | [ab4d13](https://act-rules.github.io/rules/ab4d13) | video element content is media alternative for text |
426
- | QW-ACT-R57 | [f196ce](https://act-rules.github.io/rules/f196ce) | video element visual content has description track |
427
- | QW-ACT-R58 | [2eb176](https://act-rules.github.io/rules/2eb176) | audio element content has transcript |
428
- | QW-ACT-R59 | [afb423](https://act-rules.github.io/rules/afb423) | audio element content is media alternative for text |
429
- | QW-ACT-R60 | [f51b46](https://act-rules.github.io/rules/f51b46) | video element auditory content has captions |
430
- | QW-ACT-R61 | [1a02b0](https://act-rules.github.io/rules/1a02b0) | video element visual content has transcript |
431
- | QW-ACT-R62 | [oj04fd](https://act-rules.github.io/rules/oj04fd) | Element in sequential focus order has visible focus |
432
- | QW-ACT-R63 | [b40fd1](https://act-rules.github.io/rules/b40fd1) | Document has a landmark with non-repeated content |
433
- | QW-ACT-R64 | [047fe0](https://act-rules.github.io/rules/047fe0) | Document has heading for non-repeated content |
434
- | QW-ACT-R65 | [307n5z](https://act-rules.github.io/rules/307n5z) | Element with presentational children has no focusable content |
435
- | QW-ACT-R66 | [m6b1q3](https://act-rules.github.io/rules/m6b1q3) | Menuitem has non-empty accessible name |
436
- | QW-ACT-R67 | [24afc2](https://act-rules.github.io/rules/24afc2) | Letter spacing in style attributes is not !important |
437
- | QW-ACT-R68 | [78fd32](https://act-rules.github.io/rules/78fd32) | Line height in style attributes is not !important |
438
- | QW-ACT-R69 | [9e45ec](https://act-rules.github.io/rules/9e45ec) | Word spacing in style attributes is not !important |
439
- | QW-ACT-R70 | [akn7bn](https://act-rules.github.io/rules/akn7bn) | frame with negative tabindex has no interactive elements |
440
- | QW-ACT-R71 | [bisz58](https://act-rules.github.io/rules/bisz58) | `meta` element has no refresh delay (no exception) |
441
- | QW-ACT-R72 | [8a213c](https://act-rules.github.io/rules/8a213c) | First focusable element is link to non-repeated content |
442
- | QW-ACT-R73 | [3e12e1](https://act-rules.github.io/rules/3e12e1) | Block of repeated content is collapsible |
443
- | QW-ACT-R74 | [ye5d6e](https://act-rules.github.io/rules/ye5d6e) | Document has an instrument to move focus to non-repeated content |
444
- | QW-ACT-R75 | [cf77f2](https://act-rules.github.io/rules/cf77f2) | Bypass Blocks of Repeated Content |
445
- | QW-ACT-R76 | [09o5cg](https://act-rules.github.io/rules/09o5cg) | Text has enhanced contrast |
446
-
447
- ## Implemented WCAG 2.1 Techniques
448
-
449
- | QualWeb Technique ID | WCAG Technique ID | WCAG Technique Name |
450
- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
451
- | QW-WCAG-T1 | [H24](https://www.w3.org/WAI/WCAG21/Techniques/html/H24) | Providing text alternatives for the area elements of image maps |
452
- | QW-WCAG-T2 | [H39](https://www.w3.org/WAI/WCAG21/Techniques/html/H39) | Using caption elements to associate data table captions with data tables |
453
- | QW-WCAG-T3 | [H71](https://www.w3.org/WAI/WCAG21/Techniques/html/H71) | Providing a description for groups of form controls using fieldset and legend elements |
454
- | QW-WCAG-T4 | [H73](https://www.w3.org/WAI/WCAG21/Techniques/html/H73) | Using the summary attribute of the table element to give an overview of data tables |
455
- | QW-WCAG-T5 | [H36](https://www.w3.org/WAI/WCAG21/Techniques/html/H36) | Using alt attributes on images used as submit buttons |
456
- | QW-WCAG-T6 | [SCR20](https://www.w3.org/WAI/WCAG21/Techniques/client-side-script/SCR20) | Using both keyboard and other device-specific functions |
457
- | QW-WCAG-T7 | [H28](https://www.w3.org/WAI/WCAG21/Techniques/html/H28) | Providing definitions for abbreviations by using the abbr element |
458
- | QW-WCAG-T8 | [F30](https://www.w3.org/WAI/WCAG21/Techniques/failures/F30) | Failure of Success Criterion 1.1.1 and 1.2.1 due to using text alternatives that are not alternatives |
459
- | QW-WCAG-T9 | [G141](https://www.w3.org/WAI/WCAG21/Techniques/general/G141) | Organizing a page using headings |
460
- | QW-WCAG-T10 | [H2](https://www.w3.org/WAI/WCAG21/Techniques/html/H2) | Combining adjacent image and text links for the same resource |
461
- | QW-WCAG-T11 | [H35](https://www.w3.org/WAI/WCAG21/Techniques/html/H35) | Providing text alternatives on applet elements |
462
- | QW-WCAG-T12 | [F46](https://www.w3.org/WAI/WCAG21/Techniques/failures/F46) | Failure of Success Criterion 1.3.1 due to using th elements, caption elements, or non-empty summary attributes in layout tables |
463
- | QW-WCAG-T13 | [F47](https://www.w3.org/WAI/WCAG21/Techniques/failures/F47) | Failure of Success Criterion 2.2.2 due to using the blink element |
464
- | QW-WCAG-T14 | [H43](https://www.w3.org/WAI/WCAG21/Techniques/html/H43) | Using id and headers attributes to associate data cells with header cells in data tables |
465
- | QW-WCAG-T15 | [H59](https://www.w3.org/WAI/WCAG21/Techniques/html/H59) | Using the link element and navigation tools |
466
- | QW-WCAG-T16 | [H88](https://www.w3.org/WAI/WCAG21/Techniques/html/H88) | Using HTML according to spec |
467
- | QW-WCAG-T17 | [G162](https://www.w3.org/WAI/WCAG21/Techniques/general/G162) | Positioning labels to maximize predictability of relationships |
468
- | QW-WCAG-T18 | [H51](https://www.w3.org/WAI/WCAG21/Techniques/html/H51) | Using table markup to present tabular information |
469
- | QW-WCAG-T19 | [H32](https://www.w3.org/WAI/WCAG21/Techniques/html/H32) | Providing submit buttons |
470
- | QW-WCAG-T20 | [H33](https://www.w3.org/WAI/WCAG21/Techniques/html/H33) | Supplementing link text with the title attribute |
471
- | QW-WCAG-T21 | [F89](https://www.w3.org/WAI/WCAG21/Techniques/failures/F89) | Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link |
472
- | QW-WCAG-T22 | [F52](https://www.w3.org/WAI/WCAG21/Techniques/failures/F52) | Failure of Success Criterion 3.2.1 and 3.2.5 due to opening a new window as soon as a new page is loaded |
473
- | QW-WCAG-T23 | [G1](https://www.w3.org/WAI/WCAG21/Techniques/general/G1) | Adding a link at the top of each page that goes directly to the main content area |
474
- | QW-WCAG-T24 | [F55](https://www.w3.org/WAI/WCAG21/Techniques/failures/F55) | Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received |
475
- | QW-WCAG-T25 | [H63](https://www.w3.org/WAI/WCAG21/Techniques/html/H63) | Using the scope attribute to associate header cells and data cells in data tables |
476
- | QW-WCAG-T26 | [F59](https://www.w3.org/WAI/WCAG21/Techniques/failures/F59) | Failure of Success Criterion 4.1.2 due to using script to make div or span a user interface control in HTML without providing a role for the control |
477
- | QW-WCAG-T27 | [F88](https://www.w3.org/WAI/WCAG21/Techniques/failures/F88) | Failure of Success Criterion 1.4.8 due to using text that is justified (aligned to both the left and the right margins) |
478
- | QW-WCAG-T28 | [C12](https://www.w3.org/WAI/WCAG21/Techniques/css/C12) [C13](https://www.w3.org/WAI/WCAG21/Techniques/css/C13) [C14](https://www.w3.org/WAI/WCAG21/Techniques/css/C14) | Using `percent, em, names` for font sizes |
479
- | QW-WCAG-T29 | [C19](https://www.w3.org/WAI/WCAG21/Techniques/css/C19) | Specifying alignment either to the left or right in CSS |
480
- | QW-WCAG-T30 | [F4](https://www.w3.org/WAI/WCAG21/Techniques/failures/F4) | Failure of Success Criterion 2.2.2 due to using text-decoration:blink without a mechanism to stop it in less than five seconds |
481
- | QW-WCAG-T31 | [F24](https://www.w3.org/WAI/WCAG21/Techniques/failures/F24) | Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa |
482
- | QW-WCAG-T32 | [H48](https://www.w3.org/WAI/WCAG21/Techniques/html/H48) | Using ol, ul and dl for lists or groups of links |
483
-
484
352
  # Evaluation problems
485
353
 
486
354
  Sometimes, some webpages fail to evaluate, or the evaluation may take a really long time. Before creating an issue check the **error.log** file and verify that:
@@ -489,7 +357,7 @@ Sometimes, some webpages fail to evaluate, or the evaluation may take a really l
489
357
  - The webpage exists;
490
358
  - If using https, that the certificate is valid;
491
359
  - If you really want to evaluate the page with an invalid certificate, add "--ignore-certificate-errors" to the `args` in qualweb puppeteer launch options.
492
- - The webpage is not password protected;
360
+ - The webpage is not password protected. Consider adding a small plugin to set authorization cookies as an option.
493
361
  - The webpage is an [HTML Document](https://dom.spec.whatwg.org/#concept-document).
494
362
 
495
363
  # License
package/dist/index.d.ts CHANGED
@@ -1,20 +1,6 @@
1
- /// <reference types="@qualweb/types" />
2
- import { LaunchOptions, BrowserLaunchArgumentOptions, BrowserConnectOptions, Viewport } from 'puppeteer';
3
- import { QualwebOptions, Evaluations, PuppeteerPlugins, ClusterOptions, LoadEvent } from '@qualweb/core';
4
- import { generateEARLReport } from '@qualweb/earl-reporter';
5
- import { CrawlOptions } from '@qualweb/crawler';
6
- import 'colors';
7
- declare class QualWeb {
8
- private cluster?;
9
- constructor(plugins?: PuppeteerPlugins);
10
- start(clusterOptions?: ClusterOptions, puppeteerOptions?: LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions): Promise<void>;
11
- stop(): Promise<void>;
12
- evaluate(options: QualwebOptions): Promise<Evaluations>;
13
- crawl(domain: string, options?: CrawlOptions, viewport?: Viewport, waitUntil?: LoadEvent | Array<LoadEvent>): Promise<Array<string>>;
14
- private checkUrls;
15
- private handleLocales;
16
- private verifyTranslationObject;
17
- }
18
- declare function getFileUrls(file: string): Promise<Array<string>>;
19
- export { QualWeb, generateEARLReport, getFileUrls };
1
+ export * from './qualweb';
2
+ export * from './lib/evaluation';
3
+ export * from './lib/i18n';
4
+ export { QualwebOptions, PuppeteerLifeCycleEvent } from './lib/QualwebOptions';
5
+ export { CounterReport } from './lib/evaluation/CounterReport';
20
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKzG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAW,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIzD,OAAO,QAAQ,CAAC;AAQhB,cAAM,OAAO;IAIX,OAAO,CAAC,OAAO,CAAC,CAAU;gBAOd,OAAO,CAAC,EAAE,gBAAgB;IAezB,KAAK,CAChB,cAAc,CAAC,EAAE,cAAc,EAC/B,gBAAgB,CAAC,EAAE,aAAa,GAAG,4BAA4B,GAAG,qBAAqB,GACtF,OAAO,CAAC,IAAI,CAAC;IAcH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAiFvD,KAAK,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,QAAQ,CAAC,EAAE,QAAQ,EACnB,SAAS,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,GACvC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAmBX,SAAS;IAqCvB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,uBAAuB;CAoBhC;AAQD,iBAAe,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAY/D;AA2DD,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC"}