pokeedex 0.1.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 (591) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/main.yml +30 -0
  3. data/.gitignore +13 -0
  4. data/.standard.yml +9 -0
  5. data/CHANGELOG.md +5 -0
  6. data/CODE_OF_CONDUCT.md +132 -0
  7. data/Gemfile +14 -0
  8. data/Gemfile.lock +125 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +154 -0
  11. data/Rakefile +20 -0
  12. data/bin/pokeedex +85 -0
  13. data/lib/pokeedex/configuration.rb +47 -0
  14. data/lib/pokeedex/database.rb +42 -0
  15. data/lib/pokeedex/db/migrations/001_create_pokemons.rb +26 -0
  16. data/lib/pokeedex/exceptions.rb +15 -0
  17. data/lib/pokeedex/pokemon/base.rb +16 -0
  18. data/lib/pokeedex/pokemon/decorators/base.rb +112 -0
  19. data/lib/pokeedex/pokemon/model/base.rb +43 -0
  20. data/lib/pokeedex/pokemon/scrapper/base.rb +34 -0
  21. data/lib/pokeedex/pokemon/scrapper/fetchers/base.rb +123 -0
  22. data/lib/pokeedex/pokemon/scrapper/parsers/base.rb +205 -0
  23. data/lib/pokeedex/pokemon/scrapper/pokedex.rb +50 -0
  24. data/lib/pokeedex/pokemon/searcher/base.rb +59 -0
  25. data/lib/pokeedex/version.rb +5 -0
  26. data/lib/pokeedex.rb +55 -0
  27. data/node_modules/.bin/playwright +1 -0
  28. data/node_modules/.bin/playwright-core +1 -0
  29. data/node_modules/.yarn-integrity +22 -0
  30. data/node_modules/@playwright/test/LICENSE +202 -0
  31. data/node_modules/@playwright/test/NOTICE +5 -0
  32. data/node_modules/@playwright/test/README.md +169 -0
  33. data/node_modules/@playwright/test/cli.js +19 -0
  34. data/node_modules/@playwright/test/index.d.ts +18 -0
  35. data/node_modules/@playwright/test/index.js +17 -0
  36. data/node_modules/@playwright/test/index.mjs +18 -0
  37. data/node_modules/@playwright/test/node_modules/.bin/playwright +1 -0
  38. data/node_modules/@playwright/test/package.json +35 -0
  39. data/node_modules/@playwright/test/reporter.d.ts +17 -0
  40. data/node_modules/@playwright/test/reporter.js +17 -0
  41. data/node_modules/@playwright/test/reporter.mjs +17 -0
  42. data/node_modules/@types/node/LICENSE +21 -0
  43. data/node_modules/@types/node/README.md +15 -0
  44. data/node_modules/@types/node/assert/strict.d.ts +8 -0
  45. data/node_modules/@types/node/assert.d.ts +1040 -0
  46. data/node_modules/@types/node/async_hooks.d.ts +541 -0
  47. data/node_modules/@types/node/buffer.d.ts +2300 -0
  48. data/node_modules/@types/node/child_process.d.ts +1544 -0
  49. data/node_modules/@types/node/cluster.d.ts +578 -0
  50. data/node_modules/@types/node/console.d.ts +452 -0
  51. data/node_modules/@types/node/constants.d.ts +19 -0
  52. data/node_modules/@types/node/crypto.d.ts +4451 -0
  53. data/node_modules/@types/node/dgram.d.ts +596 -0
  54. data/node_modules/@types/node/diagnostics_channel.d.ts +554 -0
  55. data/node_modules/@types/node/dns/promises.d.ts +476 -0
  56. data/node_modules/@types/node/dns.d.ts +865 -0
  57. data/node_modules/@types/node/dom-events.d.ts +124 -0
  58. data/node_modules/@types/node/domain.d.ts +170 -0
  59. data/node_modules/@types/node/events.d.ts +931 -0
  60. data/node_modules/@types/node/fs/promises.d.ts +1264 -0
  61. data/node_modules/@types/node/fs.d.ts +4390 -0
  62. data/node_modules/@types/node/globals.d.ts +611 -0
  63. data/node_modules/@types/node/globals.global.d.ts +1 -0
  64. data/node_modules/@types/node/http.d.ts +1921 -0
  65. data/node_modules/@types/node/http2.d.ts +2555 -0
  66. data/node_modules/@types/node/https.d.ts +544 -0
  67. data/node_modules/@types/node/index.d.ts +90 -0
  68. data/node_modules/@types/node/inspector.d.ts +3966 -0
  69. data/node_modules/@types/node/module.d.ts +301 -0
  70. data/node_modules/@types/node/net.d.ts +995 -0
  71. data/node_modules/@types/node/os.d.ts +495 -0
  72. data/node_modules/@types/node/package.json +217 -0
  73. data/node_modules/@types/node/path.d.ts +200 -0
  74. data/node_modules/@types/node/perf_hooks.d.ts +941 -0
  75. data/node_modules/@types/node/process.d.ts +1912 -0
  76. data/node_modules/@types/node/punycode.d.ts +117 -0
  77. data/node_modules/@types/node/querystring.d.ts +153 -0
  78. data/node_modules/@types/node/readline/promises.d.ts +150 -0
  79. data/node_modules/@types/node/readline.d.ts +540 -0
  80. data/node_modules/@types/node/repl.d.ts +430 -0
  81. data/node_modules/@types/node/sea.d.ts +153 -0
  82. data/node_modules/@types/node/sqlite.d.ts +213 -0
  83. data/node_modules/@types/node/stream/consumers.d.ts +12 -0
  84. data/node_modules/@types/node/stream/promises.d.ts +83 -0
  85. data/node_modules/@types/node/stream/web.d.ts +606 -0
  86. data/node_modules/@types/node/stream.d.ts +1726 -0
  87. data/node_modules/@types/node/string_decoder.d.ts +67 -0
  88. data/node_modules/@types/node/test.d.ts +2098 -0
  89. data/node_modules/@types/node/timers/promises.d.ts +97 -0
  90. data/node_modules/@types/node/timers.d.ts +240 -0
  91. data/node_modules/@types/node/tls.d.ts +1220 -0
  92. data/node_modules/@types/node/trace_events.d.ts +197 -0
  93. data/node_modules/@types/node/tty.d.ts +208 -0
  94. data/node_modules/@types/node/url.d.ts +969 -0
  95. data/node_modules/@types/node/util.d.ts +2301 -0
  96. data/node_modules/@types/node/v8.d.ts +808 -0
  97. data/node_modules/@types/node/vm.d.ts +922 -0
  98. data/node_modules/@types/node/wasi.d.ts +181 -0
  99. data/node_modules/@types/node/worker_threads.d.ts +712 -0
  100. data/node_modules/@types/node/zlib.d.ts +539 -0
  101. data/node_modules/fsevents/LICENSE +22 -0
  102. data/node_modules/fsevents/README.md +83 -0
  103. data/node_modules/fsevents/fsevents.d.ts +46 -0
  104. data/node_modules/fsevents/fsevents.js +82 -0
  105. data/node_modules/fsevents/fsevents.node +0 -0
  106. data/node_modules/fsevents/package.json +62 -0
  107. data/node_modules/playwright/.eslintrc.js +6 -0
  108. data/node_modules/playwright/LICENSE +202 -0
  109. data/node_modules/playwright/NOTICE +5 -0
  110. data/node_modules/playwright/README.md +169 -0
  111. data/node_modules/playwright/ThirdPartyNotices.txt +4356 -0
  112. data/node_modules/playwright/cli.js +19 -0
  113. data/node_modules/playwright/index.d.ts +17 -0
  114. data/node_modules/playwright/index.js +17 -0
  115. data/node_modules/playwright/index.mjs +18 -0
  116. data/node_modules/playwright/jsx-runtime.js +41 -0
  117. data/node_modules/playwright/jsx-runtime.mjs +21 -0
  118. data/node_modules/playwright/lib/common/config.js +256 -0
  119. data/node_modules/playwright/lib/common/configLoader.js +321 -0
  120. data/node_modules/playwright/lib/common/esmLoaderHost.js +93 -0
  121. data/node_modules/playwright/lib/common/expectBundle.js +27 -0
  122. data/node_modules/playwright/lib/common/expectBundleImpl.js +389 -0
  123. data/node_modules/playwright/lib/common/fixtures.js +323 -0
  124. data/node_modules/playwright/lib/common/globals.js +48 -0
  125. data/node_modules/playwright/lib/common/ipc.js +48 -0
  126. data/node_modules/playwright/lib/common/poolBuilder.js +79 -0
  127. data/node_modules/playwright/lib/common/process.js +140 -0
  128. data/node_modules/playwright/lib/common/suiteUtils.js +133 -0
  129. data/node_modules/playwright/lib/common/test.js +311 -0
  130. data/node_modules/playwright/lib/common/testLoader.js +102 -0
  131. data/node_modules/playwright/lib/common/testType.js +284 -0
  132. data/node_modules/playwright/lib/fsWatcher.js +69 -0
  133. data/node_modules/playwright/lib/index.js +888 -0
  134. data/node_modules/playwright/lib/internalsForTest.js +28 -0
  135. data/node_modules/playwright/lib/isomorphic/events.js +72 -0
  136. data/node_modules/playwright/lib/isomorphic/folders.js +25 -0
  137. data/node_modules/playwright/lib/isomorphic/stringInternPool.js +58 -0
  138. data/node_modules/playwright/lib/isomorphic/teleReceiver.js +504 -0
  139. data/node_modules/playwright/lib/isomorphic/teleSuiteUpdater.js +149 -0
  140. data/node_modules/playwright/lib/isomorphic/testServerConnection.js +210 -0
  141. data/node_modules/playwright/lib/isomorphic/testServerInterface.js +5 -0
  142. data/node_modules/playwright/lib/isomorphic/testTree.js +272 -0
  143. data/node_modules/playwright/lib/loader/loaderMain.js +58 -0
  144. data/node_modules/playwright/lib/matchers/expect.js +297 -0
  145. data/node_modules/playwright/lib/matchers/matcherHint.js +50 -0
  146. data/node_modules/playwright/lib/matchers/matchers.js +449 -0
  147. data/node_modules/playwright/lib/matchers/toBeTruthy.js +55 -0
  148. data/node_modules/playwright/lib/matchers/toEqual.js +57 -0
  149. data/node_modules/playwright/lib/matchers/toMatchSnapshot.js +383 -0
  150. data/node_modules/playwright/lib/matchers/toMatchText.js +76 -0
  151. data/node_modules/playwright/lib/plugins/gitCommitInfoPlugin.js +78 -0
  152. data/node_modules/playwright/lib/plugins/index.js +19 -0
  153. data/node_modules/playwright/lib/plugins/webServerPlugin.js +187 -0
  154. data/node_modules/playwright/lib/program.js +346 -0
  155. data/node_modules/playwright/lib/reporters/base.js +553 -0
  156. data/node_modules/playwright/lib/reporters/blob.js +133 -0
  157. data/node_modules/playwright/lib/reporters/dot.js +82 -0
  158. data/node_modules/playwright/lib/reporters/empty.js +42 -0
  159. data/node_modules/playwright/lib/reporters/github.js +115 -0
  160. data/node_modules/playwright/lib/reporters/html.js +623 -0
  161. data/node_modules/playwright/lib/reporters/internalReporter.js +123 -0
  162. data/node_modules/playwright/lib/reporters/json.js +243 -0
  163. data/node_modules/playwright/lib/reporters/junit.js +233 -0
  164. data/node_modules/playwright/lib/reporters/line.js +108 -0
  165. data/node_modules/playwright/lib/reporters/list.js +222 -0
  166. data/node_modules/playwright/lib/reporters/markdown.js +76 -0
  167. data/node_modules/playwright/lib/reporters/merge.js +477 -0
  168. data/node_modules/playwright/lib/reporters/multiplexer.js +90 -0
  169. data/node_modules/playwright/lib/reporters/reporterV2.js +118 -0
  170. data/node_modules/playwright/lib/reporters/teleEmitter.js +268 -0
  171. data/node_modules/playwright/lib/reporters/versions/blobV1.js +5 -0
  172. data/node_modules/playwright/lib/runner/dispatcher.js +532 -0
  173. data/node_modules/playwright/lib/runner/failureTracker.js +60 -0
  174. data/node_modules/playwright/lib/runner/loadUtils.js +308 -0
  175. data/node_modules/playwright/lib/runner/loaderHost.js +85 -0
  176. data/node_modules/playwright/lib/runner/processHost.js +175 -0
  177. data/node_modules/playwright/lib/runner/projectUtils.js +203 -0
  178. data/node_modules/playwright/lib/runner/reporters.js +151 -0
  179. data/node_modules/playwright/lib/runner/runner.js +179 -0
  180. data/node_modules/playwright/lib/runner/sigIntWatcher.js +100 -0
  181. data/node_modules/playwright/lib/runner/taskRunner.js +147 -0
  182. data/node_modules/playwright/lib/runner/tasks.js +407 -0
  183. data/node_modules/playwright/lib/runner/testGroups.js +136 -0
  184. data/node_modules/playwright/lib/runner/testServer.js +605 -0
  185. data/node_modules/playwright/lib/runner/uiModeReporter.js +31 -0
  186. data/node_modules/playwright/lib/runner/vcs.js +55 -0
  187. data/node_modules/playwright/lib/runner/watchMode.js +398 -0
  188. data/node_modules/playwright/lib/runner/workerHost.js +85 -0
  189. data/node_modules/playwright/lib/third_party/tsconfig-loader.js +134 -0
  190. data/node_modules/playwright/lib/transform/babelBundle.js +28 -0
  191. data/node_modules/playwright/lib/transform/babelBundleImpl.js +2032 -0
  192. data/node_modules/playwright/lib/transform/compilationCache.js +254 -0
  193. data/node_modules/playwright/lib/transform/esmLoader.js +117 -0
  194. data/node_modules/playwright/lib/transform/esmUtils.js +32 -0
  195. data/node_modules/playwright/lib/transform/portTransport.js +81 -0
  196. data/node_modules/playwright/lib/transform/transform.js +267 -0
  197. data/node_modules/playwright/lib/util.js +356 -0
  198. data/node_modules/playwright/lib/utilsBundle.js +28 -0
  199. data/node_modules/playwright/lib/utilsBundleImpl.js +102 -0
  200. data/node_modules/playwright/lib/worker/fixtureRunner.js +279 -0
  201. data/node_modules/playwright/lib/worker/testInfo.js +397 -0
  202. data/node_modules/playwright/lib/worker/testTracing.js +314 -0
  203. data/node_modules/playwright/lib/worker/timeoutManager.js +153 -0
  204. data/node_modules/playwright/lib/worker/workerMain.js +637 -0
  205. data/node_modules/playwright/node_modules/.bin/playwright-core +1 -0
  206. data/node_modules/playwright/package.json +66 -0
  207. data/node_modules/playwright/test.d.ts +18 -0
  208. data/node_modules/playwright/test.js +24 -0
  209. data/node_modules/playwright/test.mjs +33 -0
  210. data/node_modules/playwright/types/test.d.ts +8444 -0
  211. data/node_modules/playwright/types/testReporter.d.ts +749 -0
  212. data/node_modules/playwright-core/LICENSE +202 -0
  213. data/node_modules/playwright-core/NOTICE +5 -0
  214. data/node_modules/playwright-core/README.md +3 -0
  215. data/node_modules/playwright-core/ThirdPartyNotices.txt +1548 -0
  216. data/node_modules/playwright-core/bin/PrintDeps.exe +0 -0
  217. data/node_modules/playwright-core/bin/README.md +2 -0
  218. data/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
  219. data/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +40 -0
  220. data/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  221. data/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  222. data/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +40 -0
  223. data/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  224. data/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  225. data/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +40 -0
  226. data/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  227. data/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  228. data/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +40 -0
  229. data/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  230. data/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  231. data/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +40 -0
  232. data/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  233. data/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  234. data/node_modules/playwright-core/browsers.json +53 -0
  235. data/node_modules/playwright-core/cli.js +18 -0
  236. data/node_modules/playwright-core/index.d.ts +17 -0
  237. data/node_modules/playwright-core/index.js +33 -0
  238. data/node_modules/playwright-core/index.mjs +28 -0
  239. data/node_modules/playwright-core/lib/androidServerImpl.js +69 -0
  240. data/node_modules/playwright-core/lib/browserServerImpl.js +92 -0
  241. data/node_modules/playwright-core/lib/cli/driver.js +95 -0
  242. data/node_modules/playwright-core/lib/cli/program.js +577 -0
  243. data/node_modules/playwright-core/lib/cli/programWithTestStub.js +67 -0
  244. data/node_modules/playwright-core/lib/client/accessibility.js +50 -0
  245. data/node_modules/playwright-core/lib/client/android.js +473 -0
  246. data/node_modules/playwright-core/lib/client/api.js +279 -0
  247. data/node_modules/playwright-core/lib/client/artifact.js +79 -0
  248. data/node_modules/playwright-core/lib/client/browser.js +145 -0
  249. data/node_modules/playwright-core/lib/client/browserContext.js +541 -0
  250. data/node_modules/playwright-core/lib/client/browserType.js +241 -0
  251. data/node_modules/playwright-core/lib/client/cdpSession.js +53 -0
  252. data/node_modules/playwright-core/lib/client/channelOwner.js +231 -0
  253. data/node_modules/playwright-core/lib/client/clientHelper.js +57 -0
  254. data/node_modules/playwright-core/lib/client/clientInstrumentation.js +50 -0
  255. data/node_modules/playwright-core/lib/client/clock.js +68 -0
  256. data/node_modules/playwright-core/lib/client/connection.js +330 -0
  257. data/node_modules/playwright-core/lib/client/consoleMessage.js +55 -0
  258. data/node_modules/playwright-core/lib/client/coverage.js +41 -0
  259. data/node_modules/playwright-core/lib/client/dialog.js +57 -0
  260. data/node_modules/playwright-core/lib/client/download.js +62 -0
  261. data/node_modules/playwright-core/lib/client/electron.js +135 -0
  262. data/node_modules/playwright-core/lib/client/elementHandle.js +321 -0
  263. data/node_modules/playwright-core/lib/client/errors.js +77 -0
  264. data/node_modules/playwright-core/lib/client/eventEmitter.js +314 -0
  265. data/node_modules/playwright-core/lib/client/events.js +94 -0
  266. data/node_modules/playwright-core/lib/client/fetch.js +396 -0
  267. data/node_modules/playwright-core/lib/client/fileChooser.js +45 -0
  268. data/node_modules/playwright-core/lib/client/frame.js +504 -0
  269. data/node_modules/playwright-core/lib/client/harRouter.js +99 -0
  270. data/node_modules/playwright-core/lib/client/input.js +111 -0
  271. data/node_modules/playwright-core/lib/client/jsHandle.js +129 -0
  272. data/node_modules/playwright-core/lib/client/jsonPipe.js +35 -0
  273. data/node_modules/playwright-core/lib/client/localUtils.js +35 -0
  274. data/node_modules/playwright-core/lib/client/locator.js +441 -0
  275. data/node_modules/playwright-core/lib/client/network.js +604 -0
  276. data/node_modules/playwright-core/lib/client/page.js +725 -0
  277. data/node_modules/playwright-core/lib/client/playwright.js +77 -0
  278. data/node_modules/playwright-core/lib/client/selectors.js +67 -0
  279. data/node_modules/playwright-core/lib/client/stream.js +54 -0
  280. data/node_modules/playwright-core/lib/client/tracing.js +138 -0
  281. data/node_modules/playwright-core/lib/client/types.js +24 -0
  282. data/node_modules/playwright-core/lib/client/video.js +51 -0
  283. data/node_modules/playwright-core/lib/client/waiter.js +158 -0
  284. data/node_modules/playwright-core/lib/client/webError.js +37 -0
  285. data/node_modules/playwright-core/lib/client/worker.js +71 -0
  286. data/node_modules/playwright-core/lib/client/writableStream.js +54 -0
  287. data/node_modules/playwright-core/lib/common/socksProxy.js +569 -0
  288. data/node_modules/playwright-core/lib/common/timeoutSettings.js +73 -0
  289. data/node_modules/playwright-core/lib/common/types.js +5 -0
  290. data/node_modules/playwright-core/lib/generated/clockSource.js +7 -0
  291. data/node_modules/playwright-core/lib/generated/consoleApiSource.js +7 -0
  292. data/node_modules/playwright-core/lib/generated/injectedScriptSource.js +7 -0
  293. data/node_modules/playwright-core/lib/generated/recorderSource.js +7 -0
  294. data/node_modules/playwright-core/lib/generated/utilityScriptSource.js +7 -0
  295. data/node_modules/playwright-core/lib/image_tools/colorUtils.js +98 -0
  296. data/node_modules/playwright-core/lib/image_tools/compare.js +108 -0
  297. data/node_modules/playwright-core/lib/image_tools/imageChannel.js +70 -0
  298. data/node_modules/playwright-core/lib/image_tools/stats.js +102 -0
  299. data/node_modules/playwright-core/lib/inProcessFactory.js +54 -0
  300. data/node_modules/playwright-core/lib/inprocess.js +20 -0
  301. data/node_modules/playwright-core/lib/outofprocess.js +67 -0
  302. data/node_modules/playwright-core/lib/protocol/debug.js +27 -0
  303. data/node_modules/playwright-core/lib/protocol/serializers.js +173 -0
  304. data/node_modules/playwright-core/lib/protocol/transport.js +82 -0
  305. data/node_modules/playwright-core/lib/protocol/validator.js +2694 -0
  306. data/node_modules/playwright-core/lib/protocol/validatorPrimitives.js +139 -0
  307. data/node_modules/playwright-core/lib/remote/playwrightConnection.js +274 -0
  308. data/node_modules/playwright-core/lib/remote/playwrightServer.js +110 -0
  309. data/node_modules/playwright-core/lib/server/accessibility.js +62 -0
  310. data/node_modules/playwright-core/lib/server/android/android.js +441 -0
  311. data/node_modules/playwright-core/lib/server/android/backendAdb.js +172 -0
  312. data/node_modules/playwright-core/lib/server/artifact.js +104 -0
  313. data/node_modules/playwright-core/lib/server/bidi/bidiBrowser.js +296 -0
  314. data/node_modules/playwright-core/lib/server/bidi/bidiConnection.js +206 -0
  315. data/node_modules/playwright-core/lib/server/bidi/bidiExecutionContext.js +162 -0
  316. data/node_modules/playwright-core/lib/server/bidi/bidiFirefox.js +110 -0
  317. data/node_modules/playwright-core/lib/server/bidi/bidiInput.js +174 -0
  318. data/node_modules/playwright-core/lib/server/bidi/bidiNetworkManager.js +304 -0
  319. data/node_modules/playwright-core/lib/server/bidi/bidiPage.js +456 -0
  320. data/node_modules/playwright-core/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
  321. data/node_modules/playwright-core/lib/server/bidi/third_party/bidiKeyboard.js +238 -0
  322. data/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocol.js +139 -0
  323. data/node_modules/playwright-core/lib/server/bidi/third_party/bidiSerializer.js +144 -0
  324. data/node_modules/playwright-core/lib/server/browser.js +137 -0
  325. data/node_modules/playwright-core/lib/server/browserContext.js +684 -0
  326. data/node_modules/playwright-core/lib/server/browserType.js +307 -0
  327. data/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
  328. data/node_modules/playwright-core/lib/server/chromium/chromium.js +362 -0
  329. data/node_modules/playwright-core/lib/server/chromium/chromiumSwitches.js +44 -0
  330. data/node_modules/playwright-core/lib/server/chromium/crAccessibility.js +237 -0
  331. data/node_modules/playwright-core/lib/server/chromium/crBrowser.js +515 -0
  332. data/node_modules/playwright-core/lib/server/chromium/crConnection.js +228 -0
  333. data/node_modules/playwright-core/lib/server/chromium/crCoverage.js +246 -0
  334. data/node_modules/playwright-core/lib/server/chromium/crDevTools.js +104 -0
  335. data/node_modules/playwright-core/lib/server/chromium/crDragDrop.js +143 -0
  336. data/node_modules/playwright-core/lib/server/chromium/crExecutionContext.js +156 -0
  337. data/node_modules/playwright-core/lib/server/chromium/crInput.js +171 -0
  338. data/node_modules/playwright-core/lib/server/chromium/crNetworkManager.js +767 -0
  339. data/node_modules/playwright-core/lib/server/chromium/crPage.js +1128 -0
  340. data/node_modules/playwright-core/lib/server/chromium/crPdf.js +153 -0
  341. data/node_modules/playwright-core/lib/server/chromium/crProtocolHelper.js +133 -0
  342. data/node_modules/playwright-core/lib/server/chromium/crServiceWorker.js +112 -0
  343. data/node_modules/playwright-core/lib/server/chromium/defaultFontFamilies.js +145 -0
  344. data/node_modules/playwright-core/lib/server/chromium/videoRecorder.js +155 -0
  345. data/node_modules/playwright-core/lib/server/clock.js +125 -0
  346. data/node_modules/playwright-core/lib/server/codegen/csharp.js +299 -0
  347. data/node_modules/playwright-core/lib/server/codegen/java.js +235 -0
  348. data/node_modules/playwright-core/lib/server/codegen/javascript.js +223 -0
  349. data/node_modules/playwright-core/lib/server/codegen/jsonl.js +47 -0
  350. data/node_modules/playwright-core/lib/server/codegen/language.js +76 -0
  351. data/node_modules/playwright-core/lib/server/codegen/languages.js +30 -0
  352. data/node_modules/playwright-core/lib/server/codegen/python.js +265 -0
  353. data/node_modules/playwright-core/lib/server/codegen/types.js +5 -0
  354. data/node_modules/playwright-core/lib/server/console.js +57 -0
  355. data/node_modules/playwright-core/lib/server/cookieStore.js +112 -0
  356. data/node_modules/playwright-core/lib/server/debugController.js +234 -0
  357. data/node_modules/playwright-core/lib/server/debugger.js +132 -0
  358. data/node_modules/playwright-core/lib/server/deviceDescriptors.js +26 -0
  359. data/node_modules/playwright-core/lib/server/deviceDescriptorsSource.json +1669 -0
  360. data/node_modules/playwright-core/lib/server/dialog.js +70 -0
  361. data/node_modules/playwright-core/lib/server/dispatchers/androidDispatcher.js +193 -0
  362. data/node_modules/playwright-core/lib/server/dispatchers/artifactDispatcher.js +118 -0
  363. data/node_modules/playwright-core/lib/server/dispatchers/browserContextDispatcher.js +351 -0
  364. data/node_modules/playwright-core/lib/server/dispatchers/browserDispatcher.js +170 -0
  365. data/node_modules/playwright-core/lib/server/dispatchers/browserTypeDispatcher.js +55 -0
  366. data/node_modules/playwright-core/lib/server/dispatchers/cdpSessionDispatcher.js +48 -0
  367. data/node_modules/playwright-core/lib/server/dispatchers/debugControllerDispatcher.js +103 -0
  368. data/node_modules/playwright-core/lib/server/dispatchers/dialogDispatcher.js +44 -0
  369. data/node_modules/playwright-core/lib/server/dispatchers/dispatcher.js +395 -0
  370. data/node_modules/playwright-core/lib/server/dispatchers/electronDispatcher.js +93 -0
  371. data/node_modules/playwright-core/lib/server/dispatchers/elementHandlerDispatcher.js +228 -0
  372. data/node_modules/playwright-core/lib/server/dispatchers/frameDispatcher.js +286 -0
  373. data/node_modules/playwright-core/lib/server/dispatchers/jsHandleDispatcher.js +102 -0
  374. data/node_modules/playwright-core/lib/server/dispatchers/jsonPipeDispatcher.js +59 -0
  375. data/node_modules/playwright-core/lib/server/dispatchers/localUtilsDispatcher.js +413 -0
  376. data/node_modules/playwright-core/lib/server/dispatchers/networkDispatchers.js +221 -0
  377. data/node_modules/playwright-core/lib/server/dispatchers/pageDispatcher.js +358 -0
  378. data/node_modules/playwright-core/lib/server/dispatchers/playwrightDispatcher.js +106 -0
  379. data/node_modules/playwright-core/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  380. data/node_modules/playwright-core/lib/server/dispatchers/streamDispatcher.js +62 -0
  381. data/node_modules/playwright-core/lib/server/dispatchers/tracingDispatcher.js +54 -0
  382. data/node_modules/playwright-core/lib/server/dispatchers/writableStreamDispatcher.js +58 -0
  383. data/node_modules/playwright-core/lib/server/dom.js +845 -0
  384. data/node_modules/playwright-core/lib/server/download.js +53 -0
  385. data/node_modules/playwright-core/lib/server/electron/electron.js +296 -0
  386. data/node_modules/playwright-core/lib/server/electron/loader.js +57 -0
  387. data/node_modules/playwright-core/lib/server/errors.js +68 -0
  388. data/node_modules/playwright-core/lib/server/fetch.js +660 -0
  389. data/node_modules/playwright-core/lib/server/fileChooser.js +42 -0
  390. data/node_modules/playwright-core/lib/server/fileUploadUtils.js +75 -0
  391. data/node_modules/playwright-core/lib/server/firefox/ffAccessibility.js +216 -0
  392. data/node_modules/playwright-core/lib/server/firefox/ffBrowser.js +458 -0
  393. data/node_modules/playwright-core/lib/server/firefox/ffConnection.js +168 -0
  394. data/node_modules/playwright-core/lib/server/firefox/ffExecutionContext.js +138 -0
  395. data/node_modules/playwright-core/lib/server/firefox/ffInput.js +150 -0
  396. data/node_modules/playwright-core/lib/server/firefox/ffNetworkManager.js +233 -0
  397. data/node_modules/playwright-core/lib/server/firefox/ffPage.js +556 -0
  398. data/node_modules/playwright-core/lib/server/firefox/firefox.js +110 -0
  399. data/node_modules/playwright-core/lib/server/formData.js +75 -0
  400. data/node_modules/playwright-core/lib/server/frameSelectors.js +171 -0
  401. data/node_modules/playwright-core/lib/server/frames.js +1654 -0
  402. data/node_modules/playwright-core/lib/server/har/harRecorder.js +139 -0
  403. data/node_modules/playwright-core/lib/server/har/harTracer.js +531 -0
  404. data/node_modules/playwright-core/lib/server/helper.js +103 -0
  405. data/node_modules/playwright-core/lib/server/index.js +114 -0
  406. data/node_modules/playwright-core/lib/server/input.js +311 -0
  407. data/node_modules/playwright-core/lib/server/instrumentation.js +70 -0
  408. data/node_modules/playwright-core/lib/server/isomorphic/utilityScriptSerializers.js +226 -0
  409. data/node_modules/playwright-core/lib/server/javascript.js +306 -0
  410. data/node_modules/playwright-core/lib/server/launchApp.js +91 -0
  411. data/node_modules/playwright-core/lib/server/macEditingCommands.js +139 -0
  412. data/node_modules/playwright-core/lib/server/network.js +617 -0
  413. data/node_modules/playwright-core/lib/server/page.js +825 -0
  414. data/node_modules/playwright-core/lib/server/pipeTransport.js +85 -0
  415. data/node_modules/playwright-core/lib/server/playwright.js +85 -0
  416. data/node_modules/playwright-core/lib/server/progress.js +102 -0
  417. data/node_modules/playwright-core/lib/server/protocolError.js +49 -0
  418. data/node_modules/playwright-core/lib/server/recorder/contextRecorder.js +316 -0
  419. data/node_modules/playwright-core/lib/server/recorder/recorderActions.js +5 -0
  420. data/node_modules/playwright-core/lib/server/recorder/recorderApp.js +190 -0
  421. data/node_modules/playwright-core/lib/server/recorder/recorderCollection.js +127 -0
  422. data/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +177 -0
  423. data/node_modules/playwright-core/lib/server/recorder/recorderUtils.js +71 -0
  424. data/node_modules/playwright-core/lib/server/recorder/throttledFile.js +46 -0
  425. data/node_modules/playwright-core/lib/server/recorder.js +324 -0
  426. data/node_modules/playwright-core/lib/server/registry/browserFetcher.js +168 -0
  427. data/node_modules/playwright-core/lib/server/registry/dependencies.js +322 -0
  428. data/node_modules/playwright-core/lib/server/registry/index.js +924 -0
  429. data/node_modules/playwright-core/lib/server/registry/nativeDeps.js +490 -0
  430. data/node_modules/playwright-core/lib/server/registry/oopDownloadBrowserMain.js +138 -0
  431. data/node_modules/playwright-core/lib/server/screenshotter.js +348 -0
  432. data/node_modules/playwright-core/lib/server/selectors.js +73 -0
  433. data/node_modules/playwright-core/lib/server/socksClientCertificatesInterceptor.js +328 -0
  434. data/node_modules/playwright-core/lib/server/socksInterceptor.js +100 -0
  435. data/node_modules/playwright-core/lib/server/trace/recorder/snapshotter.js +171 -0
  436. data/node_modules/playwright-core/lib/server/trace/recorder/snapshotterInjected.js +493 -0
  437. data/node_modules/playwright-core/lib/server/trace/recorder/tracing.js +486 -0
  438. data/node_modules/playwright-core/lib/server/trace/test/inMemorySnapshotter.js +93 -0
  439. data/node_modules/playwright-core/lib/server/trace/viewer/traceViewer.js +216 -0
  440. data/node_modules/playwright-core/lib/server/transport.js +191 -0
  441. data/node_modules/playwright-core/lib/server/types.js +24 -0
  442. data/node_modules/playwright-core/lib/server/usKeyboardLayout.js +555 -0
  443. data/node_modules/playwright-core/lib/server/webkit/webkit.js +87 -0
  444. data/node_modules/playwright-core/lib/server/webkit/wkAccessibility.js +194 -0
  445. data/node_modules/playwright-core/lib/server/webkit/wkBrowser.js +328 -0
  446. data/node_modules/playwright-core/lib/server/webkit/wkConnection.js +173 -0
  447. data/node_modules/playwright-core/lib/server/webkit/wkExecutionContext.js +146 -0
  448. data/node_modules/playwright-core/lib/server/webkit/wkInput.js +169 -0
  449. data/node_modules/playwright-core/lib/server/webkit/wkInterceptableRequest.js +162 -0
  450. data/node_modules/playwright-core/lib/server/webkit/wkPage.js +1216 -0
  451. data/node_modules/playwright-core/lib/server/webkit/wkProvisionalPage.js +94 -0
  452. data/node_modules/playwright-core/lib/server/webkit/wkWorkers.js +104 -0
  453. data/node_modules/playwright-core/lib/third_party/diff_match_patch.js +2222 -0
  454. data/node_modules/playwright-core/lib/third_party/pixelmatch.js +255 -0
  455. data/node_modules/playwright-core/lib/utils/ascii.js +31 -0
  456. data/node_modules/playwright-core/lib/utils/comparators.js +171 -0
  457. data/node_modules/playwright-core/lib/utils/crypto.js +174 -0
  458. data/node_modules/playwright-core/lib/utils/debug.js +46 -0
  459. data/node_modules/playwright-core/lib/utils/debugLogger.js +91 -0
  460. data/node_modules/playwright-core/lib/utils/env.js +49 -0
  461. data/node_modules/playwright-core/lib/utils/eventsHelper.js +38 -0
  462. data/node_modules/playwright-core/lib/utils/expectUtils.js +33 -0
  463. data/node_modules/playwright-core/lib/utils/fileUtils.js +205 -0
  464. data/node_modules/playwright-core/lib/utils/happy-eyeballs.js +181 -0
  465. data/node_modules/playwright-core/lib/utils/headers.js +52 -0
  466. data/node_modules/playwright-core/lib/utils/hostPlatform.js +133 -0
  467. data/node_modules/playwright-core/lib/utils/httpServer.js +236 -0
  468. data/node_modules/playwright-core/lib/utils/index.js +368 -0
  469. data/node_modules/playwright-core/lib/utils/isomorphic/cssParser.js +250 -0
  470. data/node_modules/playwright-core/lib/utils/isomorphic/cssTokenizer.js +979 -0
  471. data/node_modules/playwright-core/lib/utils/isomorphic/locatorGenerators.js +651 -0
  472. data/node_modules/playwright-core/lib/utils/isomorphic/locatorParser.js +179 -0
  473. data/node_modules/playwright-core/lib/utils/isomorphic/locatorUtils.js +62 -0
  474. data/node_modules/playwright-core/lib/utils/isomorphic/mimeType.js +29 -0
  475. data/node_modules/playwright-core/lib/utils/isomorphic/selectorParser.js +397 -0
  476. data/node_modules/playwright-core/lib/utils/isomorphic/stringUtils.js +139 -0
  477. data/node_modules/playwright-core/lib/utils/isomorphic/traceUtils.js +39 -0
  478. data/node_modules/playwright-core/lib/utils/isomorphic/urlMatch.js +120 -0
  479. data/node_modules/playwright-core/lib/utils/linuxUtils.js +78 -0
  480. data/node_modules/playwright-core/lib/utils/manualPromise.js +109 -0
  481. data/node_modules/playwright-core/lib/utils/multimap.js +75 -0
  482. data/node_modules/playwright-core/lib/utils/network.js +160 -0
  483. data/node_modules/playwright-core/lib/utils/processLauncher.js +248 -0
  484. data/node_modules/playwright-core/lib/utils/profiler.js +53 -0
  485. data/node_modules/playwright-core/lib/utils/rtti.js +44 -0
  486. data/node_modules/playwright-core/lib/utils/semaphore.js +51 -0
  487. data/node_modules/playwright-core/lib/utils/spawnAsync.js +45 -0
  488. data/node_modules/playwright-core/lib/utils/stackTrace.js +121 -0
  489. data/node_modules/playwright-core/lib/utils/task.js +58 -0
  490. data/node_modules/playwright-core/lib/utils/time.js +37 -0
  491. data/node_modules/playwright-core/lib/utils/timeoutRunner.js +66 -0
  492. data/node_modules/playwright-core/lib/utils/traceUtils.js +44 -0
  493. data/node_modules/playwright-core/lib/utils/userAgent.js +105 -0
  494. data/node_modules/playwright-core/lib/utils/wsServer.js +127 -0
  495. data/node_modules/playwright-core/lib/utils/zipFile.js +75 -0
  496. data/node_modules/playwright-core/lib/utils/zones.js +62 -0
  497. data/node_modules/playwright-core/lib/utilsBundle.js +82 -0
  498. data/node_modules/playwright-core/lib/utilsBundleImpl/index.js +53 -0
  499. data/node_modules/playwright-core/lib/utilsBundleImpl/xdg-open +1066 -0
  500. data/node_modules/playwright-core/lib/vite/htmlReport/index.html +66 -0
  501. data/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-aW6Vz3gf.js +24 -0
  502. data/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-ez37Vkbh.css +1 -0
  503. data/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  504. data/node_modules/playwright-core/lib/vite/recorder/assets/index-B-MT5gKo.css +1 -0
  505. data/node_modules/playwright-core/lib/vite/recorder/assets/index-DCpXOVIh.js +47 -0
  506. data/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
  507. data/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  508. data/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-eFKCUIu2.js +24 -0
  509. data/node_modules/playwright-core/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +1 -0
  510. data/node_modules/playwright-core/lib/vite/traceViewer/assets/workbench-D0cirtfA.js +72 -0
  511. data/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-BeNbaIVa.js +9 -0
  512. data/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.ez37Vkbh.css +1 -0
  513. data/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  514. data/node_modules/playwright-core/lib/vite/traceViewer/embedded.BkuvsLJp.js +2 -0
  515. data/node_modules/playwright-core/lib/vite/traceViewer/embedded.html +16 -0
  516. data/node_modules/playwright-core/lib/vite/traceViewer/embedded.w7WN2u1R.css +1 -0
  517. data/node_modules/playwright-core/lib/vite/traceViewer/index.C968kAiC.js +2 -0
  518. data/node_modules/playwright-core/lib/vite/traceViewer/index.CrbWWHbf.css +1 -0
  519. data/node_modules/playwright-core/lib/vite/traceViewer/index.html +27 -0
  520. data/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  521. data/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +21 -0
  522. data/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -0
  523. data/node_modules/playwright-core/lib/vite/traceViewer/uiMode.BkFnr4V0.js +10 -0
  524. data/node_modules/playwright-core/lib/vite/traceViewer/uiMode.D3cNFP6u.css +1 -0
  525. data/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
  526. data/node_modules/playwright-core/lib/vite/traceViewer/workbench.DjbIuxix.css +1 -0
  527. data/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.DSXBckUd.css +32 -0
  528. data/node_modules/playwright-core/lib/zipBundle.js +25 -0
  529. data/node_modules/playwright-core/lib/zipBundleImpl.js +5 -0
  530. data/node_modules/playwright-core/package.json +44 -0
  531. data/node_modules/playwright-core/types/protocol.d.ts +21500 -0
  532. data/node_modules/playwright-core/types/structs.d.ts +45 -0
  533. data/node_modules/playwright-core/types/types.d.ts +21431 -0
  534. data/node_modules/undici-types/LICENSE +21 -0
  535. data/node_modules/undici-types/README.md +6 -0
  536. data/node_modules/undici-types/agent.d.ts +31 -0
  537. data/node_modules/undici-types/api.d.ts +43 -0
  538. data/node_modules/undici-types/balanced-pool.d.ts +29 -0
  539. data/node_modules/undici-types/cache.d.ts +36 -0
  540. data/node_modules/undici-types/client.d.ts +108 -0
  541. data/node_modules/undici-types/connector.d.ts +34 -0
  542. data/node_modules/undici-types/content-type.d.ts +21 -0
  543. data/node_modules/undici-types/cookies.d.ts +28 -0
  544. data/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
  545. data/node_modules/undici-types/dispatcher.d.ts +255 -0
  546. data/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
  547. data/node_modules/undici-types/errors.d.ts +149 -0
  548. data/node_modules/undici-types/eventsource.d.ts +63 -0
  549. data/node_modules/undici-types/fetch.d.ts +209 -0
  550. data/node_modules/undici-types/file.d.ts +39 -0
  551. data/node_modules/undici-types/filereader.d.ts +54 -0
  552. data/node_modules/undici-types/formdata.d.ts +108 -0
  553. data/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  554. data/node_modules/undici-types/global-origin.d.ts +7 -0
  555. data/node_modules/undici-types/handlers.d.ts +15 -0
  556. data/node_modules/undici-types/header.d.ts +4 -0
  557. data/node_modules/undici-types/index.d.ts +71 -0
  558. data/node_modules/undici-types/interceptors.d.ts +15 -0
  559. data/node_modules/undici-types/mock-agent.d.ts +50 -0
  560. data/node_modules/undici-types/mock-client.d.ts +25 -0
  561. data/node_modules/undici-types/mock-errors.d.ts +12 -0
  562. data/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  563. data/node_modules/undici-types/mock-pool.d.ts +25 -0
  564. data/node_modules/undici-types/package.json +55 -0
  565. data/node_modules/undici-types/patch.d.ts +71 -0
  566. data/node_modules/undici-types/pool-stats.d.ts +19 -0
  567. data/node_modules/undici-types/pool.d.ts +39 -0
  568. data/node_modules/undici-types/proxy-agent.d.ts +28 -0
  569. data/node_modules/undici-types/readable.d.ts +60 -0
  570. data/node_modules/undici-types/retry-agent.d.ts +8 -0
  571. data/node_modules/undici-types/retry-handler.d.ts +116 -0
  572. data/node_modules/undici-types/util.d.ts +18 -0
  573. data/node_modules/undici-types/webidl.d.ts +222 -0
  574. data/node_modules/undici-types/websocket.d.ts +152 -0
  575. data/pokeedex.gemspec +32 -0
  576. data/spec/fixtures/pokemon_com/responses/GET-200-bulbasaur.html +2262 -0
  577. data/spec/fixtures/pokemon_com/responses/GET-404-not-found.html +808 -0
  578. data/spec/pokeedex/configuration_spec.rb +37 -0
  579. data/spec/pokeedex/database_spec.rb +21 -0
  580. data/spec/pokeedex/exceptions_spec.rb +11 -0
  581. data/spec/pokeedex/pokemon/base_spec.rb +15 -0
  582. data/spec/pokeedex/pokemon/decorators/base_spec.rb +63 -0
  583. data/spec/pokeedex/pokemon/model/base_spec.rb +36 -0
  584. data/spec/pokeedex/pokemon/scrapper/fetchers/base_spec.rb +36 -0
  585. data/spec/pokeedex/pokemon/scrapper/parsers/base_spec.rb +49 -0
  586. data/spec/pokeedex/pokemon/scrapper/pokedex_spec.rb +71 -0
  587. data/spec/pokeedex/pokemon/searcher/base.rb +81 -0
  588. data/spec/pokeedex_spec.rb +7 -0
  589. data/spec/spec_helper.rb +42 -0
  590. data/yarn.lock +41 -0
  591. metadata +731 -0
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAccessibilityTree = getAccessibilityTree;
7
+ /**
8
+ * Copyright (c) Microsoft Corporation.
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+
23
+ async function getAccessibilityTree(session, needle) {
24
+ const objectId = needle ? needle._objectId : undefined;
25
+ const {
26
+ axNode
27
+ } = await session.send('Page.accessibilitySnapshot', {
28
+ objectId
29
+ });
30
+ const tree = new WKAXNode(axNode);
31
+ return {
32
+ tree,
33
+ needle: needle ? tree._findNeedle() : null
34
+ };
35
+ }
36
+ const WKRoleToARIARole = new Map(Object.entries({
37
+ 'TextField': 'textbox'
38
+ }));
39
+
40
+ // WebKit localizes role descriptions on mac, but the english versions only add noise.
41
+ const WKUnhelpfulRoleDescriptions = new Map(Object.entries({
42
+ 'WebArea': 'HTML content',
43
+ 'Summary': 'summary',
44
+ 'DescriptionList': 'description list',
45
+ 'ImageMap': 'image map',
46
+ 'ListMarker': 'list marker',
47
+ 'Video': 'video playback',
48
+ 'Mark': 'highlighted',
49
+ 'contentinfo': 'content information',
50
+ 'Details': 'details',
51
+ 'DescriptionListDetail': 'description',
52
+ 'DescriptionListTerm': 'term',
53
+ 'alertdialog': 'web alert dialog',
54
+ 'dialog': 'web dialog',
55
+ 'status': 'application status',
56
+ 'tabpanel': 'tab panel',
57
+ 'application': 'web application'
58
+ }));
59
+ class WKAXNode {
60
+ constructor(payload) {
61
+ this._payload = void 0;
62
+ this._children = void 0;
63
+ this._payload = payload;
64
+ this._children = [];
65
+ for (const payload of this._payload.children || []) this._children.push(new WKAXNode(payload));
66
+ }
67
+ children() {
68
+ return this._children;
69
+ }
70
+ _findNeedle() {
71
+ if (this._payload.found) return this;
72
+ for (const child of this._children) {
73
+ const found = child._findNeedle();
74
+ if (found) return found;
75
+ }
76
+ return null;
77
+ }
78
+ isControl() {
79
+ switch (this._payload.role) {
80
+ case 'button':
81
+ case 'checkbox':
82
+ case 'ColorWell':
83
+ case 'combobox':
84
+ case 'DisclosureTriangle':
85
+ case 'listbox':
86
+ case 'menu':
87
+ case 'menubar':
88
+ case 'menuitem':
89
+ case 'menuitemcheckbox':
90
+ case 'menuitemradio':
91
+ case 'radio':
92
+ case 'scrollbar':
93
+ case 'searchbox':
94
+ case 'slider':
95
+ case 'spinbutton':
96
+ case 'switch':
97
+ case 'tab':
98
+ case 'textbox':
99
+ case 'TextField':
100
+ case 'tree':
101
+ return true;
102
+ default:
103
+ return false;
104
+ }
105
+ }
106
+ _isTextControl() {
107
+ switch (this._payload.role) {
108
+ case 'combobox':
109
+ case 'searchfield':
110
+ case 'textbox':
111
+ case 'TextField':
112
+ return true;
113
+ }
114
+ return false;
115
+ }
116
+ _name() {
117
+ if (this._payload.role === 'text') return this._payload.value || '';
118
+ return this._payload.name || '';
119
+ }
120
+ isInteresting(insideControl) {
121
+ const {
122
+ role,
123
+ focusable
124
+ } = this._payload;
125
+ const name = this._name();
126
+ if (role === 'ScrollArea') return false;
127
+ if (role === 'WebArea') return true;
128
+ if (focusable || role === 'MenuListOption') return true;
129
+
130
+ // If it's not focusable but has a control role, then it's interesting.
131
+ if (this.isControl()) return true;
132
+
133
+ // A non focusable child of a control is not interesting
134
+ if (insideControl) return false;
135
+ return this.isLeafNode() && !!name;
136
+ }
137
+ _hasRedundantTextChild() {
138
+ if (this._children.length !== 1) return false;
139
+ const child = this._children[0];
140
+ return child._payload.role === 'text' && this._payload.name === child._payload.value;
141
+ }
142
+ isLeafNode() {
143
+ if (!this._children.length) return true;
144
+ // WebKit on Linux ignores everything inside text controls, normalize this behavior
145
+ if (this._isTextControl()) return true;
146
+ // WebKit for mac has text nodes inside heading, li, menuitem, a, and p nodes
147
+ if (this._hasRedundantTextChild()) return true;
148
+ return false;
149
+ }
150
+ serialize() {
151
+ const node = {
152
+ role: WKRoleToARIARole.get(this._payload.role) || this._payload.role,
153
+ name: this._name()
154
+ };
155
+ if ('description' in this._payload && this._payload.description !== node.name) node.description = this._payload.description;
156
+ if ('roledescription' in this._payload) {
157
+ const roledescription = this._payload.roledescription;
158
+ if (roledescription !== this._payload.role && WKUnhelpfulRoleDescriptions.get(this._payload.role) !== roledescription) node.roledescription = roledescription;
159
+ }
160
+ if ('value' in this._payload && this._payload.role !== 'text') {
161
+ if (typeof this._payload.value === 'string') node.valueString = this._payload.value;else if (typeof this._payload.value === 'number') node.valueNumber = this._payload.value;
162
+ }
163
+ if ('checked' in this._payload) node.checked = this._payload.checked === 'true' ? 'checked' : this._payload.checked === 'false' ? 'unchecked' : 'mixed';
164
+ if ('pressed' in this._payload) node.pressed = this._payload.pressed === 'true' ? 'pressed' : this._payload.pressed === 'false' ? 'released' : 'mixed';
165
+ const userStringProperties = ['keyshortcuts', 'valuetext'];
166
+ for (const userStringProperty of userStringProperties) {
167
+ if (!(userStringProperty in this._payload)) continue;
168
+ node[userStringProperty] = this._payload[userStringProperty];
169
+ }
170
+ const booleanProperties = ['disabled', 'expanded', 'focused', 'modal', 'multiselectable', 'readonly', 'required', 'selected'];
171
+ for (const booleanProperty of booleanProperties) {
172
+ // WebArea and ScrollArea treat focus differently than other nodes. They report whether their frame has focus,
173
+ // not whether focus is specifically on the root node.
174
+ if (booleanProperty === 'focused' && (this._payload.role === 'WebArea' || this._payload.role === 'ScrollArea')) continue;
175
+ const value = this._payload[booleanProperty];
176
+ if (!value) continue;
177
+ node[booleanProperty] = value;
178
+ }
179
+ const numericalProperties = ['level', 'valuemax', 'valuemin'];
180
+ for (const numericalProperty of numericalProperties) {
181
+ if (!(numericalProperty in this._payload)) continue;
182
+ node[numericalProperty] = this._payload[numericalProperty];
183
+ }
184
+ const tokenProperties = ['autocomplete', 'haspopup', 'invalid'];
185
+ for (const tokenProperty of tokenProperties) {
186
+ const value = this._payload[tokenProperty];
187
+ if (!value || value === 'false') continue;
188
+ node[tokenProperty] = value;
189
+ }
190
+ const orientationIsApplicable = new Set(['ScrollArea', 'scrollbar', 'listbox', 'combobox', 'menu', 'tree', 'separator', 'slider', 'tablist', 'toolbar']);
191
+ if (this._payload.orientation && orientationIsApplicable.has(this._payload.role)) node.orientation = this._payload.orientation;
192
+ return node;
193
+ }
194
+ }
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WKBrowserContext = exports.WKBrowser = void 0;
7
+ var _browser = require("../browser");
8
+ var _browserContext = require("../browserContext");
9
+ var _utils = require("../../utils");
10
+ var network = _interopRequireWildcard(require("../network"));
11
+ var _wkConnection = require("./wkConnection");
12
+ var _wkPage = require("./wkPage");
13
+ var _errors = require("../errors");
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ /**
17
+ * Copyright 2017 Google Inc. All rights reserved.
18
+ * Modifications copyright (c) Microsoft Corporation.
19
+ *
20
+ * Licensed under the Apache License, Version 2.0 (the "License");
21
+ * you may not use this file except in compliance with the License.
22
+ * You may obtain a copy of the License at
23
+ *
24
+ * http://www.apache.org/licenses/LICENSE-2.0
25
+ *
26
+ * Unless required by applicable law or agreed to in writing, software
27
+ * distributed under the License is distributed on an "AS IS" BASIS,
28
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
+ * See the License for the specific language governing permissions and
30
+ * limitations under the License.
31
+ */
32
+
33
+ const DEFAULT_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15';
34
+ const BROWSER_VERSION = '18.0';
35
+ class WKBrowser extends _browser.Browser {
36
+ static async connect(parent, transport, options) {
37
+ const browser = new WKBrowser(parent, transport, options);
38
+ if (options.__testHookOnConnectToBrowser) await options.__testHookOnConnectToBrowser();
39
+ const promises = [browser._browserSession.send('Playwright.enable')];
40
+ if (options.persistent) {
41
+ var _options$persistent;
42
+ (_options$persistent = options.persistent).userAgent || (_options$persistent.userAgent = DEFAULT_USER_AGENT);
43
+ browser._defaultContext = new WKBrowserContext(browser, undefined, options.persistent);
44
+ promises.push(browser._defaultContext._initialize());
45
+ }
46
+ await Promise.all(promises);
47
+ return browser;
48
+ }
49
+ constructor(parent, transport, options) {
50
+ super(parent, options);
51
+ this._connection = void 0;
52
+ this._browserSession = void 0;
53
+ this._contexts = new Map();
54
+ this._wkPages = new Map();
55
+ this._connection = new _wkConnection.WKConnection(transport, this._onDisconnect.bind(this), options.protocolLogger, options.browserLogsCollector);
56
+ this._browserSession = this._connection.browserSession;
57
+ this._browserSession.on('Playwright.pageProxyCreated', this._onPageProxyCreated.bind(this));
58
+ this._browserSession.on('Playwright.pageProxyDestroyed', this._onPageProxyDestroyed.bind(this));
59
+ this._browserSession.on('Playwright.provisionalLoadFailed', event => this._onProvisionalLoadFailed(event));
60
+ this._browserSession.on('Playwright.windowOpen', event => this._onWindowOpen(event));
61
+ this._browserSession.on('Playwright.downloadCreated', this._onDownloadCreated.bind(this));
62
+ this._browserSession.on('Playwright.downloadFilenameSuggested', this._onDownloadFilenameSuggested.bind(this));
63
+ this._browserSession.on('Playwright.downloadFinished', this._onDownloadFinished.bind(this));
64
+ this._browserSession.on('Playwright.screencastFinished', this._onScreencastFinished.bind(this));
65
+ this._browserSession.on(_wkConnection.kPageProxyMessageReceived, this._onPageProxyMessageReceived.bind(this));
66
+ }
67
+ _onDisconnect() {
68
+ for (const wkPage of this._wkPages.values()) wkPage.didClose();
69
+ this._wkPages.clear();
70
+ for (const video of this._idToVideo.values()) video.artifact.reportFinished(new _errors.TargetClosedError());
71
+ this._idToVideo.clear();
72
+ this._didClose();
73
+ }
74
+ async doCreateNewContext(options) {
75
+ const createOptions = options.proxy ? {
76
+ // Enable socks5 hostname resolution on Windows. Workaround can be removed once fixed upstream.
77
+ // See https://github.com/microsoft/playwright/issues/20451
78
+ proxyServer: process.platform === 'win32' ? options.proxy.server.replace(/^socks5:\/\//, 'socks5h://') : options.proxy.server,
79
+ proxyBypassList: options.proxy.bypass
80
+ } : undefined;
81
+ const {
82
+ browserContextId
83
+ } = await this._browserSession.send('Playwright.createContext', createOptions);
84
+ options.userAgent = options.userAgent || DEFAULT_USER_AGENT;
85
+ const context = new WKBrowserContext(this, browserContextId, options);
86
+ await context._initialize();
87
+ this._contexts.set(browserContextId, context);
88
+ return context;
89
+ }
90
+ contexts() {
91
+ return Array.from(this._contexts.values());
92
+ }
93
+ version() {
94
+ return BROWSER_VERSION;
95
+ }
96
+ userAgent() {
97
+ return DEFAULT_USER_AGENT;
98
+ }
99
+ _onDownloadCreated(payload) {
100
+ const page = this._wkPages.get(payload.pageProxyId);
101
+ if (!page) return;
102
+ // In some cases, e.g. blob url download, we receive only frameScheduledNavigation
103
+ // but no signals that the navigation was canceled and replaced by download. Fix it
104
+ // here by simulating cancelled provisional load which matches downloads from network.
105
+ //
106
+ // TODO: this is racy, because download might be unrelated any navigation, and we will
107
+ // abort navigation that is still running. We should be able to fix this by
108
+ // instrumenting policy decision start/proceed/cancel.
109
+ page._page._frameManager.frameAbortedNavigation(payload.frameId, 'Download is starting');
110
+ let originPage = page._initializedPage;
111
+ // If it's a new window download, report it on the opener page.
112
+ if (!originPage) {
113
+ // Resume the page creation with an error. The page will automatically close right
114
+ // after the download begins.
115
+ page._firstNonInitialNavigationCommittedReject(new Error('Starting new page download'));
116
+ if (page._opener) originPage = page._opener._initializedPage;
117
+ }
118
+ if (!originPage) return;
119
+ this._downloadCreated(originPage, payload.uuid, payload.url);
120
+ }
121
+ _onDownloadFilenameSuggested(payload) {
122
+ this._downloadFilenameSuggested(payload.uuid, payload.suggestedFilename);
123
+ }
124
+ _onDownloadFinished(payload) {
125
+ this._downloadFinished(payload.uuid, payload.error);
126
+ }
127
+ _onScreencastFinished(payload) {
128
+ var _this$_takeVideo;
129
+ (_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 || _this$_takeVideo.reportFinished();
130
+ }
131
+ _onPageProxyCreated(event) {
132
+ const pageProxyId = event.pageProxyId;
133
+ let context = null;
134
+ if (event.browserContextId) {
135
+ // FIXME: we don't know about the default context id, so assume that all targets from
136
+ // unknown contexts are created in the 'default' context which can in practice be represented
137
+ // by multiple actual contexts in WebKit. Solving this properly will require adding context
138
+ // lifecycle events.
139
+ context = this._contexts.get(event.browserContextId) || null;
140
+ }
141
+ if (!context) context = this._defaultContext;
142
+ if (!context) return;
143
+ const pageProxySession = new _wkConnection.WKSession(this._connection, pageProxyId, message => {
144
+ this._connection.rawSend({
145
+ ...message,
146
+ pageProxyId
147
+ });
148
+ });
149
+ const opener = event.openerId ? this._wkPages.get(event.openerId) : undefined;
150
+ const wkPage = new _wkPage.WKPage(context, pageProxySession, opener || null);
151
+ this._wkPages.set(pageProxyId, wkPage);
152
+ }
153
+ _onPageProxyDestroyed(event) {
154
+ const pageProxyId = event.pageProxyId;
155
+ const wkPage = this._wkPages.get(pageProxyId);
156
+ if (!wkPage) return;
157
+ wkPage.didClose();
158
+ this._wkPages.delete(pageProxyId);
159
+ }
160
+ _onPageProxyMessageReceived(event) {
161
+ const wkPage = this._wkPages.get(event.pageProxyId);
162
+ if (!wkPage) return;
163
+ wkPage.dispatchMessageToSession(event.message);
164
+ }
165
+ _onProvisionalLoadFailed(event) {
166
+ const wkPage = this._wkPages.get(event.pageProxyId);
167
+ if (!wkPage) return;
168
+ wkPage.handleProvisionalLoadFailed(event);
169
+ }
170
+ _onWindowOpen(event) {
171
+ const wkPage = this._wkPages.get(event.pageProxyId);
172
+ if (!wkPage) return;
173
+ wkPage.handleWindowOpen(event);
174
+ }
175
+ isConnected() {
176
+ return !this._connection.isClosed();
177
+ }
178
+ }
179
+ exports.WKBrowser = WKBrowser;
180
+ class WKBrowserContext extends _browserContext.BrowserContext {
181
+ constructor(browser, browserContextId, options) {
182
+ super(browser, options, browserContextId);
183
+ this._validateEmulatedViewport(options.viewport);
184
+ this._authenticateProxyViaHeader();
185
+ }
186
+ async _initialize() {
187
+ (0, _utils.assert)(!this._wkPages().length);
188
+ const browserContextId = this._browserContextId;
189
+ const promises = [super._initialize()];
190
+ promises.push(this._browser._browserSession.send('Playwright.setDownloadBehavior', {
191
+ behavior: this._options.acceptDownloads === 'accept' ? 'allow' : 'deny',
192
+ downloadPath: this._browser.options.downloadsPath,
193
+ browserContextId
194
+ }));
195
+ if (this._options.ignoreHTTPSErrors) promises.push(this._browser._browserSession.send('Playwright.setIgnoreCertificateErrors', {
196
+ browserContextId,
197
+ ignore: true
198
+ }));
199
+ if (this._options.locale) promises.push(this._browser._browserSession.send('Playwright.setLanguages', {
200
+ browserContextId,
201
+ languages: [this._options.locale]
202
+ }));
203
+ if (this._options.geolocation) promises.push(this.setGeolocation(this._options.geolocation));
204
+ if (this._options.offline) promises.push(this.setOffline(this._options.offline));
205
+ if (this._options.httpCredentials) promises.push(this.setHTTPCredentials(this._options.httpCredentials));
206
+ await Promise.all(promises);
207
+ }
208
+ _wkPages() {
209
+ return Array.from(this._browser._wkPages.values()).filter(wkPage => wkPage._browserContext === this);
210
+ }
211
+ pages() {
212
+ return this._wkPages().map(wkPage => wkPage._initializedPage).filter(pageOrNull => !!pageOrNull);
213
+ }
214
+ async newPageDelegate() {
215
+ (0, _browserContext.assertBrowserContextIsNotOwned)(this);
216
+ const {
217
+ pageProxyId
218
+ } = await this._browser._browserSession.send('Playwright.createPage', {
219
+ browserContextId: this._browserContextId
220
+ });
221
+ return this._browser._wkPages.get(pageProxyId);
222
+ }
223
+ async doGetCookies(urls) {
224
+ const {
225
+ cookies
226
+ } = await this._browser._browserSession.send('Playwright.getAllCookies', {
227
+ browserContextId: this._browserContextId
228
+ });
229
+ return network.filterCookies(cookies.map(c => {
230
+ const copy = {
231
+ ...c
232
+ };
233
+ copy.expires = c.expires === -1 ? -1 : c.expires / 1000;
234
+ delete copy.session;
235
+ return copy;
236
+ }), urls);
237
+ }
238
+ async addCookies(cookies) {
239
+ const cc = network.rewriteCookies(cookies).map(c => ({
240
+ ...c,
241
+ session: c.expires === -1 || c.expires === undefined,
242
+ expires: c.expires && c.expires !== -1 ? c.expires * 1000 : c.expires
243
+ }));
244
+ await this._browser._browserSession.send('Playwright.setCookies', {
245
+ cookies: cc,
246
+ browserContextId: this._browserContextId
247
+ });
248
+ }
249
+ async doClearCookies() {
250
+ await this._browser._browserSession.send('Playwright.deleteAllCookies', {
251
+ browserContextId: this._browserContextId
252
+ });
253
+ }
254
+ async doGrantPermissions(origin, permissions) {
255
+ await Promise.all(this.pages().map(page => page._delegate._grantPermissions(origin, permissions)));
256
+ }
257
+ async doClearPermissions() {
258
+ await Promise.all(this.pages().map(page => page._delegate._clearPermissions()));
259
+ }
260
+ async setGeolocation(geolocation) {
261
+ (0, _browserContext.verifyGeolocation)(geolocation);
262
+ this._options.geolocation = geolocation;
263
+ const payload = geolocation ? {
264
+ ...geolocation,
265
+ timestamp: Date.now()
266
+ } : undefined;
267
+ await this._browser._browserSession.send('Playwright.setGeolocationOverride', {
268
+ browserContextId: this._browserContextId,
269
+ geolocation: payload
270
+ });
271
+ }
272
+ async setExtraHTTPHeaders(headers) {
273
+ this._options.extraHTTPHeaders = headers;
274
+ for (const page of this.pages()) await page._delegate.updateExtraHTTPHeaders();
275
+ }
276
+ async setUserAgent(userAgent) {
277
+ this._options.userAgent = userAgent;
278
+ for (const page of this.pages()) await page._delegate.updateUserAgent();
279
+ }
280
+ async setOffline(offline) {
281
+ this._options.offline = offline;
282
+ for (const page of this.pages()) await page._delegate.updateOffline();
283
+ }
284
+ async doSetHTTPCredentials(httpCredentials) {
285
+ this._options.httpCredentials = httpCredentials;
286
+ for (const page of this.pages()) await page._delegate.updateHttpCredentials();
287
+ }
288
+ async doAddInitScript(initScript) {
289
+ for (const page of this.pages()) await page._delegate._updateBootstrapScript();
290
+ }
291
+ async doRemoveNonInternalInitScripts() {
292
+ for (const page of this.pages()) await page._delegate._updateBootstrapScript();
293
+ }
294
+ async doUpdateRequestInterception() {
295
+ for (const page of this.pages()) await page._delegate.updateRequestInterception();
296
+ }
297
+ onClosePersistent() {}
298
+ async clearCache() {
299
+ // We use ephemeral contexts so there is no disk cache.
300
+ await this._browser._browserSession.send('Playwright.clearMemoryCache', {
301
+ browserContextId: this._browserContextId
302
+ });
303
+ }
304
+ async doClose(reason) {
305
+ if (!this._browserContextId) {
306
+ await Promise.all(this._wkPages().map(wkPage => wkPage._stopVideo()));
307
+ // Closing persistent context should close the browser.
308
+ await this._browser.close({
309
+ reason
310
+ });
311
+ } else {
312
+ await this._browser._browserSession.send('Playwright.deleteContext', {
313
+ browserContextId: this._browserContextId
314
+ });
315
+ this._browser._contexts.delete(this._browserContextId);
316
+ }
317
+ }
318
+ async cancelDownload(uuid) {
319
+ await this._browser._browserSession.send('Playwright.cancelDownload', {
320
+ uuid
321
+ });
322
+ }
323
+ _validateEmulatedViewport(viewportSize) {
324
+ if (!viewportSize) return;
325
+ if (process.platform === 'win32' && this._browser.options.headful && (viewportSize.width < 250 || viewportSize.height < 240)) throw new Error(`WebKit on Windows has a minimal viewport of 250x240.`);
326
+ }
327
+ }
328
+ exports.WKBrowserContext = WKBrowserContext;
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.kPageProxyMessageReceived = exports.kBrowserCloseMessageId = exports.WKSession = exports.WKConnection = void 0;
7
+ var _events = require("events");
8
+ var _utils = require("../../utils");
9
+ var _debugLogger = require("../../utils/debugLogger");
10
+ var _helper = require("../helper");
11
+ var _protocolError = require("../protocolError");
12
+ /**
13
+ * Copyright 2017 Google Inc. All rights reserved.
14
+ * Modifications copyright (c) Microsoft Corporation.
15
+ *
16
+ * Licensed under the Apache License, Version 2.0 (the "License");
17
+ * you may not use this file except in compliance with the License.
18
+ * You may obtain a copy of the License at
19
+ *
20
+ * http://www.apache.org/licenses/LICENSE-2.0
21
+ *
22
+ * Unless required by applicable law or agreed to in writing, software
23
+ * distributed under the License is distributed on an "AS IS" BASIS,
24
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
+ * See the License for the specific language governing permissions and
26
+ * limitations under the License.
27
+ */
28
+
29
+ // WKPlaywright uses this special id to issue Browser.close command which we
30
+ // should ignore.
31
+ const kBrowserCloseMessageId = exports.kBrowserCloseMessageId = -9999;
32
+
33
+ // We emulate kPageProxyMessageReceived message to unify it with Browser.pageProxyCreated
34
+ // and Browser.pageProxyDestroyed for easier management.
35
+ const kPageProxyMessageReceived = exports.kPageProxyMessageReceived = Symbol('kPageProxyMessageReceived');
36
+ class WKConnection {
37
+ constructor(transport, onDisconnect, protocolLogger, browserLogsCollector) {
38
+ this._transport = void 0;
39
+ this._onDisconnect = void 0;
40
+ this._protocolLogger = void 0;
41
+ this._browserLogsCollector = void 0;
42
+ this._browserDisconnectedLogs = void 0;
43
+ this._lastId = 0;
44
+ this._closed = false;
45
+ this.browserSession = void 0;
46
+ this._transport = transport;
47
+ this._onDisconnect = onDisconnect;
48
+ this._protocolLogger = protocolLogger;
49
+ this._browserLogsCollector = browserLogsCollector;
50
+ this.browserSession = new WKSession(this, '', message => {
51
+ this.rawSend(message);
52
+ });
53
+ this._transport.onmessage = this._dispatchMessage.bind(this);
54
+ // onclose should be set last, since it can be immediately called.
55
+ this._transport.onclose = this._onClose.bind(this);
56
+ }
57
+ nextMessageId() {
58
+ return ++this._lastId;
59
+ }
60
+ rawSend(message) {
61
+ this._protocolLogger('send', message);
62
+ this._transport.send(message);
63
+ }
64
+ _dispatchMessage(message) {
65
+ this._protocolLogger('receive', message);
66
+ if (message.id === kBrowserCloseMessageId) return;
67
+ if (message.pageProxyId) {
68
+ const payload = {
69
+ message: message,
70
+ pageProxyId: message.pageProxyId
71
+ };
72
+ this.browserSession.dispatchMessage({
73
+ method: kPageProxyMessageReceived,
74
+ params: payload
75
+ });
76
+ return;
77
+ }
78
+ this.browserSession.dispatchMessage(message);
79
+ }
80
+ _onClose(reason) {
81
+ this._closed = true;
82
+ this._transport.onmessage = undefined;
83
+ this._transport.onclose = undefined;
84
+ this._browserDisconnectedLogs = _helper.helper.formatBrowserLogs(this._browserLogsCollector.recentLogs(), reason);
85
+ this.browserSession.dispose();
86
+ this._onDisconnect();
87
+ }
88
+ isClosed() {
89
+ return this._closed;
90
+ }
91
+ close() {
92
+ if (!this._closed) this._transport.close();
93
+ }
94
+ }
95
+ exports.WKConnection = WKConnection;
96
+ class WKSession extends _events.EventEmitter {
97
+ constructor(connection, sessionId, rawSend) {
98
+ super();
99
+ this.connection = void 0;
100
+ this.sessionId = void 0;
101
+ this._disposed = false;
102
+ this._rawSend = void 0;
103
+ this._callbacks = new Map();
104
+ this._crashed = false;
105
+ this.on = void 0;
106
+ this.addListener = void 0;
107
+ this.off = void 0;
108
+ this.removeListener = void 0;
109
+ this.once = void 0;
110
+ this.setMaxListeners(0);
111
+ this.connection = connection;
112
+ this.sessionId = sessionId;
113
+ this._rawSend = rawSend;
114
+ this.on = super.on;
115
+ this.off = super.removeListener;
116
+ this.addListener = super.addListener;
117
+ this.removeListener = super.removeListener;
118
+ this.once = super.once;
119
+ }
120
+ async send(method, params) {
121
+ if (this._crashed || this._disposed || this.connection._browserDisconnectedLogs) throw new _protocolError.ProtocolError(this._crashed ? 'crashed' : 'closed', undefined, this.connection._browserDisconnectedLogs);
122
+ const id = this.connection.nextMessageId();
123
+ const messageObj = {
124
+ id,
125
+ method,
126
+ params
127
+ };
128
+ this._rawSend(messageObj);
129
+ return new Promise((resolve, reject) => {
130
+ this._callbacks.set(id, {
131
+ resolve,
132
+ reject,
133
+ error: new _protocolError.ProtocolError('error', method)
134
+ });
135
+ });
136
+ }
137
+ sendMayFail(method, params) {
138
+ return this.send(method, params).catch(error => _debugLogger.debugLogger.log('error', error));
139
+ }
140
+ markAsCrashed() {
141
+ this._crashed = true;
142
+ }
143
+ isDisposed() {
144
+ return this._disposed;
145
+ }
146
+ dispose() {
147
+ for (const callback of this._callbacks.values()) {
148
+ callback.error.type = this._crashed ? 'crashed' : 'closed';
149
+ callback.error.logs = this.connection._browserDisconnectedLogs;
150
+ callback.reject(callback.error);
151
+ }
152
+ this._callbacks.clear();
153
+ this._disposed = true;
154
+ }
155
+ dispatchMessage(object) {
156
+ if (object.id && this._callbacks.has(object.id)) {
157
+ const callback = this._callbacks.get(object.id);
158
+ this._callbacks.delete(object.id);
159
+ if (object.error) {
160
+ callback.error.setMessage(object.error.message);
161
+ callback.reject(callback.error);
162
+ } else {
163
+ callback.resolve(object.result);
164
+ }
165
+ } else if (object.id && !object.error) {
166
+ // Response might come after session has been disposed and rejected all callbacks.
167
+ (0, _utils.assert)(this.isDisposed());
168
+ } else {
169
+ Promise.resolve().then(() => this.emit(object.method, object.params));
170
+ }
171
+ }
172
+ }
173
+ exports.WKSession = WKSession;