appium 2.0.0-beta.46 → 2.0.0-beta.47

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 (138) hide show
  1. package/README.md +145 -44
  2. package/build/lib/appium.d.ts +3 -103
  3. package/build/lib/appium.d.ts.map +1 -1
  4. package/build/lib/appium.js +679 -549
  5. package/build/lib/appium.js.map +1 -1
  6. package/build/lib/cli/args.js +247 -127
  7. package/build/lib/cli/args.js.map +1 -1
  8. package/build/lib/cli/driver-command.js +63 -88
  9. package/build/lib/cli/driver-command.js.map +1 -1
  10. package/build/lib/cli/extension-command.d.ts +32 -23
  11. package/build/lib/cli/extension-command.d.ts.map +1 -1
  12. package/build/lib/cli/extension-command.js +730 -512
  13. package/build/lib/cli/extension-command.js.map +1 -1
  14. package/build/lib/cli/extension.d.ts +7 -6
  15. package/build/lib/cli/extension.d.ts.map +1 -1
  16. package/build/lib/cli/extension.js +68 -65
  17. package/build/lib/cli/extension.js.map +1 -1
  18. package/build/lib/cli/parser.d.ts +3 -3
  19. package/build/lib/cli/parser.d.ts.map +1 -1
  20. package/build/lib/cli/parser.js +234 -192
  21. package/build/lib/cli/parser.js.map +1 -1
  22. package/build/lib/cli/plugin-command.js +58 -87
  23. package/build/lib/cli/plugin-command.js.map +1 -1
  24. package/build/lib/cli/utils.js +66 -69
  25. package/build/lib/cli/utils.js.map +1 -1
  26. package/build/lib/config-file.d.ts.map +1 -1
  27. package/build/lib/config-file.js +189 -120
  28. package/build/lib/config-file.js.map +1 -1
  29. package/build/lib/config.d.ts.map +1 -1
  30. package/build/lib/config.js +254 -213
  31. package/build/lib/config.js.map +1 -1
  32. package/build/lib/constants.d.ts +5 -5
  33. package/build/lib/constants.d.ts.map +1 -1
  34. package/build/lib/constants.js +64 -59
  35. package/build/lib/constants.js.map +1 -1
  36. package/build/lib/extension/driver-config.js +199 -164
  37. package/build/lib/extension/driver-config.js.map +1 -1
  38. package/build/lib/extension/extension-config.d.ts +18 -16
  39. package/build/lib/extension/extension-config.d.ts.map +1 -1
  40. package/build/lib/extension/extension-config.js +523 -396
  41. package/build/lib/extension/extension-config.js.map +1 -1
  42. package/build/lib/extension/index.js +98 -68
  43. package/build/lib/extension/index.js.map +1 -1
  44. package/build/lib/extension/manifest-migrations.d.ts +27 -0
  45. package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
  46. package/build/lib/extension/manifest-migrations.js +99 -0
  47. package/build/lib/extension/manifest-migrations.js.map +1 -0
  48. package/build/lib/extension/manifest.d.ts +7 -56
  49. package/build/lib/extension/manifest.d.ts.map +1 -1
  50. package/build/lib/extension/manifest.js +432 -240
  51. package/build/lib/extension/manifest.js.map +1 -1
  52. package/build/lib/extension/package-changed.js +57 -61
  53. package/build/lib/extension/package-changed.js.map +1 -1
  54. package/build/lib/extension/plugin-config.d.ts +2 -3
  55. package/build/lib/extension/plugin-config.d.ts.map +1 -1
  56. package/build/lib/extension/plugin-config.js +94 -70
  57. package/build/lib/extension/plugin-config.js.map +1 -1
  58. package/build/lib/grid-register.js +119 -137
  59. package/build/lib/grid-register.js.map +1 -1
  60. package/build/lib/logger.d.ts +1 -1
  61. package/build/lib/logger.d.ts.map +1 -1
  62. package/build/lib/logger.js +5 -15
  63. package/build/lib/logger.js.map +1 -1
  64. package/build/lib/logsink.d.ts.map +1 -1
  65. package/build/lib/logsink.js +189 -183
  66. package/build/lib/logsink.js.map +1 -1
  67. package/build/lib/main.d.ts +19 -12
  68. package/build/lib/main.d.ts.map +1 -1
  69. package/build/lib/main.js +330 -304
  70. package/build/lib/main.js.map +1 -1
  71. package/build/lib/schema/arg-spec.js +153 -108
  72. package/build/lib/schema/arg-spec.js.map +1 -1
  73. package/build/lib/schema/cli-args.js +203 -164
  74. package/build/lib/schema/cli-args.js.map +1 -1
  75. package/build/lib/schema/cli-transformers.js +117 -72
  76. package/build/lib/schema/cli-transformers.js.map +1 -1
  77. package/build/lib/schema/index.js +17 -32
  78. package/build/lib/schema/index.js.map +1 -1
  79. package/build/lib/schema/keywords.js +125 -67
  80. package/build/lib/schema/keywords.js.map +1 -1
  81. package/build/lib/schema/schema.d.ts.map +1 -1
  82. package/build/lib/schema/schema.js +582 -417
  83. package/build/lib/schema/schema.js.map +1 -1
  84. package/build/lib/utils.d.ts +41 -255
  85. package/build/lib/utils.d.ts.map +1 -1
  86. package/build/lib/utils.js +342 -193
  87. package/build/lib/utils.js.map +1 -1
  88. package/build/tsconfig.tsbuildinfo +1 -1
  89. package/build/types/cli.d.ts +45 -34
  90. package/build/types/cli.d.ts.map +1 -1
  91. package/build/types/cli.js +3 -0
  92. package/build/types/cli.js.map +1 -0
  93. package/build/types/index.d.ts +1 -2
  94. package/build/types/index.d.ts.map +1 -1
  95. package/build/types/index.js +19 -0
  96. package/build/types/index.js.map +1 -0
  97. package/build/types/manifest/base.d.ts +135 -0
  98. package/build/types/manifest/base.d.ts.map +1 -0
  99. package/build/types/manifest/base.js +3 -0
  100. package/build/types/manifest/base.js.map +1 -0
  101. package/build/types/manifest/index.d.ts +19 -0
  102. package/build/types/manifest/index.d.ts.map +1 -0
  103. package/build/types/manifest/index.js +40 -0
  104. package/build/types/manifest/index.js.map +1 -0
  105. package/build/types/manifest/v3.d.ts +139 -0
  106. package/build/types/manifest/v3.d.ts.map +1 -0
  107. package/build/types/manifest/v3.js +3 -0
  108. package/build/types/manifest/v3.js.map +1 -0
  109. package/lib/appium.js +1 -1
  110. package/lib/cli/args.js +1 -1
  111. package/lib/cli/extension-command.js +116 -61
  112. package/lib/cli/extension.js +9 -8
  113. package/lib/cli/parser.js +2 -2
  114. package/lib/config-file.js +2 -3
  115. package/lib/config.js +3 -2
  116. package/lib/constants.js +6 -5
  117. package/lib/extension/extension-config.js +24 -25
  118. package/lib/extension/manifest-migrations.js +99 -0
  119. package/lib/extension/manifest.js +79 -72
  120. package/lib/extension/plugin-config.js +1 -2
  121. package/lib/logsink.js +26 -5
  122. package/lib/main.js +58 -50
  123. package/lib/schema/schema.js +6 -1
  124. package/lib/utils.js +62 -0
  125. package/package.json +23 -24
  126. package/scripts/autoinstall-extensions.js +78 -26
  127. package/types/cli.ts +81 -42
  128. package/types/index.ts +1 -2
  129. package/types/manifest/README.md +30 -0
  130. package/types/manifest/base.ts +158 -0
  131. package/types/manifest/index.ts +27 -0
  132. package/types/manifest/v3.ts +161 -0
  133. package/build/types/appium-manifest.d.ts +0 -59
  134. package/build/types/appium-manifest.d.ts.map +0 -1
  135. package/build/types/extension-manifest.d.ts +0 -55
  136. package/build/types/extension-manifest.d.ts.map +0 -1
  137. package/types/appium-manifest.ts +0 -73
  138. package/types/extension-manifest.ts +0 -64
@@ -1,79 +1,124 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
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
6
  exports.transformers = void 0;
7
-
8
- require("source-map-support/register");
9
-
10
- var _argparse = require("argparse");
11
-
12
- var _fs = require("fs");
13
-
14
- var _lodash = _interopRequireDefault(require("lodash"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
7
+ const argparse_1 = require("argparse");
8
+ const fs_1 = require("fs");
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ /**
11
+ * This module provides custom keywords for Appium schemas, as well as
12
+ * "transformers" (see `argTransformers` below).
13
+ *
14
+ * Custom keywords are just properties that will appear in a schema (e.g.,
15
+ * `appium-config-schema.js`) beyond what the JSON Schema spec offers. These
16
+ * are usable by extensions, as well.
17
+ */
18
+ /**
19
+ * Splits a CSV string into an array
20
+ * @param {string} value
21
+ * @returns {string[]}
22
+ */
18
23
  function parseCsvLine(value) {
19
- return value.split(',').map(v => v.trim()).filter(Boolean);
24
+ return value
25
+ .split(',')
26
+ .map((v) => v.trim())
27
+ .filter(Boolean);
20
28
  }
21
-
29
+ /**
30
+ * Split a file by newline then calls {@link parseCsvLine} on each line.
31
+ * @param {string} value
32
+ * @returns {string[]}
33
+ */
22
34
  function parseCsvFile(value) {
23
- return value.split(/\r?\n/).map(v => v.trim()).filter(Boolean).flatMap(parseCsvLine);
35
+ return value
36
+ .split(/\r?\n/)
37
+ .map((v) => v.trim())
38
+ .filter(Boolean)
39
+ .flatMap(parseCsvLine);
24
40
  }
25
-
26
- const transformers = {
27
- csv: csvOrPath => {
28
- let csv = csvOrPath;
29
- let loadedFromFile = false;
30
-
31
- if ((0, _fs.existsSync)(csvOrPath)) {
32
- try {
33
- csv = (0, _fs.readFileSync)(csvOrPath, 'utf8');
34
- } catch (err) {
35
- throw new _argparse.ArgumentTypeError(`Could not read file '${csvOrPath}': ${err.message}`);
36
- }
37
-
38
- loadedFromFile = true;
39
- }
40
-
41
- try {
42
- return loadedFromFile ? parseCsvFile(csv) : parseCsvLine(csv);
43
- } catch (err) {
44
- const msg = loadedFromFile ? `The provided value of '${csvOrPath}' must be a valid CSV` : `Must be a comma-delimited string, e.g., "foo,bar,baz"`;
45
- throw new TypeError(`${msg}. Original error: ${err.message}`);
46
- }
47
- },
48
- json: jsonOrPath => {
49
- let json = jsonOrPath;
50
- let loadedFromFile = false;
51
-
52
- if ((0, _fs.existsSync)(jsonOrPath)) {
53
- try {
54
- json = (0, _fs.readFileSync)(jsonOrPath, 'utf8');
55
- } catch (err) {
56
- throw new _argparse.ArgumentTypeError(`Could not read file '${jsonOrPath}': ${err.message}`);
57
- }
58
-
59
- loadedFromFile = true;
60
- }
61
-
62
- try {
63
- const result = JSON.parse(json);
64
-
65
- if (!_lodash.default.isPlainObject(result)) {
66
- throw new Error(`'${_lodash.default.truncate(result, {
67
- length: 100
68
- })}' is not an object`);
69
- }
70
-
71
- return result;
72
- } catch (e) {
73
- const msg = loadedFromFile ? `The provided value of '${jsonOrPath}' must be a valid JSON` : `The provided value must be a valid JSON`;
74
- throw new TypeError(`${msg}. Original error: ${e.message}`);
75
- }
76
- }
41
+ /**
42
+ * Namespace containing _transformers_ for CLI arguments. "Validators" and
43
+ * "formatters" do not actually modify the value, but these do.
44
+ *
45
+ * Use case is for when the config file can accept e.g., a `string[]`, but the
46
+ * CLI can only take a `string` (as `argparse` seems to be limited in that
47
+ * fashion; it also cannot understand an argument having multiple types).
48
+ *
49
+ * For example, the `csv` transform takes a `string` and returns a `string[]` by
50
+ * splitting it by comma--_or_ if that `string` happens to be a
51
+ * filepath--reading the file as a `.csv`.
52
+ *
53
+ * This contains some copy-pasted code from `lib/cli/parser-helpers.js`, which was
54
+ * obliterated.
55
+ */
56
+ exports.transformers = {
57
+ /**
58
+ * Given a CSV-style string or pathname, parse it into an array.
59
+ * The file can also be split on newlines.
60
+ * @param {string} csvOrPath
61
+ * @returns {string[]}
62
+ */
63
+ csv: (csvOrPath) => {
64
+ let csv = csvOrPath;
65
+ let loadedFromFile = false;
66
+ // since this value could be a single string (no commas) _or_ a pathname, we will need
67
+ // to attempt to parse it as a file _first_.
68
+ if ((0, fs_1.existsSync)(csvOrPath)) {
69
+ try {
70
+ csv = (0, fs_1.readFileSync)(csvOrPath, 'utf8');
71
+ }
72
+ catch (err) {
73
+ throw new argparse_1.ArgumentTypeError(`Could not read file '${csvOrPath}': ${err.message}`);
74
+ }
75
+ loadedFromFile = true;
76
+ }
77
+ try {
78
+ return loadedFromFile ? parseCsvFile(csv) : parseCsvLine(csv);
79
+ }
80
+ catch (err) {
81
+ const msg = loadedFromFile
82
+ ? `The provided value of '${csvOrPath}' must be a valid CSV`
83
+ : `Must be a comma-delimited string, e.g., "foo,bar,baz"`;
84
+ throw new TypeError(`${msg}. Original error: ${err.message}`);
85
+ }
86
+ },
87
+ /**
88
+ * Parse a string which could be a path to a JSON file or a JSON string.
89
+ * @param {string} jsonOrPath
90
+ * @returns {object}
91
+ */
92
+ json: (jsonOrPath) => {
93
+ let json = jsonOrPath;
94
+ let loadedFromFile = false;
95
+ if ((0, fs_1.existsSync)(jsonOrPath)) {
96
+ try {
97
+ // use synchronous file access, as `argparse` provides no way of either
98
+ // awaiting or using callbacks. This step happens in startup, in what is
99
+ // effectively command-line code, so nothing is blocked in terms of
100
+ // sessions, so holding up the event loop does not incur the usual
101
+ // drawbacks.
102
+ json = (0, fs_1.readFileSync)(jsonOrPath, 'utf8');
103
+ }
104
+ catch (err) {
105
+ throw new argparse_1.ArgumentTypeError(`Could not read file '${jsonOrPath}': ${err.message}`);
106
+ }
107
+ loadedFromFile = true;
108
+ }
109
+ try {
110
+ const result = JSON.parse(json);
111
+ if (!lodash_1.default.isPlainObject(result)) {
112
+ throw new Error(`'${lodash_1.default.truncate(result, { length: 100 })}' is not an object`);
113
+ }
114
+ return result;
115
+ }
116
+ catch (e) {
117
+ const msg = loadedFromFile
118
+ ? `The provided value of '${jsonOrPath}' must be a valid JSON`
119
+ : `The provided value must be a valid JSON`;
120
+ throw new TypeError(`${msg}. Original error: ${e.message}`);
121
+ }
122
+ },
77
123
  };
78
- exports.transformers = transformers;
79
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUNzdkxpbmUiLCJ2YWx1ZSIsInNwbGl0IiwibWFwIiwidiIsInRyaW0iLCJmaWx0ZXIiLCJCb29sZWFuIiwicGFyc2VDc3ZGaWxlIiwiZmxhdE1hcCIsInRyYW5zZm9ybWVycyIsImNzdiIsImNzdk9yUGF0aCIsImxvYWRlZEZyb21GaWxlIiwiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsImVyciIsIkFyZ3VtZW50VHlwZUVycm9yIiwibWVzc2FnZSIsIm1zZyIsIlR5cGVFcnJvciIsImpzb24iLCJqc29uT3JQYXRoIiwicmVzdWx0IiwiSlNPTiIsInBhcnNlIiwiXyIsImlzUGxhaW5PYmplY3QiLCJFcnJvciIsInRydW5jYXRlIiwibGVuZ3RoIiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEvY2xpLXRyYW5zZm9ybWVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FyZ3VtZW50VHlwZUVycm9yfSBmcm9tICdhcmdwYXJzZSc7XG5pbXBvcnQge3JlYWRGaWxlU3luYywgZXhpc3RzU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjdXN0b20ga2V5d29yZHMgZm9yIEFwcGl1bSBzY2hlbWFzLCBhcyB3ZWxsIGFzXG4gKiBcInRyYW5zZm9ybWVyc1wiIChzZWUgYGFyZ1RyYW5zZm9ybWVyc2AgYmVsb3cpLlxuICpcbiAqIEN1c3RvbSBrZXl3b3JkcyBhcmUganVzdCBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBhcHBlYXIgaW4gYSBzY2hlbWEgKGUuZy4sXG4gKiBgYXBwaXVtLWNvbmZpZy1zY2hlbWEuanNgKSBiZXlvbmQgd2hhdCB0aGUgSlNPTiBTY2hlbWEgc3BlYyBvZmZlcnMuICBUaGVzZVxuICogYXJlIHVzYWJsZSBieSBleHRlbnNpb25zLCBhcyB3ZWxsLlxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgQ1NWIHN0cmluZyBpbnRvIGFuIGFycmF5XG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAqL1xuZnVuY3Rpb24gcGFyc2VDc3ZMaW5lKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZVxuICAgIC5zcGxpdCgnLCcpXG4gICAgLm1hcCgodikgPT4gdi50cmltKCkpXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbn1cblxuLyoqXG4gKiBTcGxpdCBhIGZpbGUgYnkgbmV3bGluZSB0aGVuIGNhbGxzIHtAbGluayBwYXJzZUNzdkxpbmV9IG9uIGVhY2ggbGluZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ1tdfVxuICovXG5mdW5jdGlvbiBwYXJzZUNzdkZpbGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnNwbGl0KC9cXHI/XFxuLylcbiAgICAubWFwKCh2KSA9PiB2LnRyaW0oKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLmZsYXRNYXAocGFyc2VDc3ZMaW5lKTtcbn1cblxuLyoqXG4gKiBOYW1lc3BhY2UgY29udGFpbmluZyBfdHJhbnNmb3JtZXJzXyBmb3IgQ0xJIGFyZ3VtZW50cy4gIFwiVmFsaWRhdG9yc1wiIGFuZFxuICogXCJmb3JtYXR0ZXJzXCIgZG8gbm90IGFjdHVhbGx5IG1vZGlmeSB0aGUgdmFsdWUsIGJ1dCB0aGVzZSBkby5cbiAqXG4gKiBVc2UgY2FzZSBpcyBmb3Igd2hlbiB0aGUgY29uZmlnIGZpbGUgY2FuIGFjY2VwdCBlLmcuLCBhIGBzdHJpbmdbXWAsIGJ1dCB0aGVcbiAqIENMSSBjYW4gb25seSB0YWtlIGEgYHN0cmluZ2AgKGFzIGBhcmdwYXJzZWAgc2VlbXMgdG8gYmUgbGltaXRlZCBpbiB0aGF0XG4gKiBmYXNoaW9uOyBpdCBhbHNvIGNhbm5vdCB1bmRlcnN0YW5kIGFuIGFyZ3VtZW50IGhhdmluZyBtdWx0aXBsZSB0eXBlcykuXG4gKlxuICogRm9yIGV4YW1wbGUsIHRoZSBgY3N2YCB0cmFuc2Zvcm0gdGFrZXMgYSBgc3RyaW5nYCBhbmQgcmV0dXJucyBhIGBzdHJpbmdbXWAgYnlcbiAqIHNwbGl0dGluZyBpdCBieSBjb21tYS0tX29yXyBpZiB0aGF0IGBzdHJpbmdgIGhhcHBlbnMgdG8gYmUgYVxuICogZmlsZXBhdGgtLXJlYWRpbmcgdGhlIGZpbGUgYXMgYSBgLmNzdmAuXG4gKlxuICogVGhpcyBjb250YWlucyBzb21lIGNvcHktcGFzdGVkIGNvZGUgZnJvbSBgbGliL2NsaS9wYXJzZXItaGVscGVycy5qc2AsIHdoaWNoIHdhc1xuICogb2JsaXRlcmF0ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1lcnMgPSB7XG4gIC8qKlxuICAgKiBHaXZlbiBhIENTVi1zdHlsZSBzdHJpbmcgb3IgcGF0aG5hbWUsIHBhcnNlIGl0IGludG8gYW4gYXJyYXkuXG4gICAqIFRoZSBmaWxlIGNhbiBhbHNvIGJlIHNwbGl0IG9uIG5ld2xpbmVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3N2T3JQYXRoXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAgICovXG4gIGNzdjogKGNzdk9yUGF0aCkgPT4ge1xuICAgIGxldCBjc3YgPSBjc3ZPclBhdGg7XG4gICAgbGV0IGxvYWRlZEZyb21GaWxlID0gZmFsc2U7XG4gICAgLy8gc2luY2UgdGhpcyB2YWx1ZSBjb3VsZCBiZSBhIHNpbmdsZSBzdHJpbmcgKG5vIGNvbW1hcykgX29yXyBhIHBhdGhuYW1lLCB3ZSB3aWxsIG5lZWRcbiAgICAvLyB0byBhdHRlbXB0IHRvIHBhcnNlIGl0IGFzIGEgZmlsZSBfZmlyc3RfLlxuICAgIGlmIChleGlzdHNTeW5jKGNzdk9yUGF0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNzdiA9IHJlYWRGaWxlU3luYyhjc3ZPclBhdGgsICd1dGY4Jyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50VHlwZUVycm9yKGBDb3VsZCBub3QgcmVhZCBmaWxlICcke2Nzdk9yUGF0aH0nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgbG9hZGVkRnJvbUZpbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9hZGVkRnJvbUZpbGUgPyBwYXJzZUNzdkZpbGUoY3N2KSA6IHBhcnNlQ3N2TGluZShjc3YpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgbXNnID0gbG9hZGVkRnJvbUZpbGVcbiAgICAgICAgPyBgVGhlIHByb3ZpZGVkIHZhbHVlIG9mICcke2Nzdk9yUGF0aH0nIG11c3QgYmUgYSB2YWxpZCBDU1ZgXG4gICAgICAgIDogYE11c3QgYmUgYSBjb21tYS1kZWxpbWl0ZWQgc3RyaW5nLCBlLmcuLCBcImZvbyxiYXIsYmF6XCJgO1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHttc2d9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgc3RyaW5nIHdoaWNoIGNvdWxkIGJlIGEgcGF0aCB0byBhIEpTT04gZmlsZSBvciBhIEpTT04gc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ganNvbk9yUGF0aFxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAganNvbjogKGpzb25PclBhdGgpID0+IHtcbiAgICBsZXQganNvbiA9IGpzb25PclBhdGg7XG4gICAgbGV0IGxvYWRlZEZyb21GaWxlID0gZmFsc2U7XG4gICAgaWYgKGV4aXN0c1N5bmMoanNvbk9yUGF0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHVzZSBzeW5jaHJvbm91cyBmaWxlIGFjY2VzcywgYXMgYGFyZ3BhcnNlYCBwcm92aWRlcyBubyB3YXkgb2YgZWl0aGVyXG4gICAgICAgIC8vIGF3YWl0aW5nIG9yIHVzaW5nIGNhbGxiYWNrcy4gVGhpcyBzdGVwIGhhcHBlbnMgaW4gc3RhcnR1cCwgaW4gd2hhdCBpc1xuICAgICAgICAvLyBlZmZlY3RpdmVseSBjb21tYW5kLWxpbmUgY29kZSwgc28gbm90aGluZyBpcyBibG9ja2VkIGluIHRlcm1zIG9mXG4gICAgICAgIC8vIHNlc3Npb25zLCBzbyBob2xkaW5nIHVwIHRoZSBldmVudCBsb29wIGRvZXMgbm90IGluY3VyIHRoZSB1c3VhbFxuICAgICAgICAvLyBkcmF3YmFja3MuXG4gICAgICAgIGpzb24gPSByZWFkRmlsZVN5bmMoanNvbk9yUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRUeXBlRXJyb3IoYENvdWxkIG5vdCByZWFkIGZpbGUgJyR7anNvbk9yUGF0aH0nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgbG9hZGVkRnJvbUZpbGUgPSB0cnVlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgIGlmICghXy5pc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtfLnRydW5jYXRlKHJlc3VsdCwge2xlbmd0aDogMTAwfSl9JyBpcyBub3QgYW4gb2JqZWN0YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IG1zZyA9IGxvYWRlZEZyb21GaWxlXG4gICAgICAgID8gYFRoZSBwcm92aWRlZCB2YWx1ZSBvZiAnJHtqc29uT3JQYXRofScgbXVzdCBiZSBhIHZhbGlkIEpTT05gXG4gICAgICAgIDogYFRoZSBwcm92aWRlZCB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSlNPTmA7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke21zZ30uIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQWdCQSxTQUFTQSxZQUFULENBQXNCQyxL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
124
+ //# sourceMappingURL=cli-transformers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-transformers.js","names":["parseCsvLine","value","split","map","v","trim","filter","Boolean","parseCsvFile","flatMap","transformers","csv","csvOrPath","loadedFromFile","existsSync","readFileSync","err","ArgumentTypeError","message","msg","TypeError","json","jsonOrPath","result","JSON","parse","_","isPlainObject","Error","truncate","length","e"],"sources":["../../../lib/schema/cli-transformers.js"],"sourcesContent":["import {ArgumentTypeError} from 'argparse';\nimport {readFileSync, existsSync} from 'fs';\nimport _ from 'lodash';\n\n/**\n * This module provides custom keywords for Appium schemas, as well as\n * \"transformers\" (see `argTransformers` below).\n *\n * Custom keywords are just properties that will appear in a schema (e.g.,\n * `appium-config-schema.js`) beyond what the JSON Schema spec offers. These\n * are usable by extensions, as well.\n */\n\n/**\n * Splits a CSV string into an array\n * @param {string} value\n * @returns {string[]}\n */\nfunction parseCsvLine(value) {\n return value\n .split(',')\n .map((v) => v.trim())\n .filter(Boolean);\n}\n\n/**\n * Split a file by newline then calls {@link parseCsvLine} on each line.\n * @param {string} value\n * @returns {string[]}\n */\nfunction parseCsvFile(value) {\n return value\n .split(/\\r?\\n/)\n .map((v) => v.trim())\n .filter(Boolean)\n .flatMap(parseCsvLine);\n}\n\n/**\n * Namespace containing _transformers_ for CLI arguments. \"Validators\" and\n * \"formatters\" do not actually modify the value, but these do.\n *\n * Use case is for when the config file can accept e.g., a `string[]`, but the\n * CLI can only take a `string` (as `argparse` seems to be limited in that\n * fashion; it also cannot understand an argument having multiple types).\n *\n * For example, the `csv` transform takes a `string` and returns a `string[]` by\n * splitting it by comma--_or_ if that `string` happens to be a\n * filepath--reading the file as a `.csv`.\n *\n * This contains some copy-pasted code from `lib/cli/parser-helpers.js`, which was\n * obliterated.\n */\nexport const transformers = {\n /**\n * Given a CSV-style string or pathname, parse it into an array.\n * The file can also be split on newlines.\n * @param {string} csvOrPath\n * @returns {string[]}\n */\n csv: (csvOrPath) => {\n let csv = csvOrPath;\n let loadedFromFile = false;\n // since this value could be a single string (no commas) _or_ a pathname, we will need\n // to attempt to parse it as a file _first_.\n if (existsSync(csvOrPath)) {\n try {\n csv = readFileSync(csvOrPath, 'utf8');\n } catch (err) {\n throw new ArgumentTypeError(`Could not read file '${csvOrPath}': ${err.message}`);\n }\n loadedFromFile = true;\n }\n\n try {\n return loadedFromFile ? parseCsvFile(csv) : parseCsvLine(csv);\n } catch (err) {\n const msg = loadedFromFile\n ? `The provided value of '${csvOrPath}' must be a valid CSV`\n : `Must be a comma-delimited string, e.g., \"foo,bar,baz\"`;\n throw new TypeError(`${msg}. Original error: ${err.message}`);\n }\n },\n\n /**\n * Parse a string which could be a path to a JSON file or a JSON string.\n * @param {string} jsonOrPath\n * @returns {object}\n */\n json: (jsonOrPath) => {\n let json = jsonOrPath;\n let loadedFromFile = false;\n if (existsSync(jsonOrPath)) {\n try {\n // use synchronous file access, as `argparse` provides no way of either\n // awaiting or using callbacks. This step happens in startup, in what is\n // effectively command-line code, so nothing is blocked in terms of\n // sessions, so holding up the event loop does not incur the usual\n // drawbacks.\n json = readFileSync(jsonOrPath, 'utf8');\n } catch (err) {\n throw new ArgumentTypeError(`Could not read file '${jsonOrPath}': ${err.message}`);\n }\n loadedFromFile = true;\n }\n try {\n const result = JSON.parse(json);\n if (!_.isPlainObject(result)) {\n throw new Error(`'${_.truncate(result, {length: 100})}' is not an object`);\n }\n return result;\n } catch (e) {\n const msg = loadedFromFile\n ? `The provided value of '${jsonOrPath}' must be a valid JSON`\n : `The provided value must be a valid JSON`;\n throw new TypeError(`${msg}. Original error: ${e.message}`);\n }\n },\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;AAgBA,SAASA,YAAT,CAAsBC,KAAtB,EAA6B;EAC3B,OAAOA,KAAK,CACTC,KADI,CACE,GADF,EAEJC,GAFI,CAECC,CAAD,IAAOA,CAAC,CAACC,IAAF,EAFP,EAGJC,MAHI,CAGGC,OAHH,CAAP;AAID;;AAOD,SAASC,YAAT,CAAsBP,KAAtB,EAA6B;EAC3B,OAAOA,KAAK,CACTC,KADI,CACE,OADF,EAEJC,GAFI,CAECC,CAAD,IAAOA,CAAC,CAACC,IAAF,EAFP,EAGJC,MAHI,CAGGC,OAHH,EAIJE,OAJI,CAIIT,YAJJ,CAAP;AAKD;;AAiBM,MAAMU,YAAY,GAAG;EAO1BC,GAAG,EAAGC,SAAD,IAAe;IAClB,IAAID,GAAG,GAAGC,SAAV;IACA,IAAIC,cAAc,GAAG,KAArB;;IAGA,IAAI,IAAAC,cAAA,EAAWF,SAAX,CAAJ,EAA2B;MACzB,IAAI;QACFD,GAAG,GAAG,IAAAI,gBAAA,EAAaH,SAAb,EAAwB,MAAxB,CAAN;MACD,CAFD,CAEE,OAAOI,GAAP,EAAY;QACZ,MAAM,IAAIC,2BAAJ,CAAuB,wBAAuBL,SAAU,MAAKI,GAAG,CAACE,OAAQ,EAAzE,CAAN;MACD;;MACDL,cAAc,GAAG,IAAjB;IACD;;IAED,IAAI;MACF,OAAOA,cAAc,GAAGL,YAAY,CAACG,GAAD,CAAf,GAAuBX,YAAY,CAACW,GAAD,CAAxD;IACD,CAFD,CAEE,OAAOK,GAAP,EAAY;MACZ,MAAMG,GAAG,GAAGN,cAAc,GACrB,0BAAyBD,SAAU,uBADd,GAErB,uDAFL;MAGA,MAAM,IAAIQ,SAAJ,CAAe,GAAED,GAAI,qBAAoBH,GAAG,CAACE,OAAQ,EAArD,CAAN;IACD;EACF,CA7ByB;EAoC1BG,IAAI,EAAGC,UAAD,IAAgB;IACpB,IAAID,IAAI,GAAGC,UAAX;IACA,IAAIT,cAAc,GAAG,KAArB;;IACA,IAAI,IAAAC,cAAA,EAAWQ,UAAX,CAAJ,EAA4B;MAC1B,IAAI;QAMFD,IAAI,GAAG,IAAAN,gBAAA,EAAaO,UAAb,EAAyB,MAAzB,CAAP;MACD,CAPD,CAOE,OAAON,GAAP,EAAY;QACZ,MAAM,IAAIC,2BAAJ,CAAuB,wBAAuBK,UAAW,MAAKN,GAAG,CAACE,OAAQ,EAA1E,CAAN;MACD;;MACDL,cAAc,GAAG,IAAjB;IACD;;IACD,IAAI;MACF,MAAMU,MAAM,GAAGC,IAAI,CAACC,KAAL,CAAWJ,IAAX,CAAf;;MACA,IAAI,CAACK,eAAA,CAAEC,aAAF,CAAgBJ,MAAhB,CAAL,EAA8B;QAC5B,MAAM,IAAIK,KAAJ,CAAW,IAAGF,eAAA,CAAEG,QAAF,CAAWN,MAAX,EAAmB;UAACO,MAAM,EAAE;QAAT,CAAnB,CAAkC,oBAAhD,CAAN;MACD;;MACD,OAAOP,MAAP;IACD,CAND,CAME,OAAOQ,CAAP,EAAU;MACV,MAAMZ,GAAG,GAAGN,cAAc,GACrB,0BAAyBS,UAAW,wBADf,GAErB,yCAFL;MAGA,MAAM,IAAIF,SAAJ,CAAe,GAAED,GAAI,qBAAoBY,CAAC,CAACb,OAAQ,EAAnD,CAAN;IACD;EACF;AAhEyB,CAArB"}
1
+ {"version":3,"file":"cli-transformers.js","sourceRoot":"","sources":["../../../lib/schema/cli-transformers.js"],"names":[],"mappings":"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"}
@@ -1,34 +1,19 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- require("source-map-support/register");
8
-
9
- var _schema = require("./schema");
10
-
11
- Object.keys(_schema).forEach(function (key) {
12
- if (key === "default" || key === "__esModule") return;
13
- if (key in exports && exports[key] === _schema[key]) return;
14
- Object.defineProperty(exports, key, {
15
- enumerable: true,
16
- get: function () {
17
- return _schema[key];
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
7
  }
19
- });
20
- });
21
-
22
- var _cliArgs = require("./cli-args");
23
-
24
- Object.keys(_cliArgs).forEach(function (key) {
25
- if (key === "default" || key === "__esModule") return;
26
- if (key in exports && exports[key] === _cliArgs[key]) return;
27
- Object.defineProperty(exports, key, {
28
- enumerable: true,
29
- get: function () {
30
- return _cliArgs[key];
31
- }
32
- });
33
- });
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3NjaGVtYS9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjaGVtYSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaS1hcmdzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUE7TUFBQTtJQUFBO0VBQUE7QUFBQTs7QUFDQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUE7TUFBQTtJQUFBO0VBQUE7QUFBQSJ9
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./schema"), exports);
18
+ __exportStar(require("./cli-args"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../lib/schema/index.js"],"sourcesContent":["export * from './schema';\nexport * from './cli-args';\n"],"mappings":";;;;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/schema/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B"}
@@ -1,70 +1,128 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.keywords = void 0;
7
-
8
- require("source-map-support/register");
9
-
10
- var _cliTransformers = require("./cli-transformers");
11
-
12
- const keywords = {
13
- appiumCliAliases: {
14
- keyword: 'appiumCliAliases',
15
- metaSchema: {
16
- type: 'array',
17
- items: {
18
- type: 'string',
19
- minLength: 1
20
- },
21
- minItems: 1,
22
- uniqueItems: true,
23
- description: 'List of aliases for the argument. Aliases shorter than three (3) characters will be prefixed with a single dash; otherwise two (2).'
24
- }
25
- },
26
- appiumCliDest: {
27
- keyword: 'appiumCliDest',
28
- metaSchema: {
29
- type: 'string',
30
- minLength: 1,
31
- description: 'Name of the associated property in the parsed CLI arguments object'
32
- }
33
- },
34
- appiumCliDescription: {
35
- keyword: 'appiumCliDescription',
36
- schemaType: 'string',
37
- metaSchema: {
38
- type: 'string',
39
- minLength: 1,
40
- description: 'Description to provide in the --help text of the CLI. Overrides `description`'
41
- }
42
- },
43
- appiumCliTransformer: {
44
- keyword: 'appiumCliTransformer',
45
- metaSchema: {
46
- type: 'string',
47
- enum: Object.keys(_cliTransformers.transformers),
48
- description: 'The name of a custom transformer to run against the value as provided via the CLI.'
49
- }
50
- },
51
- appiumCliIgnored: {
52
- keyword: 'appiumCliIgnored',
53
- metaSchema: {
54
- type: 'boolean',
55
- description: 'If `true`, Appium will not provide this property as a CLI argument. This is NOT the same as a "hidden" argument.',
56
- enum: [true]
57
- }
58
- },
59
- appiumDeprecated: {
60
- keyword: 'appiumDeprecated',
61
- metaSchema: {
62
- type: 'boolean',
63
- description: 'If `true`, this property will be displayed as "deprecated" to the user',
64
- enum: [true],
65
- $comment: 'JSON schema draft-2019-09 keyword `deprecated` serves the same purpose. This keyword should itself be deprecated if we move to draft-2019-09!'
66
- }
67
- }
4
+ const cli_transformers_1 = require("./cli-transformers");
5
+ /**
6
+ * Collection of keyword definitions to add to the singleton `Ajv` instance.
7
+ * @type {Record<string,KeywordDefinition>}
8
+ */
9
+ exports.keywords = {
10
+ /**
11
+ * Keyword to provide a list of command alias names for the CLI.
12
+ *
13
+ * If defined, there must be at least one item in the array and it must be non-empty.
14
+ * All items in the array must be unique.
15
+ *
16
+ * @todo Avoid alias collisions!
17
+ * @type {KeywordDefinition}
18
+ * @example
19
+ * {appiumCliAliases: ['B', 'bobby', 'robert']}
20
+ */
21
+ appiumCliAliases: {
22
+ keyword: 'appiumCliAliases',
23
+ metaSchema: {
24
+ type: 'array',
25
+ items: {
26
+ type: 'string',
27
+ minLength: 1,
28
+ },
29
+ minItems: 1,
30
+ uniqueItems: true,
31
+ description: 'List of aliases for the argument. Aliases shorter than three (3) characters will be prefixed with a single dash; otherwise two (2).',
32
+ },
33
+ },
34
+ /**
35
+ * Keyword to provide the name of the property in the destination (parsed
36
+ * args) object. By default, this value will be whatever the property name is,
37
+ * but camel-cased. If a flag needs something _other_ than just camel-casing,
38
+ * use this.
39
+ * @type {KeywordDefinition}
40
+ * @example
41
+ * // for prop 'no-color'
42
+ * {appiumCliDest: 'NOCOLOR'} // value will be stored as property `NOCOLOR` instead of `noColor`
43
+ */
44
+ appiumCliDest: {
45
+ keyword: 'appiumCliDest',
46
+ metaSchema: {
47
+ type: 'string',
48
+ minLength: 1,
49
+ description: 'Name of the associated property in the parsed CLI arguments object',
50
+ },
51
+ },
52
+ /**
53
+ * CLI-specific description of the property. Sometimes the allowed type can
54
+ * be different enough on the CLI that providing a description written for a
55
+ * config file context wouldn't make sense.
56
+ * @type {KeywordDefinition}
57
+ * @example
58
+ * {appiumCliDescription: 'This is a comma-delimited string, but in the config file it is an array'}
59
+ */
60
+ appiumCliDescription: {
61
+ keyword: 'appiumCliDescription',
62
+ schemaType: 'string',
63
+ metaSchema: {
64
+ type: 'string',
65
+ minLength: 1,
66
+ description: 'Description to provide in the --help text of the CLI. Overrides `description`',
67
+ },
68
+ },
69
+ /**
70
+ * Transformers for CLI args. These usually take strings then do something with them, like
71
+ * read a file or parse further.
72
+ * @type {KeywordDefinition}
73
+ */
74
+ appiumCliTransformer: {
75
+ keyword: 'appiumCliTransformer',
76
+ metaSchema: {
77
+ type: 'string',
78
+ enum: Object.keys(cli_transformers_1.transformers),
79
+ description: 'The name of a custom transformer to run against the value as provided via the CLI.',
80
+ },
81
+ },
82
+ /**
83
+ * Flag to tell Appium to _not_ provide this property as a CLI argument.
84
+ * @type {KeywordDefinition}
85
+ */
86
+ appiumCliIgnored: {
87
+ keyword: 'appiumCliIgnored',
88
+ metaSchema: {
89
+ type: 'boolean',
90
+ description: 'If `true`, Appium will not provide this property as a CLI argument. This is NOT the same as a "hidden" argument.',
91
+ enum: [true],
92
+ },
93
+ },
94
+ /**
95
+ * Mark this property as deprecated.
96
+ * @type {KeywordDefinition}
97
+ */
98
+ appiumDeprecated: {
99
+ keyword: 'appiumDeprecated',
100
+ metaSchema: {
101
+ type: 'boolean',
102
+ description: 'If `true`, this property will be displayed as "deprecated" to the user',
103
+ enum: [true],
104
+ $comment: 'JSON schema draft-2019-09 keyword `deprecated` serves the same purpose. This keyword should itself be deprecated if we move to draft-2019-09!',
105
+ },
106
+ },
68
107
  };
69
- exports.keywords = keywords;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJrZXl3b3JkcyIsImFwcGl1bUNsaUFsaWFzZXMiLCJrZXl3b3JkIiwibWV0YVNjaGVtYSIsInR5cGUiLCJpdGVtcyIsIm1pbkxlbmd0aCIsIm1pbkl0ZW1zIiwidW5pcXVlSXRlbXMiLCJkZXNjcmlwdGlvbiIsImFwcGl1bUNsaURlc3QiLCJhcHBpdW1DbGlEZXNjcmlwdGlvbiIsInNjaGVtYVR5cGUiLCJhcHBpdW1DbGlUcmFuc2Zvcm1lciIsImVudW0iLCJPYmplY3QiLCJrZXlzIiwidHJhbnNmb3JtZXJzIiwiYXBwaXVtQ2xpSWdub3JlZCIsImFwcGl1bURlcHJlY2F0ZWQiLCIkY29tbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEva2V5d29yZHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0cmFuc2Zvcm1lcnN9IGZyb20gJy4vY2xpLXRyYW5zZm9ybWVycyc7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBrZXl3b3JkIGRlZmluaXRpb25zIHRvIGFkZCB0byB0aGUgc2luZ2xldG9uIGBBanZgIGluc3RhbmNlLlxuICogQHR5cGUge1JlY29yZDxzdHJpbmcsS2V5d29yZERlZmluaXRpb24+fVxuICovXG5leHBvcnQgY29uc3Qga2V5d29yZHMgPSB7XG4gIC8qKlxuICAgKiBLZXl3b3JkIHRvIHByb3ZpZGUgYSBsaXN0IG9mIGNvbW1hbmQgYWxpYXMgbmFtZXMgZm9yIHRoZSBDTEkuXG4gICAqXG4gICAqIElmIGRlZmluZWQsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gdGhlIGFycmF5IGFuZCBpdCBtdXN0IGJlIG5vbi1lbXB0eS5cbiAgICogQWxsIGl0ZW1zIGluIHRoZSBhcnJheSBtdXN0IGJlIHVuaXF1ZS5cbiAgICpcbiAgICogQHRvZG8gQXZvaWQgYWxpYXMgY29sbGlzaW9ucyFcbiAgICogQHR5cGUge0tleXdvcmREZWZpbml0aW9ufVxuICAgKiBAZXhhbXBsZVxuICAgKiB7YXBwaXVtQ2xpQWxpYXNlczogWydCJywgJ2JvYmJ5JywgJ3JvYmVydCddfVxuICAgKi9cbiAgYXBwaXVtQ2xpQWxpYXNlczoge1xuICAgIGtleXdvcmQ6ICdhcHBpdW1DbGlBbGlhc2VzJyxcbiAgICBtZXRhU2NoZW1hOiB7XG4gICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgaXRlbXM6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIH0sXG4gICAgICBtaW5JdGVtczogMSxcbiAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdMaXN0IG9mIGFsaWFzZXMgZm9yIHRoZSBhcmd1bWVudC4gQWxpYXNlcyBzaG9ydGVyIHRoYW4gdGhyZWUgKDMpIGNoYXJhY3RlcnMgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIGEgc2luZ2xlIGRhc2g7IG90aGVyd2lzZSB0d28gKDIpLicsXG4gICAgfSxcbiAgfSxcbiAgLyoqXG4gICAqIEtleXdvcmQgdG8gcHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIGRlc3RpbmF0aW9uIChwYXJzZWRcbiAgICogYXJncykgb2JqZWN0LiBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIHdpbGwgYmUgd2hhdGV2ZXIgdGhlIHByb3BlcnR5IG5hbWUgaXMsXG4gICAqIGJ1dCBjYW1lbC1jYXNlZC4gSWYgYSBmbGFnIG5lZWRzIHNvbWV0aGluZyBfb3RoZXJfIHRoYW4ganVzdCBjYW1lbC1jYXNpbmcsXG4gICAqIHVzZSB0aGlzLlxuICAgKiBAdHlwZSB7S2V5d29yZERlZmluaXRpb259XG4gICAqIEBleGFtcGxlXG4gICAqIC8vIGZvciBwcm9wICduby1jb2xvcidcbiAgICoge2FwcGl1bUNsaURlc3Q6ICdOT0NPTE9SJ30gLy8gdmFsdWUgd2lsbCBiZSBzdG9yZWQgYXMgcHJvcGVydHkgYE5PQ09MT1JgIGluc3RlYWQgb2YgYG5vQ29sb3JgXG4gICAqL1xuICBhcHBpdW1DbGlEZXN0OiB7XG4gICAga2V5d29yZDogJ2FwcGl1bUNsaURlc3QnLFxuICAgIG1ldGFTY2hlbWE6IHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IGluIHRoZSBwYXJzZWQgQ0xJIGFyZ3VtZW50cyBvYmplY3QnLFxuICAgIH0sXG4gIH0sXG5cbiAgLyoqXG4gICAqIENMSS1zcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvcGVydHkuICBTb21ldGltZXMgdGhlIGFsbG93ZWQgdHlwZSBjYW5cbiAgICogYmUgZGlmZmVyZW50IGVub3VnaCBvbiB0aGUgQ0xJIHRoYXQgcHJvdmlkaW5nIGEgZGVzY3JpcHRpb24gd3JpdHRlbiBmb3IgYVxuICAgKiBjb25maWcgZmlsZSBjb250ZXh0IHdvdWxkbid0IG1ha2Ugc2Vuc2UuXG4gICAqIEB0eXBlIHtLZXl3b3JkRGVmaW5pdGlvbn1cbiAgICogQGV4YW1wbGVcbiAgICoge2FwcGl1bUNsaURlc2NyaXB0aW9uOiAnVGhpcyBpcyBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcsIGJ1dCBpbiB0aGUgY29uZmlnIGZpbGUgaXQgaXMgYW4gYXJyYXknfVxuICAgKi9cbiAgYXBwaXVtQ2xpRGVzY3JpcHRpb246IHtcbiAgICBrZXl3b3JkOiAnYXBwaXVtQ2xpRGVzY3JpcHRpb24nLFxuICAgIHNjaGVtYVR5cGU6ICdzdHJpbmcnLFxuICAgIG1ldGFTY2hlbWE6IHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiB0byBwcm92aWRlIGluIHRoZSAtLWhlbHAgdGV4dCBvZiB0aGUgQ0xJLiBPdmVycmlkZXMgYGRlc2NyaXB0aW9uYCcsXG4gICAgfSxcbiAgfSxcblxuICAvKipcbiAgICogVHJhbnNmb3JtZXJzIGZvciBDTEkgYXJncy4gVGhlc2UgdXN1YWxseSB0YWtlIHN0cmluZ3MgdGhlbiBkbyBzb21ldGhpbmcgd2l0aCB0aGVtLCBsaWtlXG4gICAqIHJlYWQgYSBmaWxlIG9yIHBhcnNlIGZ1cnRoZXIuXG4gICAqIEB0eXBlIHtLZXl3b3JkRGVmaW5pdGlvbn1cbiAgICovXG4gIGFwcGl1bUNsaVRyYW5zZm9ybWVyOiB7XG4gICAga2V5d29yZDogJ2FwcGl1bUNsaVRyYW5zZm9ybWVyJyxcbiAgICBtZXRhU2NoZW1hOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGVudW06IE9iamVjdC5rZXlzKHRyYW5zZm9ybWVycyksXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoZSBuYW1lIG9mIGEgY3VzdG9tIHRyYW5zZm9ybWVyIHRvIHJ1biBhZ2FpbnN0IHRoZSB2YWx1ZSBhcyBwcm92aWRlZCB2aWEgdGhlIENMSS4nLFxuICAgIH0sXG4gIH0sXG5cbiAgLyoqXG4gICAqIEZsYWcgdG8gdGVsbCBBcHBpdW0gdG8gX25vdF8gcHJvdmlkZSB0aGlzIHByb3BlcnR5IGFzIGEgQ0xJIGFyZ3VtZW50LlxuICAgKiBAdHlwZSB7S2V5d29yZERlZmluaXRpb259XG4gICAqL1xuICBhcHBpdW1DbGlJZ25vcmVkOiB7XG4gICAga2V5d29yZDogJ2FwcGl1bUNsaUlnbm9yZWQnLFxuICAgIG1ldGFTY2hlbWE6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnSWYgYHRydWVgLCBBcHBpdW0gd2lsbCBub3QgcHJvdmlkZSB0aGlzIHByb3BlcnR5IGFzIGEgQ0xJIGFyZ3VtZW50LiBUaGlzIGlzIE5PVCB0aGUgc2FtZSBhcyBhIFwiaGlkZGVuXCIgYXJndW1lbnQuJyxcbiAgICAgIGVudW06IFt0cnVlXSxcbiAgICB9LFxuICB9LFxuXG4gIC8qKlxuICAgKiBNYXJrIHRoaXMgcHJvcGVydHkgYXMgZGVwcmVjYXRlZC5cbiAgICogQHR5cGUge0tleXdvcmREZWZpbml0aW9ufVxuICAgKi9cbiAgYXBwaXVtRGVwcmVjYXRlZDoge1xuICAgIGtleXdvcmQ6ICdhcHBpdW1EZXByZWNhdGVkJyxcbiAgICBtZXRhU2NoZW1hOiB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0lmIGB0cnVlYCwgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIGRpc3BsYXllZCBhcyBcImRlcHJlY2F0ZWRcIiB0byB0aGUgdXNlcicsXG4gICAgICBlbnVtOiBbdHJ1ZV0sXG4gICAgICAkY29tbWVudDpcbiAgICAgICAgJ0pTT04gc2NoZW1hIGRyYWZ0LTIwMTktMDkga2V5d29yZCBgZGVwcmVjYXRlZGAgc2VydmVzIHRoZSBzYW1lIHB1cnBvc2UuIFRoaXMga2V5d29yZCBzaG91bGQgaXRzZWxmIGJlIGRlcHJlY2F0ZWQgaWYgd2UgbW92ZSB0byBkcmFmdC0yMDE5LTA5IScsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogVGhlc2UgYXJlIHRoZSB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBgYXBwaXVtQ2xpVHJhbnNmb3JtZXJgIGtleXdvcmQuXG4gKiBVbmZvcnR1bmF0ZWx5LCBUUyBjYW5ub3QgaW5mZXIgdGhpcyBpbiBhIEpTIGNvbnRleHQuICBJbiBUUywgd2UnZCB1c2VcbiAqIGBhcyBjb25zdGAgd2hlbiBkZWZpbmluZyBgYXJnVHJhbnNmb3JtZXJzYCwgdGhlbiBnZXQgYGtleW9mIHR5cGVvZiBhcmdUcmFuc2Zvcm1lcnNgLiBhbGFzLlxuICogQHR5cGVkZWYgeydjc3YnfCdqc29uJ30gQXBwaXVtQ2xpVHJhbnNmb3JtZXJOYW1lXG4gKi9cblxuLyoqXG4gKiBUaGVzZSBhcmUgdGhlIGN1c3RvbSBrZXl3b3JkcyB0aGF0IEFwcGl1bSByZWNvZ25pemVzLlxuICpcbiAqIEB0eXBlZGVmIEFwcGl1bUpTT05TY2hlbWFLZXl3b3Jkc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFthcHBpdW1DbGlEZXN0XVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthcHBpdW1DbGlEZXNjcmlwdGlvbl1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFthcHBpdW1DbGlBbGlhc2VzXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbYXBwaXVtQ2xpSWdub3JlZF1cbiAqIEBwcm9wZXJ0eSB7QXBwaXVtQ2xpVHJhbnNmb3JtZXJOYW1lfSBbYXBwaXVtQ2xpVHJhbnNmb3JtZXJdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFthcHBpdW1EZXByZWNhdGVkXVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnYWp2JykuS2V5d29yZERlZmluaXRpb259IEtleXdvcmREZWZpbml0aW9uXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBTU8sTUFBTUEsUUFBUSxHQUFHO0VBWXRCQyxnQkFBZ0IsRUFBRTtJQUNoQkMsT0FBTyxFQUFFLGtCQURPO0lBRWhCQyxVQUFVLEVBQUU7TUFDVkMsSUFBSSxFQUFFLE9BREk7TUFFVkMsS0FBSyxFQUFFO1FBQ0xELElBQUksRUFBRSxRQUREO1FBRUxFLFNBQVMsRUFBRTtNQUZOLENBRkc7TUFNVkMsUUFBUSxFQUFFLENBTkE7TUFPVkMsV0FBVyxFQUFFLElBUEg7TUFRVkMsV0FBVyxFQUNUO0lBVFE7RUFGSSxDQVpJO0VBb0N0QkMsYUFBYSxFQUFFO0lBQ2JSLE9BQU8sRUFBRSxlQURJO0lBRWJDLFVBQVUsRUFBRTtNQUNWQyxJQUFJLEVBQUUsUUFESTtNQUVWRSxTQUFTLEVBQUUsQ0FGRDtNQUdWRyxXQUFXLEVBQUU7SUFISDtFQUZDLENBcENPO0VBcUR0QkUsb0JBQW9CLEVBQUU7SUFDcEJULE9BQU8sRUFBRSxzQkFEVztJQUVwQlUsVUFBVSxFQUFFLFFBRlE7SUFHcEJULFVBQVUsRUFBRTtNQUNWQyxJQUFJLEVBQUUsUUFESTtNQUVWRSxTQUFTLEVBQUUsQ0FGRDtNQUdWRyxXQUFXLEVBQUU7SUFISDtFQUhRLENBckRBO0VBb0V0Qkksb0JBQW9CLEVBQUU7SUFDcEJYLE9BQU8sRUFBRSxzQkFEVztJQUVwQkMsVUFBVSxFQUFFO01BQ1ZDLElBQUksRUFBRSxRQURJO01BRVZVLElBQUksRUFBRUMsTUFBTSxDQUFDQyxJQUFQLENBQVlDLDZCQUFaLENBRkk7TUFHVlIsV0FBVyxFQUNUO0lBSlE7RUFGUSxDQXBFQTtFQWtGdEJTLGdCQUFnQixFQUFFO0lBQ2hCaEIsT0FBTyxFQUFFLGtCQURPO0lBRWhCQyxVQUFVLEVBQUU7TUFDVkMsSUFBSSxFQUFFLFNBREk7TUFFVkssV0FBVyxFQUNULGtIQUhRO01BSVZLLElBQUksRUFBRSxDQUFDLElBQUQ7SUFKSTtFQUZJLENBbEZJO0VBZ0d0QkssZ0JBQWdCLEVBQUU7SUFDaEJqQixPQUFPLEVBQUUsa0JBRE87SUFFaEJDLFVBQVUsRUFBRTtNQUNWQyxJQUFJLEVBQUUsU0FESTtNQUVWSyxXQUFXLEVBQUUsd0VBRkg7TUFHVkssSUFBSSxFQUFFLENBQUMsSUFBRCxDQUhJO01BSVZNLFFBQVEsRUFDTjtJQUxRO0VBRkk7QUFoR0ksQ0FBakIifQ==
108
+ /**
109
+ * These are the valid values for the `appiumCliTransformer` keyword.
110
+ * Unfortunately, TS cannot infer this in a JS context. In TS, we'd use
111
+ * `as const` when defining `argTransformers`, then get `keyof typeof argTransformers`. alas.
112
+ * @typedef {'csv'|'json'} AppiumCliTransformerName
113
+ */
114
+ /**
115
+ * These are the custom keywords that Appium recognizes.
116
+ *
117
+ * @typedef AppiumJSONSchemaKeywords
118
+ * @property {string} [appiumCliDest]
119
+ * @property {string} [appiumCliDescription]
120
+ * @property {string[]} [appiumCliAliases]
121
+ * @property {boolean} [appiumCliIgnored]
122
+ * @property {AppiumCliTransformerName} [appiumCliTransformer]
123
+ * @property {boolean} [appiumDeprecated]
124
+ */
125
+ /**
126
+ * @typedef {import('ajv').KeywordDefinition} KeywordDefinition
127
+ */
128
+ //# sourceMappingURL=keywords.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keywords.js","names":["keywords","appiumCliAliases","keyword","metaSchema","type","items","minLength","minItems","uniqueItems","description","appiumCliDest","appiumCliDescription","schemaType","appiumCliTransformer","enum","Object","keys","transformers","appiumCliIgnored","appiumDeprecated","$comment"],"sources":["../../../lib/schema/keywords.js"],"sourcesContent":["import {transformers} from './cli-transformers';\n\n/**\n * Collection of keyword definitions to add to the singleton `Ajv` instance.\n * @type {Record<string,KeywordDefinition>}\n */\nexport const keywords = {\n /**\n * Keyword to provide a list of command alias names for the CLI.\n *\n * If defined, there must be at least one item in the array and it must be non-empty.\n * All items in the array must be unique.\n *\n * @todo Avoid alias collisions!\n * @type {KeywordDefinition}\n * @example\n * {appiumCliAliases: ['B', 'bobby', 'robert']}\n */\n appiumCliAliases: {\n keyword: 'appiumCliAliases',\n metaSchema: {\n type: 'array',\n items: {\n type: 'string',\n minLength: 1,\n },\n minItems: 1,\n uniqueItems: true,\n description:\n 'List of aliases for the argument. Aliases shorter than three (3) characters will be prefixed with a single dash; otherwise two (2).',\n },\n },\n /**\n * Keyword to provide the name of the property in the destination (parsed\n * args) object. By default, this value will be whatever the property name is,\n * but camel-cased. If a flag needs something _other_ than just camel-casing,\n * use this.\n * @type {KeywordDefinition}\n * @example\n * // for prop 'no-color'\n * {appiumCliDest: 'NOCOLOR'} // value will be stored as property `NOCOLOR` instead of `noColor`\n */\n appiumCliDest: {\n keyword: 'appiumCliDest',\n metaSchema: {\n type: 'string',\n minLength: 1,\n description: 'Name of the associated property in the parsed CLI arguments object',\n },\n },\n\n /**\n * CLI-specific description of the property. Sometimes the allowed type can\n * be different enough on the CLI that providing a description written for a\n * config file context wouldn't make sense.\n * @type {KeywordDefinition}\n * @example\n * {appiumCliDescription: 'This is a comma-delimited string, but in the config file it is an array'}\n */\n appiumCliDescription: {\n keyword: 'appiumCliDescription',\n schemaType: 'string',\n metaSchema: {\n type: 'string',\n minLength: 1,\n description: 'Description to provide in the --help text of the CLI. Overrides `description`',\n },\n },\n\n /**\n * Transformers for CLI args. These usually take strings then do something with them, like\n * read a file or parse further.\n * @type {KeywordDefinition}\n */\n appiumCliTransformer: {\n keyword: 'appiumCliTransformer',\n metaSchema: {\n type: 'string',\n enum: Object.keys(transformers),\n description:\n 'The name of a custom transformer to run against the value as provided via the CLI.',\n },\n },\n\n /**\n * Flag to tell Appium to _not_ provide this property as a CLI argument.\n * @type {KeywordDefinition}\n */\n appiumCliIgnored: {\n keyword: 'appiumCliIgnored',\n metaSchema: {\n type: 'boolean',\n description:\n 'If `true`, Appium will not provide this property as a CLI argument. This is NOT the same as a \"hidden\" argument.',\n enum: [true],\n },\n },\n\n /**\n * Mark this property as deprecated.\n * @type {KeywordDefinition}\n */\n appiumDeprecated: {\n keyword: 'appiumDeprecated',\n metaSchema: {\n type: 'boolean',\n description: 'If `true`, this property will be displayed as \"deprecated\" to the user',\n enum: [true],\n $comment:\n 'JSON schema draft-2019-09 keyword `deprecated` serves the same purpose. This keyword should itself be deprecated if we move to draft-2019-09!',\n },\n },\n};\n\n/**\n * These are the valid values for the `appiumCliTransformer` keyword.\n * Unfortunately, TS cannot infer this in a JS context. In TS, we'd use\n * `as const` when defining `argTransformers`, then get `keyof typeof argTransformers`. alas.\n * @typedef {'csv'|'json'} AppiumCliTransformerName\n */\n\n/**\n * These are the custom keywords that Appium recognizes.\n *\n * @typedef AppiumJSONSchemaKeywords\n * @property {string} [appiumCliDest]\n * @property {string} [appiumCliDescription]\n * @property {string[]} [appiumCliAliases]\n * @property {boolean} [appiumCliIgnored]\n * @property {AppiumCliTransformerName} [appiumCliTransformer]\n * @property {boolean} [appiumDeprecated]\n */\n\n/**\n * @typedef {import('ajv').KeywordDefinition} KeywordDefinition\n */\n"],"mappings":";;;;;;;;;AAAA;;AAMO,MAAMA,QAAQ,GAAG;EAYtBC,gBAAgB,EAAE;IAChBC,OAAO,EAAE,kBADO;IAEhBC,UAAU,EAAE;MACVC,IAAI,EAAE,OADI;MAEVC,KAAK,EAAE;QACLD,IAAI,EAAE,QADD;QAELE,SAAS,EAAE;MAFN,CAFG;MAMVC,QAAQ,EAAE,CANA;MAOVC,WAAW,EAAE,IAPH;MAQVC,WAAW,EACT;IATQ;EAFI,CAZI;EAoCtBC,aAAa,EAAE;IACbR,OAAO,EAAE,eADI;IAEbC,UAAU,EAAE;MACVC,IAAI,EAAE,QADI;MAEVE,SAAS,EAAE,CAFD;MAGVG,WAAW,EAAE;IAHH;EAFC,CApCO;EAqDtBE,oBAAoB,EAAE;IACpBT,OAAO,EAAE,sBADW;IAEpBU,UAAU,EAAE,QAFQ;IAGpBT,UAAU,EAAE;MACVC,IAAI,EAAE,QADI;MAEVE,SAAS,EAAE,CAFD;MAGVG,WAAW,EAAE;IAHH;EAHQ,CArDA;EAoEtBI,oBAAoB,EAAE;IACpBX,OAAO,EAAE,sBADW;IAEpBC,UAAU,EAAE;MACVC,IAAI,EAAE,QADI;MAEVU,IAAI,EAAEC,MAAM,CAACC,IAAP,CAAYC,6BAAZ,CAFI;MAGVR,WAAW,EACT;IAJQ;EAFQ,CApEA;EAkFtBS,gBAAgB,EAAE;IAChBhB,OAAO,EAAE,kBADO;IAEhBC,UAAU,EAAE;MACVC,IAAI,EAAE,SADI;MAEVK,WAAW,EACT,kHAHQ;MAIVK,IAAI,EAAE,CAAC,IAAD;IAJI;EAFI,CAlFI;EAgGtBK,gBAAgB,EAAE;IAChBjB,OAAO,EAAE,kBADO;IAEhBC,UAAU,EAAE;MACVC,IAAI,EAAE,SADI;MAEVK,WAAW,EAAE,wEAFH;MAGVK,IAAI,EAAE,CAAC,IAAD,CAHI;MAIVM,QAAQ,EACN;IALQ;EAFI;AAhGI,CAAjB"}
1
+ {"version":3,"file":"keywords.js","sourceRoot":"","sources":["../../../lib/schema/keywords.js"],"names":[],"mappings":";;;AAAA,yDAAgD;AAEhD;;;GAGG;AACU,QAAA,QAAQ,GAAG;IACtB;;;;;;;;;;OAUG;IACH,gBAAgB,EAAE;QAChB,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,CAAC;aACb;YACD,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,IAAI;YACjB,WAAW,EACT,qIAAqI;SACxI;KACF;IACD;;;;;;;;;OASG;IACH,aAAa,EAAE;QACb,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,oEAAoE;SAClF;KACF;IAED;;;;;;;OAOG;IACH,oBAAoB,EAAE;QACpB,OAAO,EAAE,sBAAsB;QAC/B,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,+EAA+E;SAC7F;KACF;IAED;;;;OAIG;IACH,oBAAoB,EAAE;QACpB,OAAO,EAAE,sBAAsB;QAC/B,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,+BAAY,CAAC;YAC/B,WAAW,EACT,oFAAoF;SACvF;KACF;IAED;;;OAGG;IACH,gBAAgB,EAAE;QAChB,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE;YACV,IAAI,EAAE,SAAS;YACf,WAAW,EACT,kHAAkH;YACpH,IAAI,EAAE,CAAC,IAAI,CAAC;SACb;KACF;IAED;;;OAGG;IACH,gBAAgB,EAAE;QAChB,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE;YACV,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,wEAAwE;YACrF,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,QAAQ,EACN,+IAA+I;SAClJ;KACF;CACF,CAAC;AAEF;;;;;GAKG;AAEH;;;;;;;;;;GAUG;AAEH;;GAEG"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../lib/schema/schema.js"],"names":[],"mappings":"AASA;;;;;GAKG;AACH;IAqCY,cAA2B;IAAA,uEAEV;IAsHL,cAA2B;IAAA,qEACP;CAvI3C;AAED;;GAEG;AACH,oDAA2E;AAuf3E;;;GAGG;AACH;IAME,cAEC;IAPD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEa;CAKxC;AAED;;;;GAIG;AACH;IAWE;;;OAGG;IACH,qBAHW,aAAa,WACb,MAAM,EAKhB;IAjBD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEc;IAExC;;OAEG;IACH,MAFU,SAAS;QAAC,OAAO,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAExD;CAUN;AAED;;GAEG;AACH;IAWE;;OAEG;IACH,sBAFW,MAAM,EAKhB;IAhBD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEe;IAEzC;;OAEG;IACH,MAFU,SAAS;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC,CAEjC;CASN;AAED;;;;;GAKG;AACH;IAWE;;;;OAIG;IACH,oBAJW,GAAG,WACH,aAAa,WACb,MAAM,EAyBhB;IAtCD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEmB;IAE7C;;OAEG;IACH,MAFU,SAAS;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAErE;CA+BN;AAvWC;;;;;;;;;;;GAWG;AACH,wCANW,aAAa,WACb,MAAM,UACN,YAAY,GAEV,IAAI,CAmBhB;AAzKD,sEAEC;AAyKD;;;;;;GAMG;AACH,iCALW,MAAM,8FAGJ,eAAQ,SAAS,CAI7B;AAED;;;;;;GAMG;AACH,iCALW,MAAM,8FAGJ,OAAO,CAInB;AAxMD;;;;GAIG;AACH,+BAFa,OAAO,CAInB;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,kCAFa,SAAS,OAAO,MAAM,EAAC,kBAAkB,CAAC,CAAC,CAsEvD;AAuBD;;;;;;;;;;GAUG;AACH,+BAFa,IAAI,CAehB;AA2ND;;;;;;;GAOG;AACH,gCALW,GAAG,6BAGD,OAAO,KAAK,EAAE,WAAW,EAAE,CAKvC;AAxCD;;;;;;GAMG;AACH,qDAFa,YAAY,CAIxB;AA9ED;;;;;;;;;;;;;GAaG;AACH,iDAqDC;AArID;;;;;;;;;;;GAWG;AACH,uIA8BC;AAED;;;;;;GAMG;AACH,iDAJW,aAAa,WACb,MAAM,GACJ,OAAO,MAAM,EAAC,mBAAmB,CAAC,CAe9C;AAiHD;;;;GAIG;AACH,uDAHW,MAAM,GACJ,OAAO,CAInB;;;;;;;4BAoJU,OAAO,eAAe,EAAE,aAAa;;;;;0BAMpC,KAAK;;;;;iCAKN,YAAY,GAAG,UAAU;;;;;;8BAOxB;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,eAAS;CAAC,EAAE;kCAI3C,aAAQ,cAAc,CAAC;;;;wCAKvB,OAAO,MAAM,EAAC,OAAO,MAAM,EAAC,mBAAmB,CAAC,CAAC;;;;mEAMjD,OAAO,MAAM,EAAC,SAAS,SAAS,IAAI,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../lib/schema/schema.js"],"names":[],"mappings":"AASA;;;;;GAKG;AACH;IAqCQ,cAEA;IAAA,uEACL;IAqHoC,cAEnB;IAAA,qEACP;CAzIZ;AAED;;GAEG;AACH,oDAA2E;AA4f3E;;;GAGG;AACH;IAME,cAEC;IAPD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEa;CAKxC;AAED;;;;GAIG;AACH;IAWE;;;OAGG;IACH,qBAHW,aAAa,WACb,MAAM,EAKhB;IAjBD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEc;IAExC;;OAEG;IACH,MAFU,SAAS;QAAC,OAAO,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAExD;CAUN;AAED;;GAEG;AACH;IAWE;;OAEG;IACH,sBAFW,MAAM,EAKhB;IAhBD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEe;IAEzC;;OAEG;IACH,MAFU,SAAS;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC,CAEjC;CASN;AAED;;;;;GAKG;AACH;IAWE;;;;OAIG;IACH,oBAJW,GAAG,WACH,aAAa,WACb,MAAM,EAyBhB;IAtCD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEmB;IAE7C;;OAEG;IACH,MAFU,SAAS;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAErE;CA+BN;AA1WC;;;;;;;;;;;GAWG;AACH,wCANW,aAAa,WACb,MAAM,UACN,YAAY,GAEV,IAAI,CAmBhB;AAzKD,sEAEC;AAyKD;;;;;;GAMG;AACH,iCALW,MAAM,8FAGJ,eAAQ,SAAS,CAI7B;AAED;;;;;;GAMG;AACH,iCALW,MAAM,8FAGJ,OAAO,CAInB;AAxMD;;;;GAIG;AACH,+BAFa,OAAO,CAInB;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,kCAFa,SAAS,OAAO,MAAM,EAAC,kBAAkB,CAAC,CAAC,CAsEvD;AAuBD;;;;;;;;;;GAUG;AACH,+BAFa,IAAI,CAehB;AA8ND;;;;;;;GAOG;AACH,gCALW,GAAG,6BAGD,OAAO,KAAK,EAAE,WAAW,EAAE,CAKvC;AAxCD;;;;;;GAMG;AACH,qDAFa,YAAY,CAIxB;AAjFD;;;;;;;;;;;;;GAaG;AACH,iDAwDC;AAxID;;;;;;;;;;;GAWG;AACH,uIA8BC;AAED;;;;;;GAMG;AACH,iDAJW,aAAa,WACb,MAAM,GACJ,OAAO,MAAM,EAAC,mBAAmB,CAAC,CAe9C;AAoHD;;;;GAIG;AACH,uDAHW,MAAM,GACJ,OAAO,CAInB;;;;;;;4BAoJU,OAAO,eAAe,EAAE,aAAa;;;;;0BAMpC,KAAK;;;;;iCAKN,YAAY,GAAG,UAAU;;;;;;8BAOxB;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,eAAS;CAAC,EAAE;kCAI3C,aAAQ,cAAc,CAAC;;;;wCAKvB,OAAO,MAAM,EAAC,OAAO,MAAM,EAAC,mBAAmB,CAAC,CAAC;;;;mEAMjD,OAAO,MAAM,EAAC,SAAS,SAAS,IAAI,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,yBAAyB,CAAC"}