testcafe 1.15.3-rc.1 → 1.16.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 (61) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/bin/testcafe-with-v8-flag-filter.js +9 -3
  3. package/lib/api/exportable-lib/index.js +5 -1
  4. package/lib/api/test-controller/execution-context.js +2 -1
  5. package/lib/api/user-variables/index.js +13 -0
  6. package/lib/browser/provider/built-in/dedicated/base.js +6 -1
  7. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/client-function-executor.js +110 -0
  8. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +15 -61
  9. package/lib/browser/provider/built-in/dedicated/chrome/index.js +2 -1
  10. package/lib/browser/provider/index.js +4 -1
  11. package/lib/cli/argument-parser.js +9 -4
  12. package/lib/cli/node-arguments-filter.js +49 -0
  13. package/lib/client/automation/index.js +4 -4
  14. package/lib/client/automation/index.min.js +1 -1
  15. package/lib/client/core/index.js +87 -49
  16. package/lib/client/core/index.min.js +1 -1
  17. package/lib/client/driver/index.js +684 -654
  18. package/lib/client/driver/index.min.js +1 -1
  19. package/lib/client/proxyless/index.js +1117 -324
  20. package/lib/client-functions/selectors/selector-builder.js +2 -2
  21. package/lib/client-functions/selectors/snapshot-properties.js +1 -1
  22. package/lib/compiler/test-file/api-based.js +21 -3
  23. package/lib/compiler/test-file/disable-v8-optimization-note.js +6 -0
  24. package/lib/compiler/test-file/formats/es-next/compiler.js +10 -1
  25. package/lib/compiler/test-file/formats/es-next/get-test-list.js +2 -1
  26. package/lib/compiler/test-file/formats/typescript/compiler.js +20 -2
  27. package/lib/compiler/test-file/formats/typescript/get-test-list.js +2 -1
  28. package/lib/compiler/test-file/test-file-parser-base.js +21 -6
  29. package/lib/configuration/configuration-base.js +68 -17
  30. package/lib/configuration/default-values.js +3 -2
  31. package/lib/configuration/formats.js +7 -0
  32. package/lib/configuration/option-names.js +3 -1
  33. package/lib/configuration/screenshot-option-names.js +2 -1
  34. package/lib/configuration/testcafe-configuration.js +14 -10
  35. package/lib/configuration/types.js +1 -1
  36. package/lib/configuration/typescript-configuration.js +4 -4
  37. package/lib/index.js +5 -1
  38. package/lib/live/test-runner.js +3 -4
  39. package/lib/notifications/warning-message.js +3 -2
  40. package/lib/runner/bootstrapper.js +7 -4
  41. package/lib/runner/fixture-hook-controller.js +20 -11
  42. package/lib/runner/index.js +8 -5
  43. package/lib/runner/task/index.js +3 -11
  44. package/lib/screenshots/capturer.js +8 -4
  45. package/lib/screenshots/index.js +4 -3
  46. package/lib/services/compiler/host.js +27 -5
  47. package/lib/services/compiler/interfaces.js +1 -1
  48. package/lib/services/compiler/protocol.js +1 -1
  49. package/lib/services/compiler/service.js +14 -1
  50. package/lib/services/serialization/prepare-options.js +2 -1
  51. package/lib/shared/errors/index.js +7 -6
  52. package/lib/test-run/browser-manipulation-queue.js +2 -1
  53. package/lib/test-run/commands/browser-manipulation.js +4 -3
  54. package/lib/test-run/index.js +17 -8
  55. package/lib/test-run/proxyless-commands-support.js +14 -0
  56. package/lib/testcafe.js +6 -2
  57. package/lib/utils/get-filter-fn.js +3 -1
  58. package/package.json +2 -1
  59. package/ts-defs/index.d.ts +19 -1
  60. package/ts-defs/selectors.d.ts +10 -0
  61. package/ts-defs/testcafe-scripts.d.ts +26 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.16.0 (2021-09-08)
4
+
5
+ ### Enhancements
6
+
7
+ #### Support for JavaScript configuration files
8
+
9
+ You can now store TestCafe settings in a `js` file. Configuration properties in JavaScript files can reference JavaScript methods, functions and variables, which makes it easy to create dynamic configuration files.
10
+
11
+ Just `export` the JSON name/value pairs in the file:
12
+
13
+ ```js
14
+ module.exports = {
15
+ skipJsErrors: true,
16
+ hostname: "localhost",
17
+ // other settings
18
+ }
19
+ ```
20
+
21
+ #### Support for custom user variables in the configuration file
22
+
23
+ TestCafe v1.16.0 and later supports configuration files with variable declarations. Users can reference variables from a configuration file in the tests that utilize that configuration file. To enable access to configuration file variables, import the `userVariables` object from the `testcafe` module at the beginning of the test script.
24
+
25
+ This capability can come in handy if there's a single piece of data you want to use in multiple tests — for example, the website's URL. That way, if your website moves to a new domain name, you don't have to change your tests one by one.
26
+
27
+ If you previously used environment variables to achieve the same goal, you might prefer the new method — it significantly simplifies the setup process, and allows you to commit the data to a version control system.
28
+
29
+ Define your custom variables with the `userVariables` JSON object:
30
+
31
+ ```JSON
32
+ {
33
+ "userVariables": {
34
+ "url": "http://devexpress.github.io/testcafe/example",
35
+ }
36
+ }
37
+ ```
38
+
39
+ Reference this variable in your test:
40
+
41
+ ```js
42
+ import { userVariables } from 'testcafe';
43
+
44
+ fixture `Test user variables`
45
+ .page(userVariables.url);
46
+
47
+ test('Type text', async t => {
48
+ await t
49
+ .typeText('#developer-name', 'John Smith')
50
+ .click('#submit-button');
51
+ });
52
+ ```
53
+
54
+ #### Other enhancements
55
+
56
+ * New option that disables thumbnail generation for test screenshots ([PR by @taki-fw](https://github.com/DevExpress/testcafe/pull/6078)).
57
+ * New `embedding-utils` API method that retrieves information about skipped tests ([PR by @flora8984461](https://github.com/DevExpress/testcafe/pull/6398)).
58
+ * The `Runner.filter` function supports asynchronous arguments ([PR by @eignatyev](https://github.com/DevExpress/testcafe/pull/6371)).
59
+ * You can import the `test` and `fixture` objects directly from the `testcafe` module ([PR #6338](https://github.com/DevExpress/testcafe/pull/6338)).
60
+
61
+ ### Bug Fixes
62
+
63
+ * TestCafe does not keep track of file changes in live mode ([#6481](https://github.com/DevExpress/testcafe/issues/6481)).
64
+
65
+ ## v1.15.3 (2021-08-19)
66
+
67
+ ### Bug Fixes
68
+
69
+ * TestCafe throws an error if you use the 'all' alias in the command line to run tests in all installed browsers ([#6456](https://github.com/DevExpress/testcafe/issues/6456)).
70
+ * TestCafe does not check if the configuration file exists ([#6337](https://github.com/DevExpress/testcafe/issues/6337)).
71
+ * TestCafe cannot disable HTTP/2 to avoid compatibility issues ([testcafe-hammerhead/#2681](https://github.com/DevExpress/testcafe-hammerhead/pull/2681)).
72
+ * TestCafe works incorrectly if you use extended Function objects ([testcafe-hammerhead/#2439](https://github.com/DevExpress/testcafe-hammerhead/issues/2439)).
73
+ * TestCafe processes a test application incorrectly if it uses the Immutable.js library ([testcafe-hammerhead/#2669](https://github.com/DevExpress/testcafe-hammerhead/issues/2669)).
74
+ * TestCafe adds an element incorrectly into a nested body element ([PR testcafe-hammerhead/#2682](https://github.com/DevExpress/testcafe-hammerhead/pull/2682)).
75
+
3
76
  ## v1.15.2 (2021-08-11)
4
77
 
5
78
  ### Bug Fixes
@@ -2,7 +2,13 @@
2
2
 
3
3
  'use strict';
4
4
 
5
- var path = require('path');
6
- var v8FlagsFilter = require('bin-v8-flags-filter');
5
+ const path = require('path');
6
+ const v8FlagsFilter = require('bin-v8-flags-filter');
7
7
 
8
- v8FlagsFilter(path.join(__dirname, '../lib/cli'), { useShutdownMessage: true });
8
+ const EXPERIMENTAL_DEBUG_OPTION = '--experimental-debug';
9
+
10
+ if (process.argv.slice(2).includes(EXPERIMENTAL_DEBUG_OPTION))
11
+ require('../lib/cli');
12
+
13
+ else
14
+ v8FlagsFilter(path.join(__dirname, '../lib/cli'), { useShutdownMessage: true });
@@ -6,6 +6,7 @@ const SelectorBuilder = lazyRequire('../../client-functions/selectors/selector-b
6
6
  const role = lazyRequire('../../role');
7
7
  const createRequestLogger = lazyRequire('../request-hooks/request-logger');
8
8
  const createRequestMock = lazyRequire('../request-hooks/request-mock/create-request-mock');
9
+ const userVariables = lazyRequire('../user-variables');
9
10
  // NOTE: We can't use lazy require for RequestHook, because it will break base class detection for inherited classes
10
11
  let RequestHook = null;
11
12
  // NOTE: We can't use lazy require for testControllerProxy, because it will break test controller detection
@@ -46,6 +47,9 @@ exports.default = {
46
47
  testControllerProxy = require('../test-controller/proxy');
47
48
  return testControllerProxy;
48
49
  },
50
+ get userVariables() {
51
+ return userVariables.value;
52
+ },
49
53
  };
50
54
  module.exports = exports.default;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2V4cG9ydGFibGUtbGliL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTSxXQUFXLEdBQWEsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlELE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDNUYsTUFBTSxlQUFlLEdBQVMsV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFDL0YsTUFBTSxJQUFJLEdBQW9CLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RCxNQUFNLG1CQUFtQixHQUFLLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzdFLE1BQU0saUJBQWlCLEdBQU8sV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFFL0Ysb0hBQW9IO0FBQ3BILElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztBQUV2QiwyR0FBMkc7QUFDM0csSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFL0IsU0FBUyxJQUFJLENBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLFdBQVc7SUFDaEIsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBRSxxQkFBcUIsRUFBRSxVQUFVO0lBQ3JELE9BQU8sbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFFLEVBQUUsRUFBRSxPQUFPO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFNUYsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLEVBQUUsRUFBRSxPQUFPO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUVoRixPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ3JDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO0NBQ3RDLENBQUMsQ0FBQztBQUVILGtCQUFlO0lBQ1gsSUFBSTtJQUVKLGNBQWM7SUFFZCxRQUFRO0lBRVIsYUFBYTtJQUViLFdBQVc7SUFFWCxJQUFJLFdBQVc7UUFDWCxJQUFJLENBQUMsV0FBVztZQUNaLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUVuRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQjtZQUNwQixtQkFBbUIsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUU5RCxPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbGF6eVJlcXVpcmUgICAgICAgICAgID0gcmVxdWlyZSgnaW1wb3J0LWxhenknKShyZXF1aXJlKTtcbmNvbnN0IENsaWVudEZ1bmN0aW9uQnVpbGRlciA9IGxhenlSZXF1aXJlKCcuLi8uLi9jbGllbnQtZnVuY3Rpb25zL2NsaWVudC1mdW5jdGlvbi1idWlsZGVyJyk7XG5jb25zdCBTZWxlY3RvckJ1aWxkZXIgICAgICAgPSBsYXp5UmVxdWlyZSgnLi4vLi4vY2xpZW50LWZ1bmN0aW9ucy9zZWxlY3RvcnMvc2VsZWN0b3ItYnVpbGRlcicpO1xuY29uc3Qgcm9sZSAgICAgICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4uLy4uL3JvbGUnKTtcbmNvbnN0IGNyZWF0ZVJlcXVlc3RMb2dnZXIgICA9IGxhenlSZXF1aXJlKCcuLi9yZXF1ZXN0LWhvb2tzL3JlcXVlc3QtbG9nZ2VyJyk7XG5jb25zdCBjcmVhdGVSZXF1ZXN0TW9jayAgICAgPSBsYXp5UmVxdWlyZSgnLi4vcmVxdWVzdC1ob29rcy9yZXF1ZXN0LW1vY2svY3JlYXRlLXJlcXVlc3QtbW9jaycpO1xuXG4vLyBOT1RFOiBXZSBjYW4ndCB1c2UgbGF6eSByZXF1aXJlIGZvciBSZXF1ZXN0SG9vaywgYmVjYXVzZSBpdCB3aWxsIGJyZWFrIGJhc2UgY2xhc3MgZGV0ZWN0aW9uIGZvciBpbmhlcml0ZWQgY2xhc3Nlc1xubGV0IFJlcXVlc3RIb29rID0gbnVsbDtcblxuLy8gTk9URTogV2UgY2FuJ3QgdXNlIGxhenkgcmVxdWlyZSBmb3IgdGVzdENvbnRyb2xsZXJQcm94eSwgYmVjYXVzZSBpdCB3aWxsIGJyZWFrIHRlc3QgY29udHJvbGxlciBkZXRlY3Rpb25cbmxldCB0ZXN0Q29udHJvbGxlclByb3h5ID0gbnVsbDtcblxuZnVuY3Rpb24gUm9sZSAobG9naW5VcmwsIGluaXRGbiwgb3B0aW9ucykge1xuICAgIHJldHVybiByb2xlLmNyZWF0ZVJvbGUobG9naW5VcmwsIGluaXRGbiwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIFJlcXVlc3RNb2NrICgpIHtcbiAgICByZXR1cm4gY3JlYXRlUmVxdWVzdE1vY2soKTtcbn1cblxuZnVuY3Rpb24gUmVxdWVzdExvZ2dlciAocmVxdWVzdEZpbHRlclJ1bGVJbml0LCBsb2dPcHRpb25zKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RMb2dnZXIocmVxdWVzdEZpbHRlclJ1bGVJbml0LCBsb2dPcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gQ2xpZW50RnVuY3Rpb24gKGZuLCBvcHRpb25zKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBDbGllbnRGdW5jdGlvbkJ1aWxkZXIoZm4sIG9wdGlvbnMsIHsgaW5zdGFudGlhdGlvbjogJ0NsaWVudEZ1bmN0aW9uJyB9KTtcblxuICAgIHJldHVybiBidWlsZGVyLmdldEZ1bmN0aW9uKCk7XG59XG5cbmZ1bmN0aW9uIFNlbGVjdG9yIChmbiwgb3B0aW9ucykge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgU2VsZWN0b3JCdWlsZGVyKGZuLCBvcHRpb25zLCB7IGluc3RhbnRpYXRpb246ICdTZWxlY3RvcicgfSk7XG5cbiAgICByZXR1cm4gYnVpbGRlci5nZXRGdW5jdGlvbigpO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUm9sZSwgJ2Fub255bW91cycsIHtcbiAgICBnZXQ6ICgpID0+IHJvbGUuY3JlYXRlQW5vbnltb3VzUm9sZSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgUm9sZSxcblxuICAgIENsaWVudEZ1bmN0aW9uLFxuXG4gICAgU2VsZWN0b3IsXG5cbiAgICBSZXF1ZXN0TG9nZ2VyLFxuXG4gICAgUmVxdWVzdE1vY2ssXG5cbiAgICBnZXQgUmVxdWVzdEhvb2sgKCkge1xuICAgICAgICBpZiAoIVJlcXVlc3RIb29rKVxuICAgICAgICAgICAgUmVxdWVzdEhvb2sgPSByZXF1aXJlKCcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snKTtcblxuICAgICAgICByZXR1cm4gUmVxdWVzdEhvb2s7XG4gICAgfSxcblxuICAgIGdldCB0ICgpIHtcbiAgICAgICAgaWYgKCF0ZXN0Q29udHJvbGxlclByb3h5KVxuICAgICAgICAgICAgdGVzdENvbnRyb2xsZXJQcm94eSA9IHJlcXVpcmUoJy4uL3Rlc3QtY29udHJvbGxlci9wcm94eScpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0Q29udHJvbGxlclByb3h5O1xuICAgIH0sXG59O1xuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2V4cG9ydGFibGUtbGliL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTSxXQUFXLEdBQWEsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlELE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDNUYsTUFBTSxlQUFlLEdBQVMsV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFDL0YsTUFBTSxJQUFJLEdBQW9CLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RCxNQUFNLG1CQUFtQixHQUFLLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzdFLE1BQU0saUJBQWlCLEdBQU8sV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFDL0YsTUFBTSxhQUFhLEdBQVcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFL0Qsb0hBQW9IO0FBQ3BILElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztBQUV2QiwyR0FBMkc7QUFDM0csSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFL0IsU0FBUyxJQUFJLENBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLFdBQVc7SUFDaEIsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBRSxxQkFBcUIsRUFBRSxVQUFVO0lBQ3JELE9BQU8sbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFFLEVBQUUsRUFBRSxPQUFPO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFNUYsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLEVBQUUsRUFBRSxPQUFPO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUVoRixPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ3JDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO0NBQ3RDLENBQUMsQ0FBQztBQUVILGtCQUFlO0lBQ1gsSUFBSTtJQUVKLGNBQWM7SUFFZCxRQUFRO0lBRVIsYUFBYTtJQUViLFdBQVc7SUFFWCxJQUFJLFdBQVc7UUFDWCxJQUFJLENBQUMsV0FBVztZQUNaLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUVuRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQjtZQUNwQixtQkFBbUIsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUU5RCxPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBsYXp5UmVxdWlyZSAgICAgICAgICAgPSByZXF1aXJlKCdpbXBvcnQtbGF6eScpKHJlcXVpcmUpO1xuY29uc3QgQ2xpZW50RnVuY3Rpb25CdWlsZGVyID0gbGF6eVJlcXVpcmUoJy4uLy4uL2NsaWVudC1mdW5jdGlvbnMvY2xpZW50LWZ1bmN0aW9uLWJ1aWxkZXInKTtcbmNvbnN0IFNlbGVjdG9yQnVpbGRlciAgICAgICA9IGxhenlSZXF1aXJlKCcuLi8uLi9jbGllbnQtZnVuY3Rpb25zL3NlbGVjdG9ycy9zZWxlY3Rvci1idWlsZGVyJyk7XG5jb25zdCByb2xlICAgICAgICAgICAgICAgICAgPSBsYXp5UmVxdWlyZSgnLi4vLi4vcm9sZScpO1xuY29uc3QgY3JlYXRlUmVxdWVzdExvZ2dlciAgID0gbGF6eVJlcXVpcmUoJy4uL3JlcXVlc3QtaG9va3MvcmVxdWVzdC1sb2dnZXInKTtcbmNvbnN0IGNyZWF0ZVJlcXVlc3RNb2NrICAgICA9IGxhenlSZXF1aXJlKCcuLi9yZXF1ZXN0LWhvb2tzL3JlcXVlc3QtbW9jay9jcmVhdGUtcmVxdWVzdC1tb2NrJyk7XG5jb25zdCB1c2VyVmFyaWFibGVzICAgICAgICAgPSBsYXp5UmVxdWlyZSgnLi4vdXNlci12YXJpYWJsZXMnKTtcblxuLy8gTk9URTogV2UgY2FuJ3QgdXNlIGxhenkgcmVxdWlyZSBmb3IgUmVxdWVzdEhvb2ssIGJlY2F1c2UgaXQgd2lsbCBicmVhayBiYXNlIGNsYXNzIGRldGVjdGlvbiBmb3IgaW5oZXJpdGVkIGNsYXNzZXNcbmxldCBSZXF1ZXN0SG9vayA9IG51bGw7XG5cbi8vIE5PVEU6IFdlIGNhbid0IHVzZSBsYXp5IHJlcXVpcmUgZm9yIHRlc3RDb250cm9sbGVyUHJveHksIGJlY2F1c2UgaXQgd2lsbCBicmVhayB0ZXN0IGNvbnRyb2xsZXIgZGV0ZWN0aW9uXG5sZXQgdGVzdENvbnRyb2xsZXJQcm94eSA9IG51bGw7XG5cbmZ1bmN0aW9uIFJvbGUgKGxvZ2luVXJsLCBpbml0Rm4sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gcm9sZS5jcmVhdGVSb2xlKGxvZ2luVXJsLCBpbml0Rm4sIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBSZXF1ZXN0TW9jayAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJlcXVlc3RNb2NrKCk7XG59XG5cbmZ1bmN0aW9uIFJlcXVlc3RMb2dnZXIgKHJlcXVlc3RGaWx0ZXJSdWxlSW5pdCwgbG9nT3B0aW9ucykge1xuICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0TG9nZ2VyKHJlcXVlc3RGaWx0ZXJSdWxlSW5pdCwgbG9nT3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIENsaWVudEZ1bmN0aW9uIChmbiwgb3B0aW9ucykge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ2xpZW50RnVuY3Rpb25CdWlsZGVyKGZuLCBvcHRpb25zLCB7IGluc3RhbnRpYXRpb246ICdDbGllbnRGdW5jdGlvbicgfSk7XG5cbiAgICByZXR1cm4gYnVpbGRlci5nZXRGdW5jdGlvbigpO1xufVxuXG5mdW5jdGlvbiBTZWxlY3RvciAoZm4sIG9wdGlvbnMpIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFNlbGVjdG9yQnVpbGRlcihmbiwgb3B0aW9ucywgeyBpbnN0YW50aWF0aW9uOiAnU2VsZWN0b3InIH0pO1xuXG4gICAgcmV0dXJuIGJ1aWxkZXIuZ2V0RnVuY3Rpb24oKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJvbGUsICdhbm9ueW1vdXMnLCB7XG4gICAgZ2V0OiAoKSA9PiByb2xlLmNyZWF0ZUFub255bW91c1JvbGUsXG59KTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIFJvbGUsXG5cbiAgICBDbGllbnRGdW5jdGlvbixcblxuICAgIFNlbGVjdG9yLFxuXG4gICAgUmVxdWVzdExvZ2dlcixcblxuICAgIFJlcXVlc3RNb2NrLFxuXG4gICAgZ2V0IFJlcXVlc3RIb29rICgpIHtcbiAgICAgICAgaWYgKCFSZXF1ZXN0SG9vaylcbiAgICAgICAgICAgIFJlcXVlc3RIb29rID0gcmVxdWlyZSgnLi4vcmVxdWVzdC1ob29rcy9ob29rJyk7XG5cbiAgICAgICAgcmV0dXJuIFJlcXVlc3RIb29rO1xuICAgIH0sXG5cbiAgICBnZXQgdCAoKSB7XG4gICAgICAgIGlmICghdGVzdENvbnRyb2xsZXJQcm94eSlcbiAgICAgICAgICAgIHRlc3RDb250cm9sbGVyUHJveHkgPSByZXF1aXJlKCcuLi90ZXN0LWNvbnRyb2xsZXIvcHJveHknKTtcblxuICAgICAgICByZXR1cm4gdGVzdENvbnRyb2xsZXJQcm94eTtcbiAgICB9LFxuXG4gICAgZ2V0IHVzZXJWYXJpYWJsZXMgKCkge1xuICAgICAgICByZXR1cm4gdXNlclZhcmlhYmxlcy52YWx1ZTtcbiAgICB9LFxufTtcbiJdfQ==
@@ -73,6 +73,7 @@ function createExecutionContext(testRun) {
73
73
  RequestMock: exportable_lib_1.default.RequestMock,
74
74
  RequestHook: exportable_lib_1.default.RequestHook,
75
75
  [OPTIONS_KEY]: exports.DEFAULT_CONTEXT_OPTIONS,
76
+ userVariables: exportable_lib_1.default.userVariables,
76
77
  };
77
78
  return vm_1.createContext(new Proxy(replacers, {
78
79
  get: (target, property) => {
@@ -85,4 +86,4 @@ function createExecutionContext(testRun) {
85
86
  }));
86
87
  }
87
88
  exports.createExecutionContext = createExecutionContext;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3Rlc3QtY29udHJvbGxlci9leGVjdXRpb24tY29udGV4dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBbUM7QUFDbkMsb0RBQTRCO0FBQzVCLGdEQUF3QjtBQUN4Qix1RUFBOEM7QUFDOUMscUdBQWlFO0FBRWpFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV6QixRQUFBLHVCQUF1QixHQUFHO0lBQ25DLG1CQUFtQixFQUFFLEtBQUs7SUFDMUIsY0FBYyxFQUFPLEtBQUs7Q0FDN0IsQ0FBQztBQUVGLFNBQVMsa0JBQWtCLENBQUUsV0FBVztJQUNwQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxTQUFTLEdBQUssY0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU1QyxPQUFPLFdBQVcsS0FBSyxTQUFTLEVBQUU7UUFDOUIsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUN4QixTQUFTLEdBQUssY0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4QyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGtDQUFZLENBQUMsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFFLFFBQVE7SUFDNUIsZ0NBQWdDO0lBQ2hDLElBQUksZ0JBQU0sQ0FBQyxxQkFBcUI7UUFDNUIsT0FBTyxnQkFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWxELElBQUksZ0JBQU0sQ0FBQyxhQUFhO1FBQ3BCLE9BQU8sZ0JBQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFMUMsTUFBTSxXQUFXLEdBQVksSUFBSSxnQkFB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R0FBRyxRQUFRLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsQ0FBQztLQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQztBQTVCRCx3REE0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSAndm0nO1xuaW1wb3J0IE1vZHVsZSBmcm9tICdtb2R1bGUnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZXhwb3J0YWJsZUxpYiBmcm9tICcuLi9leHBvcnRhYmxlLWxpYic7XG5pbXBvcnQgTk9ERV9NT0RVTEVTIGZyb20gJy4uLy4uL3NoYXJlZC9ub2RlLW1vZHVsZXMtZm9sZGVyLW5hbWUnO1xuXG5jb25zdCBPUFRJT05TX0tFWSA9IFN5bWJvbCgnb3B0aW9ucycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05URVhUX09QVElPTlMgPSB7XG4gICAgc2tpcFZpc2liaWxpdHlDaGVjazogZmFsc2UsXG4gICAgY29sbGVjdGlvbk1vZGU6ICAgICAgZmFsc2UsXG59O1xuXG5mdW5jdGlvbiBnZXRNb2R1bGVCYXNlUGF0aHMgKGN1cnJlbnRQYXRoKSB7XG4gICAgY29uc3Qgbm9kZVBhdGhzID0gW107XG4gICAgbGV0IHBhcmVudERpciAgID0gcGF0aC5kaXJuYW1lKGN1cnJlbnRQYXRoKTtcblxuICAgIHdoaWxlIChjdXJyZW50UGF0aCAhPT0gcGFyZW50RGlyKSB7XG4gICAgICAgIGN1cnJlbnRQYXRoID0gcGFyZW50RGlyO1xuICAgICAgICBwYXJlbnREaXIgICA9IHBhdGguZGlybmFtZShjdXJyZW50UGF0aCk7XG5cbiAgICAgICAgbm9kZVBhdGhzLnB1c2gocGF0aC5qb2luKGN1cnJlbnRQYXRoLCBOT0RFX01PRFVMRVMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZVBhdGhzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXF1aXJlIChmaWxlbmFtZSkge1xuICAgIC8vRGVwcmVjYXRlZCBzaW5jZTogTm9kZSB2MTIuMi4wXG4gICAgaWYgKE1vZHVsZS5jcmVhdGVSZXF1aXJlRnJvbVBhdGgpXG4gICAgICAgIHJldHVybiBNb2R1bGUuY3JlYXRlUmVxdWlyZUZyb21QYXRoKGZpbGVuYW1lKTtcblxuICAgIGlmIChNb2R1bGUuY3JlYXRlUmVxdWlyZSlcbiAgICAgICAgcmV0dXJuIE1vZHVsZS5jcmVhdGVSZXF1aXJlKGZpbGVuYW1lKTtcblxuICAgIGNvbnN0IGR1bW15TW9kdWxlICAgICAgICAgID0gbmV3IE1vZHVsZShmaWxlbmFtZSwgbW9kdWxlKTtcbiAgICBjb25zdCBsb2NhbE1vZHVsZXNQYXRocyAgICA9IGdldE1vZHVsZUJhc2VQYXRocyhmaWxlbmFtZSk7XG5cbiAgICBkdW1teU1vZHVsZS5maWxlbmFtZSA9IGZpbGVuYW1lO1xuICAgIGR1bW15TW9kdWxlLnBhdGhzICAgID0gbG9jYWxNb2R1bGVzUGF0aHMuY29uY2F0KG1vZHVsZS5wYXRocyk7XG5cbiAgICByZXR1cm4gaWQgPT4gZHVtbXlNb2R1bGUucmVxdWlyZShpZCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNlbGVjdG9yRGVmaW5pdGlvbiAodGVzdFJ1bikge1xuICAgIHJldHVybiAoZm4sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCB7IHNraXBWaXNpYmlsaXR5Q2hlY2ssIGNvbGxlY3Rpb25Nb2RlIH0gPSB0ZXN0UnVuLmNvbnRyb2xsZXIuZ2V0RXhlY3V0aW9uQ29udGV4dCgpW09QVElPTlNfS0VZXTtcblxuICAgICAgICBpZiAoc2tpcFZpc2liaWxpdHlDaGVjaylcbiAgICAgICAgICAgIG9wdGlvbnMudmlzaWJpbGl0eUNoZWNrID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRlc3RSdW4gJiYgdGVzdFJ1bi5pZClcbiAgICAgICAgICAgIG9wdGlvbnMuYm91bmRUZXN0UnVuID0gdGVzdFJ1bjtcblxuICAgICAgICBpZiAoY29sbGVjdGlvbk1vZGUpXG4gICAgICAgICAgICBvcHRpb25zLmNvbGxlY3Rpb25Nb2RlID0gY29sbGVjdGlvbk1vZGU7XG5cbiAgICAgICAgcmV0dXJuIGV4cG9ydGFibGVMaWIuU2VsZWN0b3IoZm4sIG9wdGlvbnMpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNsaWVudEZ1bmN0aW9uRGVmaW5pdGlvbiAodGVzdFJ1bikge1xuICAgIHJldHVybiAoZm4sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgICBpZiAodGVzdFJ1biAmJiB0ZXN0UnVuLmlkKVxuICAgICAgICAgICAgb3B0aW9ucy5ib3VuZFRlc3RSdW4gPSB0ZXN0UnVuO1xuXG4gICAgICAgIHJldHVybiBleHBvcnRhYmxlTGliLkNsaWVudEZ1bmN0aW9uKGZuLCBvcHRpb25zKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29udGV4dE9wdGlvbnMgKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBjb250ZXh0W09QVElPTlNfS0VZXSA9IG9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFeGVjdXRpb25Db250ZXh0ICh0ZXN0UnVuKSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSB0ZXN0UnVuLnRlc3QudGVzdEZpbGUuZmlsZW5hbWU7XG5cbiAgICBjb25zdCByZXBsYWNlcnMgPSB7XG4gICAgICAgIHJlcXVpcmU6ICAgICAgICBjcmVhdGVSZXF1aXJlKGZpbGVuYW1lKSxcbiAgICAgICAgX19maWxlbmFtZTogICAgIGZpbGVuYW1lLFxuICAgICAgICBfX2Rpcm5hbWU6ICAgICAgcGF0aC5kaXJuYW1lKGZpbGVuYW1lKSxcbiAgICAgICAgdDogICAgICAgICAgICAgIHRlc3RSdW4uY29udHJvbGxlcixcbiAgICAgICAgU2VsZWN0b3I6ICAgICAgIGNyZWF0ZVNlbGVjdG9yRGVmaW5pdGlvbih0ZXN0UnVuKSxcbiAgICAgICAgQ2xpZW50RnVuY3Rpb246IGNyZWF0ZUNsaWVudEZ1bmN0aW9uRGVmaW5pdGlvbih0ZXN0UnVuKSxcbiAgICAgICAgUm9sZTogICAgICAgICAgIGV4cG9ydGFibGVMaWIuUm9sZSxcbiAgICAgICAgUmVxdWVzdExvZ2dlcjogIGV4cG9ydGFibGVMaWIuUmVxdWVzdExvZ2dlcixcbiAgICAgICAgUmVxdWVzdE1vY2s6ICAgIGV4cG9ydGFibGVMaWIuUmVxdWVzdE1vY2ssXG4gICAgICAgIFJlcXVlc3RIb29rOiAgICBleHBvcnRhYmxlTGliLlJlcXVlc3RIb29rLFxuICAgICAgICBbT1BUSU9OU19LRVldOiAgREVGQVVMVF9DT05URVhUX09QVElPTlMsXG4gICAgfTtcblxuICAgIHJldHVybiBjcmVhdGVDb250ZXh0KG5ldyBQcm94eShyZXBsYWNlcnMsIHtcbiAgICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcGxhY2Vycy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vyc1twcm9wZXJ0eV07XG5cbiAgICAgICAgICAgIGlmIChnbG9iYWwuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxbcHJvcGVydHldO1xuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHl9IGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgICAgIH0sXG4gICAgfSkpO1xufVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3Rlc3QtY29udHJvbGxlci9leGVjdXRpb24tY29udGV4dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBbUM7QUFDbkMsb0RBQTRCO0FBQzVCLGdEQUF3QjtBQUN4Qix1RUFBOEM7QUFDOUMscUdBQWlFO0FBRWpFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV6QixRQUFBLHVCQUF1QixHQUFHO0lBQ25DLG1CQUFtQixFQUFFLEtBQUs7SUFDMUIsY0FBYyxFQUFPLEtBQUs7Q0FDN0IsQ0FBQztBQUVGLFNBQVMsa0JBQWtCLENBQUUsV0FBVztJQUNwQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxTQUFTLEdBQUssY0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU1QyxPQUFPLFdBQVcsS0FBSyxTQUFTLEVBQUU7UUFDOUIsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUN4QixTQUFTLEdBQUssY0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4QyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGtDQUFZLENBQUMsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFFLFFBQVE7SUFDNUIsZ0NBQWdDO0lBQ2hDLElBQUksZ0JBQU0sQ0FBQyxxQkFBcUI7UUFDNUIsT0FBTyxnQkFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWxELElBQUksZ0JBQU0sQ0FBQyxhQUFhO1FBQ3BCLE9BQU8sZ0JBQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFMUMsTUFBTSxXQUFXLEdBQVksSUFBSSxnQkFB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LENBQUM7WUFFNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFFBQVEsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxDQUFDO0tBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDO0FBN0JELHdEQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tICd2bSc7XG5pbXBvcnQgTW9kdWxlIGZyb20gJ21vZHVsZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBleHBvcnRhYmxlTGliIGZyb20gJy4uL2V4cG9ydGFibGUtbGliJztcbmltcG9ydCBOT0RFX01PRFVMRVMgZnJvbSAnLi4vLi4vc2hhcmVkL25vZGUtbW9kdWxlcy1mb2xkZXItbmFtZSc7XG5cbmNvbnN0IE9QVElPTlNfS0VZID0gU3ltYm9sKCdvcHRpb25zJyk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTlRFWFRfT1BUSU9OUyA9IHtcbiAgICBza2lwVmlzaWJpbGl0eUNoZWNrOiBmYWxzZSxcbiAgICBjb2xsZWN0aW9uTW9kZTogICAgICBmYWxzZSxcbn07XG5cbmZ1bmN0aW9uIGdldE1vZHVsZUJhc2VQYXRocyAoY3VycmVudFBhdGgpIHtcbiAgICBjb25zdCBub2RlUGF0aHMgPSBbXTtcbiAgICBsZXQgcGFyZW50RGlyICAgPSBwYXRoLmRpcm5hbWUoY3VycmVudFBhdGgpO1xuXG4gICAgd2hpbGUgKGN1cnJlbnRQYXRoICE9PSBwYXJlbnREaXIpIHtcbiAgICAgICAgY3VycmVudFBhdGggPSBwYXJlbnREaXI7XG4gICAgICAgIHBhcmVudERpciAgID0gcGF0aC5kaXJuYW1lKGN1cnJlbnRQYXRoKTtcblxuICAgICAgICBub2RlUGF0aHMucHVzaChwYXRoLmpvaW4oY3VycmVudFBhdGgsIE5PREVfTU9EVUxFUykpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlUGF0aHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlcXVpcmUgKGZpbGVuYW1lKSB7XG4gICAgLy9EZXByZWNhdGVkIHNpbmNlOiBOb2RlIHYxMi4yLjBcbiAgICBpZiAoTW9kdWxlLmNyZWF0ZVJlcXVpcmVGcm9tUGF0aClcbiAgICAgICAgcmV0dXJuIE1vZHVsZS5jcmVhdGVSZXF1aXJlRnJvbVBhdGgoZmlsZW5hbWUpO1xuXG4gICAgaWYgKE1vZHVsZS5jcmVhdGVSZXF1aXJlKVxuICAgICAgICByZXR1cm4gTW9kdWxlLmNyZWF0ZVJlcXVpcmUoZmlsZW5hbWUpO1xuXG4gICAgY29uc3QgZHVtbXlNb2R1bGUgICAgICAgICAgPSBuZXcgTW9kdWxlKGZpbGVuYW1lLCBtb2R1bGUpO1xuICAgIGNvbnN0IGxvY2FsTW9kdWxlc1BhdGhzICAgID0gZ2V0TW9kdWxlQmFzZVBhdGhzKGZpbGVuYW1lKTtcblxuICAgIGR1bW15TW9kdWxlLmZpbGVuYW1lID0gZmlsZW5hbWU7XG4gICAgZHVtbXlNb2R1bGUucGF0aHMgICAgPSBsb2NhbE1vZHVsZXNQYXRocy5jb25jYXQobW9kdWxlLnBhdGhzKTtcblxuICAgIHJldHVybiBpZCA9PiBkdW1teU1vZHVsZS5yZXF1aXJlKGlkKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2VsZWN0b3JEZWZpbml0aW9uICh0ZXN0UnVuKSB7XG4gICAgcmV0dXJuIChmbiwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2tpcFZpc2liaWxpdHlDaGVjaywgY29sbGVjdGlvbk1vZGUgfSA9IHRlc3RSdW4uY29udHJvbGxlci5nZXRFeGVjdXRpb25Db250ZXh0KClbT1BUSU9OU19LRVldO1xuXG4gICAgICAgIGlmIChza2lwVmlzaWJpbGl0eUNoZWNrKVxuICAgICAgICAgICAgb3B0aW9ucy52aXNpYmlsaXR5Q2hlY2sgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGVzdFJ1biAmJiB0ZXN0UnVuLmlkKVxuICAgICAgICAgICAgb3B0aW9ucy5ib3VuZFRlc3RSdW4gPSB0ZXN0UnVuO1xuXG4gICAgICAgIGlmIChjb2xsZWN0aW9uTW9kZSlcbiAgICAgICAgICAgIG9wdGlvbnMuY29sbGVjdGlvbk1vZGUgPSBjb2xsZWN0aW9uTW9kZTtcblxuICAgICAgICByZXR1cm4gZXhwb3J0YWJsZUxpYi5TZWxlY3Rvcihmbiwgb3B0aW9ucyk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50RnVuY3Rpb25EZWZpbml0aW9uICh0ZXN0UnVuKSB7XG4gICAgcmV0dXJuIChmbiwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGlmICh0ZXN0UnVuICYmIHRlc3RSdW4uaWQpXG4gICAgICAgICAgICBvcHRpb25zLmJvdW5kVGVzdFJ1biA9IHRlc3RSdW47XG5cbiAgICAgICAgcmV0dXJuIGV4cG9ydGFibGVMaWIuQ2xpZW50RnVuY3Rpb24oZm4sIG9wdGlvbnMpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb250ZXh0T3B0aW9ucyAoY29udGV4dCwgb3B0aW9ucykge1xuICAgIGNvbnRleHRbT1BUSU9OU19LRVldID0gb3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV4ZWN1dGlvbkNvbnRleHQgKHRlc3RSdW4pIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHRlc3RSdW4udGVzdC50ZXN0RmlsZS5maWxlbmFtZTtcblxuICAgIGNvbnN0IHJlcGxhY2VycyA9IHtcbiAgICAgICAgcmVxdWlyZTogICAgICAgIGNyZWF0ZVJlcXVpcmUoZmlsZW5hbWUpLFxuICAgICAgICBfX2ZpbGVuYW1lOiAgICAgZmlsZW5hbWUsXG4gICAgICAgIF9fZGlybmFtZTogICAgICBwYXRoLmRpcm5hbWUoZmlsZW5hbWUpLFxuICAgICAgICB0OiAgICAgICAgICAgICAgdGVzdFJ1bi5jb250cm9sbGVyLFxuICAgICAgICBTZWxlY3RvcjogICAgICAgY3JlYXRlU2VsZWN0b3JEZWZpbml0aW9uKHRlc3RSdW4pLFxuICAgICAgICBDbGllbnRGdW5jdGlvbjogY3JlYXRlQ2xpZW50RnVuY3Rpb25EZWZpbml0aW9uKHRlc3RSdW4pLFxuICAgICAgICBSb2xlOiAgICAgICAgICAgZXhwb3J0YWJsZUxpYi5Sb2xlLFxuICAgICAgICBSZXF1ZXN0TG9nZ2VyOiAgZXhwb3J0YWJsZUxpYi5SZXF1ZXN0TG9nZ2VyLFxuICAgICAgICBSZXF1ZXN0TW9jazogICAgZXhwb3J0YWJsZUxpYi5SZXF1ZXN0TW9jayxcbiAgICAgICAgUmVxdWVzdEhvb2s6ICAgIGV4cG9ydGFibGVMaWIuUmVxdWVzdEhvb2ssXG4gICAgICAgIFtPUFRJT05TX0tFWV06ICBERUZBVUxUX0NPTlRFWFRfT1BUSU9OUyxcbiAgICAgICAgdXNlclZhcmlhYmxlczogIGV4cG9ydGFibGVMaWIudXNlclZhcmlhYmxlcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNyZWF0ZUNvbnRleHQobmV3IFByb3h5KHJlcGxhY2Vycywge1xuICAgICAgICBnZXQ6ICh0YXJnZXQsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVwbGFjZXJzLmhhc093blByb3BlcnR5KHByb3BlcnR5KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVwbGFjZXJzW3Byb3BlcnR5XTtcblxuICAgICAgICAgICAgaWYgKGdsb2JhbC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFtwcm9wZXJ0eV07XG5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwcm9wZXJ0eX0gaXMgbm90IGRlZmluZWRgKTtcbiAgICAgICAgfSxcbiAgICB9KSk7XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ _variables: null,
5
+ get value() {
6
+ return this._variables;
7
+ },
8
+ set value(value) {
9
+ this._variables = value;
10
+ },
11
+ };
12
+ module.exports = exports.default;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3VzZXItdmFyaWFibGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWU7SUFDWCxVQUFVLEVBQUUsSUFBbUI7SUFFL0IsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBRSxLQUFLO1FBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gICAgX3ZhcmlhYmxlczogbnVsbCBhcyBPcHRpb25WYWx1ZSxcblxuICAgIGdldCB2YWx1ZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YXJpYWJsZXM7XG4gICAgfSxcblxuICAgIHNldCB2YWx1ZSAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fdmFyaWFibGVzID0gdmFsdWU7XG4gICAgfSxcbn07XG4iXX0=
@@ -82,6 +82,11 @@ exports.default = {
82
82
  const browserClient = this._getBrowserProtocolClient(runtimeInfo);
83
83
  return browserClient.executeClientFunction(command, callsite);
84
84
  },
85
+ async executeSelector({ browserId, command, callsite, selectorTimeout }) {
86
+ const runtimeInfo = this.openedBrowsers[browserId];
87
+ const browserClient = this._getBrowserProtocolClient(runtimeInfo);
88
+ return browserClient.executeSelector(command, callsite, selectorTimeout);
89
+ },
85
90
  async switchToIframe(browserId) {
86
91
  const runtimeInfo = this.openedBrowsers[browserId];
87
92
  const browserClient = this._getBrowserProtocolClient(runtimeInfo);
@@ -94,4 +99,4 @@ exports.default = {
94
99
  },
95
100
  };
96
101
  module.exports = exports.default;
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL2J1aWx0LWluL2RlZGljYXRlZC9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUVBQXdEO0FBQ3hELHdIQUE0RjtBQUM1Rix1REFBOEQ7QUFDOUQsbUZBQTRFO0FBRTVFLGtCQUFlO0lBQ1gsY0FBYyxFQUFFLEVBQUU7SUFFbEIsY0FBYyxFQUFFLEtBQUs7SUFFckIsc0JBQXNCLEVBQUUsSUFBSTtJQUU1QixpQkFBaUIsQ0FBRSxTQUFTO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDekQsQ0FBQztJQUVELGlCQUFpQixDQUFFLFNBQVMsRUFBRSxHQUFHO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztJQUN4RCxDQUFDO0lBRUQsWUFBWSxDQUFFLFNBQVM7UUFDbkIsTUFBTSxXQUFXLEdBQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDO1FBRTNFLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7SUFDcEUsQ0FBQztJQUVELG1CQUFtQixDQUFFLFNBQVM7UUFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuRCxPQUFPLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELG1CQUFtQixDQUFFLFNBQVMsRUFBRSxnQkFBZ0I7UUFDNUMs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QyxxQkFBcUIsQ0FBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVE7UUFDckQsTUFBTSxXQUFXLEdBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEUsT0FBTyxhQUFhLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFFLFNBQVM7UUFDM0IsTUFBTSxXQUFXLEdBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEUsT0FBTyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBRSxTQUFTO1FBQy9CLE1BQU0sV0FBVyxHQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWxFLE9BQU8sYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDOUMsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRCcm93c2VySW5mbyB9IGZyb20gJ3Rlc3RjYWZlLWJyb3dzZXItdG9vbHMnO1xuaW1wb3J0IGdldE1heGltaXplZEhlYWRsZXNzV2luZG93U2l6ZSBmcm9tICcuLi8uLi91dGlscy9nZXQtbWF4aW1pemVkLWhlYWRsZXNzLXdpbmRvdy1zaXplJztcbmltcG9ydCB7IGNyb3BTY3JlZW5zaG90IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2NyZWVuc2hvdHMvY3JvcCc7XG5pbXBvcnQgeyByZWFkUG5nLCB3cml0ZVBuZyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3Byb21pc2lmaWVkLWZ1bmN0aW9ucyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBvcGVuZWRCcm93c2Vyczoge30sXG5cbiAgICBpc011bHRpQnJvd3NlcjogZmFsc2UsXG5cbiAgICBzdXBwb3J0TXVsdGlwbGVXaW5kb3dzOiB0cnVlLFxuXG4gICAgZ2V0QWN0aXZlV2luZG93SWQgKGJyb3dzZXJJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdLmFjdGl2ZVdpbmRvd0lkO1xuICAgIH0sXG5cbiAgICBzZXRBY3RpdmVXaW5kb3dJZCAoYnJvd3NlcklkLCB2YWwpIHtcbiAgICAgICAgdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdLmFjdGl2ZVdpbmRvd0lkID0gdmFsO1xuICAgIH0sXG5cbiAgICBnZXRQYWdlVGl0bGUgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyAgICAgPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGlzSWRsZVBhZ2VTaG93biA9ICFPYmplY3Qua2V5cyhydW50aW1lSW5mby53aW5kb3dEZXNjcmlwdG9ycykubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBpc0lkbGVQYWdlU2hvd24gPyBicm93c2VySWQgOiBydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZDtcbiAgICB9LFxuXG4gICAgZ2V0V2luZG93RGVzY3JpcHRvciAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVJbmZvID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuXG4gICAgICAgIHJldHVybiBydW50aW1lSW5mby53aW5kb3dEZXNjcmlwdG9yc1tydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZF07XG4gICAgfSxcblxuICAgIHNldFdpbmRvd0Rlc2NyaXB0b3IgKGJyb3dzZXJJZCwgd2luZG93RGVzY3JpcHRvcikge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBydW50aW1lSW5mby53aW5kb3dEZXNjcmlwdG9yc1tydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZF0gPSB3aW5kb3dEZXNjcmlwdG9yO1xuICAgIH0sXG5cbiAgICBnZXRDb25maWcgKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH0sXG5cbiAgICBfZ2V0QnJvd3NlclByb3RvY29sQ2xpZW50ICgvKiBydW50aW1lSW5mbyAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH0sXG5cbiAgICBfZ2V0QnJvd3Nlck5hbWUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlck5hbWUucmVwbGFjZSgnOicsICcnKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaXNWYWxpZEJyb3dzZXJOYW1lIChicm93c2VyTmFtZSkge1xuICAgICAgICBjb25zdCBjb25maWcgICAgICA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnKGJyb3dzZXJOYW1lKTtcbiAgICAgICAgY29uc3QgYnJvd3NlckluZm8gPSBhd2FpdCBnZXRCcm93c2VySW5mbyhjb25maWcucGF0aCB8fCB0aGlzLl9nZXRCcm93c2VyTmFtZSgpKTtcblxuICAgICAgICByZXR1cm4gISFicm93c2VySW5mbztcbiAgICB9LFxuXG4gICAgYXN5bmMgaXNMb2NhbEJyb3dzZXIgKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuXG4gICAgaXNIZWFkbGVzc0Jyb3dzZXIgKGJyb3dzZXJJZCwgYnJvd3Nlck5hbWUpIHtcbiAgICAgICAgaWYgKGJyb3dzZXJJZClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF0uY29uZmlnLmhlYWRsZXNzO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKGJyb3dzZXJOYW1lKTtcblxuICAgICAgICByZXR1cm4gISFjb25maWcuaGVhZGxlc3M7XG4gICAgfSxcblxuICAgIF9nZXRDcm9wRGltZW5zaW9ucyAodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgaWYgKCF2aWV3cG9ydFdpZHRoIHx8ICF2aWV3cG9ydEhlaWdodClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWZ0OiAgIDAsXG4gICAgICAgICAgICB0b3A6ICAgIDAsXG4gICAgICAgICAgICByaWdodDogIHZpZXdwb3J0V2lkdGgsXG4gICAgICAgICAgICBib3R0b206IHZpZXdwb3J0SGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyB0YWtlU2NyZWVuc2hvdCAoYnJvd3NlcklkLCBwYXRoLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCwgZnVsbFBhZ2UpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICAgPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGJyb3dzZXJDbGllbnQgID0gdGhpcy5fZ2V0QnJvd3NlclByb3RvY29sQ2xpZW50KHJ1bnRpbWVJbmZvKTtcbiAgICAgICAgY29uc3QgYmluYXJ5SW1hZ2UgICAgPSBhd2FpdCBicm93c2VyQ2xpZW50LmdldFNjcmVlbnNob3REYXRhKGZ1bGxQYWdlKTtcbiAgICAgICAgY29uc3QgY3JvcERpbWVuc2lvbnMgPSB0aGlzLl9nZXRDcm9wRGltZW5zaW9ucyh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7XG5cbiAgICAgICAgbGV0IHBuZ0ltYWdlID0gYXdhaXQgcmVhZFBuZyhiaW5hcnlJbWFnZSk7XG5cbiAgICAgICAgaWYgKCFmdWxsUGFnZSlcbiAgICAgICAgICAgIHBuZ0ltYWdlID0gYXdhaXQgY3JvcFNjcmVlbnNob3QocG5nSW1hZ2UsIHsgcGF0aCwgY3JvcERpbWVuc2lvbnMgfSkgfHwgcG5nSW1hZ2U7XG5cbiAgICAgICAgYXdhaXQgd3JpdGVQbmcocGF0aCwgcG5nSW1hZ2UpO1xuICAgIH0sXG5cbiAgICBhc3luYyBtYXhpbWl6ZVdpbmRvdyAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IG1heGltdW1TaXplID0gZ2V0TWF4aW1pemVkSGVhZGxlc3NXaW5kb3dTaXplKCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZXNpemVXaW5kb3coYnJvd3NlcklkLCBtYXhpbXVtU2l6ZS53aWR0aCwgbWF4aW11bVNpemUuaGVpZ2h0LCBtYXhpbXVtU2l6ZS53aWR0aCwgbWF4aW11bVNpemUuaGVpZ2h0KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZXhlY3V0ZUNsaWVudEZ1bmN0aW9uIChicm93c2VySWQsIGNvbW1hbmQsIGNhbGxzaXRlKSB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVJbmZvICAgPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGJyb3dzZXJDbGllbnQgPSB0aGlzLl9nZXRCcm93c2VyUHJvdG9jb2xDbGllbnQocnVudGltZUluZm8pO1xuXG4gICAgICAgIHJldHVybiBicm93c2VyQ2xpZW50LmV4ZWN1dGVDbGllbnRGdW5jdGlvbihjb21tYW5kLCBjYWxsc2l0ZSk7XG4gICAgfSxcblxuICAgIGFzeW5jIHN3aXRjaFRvSWZyYW1lIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICAgICAgY29uc3QgYnJvd3NlckNsaWVudCA9IHRoaXMuX2dldEJyb3dzZXJQcm90b2NvbENsaWVudChydW50aW1lSW5mbyk7XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJDbGllbnQuc3dpdGNoVG9JZnJhbWUoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgc3dpdGNoVG9NYWluV2luZG93IChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICAgICAgY29uc3QgYnJvd3NlckNsaWVudCA9IHRoaXMuX2dldEJyb3dzZXJQcm90b2NvbENsaWVudChydW50aW1lSW5mbyk7XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJDbGllbnQuc3dpdGNoVG9NYWluV2luZG93KCk7XG4gICAgfSxcbn07XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL2J1aWx0LWluL2RlZGljYXRlZC9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUVBQXdEO0FBQ3hELHdIQUE0RjtBQUM1Rix1REFBOEQ7QUFDOUQsbUZBQTRFO0FBRTVFLGtCQUFlO0lBQ1gsY0FBYyxFQUFFLEVBQUU7SUFFbEIsY0FBYyxFQUFFLEtBQUs7SUFFckIsc0JBQXNCLEVBQUUsSUFBSTtJQUU1QixpQkFBaUIsQ0FBRSxTQUFTO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDekQsQ0FBQztJQUVELGlCQUFpQixDQUFFLFNBQVMsRUFBRSxHQUFHO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztJQUN4RCxDQUFDO0lBRUQsWUFBWSxDQUFFLFNBQVM7UUFDbkIsTUFBTSxXQUFXLEdBQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDO1FBRTNFLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7SUFDcEUsQ0FBQztJQUVELG1CQUFtQixDQUFFLFNBQVM7UUFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuRCxPQUFPLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELG1CQUFtQixDQUFFLFNBQVMsRUFBRSxnQkFBZ0I7UUFDNUMs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bXBvcnQgeyBnZXRCcm93c2VySW5mbyB9IGZyb20gJ3Rlc3RjYWZlLWJyb3dzZXItdG9vbHMnO1xuaW1wb3J0IGdldE1heGltaXplZEhlYWRsZXNzV2luZG93U2l6ZSBmcm9tICcuLi8uLi91dGlscy9nZXQtbWF4aW1pemVkLWhlYWRsZXNzLXdpbmRvdy1zaXplJztcbmltcG9ydCB7IGNyb3BTY3JlZW5zaG90IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2NyZWVuc2hvdHMvY3JvcCc7XG5pbXBvcnQgeyByZWFkUG5nLCB3cml0ZVBuZyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3Byb21pc2lmaWVkLWZ1bmN0aW9ucyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBvcGVuZWRCcm93c2Vyczoge30sXG5cbiAgICBpc011bHRpQnJvd3NlcjogZmFsc2UsXG5cbiAgICBzdXBwb3J0TXVsdGlwbGVXaW5kb3dzOiB0cnVlLFxuXG4gICAgZ2V0QWN0aXZlV2luZG93SWQgKGJyb3dzZXJJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdLmFjdGl2ZVdpbmRvd0lkO1xuICAgIH0sXG5cbiAgICBzZXRBY3RpdmVXaW5kb3dJZCAoYnJvd3NlcklkLCB2YWwpIHtcbiAgICAgICAgdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdLmFjdGl2ZVdpbmRvd0lkID0gdmFsO1xuICAgIH0sXG5cbiAgICBnZXRQYWdlVGl0bGUgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyAgICAgPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGlzSWRsZVBhZ2VTaG93biA9ICFPYmplY3Qua2V5cyhydW50aW1lSW5mby53aW5kb3dEZXNjcmlwdG9ycykubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBpc0lkbGVQYWdlU2hvd24gPyBicm93c2VySWQgOiBydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZDtcbiAgICB9LFxuXG4gICAgZ2V0V2luZG93RGVzY3JpcHRvciAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVJbmZvID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuXG4gICAgICAgIHJldHVybiBydW50aW1lSW5mby53aW5kb3dEZXNjcmlwdG9yc1tydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZF07XG4gICAgfSxcblxuICAgIHNldFdpbmRvd0Rlc2NyaXB0b3IgKGJyb3dzZXJJZCwgd2luZG93RGVzY3JpcHRvcikge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBydW50aW1lSW5mby53aW5kb3dEZXNjcmlwdG9yc1tydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZF0gPSB3aW5kb3dEZXNjcmlwdG9yO1xuICAgIH0sXG5cbiAgICBnZXRDb25maWcgKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH0sXG5cbiAgICBfZ2V0QnJvd3NlclByb3RvY29sQ2xpZW50ICgvKiBydW50aW1lSW5mbyAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH0sXG5cbiAgICBfZ2V0QnJvd3Nlck5hbWUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlck5hbWUucmVwbGFjZSgnOicsICcnKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaXNWYWxpZEJyb3dzZXJOYW1lIChicm93c2VyTmFtZSkge1xuICAgICAgICBjb25zdCBjb25maWcgICAgICA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnKGJyb3dzZXJOYW1lKTtcbiAgICAgICAgY29uc3QgYnJvd3NlckluZm8gPSBhd2FpdCBnZXRCcm93c2VySW5mbyhjb25maWcucGF0aCB8fCB0aGlzLl9nZXRCcm93c2VyTmFtZSgpKTtcblxuICAgICAgICByZXR1cm4gISFicm93c2VySW5mbztcbiAgICB9LFxuXG4gICAgYXN5bmMgaXNMb2NhbEJyb3dzZXIgKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuXG4gICAgaXNIZWFkbGVzc0Jyb3dzZXIgKGJyb3dzZXJJZCwgYnJvd3Nlck5hbWUpIHtcbiAgICAgICAgaWYgKGJyb3dzZXJJZClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF0uY29uZmlnLmhlYWRsZXNzO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKGJyb3dzZXJOYW1lKTtcblxuICAgICAgICByZXR1cm4gISFjb25maWcuaGVhZGxlc3M7XG4gICAgfSxcblxuICAgIF9nZXRDcm9wRGltZW5zaW9ucyAodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgaWYgKCF2aWV3cG9ydFdpZHRoIHx8ICF2aWV3cG9ydEhlaWdodClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWZ0OiAgIDAsXG4gICAgICAgICAgICB0b3A6ICAgIDAsXG4gICAgICAgICAgICByaWdodDogIHZpZXdwb3J0V2lkdGgsXG4gICAgICAgICAgICBib3R0b206IHZpZXdwb3J0SGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyB0YWtlU2NyZWVuc2hvdCAoYnJvd3NlcklkLCBwYXRoLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCwgZnVsbFBhZ2UpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICAgPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGJyb3dzZXJDbGllbnQgID0gdGhpcy5fZ2V0QnJvd3NlclByb3RvY29sQ2xpZW50KHJ1bnRpbWVJbmZvKTtcbiAgICAgICAgY29uc3QgYmluYXJ5SW1hZ2UgICAgPSBhd2FpdCBicm93c2VyQ2xpZW50LmdldFNjcmVlbnNob3REYXRhKGZ1bGxQYWdlKTtcbiAgICAgICAgY29uc3QgY3JvcERpbWVuc2lvbnMgPSB0aGlzLl9nZXRDcm9wRGltZW5zaW9ucyh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7XG5cbiAgICAgICAgbGV0IHBuZ0ltYWdlID0gYXdhaXQgcmVhZFBuZyhiaW5hcnlJbWFnZSk7XG5cbiAgICAgICAgaWYgKCFmdWxsUGFnZSlcbiAgICAgICAgICAgIHBuZ0ltYWdlID0gYXdhaXQgY3JvcFNjcmVlbnNob3QocG5nSW1hZ2UsIHsgcGF0aCwgY3JvcERpbWVuc2lvbnMgfSkgfHwgcG5nSW1hZ2U7XG5cbiAgICAgICAgYXdhaXQgd3JpdGVQbmcocGF0aCwgcG5nSW1hZ2UpO1xuICAgIH0sXG5cbiAgICBhc3luYyBtYXhpbWl6ZVdpbmRvdyAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IG1heGltdW1TaXplID0gZ2V0TWF4aW1pemVkSGVhZGxlc3NXaW5kb3dTaXplKCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZXNpemVXaW5kb3coYnJvd3NlcklkLCBtYXhpbXVtU2l6ZS53aWR0aCwgbWF4aW11bVNpemUuaGVpZ2h0LCBtYXhpbXVtU2l6ZS53aWR0aCwgbWF4aW11bVNpemUuaGVpZ2h0KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZXhlY3V0ZUNsaWVudEZ1bmN0aW9uIChicm93c2VySWQsIGNvbW1hbmQsIGNhbGxzaXRlKSB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVJbmZvICAgPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGJyb3dzZXJDbGllbnQgPSB0aGlzLl9nZXRCcm93c2VyUHJvdG9jb2xDbGllbnQocnVudGltZUluZm8pO1xuXG4gICAgICAgIHJldHVybiBicm93c2VyQ2xpZW50LmV4ZWN1dGVDbGllbnRGdW5jdGlvbihjb21tYW5kLCBjYWxsc2l0ZSk7XG4gICAgfSxcblxuICAgIGFzeW5jIGV4ZWN1dGVTZWxlY3RvciAoeyBicm93c2VySWQsIGNvbW1hbmQsIGNhbGxzaXRlLCBzZWxlY3RvclRpbWVvdXQgfSkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyAgID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuICAgICAgICBjb25zdCBicm93c2VyQ2xpZW50ID0gdGhpcy5fZ2V0QnJvd3NlclByb3RvY29sQ2xpZW50KHJ1bnRpbWVJbmZvKTtcblxuICAgICAgICByZXR1cm4gYnJvd3NlckNsaWVudC5leGVjdXRlU2VsZWN0b3IoY29tbWFuZCwgY2FsbHNpdGUsIHNlbGVjdG9yVGltZW91dCk7XG4gICAgfSxcblxuICAgIGFzeW5jIHN3aXRjaFRvSWZyYW1lIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICAgICAgY29uc3QgYnJvd3NlckNsaWVudCA9IHRoaXMuX2dldEJyb3dzZXJQcm90b2NvbENsaWVudChydW50aW1lSW5mbyk7XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJDbGllbnQuc3dpdGNoVG9JZnJhbWUoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgc3dpdGNoVG9NYWluV2luZG93IChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICAgICAgY29uc3QgYnJvd3NlckNsaWVudCA9IHRoaXMuX2dldEJyb3dzZXJQcm90b2NvbENsaWVudChydW50aW1lSW5mbyk7XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJDbGllbnQuc3dpdGNoVG9NYWluV2luZG93KCk7XG4gICAgfSxcbn07XG4iXX0=
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const errors_1 = require("../../../../../../shared/errors");
4
+ const EXECUTION_CTX_WAS_DESTROYED_CODE = -32000;
5
+ const SELECTOR_MAX_EXECUTE_COUNT = 10;
6
+ const PROXYLESS_SCRIPT = 'window["%proxyless%"]';
7
+ class ClientFunctionExecutor {
8
+ constructor() {
9
+ // new Map<frameId, executionContextId>
10
+ this._frameExecutionContexts = new Map();
11
+ this._currentFrameId = '';
12
+ }
13
+ async evaluateScript(Runtime, expression) {
14
+ const script = { expression, awaitPromise: true };
15
+ if (this._currentFrameId && this._frameExecutionContexts.has(this._currentFrameId))
16
+ script.contextId = this._frameExecutionContexts.get(this._currentFrameId);
17
+ try {
18
+ const { result, exceptionDetails = null } = await Runtime.evaluate(script);
19
+ return { result, exceptionDetails, error: null };
20
+ }
21
+ catch (error) {
22
+ return { result: null, exceptionDetails: null, error };
23
+ }
24
+ }
25
+ async _evaluateScriptWithReloadPageIgnore(Runtime, expression) {
26
+ let attempts = 0;
27
+ let result;
28
+ let exceptionDetails;
29
+ let error;
30
+ while (attempts++ < SELECTOR_MAX_EXECUTE_COUNT) {
31
+ ({ result, exceptionDetails, error } = await this.evaluateScript(Runtime, expression));
32
+ if (error && error.response.code === EXECUTION_CTX_WAS_DESTROYED_CODE)
33
+ continue;
34
+ break;
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion
37
+ return { result, exceptionDetails, error };
38
+ }
39
+ static _getPropertyByName(properties, name) {
40
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
41
+ return properties.find(prop => prop.name === name).value;
42
+ }
43
+ static _throwException(details, command, callsite) {
44
+ var _a;
45
+ const exception = details.exception;
46
+ if (exception) {
47
+ const className = exception.className;
48
+ const properties = (_a = exception.preview) === null || _a === void 0 ? void 0 : _a.properties;
49
+ if (className === errors_1.UncaughtErrorInCustomDOMPropertyCode.name) {
50
+ throw new errors_1.UncaughtErrorInCustomDOMPropertyCode(command.instantiationCallsiteName, ClientFunctionExecutor._getPropertyByName(properties, 'errMsg'), ClientFunctionExecutor._getPropertyByName(properties, 'property'), callsite);
51
+ }
52
+ else if (className === errors_1.CannotObtainInfoForElementSpecifiedBySelectorError.name) {
53
+ throw new errors_1.CannotObtainInfoForElementSpecifiedBySelectorError(callsite, {
54
+ apiFnChain: command.apiFnChain,
55
+ apiFnIndex: parseInt(ClientFunctionExecutor._getPropertyByName(properties, 'apiFnIndex'), 10),
56
+ });
57
+ }
58
+ else if (className === errors_1.DomNodeClientFunctionResultError.name)
59
+ throw new errors_1.DomNodeClientFunctionResultError(command.instantiationCallsiteName, callsite);
60
+ else if (className === errors_1.InvalidSelectorResultError.name)
61
+ throw new errors_1.InvalidSelectorResultError(callsite);
62
+ }
63
+ throw new errors_1.UncaughtErrorInClientFunctionCode(command.instantiationCallsiteName, details.text, callsite);
64
+ }
65
+ async executeClientFunction(Runtime, command, callsite) {
66
+ const expression = `${PROXYLESS_SCRIPT}.executeClientFunctionCommand(${JSON.stringify(command)});`;
67
+ const { result, exceptionDetails, error } = await this.evaluateScript(Runtime, expression);
68
+ if (error) {
69
+ if (error.response.code === EXECUTION_CTX_WAS_DESTROYED_CODE)
70
+ throw new errors_1.ClientFunctionExecutionInterruptionError(command.instantiationCallsiteName, callsite);
71
+ throw error;
72
+ }
73
+ if (exceptionDetails)
74
+ ClientFunctionExecutor._throwException(exceptionDetails, command, callsite);
75
+ return JSON.parse(result.value); // eslint-disable-line @typescript-eslint/no-non-null-assertion
76
+ }
77
+ async executeSelector(Runtime, command, callsite, selectorTimeout) {
78
+ const expression = `${PROXYLESS_SCRIPT}.executeSelectorCommand(${JSON.stringify(command)}, ${selectorTimeout}, ${Date.now()});`;
79
+ const { result, exceptionDetails, error } = await this._evaluateScriptWithReloadPageIgnore(Runtime, expression);
80
+ if (error)
81
+ throw error;
82
+ if (exceptionDetails)
83
+ ClientFunctionExecutor._throwException(exceptionDetails, command, callsite);
84
+ return JSON.parse(result.value); // eslint-disable-line @typescript-eslint/no-non-null-assertion
85
+ }
86
+ setupFramesWatching(Runtime) {
87
+ Runtime.on('executionContextCreated', (event) => {
88
+ var _a;
89
+ if (!((_a = event.context.auxData) === null || _a === void 0 ? void 0 : _a.frameId))
90
+ return;
91
+ this._frameExecutionContexts.set(event.context.auxData.frameId, event.context.id);
92
+ });
93
+ Runtime.on('executionContextDestroyed', (event) => {
94
+ for (const [frameId, executionContextId] of this._frameExecutionContexts.entries()) {
95
+ if (executionContextId === event.executionContextId)
96
+ this._frameExecutionContexts.delete(frameId);
97
+ }
98
+ });
99
+ Runtime.on('executionContextsCleared', () => {
100
+ this._currentFrameId = '';
101
+ this._frameExecutionContexts.clear();
102
+ });
103
+ }
104
+ setCurrentFrameId(frameId) {
105
+ this._currentFrameId = frameId;
106
+ }
107
+ }
108
+ exports.default = ClientFunctionExecutor;
109
+ module.exports = exports.default;
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWZ1bmN0aW9uLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9jZHAtY2xpZW50L2NsaWVudC1mdW5jdGlvbi1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLDREQUt5QztBQW9CekMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUNoRCxNQUFNLDBCQUEwQixHQUFTLEVBQUUsQ0FBQztBQUM1QyxNQUFNLGdCQUFnQixHQUFtQix1QkFBdUIsQ0FBQztBQUdqRSxNQUFxQixzQkFBc0I7SUFBM0M7UUFDSSx1Q0FBdUM7UUFDdEIsNEJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDN0Qsb0JBQWUsR0FBVyxFQUFFLENBQUM7SUE4SHpDLENBQUM7SUE1SFUsS0FBSyxDQUFDLGNBQWMsQ0FBRSxPQUFtQixFQUFFLFVBQWtCO1FBQ2hFLE1BQU0sTUFBTSxHQUFvQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFbkUsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5RSxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTlFLElBQUk7WUFDQSxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLElBQUksRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNwRDtRQUNELE9BQU8s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Q0FBRSxPQUFtQjtRQUMzQyxPQUFPLENBQUMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLENBQUMsS0FBb0QsRUFBRSxFQUFFOztZQUMzRixJQUFJLFFBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLDBDQUFFLE9BQU8sQ0FBQTtnQkFDL0IsT0FBTztZQUVYLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLENBQUMsS0FBc0QsRUFBRSxFQUFFO1lBQy9GLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDaEYsSUFBSSxrQkFBa0IsS0FBSyxLQUFLLENBQUMsa0JBQWtCO29CQUMvQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3BEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0saUJBQWlCLENBQUUsT0FBZTtRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUFqSUQseUNBaUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCB7IENhbGxzaXRlUmVjb3JkIH0gZnJvbSAnY2FsbHNpdGUtcmVjb3JkJztcbmltcG9ydCBQcm90b2NvbFByb3h5QXBpIGZyb20gJ2RldnRvb2xzLXByb3RvY29sL3R5cGVzL3Byb3RvY29sLXByb3h5LWFwaSc7XG5pbXBvcnQgUnVudGltZUFwaSA9IFByb3RvY29sUHJveHlBcGkuUnVudGltZUFwaTtcbmltcG9ydCBFdmFsdWF0ZVJlcXVlc3QgPSBQcm90b2NvbC5SdW50aW1lLkV2YWx1YXRlUmVxdWVzdDtcbmltcG9ydCBSZW1vdGVPYmplY3QgPSBQcm90b2NvbC5SdW50aW1lLlJlbW90ZU9iamVjdDtcbmltcG9ydCBFeGNlcHRpb25EZXRhaWxzID0gUHJvdG9jb2wuUnVudGltZS5FeGNlcHRpb25EZXRhaWxzO1xuaW1wb3J0IFByb3BlcnR5UHJldmlldyA9IFByb3RvY29sLlJ1bnRpbWUuUHJvcGVydHlQcmV2aWV3O1xuaW1wb3J0IHtcbiAgICBDYW5ub3RPYnRhaW5JbmZvRm9yRWxlbWVudFNwZWNpZmllZEJ5U2VsZWN0b3JFcnJvcixcbiAgICBDbGllbnRGdW5jdGlvbkV4ZWN1dGlvbkludGVycnVwdGlvbkVycm9yLCBEb21Ob2RlQ2xpZW50RnVuY3Rpb25SZXN1bHRFcnJvcixcbiAgICBJbnZhbGlkU2VsZWN0b3JSZXN1bHRFcnJvciwgVW5jYXVnaHRFcnJvckluQ2xpZW50RnVuY3Rpb25Db2RlLFxuICAgIFVuY2F1Z2h0RXJyb3JJbkN1c3RvbURPTVByb3BlcnR5Q29kZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2Vycm9ycyc7XG5pbXBvcnQge1xuICAgIEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQsXG4gICAgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UsXG4gICAgRXhlY3V0ZVNlbGVjdG9yQ29tbWFuZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24nO1xuXG5cbmludGVyZmFjZSBFdmFsdWF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcmVxdWVzdDogRXZhbHVhdGVSZXF1ZXN0O1xuICAgIHJlc3BvbnNlOiB7IGNvZGU6IG51bWJlciB9O1xufVxuXG5pbnRlcmZhY2UgRXZhbHVhdGVTY3JpcHRSZXN1bHQge1xuICAgIHJlc3VsdDogUmVtb3RlT2JqZWN0IHwgbnVsbDtcbiAgICBleGNlcHRpb25EZXRhaWxzOiBFeGNlcHRpb25EZXRhaWxzIHwgbnVsbDtcbiAgICBlcnJvcjogRXZhbHVhdGlvbkVycm9yIHwgbnVsbDtcbn1cblxuXG5jb25zdCBFWEVDVVRJT05fQ1RYX1dBU19ERVNUUk9ZRURfQ09ERSA9IC0zMjAwMDtcbmNvbnN0IFNFTEVDVE9SX01BWF9FWEVDVVRFX0NPVU5UICAgICAgID0gMTA7XG5jb25zdCBQUk9YWUxFU1NfU0NSSVBUICAgICAgICAgICAgICAgICA9ICd3aW5kb3dbXCIlcHJveHlsZXNzJVwiXSc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xpZW50RnVuY3Rpb25FeGVjdXRvciB7XG4gICAgLy8gbmV3IE1hcDxmcmFtZUlkLCBleGVjdXRpb25Db250ZXh0SWQ+XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZnJhbWVFeGVjdXRpb25Db250ZXh0cyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgcHJpdmF0ZSBfY3VycmVudEZyYW1lSWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgcHVibGljIGFzeW5jIGV2YWx1YXRlU2NyaXB0IChSdW50aW1lOiBSdW50aW1lQXBpLCBleHByZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPEV2YWx1YXRlU2NyaXB0UmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHNjcmlwdDogRXZhbHVhdGVSZXF1ZXN0ID0geyBleHByZXNzaW9uLCBhd2FpdFByb21pc2U6IHRydWUgfTtcblxuICAgICAgICBpZiAodGhpcy5fY3VycmVudEZyYW1lSWQgJiYgdGhpcy5fZnJhbWVFeGVjdXRpb25Db250ZXh0cy5oYXModGhpcy5fY3VycmVudEZyYW1lSWQpKVxuICAgICAgICAgICAgc2NyaXB0LmNvbnRleHRJZCA9IHRoaXMuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMuZ2V0KHRoaXMuX2N1cnJlbnRGcmFtZUlkKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyByZXN1bHQsIGV4Y2VwdGlvbkRldGFpbHMgPSBudWxsIH0gPSBhd2FpdCBSdW50aW1lLmV2YWx1YXRlKHNjcmlwdCk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IHJlc3VsdCwgZXhjZXB0aW9uRGV0YWlscywgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHJlc3VsdDogbnVsbCwgZXhjZXB0aW9uRGV0YWlsczogbnVsbCwgZXJyb3IgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2V2YWx1YXRlU2NyaXB0V2l0aFJlbG9hZFBhZ2VJZ25vcmUgKFJ1bnRpbWU6IFJ1bnRpbWVBcGksIGV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8RXZhbHVhdGVTY3JpcHRSZXN1bHQ+IHtcbiAgICAgICAgbGV0IGF0dGVtcHRzID0gMDtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgbGV0IGV4Y2VwdGlvbkRldGFpbHM7XG4gICAgICAgIGxldCBlcnJvcjtcblxuICAgICAgICB3aGlsZSAoYXR0ZW1wdHMrKyA8IFNFTEVDVE9SX01BWF9FWEVDVVRFX0NPVU5UKSB7XG4gICAgICAgICAgICAoeyByZXN1bHQsIGV4Y2VwdGlvbkRldGFpbHMsIGVycm9yIH0gPSBhd2FpdCB0aGlzLmV2YWx1YXRlU2NyaXB0KFJ1bnRpbWUsIGV4cHJlc3Npb24pKTtcblxuICAgICAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLnJlc3BvbnNlLmNvZGUgPT09IEVYRUNVVElPTl9DVFhfV0FTX0RFU1RST1lFRF9DT0RFKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tb2JqZWN0LWxpdGVyYWwtdHlwZS1hc3NlcnRpb25cbiAgICAgICAgcmV0dXJuIHsgcmVzdWx0LCBleGNlcHRpb25EZXRhaWxzLCBlcnJvciB9IGFzIEV2YWx1YXRlU2NyaXB0UmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRQcm9wZXJ0eUJ5TmFtZSAocHJvcGVydGllczogUHJvcGVydHlQcmV2aWV3W10sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wLm5hbWUgPT09IG5hbWUpIS52YWx1ZSE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3Rocm93RXhjZXB0aW9uIChkZXRhaWxzOiBFeGNlcHRpb25EZXRhaWxzLCBjb21tYW5kOiBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kQmFzZSwgY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkKTogbmV2ZXIge1xuICAgICAgICBjb25zdCBleGNlcHRpb24gPSBkZXRhaWxzLmV4Y2VwdGlvbjtcblxuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc05hbWUgID0gZXhjZXB0aW9uLmNsYXNzTmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBleGNlcHRpb24ucHJldmlldz8ucHJvcGVydGllcyBhcyBQcm9wZXJ0eVByZXZpZXdbXTtcblxuICAgICAgICAgICAgaWYgKGNsYXNzTmFtZSA9PT0gVW5jYXVnaHRFcnJvckluQ3VzdG9tRE9NUHJvcGVydHlDb2RlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5jYXVnaHRFcnJvckluQ3VzdG9tRE9NUHJvcGVydHlDb2RlKGNvbW1hbmQuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fZ2V0UHJvcGVydHlCeU5hbWUocHJvcGVydGllcywgJ2Vyck1zZycpLFxuICAgICAgICAgICAgICAgICAgICBDbGllbnRGdW5jdGlvbkV4ZWN1dG9yLl9nZXRQcm9wZXJ0eUJ5TmFtZShwcm9wZXJ0aWVzLCAncHJvcGVydHknKSxcbiAgICAgICAgICAgICAgICAgICAgY2FsbHNpdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2xhc3NOYW1lID09PSBDYW5ub3RPYnRhaW5JbmZvRm9yRWxlbWVudFNwZWNpZmllZEJ5U2VsZWN0b3JFcnJvci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IENhbm5vdE9idGFpbkluZm9Gb3JFbGVtZW50U3BlY2lmaWVkQnlTZWxlY3RvckVycm9yKGNhbGxzaXRlLCB7XG4gICAgICAgICAgICAgICAgICAgIGFwaUZuQ2hhaW46IGNvbW1hbmQuYXBpRm5DaGFpbixcbiAgICAgICAgICAgICAgICAgICAgYXBpRm5JbmRleDogcGFyc2VJbnQoQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fZ2V0UHJvcGVydHlCeU5hbWUocHJvcGVydGllcywgJ2FwaUZuSW5kZXgnKSwgMTApLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2xhc3NOYW1lID09PSBEb21Ob2RlQ2xpZW50RnVuY3Rpb25SZXN1bHRFcnJvci5uYW1lKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBEb21Ob2RlQ2xpZW50RnVuY3Rpb25SZXN1bHRFcnJvcihjb21tYW5kLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsIGNhbGxzaXRlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNsYXNzTmFtZSA9PT0gSW52YWxpZFNlbGVjdG9yUmVzdWx0RXJyb3IubmFtZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFNlbGVjdG9yUmVzdWx0RXJyb3IoY2FsbHNpdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IFVuY2F1Z2h0RXJyb3JJbkNsaWVudEZ1bmN0aW9uQ29kZShjb21tYW5kLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsIGRldGFpbHMudGV4dCwgY2FsbHNpdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQ2xpZW50RnVuY3Rpb24gKFJ1bnRpbWU6IFJ1bnRpbWVBcGksIGNvbW1hbmQ6IEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQsIGNhbGxzaXRlOiBDYWxsc2l0ZVJlY29yZCk6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBgJHtQUk9YWUxFU1NfU0NSSVBUfS5leGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kKCR7SlNPTi5zdHJpbmdpZnkoY29tbWFuZCl9KTtgO1xuXG4gICAgICAgIGNvbnN0IHsgcmVzdWx0LCBleGNlcHRpb25EZXRhaWxzLCBlcnJvciB9ID0gYXdhaXQgdGhpcy5ldmFsdWF0ZVNjcmlwdChSdW50aW1lLCBleHByZXNzaW9uKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5jb2RlID09PSBFWEVDVVRJT05fQ1RYX1dBU19ERVNUUk9ZRURfQ09ERSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2xpZW50RnVuY3Rpb25FeGVjdXRpb25JbnRlcnJ1cHRpb25FcnJvcihjb21tYW5kLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWUsIGNhbGxzaXRlKTtcblxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhjZXB0aW9uRGV0YWlscylcbiAgICAgICAgICAgIENsaWVudEZ1bmN0aW9uRXhlY3V0b3IuX3Rocm93RXhjZXB0aW9uKGV4Y2VwdGlvbkRldGFpbHMsIGNvbW1hbmQsIGNhbGxzaXRlKTtcblxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHQhLnZhbHVlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVTZWxlY3RvciAoUnVudGltZTogUnVudGltZUFwaSwgY29tbWFuZDogRXhlY3V0ZVNlbGVjdG9yQ29tbWFuZCwgY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkLCBzZWxlY3RvclRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBgJHtQUk9YWUxFU1NfU0NSSVBUfS5leGVjdXRlU2VsZWN0b3JDb21tYW5kKCR7SlNPTi5zdHJpbmdpZnkoY29tbWFuZCl9LCAke3NlbGVjdG9yVGltZW91dH0sICR7RGF0ZS5ub3coKX0pO2A7XG5cbiAgICAgICAgY29uc3QgeyByZXN1bHQsIGV4Y2VwdGlvbkRldGFpbHMsIGVycm9yIH0gPSBhd2FpdCB0aGlzLl9ldmFsdWF0ZVNjcmlwdFdpdGhSZWxvYWRQYWdlSWdub3JlKFJ1bnRpbWUsIGV4cHJlc3Npb24pO1xuXG4gICAgICAgIGlmIChlcnJvcilcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuXG4gICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKVxuICAgICAgICAgICAgQ2xpZW50RnVuY3Rpb25FeGVjdXRvci5fdGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uRGV0YWlscywgY29tbWFuZCwgY2FsbHNpdGUpO1xuXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCEudmFsdWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0dXBGcmFtZXNXYXRjaGluZyAoUnVudGltZTogUnVudGltZUFwaSk6IHZvaWQge1xuICAgICAgICBSdW50aW1lLm9uKCdleGVjdXRpb25Db250ZXh0Q3JlYXRlZCcsIChldmVudDogUHJvdG9jb2wuUnVudGltZS5FeGVjdXRpb25Db250ZXh0Q3JlYXRlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmNvbnRleHQuYXV4RGF0YT8uZnJhbWVJZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMuc2V0KGV2ZW50LmNvbnRleHQuYXV4RGF0YS5mcmFtZUlkLCBldmVudC5jb250ZXh0LmlkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgUnVudGltZS5vbignZXhlY3V0aW9uQ29udGV4dERlc3Ryb3llZCcsIChldmVudDogUHJvdG9jb2wuUnVudGltZS5FeGVjdXRpb25Db250ZXh0RGVzdHJveWVkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ZyYW1lSWQsIGV4ZWN1dGlvbkNvbnRleHRJZF0gb2YgdGhpcy5fZnJhbWVFeGVjdXRpb25Db250ZXh0cy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkID09PSBldmVudC5leGVjdXRpb25Db250ZXh0SWQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHMuZGVsZXRlKGZyYW1lSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBSdW50aW1lLm9uKCdleGVjdXRpb25Db250ZXh0c0NsZWFyZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50RnJhbWVJZCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5fZnJhbWVFeGVjdXRpb25Db250ZXh0cy5jbGVhcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q3VycmVudEZyYW1lSWQgKGZyYW1lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50RnJhbWVJZCA9IGZyYW1lSWQ7XG4gICAgfVxufVxuIl19