@remotion/renderer 4.0.533 → 4.0.535

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 (285) hide show
  1. package/dist/aac-priming.js +6 -2
  2. package/dist/browser/BrowserFetcher.d.ts +7 -1
  3. package/dist/browser/BrowserFetcher.js +33 -13
  4. package/dist/browser/BrowserPage.js +4 -0
  5. package/dist/browser/Connection.js +5 -17
  6. package/dist/browser/DOMWorld.js +19 -13
  7. package/dist/browser/devtools-commands.d.ts +13 -1
  8. package/dist/browser/devtools-types.d.ts +62 -0
  9. package/dist/browser/get-chrome-download-url.d.ts +1 -1
  10. package/dist/browser/get-chrome-download-url.js +19 -33
  11. package/dist/can-use-parallel-encoding.d.ts +0 -1
  12. package/dist/can-use-parallel-encoding.js +10 -10
  13. package/dist/client.d.ts +402 -4
  14. package/dist/client.js +2 -0
  15. package/dist/combine-chunks.d.ts +2 -1
  16. package/dist/combine-chunks.js +81 -52
  17. package/dist/combine-video-streams.js +3 -0
  18. package/dist/compositor/get-executable-path.js +30 -15
  19. package/dist/cycle-browser-tabs.js +9 -1
  20. package/dist/ensure-browser.d.ts +3 -0
  21. package/dist/ensure-browser.js +30 -6
  22. package/dist/esm/client.mjs +1325 -954
  23. package/dist/esm/index.mjs +4465 -3324
  24. package/dist/esm/pure.mjs +36 -10
  25. package/dist/file-extensions.js +4 -1
  26. package/dist/get-mp4-brand.d.ts +1 -0
  27. package/dist/get-mp4-brand.js +21 -0
  28. package/dist/get-video-threads-flag.js +5 -1
  29. package/dist/image-format.d.ts +1 -0
  30. package/dist/image-format.js +8 -4
  31. package/dist/index.d.ts +58 -2
  32. package/dist/index.js +4 -0
  33. package/dist/memory/from-macos-sysctl.d.ts +1 -0
  34. package/dist/memory/from-macos-sysctl.js +50 -0
  35. package/dist/memory/from-proc-meminfo.d.ts +1 -1
  36. package/dist/memory/from-proc-meminfo.js +7 -4
  37. package/dist/memory/get-available-memory.js +29 -21
  38. package/dist/mux-video-and-audio.js +11 -2
  39. package/dist/next-frame-to-render.d.ts +3 -7
  40. package/dist/next-frame-to-render.js +3 -22
  41. package/dist/open-browser.js +1 -0
  42. package/dist/options/allow-html-in-canvas.d.ts +1 -0
  43. package/dist/options/allow-html-in-canvas.js +2 -1
  44. package/dist/options/api-key.d.ts +1 -0
  45. package/dist/options/api-key.js +2 -1
  46. package/dist/options/ask-ai.d.ts +1 -0
  47. package/dist/options/ask-ai.js +2 -1
  48. package/dist/options/audio-bitrate.d.ts +1 -0
  49. package/dist/options/audio-bitrate.js +2 -1
  50. package/dist/options/audio-codec.d.ts +1 -0
  51. package/dist/options/audio-codec.js +13 -6
  52. package/dist/options/beep-on-finish.d.ts +1 -0
  53. package/dist/options/beep-on-finish.js +2 -1
  54. package/dist/options/benchmark-concurrencies.d.ts +1 -0
  55. package/dist/options/benchmark-concurrencies.js +2 -1
  56. package/dist/options/binaries-directory.d.ts +1 -0
  57. package/dist/options/binaries-directory.js +2 -1
  58. package/dist/options/browser-executable.d.ts +1 -0
  59. package/dist/options/browser-executable.js +2 -1
  60. package/dist/options/browser.d.ts +1 -0
  61. package/dist/options/browser.js +2 -1
  62. package/dist/options/bundle-cache.d.ts +1 -0
  63. package/dist/options/bundle-cache.js +2 -1
  64. package/dist/options/canvas-tabs.d.ts +1 -0
  65. package/dist/options/canvas-tabs.js +2 -1
  66. package/dist/options/chrome-mode.d.ts +1 -0
  67. package/dist/options/chrome-mode.js +2 -1
  68. package/dist/options/color-space.d.ts +1 -0
  69. package/dist/options/color-space.js +2 -1
  70. package/dist/options/concurrency.d.ts +1 -0
  71. package/dist/options/concurrency.js +2 -1
  72. package/dist/options/config.d.ts +1 -0
  73. package/dist/options/config.js +2 -1
  74. package/dist/options/crf.d.ts +1 -0
  75. package/dist/options/crf.js +2 -1
  76. package/dist/options/cross-site-isolation.d.ts +1 -0
  77. package/dist/options/cross-site-isolation.js +2 -1
  78. package/dist/options/dark-mode.d.ts +1 -0
  79. package/dist/options/dark-mode.js +2 -1
  80. package/dist/options/default-coding-agent.d.ts +1 -0
  81. package/dist/options/default-coding-agent.js +2 -1
  82. package/dist/options/default-editor.d.ts +1 -0
  83. package/dist/options/default-editor.js +2 -1
  84. package/dist/options/default-premount-in-seconds.d.ts +19 -0
  85. package/dist/options/default-premount-in-seconds.js +36 -0
  86. package/dist/options/delete-after.d.ts +1 -0
  87. package/dist/options/delete-after.js +2 -1
  88. package/dist/options/disable-git-source.d.ts +1 -0
  89. package/dist/options/disable-git-source.js +2 -1
  90. package/dist/options/disable-shared-memory-capture.d.ts +17 -0
  91. package/dist/options/disable-shared-memory-capture.js +30 -0
  92. package/dist/options/disable-web-security.d.ts +1 -0
  93. package/dist/options/disable-web-security.js +2 -1
  94. package/dist/options/disallow-parallel-encoding.d.ts +1 -0
  95. package/dist/options/disallow-parallel-encoding.js +2 -1
  96. package/dist/options/enable-cancellation.d.ts +1 -0
  97. package/dist/options/enable-cancellation.js +2 -1
  98. package/dist/options/enable-lambda-insights.d.ts +1 -0
  99. package/dist/options/enable-lambda-insights.js +2 -1
  100. package/dist/options/enable-multiprocess-on-linux.d.ts +1 -0
  101. package/dist/options/enable-multiprocess-on-linux.js +2 -1
  102. package/dist/options/encoding-buffer-size.d.ts +1 -0
  103. package/dist/options/encoding-buffer-size.js +2 -1
  104. package/dist/options/encoding-max-rate.d.ts +1 -0
  105. package/dist/options/encoding-max-rate.js +2 -1
  106. package/dist/options/enforce-audio.d.ts +1 -0
  107. package/dist/options/enforce-audio.js +2 -1
  108. package/dist/options/env-file.d.ts +1 -0
  109. package/dist/options/env-file.js +2 -1
  110. package/dist/options/every-nth-frame.d.ts +1 -0
  111. package/dist/options/every-nth-frame.js +2 -1
  112. package/dist/options/experimental-keep-audio-context-alive.d.ts +1 -0
  113. package/dist/options/experimental-keep-audio-context-alive.js +2 -1
  114. package/dist/options/experimental-sequence-activity-limit.d.ts +19 -0
  115. package/dist/options/experimental-sequence-activity-limit.js +40 -0
  116. package/dist/options/experimental-sequence-activity.d.ts +19 -0
  117. package/dist/options/experimental-sequence-activity.js +38 -0
  118. package/dist/options/experimental-tracks.d.ts +19 -0
  119. package/dist/options/experimental-tracks.js +43 -0
  120. package/dist/options/folder-expiry.d.ts +1 -0
  121. package/dist/options/folder-expiry.js +2 -1
  122. package/dist/options/for-seamless-aac-concatenation.d.ts +1 -0
  123. package/dist/options/for-seamless-aac-concatenation.js +2 -1
  124. package/dist/options/force-new-studio.d.ts +1 -0
  125. package/dist/options/force-new-studio.js +2 -1
  126. package/dist/options/frames.d.ts +1 -0
  127. package/dist/options/frames.js +2 -1
  128. package/dist/options/gl.d.ts +1 -0
  129. package/dist/options/gl.js +2 -1
  130. package/dist/options/gop-size.d.ts +1 -0
  131. package/dist/options/gop-size.js +2 -1
  132. package/dist/options/hardware-acceleration.d.ts +1 -0
  133. package/dist/options/hardware-acceleration.js +2 -1
  134. package/dist/options/headless.d.ts +1 -0
  135. package/dist/options/headless.js +2 -1
  136. package/dist/options/ignore-certificate-errors.d.ts +1 -0
  137. package/dist/options/ignore-certificate-errors.js +2 -1
  138. package/dist/options/image-sequence-pattern.d.ts +2 -1
  139. package/dist/options/image-sequence-pattern.js +2 -1
  140. package/dist/options/image-sequence.d.ts +1 -0
  141. package/dist/options/image-sequence.js +2 -1
  142. package/dist/options/index.d.ts +211 -2
  143. package/dist/options/index.js +12 -0
  144. package/dist/options/interactivity.d.ts +1 -0
  145. package/dist/options/interactivity.js +2 -1
  146. package/dist/options/ipv4.d.ts +1 -0
  147. package/dist/options/ipv4.js +2 -1
  148. package/dist/options/is-production.d.ts +1 -0
  149. package/dist/options/is-production.js +2 -1
  150. package/dist/options/jpeg-quality.d.ts +1 -0
  151. package/dist/options/jpeg-quality.js +6 -2
  152. package/dist/options/keyboard-shortcuts.d.ts +1 -0
  153. package/dist/options/keyboard-shortcuts.js +2 -1
  154. package/dist/options/latency-hint.d.ts +1 -0
  155. package/dist/options/latency-hint.js +2 -1
  156. package/dist/options/license-key.d.ts +1 -0
  157. package/dist/options/license-key.js +2 -1
  158. package/dist/options/log-level.d.ts +1 -0
  159. package/dist/options/log-level.js +2 -1
  160. package/dist/options/metadata.d.ts +1 -0
  161. package/dist/options/metadata.js +2 -1
  162. package/dist/options/mute.d.ts +1 -0
  163. package/dist/options/mute.js +2 -1
  164. package/dist/options/no-open.d.ts +1 -0
  165. package/dist/options/no-open.js +2 -1
  166. package/dist/options/number-of-gif-loops.d.ts +1 -0
  167. package/dist/options/number-of-gif-loops.js +2 -1
  168. package/dist/options/number-of-shared-audio-tags.d.ts +1 -0
  169. package/dist/options/number-of-shared-audio-tags.js +2 -1
  170. package/dist/options/offthreadvideo-cache-size.d.ts +1 -0
  171. package/dist/options/offthreadvideo-cache-size.js +2 -1
  172. package/dist/options/offthreadvideo-threads.d.ts +1 -0
  173. package/dist/options/offthreadvideo-threads.js +2 -1
  174. package/dist/options/on-browser-download.d.ts +1 -0
  175. package/dist/options/on-browser-download.js +2 -1
  176. package/dist/options/option.d.ts +1 -0
  177. package/dist/options/options-map.d.ts +189 -1
  178. package/dist/options/options-map.js +4 -0
  179. package/dist/options/out-dir.d.ts +1 -0
  180. package/dist/options/out-dir.js +2 -1
  181. package/dist/options/override-duration.d.ts +1 -0
  182. package/dist/options/override-duration.js +2 -1
  183. package/dist/options/override-fps.d.ts +1 -0
  184. package/dist/options/override-fps.js +2 -1
  185. package/dist/options/override-height.d.ts +1 -0
  186. package/dist/options/override-height.js +2 -1
  187. package/dist/options/override-width.d.ts +1 -0
  188. package/dist/options/override-width.js +2 -1
  189. package/dist/options/overwrite.d.ts +1 -0
  190. package/dist/options/overwrite.js +2 -1
  191. package/dist/options/package-manager.d.ts +1 -0
  192. package/dist/options/package-manager.js +2 -1
  193. package/dist/options/pixel-format.d.ts +1 -0
  194. package/dist/options/pixel-format.js +2 -1
  195. package/dist/options/port.d.ts +1 -0
  196. package/dist/options/port.js +2 -1
  197. package/dist/options/prefer-lossless.d.ts +1 -0
  198. package/dist/options/prefer-lossless.js +2 -1
  199. package/dist/options/preview-sample-rate.d.ts +1 -0
  200. package/dist/options/preview-sample-rate.js +2 -1
  201. package/dist/options/props.d.ts +1 -0
  202. package/dist/options/props.js +2 -1
  203. package/dist/options/prores-profile.d.ts +1 -0
  204. package/dist/options/prores-profile.js +2 -1
  205. package/dist/options/public-dir.d.ts +1 -0
  206. package/dist/options/public-dir.js +2 -1
  207. package/dist/options/public-license-key.d.ts +1 -0
  208. package/dist/options/public-license-key.js +2 -1
  209. package/dist/options/public-path.d.ts +1 -0
  210. package/dist/options/public-path.js +2 -1
  211. package/dist/options/repro.d.ts +1 -0
  212. package/dist/options/repro.js +2 -1
  213. package/dist/options/rspack.d.ts +2 -1
  214. package/dist/options/rspack.js +2 -1
  215. package/dist/options/runs.d.ts +1 -0
  216. package/dist/options/runs.js +2 -1
  217. package/dist/options/sample-rate.d.ts +1 -0
  218. package/dist/options/sample-rate.js +2 -1
  219. package/dist/options/scale.d.ts +1 -0
  220. package/dist/options/scale.js +2 -1
  221. package/dist/options/separate-audio.d.ts +1 -0
  222. package/dist/options/separate-audio.js +3 -2
  223. package/dist/options/show-premounting.d.ts +19 -0
  224. package/dist/options/show-premounting.js +33 -0
  225. package/dist/options/skip-skills.d.ts +1 -0
  226. package/dist/options/skip-skills.js +2 -1
  227. package/dist/options/still-frame.d.ts +1 -0
  228. package/dist/options/still-frame.js +2 -1
  229. package/dist/options/still-image-format.d.ts +1 -0
  230. package/dist/options/still-image-format.js +2 -1
  231. package/dist/options/throw-if-site-exists.d.ts +1 -0
  232. package/dist/options/throw-if-site-exists.js +2 -1
  233. package/dist/options/timeout.d.ts +1 -0
  234. package/dist/options/timeout.js +2 -1
  235. package/dist/options/user-agent.d.ts +1 -0
  236. package/dist/options/user-agent.js +2 -1
  237. package/dist/options/version-flag.d.ts +1 -0
  238. package/dist/options/version-flag.js +2 -1
  239. package/dist/options/video-bitrate.d.ts +1 -0
  240. package/dist/options/video-bitrate.js +2 -1
  241. package/dist/options/video-cache-size.d.ts +1 -0
  242. package/dist/options/video-cache-size.js +2 -1
  243. package/dist/options/video-codec.d.ts +1 -0
  244. package/dist/options/video-codec.js +5 -3
  245. package/dist/options/video-image-format.d.ts +1 -0
  246. package/dist/options/video-image-format.js +7 -2
  247. package/dist/options/webhook-custom-data.d.ts +1 -0
  248. package/dist/options/webhook-custom-data.js +2 -1
  249. package/dist/options/webpack-poll.d.ts +1 -0
  250. package/dist/options/webpack-poll.js +2 -1
  251. package/dist/options/x264-preset.d.ts +1 -0
  252. package/dist/options/x264-preset.js +2 -1
  253. package/dist/prespawn-ffmpeg.d.ts +20 -0
  254. package/dist/prespawn-ffmpeg.js +157 -29
  255. package/dist/probe-shared-memory-capture.d.ts +8 -0
  256. package/dist/probe-shared-memory-capture.js +111 -0
  257. package/dist/puppeteer-screenshot.d.ts +3 -1
  258. package/dist/puppeteer-screenshot.js +1 -0
  259. package/dist/pure.d.ts +1 -1
  260. package/dist/remotion-shared-memory-ffmpeg.d.ts +26 -0
  261. package/dist/remotion-shared-memory-ffmpeg.js +312 -0
  262. package/dist/remotion-shared-memory.d.ts +49 -0
  263. package/dist/remotion-shared-memory.js +359 -0
  264. package/dist/render-frame-and-retry-target-close.d.ts +5 -2
  265. package/dist/render-frame-and-retry-target-close.js +20 -4
  266. package/dist/render-frame-with-option-to-reject.d.ts +4 -1
  267. package/dist/render-frame-with-option-to-reject.js +206 -115
  268. package/dist/render-frame.d.ts +4 -5
  269. package/dist/render-frame.js +3 -1
  270. package/dist/render-frames.d.ts +3 -0
  271. package/dist/render-frames.js +15 -18
  272. package/dist/render-media.d.ts +1 -1
  273. package/dist/render-media.js +131 -46
  274. package/dist/render-still.js +1 -0
  275. package/dist/screenshot-background.d.ts +2 -0
  276. package/dist/screenshot-background.js +20 -0
  277. package/dist/screenshot-task.d.ts +4 -2
  278. package/dist/screenshot-task.js +40 -21
  279. package/dist/seek-to-frame.js +1 -1
  280. package/dist/stitch-frames-to-video.js +71 -10
  281. package/dist/take-frame.d.ts +11 -3
  282. package/dist/take-frame.js +10 -8
  283. package/dist/validate-output-filename.d.ts +1 -1
  284. package/dist/validate-output-filename.js +10 -2
  285. package/package.json +13 -13
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAvailableMemoryFromMacos = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const node_os_1 = require("node:os");
6
+ const logger_1 = require("../logger");
7
+ const getAvailableMemoryFromMacos = (logLevel) => {
8
+ if ((0, node_os_1.platform)() !== 'darwin') {
9
+ return null;
10
+ }
11
+ try {
12
+ const output = (0, node_child_process_1.execFileSync)('/usr/sbin/sysctl', [
13
+ '-n',
14
+ 'vm.page_free_count',
15
+ 'vm.page_pageable_external_count',
16
+ 'vm.page_purgeable_count',
17
+ // hw.pagesize can differ from the kernel page size under Rosetta.
18
+ 'vm.pagesize',
19
+ 'kern.memorystatus_vm_pressure_level',
20
+ ], { encoding: 'utf-8', timeout: 1000, stdio: ['ignore', 'pipe', 'pipe'] });
21
+ const values = output.trim().split(/\s+/);
22
+ if (values.length !== 5 || values.some((value) => !/^\d+$/.test(value))) {
23
+ throw new Error('Unexpected macOS memory information from sysctl');
24
+ }
25
+ const numbers = values.map(Number);
26
+ const [free, fileBacked, purgeable, pageSize, pressureLevel] = numbers;
27
+ if (numbers.some((value) => !Number.isSafeInteger(value)) ||
28
+ pageSize === 0 ||
29
+ ![1, 2, 4].includes(pressureLevel)) {
30
+ throw new Error('Invalid macOS memory information from sysctl');
31
+ }
32
+ // The sysctl exposes dispatch pressure flags: normal=1, warning=2, critical=4.
33
+ if (pressureLevel === 4) {
34
+ logger_1.Log.verbose({ indent: false, logLevel }, 'macOS memory pressure is critical. Using os.freemem().');
35
+ return null;
36
+ }
37
+ // XNU's fully reclaimable pages exclude anonymous and compressed memory:
38
+ // https://github.com/apple-oss-distributions/xnu/blob/main/doc/vm/memorystatus_notify.md
39
+ const availableMemory = (free + fileBacked + purgeable) * pageSize;
40
+ if (!Number.isSafeInteger(availableMemory)) {
41
+ throw new Error('Invalid macOS available memory size');
42
+ }
43
+ return Math.min(availableMemory, (0, node_os_1.totalmem)());
44
+ }
45
+ catch (err) {
46
+ logger_1.Log.verbose({ indent: false, logLevel }, 'Could not read reclaimable macOS memory. Using os.freemem().', err);
47
+ return null;
48
+ }
49
+ };
50
+ exports.getAvailableMemoryFromMacos = getAvailableMemoryFromMacos;
@@ -1 +1 @@
1
- export declare const getFreeMemoryFromProcMeminfo: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => number | null;
1
+ export declare const getAvailableMemoryFromProcMeminfo: (logLevel: "error" | "info" | "trace" | "verbose" | "warn") => number | null;
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFreeMemoryFromProcMeminfo = void 0;
3
+ exports.getAvailableMemoryFromProcMeminfo = void 0;
4
4
  const node_fs_1 = require("node:fs");
5
5
  const logger_1 = require("../logger");
6
- const getFreeMemoryFromProcMeminfo = (logLevel) => {
6
+ const getAvailableMemoryFromProcMeminfo = (logLevel) => {
7
7
  if (!(0, node_fs_1.existsSync)('/proc/meminfo')) {
8
8
  return null;
9
9
  }
10
10
  try {
11
11
  const data = (0, node_fs_1.readFileSync)('/proc/meminfo', 'utf-8');
12
- // Split the file by lines and find the line with MemFree
12
+ // MemAvailable includes memory that can be reclaimed without swapping.
13
13
  const lines = data.split('\n');
14
14
  const memAvailableLine = lines.find((line) => line.startsWith('MemAvailable'));
15
15
  // If we couldn't find MemAvailable, return an error
@@ -23,6 +23,9 @@ const getFreeMemoryFromProcMeminfo = (logLevel) => {
23
23
  }
24
24
  const value = parseInt(matches[1], 10);
25
25
  const unit = matches[2].toLowerCase();
26
+ if (!Number.isSafeInteger(value)) {
27
+ throw new Error('Invalid MemAvailable value');
28
+ }
26
29
  // Convert the value to bytes based on its unit
27
30
  switch (unit) {
28
31
  case 'kb':
@@ -41,4 +44,4 @@ const getFreeMemoryFromProcMeminfo = (logLevel) => {
41
44
  return null;
42
45
  }
43
46
  };
44
- exports.getFreeMemoryFromProcMeminfo = getFreeMemoryFromProcMeminfo;
47
+ exports.getAvailableMemoryFromProcMeminfo = getAvailableMemoryFromProcMeminfo;
@@ -5,40 +5,48 @@ const node_os_1 = require("node:os");
5
5
  const logger_1 = require("../logger");
6
6
  const from_docker_cgroup_1 = require("./from-docker-cgroup");
7
7
  const from_lambda_env_1 = require("./from-lambda-env");
8
+ const from_macos_sysctl_1 = require("./from-macos-sysctl");
8
9
  const from_proc_meminfo_1 = require("./from-proc-meminfo");
9
10
  const getAvailableMemory = (logLevel) => {
10
- // If we are in Lambda, the most reliable way is to read the environment variable
11
- // This is also pretty much free
12
- const maxMemory = (0, from_lambda_env_1.getMaxLambdaMemory)();
13
- if (maxMemory !== null) {
14
- const nodeMemory = (0, node_os_1.freemem)();
15
- return Math.min(nodeMemory, maxMemory);
11
+ let hostMemory = (0, node_os_1.freemem)();
12
+ let source = 'os.freemem()';
13
+ if ((0, node_os_1.platform)() === 'linux') {
14
+ const procInfo = (0, from_proc_meminfo_1.getAvailableMemoryFromProcMeminfo)(logLevel);
15
+ if (procInfo !== null) {
16
+ hostMemory = procInfo;
17
+ source = '/proc/meminfo MemAvailable';
18
+ }
19
+ }
20
+ else if ((0, node_os_1.platform)() === 'darwin') {
21
+ const macosMemory = (0, from_macos_sysctl_1.getAvailableMemoryFromMacos)(logLevel);
22
+ if (macosMemory !== null) {
23
+ hostMemory = macosMemory;
24
+ source = 'macOS sysctl (free, file-backed and purgeable pages)';
25
+ }
16
26
  }
17
- // If cgroup memory data is available, we are in Docker, and we should respect it
18
- const cgroupMemory = (0, from_docker_cgroup_1.getAvailableMemoryFromCgroup)();
19
- if (cgroupMemory !== null) {
27
+ let availableMemory = hostMemory;
28
+ const cgroupMemory = (0, node_os_1.platform)() === 'linux' ? (0, from_docker_cgroup_1.getAvailableMemoryFromCgroup)() : null;
29
+ if (cgroupMemory !== null && Number.isFinite(cgroupMemory)) {
20
30
  // There are 2 Docker memory configurations:
21
31
  // 1. --memory=[num]
22
32
  // 2. Global Docker memory limit
23
33
  // If cgroup limit is higher than global memory, the global memory limit still applies
24
- const nodeMemory = (0, node_os_1.freemem)();
25
- const _procInfo = (0, from_proc_meminfo_1.getFreeMemoryFromProcMeminfo)(logLevel);
26
- if (cgroupMemory > nodeMemory * 1.25 && Number.isFinite(cgroupMemory)) {
34
+ if (cgroupMemory > hostMemory * 1.25) {
27
35
  logger_1.Log.warn({ indent: false, logLevel }, 'Detected differing memory amounts:');
28
36
  logger_1.Log.warn({ indent: false, logLevel }, `Memory reported by CGroup: ${(cgroupMemory / 1024 / 1024).toFixed(2)} MB`);
29
- if (_procInfo !== null) {
30
- logger_1.Log.warn({ indent: false, logLevel }, `Memory reported by /proc/meminfo: ${(_procInfo / 1024 / 1024).toFixed(2)} MB`);
31
- }
32
- logger_1.Log.warn({ indent: false, logLevel }, `Memory reported by Node: ${(nodeMemory / 1024 / 1024).toFixed(2)} MB`);
37
+ logger_1.Log.warn({ indent: false, logLevel }, `Memory reported by ${source}: ${(hostMemory / 1024 / 1024).toFixed(2)} MB`);
33
38
  logger_1.Log.warn({ indent: false, logLevel }, 'You might have inadvertently set the --memory flag of `docker run` to a value that is higher than the global Docker memory limit.');
34
39
  logger_1.Log.warn({ indent: false, logLevel }, 'Using the lower amount of memory for calculation.');
35
40
  }
36
- return Math.min(nodeMemory, cgroupMemory);
41
+ availableMemory = Math.min(availableMemory, Math.max(0, cgroupMemory));
42
+ source += ', bounded by remaining cgroup memory';
37
43
  }
38
- const procInfo = (0, from_proc_meminfo_1.getFreeMemoryFromProcMeminfo)(logLevel);
39
- if (procInfo !== null) {
40
- return Math.min((0, node_os_1.freemem)(), procInfo);
44
+ const maxLambdaMemory = (0, from_lambda_env_1.getMaxLambdaMemory)();
45
+ if (maxLambdaMemory !== null && Number.isFinite(maxLambdaMemory)) {
46
+ availableMemory = Math.min(availableMemory, Math.max(0, maxLambdaMemory));
47
+ source += ', bounded by Lambda memory';
41
48
  }
42
- return (0, node_os_1.freemem)();
49
+ logger_1.Log.verbose({ indent: false, logLevel }, `Available memory: ${(availableMemory / 1024 / 1024).toFixed(2)} MiB (${source})`);
50
+ return availableMemory;
43
51
  };
44
52
  exports.getAvailableMemory = getAvailableMemory;
@@ -6,6 +6,7 @@ const call_ffmpeg_1 = require("./call-ffmpeg");
6
6
  const convert_number_of_gif_loops_to_ffmpeg_1 = require("./convert-number-of-gif-loops-to-ffmpeg");
7
7
  const get_extension_of_filename_1 = require("./get-extension-of-filename");
8
8
  const get_fast_start_muxer_1 = require("./get-fast-start-muxer");
9
+ const get_mp4_brand_1 = require("./get-mp4-brand");
9
10
  const logger_1 = require("./logger");
10
11
  const make_metadata_args_1 = require("./make-metadata-args");
11
12
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
@@ -18,6 +19,7 @@ const muxVideoAndAudio = async ({ videoOutput, audioOutput, output, indent, logL
18
19
  const fastStartMuxer = outputExtension
19
20
  ? (0, get_fast_start_muxer_1.getFastStartMuxer)(outputExtension)
20
21
  : null;
22
+ const mp4Brand = (0, get_mp4_brand_1.getMp4BrandForExtension)(outputExtension);
21
23
  const command = [
22
24
  '-hide_banner',
23
25
  videoOutput ? '-i' : null,
@@ -40,12 +42,19 @@ const muxVideoAndAudio = async ({ videoOutput, audioOutput, output, indent, logL
40
42
  // result in slightly imprecise values like 95940000/3197999 instead of 30/1.
41
43
  videoOutput ? '-r' : null,
42
44
  videoOutput ? String(fps) : null,
45
+ // Keep the MP4/MOV video time base consistent with the initial encoding.
46
+ videoOutput ? '-video_track_timescale' : null,
47
+ videoOutput ? '90000' : null,
43
48
  numberOfGifLoops === null ? null : '-loop',
44
49
  numberOfGifLoops === null
45
50
  ? null
46
51
  : (0, convert_number_of_gif_loops_to_ffmpeg_1.convertNumberOfGifLoopsToFfmpegSyntax)(numberOfGifLoops),
47
- fastStartMuxer ? '-movflags' : null,
48
- fastStartMuxer ? 'faststart' : null,
52
+ mp4Brand ? '-f' : null,
53
+ mp4Brand ? 'mp4' : null,
54
+ mp4Brand ? '-brand' : null,
55
+ mp4Brand,
56
+ fastStartMuxer || mp4Brand ? '-movflags' : null,
57
+ fastStartMuxer || mp4Brand ? 'faststart' : null,
49
58
  ...(0, make_metadata_args_1.makeMetadataArgs)(metadata !== null && metadata !== void 0 ? metadata : {}),
50
59
  '-y',
51
60
  output,
@@ -1,11 +1,7 @@
1
- export declare const nextFrameToRenderState: ({ allFramesAndExtraFrames, concurrencyOrFramesToRender: _concurrency, }: {
1
+ export declare const nextFrameToRenderState: ({ allFramesAndExtraFrames, }: {
2
2
  allFramesAndExtraFrames: number[];
3
- concurrencyOrFramesToRender: number;
4
3
  }) => {
5
- getNextFrame: (_pageIndex: number) => number;
4
+ getNextFrame: () => number;
6
5
  returnFrame: (frame: number) => void;
7
6
  };
8
- type Fn = typeof nextFrameToRenderState;
9
- export type NextFrameToRender = ReturnType<Fn>;
10
- export declare const partitionedNextFrameToRenderState: Fn;
11
- export {};
7
+ export type NextFrameToRender = ReturnType<typeof nextFrameToRenderState>;
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.partitionedNextFrameToRenderState = exports.nextFrameToRenderState = void 0;
4
- const render_partitions_1 = require("./render-partitions");
5
- const nextFrameToRenderState = ({ allFramesAndExtraFrames,
6
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
7
- concurrencyOrFramesToRender: _concurrency, }) => {
3
+ exports.nextFrameToRenderState = void 0;
4
+ const nextFrameToRenderState = ({ allFramesAndExtraFrames, }) => {
8
5
  const rendered = new Map();
9
6
  return {
10
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
- getNextFrame: (_pageIndex) => {
7
+ getNextFrame: () => {
12
8
  const nextFrame = allFramesAndExtraFrames.find((frame) => {
13
9
  return !rendered.has(frame);
14
10
  });
@@ -24,18 +20,3 @@ concurrencyOrFramesToRender: _concurrency, }) => {
24
20
  };
25
21
  };
26
22
  exports.nextFrameToRenderState = nextFrameToRenderState;
27
- const partitionedNextFrameToRenderState = ({ allFramesAndExtraFrames, concurrencyOrFramesToRender: concurrency, }) => {
28
- const partitions = (0, render_partitions_1.renderPartitions)({
29
- frames: allFramesAndExtraFrames,
30
- concurrency,
31
- });
32
- return {
33
- getNextFrame: (pageIndex) => {
34
- return partitions.getNextFrame(pageIndex);
35
- },
36
- returnFrame: () => {
37
- throw new Error('retrying failed frames for partitioned rendering is not supported. Disable partitioned rendering.');
38
- },
39
- };
40
- };
41
- exports.partitionedNextFrameToRenderState = partitionedNextFrameToRenderState;
@@ -181,6 +181,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
181
181
  (chromiumOptions === null || chromiumOptions === void 0 ? void 0 : chromiumOptions.userAgent)
182
182
  ? `--user-agent="${chromiumOptions.userAgent}"`
183
183
  : null,
184
+ '--remotion-shared-memory-capture',
184
185
  '--remote-debugging-port=0',
185
186
  `--user-data-dir=${userDataDir}`,
186
187
  ].filter(Boolean),
@@ -1,5 +1,6 @@
1
1
  export declare const allowHtmlInCanvasOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "allow-html-in-canvas";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: null;
@@ -6,11 +6,12 @@ let allowHtmlInCanvasEnabled = false;
6
6
  const cliFlag = 'allow-html-in-canvas';
7
7
  exports.allowHtmlInCanvasOption = {
8
8
  name: 'Allow HTML-in-canvas for client-side rendering',
9
+ addedIn: '4.0.447',
9
10
  cliFlag,
10
11
  description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["When client-side rendering is enabled in the Studio, allow the experimental Chromium HTML-in-canvas API to be used for capturing frames. See", ' ', jsx_runtime_1.jsx("a", { href: "/docs/client-side-rendering/html-in-canvas", children: "HTML-in-canvas docs" }),
11
12
  "."] })),
12
13
  ssrName: null,
13
- docLink: 'https://www.remotion.dev/docs/client-side-rendering/html-in-canvas',
14
+ docLink: 'https://www.remotion.dev/docs/options/allow-html-in-canvas',
14
15
  type: false,
15
16
  getValue: ({ commandLine }) => {
16
17
  if (commandLine[cliFlag] !== null) {
@@ -1,5 +1,6 @@
1
1
  export declare const apiKeyOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "api-key";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: "apiKey";
@@ -6,12 +6,13 @@ let currentApiKey = null;
6
6
  const cliFlag = 'api-key';
7
7
  exports.apiKeyOption = {
8
8
  name: 'API key',
9
+ addedIn: '4.0.253',
9
10
  cliFlag,
10
11
  description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["API key for sending a usage event using ",
11
12
  jsx_runtime_1.jsx("code", { children: "@remotion/licensing" }),
12
13
  "."] })),
13
14
  ssrName: 'apiKey',
14
- docLink: 'https://www.remotion.dev/docs/licensing',
15
+ docLink: 'https://www.remotion.dev/docs/options/api-key',
15
16
  type: null,
16
17
  getValue: ({ commandLine }) => {
17
18
  if (commandLine[cliFlag] !== undefined) {
@@ -1,5 +1,6 @@
1
1
  export declare const askAIOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "disable-ask-ai";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: null;
@@ -7,10 +7,11 @@ let configuredAskAIEnabled = null;
7
7
  const cliFlag = 'disable-ask-ai';
8
8
  exports.askAIOption = {
9
9
  name: 'Disable or Enable the Ask AI option',
10
+ addedIn: '4.0.407',
10
11
  cliFlag,
11
12
  description: () => (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: "If the Cmd + I shortcut of the Ask AI modal conflicts with your Studio, you can disable it using this." })),
12
13
  ssrName: null,
13
- docLink: 'https://www.remotion.dev/docs/config#setaskaienabled',
14
+ docLink: 'https://www.remotion.dev/docs/options/disable-ask-ai',
14
15
  type: false,
15
16
  getValue: ({ commandLine }) => {
16
17
  if (commandLine[cliFlag] !== undefined) {
@@ -1,5 +1,6 @@
1
1
  export declare const audioBitrateOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "audio-bitrate";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: string;
@@ -6,6 +6,7 @@ const cliFlag = 'audio-bitrate';
6
6
  let audioBitrate = null;
7
7
  exports.audioBitrateOption = {
8
8
  name: 'Audio Bitrate',
9
+ addedIn: '3.2.32',
9
10
  cliFlag,
10
11
  description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Specify the target bitrate for the generated video. The syntax for FFmpeg", "'", "s ",
11
12
  jsx_runtime_1.jsx("code", { children: "-b:a" }),
@@ -17,7 +18,7 @@ exports.audioBitrateOption = {
17
18
  jsx_runtime_1.jsx("code", { children: "320k" })
18
19
  ] })),
19
20
  ssrName: 'audioBitrate',
20
- docLink: 'https://www.remotion.dev/docs/renderer/render-media#audiobitrate-',
21
+ docLink: 'https://www.remotion.dev/docs/options/audio-bitrate',
21
22
  type: '0',
22
23
  getValue: ({ commandLine }) => {
23
24
  if (commandLine[cliFlag]) {
@@ -48,6 +48,7 @@ export declare const audioCodecOption: {
48
48
  description: () => string;
49
49
  docLink: string;
50
50
  name: string;
51
+ addedIn: string;
51
52
  ssrName: "audioCodec";
52
53
  type: "aac" | "mp3" | "opus" | "pcm-16";
53
54
  id: "audio-codec";
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.audioCodecOption = exports.getDefaultAudioCodec = exports.resolveAudioCodec = exports.getExtensionFromAudioCodec = exports.defaultAudioCodecs = exports.mapAudioCodecToFfmpegAudioCodecName = exports.supportedAudioCodecs = exports.validAudioCodecs = void 0;
4
+ const get_mp4_brand_1 = require("../get-mp4-brand");
4
5
  const separate_audio_1 = require("./separate-audio");
5
6
  exports.validAudioCodecs = ['pcm-16', 'aac', 'mp3', 'opus'];
6
7
  exports.supportedAudioCodecs = {
@@ -111,18 +112,23 @@ const getExtensionFromAudioCodec = (audioCodec) => {
111
112
  };
112
113
  exports.getExtensionFromAudioCodec = getExtensionFromAudioCodec;
113
114
  const resolveAudioCodec = ({ codec, setting, preferLossless, separateAudioTo, }) => {
115
+ var _a;
114
116
  let derivedFromSeparateAudioToExtension = null;
115
117
  if (separateAudioTo) {
116
- const extension = separateAudioTo.split('.').pop();
118
+ const extension = (_a = separateAudioTo.split('.').pop()) !== null && _a !== void 0 ? _a : null;
117
119
  for (const [key, value] of Object.entries(extensionMap)) {
118
120
  if (value === extension) {
119
121
  derivedFromSeparateAudioToExtension = key;
120
- if (!exports.supportedAudioCodecs[codec].includes(derivedFromSeparateAudioToExtension) &&
121
- derivedFromSeparateAudioToExtension) {
122
- throw new Error(`The codec is ${codec} but the audio codec derived from --${separate_audio_1.separateAudioOption.cliFlag} is ${derivedFromSeparateAudioToExtension}. The only supported codecs are: ${exports.supportedAudioCodecs[codec].join(', ')}`);
123
- }
124
122
  }
125
123
  }
124
+ // .m4a, .m4b and .3gp are AAC in an MP4 container
125
+ if ((0, get_mp4_brand_1.getMp4BrandForExtension)(extension)) {
126
+ derivedFromSeparateAudioToExtension = 'aac';
127
+ }
128
+ if (derivedFromSeparateAudioToExtension &&
129
+ !exports.supportedAudioCodecs[codec].includes(derivedFromSeparateAudioToExtension)) {
130
+ throw new Error(`The codec is ${codec} but the audio codec derived from --${separate_audio_1.separateAudioOption.cliFlag} is ${derivedFromSeparateAudioToExtension}. The only supported codecs are: ${exports.supportedAudioCodecs[codec].join(', ')}`);
131
+ }
126
132
  }
127
133
  // Explanation: https://github.com/remotion-dev/remotion/issues/1647
128
134
  if (preferLossless) {
@@ -186,8 +192,9 @@ exports.audioCodecOption = {
186
192
  };
187
193
  },
188
194
  description: () => `Set the format of the audio that is embedded in the video. Not all codec and audio codec combinations are supported and certain combinations require a certain file extension and container format. See the table in the docs to see possible combinations.`,
189
- docLink: 'https://www.remotion.dev/docs/encoding/#audio-codec',
195
+ docLink: 'https://www.remotion.dev/docs/options/audio-codec',
190
196
  name: 'Audio Codec',
197
+ addedIn: '3.3.41',
191
198
  ssrName,
192
199
  type: 'aac',
193
200
  id: cliFlag,
@@ -1,5 +1,6 @@
1
1
  export declare const beepOnFinishOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "beep-on-finish";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: null;
@@ -7,10 +7,11 @@ let configuredBeepOnFinish = null;
7
7
  const cliFlag = 'beep-on-finish';
8
8
  exports.beepOnFinishOption = {
9
9
  name: 'Beep on finish',
10
+ addedIn: '4.0.84',
10
11
  cliFlag,
11
12
  description: () => (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: "Whether the Remotion Studio tab should beep when the render is finished." })),
12
13
  ssrName: null,
13
- docLink: 'https://www.remotion.dev/docs/config#setbeeponfinish',
14
+ docLink: 'https://www.remotion.dev/docs/options/beep-on-finish',
14
15
  type: false,
15
16
  getValue: ({ commandLine }) => {
16
17
  if (commandLine[cliFlag] !== undefined && commandLine[cliFlag] !== null) {
@@ -1,5 +1,6 @@
1
1
  export declare const benchmarkConcurrenciesOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "concurrencies";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: null;
@@ -6,11 +6,12 @@ let currentConcurrencies = null;
6
6
  const cliFlag = 'concurrencies';
7
7
  exports.benchmarkConcurrenciesOption = {
8
8
  name: 'Benchmark concurrencies',
9
+ addedIn: '3.2.28',
9
10
  cliFlag,
10
11
  description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Specify which concurrency values should be used while benchmarking. Multiple values can be passed separated by comma. Learn more about", ' ', jsx_runtime_1.jsx("a", { href: "https://remotion.dev/docs/terminology/concurrency", children: "concurrency" }),
11
12
  "."] })),
12
13
  ssrName: null,
13
- docLink: 'https://www.remotion.dev/docs/cli/benchmark#--concurrencies',
14
+ docLink: 'https://www.remotion.dev/docs/options/concurrencies',
14
15
  type: null,
15
16
  getValue: ({ commandLine }) => {
16
17
  if (commandLine[cliFlag] !== undefined) {
@@ -1,5 +1,6 @@
1
1
  export declare const binariesDirectoryOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "binaries-directory";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: "binariesDirectory";
@@ -6,6 +6,7 @@ const cliFlag = 'binaries-directory';
6
6
  let currentDirectory = null;
7
7
  exports.binariesDirectoryOption = {
8
8
  name: 'Binaries Directory',
9
+ addedIn: '4.0.120',
9
10
  cliFlag,
10
11
  description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["The directory where the platform-specific binaries and libraries that Remotion needs are located. Those include an ",
11
12
  jsx_runtime_1.jsx("code", { children: "ffmpeg" }),
@@ -17,7 +18,7 @@ exports.binariesDirectoryOption = {
17
18
  jsx_runtime_1.jsx("br", {}),
18
19
  "This option is useful in environments where Remotion is not officially supported to run like bundled serverless functions or Electron."] })),
19
20
  ssrName: 'binariesDirectory',
20
- docLink: 'https://www.remotion.dev/docs/renderer',
21
+ docLink: 'https://www.remotion.dev/docs/options/binaries-directory',
21
22
  type: '',
22
23
  getValue: ({ commandLine }) => {
23
24
  if (commandLine[cliFlag] !== undefined) {
@@ -1,6 +1,7 @@
1
1
  import type { BrowserExecutable } from '../browser-executable';
2
2
  export declare const browserExecutableOption: {
3
3
  name: string;
4
+ addedIn: string;
4
5
  cliFlag: "browser-executable";
5
6
  description: () => import("react/jsx-runtime").JSX.Element;
6
7
  ssrName: "browserExecutable";
@@ -6,10 +6,11 @@ let currentBrowserExecutablePath = null;
6
6
  const cliFlag = 'browser-executable';
7
7
  exports.browserExecutableOption = {
8
8
  name: 'Browser executable',
9
+ addedIn: '1.5.0',
9
10
  cliFlag,
10
11
  description: () => (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: "Set a custom Chrome or Chromium executable path. By default Remotion will try to find an existing version of Chrome on your system and if not found, it will download one. This flag is useful if you don't have Chrome installed in a standard location and you want to prevent downloading an additional browser or need support for the H264 codec." })),
11
12
  ssrName: 'browserExecutable',
12
- docLink: 'https://www.remotion.dev/docs/config#setbrowserexecutable',
13
+ docLink: 'https://www.remotion.dev/docs/options/browser-executable',
13
14
  type: null,
14
15
  getValue: ({ commandLine }) => {
15
16
  if (commandLine[cliFlag] !== undefined) {
@@ -1,5 +1,6 @@
1
1
  export declare const browserOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "browser";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: null;
@@ -5,11 +5,12 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const cliFlag = 'browser';
6
6
  exports.browserOption = {
7
7
  name: 'Browser',
8
+ addedIn: '3.3.79',
8
9
  cliFlag,
9
10
  description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Specify the browser which should be used for opening a tab. The default browser will be used by default. Pass an absolute path or", ' ', jsx_runtime_1.jsx("code", { children: "\"chrome\"" }),
10
11
  " to use Chrome. If Chrome is selected as the browser and you are on macOS, Remotion will try to reuse an existing tab."] })),
11
12
  ssrName: null,
12
- docLink: 'https://www.remotion.dev/docs/cli/studio#--browser',
13
+ docLink: 'https://www.remotion.dev/docs/options/browser',
13
14
  getValue: ({ commandLine }) => {
14
15
  if (commandLine[cliFlag] !== undefined) {
15
16
  return {
@@ -1,5 +1,6 @@
1
1
  export declare const bundleCacheOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "bundle-cache";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: null;
@@ -6,11 +6,12 @@ const cliFlag = 'bundle-cache';
6
6
  let cachingEnabled = true;
7
7
  exports.bundleCacheOption = {
8
8
  name: 'Webpack Bundle Caching',
9
+ addedIn: '2.0.0',
9
10
  cliFlag,
10
11
  description: () => (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Enable or disable Webpack caching. This flag is enabled by default, use", ' ', jsx_runtime_1.jsx("code", { children: "--bundle-cache=false" }),
11
12
  " to disable caching."] })),
12
13
  ssrName: null,
13
- docLink: 'https://www.remotion.dev/docs/config#setcachingenabled',
14
+ docLink: 'https://www.remotion.dev/docs/options/bundle-cache',
14
15
  getValue: ({ commandLine }) => {
15
16
  if (commandLine[cliFlag] !== undefined && commandLine[cliFlag] !== null) {
16
17
  return {
@@ -1,5 +1,6 @@
1
1
  export declare const canvasTabsOption: {
2
2
  name: string;
3
+ addedIn: string;
3
4
  cliFlag: "disable-canvas-tabs";
4
5
  description: () => import("react/jsx-runtime").JSX.Element;
5
6
  ssrName: null;
@@ -7,10 +7,11 @@ let configuredCanvasTabsEnabled = null;
7
7
  const cliFlag = 'disable-canvas-tabs';
8
8
  exports.canvasTabsOption = {
9
9
  name: 'Disable or enable Studio canvas tabs',
10
+ addedIn: '4.0.530',
10
11
  cliFlag,
11
12
  description: () => jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: "Enable or disable the tabs above the Studio canvas." }),
12
13
  ssrName: null,
13
- docLink: 'https://www.remotion.dev/docs/config#setcanvastabsenabled',
14
+ docLink: 'https://www.remotion.dev/docs/options/disable-canvas-tabs',
14
15
  type: false,
15
16
  getValue: ({ commandLine }) => {
16
17
  if (commandLine[cliFlag] !== undefined && commandLine[cliFlag] !== null) {
@@ -3,6 +3,7 @@ export type ChromeMode = (typeof validChromeModeOptions)[number];
3
3
  export declare const chromeModeOption: {
4
4
  cliFlag: "chrome-mode";
5
5
  name: string;
6
+ addedIn: string;
6
7
  ssrName: string;
7
8
  description: () => import("react/jsx-runtime").JSX.Element;
8
9
  docLink: string;
@@ -11,6 +11,7 @@ let configSelection = null;
11
11
  exports.chromeModeOption = {
12
12
  cliFlag,
13
13
  name: 'Chrome Mode',
14
+ addedIn: '4.0.248',
14
15
  ssrName: 'chromeMode',
15
16
  description: () => {
16
17
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["One of", ' ', exports.validChromeModeOptions.map((option, i) => (jsx_runtime_1.jsxs("code", { children: [option, i === exports.validChromeModeOptions.length - 1 ? '' : ', '] }, option))), ". Default ",
@@ -20,7 +21,7 @@ exports.chromeModeOption = {
20
21
  " to take advantage of GPU drivers on Linux."] })
21
22
  ] }));
22
23
  },
23
- docLink: 'https://www.remotion.dev/chrome-for-testing',
24
+ docLink: 'https://www.remotion.dev/docs/options/chrome-mode',
24
25
  getValue: ({ commandLine }) => {
25
26
  if (commandLine[cliFlag]) {
26
27
  if (!exports.validChromeModeOptions.includes(commandLine[cliFlag])) {
@@ -3,6 +3,7 @@ export type ColorSpace = (typeof validColorSpaces)[number];
3
3
  export declare const DEFAULT_COLOR_SPACE: "default";
4
4
  export declare const colorSpaceOption: {
5
5
  name: string;
6
+ addedIn: string;
6
7
  cliFlag: "color-space";
7
8
  description: () => import("react/jsx-runtime").JSX.Element;
8
9
  docLink: string;