@axe-core/watcher 3.11.1 → 3.12.0-next.121bbe5f

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 (111) hide show
  1. package/dist/Controller.d.ts +9 -1
  2. package/dist/Controller.js +24 -10
  3. package/dist/Controller.js.map +1 -1
  4. package/dist/createDebugger.d.ts +9 -0
  5. package/dist/createDebugger.js +27 -0
  6. package/dist/createDebugger.js.map +1 -0
  7. package/dist/cypress.d.ts +1 -1
  8. package/dist/cypress.js +27 -7
  9. package/dist/cypress.js.map +1 -1
  10. package/dist/cypressCommands.d.ts +3 -1
  11. package/dist/cypressCommands.js +78 -39
  12. package/dist/cypressCommands.js.map +1 -1
  13. package/dist/git.d.ts +2 -1
  14. package/dist/git.js +5 -4
  15. package/dist/git.js.map +1 -1
  16. package/dist/playwright.d.ts +1 -1
  17. package/dist/playwright.js +9 -7
  18. package/dist/playwright.js.map +1 -1
  19. package/dist/playwrightTest.js +8 -4
  20. package/dist/playwrightTest.js.map +1 -1
  21. package/dist/playwrightWrapping.d.ts +1 -1
  22. package/dist/playwrightWrapping.js +41 -41
  23. package/dist/playwrightWrapping.js.map +1 -1
  24. package/dist/puppeteer.d.ts +1 -1
  25. package/dist/puppeteer.js +10 -8
  26. package/dist/puppeteer.js.map +1 -1
  27. package/dist/puppeteerWrapping.d.ts +3 -2
  28. package/dist/puppeteerWrapping.js +100 -42
  29. package/dist/puppeteerWrapping.js.map +1 -1
  30. package/dist/sendResultsToServer.d.ts +9 -2
  31. package/dist/sendResultsToServer.js +25 -43
  32. package/dist/sendResultsToServer.js.map +1 -1
  33. package/dist/utils/constants.d.ts +4 -0
  34. package/dist/utils/constants.js +16 -0
  35. package/dist/utils/constants.js.map +1 -0
  36. package/dist/utils/headlessNotSupportedError.d.ts +5 -0
  37. package/dist/utils/headlessNotSupportedError.js +17 -0
  38. package/dist/utils/headlessNotSupportedError.js.map +1 -0
  39. package/dist/utils/headlessNotSupportedError.test.d.ts +1 -0
  40. package/dist/utils/headlessNotSupportedError.test.js +21 -0
  41. package/dist/utils/headlessNotSupportedError.test.js.map +1 -0
  42. package/dist/utils/isValidExcludePattern.d.ts +2 -0
  43. package/dist/utils/isValidExcludePattern.js +10 -0
  44. package/dist/utils/isValidExcludePattern.js.map +1 -0
  45. package/dist/utils/isValidExcludePattern.test.d.ts +1 -0
  46. package/dist/utils/isValidExcludePattern.test.js +17 -0
  47. package/dist/utils/isValidExcludePattern.test.js.map +1 -0
  48. package/dist/utils/mergeChromeArgs.d.ts +12 -0
  49. package/dist/utils/mergeChromeArgs.js +73 -0
  50. package/dist/utils/mergeChromeArgs.js.map +1 -0
  51. package/dist/utils/mergeChromeArgs.test.d.ts +1 -0
  52. package/dist/utils/mergeChromeArgs.test.js +260 -0
  53. package/dist/utils/mergeChromeArgs.test.js.map +1 -0
  54. package/dist/utils/proxyHandlers.d.ts +12 -0
  55. package/dist/utils/proxyHandlers.js +62 -0
  56. package/dist/utils/proxyHandlers.js.map +1 -0
  57. package/dist/utils/proxyHandlers.test.d.ts +1 -0
  58. package/dist/utils/proxyHandlers.test.js +28 -0
  59. package/dist/utils/proxyHandlers.test.js.map +1 -0
  60. package/dist/utils/readVariables.d.ts +7 -0
  61. package/dist/utils/readVariables.js +17 -0
  62. package/dist/utils/readVariables.js.map +1 -0
  63. package/dist/utils/updateAutoAnalyze.d.ts +7 -0
  64. package/dist/utils/updateAutoAnalyze.js +20 -0
  65. package/dist/utils/updateAutoAnalyze.js.map +1 -0
  66. package/dist/utils/validateApiKey.d.ts +7 -0
  67. package/dist/utils/validateApiKey.js +34 -0
  68. package/dist/utils/validateApiKey.js.map +1 -0
  69. package/dist/utils/validateApiKey.test.d.ts +1 -0
  70. package/dist/utils/validateApiKey.test.js +66 -0
  71. package/dist/utils/validateApiKey.test.js.map +1 -0
  72. package/dist/utils/validateAxeRunContext.d.ts +2 -0
  73. package/dist/utils/validateAxeRunContext.js +59 -0
  74. package/dist/utils/validateAxeRunContext.js.map +1 -0
  75. package/dist/utils/validateAxeRunContext.test.d.ts +1 -0
  76. package/dist/utils/validateAxeRunContext.test.js +100 -0
  77. package/dist/utils/validateAxeRunContext.test.js.map +1 -0
  78. package/dist/utils/validateAxeRunOptions.d.ts +13 -0
  79. package/dist/utils/validateAxeRunOptions.js +161 -0
  80. package/dist/utils/validateAxeRunOptions.js.map +1 -0
  81. package/dist/utils/validateAxeRunOptions.test.d.ts +1 -0
  82. package/dist/utils/validateAxeRunOptions.test.js +230 -0
  83. package/dist/utils/validateAxeRunOptions.test.js.map +1 -0
  84. package/dist/utils/writeExtensionManifest.d.ts +7 -0
  85. package/dist/utils/writeExtensionManifest.js +18 -0
  86. package/dist/utils/writeExtensionManifest.js.map +1 -0
  87. package/dist/utils/writeVariables.d.ts +77 -0
  88. package/dist/utils/writeVariables.js +124 -0
  89. package/dist/utils/writeVariables.js.map +1 -0
  90. package/dist/utils/writeVariables.test.d.ts +1 -0
  91. package/dist/utils/writeVariables.test.js +220 -0
  92. package/dist/utils/writeVariables.test.js.map +1 -0
  93. package/dist/wdio.d.ts +1 -1
  94. package/dist/wdio.js +18 -13
  95. package/dist/wdio.js.map +1 -1
  96. package/dist/webdriver.d.ts +1 -1
  97. package/dist/webdriver.js +10 -8
  98. package/dist/webdriver.js.map +1 -1
  99. package/dist/webdriverWrapping.d.ts +1 -1
  100. package/dist/webdriverWrapping.js +16 -16
  101. package/dist/webdriverWrapping.js.map +1 -1
  102. package/extension/axe.js +2 -0
  103. package/extension/axe.js.LICENSE.txt +11 -0
  104. package/extension/background.js +1 -1
  105. package/extension/content.js +1 -1
  106. package/extension/content.js.LICENSE.txt +0 -12
  107. package/extension/manifest.json +1 -1
  108. package/package.json +10 -7
  109. package/dist/util.d.ts +0 -76
  110. package/dist/util.js +0 -235
  111. package/dist/util.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isValidExcludePattern.js","sourceRoot":"","sources":["../../src/utils/isValidExcludePattern.ts"],"names":[],"mappings":";;AAAA,MAAM,qBAAqB,GAAG,CAAC,OAAkB,EAAQ,EAAE;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;IAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,sDAAsD,CAC1F,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,kBAAe,qBAAqB,CAAA"}
@@ -0,0 +1 @@
1
+ import 'mocha';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ require("mocha");
7
+ const chai_1 = require("chai");
8
+ const isValidExcludePattern_1 = __importDefault(require("./isValidExcludePattern"));
9
+ describe('isValidExcludePattern', () => {
10
+ it('returns true for valid exclude patterns', () => {
11
+ chai_1.assert.doesNotThrow(() => (0, isValidExcludePattern_1.default)(['foo', 'bar']));
12
+ });
13
+ it('returns false for invalid exclude patterns', () => {
14
+ chai_1.assert.throws(() => (0, isValidExcludePattern_1.default)(['foo', 'bar', 1]));
15
+ });
16
+ });
17
+ //# sourceMappingURL=isValidExcludePattern.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isValidExcludePattern.test.js","sourceRoot":"","sources":["../../src/utils/isValidExcludePattern.test.ts"],"names":[],"mappings":";;;;;AAAA,iBAAc;AACd,+BAA6B;AAC7B,oFAA2D;AAE3D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,aAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAA,+BAAqB,EAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,aAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,+BAAqB,EAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A helper function to merge the user provided arguments with the extension args
3
+ * for Chrome.
4
+ *
5
+ * @param args The user provided arguments to merge with the extension args.
6
+ * @param disableOtherExtensions Whether to disable other extensions.
7
+ * @returns The merged arguments to pass to Chrome.
8
+ */
9
+ declare function mergeChromeArgs(userArgs: string[], { disableOtherExtensions }: {
10
+ disableOtherExtensions: boolean;
11
+ }): string[];
12
+ export default mergeChromeArgs;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("./constants");
4
+ // Extension flags for Chrome
5
+ const DISABLE_OTHER_EXTENSIONS_FLAG = '--disable-extensions-except';
6
+ const LOAD_EXTENSION_FLAG = '--load-extension';
7
+ /**
8
+ * A helper function to merge the user provided arguments with the extension args
9
+ * for Chrome.
10
+ *
11
+ * @param args The user provided arguments to merge with the extension args.
12
+ * @param disableOtherExtensions Whether to disable other extensions.
13
+ * @returns The merged arguments to pass to Chrome.
14
+ */
15
+ function mergeChromeArgs(userArgs, { disableOtherExtensions }) {
16
+ /**
17
+ * It's possible for the user to do:
18
+ * `--load-extension=/path/A, --load-extension=/path/B`
19
+ *
20
+ * We only want to append our extension path onto
21
+ * the last occurrence of `--load-extension`.
22
+ */
23
+ let loadExtensionFlagIndex = -1;
24
+ let disableExtensionsFlagIndex = -1;
25
+ /**
26
+ * We do not want to modify the user's args directly.
27
+ * We only want to modify and merge the extension args
28
+ * with the user's args if they exist.
29
+ *
30
+ * It's possible for some integrations like WebDriverJS
31
+ * to optionally include the `--` prefix in the flag,
32
+ * when we check for the extension flag we need to account for this.
33
+ */
34
+ for (const [index, arg] of userArgs.entries()) {
35
+ if (arg.includes(LOAD_EXTENSION_FLAG) || arg.includes('load-extension')) {
36
+ loadExtensionFlagIndex = index;
37
+ }
38
+ if (arg.includes(DISABLE_OTHER_EXTENSIONS_FLAG) ||
39
+ arg.includes('disable-extensions-except')) {
40
+ disableExtensionsFlagIndex = index;
41
+ }
42
+ }
43
+ // The user has provided a `--load-extension` flag
44
+ // We want to append our extension path to the list of extensions.
45
+ if (loadExtensionFlagIndex !== -1) {
46
+ userArgs[loadExtensionFlagIndex] += `,${constants_1.PATH_TO_EXTENSION}`;
47
+ }
48
+ else {
49
+ userArgs.push(`${LOAD_EXTENSION_FLAG}=${constants_1.PATH_TO_EXTENSION}`);
50
+ }
51
+ // If the user has already disabled other extensions, we want to append
52
+ // our extension path to the list of disabled extensions.
53
+ if (disableExtensionsFlagIndex !== -1) {
54
+ userArgs[disableExtensionsFlagIndex] += `,${constants_1.PATH_TO_EXTENSION}`;
55
+ /**
56
+ * Puppeteer and Playwright by default include `--disable-extensions` which
57
+ * disables all extensions. We need to explicitly enable the axe-core/watcher
58
+ * extension.
59
+ *
60
+ * @see https://github.com/GoogleChrome/chrome-launcher/blob/main/docs/chrome-flags-for-tools.md#sources
61
+ *
62
+ * Cypress does not include `--disable-extensions` by default but does include
63
+ * their own extension outside of `--load-extension` so we do not able to disable it
64
+ * when injecting the axe-core/watcher extension.
65
+ */
66
+ }
67
+ else if (disableOtherExtensions) {
68
+ userArgs.push(`${DISABLE_OTHER_EXTENSIONS_FLAG}=${constants_1.PATH_TO_EXTENSION}`);
69
+ }
70
+ return userArgs;
71
+ }
72
+ exports.default = mergeChromeArgs;
73
+ //# sourceMappingURL=mergeChromeArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeChromeArgs.js","sourceRoot":"","sources":["../../src/utils/mergeChromeArgs.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAE/C,6BAA6B;AAC7B,MAAM,6BAA6B,GAAG,6BAA6B,CAAA;AACnE,MAAM,mBAAmB,GAAG,kBAAkB,CAAA;AAE9C;;;;;;;GAOG;AAEH,SAAS,eAAe,CACtB,QAAkB,EAClB,EACE,sBAAsB,EAGvB;IAED;;;;;;OAMG;IACH,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAA;IAC/B,IAAI,0BAA0B,GAAG,CAAC,CAAC,CAAA;IAEnC;;;;;;;;OAQG;IACH,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxE,sBAAsB,GAAG,KAAK,CAAA;QAChC,CAAC;QAED,IACE,GAAG,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC3C,GAAG,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EACzC,CAAC;YACD,0BAA0B,GAAG,KAAK,CAAA;QACpC,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,kEAAkE;IAClE,IAAI,sBAAsB,KAAK,CAAC,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,IAAI,6BAAiB,EAAE,CAAA;IAC7D,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,IAAI,6BAAiB,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,uEAAuE;IACvE,yDAAyD;IACzD,IAAI,0BAA0B,KAAK,CAAC,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,IAAI,6BAAiB,EAAE,CAAA;QAE/D;;;;;;;;;;WAUG;IACL,CAAC;SAAM,IAAI,sBAAsB,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,6BAA6B,IAAI,6BAAiB,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,kBAAe,eAAe,CAAA"}
@@ -0,0 +1 @@
1
+ import 'mocha';
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ require("mocha");
7
+ const chai_1 = require("chai");
8
+ const constants_1 = require("./constants");
9
+ const mergeChromeArgs_1 = __importDefault(require("./mergeChromeArgs"));
10
+ describe('mergeChromeArgs', () => {
11
+ describe('given the user has not provided any args', () => {
12
+ describe('when `disableOtherExtensions` is true', () => {
13
+ it('returns the `--load-extension` when `--disable-extensions-except` flags', () => {
14
+ const args = (0, mergeChromeArgs_1.default)([], {
15
+ disableOtherExtensions: true
16
+ });
17
+ const [loadExtension, disableExtensionsExcept] = args;
18
+ chai_1.assert.lengthOf(args, 2);
19
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
20
+ chai_1.assert.equal(disableExtensionsExcept, `--disable-extensions-except=${constants_1.PATH_TO_EXTENSION}`);
21
+ });
22
+ });
23
+ describe('and `disableOtherExtensions` is false', () => {
24
+ it('only returns the `--load-extension` flag', () => {
25
+ const args = (0, mergeChromeArgs_1.default)([], {
26
+ disableOtherExtensions: false
27
+ });
28
+ const [loadExtension] = args;
29
+ chai_1.assert.lengthOf(args, 1);
30
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
31
+ });
32
+ });
33
+ });
34
+ describe('given the user has provided args', () => {
35
+ describe('when the user has not provided extension flags', () => {
36
+ describe('when `disableOtherExtensions` is true', () => {
37
+ describe('and the user args and not prefixed with `--`', () => {
38
+ it('does not modify the user provided args and appends the extension flags', () => {
39
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'baz=qux,quz', 'quux'], {
40
+ disableOtherExtensions: true
41
+ });
42
+ const [foo, baz, quux, loadExtension, disableExtensionsExcept] = args;
43
+ chai_1.assert.lengthOf(args, 5);
44
+ chai_1.assert.equal(foo, 'foo=bar');
45
+ chai_1.assert.equal(baz, 'baz=qux,quz');
46
+ chai_1.assert.equal(quux, 'quux');
47
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
48
+ chai_1.assert.equal(disableExtensionsExcept, `--disable-extensions-except=${constants_1.PATH_TO_EXTENSION}`);
49
+ });
50
+ describe('and the user adds multiple instances of the same flag', () => {
51
+ it('does not modify the user provided args and appends the extension flags', () => {
52
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'foo=baz'], {
53
+ disableOtherExtensions: true
54
+ });
55
+ const [foo1, foo2, loadExtension, disableExtensionsExcept] = args;
56
+ chai_1.assert.lengthOf(args, 4);
57
+ chai_1.assert.equal(foo1, 'foo=bar');
58
+ chai_1.assert.equal(foo2, 'foo=baz');
59
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
60
+ chai_1.assert.equal(disableExtensionsExcept, `--disable-extensions-except=${constants_1.PATH_TO_EXTENSION}`);
61
+ });
62
+ describe('and some values are comma-separated', () => {
63
+ it('does not modify the user provided args and appends the extension flags', () => {
64
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'foo=baz,qux'], {
65
+ disableOtherExtensions: true
66
+ });
67
+ const [foo1, foo2, loadExtension, disableExtensionsExcept] = args;
68
+ chai_1.assert.lengthOf(args, 4);
69
+ chai_1.assert.equal(foo1, 'foo=bar');
70
+ chai_1.assert.equal(foo2, 'foo=baz,qux');
71
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
72
+ chai_1.assert.equal(disableExtensionsExcept, `--disable-extensions-except=${constants_1.PATH_TO_EXTENSION}`);
73
+ });
74
+ });
75
+ });
76
+ });
77
+ });
78
+ describe('and `disableOtherExtensions` is false', () => {
79
+ it('does not modify the user provided args and appends the extension flags', () => {
80
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'baz=qux,quz', 'quux'], {
81
+ disableOtherExtensions: false
82
+ });
83
+ const [foo, baz, quux, loadExtension] = args;
84
+ chai_1.assert.lengthOf(args, 4);
85
+ chai_1.assert.equal(foo, 'foo=bar');
86
+ chai_1.assert.equal(baz, 'baz=qux,quz');
87
+ chai_1.assert.equal(quux, 'quux');
88
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
89
+ });
90
+ describe('and the user adds multiple instances of the same flag', () => {
91
+ it('does not modify the user provided args and appends the extension flags', () => {
92
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'foo=baz'], {
93
+ disableOtherExtensions: false
94
+ });
95
+ chai_1.assert.lengthOf(args, 3);
96
+ const [foo1, foo2, loadExtension] = args;
97
+ chai_1.assert.equal(foo1, 'foo=bar');
98
+ chai_1.assert.equal(foo2, 'foo=baz');
99
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
100
+ });
101
+ describe('and some values are comma-separated', () => {
102
+ it('does not modify the user provided args and appends the extension flags', () => {
103
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'foo=baz,qux'], {
104
+ disableOtherExtensions: false
105
+ });
106
+ chai_1.assert.lengthOf(args, 3);
107
+ const [foo1, foo2, loadExtension] = args;
108
+ chai_1.assert.equal(foo1, 'foo=bar');
109
+ chai_1.assert.equal(foo2, 'foo=baz,qux');
110
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
111
+ });
112
+ });
113
+ });
114
+ });
115
+ });
116
+ describe('when the user has provided extension flags', () => {
117
+ describe('when `disableOtherExtensions` is true', () => {
118
+ describe('and the user extension flags are not prefixed with `--`', () => {
119
+ it('does not modify the user provided args and appends the extension flags', () => {
120
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'baz=qux,quz', 'quux', 'load-extension=foo'], {
121
+ disableOtherExtensions: true
122
+ });
123
+ const [foo, baz, quux, loadExtension, disableExtensionsExcept] = args;
124
+ chai_1.assert.lengthOf(args, 5);
125
+ chai_1.assert.equal(foo, 'foo=bar');
126
+ chai_1.assert.equal(baz, 'baz=qux,quz');
127
+ chai_1.assert.equal(quux, 'quux');
128
+ chai_1.assert.equal(loadExtension, `load-extension=foo,${constants_1.PATH_TO_EXTENSION}`);
129
+ chai_1.assert.equal(disableExtensionsExcept, `--disable-extensions-except=${constants_1.PATH_TO_EXTENSION}`);
130
+ });
131
+ describe('and the user adds multiple instances of the same flag', () => {
132
+ it('does not modify the user provided args and appends the extension flags', () => {
133
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'load-extension=baz', 'load-extension=qux'], {
134
+ disableOtherExtensions: true
135
+ });
136
+ const [foo, loadExtension1, loadExtension2, disableExtensionsExcept] = args;
137
+ chai_1.assert.lengthOf(args, 4);
138
+ chai_1.assert.equal(foo, 'foo=bar');
139
+ chai_1.assert.equal(loadExtension1, 'load-extension=baz');
140
+ // We append onto the last occurrence of the flag
141
+ chai_1.assert.equal(loadExtension2, `load-extension=qux,${constants_1.PATH_TO_EXTENSION}`);
142
+ chai_1.assert.equal(disableExtensionsExcept, `--disable-extensions-except=${constants_1.PATH_TO_EXTENSION}`);
143
+ });
144
+ describe('and some values are comma-separated', () => {
145
+ it('does not modify the user provided args and appends the extension flags', () => {
146
+ const args = (0, mergeChromeArgs_1.default)([
147
+ 'foo=bar',
148
+ 'foo=baz,qux',
149
+ 'load-extension=foo',
150
+ 'disable-extensions-except=quz,quux'
151
+ ], {
152
+ disableOtherExtensions: true
153
+ });
154
+ const [foo1, foo2, loadExtension, disableExtensionsExcept] = args;
155
+ chai_1.assert.lengthOf(args, 4);
156
+ chai_1.assert.equal(foo1, 'foo=bar');
157
+ chai_1.assert.equal(foo2, 'foo=baz,qux');
158
+ chai_1.assert.equal(loadExtension, `load-extension=foo,${constants_1.PATH_TO_EXTENSION}`);
159
+ chai_1.assert.equal(disableExtensionsExcept, `disable-extensions-except=quz,quux,${constants_1.PATH_TO_EXTENSION}`);
160
+ });
161
+ });
162
+ });
163
+ });
164
+ });
165
+ describe('and `disableOtherExtensions` is false', () => {
166
+ it('does not modify the user provided args and appends the extension flags', () => {
167
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'baz=qux,quz', 'quux', 'load-extension=foo'], {
168
+ disableOtherExtensions: false
169
+ });
170
+ const [foo, baz, quux, loadExtension] = args;
171
+ chai_1.assert.lengthOf(args, 4);
172
+ chai_1.assert.equal(foo, 'foo=bar');
173
+ chai_1.assert.equal(baz, 'baz=qux,quz');
174
+ chai_1.assert.equal(quux, 'quux');
175
+ chai_1.assert.equal(loadExtension, `load-extension=foo,${constants_1.PATH_TO_EXTENSION}`);
176
+ });
177
+ describe('and the user adds multiple instances of the same flag', () => {
178
+ it('does not modify the user provided args and appends the extension flags', () => {
179
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'load-extension=baz', 'load-extension=qux'], {
180
+ disableOtherExtensions: false
181
+ });
182
+ const [foo, loadExtension1, loadExtension2] = args;
183
+ chai_1.assert.lengthOf(args, 3);
184
+ chai_1.assert.equal(foo, 'foo=bar');
185
+ chai_1.assert.equal(loadExtension1, 'load-extension=baz');
186
+ // We append onto the last occurrence of the flag
187
+ chai_1.assert.equal(loadExtension2, `load-extension=qux,${constants_1.PATH_TO_EXTENSION}`);
188
+ });
189
+ describe('and some values are comma-separated', () => {
190
+ it('does not modify the user provided args and appends the extension flags', () => {
191
+ const args = (0, mergeChromeArgs_1.default)(['foo=bar', 'foo=baz,qux', 'load-extension=foo,quz,quux'], {
192
+ disableOtherExtensions: false
193
+ });
194
+ const [foo1, foo2, loadExtension] = args;
195
+ chai_1.assert.lengthOf(args, 3);
196
+ chai_1.assert.equal(foo1, 'foo=bar');
197
+ chai_1.assert.equal(foo2, 'foo=baz,qux');
198
+ chai_1.assert.equal(loadExtension, `load-extension=foo,quz,quux,${constants_1.PATH_TO_EXTENSION}`);
199
+ });
200
+ });
201
+ });
202
+ describe('and the user explicity sets the `--disable-extensions-except` flag', () => {
203
+ it('does not modify the user provided args and appends the extension flags', () => {
204
+ const args = (0, mergeChromeArgs_1.default)([
205
+ 'foo=bar',
206
+ 'baz=qux,quz',
207
+ 'quux',
208
+ 'disable-extensions-except=foo'
209
+ ], {
210
+ disableOtherExtensions: false
211
+ });
212
+ const [foo, baz, quux, disableExtensionsExcept, loadExtension] = args;
213
+ chai_1.assert.lengthOf(args, 5);
214
+ chai_1.assert.equal(foo, 'foo=bar');
215
+ chai_1.assert.equal(baz, 'baz=qux,quz');
216
+ chai_1.assert.equal(quux, 'quux');
217
+ chai_1.assert.equal(disableExtensionsExcept, `disable-extensions-except=foo,${constants_1.PATH_TO_EXTENSION}`);
218
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
219
+ });
220
+ describe('and the user adds multiple instances of the same flag', () => {
221
+ it('does not modify the user provided args and appends the extension flags', () => {
222
+ const args = (0, mergeChromeArgs_1.default)([
223
+ 'foo=bar',
224
+ 'disable-extensions-except=baz',
225
+ '--disable-extensions-except=qux'
226
+ ], {
227
+ disableOtherExtensions: false
228
+ });
229
+ const [foo, disableExtensionsExcept1, disableExtensionsExcept2, loadExtension] = args;
230
+ chai_1.assert.lengthOf(args, 4);
231
+ chai_1.assert.equal(foo, 'foo=bar');
232
+ chai_1.assert.equal(disableExtensionsExcept1, 'disable-extensions-except=baz');
233
+ // We append onto the last occurrence of the flag
234
+ chai_1.assert.equal(disableExtensionsExcept2, `--disable-extensions-except=qux,${constants_1.PATH_TO_EXTENSION}`);
235
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
236
+ });
237
+ describe('and some values are comma-separated', () => {
238
+ it('does not modify the user provided args and appends the extension flags', () => {
239
+ const args = (0, mergeChromeArgs_1.default)([
240
+ 'foo=bar',
241
+ 'foo=baz,qux',
242
+ 'disable-extensions-except=foo,quz,quux'
243
+ ], {
244
+ disableOtherExtensions: false
245
+ });
246
+ const [foo1, foo2, disableExtensionsExcept, loadExtension] = args;
247
+ chai_1.assert.lengthOf(args, 4);
248
+ chai_1.assert.equal(foo1, 'foo=bar');
249
+ chai_1.assert.equal(foo2, 'foo=baz,qux');
250
+ chai_1.assert.equal(disableExtensionsExcept, `disable-extensions-except=foo,quz,quux,${constants_1.PATH_TO_EXTENSION}`);
251
+ chai_1.assert.equal(loadExtension, `--load-extension=${constants_1.PATH_TO_EXTENSION}`);
252
+ });
253
+ });
254
+ });
255
+ });
256
+ });
257
+ });
258
+ });
259
+ });
260
+ //# sourceMappingURL=mergeChromeArgs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeChromeArgs.test.js","sourceRoot":"","sources":["../../src/utils/mergeChromeArgs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type Controller from '../Controller';
2
+ declare const kWrapped: unique symbol;
3
+ export type PossiblyWrapped<T> = T & {
4
+ [kWrapped]?: boolean;
5
+ };
6
+ /** Is the given object wrapped? */
7
+ export declare const isWrapped: <T>(o: PossiblyWrapped<T> | null) => boolean;
8
+ /** Mark the given object as wrapped. */
9
+ export declare const markAsWrapped: (o: unknown) => void;
10
+ export declare const proxiedGetFuncWithAnalyze: <T>(target: T, prop: keyof T, controller: Controller) => (...args: unknown[]) => Promise<unknown>;
11
+ export declare const proxiedGetWithoutAnalyze: <T>(target: T, prop: keyof T) => unknown;
12
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.proxiedGetWithoutAnalyze = exports.proxiedGetFuncWithAnalyze = exports.markAsWrapped = exports.isWrapped = void 0;
4
+ const kWrapped = Symbol('axe watcher wrapped');
5
+ /** Is the given object wrapped? */
6
+ const isWrapped = (o) => {
7
+ if (!o) {
8
+ return false;
9
+ }
10
+ return o[kWrapped] === true;
11
+ };
12
+ exports.isWrapped = isWrapped;
13
+ /** Mark the given object as wrapped. */
14
+ const markAsWrapped = (o) => {
15
+ Object.defineProperty(o, kWrapped, {
16
+ configurable: false,
17
+ enumerable: false,
18
+ value: true
19
+ });
20
+ };
21
+ exports.markAsWrapped = markAsWrapped;
22
+ const proxiedGetFuncWithAnalyze = (target, prop, controller) => async (...args) => {
23
+ await controller.analyze({
24
+ __Method: prop,
25
+ __UserRequestedAnalyze: false
26
+ });
27
+ // We use .call(target, ...) for the same reason that
28
+ // proxiedGetWithoutAnalyze uses .bind(target), see below.
29
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
30
+ const result = await target[prop].call(target, ...args);
31
+ return result;
32
+ };
33
+ exports.proxiedGetFuncWithAnalyze = proxiedGetFuncWithAnalyze;
34
+ const proxiedGetWithoutAnalyze = (target, prop) => {
35
+ const original = target[prop];
36
+ if (typeof original === 'function') {
37
+ // Override the proxied function with the original function bound to the target.
38
+ // This allows the "this" context to mimic the original object, rather than the proxy.
39
+ // Doing it this way still satisfies if:
40
+ // 1. The original function uses a private field of the target,
41
+ // it will throw an error if we try to call it in the context of
42
+ // a proxy rather than the original object. See #1052.
43
+ // 2. The original function is implemented in terms of a different
44
+ // method which we *do* wrap, we *don't* want to hook that inner
45
+ // call with an analyze(); we want to be intentional about the
46
+ // specific user-facing methods that we hook.
47
+ const originalFnName = original.name;
48
+ const boundNameOverride = {
49
+ // ends up identical to the original; JavaScript names anonymous functions
50
+ // in objects after the key they're bound to.
51
+ // @see https://github.com/dequelabs/jazzband/issues/1107
52
+ // @see https://stackoverflow.com/a/41854075
53
+ [originalFnName]: function (...args) {
54
+ return original.call(target, ...args);
55
+ }
56
+ };
57
+ return boundNameOverride[originalFnName];
58
+ }
59
+ return original;
60
+ };
61
+ exports.proxiedGetWithoutAnalyze = proxiedGetWithoutAnalyze;
62
+ //# sourceMappingURL=proxyHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxyHandlers.js","sourceRoot":"","sources":["../../src/utils/proxyHandlers.ts"],"names":[],"mappings":";;;AAEA,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAM9C,mCAAmC;AAC5B,MAAM,SAAS,GAAG,CAAI,CAA4B,EAAW,EAAE;IACpE,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAA;AAC7B,CAAC,CAAA;AALY,QAAA,SAAS,aAKrB;AAED,wCAAwC;AACjC,MAAM,aAAa,GAAG,CAAC,CAAU,EAAQ,EAAE;IAChD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE;QACjC,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,IAAI;KACZ,CAAC,CAAA;AACJ,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAEM,MAAM,yBAAyB,GACpC,CAAI,MAAS,EAAE,IAAa,EAAE,UAAsB,EAAE,EAAE,CACxD,KAAK,EAAE,GAAG,IAAe,EAAoB,EAAE;IAC7C,MAAM,UAAU,CAAC,OAAO,CAAC;QACvB,QAAQ,EAAE,IAAc;QACxB,sBAAsB,EAAE,KAAK;KAC9B,CAAC,CAAA;IACF,qDAAqD;IACrD,0DAA0D;IAC1D,sEAAsE;IACtE,MAAM,MAAM,GAAG,MAAO,MAAM,CAAC,IAAI,CAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IACrE,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAZU,QAAA,yBAAyB,6BAYnC;AAEI,MAAM,wBAAwB,GAAG,CACtC,MAAS,EACT,IAAa,EACJ,EAAE;IACX,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAE7B,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,gFAAgF;QAChF,sFAAsF;QACtF,wCAAwC;QACxC,+DAA+D;QAC/D,mEAAmE;QACnE,yDAAyD;QACzD,kEAAkE;QAClE,mEAAmE;QACnE,iEAAiE;QACjE,gDAAgD;QAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAA;QACpC,MAAM,iBAAiB,GAAG;YACxB,0EAA0E;YAC1E,6CAA6C;YAC7C,yDAAyD;YACzD,4CAA4C;YAC5C,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,IAAe;gBAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;YACvC,CAAC;SACF,CAAA;QAED,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAhCY,QAAA,wBAAwB,4BAgCpC"}
@@ -0,0 +1 @@
1
+ import 'mocha';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("mocha");
4
+ const chai_1 = require("chai");
5
+ const proxyHandlers_1 = require("./proxyHandlers");
6
+ // Regression test for https://github.com/dequelabs/jazzband/issues/1107
7
+ describe('proxiedGetWithoutAnalyze', () => {
8
+ it('should ensure proxied function names match originals', () => {
9
+ class Original {
10
+ constructor() {
11
+ this.arrowFn = () => 'hello';
12
+ }
13
+ method() {
14
+ return 'world';
15
+ }
16
+ }
17
+ const original = new Original();
18
+ const proxied = new Proxy(original, {
19
+ get(target, prop) {
20
+ return (0, proxyHandlers_1.proxiedGetWithoutAnalyze)(target, prop);
21
+ }
22
+ });
23
+ chai_1.assert.equal(proxied.arrowFn.name, original.arrowFn.name);
24
+ chai_1.assert.equal(proxied.method.name, original.method.name);
25
+ chai_1.assert.equal(proxied.constructor.name, original.constructor.name);
26
+ });
27
+ });
28
+ //# sourceMappingURL=proxyHandlers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxyHandlers.test.js","sourceRoot":"","sources":["../../src/utils/proxyHandlers.test.ts"],"names":[],"mappings":";;AAAA,iBAAc;AACd,+BAA6B;AAC7B,mDAA0D;AAE1D,wEAAwE;AACxE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,QAAQ;YAAd;gBACE,YAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAA;YAIzB,CAAC;YAHC,MAAM;gBACJ,OAAO,OAAO,CAAA;YAChB,CAAC;SACF;QACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClC,GAAG,CAAC,MAAM,EAAE,IAAoB;gBAC9B,OAAO,IAAA,wCAAwB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC/C,CAAC;SACF,CAAC,CAAA;QACF,aAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACzD,aAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACvD,aAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { Variables } from './writeVariables';
2
+ /**
3
+ * Read the `variables` JSON file from the @axe-core/watcher extension.
4
+ * @returns The variables stored in the extension variables file.
5
+ */
6
+ declare function readVariables(): Variables;
7
+ export default readVariables;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const constants_1 = require("./constants");
8
+ /**
9
+ * Read the `variables` JSON file from the @axe-core/watcher extension.
10
+ * @returns The variables stored in the extension variables file.
11
+ */
12
+ function readVariables() {
13
+ const fileContents = fs_1.default.readFileSync(constants_1.PATH_TO_EXTENSION_VARIABLES, 'utf-8');
14
+ return JSON.parse(fileContents);
15
+ }
16
+ exports.default = readVariables;
17
+ //# sourceMappingURL=readVariables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readVariables.js","sourceRoot":"","sources":["../../src/utils/readVariables.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,2CAAyD;AAGzD;;;GAGG;AAEH,SAAS,aAAa;IACpB,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,uCAA2B,EAAE,OAAO,CAAC,CAAA;IAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AACjC,CAAC;AAED,kBAAe,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Update the `auto_analyze` variable in the @axe-core/watcher extension variables file.
3
+ *
4
+ * @param val The new value for the auto_analyze variable.
5
+ */
6
+ declare function updateAutoAnalyze(val: boolean): void;
7
+ export default updateAutoAnalyze;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const constants_1 = require("./constants");
8
+ const readVariables_1 = __importDefault(require("./readVariables"));
9
+ /**
10
+ * Update the `auto_analyze` variable in the @axe-core/watcher extension variables file.
11
+ *
12
+ * @param val The new value for the auto_analyze variable.
13
+ */
14
+ function updateAutoAnalyze(val) {
15
+ const variables = (0, readVariables_1.default)();
16
+ variables.auto_analyze = val;
17
+ fs_1.default.writeFileSync(constants_1.PATH_TO_EXTENSION_VARIABLES, JSON.stringify(variables));
18
+ }
19
+ exports.default = updateAutoAnalyze;
20
+ //# sourceMappingURL=updateAutoAnalyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateAutoAnalyze.js","sourceRoot":"","sources":["../../src/utils/updateAutoAnalyze.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,2CAAyD;AACzD,oEAA2C;AAE3C;;;;GAIG;AAEH,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,SAAS,GAAG,IAAA,uBAAa,GAAE,CAAA;IACjC,SAAS,CAAC,YAAY,GAAG,GAAG,CAAA;IAC5B,YAAE,CAAC,aAAa,CAAC,uCAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED,kBAAe,iBAAiB,CAAA"}
@@ -0,0 +1,7 @@
1
+ interface ValidateApiKeyParams {
2
+ apiKey: string;
3
+ serverURL: string;
4
+ }
5
+ /** Validate the given `apiKey`. This method is blocking and should not be called unnecessarily. */
6
+ declare function validateApiKey({ apiKey, serverURL }: ValidateApiKeyParams): void;
7
+ export default validateApiKey;