@remotion/renderer 3.0.25 → 3.0.28

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 (301) hide show
  1. package/dist/assets/calculate-asset-positions.d.ts.map +1 -0
  2. package/dist/assets/calculate-asset-positions.js.map +1 -0
  3. package/dist/assets/calculate-atempo.d.ts.map +1 -0
  4. package/dist/assets/calculate-atempo.js.map +1 -0
  5. package/dist/assets/convert-assets-to-file-urls.d.ts.map +1 -0
  6. package/dist/assets/convert-assets-to-file-urls.js.map +1 -0
  7. package/dist/assets/download-and-map-assets-to-file.d.ts +10 -8
  8. package/dist/assets/download-and-map-assets-to-file.d.ts.map +1 -0
  9. package/dist/assets/download-and-map-assets-to-file.js +67 -43
  10. package/dist/assets/download-and-map-assets-to-file.js.map +1 -0
  11. package/dist/assets/download-file.d.ts +10 -5
  12. package/dist/assets/download-file.d.ts.map +1 -0
  13. package/dist/assets/download-file.js +18 -5
  14. package/dist/assets/download-file.js.map +1 -0
  15. package/dist/assets/ffmpeg-volume-expression.d.ts +1 -2
  16. package/dist/assets/ffmpeg-volume-expression.d.ts.map +1 -0
  17. package/dist/assets/ffmpeg-volume-expression.js +2 -3
  18. package/dist/assets/ffmpeg-volume-expression.js.map +1 -0
  19. package/dist/assets/flatten-volume-array.d.ts.map +1 -0
  20. package/dist/assets/flatten-volume-array.js.map +1 -0
  21. package/dist/assets/get-audio-channels.d.ts.map +1 -0
  22. package/dist/assets/get-audio-channels.js.map +1 -0
  23. package/dist/assets/read-file.d.ts.map +1 -0
  24. package/dist/assets/read-file.js +4 -1
  25. package/dist/assets/read-file.js.map +1 -0
  26. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +1 -0
  27. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +1 -0
  28. package/dist/assets/sanitize-filename.d.ts.map +1 -0
  29. package/dist/assets/sanitize-filename.js.map +1 -0
  30. package/dist/assets/sanitize-filepath.d.ts.map +1 -0
  31. package/dist/assets/sanitize-filepath.js.map +1 -0
  32. package/dist/assets/truncate-utf8-bytes.d.ts.map +1 -0
  33. package/dist/assets/truncate-utf8-bytes.js.map +1 -0
  34. package/dist/assets/types.d.ts.map +1 -0
  35. package/dist/assets/types.js.map +1 -0
  36. package/dist/browser/Accessibility.d.ts +175 -0
  37. package/dist/browser/Accessibility.js +423 -0
  38. package/dist/browser/AriaQueryHandler.d.ts +20 -0
  39. package/dist/browser/AriaQueryHandler.js +108 -0
  40. package/dist/browser/Browser.d.ts +5 -0
  41. package/dist/browser/Browser.js +2 -1
  42. package/dist/browser/Connection.d.ts +5 -5
  43. package/dist/browser/Coverage.d.ts +180 -0
  44. package/dist/browser/Coverage.js +371 -0
  45. package/dist/browser/DOMWorld.d.ts +4 -1
  46. package/dist/browser/DOMWorld.js +11 -3
  47. package/dist/browser/Debug.d.ts +19 -0
  48. package/dist/browser/Debug.js +42 -0
  49. package/dist/browser/DeviceDescriptors.d.ts +40 -0
  50. package/dist/browser/DeviceDescriptors.js +1407 -0
  51. package/dist/browser/ExecutionContext.d.ts +2 -2
  52. package/dist/browser/FileChooser.d.ts +56 -0
  53. package/dist/browser/FileChooser.js +86 -0
  54. package/dist/browser/FrameManager.d.ts +4 -3
  55. package/dist/browser/FrameManager.js +2 -2
  56. package/dist/browser/HTTPRequest.d.ts +2 -2
  57. package/dist/browser/HTTPResponse.d.ts +2 -2
  58. package/dist/browser/HTTPResponse.js +15 -0
  59. package/dist/browser/Input.d.ts +355 -0
  60. package/dist/browser/Input.js +592 -0
  61. package/dist/browser/JSHandle.d.ts +4 -4
  62. package/dist/browser/LaunchOptions.d.ts +0 -1
  63. package/dist/browser/Launcher.js +1 -1
  64. package/dist/browser/NetworkConditions.d.ts +26 -0
  65. package/dist/browser/NetworkConditions.js +33 -0
  66. package/dist/browser/NetworkEventManager.d.ts +9 -9
  67. package/dist/browser/NetworkManager.d.ts +2 -2
  68. package/dist/browser/NetworkManager.js +1 -14
  69. package/dist/browser/NodeWebSocketTransport.d.ts +2 -2
  70. package/dist/browser/NodeWebSocketTransport.js +2 -5
  71. package/dist/browser/PDFOptions.d.ts +165 -0
  72. package/dist/browser/PDFOptions.js +34 -0
  73. package/dist/browser/PipeTransport.d.ts +10 -0
  74. package/dist/browser/PipeTransport.js +86 -0
  75. package/dist/browser/Puppeteer.d.ts +35 -0
  76. package/dist/browser/Puppeteer.js +17 -0
  77. package/dist/browser/QueryHandler.d.ts +64 -0
  78. package/dist/browser/QueryHandler.js +183 -0
  79. package/dist/browser/SecurityDetails.d.ts +55 -0
  80. package/dist/browser/SecurityDetails.js +95 -0
  81. package/dist/browser/Target.d.ts +4 -4
  82. package/dist/browser/Target.js +1 -1
  83. package/dist/browser/Tracing.d.ts +45 -0
  84. package/dist/browser/Tracing.js +136 -0
  85. package/dist/browser/USKeyboardLayout.d.ts +39 -0
  86. package/dist/browser/USKeyboardLayout.js +406 -0
  87. package/dist/browser/WebWorker.d.ts +96 -0
  88. package/dist/browser/WebWorker.js +122 -0
  89. package/dist/browser/devtools-commands.d.ts +270 -0
  90. package/dist/{faststart/options.js → browser/devtools-commands.js} +0 -0
  91. package/dist/browser/devtools-types.d.ts +1122 -0
  92. package/dist/browser/devtools-types.js +2 -0
  93. package/dist/browser/dialog.d.ts +70 -0
  94. package/dist/browser/dialog.js +114 -0
  95. package/dist/browser/fetch.d.ts +16 -0
  96. package/dist/browser/fetch.js +46 -0
  97. package/dist/browser/find-up.d.ts +4 -0
  98. package/dist/browser/find-up.js +85 -0
  99. package/dist/browser/{Page.d.ts → page.d.ts} +5 -3
  100. package/dist/browser/{Page.js → page.js} +6 -5
  101. package/dist/browser/pkg-dir.d.ts +3 -0
  102. package/dist/browser/pkg-dir.js +13 -0
  103. package/dist/browser/util.d.ts +6 -5
  104. package/dist/browser/util.js +10 -2
  105. package/dist/browser-log.d.ts.map +1 -0
  106. package/dist/browser-log.js.map +1 -0
  107. package/dist/calculate-ffmpeg-filters.d.ts.map +1 -0
  108. package/dist/calculate-ffmpeg-filters.js.map +1 -0
  109. package/dist/can-use-parallel-encoding.d.ts.map +1 -0
  110. package/dist/can-use-parallel-encoding.js.map +1 -0
  111. package/dist/chunk.d.ts.map +1 -0
  112. package/dist/chunk.js.map +1 -0
  113. package/dist/combine-videos.d.ts.map +1 -0
  114. package/dist/combine-videos.js.map +1 -0
  115. package/dist/convert-to-pcm.d.ts.map +1 -0
  116. package/dist/convert-to-pcm.js.map +1 -0
  117. package/dist/create-ffmpeg-complex-filter.d.ts.map +1 -0
  118. package/dist/create-ffmpeg-complex-filter.js.map +1 -0
  119. package/dist/create-ffmpeg-merge-filter.d.ts.map +1 -0
  120. package/dist/create-ffmpeg-merge-filter.js.map +1 -0
  121. package/dist/create-silent-audio.d.ts.map +1 -0
  122. package/dist/create-silent-audio.js.map +1 -0
  123. package/dist/cycle-browser-tabs.d.ts.map +1 -0
  124. package/dist/cycle-browser-tabs.js.map +1 -0
  125. package/dist/delay-render-embedded-stack.d.ts.map +1 -0
  126. package/dist/delay-render-embedded-stack.js.map +1 -0
  127. package/dist/delete-directory.d.ts.map +1 -0
  128. package/dist/delete-directory.js.map +1 -0
  129. package/dist/ensure-frames-in-order.d.ts.map +1 -0
  130. package/dist/ensure-frames-in-order.js.map +1 -0
  131. package/dist/ensure-output-directory.d.ts.map +1 -0
  132. package/dist/ensure-output-directory.js.map +1 -0
  133. package/dist/error-handling/handle-javascript-exception.d.ts.map +1 -0
  134. package/dist/error-handling/handle-javascript-exception.js +1 -2
  135. package/dist/error-handling/handle-javascript-exception.js.map +1 -0
  136. package/dist/error-handling/symbolicate-error.d.ts.map +1 -0
  137. package/dist/error-handling/symbolicate-error.js.map +1 -0
  138. package/dist/error-handling/symbolicateable-error.d.ts.map +1 -0
  139. package/dist/error-handling/symbolicateable-error.js.map +1 -0
  140. package/dist/extract-frame-from-video.d.ts +0 -2
  141. package/dist/extract-frame-from-video.js +4 -5
  142. package/dist/ffmpeg-filter-file.d.ts.map +1 -0
  143. package/dist/ffmpeg-filter-file.js.map +1 -0
  144. package/dist/ffmpeg-flags.d.ts.map +1 -0
  145. package/dist/ffmpeg-flags.js.map +1 -0
  146. package/dist/get-audio-codec-name.d.ts.map +1 -0
  147. package/dist/get-audio-codec-name.js.map +1 -0
  148. package/dist/get-browser-instance.d.ts.map +1 -0
  149. package/dist/get-browser-instance.js.map +1 -0
  150. package/dist/get-codec-name.d.ts.map +1 -0
  151. package/dist/get-codec-name.js.map +1 -0
  152. package/dist/get-compositions.d.ts.map +1 -0
  153. package/dist/get-compositions.js +1 -1
  154. package/dist/get-compositions.js.map +1 -0
  155. package/dist/get-concurrency.d.ts.map +1 -0
  156. package/dist/get-concurrency.js.map +1 -0
  157. package/dist/get-duration-from-frame-range.d.ts.map +1 -0
  158. package/dist/get-duration-from-frame-range.js.map +1 -0
  159. package/dist/get-extension-from-codec.d.ts.map +1 -0
  160. package/dist/get-extension-from-codec.js.map +1 -0
  161. package/dist/get-format-for-codec.d.ts +2 -0
  162. package/dist/get-format-for-codec.js +34 -0
  163. package/dist/get-frame-to-render.d.ts.map +1 -0
  164. package/dist/get-frame-to-render.js.map +1 -0
  165. package/dist/get-local-browser-executable.d.ts.map +1 -0
  166. package/dist/get-local-browser-executable.js.map +1 -0
  167. package/dist/get-port.d.ts.map +1 -0
  168. package/dist/get-port.js +5 -14
  169. package/dist/get-port.js.map +1 -0
  170. package/dist/get-prores-profile-name.d.ts.map +1 -0
  171. package/dist/get-prores-profile-name.js.map +1 -0
  172. package/dist/image-format.d.ts.map +1 -0
  173. package/dist/image-format.js.map +1 -0
  174. package/dist/index.d.ts +16 -8
  175. package/dist/index.d.ts.map +1 -0
  176. package/dist/index.js +6 -2
  177. package/dist/index.js.map +1 -0
  178. package/dist/is-serve-url.d.ts.map +1 -0
  179. package/dist/is-serve-url.js.map +1 -0
  180. package/dist/last-frame-from-video-cache.d.ts +0 -1
  181. package/dist/legacy-webpack-config.d.ts.map +1 -0
  182. package/dist/legacy-webpack-config.js.map +1 -0
  183. package/dist/make-assets-download-dir.d.ts.map +1 -0
  184. package/dist/make-assets-download-dir.js.map +1 -0
  185. package/dist/merge-audio-track.d.ts.map +1 -0
  186. package/dist/merge-audio-track.js.map +1 -0
  187. package/dist/mime-db.d.ts +6 -0
  188. package/dist/mime-db.js +8636 -0
  189. package/dist/mime-types.d.ts +2 -0
  190. package/dist/mime-types.js +89 -0
  191. package/dist/normalize-serve-url.d.ts.map +1 -0
  192. package/dist/normalize-serve-url.js.map +1 -0
  193. package/dist/offthread-video-server.js +2 -6
  194. package/dist/open-browser.d.ts.map +1 -0
  195. package/dist/open-browser.js.map +1 -0
  196. package/dist/p-limit.d.ts.map +1 -0
  197. package/dist/p-limit.js.map +1 -0
  198. package/dist/parse-browser-error-stack.d.ts.map +1 -0
  199. package/dist/parse-browser-error-stack.js.map +1 -0
  200. package/dist/parse-ffmpeg-progress.d.ts.map +1 -0
  201. package/dist/parse-ffmpeg-progress.js.map +1 -0
  202. package/dist/pool.d.ts.map +1 -0
  203. package/dist/pool.js.map +1 -0
  204. package/dist/prepare-server.d.ts.map +1 -0
  205. package/dist/prepare-server.js +5 -2
  206. package/dist/prepare-server.js.map +1 -0
  207. package/dist/preprocess-audio-track.d.ts.map +1 -0
  208. package/dist/preprocess-audio-track.js.map +1 -0
  209. package/dist/prespawn-ffmpeg.d.ts.map +1 -0
  210. package/dist/prespawn-ffmpeg.js.map +1 -0
  211. package/dist/provide-screenshot.d.ts +0 -1
  212. package/dist/provide-screenshot.d.ts.map +1 -0
  213. package/dist/provide-screenshot.js.map +1 -0
  214. package/dist/puppeteer-evaluate.d.ts.map +1 -0
  215. package/dist/puppeteer-evaluate.js.map +1 -0
  216. package/dist/puppeteer-screenshot.d.ts +0 -1
  217. package/dist/puppeteer-screenshot.d.ts.map +1 -0
  218. package/dist/puppeteer-screenshot.js.map +1 -0
  219. package/dist/render-frames.d.ts.map +1 -0
  220. package/dist/render-frames.js +39 -44
  221. package/dist/render-frames.js.map +1 -0
  222. package/dist/render-media.d.ts +2 -2
  223. package/dist/render-media.d.ts.map +1 -0
  224. package/dist/render-media.js +8 -3
  225. package/dist/render-media.js.map +1 -0
  226. package/dist/render-still.d.ts.map +1 -0
  227. package/dist/render-still.js.map +1 -0
  228. package/dist/resolve-asset-src.d.ts.map +1 -0
  229. package/dist/resolve-asset-src.js.map +1 -0
  230. package/dist/sample-rate.d.ts.map +1 -0
  231. package/dist/sample-rate.js.map +1 -0
  232. package/dist/screenshot-dom-element.d.ts +0 -1
  233. package/dist/screenshot-dom-element.d.ts.map +1 -0
  234. package/dist/screenshot-dom-element.js.map +1 -0
  235. package/dist/screenshot-task.d.ts +0 -1
  236. package/dist/screenshot-task.d.ts.map +1 -0
  237. package/dist/screenshot-task.js.map +1 -0
  238. package/dist/seek-to-frame.d.ts.map +1 -0
  239. package/dist/seek-to-frame.js +2 -2
  240. package/dist/seek-to-frame.js.map +1 -0
  241. package/dist/serve-handler/index.js +6 -6
  242. package/dist/serve-static.d.ts.map +1 -0
  243. package/dist/serve-static.js.map +1 -0
  244. package/dist/set-props-and-env.d.ts.map +1 -0
  245. package/dist/set-props-and-env.js +3 -1
  246. package/dist/set-props-and-env.js.map +1 -0
  247. package/dist/stitch-frames-to-video.d.ts +4 -3
  248. package/dist/stitch-frames-to-video.d.ts.map +1 -0
  249. package/dist/stitch-frames-to-video.js +31 -13
  250. package/dist/stitch-frames-to-video.js.map +1 -0
  251. package/dist/stringify-ffmpeg-filter.d.ts.map +1 -0
  252. package/dist/stringify-ffmpeg-filter.js +6 -7
  253. package/dist/stringify-ffmpeg-filter.js.map +1 -0
  254. package/dist/symbolicate-stacktrace.d.ts.map +1 -0
  255. package/dist/symbolicate-stacktrace.js.map +1 -0
  256. package/dist/tmp-dir.d.ts.map +1 -0
  257. package/dist/tmp-dir.js.map +1 -0
  258. package/dist/types.d.ts.map +1 -0
  259. package/dist/types.js.map +1 -0
  260. package/dist/validate-even-dimensions-with-codec.d.ts.map +1 -0
  261. package/dist/validate-even-dimensions-with-codec.js.map +1 -0
  262. package/dist/validate-ffmpeg.d.ts.map +1 -0
  263. package/dist/validate-ffmpeg.js.map +1 -0
  264. package/dist/validate-puppeteer-timeout.d.ts.map +1 -0
  265. package/dist/validate-puppeteer-timeout.js.map +1 -0
  266. package/dist/validate-scale.d.ts.map +1 -0
  267. package/dist/validate-scale.js.map +1 -0
  268. package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
  269. package/dist/wait-for-symbolication-error-to-be-done.js +34 -0
  270. package/dist/ws/ws-types.d.ts +14 -0
  271. package/dist/ws/ws-types.js +10 -0
  272. package/package.json +3 -7
  273. package/tsconfig.json +0 -1
  274. package/types/ws/index.d.ts +509 -0
  275. package/dist/abort.d.ts +0 -7
  276. package/dist/abort.js +0 -20
  277. package/dist/cancel.d.ts +0 -7
  278. package/dist/cancel.js +0 -25
  279. package/dist/ensure-faststart.d.ts +0 -1
  280. package/dist/ensure-faststart.js +0 -14
  281. package/dist/faststart/atom.d.ts +0 -35
  282. package/dist/faststart/atom.js +0 -138
  283. package/dist/faststart/index.d.ts +0 -0
  284. package/dist/faststart/index.js +0 -1
  285. package/dist/faststart/options.d.ts +0 -6
  286. package/dist/faststart/qt-faststart.d.ts +0 -18
  287. package/dist/faststart/qt-faststart.js +0 -66
  288. package/dist/faststart/update-chunk-offsets.d.ts +0 -10
  289. package/dist/faststart/update-chunk-offsets.js +0 -114
  290. package/dist/faststart/util.d.ts +0 -9
  291. package/dist/faststart/util.js +0 -34
  292. package/dist/offthread/index.d.ts +0 -0
  293. package/dist/offthread/index.js +0 -1
  294. package/dist/render-gif.d.ts +0 -2
  295. package/dist/render-gif.js +0 -242
  296. package/dist/should-use-vp9-decoder.d.ts +0 -0
  297. package/dist/should-use-vp9-decoder.js +0 -1
  298. package/dist/stitch-frames-to-gif.d.ts +0 -8
  299. package/dist/stitch-frames-to-gif.js +0 -128
  300. package/dist/validate-offthreadvideo-image-format.d.ts +0 -1
  301. package/dist/validate-offthreadvideo-image-format.js +0 -15
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Copyright 2018 Google Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the 'License');
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an 'AS IS' BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { CDPSession } from './Connection';
17
+ import { ElementHandle } from './JSHandle';
18
+ /**
19
+ * Represents a Node and the properties of it that are relevant to Accessibility.
20
+ * @public
21
+ */
22
+ export interface SerializedAXNode {
23
+ /**
24
+ * The {@link https://www.w3.org/TR/wai-aria/#usage_intro | role} of the node.
25
+ */
26
+ role: string;
27
+ /**
28
+ * A human readable name for the node.
29
+ */
30
+ name?: string;
31
+ /**
32
+ * The current value of the node.
33
+ */
34
+ value?: string | number;
35
+ /**
36
+ * An additional human readable description of the node.
37
+ */
38
+ description?: string;
39
+ /**
40
+ * Any keyboard shortcuts associated with this node.
41
+ */
42
+ keyshortcuts?: string;
43
+ /**
44
+ * A human readable alternative to the role.
45
+ */
46
+ roledescription?: string;
47
+ /**
48
+ * A description of the current value.
49
+ */
50
+ valuetext?: string;
51
+ disabled?: boolean;
52
+ expanded?: boolean;
53
+ focused?: boolean;
54
+ modal?: boolean;
55
+ multiline?: boolean;
56
+ /**
57
+ * Whether more than one child can be selected.
58
+ */
59
+ multiselectable?: boolean;
60
+ readonly?: boolean;
61
+ required?: boolean;
62
+ selected?: boolean;
63
+ /**
64
+ * Whether the checkbox is checked, or in a
65
+ * {@link https://www.w3.org/TR/wai-aria-practices/examples/checkbox/checkbox-2/checkbox-2.html | mixed state}.
66
+ */
67
+ checked?: boolean | 'mixed';
68
+ /**
69
+ * Whether the node is checked or in a mixed state.
70
+ */
71
+ pressed?: boolean | 'mixed';
72
+ /**
73
+ * The level of a heading.
74
+ */
75
+ level?: number;
76
+ valuemin?: number;
77
+ valuemax?: number;
78
+ autocomplete?: string;
79
+ haspopup?: string;
80
+ /**
81
+ * Whether and in what way this node's value is invalid.
82
+ */
83
+ invalid?: string;
84
+ orientation?: string;
85
+ /**
86
+ * Children of this node, if there are any.
87
+ */
88
+ children?: SerializedAXNode[];
89
+ }
90
+ /**
91
+ * @public
92
+ */
93
+ export interface SnapshotOptions {
94
+ /**
95
+ * Prune uninteresting nodes from the tree.
96
+ * @defaultValue true
97
+ */
98
+ interestingOnly?: boolean;
99
+ /**
100
+ * Root node to get the accessibility tree for
101
+ * @defaultValue The root node of the entire page.
102
+ */
103
+ root?: ElementHandle;
104
+ }
105
+ /**
106
+ * The Accessibility class provides methods for inspecting Chromium's
107
+ * accessibility tree. The accessibility tree is used by assistive technology
108
+ * such as {@link https://en.wikipedia.org/wiki/Screen_reader | screen readers} or
109
+ * {@link https://en.wikipedia.org/wiki/Switch_access | switches}.
110
+ *
111
+ * @remarks
112
+ *
113
+ * Accessibility is a very platform-specific thing. On different platforms,
114
+ * there are different screen readers that might have wildly different output.
115
+ *
116
+ * Blink - Chrome's rendering engine - has a concept of "accessibility tree",
117
+ * which is then translated into different platform-specific APIs. Accessibility
118
+ * namespace gives users access to the Blink Accessibility Tree.
119
+ *
120
+ * Most of the accessibility tree gets filtered out when converting from Blink
121
+ * AX Tree to Platform-specific AX-Tree or by assistive technologies themselves.
122
+ * By default, Puppeteer tries to approximate this filtering, exposing only
123
+ * the "interesting" nodes of the tree.
124
+ *
125
+ * @public
126
+ */
127
+ export declare class Accessibility {
128
+ #private;
129
+ /**
130
+ * @internal
131
+ */
132
+ constructor(client: CDPSession);
133
+ /**
134
+ * Captures the current state of the accessibility tree.
135
+ * The returned object represents the root accessible node of the page.
136
+ *
137
+ * @remarks
138
+ *
139
+ * **NOTE** The Chromium accessibility tree contains nodes that go unused on
140
+ * most platforms and by most screen readers. Puppeteer will discard them as
141
+ * well for an easier to process tree, unless `interestingOnly` is set to
142
+ * `false`.
143
+ *
144
+ * @example
145
+ * An example of dumping the entire accessibility tree:
146
+ * ```js
147
+ * const snapshot = await page.accessibility.snapshot();
148
+ * console.log(snapshot);
149
+ * ```
150
+ *
151
+ * @example
152
+ * An example of logging the focused node's name:
153
+ * ```js
154
+ * const snapshot = await page.accessibility.snapshot();
155
+ * const node = findFocusedNode(snapshot);
156
+ * console.log(node && node.name);
157
+ *
158
+ * function findFocusedNode(node) {
159
+ * if (node.focused)
160
+ * return node;
161
+ * for (const child of node.children || []) {
162
+ * const foundNode = findFocusedNode(child);
163
+ * return foundNode;
164
+ * }
165
+ * return null;
166
+ * }
167
+ * ```
168
+ *
169
+ * @returns An AXNode object representing the snapshot.
170
+ *
171
+ */
172
+ snapshot(options?: SnapshotOptions): Promise<SerializedAXNode | null>;
173
+ private serializeTree;
174
+ private collectInterestingNodes;
175
+ }
@@ -0,0 +1,423 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2018 Google Inc. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the 'License');
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an 'AS IS' BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
18
+ if (kind === "m") throw new TypeError("Private method is not writable");
19
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
20
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
21
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
22
+ };
23
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
24
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
25
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
26
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
27
+ };
28
+ var _Accessibility_client, _AXNode_instances, _AXNode_richlyEditable, _AXNode_editable, _AXNode_focusable, _AXNode_hidden, _AXNode_name, _AXNode_role, _AXNode_ignored, _AXNode_cachedHasFocusableChild, _AXNode_isPlainTextField, _AXNode_isTextOnlyObject, _AXNode_hasFocusableChild;
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.Accessibility = void 0;
31
+ /**
32
+ * The Accessibility class provides methods for inspecting Chromium's
33
+ * accessibility tree. The accessibility tree is used by assistive technology
34
+ * such as {@link https://en.wikipedia.org/wiki/Screen_reader | screen readers} or
35
+ * {@link https://en.wikipedia.org/wiki/Switch_access | switches}.
36
+ *
37
+ * @remarks
38
+ *
39
+ * Accessibility is a very platform-specific thing. On different platforms,
40
+ * there are different screen readers that might have wildly different output.
41
+ *
42
+ * Blink - Chrome's rendering engine - has a concept of "accessibility tree",
43
+ * which is then translated into different platform-specific APIs. Accessibility
44
+ * namespace gives users access to the Blink Accessibility Tree.
45
+ *
46
+ * Most of the accessibility tree gets filtered out when converting from Blink
47
+ * AX Tree to Platform-specific AX-Tree or by assistive technologies themselves.
48
+ * By default, Puppeteer tries to approximate this filtering, exposing only
49
+ * the "interesting" nodes of the tree.
50
+ *
51
+ * @public
52
+ */
53
+ class Accessibility {
54
+ /**
55
+ * @internal
56
+ */
57
+ constructor(client) {
58
+ _Accessibility_client.set(this, void 0);
59
+ __classPrivateFieldSet(this, _Accessibility_client, client, "f");
60
+ }
61
+ /**
62
+ * Captures the current state of the accessibility tree.
63
+ * The returned object represents the root accessible node of the page.
64
+ *
65
+ * @remarks
66
+ *
67
+ * **NOTE** The Chromium accessibility tree contains nodes that go unused on
68
+ * most platforms and by most screen readers. Puppeteer will discard them as
69
+ * well for an easier to process tree, unless `interestingOnly` is set to
70
+ * `false`.
71
+ *
72
+ * @example
73
+ * An example of dumping the entire accessibility tree:
74
+ * ```js
75
+ * const snapshot = await page.accessibility.snapshot();
76
+ * console.log(snapshot);
77
+ * ```
78
+ *
79
+ * @example
80
+ * An example of logging the focused node's name:
81
+ * ```js
82
+ * const snapshot = await page.accessibility.snapshot();
83
+ * const node = findFocusedNode(snapshot);
84
+ * console.log(node && node.name);
85
+ *
86
+ * function findFocusedNode(node) {
87
+ * if (node.focused)
88
+ * return node;
89
+ * for (const child of node.children || []) {
90
+ * const foundNode = findFocusedNode(child);
91
+ * return foundNode;
92
+ * }
93
+ * return null;
94
+ * }
95
+ * ```
96
+ *
97
+ * @returns An AXNode object representing the snapshot.
98
+ *
99
+ */
100
+ async snapshot(options = {}) {
101
+ var _a, _b;
102
+ const { interestingOnly = true, root = null } = options;
103
+ const { nodes } = await __classPrivateFieldGet(this, _Accessibility_client, "f").send('Accessibility.getFullAXTree');
104
+ let backendNodeId;
105
+ if (root) {
106
+ const { node } = await __classPrivateFieldGet(this, _Accessibility_client, "f").send('DOM.describeNode', {
107
+ objectId: root._remoteObject.objectId,
108
+ });
109
+ backendNodeId = node.backendNodeId;
110
+ }
111
+ const defaultRoot = AXNode.createTree(nodes);
112
+ let needle = defaultRoot;
113
+ if (backendNodeId) {
114
+ needle = defaultRoot.find((node) => {
115
+ return node.payload.backendDOMNodeId === backendNodeId;
116
+ });
117
+ if (!needle) {
118
+ return null;
119
+ }
120
+ }
121
+ if (!interestingOnly) {
122
+ return (_a = this.serializeTree(needle)[0]) !== null && _a !== void 0 ? _a : null;
123
+ }
124
+ const interestingNodes = new Set();
125
+ this.collectInterestingNodes(interestingNodes, defaultRoot, false);
126
+ if (!interestingNodes.has(needle)) {
127
+ return null;
128
+ }
129
+ return (_b = this.serializeTree(needle, interestingNodes)[0]) !== null && _b !== void 0 ? _b : null;
130
+ }
131
+ serializeTree(node, interestingNodes) {
132
+ const children = [];
133
+ for (const child of node.children) {
134
+ children.push(...this.serializeTree(child, interestingNodes));
135
+ }
136
+ if (interestingNodes && !interestingNodes.has(node)) {
137
+ return children;
138
+ }
139
+ const serializedNode = node.serialize();
140
+ if (children.length) {
141
+ serializedNode.children = children;
142
+ }
143
+ return [serializedNode];
144
+ }
145
+ collectInterestingNodes(collection, node, insideControl) {
146
+ if (node.isInteresting(insideControl)) {
147
+ collection.add(node);
148
+ }
149
+ if (node.isLeafNode()) {
150
+ return;
151
+ }
152
+ insideControl = insideControl || node.isControl();
153
+ for (const child of node.children) {
154
+ this.collectInterestingNodes(collection, child, insideControl);
155
+ }
156
+ }
157
+ }
158
+ exports.Accessibility = Accessibility;
159
+ _Accessibility_client = new WeakMap();
160
+ class AXNode {
161
+ constructor(payload) {
162
+ _AXNode_instances.add(this);
163
+ this.children = [];
164
+ _AXNode_richlyEditable.set(this, false);
165
+ _AXNode_editable.set(this, false);
166
+ _AXNode_focusable.set(this, false);
167
+ _AXNode_hidden.set(this, false);
168
+ _AXNode_name.set(this, void 0);
169
+ _AXNode_role.set(this, void 0);
170
+ _AXNode_ignored.set(this, void 0);
171
+ _AXNode_cachedHasFocusableChild.set(this, void 0);
172
+ this.payload = payload;
173
+ __classPrivateFieldSet(this, _AXNode_name, this.payload.name ? this.payload.name.value : '', "f");
174
+ __classPrivateFieldSet(this, _AXNode_role, this.payload.role ? this.payload.role.value : 'Unknown', "f");
175
+ __classPrivateFieldSet(this, _AXNode_ignored, this.payload.ignored, "f");
176
+ for (const property of this.payload.properties || []) {
177
+ if (property.name === 'editable') {
178
+ __classPrivateFieldSet(this, _AXNode_richlyEditable, property.value.value === 'richtext', "f");
179
+ __classPrivateFieldSet(this, _AXNode_editable, true, "f");
180
+ }
181
+ if (property.name === 'focusable') {
182
+ __classPrivateFieldSet(this, _AXNode_focusable, property.value.value, "f");
183
+ }
184
+ if (property.name === 'hidden') {
185
+ __classPrivateFieldSet(this, _AXNode_hidden, property.value.value, "f");
186
+ }
187
+ }
188
+ }
189
+ find(predicate) {
190
+ if (predicate(this)) {
191
+ return this;
192
+ }
193
+ for (const child of this.children) {
194
+ const result = child.find(predicate);
195
+ if (result) {
196
+ return result;
197
+ }
198
+ }
199
+ return null;
200
+ }
201
+ isLeafNode() {
202
+ if (!this.children.length) {
203
+ return true;
204
+ }
205
+ // These types of objects may have children that we use as internal
206
+ // implementation details, but we want to expose them as leaves to platform
207
+ // accessibility APIs because screen readers might be confused if they find
208
+ // any children.
209
+ if (__classPrivateFieldGet(this, _AXNode_instances, "m", _AXNode_isPlainTextField).call(this) || __classPrivateFieldGet(this, _AXNode_instances, "m", _AXNode_isTextOnlyObject).call(this)) {
210
+ return true;
211
+ }
212
+ // Roles whose children are only presentational according to the ARIA and
213
+ // HTML5 Specs should be hidden from screen readers.
214
+ // (Note that whilst ARIA buttons can have only presentational children, HTML5
215
+ // buttons are allowed to have content.)
216
+ switch (__classPrivateFieldGet(this, _AXNode_role, "f")) {
217
+ case 'doc-cover':
218
+ case 'graphics-symbol':
219
+ case 'img':
220
+ case 'Meter':
221
+ case 'scrollbar':
222
+ case 'slider':
223
+ case 'separator':
224
+ case 'progressbar':
225
+ return true;
226
+ default:
227
+ break;
228
+ }
229
+ // Here and below: Android heuristics
230
+ if (__classPrivateFieldGet(this, _AXNode_instances, "m", _AXNode_hasFocusableChild).call(this)) {
231
+ return false;
232
+ }
233
+ if (__classPrivateFieldGet(this, _AXNode_focusable, "f") && __classPrivateFieldGet(this, _AXNode_name, "f")) {
234
+ return true;
235
+ }
236
+ if (__classPrivateFieldGet(this, _AXNode_role, "f") === 'heading' && __classPrivateFieldGet(this, _AXNode_name, "f")) {
237
+ return true;
238
+ }
239
+ return false;
240
+ }
241
+ isControl() {
242
+ switch (__classPrivateFieldGet(this, _AXNode_role, "f")) {
243
+ case 'button':
244
+ case 'checkbox':
245
+ case 'ColorWell':
246
+ case 'combobox':
247
+ case 'DisclosureTriangle':
248
+ case 'listbox':
249
+ case 'menu':
250
+ case 'menubar':
251
+ case 'menuitem':
252
+ case 'menuitemcheckbox':
253
+ case 'menuitemradio':
254
+ case 'radio':
255
+ case 'scrollbar':
256
+ case 'searchbox':
257
+ case 'slider':
258
+ case 'spinbutton':
259
+ case 'switch':
260
+ case 'tab':
261
+ case 'textbox':
262
+ case 'tree':
263
+ case 'treeitem':
264
+ return true;
265
+ default:
266
+ return false;
267
+ }
268
+ }
269
+ isInteresting(insideControl) {
270
+ const role = __classPrivateFieldGet(this, _AXNode_role, "f");
271
+ if (role === 'Ignored' || __classPrivateFieldGet(this, _AXNode_hidden, "f") || __classPrivateFieldGet(this, _AXNode_ignored, "f")) {
272
+ return false;
273
+ }
274
+ if (__classPrivateFieldGet(this, _AXNode_focusable, "f") || __classPrivateFieldGet(this, _AXNode_richlyEditable, "f")) {
275
+ return true;
276
+ }
277
+ // If it's not focusable but has a control role, then it's interesting.
278
+ if (this.isControl()) {
279
+ return true;
280
+ }
281
+ // A non focusable child of a control is not interesting
282
+ if (insideControl) {
283
+ return false;
284
+ }
285
+ return this.isLeafNode() && Boolean(__classPrivateFieldGet(this, _AXNode_name, "f"));
286
+ }
287
+ serialize() {
288
+ const properties = new Map();
289
+ for (const property of this.payload.properties || []) {
290
+ properties.set(property.name.toLowerCase(), property.value.value);
291
+ }
292
+ if (this.payload.name) {
293
+ properties.set('name', this.payload.name.value);
294
+ }
295
+ if (this.payload.value) {
296
+ properties.set('value', this.payload.value.value);
297
+ }
298
+ if (this.payload.description) {
299
+ properties.set('description', this.payload.description.value);
300
+ }
301
+ const node = {
302
+ role: __classPrivateFieldGet(this, _AXNode_role, "f"),
303
+ };
304
+ const userStringProperties = [
305
+ 'name',
306
+ 'value',
307
+ 'description',
308
+ 'keyshortcuts',
309
+ 'roledescription',
310
+ 'valuetext',
311
+ ];
312
+ const getUserStringPropertyValue = (key) => {
313
+ return properties.get(key);
314
+ };
315
+ for (const userStringProperty of userStringProperties) {
316
+ if (!properties.has(userStringProperty)) {
317
+ continue;
318
+ }
319
+ node[userStringProperty] = getUserStringPropertyValue(userStringProperty);
320
+ }
321
+ const booleanProperties = [
322
+ 'disabled',
323
+ 'expanded',
324
+ 'focused',
325
+ 'modal',
326
+ 'multiline',
327
+ 'multiselectable',
328
+ 'readonly',
329
+ 'required',
330
+ 'selected',
331
+ ];
332
+ const getBooleanPropertyValue = (key) => {
333
+ return properties.get(key);
334
+ };
335
+ for (const booleanProperty of booleanProperties) {
336
+ // RootWebArea's treat focus differently than other nodes. They report whether
337
+ // their frame has focus, not whether focus is specifically on the root
338
+ // node.
339
+ if (booleanProperty === 'focused' && __classPrivateFieldGet(this, _AXNode_role, "f") === 'RootWebArea') {
340
+ continue;
341
+ }
342
+ const value = getBooleanPropertyValue(booleanProperty);
343
+ if (!value) {
344
+ continue;
345
+ }
346
+ node[booleanProperty] = getBooleanPropertyValue(booleanProperty);
347
+ }
348
+ const tristateProperties = ['checked', 'pressed'];
349
+ for (const tristateProperty of tristateProperties) {
350
+ if (!properties.has(tristateProperty)) {
351
+ continue;
352
+ }
353
+ const value = properties.get(tristateProperty);
354
+ node[tristateProperty] = value === 'mixed' ? 'mixed' : value === 'true';
355
+ }
356
+ const numericalProperties = [
357
+ 'level',
358
+ 'valuemax',
359
+ 'valuemin',
360
+ ];
361
+ const getNumericalPropertyValue = (key) => {
362
+ return properties.get(key);
363
+ };
364
+ for (const numericalProperty of numericalProperties) {
365
+ if (!properties.has(numericalProperty)) {
366
+ continue;
367
+ }
368
+ node[numericalProperty] = getNumericalPropertyValue(numericalProperty);
369
+ }
370
+ const tokenProperties = [
371
+ 'autocomplete',
372
+ 'haspopup',
373
+ 'invalid',
374
+ 'orientation',
375
+ ];
376
+ const getTokenPropertyValue = (key) => {
377
+ return properties.get(key);
378
+ };
379
+ for (const tokenProperty of tokenProperties) {
380
+ const value = getTokenPropertyValue(tokenProperty);
381
+ if (!value || value === 'false') {
382
+ continue;
383
+ }
384
+ node[tokenProperty] = getTokenPropertyValue(tokenProperty);
385
+ }
386
+ return node;
387
+ }
388
+ static createTree(payloads) {
389
+ const nodeById = new Map();
390
+ for (const payload of payloads) {
391
+ nodeById.set(payload.nodeId, new AXNode(payload));
392
+ }
393
+ for (const node of nodeById.values()) {
394
+ for (const childId of node.payload.childIds || []) {
395
+ node.children.push(nodeById.get(childId));
396
+ }
397
+ }
398
+ return nodeById.values().next().value;
399
+ }
400
+ }
401
+ _AXNode_richlyEditable = new WeakMap(), _AXNode_editable = new WeakMap(), _AXNode_focusable = new WeakMap(), _AXNode_hidden = new WeakMap(), _AXNode_name = new WeakMap(), _AXNode_role = new WeakMap(), _AXNode_ignored = new WeakMap(), _AXNode_cachedHasFocusableChild = new WeakMap(), _AXNode_instances = new WeakSet(), _AXNode_isPlainTextField = function _AXNode_isPlainTextField() {
402
+ if (__classPrivateFieldGet(this, _AXNode_richlyEditable, "f")) {
403
+ return false;
404
+ }
405
+ if (__classPrivateFieldGet(this, _AXNode_editable, "f")) {
406
+ return true;
407
+ }
408
+ return __classPrivateFieldGet(this, _AXNode_role, "f") === 'textbox' || __classPrivateFieldGet(this, _AXNode_role, "f") === 'searchbox';
409
+ }, _AXNode_isTextOnlyObject = function _AXNode_isTextOnlyObject() {
410
+ const role = __classPrivateFieldGet(this, _AXNode_role, "f");
411
+ return role === 'LineBreak' || role === 'text' || role === 'InlineTextBox';
412
+ }, _AXNode_hasFocusableChild = function _AXNode_hasFocusableChild() {
413
+ if (__classPrivateFieldGet(this, _AXNode_cachedHasFocusableChild, "f") === undefined) {
414
+ __classPrivateFieldSet(this, _AXNode_cachedHasFocusableChild, false, "f");
415
+ for (const child of this.children) {
416
+ if (__classPrivateFieldGet(child, _AXNode_focusable, "f") || __classPrivateFieldGet(child, _AXNode_instances, "m", _AXNode_hasFocusableChild).call(child)) {
417
+ __classPrivateFieldSet(this, _AXNode_cachedHasFocusableChild, true, "f");
418
+ break;
419
+ }
420
+ }
421
+ }
422
+ return __classPrivateFieldGet(this, _AXNode_cachedHasFocusableChild, "f");
423
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright 2020 Google Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { InternalQueryHandler } from './QueryHandler';
17
+ /**
18
+ * @internal
19
+ */
20
+ export declare const _ariaHandler: InternalQueryHandler;