@remotion/renderer 4.0.0-imgloading.2 → 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.
- package/dist/assets/calculate-asset-positions.d.ts.map +1 -0
- package/dist/assets/calculate-asset-positions.js.map +1 -0
- package/dist/assets/calculate-atempo.d.ts.map +1 -0
- package/dist/assets/calculate-atempo.js.map +1 -0
- package/dist/assets/cleanup-assets.d.ts +2 -0
- package/dist/assets/cleanup-assets.js +2 -0
- package/dist/assets/convert-assets-to-file-urls.d.ts.map +1 -0
- package/dist/assets/convert-assets-to-file-urls.js.map +1 -0
- package/dist/assets/download-and-map-assets-to-file.d.ts +6 -0
- package/dist/assets/download-and-map-assets-to-file.d.ts.map +1 -0
- package/dist/assets/download-and-map-assets-to-file.js +46 -19
- package/dist/assets/download-and-map-assets-to-file.js.map +1 -0
- package/dist/assets/download-file.d.ts.map +1 -0
- package/dist/assets/download-file.js.map +1 -0
- package/dist/assets/ffmpeg-volume-expression.d.ts +2 -1
- package/dist/assets/ffmpeg-volume-expression.d.ts.map +1 -0
- package/dist/assets/ffmpeg-volume-expression.js +15 -12
- package/dist/assets/ffmpeg-volume-expression.js.map +1 -0
- package/dist/assets/flatten-volume-array.d.ts.map +1 -0
- package/dist/assets/flatten-volume-array.js.map +1 -0
- package/dist/assets/get-audio-channels.d.ts +5 -2
- package/dist/assets/get-audio-channels.d.ts.map +1 -0
- package/dist/assets/get-audio-channels.js +15 -4
- package/dist/assets/get-audio-channels.js.map +1 -0
- package/dist/assets/read-file.d.ts.map +1 -0
- package/dist/assets/read-file.js.map +1 -0
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +1 -0
- package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +1 -0
- package/dist/assets/sanitize-filename.d.ts.map +1 -0
- package/dist/assets/sanitize-filename.js.map +1 -0
- package/dist/assets/sanitize-filepath.d.ts.map +1 -0
- package/dist/assets/sanitize-filepath.js.map +1 -0
- package/dist/assets/truncate-utf8-bytes.d.ts.map +1 -0
- package/dist/assets/truncate-utf8-bytes.js.map +1 -0
- package/dist/assets/types.d.ts.map +1 -0
- package/dist/assets/types.js.map +1 -0
- package/dist/browser/Accessibility.d.ts +175 -0
- package/dist/browser/Accessibility.js +423 -0
- package/dist/browser/AriaQueryHandler.d.ts +20 -0
- package/dist/browser/AriaQueryHandler.js +108 -0
- package/dist/browser/Browser.d.ts +209 -0
- package/dist/browser/Browser.js +402 -0
- package/dist/browser/BrowserConnector.d.ts +26 -0
- package/dist/browser/BrowserConnector.js +49 -0
- package/dist/browser/BrowserFetcher.d.ts +89 -0
- package/dist/browser/BrowserFetcher.js +512 -0
- package/dist/browser/BrowserRunner.d.ts +39 -0
- package/dist/browser/BrowserRunner.js +308 -0
- package/dist/browser/Connection.d.ts +49 -0
- package/dist/browser/Connection.js +262 -0
- package/dist/browser/ConnectionTransport.d.ts +21 -0
- package/dist/browser/ConnectionTransport.js +17 -0
- package/dist/browser/ConsoleMessage.d.ts +55 -0
- package/dist/browser/ConsoleMessage.js +75 -0
- package/dist/browser/Coverage.d.ts +180 -0
- package/dist/browser/Coverage.js +371 -0
- package/dist/browser/DOMWorld.d.ts +50 -0
- package/dist/browser/DOMWorld.js +280 -0
- package/dist/browser/Debug.d.ts +19 -0
- package/dist/browser/Debug.js +42 -0
- package/dist/browser/DeviceDescriptors.d.ts +40 -0
- package/dist/browser/DeviceDescriptors.js +1407 -0
- package/dist/browser/EmulationManager.d.ts +7 -0
- package/dist/browser/EmulationManager.js +40 -0
- package/dist/browser/Errors.d.ts +25 -0
- package/dist/browser/Errors.js +35 -0
- package/dist/browser/EvalTypes.d.ts +27 -0
- package/dist/browser/EvalTypes.js +17 -0
- package/dist/browser/EventEmitter.d.ts +70 -0
- package/dist/browser/EventEmitter.js +102 -0
- package/dist/browser/ExecutionContext.d.ts +35 -0
- package/dist/browser/ExecutionContext.js +190 -0
- package/dist/browser/FileChooser.d.ts +56 -0
- package/dist/browser/FileChooser.js +86 -0
- package/dist/browser/FrameManager.d.ts +96 -0
- package/dist/browser/FrameManager.js +512 -0
- package/dist/browser/HTTPRequest.d.ts +42 -0
- package/dist/browser/HTTPRequest.js +82 -0
- package/dist/browser/HTTPResponse.d.ts +100 -0
- package/dist/browser/HTTPResponse.js +196 -0
- package/dist/browser/Input.d.ts +355 -0
- package/dist/browser/Input.js +592 -0
- package/dist/browser/JSHandle.d.ts +36 -0
- package/dist/browser/JSHandle.js +93 -0
- package/dist/browser/LaunchOptions.d.ts +117 -0
- package/dist/browser/LaunchOptions.js +17 -0
- package/dist/browser/Launcher.d.ts +9 -0
- package/dist/browser/Launcher.js +602 -0
- package/dist/browser/LifecycleWatcher.d.ts +29 -0
- package/dist/browser/LifecycleWatcher.js +193 -0
- package/dist/browser/NetworkConditions.d.ts +26 -0
- package/dist/browser/NetworkConditions.js +33 -0
- package/dist/browser/NetworkEventManager.d.ts +35 -0
- package/dist/browser/NetworkEventManager.js +128 -0
- package/dist/browser/NetworkManager.d.ts +36 -0
- package/dist/browser/NetworkManager.js +284 -0
- package/dist/browser/NodeWebSocketTransport.d.ts +11 -0
- package/dist/browser/NodeWebSocketTransport.js +90 -0
- package/dist/browser/PDFOptions.d.ts +165 -0
- package/dist/browser/PDFOptions.js +34 -0
- package/dist/browser/PipeTransport.d.ts +10 -0
- package/dist/browser/PipeTransport.js +86 -0
- package/dist/browser/Product.d.ts +16 -0
- package/dist/browser/Product.js +17 -0
- package/dist/browser/Puppeteer.d.ts +35 -0
- package/dist/browser/Puppeteer.js +17 -0
- package/dist/browser/PuppeteerNode.d.ts +92 -0
- package/dist/browser/PuppeteerNode.js +143 -0
- package/dist/browser/PuppeteerViewport.d.ts +5 -0
- package/dist/browser/PuppeteerViewport.js +2 -0
- package/dist/browser/QueryHandler.d.ts +64 -0
- package/dist/browser/QueryHandler.js +183 -0
- package/dist/browser/ScreenshotOptions.d.ts +14 -0
- package/dist/browser/ScreenshotOptions.js +2 -0
- package/dist/browser/SecurityDetails.d.ts +55 -0
- package/dist/browser/SecurityDetails.js +95 -0
- package/dist/browser/Target.d.ts +61 -0
- package/dist/browser/Target.js +146 -0
- package/dist/browser/TaskQueue.d.ts +20 -0
- package/dist/browser/TaskQueue.js +47 -0
- package/dist/browser/TimeoutSettings.d.ts +23 -0
- package/dist/browser/TimeoutSettings.js +62 -0
- package/dist/browser/Tracing.d.ts +45 -0
- package/dist/browser/Tracing.js +136 -0
- package/dist/browser/USKeyboardLayout.d.ts +39 -0
- package/dist/browser/USKeyboardLayout.js +406 -0
- package/dist/browser/WebWorker.d.ts +96 -0
- package/dist/browser/WebWorker.js +122 -0
- package/dist/browser/assert.d.ts +21 -0
- package/dist/browser/assert.js +29 -0
- package/dist/browser/compat.d.ts +2 -0
- package/dist/browser/compat.js +17 -0
- package/dist/browser/create-browser-fetcher.d.ts +17 -0
- package/dist/browser/create-browser-fetcher.js +140 -0
- package/dist/browser/dialog.d.ts +70 -0
- package/dist/browser/dialog.js +114 -0
- package/dist/browser/environment.d.ts +16 -0
- package/dist/browser/environment.js +19 -0
- package/dist/browser/fetch.d.ts +16 -0
- package/dist/browser/fetch.js +46 -0
- package/dist/browser/find-up.d.ts +4 -0
- package/dist/browser/find-up.js +85 -0
- package/dist/browser/get-download-destination.d.ts +1 -0
- package/dist/browser/get-download-destination.js +38 -0
- package/dist/browser/mitt/index.d.ts +22 -0
- package/dist/browser/mitt/index.js +49 -0
- package/dist/browser/node.d.ts +2 -0
- package/dist/browser/node.js +9 -0
- package/dist/browser/page.d.ts +78 -0
- package/dist/browser/page.js +277 -0
- package/dist/browser/pkg-dir.d.ts +3 -0
- package/dist/browser/pkg-dir.js +13 -0
- package/dist/browser/revisions.d.ts +21 -0
- package/dist/browser/revisions.js +22 -0
- package/dist/browser/util.d.ts +46 -0
- package/dist/browser/util.js +161 -0
- package/dist/browser-log.d.ts.map +1 -0
- package/dist/browser-log.js.map +1 -0
- package/dist/calculate-ffmpeg-filters.d.ts.map +1 -0
- package/dist/calculate-ffmpeg-filters.js +2 -2
- package/dist/calculate-ffmpeg-filters.js.map +1 -0
- package/dist/can-use-parallel-encoding.d.ts.map +1 -0
- package/dist/can-use-parallel-encoding.js.map +1 -0
- package/dist/chunk.d.ts.map +1 -0
- package/dist/chunk.js.map +1 -0
- package/dist/combine-videos.d.ts +2 -1
- package/dist/combine-videos.d.ts.map +1 -0
- package/dist/combine-videos.js +8 -1
- package/dist/combine-videos.js.map +1 -0
- package/dist/convert-to-pcm.d.ts.map +1 -0
- package/dist/convert-to-pcm.js.map +1 -0
- package/dist/create-ffmpeg-complex-filter.d.ts +4 -1
- package/dist/create-ffmpeg-complex-filter.d.ts.map +1 -0
- package/dist/create-ffmpeg-complex-filter.js.map +1 -0
- package/dist/create-ffmpeg-merge-filter.d.ts.map +1 -0
- package/dist/create-ffmpeg-merge-filter.js.map +1 -0
- package/dist/create-silent-audio.d.ts.map +1 -0
- package/dist/create-silent-audio.js.map +1 -0
- package/dist/cycle-browser-tabs.d.ts +2 -1
- package/dist/cycle-browser-tabs.d.ts.map +1 -0
- package/dist/cycle-browser-tabs.js +9 -2
- package/dist/cycle-browser-tabs.js.map +1 -0
- package/dist/delay-render-embedded-stack.d.ts.map +1 -0
- package/dist/delay-render-embedded-stack.js.map +1 -0
- package/dist/delete-directory.d.ts.map +1 -0
- package/dist/delete-directory.js.map +1 -0
- package/dist/ensure-frames-in-order.d.ts.map +1 -0
- package/dist/ensure-frames-in-order.js.map +1 -0
- package/dist/ensure-output-directory.d.ts.map +1 -0
- package/dist/ensure-output-directory.js.map +1 -0
- package/dist/ensure-presentation-timestamp.d.ts +1 -0
- package/dist/ensure-presentation-timestamp.js +57 -0
- package/dist/error-handling/handle-javascript-exception.d.ts.map +1 -0
- package/dist/error-handling/handle-javascript-exception.js.map +1 -0
- package/dist/error-handling/symbolicate-error.d.ts.map +1 -0
- package/dist/error-handling/symbolicate-error.js.map +1 -0
- package/dist/error-handling/symbolicateable-error.d.ts.map +1 -0
- package/dist/error-handling/symbolicateable-error.js.map +1 -0
- package/dist/extract-frame-from-video.d.ts +11 -0
- package/dist/extract-frame-from-video.js +197 -0
- package/dist/ffmpeg-filter-file.d.ts.map +1 -0
- package/dist/ffmpeg-filter-file.js.map +1 -0
- package/dist/ffmpeg-flags.d.ts.map +1 -0
- package/dist/ffmpeg-flags.js.map +1 -0
- package/dist/frame-to-ffmpeg-timestamp.d.ts +1 -0
- package/dist/frame-to-ffmpeg-timestamp.js +8 -0
- package/dist/get-audio-codec-name.d.ts.map +1 -0
- package/dist/get-audio-codec-name.js.map +1 -0
- package/dist/get-browser-instance.d.ts.map +1 -0
- package/dist/get-browser-instance.js.map +1 -0
- package/dist/get-codec-name.d.ts.map +1 -0
- package/dist/get-codec-name.js.map +1 -0
- package/dist/get-compositions.d.ts +5 -2
- package/dist/get-compositions.d.ts.map +1 -0
- package/dist/get-compositions.js +23 -5
- package/dist/get-compositions.js.map +1 -0
- package/dist/get-concurrency.d.ts.map +1 -0
- package/dist/get-concurrency.js.map +1 -0
- package/dist/get-duration-from-frame-range.d.ts.map +1 -0
- package/dist/get-duration-from-frame-range.js.map +1 -0
- package/dist/get-duration-of-asset.d.ts +7 -0
- package/dist/get-duration-of-asset.js +36 -0
- package/dist/get-extension-from-codec.d.ts.map +1 -0
- package/dist/get-extension-from-codec.js.map +1 -0
- package/dist/get-frame-to-render.d.ts.map +1 -0
- package/dist/get-frame-to-render.js.map +1 -0
- package/dist/get-local-browser-executable.d.ts.map +1 -0
- package/dist/get-local-browser-executable.js.map +1 -0
- package/dist/get-port.d.ts.map +1 -0
- package/dist/get-port.js +26 -24
- package/dist/get-port.js.map +1 -0
- package/dist/get-prores-profile-name.d.ts.map +1 -0
- package/dist/get-prores-profile-name.js.map +1 -0
- package/dist/image-format.d.ts.map +1 -0
- package/dist/image-format.js.map +1 -0
- package/dist/index.d.ts +33 -9
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -5
- package/dist/index.js.map +1 -0
- package/dist/is-beyond-last-frame.d.ts +2 -0
- package/dist/is-beyond-last-frame.js +12 -0
- package/dist/is-serve-url.d.ts.map +1 -0
- package/dist/is-serve-url.js.map +1 -0
- package/dist/last-frame-from-video-cache.d.ts +10 -0
- package/dist/last-frame-from-video-cache.js +50 -0
- package/dist/legacy-webpack-config.d.ts.map +1 -0
- package/dist/legacy-webpack-config.js.map +1 -0
- package/dist/make-assets-download-dir.d.ts.map +1 -0
- package/dist/make-assets-download-dir.js +6 -1
- package/dist/make-assets-download-dir.js.map +1 -0
- package/dist/make-cancel-signal.d.ts +7 -0
- package/dist/make-cancel-signal.js +25 -0
- package/dist/merge-audio-track.d.ts.map +1 -0
- package/dist/merge-audio-track.js +2 -2
- package/dist/merge-audio-track.js.map +1 -0
- package/dist/normalize-serve-url.d.ts.map +1 -0
- package/dist/normalize-serve-url.js.map +1 -0
- package/dist/offthread-video-server.d.ts +14 -0
- package/dist/offthread-video-server.js +67 -0
- package/dist/open-browser.d.ts +5 -5
- package/dist/open-browser.d.ts.map +1 -0
- package/dist/open-browser.js +3 -3
- package/dist/open-browser.js.map +1 -0
- package/dist/p-limit.d.ts.map +1 -0
- package/dist/p-limit.js.map +1 -0
- package/dist/parse-browser-error-stack.d.ts.map +1 -0
- package/dist/parse-browser-error-stack.js.map +1 -0
- package/dist/parse-ffmpeg-progress.d.ts.map +1 -0
- package/dist/parse-ffmpeg-progress.js.map +1 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js.map +1 -0
- package/dist/prepare-server.d.ts +13 -2
- package/dist/prepare-server.d.ts.map +1 -0
- package/dist/prepare-server.js +35 -5
- package/dist/prepare-server.js.map +1 -0
- package/dist/preprocess-audio-track.d.ts +1 -0
- package/dist/preprocess-audio-track.d.ts.map +1 -0
- package/dist/preprocess-audio-track.js +2 -2
- package/dist/preprocess-audio-track.js.map +1 -0
- package/dist/prespawn-ffmpeg.d.ts +2 -0
- package/dist/prespawn-ffmpeg.d.ts.map +1 -0
- package/dist/prespawn-ffmpeg.js +10 -9
- package/dist/prespawn-ffmpeg.js.map +1 -0
- package/dist/provide-screenshot.d.ts +0 -1
- package/dist/provide-screenshot.d.ts.map +1 -0
- package/dist/provide-screenshot.js +1 -1
- package/dist/provide-screenshot.js.map +1 -0
- package/dist/puppeteer-evaluate.d.ts.map +1 -0
- package/dist/puppeteer-evaluate.js.map +1 -0
- package/dist/puppeteer-screenshot.d.ts +0 -1
- package/dist/puppeteer-screenshot.d.ts.map +1 -0
- package/dist/puppeteer-screenshot.js +5 -1
- package/dist/puppeteer-screenshot.js.map +1 -0
- package/dist/render-frames.d.ts +6 -1
- package/dist/render-frames.d.ts.map +1 -0
- package/dist/render-frames.js +96 -37
- package/dist/render-frames.js.map +1 -0
- package/dist/render-media.d.ts +12 -2
- package/dist/render-media.d.ts.map +1 -0
- package/dist/render-media.js +127 -54
- package/dist/render-media.js.map +1 -0
- package/dist/render-still.d.ts +14 -4
- package/dist/render-still.d.ts.map +1 -0
- package/dist/render-still.js +58 -19
- package/dist/render-still.js.map +1 -0
- package/dist/resolve-asset-src.d.ts.map +1 -0
- package/dist/resolve-asset-src.js.map +1 -0
- package/dist/sample-rate.d.ts.map +1 -0
- package/dist/sample-rate.js.map +1 -0
- package/dist/screenshot-dom-element.d.ts +0 -1
- package/dist/screenshot-dom-element.d.ts.map +1 -0
- package/dist/screenshot-dom-element.js.map +1 -0
- package/dist/screenshot-task.d.ts +0 -1
- package/dist/screenshot-task.d.ts.map +1 -0
- package/dist/screenshot-task.js.map +1 -0
- package/dist/seek-to-frame.d.ts.map +1 -0
- package/dist/seek-to-frame.js.map +1 -0
- package/dist/serve-handler/glob-slash.d.ts +1 -0
- package/dist/serve-handler/glob-slash.js +12 -0
- package/dist/serve-handler/index.d.ts +4 -0
- package/dist/serve-handler/index.js +205 -0
- package/dist/serve-handler/is-path-inside.d.ts +1 -0
- package/dist/serve-handler/is-path-inside.js +27 -0
- package/dist/serve-handler/range-parser.d.ts +13 -0
- package/dist/serve-handler/range-parser.js +57 -0
- package/dist/serve-static.d.ts +10 -3
- package/dist/serve-static.d.ts.map +1 -0
- package/dist/serve-static.js +22 -4
- package/dist/serve-static.js.map +1 -0
- package/dist/set-props-and-env.d.ts +3 -1
- package/dist/set-props-and-env.d.ts.map +1 -0
- package/dist/set-props-and-env.js +25 -3
- package/dist/set-props-and-env.js.map +1 -0
- package/dist/stitch-frames-to-video.d.ts +4 -1
- package/dist/stitch-frames-to-video.d.ts.map +1 -0
- package/dist/stitch-frames-to-video.js +36 -15
- package/dist/stitch-frames-to-video.js.map +1 -0
- package/dist/stringify-ffmpeg-filter.d.ts.map +1 -0
- package/dist/stringify-ffmpeg-filter.js +3 -0
- package/dist/stringify-ffmpeg-filter.js.map +1 -0
- package/dist/symbolicate-stacktrace.d.ts.map +1 -0
- package/dist/symbolicate-stacktrace.js.map +1 -0
- package/dist/tmp-dir.d.ts.map +1 -0
- package/dist/tmp-dir.js +5 -1
- package/dist/tmp-dir.js.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/validate-even-dimensions-with-codec.d.ts.map +1 -0
- package/dist/validate-even-dimensions-with-codec.js.map +1 -0
- package/dist/validate-ffmpeg.d.ts.map +1 -0
- package/dist/validate-ffmpeg.js.map +1 -0
- package/dist/validate-fps-for-gif.d.ts +2 -0
- package/dist/validate-fps-for-gif.js +9 -0
- package/dist/validate-puppeteer-timeout.d.ts.map +1 -0
- package/dist/validate-puppeteer-timeout.js.map +1 -0
- package/dist/validate-scale.d.ts.map +1 -0
- package/dist/validate-scale.js.map +1 -0
- package/package.json +6 -7
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
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");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
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");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _PipeTransport_instances, _PipeTransport_pipeWrite, _PipeTransport_eventListeners, _PipeTransport_isClosed, _PipeTransport_pendingMessage, _PipeTransport_dispatch;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PipeTransport = void 0;
|
|
16
|
+
/**
|
|
17
|
+
* Copyright 2018 Google Inc. All rights reserved.
|
|
18
|
+
*
|
|
19
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
20
|
+
* you may not use this file except in compliance with the License.
|
|
21
|
+
* You may obtain a copy of the License at
|
|
22
|
+
*
|
|
23
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
24
|
+
*
|
|
25
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
26
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
27
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
28
|
+
* See the License for the specific language governing permissions and
|
|
29
|
+
* limitations under the License.
|
|
30
|
+
*/
|
|
31
|
+
const assert_1 = require("./assert");
|
|
32
|
+
const util_1 = require("./util");
|
|
33
|
+
class PipeTransport {
|
|
34
|
+
constructor(pipeWrite, pipeRead) {
|
|
35
|
+
_PipeTransport_instances.add(this);
|
|
36
|
+
_PipeTransport_pipeWrite.set(this, void 0);
|
|
37
|
+
_PipeTransport_eventListeners.set(this, void 0);
|
|
38
|
+
_PipeTransport_isClosed.set(this, false);
|
|
39
|
+
_PipeTransport_pendingMessage.set(this, '');
|
|
40
|
+
__classPrivateFieldSet(this, _PipeTransport_pipeWrite, pipeWrite, "f");
|
|
41
|
+
__classPrivateFieldSet(this, _PipeTransport_eventListeners, [
|
|
42
|
+
(0, util_1.addEventListener)(pipeRead, 'data', (buffer) => {
|
|
43
|
+
return __classPrivateFieldGet(this, _PipeTransport_instances, "m", _PipeTransport_dispatch).call(this, buffer);
|
|
44
|
+
}),
|
|
45
|
+
(0, util_1.addEventListener)(pipeRead, 'close', () => {
|
|
46
|
+
if (this.onclose) {
|
|
47
|
+
this.onclose.call(null);
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
(0, util_1.addEventListener)(pipeRead, 'error', util_1.debugError),
|
|
51
|
+
(0, util_1.addEventListener)(pipeWrite, 'error', util_1.debugError),
|
|
52
|
+
], "f");
|
|
53
|
+
}
|
|
54
|
+
send(message) {
|
|
55
|
+
(0, assert_1.assert)(!__classPrivateFieldGet(this, _PipeTransport_isClosed, "f"), '`PipeTransport` is closed.');
|
|
56
|
+
__classPrivateFieldGet(this, _PipeTransport_pipeWrite, "f").write(message);
|
|
57
|
+
__classPrivateFieldGet(this, _PipeTransport_pipeWrite, "f").write('\0');
|
|
58
|
+
}
|
|
59
|
+
close() {
|
|
60
|
+
__classPrivateFieldSet(this, _PipeTransport_isClosed, true, "f");
|
|
61
|
+
(0, util_1.removeEventListeners)(__classPrivateFieldGet(this, _PipeTransport_eventListeners, "f"));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.PipeTransport = PipeTransport;
|
|
65
|
+
_PipeTransport_pipeWrite = new WeakMap(), _PipeTransport_eventListeners = new WeakMap(), _PipeTransport_isClosed = new WeakMap(), _PipeTransport_pendingMessage = new WeakMap(), _PipeTransport_instances = new WeakSet(), _PipeTransport_dispatch = function _PipeTransport_dispatch(buffer) {
|
|
66
|
+
(0, assert_1.assert)(!__classPrivateFieldGet(this, _PipeTransport_isClosed, "f"), '`PipeTransport` is closed.');
|
|
67
|
+
let end = buffer.indexOf('\0');
|
|
68
|
+
if (end === -1) {
|
|
69
|
+
__classPrivateFieldSet(this, _PipeTransport_pendingMessage, __classPrivateFieldGet(this, _PipeTransport_pendingMessage, "f") + buffer.toString(), "f");
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const message = __classPrivateFieldGet(this, _PipeTransport_pendingMessage, "f") + buffer.toString(undefined, 0, end);
|
|
73
|
+
if (this.onmessage) {
|
|
74
|
+
this.onmessage.call(null, message);
|
|
75
|
+
}
|
|
76
|
+
let start = end + 1;
|
|
77
|
+
end = buffer.indexOf('\0', start);
|
|
78
|
+
while (end !== -1) {
|
|
79
|
+
if (this.onmessage) {
|
|
80
|
+
this.onmessage.call(null, buffer.toString(undefined, start, end));
|
|
81
|
+
}
|
|
82
|
+
start = end + 1;
|
|
83
|
+
end = buffer.indexOf('\0', start);
|
|
84
|
+
}
|
|
85
|
+
__classPrivateFieldSet(this, _PipeTransport_pendingMessage, buffer.toString(undefined, start), "f");
|
|
86
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
export declare type Product = 'chrome' | 'firefox';
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -0,0 +1,35 @@
|
|
|
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 { Browser } from './Browser';
|
|
17
|
+
import { BrowserConnectOptions } from './BrowserConnector';
|
|
18
|
+
import { ConnectionTransport } from './ConnectionTransport';
|
|
19
|
+
import { Product } from './Product';
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export interface ConnectOptions extends BrowserConnectOptions {
|
|
24
|
+
browserWSEndpoint?: string;
|
|
25
|
+
transport?: ConnectionTransport;
|
|
26
|
+
product?: Product;
|
|
27
|
+
}
|
|
28
|
+
export declare class Puppeteer {
|
|
29
|
+
protected _changedProduct: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
constructor();
|
|
34
|
+
connect(options: ConnectOptions): Promise<Browser>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Puppeteer = void 0;
|
|
4
|
+
const BrowserConnector_1 = require("./BrowserConnector");
|
|
5
|
+
class Puppeteer {
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
constructor() {
|
|
10
|
+
this._changedProduct = false;
|
|
11
|
+
this.connect = this.connect.bind(this);
|
|
12
|
+
}
|
|
13
|
+
connect(options) {
|
|
14
|
+
return (0, BrowserConnector_1._connectToBrowser)(options);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.Puppeteer = Puppeteer;
|
|
@@ -0,0 +1,92 @@
|
|
|
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 { Browser } from './Browser';
|
|
17
|
+
import { BrowserConnectOptions, ConnectToBrowserOptions } from './BrowserConnector';
|
|
18
|
+
import { BrowserFetcher, BrowserFetcherOptions } from './BrowserFetcher';
|
|
19
|
+
import { ProductLauncher } from './Launcher';
|
|
20
|
+
import { BrowserLaunchArgumentOptions, LaunchOptions } from './LaunchOptions';
|
|
21
|
+
import { Product } from './Product';
|
|
22
|
+
interface PuppeteerLaunchOptions extends LaunchOptions, BrowserLaunchArgumentOptions, BrowserConnectOptions {
|
|
23
|
+
product?: Product;
|
|
24
|
+
extraPrefsFirefox?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
export declare class PuppeteerNode {
|
|
27
|
+
#private;
|
|
28
|
+
_preferredRevision: string;
|
|
29
|
+
constructor(settings: {
|
|
30
|
+
preferredRevision: string;
|
|
31
|
+
productName?: Product;
|
|
32
|
+
});
|
|
33
|
+
connect(options: ConnectToBrowserOptions & {
|
|
34
|
+
product: Product;
|
|
35
|
+
}): Promise<Browser>;
|
|
36
|
+
get _productName(): Product | undefined;
|
|
37
|
+
set _productName(name: Product | undefined);
|
|
38
|
+
/**
|
|
39
|
+
* Launches puppeteer and launches a browser instance with given arguments
|
|
40
|
+
* and options when specified.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* You can use `ignoreDefaultArgs` to filter out `--mute-audio` from default arguments:
|
|
46
|
+
* ```js
|
|
47
|
+
* const browser = await puppeteer.launch({
|
|
48
|
+
* ignoreDefaultArgs: ['--mute-audio']
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* **NOTE** Puppeteer can also be used to control the Chrome browser,
|
|
53
|
+
* but it works best with the version of Chromium it is bundled with.
|
|
54
|
+
* There is no guarantee it will work with any other version.
|
|
55
|
+
* Use `executablePath` option with extreme caution.
|
|
56
|
+
* If Google Chrome (rather than Chromium) is preferred, a {@link https://www.google.com/chrome/browser/canary.html | Chrome Canary} or {@link https://www.chromium.org/getting-involved/dev-channel | Dev Channel} build is suggested.
|
|
57
|
+
* In `puppeteer.launch([options])`, any mention of Chromium also applies to Chrome.
|
|
58
|
+
* See {@link https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/ | this article} for a description of the differences between Chromium and Chrome. {@link https://chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md | This article} describes some differences for Linux users.
|
|
59
|
+
*
|
|
60
|
+
* @param options - Set of configurable options to set on the browser.
|
|
61
|
+
* @returns Promise which resolves to browser instance.
|
|
62
|
+
*/
|
|
63
|
+
launch(options: PuppeteerLaunchOptions): Promise<Browser>;
|
|
64
|
+
/**
|
|
65
|
+
* @remarks
|
|
66
|
+
*
|
|
67
|
+
* **NOTE** `puppeteer.executablePath()` is affected by the `PUPPETEER_EXECUTABLE_PATH`
|
|
68
|
+
* and `PUPPETEER_CHROMIUM_REVISION` environment variables.
|
|
69
|
+
*
|
|
70
|
+
* @returns A path where Puppeteer expects to find the bundled browser.
|
|
71
|
+
* The browser binary might not be there if the download was skipped with
|
|
72
|
+
* the `PUPPETEER_SKIP_DOWNLOAD` environment variable.
|
|
73
|
+
*/
|
|
74
|
+
executablePath(channel?: string): string;
|
|
75
|
+
get _launcher(): ProductLauncher;
|
|
76
|
+
/**
|
|
77
|
+
* The name of the browser that is under automation (`"chrome"` or `"firefox"`)
|
|
78
|
+
*
|
|
79
|
+
* @remarks
|
|
80
|
+
* The product is set by the `PUPPETEER_PRODUCT` environment variable or the `product`
|
|
81
|
+
* option in `puppeteer.launch([options])` and defaults to `chrome`.
|
|
82
|
+
* Firefox support is experimental.
|
|
83
|
+
*/
|
|
84
|
+
get product(): string;
|
|
85
|
+
/**
|
|
86
|
+
* @param options - Set of configurable options to specify the settings
|
|
87
|
+
* of the BrowserFetcher.
|
|
88
|
+
* @returns A new BrowserFetcher instance.
|
|
89
|
+
*/
|
|
90
|
+
createBrowserFetcher(options: BrowserFetcherOptions): BrowserFetcher;
|
|
91
|
+
}
|
|
92
|
+
export {};
|
|
@@ -0,0 +1,143 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
+
};
|
|
31
|
+
var _PuppeteerNode_lazyLauncher, _PuppeteerNode_productName;
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.PuppeteerNode = void 0;
|
|
34
|
+
const BrowserConnector_1 = require("./BrowserConnector");
|
|
35
|
+
const BrowserFetcher_1 = require("./BrowserFetcher");
|
|
36
|
+
const Launcher_1 = __importDefault(require("./Launcher"));
|
|
37
|
+
const revisions_1 = require("./revisions");
|
|
38
|
+
class PuppeteerNode {
|
|
39
|
+
constructor(settings) {
|
|
40
|
+
_PuppeteerNode_lazyLauncher.set(this, void 0);
|
|
41
|
+
_PuppeteerNode_productName.set(this, void 0);
|
|
42
|
+
const { preferredRevision, productName } = settings;
|
|
43
|
+
__classPrivateFieldSet(this, _PuppeteerNode_productName, productName, "f");
|
|
44
|
+
this._preferredRevision = preferredRevision;
|
|
45
|
+
this.connect = this.connect.bind(this);
|
|
46
|
+
this.launch = this.launch.bind(this);
|
|
47
|
+
this.executablePath = this.executablePath.bind(this);
|
|
48
|
+
this.createBrowserFetcher = this.createBrowserFetcher.bind(this);
|
|
49
|
+
}
|
|
50
|
+
connect(options) {
|
|
51
|
+
if (options.product) {
|
|
52
|
+
this._productName = options.product;
|
|
53
|
+
}
|
|
54
|
+
return (0, BrowserConnector_1._connectToBrowser)(options);
|
|
55
|
+
}
|
|
56
|
+
get _productName() {
|
|
57
|
+
return __classPrivateFieldGet(this, _PuppeteerNode_productName, "f");
|
|
58
|
+
}
|
|
59
|
+
set _productName(name) {
|
|
60
|
+
__classPrivateFieldSet(this, _PuppeteerNode_productName, name, "f");
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Launches puppeteer and launches a browser instance with given arguments
|
|
64
|
+
* and options when specified.
|
|
65
|
+
*
|
|
66
|
+
* @remarks
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* You can use `ignoreDefaultArgs` to filter out `--mute-audio` from default arguments:
|
|
70
|
+
* ```js
|
|
71
|
+
* const browser = await puppeteer.launch({
|
|
72
|
+
* ignoreDefaultArgs: ['--mute-audio']
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* **NOTE** Puppeteer can also be used to control the Chrome browser,
|
|
77
|
+
* but it works best with the version of Chromium it is bundled with.
|
|
78
|
+
* There is no guarantee it will work with any other version.
|
|
79
|
+
* Use `executablePath` option with extreme caution.
|
|
80
|
+
* If Google Chrome (rather than Chromium) is preferred, a {@link https://www.google.com/chrome/browser/canary.html | Chrome Canary} or {@link https://www.chromium.org/getting-involved/dev-channel | Dev Channel} build is suggested.
|
|
81
|
+
* In `puppeteer.launch([options])`, any mention of Chromium also applies to Chrome.
|
|
82
|
+
* See {@link https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/ | this article} for a description of the differences between Chromium and Chrome. {@link https://chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md | This article} describes some differences for Linux users.
|
|
83
|
+
*
|
|
84
|
+
* @param options - Set of configurable options to set on the browser.
|
|
85
|
+
* @returns Promise which resolves to browser instance.
|
|
86
|
+
*/
|
|
87
|
+
launch(options) {
|
|
88
|
+
if (options.product) {
|
|
89
|
+
this._productName = options.product;
|
|
90
|
+
}
|
|
91
|
+
return this._launcher.launch(options);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* @remarks
|
|
95
|
+
*
|
|
96
|
+
* **NOTE** `puppeteer.executablePath()` is affected by the `PUPPETEER_EXECUTABLE_PATH`
|
|
97
|
+
* and `PUPPETEER_CHROMIUM_REVISION` environment variables.
|
|
98
|
+
*
|
|
99
|
+
* @returns A path where Puppeteer expects to find the bundled browser.
|
|
100
|
+
* The browser binary might not be there if the download was skipped with
|
|
101
|
+
* the `PUPPETEER_SKIP_DOWNLOAD` environment variable.
|
|
102
|
+
*/
|
|
103
|
+
executablePath(channel) {
|
|
104
|
+
return this._launcher.executablePath(channel);
|
|
105
|
+
}
|
|
106
|
+
get _launcher() {
|
|
107
|
+
if (!__classPrivateFieldGet(this, _PuppeteerNode_lazyLauncher, "f") ||
|
|
108
|
+
__classPrivateFieldGet(this, _PuppeteerNode_lazyLauncher, "f").product !== this._productName) {
|
|
109
|
+
switch (this._productName) {
|
|
110
|
+
case 'firefox':
|
|
111
|
+
this._preferredRevision = revisions_1.PUPPETEER_REVISIONS.firefox;
|
|
112
|
+
break;
|
|
113
|
+
case 'chrome':
|
|
114
|
+
default:
|
|
115
|
+
this._preferredRevision = revisions_1.PUPPETEER_REVISIONS.chromium;
|
|
116
|
+
}
|
|
117
|
+
// eslint-disable-next-line new-cap
|
|
118
|
+
__classPrivateFieldSet(this, _PuppeteerNode_lazyLauncher, (0, Launcher_1.default)(this._preferredRevision, this._productName), "f");
|
|
119
|
+
}
|
|
120
|
+
return __classPrivateFieldGet(this, _PuppeteerNode_lazyLauncher, "f");
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The name of the browser that is under automation (`"chrome"` or `"firefox"`)
|
|
124
|
+
*
|
|
125
|
+
* @remarks
|
|
126
|
+
* The product is set by the `PUPPETEER_PRODUCT` environment variable or the `product`
|
|
127
|
+
* option in `puppeteer.launch([options])` and defaults to `chrome`.
|
|
128
|
+
* Firefox support is experimental.
|
|
129
|
+
*/
|
|
130
|
+
get product() {
|
|
131
|
+
return this._launcher.product;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* @param options - Set of configurable options to specify the settings
|
|
135
|
+
* of the BrowserFetcher.
|
|
136
|
+
* @returns A new BrowserFetcher instance.
|
|
137
|
+
*/
|
|
138
|
+
createBrowserFetcher(options) {
|
|
139
|
+
return new BrowserFetcher_1.BrowserFetcher(options);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.PuppeteerNode = PuppeteerNode;
|
|
143
|
+
_PuppeteerNode_lazyLauncher = new WeakMap(), _PuppeteerNode_productName = new WeakMap();
|
|
@@ -0,0 +1,64 @@
|
|
|
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 { DOMWorld, WaitForSelectorOptions } from './DOMWorld';
|
|
17
|
+
import { ElementHandle, JSHandle } from './JSHandle';
|
|
18
|
+
/**
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export interface InternalQueryHandler {
|
|
22
|
+
queryOne?: (element: ElementHandle, selector: string) => Promise<ElementHandle | null>;
|
|
23
|
+
waitFor?: (domWorld: DOMWorld, selector: string, options: WaitForSelectorOptions) => Promise<ElementHandle | null>;
|
|
24
|
+
queryAll?: (element: ElementHandle, selector: string) => Promise<ElementHandle[]>;
|
|
25
|
+
queryAllArray?: (element: ElementHandle, selector: string) => Promise<JSHandle<Element[]>>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Contains two functions `queryOne` and `queryAll` that can
|
|
29
|
+
* be {@link Puppeteer.registerCustomQueryHandler | registered}
|
|
30
|
+
* as alternative querying strategies. The functions `queryOne` and `queryAll`
|
|
31
|
+
* are executed in the page context. `queryOne` should take an `Element` and a
|
|
32
|
+
* selector string as argument and return a single `Element` or `null` if no
|
|
33
|
+
* element is found. `queryAll` takes the same arguments but should instead
|
|
34
|
+
* return a `NodeListOf<Element>` or `Array<Element>` with all the elements
|
|
35
|
+
* that match the given query selector.
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
export interface CustomQueryHandler {
|
|
39
|
+
queryOne?: (element: Element | Document, selector: string) => Element | null;
|
|
40
|
+
queryAll?: (element: Element | Document, selector: string) => Element[] | NodeListOf<Element>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export declare function _registerCustomQueryHandler(name: string, handler: CustomQueryHandler): void;
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
export declare function _unregisterCustomQueryHandler(name: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
export declare function _customQueryHandlerNames(): string[];
|
|
54
|
+
/**
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
export declare function _clearCustomQueryHandlers(): void;
|
|
58
|
+
/**
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
export declare function _getQueryHandlerAndSelector(selector: string): {
|
|
62
|
+
updatedSelector: string;
|
|
63
|
+
queryHandler: InternalQueryHandler;
|
|
64
|
+
};
|
|
@@ -0,0 +1,183 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports._getQueryHandlerAndSelector = exports._clearCustomQueryHandlers = exports._customQueryHandlerNames = exports._unregisterCustomQueryHandler = exports._registerCustomQueryHandler = void 0;
|
|
19
|
+
const AriaQueryHandler_1 = require("./AriaQueryHandler");
|
|
20
|
+
function makeQueryHandler(handler) {
|
|
21
|
+
const internalHandler = {};
|
|
22
|
+
if (handler.queryOne) {
|
|
23
|
+
const { queryOne } = handler;
|
|
24
|
+
internalHandler.queryOne = async (element, selector) => {
|
|
25
|
+
const jsHandle = await element.evaluateHandle(queryOne, selector);
|
|
26
|
+
const elementHandle = jsHandle.asElement();
|
|
27
|
+
if (elementHandle) {
|
|
28
|
+
return elementHandle;
|
|
29
|
+
}
|
|
30
|
+
await jsHandle.dispose();
|
|
31
|
+
return null;
|
|
32
|
+
};
|
|
33
|
+
internalHandler.waitFor = (domWorld, selector, options) => {
|
|
34
|
+
return domWorld._waitForSelectorInPage(queryOne, selector, options);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (handler.queryAll) {
|
|
38
|
+
const { queryAll } = handler;
|
|
39
|
+
internalHandler.queryAll = async (element, selector) => {
|
|
40
|
+
const jsHandle = await element.evaluateHandle(queryAll, selector);
|
|
41
|
+
const properties = await jsHandle.getProperties();
|
|
42
|
+
await jsHandle.dispose();
|
|
43
|
+
const result = [];
|
|
44
|
+
for (const property of properties.values()) {
|
|
45
|
+
const elementHandle = property.asElement();
|
|
46
|
+
if (elementHandle) {
|
|
47
|
+
result.push(elementHandle);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
internalHandler.queryAllArray = async (element, selector) => {
|
|
53
|
+
const resultHandle = await element.evaluateHandle(queryAll, selector);
|
|
54
|
+
const arrayHandle = await resultHandle.evaluateHandle((res) => {
|
|
55
|
+
return Array.from(res);
|
|
56
|
+
});
|
|
57
|
+
return arrayHandle;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return internalHandler;
|
|
61
|
+
}
|
|
62
|
+
const _defaultHandler = makeQueryHandler({
|
|
63
|
+
queryOne: (element, selector) => {
|
|
64
|
+
return element.querySelector(selector);
|
|
65
|
+
},
|
|
66
|
+
queryAll: (element, selector) => {
|
|
67
|
+
return element.querySelectorAll(selector);
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
const pierceHandler = makeQueryHandler({
|
|
71
|
+
queryOne: (element, selector) => {
|
|
72
|
+
let found = null;
|
|
73
|
+
const search = (root) => {
|
|
74
|
+
const iter = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
|
|
75
|
+
do {
|
|
76
|
+
const currentNode = iter.currentNode;
|
|
77
|
+
if (currentNode.shadowRoot) {
|
|
78
|
+
search(currentNode.shadowRoot);
|
|
79
|
+
}
|
|
80
|
+
if (currentNode instanceof ShadowRoot) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (currentNode !== root && !found && currentNode.matches(selector)) {
|
|
84
|
+
found = currentNode;
|
|
85
|
+
}
|
|
86
|
+
} while (!found && iter.nextNode());
|
|
87
|
+
};
|
|
88
|
+
if (element instanceof Document) {
|
|
89
|
+
element = element.documentElement;
|
|
90
|
+
}
|
|
91
|
+
search(element);
|
|
92
|
+
return found;
|
|
93
|
+
},
|
|
94
|
+
queryAll: (element, selector) => {
|
|
95
|
+
const result = [];
|
|
96
|
+
const collect = (root) => {
|
|
97
|
+
const iter = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
|
|
98
|
+
do {
|
|
99
|
+
const currentNode = iter.currentNode;
|
|
100
|
+
if (currentNode.shadowRoot) {
|
|
101
|
+
collect(currentNode.shadowRoot);
|
|
102
|
+
}
|
|
103
|
+
if (currentNode instanceof ShadowRoot) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (currentNode !== root && currentNode.matches(selector)) {
|
|
107
|
+
result.push(currentNode);
|
|
108
|
+
}
|
|
109
|
+
} while (iter.nextNode());
|
|
110
|
+
};
|
|
111
|
+
if (element instanceof Document) {
|
|
112
|
+
element = element.documentElement;
|
|
113
|
+
}
|
|
114
|
+
collect(element);
|
|
115
|
+
return result;
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
const builtInHandlers = new Map([
|
|
119
|
+
['aria', AriaQueryHandler_1._ariaHandler],
|
|
120
|
+
['pierce', pierceHandler],
|
|
121
|
+
]);
|
|
122
|
+
const queryHandlers = new Map(builtInHandlers);
|
|
123
|
+
/**
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
126
|
+
function _registerCustomQueryHandler(name, handler) {
|
|
127
|
+
if (queryHandlers.get(name)) {
|
|
128
|
+
throw new Error(`A custom query handler named "${name}" already exists`);
|
|
129
|
+
}
|
|
130
|
+
const isValidName = /^[a-zA-Z]+$/.test(name);
|
|
131
|
+
if (!isValidName) {
|
|
132
|
+
throw new Error(`Custom query handler names may only contain [a-zA-Z]`);
|
|
133
|
+
}
|
|
134
|
+
const internalHandler = makeQueryHandler(handler);
|
|
135
|
+
queryHandlers.set(name, internalHandler);
|
|
136
|
+
}
|
|
137
|
+
exports._registerCustomQueryHandler = _registerCustomQueryHandler;
|
|
138
|
+
/**
|
|
139
|
+
* @internal
|
|
140
|
+
*/
|
|
141
|
+
function _unregisterCustomQueryHandler(name) {
|
|
142
|
+
if (queryHandlers.has(name) && !builtInHandlers.has(name)) {
|
|
143
|
+
queryHandlers.delete(name);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports._unregisterCustomQueryHandler = _unregisterCustomQueryHandler;
|
|
147
|
+
/**
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
function _customQueryHandlerNames() {
|
|
151
|
+
return [...queryHandlers.keys()].filter((name) => {
|
|
152
|
+
return !builtInHandlers.has(name);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
exports._customQueryHandlerNames = _customQueryHandlerNames;
|
|
156
|
+
/**
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
function _clearCustomQueryHandlers() {
|
|
160
|
+
_customQueryHandlerNames().forEach(_unregisterCustomQueryHandler);
|
|
161
|
+
}
|
|
162
|
+
exports._clearCustomQueryHandlers = _clearCustomQueryHandlers;
|
|
163
|
+
/**
|
|
164
|
+
* @internal
|
|
165
|
+
*/
|
|
166
|
+
function _getQueryHandlerAndSelector(selector) {
|
|
167
|
+
const hasCustomQueryHandler = /^[a-zA-Z]+\//.test(selector);
|
|
168
|
+
if (!hasCustomQueryHandler) {
|
|
169
|
+
return { updatedSelector: selector, queryHandler: _defaultHandler };
|
|
170
|
+
}
|
|
171
|
+
const index = selector.indexOf('/');
|
|
172
|
+
const name = selector.slice(0, index);
|
|
173
|
+
const updatedSelector = selector.slice(index + 1);
|
|
174
|
+
const queryHandler = queryHandlers.get(name);
|
|
175
|
+
if (!queryHandler) {
|
|
176
|
+
throw new Error(`Query set to use "${name}", but no query handler of that name was found`);
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
updatedSelector,
|
|
180
|
+
queryHandler,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
exports._getQueryHandlerAndSelector = _getQueryHandlerAndSelector;
|