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

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 +1 -1
  33. package/dist/api/get-buckets.js +26 -9
  34. package/dist/api/get-compositions-on-lambda.d.ts +31 -0
  35. package/dist/api/get-compositions-on-lambda.js +56 -0
  36. package/dist/api/get-function-info.d.ts +3 -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 +4 -5
  47. package/dist/api/get-sites.js +1 -2
  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 +77 -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 +25 -11
  65. package/dist/api/render-media-on-lambda.js +16 -49
  66. package/dist/api/render-still-on-lambda.d.ts +15 -6
  67. package/dist/api/render-still-on-lambda.js +23 -9
  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 +36 -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 +6 -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 +15 -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 +1 -2
  175. package/dist/functions/helpers/get-browser-instance.js +7 -3
  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 +152 -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 -42
  252. package/dist/functions/start.d.ts +1 -1
  253. package/dist/functions/start.js +22 -8
  254. package/dist/functions/still.d.ts +1 -1
  255. package/dist/functions/still.js +80 -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 +140 -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)(verbose, 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,16 @@ 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
+ },
228
+ dumpBrowserLogs: params.dumpBrowserLogs,
201
229
  };
202
230
  return payload;
203
231
  });
232
+ console.log('Render plan: ', chunks.map((c, i) => `Chunk ${i} (Frames ${c[0]} - ${c[1]})`).join(', '));
204
233
  const renderMetadata = {
205
234
  startedDate,
206
235
  videoConfig: comp,
@@ -208,15 +237,13 @@ const innerLaunchHandler = async (params, options) => {
208
237
  estimatedTotalLambdaInvokations: [
209
238
  // Direct invokations
210
239
  chunks.length,
211
- // Parent invokers
212
- invokers,
213
240
  // This function
241
+ 1,
214
242
  ].reduce((a, b) => a + b, 0),
215
243
  estimatedRenderLambdaInvokations: chunks.length,
216
244
  compositionId: comp.id,
217
245
  siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
218
246
  codec: params.codec,
219
- usesOptimizationProfile: didUseOptimization,
220
247
  type: 'video',
221
248
  imageFormat: params.imageFormat,
222
249
  inputProps: params.inputProps,
@@ -225,12 +252,15 @@ const innerLaunchHandler = async (params, options) => {
225
252
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
226
253
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
227
254
  renderId: params.renderId,
228
- outName: (_b = params.outName) !== null && _b !== void 0 ? _b : undefined,
255
+ outName: (_d = params.outName) !== null && _d !== void 0 ? _d : undefined,
229
256
  privacy: params.privacy,
257
+ everyNthFrame: params.everyNthFrame,
258
+ frameRange: realFrameRange,
259
+ audioCodec: params.audioCodec,
230
260
  };
231
261
  const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName, typeof params.outName === 'string' || typeof params.outName === 'undefined'
232
262
  ? null
233
- : (_d = (_c = params.outName) === null || _c === void 0 ? void 0 : _c.s3OutputProvider) !== null && _d !== void 0 ? _d : null);
263
+ : (_f = (_e = params.outName) === null || _e === void 0 ? void 0 : _e.s3OutputProvider) !== null && _f !== void 0 ? _f : null);
234
264
  const output = await (0, find_output_file_in_bucket_1.findOutputFileInBucket)({
235
265
  bucketName: params.bucketName,
236
266
  customCredentials,
@@ -261,34 +291,22 @@ const innerLaunchHandler = async (params, options) => {
261
291
  downloadBehavior: null,
262
292
  customCredentials: null,
263
293
  });
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();
294
+ await Promise.all(lambdaPayloads.map(async (payload) => {
295
+ await callFunctionWithRetry({ payload, retries: 0, functionName });
268
296
  }));
269
297
  reqSend.end();
270
298
  let lastProgressUploaded = 0;
271
- let encodingStop = null;
272
- const onProgress = (framesEncoded, start) => {
299
+ const onProgress = (framesEncoded) => {
273
300
  const relativeProgress = framesEncoded / frameCount.length;
274
301
  const deltaSinceLastProgressUploaded = relativeProgress - lastProgressUploaded;
275
- if (relativeProgress === 1) {
276
- encodingStop = Date.now();
277
- }
278
302
  if (deltaSinceLastProgressUploaded < 0.1) {
279
303
  return;
280
304
  }
281
305
  lastProgressUploaded = relativeProgress;
282
- const encodingProgress = {
283
- framesEncoded,
284
- totalFrames: frameCount.length,
285
- doneIn: encodingStop ? encodingStop - start : null,
286
- timeToInvoke: null,
287
- };
288
306
  (0, io_1.lambdaWriteFile)({
289
307
  bucketName: params.bucketName,
290
308
  key: (0, constants_1.encodingProgressKey)(params.renderId),
291
- body: JSON.stringify(encodingProgress),
309
+ body: String(Math.round(framesEncoded / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
292
310
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
293
311
  privacy: 'private',
294
312
  expectedBucketOwner: options.expectedBucketOwner,
@@ -315,90 +333,82 @@ const innerLaunchHandler = async (params, options) => {
315
333
  });
316
334
  });
317
335
  };
336
+ const onErrors = async (errors) => {
337
+ var _a;
338
+ console.log('Found Errors', errors);
339
+ if (params.webhook) {
340
+ console.log('Sending webhook with errors');
341
+ await (0, invoke_webhook_1.invokeWebhook)({
342
+ url: params.webhook.url,
343
+ secret: (_a = params.webhook.secret) !== null && _a !== void 0 ? _a : null,
344
+ payload: {
345
+ type: 'error',
346
+ renderId: params.renderId,
347
+ expectedBucketOwner: options.expectedBucketOwner,
348
+ bucketName: params.bucketName,
349
+ errors: errors.slice(0, 5).map((e) => ({
350
+ message: e.message,
351
+ name: e.name,
352
+ stack: e.stack,
353
+ })),
354
+ },
355
+ });
356
+ }
357
+ else {
358
+ console.log('No webhook specified');
359
+ }
360
+ throw new Error('Stopping Lambda function because error occurred: ' + errors[0].stack);
361
+ };
318
362
  const fps = comp.fps / params.everyNthFrame;
319
- const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
363
+ const outdir = (0, node_path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.CONCAT_FOLDER_TOKEN), 'bucket');
364
+ if ((0, node_fs_1.existsSync)(outdir)) {
365
+ (0, node_fs_1.rmSync)(outdir, {
366
+ recursive: true,
367
+ });
368
+ }
369
+ (0, node_fs_1.mkdirSync)(outdir);
370
+ const files = await (0, concat_videos_1.getAllFilesS3)({
320
371
  bucket: params.bucketName,
321
372
  expectedFiles: chunkCount,
322
- onProgress,
323
- numberOfFrames: frameCount.length,
373
+ outdir,
324
374
  renderId: params.renderId,
325
375
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
326
- codec: params.codec,
327
376
  expectedBucketOwner: options.expectedBucketOwner,
377
+ onErrors,
378
+ });
379
+ const encodingStart = Date.now();
380
+ const { outfile, cleanupChunksProm } = await (0, concat_videos_1.concatVideosS3)({
381
+ onProgress,
382
+ numberOfFrames: frameCount.length,
383
+ codec: params.codec,
328
384
  fps,
329
385
  numberOfGifLoops: params.numberOfGifLoops,
386
+ files,
387
+ outdir,
388
+ audioCodec: params.audioCodec,
330
389
  });
331
- if (!encodingStop) {
332
- encodingStop = Date.now();
333
- }
334
- const outputSize = fs_1.default.statSync(outfile);
390
+ const encodingStop = Date.now();
391
+ const outputSize = node_fs_1.default.statSync(outfile);
335
392
  await (0, io_1.lambdaWriteFile)({
336
393
  bucketName: renderBucketName,
337
394
  key,
338
- body: fs_1.default.createReadStream(outfile),
395
+ body: node_fs_1.default.createReadStream(outfile),
339
396
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
340
397
  privacy: params.privacy,
341
398
  expectedBucketOwner: options.expectedBucketOwner,
342
399
  downloadBehavior: params.downloadBehavior,
343
400
  customCredentials,
344
401
  });
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
- };
402
+ const contents = await (0, io_1.lambdaLs)({
403
+ bucketName: params.bucketName,
404
+ prefix: (0, constants_1.rendersPrefix)(params.renderId),
405
+ expectedBucketOwner: options.expectedBucketOwner,
406
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
407
+ });
398
408
  const finalEncodingProgressProm = (0, io_1.lambdaWriteFile)({
399
409
  bucketName: params.bucketName,
400
410
  key: (0, constants_1.encodingProgressKey)(params.renderId),
401
- body: JSON.stringify(finalEncodingProgress),
411
+ body: String(Math.ceil(frameCount.length / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
402
412
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
403
413
  privacy: 'private',
404
414
  expectedBucketOwner: options.expectedBucketOwner,
@@ -416,11 +426,18 @@ const innerLaunchHandler = async (params, options) => {
416
426
  chunkCount,
417
427
  renderId: params.renderId,
418
428
  });
419
- const deletProm = (0, delete_chunks_1.cleanupFiles)({
429
+ const deletProm = verbose
430
+ ? Promise.resolve(0)
431
+ : (0, delete_chunks_1.cleanupFiles)({
432
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
433
+ bucket: params.bucketName,
434
+ contents,
435
+ jobs,
436
+ });
437
+ const cleanupSerializedInputPropsProm = (0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
438
+ bucketName: params.bucketName,
420
439
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
421
- bucket: params.bucketName,
422
- contents,
423
- jobs,
440
+ serialized: params.inputProps,
424
441
  });
425
442
  const outputUrl = (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName, customCredentials);
426
443
  const postRenderData = (0, create_post_render_data_1.createPostRenderData)({
@@ -432,7 +449,7 @@ const innerLaunchHandler = async (params, options) => {
432
449
  contents,
433
450
  errorExplanations: await errorExplanationsProm,
434
451
  timeToEncode: encodingStop - encodingStart,
435
- timeToDelete: await deletProm,
452
+ timeToDelete: (await Promise.all([deletProm, cleanupSerializedInputPropsProm])).reduce((a, b) => a + b, 0),
436
453
  outputFile: {
437
454
  lastModified: Date.now(),
438
455
  size: outputSize.size,
@@ -453,7 +470,7 @@ const innerLaunchHandler = async (params, options) => {
453
470
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
454
471
  customCredentials: null,
455
472
  });
456
- await Promise.all([cleanupChunksProm, fs_1.default.promises.rm(outfile)]);
473
+ await Promise.all([cleanupChunksProm, node_fs_1.default.promises.rm(outfile)]);
457
474
  clearTimeout(webhookDueToTimeout);
458
475
  if (params.webhook && !webhookInvoked) {
459
476
  try {
@@ -469,6 +486,7 @@ const innerLaunchHandler = async (params, options) => {
469
486
  lambdaErrors: postRenderData.errors,
470
487
  outputFile: postRenderData.outputFile,
471
488
  timeToFinish: postRenderData.timeToFinish,
489
+ costs: postRenderData.cost,
472
490
  },
473
491
  });
474
492
  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
  };