govuk_publishing_components 21.22.0 → 21.22.1

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_button.scss +2 -1
  3. data/app/views/govuk_publishing_components/components/_character_count.html.erb +14 -13
  4. data/app/views/govuk_publishing_components/components/docs/character_count.yml +8 -0
  5. data/app/views/govuk_publishing_components/components/docs/govspeak.yml +17 -4
  6. data/lib/govuk_publishing_components/version.rb +1 -1
  7. data/node_modules/axe-core/CHANGELOG.md +37 -0
  8. data/node_modules/axe-core/README.md +2 -2
  9. data/node_modules/axe-core/axe.d.ts +1 -1
  10. data/node_modules/axe-core/axe.js +2430 -2242
  11. data/node_modules/axe-core/axe.min.js +3 -3
  12. data/node_modules/axe-core/bower.json +1 -1
  13. data/node_modules/axe-core/doc/API.md +10 -0
  14. data/node_modules/axe-core/doc/check-message-template.md +124 -0
  15. data/node_modules/axe-core/doc/examples/jasmine/package-lock.json +1489 -0
  16. data/node_modules/axe-core/doc/examples/jest_react/package-lock.json +7525 -0
  17. data/node_modules/axe-core/doc/examples/mocha/package-lock.json +1671 -0
  18. data/node_modules/axe-core/doc/examples/phantomjs/package-lock.json +862 -0
  19. data/node_modules/axe-core/doc/examples/qunit/package-lock.json +2951 -0
  20. data/node_modules/axe-core/doc/rule-descriptions.md +2 -2
  21. data/node_modules/axe-core/lib/checks/aria/allowed-attr.json +4 -1
  22. data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.json +8 -2
  23. data/node_modules/axe-core/lib/checks/aria/errormessage.json +4 -1
  24. data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.json +1 -0
  25. data/node_modules/axe-core/lib/checks/aria/no-implicit-explicit-label.json +1 -1
  26. data/node_modules/axe-core/lib/checks/aria/required-attr.json +4 -1
  27. data/node_modules/axe-core/lib/checks/aria/required-children.json +8 -2
  28. data/node_modules/axe-core/lib/checks/aria/required-parent.json +4 -1
  29. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.json +1 -1
  30. data/node_modules/axe-core/lib/checks/aria/unsupportedrole.json +1 -1
  31. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.json +8 -2
  32. data/node_modules/axe-core/lib/checks/aria/valid-attr.json +5 -2
  33. data/node_modules/axe-core/lib/checks/color/color-contrast.js +1 -1
  34. data/node_modules/axe-core/lib/checks/color/color-contrast.json +4 -4
  35. data/node_modules/axe-core/lib/checks/color/link-in-text-block.js +2 -2
  36. data/node_modules/axe-core/lib/checks/color/link-in-text-block.json +2 -2
  37. data/node_modules/axe-core/lib/checks/forms/fieldset.js +1 -1
  38. data/node_modules/axe-core/lib/checks/forms/fieldset.json +8 -1
  39. data/node_modules/axe-core/lib/checks/forms/group-labelledby.js +2 -2
  40. data/node_modules/axe-core/lib/checks/forms/group-labelledby.json +6 -2
  41. data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.json +2 -2
  42. data/node_modules/axe-core/lib/checks/lists/listitem.js +3 -1
  43. data/node_modules/axe-core/lib/checks/lists/listitem.json +4 -1
  44. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.js +216 -99
  45. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.json +3 -0
  46. data/node_modules/axe-core/lib/checks/mobile/meta-viewport.json +1 -1
  47. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-active.json +1 -1
  48. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-aria.json +1 -1
  49. data/node_modules/axe-core/lib/checks/shared/aria-label.js +1 -1
  50. data/node_modules/axe-core/lib/checks/shared/avoid-inline-spacing.json +4 -1
  51. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.js +5 -1
  52. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.json +4 -1
  53. data/node_modules/axe-core/lib/checks/tables/has-caption.json +1 -0
  54. data/node_modules/axe-core/lib/checks/tables/has-summary.json +1 -0
  55. data/node_modules/axe-core/lib/checks/tables/has-th.json +1 -0
  56. data/node_modules/axe-core/lib/commons/aria/arialabel-text.js +7 -4
  57. data/node_modules/axe-core/lib/commons/aria/get-element-unallowed-roles.js +21 -0
  58. data/node_modules/axe-core/lib/commons/dom/get-element-stack.js +465 -0
  59. data/node_modules/axe-core/lib/commons/dom/shadow-elements-from-point.js +2 -1
  60. data/node_modules/axe-core/lib/core/base/audit.js +39 -17
  61. data/node_modules/axe-core/lib/core/base/virtual-node/serial-virtual-node.js +2 -0
  62. data/node_modules/axe-core/lib/core/base/virtual-node/virtual-node.js +43 -0
  63. data/node_modules/axe-core/lib/core/reporters/helpers/incomplete-fallback-msg.js +3 -1
  64. data/node_modules/axe-core/lib/core/utils/parse-crossorigin-stylesheet.js +1 -0
  65. data/node_modules/axe-core/lib/core/utils/preload-cssom.js +4 -3
  66. data/node_modules/axe-core/lib/core/utils/process-message.js +72 -0
  67. data/node_modules/axe-core/lib/core/utils/publish-metadata.js +20 -7
  68. data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback.json +2 -1
  69. data/node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js +1 -1
  70. data/node_modules/axe-core/lib/rules/layout-table.json +2 -1
  71. data/node_modules/axe-core/locales/ja.json +1 -1
  72. data/node_modules/axe-core/package.json +16 -16
  73. data/node_modules/axe-core/sri-history.json +4 -0
  74. data/node_modules/axe-core/typings/axe-core/axe-core-tests.js +151 -0
  75. data/node_modules/axe-core/typings/axe-core/axe-core-tests.ts +18 -0
  76. metadata +11 -2
@@ -14,7 +14,8 @@ dom.shadowElementsFromPoint = function(nodeX, nodeY, root = document, i = 0) {
14
14
  throw new Error('Infinite loop detected');
15
15
  }
16
16
  return (
17
- Array.from(root.elementsFromPoint(nodeX, nodeY))
17
+ // IE can return null when there are no elements
18
+ Array.from(root.elementsFromPoint(nodeX, nodeY) || [])
18
19
  // As of Chrome 66, elementFromPoint will return elements from parent trees.
19
20
  // We only want to touch each tree once, so we're filtering out nodes on other trees.
20
21
  .filter(nodes => dom.getRootNode(nodes) === root)
@@ -1,4 +1,6 @@
1
1
  /*global Rule, Check, RuleResult, commons: true */
2
+ const dotRegex = /\{\{.+?\}\}/g;
3
+
2
4
  /*eslint no-unused-vars: 0*/
3
5
  function getDefaultConfiguration(audit) {
4
6
  'use strict';
@@ -146,10 +148,10 @@ const mergeCheckLocale = (a, b) => {
146
148
  let { pass, fail } = b;
147
149
  // If the message(s) are Strings, they have not yet been run
148
150
  // thru doT (which will return a Function).
149
- if (typeof pass === 'string') {
151
+ if (typeof pass === 'string' && dotRegex.test(pass)) {
150
152
  pass = axe.imports.doT.compile(pass);
151
153
  }
152
- if (typeof fail === 'string') {
154
+ if (typeof fail === 'string' && dotRegex.test(fail)) {
153
155
  fail = axe.imports.doT.compile(fail);
154
156
  }
155
157
  return {
@@ -177,10 +179,10 @@ const mergeRuleLocale = (a, b) => {
177
179
  let { help, description } = b;
178
180
  // If the message(s) are Strings, they have not yet been run
179
181
  // thru doT (which will return a Function).
180
- if (typeof help === 'string') {
182
+ if (typeof help === 'string' && dotRegex.test(help)) {
181
183
  help = axe.imports.doT.compile(help);
182
184
  }
183
- if (typeof description === 'string') {
185
+ if (typeof description === 'string' && dotRegex.test(description)) {
184
186
  description = axe.imports.doT.compile(description);
185
187
  }
186
188
  return {
@@ -198,7 +200,7 @@ const mergeFailureMessage = (a, b) => {
198
200
  let { failureMessage } = b;
199
201
  // If the message(s) are Strings, they have not yet been run
200
202
  // thru doT (which will return a Function).
201
- if (typeof failureMessage === 'string') {
203
+ if (typeof failureMessage === 'string' && dotRegex.test(failureMessage)) {
202
204
  failureMessage = axe.imports.doT.compile(failureMessage);
203
205
  }
204
206
  return {
@@ -212,7 +214,7 @@ const mergeFailureMessage = (a, b) => {
212
214
  */
213
215
 
214
216
  const mergeFallbackMessage = (a, b) => {
215
- if (typeof b === 'string') {
217
+ if (typeof b === 'string' && dotRegex.test(b)) {
216
218
  b = axe.imports.doT.compile(b);
217
219
  }
218
220
  return b || a;
@@ -630,13 +632,37 @@ Audit.prototype.normalizeOptions = function(options) {
630
632
  'use strict';
631
633
  var audit = this;
632
634
 
635
+ const tags = [];
636
+ const ruleIds = [];
637
+ audit.rules.forEach(rule => {
638
+ ruleIds.push(rule.id);
639
+ rule.tags.forEach(tag => {
640
+ if (!tags.includes(tag)) {
641
+ tags.push(tag);
642
+ }
643
+ });
644
+ });
645
+
633
646
  // Validate runOnly
634
647
  if (typeof options.runOnly === 'object') {
635
648
  if (Array.isArray(options.runOnly)) {
636
- options.runOnly = {
637
- type: 'tag',
638
- values: options.runOnly
639
- };
649
+ const hasTag = options.runOnly.find(value => tags.includes(value));
650
+ const hasRule = options.runOnly.find(value => ruleIds.includes(value));
651
+
652
+ if (hasTag && hasRule) {
653
+ throw new Error('runOnly cannot be both rules and tags');
654
+ }
655
+ if (hasRule) {
656
+ options.runOnly = {
657
+ type: 'rule',
658
+ values: options.runOnly
659
+ };
660
+ } else {
661
+ options.runOnly = {
662
+ type: 'tag',
663
+ values: options.runOnly
664
+ };
665
+ }
640
666
  }
641
667
  const only = options.runOnly;
642
668
  if (only.value && !only.values) {
@@ -652,7 +678,7 @@ Audit.prototype.normalizeOptions = function(options) {
652
678
  if (['rule', 'rules'].includes(only.type)) {
653
679
  only.type = 'rule';
654
680
  only.values.forEach(function(ruleId) {
655
- if (!audit.getRule(ruleId)) {
681
+ if (!ruleIds.includes(ruleId)) {
656
682
  throw new Error('unknown rule `' + ruleId + '` in options.runOnly');
657
683
  }
658
684
  });
@@ -660,11 +686,7 @@ Audit.prototype.normalizeOptions = function(options) {
660
686
  // Validate 'tags' (e.g. anything not 'rule')
661
687
  } else if (['tag', 'tags', undefined].includes(only.type)) {
662
688
  only.type = 'tag';
663
- const unmatchedTags = audit.rules.reduce((unmatchedTags, rule) => {
664
- return unmatchedTags.length
665
- ? unmatchedTags.filter(tag => !rule.tags.includes(tag))
666
- : unmatchedTags;
667
- }, only.values);
689
+ const unmatchedTags = only.values.filter(tag => !tags.includes(tag));
668
690
 
669
691
  if (unmatchedTags.length !== 0) {
670
692
  axe.log('Could not find tags `' + unmatchedTags.join('`, `') + '`');
@@ -676,7 +698,7 @@ Audit.prototype.normalizeOptions = function(options) {
676
698
 
677
699
  if (typeof options.rules === 'object') {
678
700
  Object.keys(options.rules).forEach(function(ruleId) {
679
- if (!audit.getRule(ruleId)) {
701
+ if (!ruleIds.includes(ruleId)) {
680
702
  throw new Error('unknown rule `' + ruleId + '` in options.rules');
681
703
  }
682
704
  });
@@ -84,3 +84,5 @@ function normaliseAttrs({ attributes = {} }) {
84
84
  return attrs;
85
85
  }, {});
86
86
  }
87
+
88
+ axe.SerialVirtualNode = SerialVirtualNode;
@@ -61,6 +61,23 @@ class VirtualNode extends axe.AbstractVirtualNode {
61
61
  return this.actualNode.hasAttribute(attrName);
62
62
  }
63
63
 
64
+ /**
65
+ * Return a property of the computed style for this element and cache the result. This is much faster than called `getPropteryValue` every time.
66
+ * @see https://jsperf.com/get-property-value
67
+ * @return {String}
68
+ */
69
+ getComputedStylePropertyValue(property) {
70
+ const key = 'computedStyle_' + property;
71
+ if (!this._cache.hasOwnProperty(key)) {
72
+ if (!this._cache.hasOwnProperty('computedStyle')) {
73
+ this._cache.computedStyle = window.getComputedStyle(this.actualNode);
74
+ }
75
+
76
+ this._cache[key] = this._cache.computedStyle.getPropertyValue(property);
77
+ }
78
+ return this._cache[key];
79
+ }
80
+
64
81
  /**
65
82
  * Determine if the element is focusable and cache the result.
66
83
  * @return {Boolean} True if the element is focusable, false otherwise.
@@ -82,4 +99,30 @@ class VirtualNode extends axe.AbstractVirtualNode {
82
99
  }
83
100
  return this._cache.tabbableElements;
84
101
  }
102
+
103
+ /**
104
+ * Return the client rects for this element and cache the result.
105
+ * @return {DOMRect[]}
106
+ */
107
+ get clientRects() {
108
+ if (!this._cache.hasOwnProperty('clientRects')) {
109
+ this._cache.clientRects = Array.from(
110
+ this.actualNode.getClientRects()
111
+ ).filter(rect => rect.width > 0);
112
+ }
113
+ return this._cache.clientRects;
114
+ }
115
+
116
+ /**
117
+ * Return the bounding rect for this element and cache the result.
118
+ * @return {DOMRect}
119
+ */
120
+ get boundingClientRect() {
121
+ if (!this._cache.hasOwnProperty('boundingClientRect')) {
122
+ this._cache.boundingClientRect = this.actualNode.getBoundingClientRect();
123
+ }
124
+ return this._cache.boundingClientRect;
125
+ }
85
126
  }
127
+
128
+ axe.VirtualNode = VirtualNode;
@@ -7,5 +7,7 @@
7
7
  */
8
8
  helpers.incompleteFallbackMessage = function incompleteFallbackMessage() {
9
9
  'use strict';
10
- return axe._audit.data.incompleteFallbackMessage();
10
+ return typeof axe._audit.data.incompleteFallbackMessage === 'function'
11
+ ? axe._audit.data.incompleteFallbackMessage()
12
+ : axe._audit.data.incompleteFallbackMessage;
11
13
  };
@@ -19,6 +19,7 @@ axe.utils.parseCrossOriginStylesheet = function parseCrossOriginStylesheet(
19
19
  ) {
20
20
  const axiosOptions = {
21
21
  method: 'get',
22
+ timeout: axe.constants.preload.timeout,
22
23
  url
23
24
  };
24
25
 
@@ -33,9 +33,10 @@ axe.utils.preloadCssom = function preloadCssom({ treeRoot = axe._tree[0] }) {
33
33
 
34
34
  const convertDataToStylesheet = axe.utils.getStyleSheetFactory(dynamicDoc);
35
35
 
36
- return getCssomForAllRootNodes(rootNodes, convertDataToStylesheet).then(
37
- assets => flattenAssets(assets)
38
- );
36
+ return getCssomForAllRootNodes(
37
+ rootNodes,
38
+ convertDataToStylesheet
39
+ ).then(assets => flattenAssets(assets));
39
40
  };
40
41
 
41
42
  /**
@@ -0,0 +1,72 @@
1
+ /* global helpers */
2
+ const dataRegex = /\$\{\s?data\s?\}/g;
3
+
4
+ /**
5
+ * Replace a placeholder with the value of a data string or object
6
+ * @param {String} str
7
+ * @param {String|Object} data
8
+ */
9
+ function substitute(str, data) {
10
+ // replace all instances of ${ data } with the value of the string
11
+ if (typeof data === 'string') {
12
+ return str.replace(dataRegex, data);
13
+ }
14
+
15
+ // replace all instances of ${ data[prop] } with the value of the property
16
+ for (const prop in data) {
17
+ if (data.hasOwnProperty(prop)) {
18
+ const regex = new RegExp('\\${\\s?data\\.' + prop + '\\s?}', 'g');
19
+ str = str.replace(regex, data[prop]);
20
+ }
21
+ }
22
+
23
+ return str;
24
+ }
25
+
26
+ /**
27
+ * Process a metadata message.
28
+ * @param {String|Object} message
29
+ * @param {Object} data
30
+ * @return {String}
31
+ */
32
+ axe.utils.processMessage = function processMessage(message, data) {
33
+ if (!message) {
34
+ return;
35
+ }
36
+
37
+ // data as array
38
+ if (Array.isArray(data)) {
39
+ data.values = data.join(', ');
40
+
41
+ if (
42
+ typeof message.singular === 'string' &&
43
+ typeof message.plural === 'string'
44
+ ) {
45
+ const str = data.length === 1 ? message.singular : message.plural;
46
+ return substitute(str, data);
47
+ }
48
+
49
+ // no singular/plural message so just pass data
50
+ return substitute(message, data);
51
+ }
52
+
53
+ // message is a string that uses data as a string or object properties
54
+ if (typeof message === 'string') {
55
+ return substitute(message, data);
56
+ }
57
+
58
+ // message is an object that uses value of data to determine message
59
+ if (typeof data === 'string') {
60
+ const str = message[data];
61
+ return substitute(str, data);
62
+ }
63
+
64
+ // message uses value of data property to determine message
65
+ let str = message.default || helpers.incompleteFallbackMessage();
66
+
67
+ if (data && data.messageKey && message[data.messageKey]) {
68
+ str = message[data.messageKey];
69
+ }
70
+
71
+ return processMessage(str, data);
72
+ };
@@ -1,4 +1,4 @@
1
- /*global helpers */
1
+ /* global helpers */
2
2
  /**
3
3
  * Construct incomplete message from check.data
4
4
  * @param {Object} checkData Check result with reason specified
@@ -30,10 +30,13 @@ function getIncompleteReason(checkData, messages) {
30
30
  return getDefaultMsg(messages);
31
31
  }
32
32
  }
33
+ } else if (checkData && checkData.messageKey) {
34
+ return messages.incomplete[checkData.messageKey];
33
35
  } else {
34
36
  return getDefaultMsg(messages);
35
37
  }
36
38
  }
39
+
37
40
  /**
38
41
  * Extend checksData with the correct result message
39
42
  * @param {Object} checksData The check result data
@@ -49,18 +52,28 @@ function extender(checksData, shouldBeTrue) {
49
52
  var data = Object.assign({}, sourceData);
50
53
  delete data.messages;
51
54
  if (check.result === undefined) {
52
- if (typeof messages.incomplete === 'object') {
53
- data.message = function() {
54
- return getIncompleteReason(check.data, messages);
55
- };
56
- } else {
57
- // fall back to string function
55
+ // handle old doT template
56
+ if (
57
+ typeof messages.incomplete === 'object' &&
58
+ !Array.isArray(check.data)
59
+ ) {
60
+ data.message = getIncompleteReason(check.data, messages);
61
+ }
62
+
63
+ // fallback to new process message style
64
+ if (!data.message) {
58
65
  data.message = messages.incomplete;
59
66
  }
60
67
  } else {
61
68
  data.message =
62
69
  check.result === shouldBeTrue ? messages.pass : messages.fail;
63
70
  }
71
+
72
+ // don't process doT template functions
73
+ if (typeof data.message !== 'function') {
74
+ data.message = axe.utils.processMessage(data.message, check.data);
75
+ }
76
+
64
77
  axe.utils.extendMetaData(check, data);
65
78
  };
66
79
  }
@@ -2,11 +2,12 @@
2
2
  "id": "aria-dpub-role-fallback",
3
3
  "selector": "[role]",
4
4
  "matches": "aria-dpub-role-fallback-matches.js",
5
- "tags": ["cat.aria", "wcag2a", "wcag131"],
5
+ "tags": ["cat.aria", "wcag2a", "wcag131", "deprecated"],
6
6
  "metadata": {
7
7
  "description": "Ensures unsupported DPUB roles are only used on elements with implicit fallback roles",
8
8
  "help": "Unsupported DPUB ARIA roles should be used on elements with implicit fallback roles"
9
9
  },
10
+ "enabled": false,
10
11
  "all": ["implicit-role-fallback"],
11
12
  "any": [],
12
13
  "none": []
@@ -26,7 +26,7 @@ if (!rolesWithNameFromContents.includes(role)) {
26
26
  * if no `aria-label` or `aria-labelledby` attribute - ignore `node`
27
27
  */
28
28
  if (
29
- !text.sanitize(aria.arialabelText(node)) &&
29
+ !text.sanitize(aria.arialabelText(virtualNode)) &&
30
30
  !text.sanitize(aria.arialabelledbyText(node))
31
31
  ) {
32
32
  return false;
@@ -2,11 +2,12 @@
2
2
  "id": "layout-table",
3
3
  "selector": "table",
4
4
  "matches": "layout-table-matches.js",
5
- "tags": ["cat.semantics", "wcag2a", "wcag131"],
5
+ "tags": ["cat.semantics", "wcag2a", "wcag131", "deprecated"],
6
6
  "metadata": {
7
7
  "description": "Ensures presentational <table> elements do not use <th>, <caption> elements or the summary attribute",
8
8
  "help": "Layout tables must not use data table elements"
9
9
  },
10
+ "enabled": false,
10
11
  "all": [],
11
12
  "any": [],
12
13
  "none": ["has-th", "has-caption", "has-summary"]
@@ -685,7 +685,7 @@
685
685
  },
686
686
  "exists": {
687
687
  "pass": "要素は存在していません",
688
- "fail": "要素が存在しています"
688
+ "incomplete": "要素が存在しています"
689
689
  },
690
690
  "has-alt": {
691
691
  "pass": "要素にalt属性が存在しています",
@@ -15,19 +15,19 @@
15
15
  ],
16
16
  "_from": "axe-core@>=3.4.1 <4.0.0",
17
17
  "_hasShrinkwrap": false,
18
- "_id": "axe-core@3.4.1",
18
+ "_id": "axe-core@3.4.2",
19
19
  "_inCache": true,
20
20
  "_location": "/axe-core",
21
- "_nodeVersion": "10.17.0",
21
+ "_nodeVersion": "10.14.0",
22
22
  "_npmOperationalInternal": {
23
23
  "host": "s3://npm-registry-packages",
24
- "tmp": "tmp/axe-core_3.4.1_1576688221301_0.6001479670462013"
24
+ "tmp": "tmp/axe-core_3.4.2_1581014982110_0.3250163683829628"
25
25
  },
26
26
  "_npmUser": {
27
- "name": "npmdeque",
28
- "email": "axe@deque.com"
27
+ "name": "wilcofiers",
28
+ "email": "wilcofiers@gmail.com"
29
29
  },
30
- "_npmVersion": "6.11.3",
30
+ "_npmVersion": "6.13.4",
31
31
  "_phantomChildren": {},
32
32
  "_requested": {
33
33
  "raw": "axe-core@^3.4.1",
@@ -41,8 +41,8 @@
41
41
  "_requiredBy": [
42
42
  "/"
43
43
  ],
44
- "_resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.4.1.tgz",
45
- "_shasum": "e42623918bb85b5ef674633852cb9029db0309c5",
44
+ "_resolved": "https://registry.npmjs.org/axe-core/-/axe-core-3.4.2.tgz",
45
+ "_shasum": "d51d2fcb401685e8b49a1dd94212da0759fd7ca0",
46
46
  "_shrinkwrap": null,
47
47
  "_spec": "axe-core@^3.4.1",
48
48
  "_where": "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ",
@@ -131,17 +131,17 @@
131
131
  },
132
132
  "directories": {},
133
133
  "dist": {
134
- "integrity": "sha512-+EhIdwR0hF6aeMx46gFDUy6qyCfsL0DmBrV3Z+LxYbsOd8e1zBaPHa3f9Rbjsz2dEwSBkLw6TwML/CAIIAqRpw==",
135
- "shasum": "e42623918bb85b5ef674633852cb9029db0309c5",
136
- "tarball": "https://registry.npmjs.org/axe-core/-/axe-core-3.4.1.tgz",
137
- "fileCount": 567,
138
- "unpackedSize": 2431945,
139
- "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+lpdCRA9TVsSAnZWagAA+ugP/ROcxO85rr1hyKC17dMd\n4MohjiY3yMX+eMb/mAEHdgFcY0GIADGnxg2+qVluujKF9sAud+6Mhvqm5m3C\nyN1HL5ei2ikKIIBdGrVmBjIwg32j7Y26gjDT74neFESeWj8J97eL0auX2XJY\nw+PieGcuyXYZd/e7Nm8pXrLw3BoYDKdCTwZ1r/N3oo2NdmUtW2Ak/GNRZ/YJ\n2/2iCI305ME8Q1aygDdXxAmfSTExdWggzKJzBtui84TB+KzIlNx2NT9y08Xl\nKnxiCbcoo/E2JhqLNbvrIlR6E4dTlZhEzgFsPM9mEYXDUrsGMVMumr37LWN3\n1UO7qafVjiuLV+9BuNx5qMPWDgHrcEeoAtUoVhsjGxaxJHMZDVLs498QWcsy\n4r0gtxbNW94UpPtSp9pPbZiE0X4E1AIP/xh6KZX7LYdOVHc+k8bGUpft4sIo\nitHSLLz/7Lb+JktAUP+OdraYmHpI8tW902j4EV/yyJFl32DYdMdQpaGu2rH4\nQRPCow1YVQdqoha0gcKDU9tF71TYsfv2ZicweIEJmWUrlFHDmnnUrlLojeSp\nwgx0KzQUXt3WZatH4d40GdjGdLCZGTdRXbWpeTjZ/grIfXqA+vMyd/rfql5d\nvp5U3zH9YPmosgk54WnsJ+lFUDySB9eQ0vtSyWf0E+kSGi/NjYZ18ojoA425\npdma\r\n=SxSY\r\n-----END PGP SIGNATURE-----\r\n"
134
+ "integrity": "sha512-aPpM84KPiRfeaK3LhA9ag4OmjLUZkNKMH0sZuK+YRBS+QJcegjveidCyvWSBlBr/iIMQdn/1hU00e3YBiuTEdw==",
135
+ "shasum": "d51d2fcb401685e8b49a1dd94212da0759fd7ca0",
136
+ "tarball": "https://registry.npmjs.org/axe-core/-/axe-core-3.4.2.tgz",
137
+ "fileCount": 576,
138
+ "unpackedSize": 2929556,
139
+ "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePF/GCRA9TVsSAnZWagAAbeEP/i0WNObH5qoxRV+5z1I5\nSWIaIj60P7FFPEyp39VQrmQM4uhCfb74+73yPOuTQF8PA/kicQ12Sb5IeDgb\nxpG1VBhC73YLa7/ab4WF5SrebQNPmejg+C2VLnxnctWz4irJVyap2qvIXGj1\nca+GdmvTz+gOqflv3eFjl5ByPGk5NOAbbIUL8WMu8dT4V/6MrHbHHeuNpRMO\nASDUxikTGbXGZspf8kezWmDr0n5VoikjkAefUINs2E3ZGDx5Of82a+8CGPTg\nhmjTGEPDpo9JYJweGNqDCgBTZgFWDht0T5PEj7/+w6GCd/ePAsDh5jD/5w3E\nn2mgY4zsiYNM/1gdU4LD3gD45h6MqtEETcY9OeDiKEWH17xv/3v05Z1fESek\nv+6sloZ8EExg/o5zsvhvWQNtmPtD37j/1hRhMYJFgp2oQskGfLBJUHSOnpxN\n+vbPtZDrp2+U4eBrX2dPgDIQABuOvWJ4gaTmNVwoSiV4ID/IOfBdE117nEAY\nVNR+rgpXnpt2AKaIQvTsHjFRrjiVoTXkQslMMGXjkOlD1fn3kMClW75yLy4I\nN/z/ErjWpmZ48vcT0u90LIgXLiJjcLsTG2rfNRnZe7H8Pjim85nRjXxze9gO\nUO+IGxMJ22VlGcCdBH1c5wO4PjO4LX7Au0aVaixq3xSaZrkIDE9bYO4i/dxr\nwgR6\r\n=Dtk7\r\n-----END PGP SIGNATURE-----\r\n"
140
140
  },
141
141
  "engines": {
142
142
  "node": ">=4"
143
143
  },
144
- "gitHead": "9e76417d8d46c3c80d4c085ec03f32074ee5b50b",
144
+ "gitHead": "467df229adab25b2c8ca4df92a23ea9a9c3459c8",
145
145
  "homepage": "https://github.com/dequelabs/axe-core#readme",
146
146
  "keywords": [
147
147
  "Accessibility",
@@ -215,5 +215,5 @@
215
215
  }
216
216
  },
217
217
  "typings": "axe.d.ts",
218
- "version": "3.4.1"
218
+ "version": "3.4.2"
219
219
  }