@remotion/renderer 3.0.28 → 3.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/dist/abort.d.ts +7 -0
  2. package/dist/abort.js +20 -0
  3. package/dist/assets/download-and-map-assets-to-file.js +6 -3
  4. package/dist/browser/Browser.d.ts +1 -1
  5. package/dist/browser/{page.d.ts → BrowserPage.d.ts} +0 -0
  6. package/dist/browser/{page.js → BrowserPage.js} +0 -0
  7. package/dist/browser/FrameManager.d.ts +1 -1
  8. package/dist/browser/Page.d.ts +74 -0
  9. package/dist/browser/Page.js +283 -0
  10. package/dist/browser/Target.d.ts +1 -1
  11. package/dist/browser/Target.js +2 -2
  12. package/dist/browser/ws.d.ts +287 -0
  13. package/dist/browser/ws.js +21 -0
  14. package/dist/cancel.d.ts +7 -0
  15. package/dist/cancel.js +25 -0
  16. package/dist/codec-supports-media.d.ts +7 -0
  17. package/dist/codec-supports-media.js +49 -0
  18. package/dist/ensure-faststart.d.ts +1 -0
  19. package/dist/ensure-faststart.js +14 -0
  20. package/dist/ensure-presentation-timestamp.js +20 -9
  21. package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
  22. package/dist/extract-frame-from-video.d.ts +1 -0
  23. package/dist/faststart/atom.d.ts +35 -0
  24. package/dist/faststart/atom.js +138 -0
  25. package/dist/faststart/index.d.ts +0 -0
  26. package/dist/faststart/index.js +1 -0
  27. package/dist/faststart/options.d.ts +6 -0
  28. package/dist/faststart/options.js +2 -0
  29. package/dist/faststart/qt-faststart.d.ts +18 -0
  30. package/dist/faststart/qt-faststart.js +66 -0
  31. package/dist/faststart/update-chunk-offsets.d.ts +10 -0
  32. package/dist/faststart/update-chunk-offsets.js +114 -0
  33. package/dist/faststart/util.d.ts +9 -0
  34. package/dist/faststart/util.js +34 -0
  35. package/dist/get-browser-instance.d.ts +1 -1
  36. package/dist/get-extension-from-codec.d.ts +1 -1
  37. package/dist/guess-extension-for-media.d.ts +1 -0
  38. package/dist/guess-extension-for-media.js +27 -0
  39. package/dist/index.d.ts +2 -1
  40. package/dist/index.js +2 -0
  41. package/dist/last-frame-from-video-cache.d.ts +1 -0
  42. package/dist/offthread/index.d.ts +0 -0
  43. package/dist/offthread/index.js +1 -0
  44. package/dist/provide-screenshot.d.ts +2 -1
  45. package/dist/puppeteer-evaluate.d.ts +1 -1
  46. package/dist/puppeteer-screenshot.d.ts +2 -1
  47. package/dist/render-gif.d.ts +2 -0
  48. package/dist/render-gif.js +242 -0
  49. package/dist/render-media.d.ts +1 -0
  50. package/dist/screenshot-dom-element.d.ts +2 -1
  51. package/dist/screenshot-task.d.ts +2 -1
  52. package/dist/seek-to-frame.d.ts +1 -1
  53. package/dist/set-props-and-env.d.ts +1 -1
  54. package/dist/should-use-vp9-decoder.d.ts +0 -0
  55. package/dist/should-use-vp9-decoder.js +1 -0
  56. package/dist/stitch-frames-to-gif.d.ts +8 -0
  57. package/dist/stitch-frames-to-gif.js +128 -0
  58. package/dist/validate-concurrency.d.ts +1 -0
  59. package/dist/validate-concurrency.js +24 -0
  60. package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
  61. package/dist/validate-offthreadvideo-image-format.js +15 -0
  62. package/dist/ws/buffer-util.d.ts +10 -0
  63. package/dist/ws/buffer-util.js +123 -0
  64. package/dist/ws/constants.d.ts +10 -0
  65. package/dist/ws/constants.js +13 -0
  66. package/dist/ws/event-target.d.ts +155 -0
  67. package/dist/ws/event-target.js +203 -0
  68. package/dist/ws/extension.d.ts +16 -0
  69. package/dist/ws/extension.js +232 -0
  70. package/dist/ws/limiter.d.ts +34 -0
  71. package/dist/ws/limiter.js +41 -0
  72. package/dist/ws/permessage_deflate.d.ts +152 -0
  73. package/dist/ws/permessage_deflate.js +409 -0
  74. package/package.json +3 -3
  75. package/dist/assets/calculate-asset-positions.d.ts.map +0 -1
  76. package/dist/assets/calculate-asset-positions.js.map +0 -1
  77. package/dist/assets/calculate-atempo.d.ts.map +0 -1
  78. package/dist/assets/calculate-atempo.js.map +0 -1
  79. package/dist/assets/convert-assets-to-file-urls.d.ts.map +0 -1
  80. package/dist/assets/convert-assets-to-file-urls.js.map +0 -1
  81. package/dist/assets/download-and-map-assets-to-file.d.ts.map +0 -1
  82. package/dist/assets/download-and-map-assets-to-file.js.map +0 -1
  83. package/dist/assets/download-file.d.ts.map +0 -1
  84. package/dist/assets/download-file.js.map +0 -1
  85. package/dist/assets/ffmpeg-volume-expression.d.ts.map +0 -1
  86. package/dist/assets/ffmpeg-volume-expression.js.map +0 -1
  87. package/dist/assets/flatten-volume-array.d.ts.map +0 -1
  88. package/dist/assets/flatten-volume-array.js.map +0 -1
  89. package/dist/assets/get-audio-channels.d.ts.map +0 -1
  90. package/dist/assets/get-audio-channels.js.map +0 -1
  91. package/dist/assets/read-file.d.ts.map +0 -1
  92. package/dist/assets/read-file.js.map +0 -1
  93. package/dist/assets/round-volume-to-avoid-stack-overflow.d.ts.map +0 -1
  94. package/dist/assets/round-volume-to-avoid-stack-overflow.js.map +0 -1
  95. package/dist/assets/sanitize-filename.d.ts.map +0 -1
  96. package/dist/assets/sanitize-filename.js.map +0 -1
  97. package/dist/assets/sanitize-filepath.d.ts.map +0 -1
  98. package/dist/assets/sanitize-filepath.js.map +0 -1
  99. package/dist/assets/truncate-utf8-bytes.d.ts.map +0 -1
  100. package/dist/assets/truncate-utf8-bytes.js.map +0 -1
  101. package/dist/assets/types.d.ts.map +0 -1
  102. package/dist/assets/types.js.map +0 -1
  103. package/dist/browser/Accessibility.d.ts +0 -175
  104. package/dist/browser/Accessibility.js +0 -423
  105. package/dist/browser/AriaQueryHandler.d.ts +0 -20
  106. package/dist/browser/AriaQueryHandler.js +0 -108
  107. package/dist/browser/Coverage.d.ts +0 -180
  108. package/dist/browser/Coverage.js +0 -371
  109. package/dist/browser/Debug.d.ts +0 -19
  110. package/dist/browser/Debug.js +0 -42
  111. package/dist/browser/DeviceDescriptors.d.ts +0 -40
  112. package/dist/browser/DeviceDescriptors.js +0 -1407
  113. package/dist/browser/FileChooser.d.ts +0 -56
  114. package/dist/browser/FileChooser.js +0 -86
  115. package/dist/browser/Input.d.ts +0 -355
  116. package/dist/browser/Input.js +0 -592
  117. package/dist/browser/NetworkConditions.d.ts +0 -26
  118. package/dist/browser/NetworkConditions.js +0 -33
  119. package/dist/browser/PDFOptions.d.ts +0 -165
  120. package/dist/browser/PDFOptions.js +0 -34
  121. package/dist/browser/PipeTransport.d.ts +0 -10
  122. package/dist/browser/PipeTransport.js +0 -86
  123. package/dist/browser/Puppeteer.d.ts +0 -35
  124. package/dist/browser/Puppeteer.js +0 -17
  125. package/dist/browser/QueryHandler.d.ts +0 -64
  126. package/dist/browser/QueryHandler.js +0 -183
  127. package/dist/browser/SecurityDetails.d.ts +0 -55
  128. package/dist/browser/SecurityDetails.js +0 -95
  129. package/dist/browser/Tracing.d.ts +0 -45
  130. package/dist/browser/Tracing.js +0 -136
  131. package/dist/browser/USKeyboardLayout.d.ts +0 -39
  132. package/dist/browser/USKeyboardLayout.js +0 -406
  133. package/dist/browser/WebWorker.d.ts +0 -96
  134. package/dist/browser/WebWorker.js +0 -122
  135. package/dist/browser/dialog.d.ts +0 -70
  136. package/dist/browser/dialog.js +0 -114
  137. package/dist/browser/fetch.d.ts +0 -16
  138. package/dist/browser/fetch.js +0 -46
  139. package/dist/browser/find-up.d.ts +0 -4
  140. package/dist/browser/find-up.js +0 -85
  141. package/dist/browser/pkg-dir.d.ts +0 -3
  142. package/dist/browser/pkg-dir.js +0 -13
  143. package/dist/browser-log.d.ts.map +0 -1
  144. package/dist/browser-log.js.map +0 -1
  145. package/dist/calculate-ffmpeg-filters.d.ts.map +0 -1
  146. package/dist/calculate-ffmpeg-filters.js.map +0 -1
  147. package/dist/can-use-parallel-encoding.d.ts.map +0 -1
  148. package/dist/can-use-parallel-encoding.js.map +0 -1
  149. package/dist/chunk.d.ts.map +0 -1
  150. package/dist/chunk.js.map +0 -1
  151. package/dist/combine-videos.d.ts.map +0 -1
  152. package/dist/combine-videos.js.map +0 -1
  153. package/dist/convert-to-pcm.d.ts.map +0 -1
  154. package/dist/convert-to-pcm.js.map +0 -1
  155. package/dist/create-ffmpeg-complex-filter.d.ts.map +0 -1
  156. package/dist/create-ffmpeg-complex-filter.js.map +0 -1
  157. package/dist/create-ffmpeg-merge-filter.d.ts.map +0 -1
  158. package/dist/create-ffmpeg-merge-filter.js.map +0 -1
  159. package/dist/create-silent-audio.d.ts.map +0 -1
  160. package/dist/create-silent-audio.js.map +0 -1
  161. package/dist/cycle-browser-tabs.d.ts.map +0 -1
  162. package/dist/cycle-browser-tabs.js.map +0 -1
  163. package/dist/delay-render-embedded-stack.d.ts.map +0 -1
  164. package/dist/delay-render-embedded-stack.js.map +0 -1
  165. package/dist/delete-directory.d.ts.map +0 -1
  166. package/dist/delete-directory.js.map +0 -1
  167. package/dist/ensure-frames-in-order.d.ts.map +0 -1
  168. package/dist/ensure-frames-in-order.js.map +0 -1
  169. package/dist/ensure-output-directory.d.ts.map +0 -1
  170. package/dist/ensure-output-directory.js.map +0 -1
  171. package/dist/error-handling/handle-javascript-exception.d.ts.map +0 -1
  172. package/dist/error-handling/handle-javascript-exception.js.map +0 -1
  173. package/dist/error-handling/symbolicate-error.d.ts.map +0 -1
  174. package/dist/error-handling/symbolicate-error.js.map +0 -1
  175. package/dist/error-handling/symbolicateable-error.d.ts.map +0 -1
  176. package/dist/error-handling/symbolicateable-error.js.map +0 -1
  177. package/dist/ffmpeg-filter-file.d.ts.map +0 -1
  178. package/dist/ffmpeg-filter-file.js.map +0 -1
  179. package/dist/ffmpeg-flags.d.ts.map +0 -1
  180. package/dist/ffmpeg-flags.js.map +0 -1
  181. package/dist/get-audio-codec-name.d.ts.map +0 -1
  182. package/dist/get-audio-codec-name.js.map +0 -1
  183. package/dist/get-browser-instance.d.ts.map +0 -1
  184. package/dist/get-browser-instance.js.map +0 -1
  185. package/dist/get-codec-name.d.ts.map +0 -1
  186. package/dist/get-codec-name.js.map +0 -1
  187. package/dist/get-compositions.d.ts.map +0 -1
  188. package/dist/get-compositions.js.map +0 -1
  189. package/dist/get-concurrency.d.ts.map +0 -1
  190. package/dist/get-concurrency.js.map +0 -1
  191. package/dist/get-duration-from-frame-range.d.ts.map +0 -1
  192. package/dist/get-duration-from-frame-range.js.map +0 -1
  193. package/dist/get-extension-from-codec.d.ts.map +0 -1
  194. package/dist/get-extension-from-codec.js.map +0 -1
  195. package/dist/get-format-for-codec.d.ts +0 -2
  196. package/dist/get-format-for-codec.js +0 -34
  197. package/dist/get-frame-to-render.d.ts.map +0 -1
  198. package/dist/get-frame-to-render.js.map +0 -1
  199. package/dist/get-local-browser-executable.d.ts.map +0 -1
  200. package/dist/get-local-browser-executable.js.map +0 -1
  201. package/dist/get-port.d.ts.map +0 -1
  202. package/dist/get-port.js.map +0 -1
  203. package/dist/get-prores-profile-name.d.ts.map +0 -1
  204. package/dist/get-prores-profile-name.js.map +0 -1
  205. package/dist/image-format.d.ts.map +0 -1
  206. package/dist/image-format.js.map +0 -1
  207. package/dist/index.d.ts.map +0 -1
  208. package/dist/index.js.map +0 -1
  209. package/dist/is-serve-url.d.ts.map +0 -1
  210. package/dist/is-serve-url.js.map +0 -1
  211. package/dist/legacy-webpack-config.d.ts.map +0 -1
  212. package/dist/legacy-webpack-config.js.map +0 -1
  213. package/dist/make-assets-download-dir.d.ts.map +0 -1
  214. package/dist/make-assets-download-dir.js.map +0 -1
  215. package/dist/merge-audio-track.d.ts.map +0 -1
  216. package/dist/merge-audio-track.js.map +0 -1
  217. package/dist/normalize-serve-url.d.ts.map +0 -1
  218. package/dist/normalize-serve-url.js.map +0 -1
  219. package/dist/open-browser.d.ts.map +0 -1
  220. package/dist/open-browser.js.map +0 -1
  221. package/dist/p-limit.d.ts.map +0 -1
  222. package/dist/p-limit.js.map +0 -1
  223. package/dist/parse-browser-error-stack.d.ts.map +0 -1
  224. package/dist/parse-browser-error-stack.js.map +0 -1
  225. package/dist/parse-ffmpeg-progress.d.ts.map +0 -1
  226. package/dist/parse-ffmpeg-progress.js.map +0 -1
  227. package/dist/pool.d.ts.map +0 -1
  228. package/dist/pool.js.map +0 -1
  229. package/dist/prepare-server.d.ts.map +0 -1
  230. package/dist/prepare-server.js.map +0 -1
  231. package/dist/preprocess-audio-track.d.ts.map +0 -1
  232. package/dist/preprocess-audio-track.js.map +0 -1
  233. package/dist/prespawn-ffmpeg.d.ts.map +0 -1
  234. package/dist/prespawn-ffmpeg.js.map +0 -1
  235. package/dist/provide-screenshot.d.ts.map +0 -1
  236. package/dist/provide-screenshot.js.map +0 -1
  237. package/dist/puppeteer-evaluate.d.ts.map +0 -1
  238. package/dist/puppeteer-evaluate.js.map +0 -1
  239. package/dist/puppeteer-screenshot.d.ts.map +0 -1
  240. package/dist/puppeteer-screenshot.js.map +0 -1
  241. package/dist/render-frames.d.ts.map +0 -1
  242. package/dist/render-frames.js.map +0 -1
  243. package/dist/render-media.d.ts.map +0 -1
  244. package/dist/render-media.js.map +0 -1
  245. package/dist/render-still.d.ts.map +0 -1
  246. package/dist/render-still.js.map +0 -1
  247. package/dist/resolve-asset-src.d.ts.map +0 -1
  248. package/dist/resolve-asset-src.js.map +0 -1
  249. package/dist/sample-rate.d.ts.map +0 -1
  250. package/dist/sample-rate.js.map +0 -1
  251. package/dist/screenshot-dom-element.d.ts.map +0 -1
  252. package/dist/screenshot-dom-element.js.map +0 -1
  253. package/dist/screenshot-task.d.ts.map +0 -1
  254. package/dist/screenshot-task.js.map +0 -1
  255. package/dist/seek-to-frame.d.ts.map +0 -1
  256. package/dist/seek-to-frame.js.map +0 -1
  257. package/dist/serve-static.d.ts.map +0 -1
  258. package/dist/serve-static.js.map +0 -1
  259. package/dist/set-props-and-env.d.ts.map +0 -1
  260. package/dist/set-props-and-env.js.map +0 -1
  261. package/dist/stitch-frames-to-video.d.ts.map +0 -1
  262. package/dist/stitch-frames-to-video.js.map +0 -1
  263. package/dist/stringify-ffmpeg-filter.d.ts.map +0 -1
  264. package/dist/stringify-ffmpeg-filter.js.map +0 -1
  265. package/dist/symbolicate-stacktrace.d.ts.map +0 -1
  266. package/dist/symbolicate-stacktrace.js.map +0 -1
  267. package/dist/tmp-dir.d.ts.map +0 -1
  268. package/dist/tmp-dir.js.map +0 -1
  269. package/dist/types.d.ts.map +0 -1
  270. package/dist/types.js.map +0 -1
  271. package/dist/validate-even-dimensions-with-codec.d.ts.map +0 -1
  272. package/dist/validate-even-dimensions-with-codec.js.map +0 -1
  273. package/dist/validate-ffmpeg.d.ts.map +0 -1
  274. package/dist/validate-ffmpeg.js.map +0 -1
  275. package/dist/validate-puppeteer-timeout.d.ts.map +0 -1
  276. package/dist/validate-puppeteer-timeout.js.map +0 -1
  277. package/dist/validate-scale.d.ts.map +0 -1
  278. package/dist/validate-scale.js.map +0 -1
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,8 @@
1
+ import { StitcherOptions } from './stitch-frames-to-video';
2
+ declare type ReturnType = {
3
+ task: Promise<unknown>;
4
+ getLogs: () => string;
5
+ };
6
+ export declare const spawnFfmpeg: (options: StitcherOptions) => Promise<ReturnType>;
7
+ export declare const stitchFramesToGif: (options: StitcherOptions) => Promise<void>;
8
+ export {};
@@ -0,0 +1,128 @@
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.stitchFramesToGif = exports.spawnFfmpeg = void 0;
7
+ const execa_1 = __importDefault(require("execa"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const remotion_1 = require("remotion");
11
+ const get_codec_name_1 = require("./get-codec-name");
12
+ const get_prores_profile_name_1 = require("./get-prores-profile-name");
13
+ const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
14
+ const validate_even_dimensions_with_codec_1 = require("./validate-even-dimensions-with-codec");
15
+ const validate_ffmpeg_1 = require("./validate-ffmpeg");
16
+ const packageJsonPath = path_1.default.join(__dirname, '..', 'package.json');
17
+ const packageJson = fs_1.default.existsSync(packageJsonPath)
18
+ ? JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'))
19
+ : null;
20
+ const spawnFfmpeg = async (options) => {
21
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
22
+ remotion_1.Internals.validateDimension(options.height, 'height', 'passed to `stitchFramesToVideo()`');
23
+ remotion_1.Internals.validateDimension(options.width, 'width', 'passed to `stitchFramesToVideo()`');
24
+ remotion_1.Internals.validateFps(options.fps, 'passed to `stitchFramesToVideo()`');
25
+ const codec = (_a = options.codec) !== null && _a !== void 0 ? _a : remotion_1.Internals.DEFAULT_CODEC;
26
+ (0, validate_even_dimensions_with_codec_1.validateEvenDimensionsWithCodec)({
27
+ width: options.width,
28
+ height: options.height,
29
+ codec,
30
+ scale: 1,
31
+ });
32
+ const crf = (_b = options.crf) !== null && _b !== void 0 ? _b : remotion_1.Internals.getDefaultCrfForCodec(codec);
33
+ const pixelFormat = (_c = options.pixelFormat) !== null && _c !== void 0 ? _c : remotion_1.Internals.DEFAULT_PIXEL_FORMAT;
34
+ await (0, validate_ffmpeg_1.validateFfmpeg)((_d = options.ffmpegExecutable) !== null && _d !== void 0 ? _d : null);
35
+ const encoderName = (0, get_codec_name_1.getCodecName)(codec);
36
+ const proResProfileName = (0, get_prores_profile_name_1.getProResProfileName)(codec, options.proResProfile);
37
+ const supportsCrf = encoderName && codec !== 'prores';
38
+ if (options.verbose) {
39
+ console.log('[verbose] ffmpeg', (_e = options.ffmpegExecutable) !== null && _e !== void 0 ? _e : 'ffmpeg in PATH');
40
+ console.log('[verbose] encoder', encoderName);
41
+ console.log('[verbose] pixelFormat', pixelFormat);
42
+ if (supportsCrf) {
43
+ console.log('[verbose] crf', crf);
44
+ }
45
+ console.log('[verbose] codec', codec);
46
+ console.log('[verbose] proResProfileName', proResProfileName);
47
+ }
48
+ remotion_1.Internals.validateSelectedCrfAndCodecCombination(crf, codec);
49
+ remotion_1.Internals.validateSelectedPixelFormatAndCodecCombination(pixelFormat, codec);
50
+ const expectedFrames = options.assetsInfo.assets.length;
51
+ const updateProgress = (preStitchProgress, muxProgress) => {
52
+ var _a;
53
+ const totalFrameProgress = 0.5 * preStitchProgress * expectedFrames + muxProgress * 0.5;
54
+ (_a = options.onProgress) === null || _a === void 0 ? void 0 : _a.call(options, Math.round(totalFrameProgress));
55
+ };
56
+ const ffmpegArgs = [
57
+ ['-r', String(options.fps)],
58
+ ...(((_f = options.internalOptions) === null || _f === void 0 ? void 0 : _f.preEncodedFileLocation)
59
+ ? [['-i', (_g = options.internalOptions) === null || _g === void 0 ? void 0 : _g.preEncodedFileLocation]]
60
+ : [
61
+ ['-f', 'image2'],
62
+ ['-s', `${options.width}x${options.height}`],
63
+ ['-start_number', String(options.assetsInfo.firstFrameIndex)],
64
+ ['-i', options.assetsInfo.imageSequenceName],
65
+ ]),
66
+ // -c:v is the same as -vcodec as -codec:video
67
+ // and specified the video codec.
68
+ options.loop === null
69
+ ? null
70
+ : ['-loop', typeof options.loop === 'number' ? options.loop : '-1'],
71
+ // Ignore metadata that may come from remote media
72
+ ['-map_metadata', '-1'],
73
+ [
74
+ '-metadata',
75
+ `comment=` +
76
+ [`Made with Remotion`, packageJson ? packageJson.version : null].join(' '),
77
+ ],
78
+ options.force ? '-y' : null,
79
+ options.outputLocation,
80
+ ];
81
+ if (options.verbose) {
82
+ console.log('Generated FFMPEG command:');
83
+ console.log(ffmpegArgs);
84
+ }
85
+ const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
86
+ const task = (0, execa_1.default)((_h = options.ffmpegExecutable) !== null && _h !== void 0 ? _h : 'ffmpeg', ffmpegString, {
87
+ cwd: options.dir,
88
+ });
89
+ (_j = options.cancelSignal) === null || _j === void 0 ? void 0 : _j.call(options, () => {
90
+ task.kill();
91
+ });
92
+ let ffmpegOutput = '';
93
+ let isFinished = false;
94
+ (_k = task.stderr) === null || _k === void 0 ? void 0 : _k.on('data', (data) => {
95
+ var _a;
96
+ const str = data.toString();
97
+ ffmpegOutput += str;
98
+ if (options.onProgress) {
99
+ const parsed = (0, parse_ffmpeg_progress_1.parseFfmpegProgress)(str);
100
+ // FFMPEG bug: In some cases, FFMPEG does hang after it is finished with it's job
101
+ // Example repo: https://github.com/JonnyBurger/ffmpeg-repro (access can be given upon request)
102
+ if (parsed !== undefined) {
103
+ // If two times in a row the finishing frame is logged, we quit the render
104
+ if (parsed === expectedFrames) {
105
+ if (isFinished) {
106
+ (_a = task.stdin) === null || _a === void 0 ? void 0 : _a.write('q');
107
+ }
108
+ else {
109
+ isFinished = true;
110
+ }
111
+ }
112
+ updateProgress(1, parsed);
113
+ }
114
+ }
115
+ });
116
+ return { task, getLogs: () => ffmpegOutput };
117
+ };
118
+ exports.spawnFfmpeg = spawnFfmpeg;
119
+ const stitchFramesToGif = async (options) => {
120
+ const { task, getLogs } = await (0, exports.spawnFfmpeg)(options);
121
+ try {
122
+ await task;
123
+ }
124
+ catch (err) {
125
+ throw new Error(getLogs());
126
+ }
127
+ };
128
+ exports.stitchFramesToGif = stitchFramesToGif;
@@ -0,0 +1 @@
1
+ export declare const validateConcurrency: (value: unknown, setting: string) => void;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateConcurrency = void 0;
4
+ const validateConcurrency = (value, setting) => {
5
+ if (typeof value === 'undefined') {
6
+ return;
7
+ }
8
+ if (value === null) {
9
+ return;
10
+ }
11
+ if (typeof value !== 'number') {
12
+ throw new Error(setting + ' must be a number but is ' + value);
13
+ }
14
+ if (value % 1 !== 0) {
15
+ throw new Error(setting + ' must be an integer, but is ' + value);
16
+ }
17
+ if (value < 1) {
18
+ throw new Error(setting + ' must be at least 1, but is ' + value);
19
+ }
20
+ if (value > require('os').cpus().length) {
21
+ throw new Error(`${setting} is set higher than the amount of CPU cores available. Available CPU cores: ${require('os').cpus().length}, value set: ${value}`);
22
+ }
23
+ };
24
+ exports.validateConcurrency = validateConcurrency;
@@ -0,0 +1 @@
1
+ export declare const validateOffthreadVideoImageFormat: (input: unknown) => void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateOffthreadVideoImageFormat = void 0;
4
+ const validateOffthreadVideoImageFormat = (input) => {
5
+ if (typeof input === 'undefined') {
6
+ return;
7
+ }
8
+ if (typeof input !== 'string') {
9
+ throw new TypeError(`<OffthreadVideo imageFormat=""> must be a string, but got ${JSON.stringify(input)} instead.`);
10
+ }
11
+ if (input !== 'png' && input !== 'jpeg') {
12
+ throw new TypeError(`<OffthreadVideo imageFormat=""> must be either "png" or "jpeg", but got ${input}`);
13
+ }
14
+ };
15
+ exports.validateOffthreadVideoImageFormat = validateOffthreadVideoImageFormat;
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * Merges an array of buffers into a new buffer.
4
+ *
5
+ * @param {Buffer[]} list The array of buffers to concat
6
+ * @param {Number} totalLength The total length of buffers in the list
7
+ * @return {Buffer} The resulting buffer
8
+ * @public
9
+ */
10
+ export declare function concat(list: Buffer[], totalLength: number): Buffer;
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.concat = void 0;
4
+ const constants_1 = require("./constants");
5
+ /**
6
+ * Merges an array of buffers into a new buffer.
7
+ *
8
+ * @param {Buffer[]} list The array of buffers to concat
9
+ * @param {Number} totalLength The total length of buffers in the list
10
+ * @return {Buffer} The resulting buffer
11
+ * @public
12
+ */
13
+ function concat(list, totalLength) {
14
+ if (list.length === 0)
15
+ return constants_1.constants.EMPTY_BUFFER;
16
+ if (list.length === 1)
17
+ return list[0];
18
+ const target = Buffer.allocUnsafe(totalLength);
19
+ let offset = 0;
20
+ for (let i = 0; i < list.length; i++) {
21
+ const buf = list[i];
22
+ target.set(buf, offset);
23
+ offset += buf.length;
24
+ }
25
+ if (offset < totalLength)
26
+ return target.slice(0, offset);
27
+ return target;
28
+ }
29
+ exports.concat = concat;
30
+ /**
31
+ * Masks a buffer using the given mask.
32
+ *
33
+ * @param {Buffer} source The buffer to mask
34
+ * @param {Buffer} mask The mask to use
35
+ * @param {Buffer} output The buffer where to store the result
36
+ * @param {Number} offset The offset at which to start writing
37
+ * @param {Number} length The number of bytes to mask.
38
+ * @public
39
+ */
40
+ function _mask(source, mask, output, offset, length) {
41
+ for (let i = 0; i < length; i++) {
42
+ // eslint-disable-next-line no-bitwise
43
+ output[offset + i] = source[i] ^ mask[i & 3];
44
+ }
45
+ }
46
+ /**
47
+ * Unmasks a buffer using the given mask.
48
+ *
49
+ * @param {Buffer} buffer The buffer to unmask
50
+ * @param {Buffer} mask The mask to use
51
+ * @public
52
+ */
53
+ function _unmask(buffer, mask) {
54
+ for (let i = 0; i < buffer.length; i++) {
55
+ // eslint-disable-next-line no-bitwise
56
+ buffer[i] ^= mask[i & 3];
57
+ }
58
+ }
59
+ /**
60
+ * Converts a buffer to an `ArrayBuffer`.
61
+ *
62
+ * @param {Buffer} buf The buffer to convert
63
+ * @return {ArrayBuffer} Converted buffer
64
+ * @public
65
+ */
66
+ function toArrayBuffer(buf) {
67
+ if (buf.byteLength === buf.buffer.byteLength) {
68
+ return buf.buffer;
69
+ }
70
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
71
+ }
72
+ /**
73
+ * Converts `data` to a `Buffer`.
74
+ *
75
+ * @param {*} data The data to convert
76
+ * @return {Buffer} The buffer
77
+ * @throws {TypeError}
78
+ * @public
79
+ */
80
+ function toBuffer(data) {
81
+ toBuffer.readOnly = true;
82
+ if (Buffer.isBuffer(data))
83
+ return data;
84
+ let buf;
85
+ if (data instanceof ArrayBuffer) {
86
+ buf = Buffer.from(data);
87
+ }
88
+ else if (ArrayBuffer.isView(data)) {
89
+ buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
90
+ }
91
+ else {
92
+ buf = Buffer.from(data);
93
+ toBuffer.readOnly = false;
94
+ }
95
+ return buf;
96
+ }
97
+ module.exports = {
98
+ mask: _mask,
99
+ toArrayBuffer,
100
+ toBuffer,
101
+ unmask: _unmask,
102
+ };
103
+ /* istanbul ignore else */
104
+ if (!process.env.WS_NO_BUFFER_UTIL) {
105
+ try {
106
+ const bufferUtil = require('bufferutil');
107
+ module.exports.mask = function (source, mask, output, offset, length) {
108
+ if (length < 48)
109
+ _mask(source, mask, output, offset, length);
110
+ else
111
+ bufferUtil.mask(source, mask, output, offset, length);
112
+ };
113
+ module.exports.unmask = function (buffer, mask) {
114
+ if (buffer.length < 32)
115
+ _unmask(buffer, mask);
116
+ else
117
+ bufferUtil.unmask(buffer, mask);
118
+ };
119
+ }
120
+ catch (e) {
121
+ // Continue regardless of the error.
122
+ }
123
+ }
@@ -0,0 +1,10 @@
1
+ export declare const constants: {
2
+ BINARY_TYPES: string[];
3
+ EMPTY_BUFFER: Buffer;
4
+ GUID: string;
5
+ kForOnEventAttribute: symbol;
6
+ kListener: symbol;
7
+ kStatusCode: symbol;
8
+ kWebSocket: symbol;
9
+ NOOP: () => undefined;
10
+ };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.constants = void 0;
4
+ exports.constants = {
5
+ BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],
6
+ EMPTY_BUFFER: Buffer.alloc(0),
7
+ GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',
8
+ kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),
9
+ kListener: Symbol('kListener'),
10
+ kStatusCode: Symbol('status-code'),
11
+ kWebSocket: Symbol('websocket'),
12
+ NOOP: () => undefined,
13
+ };
@@ -0,0 +1,155 @@
1
+ declare const kCode: unique symbol;
2
+ declare const kData: unique symbol;
3
+ declare const kError: unique symbol;
4
+ declare const kMessage: unique symbol;
5
+ declare const kReason: unique symbol;
6
+ declare const kTarget: unique symbol;
7
+ declare const kType: unique symbol;
8
+ declare const kWasClean: unique symbol;
9
+ /**
10
+ * Class representing an event.
11
+ */
12
+ export declare class Event {
13
+ /**
14
+ * Create a new `Event`.
15
+ *
16
+ * @param {String} type The name of the event
17
+ * @throws {TypeError} If the `type` argument is not specified
18
+ */
19
+ [kTarget]: null;
20
+ [kType]: string;
21
+ constructor(type: string);
22
+ /**
23
+ * @type {*}
24
+ */
25
+ get target(): null;
26
+ /**
27
+ * @type {String}
28
+ */
29
+ get type(): string;
30
+ }
31
+ /**
32
+ * Class representing a close event.
33
+ *
34
+ * @extends Event
35
+ */
36
+ export declare class CloseEvent extends Event {
37
+ /**
38
+ * Create a new `CloseEvent`.
39
+ *
40
+ * @param {String} type The name of the event
41
+ * @param {Object} [options] A dictionary object that allows for setting
42
+ * attributes via object members of the same name
43
+ * @param {Number} [options.code=0] The status code explaining why the
44
+ * connection was closed
45
+ * @param {String} [options.reason=''] A human-readable string explaining why
46
+ * the connection was closed
47
+ * @param {Boolean} [options.wasClean=false] Indicates whether or not the
48
+ * connection was cleanly closed
49
+ */
50
+ [kCode]: number;
51
+ [kReason]: string;
52
+ [kWasClean]: boolean;
53
+ constructor(type: string, options?: {
54
+ code?: number;
55
+ reason?: string;
56
+ wasClean?: boolean;
57
+ });
58
+ /**
59
+ * @type {Number}
60
+ */
61
+ get code(): number;
62
+ /**
63
+ * @type {String}
64
+ */
65
+ get reason(): string;
66
+ /**
67
+ * @type {Boolean}
68
+ */
69
+ get wasClean(): boolean;
70
+ }
71
+ /**
72
+ * Class representing an error event.
73
+ *
74
+ * @extends Event
75
+ */
76
+ export declare class ErrorEvent extends Event {
77
+ /**
78
+ * Create a new `ErrorEvent`.
79
+ *
80
+ * @param {String} type The name of the event
81
+ * @param {Object} [options] A dictionary object that allows for setting
82
+ * attributes via object members of the same name
83
+ * @param {*} [options.error=null] The error that generated this event
84
+ * @param {String} [options.message=''] The error message
85
+ */
86
+ [kError]: Error | null;
87
+ [kMessage]: string;
88
+ constructor(type: string, options?: {
89
+ error?: Error;
90
+ message?: string;
91
+ });
92
+ /**
93
+ * @type {*}
94
+ */
95
+ get error(): Error | null;
96
+ /**
97
+ * @type {String}
98
+ */
99
+ get message(): string;
100
+ }
101
+ /**
102
+ * Class representing a message event.
103
+ *
104
+ * @extends Event
105
+ */
106
+ export declare class MessageEvent extends Event {
107
+ /**
108
+ * Create a new `MessageEvent`.
109
+ *
110
+ * @param {String} type The name of the event
111
+ * @param {Object} [options] A dictionary object that allows for setting
112
+ * attributes via object members of the same name
113
+ * @param {*} [options.data=null] The message content
114
+ */
115
+ [kData]: unknown;
116
+ constructor(type: string, options?: {
117
+ data?: unknown;
118
+ });
119
+ /**
120
+ * @type {*}
121
+ */
122
+ get data(): unknown;
123
+ }
124
+ /**
125
+ * This provides methods for emulating the `EventTarget` interface. It's not
126
+ * meant to be used directly.
127
+ *
128
+ * @mixin
129
+ */
130
+ export declare const EventTarget: {
131
+ /**
132
+ * Register an event listener.
133
+ *
134
+ * @param {String} type A string representing the event type to listen for
135
+ * @param {Function} listener The listener to add
136
+ * @param {Object} [options] An options object specifies characteristics about
137
+ * the event listener
138
+ * @param {Boolean} [options.once=false] A `Boolean` indicating that the
139
+ * listener should be invoked at most once after being added. If `true`,
140
+ * the listener would be automatically removed when invoked.
141
+ * @public
142
+ */
143
+ addEventListener(type: 'message' | 'close' | 'error' | 'open', listener: (event: MessageEvent | CloseEvent | ErrorEvent | Event) => void, options?: {
144
+ once?: boolean;
145
+ }): void;
146
+ /**
147
+ * Remove an event listener.
148
+ *
149
+ * @param {String} type A string representing the event type to remove
150
+ * @param {Function} handler The listener to remove
151
+ * @public
152
+ */
153
+ removeEventListener(type: string, handler: () => undefined): void;
154
+ };
155
+ export {};