@appium/base-driver 8.2.4 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/build/lib/basedriver/capabilities.d.ts +80 -0
  2. package/build/lib/basedriver/capabilities.d.ts.map +1 -0
  3. package/build/lib/basedriver/capabilities.js +12 -13
  4. package/build/lib/basedriver/commands/event.d.ts +9 -0
  5. package/build/lib/basedriver/commands/event.d.ts.map +1 -0
  6. package/build/lib/basedriver/commands/event.js +21 -23
  7. package/build/lib/basedriver/commands/find.d.ts +11 -0
  8. package/build/lib/basedriver/commands/find.d.ts.map +1 -0
  9. package/build/lib/basedriver/commands/find.js +41 -43
  10. package/build/lib/basedriver/commands/index.d.ts +8 -0
  11. package/build/lib/basedriver/commands/index.d.ts.map +1 -0
  12. package/build/lib/basedriver/commands/index.js +17 -16
  13. package/build/lib/basedriver/commands/log.d.ts +12 -0
  14. package/build/lib/basedriver/commands/log.d.ts.map +1 -0
  15. package/build/lib/basedriver/commands/log.js +23 -30
  16. package/build/lib/basedriver/commands/session.d.ts +11 -0
  17. package/build/lib/basedriver/commands/session.d.ts.map +1 -0
  18. package/build/lib/basedriver/commands/session.js +21 -158
  19. package/build/lib/basedriver/commands/settings.d.ts +10 -0
  20. package/build/lib/basedriver/commands/settings.d.ts.map +1 -0
  21. package/build/lib/basedriver/commands/settings.js +18 -22
  22. package/build/lib/basedriver/commands/timeout.d.ts +8 -0
  23. package/build/lib/basedriver/commands/timeout.d.ts.map +1 -0
  24. package/build/lib/basedriver/commands/timeout.js +118 -144
  25. package/build/lib/basedriver/core.d.ts +235 -0
  26. package/build/lib/basedriver/core.d.ts.map +1 -0
  27. package/build/lib/basedriver/core.js +283 -0
  28. package/build/lib/basedriver/desired-caps.d.ts +5 -0
  29. package/build/lib/basedriver/desired-caps.d.ts.map +1 -0
  30. package/build/lib/basedriver/desired-caps.js +2 -4
  31. package/build/lib/basedriver/device-settings.d.ts +32 -0
  32. package/build/lib/basedriver/device-settings.d.ts.map +1 -0
  33. package/build/lib/basedriver/device-settings.js +33 -15
  34. package/build/lib/basedriver/driver.d.ts +83 -0
  35. package/build/lib/basedriver/driver.d.ts.map +1 -0
  36. package/build/lib/basedriver/driver.js +104 -257
  37. package/build/lib/basedriver/helpers.d.ts +132 -0
  38. package/build/lib/basedriver/helpers.d.ts.map +1 -0
  39. package/build/lib/basedriver/helpers.js +24 -10
  40. package/build/lib/basedriver/logger.d.ts +3 -0
  41. package/build/lib/basedriver/logger.d.ts.map +1 -0
  42. package/build/lib/basedriver/logger.js +2 -4
  43. package/build/lib/constants.d.ts +9 -0
  44. package/build/lib/constants.d.ts.map +1 -0
  45. package/build/lib/constants.js +2 -4
  46. package/build/lib/express/crash.d.ts +3 -0
  47. package/build/lib/express/crash.d.ts.map +1 -0
  48. package/build/lib/express/crash.js +2 -4
  49. package/build/lib/express/express-logging.d.ts +3 -0
  50. package/build/lib/express/express-logging.d.ts.map +1 -0
  51. package/build/lib/express/express-logging.js +3 -5
  52. package/build/lib/express/idempotency.d.ts +2 -0
  53. package/build/lib/express/idempotency.d.ts.map +1 -0
  54. package/build/lib/express/idempotency.js +3 -5
  55. package/build/lib/express/logger.d.ts +3 -0
  56. package/build/lib/express/logger.d.ts.map +1 -0
  57. package/build/lib/express/logger.js +2 -4
  58. package/build/lib/express/middleware.d.ts +9 -0
  59. package/build/lib/express/middleware.d.ts.map +1 -0
  60. package/build/lib/express/middleware.js +2 -4
  61. package/build/lib/express/server.d.ts +10 -0
  62. package/build/lib/express/server.d.ts.map +1 -0
  63. package/build/lib/express/server.js +2 -4
  64. package/build/lib/express/static.d.ts +6 -0
  65. package/build/lib/express/static.d.ts.map +1 -0
  66. package/build/lib/express/static.js +2 -4
  67. package/build/lib/express/websocket.d.ts +64 -0
  68. package/build/lib/express/websocket.d.ts.map +1 -0
  69. package/build/lib/express/websocket.js +2 -4
  70. package/build/lib/helpers/capabilities.d.ts +13 -0
  71. package/build/lib/helpers/capabilities.d.ts.map +1 -0
  72. package/build/lib/helpers/capabilities.js +77 -0
  73. package/build/lib/index.d.ts +183 -0
  74. package/build/lib/index.d.ts.map +1 -0
  75. package/build/lib/index.js +41 -25
  76. package/build/lib/jsonwp-proxy/protocol-converter.d.ts +48 -0
  77. package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -0
  78. package/build/lib/jsonwp-proxy/protocol-converter.js +19 -15
  79. package/build/lib/jsonwp-proxy/proxy.d.ts +41 -0
  80. package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -0
  81. package/build/lib/jsonwp-proxy/proxy.js +20 -15
  82. package/build/lib/jsonwp-status/status.d.ts +159 -0
  83. package/build/lib/jsonwp-status/status.d.ts.map +1 -0
  84. package/build/lib/jsonwp-status/status.js +2 -4
  85. package/build/lib/protocol/errors.d.ts +310 -0
  86. package/build/lib/protocol/errors.d.ts.map +1 -0
  87. package/build/lib/protocol/errors.js +82 -5
  88. package/build/lib/protocol/helpers.d.ts +22 -0
  89. package/build/lib/protocol/helpers.d.ts.map +1 -0
  90. package/build/lib/protocol/helpers.js +2 -4
  91. package/build/lib/protocol/index.d.ts +16 -0
  92. package/build/lib/protocol/index.d.ts.map +1 -0
  93. package/build/lib/protocol/index.js +8 -10
  94. package/build/lib/protocol/protocol.d.ts +11 -0
  95. package/build/lib/protocol/protocol.d.ts.map +1 -0
  96. package/build/lib/protocol/protocol.js +38 -35
  97. package/build/lib/protocol/routes.d.ts +6 -0
  98. package/build/lib/protocol/routes.d.ts.map +1 -0
  99. package/build/lib/protocol/routes.js +84 -4
  100. package/build/lib/protocol/validators.d.ts +8 -0
  101. package/build/lib/protocol/validators.d.ts.map +1 -0
  102. package/build/lib/protocol/validators.js +2 -4
  103. package/build/test/basedriver/README.md +5 -0
  104. package/build/test/basedriver/driver-e2e-tests.js +2 -4
  105. package/build/test/basedriver/driver-tests.js +41 -19
  106. package/build/test/basedriver/index.js +2 -4
  107. package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
  108. package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
  109. package/build/test/e2e/basedriver/websockets.e2e.spec.js +82 -0
  110. package/build/test/e2e/express/server.e2e.spec.js +159 -0
  111. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
  112. package/build/test/e2e/protocol/fake-driver.js +163 -0
  113. package/build/test/e2e/protocol/helpers.js +25 -0
  114. package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
  115. package/build/test/helpers.js +2 -4
  116. package/build/test/unit/basedriver/capabilities.spec.js +672 -0
  117. package/build/test/unit/basedriver/capability.spec.js +353 -0
  118. package/build/test/unit/basedriver/commands/event.spec.js +110 -0
  119. package/build/test/unit/basedriver/commands/log.spec.js +92 -0
  120. package/build/test/unit/basedriver/driver.spec.js +15 -0
  121. package/build/test/unit/basedriver/helpers.spec.js +151 -0
  122. package/build/test/unit/basedriver/timeout.spec.js +135 -0
  123. package/build/test/unit/express/server.spec.js +155 -0
  124. package/build/test/unit/express/static.spec.js +26 -0
  125. package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
  126. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
  127. package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
  128. package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
  129. package/build/test/unit/jsonwp-status/status.spec.js +34 -0
  130. package/build/test/unit/protocol/errors.spec.js +390 -0
  131. package/build/test/unit/protocol/routes.spec.js +80 -0
  132. package/build/test/unit/protocol/validator.spec.js +149 -0
  133. package/build/tsconfig.tsbuildinfo +1 -0
  134. package/lib/basedriver/capabilities.js +49 -10
  135. package/lib/basedriver/commands/event.js +49 -31
  136. package/lib/basedriver/commands/find.js +107 -45
  137. package/lib/basedriver/commands/index.js +25 -19
  138. package/lib/basedriver/commands/log.js +59 -34
  139. package/lib/basedriver/commands/session.js +39 -142
  140. package/lib/basedriver/commands/settings.js +32 -14
  141. package/lib/basedriver/commands/timeout.js +153 -154
  142. package/lib/basedriver/core.js +497 -0
  143. package/lib/basedriver/desired-caps.js +1 -1
  144. package/lib/basedriver/device-settings.js +57 -13
  145. package/lib/basedriver/driver.js +277 -375
  146. package/lib/basedriver/helpers.js +31 -13
  147. package/lib/express/express-logging.js +1 -1
  148. package/lib/express/idempotency.js +1 -1
  149. package/lib/helpers/capabilities.js +84 -0
  150. package/lib/index.js +17 -13
  151. package/lib/jsonwp-proxy/protocol-converter.js +14 -13
  152. package/lib/jsonwp-proxy/proxy.js +16 -12
  153. package/lib/protocol/errors.js +42 -42
  154. package/lib/protocol/index.js +4 -4
  155. package/lib/protocol/protocol.js +35 -32
  156. package/lib/protocol/routes.js +69 -1
  157. package/package.json +37 -24
  158. package/test/basedriver/README.md +5 -0
  159. package/test/basedriver/driver-e2e-tests.js +1 -1
  160. package/test/basedriver/driver-tests.js +43 -9
  161. package/build/lib/protocol/sessions-cache.js +0 -88
  162. package/build/test/basedriver/capabilities-specs.js +0 -632
  163. package/build/test/basedriver/capability-specs.js +0 -396
  164. package/build/test/basedriver/commands/event-specs.js +0 -112
  165. package/build/test/basedriver/commands/log-specs.js +0 -80
  166. package/build/test/basedriver/driver-e2e-specs.js +0 -17
  167. package/build/test/basedriver/driver-specs.js +0 -17
  168. package/build/test/basedriver/helpers-e2e-specs.js +0 -194
  169. package/build/test/basedriver/helpers-specs.js +0 -153
  170. package/build/test/basedriver/timeout-specs.js +0 -139
  171. package/build/test/basedriver/websockets-e2e-specs.js +0 -84
  172. package/build/test/express/server-e2e-specs.js +0 -156
  173. package/build/test/express/server-specs.js +0 -151
  174. package/build/test/express/static-specs.js +0 -23
  175. package/build/test/jsonwp-proxy/mock-request.js +0 -93
  176. package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
  177. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
  178. package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
  179. package/build/test/jsonwp-proxy/url-specs.js +0 -167
  180. package/build/test/jsonwp-status/status-specs.js +0 -36
  181. package/build/test/protocol/errors-specs.js +0 -388
  182. package/build/test/protocol/fake-driver.js +0 -168
  183. package/build/test/protocol/helpers.js +0 -27
  184. package/build/test/protocol/protocol-e2e-specs.js +0 -1182
  185. package/build/test/protocol/routes-specs.js +0 -82
  186. package/build/test/protocol/validator-specs.js +0 -151
  187. package/index.d.ts +0 -386
  188. package/lib/protocol/sessions-cache.js +0 -74
  189. package/test/basedriver/capabilities-specs.js +0 -505
  190. package/test/basedriver/capability-specs.js +0 -409
  191. package/test/basedriver/commands/event-specs.js +0 -74
  192. package/test/basedriver/commands/log-specs.js +0 -70
  193. package/test/basedriver/driver-e2e-specs.js +0 -8
  194. package/test/basedriver/driver-specs.js +0 -8
  195. package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
  196. package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
  197. package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
  198. package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
  199. package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
  200. package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
  201. package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
  202. package/test/basedriver/fixtures/custom-element-finder.js +0 -29
  203. package/test/basedriver/helpers-e2e-specs.js +0 -187
  204. package/test/basedriver/helpers-specs.js +0 -137
  205. package/test/basedriver/timeout-specs.js +0 -133
  206. package/test/basedriver/websockets-e2e-specs.js +0 -75
package/package.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "name": "@appium/base-driver",
3
+ "version": "8.4.0",
3
4
  "description": "Base driver class for Appium drivers",
4
5
  "keywords": [
5
6
  "automation",
@@ -11,20 +12,17 @@
11
12
  "firefoxos",
12
13
  "testing"
13
14
  ],
14
- "version": "8.2.4",
15
- "author": "https://github.com/appium",
16
- "license": "Apache-2.0",
17
- "repository": {
18
- "type": "git",
19
- "url": "https://github.com/appium/appium.git"
20
- },
15
+ "homepage": "https://appium.io",
21
16
  "bugs": {
22
17
  "url": "https://github.com/appium/appium/issues"
23
18
  },
24
- "engines": {
25
- "node": ">=12",
26
- "npm": ">=6"
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/appium/appium.git",
22
+ "directory": "packages/base-driver"
27
23
  },
24
+ "license": "Apache-2.0",
25
+ "author": "https://github.com/appium",
28
26
  "directories": {
29
27
  "lib": "lib"
30
28
  },
@@ -34,34 +32,49 @@
34
32
  "lib",
35
33
  "static",
36
34
  "test/basedriver",
37
- "!test/basedriver/fixtures",
35
+ "!test/e2e/fixtures",
38
36
  "build",
39
- "!build/test/basedriver/fixtures"
37
+ "!build/test/e2e/fixtures"
40
38
  ],
39
+ "scripts": {
40
+ "build": "npm run build:distfiles && npm run build:test",
41
+ "build:distfiles": "babel lib --root-mode=upward --out-dir=build/lib",
42
+ "build:test": "babel test --root-mode=upward --out-dir=build/test --copy-files",
43
+ "dev": "run-p \"build:distfiles -- --watch\" \"build:test -- --watch\"",
44
+ "fix": "npm run lint -- --fix",
45
+ "lint": "eslint -c ../../.eslintrc --ignore-path ../../.eslintignore .",
46
+ "test": "npm run test:unit",
47
+ "test:e2e": "mocha --require ../../test/setup-babel.js --timeout 20s --slow 10s \"./test/e2e/**/*.spec.js\"",
48
+ "test:unit": "mocha --require ../../test/setup-babel.js \"./test/unit/**/*.spec.js\""
49
+ },
41
50
  "dependencies": {
42
- "@appium/support": "^2.55.4",
43
- "@babel/runtime": "7.16.3",
44
- "@dabh/colors": "1.4.0",
45
- "async-lock": "1.3.0",
51
+ "@appium/support": "^2.57.0",
52
+ "@babel/runtime": "7.17.9",
53
+ "@colors/colors": "1.5.0",
54
+ "async-lock": "1.3.1",
46
55
  "asyncbox": "2.9.2",
47
- "axios": "0.24.0",
56
+ "axios": "0.26.1",
48
57
  "bluebird": "3.7.2",
49
- "body-parser": "1.19.0",
58
+ "body-parser": "1.20.0",
50
59
  "es6-error": "4.1.1",
51
- "express": "4.17.1",
52
- "http-status-codes": "2.1.4",
60
+ "express": "4.17.3",
61
+ "http-status-codes": "2.2.0",
53
62
  "lodash": "4.17.21",
54
- "lru-cache": "6.0.0",
63
+ "lru-cache": "7.7.3",
55
64
  "method-override": "3.0.0",
56
65
  "morgan": "1.10.0",
57
66
  "serve-favicon": "2.5.0",
58
67
  "source-map-support": "0.5.21",
59
68
  "validate.js": "0.13.1",
60
- "ws": "7.5.6"
69
+ "ws": "7.5.7"
70
+ },
71
+ "engines": {
72
+ "node": ">=12",
73
+ "npm": ">=6"
61
74
  },
62
75
  "publishConfig": {
63
76
  "access": "public"
64
77
  },
65
- "homepage": "https://appium.io",
66
- "gitHead": "42f4a2de2d763d57cf0bdb6fb6c9a3bc9c3d232f"
78
+ "types": "./build/lib/index.d.ts",
79
+ "gitHead": "3ec3a0efa590e22e264ffbd23316ee5714a12081"
67
80
  }
@@ -0,0 +1,5 @@
1
+ # Driver Test Helpers
2
+
3
+ This directory contains modules which expose test suites that an external driver can use to test against the base implementation. They are published in the `@appium/base-driver` package.
4
+
5
+ Drivers wanting to leverage these suites will want to add `@appium/base-driver` to their `devDependencies`.
@@ -2,7 +2,7 @@ import _ from 'lodash';
2
2
  import { BaseDriver, server, routeConfiguringFunction, DeviceSettings } from '../../lib';
3
3
  import axios from 'axios';
4
4
  import B from 'bluebird';
5
- import {TEST_HOST, getTestPort, createAppiumURL, METHODS} from '../helpers';
5
+ import { TEST_HOST, getTestPort, createAppiumURL, METHODS } from '../helpers';
6
6
  import { PREFIXED_APPIUM_OPTS_CAP } from '../../lib/basedriver/capabilities';
7
7
  const {POST, DELETE} = METHODS;
8
8
 
@@ -1,7 +1,7 @@
1
1
  import _ from 'lodash';
2
2
  import B from 'bluebird';
3
3
  import { DeviceSettings } from '../../lib';
4
- import sinon from 'sinon';
4
+ import { createSandbox } from 'sinon';
5
5
 
6
6
 
7
7
  // wrap these tests in a function so we can export the tests and re-use them
@@ -10,10 +10,43 @@ function baseDriverUnitTests (DriverClass, defaultCaps = {}) {
10
10
  // to display the driver under test in report
11
11
  const className = DriverClass.name || '(unknown driver)';
12
12
 
13
+ describe('static property', function () {
14
+ describe('baseVersion', function () {
15
+ it('should exist', function () {
16
+ DriverClass.baseVersion.should.exist;
17
+ });
18
+ });
19
+ });
20
+
21
+ describe('Log prefix', function () {
22
+
23
+ it('should setup log prefix', async function () {
24
+ const d = new DriverClass();
25
+ const previousPrefix = d.log.prefix;
26
+ await d.createSession({
27
+ alwaysMatch: Object.assign({}, defaultCaps, {
28
+ platformName: 'Fake',
29
+ 'appium:deviceName': 'Commodore 64',
30
+ }),
31
+ firstMatch: [{}],
32
+ });
33
+ try {
34
+ previousPrefix.should.not.eql(d.log.prefix);
35
+ } finally {
36
+ await d.deleteSession();
37
+ previousPrefix.should.eql(d.log.prefix);
38
+ }
39
+ });
40
+
41
+ });
42
+
13
43
  describe(`BaseDriver (as ${className})`, function () {
14
44
  let d, w3cCaps;
15
45
 
46
+ let sandbox;
47
+
16
48
  beforeEach(function () {
49
+ sandbox = createSandbox();
17
50
  d = new DriverClass();
18
51
  w3cCaps = {
19
52
  alwaysMatch: Object.assign({}, defaultCaps, {
@@ -25,6 +58,7 @@ function baseDriverUnitTests (DriverClass, defaultCaps = {}) {
25
58
  });
26
59
  afterEach(async function () {
27
60
  await d.deleteSession();
61
+ sandbox.restore();
28
62
  });
29
63
 
30
64
  it('should report the version of BaseDriver used', function () {
@@ -178,8 +212,8 @@ function baseDriverUnitTests (DriverClass, defaultCaps = {}) {
178
212
  throw new Error('multipass');
179
213
  }.bind(d);
180
214
 
181
- afterEach(function () {
182
- d.clearNewCommandTimeout();
215
+ afterEach(async function () {
216
+ await d.clearNewCommandTimeout();
183
217
  });
184
218
 
185
219
  it('should queue commands and.executeCommand/respond in the order received', async function () {
@@ -345,7 +379,7 @@ function baseDriverUnitTests (DriverClass, defaultCaps = {}) {
345
379
 
346
380
  describe('#proxyRouteIsAvoided', function () {
347
381
  it('should validate form of avoidance list', function () {
348
- const avoidStub = sinon.stub(d, 'getProxyAvoidList');
382
+ const avoidStub = sandbox.stub(d, 'getProxyAvoidList');
349
383
  avoidStub.returns([['POST', /\/foo/], ['GET']]);
350
384
  (() => { d.proxyRouteIsAvoided(); }).should.throw;
351
385
  avoidStub.returns([['POST', /\/foo/], ['GET', /^foo/, 'bar']]);
@@ -353,31 +387,31 @@ function baseDriverUnitTests (DriverClass, defaultCaps = {}) {
353
387
  avoidStub.restore();
354
388
  });
355
389
  it('should reject bad http methods', function () {
356
- const avoidStub = sinon.stub(d, 'getProxyAvoidList');
390
+ const avoidStub = sandbox.stub(d, 'getProxyAvoidList');
357
391
  avoidStub.returns([['POST', /^foo/], ['BAZETE', /^bar/]]);
358
392
  (() => { d.proxyRouteIsAvoided(); }).should.throw;
359
393
  avoidStub.restore();
360
394
  });
361
395
  it('should reject non-regex routes', function () {
362
- const avoidStub = sinon.stub(d, 'getProxyAvoidList');
396
+ const avoidStub = sandbox.stub(d, 'getProxyAvoidList');
363
397
  avoidStub.returns([['POST', /^foo/], ['GET', '/bar']]);
364
398
  (() => { d.proxyRouteIsAvoided(); }).should.throw;
365
399
  avoidStub.restore();
366
400
  });
367
401
  it('should return true for routes in the avoid list', function () {
368
- const avoidStub = sinon.stub(d, 'getProxyAvoidList');
402
+ const avoidStub = sandbox.stub(d, 'getProxyAvoidList');
369
403
  avoidStub.returns([['POST', /^\/foo/]]);
370
404
  d.proxyRouteIsAvoided(null, 'POST', '/foo/bar').should.be.true;
371
405
  avoidStub.restore();
372
406
  });
373
407
  it('should strip away any wd/hub prefix', function () {
374
- const avoidStub = sinon.stub(d, 'getProxyAvoidList');
408
+ const avoidStub = sandbox.stub(d, 'getProxyAvoidList');
375
409
  avoidStub.returns([['POST', /^\/foo/]]);
376
410
  d.proxyRouteIsAvoided(null, 'POST', '/foo/bar').should.be.true;
377
411
  avoidStub.restore();
378
412
  });
379
413
  it('should return false for routes not in the avoid list', function () {
380
- const avoidStub = sinon.stub(d, 'getProxyAvoidList');
414
+ const avoidStub = sandbox.stub(d, 'getProxyAvoidList');
381
415
  avoidStub.returns([['POST', /^\/foo/]]);
382
416
  d.proxyRouteIsAvoided(null, 'GET', '/foo/bar').should.be.false;
383
417
  d.proxyRouteIsAvoided(null, 'POST', '/boo').should.be.false;
@@ -1,88 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- require("source-map-support/register");
11
-
12
- var _lruCache = _interopRequireDefault(require("lru-cache"));
13
-
14
- var _support = require("@appium/support");
15
-
16
- var _constants = require("../constants");
17
-
18
- const GENERIC_PROTOCOL = 'GENERIC';
19
-
20
- const mjsonwpLog = _support.logger.getLogger('MJSONWP');
21
-
22
- const w3cLog = _support.logger.getLogger('W3C');
23
-
24
- const genericProtocolLog = _support.logger.getLogger(GENERIC_PROTOCOL);
25
-
26
- class SessionsCache {
27
- constructor(max) {
28
- this._cache = new _lruCache.default({
29
- max
30
- });
31
- }
32
-
33
- getLogger(sessionId, protocol) {
34
- if (sessionId) {
35
- if (this._cache.has(sessionId)) {
36
- const value = this._cache.get(sessionId);
37
-
38
- if (value.logger) {
39
- return value.logger;
40
- }
41
-
42
- protocol = protocol || value.protocol;
43
- }
44
-
45
- return _support.logger.getLogger(`${protocol || GENERIC_PROTOCOL} ` + `(${sessionId.substring(0, Math.min(sessionId.length, 8))})`);
46
- }
47
-
48
- switch (protocol) {
49
- case _constants.PROTOCOLS.W3C:
50
- return w3cLog;
51
-
52
- case _constants.PROTOCOLS.MJSONWP:
53
- return mjsonwpLog;
54
-
55
- default:
56
- return genericProtocolLog;
57
- }
58
- }
59
-
60
- getProtocol(sessionId) {
61
- return (this._cache.get(sessionId) || {}).protocol;
62
- }
63
-
64
- putSession(sessionId, value) {
65
- if (sessionId && value) {
66
- this._cache.set(sessionId, {
67
- protocol: value,
68
- logger: this.getLogger(sessionId, value)
69
- });
70
- }
71
-
72
- return value;
73
- }
74
-
75
- resetLogger(sessionId) {
76
- if (this._cache.has(sessionId)) {
77
- this._cache.get(sessionId).logger = null;
78
- }
79
- }
80
-
81
- }
82
-
83
- const SESSIONS_CACHE = new SessionsCache(100);
84
- var _default = SESSIONS_CACHE;
85
- exports.default = _default;require('source-map-support').install();
86
-
87
-
88
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wcm90b2NvbC9zZXNzaW9ucy1jYWNoZS5qcyJdLCJuYW1lcyI6WyJHRU5FUklDX1BST1RPQ09MIiwibWpzb253cExvZyIsImxvZ2dlciIsImdldExvZ2dlciIsInczY0xvZyIsImdlbmVyaWNQcm90b2NvbExvZyIsIlNlc3Npb25zQ2FjaGUiLCJjb25zdHJ1Y3RvciIsIm1heCIsIl9jYWNoZSIsIkxSVSIsInNlc3Npb25JZCIsInByb3RvY29sIiwiaGFzIiwidmFsdWUiLCJnZXQiLCJzdWJzdHJpbmciLCJNYXRoIiwibWluIiwibGVuZ3RoIiwiUFJPVE9DT0xTIiwiVzNDIiwiTUpTT05XUCIsImdldFByb3RvY29sIiwicHV0U2Vzc2lvbiIsInNldCIsInJlc2V0TG9nZ2VyIiwiU0VTU0lPTlNfQ0FDSEUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsZ0JBQWdCLEdBQUcsU0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHQyxnQkFBT0MsU0FBUCxDQUFpQixTQUFqQixDQUFuQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLGdCQUFPQyxTQUFQLENBQWlCLEtBQWpCLENBQWY7O0FBQ0EsTUFBTUUsa0JBQWtCLEdBQUdILGdCQUFPQyxTQUFQLENBQWlCSCxnQkFBakIsQ0FBM0I7O0FBR0EsTUFBTU0sYUFBTixDQUFvQjtBQUNsQkMsRUFBQUEsV0FBVyxDQUFFQyxHQUFGLEVBQU87QUFDaEIsU0FBS0MsTUFBTCxHQUFjLElBQUlDLGlCQUFKLENBQVE7QUFBRUYsTUFBQUE7QUFBRixLQUFSLENBQWQ7QUFDRDs7QUFFREwsRUFBQUEsU0FBUyxDQUFFUSxTQUFGLEVBQWFDLFFBQWIsRUFBdUI7QUFDOUIsUUFBSUQsU0FBSixFQUFlO0FBQ2IsVUFBSSxLQUFLRixNQUFMLENBQVlJLEdBQVosQ0FBZ0JGLFNBQWhCLENBQUosRUFBZ0M7QUFDOUIsY0FBTUcsS0FBSyxHQUFHLEtBQUtMLE1BQUwsQ0FBWU0sR0FBWixDQUFnQkosU0FBaEIsQ0FBZDs7QUFDQSxZQUFJRyxLQUFLLENBQUNaLE1BQVYsRUFBa0I7QUFDaEIsaUJBQU9ZLEtBQUssQ0FBQ1osTUFBYjtBQUNEOztBQUNEVSxRQUFBQSxRQUFRLEdBQUdBLFFBQVEsSUFBSUUsS0FBSyxDQUFDRixRQUE3QjtBQUNEOztBQUlELGFBQU9WLGdCQUFPQyxTQUFQLENBQWtCLEdBQUVTLFFBQVEsSUFBSVosZ0JBQWlCLEdBQWhDLEdBQ3JCLElBQUdXLFNBQVMsQ0FBQ0ssU0FBVixDQUFvQixDQUFwQixFQUF1QkMsSUFBSSxDQUFDQyxHQUFMLENBQVNQLFNBQVMsQ0FBQ1EsTUFBbkIsRUFBMkIsQ0FBM0IsQ0FBdkIsQ0FBc0QsR0FEckQsQ0FBUDtBQUVEOztBQUdELFlBQVFQLFFBQVI7QUFDRSxXQUFLUSxxQkFBVUMsR0FBZjtBQUNFLGVBQU9qQixNQUFQOztBQUNGLFdBQUtnQixxQkFBVUUsT0FBZjtBQUNFLGVBQU9yQixVQUFQOztBQUNGO0FBQ0UsZUFBT0ksa0JBQVA7QUFOSjtBQVFEOztBQUVEa0IsRUFBQUEsV0FBVyxDQUFFWixTQUFGLEVBQWE7QUFDdEIsV0FBTyxDQUFDLEtBQUtGLE1BQUwsQ0FBWU0sR0FBWixDQUFnQkosU0FBaEIsS0FBOEIsRUFBL0IsRUFBbUNDLFFBQTFDO0FBQ0Q7O0FBRURZLEVBQUFBLFVBQVUsQ0FBRWIsU0FBRixFQUFhRyxLQUFiLEVBQW9CO0FBQzVCLFFBQUlILFNBQVMsSUFBSUcsS0FBakIsRUFBd0I7QUFDdEIsV0FBS0wsTUFBTCxDQUFZZ0IsR0FBWixDQUFnQmQsU0FBaEIsRUFBMkI7QUFDekJDLFFBQUFBLFFBQVEsRUFBRUUsS0FEZTtBQUt6QlosUUFBQUEsTUFBTSxFQUFFLEtBQUtDLFNBQUwsQ0FBZVEsU0FBZixFQUEwQkcsS0FBMUI7QUFMaUIsT0FBM0I7QUFPRDs7QUFDRCxXQUFPQSxLQUFQO0FBQ0Q7O0FBRURZLEVBQUFBLFdBQVcsQ0FBRWYsU0FBRixFQUFhO0FBQ3RCLFFBQUksS0FBS0YsTUFBTCxDQUFZSSxHQUFaLENBQWdCRixTQUFoQixDQUFKLEVBQWdDO0FBQzlCLFdBQUtGLE1BQUwsQ0FBWU0sR0FBWixDQUFnQkosU0FBaEIsRUFBMkJULE1BQTNCLEdBQW9DLElBQXBDO0FBQ0Q7QUFDRjs7QUFyRGlCOztBQTREcEIsTUFBTXlCLGNBQWMsR0FBRyxJQUFJckIsYUFBSixDQUFrQixHQUFsQixDQUF2QjtlQUVlcUIsYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBQUk9UT0NPTFMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5cbmNvbnN0IEdFTkVSSUNfUFJPVE9DT0wgPSAnR0VORVJJQyc7XG5jb25zdCBtanNvbndwTG9nID0gbG9nZ2VyLmdldExvZ2dlcignTUpTT05XUCcpO1xuY29uc3QgdzNjTG9nID0gbG9nZ2VyLmdldExvZ2dlcignVzNDJyk7XG5jb25zdCBnZW5lcmljUHJvdG9jb2xMb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKEdFTkVSSUNfUFJPVE9DT0wpO1xuXG5cbmNsYXNzIFNlc3Npb25zQ2FjaGUge1xuICBjb25zdHJ1Y3RvciAobWF4KSB7XG4gICAgdGhpcy5fY2FjaGUgPSBuZXcgTFJVKHsgbWF4IH0pO1xuICB9XG5cbiAgZ2V0TG9nZ2VyIChzZXNzaW9uSWQsIHByb3RvY29sKSB7XG4gICAgaWYgKHNlc3Npb25JZCkge1xuICAgICAgaWYgKHRoaXMuX2NhY2hlLmhhcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fY2FjaGUuZ2V0KHNlc3Npb25JZCk7XG4gICAgICAgIGlmICh2YWx1ZS5sb2dnZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUubG9nZ2VyO1xuICAgICAgICB9XG4gICAgICAgIHByb3RvY29sID0gcHJvdG9jb2wgfHwgdmFsdWUucHJvdG9jb2w7XG4gICAgICB9XG4gICAgICAvLyBBbHdheXMgY3JlYXRlIGEgbmV3IGxvZ2dlciBpbnN0YW5jZSBmb3IgaWRzXG4gICAgICAvLyB0aGF0IGFyZSBub3QgaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbnMgbGlzdCxcbiAgICAgIC8vIHNvIHdlIGNhbiBzdGlsbCBzZWUgc3VjaCBpZHMgYXMgcHJlZml4ZXNcbiAgICAgIHJldHVybiBsb2dnZXIuZ2V0TG9nZ2VyKGAke3Byb3RvY29sIHx8IEdFTkVSSUNfUFJPVE9DT0x9IGAgK1xuICAgICAgICBgKCR7c2Vzc2lvbklkLnN1YnN0cmluZygwLCBNYXRoLm1pbihzZXNzaW9uSWQubGVuZ3RoLCA4KSl9KWApO1xuICAgIH1cblxuICAgIC8vIEZhbGwgYmFjayB0byBwcm90b2NvbCBuYW1lLW9ubHkgbG9nZ2VyIGlmIHNlc3Npb24gaWQgaXMgdW5rbm93blxuICAgIHN3aXRjaCAocHJvdG9jb2wpIHtcbiAgICAgIGNhc2UgUFJPVE9DT0xTLlczQzpcbiAgICAgICAgcmV0dXJuIHczY0xvZztcbiAgICAgIGNhc2UgUFJPVE9DT0xTLk1KU09OV1A6XG4gICAgICAgIHJldHVybiBtanNvbndwTG9nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGdlbmVyaWNQcm90b2NvbExvZztcbiAgICB9XG4gIH1cblxuICBnZXRQcm90b2NvbCAoc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9jYWNoZS5nZXQoc2Vzc2lvbklkKSB8fCB7fSkucHJvdG9jb2w7XG4gIH1cblxuICBwdXRTZXNzaW9uIChzZXNzaW9uSWQsIHZhbHVlKSB7XG4gICAgaWYgKHNlc3Npb25JZCAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5fY2FjaGUuc2V0KHNlc3Npb25JZCwge1xuICAgICAgICBwcm90b2NvbDogdmFsdWUsXG4gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2FjaGUgdGhlIGxvZ2dlciBpbnN0YW5jZSBmb3IgZWFjaCByYW5kb20gc2Vzc2lvbiBpZCBpbiB0aGUgY2FjaGVcbiAgICAgICAgLy8gaW4gb3JkZXIgdG8gc2F2ZSBtZW1vcnkuIEluc3RlYWQgd2Ugb25seSBjYWNoZSBsb2dnZXJzIGZvciB2YWxpZCBpZHMgdGhhdFxuICAgICAgICAvLyBhcmUgcmV0dXJuZWQgYnkgYGNyZWF0ZVNlc3Npb25gIGNhbGwgYW5kIHJlc2V0IHRoZW0gYWZ0ZXIgYGRlbGV0ZVNlc3Npb25gIGlzIGNhbGxlZFxuICAgICAgICBsb2dnZXI6IHRoaXMuZ2V0TG9nZ2VyKHNlc3Npb25JZCwgdmFsdWUpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJlc2V0TG9nZ2VyIChzZXNzaW9uSWQpIHtcbiAgICBpZiAodGhpcy5fY2FjaGUuaGFzKHNlc3Npb25JZCkpIHtcbiAgICAgIHRoaXMuX2NhY2hlLmdldChzZXNzaW9uSWQpLmxvZ2dlciA9IG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgY2FjaGUgaXMgdXNlZnVsIHdoZW4gYSBzZXNzaW9uIGdldHMgdGVybWluYXRlZFxuLy8gYW5kIHJlbW92ZWQgZnJvbSB0aGUgc2Vzc2lvbnMgbGlzdCBpbiB0aGUgdW1icmVsbGEgZHJpdmVyLFxuLy8gYnV0IHRoZSBjbGllbnQgc3RpbGwgdHJpZXMgdG8gc2VuZCBhIGNvbW1hbmQgdG8gdGhpcyBzZXNzaW9uIGlkLlxuLy8gU28gd2Uga25vdyBob3cgdG8gcHJvcGVybHkgd3JhcCB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgaXRcbmNvbnN0IFNFU1NJT05TX0NBQ0hFID0gbmV3IFNlc3Npb25zQ2FjaGUoMTAwKTtcblxuZXhwb3J0IGRlZmF1bHQgU0VTU0lPTlNfQ0FDSEU7XG4iXSwiZmlsZSI6ImxpYi9wcm90b2NvbC9zZXNzaW9ucy1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9