@remotion/lambda 4.0.0-audio.0 → 4.0.0-audio.11

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 (405) hide show
  1. package/LICENSE.md +8 -8
  2. package/dist/admin/bundle-lambda.d.ts +0 -0
  3. package/dist/admin/bundle-lambda.js +21 -4
  4. package/dist/admin/generate-etag-list.d.ts +1 -0
  5. package/dist/admin/generate-etag-list.js +14 -0
  6. package/dist/admin/make-layer-public.d.ts +0 -0
  7. package/dist/admin/make-layer-public.js +30 -8
  8. package/dist/api/bucket-exists.d.ts +1 -1
  9. package/dist/api/bucket-exists.js +1 -1
  10. package/dist/api/clean-items.d.ts +1 -1
  11. package/dist/api/clean-items.js +3 -6
  12. package/dist/api/create-bucket.d.ts +1 -1
  13. package/dist/api/create-bucket.js +1 -1
  14. package/dist/api/create-function.d.ts +4 -3
  15. package/dist/api/create-function.js +26 -4
  16. package/dist/api/delete-function.d.ts +2 -2
  17. package/dist/api/delete-function.js +1 -1
  18. package/dist/api/delete-render.d.ts +19 -0
  19. package/dist/api/delete-render.js +66 -0
  20. package/dist/api/delete-site.d.ts +2 -2
  21. package/dist/api/delete-site.js +1 -6
  22. package/dist/api/deploy-function.d.ts +4 -3
  23. package/dist/api/deploy-function.js +11 -4
  24. package/dist/api/deploy-site.d.ts +13 -4
  25. package/dist/api/deploy-site.js +60 -22
  26. package/dist/api/download-media.d.ts +15 -2
  27. package/dist/api/download-media.js +15 -3
  28. package/dist/api/estimate-price.d.ts +3 -3
  29. package/dist/api/estimate-price.js +1 -1
  30. package/dist/api/get-aws-client.d.ts +8 -4
  31. package/dist/api/get-aws-client.js +15 -4
  32. package/dist/api/get-buckets.d.ts +1 -1
  33. package/dist/api/get-buckets.js +27 -10
  34. package/dist/api/get-compositions-on-lambda.d.ts +31 -0
  35. package/dist/api/get-compositions-on-lambda.js +56 -0
  36. package/dist/api/get-function-info.d.ts +3 -4
  37. package/dist/api/get-function-info.js +1 -1
  38. package/dist/api/get-functions.d.ts +3 -5
  39. package/dist/api/get-functions.js +3 -4
  40. package/dist/api/get-or-create-bucket.d.ts +3 -2
  41. package/dist/api/get-or-create-bucket.js +6 -11
  42. package/dist/api/get-regions.d.ts +7 -3
  43. package/dist/api/get-regions.js +6 -3
  44. package/dist/api/get-render-progress.d.ts +7 -4
  45. package/dist/api/get-render-progress.js +6 -2
  46. package/dist/api/get-sites.d.ts +4 -4
  47. package/dist/api/get-sites.js +1 -2
  48. package/dist/api/iam-validation/role-permissions.d.ts +2 -1
  49. package/dist/api/iam-validation/role-permissions.js +0 -0
  50. package/dist/api/iam-validation/simulate-rule.d.ts +1 -1
  51. package/dist/api/iam-validation/simulate-rule.js +0 -22
  52. package/dist/api/iam-validation/simulate.d.ts +3 -3
  53. package/dist/api/iam-validation/simulate.js +25 -6
  54. package/dist/api/iam-validation/suggested-policy.d.ts +0 -0
  55. package/dist/api/iam-validation/suggested-policy.js +0 -0
  56. package/dist/api/iam-validation/user-permissions.d.ts +1 -1
  57. package/dist/api/iam-validation/user-permissions.js +1 -8
  58. package/dist/api/mock-functions.d.ts +6 -7
  59. package/dist/api/mock-functions.js +0 -0
  60. package/dist/api/presign-url.d.ts +5 -5
  61. package/dist/api/presign-url.js +9 -4
  62. package/dist/api/render-media-on-lambda.d.ts +40 -17
  63. package/dist/api/render-media-on-lambda.js +90 -38
  64. package/dist/api/render-still-on-lambda.d.ts +14 -7
  65. package/dist/api/render-still-on-lambda.js +60 -31
  66. package/dist/api/speculate-function-name.d.ts +14 -0
  67. package/dist/api/speculate-function-name.js +22 -0
  68. package/dist/api/upload-dir.d.ts +6 -5
  69. package/dist/api/upload-dir.js +60 -52
  70. package/dist/api/validate-webhook-signature.d.ts +13 -0
  71. package/dist/api/validate-webhook-signature.js +32 -0
  72. package/dist/cli/args.d.ts +13 -5
  73. package/dist/cli/args.js +1 -5
  74. package/dist/cli/commands/compositions/index.d.ts +2 -0
  75. package/dist/cli/commands/compositions/index.js +44 -0
  76. package/dist/cli/commands/functions/deploy.d.ts +0 -0
  77. package/dist/cli/commands/functions/deploy.js +10 -6
  78. package/dist/cli/commands/functions/index.d.ts +0 -0
  79. package/dist/cli/commands/functions/index.js +16 -17
  80. package/dist/cli/commands/functions/ls.d.ts +0 -0
  81. package/dist/cli/commands/functions/ls.js +6 -7
  82. package/dist/cli/commands/functions/rm.d.ts +0 -0
  83. package/dist/cli/commands/functions/rm.js +0 -0
  84. package/dist/cli/commands/functions/rmall.d.ts +0 -0
  85. package/dist/cli/commands/functions/rmall.js +0 -0
  86. package/dist/cli/commands/policies/policies.d.ts +0 -0
  87. package/dist/cli/commands/policies/policies.js +0 -0
  88. package/dist/cli/commands/policies/role.d.ts +0 -0
  89. package/dist/cli/commands/policies/role.js +0 -0
  90. package/dist/cli/commands/policies/user.d.ts +0 -0
  91. package/dist/cli/commands/policies/user.js +0 -0
  92. package/dist/cli/commands/policies/validate.d.ts +0 -0
  93. package/dist/cli/commands/policies/validate.js +0 -0
  94. package/dist/cli/commands/quotas/increase.d.ts +0 -0
  95. package/dist/cli/commands/quotas/increase.js +28 -8
  96. package/dist/cli/commands/quotas/index.d.ts +0 -0
  97. package/dist/cli/commands/quotas/index.js +8 -9
  98. package/dist/cli/commands/quotas/list.d.ts +0 -0
  99. package/dist/cli/commands/quotas/list.js +0 -0
  100. package/dist/cli/commands/regions.d.ts +0 -0
  101. package/dist/cli/commands/regions.js +6 -2
  102. package/dist/cli/commands/render/progress.d.ts +11 -7
  103. package/dist/cli/commands/render/progress.js +66 -48
  104. package/dist/cli/commands/render/render.d.ts +1 -1
  105. package/dist/cli/commands/render/render.js +80 -25
  106. package/dist/cli/commands/sites/create.d.ts +1 -1
  107. package/dist/cli/commands/sites/create.js +25 -26
  108. package/dist/cli/commands/sites/index.d.ts +1 -1
  109. package/dist/cli/commands/sites/index.js +15 -16
  110. package/dist/cli/commands/sites/ls.d.ts +0 -0
  111. package/dist/cli/commands/sites/ls.js +10 -12
  112. package/dist/cli/commands/sites/rm.d.ts +0 -0
  113. package/dist/cli/commands/sites/rm.js +8 -19
  114. package/dist/cli/commands/sites/rmall.d.ts +0 -0
  115. package/dist/cli/commands/sites/rmall.js +7 -19
  116. package/dist/cli/commands/still.d.ts +1 -1
  117. package/dist/cli/commands/still.js +34 -27
  118. package/dist/cli/get-aws-region.d.ts +1 -1
  119. package/dist/cli/get-aws-region.js +2 -1
  120. package/dist/cli/help.d.ts +0 -0
  121. package/dist/cli/help.js +0 -0
  122. package/dist/cli/helpers/confirm.d.ts +0 -0
  123. package/dist/cli/helpers/confirm.js +0 -0
  124. package/dist/cli/helpers/date-string.d.ts +0 -0
  125. package/dist/cli/helpers/date-string.js +0 -0
  126. package/dist/cli/helpers/find-function-name.d.ts +0 -0
  127. package/dist/cli/helpers/find-function-name.js +37 -7
  128. package/dist/cli/helpers/progress-bar.d.ts +9 -3
  129. package/dist/cli/helpers/progress-bar.js +20 -8
  130. package/dist/cli/helpers/quit.d.ts +0 -0
  131. package/dist/cli/helpers/quit.js +0 -0
  132. package/dist/cli/helpers/yes-or-no.d.ts +0 -0
  133. package/dist/cli/helpers/yes-or-no.js +0 -0
  134. package/dist/cli/index.d.ts +1 -1
  135. package/dist/cli/index.js +30 -9
  136. package/dist/cli/is-cli.d.ts +0 -0
  137. package/dist/cli/is-cli.js +0 -0
  138. package/dist/cli/log.d.ts +0 -0
  139. package/dist/cli/log.js +0 -0
  140. package/dist/client.d.ts +10 -2
  141. package/dist/client.js +11 -1
  142. package/dist/defaults.d.ts +0 -0
  143. package/dist/defaults.js +5 -1
  144. package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +2 -6
  145. package/dist/functions/chunk-optimization/plan-frame-ranges.js +7 -19
  146. package/dist/functions/chunk-optimization/types.d.ts +0 -11
  147. package/dist/functions/chunk-optimization/types.js +0 -0
  148. package/dist/functions/compositions.d.ts +8 -0
  149. package/dist/functions/compositions.js +58 -0
  150. package/dist/functions/helpers/best-frames-per-lambda-param.d.ts +0 -0
  151. package/dist/functions/helpers/best-frames-per-lambda-param.js +0 -0
  152. package/dist/functions/helpers/calculate-chunk-times.d.ts +1 -1
  153. package/dist/functions/helpers/calculate-chunk-times.js +0 -0
  154. package/dist/functions/helpers/calculate-price-from-bucket.d.ts +4 -4
  155. package/dist/functions/helpers/calculate-price-from-bucket.js +0 -0
  156. package/dist/functions/helpers/check-if-render-exists.d.ts +3 -0
  157. package/dist/functions/helpers/check-if-render-exists.js +14 -0
  158. package/dist/functions/helpers/clean-tmpdir.d.ts +0 -0
  159. package/dist/functions/helpers/clean-tmpdir.js +1 -1
  160. package/dist/functions/helpers/concat-videos.d.ts +19 -7
  161. package/dist/functions/helpers/concat-videos.js +41 -33
  162. package/dist/functions/helpers/create-post-render-data.d.ts +6 -6
  163. package/dist/functions/helpers/create-post-render-data.js +5 -12
  164. package/dist/functions/helpers/delete-chunks.d.ts +3 -3
  165. package/dist/functions/helpers/delete-chunks.js +0 -0
  166. package/dist/functions/helpers/expected-out-name.d.ts +4 -2
  167. package/dist/functions/helpers/expected-out-name.js +27 -6
  168. package/dist/functions/helpers/find-output-file-in-bucket.d.ts +5 -3
  169. package/dist/functions/helpers/find-output-file-in-bucket.js +17 -9
  170. package/dist/functions/helpers/format-costs-info.d.ts +1 -1
  171. package/dist/functions/helpers/format-costs-info.js +0 -0
  172. package/dist/functions/helpers/get-browser-instance.d.ts +2 -1
  173. package/dist/functions/helpers/get-browser-instance.js +5 -3
  174. package/dist/functions/helpers/get-chromium-executable-path.d.ts +1 -1
  175. package/dist/functions/helpers/get-chromium-executable-path.js +3 -2
  176. package/dist/functions/helpers/get-cleanup-progress.d.ts +2 -2
  177. package/dist/functions/helpers/get-cleanup-progress.js +0 -0
  178. package/dist/functions/helpers/get-current-architecture.d.ts +1 -1
  179. package/dist/functions/helpers/get-current-architecture.js +0 -0
  180. package/dist/functions/helpers/get-current-region.d.ts +1 -1
  181. package/dist/functions/helpers/get-current-region.js +0 -0
  182. package/dist/functions/helpers/get-custom-out-name.d.ts +6 -0
  183. package/dist/functions/helpers/get-custom-out-name.js +31 -0
  184. package/dist/functions/helpers/get-encoding-metadata.d.ts +6 -9
  185. package/dist/functions/helpers/get-encoding-metadata.js +7 -17
  186. package/dist/functions/helpers/get-files-in-folder.d.ts +0 -0
  187. package/dist/functions/helpers/get-files-in-folder.js +0 -0
  188. package/dist/functions/helpers/get-files-to-delete.d.ts +0 -0
  189. package/dist/functions/helpers/get-files-to-delete.js +3 -3
  190. package/dist/functions/helpers/get-final-encoding-status.d.ts +3 -5
  191. package/dist/functions/helpers/get-final-encoding-status.js +1 -4
  192. package/dist/functions/helpers/get-folder-size.d.ts +0 -0
  193. package/dist/functions/helpers/get-folder-size.js +0 -0
  194. package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +5 -4
  195. package/dist/functions/helpers/get-lambdas-invoked-stats.js +2 -10
  196. package/dist/functions/helpers/get-output-url-from-metadata.d.ts +3 -2
  197. package/dist/functions/helpers/get-output-url-from-metadata.js +2 -2
  198. package/dist/functions/helpers/get-overall-progress.d.ts +2 -1
  199. package/dist/functions/helpers/get-overall-progress.js +7 -5
  200. package/dist/functions/helpers/get-post-render-data.d.ts +2 -2
  201. package/dist/functions/helpers/get-post-render-data.js +0 -0
  202. package/dist/functions/helpers/get-progress.d.ts +6 -4
  203. package/dist/functions/helpers/get-progress.js +65 -46
  204. package/dist/functions/helpers/get-render-metadata.d.ts +2 -2
  205. package/dist/functions/helpers/get-render-metadata.js +0 -0
  206. package/dist/functions/helpers/get-rendered-frames-progress.d.ts +8 -0
  207. package/dist/functions/helpers/get-rendered-frames-progress.js +37 -0
  208. package/dist/functions/helpers/get-retry-stats.d.ts +1 -1
  209. package/dist/functions/helpers/get-retry-stats.js +1 -1
  210. package/dist/functions/helpers/get-time-to-finish.d.ts +1 -1
  211. package/dist/functions/helpers/get-time-to-finish.js +0 -0
  212. package/dist/functions/helpers/inspect-errors.d.ts +3 -3
  213. package/dist/functions/helpers/inspect-errors.js +0 -0
  214. package/dist/functions/helpers/io.d.ts +24 -6
  215. package/dist/functions/helpers/io.js +36 -8
  216. package/dist/functions/helpers/is-enosp-err.d.ts +0 -0
  217. package/dist/functions/helpers/is-enosp-err.js +0 -0
  218. package/dist/functions/helpers/is-warm.d.ts +0 -0
  219. package/dist/functions/helpers/is-warm.js +0 -0
  220. package/dist/functions/helpers/make-timeout-error.d.ts +8 -0
  221. package/dist/functions/helpers/make-timeout-error.js +35 -0
  222. package/dist/functions/helpers/make-timeout-message.d.ts +6 -0
  223. package/dist/functions/helpers/make-timeout-message.js +31 -0
  224. package/dist/functions/helpers/min-max.d.ts +1 -1
  225. package/dist/functions/helpers/min-max.js +1 -1
  226. package/dist/functions/helpers/print-cloudwatch-helper.d.ts +2 -2
  227. package/dist/functions/helpers/print-cloudwatch-helper.js +0 -0
  228. package/dist/functions/helpers/print-concurrency-curve.d.ts +0 -0
  229. package/dist/functions/helpers/print-concurrency-curve.js +0 -0
  230. package/dist/functions/helpers/read-with-progress.d.ts +6 -3
  231. package/dist/functions/helpers/read-with-progress.js +16 -4
  232. package/dist/functions/helpers/timer.d.ts +0 -0
  233. package/dist/functions/helpers/timer.js +0 -0
  234. package/dist/functions/helpers/validate-composition.d.ts +13 -4
  235. package/dist/functions/helpers/validate-composition.js +15 -2
  236. package/dist/functions/helpers/write-lambda-error.d.ts +2 -2
  237. package/dist/functions/helpers/write-lambda-error.js +2 -0
  238. package/dist/functions/helpers/write-post-render-data.d.ts +2 -2
  239. package/dist/functions/helpers/write-post-render-data.js +2 -0
  240. package/dist/functions/index.d.ts +3 -2
  241. package/dist/functions/index.js +29 -10
  242. package/dist/functions/info.d.ts +2 -2
  243. package/dist/functions/info.js +2 -1
  244. package/dist/functions/launch.d.ts +2 -1
  245. package/dist/functions/launch.js +369 -126
  246. package/dist/functions/progress.d.ts +2 -2
  247. package/dist/functions/progress.js +10 -1
  248. package/dist/functions/renderer.d.ts +1 -1
  249. package/dist/functions/renderer.js +144 -79
  250. package/dist/functions/start.d.ts +6 -2
  251. package/dist/functions/start.js +45 -6
  252. package/dist/functions/still.d.ts +1 -1
  253. package/dist/functions/still.js +81 -23
  254. package/dist/index.d.ts +57 -21
  255. package/dist/index.js +27 -5
  256. package/dist/internals.d.ts +1 -1
  257. package/dist/internals.js +0 -0
  258. package/dist/pricing/aws-regions.d.ts +2 -1
  259. package/dist/pricing/aws-regions.js +31 -1
  260. package/dist/pricing/price-per-1-s.d.ts +1 -1
  261. package/dist/pricing/price-per-1-s.js +413 -39
  262. package/dist/regions.d.ts +0 -0
  263. package/dist/regions.js +0 -0
  264. package/dist/shared/await.d.ts +0 -0
  265. package/dist/shared/await.js +0 -0
  266. package/dist/shared/aws-clients.d.ts +17 -3
  267. package/dist/shared/aws-clients.js +118 -26
  268. package/dist/shared/bundle-site.d.ts +2 -6
  269. package/dist/shared/bundle-site.js +0 -0
  270. package/dist/shared/call-lambda.d.ts +3 -3
  271. package/dist/shared/call-lambda.js +0 -0
  272. package/dist/shared/check-credentials.d.ts +0 -0
  273. package/dist/shared/check-credentials.js +5 -2
  274. package/dist/shared/chunk-progress.d.ts +9 -0
  275. package/dist/shared/chunk-progress.js +2034 -0
  276. package/dist/shared/cleanup-serialized-input-props.d.ts +7 -0
  277. package/dist/shared/cleanup-serialized-input-props.js +19 -0
  278. package/dist/shared/constants.d.ts +124 -37
  279. package/dist/shared/constants.js +21 -10
  280. package/dist/shared/content-disposition-header.d.ts +7 -0
  281. package/dist/shared/content-disposition-header.js +19 -0
  282. package/dist/shared/convert-to-serve-url.d.ts +6 -2
  283. package/dist/shared/convert-to-serve-url.js +1 -5
  284. package/dist/shared/deserialize-input-props.d.ts +8 -0
  285. package/dist/shared/deserialize-input-props.js +26 -0
  286. package/dist/shared/docs-url.d.ts +0 -0
  287. package/dist/shared/docs-url.js +0 -0
  288. package/dist/shared/function-zip-path.d.ts +2 -1
  289. package/dist/shared/function-zip-path.js +3 -2
  290. package/dist/shared/get-account-id.d.ts +1 -1
  291. package/dist/shared/get-account-id.js +4 -6
  292. package/dist/shared/get-aws-urls.d.ts +14 -0
  293. package/dist/shared/get-aws-urls.js +12 -0
  294. package/dist/shared/get-etag.d.ts +1 -0
  295. package/dist/shared/get-etag.js +24 -0
  296. package/dist/shared/get-function-version.d.ts +2 -3
  297. package/dist/shared/get-function-version.js +0 -0
  298. package/dist/shared/get-most-expensive-chunks.d.ts +8 -0
  299. package/dist/shared/get-most-expensive-chunks.js +26 -0
  300. package/dist/shared/get-s3-operations.d.ts +10 -0
  301. package/dist/shared/get-s3-operations.js +36 -0
  302. package/dist/shared/hosted-layers.d.ts +89 -3
  303. package/dist/shared/hosted-layers.js +443 -134
  304. package/dist/shared/invoke-webhook.d.ts +44 -0
  305. package/dist/shared/invoke-webhook.js +89 -0
  306. package/dist/shared/is-in-lambda.d.ts +0 -0
  307. package/dist/shared/is-in-lambda.js +5 -1
  308. package/dist/shared/lambda-version-string.d.ts +1 -0
  309. package/dist/shared/lambda-version-string.js +7 -0
  310. package/dist/shared/make-s3-key.d.ts +1 -0
  311. package/dist/shared/make-s3-key.js +11 -0
  312. package/dist/shared/make-s3-url.d.ts +1 -1
  313. package/dist/shared/make-s3-url.js +0 -0
  314. package/dist/shared/p-limit.d.ts +1 -0
  315. package/dist/shared/p-limit.js +57 -0
  316. package/dist/shared/parse-chunk-key.d.ts +4 -0
  317. package/dist/shared/parse-chunk-key.js +14 -0
  318. package/dist/shared/parse-lambda-initialized-key.d.ts +0 -0
  319. package/dist/shared/parse-lambda-initialized-key.js +0 -0
  320. package/dist/shared/parse-lambda-timings-key.d.ts +0 -0
  321. package/dist/shared/parse-lambda-timings-key.js +0 -0
  322. package/dist/shared/random-hash.d.ts +2 -2
  323. package/dist/shared/random-hash.js +1 -1
  324. package/dist/shared/read-dir.d.ts +9 -0
  325. package/dist/shared/read-dir.js +57 -0
  326. package/dist/shared/return-values.d.ts +9 -7
  327. package/dist/shared/return-values.js +0 -1
  328. package/dist/shared/serialize-input-props.d.ts +8 -0
  329. package/dist/shared/serialize-input-props.js +42 -0
  330. package/dist/shared/sleep.d.ts +0 -0
  331. package/dist/shared/sleep.js +0 -0
  332. package/dist/shared/stream-to-string.d.ts +2 -1
  333. package/dist/shared/stream-to-string.js +0 -0
  334. package/dist/shared/truthy.d.ts +3 -0
  335. package/dist/shared/truthy.js +7 -0
  336. package/dist/shared/validate-architecture.d.ts +0 -0
  337. package/dist/shared/validate-architecture.js +0 -0
  338. package/dist/shared/validate-aws-region.d.ts +1 -1
  339. package/dist/shared/validate-aws-region.js +0 -0
  340. package/dist/shared/validate-bucketname.d.ts +5 -0
  341. package/dist/shared/validate-bucketname.js +19 -1
  342. package/dist/shared/validate-custom-role-arn.d.ts +1 -0
  343. package/dist/shared/validate-custom-role-arn.js +11 -0
  344. package/dist/shared/validate-disk-size-in-mb.d.ts +0 -0
  345. package/dist/shared/validate-disk-size-in-mb.js +0 -0
  346. package/dist/shared/validate-download-behavior.d.ts +1 -0
  347. package/dist/shared/validate-download-behavior.js +21 -0
  348. package/dist/shared/validate-frames-per-lambda.d.ts +4 -1
  349. package/dist/shared/validate-frames-per-lambda.js +4 -3
  350. package/dist/shared/validate-lambda-codec.d.ts +4 -0
  351. package/dist/shared/validate-lambda-codec.js +30 -0
  352. package/dist/shared/validate-memory-size.d.ts +0 -0
  353. package/dist/shared/validate-memory-size.js +0 -0
  354. package/dist/shared/validate-outname.d.ts +3 -2
  355. package/dist/shared/validate-outname.js +13 -3
  356. package/dist/shared/validate-presign-expiration.d.ts +0 -2
  357. package/dist/shared/validate-presign-expiration.js +7 -7
  358. package/dist/shared/validate-privacy.d.ts +1 -1
  359. package/dist/shared/validate-privacy.js +2 -2
  360. package/dist/shared/validate-retention-period.d.ts +0 -0
  361. package/dist/shared/validate-retention-period.js +0 -0
  362. package/dist/shared/validate-retries.d.ts +0 -0
  363. package/dist/shared/validate-retries.js +0 -0
  364. package/dist/shared/validate-serveurl.d.ts +0 -0
  365. package/dist/shared/validate-serveurl.js +0 -0
  366. package/dist/shared/validate-site-name.d.ts +0 -0
  367. package/dist/shared/validate-site-name.js +0 -0
  368. package/dist/shared/validate-timeout.d.ts +0 -0
  369. package/dist/shared/validate-timeout.js +0 -0
  370. package/package.json +59 -34
  371. package/remotionlambda-arm64.zip +0 -0
  372. package/remotionlambda-x64.zip +0 -0
  373. package/remotionlambda.zip +0 -0
  374. package/.prettierrc.js +0 -14
  375. package/client.d.ts +0 -1
  376. package/client.js +0 -1
  377. package/dist/api/enable-s3-website.d.ts +0 -5
  378. package/dist/api/enable-s3-website.js +0 -16
  379. package/dist/cli/helpers/format-bytes.d.ts +0 -6
  380. package/dist/cli/helpers/format-bytes.js +0 -103
  381. package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +0 -8
  382. package/dist/cli/helpers/get-cloudwatch-stream-url.js +0 -7
  383. package/dist/functions/chunk-optimization/can-use-optimization.d.ts +0 -6
  384. package/dist/functions/chunk-optimization/can-use-optimization.js +0 -23
  385. package/dist/functions/chunk-optimization/collect-data.d.ts +0 -9
  386. package/dist/functions/chunk-optimization/collect-data.js +0 -27
  387. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +0 -3
  388. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.js +0 -11
  389. package/dist/functions/chunk-optimization/get-profile-duration.d.ts +0 -3
  390. package/dist/functions/chunk-optimization/get-profile-duration.js +0 -18
  391. package/dist/functions/chunk-optimization/is-valid-profile.d.ts +0 -2
  392. package/dist/functions/chunk-optimization/is-valid-profile.js +0 -12
  393. package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +0 -2
  394. package/dist/functions/chunk-optimization/optimize-invocation-order.js +0 -19
  395. package/dist/functions/chunk-optimization/optimize-profile.d.ts +0 -9
  396. package/dist/functions/chunk-optimization/optimize-profile.js +0 -74
  397. package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +0 -17
  398. package/dist/functions/chunk-optimization/s3-optimization-file.js +0 -45
  399. package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +0 -7
  400. package/dist/functions/chunk-optimization/simulate-frame-ranges.js +0 -47
  401. package/dist/functions/chunk-optimization/sort-by-duration.d.ts +0 -2
  402. package/dist/functions/chunk-optimization/sort-by-duration.js +0 -25
  403. package/dist/shared/chunk.d.ts +0 -1
  404. package/dist/shared/chunk.js +0 -11
  405. package/tsconfig.json +0 -16
@@ -1,20 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.progressHandler = void 0;
4
+ const version_1 = require("remotion/version");
4
5
  const constants_1 = require("../shared/constants");
5
6
  const get_current_region_1 = require("./helpers/get-current-region");
6
7
  const get_progress_1 = require("./helpers/get-progress");
7
8
  const progressHandler = (lambdaParams, options) => {
9
+ var _a;
8
10
  if (lambdaParams.type !== constants_1.LambdaRoutines.status) {
9
11
  throw new TypeError('Expected status type');
10
12
  }
13
+ if (lambdaParams.version !== version_1.VERSION) {
14
+ if (!lambdaParams.version) {
15
+ throw new Error(`Version mismatch: When calling getRenderProgress(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call getRenderProgress(). See: https://www.remotion.dev/docs/lambda/upgrading`);
16
+ }
17
+ throw new Error(`Version mismatch: When calling getRenderProgress(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${lambdaParams.version}. Deploy a new function and use it to call getRenderProgress(). See: https://www.remotion.dev/docs/lambda/upgrading`);
18
+ }
11
19
  return (0, get_progress_1.getProgress)({
12
20
  bucketName: lambdaParams.bucketName,
13
21
  renderId: lambdaParams.renderId,
14
22
  expectedBucketOwner: options.expectedBucketOwner,
15
23
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
16
24
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
17
- timeoutInMiliseconds: options.timeoutInMiliseconds,
25
+ timeoutInMilliseconds: options.timeoutInMilliseconds,
26
+ customCredentials: (_a = lambdaParams.s3OutputProvider) !== null && _a !== void 0 ? _a : null,
18
27
  });
19
28
  };
20
29
  exports.progressHandler = progressHandler;
@@ -1,4 +1,4 @@
1
- import { LambdaPayload } from '../shared/constants';
1
+ import type { LambdaPayload } from '../shared/constants';
2
2
  declare type Options = {
3
3
  expectedBucketOwner: string;
4
4
  isWarm: boolean;
@@ -8,23 +8,31 @@ const client_lambda_1 = require("@aws-sdk/client-lambda");
8
8
  const renderer_1 = require("@remotion/renderer");
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const path_1 = __importDefault(require("path"));
11
- const remotion_1 = require("remotion");
11
+ const version_1 = require("remotion/version");
12
12
  const aws_clients_1 = require("../shared/aws-clients");
13
+ const chunk_progress_1 = require("../shared/chunk-progress");
13
14
  const constants_1 = require("../shared/constants");
14
- const clean_tmpdir_1 = require("./helpers/clean-tmpdir");
15
+ const deserialize_input_props_1 = require("../shared/deserialize-input-props");
15
16
  const get_browser_instance_1 = require("./helpers/get-browser-instance");
17
+ const get_chromium_executable_path_1 = require("./helpers/get-chromium-executable-path");
16
18
  const get_current_region_1 = require("./helpers/get-current-region");
17
- const get_files_in_folder_1 = require("./helpers/get-files-in-folder");
18
- const get_folder_size_1 = require("./helpers/get-folder-size");
19
19
  const io_1 = require("./helpers/io");
20
20
  const write_lambda_error_1 = require("./helpers/write-lambda-error");
21
21
  const renderHandler = async (params, options, logs) => {
22
- var _a, _b;
22
+ var _a;
23
23
  if (params.type !== constants_1.LambdaRoutines.renderer) {
24
24
  throw new Error('Params must be renderer');
25
25
  }
26
- remotion_1.Internals.Logging.setLogLevel(params.logLevel);
27
- const browserInstance = await (0, get_browser_instance_1.getBrowserInstance)(remotion_1.Internals.Logging.isEqualOrBelowLogLevel(params.logLevel, 'verbose'), (_a = params.chromiumOptions) !== null && _a !== void 0 ? _a : {});
26
+ if (params.launchFunctionConfig.version !== version_1.VERSION) {
27
+ throw new Error(`The version of the function that was specified as "rendererFunctionName" is ${version_1.VERSION} but the version of the function that invoked the render is ${params.launchFunctionConfig.version}. Please make sure that the version of the function that is specified as "rendererFunctionName" is the same as the version of the function that is invoked.`);
28
+ }
29
+ const inputPropsPromise = (0, deserialize_input_props_1.deserializeInputProps)({
30
+ bucketName: params.bucketName,
31
+ expectedBucketOwner: options.expectedBucketOwner,
32
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
33
+ serialized: params.inputProps,
34
+ });
35
+ const browserInstance = await (0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'), (_a = params.chromiumOptions) !== null && _a !== void 0 ? _a : {});
28
36
  const outputPath = renderer_1.RenderInternals.tmpDir('remotion-render-');
29
37
  if (typeof params.chunk !== 'number') {
30
38
  throw new Error('must pass chunk');
@@ -40,79 +48,126 @@ const renderHandler = async (params, options, logs) => {
40
48
  startDate: start,
41
49
  };
42
50
  const outdir = renderer_1.RenderInternals.tmpDir(constants_1.RENDERER_PATH_TOKEN);
43
- const outputLocation = path_1.default.join(outdir, `localchunk-${String(params.chunk).padStart(8, '0')}.${renderer_1.RenderInternals.getFileExtensionFromCodec(params.codec, 'chunk')}`);
44
- await (0, renderer_1.renderMedia)({
45
- composition: {
46
- id: params.composition,
47
- durationInFrames: params.durationInFrames,
48
- fps: params.fps,
49
- height: params.height,
50
- width: params.width,
51
- },
52
- imageFormat: params.imageFormat,
53
- inputProps: params.inputProps,
54
- frameRange: params.frameRange,
55
- onProgress: ({ renderedFrames, encodedFrames, stitchStage }) => {
56
- if (renderedFrames % 10 === 0 &&
57
- remotion_1.Internals.Logging.isEqualOrBelowLogLevel(params.logLevel, 'verbose')) {
58
- console.log(`Rendered ${renderedFrames} frames, encoded ${encodedFrames} frames, stage = ${stitchStage}`);
59
- }
60
- const duration = renderer_1.RenderInternals.getDurationFromFrameRange(params.frameRange, params.durationInFrames);
61
- if (renderedFrames === duration) {
62
- console.log('Rendered all frames!');
63
- }
64
- chunkTimingData.timings[renderedFrames] = Date.now() - start;
65
- },
66
- parallelism: 1,
67
- onStart: () => {
68
- (0, io_1.lambdaWriteFile)({
69
- privacy: 'private',
70
- bucketName: params.bucketName,
71
- body: JSON.stringify({
72
- filesCleaned: clean_tmpdir_1.deletedFilesSize,
73
- filesInTmp: fs_1.default.readdirSync('/tmp'),
74
- isWarm: options.isWarm,
75
- deletedFiles: clean_tmpdir_1.deletedFiles,
76
- tmpSize: (0, get_folder_size_1.getFolderSizeRecursively)('/tmp'),
77
- tmpDirFiles: (0, get_files_in_folder_1.getFolderFiles)('/tmp'),
78
- }),
79
- key: (0, constants_1.lambdaInitializedKey)({
80
- renderId: params.renderId,
81
- chunk: params.chunk,
82
- attempt: params.attempt,
83
- }),
84
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
85
- expectedBucketOwner: options.expectedBucketOwner,
86
- });
87
- },
88
- puppeteerInstance: browserInstance,
89
- serveUrl: params.serveUrl,
90
- quality: params.quality,
91
- envVariables: params.envVariables,
92
- dumpBrowserLogs: remotion_1.Internals.Logging.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
93
- onBrowserLog: (log) => {
94
- logs.push(log);
95
- },
96
- outputLocation,
51
+ const chunkCodec = params.codec === 'gif' || params.codec === 'h264'
52
+ ? 'h264-mkv'
53
+ : params.codec;
54
+ const outputLocation = path_1.default.join(outdir, `localchunk-${String(params.chunk).padStart(8, '0')}.${renderer_1.RenderInternals.getFileExtensionFromCodec(chunkCodec, renderer_1.RenderInternals.getDefaultAudioCodec({
97
55
  codec: params.codec,
98
- crf: (_b = params.crf) !== null && _b !== void 0 ? _b : undefined,
99
- ffmpegExecutable: process.env.NODE_ENV === 'test' ? null : '/opt/bin/ffmpeg',
100
- pixelFormat: params.pixelFormat,
101
- proResProfile: params.proResProfile,
102
- onDownload: (src) => {
103
- console.log('Downloading', src);
104
- return ({ percent }) => {
105
- if (remotion_1.Internals.Logging.isEqualOrBelowLogLevel(params.logLevel, 'verbose')) {
106
- console.log(`Download progress of ${src}: ${percent}`);
56
+ preferLossless: true,
57
+ }))}`);
58
+ const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
59
+ const downloads = {};
60
+ const inputProps = await inputPropsPromise;
61
+ await new Promise((resolve, reject) => {
62
+ var _a, _b;
63
+ (0, renderer_1.renderMedia)({
64
+ composition: {
65
+ id: params.composition,
66
+ durationInFrames: params.durationInFrames,
67
+ fps: params.fps,
68
+ height: params.height,
69
+ width: params.width,
70
+ },
71
+ imageFormat: params.imageFormat,
72
+ inputProps,
73
+ frameRange: params.frameRange,
74
+ onProgress: ({ renderedFrames, encodedFrames, stitchStage }) => {
75
+ if (renderedFrames % 5 === 0 &&
76
+ renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose')) {
77
+ console.log(`Rendered ${renderedFrames} frames, encoded ${encodedFrames} frames, stage = ${stitchStage}`);
78
+ (0, chunk_progress_1.writeLambdaInitializedFile)({
79
+ attempt: params.attempt,
80
+ bucketName: params.bucketName,
81
+ chunk: params.chunk,
82
+ expectedBucketOwner: options.expectedBucketOwner,
83
+ framesRendered: renderedFrames,
84
+ renderId: params.renderId,
85
+ }).catch((err) => reject(err));
107
86
  }
108
- };
109
- },
110
- overwrite: false,
111
- chromiumOptions: params.chromiumOptions,
112
- scale: params.scale,
87
+ const allFrames = renderer_1.RenderInternals.getFramesToRender(params.frameRange, params.everyNthFrame);
88
+ if (renderedFrames === allFrames.length) {
89
+ console.log('Rendered all frames!');
90
+ }
91
+ chunkTimingData.timings[renderedFrames] = Date.now() - start;
92
+ },
93
+ concurrency: params.concurrencyPerLambda,
94
+ onStart: () => {
95
+ (0, chunk_progress_1.writeLambdaInitializedFile)({
96
+ attempt: params.attempt,
97
+ bucketName: params.bucketName,
98
+ chunk: params.chunk,
99
+ expectedBucketOwner: options.expectedBucketOwner,
100
+ framesRendered: 0,
101
+ renderId: params.renderId,
102
+ }).catch((err) => reject(err));
103
+ },
104
+ puppeteerInstance: browserInstance,
105
+ serveUrl: params.serveUrl,
106
+ quality: params.quality,
107
+ envVariables: params.envVariables,
108
+ dumpBrowserLogs: (_a = params.dumpBrowserLogs) !== null && _a !== void 0 ? _a : renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
109
+ verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
110
+ onBrowserLog: (log) => {
111
+ logs.push(log);
112
+ },
113
+ outputLocation,
114
+ codec: chunkCodec,
115
+ crf: (_b = params.crf) !== null && _b !== void 0 ? _b : undefined,
116
+ pixelFormat: params.pixelFormat,
117
+ proResProfile: params.proResProfile,
118
+ onDownload: (src) => {
119
+ console.log('Downloading', src);
120
+ downloads[src] = 0;
121
+ return ({ percent, downloaded }) => {
122
+ if (percent === null) {
123
+ console.log(`Download progress (${src}): ${downloaded} bytes. Don't know final size of download, no Content-Length header.`);
124
+ return;
125
+ }
126
+ if (
127
+ // Only report every 10% change
128
+ downloads[src] > percent - 0.1 &&
129
+ percent !== 1) {
130
+ return;
131
+ }
132
+ downloads[src] = percent;
133
+ console.log(`Download progress (${src}): ${downloaded} bytes, ${(percent * 100).toFixed(1)}%`);
134
+ if (percent === 1) {
135
+ console.log(`Download complete: ${src}`);
136
+ }
137
+ };
138
+ },
139
+ overwrite: false,
140
+ chromiumOptions: params.chromiumOptions,
141
+ scale: params.scale,
142
+ timeoutInMilliseconds: params.timeoutInMilliseconds,
143
+ port: null,
144
+ everyNthFrame: params.everyNthFrame,
145
+ numberOfGifLoops: null,
146
+ internal: {
147
+ downloadMap,
148
+ },
149
+ muted: params.muted,
150
+ enforceAudioTrack: true,
151
+ audioBitrate: params.audioBitrate,
152
+ videoBitrate: params.videoBitrate,
153
+ onSlowestFrames: (slowestFrames) => {
154
+ console.log();
155
+ console.log(`Slowest frames:`);
156
+ slowestFrames.forEach(({ frame, time }) => {
157
+ console.log(`Frame ${frame} (${time.toFixed(3)}ms)`);
158
+ });
159
+ },
160
+ // Lossless flag takes priority over audio codec
161
+ // https://github.com/remotion-dev/remotion/issues/1647
162
+ // Special flag only in Lambda renderer which improves the audio quality
163
+ audioCodec: null,
164
+ preferLossless: true,
165
+ browserExecutable: (0, get_chromium_executable_path_1.executablePath)(),
166
+ })
167
+ .then(() => resolve())
168
+ .catch((err) => reject(err));
113
169
  });
114
170
  const endRendered = Date.now();
115
- console.log('Adding silent audio, chunk', params.chunk);
116
171
  const condensedTimingData = {
117
172
  ...chunkTimingData,
118
173
  timings: Object.values(chunkTimingData.timings),
@@ -127,6 +182,8 @@ const renderHandler = async (params, options, logs) => {
127
182
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
128
183
  privacy: params.privacy,
129
184
  expectedBucketOwner: options.expectedBucketOwner,
185
+ downloadBehavior: null,
186
+ customCredentials: null,
130
187
  });
131
188
  await Promise.all([
132
189
  fs_1.default.promises.rm(outputLocation, { recursive: true }),
@@ -134,16 +191,19 @@ const renderHandler = async (params, options, logs) => {
134
191
  (0, io_1.lambdaWriteFile)({
135
192
  bucketName: params.bucketName,
136
193
  body: JSON.stringify(condensedTimingData, null, 2),
137
- key: `${(0, constants_1.lambdaTimingsKey)({
194
+ key: (0, constants_1.lambdaTimingsKey)({
138
195
  renderId: params.renderId,
139
196
  chunk: params.chunk,
140
197
  rendered: endRendered,
141
198
  start,
142
- })}`,
199
+ }),
143
200
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
144
201
  privacy: 'private',
145
202
  expectedBucketOwner: options.expectedBucketOwner,
203
+ downloadBehavior: null,
204
+ customCredentials: null,
146
205
  }),
206
+ renderer_1.RenderInternals.cleanDownloadMap(downloadMap),
147
207
  ]);
148
208
  };
149
209
  const rendererHandler = async (params, options) => {
@@ -155,11 +215,16 @@ const rendererHandler = async (params, options) => {
155
215
  await renderHandler(params, options, logs);
156
216
  }
157
217
  catch (err) {
218
+ if (process.env.NODE_ENV === 'test') {
219
+ console.log({ err });
220
+ throw err;
221
+ }
158
222
  // If this error is encountered, we can just retry as it
159
223
  // is a very rare error to occur
160
224
  const isBrowserError = err.message.includes('FATAL:zygote_communication_linux.cc') ||
161
225
  err.message.includes('error while loading shared libraries: libnss3.so');
162
- const willRetry = isBrowserError || params.retriesLeft > 0;
226
+ const shouldNotRetry = err.name === 'CancelledError';
227
+ const willRetry = (isBrowserError || params.retriesLeft > 0) && !shouldNotRetry;
163
228
  console.log('Error occurred');
164
229
  console.log(err);
165
230
  await (0, write_lambda_error_1.writeLambdaError)({
@@ -1,5 +1,9 @@
1
- import { LambdaPayload } from '../shared/constants';
2
- export declare const startHandler: (params: LambdaPayload) => Promise<{
1
+ import type { LambdaPayload } from '../shared/constants';
2
+ declare type Options = {
3
+ expectedBucketOwner: string;
4
+ };
5
+ export declare const startHandler: (params: LambdaPayload, options: Options) => Promise<{
3
6
  bucketName: string;
4
7
  renderId: string;
5
8
  }>;
9
+ export {};
@@ -2,26 +2,50 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.startHandler = void 0;
4
4
  const client_lambda_1 = require("@aws-sdk/client-lambda");
5
- const remotion_1 = require("remotion");
5
+ const version_1 = require("remotion/version");
6
6
  const get_or_create_bucket_1 = require("../api/get-or-create-bucket");
7
7
  const aws_clients_1 = require("../shared/aws-clients");
8
8
  const constants_1 = require("../shared/constants");
9
+ const convert_to_serve_url_1 = require("../shared/convert-to-serve-url");
9
10
  const random_hash_1 = require("../shared/random-hash");
10
11
  const get_current_region_1 = require("./helpers/get-current-region");
11
- const startHandler = async (params) => {
12
- var _a;
12
+ const io_1 = require("./helpers/io");
13
+ const startHandler = async (params, options) => {
14
+ var _a, _b;
13
15
  if (params.type !== constants_1.LambdaRoutines.start) {
14
16
  throw new TypeError('Expected type start');
15
17
  }
16
- const { bucketName } = await (0, get_or_create_bucket_1.getOrCreateBucket)({
18
+ if (params.version !== version_1.VERSION) {
19
+ if (!params.version) {
20
+ throw new Error(`Version mismatch: When calling renderMediaOnLambda(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call renderMediaOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
21
+ }
22
+ throw new Error(`Version mismatch: When calling renderMediaOnLambda(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${params.version}. Deploy a new function and use it to call renderMediaOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
23
+ }
24
+ const region = (0, get_current_region_1.getCurrentRegionInFunction)();
25
+ const bucketName = (_a = params.bucketName) !== null && _a !== void 0 ? _a : (await (0, get_or_create_bucket_1.getOrCreateBucket)({
17
26
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
27
+ })).bucketName;
28
+ const realServeUrl = (0, convert_to_serve_url_1.convertToServeUrl)({
29
+ urlOrId: params.serveUrl,
30
+ region,
31
+ bucketName,
18
32
  });
19
33
  const renderId = (0, random_hash_1.randomHash)({ randomInTests: true });
34
+ const initialFile = (0, io_1.lambdaWriteFile)({
35
+ bucketName,
36
+ downloadBehavior: null,
37
+ region,
38
+ body: 'Render was initialized',
39
+ expectedBucketOwner: options.expectedBucketOwner,
40
+ key: (0, constants_1.initalizedMetadataKey)(renderId),
41
+ privacy: 'private',
42
+ customCredentials: null,
43
+ });
20
44
  const payload = {
21
45
  type: constants_1.LambdaRoutines.launch,
22
46
  framesPerLambda: params.framesPerLambda,
23
47
  composition: params.composition,
24
- serveUrl: params.serveUrl,
48
+ serveUrl: realServeUrl,
25
49
  inputProps: params.inputProps,
26
50
  bucketName,
27
51
  renderId,
@@ -34,12 +58,26 @@ const startHandler = async (params) => {
34
58
  quality: params.quality,
35
59
  maxRetries: params.maxRetries,
36
60
  privacy: params.privacy,
37
- logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : remotion_1.Internals.Logging.DEFAULT_LOG_LEVEL,
61
+ logLevel: (_b = params.logLevel) !== null && _b !== void 0 ? _b : 'info',
38
62
  frameRange: params.frameRange,
39
63
  outName: params.outName,
40
64
  timeoutInMilliseconds: params.timeoutInMilliseconds,
41
65
  chromiumOptions: params.chromiumOptions,
42
66
  scale: params.scale,
67
+ numberOfGifLoops: params.numberOfGifLoops,
68
+ everyNthFrame: params.everyNthFrame,
69
+ concurrencyPerLambda: params.concurrencyPerLambda,
70
+ downloadBehavior: params.downloadBehavior,
71
+ muted: params.muted,
72
+ overwrite: params.overwrite,
73
+ webhook: params.webhook,
74
+ audioBitrate: params.audioBitrate,
75
+ videoBitrate: params.videoBitrate,
76
+ forceHeight: params.forceHeight,
77
+ forceWidth: params.forceWidth,
78
+ rendererFunctionName: params.rendererFunctionName,
79
+ audioCodec: params.audioCodec,
80
+ dumpBrowserLogs: params.dumpBrowserLogs,
43
81
  };
44
82
  await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
45
83
  FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
@@ -47,6 +85,7 @@ const startHandler = async (params) => {
47
85
  Payload: JSON.stringify(payload),
48
86
  InvocationType: 'Event',
49
87
  }));
88
+ await initialFile;
50
89
  return {
51
90
  bucketName,
52
91
  renderId,
@@ -1,4 +1,4 @@
1
- import { LambdaPayload } from '../shared/constants';
1
+ import type { LambdaPayload } from '../shared/constants';
2
2
  declare type Options = {
3
3
  expectedBucketOwner: string;
4
4
  };
@@ -8,18 +8,23 @@ const client_lambda_1 = require("@aws-sdk/client-lambda");
8
8
  const renderer_1 = require("@remotion/renderer");
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const path_1 = __importDefault(require("path"));
11
- const remotion_1 = require("remotion");
11
+ const version_1 = require("remotion/version");
12
12
  const estimate_price_1 = require("../api/estimate-price");
13
13
  const get_or_create_bucket_1 = require("../api/get-or-create-bucket");
14
14
  const aws_clients_1 = require("../shared/aws-clients");
15
+ const cleanup_serialized_input_props_1 = require("../shared/cleanup-serialized-input-props");
15
16
  const constants_1 = require("../shared/constants");
17
+ const convert_to_serve_url_1 = require("../shared/convert-to-serve-url");
18
+ const deserialize_input_props_1 = require("../shared/deserialize-input-props");
16
19
  const make_s3_url_1 = require("../shared/make-s3-url");
17
20
  const random_hash_1 = require("../shared/random-hash");
21
+ const validate_download_behavior_1 = require("../shared/validate-download-behavior");
18
22
  const validate_outname_1 = require("../shared/validate-outname");
19
23
  const validate_privacy_1 = require("../shared/validate-privacy");
20
24
  const expected_out_name_1 = require("./helpers/expected-out-name");
21
25
  const format_costs_info_1 = require("./helpers/format-costs-info");
22
26
  const get_browser_instance_1 = require("./helpers/get-browser-instance");
27
+ const get_chromium_executable_path_1 = require("./helpers/get-chromium-executable-path");
23
28
  const get_current_architecture_1 = require("./helpers/get-current-architecture");
24
29
  const get_current_region_1 = require("./helpers/get-current-region");
25
30
  const get_output_url_from_metadata_1 = require("./helpers/get-output-url-from-metadata");
@@ -27,26 +32,55 @@ const io_1 = require("./helpers/io");
27
32
  const validate_composition_1 = require("./helpers/validate-composition");
28
33
  const write_lambda_error_1 = require("./helpers/write-lambda-error");
29
34
  const innerStillHandler = async (lambdaParams, renderId, options) => {
30
- var _a, _b, _c;
35
+ var _a, _b, _c, _d;
31
36
  if (lambdaParams.type !== constants_1.LambdaRoutines.still) {
32
37
  throw new TypeError('Expected still type');
33
38
  }
39
+ if (lambdaParams.version !== version_1.VERSION) {
40
+ if (!lambdaParams.version) {
41
+ throw new Error(`Version mismatch: When calling renderStillOnLambda(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call renderStillOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
42
+ }
43
+ throw new Error(`Version mismatch: When calling renderStillOnLambda(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${lambdaParams.version}. Deploy a new function and use it to call renderStillOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
44
+ }
45
+ (0, validate_download_behavior_1.validateDownloadBehavior)(lambdaParams.downloadBehavior);
34
46
  (0, validate_privacy_1.validatePrivacy)(lambdaParams.privacy);
35
- (0, validate_outname_1.validateOutname)(lambdaParams.outName);
47
+ (0, validate_outname_1.validateOutname)(lambdaParams.outName, null, null);
36
48
  const start = Date.now();
37
- const [{ bucketName }, browserInstance] = await Promise.all([
38
- (0, get_or_create_bucket_1.getOrCreateBucket)({
49
+ const [bucketName, browserInstance] = await Promise.all([
50
+ (_a = lambdaParams.bucketName) !== null && _a !== void 0 ? _a : (0, get_or_create_bucket_1.getOrCreateBucket)({
39
51
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
40
- }),
41
- (0, get_browser_instance_1.getBrowserInstance)(remotion_1.Internals.Logging.isEqualOrBelowLogLevel((_a = lambdaParams.logLevel) !== null && _a !== void 0 ? _a : remotion_1.Internals.Logging.DEFAULT_LOG_LEVEL, 'verbose'), (_b = lambdaParams.chromiumOptions) !== null && _b !== void 0 ? _b : {}),
52
+ }).then((b) => b.bucketName),
53
+ (0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(lambdaParams.logLevel, 'verbose'), (_b = lambdaParams.chromiumOptions) !== null && _b !== void 0 ? _b : {}),
42
54
  ]);
43
55
  const outputDir = renderer_1.RenderInternals.tmpDir('remotion-render-');
44
56
  const outputPath = path_1.default.join(outputDir, 'output');
57
+ const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
58
+ const region = (0, get_current_region_1.getCurrentRegionInFunction)();
59
+ const inputProps = await (0, deserialize_input_props_1.deserializeInputProps)({
60
+ bucketName,
61
+ expectedBucketOwner: options.expectedBucketOwner,
62
+ region,
63
+ serialized: lambdaParams.inputProps,
64
+ });
65
+ const serveUrl = (0, convert_to_serve_url_1.convertToServeUrl)({
66
+ urlOrId: lambdaParams.serveUrl,
67
+ region,
68
+ bucketName,
69
+ });
45
70
  const composition = await (0, validate_composition_1.validateComposition)({
46
- serveUrl: lambdaParams.serveUrl,
71
+ serveUrl,
47
72
  browserInstance,
48
73
  composition: lambdaParams.composition,
49
- inputProps: lambdaParams.inputProps,
74
+ inputProps,
75
+ envVariables: lambdaParams.envVariables,
76
+ ffmpegExecutable: null,
77
+ ffprobeExecutable: null,
78
+ chromiumOptions: lambdaParams.chromiumOptions,
79
+ timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
80
+ port: null,
81
+ downloadMap,
82
+ forceHeight: lambdaParams.forceHeight,
83
+ forceWidth: lambdaParams.forceWidth,
50
84
  });
51
85
  const renderMetadata = {
52
86
  startedDate: Date.now(),
@@ -55,18 +89,21 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
55
89
  compositionId: lambdaParams.composition,
56
90
  estimatedTotalLambdaInvokations: 1,
57
91
  estimatedRenderLambdaInvokations: 1,
58
- siteId: (0, make_s3_url_1.getServeUrlHash)(lambdaParams.serveUrl),
92
+ siteId: (0, make_s3_url_1.getServeUrlHash)(serveUrl),
59
93
  totalChunks: 1,
60
94
  type: 'still',
61
- usesOptimizationProfile: false,
62
95
  imageFormat: lambdaParams.imageFormat,
63
96
  inputProps: lambdaParams.inputProps,
64
- lambdaVersion: constants_1.CURRENT_VERSION,
97
+ lambdaVersion: version_1.VERSION,
65
98
  framesPerLambda: 1,
66
99
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
67
100
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
68
101
  renderId,
69
102
  outName: (_c = lambdaParams.outName) !== null && _c !== void 0 ? _c : undefined,
103
+ privacy: lambdaParams.privacy,
104
+ everyNthFrame: 1,
105
+ frameRange: [lambdaParams.frame, lambdaParams.frame],
106
+ audioCodec: null,
70
107
  };
71
108
  await (0, io_1.lambdaWriteFile)({
72
109
  bucketName,
@@ -75,33 +112,50 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
75
112
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
76
113
  privacy: 'private',
77
114
  expectedBucketOwner: options.expectedBucketOwner,
115
+ downloadBehavior: null,
116
+ customCredentials: null,
78
117
  });
79
118
  await (0, renderer_1.renderStill)({
80
119
  composition,
81
120
  output: outputPath,
82
- serveUrl: lambdaParams.serveUrl,
83
- dumpBrowserLogs: false,
121
+ serveUrl,
122
+ dumpBrowserLogs: (_d = lambdaParams.dumpBrowserLogs) !== null && _d !== void 0 ? _d : renderer_1.RenderInternals.isEqualOrBelowLogLevel(lambdaParams.logLevel, 'verbose'),
84
123
  envVariables: lambdaParams.envVariables,
85
- frame: lambdaParams.frame,
124
+ frame: renderer_1.RenderInternals.convertToPositiveFrameIndex({
125
+ frame: lambdaParams.frame,
126
+ durationInFrames: composition.durationInFrames,
127
+ }),
86
128
  imageFormat: lambdaParams.imageFormat,
87
- inputProps: lambdaParams.inputProps,
129
+ inputProps,
88
130
  overwrite: false,
89
131
  puppeteerInstance: browserInstance,
90
132
  quality: lambdaParams.quality,
91
133
  chromiumOptions: lambdaParams.chromiumOptions,
92
134
  scale: lambdaParams.scale,
135
+ timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
136
+ downloadMap,
137
+ browserExecutable: (0, get_chromium_executable_path_1.executablePath)(),
93
138
  });
94
- const { key: outName, renderBucketName } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, bucketName);
139
+ const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, bucketName, (0, expected_out_name_1.getCredentialsFromOutName)(lambdaParams.outName));
95
140
  const { size } = await fs_1.default.promises.stat(outputPath);
96
141
  await (0, io_1.lambdaWriteFile)({
97
142
  bucketName: renderBucketName,
98
- key: outName,
143
+ key,
99
144
  privacy: lambdaParams.privacy,
100
145
  body: fs_1.default.createReadStream(outputPath),
101
146
  expectedBucketOwner: options.expectedBucketOwner,
102
147
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
148
+ downloadBehavior: lambdaParams.downloadBehavior,
149
+ customCredentials,
103
150
  });
104
- await fs_1.default.promises.rm(outputPath, { recursive: true });
151
+ await Promise.all([
152
+ fs_1.default.promises.rm(outputPath, { recursive: true }),
153
+ (0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
154
+ bucketName,
155
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
156
+ serialized: lambdaParams.inputProps,
157
+ }),
158
+ ]);
105
159
  const estimatedPrice = (0, estimate_price_1.estimatePrice)({
106
160
  durationInMiliseconds: Date.now() - start + 100,
107
161
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
@@ -112,8 +166,9 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
112
166
  // overestimate the price, but will only have a miniscule effect (~0.2%)
113
167
  diskSizeInMb: constants_1.MAX_EPHEMERAL_STORAGE_IN_MB,
114
168
  });
169
+ renderer_1.RenderInternals.cleanDownloadMap(downloadMap);
115
170
  return {
116
- output: (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, bucketName),
171
+ output: (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, bucketName, customCredentials),
117
172
  size,
118
173
  bucketName,
119
174
  estimatedPrice: (0, format_costs_info_1.formatCostsInfo)(estimatedPrice),
@@ -121,6 +176,7 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
121
176
  };
122
177
  };
123
178
  const stillHandler = async (params, options) => {
179
+ var _a;
124
180
  if (params.type !== constants_1.LambdaRoutines.still) {
125
181
  throw new Error('Params must be renderer');
126
182
  }
@@ -145,10 +201,12 @@ const stillHandler = async (params, options) => {
145
201
  // @ts-expect-error
146
202
  Payload: JSON.stringify(retryPayload),
147
203
  }));
148
- const { bucketName } = await (0, get_or_create_bucket_1.getOrCreateBucket)({
204
+ const bucketName = (_a = params.bucketName) !== null && _a !== void 0 ? _a : (await (0, get_or_create_bucket_1.getOrCreateBucket)({
149
205
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
150
- });
151
- (0, write_lambda_error_1.writeLambdaError)({
206
+ })).bucketName;
207
+ // `await` elided on purpose here; using `void` to mark it as intentional
208
+ // eslint-disable-next-line no-void
209
+ void (0, write_lambda_error_1.writeLambdaError)({
152
210
  bucketName,
153
211
  errorInfo: {
154
212
  chunk: null,