@remotion/lambda 4.0.0-webhook.27 → 4.0.1

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