appium 2.0.0-beta.8 → 2.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +149 -58
- package/build/lib/appium.d.ts +229 -0
- package/build/lib/appium.d.ts.map +1 -0
- package/build/lib/appium.js +678 -441
- package/build/lib/appium.js.map +1 -0
- package/build/lib/cli/args.d.ts +17 -0
- package/build/lib/cli/args.d.ts.map +1 -0
- package/build/lib/cli/args.js +263 -300
- package/build/lib/cli/args.js.map +1 -0
- package/build/lib/cli/driver-command.d.ts +102 -0
- package/build/lib/cli/driver-command.d.ts.map +1 -0
- package/build/lib/cli/driver-command.js +131 -81
- package/build/lib/cli/driver-command.js.map +1 -0
- package/build/lib/cli/extension-command.d.ts +402 -0
- package/build/lib/cli/extension-command.d.ts.map +1 -0
- package/build/lib/cli/extension-command.js +799 -383
- package/build/lib/cli/extension-command.js.map +1 -0
- package/build/lib/cli/extension.d.ts +23 -0
- package/build/lib/cli/extension.d.ts.map +1 -0
- package/build/lib/cli/extension.js +71 -60
- package/build/lib/cli/extension.js.map +1 -0
- package/build/lib/cli/parser.d.ts +84 -0
- package/build/lib/cli/parser.d.ts.map +1 -0
- package/build/lib/cli/parser.js +252 -148
- package/build/lib/cli/parser.js.map +1 -0
- package/build/lib/cli/plugin-command.d.ts +99 -0
- package/build/lib/cli/plugin-command.d.ts.map +1 -0
- package/build/lib/cli/plugin-command.js +125 -81
- package/build/lib/cli/plugin-command.js.map +1 -0
- package/build/lib/cli/utils.d.ts +29 -0
- package/build/lib/cli/utils.d.ts.map +1 -0
- package/build/lib/cli/utils.js +72 -51
- package/build/lib/cli/utils.js.map +1 -0
- package/build/lib/config-file.d.ts +100 -0
- package/build/lib/config-file.d.ts.map +1 -0
- package/build/lib/config-file.js +207 -0
- package/build/lib/config-file.js.map +1 -0
- package/build/lib/config.d.ts +49 -0
- package/build/lib/config.d.ts.map +1 -0
- package/build/lib/config.js +262 -223
- package/build/lib/config.js.map +1 -0
- package/build/lib/constants.d.ts +56 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +73 -0
- package/build/lib/constants.js.map +1 -0
- package/build/lib/extension/driver-config.d.ts +82 -0
- package/build/lib/extension/driver-config.d.ts.map +1 -0
- package/build/lib/extension/driver-config.js +210 -0
- package/build/lib/extension/driver-config.js.map +1 -0
- package/build/lib/extension/extension-config.d.ts +270 -0
- package/build/lib/extension/extension-config.d.ts.map +1 -0
- package/build/lib/extension/extension-config.js +601 -0
- package/build/lib/extension/extension-config.js.map +1 -0
- package/build/lib/extension/index.d.ts +48 -0
- package/build/lib/extension/index.d.ts.map +1 -0
- package/build/lib/extension/index.js +105 -0
- package/build/lib/extension/index.js.map +1 -0
- package/build/lib/extension/manifest-migrations.d.ts +27 -0
- package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
- package/build/lib/extension/manifest-migrations.js +134 -0
- package/build/lib/extension/manifest-migrations.js.map +1 -0
- package/build/lib/extension/manifest.d.ts +145 -0
- package/build/lib/extension/manifest.d.ts.map +1 -0
- package/build/lib/extension/manifest.js +528 -0
- package/build/lib/extension/manifest.js.map +1 -0
- package/build/lib/extension/package-changed.d.ts +11 -0
- package/build/lib/extension/package-changed.d.ts.map +1 -0
- package/build/lib/extension/package-changed.js +62 -0
- package/build/lib/extension/package-changed.js.map +1 -0
- package/build/lib/extension/plugin-config.d.ts +56 -0
- package/build/lib/extension/plugin-config.d.ts.map +1 -0
- package/build/lib/extension/plugin-config.js +102 -0
- package/build/lib/extension/plugin-config.js.map +1 -0
- package/build/lib/grid-register.d.ts +10 -0
- package/build/lib/grid-register.d.ts.map +1 -0
- package/build/lib/grid-register.js +122 -144
- package/build/lib/grid-register.js.map +1 -0
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +5 -17
- package/build/lib/logger.js.map +1 -0
- package/build/lib/logsink.d.ts +4 -0
- package/build/lib/logsink.d.ts.map +1 -0
- package/build/lib/logsink.js +189 -184
- package/build/lib/logsink.js.map +1 -0
- package/build/lib/main.d.ts +62 -0
- package/build/lib/main.d.ts.map +1 -0
- package/build/lib/main.js +406 -234
- package/build/lib/main.js.map +1 -0
- package/build/lib/schema/arg-spec.d.ts +143 -0
- package/build/lib/schema/arg-spec.d.ts.map +1 -0
- package/build/lib/schema/arg-spec.js +164 -0
- package/build/lib/schema/arg-spec.js.map +1 -0
- package/build/lib/schema/cli-args.d.ts +19 -0
- package/build/lib/schema/cli-args.d.ts.map +1 -0
- package/build/lib/schema/cli-args.js +220 -0
- package/build/lib/schema/cli-args.js.map +1 -0
- package/build/lib/schema/cli-transformers.d.ts +5 -0
- package/build/lib/schema/cli-transformers.d.ts.map +1 -0
- package/build/lib/schema/cli-transformers.js +124 -0
- package/build/lib/schema/cli-transformers.js.map +1 -0
- package/build/lib/schema/index.d.ts +3 -0
- package/build/lib/schema/index.d.ts.map +1 -0
- package/build/lib/schema/index.js +19 -0
- package/build/lib/schema/index.js.map +1 -0
- package/build/lib/schema/keywords.d.ts +24 -0
- package/build/lib/schema/keywords.d.ts.map +1 -0
- package/build/lib/schema/keywords.js +128 -0
- package/build/lib/schema/keywords.js.map +1 -0
- package/build/lib/schema/schema.d.ts +260 -0
- package/build/lib/schema/schema.d.ts.map +1 -0
- package/build/lib/schema/schema.js +640 -0
- package/build/lib/schema/schema.js.map +1 -0
- package/build/lib/utils.d.ts +276 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +373 -271
- package/build/lib/utils.js.map +1 -0
- package/build/types/cli.d.ts +134 -0
- package/build/types/cli.d.ts.map +1 -0
- package/build/types/cli.js +3 -0
- package/build/types/cli.js.map +1 -0
- package/build/types/index.d.ts +15 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +19 -0
- package/build/types/index.js.map +1 -0
- package/build/types/manifest/base.d.ts +135 -0
- package/build/types/manifest/base.d.ts.map +1 -0
- package/build/types/manifest/base.js +3 -0
- package/build/types/manifest/base.js.map +1 -0
- package/build/types/manifest/index.d.ts +21 -0
- package/build/types/manifest/index.d.ts.map +1 -0
- package/build/types/manifest/index.js +42 -0
- package/build/types/manifest/index.js.map +1 -0
- package/build/types/manifest/v3.d.ts +139 -0
- package/build/types/manifest/v3.d.ts.map +1 -0
- package/build/types/manifest/v3.js +3 -0
- package/build/types/manifest/v3.js.map +1 -0
- package/build/types/manifest/v4.d.ts +139 -0
- package/build/types/manifest/v4.d.ts.map +1 -0
- package/build/types/manifest/v4.js +3 -0
- package/build/types/manifest/v4.js.map +1 -0
- package/driver.d.ts +1 -0
- package/driver.js +14 -0
- package/index.js +11 -0
- package/lib/appium.js +555 -185
- package/lib/cli/args.js +275 -407
- package/lib/cli/driver-command.js +132 -24
- package/lib/cli/extension-command.js +751 -272
- package/lib/cli/extension.js +47 -20
- package/lib/cli/parser.js +267 -95
- package/lib/cli/plugin-command.js +122 -22
- package/lib/cli/utils.js +24 -10
- package/lib/config-file.js +220 -0
- package/lib/config.js +243 -132
- package/lib/constants.js +79 -0
- package/lib/extension/driver-config.js +247 -0
- package/lib/extension/extension-config.js +709 -0
- package/lib/extension/index.js +116 -0
- package/lib/extension/manifest-migrations.js +136 -0
- package/lib/extension/manifest.js +580 -0
- package/lib/extension/package-changed.js +64 -0
- package/lib/extension/plugin-config.js +112 -0
- package/lib/grid-register.js +49 -35
- package/lib/logger.js +1 -2
- package/lib/logsink.js +59 -36
- package/lib/main.js +392 -104
- package/lib/schema/arg-spec.js +229 -0
- package/lib/schema/cli-args.js +241 -0
- package/lib/schema/cli-transformers.js +119 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +136 -0
- package/lib/schema/schema.js +725 -0
- package/lib/utils.js +315 -167
- package/package.json +84 -82
- package/plugin.d.ts +1 -0
- package/plugin.js +13 -0
- package/scripts/autoinstall-extensions.js +243 -0
- package/support.d.ts +1 -0
- package/support.js +13 -0
- package/tsconfig.json +25 -0
- package/types/cli.ts +193 -0
- package/types/index.ts +20 -0
- package/types/manifest/README.md +30 -0
- package/types/manifest/base.ts +158 -0
- package/types/manifest/index.ts +28 -0
- package/types/manifest/v3.ts +161 -0
- package/types/manifest/v4.ts +161 -0
- package/CHANGELOG.md +0 -3669
- package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
- package/build/lib/cli/argparse-actions.js +0 -104
- package/build/lib/cli/npm.js +0 -207
- package/build/lib/cli/parser-helpers.js +0 -93
- package/build/lib/driver-config.js +0 -77
- package/build/lib/drivers.js +0 -99
- package/build/lib/extension-config.js +0 -253
- package/build/lib/plugin-config.js +0 -59
- package/build/lib/plugins.js +0 -14
- package/lib/cli/argparse-actions.js +0 -77
- package/lib/cli/npm.js +0 -183
- package/lib/cli/parser-helpers.js +0 -91
- package/lib/driver-config.js +0 -46
- package/lib/drivers.js +0 -84
- package/lib/extension-config.js +0 -209
- package/lib/plugin-config.js +0 -34
- package/lib/plugins.js +0 -10
|
@@ -0,0 +1,640 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
var _a, _AppiumSchema_argSpecs, _AppiumSchema_registeredSchemas, _AppiumSchema_ajv, _AppiumSchema_instance, _AppiumSchema_finalizedSchemas;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.isAllowedSchemaFileExtension = exports.getDefaultsForExtension = exports.getDefaultsForSchema = exports.flattenSchema = exports.getSchema = exports.validate = exports.resetSchema = exports.finalizeSchema = exports.isFinalized = exports.hasArgSpec = exports.getArgSpec = exports.getAllArgSpecs = exports.registerSchema = exports.SchemaUnsupportedSchemaError = exports.SchemaUnknownSchemaError = exports.SchemaNameConflictError = exports.SchemaFinalizationError = exports.ALLOWED_SCHEMA_EXTENSIONS = exports.RoachHotelMap = void 0;
|
|
19
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
20
|
+
const ajv_formats_1 = __importDefault(require("ajv-formats"));
|
|
21
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
22
|
+
const path_1 = __importDefault(require("path"));
|
|
23
|
+
const constants_1 = require("../constants");
|
|
24
|
+
const schema_1 = require("@appium/schema");
|
|
25
|
+
const arg_spec_1 = require("./arg-spec");
|
|
26
|
+
const keywords_1 = require("./keywords");
|
|
27
|
+
/**
|
|
28
|
+
* Key/value pairs go in... but they don't come out.
|
|
29
|
+
*
|
|
30
|
+
* @template K,V
|
|
31
|
+
* @extends {Map<K,V>}
|
|
32
|
+
*/
|
|
33
|
+
class RoachHotelMap extends Map {
|
|
34
|
+
/**
|
|
35
|
+
* @param {K} key
|
|
36
|
+
* @param {V} value
|
|
37
|
+
*/
|
|
38
|
+
set(key, value) {
|
|
39
|
+
if (this.has(key)) {
|
|
40
|
+
throw new Error(`${key} is already set`);
|
|
41
|
+
}
|
|
42
|
+
return super.set(key, value);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @param {K} key
|
|
46
|
+
*/
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
48
|
+
delete(key) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
clear() {
|
|
52
|
+
throw new Error(`Cannot clear RoachHotelMap`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.RoachHotelMap = RoachHotelMap;
|
|
56
|
+
/**
|
|
57
|
+
* Extensions that an extension schema file can have.
|
|
58
|
+
*/
|
|
59
|
+
exports.ALLOWED_SCHEMA_EXTENSIONS = Object.freeze(new Set(/** @type {AllowedSchemaExtension[]} */ (['.json', '.js', '.cjs'])));
|
|
60
|
+
const SCHEMA_KEY = '$schema';
|
|
61
|
+
/**
|
|
62
|
+
* A wrapper around Ajv and schema-related functions.
|
|
63
|
+
*
|
|
64
|
+
* Should have been named Highlander, because _there can only be one_
|
|
65
|
+
*/
|
|
66
|
+
class AppiumSchema {
|
|
67
|
+
/**
|
|
68
|
+
* Initializes Ajv, adds standard formats and our custom keywords.
|
|
69
|
+
* @see https://npm.im/ajv-formats
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
constructor() {
|
|
73
|
+
/**
|
|
74
|
+
* A mapping of unique argument IDs to their corresponding {@link ArgSpec}s.
|
|
75
|
+
*
|
|
76
|
+
* An "argument" is a CLI argument or a config property.
|
|
77
|
+
*
|
|
78
|
+
* Used to provide easy lookups of argument metadata when converting between different representations of those arguments.
|
|
79
|
+
* @type {RoachHotelMap<string,ArgSpec>}
|
|
80
|
+
*/
|
|
81
|
+
_AppiumSchema_argSpecs.set(this, new RoachHotelMap());
|
|
82
|
+
/**
|
|
83
|
+
* A map of extension types to extension names to schema objects.
|
|
84
|
+
*
|
|
85
|
+
* This data structure is used to ensure there are no naming conflicts. The schemas
|
|
86
|
+
* are stored here in memory until the instance is _finalized_.
|
|
87
|
+
* @type {Record<ExtensionType,Map<string,SchemaObject>>}
|
|
88
|
+
*/
|
|
89
|
+
_AppiumSchema_registeredSchemas.set(this, { [constants_1.DRIVER_TYPE]: new Map(), [constants_1.PLUGIN_TYPE]: new Map() });
|
|
90
|
+
/**
|
|
91
|
+
* Ajv instance
|
|
92
|
+
*
|
|
93
|
+
* @type {Ajv}
|
|
94
|
+
*/
|
|
95
|
+
_AppiumSchema_ajv.set(this, void 0);
|
|
96
|
+
/**
|
|
97
|
+
* Lookup of schema IDs to finalized schemas.
|
|
98
|
+
*
|
|
99
|
+
* This does not include references, but rather the root schemas themselves.
|
|
100
|
+
* @type {Record<string,StrictSchemaObject>?}
|
|
101
|
+
*/
|
|
102
|
+
_AppiumSchema_finalizedSchemas.set(this, null);
|
|
103
|
+
__classPrivateFieldSet(this, _AppiumSchema_ajv, AppiumSchema._instantiateAjv(), "f");
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Factory function for {@link AppiumSchema} instances.
|
|
107
|
+
*
|
|
108
|
+
* Returns a singleton instance if one exists, otherwise creates a new one.
|
|
109
|
+
* Binds public methods to the instance.
|
|
110
|
+
* @returns {AppiumSchema}
|
|
111
|
+
*/
|
|
112
|
+
static create() {
|
|
113
|
+
if (!__classPrivateFieldGet(AppiumSchema, _a, "f", _AppiumSchema_instance)) {
|
|
114
|
+
const instance = new AppiumSchema();
|
|
115
|
+
__classPrivateFieldSet(AppiumSchema, _a, instance, "f", _AppiumSchema_instance);
|
|
116
|
+
lodash_1.default.bindAll(instance, [
|
|
117
|
+
'finalize',
|
|
118
|
+
'flatten',
|
|
119
|
+
'getAllArgSpecs',
|
|
120
|
+
'getArgSpec',
|
|
121
|
+
'getDefaults',
|
|
122
|
+
'getDefaultsForExtension',
|
|
123
|
+
'getSchema',
|
|
124
|
+
'hasArgSpec',
|
|
125
|
+
'isFinalized',
|
|
126
|
+
'registerSchema',
|
|
127
|
+
'hasRegisteredSchema',
|
|
128
|
+
'reset',
|
|
129
|
+
'validate',
|
|
130
|
+
]);
|
|
131
|
+
}
|
|
132
|
+
return __classPrivateFieldGet(AppiumSchema, _a, "f", _AppiumSchema_instance);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Returns `true` if a schema has been registered using given extension type and name.
|
|
136
|
+
*
|
|
137
|
+
* This does not depend on whether or not the instance has been _finalized_.
|
|
138
|
+
* @param {ExtensionType} extType - Extension type
|
|
139
|
+
* @param {string} extName - Name
|
|
140
|
+
* @returns {boolean} If registered
|
|
141
|
+
*/
|
|
142
|
+
hasRegisteredSchema(extType, extName) {
|
|
143
|
+
return __classPrivateFieldGet(this, _AppiumSchema_registeredSchemas, "f")[extType].has(extName);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Return `true` if {@link AppiumSchema.finalize finalize} has been called
|
|
147
|
+
* successfully and {@link AppiumSchema.reset reset} has not been called since.
|
|
148
|
+
* @returns {boolean} If finalized
|
|
149
|
+
*/
|
|
150
|
+
isFinalized() {
|
|
151
|
+
return Boolean(__classPrivateFieldGet(this, _AppiumSchema_finalizedSchemas, "f"));
|
|
152
|
+
}
|
|
153
|
+
getAllArgSpecs() {
|
|
154
|
+
return __classPrivateFieldGet(this, _AppiumSchema_argSpecs, "f");
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Call this when no more schemas will be registered.
|
|
158
|
+
*
|
|
159
|
+
* This does three things:
|
|
160
|
+
* 1. It combines all schemas from extensions into the Appium config schema,
|
|
161
|
+
* then adds the result to the `Ajv` instance.
|
|
162
|
+
* 2. It adds schemas for _each_ argument/property for validation purposes.
|
|
163
|
+
* The CLI uses these schemas to validate specific arguments.
|
|
164
|
+
* 3. The schemas are validated against JSON schema draft-07 (which is the
|
|
165
|
+
* only one supported at this time)
|
|
166
|
+
*
|
|
167
|
+
* Any method in this instance that needs to interact with the `Ajv` instance
|
|
168
|
+
* will throw if this method has not been called.
|
|
169
|
+
*
|
|
170
|
+
* If the instance has already been finalized, this is a no-op.
|
|
171
|
+
* @public
|
|
172
|
+
* @throws {Error} If the schema is not valid
|
|
173
|
+
* @returns {Readonly<Record<string,StrictSchemaObject>>} Record of schema IDs to full schema objects
|
|
174
|
+
*/
|
|
175
|
+
finalize() {
|
|
176
|
+
if (this.isFinalized()) {
|
|
177
|
+
return /** @type {Record<string,StrictSchemaObject>} */ (__classPrivateFieldGet(this, _AppiumSchema_finalizedSchemas, "f"));
|
|
178
|
+
}
|
|
179
|
+
const ajv = __classPrivateFieldGet(this, _AppiumSchema_ajv, "f");
|
|
180
|
+
// Ajv will _mutate_ the schema, so we need to clone it.
|
|
181
|
+
const baseSchema = lodash_1.default.cloneDeep(schema_1.AppiumConfigJsonSchema);
|
|
182
|
+
/**
|
|
183
|
+
*
|
|
184
|
+
* @param {SchemaObject} schema
|
|
185
|
+
* @param {ExtensionType} [extType]
|
|
186
|
+
* @param {string} [extName]
|
|
187
|
+
*/
|
|
188
|
+
const addArgSpecs = (schema, extType, extName) => {
|
|
189
|
+
for (let [propName, propSchema] of Object.entries(schema)) {
|
|
190
|
+
const argSpec = arg_spec_1.ArgSpec.create(propName, {
|
|
191
|
+
dest: propSchema.appiumCliDest,
|
|
192
|
+
defaultValue: propSchema.default,
|
|
193
|
+
extType,
|
|
194
|
+
extName,
|
|
195
|
+
});
|
|
196
|
+
const { arg } = argSpec;
|
|
197
|
+
__classPrivateFieldGet(this, _AppiumSchema_argSpecs, "f").set(arg, argSpec);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
addArgSpecs(lodash_1.default.omit(baseSchema.properties.server.properties, [constants_1.DRIVER_TYPE, constants_1.PLUGIN_TYPE]));
|
|
201
|
+
/**
|
|
202
|
+
* @type {Record<string,StrictSchemaObject>}
|
|
203
|
+
*/
|
|
204
|
+
const finalizedSchemas = {};
|
|
205
|
+
const finalSchema = lodash_1.default.reduce(__classPrivateFieldGet(this, _AppiumSchema_registeredSchemas, "f"),
|
|
206
|
+
/**
|
|
207
|
+
* @param {typeof baseSchema} baseSchema
|
|
208
|
+
* @param {Map<string,SchemaObject>} extensionSchemas
|
|
209
|
+
* @param {ExtensionType} extType
|
|
210
|
+
*/
|
|
211
|
+
(baseSchema, extensionSchemas, extType) => {
|
|
212
|
+
extensionSchemas.forEach((schema, extName) => {
|
|
213
|
+
const $ref = arg_spec_1.ArgSpec.toSchemaBaseRef(extType, extName);
|
|
214
|
+
schema.$id = $ref;
|
|
215
|
+
schema.additionalProperties = false; // this makes `schema` become a `StrictSchemaObject`
|
|
216
|
+
baseSchema.properties.server.properties[extType].properties[extName] = {
|
|
217
|
+
$ref,
|
|
218
|
+
$comment: extName,
|
|
219
|
+
};
|
|
220
|
+
ajv.validateSchema(schema, true);
|
|
221
|
+
addArgSpecs(schema.properties, extType, extName);
|
|
222
|
+
ajv.addSchema(schema, $ref);
|
|
223
|
+
finalizedSchemas[$ref] = /** @type {StrictSchemaObject} */ (schema);
|
|
224
|
+
});
|
|
225
|
+
return baseSchema;
|
|
226
|
+
}, baseSchema);
|
|
227
|
+
ajv.addSchema(finalSchema, arg_spec_1.APPIUM_CONFIG_SCHEMA_ID);
|
|
228
|
+
finalizedSchemas[arg_spec_1.APPIUM_CONFIG_SCHEMA_ID] = finalSchema;
|
|
229
|
+
ajv.validateSchema(finalSchema, true);
|
|
230
|
+
__classPrivateFieldSet(this, _AppiumSchema_finalizedSchemas, finalizedSchemas, "f");
|
|
231
|
+
return Object.freeze(finalizedSchemas);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Configures and creates an Ajv instance.
|
|
235
|
+
* @private
|
|
236
|
+
* @returns {Ajv}
|
|
237
|
+
*/
|
|
238
|
+
static _instantiateAjv() {
|
|
239
|
+
const ajv = (0, ajv_formats_1.default)(new ajv_1.default({
|
|
240
|
+
// without this not much validation actually happens
|
|
241
|
+
allErrors: true,
|
|
242
|
+
}));
|
|
243
|
+
// add custom keywords to ajv. see schema-keywords.js
|
|
244
|
+
lodash_1.default.forEach(keywords_1.keywords, (keyword) => {
|
|
245
|
+
ajv.addKeyword(keyword);
|
|
246
|
+
});
|
|
247
|
+
return ajv;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Resets this instance to its original state.
|
|
251
|
+
*
|
|
252
|
+
* - Removes all added schemas from the `Ajv` instance
|
|
253
|
+
* - Resets the map of {@link ArgSpec ArgSpecs}
|
|
254
|
+
* - Resets the map of registered schemas
|
|
255
|
+
* - Sets the {@link AppiumSchema._finalized _finalized} flag to `false`
|
|
256
|
+
*
|
|
257
|
+
* If you need to call {@link AppiumSchema.finalize} again, you'll want to call this first.
|
|
258
|
+
* @returns {void}
|
|
259
|
+
*/
|
|
260
|
+
reset() {
|
|
261
|
+
for (const schemaId of Object.keys(__classPrivateFieldGet(this, _AppiumSchema_finalizedSchemas, "f") ?? {})) {
|
|
262
|
+
__classPrivateFieldGet(this, _AppiumSchema_ajv, "f").removeSchema(schemaId);
|
|
263
|
+
}
|
|
264
|
+
__classPrivateFieldSet(this, _AppiumSchema_argSpecs, new RoachHotelMap(), "f");
|
|
265
|
+
__classPrivateFieldSet(this, _AppiumSchema_registeredSchemas, {
|
|
266
|
+
[constants_1.DRIVER_TYPE]: new Map(),
|
|
267
|
+
[constants_1.PLUGIN_TYPE]: new Map(),
|
|
268
|
+
}, "f");
|
|
269
|
+
__classPrivateFieldSet(this, _AppiumSchema_finalizedSchemas, null, "f");
|
|
270
|
+
// Ajv seems to have an over-eager cache, so we have to dump the object entirely.
|
|
271
|
+
__classPrivateFieldSet(this, _AppiumSchema_ajv, AppiumSchema._instantiateAjv(), "f");
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Registers a schema from an extension.
|
|
275
|
+
*
|
|
276
|
+
* This is "fail-fast" in that the schema will immediately be validated against JSON schema draft-07 _or_ whatever the value of the schema's `$schema` prop is.
|
|
277
|
+
*
|
|
278
|
+
* Does _not_ add the schema to the `ajv` instance (this is done by {@link AppiumSchema.finalize}).
|
|
279
|
+
* @param {ExtensionType} extType - Extension type
|
|
280
|
+
* @param {string} extName - Unique extension name for `type`
|
|
281
|
+
* @param {SchemaObject} schema - Schema object
|
|
282
|
+
* @throws {SchemaNameConflictError} If the schema is an invalid
|
|
283
|
+
* @returns {void}
|
|
284
|
+
*/
|
|
285
|
+
registerSchema(extType, extName, schema) {
|
|
286
|
+
if (!(extType && extName) || lodash_1.default.isUndefined(schema)) {
|
|
287
|
+
throw new TypeError('Expected extension type, extension name, and a defined schema');
|
|
288
|
+
}
|
|
289
|
+
if (!AppiumSchema.isSupportedSchemaType(schema)) {
|
|
290
|
+
throw new SchemaUnsupportedSchemaError(schema, extType, extName);
|
|
291
|
+
}
|
|
292
|
+
const normalizedExtName = lodash_1.default.kebabCase(extName);
|
|
293
|
+
if (this.hasRegisteredSchema(extType, normalizedExtName)) {
|
|
294
|
+
if (lodash_1.default.isEqual(__classPrivateFieldGet(this, _AppiumSchema_registeredSchemas, "f")[extType].get(normalizedExtName), schema)) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
throw new SchemaNameConflictError(extType, extName);
|
|
298
|
+
}
|
|
299
|
+
__classPrivateFieldGet(this, _AppiumSchema_ajv, "f").validateSchema(schema, true);
|
|
300
|
+
__classPrivateFieldGet(this, _AppiumSchema_registeredSchemas, "f")[extType].set(normalizedExtName, schema);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Returns a {@link ArgSpec} for the given argument name.
|
|
304
|
+
* @param {string} name - CLI argument name
|
|
305
|
+
* @param {ExtensionType} [extType] - Extension type
|
|
306
|
+
* @param {string} [extName] - Extension name
|
|
307
|
+
* @returns {ArgSpec|undefined} ArgSpec or `undefined` if not found
|
|
308
|
+
*/
|
|
309
|
+
getArgSpec(name, extType, extName) {
|
|
310
|
+
return __classPrivateFieldGet(this, _AppiumSchema_argSpecs, "f").get(arg_spec_1.ArgSpec.toArg(name, extType, extName));
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Returns `true` if the instance knows about an argument by the given `name`.
|
|
314
|
+
* @param {string} name - CLI argument name
|
|
315
|
+
* @param {ExtensionType} [extType] - Extension type
|
|
316
|
+
* @param {string} [extName] - Extension name
|
|
317
|
+
* @returns {boolean} `true` if such an {@link ArgSpec} exists
|
|
318
|
+
*/
|
|
319
|
+
hasArgSpec(name, extType, extName) {
|
|
320
|
+
return __classPrivateFieldGet(this, _AppiumSchema_argSpecs, "f").has(arg_spec_1.ArgSpec.toArg(name, extType, extName));
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Returns a `Record` of argument "dest" strings to default values.
|
|
324
|
+
*
|
|
325
|
+
* The "dest" string is the property name in object returned by
|
|
326
|
+
* `argparse.ArgumentParser['parse_args']`.
|
|
327
|
+
* @template {boolean|undefined} Flattened
|
|
328
|
+
* @param {Flattened} [flatten=true] - If `true`, flattens the returned object
|
|
329
|
+
* using "keypath"-style keys of the format `<extType>.<extName>.<argName>`.
|
|
330
|
+
* Otherwise, returns a nested object using `extType` and `extName` as
|
|
331
|
+
* properties. Base arguments (server arguments) are always at the top level.
|
|
332
|
+
* @returns {DefaultValues<Flattened>}
|
|
333
|
+
*/
|
|
334
|
+
getDefaults(flatten = /** @type {Flattened} */ (true)) {
|
|
335
|
+
if (!this.isFinalized()) {
|
|
336
|
+
throw new SchemaFinalizationError();
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* @private
|
|
340
|
+
* @callback DefaultReducer
|
|
341
|
+
* @param {DefaultValues<Flattened>} defaults
|
|
342
|
+
* @param {ArgSpec} argSpec
|
|
343
|
+
* @returns {DefaultValues<Flattened>}
|
|
344
|
+
*/
|
|
345
|
+
/** @type {DefaultReducer} */
|
|
346
|
+
const reducer = flatten
|
|
347
|
+
? (defaults, { defaultValue, dest }) => {
|
|
348
|
+
if (!lodash_1.default.isUndefined(defaultValue)) {
|
|
349
|
+
defaults[dest] = defaultValue;
|
|
350
|
+
}
|
|
351
|
+
return defaults;
|
|
352
|
+
}
|
|
353
|
+
: (defaults, { defaultValue, dest }) => {
|
|
354
|
+
if (!lodash_1.default.isUndefined(defaultValue)) {
|
|
355
|
+
lodash_1.default.set(defaults, dest, defaultValue);
|
|
356
|
+
}
|
|
357
|
+
return defaults;
|
|
358
|
+
};
|
|
359
|
+
/** @type {DefaultValues<Flattened>} */
|
|
360
|
+
const retval = {};
|
|
361
|
+
return [...__classPrivateFieldGet(this, _AppiumSchema_argSpecs, "f").values()].reduce(reducer, retval);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Returns a flattened Record of defaults for a specific extension. Keys will
|
|
365
|
+
* be of format `<argName>`.
|
|
366
|
+
* @param {ExtensionType} extType - Extension type
|
|
367
|
+
* @param {string} extName - Extension name
|
|
368
|
+
* @returns {Record<string,ArgSpecDefaultValue>}
|
|
369
|
+
*/
|
|
370
|
+
getDefaultsForExtension(extType, extName) {
|
|
371
|
+
if (!this.isFinalized()) {
|
|
372
|
+
throw new SchemaFinalizationError();
|
|
373
|
+
}
|
|
374
|
+
const specs = [...__classPrivateFieldGet(this, _AppiumSchema_argSpecs, "f").values()].filter((spec) => spec.extType === extType && spec.extName === extName);
|
|
375
|
+
return specs.reduce((defaults, { defaultValue, rawDest }) => {
|
|
376
|
+
if (!lodash_1.default.isUndefined(defaultValue)) {
|
|
377
|
+
defaults[rawDest] = defaultValue;
|
|
378
|
+
}
|
|
379
|
+
return defaults;
|
|
380
|
+
}, {});
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Flatten schema into an array of `SchemaObject`s and associated
|
|
384
|
+
* {@link ArgSpec ArgSpecs}.
|
|
385
|
+
*
|
|
386
|
+
* Converts nested extension schemas to keys based on the extension type and
|
|
387
|
+
* name. Used when translating to `argparse` options or getting the list of
|
|
388
|
+
* default values (see {@link AppiumSchema.getDefaults}) for CLI or otherwise.
|
|
389
|
+
*
|
|
390
|
+
* The return value is an intermediate reprsentation used by `cli-args`
|
|
391
|
+
* module's `toParserArgs`, which converts the finalized schema to parameters
|
|
392
|
+
* used by `argparse`.
|
|
393
|
+
* @throws If {@link AppiumSchema.finalize} has not been called yet.
|
|
394
|
+
* @returns {FlattenedSchema}
|
|
395
|
+
*/
|
|
396
|
+
flatten() {
|
|
397
|
+
const schema = this.getSchema();
|
|
398
|
+
/** @type { {properties: SchemaObject, prefix: string[]}[] } */
|
|
399
|
+
const stack = [{ properties: schema.properties, prefix: [] }];
|
|
400
|
+
/** @type {FlattenedSchema} */
|
|
401
|
+
const flattened = [];
|
|
402
|
+
// this bit is a recursive algorithm rewritten as a for loop.
|
|
403
|
+
// when we find something we want to traverse, we add it to `stack`
|
|
404
|
+
for (const { properties, prefix } of stack) {
|
|
405
|
+
const pairs = lodash_1.default.toPairs(properties);
|
|
406
|
+
for (const [key, value] of pairs) {
|
|
407
|
+
if (key === SCHEMA_KEY) {
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
const { properties, $ref } = value;
|
|
411
|
+
if (properties) {
|
|
412
|
+
stack.push({
|
|
413
|
+
properties,
|
|
414
|
+
prefix: key === arg_spec_1.SERVER_PROP_NAME ? [] : [...prefix, key],
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
else if ($ref) {
|
|
418
|
+
let refSchema;
|
|
419
|
+
try {
|
|
420
|
+
refSchema = this.getSchema($ref);
|
|
421
|
+
}
|
|
422
|
+
catch (err) {
|
|
423
|
+
// this can happen if an extension schema supplies a $ref to a non-existent schema
|
|
424
|
+
throw new SchemaUnknownSchemaError($ref);
|
|
425
|
+
}
|
|
426
|
+
const { normalizedExtName } = arg_spec_1.ArgSpec.extensionInfoFromRootSchemaId($ref);
|
|
427
|
+
if (!normalizedExtName) {
|
|
428
|
+
/* istanbul ignore next */
|
|
429
|
+
throw new ReferenceError(`Could not determine extension name from schema ID ${$ref}. This is a bug.`);
|
|
430
|
+
}
|
|
431
|
+
stack.push({
|
|
432
|
+
properties: refSchema.properties,
|
|
433
|
+
prefix: [...prefix, key, normalizedExtName],
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
else if (key !== constants_1.DRIVER_TYPE && key !== constants_1.PLUGIN_TYPE) {
|
|
437
|
+
const [extType, extName] = prefix;
|
|
438
|
+
const argSpec = this.getArgSpec(key, /** @type {ExtensionType} */ (extType), extName);
|
|
439
|
+
if (!argSpec) {
|
|
440
|
+
/* istanbul ignore next */
|
|
441
|
+
throw new ReferenceError(`Unknown argument with key ${key}, extType ${extType} and extName ${extName}. This is a bug.`);
|
|
442
|
+
}
|
|
443
|
+
flattened.push({ schema: lodash_1.default.cloneDeep(value), argSpec });
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return flattened;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Retrieves the schema itself
|
|
451
|
+
* @public
|
|
452
|
+
* @param {string} [ref] - Schema ID
|
|
453
|
+
* @throws If the schema has not yet been finalized
|
|
454
|
+
* @returns {SchemaObject}
|
|
455
|
+
*/
|
|
456
|
+
getSchema(ref = arg_spec_1.APPIUM_CONFIG_SCHEMA_ID) {
|
|
457
|
+
return /** @type {SchemaObject} */ (this._getValidator(ref).schema);
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Retrieves schema validator function from Ajv
|
|
461
|
+
* @param {string} [id] - Schema ID
|
|
462
|
+
* @private
|
|
463
|
+
* @returns {import('ajv').ValidateFunction}
|
|
464
|
+
*/
|
|
465
|
+
_getValidator(id = arg_spec_1.APPIUM_CONFIG_SCHEMA_ID) {
|
|
466
|
+
const validator = __classPrivateFieldGet(this, _AppiumSchema_ajv, "f").getSchema(id);
|
|
467
|
+
if (!validator) {
|
|
468
|
+
if (id === arg_spec_1.APPIUM_CONFIG_SCHEMA_ID) {
|
|
469
|
+
throw new SchemaFinalizationError();
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
throw new SchemaUnknownSchemaError(id);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
return validator;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Given an object, validates it against the Appium config schema.
|
|
479
|
+
* If errors occur, the returned array will be non-empty.
|
|
480
|
+
* @param {any} value - The value (hopefully an object) to validate against the schema
|
|
481
|
+
* @param {string} [ref] - Schema ID or ref.
|
|
482
|
+
* @public
|
|
483
|
+
* @returns {import('ajv').ErrorObject[]} Array of errors, if any.
|
|
484
|
+
*/
|
|
485
|
+
validate(value, ref = arg_spec_1.APPIUM_CONFIG_SCHEMA_ID) {
|
|
486
|
+
const validator = this._getValidator(ref);
|
|
487
|
+
return !validator(value) && lodash_1.default.isArray(validator.errors) ? [...validator.errors] : [];
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Returns `true` if `filename`'s file extension is allowed (in {@link ALLOWED_SCHEMA_EXTENSIONS}).
|
|
491
|
+
* @param {import('type-fest').LiteralUnion<AllowedSchemaExtension, string>} filename
|
|
492
|
+
* @returns {boolean}
|
|
493
|
+
*/
|
|
494
|
+
static isAllowedSchemaFileExtension(filename) {
|
|
495
|
+
return exports.ALLOWED_SCHEMA_EXTENSIONS.has(
|
|
496
|
+
/** @type {AllowedSchemaExtension} */ (path_1.default.extname(filename)));
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Returns `true` if `schema` is a plain object with a non-true `$async` property.
|
|
500
|
+
* @param {any} schema - Schema to check
|
|
501
|
+
* @returns {schema is SchemaObject}
|
|
502
|
+
*/
|
|
503
|
+
static isSupportedSchemaType(schema) {
|
|
504
|
+
return lodash_1.default.isPlainObject(schema) && schema.$async !== true;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
_a = AppiumSchema, _AppiumSchema_argSpecs = new WeakMap(), _AppiumSchema_registeredSchemas = new WeakMap(), _AppiumSchema_ajv = new WeakMap(), _AppiumSchema_finalizedSchemas = new WeakMap();
|
|
508
|
+
/**
|
|
509
|
+
* Singleton instance.
|
|
510
|
+
* @type {AppiumSchema}
|
|
511
|
+
*/
|
|
512
|
+
_AppiumSchema_instance = { value: void 0 };
|
|
513
|
+
/**
|
|
514
|
+
* Thrown when the {@link AppiumSchema} instance has not yet been finalized, but
|
|
515
|
+
* the method called requires it.
|
|
516
|
+
*/
|
|
517
|
+
class SchemaFinalizationError extends Error {
|
|
518
|
+
constructor() {
|
|
519
|
+
super('Schema not yet finalized; `finalize()` must be called first.');
|
|
520
|
+
/**
|
|
521
|
+
* @type {Readonly<string>}
|
|
522
|
+
*/
|
|
523
|
+
this.code = 'APPIUMERR_SCHEMA_FINALIZATION';
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
exports.SchemaFinalizationError = SchemaFinalizationError;
|
|
527
|
+
/**
|
|
528
|
+
* Thrown when a "unique" schema ID conflicts with an existing schema ID.
|
|
529
|
+
*
|
|
530
|
+
* This is likely going to be caused by attempting to register the same schema twice.
|
|
531
|
+
*/
|
|
532
|
+
class SchemaNameConflictError extends Error {
|
|
533
|
+
/**
|
|
534
|
+
* @param {ExtensionType} extType
|
|
535
|
+
* @param {string} extName
|
|
536
|
+
*/
|
|
537
|
+
constructor(extType, extName) {
|
|
538
|
+
super(`Name for ${extType} schema "${extName}" conflicts with an existing schema`);
|
|
539
|
+
/**
|
|
540
|
+
* @type {Readonly<string>}
|
|
541
|
+
*/
|
|
542
|
+
this.code = 'APPIUMERR_SCHEMA_NAME_CONFLICT';
|
|
543
|
+
this.data = { extType, extName };
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
exports.SchemaNameConflictError = SchemaNameConflictError;
|
|
547
|
+
/**
|
|
548
|
+
* Thrown when a schema ID was expected, but it doesn't exist on the {@link Ajv} instance.
|
|
549
|
+
*/
|
|
550
|
+
class SchemaUnknownSchemaError extends ReferenceError {
|
|
551
|
+
/**
|
|
552
|
+
* @param {string} schemaId
|
|
553
|
+
*/
|
|
554
|
+
constructor(schemaId) {
|
|
555
|
+
super(`Unknown schema: "${schemaId}"`);
|
|
556
|
+
/**
|
|
557
|
+
* @type {Readonly<string>}
|
|
558
|
+
*/
|
|
559
|
+
this.code = 'APPIUMERR_SCHEMA_UNKNOWN_SCHEMA';
|
|
560
|
+
this.data = { schemaId };
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
exports.SchemaUnknownSchemaError = SchemaUnknownSchemaError;
|
|
564
|
+
/**
|
|
565
|
+
* Thrown when a schema is provided, but it's of an unsupported type.
|
|
566
|
+
*
|
|
567
|
+
* "Valid" schemas which are unsupported include boolean schemas and async schemas
|
|
568
|
+
* (having a `true` `$async` property).
|
|
569
|
+
*/
|
|
570
|
+
class SchemaUnsupportedSchemaError extends TypeError {
|
|
571
|
+
/**
|
|
572
|
+
* @param {any} schema
|
|
573
|
+
* @param {ExtensionType} extType
|
|
574
|
+
* @param {string} extName
|
|
575
|
+
*/
|
|
576
|
+
constructor(schema, extType, extName) {
|
|
577
|
+
// https://github.com/Microsoft/TypeScript/issues/8277
|
|
578
|
+
super((() => {
|
|
579
|
+
let msg = `Unsupported schema from ${extType} "${extName}":`;
|
|
580
|
+
if (lodash_1.default.isBoolean(schema)) {
|
|
581
|
+
return `${msg} schema cannot be a boolean`;
|
|
582
|
+
}
|
|
583
|
+
if (lodash_1.default.isPlainObject(schema)) {
|
|
584
|
+
if (schema.$async) {
|
|
585
|
+
return `${msg} schema cannot be an async schema`;
|
|
586
|
+
}
|
|
587
|
+
/* istanbul ignore next */
|
|
588
|
+
throw new TypeError(`schema IS supported; this error should not be thrown (this is a bug). value of schema: ${JSON.stringify(schema)}`);
|
|
589
|
+
}
|
|
590
|
+
return `${msg} schema must be a plain object without a true "$async" property`;
|
|
591
|
+
})());
|
|
592
|
+
/**
|
|
593
|
+
* @type {Readonly<string>}
|
|
594
|
+
*/
|
|
595
|
+
this.code = 'APPIUMERR_SCHEMA_UNSUPPORTED_SCHEMA';
|
|
596
|
+
this.data = { schema, extType, extName };
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
exports.SchemaUnsupportedSchemaError = SchemaUnsupportedSchemaError;
|
|
600
|
+
const appiumSchema = AppiumSchema.create();
|
|
601
|
+
exports.registerSchema = appiumSchema.registerSchema, exports.getAllArgSpecs = appiumSchema.getAllArgSpecs, exports.getArgSpec = appiumSchema.getArgSpec, exports.hasArgSpec = appiumSchema.hasArgSpec, exports.isFinalized = appiumSchema.isFinalized, exports.finalizeSchema = appiumSchema.finalize, exports.resetSchema = appiumSchema.reset, exports.validate = appiumSchema.validate, exports.getSchema = appiumSchema.getSchema, exports.flattenSchema = appiumSchema.flatten, exports.getDefaultsForSchema = appiumSchema.getDefaults, exports.getDefaultsForExtension = appiumSchema.getDefaultsForExtension;
|
|
602
|
+
exports.isAllowedSchemaFileExtension = AppiumSchema.isAllowedSchemaFileExtension;
|
|
603
|
+
/**
|
|
604
|
+
* Appium only supports schemas that are plain objects; not arrays.
|
|
605
|
+
* @typedef {import('ajv').SchemaObject & {[key: number]: never}} SchemaObject
|
|
606
|
+
*/
|
|
607
|
+
/**
|
|
608
|
+
* @typedef {import('@appium/types').ExtensionType} ExtensionType
|
|
609
|
+
*/
|
|
610
|
+
/**
|
|
611
|
+
* An object having property `additionalProperties: false`
|
|
612
|
+
* @typedef StrictProp
|
|
613
|
+
* @property {false} additionalProperties
|
|
614
|
+
*/
|
|
615
|
+
/**
|
|
616
|
+
* A {@link SchemaObject} with `additionalProperties: false`
|
|
617
|
+
* @typedef {SchemaObject & StrictProp} StrictSchemaObject
|
|
618
|
+
*/
|
|
619
|
+
/**
|
|
620
|
+
* A list of schemas associated with properties and their corresponding {@link ArgSpec} objects.
|
|
621
|
+
*
|
|
622
|
+
* Intermediate data structure used when converting the entire schema down to CLI arguments.
|
|
623
|
+
* @typedef { {schema: SchemaObject, argSpec: ArgSpec}[] } FlattenedSchema
|
|
624
|
+
*/
|
|
625
|
+
/**
|
|
626
|
+
* @typedef {ArgSpec['defaultValue']} ArgSpecDefaultValue
|
|
627
|
+
*/
|
|
628
|
+
/**
|
|
629
|
+
* e.g. `{driver: {foo: 'bar'}}` where `foo` is the arg name and `bar` is the default value.
|
|
630
|
+
* @typedef {Record<string,Record<string,ArgSpecDefaultValue>>} NestedArgSpecDefaultValue
|
|
631
|
+
*/
|
|
632
|
+
/**
|
|
633
|
+
* Helper type for the return value of {@link AppiumSchema.getDefaults}
|
|
634
|
+
* @template {boolean|undefined} Flattened
|
|
635
|
+
* @typedef {Record<string,Flattened extends true ? ArgSpecDefaultValue : ArgSpecDefaultValue | NestedArgSpecDefaultValue>} DefaultValues
|
|
636
|
+
*/
|
|
637
|
+
/**
|
|
638
|
+
* @typedef {'.json'|'.js'|'.cjs'} AllowedSchemaExtension
|
|
639
|
+
*/
|
|
640
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../lib/schema/schema.js"],"names":[],"mappings":"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"}
|