@remotion/lambda 4.0.0-webhook.27 → 4.0.0

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 +172 -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,79 @@ 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
+ });
126
146
  const comp = await (0, validate_composition_1.validateComposition)({
127
147
  serveUrl: params.serveUrl,
128
148
  composition: params.composition,
129
149
  browserInstance,
130
- inputProps: params.inputProps,
131
- envVariables: params.envVariables,
132
- ffmpegExecutable: null,
133
- ffprobeExecutable: null,
150
+ inputProps: await inputPropsPromise,
151
+ envVariables: (_b = params.envVariables) !== null && _b !== void 0 ? _b : {},
134
152
  timeoutInMilliseconds: params.timeoutInMilliseconds,
135
153
  chromiumOptions: params.chromiumOptions,
136
154
  port: null,
137
- downloadMap,
155
+ forceHeight: params.forceHeight,
156
+ forceWidth: params.forceWidth,
157
+ logLevel: params.logLevel,
158
+ server: undefined,
159
+ });
160
+ remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, {
161
+ component: 'passed to a Lambda render',
162
+ allowFloats: false,
138
163
  });
139
- remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, 'passed to a Lambda render');
140
164
  remotion_1.Internals.validateFps(comp.fps, 'passed to a Lambda render', false);
141
165
  remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to a Lambda render');
142
166
  remotion_1.Internals.validateDimension(comp.width, 'width', 'passed to a Lambda render');
167
+ renderer_1.RenderInternals.validateBitrate(params.audioBitrate, 'audioBitrate');
168
+ renderer_1.RenderInternals.validateBitrate(params.videoBitrate, 'videoBitrate');
143
169
  renderer_1.RenderInternals.validateConcurrency(params.concurrencyPerLambda, 'concurrencyPerLambda');
144
170
  const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(comp.durationInFrames, params.frameRange);
145
171
  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);
172
+ const framesPerLambda = (_c = params.framesPerLambda) !== null && _c !== void 0 ? _c : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount.length);
147
173
  (0, validate_frames_per_lambda_1.validateFramesPerLambda)({
148
174
  framesPerLambda,
149
175
  durationInFrames: frameCount.length,
150
176
  });
151
177
  const chunkCount = Math.ceil(frameCount.length / framesPerLambda);
152
178
  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.`);
179
+ 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
180
  }
155
- (0, validate_outname_1.validateOutname)(params.outName, params.codec);
156
- (0, validate_privacy_1.validatePrivacy)(params.privacy);
181
+ (0, validate_outname_1.validateOutname)(params.outName, params.codec, params.audioCodec);
182
+ (0, validate_privacy_1.validatePrivacy)(params.privacy, true);
157
183
  renderer_1.RenderInternals.validatePuppeteerTimeout(params.timeoutInMilliseconds);
158
- const { chunks, didUseOptimization } = (0, plan_frame_ranges_1.planFrameRanges)({
184
+ const { chunks } = (0, plan_frame_ranges_1.planFrameRanges)({
159
185
  framesPerLambda,
160
- optimization,
161
- // TODO: Re-enable chunk optimization later
162
- shouldUseOptimization: false,
163
186
  frameRange: realFrameRange,
164
187
  everyNthFrame: params.everyNthFrame,
165
188
  });
166
189
  const sortedChunks = chunks.slice().sort((a, b) => a[0] - b[0]);
167
- const invokers = Math.round(Math.sqrt(chunks.length));
168
190
  const reqSend = (0, timer_1.timer)('sending off requests');
191
+ const serializedResolved = (0, serialize_props_1.serializeOrThrow)(comp.props, 'resolved-props');
192
+ const serializedDefault = (0, serialize_props_1.serializeOrThrow)(comp.defaultProps, 'default-props');
193
+ const needsToUpload = (0, serialize_props_1.getNeedsToUpload)('video-or-audio', serializedResolved + serializedDefault);
194
+ const [serializedResolvedProps, serializedDefaultProps] = await Promise.all([
195
+ (0, serialize_props_1.serializeInputProps)({
196
+ propsType: 'resolved-props',
197
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
198
+ stringifiedInputProps: serializedResolved,
199
+ userSpecifiedBucketName: params.bucketName,
200
+ needsToUpload,
201
+ }),
202
+ (0, serialize_props_1.serializeInputProps)({
203
+ propsType: 'default-props',
204
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
205
+ stringifiedInputProps: serializedDefault,
206
+ userSpecifiedBucketName: params.bucketName,
207
+ needsToUpload,
208
+ }),
209
+ ]);
169
210
  const lambdaPayloads = chunks.map((chunkPayload) => {
170
211
  var _a;
171
212
  const payload = {
@@ -183,12 +224,12 @@ const innerLaunchHandler = async (params, options) => {
183
224
  inputProps: params.inputProps,
184
225
  renderId: params.renderId,
185
226
  imageFormat: params.imageFormat,
186
- codec: params.codec === 'h264' ? 'h264-mkv' : params.codec,
227
+ codec: params.codec,
187
228
  crf: params.crf,
188
229
  envVariables: params.envVariables,
189
230
  pixelFormat: params.pixelFormat,
190
231
  proResProfile: params.proResProfile,
191
- quality: params.quality,
232
+ jpegQuality: params.jpegQuality,
192
233
  privacy: params.privacy,
193
234
  logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : 'info',
194
235
  attempt: 1,
@@ -198,9 +239,17 @@ const innerLaunchHandler = async (params, options) => {
198
239
  everyNthFrame: params.everyNthFrame,
199
240
  concurrencyPerLambda: params.concurrencyPerLambda,
200
241
  muted: params.muted,
242
+ audioBitrate: params.audioBitrate,
243
+ videoBitrate: params.videoBitrate,
244
+ launchFunctionConfig: {
245
+ version: version_1.VERSION,
246
+ },
247
+ resolvedProps: serializedResolvedProps,
248
+ defaultProps: serializedDefaultProps,
201
249
  };
202
250
  return payload;
203
251
  });
252
+ console.log('Render plan: ', chunks.map((c, i) => `Chunk ${i} (Frames ${c[0]} - ${c[1]})`).join(', '));
204
253
  const renderMetadata = {
205
254
  startedDate,
206
255
  videoConfig: comp,
@@ -208,15 +257,13 @@ const innerLaunchHandler = async (params, options) => {
208
257
  estimatedTotalLambdaInvokations: [
209
258
  // Direct invokations
210
259
  chunks.length,
211
- // Parent invokers
212
- invokers,
213
260
  // This function
261
+ 1,
214
262
  ].reduce((a, b) => a + b, 0),
215
263
  estimatedRenderLambdaInvokations: chunks.length,
216
264
  compositionId: comp.id,
217
265
  siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
218
266
  codec: params.codec,
219
- usesOptimizationProfile: didUseOptimization,
220
267
  type: 'video',
221
268
  imageFormat: params.imageFormat,
222
269
  inputProps: params.inputProps,
@@ -225,12 +272,15 @@ const innerLaunchHandler = async (params, options) => {
225
272
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
226
273
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
227
274
  renderId: params.renderId,
228
- outName: (_b = params.outName) !== null && _b !== void 0 ? _b : undefined,
275
+ outName: (_d = params.outName) !== null && _d !== void 0 ? _d : undefined,
229
276
  privacy: params.privacy,
277
+ everyNthFrame: params.everyNthFrame,
278
+ frameRange: realFrameRange,
279
+ audioCodec: params.audioCodec,
230
280
  };
231
281
  const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName, typeof params.outName === 'string' || typeof params.outName === 'undefined'
232
282
  ? null
233
- : (_d = (_c = params.outName) === null || _c === void 0 ? void 0 : _c.s3OutputProvider) !== null && _d !== void 0 ? _d : null);
283
+ : (_f = (_e = params.outName) === null || _e === void 0 ? void 0 : _e.s3OutputProvider) !== null && _f !== void 0 ? _f : null);
234
284
  const output = await (0, find_output_file_in_bucket_1.findOutputFileInBucket)({
235
285
  bucketName: params.bucketName,
236
286
  customCredentials,
@@ -261,34 +311,22 @@ const innerLaunchHandler = async (params, options) => {
261
311
  downloadBehavior: null,
262
312
  customCredentials: null,
263
313
  });
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();
314
+ await Promise.all(lambdaPayloads.map(async (payload) => {
315
+ await callFunctionWithRetry({ payload, retries: 0, functionName });
268
316
  }));
269
317
  reqSend.end();
270
318
  let lastProgressUploaded = 0;
271
- let encodingStop = null;
272
- const onProgress = (framesEncoded, start) => {
319
+ const onProgress = (framesEncoded) => {
273
320
  const relativeProgress = framesEncoded / frameCount.length;
274
321
  const deltaSinceLastProgressUploaded = relativeProgress - lastProgressUploaded;
275
- if (relativeProgress === 1) {
276
- encodingStop = Date.now();
277
- }
278
322
  if (deltaSinceLastProgressUploaded < 0.1) {
279
323
  return;
280
324
  }
281
325
  lastProgressUploaded = relativeProgress;
282
- const encodingProgress = {
283
- framesEncoded,
284
- totalFrames: frameCount.length,
285
- doneIn: encodingStop ? encodingStop - start : null,
286
- timeToInvoke: null,
287
- };
288
326
  (0, io_1.lambdaWriteFile)({
289
327
  bucketName: params.bucketName,
290
328
  key: (0, constants_1.encodingProgressKey)(params.renderId),
291
- body: JSON.stringify(encodingProgress),
329
+ body: String(Math.round(framesEncoded / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
292
330
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
293
331
  privacy: 'private',
294
332
  expectedBucketOwner: options.expectedBucketOwner,
@@ -315,90 +353,82 @@ const innerLaunchHandler = async (params, options) => {
315
353
  });
316
354
  });
317
355
  };
356
+ const onErrors = async (errors) => {
357
+ var _a;
358
+ console.log('Found Errors', errors);
359
+ if (params.webhook) {
360
+ console.log('Sending webhook with errors');
361
+ await (0, invoke_webhook_1.invokeWebhook)({
362
+ url: params.webhook.url,
363
+ secret: (_a = params.webhook.secret) !== null && _a !== void 0 ? _a : null,
364
+ payload: {
365
+ type: 'error',
366
+ renderId: params.renderId,
367
+ expectedBucketOwner: options.expectedBucketOwner,
368
+ bucketName: params.bucketName,
369
+ errors: errors.slice(0, 5).map((e) => ({
370
+ message: e.message,
371
+ name: e.name,
372
+ stack: e.stack,
373
+ })),
374
+ },
375
+ });
376
+ }
377
+ else {
378
+ console.log('No webhook specified');
379
+ }
380
+ throw new Error('Stopping Lambda function because error occurred: ' + errors[0].stack);
381
+ };
318
382
  const fps = comp.fps / params.everyNthFrame;
319
- const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
383
+ const outdir = (0, node_path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.CONCAT_FOLDER_TOKEN), 'bucket');
384
+ if ((0, node_fs_1.existsSync)(outdir)) {
385
+ (0, node_fs_1.rmSync)(outdir, {
386
+ recursive: true,
387
+ });
388
+ }
389
+ (0, node_fs_1.mkdirSync)(outdir);
390
+ const files = await (0, concat_videos_1.getAllFilesS3)({
320
391
  bucket: params.bucketName,
321
392
  expectedFiles: chunkCount,
322
- onProgress,
323
- numberOfFrames: frameCount.length,
393
+ outdir,
324
394
  renderId: params.renderId,
325
395
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
326
- codec: params.codec,
327
396
  expectedBucketOwner: options.expectedBucketOwner,
397
+ onErrors,
398
+ });
399
+ const encodingStart = Date.now();
400
+ const { outfile, cleanupChunksProm } = await (0, concat_videos_1.concatVideosS3)({
401
+ onProgress,
402
+ numberOfFrames: frameCount.length,
403
+ codec: params.codec,
328
404
  fps,
329
405
  numberOfGifLoops: params.numberOfGifLoops,
406
+ files,
407
+ outdir,
408
+ audioCodec: params.audioCodec,
330
409
  });
331
- if (!encodingStop) {
332
- encodingStop = Date.now();
333
- }
334
- const outputSize = fs_1.default.statSync(outfile);
410
+ const encodingStop = Date.now();
411
+ const outputSize = node_fs_1.default.statSync(outfile);
335
412
  await (0, io_1.lambdaWriteFile)({
336
413
  bucketName: renderBucketName,
337
414
  key,
338
- body: fs_1.default.createReadStream(outfile),
415
+ body: node_fs_1.default.createReadStream(outfile),
339
416
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
340
417
  privacy: params.privacy,
341
418
  expectedBucketOwner: options.expectedBucketOwner,
342
419
  downloadBehavior: params.downloadBehavior,
343
420
  customCredentials,
344
421
  });
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
- };
422
+ const contents = await (0, io_1.lambdaLs)({
423
+ bucketName: params.bucketName,
424
+ prefix: (0, constants_1.rendersPrefix)(params.renderId),
425
+ expectedBucketOwner: options.expectedBucketOwner,
426
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
427
+ });
398
428
  const finalEncodingProgressProm = (0, io_1.lambdaWriteFile)({
399
429
  bucketName: params.bucketName,
400
430
  key: (0, constants_1.encodingProgressKey)(params.renderId),
401
- body: JSON.stringify(finalEncodingProgress),
431
+ body: String(Math.ceil(frameCount.length / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
402
432
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
403
433
  privacy: 'private',
404
434
  expectedBucketOwner: options.expectedBucketOwner,
@@ -416,11 +446,18 @@ const innerLaunchHandler = async (params, options) => {
416
446
  chunkCount,
417
447
  renderId: params.renderId,
418
448
  });
419
- const deletProm = (0, delete_chunks_1.cleanupFiles)({
449
+ const deletProm = verbose
450
+ ? Promise.resolve(0)
451
+ : (0, delete_chunks_1.cleanupFiles)({
452
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
453
+ bucket: params.bucketName,
454
+ contents,
455
+ jobs,
456
+ });
457
+ const cleanupSerializedInputPropsProm = (0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
458
+ bucketName: params.bucketName,
420
459
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
421
- bucket: params.bucketName,
422
- contents,
423
- jobs,
460
+ serialized: params.inputProps,
424
461
  });
425
462
  const outputUrl = (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName, customCredentials);
426
463
  const postRenderData = (0, create_post_render_data_1.createPostRenderData)({
@@ -432,7 +469,7 @@ const innerLaunchHandler = async (params, options) => {
432
469
  contents,
433
470
  errorExplanations: await errorExplanationsProm,
434
471
  timeToEncode: encodingStop - encodingStart,
435
- timeToDelete: await deletProm,
472
+ timeToDelete: (await Promise.all([deletProm, cleanupSerializedInputPropsProm])).reduce((a, b) => a + b, 0),
436
473
  outputFile: {
437
474
  lastModified: Date.now(),
438
475
  size: outputSize.size,
@@ -453,7 +490,7 @@ const innerLaunchHandler = async (params, options) => {
453
490
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
454
491
  customCredentials: null,
455
492
  });
456
- await Promise.all([cleanupChunksProm, fs_1.default.promises.rm(outfile)]);
493
+ await Promise.all([cleanupChunksProm, node_fs_1.default.promises.rm(outfile)]);
457
494
  clearTimeout(webhookDueToTimeout);
458
495
  if (params.webhook && !webhookInvoked) {
459
496
  try {
@@ -469,6 +506,7 @@ const innerLaunchHandler = async (params, options) => {
469
506
  lambdaErrors: postRenderData.errors,
470
507
  outputFile: postRenderData.outputFile,
471
508
  timeToFinish: postRenderData.timeToFinish,
509
+ costs: postRenderData.cost,
472
510
  },
473
511
  });
474
512
  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
  };