@appium/base-driver 8.5.6 → 8.6.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/build/lib/basedriver/capabilities.js +2 -2
- package/build/lib/basedriver/commands/log.js +2 -4
- package/build/lib/basedriver/core.d.ts +8 -0
- package/build/lib/basedriver/core.d.ts.map +1 -1
- package/build/lib/basedriver/core.js +5 -1
- package/build/lib/basedriver/helpers.js +2 -2
- package/build/lib/express/server.d.ts +69 -7
- package/build/lib/express/server.d.ts.map +1 -1
- package/build/lib/express/server.js +18 -16
- package/build/lib/express/websocket.d.ts +12 -30
- package/build/lib/express/websocket.d.ts.map +1 -1
- package/build/lib/express/websocket.js +6 -4
- package/build/lib/index.d.ts +11 -180
- package/build/lib/index.js +107 -80
- package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
- package/build/lib/jsonwp-proxy/proxy.js +3 -7
- package/build/lib/protocol/protocol.d.ts +6 -4
- package/build/lib/protocol/protocol.d.ts.map +1 -1
- package/build/lib/protocol/protocol.js +5 -7
- package/build/lib/protocol/routes.js +2 -6
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/basedriver/core.js +11 -0
- package/lib/express/server.js +124 -36
- package/lib/express/websocket.js +13 -11
- package/lib/index.js +16 -62
- package/lib/protocol/protocol.js +8 -1
- package/package.json +17 -15
- package/build/test/basedriver/README.md +0 -5
- package/build/test/basedriver/driver-e2e-tests.js +0 -413
- package/build/test/basedriver/driver-tests.js +0 -572
- package/build/test/basedriver/index.js +0 -26
- package/build/test/e2e/basedriver/driver.e2e.spec.js +0 -15
- package/build/test/e2e/basedriver/helpers.e2e.spec.js +0 -192
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +0 -87
- package/build/test/e2e/express/server.e2e.spec.js +0 -159
- package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +0 -59
- package/build/test/e2e/protocol/fake-driver.js +0 -163
- package/build/test/e2e/protocol/helpers.js +0 -25
- package/build/test/e2e/protocol/protocol.e2e.spec.js +0 -1186
- package/build/test/helpers.js +0 -55
- package/build/test/unit/basedriver/capabilities.spec.js +0 -672
- package/build/test/unit/basedriver/capability.spec.js +0 -353
- package/build/test/unit/basedriver/commands/event.spec.js +0 -110
- package/build/test/unit/basedriver/commands/log.spec.js +0 -92
- package/build/test/unit/basedriver/device-settings.spec.js +0 -97
- package/build/test/unit/basedriver/driver.spec.js +0 -15
- package/build/test/unit/basedriver/helpers.spec.js +0 -151
- package/build/test/unit/basedriver/timeout.spec.js +0 -135
- package/build/test/unit/express/server.spec.js +0 -155
- package/build/test/unit/express/static.spec.js +0 -26
- package/build/test/unit/jsonwp-proxy/mock-request.js +0 -91
- package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +0 -171
- package/build/test/unit/jsonwp-proxy/proxy.spec.js +0 -292
- package/build/test/unit/jsonwp-proxy/url.spec.js +0 -165
- package/build/test/unit/jsonwp-status/status.spec.js +0 -34
- package/build/test/unit/protocol/errors.spec.js +0 -390
- package/build/test/unit/protocol/routes.spec.js +0 -80
- package/build/test/unit/protocol/validator.spec.js +0 -149
- package/test/basedriver/README.md +0 -5
- package/test/basedriver/driver-e2e-tests.js +0 -386
- package/test/basedriver/driver-tests.js +0 -624
- package/test/basedriver/index.js +0 -6
|
@@ -19,13 +19,75 @@ export type StartServerOpts = {
|
|
|
19
19
|
*/
|
|
20
20
|
hostname?: string | undefined;
|
|
21
21
|
};
|
|
22
|
-
export
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
export type AppiumServer = import('@appium/types').AppiumServer;
|
|
23
|
+
export type AppiumServerSocket = import('@appium/types').AppiumServerSocket;
|
|
24
|
+
export type MethodMap = import('@appium/types').MethodMap;
|
|
25
|
+
/**
|
|
26
|
+
* Options for {@linkcode configureHttp }
|
|
27
|
+
*/
|
|
28
|
+
export type ConfigureHttpOpts = {
|
|
29
|
+
/**
|
|
30
|
+
* - HTTP server instance
|
|
31
|
+
*/
|
|
32
|
+
httpServer: import('http').Server;
|
|
33
|
+
/**
|
|
34
|
+
* - Rejection function from `Promise` constructor
|
|
35
|
+
*/
|
|
36
|
+
reject: (error?: any) => void;
|
|
37
|
+
/**
|
|
38
|
+
* - Keep-alive timeout in milliseconds
|
|
39
|
+
*/
|
|
40
|
+
keepAliveTimeout: number;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Options for {@linkcode server }
|
|
44
|
+
*/
|
|
45
|
+
export type ServerOpts = {
|
|
46
|
+
routeConfiguringFunction: RouteConfiguringFunction;
|
|
47
|
+
port: number;
|
|
48
|
+
hostname?: string | undefined;
|
|
26
49
|
allowCors?: boolean | undefined;
|
|
27
50
|
basePath?: string | undefined;
|
|
28
|
-
extraMethodMap?:
|
|
29
|
-
|
|
30
|
-
|
|
51
|
+
extraMethodMap?: MethodMap | undefined;
|
|
52
|
+
serverUpdaters?: import("@appium/types").UpdateServerCallback[] | undefined;
|
|
53
|
+
keepAliveTimeout?: number | undefined;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* A function which configures routes
|
|
57
|
+
*/
|
|
58
|
+
export type RouteConfiguringFunction = (app: import('express').Express, opts?: RouteConfiguringFunctionOpts | undefined) => void;
|
|
59
|
+
/**
|
|
60
|
+
* Options for a {@linkcode RouteConfiguringFunction }
|
|
61
|
+
*/
|
|
62
|
+
export type RouteConfiguringFunctionOpts = {
|
|
63
|
+
basePath?: string | undefined;
|
|
64
|
+
extraMethodMap?: MethodMap | undefined;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Options for {@linkcode configureServer }
|
|
68
|
+
*/
|
|
69
|
+
export type ConfigureServerOpts = {
|
|
70
|
+
app: import('express').Express;
|
|
71
|
+
addRoutes: RouteConfiguringFunction;
|
|
72
|
+
allowCors?: boolean | undefined;
|
|
73
|
+
basePath?: string | undefined;
|
|
74
|
+
extraMethodMap?: MethodMap | undefined;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
* @param {ServerOpts} opts
|
|
79
|
+
* @returns {Promise<AppiumServer>}
|
|
80
|
+
*/
|
|
81
|
+
export function server(opts: ServerOpts): Promise<AppiumServer>;
|
|
82
|
+
/**
|
|
83
|
+
* Sets up some Express middleware and stuff
|
|
84
|
+
* @param {ConfigureServerOpts} opts
|
|
85
|
+
*/
|
|
86
|
+
export function configureServer({ app, addRoutes, allowCors, basePath, extraMethodMap, }: ConfigureServerOpts): void;
|
|
87
|
+
/**
|
|
88
|
+
* Normalize base path string
|
|
89
|
+
* @param {string} basePath
|
|
90
|
+
* @returns {string}
|
|
91
|
+
*/
|
|
92
|
+
export function normalizeBasePath(basePath: string): string;
|
|
31
93
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/express/server.js"],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/express/server.js"],"names":[],"mappings":";;;;;;;gBA6Qc,OAAO,MAAM,EAAE,MAAM;;;;UACrB,MAAM;;;;sBACN,MAAM;;;;;;2BAKP,OAAO,eAAe,EAAE,YAAY;iCACpC,OAAO,eAAe,EAAE,kBAAkB;wBAC1C,OAAO,eAAe,EAAE,SAAS;;;;;;;;gBAMhC,OAAO,MAAM,EAAE,MAAM;;;;qBACZ,GAAG,KAAK,IAAI;;;;sBACrB,MAAM;;;;;;8BAMN,wBAAwB;UACxB,MAAM;;;;;;;;;;;6CAYT,OAAO,SAAS,EAAE,OAAO,sDAEvB,IAAI;;;;;;;;;;;;SAaH,OAAO,SAAS,EAAE,OAAO;eACzB,wBAAwB;;;;;AAjStC;;;;GAIG;AACH,6BAHW,UAAU,GACR,QAAQ,YAAY,CAAC,CAqDjC;AAED;;;GAGG;AACH,0FAFW,mBAAmB,QA+C7B;AAsGD;;;;GAIG;AACH,4CAHW,MAAM,GACJ,MAAM,CAkBlB"}
|
|
@@ -45,11 +45,11 @@ var _events = require("events");
|
|
|
45
45
|
|
|
46
46
|
const KEEP_ALIVE_TIMEOUT_MS = 10 * 60 * 1000;
|
|
47
47
|
|
|
48
|
-
async function server(opts
|
|
48
|
+
async function server(opts) {
|
|
49
49
|
const {
|
|
50
50
|
routeConfiguringFunction,
|
|
51
51
|
port,
|
|
52
|
-
hostname
|
|
52
|
+
hostname,
|
|
53
53
|
allowCors = true,
|
|
54
54
|
basePath = _constants.DEFAULT_BASE_PATH,
|
|
55
55
|
extraMethodMap = {},
|
|
@@ -62,7 +62,7 @@ async function server(opts = {}) {
|
|
|
62
62
|
|
|
63
63
|
return await new _bluebird.default(async (resolve, reject) => {
|
|
64
64
|
try {
|
|
65
|
-
configureHttp({
|
|
65
|
+
const appiumServer = configureHttp({
|
|
66
66
|
httpServer,
|
|
67
67
|
reject,
|
|
68
68
|
keepAliveTimeout
|
|
@@ -76,7 +76,7 @@ async function server(opts = {}) {
|
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
for (const updater of serverUpdaters) {
|
|
79
|
-
await updater(app,
|
|
79
|
+
await updater(app, appiumServer);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
app.all('*', _middleware.catch404Handler);
|
|
@@ -86,7 +86,7 @@ async function server(opts = {}) {
|
|
|
86
86
|
port,
|
|
87
87
|
keepAliveTimeout
|
|
88
88
|
});
|
|
89
|
-
resolve(
|
|
89
|
+
resolve(appiumServer);
|
|
90
90
|
} catch (err) {
|
|
91
91
|
reject(err);
|
|
92
92
|
}
|
|
@@ -144,13 +144,14 @@ function configureHttp({
|
|
|
144
144
|
notifier: new _events.EventEmitter(),
|
|
145
145
|
closed: false
|
|
146
146
|
};
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
147
|
+
const appiumServer = httpServer;
|
|
148
|
+
appiumServer.addWebSocketHandler = _websocket.addWebSocketHandler;
|
|
149
|
+
appiumServer.removeWebSocketHandler = _websocket.removeWebSocketHandler;
|
|
150
|
+
appiumServer.removeAllWebSocketHandlers = _websocket.removeAllWebSocketHandlers;
|
|
151
|
+
appiumServer.getWebSocketHandlers = _websocket.getWebSocketHandlers;
|
|
152
|
+
const close = appiumServer.close.bind(appiumServer);
|
|
153
|
+
|
|
154
|
+
appiumServer.close = async () => await new _bluebird.default((resolve, reject) => {
|
|
154
155
|
serverState.closed = true;
|
|
155
156
|
serverState.notifier.emit('shutdown');
|
|
156
157
|
|
|
@@ -166,7 +167,7 @@ function configureHttp({
|
|
|
166
167
|
});
|
|
167
168
|
});
|
|
168
169
|
|
|
169
|
-
|
|
170
|
+
appiumServer.on('error', err => {
|
|
170
171
|
if (err.code === 'EADDRNOTAVAIL') {
|
|
171
172
|
_logger.default.error('Could not start REST http interface listener. ' + 'Requested address is not available.');
|
|
172
173
|
} else {
|
|
@@ -175,7 +176,7 @@ function configureHttp({
|
|
|
175
176
|
|
|
176
177
|
reject(err);
|
|
177
178
|
});
|
|
178
|
-
|
|
179
|
+
appiumServer.on('connection', socket => {
|
|
179
180
|
socket.setTimeout(keepAliveTimeout);
|
|
180
181
|
socket.on('error', reject);
|
|
181
182
|
|
|
@@ -187,7 +188,7 @@ function configureHttp({
|
|
|
187
188
|
socket.once('close', () => serverState.notifier.removeListener('shutdown', destroy));
|
|
188
189
|
serverState.notifier.once('shutdown', destroy);
|
|
189
190
|
});
|
|
190
|
-
|
|
191
|
+
appiumServer.on('request', function (req, res) {
|
|
191
192
|
const socket = req.connection || req.socket;
|
|
192
193
|
socket._openReqCount++;
|
|
193
194
|
res.on('finish', function () {
|
|
@@ -198,6 +199,7 @@ function configureHttp({
|
|
|
198
199
|
}
|
|
199
200
|
});
|
|
200
201
|
});
|
|
202
|
+
return appiumServer;
|
|
201
203
|
}
|
|
202
204
|
|
|
203
205
|
async function startServer({
|
|
@@ -229,4 +231,4 @@ function normalizeBasePath(basePath) {
|
|
|
229
231
|
|
|
230
232
|
return basePath;
|
|
231
233
|
}
|
|
232
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJLRUVQX0FMSVZFX1RJTUVPVVRfTVMiLCJzZXJ2ZXIiLCJvcHRzIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwicG9ydCIsImhvc3RuYW1lIiwiYWxsb3dDb3JzIiwiYmFzZVBhdGgiLCJERUZBVUxUX0JBU0VfUEFUSCIsImV4dHJhTWV0aG9kTWFwIiwic2VydmVyVXBkYXRlcnMiLCJrZWVwQWxpdmVUaW1lb3V0IiwiYXBwIiwiZXhwcmVzcyIsImh0dHBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJjb25maWd1cmVIdHRwIiwiY29uZmlndXJlU2VydmVyIiwiYWRkUm91dGVzIiwidXBkYXRlciIsImFsbCIsImNhdGNoNDA0SGFuZGxlciIsInN0YXJ0U2VydmVyIiwiZXJyIiwibm9ybWFsaXplQmFzZVBhdGgiLCJ1c2UiLCJlbmRMb2dGb3JtYXR0ZXIiLCJmYXZpY29uIiwicGF0aCIsIlNUQVRJQ19ESVIiLCJzdGF0aWMiLCJwcm9kdWNlRXJyb3IiLCJwcm9kdWNlQ3Jhc2giLCJhbGxvd0Nyb3NzRG9tYWluIiwiYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSIsImhhbmRsZUlkZW1wb3RlbmN5IiwiZml4UHl0aG9uQ29udGVudFR5cGUiLCJkZWZhdWx0VG9KU09OQ29udGVudFR5cGUiLCJib2R5UGFyc2VyIiwidXJsZW5jb2RlZCIsImV4dGVuZGVkIiwibWV0aG9kT3ZlcnJpZGUiLCJjYXRjaEFsbEhhbmRsZXIiLCJqc29uIiwibGltaXQiLCJzdGFydExvZ0Zvcm1hdHRlciIsIndlbGNvbWUiLCJndWluZWFQaWciLCJndWluZWFQaWdTY3JvbGxhYmxlIiwiZ3VpbmVhUGlnQXBwQmFubmVyIiwic2VydmVyU3RhdGUiLCJub3RpZmllciIsIkV2ZW50RW1pdHRlciIsImNsb3NlZCIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJyZW1vdmVXZWJTb2NrZXRIYW5kbGVyIiwicmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnMiLCJnZXRXZWJTb2NrZXRIYW5kbGVycyIsImNsb3NlIiwiYmluZCIsImVtaXQiLCJsb2ciLCJpbmZvIiwib24iLCJjb2RlIiwiZXJyb3IiLCJzb2NrZXQiLCJzZXRUaW1lb3V0IiwiZGVzdHJveSIsIl9vcGVuUmVxQ291bnQiLCJvbmNlIiwicmVtb3ZlTGlzdGVuZXIiLCJyZXEiLCJyZXMiLCJjb25uZWN0aW9uIiwic3RhcnQiLCJwcm9taXNpZnkiLCJsaXN0ZW4iLCJjb250ZXh0Iiwic3RhcnRQcm9taXNlIiwiaGVhZGVyc1RpbWVvdXQiLCJfIiwiaXNTdHJpbmciLCJFcnJvciIsInJlcGxhY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9zZXJ2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBmYXZpY29uIGZyb20gJ3NlcnZlLWZhdmljb24nO1xuaW1wb3J0IGJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0IG1ldGhvZE92ZXJyaWRlIGZyb20gJ21ldGhvZC1vdmVycmlkZSc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7c3RhcnRMb2dGb3JtYXR0ZXIsIGVuZExvZ0Zvcm1hdHRlcn0gZnJvbSAnLi9leHByZXNzLWxvZ2dpbmcnO1xuaW1wb3J0IHtcbiAgYWxsb3dDcm9zc0RvbWFpbixcbiAgZml4UHl0aG9uQ29udGVudFR5cGUsXG4gIGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSxcbiAgY2F0Y2hBbGxIYW5kbGVyLFxuICBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlLFxuICBoYW5kbGVJZGVtcG90ZW5jeSxcbiAgY2F0Y2g0MDRIYW5kbGVyLFxufSBmcm9tICcuL21pZGRsZXdhcmUnO1xuaW1wb3J0IHtndWluZWFQaWcsIGd1aW5lYVBpZ1Njcm9sbGFibGUsIGd1aW5lYVBpZ0FwcEJhbm5lciwgd2VsY29tZSwgU1RBVElDX0RJUn0gZnJvbSAnLi9zdGF0aWMnO1xuaW1wb3J0IHtwcm9kdWNlRXJyb3IsIHByb2R1Y2VDcmFzaH0gZnJvbSAnLi9jcmFzaCc7XG5pbXBvcnQge1xuICBhZGRXZWJTb2NrZXRIYW5kbGVyLFxuICByZW1vdmVXZWJTb2NrZXRIYW5kbGVyLFxuICByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycyxcbiAgZ2V0V2ViU29ja2V0SGFuZGxlcnMsXG59IGZyb20gJy4vd2Vic29ja2V0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7REVGQVVMVF9CQVNFX1BBVEh9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgS0VFUF9BTElWRV9USU1FT1VUX01TID0gMTAgKiA2MCAqIDEwMDA7IC8vIDEwIG1pbnV0ZXNcblxuYXN5bmMgZnVuY3Rpb24gc2VydmVyKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLFxuICAgIHBvcnQsXG4gICAgaG9zdG5hbWUgPSBudWxsLFxuICAgIGFsbG93Q29ycyA9IHRydWUsXG4gICAgYmFzZVBhdGggPSBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICBleHRyYU1ldGhvZE1hcCA9IHt9LFxuICAgIHNlcnZlclVwZGF0ZXJzID0gW10sXG4gICAga2VlcEFsaXZlVGltZW91dCA9IEtFRVBfQUxJVkVfVElNRU9VVF9NUyxcbiAgfSA9IG9wdHM7XG5cbiAgLy8gY3JlYXRlIHRoZSBhY3R1YWwgaHR0cCBzZXJ2ZXJcbiAgY29uc3QgYXBwID0gZXhwcmVzcygpO1xuICBjb25zdCBodHRwU2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoYXBwKTtcbiAgcmV0dXJuIGF3YWl0IG5ldyBCKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyB3ZSBwdXQgYW4gYXN5bmMgZnVuY3Rpb24gYXMgdGhlIHByb21pc2UgY29uc3RydWN0b3IgYmVjYXVzZSB3ZSB3YW50IHNvbWUgdGhpbmdzIHRvIGhhcHBlbiBpblxuICAgIC8vIHNlcmlhbCAoYXBwbGljYXRpb24gb2YgcGx1Z2luIHVwZGF0ZXMsIGZvciBleGFtcGxlKS4gQnV0IHdlIHN0aWxsIG5lZWQgdG8gdXNlIGEgcHJvbWlzZSBoZXJlXG4gICAgLy8gYmVjYXVzZSBzb21lIGVsZW1lbnRzIG9mIHNlcnZlciBzdGFydCBmYWlsdXJlIG9ubHkgaGFwcGVuIGluIGh0dHBTZXJ2ZXIgbGlzdGVuZXJzLiBTbyB0aGVcbiAgICAvLyB3YXkgd2UgcmVzb2x2ZSBpdCBpcyB0byB1c2UgYW4gYXN5bmMgZnVuY3Rpb24gaGVyZSBidXQgdG8gd3JhcCBhbGwgdGhlIGlubmVyIGxvZ2ljIGluXG4gICAgLy8gdHJ5L2NhdGNoIHNvIGFueSBlcnJvcnMgY2FuIGJlIHBhc3NlZCB0byByZWplY3QuXG4gICAgdHJ5IHtcbiAgICAgIGNvbmZpZ3VyZUh0dHAoe2h0dHBTZXJ2ZXIsIHJlamVjdCwga2VlcEFsaXZlVGltZW91dH0pO1xuICAgICAgY29uZmlndXJlU2VydmVyKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBhZGRSb3V0ZXM6IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICAgICAgYWxsb3dDb3JzLFxuICAgICAgICBiYXNlUGF0aCxcbiAgICAgICAgZXh0cmFNZXRob2RNYXAsXG4gICAgICB9KTtcbiAgICAgIC8vIGFsbG93IGV4dGVuc2lvbnMgdG8gdXBkYXRlIHRoZSBhcHAgYW5kIGh0dHAgc2VydmVyIG9iamVjdHNcbiAgICAgIGZvciAoY29uc3QgdXBkYXRlciBvZiBzZXJ2ZXJVcGRhdGVycykge1xuICAgICAgICBhd2FpdCB1cGRhdGVyKGFwcCwgaHR0cFNlcnZlcik7XG4gICAgICB9XG5cbiAgICAgIC8vIG9uY2UgYWxsIGNvbmZpZ3VyYXRpb25zIGFuZCB1cGRhdGVycyBoYXZlIGJlZW4gYXBwbGllZCwgbWFrZSBzdXJlIHRvIHNldCB1cCBhIGNhdGNoYWxsXG4gICAgICAvLyBoYW5kbGVyIHNvIHRoYXQgYW55dGhpbmcgdW5rbm93biA0MDRzLiBCdXQgZG8gdGhpcyBhZnRlciBldmVyeXRoaW5nIGVsc2Ugc2luY2Ugd2UgZG9uJ3RcbiAgICAgIC8vIHdhbnQgdG8gYmxvY2sgZXh0ZW5zaW9ucycgYWJpbGl0eSB0byBhZGQgcm91dGVzIGlmIHRoZXkgd2FudC5cbiAgICAgIGFwcC5hbGwoJyonLCBjYXRjaDQwNEhhbmRsZXIpO1xuXG4gICAgICBhd2FpdCBzdGFydFNlcnZlcih7aHR0cFNlcnZlciwgaG9zdG5hbWUsIHBvcnQsIGtlZXBBbGl2ZVRpbWVvdXR9KTtcbiAgICAgIHJlc29sdmUoaHR0cFNlcnZlcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjb25maWd1cmVTZXJ2ZXIoe1xuICBhcHAsXG4gIGFkZFJvdXRlcyxcbiAgYWxsb3dDb3JzID0gdHJ1ZSxcbiAgYmFzZVBhdGggPSBERUZBVUxUX0JBU0VfUEFUSCxcbiAgZXh0cmFNZXRob2RNYXAgPSB7fSxcbn0pIHtcbiAgYmFzZVBhdGggPSBub3JtYWxpemVCYXNlUGF0aChiYXNlUGF0aCk7XG5cbiAgYXBwLnVzZShlbmRMb2dGb3JtYXR0ZXIpO1xuXG4gIC8vIHNldCB1cCBzdGF0aWMgYXNzZXRzXG4gIGFwcC51c2UoZmF2aWNvbihwYXRoLnJlc29sdmUoU1RBVElDX0RJUiwgJ2Zhdmljb24uaWNvJykpKTtcbiAgYXBwLnVzZShleHByZXNzLnN0YXRpYyhTVEFUSUNfRElSKSk7XG5cbiAgLy8gY3Jhc2ggcm91dGVzLCBmb3IgdGVzdGluZ1xuICBhcHAudXNlKGAke2Jhc2VQYXRofS9wcm9kdWNlX2Vycm9yYCwgcHJvZHVjZUVycm9yKTtcbiAgYXBwLnVzZShgJHtiYXNlUGF0aH0vY3Jhc2hgLCBwcm9kdWNlQ3Jhc2gpO1xuXG4gIC8vIGFkZCBtaWRkbGV3YXJlc1xuICBpZiAoYWxsb3dDb3JzKSB7XG4gICAgYXBwLnVzZShhbGxvd0Nyb3NzRG9tYWluKTtcbiAgfSBlbHNlIHtcbiAgICBhcHAudXNlKGFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUoYmFzZVBhdGgpKTtcbiAgfVxuICBhcHAudXNlKGhhbmRsZUlkZW1wb3RlbmN5KTtcbiAgYXBwLnVzZShmaXhQeXRob25Db250ZW50VHlwZShiYXNlUGF0aCkpO1xuICBhcHAudXNlKGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSk7XG4gIGFwcC51c2UoYm9keVBhcnNlci51cmxlbmNvZGVkKHtleHRlbmRlZDogdHJ1ZX0pKTtcbiAgYXBwLnVzZShtZXRob2RPdmVycmlkZSgpKTtcbiAgYXBwLnVzZShjYXRjaEFsbEhhbmRsZXIpO1xuXG4gIC8vIG1ha2Ugc3VyZSBhcHBpdW0gbmV2ZXIgZmFpbHMgYmVjYXVzZSBvZiBhIGZpbGUgc2l6ZSB1cGxvYWQgbGltaXRcbiAgYXBwLnVzZShib2R5UGFyc2VyLmpzb24oe2xpbWl0OiAnMWdiJ30pKTtcblxuICAvLyBzZXQgdXAgc3RhcnQgbG9nZ2luZyAod2hpY2ggZGVwZW5kcyBvbiBib2R5UGFyc2VyIGRvaW5nIGl0cyB0aGluZylcbiAgYXBwLnVzZShzdGFydExvZ0Zvcm1hdHRlcik7XG5cbiAgYWRkUm91dGVzKGFwcCwge2Jhc2VQYXRoLCBleHRyYU1ldGhvZE1hcH0pO1xuXG4gIC8vIGR5bmFtaWMgcm91dGVzIGZvciB0ZXN0aW5nLCBldGMuXG4gIGFwcC5hbGwoJy93ZWxjb21lJywgd2VsY29tZSk7XG4gIGFwcC5hbGwoJy90ZXN0L2d1aW5lYS1waWcnLCBndWluZWFQaWcpO1xuICBhcHAuYWxsKCcvdGVzdC9ndWluZWEtcGlnLXNjcm9sbGFibGUnLCBndWluZWFQaWdTY3JvbGxhYmxlKTtcbiAgYXBwLmFsbCgnL3Rlc3QvZ3VpbmVhLXBpZy1hcHAtYmFubmVyJywgZ3VpbmVhUGlnQXBwQmFubmVyKTtcbn1cblxuZnVuY3Rpb24gY29uZmlndXJlSHR0cCh7aHR0cFNlcnZlciwgcmVqZWN0LCBrZWVwQWxpdmVUaW1lb3V0fSkge1xuICBjb25zdCBzZXJ2ZXJTdGF0ZSA9IHtcbiAgICBub3RpZmllcjogbmV3IEV2ZW50RW1pdHRlcigpLFxuICAgIGNsb3NlZDogZmFsc2UsXG4gIH07XG4gIGh0dHBTZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlciA9IGFkZFdlYlNvY2tldEhhbmRsZXI7XG4gIGh0dHBTZXJ2ZXIucmVtb3ZlV2ViU29ja2V0SGFuZGxlciA9IHJlbW92ZVdlYlNvY2tldEhhbmRsZXI7XG4gIGh0dHBTZXJ2ZXIucmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnMgPSByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycztcbiAgaHR0cFNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyA9IGdldFdlYlNvY2tldEhhbmRsZXJzO1xuXG4gIC8vIGh0dHAuU2VydmVyLmNsb3NlKCkgb25seSBzdG9wcyBuZXcgY29ubmVjdGlvbnMsIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgdW50aWxcbiAgLy8gYWxsIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQgYW5kIHRoZSBgY2xvc2VgIGV2ZW50IGlzIGVtaXR0ZWRcbiAgY29uc3QgY2xvc2UgPSBodHRwU2VydmVyLmNsb3NlLmJpbmQoaHR0cFNlcnZlcik7XG4gIGh0dHBTZXJ2ZXIuY2xvc2UgPSBhc3luYyAoKSA9PlxuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS12MC54LWFyY2hpdmUvaXNzdWVzLzkwNjYjaXNzdWVjb21tZW50LTEyNDIxMDU3NlxuICAgICAgc2VydmVyU3RhdGUuY2xvc2VkID0gdHJ1ZTtcbiAgICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLmVtaXQoJ3NodXRkb3duJyk7XG4gICAgICBsb2cuaW5mbygnV2FpdGluZyB1bnRpbCB0aGUgc2VydmVyIGlzIGNsb3NlZCcpO1xuICAgICAgaHR0cFNlcnZlci5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGxvZy5pbmZvKCdSZWNlaXZlZCBzZXJ2ZXIgY2xvc2UgZXZlbnQnKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICBjbG9zZSgoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgICB9KTtcbiAgICB9KTtcblxuICBodHRwU2VydmVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICBpZiAoZXJyLmNvZGUgPT09ICdFQUREUk5PVEFWQUlMJykge1xuICAgICAgbG9nLmVycm9yKFxuICAgICAgICAnQ291bGQgbm90IHN0YXJ0IFJFU1QgaHR0cCBpbnRlcmZhY2UgbGlzdGVuZXIuICcgKyAnUmVxdWVzdGVkIGFkZHJlc3MgaXMgbm90IGF2YWlsYWJsZS4nXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZXJyb3IoXG4gICAgICAgICdDb3VsZCBub3Qgc3RhcnQgUkVTVCBodHRwIGludGVyZmFjZSBsaXN0ZW5lci4gVGhlIHJlcXVlc3RlZCAnICtcbiAgICAgICAgICAncG9ydCBtYXkgYWxyZWFkeSBiZSBpbiB1c2UuIFBsZWFzZSBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gJyArXG4gICAgICAgICAgJ290aGVyIGluc3RhbmNlIG9mIHRoaXMgc2VydmVyIHJ1bm5pbmcgYWxyZWFkeS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZWplY3QoZXJyKTtcbiAgfSk7XG5cbiAgaHR0cFNlcnZlci5vbignY29ubmVjdGlvbicsIChzb2NrZXQpID0+IHtcbiAgICBzb2NrZXQuc2V0VGltZW91dChrZWVwQWxpdmVUaW1lb3V0KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgIH1cbiAgICBzb2NrZXQuX29wZW5SZXFDb3VudCA9IDA7XG4gICAgc29ja2V0Lm9uY2UoJ2Nsb3NlJywgKCkgPT4gc2VydmVyU3RhdGUubm90aWZpZXIucmVtb3ZlTGlzdGVuZXIoJ3NodXRkb3duJywgZGVzdHJveSkpO1xuICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLm9uY2UoJ3NodXRkb3duJywgZGVzdHJveSk7XG4gIH0pO1xuXG4gIGh0dHBTZXJ2ZXIub24oJ3JlcXVlc3QnLCBmdW5jdGlvbiAocmVxLCByZXMpIHtcbiAgICBjb25zdCBzb2NrZXQgPSByZXEuY29ubmVjdGlvbiB8fCByZXEuc29ja2V0O1xuICAgIHNvY2tldC5fb3BlblJlcUNvdW50Kys7XG4gICAgcmVzLm9uKCdmaW5pc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzb2NrZXQuX29wZW5SZXFDb3VudC0tO1xuICAgICAgaWYgKHNlcnZlclN0YXRlLmNsb3NlZCAmJiBzb2NrZXQuX29wZW5SZXFDb3VudCA9PT0gMCkge1xuICAgICAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtTdGFydFNlcnZlck9wdHN9IG9wdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIoe2h0dHBTZXJ2ZXIsIHBvcnQsIGhvc3RuYW1lLCBrZWVwQWxpdmVUaW1lb3V0fSkge1xuICAvLyBJZiB0aGUgaG9zdG5hbWUgaXMgb21pdHRlZCwgdGhlIHNlcnZlciB3aWxsIGFjY2VwdFxuICAvLyBjb25uZWN0aW9ucyBvbiBhbnkgSVAgYWRkcmVzc1xuICAvKiogQHR5cGUgeyhwb3J0OiBudW1iZXIsIGhvc3RuYW1lPzogc3RyaW5nKSA9PiBCPGh0dHAuU2VydmVyPn0gKi9cbiAgY29uc3Qgc3RhcnQgPSBCLnByb21pc2lmeShodHRwU2VydmVyLmxpc3Rlbiwge2NvbnRleHQ6IGh0dHBTZXJ2ZXJ9KTtcbiAgY29uc3Qgc3RhcnRQcm9taXNlID0gc3RhcnQocG9ydCwgaG9zdG5hbWUpO1xuICBodHRwU2VydmVyLmtlZXBBbGl2ZVRpbWVvdXQgPSBrZWVwQWxpdmVUaW1lb3V0O1xuICAvLyBoZWFkZXJzIHRpbWVvdXQgbXVzdCBiZSBncmVhdGVyIHRoYW4ga2VlcEFsaXZlVGltZW91dFxuICBodHRwU2VydmVyLmhlYWRlcnNUaW1lb3V0ID0ga2VlcEFsaXZlVGltZW91dCArIDUgKiAxMDAwO1xuICBhd2FpdCBzdGFydFByb21pc2U7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUJhc2VQYXRoKGJhc2VQYXRoKSB7XG4gIGlmICghXy5pc1N0cmluZyhiYXNlUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aCBwcmVmaXggJHtiYXNlUGF0aH1gKTtcbiAgfVxuXG4gIC8vIGVuc3VyZSB0aGUgcGF0aCBwcmVmaXggZG9lcyBub3QgZW5kIGluICcvJywgc2luY2Ugb3VyIG1ldGhvZCBtYXBcbiAgLy8gc3RhcnRzIGFsbCBwYXRocyB3aXRoICcvJ1xuICBiYXNlUGF0aCA9IGJhc2VQYXRoLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgLy8gbGlrZXdpc2UsIGVuc3VyZSB0aGUgcGF0aCBwcmVmaXggZG9lcyBhbHdheXMgU1RBUlQgd2l0aCAvLCB1bmxlc3MgdGhlIHBhdGhcbiAgLy8gaXMgZW1wdHkgbWVhbmluZyBubyBiYXNlIHBhdGggYXQgYWxsXG4gIGlmIChiYXNlUGF0aCAhPT0gJycgJiYgYmFzZVBhdGhbMF0gIT09ICcvJykge1xuICAgIGJhc2VQYXRoID0gYC8ke2Jhc2VQYXRofWA7XG4gIH1cblxuICByZXR1cm4gYmFzZVBhdGg7XG59XG5cbmV4cG9ydCB7c2VydmVyLCBjb25maWd1cmVTZXJ2ZXIsIG5vcm1hbGl6ZUJhc2VQYXRofTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHN0YXJ0U2VydmVyfS5cbiAqIEB0eXBlZGVmIFN0YXJ0U2VydmVyT3B0c1xuICogQHByb3BlcnR5IHtpbXBvcnQoJ2h0dHAnKS5TZXJ2ZXJ9IGh0dHBTZXJ2ZXIgLSBIVFRQIHNlcnZlciBpbnN0YW5jZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IHBvcnQgLSBQb3J0IHRvIHJ1biBvblxuICogQHByb3BlcnR5IHtudW1iZXJ9IGtlZXBBbGl2ZVRpbWVvdXQgLSBLZWVwLWFsaXZlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2hvc3RuYW1lXSAtIE9wdGlvbmFsIGhvc3RuYW1lXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVNBOztBQUNBOztBQUNBOztBQU1BOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLHFCQUFxQixHQUFHLEtBQUssRUFBTCxHQUFVLElBQXhDOztBQUVBLGVBQWVDLE1BQWYsQ0FBc0JDLElBQUksR0FBRyxFQUE3QixFQUFpQztFQUMvQixNQUFNO0lBQ0pDLHdCQURJO0lBRUpDLElBRkk7SUFHSkMsUUFBUSxHQUFHLElBSFA7SUFJSkMsU0FBUyxHQUFHLElBSlI7SUFLSkMsUUFBUSxHQUFHQyw0QkFMUDtJQU1KQyxjQUFjLEdBQUcsRUFOYjtJQU9KQyxjQUFjLEdBQUcsRUFQYjtJQVFKQyxnQkFBZ0IsR0FBR1g7RUFSZixJQVNGRSxJQVRKO0VBWUEsTUFBTVUsR0FBRyxHQUFHLElBQUFDLGdCQUFBLEdBQVo7O0VBQ0EsTUFBTUMsVUFBVSxHQUFHQyxhQUFBLENBQUtDLFlBQUwsQ0FBa0JKLEdBQWxCLENBQW5COztFQUNBLE9BQU8sTUFBTSxJQUFJSyxpQkFBSixDQUFNLE9BQU9DLE9BQVAsRUFBZ0JDLE1BQWhCLEtBQTJCO0lBTTVDLElBQUk7TUFDRkMsYUFBYSxDQUFDO1FBQUNOLFVBQUQ7UUFBYUssTUFBYjtRQUFxQlI7TUFBckIsQ0FBRCxDQUFiO01BQ0FVLGVBQWUsQ0FBQztRQUNkVCxHQURjO1FBRWRVLFNBQVMsRUFBRW5CLHdCQUZHO1FBR2RHLFNBSGM7UUFJZEMsUUFKYztRQUtkRTtNQUxj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
|
|
234
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJLRUVQX0FMSVZFX1RJTUVPVVRfTVMiLCJzZXJ2ZXIiLCJvcHRzIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwicG9ydCIsImhvc3RuYW1lIiwiYWxsb3dDb3JzIiwiYmFzZVBhdGgiLCJERUZBVUxUX0JBU0VfUEFUSCIsImV4dHJhTWV0aG9kTWFwIiwic2VydmVyVXBkYXRlcnMiLCJrZWVwQWxpdmVUaW1lb3V0IiwiYXBwIiwiZXhwcmVzcyIsImh0dHBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJhcHBpdW1TZXJ2ZXIiLCJjb25maWd1cmVIdHRwIiwiY29uZmlndXJlU2VydmVyIiwiYWRkUm91dGVzIiwidXBkYXRlciIsImFsbCIsImNhdGNoNDA0SGFuZGxlciIsInN0YXJ0U2VydmVyIiwiZXJyIiwibm9ybWFsaXplQmFzZVBhdGgiLCJ1c2UiLCJlbmRMb2dGb3JtYXR0ZXIiLCJmYXZpY29uIiwicGF0aCIsIlNUQVRJQ19ESVIiLCJzdGF0aWMiLCJwcm9kdWNlRXJyb3IiLCJwcm9kdWNlQ3Jhc2giLCJhbGxvd0Nyb3NzRG9tYWluIiwiYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSIsImhhbmRsZUlkZW1wb3RlbmN5IiwiZml4UHl0aG9uQ29udGVudFR5cGUiLCJkZWZhdWx0VG9KU09OQ29udGVudFR5cGUiLCJib2R5UGFyc2VyIiwidXJsZW5jb2RlZCIsImV4dGVuZGVkIiwibWV0aG9kT3ZlcnJpZGUiLCJjYXRjaEFsbEhhbmRsZXIiLCJqc29uIiwibGltaXQiLCJzdGFydExvZ0Zvcm1hdHRlciIsIndlbGNvbWUiLCJndWluZWFQaWciLCJndWluZWFQaWdTY3JvbGxhYmxlIiwiZ3VpbmVhUGlnQXBwQmFubmVyIiwic2VydmVyU3RhdGUiLCJub3RpZmllciIsIkV2ZW50RW1pdHRlciIsImNsb3NlZCIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJyZW1vdmVXZWJTb2NrZXRIYW5kbGVyIiwicmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnMiLCJnZXRXZWJTb2NrZXRIYW5kbGVycyIsImNsb3NlIiwiYmluZCIsImVtaXQiLCJsb2ciLCJpbmZvIiwib24iLCJjb2RlIiwiZXJyb3IiLCJzb2NrZXQiLCJzZXRUaW1lb3V0IiwiZGVzdHJveSIsIl9vcGVuUmVxQ291bnQiLCJvbmNlIiwicmVtb3ZlTGlzdGVuZXIiLCJyZXEiLCJyZXMiLCJjb25uZWN0aW9uIiwic3RhcnQiLCJwcm9taXNpZnkiLCJsaXN0ZW4iLCJjb250ZXh0Iiwic3RhcnRQcm9taXNlIiwiaGVhZGVyc1RpbWVvdXQiLCJfIiwiaXNTdHJpbmciLCJFcnJvciIsInJlcGxhY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9zZXJ2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBmYXZpY29uIGZyb20gJ3NlcnZlLWZhdmljb24nO1xuaW1wb3J0IGJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0IG1ldGhvZE92ZXJyaWRlIGZyb20gJ21ldGhvZC1vdmVycmlkZSc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7c3RhcnRMb2dGb3JtYXR0ZXIsIGVuZExvZ0Zvcm1hdHRlcn0gZnJvbSAnLi9leHByZXNzLWxvZ2dpbmcnO1xuaW1wb3J0IHtcbiAgYWxsb3dDcm9zc0RvbWFpbixcbiAgZml4UHl0aG9uQ29udGVudFR5cGUsXG4gIGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSxcbiAgY2F0Y2hBbGxIYW5kbGVyLFxuICBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlLFxuICBoYW5kbGVJZGVtcG90ZW5jeSxcbiAgY2F0Y2g0MDRIYW5kbGVyLFxufSBmcm9tICcuL21pZGRsZXdhcmUnO1xuaW1wb3J0IHtndWluZWFQaWcsIGd1aW5lYVBpZ1Njcm9sbGFibGUsIGd1aW5lYVBpZ0FwcEJhbm5lciwgd2VsY29tZSwgU1RBVElDX0RJUn0gZnJvbSAnLi9zdGF0aWMnO1xuaW1wb3J0IHtwcm9kdWNlRXJyb3IsIHByb2R1Y2VDcmFzaH0gZnJvbSAnLi9jcmFzaCc7XG5pbXBvcnQge1xuICBhZGRXZWJTb2NrZXRIYW5kbGVyLFxuICByZW1vdmVXZWJTb2NrZXRIYW5kbGVyLFxuICByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycyxcbiAgZ2V0V2ViU29ja2V0SGFuZGxlcnMsXG59IGZyb20gJy4vd2Vic29ja2V0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7REVGQVVMVF9CQVNFX1BBVEh9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgS0VFUF9BTElWRV9USU1FT1VUX01TID0gMTAgKiA2MCAqIDEwMDA7IC8vIDEwIG1pbnV0ZXNcblxuLyoqXG4gKlxuICogQHBhcmFtIHtTZXJ2ZXJPcHRzfSBvcHRzXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxBcHBpdW1TZXJ2ZXI+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzZXJ2ZXIob3B0cykge1xuICBjb25zdCB7XG4gICAgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLFxuICAgIHBvcnQsXG4gICAgaG9zdG5hbWUsXG4gICAgYWxsb3dDb3JzID0gdHJ1ZSxcbiAgICBiYXNlUGF0aCA9IERFRkFVTFRfQkFTRV9QQVRILFxuICAgIGV4dHJhTWV0aG9kTWFwID0ge30sXG4gICAgc2VydmVyVXBkYXRlcnMgPSBbXSxcbiAgICBrZWVwQWxpdmVUaW1lb3V0ID0gS0VFUF9BTElWRV9USU1FT1VUX01TLFxuICB9ID0gb3B0cztcblxuICAvLyBjcmVhdGUgdGhlIGFjdHVhbCBodHRwIHNlcnZlclxuICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG4gIGNvbnN0IGh0dHBTZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhcHApO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIHdlIHB1dCBhbiBhc3luYyBmdW5jdGlvbiBhcyB0aGUgcHJvbWlzZSBjb25zdHJ1Y3RvciBiZWNhdXNlIHdlIHdhbnQgc29tZSB0aGluZ3MgdG8gaGFwcGVuIGluXG4gICAgLy8gc2VyaWFsIChhcHBsaWNhdGlvbiBvZiBwbHVnaW4gdXBkYXRlcywgZm9yIGV4YW1wbGUpLiBCdXQgd2Ugc3RpbGwgbmVlZCB0byB1c2UgYSBwcm9taXNlIGhlcmVcbiAgICAvLyBiZWNhdXNlIHNvbWUgZWxlbWVudHMgb2Ygc2VydmVyIHN0YXJ0IGZhaWx1cmUgb25seSBoYXBwZW4gaW4gaHR0cFNlcnZlciBsaXN0ZW5lcnMuIFNvIHRoZVxuICAgIC8vIHdheSB3ZSByZXNvbHZlIGl0IGlzIHRvIHVzZSBhbiBhc3luYyBmdW5jdGlvbiBoZXJlIGJ1dCB0byB3cmFwIGFsbCB0aGUgaW5uZXIgbG9naWMgaW5cbiAgICAvLyB0cnkvY2F0Y2ggc28gYW55IGVycm9ycyBjYW4gYmUgcGFzc2VkIHRvIHJlamVjdC5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBwaXVtU2VydmVyID0gY29uZmlndXJlSHR0cCh7XG4gICAgICAgIGh0dHBTZXJ2ZXIsXG4gICAgICAgIHJlamVjdCxcbiAgICAgICAga2VlcEFsaXZlVGltZW91dCxcbiAgICAgIH0pO1xuICAgICAgY29uZmlndXJlU2VydmVyKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBhZGRSb3V0ZXM6IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICAgICAgYWxsb3dDb3JzLFxuICAgICAgICBiYXNlUGF0aCxcbiAgICAgICAgZXh0cmFNZXRob2RNYXAsXG4gICAgICB9KTtcbiAgICAgIC8vIGFsbG93IGV4dGVuc2lvbnMgdG8gdXBkYXRlIHRoZSBhcHAgYW5kIGh0dHAgc2VydmVyIG9iamVjdHNcbiAgICAgIGZvciAoY29uc3QgdXBkYXRlciBvZiBzZXJ2ZXJVcGRhdGVycykge1xuICAgICAgICBhd2FpdCB1cGRhdGVyKGFwcCwgYXBwaXVtU2VydmVyKTtcbiAgICAgIH1cblxuICAgICAgLy8gb25jZSBhbGwgY29uZmlndXJhdGlvbnMgYW5kIHVwZGF0ZXJzIGhhdmUgYmVlbiBhcHBsaWVkLCBtYWtlIHN1cmUgdG8gc2V0IHVwIGEgY2F0Y2hhbGxcbiAgICAgIC8vIGhhbmRsZXIgc28gdGhhdCBhbnl0aGluZyB1bmtub3duIDQwNHMuIEJ1dCBkbyB0aGlzIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSBzaW5jZSB3ZSBkb24ndFxuICAgICAgLy8gd2FudCB0byBibG9jayBleHRlbnNpb25zJyBhYmlsaXR5IHRvIGFkZCByb3V0ZXMgaWYgdGhleSB3YW50LlxuICAgICAgYXBwLmFsbCgnKicsIGNhdGNoNDA0SGFuZGxlcik7XG5cbiAgICAgIGF3YWl0IHN0YXJ0U2VydmVyKHtodHRwU2VydmVyLCBob3N0bmFtZSwgcG9ydCwga2VlcEFsaXZlVGltZW91dH0pO1xuXG4gICAgICByZXNvbHZlKGFwcGl1bVNlcnZlcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldHMgdXAgc29tZSBFeHByZXNzIG1pZGRsZXdhcmUgYW5kIHN0dWZmXG4gKiBAcGFyYW0ge0NvbmZpZ3VyZVNlcnZlck9wdHN9IG9wdHNcbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlU2VydmVyKHtcbiAgYXBwLFxuICBhZGRSb3V0ZXMsXG4gIGFsbG93Q29ycyA9IHRydWUsXG4gIGJhc2VQYXRoID0gREVGQVVMVF9CQVNFX1BBVEgsXG4gIGV4dHJhTWV0aG9kTWFwID0ge30sXG59KSB7XG4gIGJhc2VQYXRoID0gbm9ybWFsaXplQmFzZVBhdGgoYmFzZVBhdGgpO1xuXG4gIGFwcC51c2UoZW5kTG9nRm9ybWF0dGVyKTtcblxuICAvLyBzZXQgdXAgc3RhdGljIGFzc2V0c1xuICBhcHAudXNlKGZhdmljb24ocGF0aC5yZXNvbHZlKFNUQVRJQ19ESVIsICdmYXZpY29uLmljbycpKSk7XG4gIGFwcC51c2UoZXhwcmVzcy5zdGF0aWMoU1RBVElDX0RJUikpO1xuXG4gIC8vIGNyYXNoIHJvdXRlcywgZm9yIHRlc3RpbmdcbiAgYXBwLnVzZShgJHtiYXNlUGF0aH0vcHJvZHVjZV9lcnJvcmAsIHByb2R1Y2VFcnJvcik7XG4gIGFwcC51c2UoYCR7YmFzZVBhdGh9L2NyYXNoYCwgcHJvZHVjZUNyYXNoKTtcblxuICAvLyBhZGQgbWlkZGxld2FyZXNcbiAgaWYgKGFsbG93Q29ycykge1xuICAgIGFwcC51c2UoYWxsb3dDcm9zc0RvbWFpbik7XG4gIH0gZWxzZSB7XG4gICAgYXBwLnVzZShhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlKGJhc2VQYXRoKSk7XG4gIH1cbiAgYXBwLnVzZShoYW5kbGVJZGVtcG90ZW5jeSk7XG4gIGFwcC51c2UoZml4UHl0aG9uQ29udGVudFR5cGUoYmFzZVBhdGgpKTtcbiAgYXBwLnVzZShkZWZhdWx0VG9KU09OQ29udGVudFR5cGUpO1xuICBhcHAudXNlKGJvZHlQYXJzZXIudXJsZW5jb2RlZCh7ZXh0ZW5kZWQ6IHRydWV9KSk7XG4gIGFwcC51c2UobWV0aG9kT3ZlcnJpZGUoKSk7XG4gIGFwcC51c2UoY2F0Y2hBbGxIYW5kbGVyKTtcblxuICAvLyBtYWtlIHN1cmUgYXBwaXVtIG5ldmVyIGZhaWxzIGJlY2F1c2Ugb2YgYSBmaWxlIHNpemUgdXBsb2FkIGxpbWl0XG4gIGFwcC51c2UoYm9keVBhcnNlci5qc29uKHtsaW1pdDogJzFnYid9KSk7XG5cbiAgLy8gc2V0IHVwIHN0YXJ0IGxvZ2dpbmcgKHdoaWNoIGRlcGVuZHMgb24gYm9keVBhcnNlciBkb2luZyBpdHMgdGhpbmcpXG4gIGFwcC51c2Uoc3RhcnRMb2dGb3JtYXR0ZXIpO1xuXG4gIGFkZFJvdXRlcyhhcHAsIHtiYXNlUGF0aCwgZXh0cmFNZXRob2RNYXB9KTtcblxuICAvLyBkeW5hbWljIHJvdXRlcyBmb3IgdGVzdGluZywgZXRjLlxuICBhcHAuYWxsKCcvd2VsY29tZScsIHdlbGNvbWUpO1xuICBhcHAuYWxsKCcvdGVzdC9ndWluZWEtcGlnJywgZ3VpbmVhUGlnKTtcbiAgYXBwLmFsbCgnL3Rlc3QvZ3VpbmVhLXBpZy1zY3JvbGxhYmxlJywgZ3VpbmVhUGlnU2Nyb2xsYWJsZSk7XG4gIGFwcC5hbGwoJy90ZXN0L2d1aW5lYS1waWctYXBwLWJhbm5lcicsIGd1aW5lYVBpZ0FwcEJhbm5lcik7XG59XG5cbi8qKlxuICogTW9ua2V5cGF0Y2hlcyB0aGUgYGh0dHAuU2VydmVyYCBpbnN0YW5jZSBhbmQgcmV0dXJucyBhIHtAbGlua2NvZGUgQXBwaXVtU2VydmVyfS5cbiAqIFRoaXMgZnVuY3Rpb24gX211dGF0ZXNfIHRoZSBgaHR0cFNlcnZlcmAgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtDb25maWd1cmVIdHRwT3B0c30gb3B0c1xuICogQHJldHVybnMge0FwcGl1bVNlcnZlcn1cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlSHR0cCh7aHR0cFNlcnZlciwgcmVqZWN0LCBrZWVwQWxpdmVUaW1lb3V0fSkge1xuICBjb25zdCBzZXJ2ZXJTdGF0ZSA9IHtcbiAgICBub3RpZmllcjogbmV3IEV2ZW50RW1pdHRlcigpLFxuICAgIGNsb3NlZDogZmFsc2UsXG4gIH07XG4gIC8vIFRTIGRvZXMgbm90IGxvdmUgbW9ua2V5cGF0Y2hpbmcuXG4gIGNvbnN0IGFwcGl1bVNlcnZlciA9IC8qKiBAdHlwZSB7QXBwaXVtU2VydmVyfSAqLyAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyAoaHR0cFNlcnZlcikpO1xuICBhcHBpdW1TZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlciA9IGFkZFdlYlNvY2tldEhhbmRsZXI7XG4gIGFwcGl1bVNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyID0gcmVtb3ZlV2ViU29ja2V0SGFuZGxlcjtcbiAgYXBwaXVtU2VydmVyLnJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzID0gcmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnM7XG4gIGFwcGl1bVNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyA9IGdldFdlYlNvY2tldEhhbmRsZXJzO1xuXG4gIC8vIGh0dHAuU2VydmVyLmNsb3NlKCkgb25seSBzdG9wcyBuZXcgY29ubmVjdGlvbnMsIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgdW50aWxcbiAgLy8gYWxsIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQgYW5kIHRoZSBgY2xvc2VgIGV2ZW50IGlzIGVtaXR0ZWRcbiAgY29uc3QgY2xvc2UgPSBhcHBpdW1TZXJ2ZXIuY2xvc2UuYmluZChhcHBpdW1TZXJ2ZXIpO1xuICBhcHBpdW1TZXJ2ZXIuY2xvc2UgPSBhc3luYyAoKSA9PlxuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS12MC54LWFyY2hpdmUvaXNzdWVzLzkwNjYjaXNzdWVjb21tZW50LTEyNDIxMDU3NlxuICAgICAgc2VydmVyU3RhdGUuY2xvc2VkID0gdHJ1ZTtcbiAgICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLmVtaXQoJ3NodXRkb3duJyk7XG4gICAgICBsb2cuaW5mbygnV2FpdGluZyB1bnRpbCB0aGUgc2VydmVyIGlzIGNsb3NlZCcpO1xuICAgICAgaHR0cFNlcnZlci5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGxvZy5pbmZvKCdSZWNlaXZlZCBzZXJ2ZXIgY2xvc2UgZXZlbnQnKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICBjbG9zZSgoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgICB9KTtcbiAgICB9KTtcblxuICBhcHBpdW1TZXJ2ZXIub24oXG4gICAgJ2Vycm9yJyxcbiAgICAvKiogQHBhcmFtIHtOb2RlSlMuRXJybm9FeGNlcHRpb259IGVyciAqLyAoZXJyKSA9PiB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFQUREUk5PVEFWQUlMJykge1xuICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgJ0NvdWxkIG5vdCBzdGFydCBSRVNUIGh0dHAgaW50ZXJmYWNlIGxpc3RlbmVyLiAnICsgJ1JlcXVlc3RlZCBhZGRyZXNzIGlzIG5vdCBhdmFpbGFibGUuJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICdDb3VsZCBub3Qgc3RhcnQgUkVTVCBodHRwIGludGVyZmFjZSBsaXN0ZW5lci4gVGhlIHJlcXVlc3RlZCAnICtcbiAgICAgICAgICAgICdwb3J0IG1heSBhbHJlYWR5IGJlIGluIHVzZS4gUGxlYXNlIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyAnICtcbiAgICAgICAgICAgICdvdGhlciBpbnN0YW5jZSBvZiB0aGlzIHNlcnZlciBydW5uaW5nIGFscmVhZHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGVycik7XG4gICAgfVxuICApO1xuXG4gIGFwcGl1bVNlcnZlci5vbihcbiAgICAnY29ubmVjdGlvbicsXG4gICAgLyoqIEBwYXJhbSB7QXBwaXVtU2VydmVyU29ja2V0fSBzb2NrZXQgKi8gKHNvY2tldCkgPT4ge1xuICAgICAgc29ja2V0LnNldFRpbWVvdXQoa2VlcEFsaXZlVGltZW91dCk7XG4gICAgICBzb2NrZXQub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgICAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICAgIHNvY2tldC5fb3BlblJlcUNvdW50ID0gMDtcbiAgICAgIHNvY2tldC5vbmNlKCdjbG9zZScsICgpID0+IHNlcnZlclN0YXRlLm5vdGlmaWVyLnJlbW92ZUxpc3RlbmVyKCdzaHV0ZG93bicsIGRlc3Ryb3kpKTtcbiAgICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLm9uY2UoJ3NodXRkb3duJywgZGVzdHJveSk7XG4gICAgfVxuICApO1xuXG4gIGFwcGl1bVNlcnZlci5vbigncmVxdWVzdCcsIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICAgIGNvbnN0IHNvY2tldCA9IC8qKiBAdHlwZSB7QXBwaXVtU2VydmVyU29ja2V0fSAqLyAocmVxLmNvbm5lY3Rpb24gfHwgcmVxLnNvY2tldCk7XG4gICAgc29ja2V0Ll9vcGVuUmVxQ291bnQrKztcbiAgICByZXMub24oJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNvY2tldC5fb3BlblJlcUNvdW50LS07XG4gICAgICBpZiAoc2VydmVyU3RhdGUuY2xvc2VkICYmIHNvY2tldC5fb3BlblJlcUNvdW50ID09PSAwKSB7XG4gICAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBhcHBpdW1TZXJ2ZXI7XG59XG5cbi8qKlxuICogU3RhcnRzIGFuIHtAbGlua2NvZGUgQXBwaXVtU2VydmVyfVxuICogQHBhcmFtIHtTdGFydFNlcnZlck9wdHN9IG9wdHNcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlcih7aHR0cFNlcnZlciwgcG9ydCwgaG9zdG5hbWUsIGtlZXBBbGl2ZVRpbWVvdXR9KSB7XG4gIC8vIElmIHRoZSBob3N0bmFtZSBpcyBvbWl0dGVkLCB0aGUgc2VydmVyIHdpbGwgYWNjZXB0XG4gIC8vIGNvbm5lY3Rpb25zIG9uIGFueSBJUCBhZGRyZXNzXG4gIC8qKiBAdHlwZSB7KHBvcnQ6IG51bWJlciwgaG9zdG5hbWU/OiBzdHJpbmcpID0+IEI8aHR0cC5TZXJ2ZXI+fSAqL1xuICBjb25zdCBzdGFydCA9IEIucHJvbWlzaWZ5KGh0dHBTZXJ2ZXIubGlzdGVuLCB7Y29udGV4dDogaHR0cFNlcnZlcn0pO1xuICBjb25zdCBzdGFydFByb21pc2UgPSBzdGFydChwb3J0LCBob3N0bmFtZSk7XG4gIGh0dHBTZXJ2ZXIua2VlcEFsaXZlVGltZW91dCA9IGtlZXBBbGl2ZVRpbWVvdXQ7XG4gIC8vIGhlYWRlcnMgdGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBrZWVwQWxpdmVUaW1lb3V0XG4gIGh0dHBTZXJ2ZXIuaGVhZGVyc1RpbWVvdXQgPSBrZWVwQWxpdmVUaW1lb3V0ICsgNSAqIDEwMDA7XG4gIGF3YWl0IHN0YXJ0UHJvbWlzZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYmFzZSBwYXRoIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVCYXNlUGF0aChiYXNlUGF0aCkge1xuICBpZiAoIV8uaXNTdHJpbmcoYmFzZVBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggcHJlZml4ICR7YmFzZVBhdGh9YCk7XG4gIH1cblxuICAvLyBlbnN1cmUgdGhlIHBhdGggcHJlZml4IGRvZXMgbm90IGVuZCBpbiAnLycsIHNpbmNlIG91ciBtZXRob2QgbWFwXG4gIC8vIHN0YXJ0cyBhbGwgcGF0aHMgd2l0aCAnLydcbiAgYmFzZVBhdGggPSBiYXNlUGF0aC5yZXBsYWNlKC9cXC8kLywgJycpO1xuXG4gIC8vIGxpa2V3aXNlLCBlbnN1cmUgdGhlIHBhdGggcHJlZml4IGRvZXMgYWx3YXlzIFNUQVJUIHdpdGggLywgdW5sZXNzIHRoZSBwYXRoXG4gIC8vIGlzIGVtcHR5IG1lYW5pbmcgbm8gYmFzZSBwYXRoIGF0IGFsbFxuICBpZiAoYmFzZVBhdGggIT09ICcnICYmIGJhc2VQYXRoWzBdICE9PSAnLycpIHtcbiAgICBiYXNlUGF0aCA9IGAvJHtiYXNlUGF0aH1gO1xuICB9XG5cbiAgcmV0dXJuIGJhc2VQYXRoO1xufVxuXG5leHBvcnQge3NlcnZlciwgY29uZmlndXJlU2VydmVyLCBub3JtYWxpemVCYXNlUGF0aH07XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBzdGFydFNlcnZlcn0uXG4gKiBAdHlwZWRlZiBTdGFydFNlcnZlck9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdodHRwJykuU2VydmVyfSBodHRwU2VydmVyIC0gSFRUUCBzZXJ2ZXIgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwb3J0IC0gUG9ydCB0byBydW4gb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZWVwQWxpdmVUaW1lb3V0IC0gS2VlcC1hbGl2ZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtob3N0bmFtZV0gLSBPcHRpb25hbCBob3N0bmFtZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bVNlcnZlcn0gQXBwaXVtU2VydmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtU2VydmVyU29ja2V0fSBBcHBpdW1TZXJ2ZXJTb2NrZXRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5NZXRob2RNYXB9IE1ldGhvZE1hcFxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBjb25maWd1cmVIdHRwfVxuICogQHR5cGVkZWYgQ29uZmlndXJlSHR0cE9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdodHRwJykuU2VydmVyfSBodHRwU2VydmVyIC0gSFRUUCBzZXJ2ZXIgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7KGVycm9yPzogYW55KSA9PiB2b2lkfSByZWplY3QgLSBSZWplY3Rpb24gZnVuY3Rpb24gZnJvbSBgUHJvbWlzZWAgY29uc3RydWN0b3JcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZWVwQWxpdmVUaW1lb3V0IC0gS2VlcC1hbGl2ZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBzZXJ2ZXJ9XG4gKiBAdHlwZWRlZiBTZXJ2ZXJPcHRzXG4gKiBAcHJvcGVydHkge1JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbn0gcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gcG9ydFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtob3N0bmFtZV1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2FsbG93Q29yc11cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYmFzZVBhdGhdXG4gKiBAcHJvcGVydHkge01ldGhvZE1hcH0gW2V4dHJhTWV0aG9kTWFwXVxuICogQHByb3BlcnR5IHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5VcGRhdGVTZXJ2ZXJDYWxsYmFja1tdfSBbc2VydmVyVXBkYXRlcnNdXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2tlZXBBbGl2ZVRpbWVvdXRdXG4gKi9cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHdoaWNoIGNvbmZpZ3VyZXMgcm91dGVzXG4gKiBAY2FsbGJhY2sgUm91dGVDb25maWd1cmluZ0Z1bmN0aW9uXG4gKiBAcGFyYW0ge2ltcG9ydCgnZXhwcmVzcycpLkV4cHJlc3N9IGFwcFxuICogQHBhcmFtIHtSb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb25PcHRzfSBbb3B0c11cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSB7QGxpbmtjb2RlIFJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbn1cbiAqIEB0eXBlZGVmIFJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbk9wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYmFzZVBhdGhdXG4gKiBAcHJvcGVydHkge01ldGhvZE1hcH0gW2V4dHJhTWV0aG9kTWFwXVxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBjb25maWd1cmVTZXJ2ZXJ9XG4gKiBAdHlwZWRlZiBDb25maWd1cmVTZXJ2ZXJPcHRzXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnZXhwcmVzcycpLkV4cHJlc3N9IGFwcFxuICogQHByb3BlcnR5IHtSb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb259IGFkZFJvdXRlc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbYWxsb3dDb3JzXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtiYXNlUGF0aF1cbiAqIEBwcm9wZXJ0eSB7TWV0aG9kTWFwfSBbZXh0cmFNZXRob2RNYXBdXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVNBOztBQUNBOztBQUNBOztBQU1BOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLHFCQUFxQixHQUFHLEtBQUssRUFBTCxHQUFVLElBQXhDOztBQU9BLGVBQWVDLE1BQWYsQ0FBc0JDLElBQXRCLEVBQTRCO0VBQzFCLE1BQU07SUFDSkMsd0JBREk7SUFFSkMsSUFGSTtJQUdKQyxRQUhJO0lBSUpDLFNBQVMsR0FBRyxJQUpSO0lBS0pDLFFBQVEsR0FBR0MsNEJBTFA7SUFNSkMsY0FBYyxHQUFHLEVBTmI7SUFPSkMsY0FBYyxHQUFHLEVBUGI7SUFRSkMsZ0JBQWdCLEdBQUdYO0VBUmYsSUFTRkUsSUFUSjtFQVlBLE1BQU1VLEdBQUcsR0FBRyxJQUFBQyxnQkFBQSxHQUFaOztFQUNBLE1BQU1DLFVBQVUsR0FBR0MsYUFBQSxDQUFLQyxZQUFMLENBQWtCSixHQUFsQixDQUFuQjs7RUFDQSxPQUFPLE1BQU0sSUFBSUssaUJBQUosQ0FBTSxPQUFPQyxPQUFQLEVBQWdCQyxNQUFoQixLQUEyQjtJQU01QyxJQUFJO01BQ0YsTUFBTUMsWUFBWSxHQUFHQyxhQUFhLENBQUM7UUFDakNQLFVBRGlDO1FBRWpDSyxNQUZpQztRQUdqQ1I7TUFIaUMsQ0FBRCxDQUFsQztNQUtBVyxlQUFlLENBQUM7UUFDZFYsR0FEYztRQUVkVyxTQUFTLEVBQUVwQix3QkFGRztRQUdkRyxTQUhjO1FBSWRDLFFBSmM7UUFLZEU7TUFMYyxDQUFELENBQWY7O01BUUEsS0FBSyxNQUFNZSxPQUFYLElBQXNCZCxjQUF0QixFQUFzQztRQUNw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
|
|
@@ -1,67 +1,49 @@
|
|
|
1
|
-
export type
|
|
2
|
-
webSocketsMapping: Record<string, import('ws').Server>;
|
|
3
|
-
};
|
|
1
|
+
export type AppiumServer = import('@appium/types').AppiumServer;
|
|
4
2
|
/**
|
|
5
3
|
* Adds websocket handler to express server instance.
|
|
6
4
|
* It is expected this function is called in Express
|
|
7
5
|
* server instance context.
|
|
8
6
|
*
|
|
9
|
-
* @this {
|
|
7
|
+
* @this {AppiumServer} - An instance of express HTTP server.
|
|
10
8
|
* @param {string} handlerPathname - Web socket endpoint path starting with
|
|
11
9
|
* a single slash character. It is recommended to always add
|
|
12
10
|
* DEFAULT_WS_PATHNAME_PREFIX to all web socket pathnames.
|
|
13
|
-
* @param {
|
|
11
|
+
* @param {import('ws').Server} handlerServer - WebSocket server instance. See
|
|
14
12
|
* https://github.com/websockets/ws/pull/885 for more details
|
|
15
13
|
* on how to configure the handler properly.
|
|
14
|
+
* @returns {Promise<void>}
|
|
16
15
|
*/
|
|
17
|
-
export function addWebSocketHandler(this:
|
|
18
|
-
export class addWebSocketHandler {
|
|
19
|
-
/**
|
|
20
|
-
* Adds websocket handler to express server instance.
|
|
21
|
-
* It is expected this function is called in Express
|
|
22
|
-
* server instance context.
|
|
23
|
-
*
|
|
24
|
-
* @this {WebSocketServer} - An instance of express HTTP server.
|
|
25
|
-
* @param {string} handlerPathname - Web socket endpoint path starting with
|
|
26
|
-
* a single slash character. It is recommended to always add
|
|
27
|
-
* DEFAULT_WS_PATHNAME_PREFIX to all web socket pathnames.
|
|
28
|
-
* @param {Object} handlerServer - WebSocket server instance. See
|
|
29
|
-
* https://github.com/websockets/ws/pull/885 for more details
|
|
30
|
-
* on how to configure the handler properly.
|
|
31
|
-
*/
|
|
32
|
-
constructor(this: WebSocketServer, handlerPathname: string, handlerServer: any);
|
|
33
|
-
webSocketsMapping: {};
|
|
34
|
-
}
|
|
16
|
+
export function addWebSocketHandler(this: import("@appium/types").AppiumServer, handlerPathname: string, handlerServer: import('ws').Server): Promise<void>;
|
|
35
17
|
/**
|
|
36
18
|
* Removes existing websocket handler from express server instance.
|
|
37
19
|
* The call is ignored if the given `handlerPathname` handler
|
|
38
20
|
* is not present in the handlers list.
|
|
39
21
|
* It is expected this function is called in Express
|
|
40
22
|
* server instance context.
|
|
41
|
-
*
|
|
23
|
+
* @this {AppiumServer}
|
|
42
24
|
* @param {string} handlerPathname - Websocket endpoint path.
|
|
43
25
|
* @returns {Promise<boolean>} true if the handlerPathname was found and deleted
|
|
44
26
|
*/
|
|
45
|
-
export function removeWebSocketHandler(handlerPathname: string): Promise<boolean>;
|
|
27
|
+
export function removeWebSocketHandler(this: import("@appium/types").AppiumServer, handlerPathname: string): Promise<boolean>;
|
|
46
28
|
/**
|
|
47
29
|
* Removes all existing websocket handler from express server instance.
|
|
48
30
|
* It is expected this function is called in Express
|
|
49
31
|
* server instance context.
|
|
50
|
-
*
|
|
32
|
+
* @this {AppiumServer}
|
|
51
33
|
* @returns {Promise<boolean>} true if at least one handler has been deleted
|
|
52
34
|
*/
|
|
53
|
-
export function removeAllWebSocketHandlers(): Promise<boolean>;
|
|
35
|
+
export function removeAllWebSocketHandlers(this: import("@appium/types").AppiumServer): Promise<boolean>;
|
|
54
36
|
/**
|
|
55
37
|
* Returns web socket handlers registered for the given server
|
|
56
38
|
* instance.
|
|
57
39
|
* It is expected this function is called in Express
|
|
58
40
|
* server instance context.
|
|
59
41
|
*
|
|
42
|
+
* @this {AppiumServer}
|
|
60
43
|
* @param {string?} [keysFilter] - Only include pathnames with given
|
|
61
44
|
* `keysFilter` value if set. All pairs will be included by default.
|
|
62
|
-
* @returns {Promise<
|
|
63
|
-
* matching the search criteria or an empty object otherwise.
|
|
45
|
+
* @returns {Promise<Record<string, import('ws').Server>>} pathnames to websocket server instances mapping matching the search criteria or an empty object otherwise.
|
|
64
46
|
*/
|
|
65
|
-
export function getWebSocketHandlers(keysFilter?: string | null | undefined): Promise<
|
|
47
|
+
export function getWebSocketHandlers(this: import("@appium/types").AppiumServer, keysFilter?: string | null | undefined): Promise<Record<string, import('ws').Server>>;
|
|
66
48
|
export const DEFAULT_WS_PATHNAME_PREFIX: "/ws";
|
|
67
49
|
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../lib/express/websocket.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../lib/express/websocket.js"],"names":[],"mappings":"2BAoIa,OAAO,eAAe,EAAE,YAAY;AA7HjD;;;;;;;;;;;;;GAaG;AACH,iGARW,MAAM,iBAGN,OAAO,IAAI,EAAE,MAAM,GAGjB,QAAQ,IAAI,CAAC,CA2BzB;AA2BD;;;;;;;;;GASG;AAEH,oGAJW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAqB5B;AAED;;;;;;GAMG;AACH,wFAFa,QAAQ,OAAO,CAAC,CAY5B;AAzED;;;;;;;;;;GAUG;AAEH,0HAHa,QAAQ,OAAO,MAAM,EAAE,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC,CAcxD;AAlED,+CAAyC"}
|
|
@@ -23,9 +23,11 @@ const DEFAULT_WS_PATHNAME_PREFIX = '/ws';
|
|
|
23
23
|
exports.DEFAULT_WS_PATHNAME_PREFIX = DEFAULT_WS_PATHNAME_PREFIX;
|
|
24
24
|
|
|
25
25
|
async function addWebSocketHandler(handlerPathname, handlerServer) {
|
|
26
|
+
const server = this;
|
|
27
|
+
|
|
26
28
|
if (_lodash.default.isUndefined(this.webSocketsMapping)) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
server.webSocketsMapping = {};
|
|
30
|
+
server.on('upgrade', (request, socket, head) => {
|
|
29
31
|
let currentPathname;
|
|
30
32
|
|
|
31
33
|
try {
|
|
@@ -34,7 +36,7 @@ async function addWebSocketHandler(handlerPathname, handlerServer) {
|
|
|
34
36
|
currentPathname = request.url;
|
|
35
37
|
}
|
|
36
38
|
|
|
37
|
-
for (const [pathname, wsServer] of _lodash.default.toPairs(
|
|
39
|
+
for (const [pathname, wsServer] of _lodash.default.toPairs(server.webSocketsMapping)) {
|
|
38
40
|
if (currentPathname === pathname) {
|
|
39
41
|
wsServer.handleUpgrade(request, socket, head, ws => {
|
|
40
42
|
wsServer.emit('connection', ws, request);
|
|
@@ -95,4 +97,4 @@ async function removeAllWebSocketHandlers() {
|
|
|
95
97
|
|
|
96
98
|
return _lodash.default.some(await _bluebird.default.all(_lodash.default.keys(this.webSocketsMapping).map(pathname => this.removeWebSocketHandler(pathname))));
|
|
97
99
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJoYW5kbGVyUGF0aG5hbWUiLCJoYW5kbGVyU2VydmVyIiwic2VydmVyIiwiXyIsImlzVW5kZWZpbmVkIiwid2ViU29ja2V0c01hcHBpbmciLCJvbiIsInJlcXVlc3QiLCJzb2NrZXQiLCJoZWFkIiwiY3VycmVudFBhdGhuYW1lIiwiVVJMIiwidXJsIiwicGF0aG5hbWUiLCJ3c1NlcnZlciIsInRvUGFpcnMiLCJoYW5kbGVVcGdyYWRlIiwid3MiLCJlbWl0IiwiZGVzdHJveSIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwia2V5c0ZpbHRlciIsImlzRW1wdHkiLCJyZWR1Y2UiLCJhY2MiLCJpc1N0cmluZyIsImluY2x1ZGVzIiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImNsb3NlIiwiY2xpZW50IiwiY2xpZW50cyIsInRlcm1pbmF0ZSIsImlnbiIsInJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzIiwic29tZSIsIkIiLCJhbGwiLCJrZXlzIiwibWFwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2V4cHJlc3Mvd2Vic29ja2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1VSTH0gZnJvbSAndXJsJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY29uc3QgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVggPSAnL3dzJztcblxuLyoqXG4gKiBBZGRzIHdlYnNvY2tldCBoYW5kbGVyIHRvIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKlxuICogQHRoaXMge0FwcGl1bVNlcnZlcn0gLSBBbiBpbnN0YW5jZSBvZiBleHByZXNzIEhUVFAgc2VydmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJQYXRobmFtZSAtIFdlYiBzb2NrZXQgZW5kcG9pbnQgcGF0aCBzdGFydGluZyB3aXRoXG4gKiBhIHNpbmdsZSBzbGFzaCBjaGFyYWN0ZXIuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cyBhZGRcbiAqIERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIHRvIGFsbCB3ZWIgc29ja2V0IHBhdGhuYW1lcy5cbiAqIEBwYXJhbSB7aW1wb3J0KCd3cycpLlNlcnZlcn0gaGFuZGxlclNlcnZlciAtIFdlYlNvY2tldCBzZXJ2ZXIgaW5zdGFuY2UuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC84ODUgZm9yIG1vcmUgZGV0YWlsc1xuICogb24gaG93IHRvIGNvbmZpZ3VyZSB0aGUgaGFuZGxlciBwcm9wZXJseS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBhZGRXZWJTb2NrZXRIYW5kbGVyKGhhbmRsZXJQYXRobmFtZSwgaGFuZGxlclNlcnZlcikge1xuICBjb25zdCBzZXJ2ZXIgPSAvKiogQHR5cGUge0FwcGl1bVNlcnZlcn0gKi8gKHRoaXMpO1xuICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHNlcnZlci53ZWJTb2NrZXRzTWFwcGluZyA9IHt9O1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL3B1bGwvODg1XG4gICAgc2VydmVyLm9uKCd1cGdyYWRlJywgKHJlcXVlc3QsIHNvY2tldCwgaGVhZCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRQYXRobmFtZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgY3VycmVudFBhdGhuYW1lID0gbmV3IFVSTChyZXF1ZXN0LnVybCkucGF0aG5hbWU7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY3VycmVudFBhdGhuYW1lID0gcmVxdWVzdC51cmw7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtwYXRobmFtZSwgd3NTZXJ2ZXJdIG9mIF8udG9QYWlycyhzZXJ2ZXIud2ViU29ja2V0c01hcHBpbmcpKSB7XG4gICAgICAgIGlmIChjdXJyZW50UGF0aG5hbWUgPT09IHBhdGhuYW1lKSB7XG4gICAgICAgICAgd3NTZXJ2ZXIuaGFuZGxlVXBncmFkZShyZXF1ZXN0LCBzb2NrZXQsIGhlYWQsICh3cykgPT4ge1xuICAgICAgICAgICAgd3NTZXJ2ZXIuZW1pdCgnY29ubmVjdGlvbicsIHdzLCByZXF1ZXN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cbiAgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdID0gaGFuZGxlclNlcnZlcjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdlYiBzb2NrZXQgaGFuZGxlcnMgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIHNlcnZlclxuICogaW5zdGFuY2UuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqXG4gKiBAdGhpcyB7QXBwaXVtU2VydmVyfVxuICogQHBhcmFtIHtzdHJpbmc/fSBba2V5c0ZpbHRlcl0gLSBPbmx5IGluY2x1ZGUgcGF0aG5hbWVzIHdpdGggZ2l2ZW5cbiAqIGBrZXlzRmlsdGVyYCB2YWx1ZSBpZiBzZXQuIEFsbCBwYWlycyB3aWxsIGJlIGluY2x1ZGVkIGJ5IGRlZmF1bHQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoJ3dzJykuU2VydmVyPj59IHBhdGhuYW1lcyB0byB3ZWJzb2NrZXQgc2VydmVyIGluc3RhbmNlcyBtYXBwaW5nIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEgb3IgYW4gZW1wdHkgb2JqZWN0IG90aGVyd2lzZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmFzeW5jIGZ1bmN0aW9uIGdldFdlYlNvY2tldEhhbmRsZXJzKGtleXNGaWx0ZXIgPSBudWxsKSB7XG4gIGlmIChfLmlzRW1wdHkodGhpcy53ZWJTb2NrZXRzTWFwcGluZykpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gXy50b1BhaXJzKHRoaXMud2ViU29ja2V0c01hcHBpbmcpLnJlZHVjZSgoYWNjLCBbcGF0aG5hbWUsIHdzU2VydmVyXSkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhrZXlzRmlsdGVyKSB8fCBwYXRobmFtZS5pbmNsdWRlcyhrZXlzRmlsdGVyKSkge1xuICAgICAgYWNjW3BhdGhuYW1lXSA9IHdzU2VydmVyO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogVGhlIGNhbGwgaXMgaWdub3JlZCBpZiB0aGUgZ2l2ZW4gYGhhbmRsZXJQYXRobmFtZWAgaGFuZGxlclxuICogaXMgbm90IHByZXNlbnQgaW4gdGhlIGhhbmRsZXJzIGxpc3QuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqIEB0aGlzIHtBcHBpdW1TZXJ2ZXJ9XG4gKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlclBhdGhuYW1lIC0gV2Vic29ja2V0IGVuZHBvaW50IHBhdGguXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gdHJ1ZSBpZiB0aGUgaGFuZGxlclBhdGhuYW1lIHdhcyBmb3VuZCBhbmQgZGVsZXRlZFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlV2ViU29ja2V0SGFuZGxlcihoYW5kbGVyUGF0aG5hbWUpIHtcbiAgY29uc3Qgd3NTZXJ2ZXIgPSB0aGlzLndlYlNvY2tldHNNYXBwaW5nPy5baGFuZGxlclBhdGhuYW1lXTtcbiAgaWYgKCF3c1NlcnZlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgd3NTZXJ2ZXIuY2xvc2UoKTtcbiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiB3c1NlcnZlci5jbGllbnRzIHx8IFtdKSB7XG4gICAgICBjbGllbnQudGVybWluYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICAvLyBpZ25vcmVcbiAgfSBmaW5hbGx5IHtcbiAgICBkZWxldGUgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKiBAdGhpcyB7QXBwaXVtU2VydmVyfVxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IHRydWUgaWYgYXQgbGVhc3Qgb25lIGhhbmRsZXIgaGFzIGJlZW4gZGVsZXRlZFxuICovXG5hc3luYyBmdW5jdGlvbiByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycygpIHtcbiAgaWYgKF8uaXNFbXB0eSh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBfLnNvbWUoXG4gICAgYXdhaXQgQi5hbGwoXG4gICAgICBfLmtleXModGhpcy53ZWJTb2NrZXRzTWFwcGluZykubWFwKChwYXRobmFtZSkgPT4gdGhpcy5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKSlcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCB7XG4gIGFkZFdlYlNvY2tldEhhbmRsZXIsXG4gIHJlbW92ZVdlYlNvY2tldEhhbmRsZXIsXG4gIHJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzLFxuICBnZXRXZWJTb2NrZXRIYW5kbGVycyxcbiAgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1TZXJ2ZXJ9IEFwcGl1bVNlcnZlclxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLDBCQUEwQixHQUFHLEtBQW5DOzs7QUFnQkEsZUFBZUMsbUJBQWYsQ0FBbUNDLGVBQW5DLEVBQW9EQyxhQUFwRCxFQUFtRTtFQUNqRSxNQUFNQyxNQUFNLEdBQWdDLElBQTVDOztFQUNBLElBQUlDLGVBQUEsQ0FBRUMsV0FBRixDQUFjLEtBQUtDLGlCQUFuQixDQUFKLEVBQTJDO0lBQ3pDSCxNQUFNLENBQUNHLGlCQUFQLEdBQTJCLEVBQTNCO0lBRUFILE1BQU0sQ0FBQ0ksRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQWtCQyxJQUFsQixLQUEyQjtNQUM5QyxJQUFJQyxlQUFKOztNQUNBLElBQUk7UUFFRkEsZUFBZSxHQUFHLElBQUlDLFFBQUosQ0FBUUosT0FBTyxDQUFDSyxHQUFoQixFQUFxQkMsUUFBdkM7TUFDRCxDQUhELENBR0UsTUFBTTtRQUNOSCxlQUFlLEdBQUdILE9BQU8sQ0FBQ0ssR0FBMUI7TUFDRDs7TUFDRCxLQUFLLE1BQU0sQ0FBQ0MsUUFBRCxFQUFXQyxRQUFYLENBQVgsSUFBbUNYLGVBQUEsQ0FBRVksT0FBRixDQUFVYixNQUFNLENBQUNHLGlCQUFqQixDQUFuQyxFQUF3RTtRQUN0RSxJQUFJSyxlQUFlLEtBQUtHLFFBQXhCLEVBQWtDO1VBQ2hDQyxRQUFRLENBQUNFLGFBQVQsQ0FBdUJULE9BQXZCLEVBQWdDQyxNQUFoQyxFQUF3Q0MsSUFBeEMsRUFBK0NRLEVBQUQsSUFBUTtZQUNwREgsUUFBUSxDQUFDSSxJQUFULENBQWMsWUFBZCxFQUE0QkQsRUFBNUIsRUFBZ0NWLE9BQWhDO1VBQ0QsQ0FGRDtVQUdBO1FBQ0Q7TUFDRjs7TUFDREMsTUFBTSxDQUFDVyxPQUFQO0lBQ0QsQ0FqQkQ7RUFrQkQ7O0VBQ0QsS0FBS2QsaUJBQUwsQ0FBdUJMLGVBQXZCLElBQTBDQyxhQUExQztBQUNEOztBQWNELGVBQWVtQixvQkFBZixDQUFvQ0MsVUFBVSxHQUFHLElBQWpELEVBQXVEO0VBQ3JELElBQUlsQixlQUFBLENBQUVtQixPQUFGLENBQVUsS0FBS2pCLGlCQUFmLENBQUosRUFBdUM7SUFDckMsT0FBTyxFQUFQO0VBQ0Q7O0VBRUQsT0FBT0YsZUFBQSxDQUFFWSxPQUFGLENBQVUsS0FBS1YsaUJBQWYsRUFBa0NrQixNQUFsQyxDQUF5QyxDQUFDQyxHQUFELEVBQU0sQ0FBQ1gsUUFBRCxFQUFXQyxRQUFYLENBQU4sS0FBK0I7SUFDN0UsSUFBSSxDQUFDWCxlQUFBLENBQUVzQixRQUFGLENBQVdKLFVBQVgsQ0FBRCxJQUEyQlIsUUFBUSxDQUFDYSxRQUFULENBQWtCTCxVQUFsQixDQUEvQixFQUE4RDtNQUM1REcsR0FBRyxDQUFDWCxRQUFELENBQUgsR0FBZ0JDLFFBQWhCO0lBQ0Q7O0lBQ0QsT0FBT1UsR0FBUDtFQUNELENBTE0sRUFLSixFQUxJLENBQVA7QUFNRDs7QUFhRCxlQUFlRyxzQkFBZixDQUFzQzNCLGVBQXRDLEVBQXVEO0VBQUE7O0VBQ3JELE1BQU1jLFFBQVEsNEJBQUcsS0FBS1QsaUJBQVIsMERBQUcsc0JBQXlCTCxlQUF6QixDQUFqQjs7RUFDQSxJQUFJLENBQUNjLFFBQUwsRUFBZTtJQUNiLE9BQU8sS0FBUDtFQUNEOztFQUVELElBQUk7SUFDRkEsUUFBUSxDQUFDYyxLQUFUOztJQUNBLEtBQUssTUFBTUMsTUFBWCxJQUFxQmYsUUFBUSxDQUFDZ0IsT0FBVCxJQUFvQixFQUF6QyxFQUE2QztNQUMzQ0QsTUFBTSxDQUFDRSxTQUFQO0lBQ0Q7O0lBQ0QsT0FBTyxJQUFQO0VBQ0QsQ0FORCxDQU1FLE9BQU9DLEdBQVAsRUFBWSxDQUViLENBUkQsU0FRVTtJQUNSLE9BQU8sS0FBSzNCLGlCQUFMLENBQXVCTCxlQUF2QixDQUFQO0VBQ0Q7O0VBQ0QsT0FBTyxLQUFQO0FBQ0Q7O0FBU0QsZUFBZWlDLDBCQUFmLEdBQTRDO0VBQzFDLElBQUk5QixlQUFBLENBQUVtQixPQUFGLENBQVUsS0FBS2pCLGlCQUFmLENBQUosRUFBdUM7SUFDckMsT0FBTyxLQUFQO0VBQ0Q7O0VBRUQsT0FBT0YsZUFBQSxDQUFFK0IsSUFBRixDQUNMLE1BQU1DLGlCQUFBLENBQUVDLEdBQUYsQ0FDSmpDLGVBQUEsQ0FBRWtDLElBQUYsQ0FBTyxLQUFLaEMsaUJBQVosRUFBK0JpQyxHQUEvQixDQUFvQ3pCLFFBQUQsSUFBYyxLQUFLYyxzQkFBTCxDQUE0QmQsUUFBNUIsQ0FBakQsQ0FESSxDQURELENBQVA7QUFLRCJ9
|
package/build/lib/index.d.ts
CHANGED
|
@@ -1,184 +1,15 @@
|
|
|
1
1
|
export { DriverCore } from "./basedriver/core";
|
|
2
|
+
export { DeviceSettings } from "./basedriver/device-settings";
|
|
3
|
+
export { BaseDriver };
|
|
2
4
|
export default BaseDriver;
|
|
3
|
-
export
|
|
5
|
+
export * from "./protocol";
|
|
6
|
+
export { errorFromMJSONWPStatusCode as errorFromCode } from "./protocol";
|
|
7
|
+
export { STATIC_DIR } from "./express/static";
|
|
8
|
+
export { JWProxy } from "./jsonwp-proxy/proxy";
|
|
9
|
+
export { DEFAULT_WS_PATHNAME_PREFIX } from "./express/websocket";
|
|
4
10
|
import { BaseDriver } from "./basedriver/driver";
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
NotImplementedError: typeof import("./protocol/errors").NotImplementedError;
|
|
10
|
-
BadParametersError: typeof import("./protocol/errors").BadParametersError;
|
|
11
|
-
InvalidArgumentError: typeof import("./protocol/errors").InvalidArgumentError;
|
|
12
|
-
NoSuchDriverError: typeof import("./protocol/errors").NoSuchDriverError;
|
|
13
|
-
NoSuchElementError: typeof import("./protocol/errors").NoSuchElementError;
|
|
14
|
-
UnknownCommandError: typeof import("./protocol/errors").UnknownCommandError;
|
|
15
|
-
StaleElementReferenceError: typeof import("./protocol/errors").StaleElementReferenceError;
|
|
16
|
-
ElementNotVisibleError: typeof import("./protocol/errors").ElementNotVisibleError;
|
|
17
|
-
InvalidElementStateError: typeof import("./protocol/errors").InvalidElementStateError;
|
|
18
|
-
UnknownError: typeof import("./protocol/errors").UnknownError;
|
|
19
|
-
ElementIsNotSelectableError: typeof import("./protocol/errors").ElementIsNotSelectableError;
|
|
20
|
-
ElementClickInterceptedError: typeof import("./protocol/errors").ElementClickInterceptedError;
|
|
21
|
-
ElementNotInteractableError: typeof import("./protocol/errors").ElementNotInteractableError;
|
|
22
|
-
InsecureCertificateError: typeof import("./protocol/errors").InsecureCertificateError;
|
|
23
|
-
JavaScriptError: typeof import("./protocol/errors").JavaScriptError;
|
|
24
|
-
XPathLookupError: typeof import("./protocol/errors").XPathLookupError;
|
|
25
|
-
TimeoutError: typeof import("./protocol/errors").TimeoutError;
|
|
26
|
-
NoSuchWindowError: typeof import("./protocol/errors").NoSuchWindowError;
|
|
27
|
-
NoSuchCookieError: typeof import("./protocol/errors").NoSuchCookieError;
|
|
28
|
-
InvalidCookieDomainError: typeof import("./protocol/errors").InvalidCookieDomainError;
|
|
29
|
-
InvalidCoordinatesError: typeof import("./protocol/errors").InvalidCoordinatesError;
|
|
30
|
-
UnableToSetCookieError: typeof import("./protocol/errors").UnableToSetCookieError;
|
|
31
|
-
UnexpectedAlertOpenError: typeof import("./protocol/errors").UnexpectedAlertOpenError;
|
|
32
|
-
NoAlertOpenError: typeof import("./protocol/errors").NoAlertOpenError;
|
|
33
|
-
ScriptTimeoutError: typeof import("./protocol/errors").ScriptTimeoutError;
|
|
34
|
-
InvalidElementCoordinatesError: typeof import("./protocol/errors").InvalidElementCoordinatesError;
|
|
35
|
-
IMENotAvailableError: typeof import("./protocol/errors").IMENotAvailableError;
|
|
36
|
-
IMEEngineActivationFailedError: typeof import("./protocol/errors").IMEEngineActivationFailedError;
|
|
37
|
-
InvalidSelectorError: typeof import("./protocol/errors").InvalidSelectorError;
|
|
38
|
-
SessionNotCreatedError: typeof import("./protocol/errors").SessionNotCreatedError;
|
|
39
|
-
MoveTargetOutOfBoundsError: typeof import("./protocol/errors").MoveTargetOutOfBoundsError;
|
|
40
|
-
NoSuchAlertError: typeof import("./protocol/errors").NoSuchAlertError;
|
|
41
|
-
NoSuchContextError: typeof import("./protocol/errors").NoSuchContextError;
|
|
42
|
-
InvalidContextError: typeof import("./protocol/errors").InvalidContextError;
|
|
43
|
-
NoSuchFrameError: typeof import("./protocol/errors").NoSuchFrameError;
|
|
44
|
-
UnableToCaptureScreen: typeof import("./protocol/errors").UnableToCaptureScreen;
|
|
45
|
-
UnknownMethodError: typeof import("./protocol/errors").UnknownMethodError;
|
|
46
|
-
UnsupportedOperationError: typeof import("./protocol/errors").UnsupportedOperationError;
|
|
47
|
-
ProxyRequestError: typeof import("./protocol/errors").ProxyRequestError;
|
|
48
|
-
};
|
|
49
|
-
export const isErrorType: typeof protocol.isErrorType;
|
|
50
|
-
import { PROTOCOLS } from "./constants";
|
|
51
|
-
export const errorFromMJSONWPStatusCode: typeof protocol.errorFromMJSONWPStatusCode;
|
|
52
|
-
export const errorFromW3CJsonCode: typeof protocol.errorFromW3CJsonCode;
|
|
53
|
-
export const determineProtocol: typeof protocol.determineProtocol;
|
|
54
|
-
export const ALL_COMMANDS: any[];
|
|
55
|
-
export const METHOD_MAP: import("./protocol/routes").MethodMap;
|
|
56
|
-
export const routeToCommandName: typeof protocol.routeToCommandName;
|
|
57
|
-
export const NO_SESSION_ID_COMMANDS: string[];
|
|
58
|
-
export const isSessionCommand: typeof protocol.isSessionCommand;
|
|
59
|
-
import { DEFAULT_BASE_PATH } from "./constants";
|
|
60
|
-
export const CREATE_SESSION_COMMAND: "createSession";
|
|
61
|
-
export const DELETE_SESSION_COMMAND: "deleteSession";
|
|
62
|
-
export const GET_STATUS_COMMAND: "getStatus";
|
|
63
|
-
export const STATIC_DIR: string;
|
|
64
|
-
export const server: typeof serverIndex.server;
|
|
65
|
-
export const normalizeBasePath: typeof serverIndex.normalizeBasePath;
|
|
66
|
-
export const JWProxy: typeof proxyIndex.JWProxy;
|
|
67
|
-
export const statusCodes: {
|
|
68
|
-
Success: {
|
|
69
|
-
code: number;
|
|
70
|
-
summary: string;
|
|
71
|
-
};
|
|
72
|
-
NoSuchDriver: {
|
|
73
|
-
code: number;
|
|
74
|
-
summary: string;
|
|
75
|
-
};
|
|
76
|
-
NoSuchElement: {
|
|
77
|
-
code: number;
|
|
78
|
-
summary: string;
|
|
79
|
-
};
|
|
80
|
-
NoSuchFrame: {
|
|
81
|
-
code: number;
|
|
82
|
-
summary: string;
|
|
83
|
-
};
|
|
84
|
-
UnknownCommand: {
|
|
85
|
-
code: number;
|
|
86
|
-
summary: string;
|
|
87
|
-
};
|
|
88
|
-
StaleElementReference: {
|
|
89
|
-
code: number;
|
|
90
|
-
summary: string;
|
|
91
|
-
};
|
|
92
|
-
ElementNotVisible: {
|
|
93
|
-
code: number;
|
|
94
|
-
summary: string;
|
|
95
|
-
};
|
|
96
|
-
InvalidElementState: {
|
|
97
|
-
code: number;
|
|
98
|
-
summary: string;
|
|
99
|
-
};
|
|
100
|
-
UnknownError: {
|
|
101
|
-
code: number;
|
|
102
|
-
summary: string;
|
|
103
|
-
};
|
|
104
|
-
ElementIsNotSelectable: {
|
|
105
|
-
code: number;
|
|
106
|
-
summary: string;
|
|
107
|
-
};
|
|
108
|
-
JavaScriptError: {
|
|
109
|
-
code: number;
|
|
110
|
-
summary: string;
|
|
111
|
-
};
|
|
112
|
-
XPathLookupError: {
|
|
113
|
-
code: number;
|
|
114
|
-
summary: string;
|
|
115
|
-
};
|
|
116
|
-
Timeout: {
|
|
117
|
-
code: number;
|
|
118
|
-
summary: string;
|
|
119
|
-
};
|
|
120
|
-
NoSuchWindow: {
|
|
121
|
-
code: number;
|
|
122
|
-
summary: string;
|
|
123
|
-
};
|
|
124
|
-
InvalidCookieDomain: {
|
|
125
|
-
code: number;
|
|
126
|
-
summary: string;
|
|
127
|
-
};
|
|
128
|
-
UnableToSetCookie: {
|
|
129
|
-
code: number;
|
|
130
|
-
summary: string;
|
|
131
|
-
};
|
|
132
|
-
UnexpectedAlertOpen: {
|
|
133
|
-
code: number;
|
|
134
|
-
summary: string;
|
|
135
|
-
};
|
|
136
|
-
NoAlertOpenError: {
|
|
137
|
-
code: number;
|
|
138
|
-
summary: string;
|
|
139
|
-
};
|
|
140
|
-
ScriptTimeout: {
|
|
141
|
-
code: number;
|
|
142
|
-
summary: string;
|
|
143
|
-
};
|
|
144
|
-
InvalidElementCoordinates: {
|
|
145
|
-
code: number;
|
|
146
|
-
summary: string;
|
|
147
|
-
};
|
|
148
|
-
IMENotAvailable: {
|
|
149
|
-
code: number;
|
|
150
|
-
summary: string;
|
|
151
|
-
};
|
|
152
|
-
IMEEngineActivationFailed: {
|
|
153
|
-
code: number;
|
|
154
|
-
summary: string;
|
|
155
|
-
};
|
|
156
|
-
InvalidSelector: {
|
|
157
|
-
code: number;
|
|
158
|
-
summary: string;
|
|
159
|
-
};
|
|
160
|
-
SessionNotCreatedException: {
|
|
161
|
-
code: number;
|
|
162
|
-
summary: string;
|
|
163
|
-
};
|
|
164
|
-
MoveTargetOutOfBounds: {
|
|
165
|
-
code: number;
|
|
166
|
-
summary: string;
|
|
167
|
-
};
|
|
168
|
-
NoSuchContext: {
|
|
169
|
-
code: number;
|
|
170
|
-
summary: string;
|
|
171
|
-
};
|
|
172
|
-
};
|
|
173
|
-
export const getSummaryByCode: typeof statusIndex.getSummaryByCode;
|
|
174
|
-
export const processCapabilities: typeof caps.processCapabilities;
|
|
175
|
-
export const isStandardCap: typeof caps.isStandardCap;
|
|
176
|
-
export const validateCaps: typeof caps.validateCaps;
|
|
177
|
-
export const DEFAULT_WS_PATHNAME_PREFIX: "/ws";
|
|
178
|
-
import * as protocol from "./protocol";
|
|
179
|
-
import * as serverIndex from "./express/server";
|
|
180
|
-
import * as proxyIndex from "./jsonwp-proxy/proxy";
|
|
181
|
-
import * as statusIndex from "./jsonwp-status/status";
|
|
182
|
-
import * as caps from "./basedriver/capabilities";
|
|
183
|
-
export { BaseDriver, DeviceSettings, PROTOCOLS, errorFromMJSONWPStatusCode as errorFromCode, DEFAULT_BASE_PATH };
|
|
11
|
+
export { DEFAULT_BASE_PATH, PROTOCOLS } from "./constants";
|
|
12
|
+
export { server, normalizeBasePath } from "./express/server";
|
|
13
|
+
export { getSummaryByCode, codes as statusCodes } from "./jsonwp-status/status";
|
|
14
|
+
export { PREFIXED_APPIUM_OPTS_CAP, processCapabilities, isStandardCap, validateCaps } from "./basedriver/capabilities";
|
|
184
15
|
//# sourceMappingURL=index.d.ts.map
|