@remotion/renderer 4.0.357 → 4.0.360
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/render-frames.js +1 -1
- package/dist/test/actual-concurrency.test.d.ts +1 -0
- package/dist/test/artifacts.test.d.ts +1 -0
- package/dist/test/asset-calculation.test.d.ts +1 -0
- package/dist/test/asset-compression.test.d.ts +1 -0
- package/dist/test/avoid-ffmpeg-stackoverflow.test.d.ts +1 -0
- package/dist/test/browser-log-message.test.d.ts +1 -0
- package/dist/test/calculate-atempo.test.d.ts +1 -0
- package/dist/test/compositor-rust.test.d.ts +1 -0
- package/dist/test/crf.test.d.ts +1 -0
- package/dist/test/derive-codec-from-file-extension.test.d.ts +1 -0
- package/dist/test/dont-skip-assets.test.d.ts +1 -0
- package/dist/test/download-file.test.d.ts +1 -0
- package/dist/test/even-dimensions.test.d.ts +1 -0
- package/dist/test/extra-frames-to-capture.test.d.ts +1 -0
- package/dist/test/extract-audio.test.d.ts +1 -0
- package/dist/test/extract-frame-rust.test.d.ts +1 -0
- package/dist/test/ffmpeg-filters.test.d.ts +1 -0
- package/dist/test/ffmpeg-merge-filter.test.d.ts +1 -0
- package/dist/test/ffmpeg-volume-expression.test.d.ts +1 -0
- package/dist/test/file-extension.test.d.ts +1 -0
- package/dist/test/find-closest-package-json.test.d.ts +1 -0
- package/dist/test/flatten-volume-array.test.d.ts +1 -0
- package/dist/test/format-logs.test.d.ts +1 -0
- package/dist/test/frame-padded-index.test.d.ts +1 -0
- package/dist/test/frame.test.d.ts +1 -0
- package/dist/test/get-assets-for-markup.d.ts +8 -0
- package/dist/test/get-audio-channels.test.d.ts +1 -0
- package/dist/test/get-bundle-url-from-serve-url.test.d.ts +1 -0
- package/dist/test/get-silent-parts.test.d.ts +1 -0
- package/dist/test/guess-extension-for-media.test.d.ts +1 -0
- package/dist/test/handle-weird-file-names.test.d.ts +1 -0
- package/dist/test/log-level.test.d.ts +1 -0
- package/dist/test/mime-types.test.d.ts +1 -0
- package/dist/test/offthread-extract-url.test.d.ts +1 -0
- package/dist/test/parse-ffmpeg-progress.test.d.ts +1 -0
- package/dist/test/partitions.test.d.ts +1 -0
- package/dist/test/pixel-format.test.d.ts +1 -0
- package/dist/test/port-config.test.d.ts +1 -0
- package/dist/test/port-selection.test.d.ts +1 -0
- package/dist/test/prores-profile.test.d.ts +1 -0
- package/dist/test/render-still.test.d.ts +1 -0
- package/dist/test/rust-errors.test.d.ts +1 -0
- package/dist/test/rust-get-video-metadata.test.d.ts +1 -0
- package/dist/test/rust-memory-usage.test.d.ts +1 -0
- package/dist/test/sanitize-file-path.test.d.ts +1 -0
- package/dist/test/serve-url.test.d.ts +1 -0
- package/dist/test/symbolicate-remote-stack.test.d.ts +1 -0
- package/dist/test/validate-concurrency.test.d.ts +1 -0
- package/dist/test/validate-config-stitcher.test.d.ts +1 -0
- package/dist/test/validate-config.test.d.ts +1 -0
- package/dist/test/validate-even-dimensions-with-codec.test.d.ts +1 -0
- package/dist/test/validate-image-format.test.d.ts +1 -0
- package/dist/test/webpack-to-serve-url.test.d.ts +1 -0
- package/ensure-browser.mjs +18 -18
- package/package/dist/assets/apply-tone-frequency.d.ts +11 -0
- package/package/dist/assets/apply-tone-frequency.js +34 -0
- package/package/dist/assets/calculate-asset-positions.d.ts +3 -0
- package/package/dist/assets/calculate-asset-positions.js +72 -0
- package/package/dist/assets/calculate-atempo.d.ts +1 -0
- package/package/dist/assets/calculate-atempo.js +16 -0
- package/package/dist/assets/convert-assets-to-file-urls.d.ts +13 -0
- package/package/dist/assets/convert-assets-to-file-urls.js +36 -0
- package/package/dist/assets/download-and-map-assets-to-file.d.ts +37 -0
- package/package/dist/assets/download-and-map-assets-to-file.js +312 -0
- package/package/dist/assets/download-file.d.ts +18 -0
- package/package/dist/assets/download-file.js +135 -0
- package/package/dist/assets/download-map.d.ts +55 -0
- package/package/dist/assets/download-map.js +63 -0
- package/package/dist/assets/ffmpeg-volume-expression.d.ts +12 -0
- package/package/dist/assets/ffmpeg-volume-expression.js +96 -0
- package/package/dist/assets/flatten-volume-array.d.ts +3 -0
- package/package/dist/assets/flatten-volume-array.js +26 -0
- package/package/dist/assets/get-audio-channels.d.ts +20 -0
- package/package/dist/assets/get-audio-channels.js +78 -0
- package/package/dist/assets/inline-audio-mixing.d.ts +22 -0
- package/package/dist/assets/inline-audio-mixing.js +189 -0
- package/package/dist/assets/read-file.d.ts +7 -0
- package/package/dist/assets/read-file.js +97 -0
- package/package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts +1 -0
- package/package/dist/assets/round-volume-to-avoid-stack-overflow.js +17 -0
- package/package/dist/assets/sanitize-filename.d.ts +1 -0
- package/package/dist/assets/sanitize-filename.js +58 -0
- package/package/dist/assets/sanitize-filepath.d.ts +1 -0
- package/package/dist/assets/sanitize-filepath.js +16 -0
- package/package/dist/assets/truncate-utf8-bytes.d.ts +1 -0
- package/package/dist/assets/truncate-utf8-bytes.js +36 -0
- package/package/dist/assets/types.d.ts +18 -0
- package/package/dist/assets/types.js +21 -0
- package/package/dist/browser/Browser.d.ts +97 -0
- package/package/dist/browser/Browser.js +246 -0
- package/package/dist/browser/BrowserFetcher.d.ts +33 -0
- package/package/dist/browser/BrowserFetcher.js +215 -0
- package/package/dist/browser/BrowserPage.d.ts +104 -0
- package/package/dist/browser/BrowserPage.js +436 -0
- package/package/dist/browser/BrowserRunner.d.ts +33 -0
- package/package/dist/browser/BrowserRunner.js +303 -0
- package/package/dist/browser/Connection.d.ts +49 -0
- package/package/dist/browser/Connection.js +258 -0
- package/package/dist/browser/ConsoleMessage.d.ts +42 -0
- package/package/dist/browser/ConsoleMessage.js +47 -0
- package/package/dist/browser/DOMWorld.d.ts +56 -0
- package/package/dist/browser/DOMWorld.js +272 -0
- package/package/dist/browser/Errors.d.ts +25 -0
- package/package/dist/browser/Errors.js +35 -0
- package/package/dist/browser/EvalTypes.d.ts +27 -0
- package/package/dist/browser/EvalTypes.js +17 -0
- package/package/dist/browser/EventEmitter.d.ts +23 -0
- package/package/dist/browser/EventEmitter.js +53 -0
- package/package/dist/browser/ExecutionContext.d.ts +34 -0
- package/package/dist/browser/ExecutionContext.js +174 -0
- package/package/dist/browser/FrameManager.d.ts +89 -0
- package/package/dist/browser/FrameManager.js +487 -0
- package/package/dist/browser/HTTPRequest.d.ts +29 -0
- package/package/dist/browser/HTTPRequest.js +39 -0
- package/package/dist/browser/HTTPResponse.d.ts +21 -0
- package/package/dist/browser/HTTPResponse.js +41 -0
- package/package/dist/browser/JSHandle.d.ts +35 -0
- package/package/dist/browser/JSHandle.js +90 -0
- package/package/dist/browser/LaunchOptions.d.ts +26 -0
- package/package/dist/browser/LaunchOptions.js +17 -0
- package/package/dist/browser/Launcher.d.ts +18 -0
- package/package/dist/browser/Launcher.js +41 -0
- package/package/dist/browser/LifecycleWatcher.d.ts +29 -0
- package/package/dist/browser/LifecycleWatcher.js +180 -0
- package/package/dist/browser/NetworkEventManager.d.ts +34 -0
- package/package/dist/browser/NetworkEventManager.js +85 -0
- package/package/dist/browser/NetworkManager.d.ts +37 -0
- package/package/dist/browser/NetworkManager.js +246 -0
- package/package/dist/browser/NodeWebSocketTransport.d.ts +19 -0
- package/package/dist/browser/NodeWebSocketTransport.js +81 -0
- package/package/dist/browser/PuppeteerViewport.d.ts +5 -0
- package/package/dist/browser/PuppeteerViewport.js +2 -0
- package/package/dist/browser/ScreenshotOptions.d.ts +0 -0
- package/package/dist/browser/ScreenshotOptions.js +1 -0
- package/package/dist/browser/Target.d.ts +72 -0
- package/package/dist/browser/Target.js +161 -0
- package/package/dist/browser/TaskQueue.d.ts +20 -0
- package/package/dist/browser/TaskQueue.js +47 -0
- package/package/dist/browser/TimeoutSettings.d.ts +24 -0
- package/package/dist/browser/TimeoutSettings.js +62 -0
- package/package/dist/browser/assert.d.ts +1 -0
- package/package/dist/browser/assert.js +9 -0
- package/package/dist/browser/browser-download-progress-bar.d.ts +7 -0
- package/package/dist/browser/browser-download-progress-bar.js +31 -0
- package/package/dist/browser/devtools-commands.d.ts +274 -0
- package/package/dist/browser/devtools-commands.js +2 -0
- package/package/dist/browser/devtools-types.d.ts +1263 -0
- package/package/dist/browser/devtools-types.js +2 -0
- package/package/dist/browser/flaky-errors.d.ts +2 -0
- package/package/dist/browser/flaky-errors.js +20 -0
- package/package/dist/browser/get-download-destination.d.ts +1 -0
- package/package/dist/browser/get-download-destination.js +38 -0
- package/package/dist/browser/handle-failed-resource.d.ts +10 -0
- package/package/dist/browser/handle-failed-resource.js +21 -0
- package/package/dist/browser/mitt/index.d.ts +22 -0
- package/package/dist/browser/mitt/index.js +49 -0
- package/package/dist/browser/should-log-message.d.ts +24 -0
- package/package/dist/browser/should-log-message.js +104 -0
- package/package/dist/browser/source-map-getter.d.ts +2 -0
- package/package/dist/browser/source-map-getter.js +2 -0
- package/package/dist/browser/util.d.ts +37 -0
- package/package/dist/browser/util.js +169 -0
- package/package/dist/browser-executable.d.ts +1 -0
- package/package/dist/browser-executable.js +2 -0
- package/package/dist/browser-log.d.ts +6 -0
- package/package/dist/browser-log.js +2 -0
- package/package/dist/browser.d.ts +2 -0
- package/package/dist/browser.js +4 -0
- package/package/dist/call-ffmpeg.d.ts +22 -0
- package/package/dist/call-ffmpeg.js +53 -0
- package/package/dist/can-concat-seamlessly.d.ts +4 -0
- package/package/dist/can-concat-seamlessly.js +17 -0
- package/package/dist/can-use-parallel-encoding.d.ts +3 -0
- package/package/dist/can-use-parallel-encoding.js +19 -0
- package/package/dist/chalk/index.d.ts +55 -0
- package/package/dist/chalk/index.js +130 -0
- package/package/dist/chalk/is-color-supported.d.ts +1 -0
- package/package/dist/chalk/is-color-supported.js +55 -0
- package/package/dist/check-version-requirements.d.ts +3 -0
- package/package/dist/check-version-requirements.js +82 -0
- package/package/dist/chunk.d.ts +1 -0
- package/package/dist/chunk.js +11 -0
- package/package/dist/client.d.ts +3016 -0
- package/package/dist/client.js +57 -0
- package/package/dist/codec-supports-media.d.ts +9 -0
- package/package/dist/codec-supports-media.js +76 -0
- package/package/dist/codec.d.ts +4 -0
- package/package/dist/codec.js +17 -0
- package/package/dist/collect-assets.d.ts +7 -0
- package/package/dist/collect-assets.js +38 -0
- package/package/dist/combine-audio.d.ts +21 -0
- package/package/dist/combine-audio.js +183 -0
- package/package/dist/combine-chunks.d.ts +39 -0
- package/package/dist/combine-chunks.js +171 -0
- package/package/dist/combine-video-streams-seamlessly.d.ts +3 -0
- package/package/dist/combine-video-streams-seamlessly.js +8 -0
- package/package/dist/combine-video-streams.d.ts +17 -0
- package/package/dist/combine-video-streams.js +75 -0
- package/package/dist/compositor/compositor.d.ts +22 -0
- package/package/dist/compositor/compositor.js +182 -0
- package/package/dist/compositor/get-executable-path.d.ts +12 -0
- package/package/dist/compositor/get-executable-path.js +95 -0
- package/package/dist/compositor/get-explicit-env.d.ts +3 -0
- package/package/dist/compositor/get-explicit-env.js +13 -0
- package/package/dist/compositor/make-file-executable.d.ts +1 -0
- package/package/dist/compositor/make-file-executable.js +44 -0
- package/package/dist/compositor/make-nonce.d.ts +1 -0
- package/package/dist/compositor/make-nonce.js +8 -0
- package/package/dist/compositor/payloads.d.ts +73 -0
- package/package/dist/compositor/payloads.js +2 -0
- package/package/dist/compositor/serialize-command.d.ts +2 -0
- package/package/dist/compositor/serialize-command.js +14 -0
- package/package/dist/compress-assets.d.ts +7 -0
- package/package/dist/compress-assets.js +25 -0
- package/package/dist/compress-audio.d.ts +16 -0
- package/package/dist/compress-audio.js +44 -0
- package/package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +1 -0
- package/package/dist/convert-number-of-gif-loops-to-ffmpeg.js +17 -0
- package/package/dist/convert-to-positive-frame-index.d.ts +4 -0
- package/package/dist/convert-to-positive-frame-index.js +8 -0
- package/package/dist/create-audio.d.ts +29 -0
- package/package/dist/create-audio.js +127 -0
- package/package/dist/create-ffmpeg-complex-filter.d.ts +10 -0
- package/package/dist/create-ffmpeg-complex-filter.js +24 -0
- package/package/dist/create-ffmpeg-merge-filter.d.ts +5 -0
- package/package/dist/create-ffmpeg-merge-filter.js +25 -0
- package/package/dist/create-silent-audio.d.ts +10 -0
- package/package/dist/create-silent-audio.js +28 -0
- package/package/dist/crf.d.ts +13 -0
- package/package/dist/crf.js +103 -0
- package/package/dist/cycle-browser-tabs.d.ts +10 -0
- package/package/dist/cycle-browser-tabs.js +50 -0
- package/package/dist/default-on-log.d.ts +2 -0
- package/package/dist/default-on-log.js +8 -0
- package/package/dist/delay-render-embedded-stack.d.ts +2 -0
- package/package/dist/delay-render-embedded-stack.js +17 -0
- package/package/dist/delete-directory.d.ts +1 -0
- package/package/dist/delete-directory.js +68 -0
- package/package/dist/ensure-browser.d.ts +24 -0
- package/package/dist/ensure-browser.js +58 -0
- package/package/dist/ensure-frames-in-order.d.ts +5 -0
- package/package/dist/ensure-frames-in-order.js +39 -0
- package/package/dist/ensure-output-directory.d.ts +1 -0
- package/package/dist/ensure-output-directory.js +17 -0
- package/package/dist/error-handling/handle-javascript-exception.d.ts +23 -0
- package/package/dist/error-handling/handle-javascript-exception.js +86 -0
- package/package/dist/error-handling/symbolicate-error.d.ts +3 -0
- package/package/dist/error-handling/symbolicate-error.js +26 -0
- package/package/dist/error-handling/symbolicateable-error.d.ts +18 -0
- package/package/dist/error-handling/symbolicateable-error.js +19 -0
- package/package/dist/error-handling.d.ts +1 -0
- package/package/dist/error-handling.js +5 -0
- package/package/dist/esm/client.mjs +3270 -0
- package/package/dist/esm/error-handling.mjs +363 -0
- package/package/dist/esm/index.mjs +23201 -0
- package/package/dist/esm/pure.mjs +526 -0
- package/package/dist/extract-audio.d.ts +7 -0
- package/package/dist/extract-audio.js +25 -0
- package/package/dist/ffmpeg-args.d.ts +21 -0
- package/package/dist/ffmpeg-args.js +96 -0
- package/package/dist/ffmpeg-filter-file.d.ts +13 -0
- package/package/dist/ffmpeg-filter-file.js +70 -0
- package/package/dist/ffmpeg-override.d.ts +4 -0
- package/package/dist/ffmpeg-override.js +2 -0
- package/package/dist/file-extensions.d.ts +14 -0
- package/package/dist/file-extensions.js +85 -0
- package/package/dist/filter-asset-types.d.ts +8 -0
- package/package/dist/filter-asset-types.js +44 -0
- package/package/dist/find-closest-package-json.d.ts +2 -0
- package/package/dist/find-closest-package-json.js +31 -0
- package/package/dist/format-logs.d.ts +3 -0
- package/package/dist/format-logs.js +214 -0
- package/package/dist/frame-range.d.ts +2 -0
- package/package/dist/frame-range.js +49 -0
- package/package/dist/get-browser-instance.d.ts +24 -0
- package/package/dist/get-browser-instance.js +63 -0
- package/package/dist/get-bundle-url-from-serve-url.d.ts +2 -0
- package/package/dist/get-bundle-url-from-serve-url.js +30 -0
- package/package/dist/get-codec-name.d.ts +21 -0
- package/package/dist/get-codec-name.js +87 -0
- package/package/dist/get-compositions.d.ts +34 -0
- package/package/dist/get-compositions.js +196 -0
- package/package/dist/get-concurrency.d.ts +1 -0
- package/package/dist/get-concurrency.js +27 -0
- package/package/dist/get-cpu-count.d.ts +2 -0
- package/package/dist/get-cpu-count.js +33 -0
- package/package/dist/get-duration-from-frame-range.d.ts +1 -0
- package/package/dist/get-duration-from-frame-range.js +17 -0
- package/package/dist/get-extension-from-codec.d.ts +6 -0
- package/package/dist/get-extension-from-codec.js +61 -0
- package/package/dist/get-extension-of-filename.d.ts +1 -0
- package/package/dist/get-extension-of-filename.js +15 -0
- package/package/dist/get-extra-frames-to-capture.d.ts +14 -0
- package/package/dist/get-extra-frames-to-capture.js +62 -0
- package/package/dist/get-frame-padded-index.d.ts +21 -0
- package/package/dist/get-frame-padded-index.js +43 -0
- package/package/dist/get-frame-to-render.d.ts +2 -0
- package/package/dist/get-frame-to-render.js +19 -0
- package/package/dist/get-local-browser-executable.d.ts +9 -0
- package/package/dist/get-local-browser-executable.js +36 -0
- package/package/dist/get-port.d.ts +15 -0
- package/package/dist/get-port.js +86 -0
- package/package/dist/get-prores-profile-name.d.ts +3 -0
- package/package/dist/get-prores-profile-name.js +25 -0
- package/package/dist/get-silent-parts.d.ts +10 -0
- package/package/dist/get-silent-parts.js +66 -0
- package/package/dist/get-video-metadata.d.ts +10 -0
- package/package/dist/get-video-metadata.js +25 -0
- package/package/dist/get-video-threads-flag.d.ts +2 -0
- package/package/dist/get-video-threads-flag.js +16 -0
- package/package/dist/goto-page-or-throw.d.ts +3 -0
- package/package/dist/goto-page-or-throw.js +16 -0
- package/package/dist/guess-extension-for-media.d.ts +9 -0
- package/package/dist/guess-extension-for-media.js +31 -0
- package/package/dist/image-format.d.ts +13 -0
- package/package/dist/image-format.js +37 -0
- package/package/dist/index.d.ts +1256 -0
- package/package/dist/index.js +227 -0
- package/package/dist/is-audio-codec.d.ts +2 -0
- package/package/dist/is-audio-codec.js +7 -0
- package/package/dist/is-delay-render-error-with-retry.d.ts +1 -0
- package/package/dist/is-delay-render-error-with-retry.js +28 -0
- package/package/dist/is-serve-url.d.ts +1 -0
- package/package/dist/is-serve-url.js +15 -0
- package/package/dist/jpeg-quality.d.ts +2 -0
- package/package/dist/jpeg-quality.js +22 -0
- package/package/dist/locks.d.ts +7 -0
- package/package/dist/locks.js +47 -0
- package/package/dist/log-level.d.ts +4 -0
- package/package/dist/log-level.js +15 -0
- package/package/dist/logger.d.ts +20 -0
- package/package/dist/logger.js +89 -0
- package/package/dist/make-cancel-signal.d.ts +14 -0
- package/package/dist/make-cancel-signal.js +48 -0
- package/package/dist/make-metadata-args.d.ts +2 -0
- package/package/dist/make-metadata-args.js +22 -0
- package/package/dist/make-page.d.ts +30 -0
- package/package/dist/make-page.js +70 -0
- package/package/dist/memory/from-docker-cgroup.d.ts +1 -0
- package/package/dist/memory/from-docker-cgroup.js +66 -0
- package/package/dist/memory/from-lambda-env.d.ts +1 -0
- package/package/dist/memory/from-lambda-env.js +10 -0
- package/package/dist/memory/from-proc-meminfo.d.ts +2 -0
- package/package/dist/memory/from-proc-meminfo.js +44 -0
- package/package/dist/memory/get-available-memory.d.ts +2 -0
- package/package/dist/memory/get-available-memory.js +44 -0
- package/package/dist/merge-audio-track.d.ts +19 -0
- package/package/dist/merge-audio-track.js +133 -0
- package/package/dist/mime-db.d.ts +6 -0
- package/package/dist/mime-db.js +8636 -0
- package/package/dist/mime-types.d.ts +3 -0
- package/package/dist/mime-types.js +94 -0
- package/package/dist/mux-video-and-audio.d.ts +15 -0
- package/package/dist/mux-video-and-audio.js +54 -0
- package/package/dist/next-frame-to-render.d.ts +11 -0
- package/package/dist/next-frame-to-render.js +41 -0
- package/package/dist/normalize-serve-url.d.ts +1 -0
- package/package/dist/normalize-serve-url.js +19 -0
- package/package/dist/offthread-video-server.d.ts +51 -0
- package/package/dist/offthread-video-server.js +217 -0
- package/package/dist/open-browser.d.ts +47 -0
- package/package/dist/open-browser.js +200 -0
- package/package/dist/options/api-key.d.ts +15 -0
- package/package/dist/options/api-key.js +29 -0
- package/package/dist/options/audio-bitrate.d.ts +18 -0
- package/package/dist/options/audio-bitrate.js +35 -0
- package/package/dist/options/audio-codec.d.ts +55 -0
- package/package/dist/options/audio-codec.js +188 -0
- package/package/dist/options/beep-on-finish.d.ts +15 -0
- package/package/dist/options/beep-on-finish.js +35 -0
- package/package/dist/options/binaries-directory.d.ts +15 -0
- package/package/dist/options/binaries-directory.js +35 -0
- package/package/dist/options/chrome-mode.d.ts +17 -0
- package/package/dist/options/chrome-mode.js +46 -0
- package/package/dist/options/color-space.d.ts +23 -0
- package/package/dist/options/color-space.js +49 -0
- package/package/dist/options/crf.d.ts +17 -0
- package/package/dist/options/crf.js +43 -0
- package/package/dist/options/cross-site-isolation.d.ts +15 -0
- package/package/dist/options/cross-site-isolation.js +29 -0
- package/package/dist/options/delete-after.d.ts +19 -0
- package/package/dist/options/delete-after.js +37 -0
- package/package/dist/options/disable-git-source.d.ts +15 -0
- package/package/dist/options/disable-git-source.js +28 -0
- package/package/dist/options/disallow-parallel-encoding.d.ts +15 -0
- package/package/dist/options/disallow-parallel-encoding.js +35 -0
- package/package/dist/options/enable-lambda-insights.d.ts +15 -0
- package/package/dist/options/enable-lambda-insights.js +35 -0
- package/package/dist/options/enable-multiprocess-on-linux.d.ts +15 -0
- package/package/dist/options/enable-multiprocess-on-linux.js +36 -0
- package/package/dist/options/encoding-buffer-size.d.ts +18 -0
- package/package/dist/options/encoding-buffer-size.js +39 -0
- package/package/dist/options/encoding-max-rate.d.ts +18 -0
- package/package/dist/options/encoding-max-rate.js +35 -0
- package/package/dist/options/enforce-audio.d.ts +18 -0
- package/package/dist/options/enforce-audio.js +36 -0
- package/package/dist/options/folder-expiry.d.ts +15 -0
- package/package/dist/options/folder-expiry.js +37 -0
- package/package/dist/options/for-seamless-aac-concatenation.d.ts +19 -0
- package/package/dist/options/for-seamless-aac-concatenation.js +40 -0
- package/package/dist/options/gl.d.ts +24 -0
- package/package/dist/options/gl.js +68 -0
- package/package/dist/options/hardware-acceleration.d.ts +18 -0
- package/package/dist/options/hardware-acceleration.js +56 -0
- package/package/dist/options/headless.d.ts +15 -0
- package/package/dist/options/headless.js +36 -0
- package/package/dist/options/image-sequence-pattern.d.ts +15 -0
- package/package/dist/options/image-sequence-pattern.js +30 -0
- package/package/dist/options/index.d.ts +747 -0
- package/package/dist/options/index.js +97 -0
- package/package/dist/options/jpeg-quality.d.ts +17 -0
- package/package/dist/options/jpeg-quality.js +47 -0
- package/package/dist/options/latency-hint.d.ts +18 -0
- package/package/dist/options/latency-hint.js +27 -0
- package/package/dist/options/log-level.d.ts +16 -0
- package/package/dist/options/log-level.js +32 -0
- package/package/dist/options/metadata.d.ts +18 -0
- package/package/dist/options/metadata.js +47 -0
- package/package/dist/options/mute.d.ts +15 -0
- package/package/dist/options/mute.js +37 -0
- package/package/dist/options/number-of-gif-loops.d.ts +19 -0
- package/package/dist/options/number-of-gif-loops.js +44 -0
- package/package/dist/options/offthreadvideo-cache-size.d.ts +20 -0
- package/package/dist/options/offthreadvideo-cache-size.js +60 -0
- package/package/dist/options/offthreadvideo-threads.d.ts +20 -0
- package/package/dist/options/offthreadvideo-threads.js +40 -0
- package/package/dist/options/on-browser-download.d.ts +22 -0
- package/package/dist/options/on-browser-download.js +19 -0
- package/package/dist/options/option.d.ts +20 -0
- package/package/dist/options/option.js +2 -0
- package/package/dist/options/options-map.d.ts +2040 -0
- package/package/dist/options/options-map.js +192 -0
- package/package/dist/options/overwrite.d.ts +15 -0
- package/package/dist/options/overwrite.js +42 -0
- package/package/dist/options/prefer-lossless.d.ts +18 -0
- package/package/dist/options/prefer-lossless.js +26 -0
- package/package/dist/options/public-dir.d.ts +18 -0
- package/package/dist/options/public-dir.js +37 -0
- package/package/dist/options/public-path.d.ts +18 -0
- package/package/dist/options/public-path.js +37 -0
- package/package/dist/options/repro.d.ts +15 -0
- package/package/dist/options/repro.js +36 -0
- package/package/dist/options/scale.d.ts +15 -0
- package/package/dist/options/scale.js +41 -0
- package/package/dist/options/separate-audio.d.ts +18 -0
- package/package/dist/options/separate-audio.js +28 -0
- package/package/dist/options/throw-if-site-exists.d.ts +15 -0
- package/package/dist/options/throw-if-site-exists.js +28 -0
- package/package/dist/options/timeout.d.ts +15 -0
- package/package/dist/options/timeout.js +44 -0
- package/package/dist/options/video-bitrate.d.ts +15 -0
- package/package/dist/options/video-bitrate.js +35 -0
- package/package/dist/options/video-cache-size.d.ts +19 -0
- package/package/dist/options/video-cache-size.js +39 -0
- package/package/dist/options/video-codec.d.ts +23 -0
- package/package/dist/options/video-codec.js +104 -0
- package/package/dist/options/webhook-custom-data.d.ts +10 -0
- package/package/dist/options/webhook-custom-data.js +21 -0
- package/package/dist/options/x264-preset.d.ts +25 -0
- package/package/dist/options/x264-preset.js +55 -0
- package/package/dist/overwrite.d.ts +1 -0
- package/package/dist/overwrite.js +4 -0
- package/package/dist/p-limit.d.ts +1 -0
- package/package/dist/p-limit.js +57 -0
- package/package/dist/parse-browser-error-stack.d.ts +7 -0
- package/package/dist/parse-browser-error-stack.js +87 -0
- package/package/dist/parse-ffmpeg-progress.d.ts +1 -0
- package/package/dist/parse-ffmpeg-progress.js +18 -0
- package/package/dist/path-normalize.d.ts +1 -0
- package/package/dist/path-normalize.js +132 -0
- package/package/dist/perf.d.ts +5 -0
- package/package/dist/perf.js +37 -0
- package/package/dist/pixel-format.d.ts +6 -0
- package/package/dist/pixel-format.js +37 -0
- package/package/dist/pool.d.ts +8 -0
- package/package/dist/pool.js +30 -0
- package/package/dist/port-config.d.ts +14 -0
- package/package/dist/port-config.js +79 -0
- package/package/dist/prepare-server.d.ts +32 -0
- package/package/dist/prepare-server.js +123 -0
- package/package/dist/preprocess-audio-track.d.ts +27 -0
- package/package/dist/preprocess-audio-track.js +82 -0
- package/package/dist/prespawn-ffmpeg.d.ts +49 -0
- package/package/dist/prespawn-ffmpeg.js +112 -0
- package/package/dist/prestitcher-memory-usage.d.ts +10 -0
- package/package/dist/prestitcher-memory-usage.js +26 -0
- package/package/dist/print-useful-error-message.d.ts +2 -0
- package/package/dist/print-useful-error-message.js +110 -0
- package/package/dist/prores-profile.d.ts +7 -0
- package/package/dist/prores-profile.js +23 -0
- package/package/dist/puppeteer-evaluate.d.ts +17 -0
- package/package/dist/puppeteer-evaluate.js +162 -0
- package/package/dist/puppeteer-screenshot.d.ts +12 -0
- package/package/dist/puppeteer-screenshot.js +58 -0
- package/package/dist/pure.d.ts +17 -0
- package/package/dist/pure.js +17 -0
- package/package/dist/redirect-status-codes.d.ts +1 -0
- package/package/dist/redirect-status-codes.js +6 -0
- package/package/dist/render-frame-and-retry-target-close.d.ts +54 -0
- package/package/dist/render-frame-and-retry-target-close.js +179 -0
- package/package/dist/render-frame-with-option-to-reject.d.ts +48 -0
- package/package/dist/render-frame-with-option-to-reject.js +156 -0
- package/package/dist/render-frame.d.ts +47 -0
- package/package/dist/render-frame.js +51 -0
- package/package/dist/render-frames.d.ts +97 -0
- package/package/dist/render-frames.js +413 -0
- package/package/dist/render-has-audio.d.ts +8 -0
- package/package/dist/render-has-audio.js +20 -0
- package/package/dist/render-media.d.ts +135 -0
- package/package/dist/render-media.js +621 -0
- package/package/dist/render-partitions.d.ts +7 -0
- package/package/dist/render-partitions.js +50 -0
- package/package/dist/render-still.d.ts +74 -0
- package/package/dist/render-still.js +356 -0
- package/package/dist/replace-browser.d.ts +7 -0
- package/package/dist/replace-browser.js +48 -0
- package/package/dist/repro.d.ts +25 -0
- package/package/dist/repro.js +184 -0
- package/package/dist/resolve-asset-src.d.ts +1 -0
- package/package/dist/resolve-asset-src.js +17 -0
- package/package/dist/sample-rate.d.ts +1 -0
- package/package/dist/sample-rate.js +4 -0
- package/package/dist/screenshot-task.d.ts +12 -0
- package/package/dist/screenshot-task.js +86 -0
- package/package/dist/seamless-aac-trim.d.ts +12 -0
- package/package/dist/seamless-aac-trim.js +24 -0
- package/package/dist/seek-to-frame.d.ts +18 -0
- package/package/dist/seek-to-frame.js +148 -0
- package/package/dist/select-composition.d.ts +45 -0
- package/package/dist/select-composition.js +219 -0
- package/package/dist/serialize-artifact.d.ts +7 -0
- package/package/dist/serialize-artifact.js +2 -0
- package/package/dist/serve-handler/index.d.ts +4 -0
- package/package/dist/serve-handler/index.js +208 -0
- package/package/dist/serve-handler/is-path-inside.d.ts +1 -0
- package/package/dist/serve-handler/is-path-inside.js +27 -0
- package/package/dist/serve-handler/range-parser.d.ts +13 -0
- package/package/dist/serve-handler/range-parser.js +57 -0
- package/package/dist/serve-static.d.ts +18 -0
- package/package/dist/serve-static.js +141 -0
- package/package/dist/set-props-and-env.d.ts +22 -0
- package/package/dist/set-props-and-env.js +219 -0
- package/package/dist/stitch-frames-to-video.d.ts +77 -0
- package/package/dist/stitch-frames-to-video.js +350 -0
- package/package/dist/stringify-ffmpeg-filter.d.ts +24 -0
- package/package/dist/stringify-ffmpeg-filter.js +140 -0
- package/package/dist/succeed-or-cancel.d.ts +6 -0
- package/package/dist/succeed-or-cancel.js +23 -0
- package/package/dist/symbolicate-stacktrace.d.ts +29 -0
- package/package/dist/symbolicate-stacktrace.js +155 -0
- package/package/dist/take-frame.d.ts +13 -0
- package/package/dist/take-frame.js +47 -0
- package/package/dist/test/actual-concurrency.test.d.ts +1 -0
- package/package/dist/test/artifacts.test.d.ts +1 -0
- package/package/dist/test/asset-calculation.test.d.ts +1 -0
- package/package/dist/test/asset-compression.test.d.ts +1 -0
- package/package/dist/test/avoid-ffmpeg-stackoverflow.test.d.ts +1 -0
- package/package/dist/test/browser-log-message.test.d.ts +1 -0
- package/package/dist/test/calculate-atempo.test.d.ts +1 -0
- package/package/dist/test/compositor-rust.test.d.ts +1 -0
- package/package/dist/test/crf.test.d.ts +1 -0
- package/package/dist/test/derive-codec-from-file-extension.test.d.ts +1 -0
- package/package/dist/test/dont-skip-assets.test.d.ts +1 -0
- package/package/dist/test/download-file.test.d.ts +1 -0
- package/package/dist/test/even-dimensions.test.d.ts +1 -0
- package/package/dist/test/extra-frames-to-capture.test.d.ts +1 -0
- package/package/dist/test/extract-audio.test.d.ts +1 -0
- package/package/dist/test/extract-frame-rust.test.d.ts +1 -0
- package/package/dist/test/ffmpeg-filters.test.d.ts +1 -0
- package/package/dist/test/ffmpeg-merge-filter.test.d.ts +1 -0
- package/package/dist/test/ffmpeg-volume-expression.test.d.ts +1 -0
- package/package/dist/test/file-extension.test.d.ts +1 -0
- package/package/dist/test/find-closest-package-json.test.d.ts +1 -0
- package/package/dist/test/flatten-volume-array.test.d.ts +1 -0
- package/package/dist/test/format-logs.test.d.ts +1 -0
- package/package/dist/test/frame-padded-index.test.d.ts +1 -0
- package/package/dist/test/frame.test.d.ts +1 -0
- package/package/dist/test/get-assets-for-markup.d.ts +8 -0
- package/package/dist/test/get-audio-channels.test.d.ts +1 -0
- package/package/dist/test/get-bundle-url-from-serve-url.test.d.ts +1 -0
- package/package/dist/test/get-silent-parts.test.d.ts +1 -0
- package/package/dist/test/guess-extension-for-media.test.d.ts +1 -0
- package/package/dist/test/handle-weird-file-names.test.d.ts +1 -0
- package/package/dist/test/log-level.test.d.ts +1 -0
- package/package/dist/test/mime-types.test.d.ts +1 -0
- package/package/dist/test/offthread-extract-url.test.d.ts +1 -0
- package/package/dist/test/parse-ffmpeg-progress.test.d.ts +1 -0
- package/package/dist/test/partitions.test.d.ts +1 -0
- package/package/dist/test/pixel-format.test.d.ts +1 -0
- package/package/dist/test/port-config.test.d.ts +1 -0
- package/package/dist/test/port-selection.test.d.ts +1 -0
- package/package/dist/test/prores-profile.test.d.ts +1 -0
- package/package/dist/test/render-still.test.d.ts +1 -0
- package/package/dist/test/rust-errors.test.d.ts +1 -0
- package/package/dist/test/rust-get-video-metadata.test.d.ts +1 -0
- package/package/dist/test/rust-memory-usage.test.d.ts +1 -0
- package/package/dist/test/sanitize-file-path.test.d.ts +1 -0
- package/package/dist/test/serve-url.test.d.ts +1 -0
- package/package/dist/test/symbolicate-remote-stack.test.d.ts +1 -0
- package/package/dist/test/validate-concurrency.test.d.ts +1 -0
- package/package/dist/test/validate-config-stitcher.test.d.ts +1 -0
- package/package/dist/test/validate-config.test.d.ts +1 -0
- package/package/dist/test/validate-even-dimensions-with-codec.test.d.ts +1 -0
- package/package/dist/test/validate-image-format.test.d.ts +1 -0
- package/package/dist/test/webpack-to-serve-url.test.d.ts +1 -0
- package/package/dist/test-gpu.d.ts +21 -0
- package/package/dist/test-gpu.js +45 -0
- package/package/dist/tmp-dir.d.ts +1 -0
- package/package/dist/tmp-dir.js +63 -0
- package/package/dist/to-megabytes.d.ts +1 -0
- package/package/dist/to-megabytes.js +7 -0
- package/package/dist/truthy.d.ts +3 -0
- package/package/dist/truthy.js +6 -0
- package/package/dist/types.d.ts +10 -0
- package/package/dist/types.js +2 -0
- package/package/dist/v5-required-input-props.d.ts +6 -0
- package/package/dist/v5-required-input-props.js +2 -0
- package/package/dist/validate-concurrency.d.ts +7 -0
- package/package/dist/validate-concurrency.js +38 -0
- package/package/dist/validate-even-dimensions-with-codec.d.ts +14 -0
- package/package/dist/validate-even-dimensions-with-codec.js +40 -0
- package/package/dist/validate-every-nth-frame.d.ts +1 -0
- package/package/dist/validate-every-nth-frame.js +24 -0
- package/package/dist/validate-ffmpeg-override.d.ts +2 -0
- package/package/dist/validate-ffmpeg-override.js +12 -0
- package/package/dist/validate-number-of-gif-loops.d.ts +2 -0
- package/package/dist/validate-number-of-gif-loops.js +24 -0
- package/package/dist/validate-output-filename.d.ts +9 -0
- package/package/dist/validate-output-filename.js +32 -0
- package/package/dist/validate-puppeteer-timeout.d.ts +1 -0
- package/package/dist/validate-puppeteer-timeout.js +25 -0
- package/package/dist/validate-scale.d.ts +1 -0
- package/package/dist/validate-scale.js +26 -0
- package/package/dist/validate-videobitrate.d.ts +1 -0
- package/package/dist/validate-videobitrate.js +20 -0
- package/package/dist/validate.d.ts +4 -0
- package/package/dist/validate.js +8 -0
- package/package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
- package/package/dist/wait-for-symbolication-error-to-be-done.js +8 -0
- package/package/dist/wrap-with-error-handling.d.ts +8 -0
- package/package/dist/wrap-with-error-handling.js +18 -0
- package/package/dist/ws/ws-types.d.ts +15 -0
- package/package/dist/ws/ws-types.js +8 -0
- package/package/ensure-browser.mjs +3337 -0
- package/package.json +105 -104
- package/LICENSE.md +0 -49
- package/bunfig.toml +0 -2
- package/dist/assets/change-tempo.d.ts +0 -34
- package/dist/assets/change-tempo.js +0 -287
- package/dist/assets/change-tonefrequency.d.ts +0 -2
- package/dist/assets/change-tonefrequency.js +0 -28
- package/dist/assets/resample-audiodata.d.ts +0 -6
- package/dist/assets/resample-audiodata.js +0 -54
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.truncateUtf8Bytes = truncateUtf8Bytes;
|
|
4
|
+
function isHighSurrogate(codePoint) {
|
|
5
|
+
return codePoint >= 0xd800 && codePoint <= 0xdbff;
|
|
6
|
+
}
|
|
7
|
+
function isLowSurrogate(codePoint) {
|
|
8
|
+
return codePoint >= 0xdc00 && codePoint <= 0xdfff;
|
|
9
|
+
}
|
|
10
|
+
const getLength = Buffer.byteLength.bind(Buffer);
|
|
11
|
+
function truncateUtf8Bytes(string, byteLength) {
|
|
12
|
+
if (typeof string !== 'string') {
|
|
13
|
+
throw new Error('Input must be string');
|
|
14
|
+
}
|
|
15
|
+
const charLength = string.length;
|
|
16
|
+
let curByteLength = 0;
|
|
17
|
+
let codePoint;
|
|
18
|
+
let segment;
|
|
19
|
+
for (let i = 0; i < charLength; i += 1) {
|
|
20
|
+
codePoint = string.charCodeAt(i);
|
|
21
|
+
segment = string[i];
|
|
22
|
+
if (isHighSurrogate(codePoint) &&
|
|
23
|
+
isLowSurrogate(string.charCodeAt(i + 1))) {
|
|
24
|
+
i += 1;
|
|
25
|
+
segment += string[i];
|
|
26
|
+
}
|
|
27
|
+
curByteLength += getLength(segment);
|
|
28
|
+
if (curByteLength === byteLength) {
|
|
29
|
+
return string.slice(0, i + 1);
|
|
30
|
+
}
|
|
31
|
+
if (curByteLength > byteLength) {
|
|
32
|
+
return string.slice(0, i - segment.length + 1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return string;
|
|
36
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AudioOrVideoAsset } from 'remotion/no-react';
|
|
2
|
+
export type UnsafeAsset = Omit<AudioOrVideoAsset, 'frame' | 'id' | 'volume' | 'mediaFrame' | 'audioStartFrom'> & {
|
|
3
|
+
startInVideo: number;
|
|
4
|
+
duration: number | null;
|
|
5
|
+
trimLeft: number;
|
|
6
|
+
volume: number[];
|
|
7
|
+
id: string;
|
|
8
|
+
playbackRate: number;
|
|
9
|
+
toneFrequency: number;
|
|
10
|
+
audioStreamIndex: number;
|
|
11
|
+
};
|
|
12
|
+
export type AssetVolume = number | number[];
|
|
13
|
+
export type MediaAsset = Omit<UnsafeAsset, 'duration' | 'volume'> & {
|
|
14
|
+
duration: number;
|
|
15
|
+
volume: AssetVolume;
|
|
16
|
+
};
|
|
17
|
+
export declare const uncompressMediaAsset: (allRenderAssets: AudioOrVideoAsset[], assetToUncompress: AudioOrVideoAsset) => AudioOrVideoAsset;
|
|
18
|
+
export type Assets = MediaAsset[];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uncompressMediaAsset = void 0;
|
|
4
|
+
const uncompressMediaAsset = (allRenderAssets, assetToUncompress) => {
|
|
5
|
+
const isCompressed = assetToUncompress.src.match(/same-as-(.*)-([0-9.]+)$/);
|
|
6
|
+
if (!isCompressed) {
|
|
7
|
+
return assetToUncompress;
|
|
8
|
+
}
|
|
9
|
+
const [, id, frame] = isCompressed;
|
|
10
|
+
const assetToFill = allRenderAssets.find((a) => a.id === id && String(a.frame) === frame);
|
|
11
|
+
if (!assetToFill) {
|
|
12
|
+
console.log('List of assets:');
|
|
13
|
+
console.log(allRenderAssets);
|
|
14
|
+
throw new TypeError(`Cannot uncompress asset, asset list seems corrupt. Please file a bug in the Remotion repo with the debug information above.`);
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
...assetToUncompress,
|
|
18
|
+
src: assetToFill.src,
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
exports.uncompressMediaAsset = uncompressMediaAsset;
|
|
@@ -0,0 +1,97 @@
|
|
|
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 { BrowserLog } from '../browser-log';
|
|
17
|
+
import type { LogLevel } from '../log-level';
|
|
18
|
+
import type { OnLog, Page } from './BrowserPage';
|
|
19
|
+
import type { BrowserRunner } from './BrowserRunner';
|
|
20
|
+
import type { Connection } from './Connection';
|
|
21
|
+
import { EventEmitter } from './EventEmitter';
|
|
22
|
+
import type { Viewport } from './PuppeteerViewport';
|
|
23
|
+
import type { SourceMapGetter } from './source-map-getter';
|
|
24
|
+
import { Target } from './Target';
|
|
25
|
+
interface WaitForTargetOptions {
|
|
26
|
+
timeout?: number;
|
|
27
|
+
}
|
|
28
|
+
export declare const enum BrowserEmittedEvents {
|
|
29
|
+
TargetChanged = "targetchanged",
|
|
30
|
+
TargetCreated = "targetcreated",
|
|
31
|
+
Closed = "closed",
|
|
32
|
+
ClosedSilent = "closed-silent"
|
|
33
|
+
}
|
|
34
|
+
export declare class HeadlessBrowser extends EventEmitter {
|
|
35
|
+
#private;
|
|
36
|
+
static create({ defaultViewport, timeout, userDataDir, args, executablePath, logLevel, indent, }: {
|
|
37
|
+
defaultViewport: Viewport;
|
|
38
|
+
timeout: number;
|
|
39
|
+
userDataDir: string;
|
|
40
|
+
args: string[];
|
|
41
|
+
executablePath: string;
|
|
42
|
+
logLevel: LogLevel;
|
|
43
|
+
indent: boolean;
|
|
44
|
+
}): Promise<HeadlessBrowser>;
|
|
45
|
+
connection: Connection;
|
|
46
|
+
id: string;
|
|
47
|
+
runner: BrowserRunner;
|
|
48
|
+
get _targets(): Map<string, Target>;
|
|
49
|
+
constructor({ connection, defaultViewport, runner, }: {
|
|
50
|
+
connection: Connection;
|
|
51
|
+
defaultViewport: Viewport;
|
|
52
|
+
runner: BrowserRunner;
|
|
53
|
+
});
|
|
54
|
+
browserContexts(): BrowserContext[];
|
|
55
|
+
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }: {
|
|
56
|
+
context: SourceMapGetter;
|
|
57
|
+
logLevel: LogLevel;
|
|
58
|
+
indent: boolean;
|
|
59
|
+
pageIndex: number;
|
|
60
|
+
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
61
|
+
onLog: OnLog;
|
|
62
|
+
}): Promise<Page>;
|
|
63
|
+
_createPageInContext({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }: {
|
|
64
|
+
context: SourceMapGetter;
|
|
65
|
+
logLevel: LogLevel;
|
|
66
|
+
indent: boolean;
|
|
67
|
+
pageIndex: number;
|
|
68
|
+
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
69
|
+
onLog: OnLog;
|
|
70
|
+
}): Promise<Page>;
|
|
71
|
+
targets(): Target[];
|
|
72
|
+
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target>;
|
|
73
|
+
pages(): Promise<Page[]>;
|
|
74
|
+
close({ silent }: {
|
|
75
|
+
silent: boolean;
|
|
76
|
+
}): Promise<void>;
|
|
77
|
+
disconnect(): void;
|
|
78
|
+
}
|
|
79
|
+
export declare class BrowserContext extends EventEmitter {
|
|
80
|
+
#private;
|
|
81
|
+
constructor(browser: HeadlessBrowser);
|
|
82
|
+
targets(): Target[];
|
|
83
|
+
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: {
|
|
84
|
+
timeout?: number;
|
|
85
|
+
}): Promise<Target>;
|
|
86
|
+
pages(): Promise<Page[]>;
|
|
87
|
+
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }: {
|
|
88
|
+
context: SourceMapGetter;
|
|
89
|
+
logLevel: LogLevel;
|
|
90
|
+
indent: boolean;
|
|
91
|
+
pageIndex: number;
|
|
92
|
+
onBrowserLog: null | ((log: BrowserLog) => void);
|
|
93
|
+
onLog: OnLog;
|
|
94
|
+
}): Promise<Page>;
|
|
95
|
+
browser(): HeadlessBrowser;
|
|
96
|
+
}
|
|
97
|
+
export {};
|
|
@@ -0,0 +1,246 @@
|
|
|
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 __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
18
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
19
|
+
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");
|
|
20
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
21
|
+
};
|
|
22
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
23
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
24
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
25
|
+
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");
|
|
26
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
27
|
+
};
|
|
28
|
+
var _HeadlessBrowser_instances, _HeadlessBrowser_defaultViewport, _HeadlessBrowser_defaultContext, _HeadlessBrowser_contexts, _HeadlessBrowser_targets, _HeadlessBrowser_targetCreated, _HeadlessBrowser_targetDestroyed, _HeadlessBrowser_targetInfoChanged, _BrowserContext_browser;
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.BrowserContext = exports.HeadlessBrowser = void 0;
|
|
31
|
+
const assert_1 = require("./assert");
|
|
32
|
+
const BrowserRunner_1 = require("./BrowserRunner");
|
|
33
|
+
const EventEmitter_1 = require("./EventEmitter");
|
|
34
|
+
const Target_1 = require("./Target");
|
|
35
|
+
const util_1 = require("./util");
|
|
36
|
+
class HeadlessBrowser extends EventEmitter_1.EventEmitter {
|
|
37
|
+
static async create({ defaultViewport, timeout, userDataDir, args, executablePath, logLevel, indent, }) {
|
|
38
|
+
const runner = await (0, BrowserRunner_1.makeBrowserRunner)({
|
|
39
|
+
executablePath,
|
|
40
|
+
processArguments: args,
|
|
41
|
+
userDataDir,
|
|
42
|
+
indent,
|
|
43
|
+
logLevel,
|
|
44
|
+
timeout,
|
|
45
|
+
});
|
|
46
|
+
const browser = new HeadlessBrowser({
|
|
47
|
+
connection: runner.connection,
|
|
48
|
+
defaultViewport,
|
|
49
|
+
runner,
|
|
50
|
+
});
|
|
51
|
+
await runner.connection.send('Target.setDiscoverTargets', { discover: true });
|
|
52
|
+
return browser;
|
|
53
|
+
}
|
|
54
|
+
get _targets() {
|
|
55
|
+
return __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f");
|
|
56
|
+
}
|
|
57
|
+
constructor({ connection, defaultViewport, runner, }) {
|
|
58
|
+
super();
|
|
59
|
+
_HeadlessBrowser_instances.add(this);
|
|
60
|
+
_HeadlessBrowser_defaultViewport.set(this, void 0);
|
|
61
|
+
_HeadlessBrowser_defaultContext.set(this, void 0);
|
|
62
|
+
_HeadlessBrowser_contexts.set(this, void 0);
|
|
63
|
+
_HeadlessBrowser_targets.set(this, void 0);
|
|
64
|
+
__classPrivateFieldSet(this, _HeadlessBrowser_defaultViewport, defaultViewport, "f");
|
|
65
|
+
this.connection = connection;
|
|
66
|
+
this.id = Math.random().toString(36).substring(2, 15);
|
|
67
|
+
__classPrivateFieldSet(this, _HeadlessBrowser_defaultContext, new BrowserContext(this), "f");
|
|
68
|
+
__classPrivateFieldSet(this, _HeadlessBrowser_contexts, new Map(), "f");
|
|
69
|
+
__classPrivateFieldSet(this, _HeadlessBrowser_targets, new Map(), "f");
|
|
70
|
+
this.connection.on('Target.targetCreated', __classPrivateFieldGet(this, _HeadlessBrowser_instances, "m", _HeadlessBrowser_targetCreated).bind(this));
|
|
71
|
+
this.connection.on('Target.targetDestroyed', __classPrivateFieldGet(this, _HeadlessBrowser_instances, "m", _HeadlessBrowser_targetDestroyed).bind(this));
|
|
72
|
+
this.connection.on('Target.targetInfoChanged', __classPrivateFieldGet(this, _HeadlessBrowser_instances, "m", _HeadlessBrowser_targetInfoChanged).bind(this));
|
|
73
|
+
this.runner = runner;
|
|
74
|
+
}
|
|
75
|
+
browserContexts() {
|
|
76
|
+
return [__classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f"), ...Array.from(__classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").values())];
|
|
77
|
+
}
|
|
78
|
+
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }) {
|
|
79
|
+
return __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f").newPage({
|
|
80
|
+
context,
|
|
81
|
+
logLevel,
|
|
82
|
+
indent,
|
|
83
|
+
pageIndex,
|
|
84
|
+
onBrowserLog,
|
|
85
|
+
onLog,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async _createPageInContext({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }) {
|
|
89
|
+
const { value: { targetId }, } = await this.connection.send('Target.createTarget', {
|
|
90
|
+
url: 'about:blank',
|
|
91
|
+
browserContextId: undefined,
|
|
92
|
+
});
|
|
93
|
+
const target = __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").get(targetId);
|
|
94
|
+
if (!target) {
|
|
95
|
+
throw new Error(`Missing target for page (id = ${targetId})`);
|
|
96
|
+
}
|
|
97
|
+
const initialized = await target._initializedPromise;
|
|
98
|
+
if (!initialized) {
|
|
99
|
+
throw new Error(`Failed to create target for page (id = ${targetId})`);
|
|
100
|
+
}
|
|
101
|
+
const page = await target.page({
|
|
102
|
+
sourceMapGetter: context,
|
|
103
|
+
logLevel,
|
|
104
|
+
indent,
|
|
105
|
+
pageIndex,
|
|
106
|
+
onBrowserLog,
|
|
107
|
+
onLog,
|
|
108
|
+
});
|
|
109
|
+
if (!page) {
|
|
110
|
+
throw new Error(`Failed to create a page for context`);
|
|
111
|
+
}
|
|
112
|
+
return page;
|
|
113
|
+
}
|
|
114
|
+
targets() {
|
|
115
|
+
return Array.from(__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").values()).filter((target) => {
|
|
116
|
+
return target._isInitialized;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
async waitForTarget(predicate, options = {}) {
|
|
120
|
+
const { timeout = 30000 } = options;
|
|
121
|
+
let resolve;
|
|
122
|
+
let isResolved = false;
|
|
123
|
+
const targetPromise = new Promise((x) => {
|
|
124
|
+
resolve = x;
|
|
125
|
+
});
|
|
126
|
+
this.on("targetcreated" /* BrowserEmittedEvents.TargetCreated */, check);
|
|
127
|
+
this.on("targetchanged" /* BrowserEmittedEvents.TargetChanged */, check);
|
|
128
|
+
try {
|
|
129
|
+
if (!timeout) {
|
|
130
|
+
return await targetPromise;
|
|
131
|
+
}
|
|
132
|
+
this.targets().forEach(check);
|
|
133
|
+
return await (0, util_1.waitWithTimeout)(targetPromise, 'target', timeout, this);
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
this.off("targetcreated" /* BrowserEmittedEvents.TargetCreated */, check);
|
|
137
|
+
this.off("targetchanged" /* BrowserEmittedEvents.TargetChanged */, check);
|
|
138
|
+
}
|
|
139
|
+
async function check(target) {
|
|
140
|
+
if ((await predicate(target)) && !isResolved) {
|
|
141
|
+
isResolved = true;
|
|
142
|
+
resolve(target);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async pages() {
|
|
147
|
+
const contextPages = await Promise.all(this.browserContexts().map((context) => {
|
|
148
|
+
return context.pages();
|
|
149
|
+
}));
|
|
150
|
+
// Flatten array.
|
|
151
|
+
return contextPages.reduce((acc, x) => {
|
|
152
|
+
return acc.concat(x);
|
|
153
|
+
}, []);
|
|
154
|
+
}
|
|
155
|
+
async close({ silent }) {
|
|
156
|
+
await this.runner.closeProcess();
|
|
157
|
+
(await this.pages()).forEach((page) => {
|
|
158
|
+
page.emit("disposed" /* PageEmittedEvents.Disposed */);
|
|
159
|
+
page.closed = true;
|
|
160
|
+
});
|
|
161
|
+
this.disconnect();
|
|
162
|
+
this.emit(silent ? "closed-silent" /* BrowserEmittedEvents.ClosedSilent */ : "closed" /* BrowserEmittedEvents.Closed */);
|
|
163
|
+
}
|
|
164
|
+
disconnect() {
|
|
165
|
+
this.connection.dispose();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exports.HeadlessBrowser = HeadlessBrowser;
|
|
169
|
+
_HeadlessBrowser_defaultViewport = new WeakMap(), _HeadlessBrowser_defaultContext = new WeakMap(), _HeadlessBrowser_contexts = new WeakMap(), _HeadlessBrowser_targets = new WeakMap(), _HeadlessBrowser_instances = new WeakSet(), _HeadlessBrowser_targetCreated = async function _HeadlessBrowser_targetCreated(event) {
|
|
170
|
+
var _a;
|
|
171
|
+
const { targetInfo } = event;
|
|
172
|
+
const { browserContextId } = targetInfo;
|
|
173
|
+
const context = browserContextId && __classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").has(browserContextId)
|
|
174
|
+
? __classPrivateFieldGet(this, _HeadlessBrowser_contexts, "f").get(browserContextId)
|
|
175
|
+
: __classPrivateFieldGet(this, _HeadlessBrowser_defaultContext, "f");
|
|
176
|
+
if (!context) {
|
|
177
|
+
throw new Error('Missing browser context');
|
|
178
|
+
}
|
|
179
|
+
const target = new Target_1.Target(targetInfo, context, () => {
|
|
180
|
+
return this.connection.createSession(targetInfo);
|
|
181
|
+
}, (_a = __classPrivateFieldGet(this, _HeadlessBrowser_defaultViewport, "f")) !== null && _a !== void 0 ? _a : null);
|
|
182
|
+
(0, assert_1.assert)(!__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").has(event.targetInfo.targetId), 'Target should not exist before targetCreated');
|
|
183
|
+
__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").set(event.targetInfo.targetId, target);
|
|
184
|
+
if (await target._initializedPromise) {
|
|
185
|
+
this.emit("targetcreated" /* BrowserEmittedEvents.TargetCreated */, target);
|
|
186
|
+
}
|
|
187
|
+
}, _HeadlessBrowser_targetDestroyed = function _HeadlessBrowser_targetDestroyed(event) {
|
|
188
|
+
const target = __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").get(event.targetId);
|
|
189
|
+
if (!target) {
|
|
190
|
+
throw new Error(`Missing target in _targetDestroyed (id = ${event.targetId})`);
|
|
191
|
+
}
|
|
192
|
+
target._initializedCallback(false);
|
|
193
|
+
__classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").delete(event.targetId);
|
|
194
|
+
target._closedCallback();
|
|
195
|
+
}, _HeadlessBrowser_targetInfoChanged = function _HeadlessBrowser_targetInfoChanged(event) {
|
|
196
|
+
const target = __classPrivateFieldGet(this, _HeadlessBrowser_targets, "f").get(event.targetInfo.targetId);
|
|
197
|
+
if (!target) {
|
|
198
|
+
throw new Error(`Missing target in targetInfoChanged (id = ${event.targetInfo.targetId})`);
|
|
199
|
+
}
|
|
200
|
+
const previousURL = target.url();
|
|
201
|
+
const wasInitialized = target._isInitialized;
|
|
202
|
+
target._targetInfoChanged(event.targetInfo);
|
|
203
|
+
if (wasInitialized && previousURL !== target.url()) {
|
|
204
|
+
this.emit("targetchanged" /* BrowserEmittedEvents.TargetChanged */, target);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
class BrowserContext extends EventEmitter_1.EventEmitter {
|
|
208
|
+
constructor(browser) {
|
|
209
|
+
super();
|
|
210
|
+
_BrowserContext_browser.set(this, void 0);
|
|
211
|
+
__classPrivateFieldSet(this, _BrowserContext_browser, browser, "f");
|
|
212
|
+
}
|
|
213
|
+
targets() {
|
|
214
|
+
return __classPrivateFieldGet(this, _BrowserContext_browser, "f").targets().filter((target) => {
|
|
215
|
+
return target.browserContext() === this;
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
waitForTarget(predicate, options = {}) {
|
|
219
|
+
return __classPrivateFieldGet(this, _BrowserContext_browser, "f").waitForTarget((target) => {
|
|
220
|
+
return target.browserContext() === this && predicate(target);
|
|
221
|
+
}, options);
|
|
222
|
+
}
|
|
223
|
+
async pages() {
|
|
224
|
+
const pages = await Promise.all(this.targets()
|
|
225
|
+
.filter((target) => target.type() === 'page')
|
|
226
|
+
.map((target) => target.expectPage()));
|
|
227
|
+
return pages.filter((page) => {
|
|
228
|
+
return Boolean(page);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
newPage({ context, logLevel, indent, pageIndex, onBrowserLog, onLog, }) {
|
|
232
|
+
return __classPrivateFieldGet(this, _BrowserContext_browser, "f")._createPageInContext({
|
|
233
|
+
context,
|
|
234
|
+
logLevel,
|
|
235
|
+
indent,
|
|
236
|
+
pageIndex,
|
|
237
|
+
onBrowserLog,
|
|
238
|
+
onLog,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
browser() {
|
|
242
|
+
return __classPrivateFieldGet(this, _BrowserContext_browser, "f");
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
exports.BrowserContext = BrowserContext;
|
|
246
|
+
_BrowserContext_browser = new WeakMap();
|
|
@@ -0,0 +1,33 @@
|
|
|
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 type { LogLevel } from '../log-level';
|
|
17
|
+
import { ChromeMode } from '../options/chrome-mode';
|
|
18
|
+
import type { DownloadBrowserProgressFn } from '../options/on-browser-download';
|
|
19
|
+
interface BrowserFetcherRevisionInfo {
|
|
20
|
+
folderPath: string;
|
|
21
|
+
executablePath: string;
|
|
22
|
+
url: string;
|
|
23
|
+
local: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare const downloadBrowser: ({ logLevel, indent, onProgress, version, chromeMode, }: {
|
|
26
|
+
logLevel: LogLevel;
|
|
27
|
+
indent: boolean;
|
|
28
|
+
onProgress: DownloadBrowserProgressFn;
|
|
29
|
+
version: string | null;
|
|
30
|
+
chromeMode: ChromeMode;
|
|
31
|
+
}) => Promise<BrowserFetcherRevisionInfo | undefined>;
|
|
32
|
+
export declare const getRevisionInfo: (chromeMode: ChromeMode) => BrowserFetcherRevisionInfo;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,215 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
51
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.getRevisionInfo = exports.downloadBrowser = void 0;
|
|
55
|
+
const fs = __importStar(require("node:fs"));
|
|
56
|
+
const os = __importStar(require("node:os"));
|
|
57
|
+
const path = __importStar(require("node:path"));
|
|
58
|
+
const extract_zip_1 = __importDefault(require("extract-zip"));
|
|
59
|
+
const node_util_1 = require("node:util");
|
|
60
|
+
const download_file_1 = require("../assets/download-file");
|
|
61
|
+
const make_file_executable_1 = require("../compositor/make-file-executable");
|
|
62
|
+
const get_download_destination_1 = require("./get-download-destination");
|
|
63
|
+
const TESTED_VERSION = '134.0.6998.35';
|
|
64
|
+
// https://github.com/microsoft/playwright/tree/v1.51.0
|
|
65
|
+
// packages/playwright-core/browsers.json
|
|
66
|
+
const PLAYWRIGHT_VERSION = '1161'; // 134.0.6998.35
|
|
67
|
+
function getChromeDownloadUrl({ platform, version, chromeMode, }) {
|
|
68
|
+
if (platform === 'linux-arm64') {
|
|
69
|
+
if (chromeMode === 'chrome-for-testing') {
|
|
70
|
+
return `https://playwright.azureedge.net/builds/chromium/${version !== null && version !== void 0 ? version : PLAYWRIGHT_VERSION}/chromium-linux-arm64.zip`;
|
|
71
|
+
}
|
|
72
|
+
return `https://playwright.azureedge.net/builds/chromium/${version !== null && version !== void 0 ? version : PLAYWRIGHT_VERSION}/chromium-headless-shell-linux-arm64.zip`;
|
|
73
|
+
}
|
|
74
|
+
if (chromeMode === 'headless-shell') {
|
|
75
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${version !== null && version !== void 0 ? version : TESTED_VERSION}/${platform}/chrome-headless-shell-${platform}.zip`;
|
|
76
|
+
}
|
|
77
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${version !== null && version !== void 0 ? version : TESTED_VERSION}/${platform}/chrome-${platform}.zip`;
|
|
78
|
+
}
|
|
79
|
+
const mkdirAsync = fs.promises.mkdir;
|
|
80
|
+
const unlinkAsync = (0, node_util_1.promisify)(fs.unlink.bind(fs));
|
|
81
|
+
function existsAsync(filePath) {
|
|
82
|
+
return new Promise((resolve) => {
|
|
83
|
+
fs.access(filePath, (err) => {
|
|
84
|
+
return resolve(!err);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
const getPlatform = () => {
|
|
89
|
+
const platform = os.platform();
|
|
90
|
+
switch (platform) {
|
|
91
|
+
case 'darwin':
|
|
92
|
+
return os.arch() === 'arm64' ? 'mac-arm64' : 'mac-x64';
|
|
93
|
+
case 'linux':
|
|
94
|
+
return os.arch() === 'arm64' ? 'linux-arm64' : 'linux64';
|
|
95
|
+
case 'win32':
|
|
96
|
+
return 'win64';
|
|
97
|
+
default:
|
|
98
|
+
throw new Error('Unsupported platform: ' + platform);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const getDownloadsFolder = (chromeMode) => {
|
|
102
|
+
const destination = chromeMode === 'headless-shell'
|
|
103
|
+
? 'chrome-headless-shell'
|
|
104
|
+
: 'chrome-for-testing';
|
|
105
|
+
return path.join((0, get_download_destination_1.getDownloadsCacheDir)(), destination);
|
|
106
|
+
};
|
|
107
|
+
const downloadBrowser = async ({ logLevel, indent, onProgress, version, chromeMode, }) => {
|
|
108
|
+
const platform = getPlatform();
|
|
109
|
+
const downloadURL = getChromeDownloadUrl({ platform, version, chromeMode });
|
|
110
|
+
const fileName = downloadURL.split('/').pop();
|
|
111
|
+
if (!fileName) {
|
|
112
|
+
throw new Error(`A malformed download URL was found: ${downloadURL}.`);
|
|
113
|
+
}
|
|
114
|
+
const downloadsFolder = getDownloadsFolder(chromeMode);
|
|
115
|
+
const archivePath = path.join(downloadsFolder, fileName);
|
|
116
|
+
const outputPath = getFolderPath(downloadsFolder, platform);
|
|
117
|
+
if (await existsAsync(outputPath)) {
|
|
118
|
+
return (0, exports.getRevisionInfo)(chromeMode);
|
|
119
|
+
}
|
|
120
|
+
if (!(await existsAsync(downloadsFolder))) {
|
|
121
|
+
await mkdirAsync(downloadsFolder, {
|
|
122
|
+
recursive: true,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
if (os.platform() !== 'darwin' &&
|
|
126
|
+
os.platform() !== 'linux' &&
|
|
127
|
+
os.arch() === 'arm64') {
|
|
128
|
+
throw new Error([
|
|
129
|
+
'Chrome Headless Shell is not available for Windows for arm64 architecture.',
|
|
130
|
+
].join('\n'));
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
await (0, download_file_1.downloadFile)({
|
|
134
|
+
url: downloadURL,
|
|
135
|
+
to: () => archivePath,
|
|
136
|
+
onProgress: (progress) => {
|
|
137
|
+
if (progress.totalSize === null || progress.percent === null) {
|
|
138
|
+
throw new Error('Expected totalSize and percent to be defined');
|
|
139
|
+
}
|
|
140
|
+
onProgress({
|
|
141
|
+
downloadedBytes: progress.downloaded,
|
|
142
|
+
totalSizeInBytes: progress.totalSize,
|
|
143
|
+
percent: progress.percent,
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
indent,
|
|
147
|
+
logLevel,
|
|
148
|
+
});
|
|
149
|
+
await (0, extract_zip_1.default)(archivePath, { dir: outputPath });
|
|
150
|
+
const chromePath = path.join(outputPath, 'chrome-linux', 'chrome');
|
|
151
|
+
const chromeHeadlessShellPath = path.join(outputPath, 'chrome-linux', 'chrome-headless-shell');
|
|
152
|
+
if (fs.existsSync(chromePath)) {
|
|
153
|
+
fs.renameSync(chromePath, chromeHeadlessShellPath);
|
|
154
|
+
}
|
|
155
|
+
const chromeLinuxFolder = path.join(outputPath, 'chrome-linux');
|
|
156
|
+
if (fs.existsSync(chromeLinuxFolder)) {
|
|
157
|
+
fs.renameSync(chromeLinuxFolder, path.join(outputPath, 'chrome-headless-shell-linux-arm64'));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
return Promise.reject(err);
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
if (await existsAsync(archivePath)) {
|
|
165
|
+
await unlinkAsync(archivePath);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const revisionInfo = (0, exports.getRevisionInfo)(chromeMode);
|
|
169
|
+
(0, make_file_executable_1.makeFileExecutableIfItIsNot)(revisionInfo.executablePath);
|
|
170
|
+
return revisionInfo;
|
|
171
|
+
};
|
|
172
|
+
exports.downloadBrowser = downloadBrowser;
|
|
173
|
+
const getFolderPath = (downloadsFolder, platform) => {
|
|
174
|
+
return path.resolve(downloadsFolder, platform);
|
|
175
|
+
};
|
|
176
|
+
const getExecutablePath = (chromeMode) => {
|
|
177
|
+
const downloadsFolder = getDownloadsFolder(chromeMode);
|
|
178
|
+
const platform = getPlatform();
|
|
179
|
+
const folderPath = getFolderPath(downloadsFolder, platform);
|
|
180
|
+
if (chromeMode === 'chrome-for-testing') {
|
|
181
|
+
if (platform === 'mac-arm64' || platform === 'mac-x64') {
|
|
182
|
+
return path.join(folderPath, `chrome-${platform}`, 'Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing');
|
|
183
|
+
}
|
|
184
|
+
if (platform === 'win64') {
|
|
185
|
+
return path.join(folderPath, 'chrome-win64', 'chrome.exe');
|
|
186
|
+
}
|
|
187
|
+
if (platform === 'linux64' || platform === 'linux-arm64') {
|
|
188
|
+
return path.join(folderPath, 'chrome-linux64', 'chrome');
|
|
189
|
+
}
|
|
190
|
+
throw new Error('unsupported platform' + platform);
|
|
191
|
+
}
|
|
192
|
+
if (chromeMode === 'headless-shell') {
|
|
193
|
+
return path.join(folderPath, `chrome-headless-shell-${platform}`, platform === 'win64'
|
|
194
|
+
? 'chrome-headless-shell.exe'
|
|
195
|
+
: platform === 'linux-arm64'
|
|
196
|
+
? 'headless_shell'
|
|
197
|
+
: 'chrome-headless-shell');
|
|
198
|
+
}
|
|
199
|
+
throw new Error('unsupported chrome mode' + chromeMode);
|
|
200
|
+
};
|
|
201
|
+
const getRevisionInfo = (chromeMode) => {
|
|
202
|
+
const executablePath = getExecutablePath(chromeMode);
|
|
203
|
+
const downloadsFolder = getDownloadsFolder(chromeMode);
|
|
204
|
+
const platform = getPlatform();
|
|
205
|
+
const folderPath = getFolderPath(downloadsFolder, platform);
|
|
206
|
+
const url = getChromeDownloadUrl({ platform, version: null, chromeMode });
|
|
207
|
+
const local = fs.existsSync(folderPath);
|
|
208
|
+
return {
|
|
209
|
+
executablePath,
|
|
210
|
+
folderPath,
|
|
211
|
+
local,
|
|
212
|
+
url,
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
exports.getRevisionInfo = getRevisionInfo;
|