@remotion/lambda 4.0.0-webhook.27 → 4.1.0-alpha3

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 (409) 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 +57 -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 +79 -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 +25 -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 +59 -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 +31 -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 +0 -0
  228. package/dist/functions/helpers/print-concurrency-curve.d.ts +0 -0
  229. package/dist/functions/helpers/print-concurrency-curve.js +0 -0
  230. package/dist/functions/helpers/read-with-progress.d.ts +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 +16 -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 +43 -10
  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 +151 -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 +73 -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 +78 -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 +135 -89
  281. package/dist/shared/constants.js +7 -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/deserialize-input-props.d.ts +8 -0
  287. package/dist/shared/deserialize-input-props.js +26 -0
  288. package/dist/shared/docs-url.d.ts +0 -0
  289. package/dist/shared/docs-url.js +0 -0
  290. package/dist/shared/function-zip-path.d.ts +1 -1
  291. package/dist/shared/function-zip-path.js +3 -3
  292. package/dist/shared/get-account-id.d.ts +0 -0
  293. package/dist/shared/get-account-id.js +4 -6
  294. package/dist/shared/{get-cloudwatch-stream-url.d.ts → get-aws-urls.d.ts} +7 -1
  295. package/dist/shared/get-aws-urls.js +12 -0
  296. package/dist/shared/get-etag.d.ts +1 -0
  297. package/dist/shared/get-etag.js +24 -0
  298. package/dist/shared/get-function-version.d.ts +0 -0
  299. package/dist/shared/get-function-version.js +0 -0
  300. package/dist/shared/get-most-expensive-chunks.d.ts +2 -2
  301. package/dist/shared/get-most-expensive-chunks.js +3 -2
  302. package/dist/shared/get-s3-operations.d.ts +10 -0
  303. package/dist/shared/get-s3-operations.js +36 -0
  304. package/dist/shared/hosted-layers.d.ts +5 -8
  305. package/dist/shared/hosted-layers.js +210 -284
  306. package/dist/shared/invoke-webhook.d.ts +5 -18
  307. package/dist/shared/invoke-webhook.js +4 -19
  308. package/dist/shared/is-in-lambda.d.ts +0 -0
  309. package/dist/shared/is-in-lambda.js +0 -0
  310. package/dist/shared/lambda-version-string.d.ts +0 -0
  311. package/dist/shared/lambda-version-string.js +0 -0
  312. package/dist/shared/make-s3-key.d.ts +0 -0
  313. package/dist/shared/make-s3-key.js +2 -2
  314. package/dist/shared/make-s3-url.d.ts +0 -0
  315. package/dist/shared/make-s3-url.js +2 -2
  316. package/dist/shared/p-limit.d.ts +0 -0
  317. package/dist/shared/p-limit.js +0 -0
  318. package/dist/shared/parse-chunk-key.d.ts +4 -0
  319. package/dist/shared/parse-chunk-key.js +14 -0
  320. package/dist/shared/parse-lambda-initialized-key.d.ts +0 -0
  321. package/dist/shared/parse-lambda-initialized-key.js +0 -0
  322. package/dist/shared/parse-lambda-timings-key.d.ts +1 -1
  323. package/dist/shared/parse-lambda-timings-key.js +0 -0
  324. package/dist/shared/random-hash.d.ts +0 -0
  325. package/dist/shared/random-hash.js +0 -0
  326. package/dist/shared/read-dir.d.ts +9 -0
  327. package/dist/shared/read-dir.js +57 -0
  328. package/dist/shared/return-values.d.ts +7 -0
  329. package/dist/shared/return-values.js +0 -0
  330. package/dist/shared/serialize-input-props.d.ts +8 -0
  331. package/dist/shared/serialize-input-props.js +42 -0
  332. package/dist/shared/sleep.d.ts +0 -0
  333. package/dist/shared/sleep.js +0 -0
  334. package/dist/shared/stream-to-string.d.ts +0 -0
  335. package/dist/shared/stream-to-string.js +0 -0
  336. package/dist/shared/truthy.d.ts +1 -1
  337. package/dist/shared/truthy.js +0 -0
  338. package/dist/shared/validate-aws-region.d.ts +0 -0
  339. package/dist/shared/validate-aws-region.js +0 -0
  340. package/dist/shared/validate-bucketname.d.ts +5 -0
  341. package/dist/shared/validate-bucketname.js +19 -1
  342. package/dist/shared/validate-custom-role-arn.d.ts +0 -0
  343. package/dist/shared/validate-custom-role-arn.js +0 -0
  344. package/dist/shared/validate-disk-size-in-mb.d.ts +0 -0
  345. package/dist/shared/validate-disk-size-in-mb.js +0 -0
  346. package/dist/shared/validate-download-behavior.d.ts +0 -0
  347. package/dist/shared/validate-download-behavior.js +0 -0
  348. package/dist/shared/validate-frames-per-lambda.d.ts +0 -0
  349. package/dist/shared/validate-frames-per-lambda.js +0 -0
  350. package/dist/shared/validate-lambda-codec.d.ts +2 -2
  351. package/dist/shared/validate-lambda-codec.js +1 -1
  352. package/dist/shared/validate-memory-size.d.ts +0 -0
  353. package/dist/shared/validate-memory-size.js +0 -0
  354. package/dist/shared/validate-outname.d.ts +2 -2
  355. package/dist/shared/validate-outname.js +16 -10
  356. package/dist/shared/validate-presign-expiration.d.ts +0 -0
  357. package/dist/shared/validate-presign-expiration.js +0 -0
  358. package/dist/shared/validate-privacy.d.ts +1 -1
  359. package/dist/shared/validate-privacy.js +5 -2
  360. package/dist/shared/validate-retention-period.d.ts +0 -0
  361. package/dist/shared/validate-retention-period.js +0 -0
  362. package/dist/shared/validate-retries.d.ts +0 -0
  363. package/dist/shared/validate-retries.js +0 -0
  364. package/dist/shared/validate-serveurl.d.ts +0 -0
  365. package/dist/shared/validate-serveurl.js +0 -0
  366. package/dist/shared/validate-site-name.d.ts +0 -0
  367. package/dist/shared/validate-site-name.js +0 -0
  368. package/dist/shared/validate-timeout.d.ts +0 -0
  369. package/dist/shared/validate-timeout.js +0 -0
  370. package/package.json +89 -65
  371. package/remotionlambda-arm64.zip +0 -0
  372. package/.prettierrc.js +0 -14
  373. package/client.d.ts +0 -1
  374. package/client.js +0 -1
  375. package/dist/api/enable-s3-website.d.ts +0 -5
  376. package/dist/api/enable-s3-website.js +0 -16
  377. package/dist/cli/helpers/determine-image-format.d.ts +0 -10
  378. package/dist/cli/helpers/determine-image-format.js +0 -47
  379. package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +0 -8
  380. package/dist/cli/helpers/get-cloudwatch-stream-url.js +0 -7
  381. package/dist/cli/helpers/webhook-types.d.ts +0 -6
  382. package/dist/cli/helpers/webhook-types.js +0 -2
  383. package/dist/functions/chunk-optimization/can-use-optimization.d.ts +0 -6
  384. package/dist/functions/chunk-optimization/can-use-optimization.js +0 -23
  385. package/dist/functions/chunk-optimization/collect-data.d.ts +0 -9
  386. package/dist/functions/chunk-optimization/collect-data.js +0 -27
  387. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +0 -3
  388. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.js +0 -11
  389. package/dist/functions/chunk-optimization/get-profile-duration.d.ts +0 -3
  390. package/dist/functions/chunk-optimization/get-profile-duration.js +0 -18
  391. package/dist/functions/chunk-optimization/is-valid-profile.d.ts +0 -2
  392. package/dist/functions/chunk-optimization/is-valid-profile.js +0 -12
  393. package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +0 -2
  394. package/dist/functions/chunk-optimization/optimize-invocation-order.js +0 -19
  395. package/dist/functions/chunk-optimization/optimize-profile.d.ts +0 -9
  396. package/dist/functions/chunk-optimization/optimize-profile.js +0 -74
  397. package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +0 -17
  398. package/dist/functions/chunk-optimization/s3-optimization-file.js +0 -47
  399. package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +0 -7
  400. package/dist/functions/chunk-optimization/simulate-frame-ranges.js +0 -47
  401. package/dist/functions/chunk-optimization/sort-by-duration.d.ts +0 -2
  402. package/dist/functions/chunk-optimization/sort-by-duration.js +0 -25
  403. package/dist/functions/helpers/get-current-architecture.d.ts +0 -2
  404. package/dist/functions/helpers/get-current-architecture.js +0 -11
  405. package/dist/shared/get-cloudwatch-stream-url.js +0 -7
  406. package/dist/shared/validate-architecture.d.ts +0 -4
  407. package/dist/shared/validate-architecture.js +0 -14
  408. package/remotionlambda.zip +0 -0
  409. package/tsconfig.json +0 -16
@@ -1,30 +1,46 @@
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");
36
+ const deserialize_input_props_1 = require("../shared/deserialize-input-props");
14
37
  const docs_url_1 = require("../shared/docs-url");
15
38
  const invoke_webhook_1 = require("../shared/invoke-webhook");
16
39
  const make_s3_url_1 = require("../shared/make-s3-url");
17
40
  const validate_frames_per_lambda_1 = require("../shared/validate-frames-per-lambda");
18
41
  const validate_outname_1 = require("../shared/validate-outname");
19
42
  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
43
  const plan_frame_ranges_1 = require("./chunk-optimization/plan-frame-ranges");
27
- const s3_optimization_file_1 = require("./chunk-optimization/s3-optimization-file");
28
44
  const best_frames_per_lambda_param_1 = require("./helpers/best-frames-per-lambda-param");
29
45
  const concat_videos_1 = require("./helpers/concat-videos");
30
46
  const create_post_render_data_1 = require("./helpers/create-post-render-data");
@@ -34,7 +50,6 @@ const find_output_file_in_bucket_1 = require("./helpers/find-output-file-in-buck
34
50
  const get_browser_instance_1 = require("./helpers/get-browser-instance");
35
51
  const get_current_region_1 = require("./helpers/get-current-region");
36
52
  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
53
  const get_output_url_from_metadata_1 = require("./helpers/get-output-url-from-metadata");
39
54
  const inspect_errors_1 = require("./helpers/inspect-errors");
40
55
  const io_1 = require("./helpers/io");
@@ -42,10 +57,10 @@ const timer_1 = require("./helpers/timer");
42
57
  const validate_composition_1 = require("./helpers/validate-composition");
43
58
  const write_lambda_error_1 = require("./helpers/write-lambda-error");
44
59
  const write_post_render_data_1 = require("./helpers/write-post-render-data");
45
- const callFunctionWithRetry = async (payload, retries = 0) => {
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,60 +134,59 @@ 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, deserialize_input_props_1.deserializeInputProps)({
140
+ bucketName: params.bucketName,
141
+ expectedBucketOwner: options.expectedBucketOwner,
142
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
143
+ serialized: params.inputProps,
144
+ });
126
145
  const comp = await (0, validate_composition_1.validateComposition)({
127
146
  serveUrl: params.serveUrl,
128
147
  composition: params.composition,
129
148
  browserInstance,
130
- inputProps: params.inputProps,
131
- envVariables: params.envVariables,
132
- ffmpegExecutable: null,
133
- ffprobeExecutable: null,
149
+ inputProps: await inputPropsPromise,
150
+ envVariables: (_b = params.envVariables) !== null && _b !== void 0 ? _b : {},
134
151
  timeoutInMilliseconds: params.timeoutInMilliseconds,
135
152
  chromiumOptions: params.chromiumOptions,
136
153
  port: null,
137
- downloadMap,
154
+ forceHeight: params.forceHeight,
155
+ forceWidth: params.forceWidth,
156
+ logLevel: params.logLevel,
157
+ server: undefined,
158
+ });
159
+ remotion_1.Internals.validateDurationInFrames({
160
+ durationInFrames: 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');
169
191
  const lambdaPayloads = chunks.map((chunkPayload) => {
170
192
  var _a;
@@ -183,12 +205,12 @@ const innerLaunchHandler = async (params, options) => {
183
205
  inputProps: params.inputProps,
184
206
  renderId: params.renderId,
185
207
  imageFormat: params.imageFormat,
186
- codec: params.codec === 'h264' ? 'h264-mkv' : params.codec,
208
+ codec: params.codec,
187
209
  crf: params.crf,
188
210
  envVariables: params.envVariables,
189
211
  pixelFormat: params.pixelFormat,
190
212
  proResProfile: params.proResProfile,
191
- quality: params.quality,
213
+ jpegQuality: params.jpegQuality,
192
214
  privacy: params.privacy,
193
215
  logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : 'info',
194
216
  attempt: 1,
@@ -198,9 +220,15 @@ const innerLaunchHandler = async (params, options) => {
198
220
  everyNthFrame: params.everyNthFrame,
199
221
  concurrencyPerLambda: params.concurrencyPerLambda,
200
222
  muted: params.muted,
223
+ audioBitrate: params.audioBitrate,
224
+ videoBitrate: params.videoBitrate,
225
+ launchFunctionConfig: {
226
+ version: version_1.VERSION,
227
+ },
201
228
  };
202
229
  return payload;
203
230
  });
231
+ console.log('Render plan: ', chunks.map((c, i) => `Chunk ${i} (Frames ${c[0]} - ${c[1]})`).join(', '));
204
232
  const renderMetadata = {
205
233
  startedDate,
206
234
  videoConfig: comp,
@@ -208,15 +236,13 @@ const innerLaunchHandler = async (params, options) => {
208
236
  estimatedTotalLambdaInvokations: [
209
237
  // Direct invokations
210
238
  chunks.length,
211
- // Parent invokers
212
- invokers,
213
239
  // This function
240
+ 1,
214
241
  ].reduce((a, b) => a + b, 0),
215
242
  estimatedRenderLambdaInvokations: chunks.length,
216
243
  compositionId: comp.id,
217
244
  siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
218
245
  codec: params.codec,
219
- usesOptimizationProfile: didUseOptimization,
220
246
  type: 'video',
221
247
  imageFormat: params.imageFormat,
222
248
  inputProps: params.inputProps,
@@ -225,12 +251,15 @@ const innerLaunchHandler = async (params, options) => {
225
251
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
226
252
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
227
253
  renderId: params.renderId,
228
- outName: (_b = params.outName) !== null && _b !== void 0 ? _b : undefined,
254
+ outName: (_d = params.outName) !== null && _d !== void 0 ? _d : undefined,
229
255
  privacy: params.privacy,
256
+ everyNthFrame: params.everyNthFrame,
257
+ frameRange: realFrameRange,
258
+ audioCodec: params.audioCodec,
230
259
  };
231
260
  const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName, typeof params.outName === 'string' || typeof params.outName === 'undefined'
232
261
  ? null
233
- : (_d = (_c = params.outName) === null || _c === void 0 ? void 0 : _c.s3OutputProvider) !== null && _d !== void 0 ? _d : null);
262
+ : (_f = (_e = params.outName) === null || _e === void 0 ? void 0 : _e.s3OutputProvider) !== null && _f !== void 0 ? _f : null);
234
263
  const output = await (0, find_output_file_in_bucket_1.findOutputFileInBucket)({
235
264
  bucketName: params.bucketName,
236
265
  customCredentials,
@@ -261,34 +290,22 @@ const innerLaunchHandler = async (params, options) => {
261
290
  downloadBehavior: null,
262
291
  customCredentials: null,
263
292
  });
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();
293
+ await Promise.all(lambdaPayloads.map(async (payload) => {
294
+ await callFunctionWithRetry({ payload, retries: 0, functionName });
268
295
  }));
269
296
  reqSend.end();
270
297
  let lastProgressUploaded = 0;
271
- let encodingStop = null;
272
- const onProgress = (framesEncoded, start) => {
298
+ const onProgress = (framesEncoded) => {
273
299
  const relativeProgress = framesEncoded / frameCount.length;
274
300
  const deltaSinceLastProgressUploaded = relativeProgress - lastProgressUploaded;
275
- if (relativeProgress === 1) {
276
- encodingStop = Date.now();
277
- }
278
301
  if (deltaSinceLastProgressUploaded < 0.1) {
279
302
  return;
280
303
  }
281
304
  lastProgressUploaded = relativeProgress;
282
- const encodingProgress = {
283
- framesEncoded,
284
- totalFrames: frameCount.length,
285
- doneIn: encodingStop ? encodingStop - start : null,
286
- timeToInvoke: null,
287
- };
288
305
  (0, io_1.lambdaWriteFile)({
289
306
  bucketName: params.bucketName,
290
307
  key: (0, constants_1.encodingProgressKey)(params.renderId),
291
- body: JSON.stringify(encodingProgress),
308
+ body: String(Math.round(framesEncoded / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
292
309
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
293
310
  privacy: 'private',
294
311
  expectedBucketOwner: options.expectedBucketOwner,
@@ -315,90 +332,82 @@ const innerLaunchHandler = async (params, options) => {
315
332
  });
316
333
  });
317
334
  };
335
+ const onErrors = async (errors) => {
336
+ var _a;
337
+ console.log('Found Errors', errors);
338
+ if (params.webhook) {
339
+ console.log('Sending webhook with errors');
340
+ await (0, invoke_webhook_1.invokeWebhook)({
341
+ url: params.webhook.url,
342
+ secret: (_a = params.webhook.secret) !== null && _a !== void 0 ? _a : null,
343
+ payload: {
344
+ type: 'error',
345
+ renderId: params.renderId,
346
+ expectedBucketOwner: options.expectedBucketOwner,
347
+ bucketName: params.bucketName,
348
+ errors: errors.slice(0, 5).map((e) => ({
349
+ message: e.message,
350
+ name: e.name,
351
+ stack: e.stack,
352
+ })),
353
+ },
354
+ });
355
+ }
356
+ else {
357
+ console.log('No webhook specified');
358
+ }
359
+ throw new Error('Stopping Lambda function because error occurred: ' + errors[0].stack);
360
+ };
318
361
  const fps = comp.fps / params.everyNthFrame;
319
- const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
362
+ const outdir = (0, node_path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.CONCAT_FOLDER_TOKEN), 'bucket');
363
+ if ((0, node_fs_1.existsSync)(outdir)) {
364
+ (0, node_fs_1.rmSync)(outdir, {
365
+ recursive: true,
366
+ });
367
+ }
368
+ (0, node_fs_1.mkdirSync)(outdir);
369
+ const files = await (0, concat_videos_1.getAllFilesS3)({
320
370
  bucket: params.bucketName,
321
371
  expectedFiles: chunkCount,
322
- onProgress,
323
- numberOfFrames: frameCount.length,
372
+ outdir,
324
373
  renderId: params.renderId,
325
374
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
326
- codec: params.codec,
327
375
  expectedBucketOwner: options.expectedBucketOwner,
376
+ onErrors,
377
+ });
378
+ const encodingStart = Date.now();
379
+ const { outfile, cleanupChunksProm } = await (0, concat_videos_1.concatVideosS3)({
380
+ onProgress,
381
+ numberOfFrames: frameCount.length,
382
+ codec: params.codec,
328
383
  fps,
329
384
  numberOfGifLoops: params.numberOfGifLoops,
385
+ files,
386
+ outdir,
387
+ audioCodec: params.audioCodec,
330
388
  });
331
- if (!encodingStop) {
332
- encodingStop = Date.now();
333
- }
334
- const outputSize = fs_1.default.statSync(outfile);
389
+ const encodingStop = Date.now();
390
+ const outputSize = node_fs_1.default.statSync(outfile);
335
391
  await (0, io_1.lambdaWriteFile)({
336
392
  bucketName: renderBucketName,
337
393
  key,
338
- body: fs_1.default.createReadStream(outfile),
394
+ body: node_fs_1.default.createReadStream(outfile),
339
395
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
340
396
  privacy: params.privacy,
341
397
  expectedBucketOwner: options.expectedBucketOwner,
342
398
  downloadBehavior: params.downloadBehavior,
343
399
  customCredentials,
344
400
  });
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
- };
401
+ const contents = await (0, io_1.lambdaLs)({
402
+ bucketName: params.bucketName,
403
+ prefix: (0, constants_1.rendersPrefix)(params.renderId),
404
+ expectedBucketOwner: options.expectedBucketOwner,
405
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
406
+ });
398
407
  const finalEncodingProgressProm = (0, io_1.lambdaWriteFile)({
399
408
  bucketName: params.bucketName,
400
409
  key: (0, constants_1.encodingProgressKey)(params.renderId),
401
- body: JSON.stringify(finalEncodingProgress),
410
+ body: String(Math.ceil(frameCount.length / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
402
411
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
403
412
  privacy: 'private',
404
413
  expectedBucketOwner: options.expectedBucketOwner,
@@ -416,11 +425,18 @@ const innerLaunchHandler = async (params, options) => {
416
425
  chunkCount,
417
426
  renderId: params.renderId,
418
427
  });
419
- const deletProm = (0, delete_chunks_1.cleanupFiles)({
428
+ const deletProm = verbose
429
+ ? Promise.resolve(0)
430
+ : (0, delete_chunks_1.cleanupFiles)({
431
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
432
+ bucket: params.bucketName,
433
+ contents,
434
+ jobs,
435
+ });
436
+ const cleanupSerializedInputPropsProm = (0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
437
+ bucketName: params.bucketName,
420
438
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
421
- bucket: params.bucketName,
422
- contents,
423
- jobs,
439
+ serialized: params.inputProps,
424
440
  });
425
441
  const outputUrl = (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName, customCredentials);
426
442
  const postRenderData = (0, create_post_render_data_1.createPostRenderData)({
@@ -432,7 +448,7 @@ const innerLaunchHandler = async (params, options) => {
432
448
  contents,
433
449
  errorExplanations: await errorExplanationsProm,
434
450
  timeToEncode: encodingStop - encodingStart,
435
- timeToDelete: await deletProm,
451
+ timeToDelete: (await Promise.all([deletProm, cleanupSerializedInputPropsProm])).reduce((a, b) => a + b, 0),
436
452
  outputFile: {
437
453
  lastModified: Date.now(),
438
454
  size: outputSize.size,
@@ -453,7 +469,7 @@ const innerLaunchHandler = async (params, options) => {
453
469
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
454
470
  customCredentials: null,
455
471
  });
456
- await Promise.all([cleanupChunksProm, fs_1.default.promises.rm(outfile)]);
472
+ await Promise.all([cleanupChunksProm, node_fs_1.default.promises.rm(outfile)]);
457
473
  clearTimeout(webhookDueToTimeout);
458
474
  if (params.webhook && !webhookInvoked) {
459
475
  try {
@@ -469,6 +485,7 @@ const innerLaunchHandler = async (params, options) => {
469
485
  lambdaErrors: postRenderData.errors,
470
486
  outputFile: postRenderData.outputFile,
471
487
  timeToFinish: postRenderData.timeToFinish,
488
+ costs: postRenderData.cost,
472
489
  },
473
490
  });
474
491
  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
  };