@remotion/renderer 4.0.0-fastlambda.8 → 4.0.0-forcepublish.7
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 +2 -2
- package/dist/assets/convert-assets-to-file-urls.d.ts +5 -4
- package/dist/assets/convert-assets-to-file-urls.js +2 -2
- package/dist/assets/download-and-map-assets-to-file.d.ts +15 -6
- package/dist/assets/download-and-map-assets-to-file.js +108 -44
- package/dist/assets/download-file.d.ts +10 -5
- package/dist/assets/download-file.js +18 -5
- package/dist/assets/download-map.d.ts +64 -0
- package/dist/assets/download-map.js +73 -0
- package/dist/assets/ffmpeg-volume-expression.d.ts +3 -3
- package/dist/assets/ffmpeg-volume-expression.js +16 -14
- package/dist/assets/flatten-volume-array.d.ts +1 -1
- package/dist/assets/get-audio-channels.d.ts +3 -4
- package/dist/assets/get-audio-channels.js +14 -4
- package/dist/assets/get-video-stream-duration.d.ts +4 -0
- package/dist/assets/get-video-stream-duration.js +59 -0
- package/dist/assets/read-file.js +4 -1
- package/dist/assets/types.d.ts +1 -1
- package/dist/browser/Browser.d.ts +60 -0
- package/dist/browser/Browser.js +218 -0
- package/dist/browser/BrowserConnector.d.ts +19 -0
- package/dist/browser/BrowserConnector.js +17 -0
- package/dist/browser/BrowserFetcher.d.ts +89 -0
- package/dist/browser/BrowserFetcher.js +510 -0
- package/dist/browser/BrowserPage.d.ts +74 -0
- package/dist/browser/BrowserPage.js +283 -0
- package/dist/browser/BrowserRunner.d.ts +39 -0
- package/dist/browser/BrowserRunner.js +308 -0
- package/dist/browser/Connection.d.ts +42 -0
- package/dist/browser/Connection.js +242 -0
- package/dist/browser/ConsoleMessage.d.ts +31 -0
- package/dist/browser/ConsoleMessage.js +48 -0
- package/dist/browser/DOMWorld.d.ts +52 -0
- package/dist/browser/DOMWorld.js +272 -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 +23 -0
- package/dist/browser/EventEmitter.js +53 -0
- package/dist/browser/ExecutionContext.d.ts +34 -0
- package/dist/browser/ExecutionContext.js +174 -0
- package/dist/browser/FrameManager.d.ts +93 -0
- package/dist/browser/FrameManager.js +496 -0
- package/dist/browser/HTTPRequest.d.ts +28 -0
- package/dist/browser/HTTPRequest.js +37 -0
- package/dist/browser/HTTPResponse.d.ts +21 -0
- package/dist/browser/HTTPResponse.js +41 -0
- package/dist/browser/JSHandle.d.ts +35 -0
- package/dist/browser/JSHandle.js +90 -0
- package/dist/browser/LaunchOptions.d.ts +37 -0
- package/dist/browser/LaunchOptions.js +17 -0
- package/dist/browser/Launcher.d.ts +9 -0
- package/dist/browser/Launcher.js +504 -0
- package/dist/browser/LifecycleWatcher.d.ts +29 -0
- package/dist/browser/LifecycleWatcher.js +180 -0
- package/dist/browser/NetworkEventManager.d.ts +33 -0
- package/dist/browser/NetworkEventManager.js +81 -0
- package/dist/browser/NetworkManager.d.ts +34 -0
- package/dist/browser/NetworkManager.js +231 -0
- package/dist/browser/NodeWebSocketTransport.d.ts +17 -0
- package/dist/browser/NodeWebSocketTransport.js +87 -0
- package/dist/browser/Product.d.ts +16 -0
- package/dist/browser/Product.js +17 -0
- package/dist/browser/PuppeteerNode.d.ts +40 -0
- package/dist/browser/PuppeteerNode.js +81 -0
- package/dist/browser/PuppeteerViewport.d.ts +5 -0
- package/dist/browser/PuppeteerViewport.js +2 -0
- package/dist/browser/ScreenshotOptions.d.ts +14 -0
- package/dist/browser/ScreenshotOptions.js +2 -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 +24 -0
- package/dist/browser/TimeoutSettings.js +62 -0
- package/dist/browser/assert.d.ts +1 -0
- package/dist/browser/assert.js +9 -0
- package/dist/browser/create-browser-fetcher.d.ts +17 -0
- package/dist/browser/create-browser-fetcher.js +119 -0
- package/dist/browser/devtools-commands.d.ts +270 -0
- package/dist/browser/devtools-commands.js +2 -0
- package/dist/browser/devtools-types.d.ts +1122 -0
- package/dist/browser/devtools-types.js +2 -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/revisions.d.ts +21 -0
- package/dist/browser/revisions.js +22 -0
- package/dist/browser/util.d.ts +47 -0
- package/dist/browser/util.js +169 -0
- package/dist/browser-executable.d.ts +1 -0
- package/dist/browser-executable.js +2 -0
- package/dist/browser-log.d.ts +1 -1
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +4 -0
- package/dist/calculate-ffmpeg-filters.d.ts +1 -1
- package/dist/calculate-ffmpeg-filters.js +2 -2
- package/dist/calculate-sar-dar-pixels.d.ts +9 -0
- package/dist/calculate-sar-dar-pixels.js +19 -0
- package/dist/can-use-parallel-encoding.d.ts +1 -1
- package/dist/can-use-parallel-encoding.js +2 -2
- package/dist/codec-supports-media.d.ts +7 -0
- package/dist/codec-supports-media.js +49 -0
- package/dist/codec.d.ts +4 -0
- package/dist/codec.js +16 -0
- package/dist/combine-videos.d.ts +4 -2
- package/dist/combine-videos.js +19 -5
- package/dist/compress-assets.d.ts +7 -0
- package/dist/compress-assets.js +25 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.d.ts +1 -0
- package/dist/convert-number-of-gif-loops-to-ffmpeg.js +17 -0
- package/dist/convert-to-pcm.d.ts +1 -1
- package/dist/create-ffmpeg-complex-filter.d.ts +3 -5
- package/dist/create-ffmpeg-complex-filter.js +2 -11
- package/dist/create-ffmpeg-merge-filter.js +3 -3
- package/dist/create-silent-audio.d.ts +1 -1
- package/dist/crf.d.ts +5 -0
- package/dist/crf.js +64 -0
- package/dist/cycle-browser-tabs.d.ts +3 -2
- package/dist/cycle-browser-tabs.js +9 -2
- package/dist/delay-render-embedded-stack.d.ts +1 -1
- package/dist/ensure-frames-in-order.d.ts +1 -1
- package/dist/ensure-frames-in-order.js +3 -2
- package/dist/ensure-presentation-timestamp.d.ts +2 -0
- package/dist/ensure-presentation-timestamp.js +69 -0
- package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
- package/dist/error-handling/handle-javascript-exception.js +3 -4
- package/dist/error-handling/symbolicate-error.d.ts +1 -1
- package/dist/error-handling/symbolicateable-error.d.ts +1 -1
- package/dist/extract-frame-from-video.d.ts +16 -0
- package/dist/extract-frame-from-video.js +254 -0
- package/dist/ffmpeg-executable.d.ts +1 -0
- package/dist/ffmpeg-executable.js +2 -0
- package/dist/ffmpeg-filter-file.d.ts +2 -1
- package/dist/ffmpeg-filter-file.js +4 -6
- package/dist/frame-range.d.ts +2 -0
- package/dist/frame-range.js +49 -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 +1 -1
- package/dist/get-audio-codec-name.js +2 -2
- package/dist/get-browser-instance.d.ts +4 -3
- package/dist/get-browser-instance.js +2 -2
- package/dist/get-codec-name.d.ts +1 -1
- package/dist/get-codec-name.js +5 -2
- package/dist/get-compositions.d.ts +15 -5
- package/dist/get-compositions.js +35 -11
- package/dist/get-duration-from-frame-range.d.ts +1 -2
- package/dist/get-duration-from-frame-range.js +13 -9
- package/dist/get-extension-from-codec.d.ts +2 -2
- package/dist/get-extension-from-codec.js +5 -0
- package/dist/get-extension-of-filename.d.ts +1 -1
- package/dist/get-extension-of-filename.js +3 -0
- package/dist/get-frame-padded-index.d.ts +14 -0
- package/dist/get-frame-padded-index.js +33 -0
- package/dist/get-frame-to-render.d.ts +1 -1
- package/dist/get-local-browser-executable.d.ts +2 -1
- package/dist/get-local-browser-executable.js +7 -5
- package/dist/get-port.js +30 -37
- package/dist/get-prores-profile-name.d.ts +2 -1
- package/dist/get-video-info.d.ts +3 -0
- package/dist/get-video-info.js +49 -0
- package/dist/get-video-threads-flag.d.ts +1 -0
- package/dist/get-video-threads-flag.js +18 -0
- package/dist/guess-extension-for-media.d.ts +1 -0
- package/dist/guess-extension-for-media.js +27 -0
- package/dist/image-format.d.ts +6 -1
- package/dist/image-format.js +25 -1
- package/dist/index.d.ts +95 -20
- package/dist/index.js +93 -6
- package/dist/is-audio-codec.d.ts +2 -0
- package/dist/is-audio-codec.js +7 -0
- package/dist/is-beyond-last-frame.d.ts +3 -0
- package/dist/is-beyond-last-frame.js +12 -0
- package/dist/last-frame-from-video-cache.d.ts +17 -0
- package/dist/last-frame-from-video-cache.js +55 -0
- package/dist/log-level.d.ts +4 -0
- package/dist/log-level.js +15 -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 +3 -1
- package/dist/merge-audio-track.js +14 -8
- package/dist/mime-db.d.ts +6 -0
- package/dist/mime-db.js +8636 -0
- package/dist/mime-types.d.ts +2 -0
- package/dist/mime-types.js +89 -0
- package/dist/offthread-video-server.d.ts +17 -0
- package/dist/offthread-video-server.js +86 -0
- package/dist/open-browser.d.ts +10 -8
- package/dist/open-browser.js +37 -32
- package/dist/overwrite.d.ts +1 -0
- package/dist/overwrite.js +4 -0
- package/dist/perf.d.ts +5 -0
- package/dist/perf.js +35 -0
- package/dist/pixel-format.d.ts +5 -0
- package/dist/pixel-format.js +26 -0
- package/dist/prepare-server.d.ts +14 -2
- package/dist/prepare-server.js +38 -5
- package/dist/preprocess-audio-track.d.ts +5 -2
- package/dist/preprocess-audio-track.js +3 -3
- package/dist/prespawn-ffmpeg.d.ts +7 -1
- package/dist/prespawn-ffmpeg.js +20 -16
- package/dist/prestitcher-memory-usage.d.ts +12 -0
- package/dist/prestitcher-memory-usage.js +30 -0
- package/dist/prores-profile.d.ts +5 -0
- package/dist/prores-profile.js +23 -0
- package/dist/provide-screenshot.d.ts +5 -4
- package/dist/provide-screenshot.js +1 -2
- package/dist/puppeteer-evaluate.d.ts +1 -1
- package/dist/puppeteer-evaluate.js +3 -4
- package/dist/puppeteer-screenshot.d.ts +4 -2
- package/dist/puppeteer-screenshot.js +7 -5
- package/dist/quality.d.ts +1 -0
- package/dist/quality.js +21 -0
- package/dist/render-frames.d.ts +24 -8
- package/dist/render-frames.js +137 -63
- package/dist/render-media.d.ts +36 -9
- package/dist/render-media.js +191 -70
- package/dist/render-still.d.ts +25 -7
- package/dist/render-still.js +75 -24
- package/dist/screenshot-dom-element.d.ts +7 -7
- package/dist/screenshot-dom-element.js +3 -6
- package/dist/screenshot-task.d.ts +4 -2
- package/dist/screenshot-task.js +36 -23
- package/dist/seek-to-frame.d.ts +2 -2
- package/dist/seek-to-frame.js +2 -2
- package/dist/serve-handler/index.d.ts +4 -0
- package/dist/serve-handler/index.js +204 -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 +11 -3
- package/dist/serve-static.js +37 -7
- package/dist/set-props-and-env.d.ts +6 -2
- package/dist/set-props-and-env.js +48 -12
- package/dist/stitch-frames-to-video.d.ts +17 -5
- package/dist/stitch-frames-to-video.js +129 -45
- package/dist/stringify-ffmpeg-filter.d.ts +2 -2
- package/dist/stringify-ffmpeg-filter.js +12 -7
- package/dist/symbolicate-stacktrace.d.ts +1 -1
- package/dist/symbolicate-stacktrace.js +3 -3
- package/dist/tmp-dir.js +5 -1
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +7 -0
- package/dist/types.d.ts +1 -1
- package/dist/validate-concurrency.d.ts +1 -0
- package/dist/validate-concurrency.js +24 -0
- package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.js +2 -2
- package/dist/validate-every-nth-frame.d.ts +1 -0
- package/dist/validate-every-nth-frame.js +21 -0
- package/dist/validate-ffmpeg.js +2 -3
- package/dist/validate-frame.d.ts +1 -0
- package/dist/validate-frame.js +24 -0
- package/dist/validate-opengl-renderer.d.ts +5 -0
- package/dist/validate-opengl-renderer.js +15 -0
- package/dist/validate-output-filename.d.ts +1 -1
- package/dist/validate-output-filename.js +5 -0
- package/dist/wait-for-symbolication-error-to-be-done.d.ts +3 -0
- package/dist/wait-for-symbolication-error-to-be-done.js +34 -0
- package/dist/ws/ws-types.d.ts +14 -0
- package/dist/ws/ws-types.js +10 -0
- package/package.json +13 -16
- package/tsconfig.json +2 -2
- package/types/ws/index.d.ts +509 -0
- package/vitest.config.ts +8 -0
- package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
- package/dist/assets/calculate-asset-positions.js.map +0 -1
- package/dist/assets/calculate-atempo.d.ts.map +0 -1
- package/dist/assets/calculate-atempo.js.map +0 -1
- package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
- package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
- package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
- package/dist/assets/download-file.d.ts.map +0 -1
- package/dist/assets/download-file.js.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
- package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
- package/dist/assets/flatten-volume-array.d.ts.map +0 -1
- package/dist/assets/flatten-volume-array.js.map +0 -1
- package/dist/assets/get-audio-channels.d.ts.map +0 -1
- package/dist/assets/get-audio-channels.js.map +0 -1
- package/dist/assets/read-file.d.ts.map +0 -1
- package/dist/assets/read-file.js.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
- package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
- package/dist/assets/sanitize-filename.d.ts.map +0 -1
- package/dist/assets/sanitize-filename.js.map +0 -1
- package/dist/assets/sanitize-filepath.d.ts.map +0 -1
- package/dist/assets/sanitize-filepath.js.map +0 -1
- package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
- package/dist/assets/truncate-utf8-bytes.js.map +0 -1
- package/dist/assets/types.d.ts.map +0 -1
- package/dist/assets/types.js.map +0 -1
- package/dist/browser-log.d.ts.map +0 -1
- package/dist/browser-log.js.map +0 -1
- package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
- package/dist/calculate-ffmpeg-filters.js.map +0 -1
- package/dist/can-use-parallel-encoding.d.ts.map +0 -1
- package/dist/can-use-parallel-encoding.js.map +0 -1
- package/dist/chunk.d.ts.map +0 -1
- package/dist/chunk.js.map +0 -1
- package/dist/combine-videos.d.ts.map +0 -1
- package/dist/combine-videos.js.map +0 -1
- package/dist/convert-to-pcm.d.ts.map +0 -1
- package/dist/convert-to-pcm.js.map +0 -1
- package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-complex-filter.js.map +0 -1
- package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
- package/dist/create-ffmpeg-merge-filter.js.map +0 -1
- package/dist/create-silent-audio.d.ts.map +0 -1
- package/dist/create-silent-audio.js.map +0 -1
- package/dist/cycle-browser-tabs.d.ts.map +0 -1
- package/dist/cycle-browser-tabs.js.map +0 -1
- package/dist/delay-render-embedded-stack.d.ts.map +0 -1
- package/dist/delay-render-embedded-stack.js.map +0 -1
- package/dist/delete-directory.d.ts.map +0 -1
- package/dist/delete-directory.js.map +0 -1
- package/dist/ensure-frames-in-order.d.ts.map +0 -1
- package/dist/ensure-frames-in-order.js.map +0 -1
- package/dist/ensure-output-directory.d.ts.map +0 -1
- package/dist/ensure-output-directory.js.map +0 -1
- package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
- package/dist/error-handling/handle-javascript-exception.js.map +0 -1
- package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicate-error.js.map +0 -1
- package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
- package/dist/error-handling/symbolicateable-error.js.map +0 -1
- package/dist/ffmpeg-filter-file.d.ts.map +0 -1
- package/dist/ffmpeg-filter-file.js.map +0 -1
- package/dist/ffmpeg-flags.d.ts.map +0 -1
- package/dist/ffmpeg-flags.js.map +0 -1
- package/dist/get-audio-codec-name.d.ts.map +0 -1
- package/dist/get-audio-codec-name.js.map +0 -1
- package/dist/get-browser-instance.d.ts.map +0 -1
- package/dist/get-browser-instance.js.map +0 -1
- package/dist/get-codec-name.d.ts.map +0 -1
- package/dist/get-codec-name.js.map +0 -1
- package/dist/get-compositions.d.ts.map +0 -1
- package/dist/get-compositions.js.map +0 -1
- package/dist/get-concurrency.d.ts.map +0 -1
- package/dist/get-concurrency.js.map +0 -1
- package/dist/get-duration-from-frame-range.d.ts.map +0 -1
- package/dist/get-duration-from-frame-range.js.map +0 -1
- package/dist/get-extension-from-codec.d.ts.map +0 -1
- package/dist/get-extension-from-codec.js.map +0 -1
- package/dist/get-frame-to-render.d.ts.map +0 -1
- package/dist/get-frame-to-render.js.map +0 -1
- package/dist/get-local-browser-executable.d.ts.map +0 -1
- package/dist/get-local-browser-executable.js.map +0 -1
- package/dist/get-port.d.ts.map +0 -1
- package/dist/get-port.js.map +0 -1
- package/dist/get-prores-profile-name.d.ts.map +0 -1
- package/dist/get-prores-profile-name.js.map +0 -1
- package/dist/image-format.d.ts.map +0 -1
- package/dist/image-format.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/is-serve-url.d.ts.map +0 -1
- package/dist/is-serve-url.js.map +0 -1
- package/dist/legacy-webpack-config.d.ts.map +0 -1
- package/dist/legacy-webpack-config.js.map +0 -1
- package/dist/make-assets-download-dir.d.ts +0 -1
- package/dist/make-assets-download-dir.d.ts.map +0 -1
- package/dist/make-assets-download-dir.js +0 -8
- package/dist/make-assets-download-dir.js.map +0 -1
- package/dist/merge-audio-track.d.ts.map +0 -1
- package/dist/merge-audio-track.js.map +0 -1
- package/dist/normalize-serve-url.d.ts.map +0 -1
- package/dist/normalize-serve-url.js.map +0 -1
- package/dist/open-browser.d.ts.map +0 -1
- package/dist/open-browser.js.map +0 -1
- package/dist/p-limit.d.ts.map +0 -1
- package/dist/p-limit.js.map +0 -1
- package/dist/parse-browser-error-stack.d.ts.map +0 -1
- package/dist/parse-browser-error-stack.js.map +0 -1
- package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
- package/dist/parse-ffmpeg-progress.js.map +0 -1
- package/dist/pool.d.ts.map +0 -1
- package/dist/pool.js.map +0 -1
- package/dist/prepare-server.d.ts.map +0 -1
- package/dist/prepare-server.js.map +0 -1
- package/dist/preprocess-audio-track.d.ts.map +0 -1
- package/dist/preprocess-audio-track.js.map +0 -1
- package/dist/prespawn-ffmpeg.d.ts.map +0 -1
- package/dist/prespawn-ffmpeg.js.map +0 -1
- package/dist/provide-screenshot.d.ts.map +0 -1
- package/dist/provide-screenshot.js.map +0 -1
- package/dist/puppeteer-evaluate.d.ts.map +0 -1
- package/dist/puppeteer-evaluate.js.map +0 -1
- package/dist/puppeteer-screenshot.d.ts.map +0 -1
- package/dist/puppeteer-screenshot.js.map +0 -1
- package/dist/render-frames.d.ts.map +0 -1
- package/dist/render-frames.js.map +0 -1
- package/dist/render-media.d.ts.map +0 -1
- package/dist/render-media.js.map +0 -1
- package/dist/render-still.d.ts.map +0 -1
- package/dist/render-still.js.map +0 -1
- package/dist/resolve-asset-src.d.ts.map +0 -1
- package/dist/resolve-asset-src.js.map +0 -1
- package/dist/sample-rate.d.ts.map +0 -1
- package/dist/sample-rate.js.map +0 -1
- package/dist/screenshot-dom-element.d.ts.map +0 -1
- package/dist/screenshot-dom-element.js.map +0 -1
- package/dist/screenshot-task.d.ts.map +0 -1
- package/dist/screenshot-task.js.map +0 -1
- package/dist/seek-to-frame.d.ts.map +0 -1
- package/dist/seek-to-frame.js.map +0 -1
- package/dist/serve-static.d.ts.map +0 -1
- package/dist/serve-static.js.map +0 -1
- package/dist/set-props-and-env.d.ts.map +0 -1
- package/dist/set-props-and-env.js.map +0 -1
- package/dist/stitch-frames-to-video.d.ts.map +0 -1
- package/dist/stitch-frames-to-video.js.map +0 -1
- package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
- package/dist/stringify-ffmpeg-filter.js.map +0 -1
- package/dist/symbolicate-stacktrace.d.ts.map +0 -1
- package/dist/symbolicate-stacktrace.js.map +0 -1
- package/dist/tmp-dir.d.ts.map +0 -1
- package/dist/tmp-dir.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
- package/dist/validate-even-dimensions-with-codec.js.map +0 -1
- package/dist/validate-ffmpeg.d.ts.map +0 -1
- package/dist/validate-ffmpeg.js.map +0 -1
- package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
- package/dist/validate-puppeteer-timeout.js.map +0 -1
- package/dist/validate-scale.d.ts.map +0 -1
- package/dist/validate-scale.js.map +0 -1
package/dist/screenshot-task.js
CHANGED
|
@@ -5,37 +5,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports._screenshotTask = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const
|
|
8
|
+
const perf_1 = require("./perf");
|
|
9
9
|
const _screenshotTask = async (page, format, options) => {
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
10
|
+
var _a;
|
|
11
|
+
const client = page._client();
|
|
12
|
+
const target = page.target();
|
|
13
|
+
const perfTarget = (0, perf_1.startPerfMeasure)('activate-target');
|
|
13
14
|
await client.send('Target.activateTarget', {
|
|
14
15
|
targetId: target._targetId,
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
+
(0, perf_1.stopPerfMeasure)(perfTarget);
|
|
17
18
|
const shouldSetDefaultBackground = options.omitBackground && format === 'png';
|
|
18
19
|
if (shouldSetDefaultBackground)
|
|
19
20
|
await client.send('Emulation.setDefaultBackgroundColorOverride', {
|
|
20
21
|
color: { r: 0, g: 0, b: 0, a: 0 },
|
|
21
22
|
});
|
|
22
|
-
const cap =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
const cap = (0, perf_1.startPerfMeasure)('capture');
|
|
24
|
+
try {
|
|
25
|
+
const result = await client.send('Page.captureScreenshot', {
|
|
26
|
+
format,
|
|
27
|
+
quality: options.quality,
|
|
28
|
+
clip: undefined,
|
|
29
|
+
captureBeyondViewport: true,
|
|
30
|
+
});
|
|
31
|
+
(0, perf_1.stopPerfMeasure)(cap);
|
|
32
|
+
if (shouldSetDefaultBackground)
|
|
33
|
+
await client.send('Emulation.setDefaultBackgroundColorOverride');
|
|
34
|
+
const saveMarker = (0, perf_1.startPerfMeasure)('save');
|
|
35
|
+
const buffer = Buffer.from(result.data, 'base64');
|
|
36
|
+
if (options.path)
|
|
37
|
+
await fs_1.default.promises.writeFile(options.path, buffer);
|
|
38
|
+
(0, perf_1.stopPerfMeasure)(saveMarker);
|
|
39
|
+
return buffer;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err.message.includes('Unable to capture screenshot')) {
|
|
43
|
+
const errMessage = [
|
|
44
|
+
'Could not take a screenshot because Google Chrome ran out of memory or disk space.',
|
|
45
|
+
((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.REMOTION_LAMBDA)
|
|
46
|
+
? 'Deploy a new Lambda function with more memory or disk space.'
|
|
47
|
+
: 'Decrease the concurrency to use less RAM.',
|
|
48
|
+
].join(' ');
|
|
49
|
+
throw new Error(errMessage);
|
|
50
|
+
}
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
40
53
|
};
|
|
41
54
|
exports._screenshotTask = _screenshotTask;
|
package/dist/seek-to-frame.d.ts
CHANGED
package/dist/seek-to-frame.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.seekToFrame = void 0;
|
|
4
4
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
5
5
|
const seekToFrame = async ({ frame, page, }) => {
|
|
6
|
-
await page.waitForFunction('window.ready === true');
|
|
6
|
+
await page.waitForFunction(page.browser, 'window.ready === true');
|
|
7
7
|
await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
8
8
|
pageFunction: (f) => {
|
|
9
9
|
window.remotion_setFrame(f);
|
|
@@ -12,7 +12,7 @@ const seekToFrame = async ({ frame, page, }) => {
|
|
|
12
12
|
frame,
|
|
13
13
|
page,
|
|
14
14
|
});
|
|
15
|
-
await page.waitForFunction('window.ready === true');
|
|
15
|
+
await page.waitForFunction(page.browser, 'window.ready === true');
|
|
16
16
|
await page.evaluateHandle('document.fonts.ready');
|
|
17
17
|
};
|
|
18
18
|
exports.seekToFrame = seekToFrame;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.serveHandler = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const url_1 = __importDefault(require("url"));
|
|
10
|
+
const mime_types_1 = require("../mime-types");
|
|
11
|
+
// Packages
|
|
12
|
+
const is_path_inside_1 = require("./is-path-inside");
|
|
13
|
+
const range_parser_1 = require("./range-parser");
|
|
14
|
+
const getHeaders = (absolutePath, stats) => {
|
|
15
|
+
const { base } = path_1.default.parse(absolutePath);
|
|
16
|
+
let defaultHeaders = {};
|
|
17
|
+
if (stats) {
|
|
18
|
+
defaultHeaders = {
|
|
19
|
+
'Content-Length': String(stats.size),
|
|
20
|
+
'Accept-Ranges': 'bytes',
|
|
21
|
+
};
|
|
22
|
+
defaultHeaders['Last-Modified'] = stats.mtime.toUTCString();
|
|
23
|
+
const _contentType = (0, mime_types_1.mimeContentType)(base);
|
|
24
|
+
if (_contentType) {
|
|
25
|
+
defaultHeaders['Content-Type'] = _contentType;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return defaultHeaders;
|
|
29
|
+
};
|
|
30
|
+
const getPossiblePaths = (relativePath, extension) => [
|
|
31
|
+
path_1.default.join(relativePath, `index${extension}`),
|
|
32
|
+
relativePath.endsWith('/')
|
|
33
|
+
? relativePath.replace(/\/$/g, extension)
|
|
34
|
+
: relativePath + extension,
|
|
35
|
+
].filter((item) => path_1.default.basename(item) !== extension);
|
|
36
|
+
const findRelated = async (current, relativePath) => {
|
|
37
|
+
const possible = getPossiblePaths(relativePath, '.html');
|
|
38
|
+
let stats = null;
|
|
39
|
+
for (let index = 0; index < possible.length; index++) {
|
|
40
|
+
const related = possible[index];
|
|
41
|
+
const absolutePath = path_1.default.join(current, related);
|
|
42
|
+
try {
|
|
43
|
+
stats = await fs_1.promises.lstat(absolutePath);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (err.code !== 'ENOENT' &&
|
|
47
|
+
err.code !== 'ENOTDIR') {
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (stats) {
|
|
52
|
+
return {
|
|
53
|
+
stats,
|
|
54
|
+
absolutePath,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
};
|
|
60
|
+
const sendError = (absolutePath, response, spec) => {
|
|
61
|
+
const { message, statusCode } = spec;
|
|
62
|
+
response.statusCode = statusCode;
|
|
63
|
+
const headers = getHeaders(absolutePath, null);
|
|
64
|
+
response.writeHead(statusCode, headers);
|
|
65
|
+
response.setHeader('content-type', 'application/json');
|
|
66
|
+
response.end(JSON.stringify({ statusCode, message }));
|
|
67
|
+
};
|
|
68
|
+
const internalError = (absolutePath, response) => {
|
|
69
|
+
return sendError(absolutePath, response, {
|
|
70
|
+
statusCode: 500,
|
|
71
|
+
code: 'internal_server_error',
|
|
72
|
+
message: 'A server error has occurred',
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const serveHandler = async (request, response, config) => {
|
|
76
|
+
const cwd = process.cwd();
|
|
77
|
+
const current = path_1.default.resolve(cwd, config.public);
|
|
78
|
+
let relativePath = null;
|
|
79
|
+
try {
|
|
80
|
+
relativePath = decodeURIComponent(url_1.default.parse(request.url).pathname);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
return sendError('/', response, {
|
|
84
|
+
statusCode: 400,
|
|
85
|
+
code: 'bad_request',
|
|
86
|
+
message: 'Bad Request',
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
let absolutePath = path_1.default.join(current, relativePath);
|
|
90
|
+
// Prevent path traversal vulnerabilities. We could do this
|
|
91
|
+
// by ourselves, but using the package covers all the edge cases.
|
|
92
|
+
if (!(0, is_path_inside_1.isPathInside)(absolutePath, current)) {
|
|
93
|
+
return sendError(absolutePath, response, {
|
|
94
|
+
statusCode: 400,
|
|
95
|
+
code: 'bad_request',
|
|
96
|
+
message: 'Bad Request',
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
let stats = null;
|
|
100
|
+
// It's extremely important that we're doing multiple stat calls. This one
|
|
101
|
+
// right here could technically be removed, but then the program
|
|
102
|
+
// would be slower. Because for directories, we always want to see if a related file
|
|
103
|
+
// exists and then (after that), fetch the directory itself if no
|
|
104
|
+
// related file was found. However (for files, of which most have extensions), we should
|
|
105
|
+
// always stat right away.
|
|
106
|
+
//
|
|
107
|
+
// When simulating a file system without directory indexes, calculating whether a
|
|
108
|
+
// directory exists requires loading all the file paths and then checking if
|
|
109
|
+
// one of them includes the path of the directory. As that's a very
|
|
110
|
+
// performance-expensive thing to do, we need to ensure it's not happening if not really necessary.
|
|
111
|
+
if (path_1.default.extname(relativePath) !== '') {
|
|
112
|
+
try {
|
|
113
|
+
stats = await fs_1.promises.lstat(absolutePath);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
if (err.code !== 'ENOENT' &&
|
|
117
|
+
err.code !== 'ENOTDIR') {
|
|
118
|
+
return internalError(absolutePath, response);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (!stats) {
|
|
123
|
+
try {
|
|
124
|
+
const related = await findRelated(current, relativePath);
|
|
125
|
+
if (related) {
|
|
126
|
+
({ stats, absolutePath } = related);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
if (err.code !== 'ENOENT' &&
|
|
131
|
+
err.code !== 'ENOTDIR') {
|
|
132
|
+
return internalError(absolutePath, response);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
stats = await fs_1.promises.lstat(absolutePath);
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
if (err.code !== 'ENOENT' &&
|
|
140
|
+
err.code !== 'ENOTDIR') {
|
|
141
|
+
return internalError(absolutePath, response);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (stats === null || stats === void 0 ? void 0 : stats.isDirectory()) {
|
|
146
|
+
const directory = null;
|
|
147
|
+
const singleFile = null;
|
|
148
|
+
if (directory) {
|
|
149
|
+
const _contentType = 'text/html; charset=utf-8';
|
|
150
|
+
response.statusCode = 200;
|
|
151
|
+
response.setHeader('Content-Type', _contentType);
|
|
152
|
+
response.end('Is a directory');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (!singleFile) {
|
|
156
|
+
// The directory listing is disabled, so we want to
|
|
157
|
+
// render a 404 error.
|
|
158
|
+
stats = null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const isSymLink = stats === null || stats === void 0 ? void 0 : stats.isSymbolicLink();
|
|
162
|
+
// There are two scenarios in which we want to reply with
|
|
163
|
+
// a 404 error: Either the path does not exist, or it is a
|
|
164
|
+
// symlink while the `symlinks` option is disabled (which it is by default).
|
|
165
|
+
if (!stats || isSymLink) {
|
|
166
|
+
// allow for custom 404 handling
|
|
167
|
+
return sendError(absolutePath, response, {
|
|
168
|
+
statusCode: 404,
|
|
169
|
+
code: 'not_found',
|
|
170
|
+
message: 'The requested path could not be found',
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
let streamOpts = null;
|
|
174
|
+
if (request.headers.range && stats.size) {
|
|
175
|
+
const range = (0, range_parser_1.rangeParser)(stats.size, request.headers.range);
|
|
176
|
+
if (typeof range === 'object' && range.type === 'bytes') {
|
|
177
|
+
const { start, end } = range.ranges[0];
|
|
178
|
+
streamOpts = {
|
|
179
|
+
start,
|
|
180
|
+
end,
|
|
181
|
+
};
|
|
182
|
+
response.statusCode = 206;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
response.statusCode = 416;
|
|
186
|
+
response.setHeader('Content-Range', `bytes */${stats.size}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
let stream = null;
|
|
190
|
+
try {
|
|
191
|
+
stream = (0, fs_1.createReadStream)(absolutePath, streamOpts !== null && streamOpts !== void 0 ? streamOpts : {});
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
return internalError(absolutePath, response);
|
|
195
|
+
}
|
|
196
|
+
const headers = getHeaders(absolutePath, stats);
|
|
197
|
+
if (streamOpts !== null) {
|
|
198
|
+
headers['Content-Range'] = `bytes ${streamOpts.start}-${streamOpts.end}/${stats.size}`;
|
|
199
|
+
headers['Content-Length'] = String(streamOpts.end - streamOpts.start + 1);
|
|
200
|
+
}
|
|
201
|
+
response.writeHead(response.statusCode || 200, headers);
|
|
202
|
+
stream.pipe(response);
|
|
203
|
+
};
|
|
204
|
+
exports.serveHandler = serveHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isPathInside: (thePath: string, potentialParent: string) => boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isPathInside = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const isPathInside = function (thePath, potentialParent) {
|
|
9
|
+
// For inside-directory checking, we want to allow trailing slashes, so normalize.
|
|
10
|
+
thePath = stripTrailingSep(thePath);
|
|
11
|
+
potentialParent = stripTrailingSep(potentialParent);
|
|
12
|
+
// Node treats only Windows as case-insensitive in its path module; we follow those conventions.
|
|
13
|
+
if (process.platform === 'win32') {
|
|
14
|
+
thePath = thePath.toLowerCase();
|
|
15
|
+
potentialParent = potentialParent.toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
return (thePath.lastIndexOf(potentialParent, 0) === 0 &&
|
|
18
|
+
(thePath[potentialParent.length] === path_1.default.sep ||
|
|
19
|
+
thePath[potentialParent.length] === undefined));
|
|
20
|
+
};
|
|
21
|
+
exports.isPathInside = isPathInside;
|
|
22
|
+
function stripTrailingSep(thePath) {
|
|
23
|
+
if (thePath[thePath.length - 1] === path_1.default.sep) {
|
|
24
|
+
return thePath.slice(0, -1);
|
|
25
|
+
}
|
|
26
|
+
return thePath;
|
|
27
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* range-parser
|
|
3
|
+
* Copyright(c) 2012-2014 TJ Holowaychuk
|
|
4
|
+
* Copyright(c) 2015-2016 Douglas Christopher Wilson
|
|
5
|
+
* MIT Licensed
|
|
6
|
+
*/
|
|
7
|
+
export declare const rangeParser: (size: number, str: string) => -1 | {
|
|
8
|
+
type: string;
|
|
9
|
+
ranges: {
|
|
10
|
+
start: number;
|
|
11
|
+
end: number;
|
|
12
|
+
}[];
|
|
13
|
+
} | -2;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* range-parser
|
|
4
|
+
* Copyright(c) 2012-2014 TJ Holowaychuk
|
|
5
|
+
* Copyright(c) 2015-2016 Douglas Christopher Wilson
|
|
6
|
+
* MIT Licensed
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.rangeParser = void 0;
|
|
10
|
+
const rangeParser = (size, str) => {
|
|
11
|
+
if (typeof str !== 'string') {
|
|
12
|
+
throw new TypeError('argument str must be a string');
|
|
13
|
+
}
|
|
14
|
+
const index = str.indexOf('=');
|
|
15
|
+
if (index === -1) {
|
|
16
|
+
return -2;
|
|
17
|
+
}
|
|
18
|
+
// split the range string
|
|
19
|
+
const arr = str.slice(index + 1).split(',');
|
|
20
|
+
const ranges = [];
|
|
21
|
+
// add ranges type
|
|
22
|
+
const type = str.slice(0, index);
|
|
23
|
+
// parse all ranges
|
|
24
|
+
for (let i = 0; i < arr.length; i++) {
|
|
25
|
+
const range = arr[i].split('-');
|
|
26
|
+
let start = parseInt(range[0], 10);
|
|
27
|
+
let end = parseInt(range[1], 10);
|
|
28
|
+
// -nnn
|
|
29
|
+
if (isNaN(start)) {
|
|
30
|
+
start = size - end;
|
|
31
|
+
end = size - 1;
|
|
32
|
+
// nnn-
|
|
33
|
+
}
|
|
34
|
+
else if (isNaN(end)) {
|
|
35
|
+
end = size - 1;
|
|
36
|
+
}
|
|
37
|
+
// limit last-byte-pos to current length
|
|
38
|
+
if (end > size - 1) {
|
|
39
|
+
end = size - 1;
|
|
40
|
+
}
|
|
41
|
+
// invalid or unsatisifiable
|
|
42
|
+
if (isNaN(start) || isNaN(end) || start > end || start < 0) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
// add range
|
|
46
|
+
ranges.push({
|
|
47
|
+
start,
|
|
48
|
+
end,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (ranges.length < 1) {
|
|
52
|
+
// unsatisifiable
|
|
53
|
+
return -1;
|
|
54
|
+
}
|
|
55
|
+
return { ranges, type };
|
|
56
|
+
};
|
|
57
|
+
exports.rangeParser = rangeParser;
|
package/dist/serve-static.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
2
|
+
import type { DownloadMap } from './assets/download-map';
|
|
3
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
4
|
+
export declare const serveStatic: (path: string | null, options: {
|
|
5
|
+
port: number | null;
|
|
6
|
+
ffmpegExecutable: FfmpegExecutable;
|
|
7
|
+
ffprobeExecutable: FfmpegExecutable;
|
|
8
|
+
onDownload: RenderMediaOnDownload;
|
|
9
|
+
onError: (err: Error) => void;
|
|
10
|
+
downloadMap: DownloadMap;
|
|
11
|
+
}) => Promise<{
|
|
4
12
|
port: number;
|
|
5
13
|
close: () => Promise<void>;
|
|
6
14
|
}>;
|
package/dist/serve-static.js
CHANGED
|
@@ -5,29 +5,59 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.serveStatic = void 0;
|
|
7
7
|
const http_1 = __importDefault(require("http"));
|
|
8
|
-
const remotion_1 = require("remotion");
|
|
9
|
-
const serve_handler_1 = __importDefault(require("serve-handler"));
|
|
10
8
|
const get_port_1 = require("./get-port");
|
|
9
|
+
const offthread_video_server_1 = require("./offthread-video-server");
|
|
10
|
+
const serve_handler_1 = require("./serve-handler");
|
|
11
11
|
const serveStatic = async (path, options) => {
|
|
12
|
-
var _a
|
|
13
|
-
const port = await (0, get_port_1.getDesiredPort)((
|
|
12
|
+
var _a;
|
|
13
|
+
const port = await (0, get_port_1.getDesiredPort)((_a = options === null || options === void 0 ? void 0 : options.port) !== null && _a !== void 0 ? _a : undefined, 3000, 3100);
|
|
14
|
+
const offthreadRequest = (0, offthread_video_server_1.startOffthreadVideoServer)({
|
|
15
|
+
ffmpegExecutable: options.ffmpegExecutable,
|
|
16
|
+
ffprobeExecutable: options.ffprobeExecutable,
|
|
17
|
+
onDownload: options.onDownload,
|
|
18
|
+
onError: options.onError,
|
|
19
|
+
downloadMap: options.downloadMap,
|
|
20
|
+
});
|
|
14
21
|
try {
|
|
22
|
+
const connections = {};
|
|
15
23
|
const server = http_1.default
|
|
16
24
|
.createServer((request, response) => {
|
|
17
|
-
|
|
25
|
+
var _a;
|
|
26
|
+
if ((_a = request.url) === null || _a === void 0 ? void 0 : _a.startsWith('/proxy')) {
|
|
27
|
+
return offthreadRequest(request, response);
|
|
28
|
+
}
|
|
29
|
+
if (path === null) {
|
|
30
|
+
response.writeHead(404);
|
|
31
|
+
response.end('Server only supports /proxy');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
(0, serve_handler_1.serveHandler)(request, response, {
|
|
18
35
|
public: path,
|
|
19
|
-
directoryListing: false,
|
|
20
|
-
cleanUrls: false,
|
|
21
36
|
}).catch(() => {
|
|
22
37
|
response.statusCode = 500;
|
|
23
38
|
response.end('Error serving file');
|
|
24
39
|
});
|
|
25
40
|
})
|
|
26
41
|
.listen(port);
|
|
42
|
+
server.on('connection', (conn) => {
|
|
43
|
+
const key = conn.remoteAddress + ':' + conn.remotePort;
|
|
44
|
+
connections[key] = conn;
|
|
45
|
+
conn.on('close', () => {
|
|
46
|
+
delete connections[key];
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
const destroyConnections = function () {
|
|
50
|
+
for (const key in connections)
|
|
51
|
+
connections[key].destroy();
|
|
52
|
+
};
|
|
27
53
|
const close = () => {
|
|
28
54
|
return new Promise((resolve, reject) => {
|
|
55
|
+
destroyConnections();
|
|
29
56
|
server.close((err) => {
|
|
30
57
|
if (err) {
|
|
58
|
+
if (err.code === 'ERR_SERVER_NOT_RUNNING') {
|
|
59
|
+
return resolve();
|
|
60
|
+
}
|
|
31
61
|
reject(err);
|
|
32
62
|
}
|
|
33
63
|
else {
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { Page } from '
|
|
2
|
-
export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, }: {
|
|
1
|
+
import type { Page } from './browser/BrowserPage';
|
|
2
|
+
export declare const setPropsAndEnv: ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, }: {
|
|
3
3
|
inputProps: unknown;
|
|
4
4
|
envVariables: Record<string, string> | undefined;
|
|
5
5
|
page: Page;
|
|
6
6
|
serveUrl: string;
|
|
7
7
|
initialFrame: number;
|
|
8
8
|
timeoutInMilliseconds: number | undefined;
|
|
9
|
+
proxyPort: number;
|
|
10
|
+
retriesRemaining: number;
|
|
11
|
+
audioEnabled: boolean;
|
|
12
|
+
videoEnabled: boolean;
|
|
9
13
|
}) => Promise<void>;
|
|
@@ -1,39 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setPropsAndEnv = void 0;
|
|
4
|
-
const
|
|
4
|
+
const TimeoutSettings_1 = require("./browser/TimeoutSettings");
|
|
5
5
|
const normalize_serve_url_1 = require("./normalize-serve-url");
|
|
6
6
|
const puppeteer_evaluate_1 = require("./puppeteer-evaluate");
|
|
7
7
|
const validate_puppeteer_timeout_1 = require("./validate-puppeteer-timeout");
|
|
8
|
-
const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, }) => {
|
|
8
|
+
const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initialFrame, timeoutInMilliseconds, proxyPort, retriesRemaining, audioEnabled, videoEnabled, }) => {
|
|
9
9
|
(0, validate_puppeteer_timeout_1.validatePuppeteerTimeout)(timeoutInMilliseconds);
|
|
10
|
-
const actualTimeout = timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds :
|
|
10
|
+
const actualTimeout = timeoutInMilliseconds !== null && timeoutInMilliseconds !== void 0 ? timeoutInMilliseconds : TimeoutSettings_1.DEFAULT_TIMEOUT;
|
|
11
11
|
page.setDefaultTimeout(actualTimeout);
|
|
12
12
|
page.setDefaultNavigationTimeout(actualTimeout);
|
|
13
13
|
const urlToVisit = (0, normalize_serve_url_1.normalizeServeUrl)(serveUrl);
|
|
14
14
|
await page.evaluateOnNewDocument((timeout) => {
|
|
15
15
|
window.remotion_puppeteerTimeout = timeout;
|
|
16
|
-
},
|
|
16
|
+
}, actualTimeout);
|
|
17
17
|
if (inputProps) {
|
|
18
18
|
await page.evaluateOnNewDocument((input) => {
|
|
19
19
|
window.remotion_inputProps = input;
|
|
20
|
-
},
|
|
20
|
+
}, JSON.stringify(inputProps));
|
|
21
21
|
}
|
|
22
22
|
if (envVariables) {
|
|
23
23
|
await page.evaluateOnNewDocument((input) => {
|
|
24
24
|
window.remotion_envVariables = input;
|
|
25
|
-
},
|
|
25
|
+
}, JSON.stringify(envVariables));
|
|
26
26
|
}
|
|
27
|
-
await page.evaluateOnNewDocument((key
|
|
28
|
-
window.
|
|
29
|
-
},
|
|
27
|
+
await page.evaluateOnNewDocument((key) => {
|
|
28
|
+
window.remotion_initialFrame = key;
|
|
29
|
+
}, initialFrame);
|
|
30
|
+
await page.evaluateOnNewDocument((port) => {
|
|
31
|
+
window.remotion_proxyPort = port;
|
|
32
|
+
}, proxyPort);
|
|
33
|
+
await page.evaluateOnNewDocument((enabled) => {
|
|
34
|
+
window.remotion_audioEnabled = enabled;
|
|
35
|
+
}, audioEnabled);
|
|
36
|
+
await page.evaluateOnNewDocument((enabled) => {
|
|
37
|
+
window.remotion_videoEnabled = enabled;
|
|
38
|
+
}, videoEnabled);
|
|
30
39
|
const pageRes = await page.goto(urlToVisit);
|
|
40
|
+
if (pageRes === null) {
|
|
41
|
+
throw new Error(`Visited "${urlToVisit}" but got no response.`);
|
|
42
|
+
}
|
|
31
43
|
const status = pageRes.status();
|
|
44
|
+
// S3 in rare occasions returns a 500 or 503 error code for GET operations.
|
|
45
|
+
// Usually it is fixed by retrying.
|
|
46
|
+
if (status >= 500 && status <= 504 && retriesRemaining > 0) {
|
|
47
|
+
await new Promise((resolve) => {
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
resolve();
|
|
50
|
+
}, 2000);
|
|
51
|
+
});
|
|
52
|
+
return (0, exports.setPropsAndEnv)({
|
|
53
|
+
envVariables,
|
|
54
|
+
initialFrame,
|
|
55
|
+
inputProps,
|
|
56
|
+
page,
|
|
57
|
+
proxyPort,
|
|
58
|
+
retriesRemaining: retriesRemaining - 1,
|
|
59
|
+
serveUrl,
|
|
60
|
+
timeoutInMilliseconds,
|
|
61
|
+
audioEnabled,
|
|
62
|
+
videoEnabled,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
32
65
|
if (status !== 200 &&
|
|
33
66
|
status !== 301 &&
|
|
34
67
|
status !== 302 &&
|
|
35
68
|
status !== 303 &&
|
|
36
|
-
status !== 304
|
|
69
|
+
status !== 304 &&
|
|
70
|
+
status !== 307 &&
|
|
71
|
+
status !== 308) {
|
|
37
72
|
throw new Error(`Error while getting compositions: Tried to go to ${urlToVisit} but the status code was ${status} instead of 200. Does the site you specified exist?`);
|
|
38
73
|
}
|
|
39
74
|
const isRemotionFn = await (0, puppeteer_evaluate_1.puppeteerEvaluateWithCatch)({
|
|
@@ -55,8 +90,9 @@ const setPropsAndEnv = async ({ inputProps, envVariables, page, serveUrl, initia
|
|
|
55
90
|
frame: null,
|
|
56
91
|
page,
|
|
57
92
|
});
|
|
58
|
-
|
|
59
|
-
|
|
93
|
+
const requiredVersion = '4';
|
|
94
|
+
if (siteVersion !== requiredVersion) {
|
|
95
|
+
throw new Error(`Incompatible site: When visiting ${urlToVisit}, a bundle was found, but one that is not compatible with this version of Remotion. Found version: ${siteVersion} - Required version: ${requiredVersion}. To resolve this error, please bundle and deploy again.`);
|
|
60
96
|
}
|
|
61
97
|
};
|
|
62
98
|
exports.setPropsAndEnv = setPropsAndEnv;
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
3
|
+
import type { RenderAssetInfo } from './assets/download-map';
|
|
4
|
+
import type { Codec } from './codec';
|
|
5
|
+
import type { FfmpegExecutable } from './ffmpeg-executable';
|
|
6
|
+
import type { ImageFormat } from './image-format';
|
|
7
|
+
import type { CancelSignal } from './make-cancel-signal';
|
|
8
|
+
import type { PixelFormat } from './pixel-format';
|
|
9
|
+
import type { ProResProfile } from './prores-profile';
|
|
3
10
|
export declare type StitcherOptions = {
|
|
4
11
|
fps: number;
|
|
5
12
|
width: number;
|
|
6
13
|
height: number;
|
|
7
|
-
outputLocation
|
|
14
|
+
outputLocation?: string | null;
|
|
8
15
|
force: boolean;
|
|
9
16
|
assetsInfo: RenderAssetInfo;
|
|
10
17
|
pixelFormat?: PixelFormat;
|
|
18
|
+
numberOfGifLoops?: number | null;
|
|
11
19
|
codec?: Codec;
|
|
12
20
|
crf?: number | null;
|
|
13
21
|
onProgress?: (progress: number) => void;
|
|
@@ -15,16 +23,20 @@ export declare type StitcherOptions = {
|
|
|
15
23
|
proResProfile?: ProResProfile;
|
|
16
24
|
verbose?: boolean;
|
|
17
25
|
ffmpegExecutable?: FfmpegExecutable;
|
|
26
|
+
ffprobeExecutable?: FfmpegExecutable;
|
|
18
27
|
dir?: string;
|
|
28
|
+
cancelSignal?: CancelSignal;
|
|
19
29
|
internalOptions?: {
|
|
20
30
|
preEncodedFileLocation: string | null;
|
|
21
31
|
imageFormat: ImageFormat;
|
|
22
32
|
};
|
|
33
|
+
muted?: boolean;
|
|
34
|
+
enforceAudioTrack?: boolean;
|
|
23
35
|
};
|
|
24
36
|
declare type ReturnType = {
|
|
25
|
-
task: Promise<
|
|
37
|
+
task: Promise<Buffer | null>;
|
|
26
38
|
getLogs: () => string;
|
|
27
39
|
};
|
|
28
40
|
export declare const spawnFfmpeg: (options: StitcherOptions) => Promise<ReturnType>;
|
|
29
|
-
export declare const stitchFramesToVideo: (options: StitcherOptions) => Promise<
|
|
41
|
+
export declare const stitchFramesToVideo: (options: StitcherOptions) => Promise<Buffer | null>;
|
|
30
42
|
export {};
|