@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
@@ -1,15 +1,37 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
26
  exports.launchHandler = void 0;
7
27
  const client_lambda_1 = require("@aws-sdk/client-lambda");
8
28
  const renderer_1 = require("@remotion/renderer");
9
- const fs_1 = __importDefault(require("fs"));
29
+ const node_fs_1 = __importStar(require("node:fs"));
30
+ const node_path_1 = require("node:path");
10
31
  const remotion_1 = require("remotion");
11
32
  const version_1 = require("remotion/version");
12
33
  const aws_clients_1 = require("../shared/aws-clients");
34
+ const cleanup_serialized_input_props_1 = require("../shared/cleanup-serialized-input-props");
13
35
  const constants_1 = require("../shared/constants");
14
36
  const docs_url_1 = require("../shared/docs-url");
15
37
  const invoke_webhook_1 = require("../shared/invoke-webhook");
@@ -17,14 +39,7 @@ const make_s3_url_1 = require("../shared/make-s3-url");
17
39
  const validate_frames_per_lambda_1 = require("../shared/validate-frames-per-lambda");
18
40
  const validate_outname_1 = require("../shared/validate-outname");
19
41
  const validate_privacy_1 = require("../shared/validate-privacy");
20
- const collect_data_1 = require("./chunk-optimization/collect-data");
21
- const get_frame_ranges_from_profile_1 = require("./chunk-optimization/get-frame-ranges-from-profile");
22
- const get_profile_duration_1 = require("./chunk-optimization/get-profile-duration");
23
- const is_valid_profile_1 = require("./chunk-optimization/is-valid-profile");
24
- const optimize_invocation_order_1 = require("./chunk-optimization/optimize-invocation-order");
25
- const optimize_profile_1 = require("./chunk-optimization/optimize-profile");
26
42
  const plan_frame_ranges_1 = require("./chunk-optimization/plan-frame-ranges");
27
- const s3_optimization_file_1 = require("./chunk-optimization/s3-optimization-file");
28
43
  const best_frames_per_lambda_param_1 = require("./helpers/best-frames-per-lambda-param");
29
44
  const concat_videos_1 = require("./helpers/concat-videos");
30
45
  const create_post_render_data_1 = require("./helpers/create-post-render-data");
@@ -34,7 +49,6 @@ const find_output_file_in_bucket_1 = require("./helpers/find-output-file-in-buck
34
49
  const get_browser_instance_1 = require("./helpers/get-browser-instance");
35
50
  const get_current_region_1 = require("./helpers/get-current-region");
36
51
  const get_files_to_delete_1 = require("./helpers/get-files-to-delete");
37
- const get_lambdas_invoked_stats_1 = require("./helpers/get-lambdas-invoked-stats");
38
52
  const get_output_url_from_metadata_1 = require("./helpers/get-output-url-from-metadata");
39
53
  const inspect_errors_1 = require("./helpers/inspect-errors");
40
54
  const io_1 = require("./helpers/io");
@@ -42,10 +56,11 @@ const timer_1 = require("./helpers/timer");
42
56
  const validate_composition_1 = require("./helpers/validate-composition");
43
57
  const write_lambda_error_1 = require("./helpers/write-lambda-error");
44
58
  const write_post_render_data_1 = require("./helpers/write-post-render-data");
45
- const callFunctionWithRetry = async (payload, retries = 0) => {
59
+ const serialize_props_1 = require("../shared/serialize-props");
60
+ const callFunctionWithRetry = async ({ payload, retries, functionName, }) => {
46
61
  try {
47
62
  await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
48
- FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
63
+ FunctionName: functionName,
49
64
  // @ts-expect-error
50
65
  Payload: JSON.stringify(payload),
51
66
  InvocationType: 'Event',
@@ -59,17 +74,25 @@ const callFunctionWithRetry = async (payload, retries = 0) => {
59
74
  await new Promise((resolve) => {
60
75
  setTimeout(resolve, 1000);
61
76
  });
62
- return callFunctionWithRetry(payload, retries + 1);
77
+ return callFunctionWithRetry({
78
+ payload,
79
+ retries: retries + 1,
80
+ functionName,
81
+ });
63
82
  }
83
+ throw err;
64
84
  }
65
85
  };
66
86
  const innerLaunchHandler = async (params, options) => {
67
- var _a, _b, _c, _d;
87
+ var _a, _b, _c, _d, _e, _f;
68
88
  if (params.type !== constants_1.LambdaRoutines.launch) {
69
89
  throw new Error('Expected launch type');
70
90
  }
91
+ const functionName = (_a = params.rendererFunctionName) !== null && _a !== void 0 ? _a : process.env.AWS_LAMBDA_FUNCTION_NAME;
71
92
  const startedDate = Date.now();
72
93
  let webhookInvoked = false;
94
+ console.log(`Function has ${Math.max(options.getRemainingTimeInMillis() - 1000, 1000)} before it times out`);
95
+ const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose');
73
96
  const webhookDueToTimeout = setTimeout(async () => {
74
97
  if (params.webhook && !webhookInvoked) {
75
98
  try {
@@ -111,61 +134,82 @@ const innerLaunchHandler = async (params, options) => {
111
134
  console.log(err);
112
135
  }
113
136
  }
114
- }, Math.max(params.timeoutInMilliseconds - 1000, 1000));
115
- const [browserInstance, optimization] = await Promise.all([
116
- (0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'), params.chromiumOptions),
117
- (0, s3_optimization_file_1.getOptimization)({
118
- bucketName: params.bucketName,
119
- siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
120
- compositionId: params.composition,
121
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
122
- expectedBucketOwner: options.expectedBucketOwner,
123
- }),
124
- ]);
125
- const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
137
+ }, Math.max(options.getRemainingTimeInMillis() - 1000, 1000));
138
+ const browserInstance = await (0, get_browser_instance_1.getBrowserInstance)(params.logLevel, false, params.chromiumOptions);
139
+ const inputPropsPromise = (0, serialize_props_1.deserializeInputProps)({
140
+ bucketName: params.bucketName,
141
+ expectedBucketOwner: options.expectedBucketOwner,
142
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
143
+ serialized: params.inputProps,
144
+ propsType: 'input-props',
145
+ });
146
+ const inputProps = await inputPropsPromise;
147
+ renderer_1.RenderInternals.Log.info('Validating composition, input props:', inputProps);
126
148
  const comp = await (0, validate_composition_1.validateComposition)({
127
149
  serveUrl: params.serveUrl,
128
150
  composition: params.composition,
129
151
  browserInstance,
130
- inputProps: params.inputProps,
131
- envVariables: params.envVariables,
132
- ffmpegExecutable: null,
133
- ffprobeExecutable: null,
152
+ inputProps,
153
+ envVariables: (_b = params.envVariables) !== null && _b !== void 0 ? _b : {},
134
154
  timeoutInMilliseconds: params.timeoutInMilliseconds,
135
155
  chromiumOptions: params.chromiumOptions,
136
156
  port: null,
137
- downloadMap,
157
+ forceHeight: params.forceHeight,
158
+ forceWidth: params.forceWidth,
159
+ logLevel: params.logLevel,
160
+ server: undefined,
161
+ });
162
+ renderer_1.RenderInternals.Log.info('Composition validated, resolved props', comp.props);
163
+ remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, {
164
+ component: 'passed to a Lambda render',
165
+ allowFloats: false,
138
166
  });
139
- remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, 'passed to a Lambda render');
140
167
  remotion_1.Internals.validateFps(comp.fps, 'passed to a Lambda render', false);
141
168
  remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to a Lambda render');
142
169
  remotion_1.Internals.validateDimension(comp.width, 'width', 'passed to a Lambda render');
170
+ renderer_1.RenderInternals.validateBitrate(params.audioBitrate, 'audioBitrate');
171
+ renderer_1.RenderInternals.validateBitrate(params.videoBitrate, 'videoBitrate');
143
172
  renderer_1.RenderInternals.validateConcurrency(params.concurrencyPerLambda, 'concurrencyPerLambda');
144
173
  const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(comp.durationInFrames, params.frameRange);
145
174
  const frameCount = renderer_1.RenderInternals.getFramesToRender(realFrameRange, params.everyNthFrame);
146
- const framesPerLambda = (_a = params.framesPerLambda) !== null && _a !== void 0 ? _a : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount.length);
175
+ const framesPerLambda = (_c = params.framesPerLambda) !== null && _c !== void 0 ? _c : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount.length);
147
176
  (0, validate_frames_per_lambda_1.validateFramesPerLambda)({
148
177
  framesPerLambda,
149
178
  durationInFrames: frameCount.length,
150
179
  });
151
180
  const chunkCount = Math.ceil(frameCount.length / framesPerLambda);
152
181
  if (chunkCount > constants_1.MAX_FUNCTIONS_PER_RENDER) {
153
- throw new Error(`Too many functions: This render would cause ${chunkCount} functions to spawn. We limit this amount to ${constants_1.MAX_FUNCTIONS_PER_RENDER} functions as more would result in diminishing returns. Values set: frameCount = ${frameCount}, framesPerLambda=${framesPerLambda}. See ${docs_url_1.DOCS_URL}/docs/lambda/concurrency for how this parameter is calculated.`);
182
+ throw new Error(`Too many functions: This render would cause ${chunkCount} functions to spawn. We limit this amount to ${constants_1.MAX_FUNCTIONS_PER_RENDER} functions as more would result in diminishing returns. Values set: frameCount = ${frameCount}, framesPerLambda=${framesPerLambda}. See ${docs_url_1.DOCS_URL}/docs/lambda/concurrency#too-many-functions for help.`);
154
183
  }
155
- (0, validate_outname_1.validateOutname)(params.outName, params.codec);
156
- (0, validate_privacy_1.validatePrivacy)(params.privacy);
184
+ (0, validate_outname_1.validateOutname)(params.outName, params.codec, params.audioCodec);
185
+ (0, validate_privacy_1.validatePrivacy)(params.privacy, true);
157
186
  renderer_1.RenderInternals.validatePuppeteerTimeout(params.timeoutInMilliseconds);
158
- const { chunks, didUseOptimization } = (0, plan_frame_ranges_1.planFrameRanges)({
187
+ const { chunks } = (0, plan_frame_ranges_1.planFrameRanges)({
159
188
  framesPerLambda,
160
- optimization,
161
- // TODO: Re-enable chunk optimization later
162
- shouldUseOptimization: false,
163
189
  frameRange: realFrameRange,
164
190
  everyNthFrame: params.everyNthFrame,
165
191
  });
166
192
  const sortedChunks = chunks.slice().sort((a, b) => a[0] - b[0]);
167
- const invokers = Math.round(Math.sqrt(chunks.length));
168
193
  const reqSend = (0, timer_1.timer)('sending off requests');
194
+ const serializedResolved = (0, serialize_props_1.serializeOrThrow)(comp.props, 'resolved-props');
195
+ const serializedDefault = (0, serialize_props_1.serializeOrThrow)(comp.defaultProps, 'default-props');
196
+ const needsToUpload = (0, serialize_props_1.getNeedsToUpload)('video-or-audio', serializedResolved + serializedDefault);
197
+ const [serializedResolvedProps, serializedDefaultProps] = await Promise.all([
198
+ (0, serialize_props_1.serializeInputProps)({
199
+ propsType: 'resolved-props',
200
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
201
+ stringifiedInputProps: serializedResolved,
202
+ userSpecifiedBucketName: params.bucketName,
203
+ needsToUpload,
204
+ }),
205
+ (0, serialize_props_1.serializeInputProps)({
206
+ propsType: 'default-props',
207
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
208
+ stringifiedInputProps: serializedDefault,
209
+ userSpecifiedBucketName: params.bucketName,
210
+ needsToUpload,
211
+ }),
212
+ ]);
169
213
  const lambdaPayloads = chunks.map((chunkPayload) => {
170
214
  var _a;
171
215
  const payload = {
@@ -183,12 +227,12 @@ const innerLaunchHandler = async (params, options) => {
183
227
  inputProps: params.inputProps,
184
228
  renderId: params.renderId,
185
229
  imageFormat: params.imageFormat,
186
- codec: params.codec === 'h264' ? 'h264-mkv' : params.codec,
230
+ codec: params.codec,
187
231
  crf: params.crf,
188
232
  envVariables: params.envVariables,
189
233
  pixelFormat: params.pixelFormat,
190
234
  proResProfile: params.proResProfile,
191
- quality: params.quality,
235
+ jpegQuality: params.jpegQuality,
192
236
  privacy: params.privacy,
193
237
  logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : 'info',
194
238
  attempt: 1,
@@ -198,9 +242,17 @@ const innerLaunchHandler = async (params, options) => {
198
242
  everyNthFrame: params.everyNthFrame,
199
243
  concurrencyPerLambda: params.concurrencyPerLambda,
200
244
  muted: params.muted,
245
+ audioBitrate: params.audioBitrate,
246
+ videoBitrate: params.videoBitrate,
247
+ launchFunctionConfig: {
248
+ version: version_1.VERSION,
249
+ },
250
+ resolvedProps: serializedResolvedProps,
251
+ defaultProps: serializedDefaultProps,
201
252
  };
202
253
  return payload;
203
254
  });
255
+ console.log('Render plan: ', chunks.map((c, i) => `Chunk ${i} (Frames ${c[0]} - ${c[1]})`).join(', '));
204
256
  const renderMetadata = {
205
257
  startedDate,
206
258
  videoConfig: comp,
@@ -208,15 +260,13 @@ const innerLaunchHandler = async (params, options) => {
208
260
  estimatedTotalLambdaInvokations: [
209
261
  // Direct invokations
210
262
  chunks.length,
211
- // Parent invokers
212
- invokers,
213
263
  // This function
264
+ 1,
214
265
  ].reduce((a, b) => a + b, 0),
215
266
  estimatedRenderLambdaInvokations: chunks.length,
216
267
  compositionId: comp.id,
217
268
  siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
218
269
  codec: params.codec,
219
- usesOptimizationProfile: didUseOptimization,
220
270
  type: 'video',
221
271
  imageFormat: params.imageFormat,
222
272
  inputProps: params.inputProps,
@@ -225,12 +275,15 @@ const innerLaunchHandler = async (params, options) => {
225
275
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
226
276
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
227
277
  renderId: params.renderId,
228
- outName: (_b = params.outName) !== null && _b !== void 0 ? _b : undefined,
278
+ outName: (_d = params.outName) !== null && _d !== void 0 ? _d : undefined,
229
279
  privacy: params.privacy,
280
+ everyNthFrame: params.everyNthFrame,
281
+ frameRange: realFrameRange,
282
+ audioCodec: params.audioCodec,
230
283
  };
231
284
  const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName, typeof params.outName === 'string' || typeof params.outName === 'undefined'
232
285
  ? null
233
- : (_d = (_c = params.outName) === null || _c === void 0 ? void 0 : _c.s3OutputProvider) !== null && _d !== void 0 ? _d : null);
286
+ : (_f = (_e = params.outName) === null || _e === void 0 ? void 0 : _e.s3OutputProvider) !== null && _f !== void 0 ? _f : null);
234
287
  const output = await (0, find_output_file_in_bucket_1.findOutputFileInBucket)({
235
288
  bucketName: params.bucketName,
236
289
  customCredentials,
@@ -261,34 +314,22 @@ const innerLaunchHandler = async (params, options) => {
261
314
  downloadBehavior: null,
262
315
  customCredentials: null,
263
316
  });
264
- await Promise.all(lambdaPayloads.map(async (payload, index) => {
265
- const callingLambdaTimer = (0, timer_1.timer)('Calling chunk ' + index);
266
- await callFunctionWithRetry(payload);
267
- callingLambdaTimer.end();
317
+ await Promise.all(lambdaPayloads.map(async (payload) => {
318
+ await callFunctionWithRetry({ payload, retries: 0, functionName });
268
319
  }));
269
320
  reqSend.end();
270
321
  let lastProgressUploaded = 0;
271
- let encodingStop = null;
272
- const onProgress = (framesEncoded, start) => {
322
+ const onProgress = (framesEncoded) => {
273
323
  const relativeProgress = framesEncoded / frameCount.length;
274
324
  const deltaSinceLastProgressUploaded = relativeProgress - lastProgressUploaded;
275
- if (relativeProgress === 1) {
276
- encodingStop = Date.now();
277
- }
278
325
  if (deltaSinceLastProgressUploaded < 0.1) {
279
326
  return;
280
327
  }
281
328
  lastProgressUploaded = relativeProgress;
282
- const encodingProgress = {
283
- framesEncoded,
284
- totalFrames: frameCount.length,
285
- doneIn: encodingStop ? encodingStop - start : null,
286
- timeToInvoke: null,
287
- };
288
329
  (0, io_1.lambdaWriteFile)({
289
330
  bucketName: params.bucketName,
290
331
  key: (0, constants_1.encodingProgressKey)(params.renderId),
291
- body: JSON.stringify(encodingProgress),
332
+ body: String(Math.round(framesEncoded / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
292
333
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
293
334
  privacy: 'private',
294
335
  expectedBucketOwner: options.expectedBucketOwner,
@@ -315,90 +356,82 @@ const innerLaunchHandler = async (params, options) => {
315
356
  });
316
357
  });
317
358
  };
359
+ const onErrors = async (errors) => {
360
+ var _a;
361
+ console.log('Found Errors', errors);
362
+ if (params.webhook) {
363
+ console.log('Sending webhook with errors');
364
+ await (0, invoke_webhook_1.invokeWebhook)({
365
+ url: params.webhook.url,
366
+ secret: (_a = params.webhook.secret) !== null && _a !== void 0 ? _a : null,
367
+ payload: {
368
+ type: 'error',
369
+ renderId: params.renderId,
370
+ expectedBucketOwner: options.expectedBucketOwner,
371
+ bucketName: params.bucketName,
372
+ errors: errors.slice(0, 5).map((e) => ({
373
+ message: e.message,
374
+ name: e.name,
375
+ stack: e.stack,
376
+ })),
377
+ },
378
+ });
379
+ }
380
+ else {
381
+ console.log('No webhook specified');
382
+ }
383
+ throw new Error('Stopping Lambda function because error occurred: ' + errors[0].stack);
384
+ };
318
385
  const fps = comp.fps / params.everyNthFrame;
319
- const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
386
+ const outdir = (0, node_path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.CONCAT_FOLDER_TOKEN), 'bucket');
387
+ if ((0, node_fs_1.existsSync)(outdir)) {
388
+ (0, node_fs_1.rmSync)(outdir, {
389
+ recursive: true,
390
+ });
391
+ }
392
+ (0, node_fs_1.mkdirSync)(outdir);
393
+ const files = await (0, concat_videos_1.getAllFilesS3)({
320
394
  bucket: params.bucketName,
321
395
  expectedFiles: chunkCount,
322
- onProgress,
323
- numberOfFrames: frameCount.length,
396
+ outdir,
324
397
  renderId: params.renderId,
325
398
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
326
- codec: params.codec,
327
399
  expectedBucketOwner: options.expectedBucketOwner,
400
+ onErrors,
401
+ });
402
+ const encodingStart = Date.now();
403
+ const { outfile, cleanupChunksProm } = await (0, concat_videos_1.concatVideosS3)({
404
+ onProgress,
405
+ numberOfFrames: frameCount.length,
406
+ codec: params.codec,
328
407
  fps,
329
408
  numberOfGifLoops: params.numberOfGifLoops,
409
+ files,
410
+ outdir,
411
+ audioCodec: params.audioCodec,
330
412
  });
331
- if (!encodingStop) {
332
- encodingStop = Date.now();
333
- }
334
- const outputSize = fs_1.default.statSync(outfile);
413
+ const encodingStop = Date.now();
414
+ const outputSize = node_fs_1.default.statSync(outfile);
335
415
  await (0, io_1.lambdaWriteFile)({
336
416
  bucketName: renderBucketName,
337
417
  key,
338
- body: fs_1.default.createReadStream(outfile),
418
+ body: node_fs_1.default.createReadStream(outfile),
339
419
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
340
420
  privacy: params.privacy,
341
421
  expectedBucketOwner: options.expectedBucketOwner,
342
422
  downloadBehavior: params.downloadBehavior,
343
423
  customCredentials,
344
424
  });
345
- let chunkProm = Promise.resolve();
346
- // TODO: Enable in a later release
347
- const enableChunkOptimization = false;
348
- if (enableChunkOptimization) {
349
- const chunkData = await (0, collect_data_1.collectChunkInformation)({
350
- bucketName: params.bucketName,
351
- renderId: params.renderId,
352
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
353
- expectedBucketOwner: options.expectedBucketOwner,
354
- });
355
- const optimizedProfile = (0, optimize_invocation_order_1.optimizeInvocationOrder)((0, optimize_profile_1.optimizeProfileRecursively)(chunkData, 400));
356
- const optimizedFrameRange = (0, get_frame_ranges_from_profile_1.getFrameRangesFromProfile)(optimizedProfile);
357
- chunkProm = (0, is_valid_profile_1.isValidOptimizationProfile)(optimizedProfile)
358
- ? (0, s3_optimization_file_1.writeOptimization)({
359
- bucketName: params.bucketName,
360
- optimization: {
361
- ranges: optimizedFrameRange,
362
- oldTiming: (0, get_profile_duration_1.getProfileDuration)(chunkData),
363
- newTiming: (0, get_profile_duration_1.getProfileDuration)(optimizedProfile),
364
- createdFromRenderId: params.renderId,
365
- framesPerLambda,
366
- lambdaVersion: version_1.VERSION,
367
- frameRange: realFrameRange,
368
- everyNthFrame: params.everyNthFrame,
369
- },
370
- expectedBucketOwner: options.expectedBucketOwner,
371
- compositionId: params.composition,
372
- siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
373
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
374
- })
375
- : Promise.resolve();
376
- }
377
- const [, contents] = await Promise.all([
378
- chunkProm,
379
- (0, io_1.lambdaLs)({
380
- bucketName: params.bucketName,
381
- prefix: (0, constants_1.rendersPrefix)(params.renderId),
382
- expectedBucketOwner: options.expectedBucketOwner,
383
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
384
- }),
385
- ]);
386
- const finalEncodingProgress = {
387
- framesEncoded: frameCount.length,
388
- totalFrames: frameCount.length,
389
- doneIn: encodingStop ? encodingStop - encodingStart : null,
390
- timeToInvoke: (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)({
391
- contents,
392
- renderId: params.renderId,
393
- estimatedRenderLambdaInvokations: renderMetadata.estimatedRenderLambdaInvokations,
394
- checkIfAllLambdasWereInvoked: false,
395
- startDate: renderMetadata.startedDate,
396
- }).timeToInvokeLambdas,
397
- };
425
+ const contents = await (0, io_1.lambdaLs)({
426
+ bucketName: params.bucketName,
427
+ prefix: (0, constants_1.rendersPrefix)(params.renderId),
428
+ expectedBucketOwner: options.expectedBucketOwner,
429
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
430
+ });
398
431
  const finalEncodingProgressProm = (0, io_1.lambdaWriteFile)({
399
432
  bucketName: params.bucketName,
400
433
  key: (0, constants_1.encodingProgressKey)(params.renderId),
401
- body: JSON.stringify(finalEncodingProgress),
434
+ body: String(Math.ceil(frameCount.length / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
402
435
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
403
436
  privacy: 'private',
404
437
  expectedBucketOwner: options.expectedBucketOwner,
@@ -416,11 +449,18 @@ const innerLaunchHandler = async (params, options) => {
416
449
  chunkCount,
417
450
  renderId: params.renderId,
418
451
  });
419
- const deletProm = (0, delete_chunks_1.cleanupFiles)({
452
+ const deletProm = verbose
453
+ ? Promise.resolve(0)
454
+ : (0, delete_chunks_1.cleanupFiles)({
455
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
456
+ bucket: params.bucketName,
457
+ contents,
458
+ jobs,
459
+ });
460
+ const cleanupSerializedInputPropsProm = (0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
461
+ bucketName: params.bucketName,
420
462
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
421
- bucket: params.bucketName,
422
- contents,
423
- jobs,
463
+ serialized: params.inputProps,
424
464
  });
425
465
  const outputUrl = (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName, customCredentials);
426
466
  const postRenderData = (0, create_post_render_data_1.createPostRenderData)({
@@ -432,7 +472,7 @@ const innerLaunchHandler = async (params, options) => {
432
472
  contents,
433
473
  errorExplanations: await errorExplanationsProm,
434
474
  timeToEncode: encodingStop - encodingStart,
435
- timeToDelete: await deletProm,
475
+ timeToDelete: (await Promise.all([deletProm, cleanupSerializedInputPropsProm])).reduce((a, b) => a + b, 0),
436
476
  outputFile: {
437
477
  lastModified: Date.now(),
438
478
  size: outputSize.size,
@@ -453,7 +493,7 @@ const innerLaunchHandler = async (params, options) => {
453
493
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
454
494
  customCredentials: null,
455
495
  });
456
- await Promise.all([cleanupChunksProm, fs_1.default.promises.rm(outfile)]);
496
+ await Promise.all([cleanupChunksProm, node_fs_1.default.promises.rm(outfile)]);
457
497
  clearTimeout(webhookDueToTimeout);
458
498
  if (params.webhook && !webhookInvoked) {
459
499
  try {
@@ -469,6 +509,7 @@ const innerLaunchHandler = async (params, options) => {
469
509
  lambdaErrors: postRenderData.errors,
470
510
  outputFile: postRenderData.outputFile,
471
511
  timeToFinish: postRenderData.timeToFinish,
512
+ costs: postRenderData.cost,
472
513
  },
473
514
  });
474
515
  webhookInvoked = true;
@@ -1,5 +1,5 @@
1
1
  import type { LambdaPayload, RenderProgress } from '../shared/constants';
2
- declare type Options = {
2
+ type Options = {
3
3
  expectedBucketOwner: string;
4
4
  timeoutInMilliseconds: number;
5
5
  };
@@ -12,9 +12,9 @@ const progressHandler = (lambdaParams, options) => {
12
12
  }
13
13
  if (lambdaParams.version !== version_1.VERSION) {
14
14
  if (!lambdaParams.version) {
15
- throw new Error(`Version mismatch: When calling getRenderProgress(), the deployed Lambda function had version ${version_1.VERSION} but the @remotion/lambda package is an older version. Align the versions.`);
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
16
  }
17
- throw new Error(`Version mismatch: When calling getRenderProgress(), get deployed Lambda function had version ${version_1.VERSION} and the @remotion/lambda package has version ${lambdaParams.version}. Align the versions.`);
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
18
  }
19
19
  return (0, get_progress_1.getProgress)({
20
20
  bucketName: lambdaParams.bucketName,
@@ -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
  isWarm: boolean;
5
5
  };