appium 2.0.0-beta.57 → 2.0.0-beta.58
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 +3 -2
- package/build/lib/appium.d.ts +43 -35
- package/build/lib/appium.d.ts.map +1 -1
- package/build/lib/appium.js +37 -29
- package/build/lib/appium.js.map +1 -1
- package/build/lib/cli/args.d.ts.map +1 -1
- package/build/lib/cli/args.js +10 -0
- package/build/lib/cli/args.js.map +1 -1
- package/build/lib/cli/driver-command.d.ts +7 -7
- package/build/lib/cli/driver-command.js +7 -7
- package/build/lib/cli/driver-command.js.map +1 -1
- package/build/lib/cli/extension-command.d.ts +37 -34
- package/build/lib/cli/extension-command.d.ts.map +1 -1
- package/build/lib/cli/extension-command.js +67 -44
- package/build/lib/cli/extension-command.js.map +1 -1
- package/build/lib/cli/extension.d.ts +5 -5
- package/build/lib/cli/extension.d.ts.map +1 -1
- package/build/lib/cli/extension.js +1 -1
- package/build/lib/cli/extension.js.map +1 -1
- package/build/lib/cli/plugin-command.d.ts +7 -7
- package/build/lib/cli/plugin-command.js +7 -7
- package/build/lib/cli/plugin-command.js.map +1 -1
- package/build/lib/constants.d.ts +8 -1
- package/build/lib/constants.d.ts.map +1 -1
- package/build/lib/constants.js +9 -2
- package/build/lib/constants.js.map +1 -1
- package/build/lib/extension/driver-config.d.ts +6 -6
- package/build/lib/extension/driver-config.d.ts.map +1 -1
- package/build/lib/extension/driver-config.js +5 -7
- package/build/lib/extension/driver-config.js.map +1 -1
- package/build/lib/extension/extension-config.d.ts +31 -10
- package/build/lib/extension/extension-config.d.ts.map +1 -1
- package/build/lib/extension/extension-config.js +44 -24
- package/build/lib/extension/extension-config.js.map +1 -1
- package/build/lib/extension/manifest-migrations.d.ts.map +1 -1
- package/build/lib/extension/manifest-migrations.js +29 -13
- package/build/lib/extension/manifest-migrations.js.map +1 -1
- package/build/lib/extension/manifest.d.ts +5 -5
- package/build/lib/extension/manifest.d.ts.map +1 -1
- package/build/lib/extension/manifest.js +19 -12
- package/build/lib/extension/manifest.js.map +1 -1
- package/build/lib/main.d.ts.map +1 -1
- package/build/lib/main.js +3 -3
- package/build/lib/main.js.map +1 -1
- package/build/lib/schema/cli-args.d.ts +1 -1
- package/build/lib/schema/cli-args.d.ts.map +1 -1
- package/build/lib/schema/cli-args.js +1 -1
- package/build/lib/utils.d.ts +118 -12
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +8 -10
- package/build/lib/utils.js.map +1 -1
- package/build/types/manifest/index.d.ts +4 -2
- package/build/types/manifest/index.d.ts.map +1 -1
- package/build/types/manifest/index.js +4 -2
- package/build/types/manifest/index.js.map +1 -1
- 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/lib/appium.js +42 -31
- package/lib/cli/args.js +10 -0
- package/lib/cli/driver-command.js +7 -7
- package/lib/cli/extension-command.js +76 -54
- package/lib/cli/extension.js +5 -5
- package/lib/cli/plugin-command.js +7 -7
- package/lib/constants.js +9 -1
- package/lib/extension/driver-config.js +5 -8
- package/lib/extension/extension-config.js +42 -15
- package/lib/extension/manifest-migrations.js +31 -15
- package/lib/extension/manifest.js +26 -19
- package/lib/main.js +7 -4
- package/lib/schema/cli-args.js +1 -1
- package/lib/utils.js +8 -10
- package/package.json +9 -9
- package/types/manifest/index.ts +4 -3
- package/types/manifest/v4.ts +161 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { DriverType, ExtensionType, PluginType } from '@appium/types';
|
|
2
|
+
import { SchemaObject } from 'ajv';
|
|
3
|
+
import { PackageJson, SetRequired } from 'type-fest';
|
|
4
|
+
/**
|
|
5
|
+
* One of the possible extension installation stratgies
|
|
6
|
+
*/
|
|
7
|
+
export type InstallType = 'npm' | 'git' | 'local' | 'github' | 'dev';
|
|
8
|
+
export interface InternalMetadata {
|
|
9
|
+
/**
|
|
10
|
+
* Package name of extension
|
|
11
|
+
*
|
|
12
|
+
* `name` from its `package.json`
|
|
13
|
+
*/
|
|
14
|
+
pkgName: string;
|
|
15
|
+
/**
|
|
16
|
+
* Version of extension
|
|
17
|
+
*
|
|
18
|
+
* `version` from its `package.json`
|
|
19
|
+
*/
|
|
20
|
+
version: string;
|
|
21
|
+
/**
|
|
22
|
+
* The method in which the user installed the extension (the `source` CLI arg)
|
|
23
|
+
*/
|
|
24
|
+
installType: InstallType;
|
|
25
|
+
/**
|
|
26
|
+
* Whatever the user typed as the extension to install. May be derived from `package.json`
|
|
27
|
+
*/
|
|
28
|
+
installSpec: string;
|
|
29
|
+
/**
|
|
30
|
+
* Maximum version of Appium that this extension is compatible with.
|
|
31
|
+
*
|
|
32
|
+
* If `undefined`, we'll try anyway.
|
|
33
|
+
*/
|
|
34
|
+
appiumVersion?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Path to the extension's root directory
|
|
37
|
+
*/
|
|
38
|
+
installPath: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Shape of the `appium.schema` property in an extension's `package.json` (if it exists)
|
|
42
|
+
*/
|
|
43
|
+
export type ExtSchemaMetadata = string | (SchemaObject & {
|
|
44
|
+
[key: number]: never;
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* Manifest data shared by all extensions, as contained in `package.json`
|
|
48
|
+
*/
|
|
49
|
+
export interface CommonExtMetadata {
|
|
50
|
+
/**
|
|
51
|
+
* The main class of the extension.
|
|
52
|
+
*
|
|
53
|
+
* The extension must export this class by name.
|
|
54
|
+
*/
|
|
55
|
+
mainClass: string;
|
|
56
|
+
/**
|
|
57
|
+
* Lookup table of scripts to run via `appium <driver|plugin> run <script>` keyed by name.
|
|
58
|
+
*/
|
|
59
|
+
scripts?: Record<string, string>;
|
|
60
|
+
/**
|
|
61
|
+
* Schema describing configuration options (and CLI args) for the extension.
|
|
62
|
+
*
|
|
63
|
+
* Can also just be a path (relative to the extension root) to an external JSON schema file.
|
|
64
|
+
*/
|
|
65
|
+
schema?: ExtSchemaMetadata;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Driver-specific manifest data as stored in a driver's `package.json`
|
|
69
|
+
*/
|
|
70
|
+
export interface DriverMetadata {
|
|
71
|
+
/**
|
|
72
|
+
* Automation name of the driver
|
|
73
|
+
*/
|
|
74
|
+
automationName: string;
|
|
75
|
+
/**
|
|
76
|
+
* Platforms the driver supports
|
|
77
|
+
*/
|
|
78
|
+
platformNames: string[];
|
|
79
|
+
/**
|
|
80
|
+
* Short name of the driver (displayed in `appium list`, etc.)
|
|
81
|
+
*/
|
|
82
|
+
driverName: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Plugin-specific manifest data as stored in a plugin's `package.json`
|
|
86
|
+
*/
|
|
87
|
+
export interface PluginMetadata {
|
|
88
|
+
/**
|
|
89
|
+
* Short name of the plugin (displayed in `appium list`, etc.)
|
|
90
|
+
*/
|
|
91
|
+
pluginName: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Generic extension metadata as stored in the `appium` prop of an extension's `package.json`.
|
|
95
|
+
*/
|
|
96
|
+
export type ExtMetadata<ExtType extends ExtensionType> = (ExtType extends DriverType ? DriverMetadata : ExtType extends PluginType ? PluginMetadata : never) & CommonExtMetadata;
|
|
97
|
+
/**
|
|
98
|
+
* Combination of external + internal extension data with `driverName`/`pluginName` removed (it becomes a key in an {@linkcode ExtRecord} object).
|
|
99
|
+
* Part of `extensions.yaml`.
|
|
100
|
+
*/
|
|
101
|
+
export type ExtManifest<ExtType extends ExtensionType> = Omit<ExtMetadata<ExtType>, 'driverName' | 'pluginName'> & InternalMetadata;
|
|
102
|
+
/**
|
|
103
|
+
* Lookup of extension name to {@linkcode ExtManifest}.
|
|
104
|
+
* @see {ManifestData}
|
|
105
|
+
*/
|
|
106
|
+
export type ExtRecord<ExtType extends ExtensionType> = Record<string, ExtManifest<ExtType>>;
|
|
107
|
+
/**
|
|
108
|
+
* The shape of the `extensions.yaml` file
|
|
109
|
+
*/
|
|
110
|
+
export interface ManifestData {
|
|
111
|
+
drivers: ExtRecord<DriverType>;
|
|
112
|
+
plugins: ExtRecord<PluginType>;
|
|
113
|
+
schemaRev: number;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The name of an installed extension, as it appears in `extensions.yaml`
|
|
117
|
+
* (as a property name under `drivers` or `plugins`)
|
|
118
|
+
*/
|
|
119
|
+
export type ExtName<ExtType extends ExtensionType> = keyof ExtRecord<ExtType>;
|
|
120
|
+
/**
|
|
121
|
+
* A `package.json` containing extension metadata.
|
|
122
|
+
* Must have the following properties:
|
|
123
|
+
* - `name`: the name of the extension
|
|
124
|
+
* - `version`: the version of the extension
|
|
125
|
+
* - `appium`: the metadata for the extension
|
|
126
|
+
* - `peerDependencies.appium`: the maximum compatible version of Appium
|
|
127
|
+
*/
|
|
128
|
+
export type ExtPackageJson<ExtType extends ExtensionType> = SetRequired<PackageJson, 'name' | 'version'> & {
|
|
129
|
+
appium: ExtMetadata<ExtType>;
|
|
130
|
+
peerDependencies: {
|
|
131
|
+
appium: string;
|
|
132
|
+
[key: string]: string;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* A transient format between installation and insertion of extension metadata into the manifest.
|
|
137
|
+
*/
|
|
138
|
+
export type ExtInstallReceipt<ExtType extends ExtensionType> = ExtMetadata<ExtType> & InternalMetadata;
|
|
139
|
+
//# sourceMappingURL=v4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v4.d.ts","sourceRoot":"","sources":["../../../types/manifest/v4.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v4.js","sourceRoot":"","sources":["../../../types/manifest/v4.ts"],"names":[],"mappings":""}
|
package/lib/appium.js
CHANGED
|
@@ -28,15 +28,12 @@ const desiredCapabilityConstraints = /** @type {const} */ ({
|
|
|
28
28
|
isString: true,
|
|
29
29
|
},
|
|
30
30
|
});
|
|
31
|
-
/**
|
|
32
|
-
* @typedef {typeof desiredCapabilityConstraints} AppiumDriverConstraints
|
|
33
|
-
*/
|
|
34
31
|
|
|
35
32
|
const sessionsListGuard = new AsyncLock();
|
|
36
33
|
const pendingDriversGuard = new AsyncLock();
|
|
37
34
|
|
|
38
35
|
/**
|
|
39
|
-
* @
|
|
36
|
+
* @extends {DriverCore<AppiumDriverConstraints>}
|
|
40
37
|
*/
|
|
41
38
|
class AppiumDriver extends DriverCore {
|
|
42
39
|
/**
|
|
@@ -92,11 +89,11 @@ class AppiumDriver extends DriverCore {
|
|
|
92
89
|
*/
|
|
93
90
|
desiredCapConstraints;
|
|
94
91
|
|
|
95
|
-
/** @type {DriverOpts} */
|
|
92
|
+
/** @type {import('@appium/types').DriverOpts<AppiumDriverConstraints>} */
|
|
96
93
|
args;
|
|
97
94
|
|
|
98
95
|
/**
|
|
99
|
-
* @param {DriverOpts} opts
|
|
96
|
+
* @param {import('@appium/types').DriverOpts<AppiumDriverConstraints>} opts
|
|
100
97
|
*/
|
|
101
98
|
constructor(opts) {
|
|
102
99
|
// It is necessary to set `--tmp` here since it should be set to
|
|
@@ -163,11 +160,10 @@ class AppiumDriver extends DriverCore {
|
|
|
163
160
|
};
|
|
164
161
|
}
|
|
165
162
|
|
|
166
|
-
// eslint-disable-next-line require-await
|
|
167
163
|
async getSessions() {
|
|
168
164
|
return _.toPairs(this.sessions).map(([id, driver]) => ({
|
|
169
165
|
id,
|
|
170
|
-
capabilities: driver.caps,
|
|
166
|
+
capabilities: /** @type {import('@appium/types').DriverCaps} */ (driver.caps),
|
|
171
167
|
}));
|
|
172
168
|
}
|
|
173
169
|
|
|
@@ -224,12 +220,12 @@ class AppiumDriver extends DriverCore {
|
|
|
224
220
|
|
|
225
221
|
/**
|
|
226
222
|
* Create a new session
|
|
227
|
-
* @param {
|
|
228
|
-
* @param {
|
|
229
|
-
* @param {
|
|
230
|
-
* @
|
|
223
|
+
* @param {W3CAppiumDriverCaps} jsonwpCaps JSONWP formatted desired capabilities
|
|
224
|
+
* @param {W3CAppiumDriverCaps} [reqCaps] Required capabilities (JSONWP standard)
|
|
225
|
+
* @param {W3CAppiumDriverCaps} [w3cCapabilities] W3C capabilities
|
|
226
|
+
* @returns {Promise<SessionHandlerCreateResult>}
|
|
231
227
|
*/
|
|
232
|
-
async createSession(jsonwpCaps, reqCaps, w3cCapabilities
|
|
228
|
+
async createSession(jsonwpCaps, reqCaps, w3cCapabilities) {
|
|
233
229
|
const defaultCapabilities = _.cloneDeep(this.args.defaultCapabilities);
|
|
234
230
|
const defaultSettings = pullSettings(defaultCapabilities);
|
|
235
231
|
jsonwpCaps = _.cloneDeep(jsonwpCaps);
|
|
@@ -247,13 +243,14 @@ class AppiumDriver extends DriverCore {
|
|
|
247
243
|
Object.assign(w3cSettings, pullSettings(firstMatchEntry));
|
|
248
244
|
}
|
|
249
245
|
|
|
246
|
+
/** @type {string|undefined} */
|
|
250
247
|
let protocol;
|
|
251
248
|
let innerSessionId, dCaps;
|
|
252
249
|
try {
|
|
253
250
|
// Parse the caps into a format that the InnerDriver will accept
|
|
254
251
|
const parsedCaps = parseCapsForInnerDriver(
|
|
255
252
|
jsonwpCaps,
|
|
256
|
-
promoteAppiumOptions(w3cCapabilities),
|
|
253
|
+
promoteAppiumOptions(/** @type {W3CAppiumDriverCaps} */ (w3cCapabilities)),
|
|
257
254
|
this.desiredCapConstraints,
|
|
258
255
|
defaultCapabilities ? promoteAppiumOptionsForObject(defaultCapabilities) : undefined
|
|
259
256
|
);
|
|
@@ -399,7 +396,7 @@ class AppiumDriver extends DriverCore {
|
|
|
399
396
|
|
|
400
397
|
/**
|
|
401
398
|
*
|
|
402
|
-
* @param {
|
|
399
|
+
* @param {ExternalDriver} driver
|
|
403
400
|
* @param {string} innerSessionId
|
|
404
401
|
*/
|
|
405
402
|
attachUnexpectedShutdownHandler(driver, innerSessionId) {
|
|
@@ -442,10 +439,11 @@ class AppiumDriver extends DriverCore {
|
|
|
442
439
|
|
|
443
440
|
/**
|
|
444
441
|
*
|
|
445
|
-
* @param {
|
|
442
|
+
* @param {((...args: any[]) => any)|(new(...args: any[]) => any)} InnerDriver
|
|
446
443
|
* @returns {Promise<DriverData[]>}}
|
|
444
|
+
* @privateRemarks The _intent_ is that `InnerDriver` is the class of a driver, but it only really
|
|
445
|
+
* needs to be a function or constructor.
|
|
447
446
|
*/
|
|
448
|
-
// eslint-disable-next-line require-await
|
|
449
447
|
async curSessionDataForDriver(InnerDriver) {
|
|
450
448
|
const data = _.compact(
|
|
451
449
|
_.values(this.sessions)
|
|
@@ -588,7 +586,7 @@ class AppiumDriver extends DriverCore {
|
|
|
588
586
|
*
|
|
589
587
|
* @param {string} cmd
|
|
590
588
|
* @param {...any} args
|
|
591
|
-
* @returns {Promise<{value: any, error?: Error, protocol: string} | import('type-fest').AsyncReturnType<
|
|
589
|
+
* @returns {Promise<{value: any, error?: Error, protocol: string} | import('type-fest').AsyncReturnType<ExternalDriver['executeCommand']>>}
|
|
592
590
|
*/
|
|
593
591
|
async executeCommand(cmd, ...args) {
|
|
594
592
|
// We have basically three cases for how to handle commands:
|
|
@@ -618,6 +616,7 @@ class AppiumDriver extends DriverCore {
|
|
|
618
616
|
let dstSession = null;
|
|
619
617
|
let protocol = null;
|
|
620
618
|
/** @type {this | ExternalDriver} */
|
|
619
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
621
620
|
let driver = this;
|
|
622
621
|
if (isSessionCmd) {
|
|
623
622
|
sessionId = _.last(args);
|
|
@@ -840,21 +839,38 @@ export class NoDriverProxyCommandError extends Error {
|
|
|
840
839
|
export {AppiumDriver};
|
|
841
840
|
|
|
842
841
|
/**
|
|
843
|
-
* @typedef {import('@appium/types').ExternalDriver} ExternalDriver
|
|
844
|
-
* @typedef {import('@appium/types').Driver} Driver
|
|
845
|
-
* @typedef {import('@appium/types').DriverClass} DriverClass
|
|
846
842
|
* @typedef {import('@appium/types').DriverData} DriverData
|
|
847
843
|
* @typedef {import('@appium/types').ServerArgs} DriverOpts
|
|
848
844
|
* @typedef {import('@appium/types').Constraints} Constraints
|
|
849
845
|
* @typedef {import('@appium/types').AppiumServer} AppiumServer
|
|
850
846
|
* @typedef {import('@appium/types').ExtensionType} ExtensionType
|
|
851
847
|
* @typedef {import('./extension/driver-config').DriverConfig} DriverConfig
|
|
852
|
-
* @typedef {import('@appium/types').Plugin} Plugin
|
|
853
|
-
* @typedef {import('@appium/types').PluginClass} PluginClass
|
|
854
848
|
* @typedef {import('@appium/types').PluginType} PluginType
|
|
855
849
|
* @typedef {import('@appium/types').DriverType} DriverType
|
|
856
850
|
* @typedef {import('@appium/types').StringRecord} StringRecord
|
|
857
|
-
* @typedef {import('@appium/types').
|
|
851
|
+
* @typedef {import('@appium/types').ExternalDriver} ExternalDriver
|
|
852
|
+
* @typedef {import('@appium/types').PluginClass} PluginClass
|
|
853
|
+
* @typedef {import('@appium/types').Plugin} Plugin
|
|
854
|
+
* @typedef {import('@appium/types').DriverClass<import('@appium/types').Driver>} DriverClass
|
|
855
|
+
*/
|
|
856
|
+
|
|
857
|
+
/**
|
|
858
|
+
* @typedef {import('@appium/types').ISessionHandler<AppiumDriverConstraints,
|
|
859
|
+
* SessionHandlerCreateResult, SessionHandlerDeleteResult>} AppiumSessionHandler
|
|
860
|
+
*/
|
|
861
|
+
|
|
862
|
+
/**
|
|
863
|
+
* @typedef {SessionHandlerResult<[innerSessionId: string, caps:
|
|
864
|
+
* import('@appium/types').DriverCaps<Constraints>, protocol: string|undefined]>} SessionHandlerCreateResult
|
|
865
|
+
*/
|
|
866
|
+
|
|
867
|
+
/**
|
|
868
|
+
* @template {Constraints} C
|
|
869
|
+
* @typedef {import('@appium/types').Core<C>} Core
|
|
870
|
+
*/
|
|
871
|
+
|
|
872
|
+
/**
|
|
873
|
+
* @typedef {SessionHandlerResult<void>} SessionHandlerDeleteResult
|
|
858
874
|
*/
|
|
859
875
|
|
|
860
876
|
/**
|
|
@@ -868,11 +884,6 @@ export {AppiumDriver};
|
|
|
868
884
|
*/
|
|
869
885
|
|
|
870
886
|
/**
|
|
871
|
-
* @
|
|
872
|
-
* @typedef {import('@appium/types').
|
|
873
|
-
*/
|
|
874
|
-
|
|
875
|
-
/**
|
|
876
|
-
* @template {Constraints} C
|
|
877
|
-
* @typedef {import('@appium/types').Capabilities<C>} Capabilities
|
|
887
|
+
* @typedef {typeof desiredCapabilityConstraints} AppiumDriverConstraints
|
|
888
|
+
* @typedef {import('@appium/types').W3CDriverCaps<AppiumDriverConstraints>} W3CAppiumDriverCaps
|
|
878
889
|
*/
|
package/lib/cli/args.js
CHANGED
|
@@ -84,6 +84,16 @@ function makeListArgs(type) {
|
|
|
84
84
|
dest: 'showUpdates',
|
|
85
85
|
},
|
|
86
86
|
],
|
|
87
|
+
[
|
|
88
|
+
['--verbose'],
|
|
89
|
+
{
|
|
90
|
+
required: false,
|
|
91
|
+
default: false,
|
|
92
|
+
action: 'store_true',
|
|
93
|
+
help: 'Show more information about each extension',
|
|
94
|
+
dest: 'verbose',
|
|
95
|
+
},
|
|
96
|
+
],
|
|
87
97
|
]);
|
|
88
98
|
}
|
|
89
99
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import
|
|
2
|
+
import ExtensionCliCommand from './extension-command';
|
|
3
3
|
import {KNOWN_DRIVERS} from '../constants';
|
|
4
4
|
import '@colors/colors';
|
|
5
5
|
|
|
6
6
|
const REQ_DRIVER_FIELDS = ['driverName', 'automationName', 'platformNames', 'mainClass'];
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* @extends {
|
|
9
|
+
* @extends {ExtensionCliCommand<DriverType>}
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
export default class
|
|
12
|
+
export default class DriverCliCommand extends ExtensionCliCommand {
|
|
13
13
|
/**
|
|
14
14
|
* @param {import('./extension-command').ExtensionCommandOptions<DriverType>} opts
|
|
15
15
|
*/
|
|
@@ -120,7 +120,7 @@ export default class DriverCommand extends ExtensionCommand {
|
|
|
120
120
|
*/
|
|
121
121
|
|
|
122
122
|
/**
|
|
123
|
-
* Options for {@linkcode
|
|
123
|
+
* Options for {@linkcode DriverCliCommand.install}
|
|
124
124
|
* @typedef DriverInstallOpts
|
|
125
125
|
* @property {string} driver - the name or spec of a driver to install
|
|
126
126
|
* @property {InstallType} installType - how to install this driver. One of the INSTALL_TYPES
|
|
@@ -132,20 +132,20 @@ export default class DriverCommand extends ExtensionCommand {
|
|
|
132
132
|
*/
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
|
-
* Options for {@linkcode
|
|
135
|
+
* Options for {@linkcode DriverCliCommand.uninstall}
|
|
136
136
|
* @typedef DriverUninstallOpts
|
|
137
137
|
* @property {string} driver - the name or spec of a driver to uninstall
|
|
138
138
|
*/
|
|
139
139
|
|
|
140
140
|
/**
|
|
141
|
-
* Options for {@linkcode
|
|
141
|
+
* Options for {@linkcode DriverCliCommand.update}
|
|
142
142
|
* @typedef DriverUpdateOpts
|
|
143
143
|
* @property {string} driver - the name of the driver to update
|
|
144
144
|
* @property {boolean} unsafe - if true, will perform unsafe updates past major revision boundaries
|
|
145
145
|
*/
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
|
-
* Options for {@linkcode
|
|
148
|
+
* Options for {@linkcode DriverCliCommand.run}.
|
|
149
149
|
* @typedef DriverRunOptions
|
|
150
150
|
* @property {string} driver - name of the driver to run a script from
|
|
151
151
|
* @property {string} scriptName - name of the script to run
|