@remotion/renderer 4.0.0-fastlambda.8 → 4.0.0-lambda.3

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 (191) hide show
  1. package/dist/assets/cleanup-assets.d.ts +2 -0
  2. package/dist/assets/cleanup-assets.js +2 -0
  3. package/dist/assets/download-and-map-assets-to-file.d.ts +6 -0
  4. package/dist/assets/download-and-map-assets-to-file.js +46 -19
  5. package/dist/assets/ffmpeg-volume-expression.d.ts +2 -1
  6. package/dist/assets/ffmpeg-volume-expression.js +15 -12
  7. package/dist/assets/get-audio-channels.d.ts +5 -2
  8. package/dist/assets/get-audio-channels.js +15 -4
  9. package/dist/browser/Accessibility.d.ts +175 -0
  10. package/dist/browser/Accessibility.js +423 -0
  11. package/dist/browser/AriaQueryHandler.d.ts +20 -0
  12. package/dist/browser/AriaQueryHandler.js +108 -0
  13. package/dist/browser/Browser.d.ts +209 -0
  14. package/dist/browser/Browser.js +402 -0
  15. package/dist/browser/BrowserConnector.d.ts +26 -0
  16. package/dist/browser/BrowserConnector.js +49 -0
  17. package/dist/browser/BrowserFetcher.d.ts +89 -0
  18. package/dist/browser/BrowserFetcher.js +512 -0
  19. package/dist/browser/BrowserRunner.d.ts +39 -0
  20. package/dist/browser/BrowserRunner.js +308 -0
  21. package/dist/browser/Connection.d.ts +49 -0
  22. package/dist/browser/Connection.js +262 -0
  23. package/dist/browser/ConnectionTransport.d.ts +21 -0
  24. package/dist/browser/ConnectionTransport.js +17 -0
  25. package/dist/browser/ConsoleMessage.d.ts +55 -0
  26. package/dist/browser/ConsoleMessage.js +75 -0
  27. package/dist/browser/Coverage.d.ts +180 -0
  28. package/dist/browser/Coverage.js +371 -0
  29. package/dist/browser/DOMWorld.d.ts +50 -0
  30. package/dist/browser/DOMWorld.js +280 -0
  31. package/dist/browser/Debug.d.ts +19 -0
  32. package/dist/browser/Debug.js +42 -0
  33. package/dist/browser/DeviceDescriptors.d.ts +40 -0
  34. package/dist/browser/DeviceDescriptors.js +1407 -0
  35. package/dist/browser/EmulationManager.d.ts +7 -0
  36. package/dist/browser/EmulationManager.js +40 -0
  37. package/dist/browser/Errors.d.ts +25 -0
  38. package/dist/browser/Errors.js +35 -0
  39. package/dist/browser/EvalTypes.d.ts +27 -0
  40. package/dist/browser/EvalTypes.js +17 -0
  41. package/dist/browser/EventEmitter.d.ts +70 -0
  42. package/dist/browser/EventEmitter.js +102 -0
  43. package/dist/browser/ExecutionContext.d.ts +35 -0
  44. package/dist/browser/ExecutionContext.js +190 -0
  45. package/dist/browser/FileChooser.d.ts +56 -0
  46. package/dist/browser/FileChooser.js +86 -0
  47. package/dist/browser/FrameManager.d.ts +96 -0
  48. package/dist/browser/FrameManager.js +512 -0
  49. package/dist/browser/HTTPRequest.d.ts +42 -0
  50. package/dist/browser/HTTPRequest.js +82 -0
  51. package/dist/browser/HTTPResponse.d.ts +100 -0
  52. package/dist/browser/HTTPResponse.js +196 -0
  53. package/dist/browser/Input.d.ts +355 -0
  54. package/dist/browser/Input.js +592 -0
  55. package/dist/browser/JSHandle.d.ts +36 -0
  56. package/dist/browser/JSHandle.js +93 -0
  57. package/dist/browser/LaunchOptions.d.ts +117 -0
  58. package/dist/browser/LaunchOptions.js +17 -0
  59. package/dist/browser/Launcher.d.ts +9 -0
  60. package/dist/browser/Launcher.js +602 -0
  61. package/dist/browser/LifecycleWatcher.d.ts +29 -0
  62. package/dist/browser/LifecycleWatcher.js +193 -0
  63. package/dist/browser/NetworkConditions.d.ts +26 -0
  64. package/dist/browser/NetworkConditions.js +33 -0
  65. package/dist/browser/NetworkEventManager.d.ts +35 -0
  66. package/dist/browser/NetworkEventManager.js +128 -0
  67. package/dist/browser/NetworkManager.d.ts +36 -0
  68. package/dist/browser/NetworkManager.js +284 -0
  69. package/dist/browser/NodeWebSocketTransport.d.ts +11 -0
  70. package/dist/browser/NodeWebSocketTransport.js +90 -0
  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/Product.d.ts +16 -0
  76. package/dist/browser/Product.js +17 -0
  77. package/dist/browser/Puppeteer.d.ts +35 -0
  78. package/dist/browser/Puppeteer.js +17 -0
  79. package/dist/browser/PuppeteerNode.d.ts +92 -0
  80. package/dist/browser/PuppeteerNode.js +143 -0
  81. package/dist/browser/PuppeteerViewport.d.ts +5 -0
  82. package/dist/browser/PuppeteerViewport.js +2 -0
  83. package/dist/browser/QueryHandler.d.ts +64 -0
  84. package/dist/browser/QueryHandler.js +183 -0
  85. package/dist/browser/ScreenshotOptions.d.ts +14 -0
  86. package/dist/browser/ScreenshotOptions.js +2 -0
  87. package/dist/browser/SecurityDetails.d.ts +55 -0
  88. package/dist/browser/SecurityDetails.js +95 -0
  89. package/dist/browser/Target.d.ts +61 -0
  90. package/dist/browser/Target.js +146 -0
  91. package/dist/browser/TaskQueue.d.ts +20 -0
  92. package/dist/browser/TaskQueue.js +47 -0
  93. package/dist/browser/TimeoutSettings.d.ts +23 -0
  94. package/dist/browser/TimeoutSettings.js +62 -0
  95. package/dist/browser/Tracing.d.ts +45 -0
  96. package/dist/browser/Tracing.js +136 -0
  97. package/dist/browser/USKeyboardLayout.d.ts +39 -0
  98. package/dist/browser/USKeyboardLayout.js +406 -0
  99. package/dist/browser/WebWorker.d.ts +96 -0
  100. package/dist/browser/WebWorker.js +122 -0
  101. package/dist/browser/assert.d.ts +21 -0
  102. package/dist/browser/assert.js +29 -0
  103. package/dist/browser/compat.d.ts +2 -0
  104. package/dist/browser/compat.js +17 -0
  105. package/dist/browser/create-browser-fetcher.d.ts +17 -0
  106. package/dist/browser/create-browser-fetcher.js +140 -0
  107. package/dist/browser/dialog.d.ts +70 -0
  108. package/dist/browser/dialog.js +114 -0
  109. package/dist/browser/environment.d.ts +16 -0
  110. package/dist/browser/environment.js +19 -0
  111. package/dist/browser/fetch.d.ts +16 -0
  112. package/dist/browser/fetch.js +46 -0
  113. package/dist/browser/find-up.d.ts +4 -0
  114. package/dist/browser/find-up.js +85 -0
  115. package/dist/browser/get-download-destination.d.ts +1 -0
  116. package/dist/browser/get-download-destination.js +38 -0
  117. package/dist/browser/mitt/index.d.ts +22 -0
  118. package/dist/browser/mitt/index.js +49 -0
  119. package/dist/browser/node.d.ts +2 -0
  120. package/dist/browser/node.js +9 -0
  121. package/dist/browser/page.d.ts +78 -0
  122. package/dist/browser/page.js +277 -0
  123. package/dist/browser/pkg-dir.d.ts +3 -0
  124. package/dist/browser/pkg-dir.js +13 -0
  125. package/dist/browser/revisions.d.ts +21 -0
  126. package/dist/browser/revisions.js +22 -0
  127. package/dist/browser/util.d.ts +46 -0
  128. package/dist/browser/util.js +161 -0
  129. package/dist/calculate-ffmpeg-filters.js +2 -2
  130. package/dist/combine-videos.d.ts +2 -1
  131. package/dist/combine-videos.js +8 -1
  132. package/dist/cycle-browser-tabs.d.ts +2 -1
  133. package/dist/cycle-browser-tabs.js +9 -2
  134. package/dist/ensure-presentation-timestamp.d.ts +1 -0
  135. package/dist/ensure-presentation-timestamp.js +57 -0
  136. package/dist/extract-frame-from-video.d.ts +11 -0
  137. package/dist/extract-frame-from-video.js +197 -0
  138. package/dist/frame-to-ffmpeg-timestamp.d.ts +1 -0
  139. package/dist/frame-to-ffmpeg-timestamp.js +8 -0
  140. package/dist/get-compositions.d.ts +5 -2
  141. package/dist/get-compositions.js +23 -5
  142. package/dist/get-duration-of-asset.d.ts +7 -0
  143. package/dist/get-duration-of-asset.js +36 -0
  144. package/dist/get-port.js +26 -24
  145. package/dist/index.d.ts +33 -9
  146. package/dist/index.js +14 -5
  147. package/dist/is-beyond-last-frame.d.ts +2 -0
  148. package/dist/is-beyond-last-frame.js +12 -0
  149. package/dist/last-frame-from-video-cache.d.ts +10 -0
  150. package/dist/last-frame-from-video-cache.js +50 -0
  151. package/dist/make-assets-download-dir.js +6 -1
  152. package/dist/make-cancel-signal.d.ts +7 -0
  153. package/dist/make-cancel-signal.js +25 -0
  154. package/dist/merge-audio-track.js +2 -2
  155. package/dist/offthread-video-server.d.ts +14 -0
  156. package/dist/offthread-video-server.js +67 -0
  157. package/dist/open-browser.d.ts +6 -6
  158. package/dist/open-browser.js +24 -20
  159. package/dist/prepare-server.d.ts +13 -2
  160. package/dist/prepare-server.js +35 -5
  161. package/dist/preprocess-audio-track.d.ts +1 -0
  162. package/dist/preprocess-audio-track.js +2 -2
  163. package/dist/prespawn-ffmpeg.d.ts +2 -0
  164. package/dist/prespawn-ffmpeg.js +10 -9
  165. package/dist/provide-screenshot.js +1 -1
  166. package/dist/puppeteer-screenshot.js +5 -1
  167. package/dist/render-frames.d.ts +6 -1
  168. package/dist/render-frames.js +96 -37
  169. package/dist/render-media.d.ts +12 -2
  170. package/dist/render-media.js +127 -54
  171. package/dist/render-still.d.ts +14 -4
  172. package/dist/render-still.js +58 -19
  173. package/dist/serve-handler/glob-slash.d.ts +1 -0
  174. package/dist/serve-handler/glob-slash.js +12 -0
  175. package/dist/serve-handler/index.d.ts +4 -0
  176. package/dist/serve-handler/index.js +205 -0
  177. package/dist/serve-handler/is-path-inside.d.ts +1 -0
  178. package/dist/serve-handler/is-path-inside.js +27 -0
  179. package/dist/serve-handler/range-parser.d.ts +13 -0
  180. package/dist/serve-handler/range-parser.js +57 -0
  181. package/dist/serve-static.d.ts +10 -3
  182. package/dist/serve-static.js +22 -4
  183. package/dist/set-props-and-env.d.ts +3 -1
  184. package/dist/set-props-and-env.js +28 -6
  185. package/dist/stitch-frames-to-video.d.ts +4 -1
  186. package/dist/stitch-frames-to-video.js +36 -15
  187. package/dist/stringify-ffmpeg-filter.js +3 -0
  188. package/dist/tmp-dir.js +5 -1
  189. package/dist/validate-fps-for-gif.d.ts +2 -0
  190. package/dist/validate-fps-for-gif.js +9 -0
  191. package/package.json +6 -7
@@ -0,0 +1,55 @@
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 { JSHandle } from './JSHandle';
17
+ export interface ConsoleMessageLocation {
18
+ /**
19
+ * URL of the resource if known or `undefined` otherwise.
20
+ */
21
+ url?: string;
22
+ /**
23
+ * 0-based line number in the resource if known or `undefined` otherwise.
24
+ */
25
+ lineNumber?: number;
26
+ /**
27
+ * 0-based column number in the resource if known or `undefined` otherwise.
28
+ */
29
+ columnNumber?: number;
30
+ }
31
+ export declare type ConsoleMessageType = 'log' | 'debug' | 'info' | 'error' | 'warning' | 'dir' | 'dirxml' | 'table' | 'trace' | 'clear' | 'startGroup' | 'startGroupCollapsed' | 'endGroup' | 'assert' | 'profile' | 'profileEnd' | 'count' | 'timeEnd' | 'verbose';
32
+ export declare class ConsoleMessage {
33
+ #private;
34
+ constructor(type: ConsoleMessageType, text: string, args: JSHandle[], stackTraceLocations: ConsoleMessageLocation[]);
35
+ /**
36
+ * @returns The type of the console message.
37
+ */
38
+ type(): ConsoleMessageType;
39
+ /**
40
+ * @returns The text of the console message.
41
+ */
42
+ text(): string;
43
+ /**
44
+ * @returns An array of arguments passed to the console.
45
+ */
46
+ args(): JSHandle[];
47
+ /**
48
+ * @returns The location of the console message.
49
+ */
50
+ location(): ConsoleMessageLocation;
51
+ /**
52
+ * @returns The array of locations on the stack of the console message.
53
+ */
54
+ stackTrace(): ConsoleMessageLocation[];
55
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2020 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 _ConsoleMessage_type, _ConsoleMessage_text, _ConsoleMessage_args, _ConsoleMessage_stackTraceLocations;
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.ConsoleMessage = void 0;
31
+ class ConsoleMessage {
32
+ constructor(type, text, args, stackTraceLocations) {
33
+ _ConsoleMessage_type.set(this, void 0);
34
+ _ConsoleMessage_text.set(this, void 0);
35
+ _ConsoleMessage_args.set(this, void 0);
36
+ _ConsoleMessage_stackTraceLocations.set(this, void 0);
37
+ __classPrivateFieldSet(this, _ConsoleMessage_type, type, "f");
38
+ __classPrivateFieldSet(this, _ConsoleMessage_text, text, "f");
39
+ __classPrivateFieldSet(this, _ConsoleMessage_args, args, "f");
40
+ __classPrivateFieldSet(this, _ConsoleMessage_stackTraceLocations, stackTraceLocations, "f");
41
+ }
42
+ /**
43
+ * @returns The type of the console message.
44
+ */
45
+ type() {
46
+ return __classPrivateFieldGet(this, _ConsoleMessage_type, "f");
47
+ }
48
+ /**
49
+ * @returns The text of the console message.
50
+ */
51
+ text() {
52
+ return __classPrivateFieldGet(this, _ConsoleMessage_text, "f");
53
+ }
54
+ /**
55
+ * @returns An array of arguments passed to the console.
56
+ */
57
+ args() {
58
+ return __classPrivateFieldGet(this, _ConsoleMessage_args, "f");
59
+ }
60
+ /**
61
+ * @returns The location of the console message.
62
+ */
63
+ location() {
64
+ var _a;
65
+ return (_a = __classPrivateFieldGet(this, _ConsoleMessage_stackTraceLocations, "f")[0]) !== null && _a !== void 0 ? _a : {};
66
+ }
67
+ /**
68
+ * @returns The array of locations on the stack of the console message.
69
+ */
70
+ stackTrace() {
71
+ return __classPrivateFieldGet(this, _ConsoleMessage_stackTraceLocations, "f");
72
+ }
73
+ }
74
+ exports.ConsoleMessage = ConsoleMessage;
75
+ _ConsoleMessage_type = new WeakMap(), _ConsoleMessage_text = new WeakMap(), _ConsoleMessage_args = new WeakMap(), _ConsoleMessage_stackTraceLocations = new WeakMap();
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Copyright 2017 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 { Protocol } from 'devtools-protocol';
17
+ import { CDPSession } from './Connection';
18
+ import { PuppeteerEventListener } from './util';
19
+ /**
20
+ * @internal
21
+ */
22
+ export { PuppeteerEventListener };
23
+ /**
24
+ * The CoverageEntry class represents one entry of the coverage report.
25
+ * @public
26
+ */
27
+ export interface CoverageEntry {
28
+ /**
29
+ * The URL of the style sheet or script.
30
+ */
31
+ url: string;
32
+ /**
33
+ * The content of the style sheet or script.
34
+ */
35
+ text: string;
36
+ /**
37
+ * The covered range as start and end positions.
38
+ */
39
+ ranges: Array<{
40
+ start: number;
41
+ end: number;
42
+ }>;
43
+ }
44
+ /**
45
+ * The CoverageEntry class for JavaScript
46
+ * @public
47
+ */
48
+ export interface JSCoverageEntry extends CoverageEntry {
49
+ /**
50
+ * Raw V8 script coverage entry.
51
+ */
52
+ rawScriptCoverage?: Protocol.Profiler.ScriptCoverage;
53
+ }
54
+ /**
55
+ * Set of configurable options for JS coverage.
56
+ * @public
57
+ */
58
+ export interface JSCoverageOptions {
59
+ /**
60
+ * Whether to reset coverage on every navigation.
61
+ */
62
+ resetOnNavigation?: boolean;
63
+ /**
64
+ * Whether anonymous scripts generated by the page should be reported.
65
+ */
66
+ reportAnonymousScripts?: boolean;
67
+ /**
68
+ * Whether the result includes raw V8 script coverage entries.
69
+ */
70
+ includeRawScriptCoverage?: boolean;
71
+ }
72
+ /**
73
+ * Set of configurable options for CSS coverage.
74
+ * @public
75
+ */
76
+ export interface CSSCoverageOptions {
77
+ /**
78
+ * Whether to reset coverage on every navigation.
79
+ */
80
+ resetOnNavigation?: boolean;
81
+ }
82
+ /**
83
+ * The Coverage class provides methods to gathers information about parts of
84
+ * JavaScript and CSS that were used by the page.
85
+ *
86
+ * @remarks
87
+ * To output coverage in a form consumable by {@link https://github.com/istanbuljs | Istanbul},
88
+ * see {@link https://github.com/istanbuljs/puppeteer-to-istanbul | puppeteer-to-istanbul}.
89
+ *
90
+ * @example
91
+ * An example of using JavaScript and CSS coverage to get percentage of initially
92
+ * executed code:
93
+ * ```js
94
+ * // Enable both JavaScript and CSS coverage
95
+ * await Promise.all([
96
+ * page.coverage.startJSCoverage(),
97
+ * page.coverage.startCSSCoverage()
98
+ * ]);
99
+ * // Navigate to page
100
+ * await page.goto('https://example.com');
101
+ * // Disable both JavaScript and CSS coverage
102
+ * const [jsCoverage, cssCoverage] = await Promise.all([
103
+ * page.coverage.stopJSCoverage(),
104
+ * page.coverage.stopCSSCoverage(),
105
+ * ]);
106
+ * let totalBytes = 0;
107
+ * let usedBytes = 0;
108
+ * const coverage = [...jsCoverage, ...cssCoverage];
109
+ * for (const entry of coverage) {
110
+ * totalBytes += entry.text.length;
111
+ * for (const range of entry.ranges)
112
+ * usedBytes += range.end - range.start - 1;
113
+ * }
114
+ * console.log(`Bytes used: ${usedBytes / totalBytes * 100}%`);
115
+ * ```
116
+ * @public
117
+ */
118
+ export declare class Coverage {
119
+ #private;
120
+ constructor(client: CDPSession);
121
+ /**
122
+ * @param options - Set of configurable options for coverage defaults to
123
+ * `resetOnNavigation : true, reportAnonymousScripts : false`
124
+ * @returns Promise that resolves when coverage is started.
125
+ *
126
+ * @remarks
127
+ * Anonymous scripts are ones that don't have an associated url. These are
128
+ * scripts that are dynamically created on the page using `eval` or
129
+ * `new Function`. If `reportAnonymousScripts` is set to `true`, anonymous
130
+ * scripts will have `pptr://__puppeteer_evaluation_script__` as their URL.
131
+ */
132
+ startJSCoverage(options?: JSCoverageOptions): Promise<void>;
133
+ /**
134
+ * @returns Promise that resolves to the array of coverage reports for
135
+ * all scripts.
136
+ *
137
+ * @remarks
138
+ * JavaScript Coverage doesn't include anonymous scripts by default.
139
+ * However, scripts with sourceURLs are reported.
140
+ */
141
+ stopJSCoverage(): Promise<JSCoverageEntry[]>;
142
+ /**
143
+ * @param options - Set of configurable options for coverage, defaults to
144
+ * `resetOnNavigation : true`
145
+ * @returns Promise that resolves when coverage is started.
146
+ */
147
+ startCSSCoverage(options?: CSSCoverageOptions): Promise<void>;
148
+ /**
149
+ * @returns Promise that resolves to the array of coverage reports
150
+ * for all stylesheets.
151
+ * @remarks
152
+ * CSS Coverage doesn't include dynamically injected style tags
153
+ * without sourceURLs.
154
+ */
155
+ stopCSSCoverage(): Promise<CoverageEntry[]>;
156
+ }
157
+ /**
158
+ * @public
159
+ */
160
+ export declare class JSCoverage {
161
+ #private;
162
+ constructor(client: CDPSession);
163
+ start(options?: {
164
+ resetOnNavigation?: boolean;
165
+ reportAnonymousScripts?: boolean;
166
+ includeRawScriptCoverage?: boolean;
167
+ }): Promise<void>;
168
+ stop(): Promise<JSCoverageEntry[]>;
169
+ }
170
+ /**
171
+ * @public
172
+ */
173
+ export declare class CSSCoverage {
174
+ #private;
175
+ constructor(client: CDPSession);
176
+ start(options?: {
177
+ resetOnNavigation?: boolean;
178
+ }): Promise<void>;
179
+ stop(): Promise<CoverageEntry[]>;
180
+ }
@@ -0,0 +1,371 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2017 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 _Coverage_jsCoverage, _Coverage_cssCoverage, _JSCoverage_instances, _JSCoverage_client, _JSCoverage_enabled, _JSCoverage_scriptURLs, _JSCoverage_scriptSources, _JSCoverage_eventListeners, _JSCoverage_resetOnNavigation, _JSCoverage_reportAnonymousScripts, _JSCoverage_includeRawScriptCoverage, _JSCoverage_onExecutionContextsCleared, _JSCoverage_onScriptParsed, _CSSCoverage_instances, _CSSCoverage_client, _CSSCoverage_enabled, _CSSCoverage_stylesheetURLs, _CSSCoverage_stylesheetSources, _CSSCoverage_eventListeners, _CSSCoverage_resetOnNavigation, _CSSCoverage_onExecutionContextsCleared, _CSSCoverage_onStyleSheet;
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.CSSCoverage = exports.JSCoverage = exports.Coverage = void 0;
31
+ const assert_1 = require("./assert");
32
+ const util_1 = require("./util");
33
+ const ExecutionContext_1 = require("./ExecutionContext");
34
+ const util_2 = require("./util");
35
+ /**
36
+ * The Coverage class provides methods to gathers information about parts of
37
+ * JavaScript and CSS that were used by the page.
38
+ *
39
+ * @remarks
40
+ * To output coverage in a form consumable by {@link https://github.com/istanbuljs | Istanbul},
41
+ * see {@link https://github.com/istanbuljs/puppeteer-to-istanbul | puppeteer-to-istanbul}.
42
+ *
43
+ * @example
44
+ * An example of using JavaScript and CSS coverage to get percentage of initially
45
+ * executed code:
46
+ * ```js
47
+ * // Enable both JavaScript and CSS coverage
48
+ * await Promise.all([
49
+ * page.coverage.startJSCoverage(),
50
+ * page.coverage.startCSSCoverage()
51
+ * ]);
52
+ * // Navigate to page
53
+ * await page.goto('https://example.com');
54
+ * // Disable both JavaScript and CSS coverage
55
+ * const [jsCoverage, cssCoverage] = await Promise.all([
56
+ * page.coverage.stopJSCoverage(),
57
+ * page.coverage.stopCSSCoverage(),
58
+ * ]);
59
+ * let totalBytes = 0;
60
+ * let usedBytes = 0;
61
+ * const coverage = [...jsCoverage, ...cssCoverage];
62
+ * for (const entry of coverage) {
63
+ * totalBytes += entry.text.length;
64
+ * for (const range of entry.ranges)
65
+ * usedBytes += range.end - range.start - 1;
66
+ * }
67
+ * console.log(`Bytes used: ${usedBytes / totalBytes * 100}%`);
68
+ * ```
69
+ * @public
70
+ */
71
+ class Coverage {
72
+ constructor(client) {
73
+ _Coverage_jsCoverage.set(this, void 0);
74
+ _Coverage_cssCoverage.set(this, void 0);
75
+ __classPrivateFieldSet(this, _Coverage_jsCoverage, new JSCoverage(client), "f");
76
+ __classPrivateFieldSet(this, _Coverage_cssCoverage, new CSSCoverage(client), "f");
77
+ }
78
+ /**
79
+ * @param options - Set of configurable options for coverage defaults to
80
+ * `resetOnNavigation : true, reportAnonymousScripts : false`
81
+ * @returns Promise that resolves when coverage is started.
82
+ *
83
+ * @remarks
84
+ * Anonymous scripts are ones that don't have an associated url. These are
85
+ * scripts that are dynamically created on the page using `eval` or
86
+ * `new Function`. If `reportAnonymousScripts` is set to `true`, anonymous
87
+ * scripts will have `pptr://__puppeteer_evaluation_script__` as their URL.
88
+ */
89
+ async startJSCoverage(options = {}) {
90
+ return await __classPrivateFieldGet(this, _Coverage_jsCoverage, "f").start(options);
91
+ }
92
+ /**
93
+ * @returns Promise that resolves to the array of coverage reports for
94
+ * all scripts.
95
+ *
96
+ * @remarks
97
+ * JavaScript Coverage doesn't include anonymous scripts by default.
98
+ * However, scripts with sourceURLs are reported.
99
+ */
100
+ async stopJSCoverage() {
101
+ return await __classPrivateFieldGet(this, _Coverage_jsCoverage, "f").stop();
102
+ }
103
+ /**
104
+ * @param options - Set of configurable options for coverage, defaults to
105
+ * `resetOnNavigation : true`
106
+ * @returns Promise that resolves when coverage is started.
107
+ */
108
+ async startCSSCoverage(options = {}) {
109
+ return await __classPrivateFieldGet(this, _Coverage_cssCoverage, "f").start(options);
110
+ }
111
+ /**
112
+ * @returns Promise that resolves to the array of coverage reports
113
+ * for all stylesheets.
114
+ * @remarks
115
+ * CSS Coverage doesn't include dynamically injected style tags
116
+ * without sourceURLs.
117
+ */
118
+ async stopCSSCoverage() {
119
+ return await __classPrivateFieldGet(this, _Coverage_cssCoverage, "f").stop();
120
+ }
121
+ }
122
+ exports.Coverage = Coverage;
123
+ _Coverage_jsCoverage = new WeakMap(), _Coverage_cssCoverage = new WeakMap();
124
+ /**
125
+ * @public
126
+ */
127
+ class JSCoverage {
128
+ constructor(client) {
129
+ _JSCoverage_instances.add(this);
130
+ _JSCoverage_client.set(this, void 0);
131
+ _JSCoverage_enabled.set(this, false);
132
+ _JSCoverage_scriptURLs.set(this, new Map());
133
+ _JSCoverage_scriptSources.set(this, new Map());
134
+ _JSCoverage_eventListeners.set(this, []);
135
+ _JSCoverage_resetOnNavigation.set(this, false);
136
+ _JSCoverage_reportAnonymousScripts.set(this, false);
137
+ _JSCoverage_includeRawScriptCoverage.set(this, false);
138
+ __classPrivateFieldSet(this, _JSCoverage_client, client, "f");
139
+ }
140
+ async start(options = {}) {
141
+ (0, assert_1.assert)(!__classPrivateFieldGet(this, _JSCoverage_enabled, "f"), 'JSCoverage is already enabled');
142
+ const { resetOnNavigation = true, reportAnonymousScripts = false, includeRawScriptCoverage = false, } = options;
143
+ __classPrivateFieldSet(this, _JSCoverage_resetOnNavigation, resetOnNavigation, "f");
144
+ __classPrivateFieldSet(this, _JSCoverage_reportAnonymousScripts, reportAnonymousScripts, "f");
145
+ __classPrivateFieldSet(this, _JSCoverage_includeRawScriptCoverage, includeRawScriptCoverage, "f");
146
+ __classPrivateFieldSet(this, _JSCoverage_enabled, true, "f");
147
+ __classPrivateFieldGet(this, _JSCoverage_scriptURLs, "f").clear();
148
+ __classPrivateFieldGet(this, _JSCoverage_scriptSources, "f").clear();
149
+ __classPrivateFieldSet(this, _JSCoverage_eventListeners, [
150
+ (0, util_1.addEventListener)(__classPrivateFieldGet(this, _JSCoverage_client, "f"), 'Debugger.scriptParsed', __classPrivateFieldGet(this, _JSCoverage_instances, "m", _JSCoverage_onScriptParsed).bind(this)),
151
+ (0, util_1.addEventListener)(__classPrivateFieldGet(this, _JSCoverage_client, "f"), 'Runtime.executionContextsCleared', __classPrivateFieldGet(this, _JSCoverage_instances, "m", _JSCoverage_onExecutionContextsCleared).bind(this)),
152
+ ], "f");
153
+ await Promise.all([
154
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Profiler.enable'),
155
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Profiler.startPreciseCoverage', {
156
+ callCount: __classPrivateFieldGet(this, _JSCoverage_includeRawScriptCoverage, "f"),
157
+ detailed: true,
158
+ }),
159
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Debugger.enable'),
160
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Debugger.setSkipAllPauses', { skip: true }),
161
+ ]);
162
+ }
163
+ async stop() {
164
+ (0, assert_1.assert)(__classPrivateFieldGet(this, _JSCoverage_enabled, "f"), 'JSCoverage is not enabled');
165
+ __classPrivateFieldSet(this, _JSCoverage_enabled, false, "f");
166
+ const result = await Promise.all([
167
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Profiler.takePreciseCoverage'),
168
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Profiler.stopPreciseCoverage'),
169
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Profiler.disable'),
170
+ __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Debugger.disable'),
171
+ ]);
172
+ (0, util_2.removeEventListeners)(__classPrivateFieldGet(this, _JSCoverage_eventListeners, "f"));
173
+ const coverage = [];
174
+ const profileResponse = result[0];
175
+ for (const entry of profileResponse.result) {
176
+ let url = __classPrivateFieldGet(this, _JSCoverage_scriptURLs, "f").get(entry.scriptId);
177
+ if (!url && __classPrivateFieldGet(this, _JSCoverage_reportAnonymousScripts, "f")) {
178
+ url = 'debugger://VM' + entry.scriptId;
179
+ }
180
+ const text = __classPrivateFieldGet(this, _JSCoverage_scriptSources, "f").get(entry.scriptId);
181
+ if (text === undefined || url === undefined) {
182
+ continue;
183
+ }
184
+ const flattenRanges = [];
185
+ for (const func of entry.functions) {
186
+ flattenRanges.push(...func.ranges);
187
+ }
188
+ const ranges = convertToDisjointRanges(flattenRanges);
189
+ if (!__classPrivateFieldGet(this, _JSCoverage_includeRawScriptCoverage, "f")) {
190
+ coverage.push({ url, ranges, text });
191
+ }
192
+ else {
193
+ coverage.push({ url, ranges, text, rawScriptCoverage: entry });
194
+ }
195
+ }
196
+ return coverage;
197
+ }
198
+ }
199
+ exports.JSCoverage = JSCoverage;
200
+ _JSCoverage_client = new WeakMap(), _JSCoverage_enabled = new WeakMap(), _JSCoverage_scriptURLs = new WeakMap(), _JSCoverage_scriptSources = new WeakMap(), _JSCoverage_eventListeners = new WeakMap(), _JSCoverage_resetOnNavigation = new WeakMap(), _JSCoverage_reportAnonymousScripts = new WeakMap(), _JSCoverage_includeRawScriptCoverage = new WeakMap(), _JSCoverage_instances = new WeakSet(), _JSCoverage_onExecutionContextsCleared = function _JSCoverage_onExecutionContextsCleared() {
201
+ if (!__classPrivateFieldGet(this, _JSCoverage_resetOnNavigation, "f")) {
202
+ return;
203
+ }
204
+ __classPrivateFieldGet(this, _JSCoverage_scriptURLs, "f").clear();
205
+ __classPrivateFieldGet(this, _JSCoverage_scriptSources, "f").clear();
206
+ }, _JSCoverage_onScriptParsed = async function _JSCoverage_onScriptParsed(event) {
207
+ // Ignore puppeteer-injected scripts
208
+ if (event.url === ExecutionContext_1.EVALUATION_SCRIPT_URL) {
209
+ return;
210
+ }
211
+ // Ignore other anonymous scripts unless the reportAnonymousScripts option is true.
212
+ if (!event.url && !__classPrivateFieldGet(this, _JSCoverage_reportAnonymousScripts, "f")) {
213
+ return;
214
+ }
215
+ try {
216
+ const response = await __classPrivateFieldGet(this, _JSCoverage_client, "f").send('Debugger.getScriptSource', {
217
+ scriptId: event.scriptId,
218
+ });
219
+ __classPrivateFieldGet(this, _JSCoverage_scriptURLs, "f").set(event.scriptId, event.url);
220
+ __classPrivateFieldGet(this, _JSCoverage_scriptSources, "f").set(event.scriptId, response.scriptSource);
221
+ }
222
+ catch (error) {
223
+ // This might happen if the page has already navigated away.
224
+ (0, util_1.debugError)(error);
225
+ }
226
+ };
227
+ /**
228
+ * @public
229
+ */
230
+ class CSSCoverage {
231
+ constructor(client) {
232
+ _CSSCoverage_instances.add(this);
233
+ _CSSCoverage_client.set(this, void 0);
234
+ _CSSCoverage_enabled.set(this, false);
235
+ _CSSCoverage_stylesheetURLs.set(this, new Map());
236
+ _CSSCoverage_stylesheetSources.set(this, new Map());
237
+ _CSSCoverage_eventListeners.set(this, []);
238
+ _CSSCoverage_resetOnNavigation.set(this, false);
239
+ __classPrivateFieldSet(this, _CSSCoverage_client, client, "f");
240
+ }
241
+ async start(options = {}) {
242
+ (0, assert_1.assert)(!__classPrivateFieldGet(this, _CSSCoverage_enabled, "f"), 'CSSCoverage is already enabled');
243
+ const { resetOnNavigation = true } = options;
244
+ __classPrivateFieldSet(this, _CSSCoverage_resetOnNavigation, resetOnNavigation, "f");
245
+ __classPrivateFieldSet(this, _CSSCoverage_enabled, true, "f");
246
+ __classPrivateFieldGet(this, _CSSCoverage_stylesheetURLs, "f").clear();
247
+ __classPrivateFieldGet(this, _CSSCoverage_stylesheetSources, "f").clear();
248
+ __classPrivateFieldSet(this, _CSSCoverage_eventListeners, [
249
+ (0, util_1.addEventListener)(__classPrivateFieldGet(this, _CSSCoverage_client, "f"), 'CSS.styleSheetAdded', __classPrivateFieldGet(this, _CSSCoverage_instances, "m", _CSSCoverage_onStyleSheet).bind(this)),
250
+ (0, util_1.addEventListener)(__classPrivateFieldGet(this, _CSSCoverage_client, "f"), 'Runtime.executionContextsCleared', __classPrivateFieldGet(this, _CSSCoverage_instances, "m", _CSSCoverage_onExecutionContextsCleared).bind(this)),
251
+ ], "f");
252
+ await Promise.all([
253
+ __classPrivateFieldGet(this, _CSSCoverage_client, "f").send('DOM.enable'),
254
+ __classPrivateFieldGet(this, _CSSCoverage_client, "f").send('CSS.enable'),
255
+ __classPrivateFieldGet(this, _CSSCoverage_client, "f").send('CSS.startRuleUsageTracking'),
256
+ ]);
257
+ }
258
+ async stop() {
259
+ (0, assert_1.assert)(__classPrivateFieldGet(this, _CSSCoverage_enabled, "f"), 'CSSCoverage is not enabled');
260
+ __classPrivateFieldSet(this, _CSSCoverage_enabled, false, "f");
261
+ const ruleTrackingResponse = await __classPrivateFieldGet(this, _CSSCoverage_client, "f").send('CSS.stopRuleUsageTracking');
262
+ await Promise.all([
263
+ __classPrivateFieldGet(this, _CSSCoverage_client, "f").send('CSS.disable'),
264
+ __classPrivateFieldGet(this, _CSSCoverage_client, "f").send('DOM.disable'),
265
+ ]);
266
+ (0, util_2.removeEventListeners)(__classPrivateFieldGet(this, _CSSCoverage_eventListeners, "f"));
267
+ // aggregate by styleSheetId
268
+ const styleSheetIdToCoverage = new Map();
269
+ for (const entry of ruleTrackingResponse.ruleUsage) {
270
+ let ranges = styleSheetIdToCoverage.get(entry.styleSheetId);
271
+ if (!ranges) {
272
+ ranges = [];
273
+ styleSheetIdToCoverage.set(entry.styleSheetId, ranges);
274
+ }
275
+ ranges.push({
276
+ startOffset: entry.startOffset,
277
+ endOffset: entry.endOffset,
278
+ count: entry.used ? 1 : 0,
279
+ });
280
+ }
281
+ const coverage = [];
282
+ for (const styleSheetId of __classPrivateFieldGet(this, _CSSCoverage_stylesheetURLs, "f").keys()) {
283
+ const url = __classPrivateFieldGet(this, _CSSCoverage_stylesheetURLs, "f").get(styleSheetId);
284
+ (0, assert_1.assert)(url);
285
+ const text = __classPrivateFieldGet(this, _CSSCoverage_stylesheetSources, "f").get(styleSheetId);
286
+ (0, assert_1.assert)(text);
287
+ const ranges = convertToDisjointRanges(styleSheetIdToCoverage.get(styleSheetId) || []);
288
+ coverage.push({ url, ranges, text });
289
+ }
290
+ return coverage;
291
+ }
292
+ }
293
+ exports.CSSCoverage = CSSCoverage;
294
+ _CSSCoverage_client = new WeakMap(), _CSSCoverage_enabled = new WeakMap(), _CSSCoverage_stylesheetURLs = new WeakMap(), _CSSCoverage_stylesheetSources = new WeakMap(), _CSSCoverage_eventListeners = new WeakMap(), _CSSCoverage_resetOnNavigation = new WeakMap(), _CSSCoverage_instances = new WeakSet(), _CSSCoverage_onExecutionContextsCleared = function _CSSCoverage_onExecutionContextsCleared() {
295
+ if (!__classPrivateFieldGet(this, _CSSCoverage_resetOnNavigation, "f")) {
296
+ return;
297
+ }
298
+ __classPrivateFieldGet(this, _CSSCoverage_stylesheetURLs, "f").clear();
299
+ __classPrivateFieldGet(this, _CSSCoverage_stylesheetSources, "f").clear();
300
+ }, _CSSCoverage_onStyleSheet = async function _CSSCoverage_onStyleSheet(event) {
301
+ const { header } = event;
302
+ // Ignore anonymous scripts
303
+ if (!header.sourceURL) {
304
+ return;
305
+ }
306
+ try {
307
+ const response = await __classPrivateFieldGet(this, _CSSCoverage_client, "f").send('CSS.getStyleSheetText', {
308
+ styleSheetId: header.styleSheetId,
309
+ });
310
+ __classPrivateFieldGet(this, _CSSCoverage_stylesheetURLs, "f").set(header.styleSheetId, header.sourceURL);
311
+ __classPrivateFieldGet(this, _CSSCoverage_stylesheetSources, "f").set(header.styleSheetId, response.text);
312
+ }
313
+ catch (error) {
314
+ // This might happen if the page has already navigated away.
315
+ (0, util_1.debugError)(error);
316
+ }
317
+ };
318
+ function convertToDisjointRanges(nestedRanges) {
319
+ const points = [];
320
+ for (const range of nestedRanges) {
321
+ points.push({ offset: range.startOffset, type: 0, range });
322
+ points.push({ offset: range.endOffset, type: 1, range });
323
+ }
324
+ // Sort points to form a valid parenthesis sequence.
325
+ points.sort((a, b) => {
326
+ // Sort with increasing offsets.
327
+ if (a.offset !== b.offset) {
328
+ return a.offset - b.offset;
329
+ }
330
+ // All "end" points should go before "start" points.
331
+ if (a.type !== b.type) {
332
+ return b.type - a.type;
333
+ }
334
+ const aLength = a.range.endOffset - a.range.startOffset;
335
+ const bLength = b.range.endOffset - b.range.startOffset;
336
+ // For two "start" points, the one with longer range goes first.
337
+ if (a.type === 0) {
338
+ return bLength - aLength;
339
+ }
340
+ // For two "end" points, the one with shorter range goes first.
341
+ return aLength - bLength;
342
+ });
343
+ const hitCountStack = [];
344
+ const results = [];
345
+ let lastOffset = 0;
346
+ // Run scanning line to intersect all ranges.
347
+ for (const point of points) {
348
+ if (hitCountStack.length &&
349
+ lastOffset < point.offset &&
350
+ hitCountStack[hitCountStack.length - 1] > 0) {
351
+ const lastResult = results[results.length - 1];
352
+ if (lastResult && lastResult.end === lastOffset) {
353
+ lastResult.end = point.offset;
354
+ }
355
+ else {
356
+ results.push({ start: lastOffset, end: point.offset });
357
+ }
358
+ }
359
+ lastOffset = point.offset;
360
+ if (point.type === 0) {
361
+ hitCountStack.push(point.range.count);
362
+ }
363
+ else {
364
+ hitCountStack.pop();
365
+ }
366
+ }
367
+ // Filter out empty ranges.
368
+ return results.filter((range) => {
369
+ return range.end - range.start > 1;
370
+ });
371
+ }