appium 2.0.0-beta.2 → 2.0.0-beta.23
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.
- package/README.md +9 -9
- package/build/check-npm-pack-files.js +23 -0
- package/build/commands-yml/parse.js +319 -0
- package/build/commands-yml/validator.js +130 -0
- package/build/index.js +19 -0
- package/build/lib/appium-config.schema.json +0 -0
- package/build/lib/appium.js +160 -53
- package/build/lib/cli/args.js +115 -279
- package/build/lib/cli/driver-command.js +11 -1
- package/build/lib/cli/extension-command.js +60 -8
- package/build/lib/cli/extension.js +30 -7
- package/build/lib/cli/npm.js +43 -29
- package/build/lib/cli/parser.js +156 -89
- package/build/lib/cli/plugin-command.js +11 -1
- package/build/lib/cli/utils.js +29 -3
- package/build/lib/config-file.js +141 -0
- package/build/lib/config.js +53 -65
- package/build/lib/driver-config.js +42 -19
- package/build/lib/drivers.js +8 -4
- package/build/lib/ext-config-io.js +165 -0
- package/build/lib/extension-config.js +130 -61
- package/build/lib/grid-register.js +22 -24
- package/build/lib/logger.js +3 -3
- package/build/lib/logsink.js +11 -13
- package/build/lib/main.js +197 -77
- package/build/lib/plugin-config.js +21 -11
- package/build/lib/plugins.js +4 -2
- package/build/lib/schema/appium-config-schema.js +253 -0
- package/build/lib/schema/arg-spec.js +120 -0
- package/build/lib/schema/cli-args.js +188 -0
- package/build/lib/schema/cli-transformers.js +76 -0
- package/build/lib/schema/index.js +36 -0
- package/build/lib/schema/keywords.js +72 -0
- package/build/lib/schema/schema.js +357 -0
- package/build/lib/utils.js +44 -99
- package/build/postinstall.js +90 -0
- package/build/test/cli/cli-e2e-specs.js +221 -0
- package/build/test/cli/cli-helpers.js +86 -0
- package/build/test/cli/cli-specs.js +71 -0
- package/build/test/cli/fixtures/test-driver/package.json +27 -0
- package/build/test/cli/schema-args-specs.js +48 -0
- package/build/test/cli/schema-e2e-specs.js +47 -0
- package/build/test/config-e2e-specs.js +112 -0
- package/build/test/config-file-e2e-specs.js +209 -0
- package/build/test/config-file-specs.js +281 -0
- package/build/test/config-specs.js +159 -0
- package/build/test/driver-e2e-specs.js +435 -0
- package/build/test/driver-specs.js +321 -0
- package/build/test/ext-config-io-specs.js +181 -0
- package/build/test/extension-config-specs.js +365 -0
- package/build/test/fixtures/allow-feat.txt +5 -0
- package/build/test/fixtures/caps.json +3 -0
- package/build/test/fixtures/config/allow-insecure.txt +3 -0
- package/build/test/fixtures/config/appium.config.bad-nodeconfig.json +5 -0
- package/build/test/fixtures/config/appium.config.bad.json +32 -0
- package/build/test/fixtures/config/appium.config.ext-good.json +9 -0
- package/build/test/fixtures/config/appium.config.ext-unknown-props.json +10 -0
- package/build/test/fixtures/config/appium.config.good.js +40 -0
- package/build/test/fixtures/config/appium.config.good.json +33 -0
- package/build/test/fixtures/config/appium.config.good.yaml +30 -0
- package/build/test/fixtures/config/appium.config.invalid.json +31 -0
- package/build/test/fixtures/config/appium.config.security-array.json +5 -0
- package/build/test/fixtures/config/appium.config.security-delimited.json +5 -0
- package/build/test/fixtures/config/appium.config.security-path.json +5 -0
- package/build/test/fixtures/config/driver-fake.config.json +8 -0
- package/build/test/fixtures/config/nodeconfig.json +3 -0
- package/build/test/fixtures/config/plugin-fake.config.json +0 -0
- package/build/test/fixtures/default-args.js +35 -0
- package/build/test/fixtures/deny-feat.txt +5 -0
- package/build/test/fixtures/driver.schema.js +20 -0
- package/build/test/fixtures/extensions.yaml +27 -0
- package/build/test/fixtures/flattened-schema.js +504 -0
- package/build/test/fixtures/plugin.schema.js +20 -0
- package/build/test/fixtures/schema-with-extensions.js +28 -0
- package/build/test/grid-register-specs.js +74 -0
- package/build/test/helpers.js +75 -0
- package/build/test/logger-specs.js +76 -0
- package/build/test/npm-specs.js +20 -0
- package/build/test/parser-specs.js +314 -0
- package/build/test/plugin-e2e-specs.js +316 -0
- package/build/test/schema/arg-spec-specs.js +70 -0
- package/build/test/schema/cli-args-specs.js +431 -0
- package/build/test/schema/schema-specs.js +389 -0
- package/build/test/utils-specs.js +266 -0
- package/index.js +11 -0
- package/lib/appium-config.schema.json +278 -0
- package/lib/appium.js +207 -65
- package/lib/cli/args.js +174 -375
- package/lib/cli/driver-command.js +4 -0
- package/lib/cli/extension-command.js +70 -5
- package/lib/cli/extension.js +25 -5
- package/lib/cli/npm.js +86 -18
- package/lib/cli/parser.js +257 -79
- package/lib/cli/plugin-command.js +4 -0
- package/lib/cli/utils.js +21 -1
- package/lib/config-file.js +227 -0
- package/lib/config.js +84 -63
- package/lib/driver-config.js +66 -11
- package/lib/drivers.js +4 -1
- package/lib/ext-config-io.js +287 -0
- package/lib/extension-config.js +225 -67
- package/lib/grid-register.js +27 -24
- package/lib/logger.js +1 -1
- package/lib/logsink.js +10 -7
- package/lib/main.js +214 -77
- package/lib/plugin-config.js +35 -6
- package/lib/plugins.js +1 -0
- package/lib/schema/appium-config-schema.js +287 -0
- package/lib/schema/arg-spec.js +222 -0
- package/lib/schema/cli-args.js +285 -0
- package/lib/schema/cli-transformers.js +123 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +135 -0
- package/lib/schema/schema.js +577 -0
- package/lib/utils.js +42 -88
- package/package.json +55 -84
- package/postinstall.js +71 -0
- package/types/appium-config.d.ts +197 -0
- package/types/types.d.ts +201 -0
- package/CHANGELOG.md +0 -3515
- package/build/lib/cli/parser-helpers.js +0 -82
- package/lib/cli/parser-helpers.js +0 -79
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.toParserArgs = toParserArgs;
|
|
9
|
+
|
|
10
|
+
require("source-map-support/register");
|
|
11
|
+
|
|
12
|
+
var _argparse = require("argparse");
|
|
13
|
+
|
|
14
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
15
|
+
|
|
16
|
+
var _configFile = require("../config-file");
|
|
17
|
+
|
|
18
|
+
var _schema = require("./schema");
|
|
19
|
+
|
|
20
|
+
var _cliTransformers = require("./cli-transformers");
|
|
21
|
+
|
|
22
|
+
const TYPENAMES = Object.freeze({
|
|
23
|
+
ARRAY: 'array',
|
|
24
|
+
OBJECT: 'object',
|
|
25
|
+
BOOLEAN: 'boolean',
|
|
26
|
+
INTEGER: 'integer',
|
|
27
|
+
NUMBER: 'number',
|
|
28
|
+
NULL: 'null',
|
|
29
|
+
STRING: 'string'
|
|
30
|
+
});
|
|
31
|
+
const SHORT_ARG_CUTOFF = 3;
|
|
32
|
+
|
|
33
|
+
function aliasToFlag(argSpec, alias) {
|
|
34
|
+
const {
|
|
35
|
+
extType,
|
|
36
|
+
extName,
|
|
37
|
+
name
|
|
38
|
+
} = argSpec;
|
|
39
|
+
const arg = alias !== null && alias !== void 0 ? alias : name;
|
|
40
|
+
const isShort = arg.length < SHORT_ARG_CUTOFF;
|
|
41
|
+
|
|
42
|
+
if (extType && extName) {
|
|
43
|
+
return isShort ? `--${extType}-${_lodash.default.kebabCase(extName)}-${arg}` : `--${extType}-${_lodash.default.kebabCase(extName)}-${_lodash.default.kebabCase(arg)}`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return isShort ? `-${arg}` : `--${_lodash.default.kebabCase(arg)}`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const screamingSnakeCase = _lodash.default.flow(_lodash.default.snakeCase, _lodash.default.toUpper);
|
|
50
|
+
|
|
51
|
+
function getSchemaValidator({
|
|
52
|
+
ref: schemaId
|
|
53
|
+
}, coerce = _lodash.default.identity) {
|
|
54
|
+
return value => {
|
|
55
|
+
const coerced = coerce(value);
|
|
56
|
+
const errors = (0, _schema.validate)(coerced, schemaId);
|
|
57
|
+
|
|
58
|
+
if (_lodash.default.isEmpty(errors)) {
|
|
59
|
+
return coerced;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
throw new _argparse.ArgumentTypeError('\n\n' + (0, _configFile.formatErrors)(errors, value, {
|
|
63
|
+
schemaId
|
|
64
|
+
}));
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function makeDescription(schema) {
|
|
69
|
+
const {
|
|
70
|
+
appiumCliDescription,
|
|
71
|
+
description = '',
|
|
72
|
+
appiumDeprecated
|
|
73
|
+
} = schema;
|
|
74
|
+
let desc = appiumCliDescription !== null && appiumCliDescription !== void 0 ? appiumCliDescription : description;
|
|
75
|
+
|
|
76
|
+
if (appiumDeprecated) {
|
|
77
|
+
desc = `[DEPRECATED] ${desc}`;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return desc;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function subSchemaToArgDef(subSchema, argSpec, opts = {}) {
|
|
84
|
+
var _overrides$dest;
|
|
85
|
+
|
|
86
|
+
const {
|
|
87
|
+
overrides = {}
|
|
88
|
+
} = opts;
|
|
89
|
+
let {
|
|
90
|
+
type,
|
|
91
|
+
appiumCliAliases,
|
|
92
|
+
appiumCliTransformer,
|
|
93
|
+
enum: enumValues
|
|
94
|
+
} = subSchema;
|
|
95
|
+
const {
|
|
96
|
+
name,
|
|
97
|
+
arg,
|
|
98
|
+
dest
|
|
99
|
+
} = argSpec;
|
|
100
|
+
const aliases = [aliasToFlag(argSpec), ...(appiumCliAliases !== null && appiumCliAliases !== void 0 ? appiumCliAliases : []).map(alias => aliasToFlag(argSpec, alias))];
|
|
101
|
+
let argOpts = {
|
|
102
|
+
required: false,
|
|
103
|
+
help: makeDescription(subSchema)
|
|
104
|
+
};
|
|
105
|
+
let argTypeFunction;
|
|
106
|
+
|
|
107
|
+
switch (type) {
|
|
108
|
+
case TYPENAMES.BOOLEAN:
|
|
109
|
+
{
|
|
110
|
+
argOpts.action = 'store_true';
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
case TYPENAMES.OBJECT:
|
|
115
|
+
{
|
|
116
|
+
argTypeFunction = _cliTransformers.transformers.json;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
case TYPENAMES.ARRAY:
|
|
121
|
+
{
|
|
122
|
+
argTypeFunction = _cliTransformers.transformers.csv;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
case TYPENAMES.NUMBER:
|
|
127
|
+
{
|
|
128
|
+
argTypeFunction = getSchemaValidator(argSpec, parseFloat);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
case TYPENAMES.INTEGER:
|
|
133
|
+
{
|
|
134
|
+
argTypeFunction = getSchemaValidator(argSpec, _lodash.default.parseInt);
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
case TYPENAMES.STRING:
|
|
139
|
+
{
|
|
140
|
+
argTypeFunction = getSchemaValidator(argSpec);
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
case TYPENAMES.NULL:
|
|
145
|
+
default:
|
|
146
|
+
{
|
|
147
|
+
throw new TypeError(`Schema property "${arg}": \`${type}\` type unknown or disallowed`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (type !== TYPENAMES.BOOLEAN) {
|
|
152
|
+
argOpts.metavar = screamingSnakeCase(name);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (type !== TYPENAMES.ARRAY && type !== TYPENAMES.OBJECT && appiumCliTransformer) {
|
|
156
|
+
var _argTypeFunction;
|
|
157
|
+
|
|
158
|
+
argTypeFunction = _lodash.default.flow((_argTypeFunction = argTypeFunction) !== null && _argTypeFunction !== void 0 ? _argTypeFunction : _lodash.default.identity, _cliTransformers.transformers[appiumCliTransformer]);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (argTypeFunction) {
|
|
162
|
+
argOpts.type = argTypeFunction;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (enumValues && !_lodash.default.isEmpty(enumValues)) {
|
|
166
|
+
if (type === TYPENAMES.STRING) {
|
|
167
|
+
argOpts.choices = enumValues.map(String);
|
|
168
|
+
} else {
|
|
169
|
+
throw new TypeError(`Problem with schema for ${arg}; \`enum\` is only supported for \`type: 'string'\``);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
argOpts = _lodash.default.merge(argOpts, (_overrides$dest = overrides[dest]) !== null && _overrides$dest !== void 0 ? _overrides$dest : {});
|
|
174
|
+
return [aliases, argOpts];
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function toParserArgs(opts = {}) {
|
|
178
|
+
const flattened = (0, _schema.flattenSchema)().filter(({
|
|
179
|
+
schema
|
|
180
|
+
}) => !schema.appiumCliIgnored);
|
|
181
|
+
return new Map(_lodash.default.map(flattened, ({
|
|
182
|
+
schema,
|
|
183
|
+
argSpec
|
|
184
|
+
}) => subSchemaToArgDef(schema, argSpec, opts)));
|
|
185
|
+
}require('source-map-support').install();
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvY2xpLWFyZ3MuanMiXSwibmFtZXMiOlsiVFlQRU5BTUVTIiwiT2JqZWN0IiwiZnJlZXplIiwiQVJSQVkiLCJPQkpFQ1QiLCJCT09MRUFOIiwiSU5URUdFUiIsIk5VTUJFUiIsIk5VTEwiLCJTVFJJTkciLCJTSE9SVF9BUkdfQ1VUT0ZGIiwiYWxpYXNUb0ZsYWciLCJhcmdTcGVjIiwiYWxpYXMiLCJleHRUeXBlIiwiZXh0TmFtZSIsIm5hbWUiLCJhcmciLCJpc1Nob3J0IiwibGVuZ3RoIiwiXyIsImtlYmFiQ2FzZSIsInNjcmVhbWluZ1NuYWtlQ2FzZSIsImZsb3ciLCJzbmFrZUNhc2UiLCJ0b1VwcGVyIiwiZ2V0U2NoZW1hVmFsaWRhdG9yIiwicmVmIiwic2NoZW1hSWQiLCJjb2VyY2UiLCJpZGVudGl0eSIsInZhbHVlIiwiY29lcmNlZCIsImVycm9ycyIsImlzRW1wdHkiLCJBcmd1bWVudFR5cGVFcnJvciIsIm1ha2VEZXNjcmlwdGlvbiIsInNjaGVtYSIsImFwcGl1bUNsaURlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJhcHBpdW1EZXByZWNhdGVkIiwiZGVzYyIsInN1YlNjaGVtYVRvQXJnRGVmIiwic3ViU2NoZW1hIiwib3B0cyIsIm92ZXJyaWRlcyIsInR5cGUiLCJhcHBpdW1DbGlBbGlhc2VzIiwiYXBwaXVtQ2xpVHJhbnNmb3JtZXIiLCJlbnVtIiwiZW51bVZhbHVlcyIsImRlc3QiLCJhbGlhc2VzIiwibWFwIiwiYXJnT3B0cyIsInJlcXVpcmVkIiwiaGVscCIsImFyZ1R5cGVGdW5jdGlvbiIsImFjdGlvbiIsInRyYW5zZm9ybWVycyIsImpzb24iLCJjc3YiLCJwYXJzZUZsb2F0IiwicGFyc2VJbnQiLCJUeXBlRXJyb3IiLCJtZXRhdmFyIiwiY2hvaWNlcyIsIlN0cmluZyIsIm1lcmdlIiwidG9QYXJzZXJBcmdzIiwiZmxhdHRlbmVkIiwiZmlsdGVyIiwiYXBwaXVtQ2xpSWdub3JlZCIsIk1hcCJdLCJtYXBwaW5ncyI6Ijs7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RUFBQUEsT0FBTyxHQUFHbEMsZ0JBQUVnRCxLQUFGLENBQ1JkLE9BRFEscUJBS1JULFNBQVMsQ0FBQ00sSUFBRCxDQUxELDZEQUtXLEVBTFgsQ0FBVjtBQVFBLFNBQU8sQ0FBQ0MsT0FBRCxFQUFVRSxPQUFWLENBQVA7QUFDRDs7QUFXTSxTQUFTZSxZQUFULENBQXVCekIsSUFBSSxHQUFHLEVBQTlCLEVBQWtDO0FBQ3ZDLFFBQU0wQixTQUFTLEdBQUcsNkJBQWdCQyxNQUFoQixDQUF1QixDQUFDO0FBQUNsQyxJQUFBQTtBQUFELEdBQUQsS0FBYyxDQUFDQSxNQUFNLENBQUNtQyxnQkFBN0MsQ0FBbEI7QUFDQSxTQUFPLElBQUlDLEdBQUosQ0FDTHJELGdCQUFFaUMsR0FBRixDQUFNaUIsU0FBTixFQUFpQixDQUFDO0FBQUNqQyxJQUFBQSxNQUFEO0FBQVN6QixJQUFBQTtBQUFULEdBQUQsS0FDZjhCLGlCQUFpQixDQUFDTCxNQUFELEVBQVN6QixPQUFULEVBQWtCZ0MsSUFBbEIsQ0FEbkIsQ0FESyxDQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtBcmd1bWVudFR5cGVFcnJvcn0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Zm9ybWF0RXJyb3JzIGFzIGZvcm1hdEVycm9yc30gZnJvbSAnLi4vY29uZmlnLWZpbGUnO1xuaW1wb3J0IHtmbGF0dGVuU2NoZW1hLCB2YWxpZGF0ZX0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHt0cmFuc2Zvcm1lcnN9IGZyb20gJy4vY2xpLXRyYW5zZm9ybWVycyc7XG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29uY2VybnMgZnVuY3Rpb25zIHdoaWNoIGNvbnZlcnQgc2NoZW1hIGRlZmluaXRpb25zIHRvXG4gKiBgYXJncGFyc2VgLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzLCBmb3IgZGVyaXZpbmcgQ0xJIGFyZ3VtZW50cyBmcm9tIGFcbiAqIHNjaGVtYS5cbiAqL1xuXG4vKipcbiAqIExvb2t1cCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBgdHlwZWAgZmllbGQgaW4gYSBKU09OIHNjaGVtYS5cbiAqIEB0eXBlIHtSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoJ2pzb24tc2NoZW1hJykuSlNPTlNjaGVtYTdUeXBlTmFtZT4+fVxuICovXG5jb25zdCBUWVBFTkFNRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgQVJSQVk6ICdhcnJheScsXG4gIE9CSkVDVDogJ29iamVjdCcsXG4gIEJPT0xFQU46ICdib29sZWFuJyxcbiAgSU5URUdFUjogJ2ludGVnZXInLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBOVUxMOiAnbnVsbCcsXG4gIFNUUklORzogJ3N0cmluZycsXG59KTtcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggYWxpYXMgbGVuZ3RocyBsZXNzIHRoYW4gdGhpcyB3aWxsIGJlIGNvbnNpZGVyZWQgXCJzaG9ydFwiIGZsYWdzLlxuICovXG5jb25zdCBTSE9SVF9BUkdfQ1VUT0ZGID0gMztcblxuLyoqXG4gKiBDb252ZXJ0IGFuIGFsaWFzIChgZm9vYCkgdG8gYSBmbGFnIChgLS1mb29gKSBvciBhIHNob3J0IGZsYWcgKGAtZmApLlxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gdGhlIGFyZ3VtZW50IHNwZWNpZmljYXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYWxpYXNdIC0gdGhlIGFsaWFzIHRvIGNvbnZlcnQgdG8gYSBmbGFnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZmxhZ1xuICovXG5mdW5jdGlvbiBhbGlhc1RvRmxhZyAoYXJnU3BlYywgYWxpYXMpIHtcbiAgY29uc3Qge2V4dFR5cGUsIGV4dE5hbWUsIG5hbWV9ID0gYXJnU3BlYztcbiAgY29uc3QgYXJnID0gYWxpYXMgPz8gbmFtZTtcbiAgY29uc3QgaXNTaG9ydCA9IGFyZy5sZW5ndGggPCBTSE9SVF9BUkdfQ1VUT0ZGO1xuICBpZiAoZXh0VHlwZSAmJiBleHROYW1lKSB7XG4gICAgcmV0dXJuIGlzU2hvcnRcbiAgICAgID8gYC0tJHtleHRUeXBlfS0ke18ua2ViYWJDYXNlKGV4dE5hbWUpfS0ke2FyZ31gXG4gICAgICA6IGAtLSR7ZXh0VHlwZX0tJHtfLmtlYmFiQ2FzZShleHROYW1lKX0tJHtfLmtlYmFiQ2FzZShhcmcpfWA7XG4gIH1cbiAgcmV0dXJuIGlzU2hvcnQgPyBgLSR7YXJnfWAgOiBgLS0ke18ua2ViYWJDYXNlKGFyZyl9YDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyB0byBTQ1JFQU1JTkdfU05BS0VfQ0FTRVxuICovXG5jb25zdCBzY3JlYW1pbmdTbmFrZUNhc2UgPSBfLmZsb3coXy5zbmFrZUNhc2UsIF8udG9VcHBlcik7XG5cbi8qKlxuICogR2l2ZW4gdW5pcXVlIHByb3BlcnR5IG5hbWUgYG5hbWVgLCByZXR1cm4gYSBmdW5jdGlvbiB3aGljaCB2YWxpZGF0ZXMgYSB2YWx1ZVxuICogYWdhaW5zdCBhIHByb3BlcnR5IHdpdGhpbiB0aGUgc2NoZW1hLlxuICogQHRlbXBsYXRlIENvZXJjZWRcbiAqIEBwYXJhbSB7QXJnU3BlY30gYXJnU3BlYyAtIEFyZ3VtZW50IG5hbWVcbiAqIEBwYXJhbSB7KHZhbHVlOiBzdHJpbmcpID0+IENvZXJjZWR9IFtjb2VyY2VdIC0gRnVuY3Rpb24gdG8gY29lcmNlIHRvIGEgZGlmZmVyZW50XG4gKiBwcmltaXRpdmVcbiAqIEB0b2RvIFNlZSBpZiB3ZSBjYW4gcmVtb3ZlIGBjb2VyY2VgIGJ5IGFsbG93aW5nIEFqdiB0byBjb2VyY2UgaW4gaXRzXG4gKiBjb25zdHJ1Y3RvciBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBnZXRTY2hlbWFWYWxpZGF0b3IgKHtyZWY6IHNjaGVtYUlkfSwgY29lcmNlID0gXy5pZGVudGl0eSkge1xuICAvKiogQHBhcmFtIHtzdHJpbmd9IHZhbHVlICovXG4gIHJldHVybiAodmFsdWUpID0+IHtcbiAgICBjb25zdCBjb2VyY2VkID0gY29lcmNlKHZhbHVlKTtcbiAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZShjb2VyY2VkLCBzY2hlbWFJZCk7XG4gICAgaWYgKF8uaXNFbXB0eShlcnJvcnMpKSB7XG4gICAgICByZXR1cm4gY29lcmNlZDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEFyZ3VtZW50VHlwZUVycm9yKFxuICAgICAgJ1xcblxcbicgKyBmb3JtYXRFcnJvcnMoZXJyb3JzLCB2YWx1ZSwge3NjaGVtYUlkfSksXG4gICAgKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgdGhlIGRlc2NyaXB0aW9uIGZvciBkaXNwbGF5IG9uIHRoZSBDTEksIGdpdmVuIHRoZSBzY2hlbWEuXG4gKiBAcGFyYW0ge0FwcGl1bUpTT05TY2hlbWF9IHNjaGVtYVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gbWFrZURlc2NyaXB0aW9uIChzY2hlbWEpIHtcbiAgY29uc3Qge2FwcGl1bUNsaURlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbiA9ICcnLCBhcHBpdW1EZXByZWNhdGVkfSA9IHNjaGVtYTtcbiAgbGV0IGRlc2MgPSBhcHBpdW1DbGlEZXNjcmlwdGlvbiA/PyBkZXNjcmlwdGlvbjtcbiAgaWYgKGFwcGl1bURlcHJlY2F0ZWQpIHtcbiAgICBkZXNjID0gYFtERVBSRUNBVEVEXSAke2Rlc2N9YDtcbiAgfVxuICByZXR1cm4gZGVzYztcbn1cblxuLyoqXG4gKiBHaXZlbiBhcmcgYG5hbWVgLCBhIEpTT04gc2NoZW1hIGBzdWJTY2hlbWFgLCBhbmQgb3B0aW9ucywgcmV0dXJuIGFuIGFyZ3VtZW50IGRlZmluaXRpb25cbiAqIGFzIHVuZGVyc3Rvb2QgYnkgYGFyZ3BhcnNlYC5cbiAqIEBwYXJhbSB7QXBwaXVtSlNPTlNjaGVtYX0gc3ViU2NoZW1hIC0gSlNPTiBzY2hlbWEgZm9yIHRoZSBvcHRpb25cbiAqIEBwYXJhbSB7QXJnU3BlY30gYXJnU3BlYyAtIEFyZ3VtZW50IHNwZWMgdHVwbGVcbiAqIEBwYXJhbSB7U3ViU2NoZW1hVG9BcmdEZWZPcHRpb25zfSBbb3B0c10gLSBPcHRpb25zXG4gKiBAcmV0dXJucyB7W3N0cmluZ1tdLCBpbXBvcnQoJ2FyZ3BhcnNlJykuQXJndW1lbnRPcHRpb25zXX0gVHVwbGUgb2YgZmxhZyBhbmQgb3B0aW9uc1xuICovXG5mdW5jdGlvbiBzdWJTY2hlbWFUb0FyZ0RlZiAoc3ViU2NoZW1hLCBhcmdTcGVjLCBvcHRzID0ge30pIHtcbiAgY29uc3Qge292ZXJyaWRlcyA9IHt9fSA9IG9wdHM7XG4gIGxldCB7XG4gICAgdHlwZSxcbiAgICBhcHBpdW1DbGlBbGlhc2VzLFxuICAgIGFwcGl1bUNsaVRyYW5zZm9ybWVyLFxuICAgIGVudW06IGVudW1WYWx1ZXMsXG4gIH0gPSBzdWJTY2hlbWE7XG5cbiAgY29uc3Qge25hbWUsIGFyZywgZGVzdH0gPSBhcmdTcGVjO1xuXG4gIGNvbnN0IGFsaWFzZXMgPSBbXG4gICAgYWxpYXNUb0ZsYWcoYXJnU3BlYyksXG4gICAgLi4uLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi8gKGFwcGl1bUNsaUFsaWFzZXMgPz8gW10pLm1hcCgoYWxpYXMpID0+XG4gICAgICBhbGlhc1RvRmxhZyhhcmdTcGVjLCBhbGlhcyksXG4gICAgKSxcbiAgXTtcblxuICAvKiogQHR5cGUge2ltcG9ydCgnYXJncGFyc2UnKS5Bcmd1bWVudE9wdGlvbnN9ICovXG4gIGxldCBhcmdPcHRzID0ge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiBtYWtlRGVzY3JpcHRpb24oc3ViU2NoZW1hKVxuICB9O1xuXG4gIC8qKlxuICAgKiBHZW5lcmFsbHkgd2Ugd2lsbCBwcm92aWRlIGEgYHR5cGVgIHRvIGBhcmdwYXJzZWAgYXMgYSBmdW5jdGlvbiB3aGljaFxuICAgKiB2YWxpZGF0ZXMgdXNpbmcgYWp2ICh3aGljaCBpcyBtdWNoIG1vcmUgZnVsbC1mZWF0dXJlZCB0aGFuIHdoYXQgYGFyZ3BhcnNlYFxuICAgKiBjYW4gb2ZmZXIpLiBUaGUgZXhjZXB0aW9uIGlzIGBib29sZWFuYC10eXBlIG9wdGlvbnMsIHdoaWNoIGhhdmUgbm9cbiAgICogYGFyZ1R5cGVgLlxuICAgKlxuICAgKiBOb3Qgc3VyZSBpZiB0aGlzIHR5cGUgaXMgY29ycmVjdCwgYnV0IGl0J3Mgbm90IGRvaW5nIHdoYXQgSSB3YW50LiAgSSB3YW50XG4gICAqIHRvIHNheSBcInRoaXMgaXMgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHNvbWV0aGluZyBvZiB0eXBlIGBUYCB3aGVyZSBgVGAgaXNcbiAgICogbmV2ZXIgYSBgUHJvbWlzZWBcIi4gIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzeW5jLlxuICAgKiBAdHlwZSB7KCh2YWx1ZTogc3RyaW5nKSA9PiB1bmtub3duKXx1bmRlZmluZWR9XG4gICAqL1xuICBsZXQgYXJnVHlwZUZ1bmN0aW9uO1xuXG4gIC8vIGhhbmRsZSBzcGVjaWFsIGNhc2VzIGZvciB2YXJpb3VzIHR5cGVzXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8vIGJvb2xlYW5zIGRvIG5vdCBoYXZlIGEgdHlwZSBwZXIgYEFyZ3VtZW50T3B0aW9uc2AsIGp1c3QgYW4gXCJhY3Rpb25cIlxuICAgIGNhc2UgVFlQRU5BTUVTLkJPT0xFQU46IHtcbiAgICAgIGFyZ09wdHMuYWN0aW9uID0gJ3N0b3JlX3RydWUnO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBUWVBFTkFNRVMuT0JKRUNUOiB7XG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPSB0cmFuc2Zvcm1lcnMuanNvbjtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGFycmF5cyBhcmUgdHJlYXRlZCBhcyBDU1ZzLCBiZWNhdXNlIGBhcmdwYXJzZWAgZG9lc24ndCBoYW5kbGUgYXJyYXkgZGF0YS5cbiAgICBjYXNlIFRZUEVOQU1FUy5BUlJBWToge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gdHJhbnNmb3JtZXJzLmNzdjtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFwibnVtYmVyXCIgdHlwZSBpcyBjb2VyY2VkIHRvIGZsb2F0LiBgYXJncGFyc2VgIGRvZXMgdGhpcyBmb3IgdXMgaWYgd2UgdXNlIGBmbG9hdGAgdHlwZSwgYnV0XG4gICAgLy8gd2UgZG9uJ3QuXG4gICAgY2FzZSBUWVBFTkFNRVMuTlVNQkVSOiB7XG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPSBnZXRTY2hlbWFWYWxpZGF0b3IoYXJnU3BlYywgcGFyc2VGbG9hdCk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBcImludGVnZXJcIiBpcyBjb2VyY2VkIHRvIGFuIC4uIGludGVnZXIuICBhZ2FpbiwgYGFyZ3BhcnNlYCB3b3VsZCBkbyB0aGlzIGZvciB1cyBpZiB3ZSB1c2VkIGBpbnRgLlxuICAgIGNhc2UgVFlQRU5BTUVTLklOVEVHRVI6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IGdldFNjaGVtYVZhbGlkYXRvcihhcmdTcGVjLCBfLnBhcnNlSW50KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIHN0cmluZ3MgKGxpa2UgbnVtYmVyIGFuZCBpbnRlZ2VyKSBhcmUgc3ViamVjdCB0byBmdXJ0aGVyIHZhbGlkYXRpb25cbiAgICAvLyAoZS5nLiwgbXVzdCBzYXRpc2Z5IGEgbWFzayBvciByZWdleCBvciBldmVuIHNvbWUgY3VzdG9tIHZhbGlkYXRpb25cbiAgICAvLyBmdW5jdGlvbilcbiAgICBjYXNlIFRZUEVOQU1FUy5TVFJJTkc6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IGdldFNjaGVtYVZhbGlkYXRvcihhcmdTcGVjKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHRoZXJlIG1heSBiZSBzb21lIHdheSB0byByZXN0cmljdCB0aGlzIGF0IHRoZSBBanYgbGV2ZWwgLS1cbiAgICAvLyB0aGF0IG1heSBpbnZvbHZlIHBhdGNoaW5nIHRoZSBtZXRhc2NoZW1hLlxuICAgIGNhc2UgVFlQRU5BTUVTLk5VTEw6XG4gICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBTY2hlbWEgcHJvcGVydHkgXCIke2FyZ31cIjogXFxgJHt0eXBlfVxcYCB0eXBlIHVua25vd24gb3IgZGlzYWxsb3dlZGAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIG1ldGF2YXIgaXMgdXNlZCBpbiBoZWxwIHRleHQuIGBib29sZWFuYCBjYW5ub3QgaGF2ZSBhIG1ldGF2YXItLWl0IGlzIG5vdFxuICAvLyBkaXNwbGF5ZWQtLWFuZCBgYXJncGFyc2VgIHRocm93cyBpZiB5b3UgZ2l2ZSBpdCBvbmUuXG4gIGlmICh0eXBlICE9PSBUWVBFTkFNRVMuQk9PTEVBTikge1xuICAgIGFyZ09wdHMubWV0YXZhciA9IHNjcmVhbWluZ1NuYWtlQ2FzZShuYW1lKTtcbiAgfVxuXG4gIC8vIHRoZSB2YWxpZGl0eSBvZiBcImFwcGl1bUNsaVRyYW5zZm9ybWVyXCIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGRldGVybWluZWRcbiAgLy8gYnkgYWp2IGR1cmluZyBzY2hlbWEgdmFsaWRhdGlvbiBpbiBgZmluYWxpemVTY2hlbWEoKWAuIHRoZSBgYXJyYXlgICZcbiAgLy8gYG9iamVjdGAgdHlwZXMgaGF2ZSBhbHJlYWR5IGFkZGVkIGEgZm9ybWF0dGVyIChzZWUgYWJvdmUsIHNvIHdlIGRvbid0IGRvIGl0XG4gIC8vIHR3aWNlKS5cbiAgaWYgKFxuICAgIHR5cGUgIT09IFRZUEVOQU1FUy5BUlJBWSAmJlxuICAgIHR5cGUgIT09IFRZUEVOQU1FUy5PQkpFQ1QgJiZcbiAgICBhcHBpdW1DbGlUcmFuc2Zvcm1lclxuICApIHtcbiAgICBhcmdUeXBlRnVuY3Rpb24gPSBfLmZsb3coXG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPz8gXy5pZGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybWVyc1thcHBpdW1DbGlUcmFuc2Zvcm1lcl0sXG4gICAgKTtcbiAgfVxuXG4gIGlmIChhcmdUeXBlRnVuY3Rpb24pIHtcbiAgICBhcmdPcHRzLnR5cGUgPSBhcmdUeXBlRnVuY3Rpb247XG4gIH1cblxuICAvLyBjb252ZXJ0IEpTT04gc2NoZW1hIGBlbnVtYCB0byBgY2hvaWNlc2AuIGBlbnVtYCBjYW4gY29udGFpbiBhbnkgSlNPTiB0eXBlLCBidXQgYGFyZ3BhcnNlYFxuICAvLyBpcyBsaW1pdGVkIHRvIGEgc2luZ2xlIHR5cGUgcGVyIGFyZyAoSSB0aGluaykuICBzbyBsZXQncyBtYWtlIGV2ZXJ5dGhpbmcgYSBzdHJpbmcuXG4gIC8vIGFuZCBtaWdodCBhcyB3ZWxsIF9yZXF1aXJlXyB0aGUgYHR5cGU6IHN0cmluZ2Agd2hpbGUgd2UncmUgYXQgaXQuXG4gIGlmIChlbnVtVmFsdWVzICYmICFfLmlzRW1wdHkoZW51bVZhbHVlcykpIHtcbiAgICBpZiAodHlwZSA9PT0gVFlQRU5BTUVTLlNUUklORykge1xuICAgICAgYXJnT3B0cy5jaG9pY2VzID0gZW51bVZhbHVlcy5tYXAoU3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFByb2JsZW0gd2l0aCBzY2hlbWEgZm9yICR7YXJnfTsgXFxgZW51bVxcYCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgXFxgdHlwZTogJ3N0cmluZydcXGBgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBvdmVycmlkZXMgb3ZlcnJpZGUgYW55dGhpbmcgd2UgY29tcHV0ZWQgaGVyZS4gIHVzdWFsbHkgdGhpcyBpbnZvbHZlcyBcImN1c3RvbSB0eXBlc1wiLFxuICAvLyB3aGljaCBhcmUgcmVhbGx5IGp1c3QgdHJhbnNmb3JtIGZ1bmN0aW9ucy5cbiAgYXJnT3B0cyA9IF8ubWVyZ2UoXG4gICAgYXJnT3B0cyxcbiAgICAvKiogc2hvdWxkIHRoZSBvdmVycmlkZSBrZXlzIGNvcnJlc3BvbmQgdG8gdGhlIHByb3AgbmFtZSBvciB0aGUgcHJvcCBkZXN0P1xuICAgICAqIHRoZSBwcm9wIGRlc3QgaXMgY29tcHV0ZWQgYnkge0BsaW5rIGFsaWFzVG9EZXN0fS5cbiAgICAgKi9cbiAgICBvdmVycmlkZXNbZGVzdF0gPz8ge30sXG4gICk7XG5cbiAgcmV0dXJuIFthbGlhc2VzLCBhcmdPcHRzXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZmluYWxpemVkLCBmbGF0dGVuZWQgc2NoZW1hIHJlcHJlc2VudGF0aW9uIGludG9cbiAqIEFyZ3VtZW50RGVmaW5pdGlvbnMgZm9yIGhhbmRvZmYgdG8gYGFyZ3BhcnNlYC5cbiAqXG4gKiBAcGFyYW0ge1RvUGFyc2VyQXJnc09wdGlvbnN9IG9wdHMgLSBPcHRpb25zXG4gKiBAdGhyb3dzIElmIHNjaGVtYSBoYXMgbm90IGJlZW4gYWRkZWQgdG8gYWp2ICh2aWEgYGZpbmFsaXplU2NoZW1hKClgKVxuICogQHJldHVybnMge2ltcG9ydCgnLi4vY2xpL2FyZ3MnKS5Bcmd1bWVudERlZmluaXRpb25zfSBBIG1hcCBvZiBhcnJ5YXMgb2ZcbiAqIGFsaWFzZXMgdG8gYGFyZ3BhcnNlYCBhcmd1bWVudHM7IGVtcHR5IGlmIG5vIHNjaGVtYSBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QYXJzZXJBcmdzIChvcHRzID0ge30pIHtcbiAgY29uc3QgZmxhdHRlbmVkID0gZmxhdHRlblNjaGVtYSgpLmZpbHRlcigoe3NjaGVtYX0pID0+ICFzY2hlbWEuYXBwaXVtQ2xpSWdub3JlZCk7XG4gIHJldHVybiBuZXcgTWFwKFxuICAgIF8ubWFwKGZsYXR0ZW5lZCwgKHtzY2hlbWEsIGFyZ1NwZWN9KSA9PlxuICAgICAgc3ViU2NoZW1hVG9BcmdEZWYoc2NoZW1hLCBhcmdTcGVjLCBvcHRzKSxcbiAgICApLFxuICApO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB0b1BhcnNlckFyZ3N9XG4gKiBAdHlwZWRlZiB7U3ViU2NoZW1hVG9BcmdEZWZPcHRpb25zfSBUb1BhcnNlckFyZ3NPcHRpb25zXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgc3ViU2NoZW1hVG9BcmdEZWZ9LlxuICogQHR5cGVkZWYge09iamVjdH0gU3ViU2NoZW1hVG9BcmdEZWZPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ByZWZpeF0gLSBUaGUgcHJlZml4IHRvIHVzZSBmb3IgdGhlIGZsYWcsIGlmIGFueVxuICogQHByb3BlcnR5IHt7W2tleTogc3RyaW5nXTogaW1wb3J0KCdhcmdwYXJzZScpLkFyZ3VtZW50T3B0aW9uc319IFtvdmVycmlkZXNdIC0gQW4gb2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCB2YWx1ZXNcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhanYvZGlzdC90eXBlcycpLkZvcm1hdFZhbGlkYXRvcjxUPn0gRm9ybWF0VmFsaWRhdG9yPFQ+XG4gKi9cblxuLyoqXG4gKiBBIEpTT04gNyBzY2hlbWEgd2l0aCBvdXIgY3VzdG9tIGtleXdvcmRzLlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9rZXl3b3JkcycpLkFwcGl1bUpTT05TY2hlbWFLZXl3b3JkcyAmIGltcG9ydCgnanNvbi1zY2hlbWEnKS5KU09OU2NoZW1hN30gQXBwaXVtSlNPTlNjaGVtYVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9hcmctc3BlYycpLkFyZ1NwZWN9IEFyZ1NwZWNcbiAqL1xuIl0sImZpbGUiOiJsaWIvc2NoZW1hL2NsaS1hcmdzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.transformers = void 0;
|
|
9
|
+
|
|
10
|
+
require("source-map-support/register");
|
|
11
|
+
|
|
12
|
+
var _argparse = require("argparse");
|
|
13
|
+
|
|
14
|
+
var _fs = require("fs");
|
|
15
|
+
|
|
16
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
17
|
+
|
|
18
|
+
function parseCsvLine(value) {
|
|
19
|
+
return value.split(',').map(v => v.trim()).filter(Boolean);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function parseCsvFile(value) {
|
|
23
|
+
return value.split(/\r?\n/).map(v => v.trim()).filter(Boolean).flatMap(parseCsvLine);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const transformers = {
|
|
27
|
+
csv: value => {
|
|
28
|
+
let body;
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
body = (0, _fs.readFileSync)(value, 'utf8');
|
|
32
|
+
} catch (err) {
|
|
33
|
+
if (err.code !== 'ENOENT') {
|
|
34
|
+
throw new _argparse.ArgumentTypeError(`Could not read file ${body}: ${err.message}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
return body ? parseCsvFile(body) : parseCsvLine(value);
|
|
40
|
+
} catch (err) {
|
|
41
|
+
throw new _argparse.ArgumentTypeError('Must be a comma-delimited string, e.g., "foo,bar,baz"');
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
json: jsonOrPath => {
|
|
45
|
+
let json = jsonOrPath;
|
|
46
|
+
let loadedFromFile = false;
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
json = (0, _fs.readFileSync)(jsonOrPath, 'utf8');
|
|
50
|
+
loadedFromFile = true;
|
|
51
|
+
} catch (err) {
|
|
52
|
+
if (err.code !== 'ENOENT') {
|
|
53
|
+
throw err;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
const result = JSON.parse(json);
|
|
59
|
+
|
|
60
|
+
if (!_lodash.default.isPlainObject(result)) {
|
|
61
|
+
throw new Error(`'${_lodash.default.truncate(result, {
|
|
62
|
+
length: 100
|
|
63
|
+
})}' is not an object`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return result;
|
|
67
|
+
} catch (e) {
|
|
68
|
+
const msg = loadedFromFile ? `The provided value of '${jsonOrPath}' must be a valid JSON` : `The provided value must be a valid JSON`;
|
|
69
|
+
throw new TypeError(`${msg}. Original error: ${e.message}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
exports.transformers = transformers;require('source-map-support').install();
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvY2xpLXRyYW5zZm9ybWVycy5qcyJdLCJuYW1lcyI6WyJwYXJzZUNzdkxpbmUiLCJ2YWx1ZSIsInNwbGl0IiwibWFwIiwidiIsInRyaW0iLCJmaWx0ZXIiLCJCb29sZWFuIiwicGFyc2VDc3ZGaWxlIiwiZmxhdE1hcCIsInRyYW5zZm9ybWVycyIsImNzdiIsImJvZHkiLCJlcnIiLCJjb2RlIiwiQXJndW1lbnRUeXBlRXJyb3IiLCJtZXNzYWdlIiwianNvbiIsImpzb25PclBhdGgiLCJsb2FkZWRGcm9tRmlsZSIsInJlc3VsdCIsIkpTT04iLCJwYXJzZSIsIl8iLCJpc1BsYWluT2JqZWN0IiwiRXJyb3IiLCJ0cnVuY2F0ZSIsImxlbmd0aCIsImUiLCJtc2ciLCJUeXBlRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBZ0JBLFNBQVNBLFlBQVQsQ0FBdUJDLEtBQXZCLEVBQThCO0FBQzVCLFNBQU9BLEtBQUssQ0FDVEMsS0FESSxDQUNFLEdBREYsRUFFSkMsR0FGSSxDQUVDQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsSUFBRixFQUZQLEVBR0pDLE1BSEksQ0FHR0MsT0FISCxDQUFQO0FBSUQ7O0FBT0QsU0FBU0MsWUFBVCxDQUF1QlAsS0FBdkIsRUFBOEI7QUFDNUIsU0FBT0EsS0FBSyxDQUNUQyxLQURJLENBQ0UsT0FERixFQUVKQyxHQUZJLENBRUNDLENBQUQsSUFBT0EsQ0FBQyxDQUFDQyxJQUFGLEVBRlAsRUFHSkMsTUFISSxDQUdHQyxPQUhILEVBSUpFLE9BSkksQ0FJSVQsWUFKSixDQUFQO0FBS0Q7O0FBaUJNLE1BQU1VLFlBQVksR0FBRztBQU8xQkMsRUFBQUEsR0FBRyxFQUFHVixLQUFELElBQVc7QUFDZCxRQUFJVyxJQUFKOztBQUdBLFFBQUk7QUFDRkEsTUFBQUEsSUFBSSxHQUFHLHNCQUFhWCxLQUFiLEVBQW9CLE1BQXBCLENBQVA7QUFDRCxLQUZELENBRUUsT0FBT1ksR0FBUCxFQUFZO0FBQ1osVUFBSUEsR0FBRyxDQUFDQyxJQUFKLEtBQWEsUUFBakIsRUFBMkI7QUFDekIsY0FBTSxJQUFJQywyQkFBSixDQUNILHVCQUFzQkgsSUFBSyxLQUFJQyxHQUFHLENBQUNHLE9BQVEsRUFEeEMsQ0FBTjtBQUdEO0FBQ0Y7O0FBRUQsUUFBSTtBQUNGLGFBQU9KLElBQUksR0FBR0osWUFBWSxDQUFDSSxJQUFELENBQWYsR0FBd0JaLFlBQVksQ0FBQ0MsS0FBRCxDQUEvQztBQUNELEtBRkQsQ0FFRSxPQUFPWSxHQUFQLEVBQVk7QUFDWixZQUFNLElBQUlFLDJCQUFKLENBQ0osdURBREksQ0FBTjtBQUdEO0FBQ0YsR0E1QnlCO0FBbUMxQkUsRUFBQUEsSUFBSSxFQUFHQyxVQUFELElBQWdCO0FBQ3BCLFFBQUlELElBQUksR0FBR0MsVUFBWDtBQUNBLFFBQUlDLGNBQWMsR0FBRyxLQUFyQjs7QUFDQSxRQUFJO0FBTUZGLE1BQUFBLElBQUksR0FBRyxzQkFBYUMsVUFBYixFQUF5QixNQUF6QixDQUFQO0FBQ0FDLE1BQUFBLGNBQWMsR0FBRyxJQUFqQjtBQUNELEtBUkQsQ0FRRSxPQUFPTixHQUFQLEVBQVk7QUFFWixVQUFJQSxHQUFHLENBQUNDLElBQUosS0FBYSxRQUFqQixFQUEyQjtBQUN6QixjQUFNRCxHQUFOO0FBQ0Q7QUFDRjs7QUFDRCxRQUFJO0FBQ0YsWUFBTU8sTUFBTSxHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0wsSUFBWCxDQUFmOztBQUNBLFVBQUksQ0FBQ00sZ0JBQUVDLGFBQUYsQ0FBZ0JKLE1BQWhCLENBQUwsRUFBOEI7QUFDNUIsY0FBTSxJQUFJSyxLQUFKLENBQ0gsSUFBR0YsZ0JBQUVHLFFBQUYsQ0FBV04sTUFBWCxFQUFtQjtBQUFDTyxVQUFBQSxNQUFNLEVBQUU7QUFBVCxTQUFuQixDQUFrQyxvQkFEbEMsQ0FBTjtBQUdEOztBQUNELGFBQU9QLE1BQVA7QUFDRCxLQVJELENBUUUsT0FBT1EsQ0FBUCxFQUFVO0FBQ1YsWUFBTUMsR0FBRyxHQUFHVixjQUFjLEdBQ3JCLDBCQUF5QkQsVUFBVyx3QkFEZixHQUVyQix5Q0FGTDtBQUdBLFlBQU0sSUFBSVksU0FBSixDQUFlLEdBQUVELEdBQUkscUJBQW9CRCxDQUFDLENBQUNaLE9BQVEsRUFBbkQsQ0FBTjtBQUNEO0FBQ0Y7QUFsRXlCLENBQXJCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7IEFyZ3VtZW50VHlwZUVycm9yIH0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjdXN0b20ga2V5d29yZHMgZm9yIEFwcGl1bSBzY2hlbWFzLCBhcyB3ZWxsIGFzXG4gKiBcInRyYW5zZm9ybWVyc1wiIChzZWUgYGFyZ1RyYW5zZm9ybWVyc2AgYmVsb3cpLlxuICpcbiAqIEN1c3RvbSBrZXl3b3JkcyBhcmUganVzdCBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBhcHBlYXIgaW4gYSBzY2hlbWEgKGUuZy4sXG4gKiBgYXBwaXVtLWNvbmZpZy1zY2hlbWEuanNgKSBiZXlvbmQgd2hhdCB0aGUgSlNPTiBTY2hlbWEgc3BlYyBvZmZlcnMuICBUaGVzZVxuICogYXJlIHVzYWJsZSBieSBleHRlbnNpb25zLCBhcyB3ZWxsLlxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgQ1NWIHN0cmluZyBpbnRvIGFuIGFycmF5XG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAqL1xuZnVuY3Rpb24gcGFyc2VDc3ZMaW5lICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWVcbiAgICAuc3BsaXQoJywnKVxuICAgIC5tYXAoKHYpID0+IHYudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59XG5cbi8qKlxuICogU3BsaXQgYSBmaWxlIGJ5IG5ld2xpbmUgdGhlbiBjYWxscyB7QGxpbmsgcGFyc2VDc3ZMaW5lfSBvbiBlYWNoIGxpbmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAqL1xuZnVuY3Rpb24gcGFyc2VDc3ZGaWxlICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWVcbiAgICAuc3BsaXQoL1xccj9cXG4vKVxuICAgIC5tYXAoKHYpID0+IHYudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuZmxhdE1hcChwYXJzZUNzdkxpbmUpO1xufVxuXG4vKipcbiAqIE5hbWVzcGFjZSBjb250YWluaW5nIF90cmFuc2Zvcm1lcnNfIGZvciBDTEkgYXJndW1lbnRzLiAgXCJWYWxpZGF0b3JzXCIgYW5kXG4gKiBcImZvcm1hdHRlcnNcIiBkbyBub3QgYWN0dWFsbHkgbW9kaWZ5IHRoZSB2YWx1ZSwgYnV0IHRoZXNlIGRvLlxuICpcbiAqIFVzZSBjYXNlIGlzIGZvciB3aGVuIHRoZSBjb25maWcgZmlsZSBjYW4gYWNjZXB0IGUuZy4sIGEgYHN0cmluZ1tdYCwgYnV0IHRoZVxuICogQ0xJIGNhbiBvbmx5IHRha2UgYSBgc3RyaW5nYCAoYXMgYGFyZ3BhcnNlYCBzZWVtcyB0byBiZSBsaW1pdGVkIGluIHRoYXRcbiAqIGZhc2hpb247IGl0IGFsc28gY2Fubm90IHVuZGVyc3RhbmQgYW4gYXJndW1lbnQgaGF2aW5nIG11bHRpcGxlIHR5cGVzKS5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgdGhlIGBjc3ZgIHRyYW5zZm9ybSB0YWtlcyBhIGBzdHJpbmdgIGFuZCByZXR1cm5zIGEgYHN0cmluZ1tdYCBieVxuICogc3BsaXR0aW5nIGl0IGJ5IGNvbW1hLS1fb3JfIGlmIHRoYXQgYHN0cmluZ2AgaGFwcGVucyB0byBiZSBhXG4gKiBmaWxlcGF0aC0tcmVhZGluZyB0aGUgZmlsZSBhcyBhIGAuY3N2YC5cbiAqXG4gKiBUaGlzIGNvbnRhaW5zIHNvbWUgY29weS1wYXN0ZWQgY29kZSBmcm9tIGBsaWIvY2xpL3BhcnNlci1oZWxwZXJzLmpzYCwgd2hpY2ggd2FzXG4gKiBvYmxpdGVyYXRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybWVycyA9IHtcbiAgLyoqXG4gICAqIEdpdmVuIGEgQ1NWLXN0eWxlIHN0cmluZyBvciBwYXRobmFtZSwgcGFyc2UgaXQgaW50byBhbiBhcnJheS5cbiAgICogVGhlIGZpbGUgY2FuIGFsc28gYmUgc3BsaXQgb24gbmV3bGluZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119XG4gICAqL1xuICBjc3Y6ICh2YWx1ZSkgPT4ge1xuICAgIGxldCBib2R5O1xuICAgIC8vIHNpbmNlIHRoaXMgdmFsdWUgY291bGQgYmUgYSBzaW5nbGUgc3RyaW5nIChubyBjb21tYXMpIF9vcl8gYSBwYXRobmFtZSwgd2Ugd2lsbCBuZWVkXG4gICAgLy8gdG8gYXR0ZW1wdCB0byBwYXJzZSBpdCBhcyBhIGZpbGUgX2ZpcnN0Xy5cbiAgICB0cnkge1xuICAgICAgYm9keSA9IHJlYWRGaWxlU3luYyh2YWx1ZSwgJ3V0ZjgnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIuY29kZSAhPT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50VHlwZUVycm9yKFxuICAgICAgICAgIGBDb3VsZCBub3QgcmVhZCBmaWxlICR7Ym9keX06ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGJvZHkgPyBwYXJzZUNzdkZpbGUoYm9keSkgOiBwYXJzZUNzdkxpbmUodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50VHlwZUVycm9yKFxuICAgICAgICAnTXVzdCBiZSBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcsIGUuZy4sIFwiZm9vLGJhcixiYXpcIicsXG4gICAgICApO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUGFyc2UgYSBzdHJpbmcgd2hpY2ggY291bGQgYmUgYSBwYXRoIHRvIGEgSlNPTiBmaWxlIG9yIGEgSlNPTiBzdHJpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqc29uT3JQYXRoXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBqc29uOiAoanNvbk9yUGF0aCkgPT4ge1xuICAgIGxldCBqc29uID0ganNvbk9yUGF0aDtcbiAgICBsZXQgbG9hZGVkRnJvbUZpbGUgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgLy8gdXNlIHN5bmNocm9ub3VzIGZpbGUgYWNjZXNzLCBhcyBgYXJncGFyc2VgIHByb3ZpZGVzIG5vIHdheSBvZiBlaXRoZXJcbiAgICAgIC8vIGF3YWl0aW5nIG9yIHVzaW5nIGNhbGxiYWNrcy4gVGhpcyBzdGVwIGhhcHBlbnMgaW4gc3RhcnR1cCwgaW4gd2hhdCBpc1xuICAgICAgLy8gZWZmZWN0aXZlbHkgY29tbWFuZC1saW5lIGNvZGUsIHNvIG5vdGhpbmcgaXMgYmxvY2tlZCBpbiB0ZXJtcyBvZlxuICAgICAgLy8gc2Vzc2lvbnMsIHNvIGhvbGRpbmcgdXAgdGhlIGV2ZW50IGxvb3AgZG9lcyBub3QgaW5jdXIgdGhlIHVzdWFsXG4gICAgICAvLyBkcmF3YmFja3MuXG4gICAgICBqc29uID0gcmVhZEZpbGVTeW5jKGpzb25PclBhdGgsICd1dGY4Jyk7XG4gICAgICBsb2FkZWRGcm9tRmlsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyB1bnJlYWRhYmxlIGZpbGVzIGRvbid0IGNvdW50Li4uIGJ1dCBvdGhlciBwcm9ibGVtcyBkby5cbiAgICAgIGlmIChlcnIuY29kZSAhPT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgIGlmICghXy5pc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAnJHtfLnRydW5jYXRlKHJlc3VsdCwge2xlbmd0aDogMTAwfSl9JyBpcyBub3QgYW4gb2JqZWN0YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgbXNnID0gbG9hZGVkRnJvbUZpbGVcbiAgICAgICAgPyBgVGhlIHByb3ZpZGVkIHZhbHVlIG9mICcke2pzb25PclBhdGh9JyBtdXN0IGJlIGEgdmFsaWQgSlNPTmBcbiAgICAgICAgOiBgVGhlIHByb3ZpZGVkIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBKU09OYDtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7bXNnfS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfSxcbn07XG4iXSwiZmlsZSI6ImxpYi9zY2hlbWEvY2xpLXRyYW5zZm9ybWVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -0,0 +1,36 @@
|
|
|
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];
|
|
18
|
+
}
|
|
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
|
+
});require('source-map-support').install();
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2NoZW1hJztcbmV4cG9ydCAqIGZyb20gJy4vY2xpLWFyZ3MnO1xuIl0sImZpbGUiOiJsaWIvc2NoZW1hL2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
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
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.keywords = keywords;require('source-map-support').install();
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEva2V5d29yZHMuanMiXSwibmFtZXMiOlsia2V5d29yZHMiLCJhcHBpdW1DbGlBbGlhc2VzIiwia2V5d29yZCIsIm1ldGFTY2hlbWEiLCJ0eXBlIiwiaXRlbXMiLCJtaW5MZW5ndGgiLCJtaW5JdGVtcyIsInVuaXF1ZUl0ZW1zIiwiZGVzY3JpcHRpb24iLCJhcHBpdW1DbGlEZXN0IiwiYXBwaXVtQ2xpRGVzY3JpcHRpb24iLCJzY2hlbWFUeXBlIiwiYXBwaXVtQ2xpVHJhbnNmb3JtZXIiLCJlbnVtIiwiT2JqZWN0Iiwia2V5cyIsInRyYW5zZm9ybWVycyIsImFwcGl1bUNsaUlnbm9yZWQiLCJhcHBpdW1EZXByZWNhdGVkIiwiJGNvbW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOztBQU1PLE1BQU1BLFFBQVEsR0FBRztBQVl0QkMsRUFBQUEsZ0JBQWdCLEVBQUU7QUFDaEJDLElBQUFBLE9BQU8sRUFBRSxrQkFETztBQUVoQkMsSUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLE1BQUFBLElBQUksRUFBRSxPQURJO0FBRVZDLE1BQUFBLEtBQUssRUFBRTtBQUNMRCxRQUFBQSxJQUFJLEVBQUUsUUFERDtBQUVMRSxRQUFBQSxTQUFTLEVBQUU7QUFGTixPQUZHO0FBTVZDLE1BQUFBLFFBQVEsRUFBRSxDQU5BO0FBT1ZDLE1BQUFBLFdBQVcsRUFBRSxJQVBIO0FBUVZDLE1BQUFBLFdBQVcsRUFBRTtBQVJIO0FBRkksR0FaSTtBQW1DdEJDLEVBQUFBLGFBQWEsRUFBRTtBQUNiUixJQUFBQSxPQUFPLEVBQUUsZUFESTtBQUViQyxJQUFBQSxVQUFVLEVBQUU7QUFDVkMsTUFBQUEsSUFBSSxFQUFFLFFBREk7QUFFVkUsTUFBQUEsU0FBUyxFQUFFLENBRkQ7QUFHVkcsTUFBQUEsV0FBVyxFQUFFO0FBSEg7QUFGQyxHQW5DTztBQW9EdEJFLEVBQUFBLG9CQUFvQixFQUFFO0FBQ3BCVCxJQUFBQSxPQUFPLEVBQUUsc0JBRFc7QUFFcEJVLElBQUFBLFVBQVUsRUFBRSxRQUZRO0FBR3BCVCxJQUFBQSxVQUFVLEVBQUU7QUFDVkMsTUFBQUEsSUFBSSxFQUFFLFFBREk7QUFFVkUsTUFBQUEsU0FBUyxFQUFFLENBRkQ7QUFHVkcsTUFBQUEsV0FBVyxFQUFFO0FBSEg7QUFIUSxHQXBEQTtBQW1FdEJJLEVBQUFBLG9CQUFvQixFQUFFO0FBQ3BCWCxJQUFBQSxPQUFPLEVBQUUsc0JBRFc7QUFFcEJDLElBQUFBLFVBQVUsRUFBRTtBQUNWQyxNQUFBQSxJQUFJLEVBQUUsUUFESTtBQUVWVSxNQUFBQSxJQUFJLEVBQUVDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZQyw2QkFBWixDQUZJO0FBR1ZSLE1BQUFBLFdBQVcsRUFBRTtBQUhIO0FBRlEsR0FuRUE7QUFnRnRCUyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNoQmhCLElBQUFBLE9BQU8sRUFBRSxrQkFETztBQUVoQkMsSUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLE1BQUFBLElBQUksRUFBRSxTQURJO0FBRVZLLE1BQUFBLFdBQVcsRUFBRSxrSEFGSDtBQUdWSyxNQUFBQSxJQUFJLEVBQUUsQ0FBQyxJQUFEO0FBSEk7QUFGSSxHQWhGSTtBQTZGdEJLLEVBQUFBLGdCQUFnQixFQUFFO0FBQ2hCakIsSUFBQUEsT0FBTyxFQUFFLGtCQURPO0FBRWhCQyxJQUFBQSxVQUFVLEVBQUU7QUFDVkMsTUFBQUEsSUFBSSxFQUFFLFNBREk7QUFFVkssTUFBQUEsV0FBVyxFQUFFLHdFQUZIO0FBR1ZLLE1BQUFBLElBQUksRUFBRSxDQUFDLElBQUQsQ0FISTtBQUlWTSxNQUFBQSxRQUFRLEVBQUU7QUFKQTtBQUZJO0FBN0ZJLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7IHRyYW5zZm9ybWVycyB9IGZyb20gJy4vY2xpLXRyYW5zZm9ybWVycyc7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBrZXl3b3JkIGRlZmluaXRpb25zIHRvIGFkZCB0byB0aGUgc2luZ2xldG9uIGBBanZgIGluc3RhbmNlLlxuICogQHR5cGUge1JlY29yZDxzdHJpbmcsS2V5d29yZERlZmluaXRpb24+fVxuICovXG5leHBvcnQgY29uc3Qga2V5d29yZHMgPSB7XG4gIC8qKlxuICAgKiBLZXl3b3JkIHRvIHByb3ZpZGUgYSBsaXN0IG9mIGNvbW1hbmQgYWxpYXMgbmFtZXMgZm9yIHRoZSBDTEkuXG4gICAqXG4gICAqIElmIGRlZmluZWQsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gdGhlIGFycmF5IGFuZCBpdCBtdXN0IGJlIG5vbi1lbXB0eS5cbiAgICogQWxsIGl0ZW1zIGluIHRoZSBhcnJheSBtdXN0IGJlIHVuaXF1ZS5cbiAgICpcbiAgICogQHRvZG8gQXZvaWQgYWxpYXMgY29sbGlzaW9ucyFcbiAgICogQHR5cGUge0tleXdvcmREZWZpbml0aW9ufVxuICAgKiBAZXhhbXBsZVxuICAgKiB7YXBwaXVtQ2xpQWxpYXNlczogWydCJywgJ2JvYmJ5JywgJ3JvYmVydCddfVxuICAgKi9cbiAgYXBwaXVtQ2xpQWxpYXNlczoge1xuICAgIGtleXdvcmQ6ICdhcHBpdW1DbGlBbGlhc2VzJyxcbiAgICBtZXRhU2NoZW1hOiB7XG4gICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgaXRlbXM6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIH0sXG4gICAgICBtaW5JdGVtczogMSxcbiAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246ICdMaXN0IG9mIGFsaWFzZXMgZm9yIHRoZSBhcmd1bWVudC4gQWxpYXNlcyBzaG9ydGVyIHRoYW4gdGhyZWUgKDMpIGNoYXJhY3RlcnMgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIGEgc2luZ2xlIGRhc2g7IG90aGVyd2lzZSB0d28gKDIpLidcbiAgICB9LFxuICB9LFxuICAvKipcbiAgICogS2V5d29yZCB0byBwcm92aWRlIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgZGVzdGluYXRpb24gKHBhcnNlZFxuICAgKiBhcmdzKSBvYmplY3QuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgd2lsbCBiZSB3aGF0ZXZlciB0aGUgcHJvcGVydHkgbmFtZSBpcyxcbiAgICogYnV0IGNhbWVsLWNhc2VkLiBJZiBhIGZsYWcgbmVlZHMgc29tZXRoaW5nIF9vdGhlcl8gdGhhbiBqdXN0IGNhbWVsLWNhc2luZyxcbiAgICogdXNlIHRoaXMuXG4gICAqIEB0eXBlIHtLZXl3b3JkRGVmaW5pdGlvbn1cbiAgICogQGV4YW1wbGVcbiAgICogLy8gZm9yIHByb3AgJ25vLWNvbG9yJ1xuICAgKiB7YXBwaXVtQ2xpRGVzdDogJ05PQ09MT1InfSAvLyB2YWx1ZSB3aWxsIGJlIHN0b3JlZCBhcyBwcm9wZXJ0eSBgTk9DT0xPUmAgaW5zdGVhZCBvZiBgbm9Db2xvcmBcbiAgICovXG4gIGFwcGl1bUNsaURlc3Q6IHtcbiAgICBrZXl3b3JkOiAnYXBwaXVtQ2xpRGVzdCcsXG4gICAgbWV0YVNjaGVtYToge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgaW4gdGhlIHBhcnNlZCBDTEkgYXJndW1lbnRzIG9iamVjdCdcbiAgICB9LFxuICB9LFxuXG4gIC8qKlxuICAgKiBDTEktc3BlY2lmaWMgZGVzY3JpcHRpb24gb2YgdGhlIHByb3BlcnR5LiAgU29tZXRpbWVzIHRoZSBhbGxvd2VkIHR5cGUgY2FuXG4gICAqIGJlIGRpZmZlcmVudCBlbm91Z2ggb24gdGhlIENMSSB0aGF0IHByb3ZpZGluZyBhIGRlc2NyaXB0aW9uIHdyaXR0ZW4gZm9yIGFcbiAgICogY29uZmlnIGZpbGUgY29udGV4dCB3b3VsZG4ndCBtYWtlIHNlbnNlLlxuICAgKiBAdHlwZSB7S2V5d29yZERlZmluaXRpb259XG4gICAqIEBleGFtcGxlXG4gICAqIHthcHBpdW1DbGlEZXNjcmlwdGlvbjogJ1RoaXMgaXMgYSBjb21tYS1kZWxpbWl0ZWQgc3RyaW5nLCBidXQgaW4gdGhlIGNvbmZpZyBmaWxlIGl0IGlzIGFuIGFycmF5J31cbiAgICovXG4gIGFwcGl1bUNsaURlc2NyaXB0aW9uOiB7XG4gICAga2V5d29yZDogJ2FwcGl1bUNsaURlc2NyaXB0aW9uJyxcbiAgICBzY2hlbWFUeXBlOiAnc3RyaW5nJyxcbiAgICBtZXRhU2NoZW1hOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24gdG8gcHJvdmlkZSBpbiB0aGUgLS1oZWxwIHRleHQgb2YgdGhlIENMSS4gT3ZlcnJpZGVzIGBkZXNjcmlwdGlvbmAnXG4gICAgfSxcbiAgfSxcblxuICAvKipcbiAgICogVHJhbnNmb3JtZXJzIGZvciBDTEkgYXJncy4gVGhlc2UgdXN1YWxseSB0YWtlIHN0cmluZ3MgdGhlbiBkbyBzb21ldGhpbmcgd2l0aCB0aGVtLCBsaWtlXG4gICAqIHJlYWQgYSBmaWxlIG9yIHBhcnNlIGZ1cnRoZXIuXG4gICAqIEB0eXBlIHtLZXl3b3JkRGVmaW5pdGlvbn1cbiAgICovXG4gIGFwcGl1bUNsaVRyYW5zZm9ybWVyOiB7XG4gICAga2V5d29yZDogJ2FwcGl1bUNsaVRyYW5zZm9ybWVyJyxcbiAgICBtZXRhU2NoZW1hOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGVudW06IE9iamVjdC5rZXlzKHRyYW5zZm9ybWVycyksXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBuYW1lIG9mIGEgY3VzdG9tIHRyYW5zZm9ybWVyIHRvIHJ1biBhZ2FpbnN0IHRoZSB2YWx1ZSBhcyBwcm92aWRlZCB2aWEgdGhlIENMSS4nXG4gICAgfSxcbiAgfSxcblxuICAvKipcbiAgICogRmxhZyB0byB0ZWxsIEFwcGl1bSB0byBfbm90XyBwcm92aWRlIHRoaXMgcHJvcGVydHkgYXMgYSBDTEkgYXJndW1lbnQuXG4gICAqIEB0eXBlIHtLZXl3b3JkRGVmaW5pdGlvbn1cbiAgICovXG4gIGFwcGl1bUNsaUlnbm9yZWQ6IHtcbiAgICBrZXl3b3JkOiAnYXBwaXVtQ2xpSWdub3JlZCcsXG4gICAgbWV0YVNjaGVtYToge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzY3JpcHRpb246ICdJZiBgdHJ1ZWAsIEFwcGl1bSB3aWxsIG5vdCBwcm92aWRlIHRoaXMgcHJvcGVydHkgYXMgYSBDTEkgYXJndW1lbnQuIFRoaXMgaXMgTk9UIHRoZSBzYW1lIGFzIGEgXCJoaWRkZW5cIiBhcmd1bWVudC4nLFxuICAgICAgZW51bTogW3RydWVdXG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBNYXJrIHRoaXMgcHJvcGVydHkgYXMgZGVwcmVjYXRlZC5cbiAgICogQHR5cGUge0tleXdvcmREZWZpbml0aW9ufVxuICAgKi9cbiAgYXBwaXVtRGVwcmVjYXRlZDoge1xuICAgIGtleXdvcmQ6ICdhcHBpdW1EZXByZWNhdGVkJyxcbiAgICBtZXRhU2NoZW1hOiB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0lmIGB0cnVlYCwgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIGRpc3BsYXllZCBhcyBcImRlcHJlY2F0ZWRcIiB0byB0aGUgdXNlcicsXG4gICAgICBlbnVtOiBbdHJ1ZV0sXG4gICAgICAkY29tbWVudDogJ0pTT04gc2NoZW1hIGRyYWZ0LTIwMTktMDkga2V5d29yZCBgZGVwcmVjYXRlZGAgc2VydmVzIHRoZSBzYW1lIHB1cnBvc2UuIFRoaXMga2V5d29yZCBzaG91bGQgaXRzZWxmIGJlIGRlcHJlY2F0ZWQgaWYgd2UgbW92ZSB0byBkcmFmdC0yMDE5LTA5ISdcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogVGhlc2UgYXJlIHRoZSB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBgYXBwaXVtQ2xpVHJhbnNmb3JtZXJgIGtleXdvcmQuXG4gKiBVbmZvcnR1bmF0ZWx5LCBUUyBjYW5ub3QgaW5mZXIgdGhpcyBpbiBhIEpTIGNvbnRleHQuICBJbiBUUywgd2UnZCB1c2VcbiAqIGBhcyBjb25zdGAgd2hlbiBkZWZpbmluZyBgYXJnVHJhbnNmb3JtZXJzYCwgdGhlbiBnZXQgYGtleW9mIHR5cGVvZiBhcmdUcmFuc2Zvcm1lcnNgLiBhbGFzLlxuICogQHR5cGVkZWYgeydjc3YnfCdqc29uJ30gQXBwaXVtQ2xpVHJhbnNmb3JtZXJOYW1lXG4gKi9cblxuLyoqXG4gKiBUaGVzZSBhcmUgdGhlIGN1c3RvbSBrZXl3b3JkcyB0aGF0IEFwcGl1bSByZWNvZ25pemVzLlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFwcGl1bUpTT05TY2hlbWFLZXl3b3Jkc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFthcHBpdW1DbGlEZXN0XVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthcHBpdW1DbGlEZXNjcmlwdGlvbl1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFthcHBpdW1DbGlBbGlhc2VzXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbYXBwaXVtQ2xpSWdub3JlZF1cbiAqIEBwcm9wZXJ0eSB7QXBwaXVtQ2xpVHJhbnNmb3JtZXJOYW1lfSBbYXBwaXVtQ2xpVHJhbnNmb3JtZXJdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFthcHBpdW1EZXByZWNhdGVkXVxuICovXG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhanYnKS5LZXl3b3JkRGVmaW5pdGlvbn0gS2V5d29yZERlZmluaXRpb25cbiAqL1xuIl0sImZpbGUiOiJsaWIvc2NoZW1hL2tleXdvcmRzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|