@remotion/lambda 4.0.0-defer.6 → 4.0.0-esm.17

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 (396) 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 +21 -4
  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 +28 -6
  8. package/dist/api/bucket-exists.d.ts +1 -1
  9. package/dist/api/bucket-exists.js +1 -1
  10. package/dist/api/clean-items.d.ts +1 -1
  11. package/dist/api/clean-items.js +1 -1
  12. package/dist/api/create-bucket.d.ts +1 -1
  13. package/dist/api/create-bucket.js +1 -1
  14. package/dist/api/create-function.d.ts +2 -2
  15. package/dist/api/create-function.js +0 -0
  16. package/dist/api/delete-function.d.ts +1 -1
  17. package/dist/api/delete-function.js +0 -0
  18. package/dist/api/delete-render.d.ts +19 -0
  19. package/dist/api/delete-render.js +66 -0
  20. package/dist/api/delete-site.d.ts +1 -1
  21. package/dist/api/delete-site.js +0 -5
  22. package/dist/api/deploy-function.d.ts +2 -2
  23. package/dist/api/deploy-function.js +7 -3
  24. package/dist/api/deploy-site.d.ts +10 -3
  25. package/dist/api/deploy-site.js +39 -20
  26. package/dist/api/download-media.d.ts +15 -2
  27. package/dist/api/download-media.js +15 -3
  28. package/dist/api/estimate-price.d.ts +2 -2
  29. package/dist/api/estimate-price.js +0 -0
  30. package/dist/api/get-aws-client.d.ts +7 -3
  31. package/dist/api/get-aws-client.js +9 -2
  32. package/dist/api/get-buckets.d.ts +1 -1
  33. package/dist/api/get-buckets.js +27 -10
  34. package/dist/api/get-compositions-on-lambda.d.ts +29 -0
  35. package/dist/api/get-compositions-on-lambda.js +52 -0
  36. package/dist/api/get-function-info.d.ts +2 -3
  37. package/dist/api/get-function-info.js +0 -0
  38. package/dist/api/get-functions.d.ts +2 -2
  39. package/dist/api/get-functions.js +2 -1
  40. package/dist/api/get-or-create-bucket.d.ts +1 -1
  41. package/dist/api/get-or-create-bucket.js +2 -7
  42. package/dist/api/get-regions.d.ts +6 -2
  43. package/dist/api/get-regions.js +5 -2
  44. package/dist/api/get-render-progress.d.ts +6 -3
  45. package/dist/api/get-render-progress.js +5 -1
  46. package/dist/api/get-sites.d.ts +2 -2
  47. package/dist/api/get-sites.js +0 -0
  48. package/dist/api/iam-validation/role-permissions.d.ts +2 -1
  49. package/dist/api/iam-validation/role-permissions.js +0 -0
  50. package/dist/api/iam-validation/simulate-rule.d.ts +1 -1
  51. package/dist/api/iam-validation/simulate-rule.js +0 -22
  52. package/dist/api/iam-validation/simulate.d.ts +2 -2
  53. package/dist/api/iam-validation/simulate.js +24 -5
  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 +0 -0
  57. package/dist/api/iam-validation/user-permissions.js +0 -8
  58. package/dist/api/mock-functions.d.ts +6 -7
  59. package/dist/api/mock-functions.js +0 -0
  60. package/dist/api/presign-url.d.ts +3 -2
  61. package/dist/api/presign-url.js +6 -1
  62. package/dist/api/render-media-on-lambda.d.ts +35 -16
  63. package/dist/api/render-media-on-lambda.js +82 -37
  64. package/dist/api/render-still-on-lambda.d.ts +12 -7
  65. package/dist/api/render-still-on-lambda.js +55 -31
  66. package/dist/api/upload-dir.d.ts +6 -5
  67. package/dist/api/upload-dir.js +39 -21
  68. package/dist/api/validate-webhook-signature.d.ts +13 -0
  69. package/dist/api/validate-webhook-signature.js +32 -0
  70. package/dist/cli/args.d.ts +9 -5
  71. package/dist/cli/args.js +1 -5
  72. package/dist/cli/commands/compositions/index.d.ts +2 -0
  73. package/dist/cli/commands/compositions/index.js +42 -0
  74. package/dist/cli/commands/functions/deploy.d.ts +0 -0
  75. package/dist/cli/commands/functions/deploy.js +2 -1
  76. package/dist/cli/commands/functions/index.d.ts +0 -0
  77. package/dist/cli/commands/functions/index.js +0 -0
  78. package/dist/cli/commands/functions/ls.d.ts +0 -0
  79. package/dist/cli/commands/functions/ls.js +0 -0
  80. package/dist/cli/commands/functions/rm.d.ts +0 -0
  81. package/dist/cli/commands/functions/rm.js +0 -0
  82. package/dist/cli/commands/functions/rmall.d.ts +0 -0
  83. package/dist/cli/commands/functions/rmall.js +0 -0
  84. package/dist/cli/commands/policies/policies.d.ts +0 -0
  85. package/dist/cli/commands/policies/policies.js +0 -0
  86. package/dist/cli/commands/policies/role.d.ts +0 -0
  87. package/dist/cli/commands/policies/role.js +0 -0
  88. package/dist/cli/commands/policies/user.d.ts +0 -0
  89. package/dist/cli/commands/policies/user.js +0 -0
  90. package/dist/cli/commands/policies/validate.d.ts +0 -0
  91. package/dist/cli/commands/policies/validate.js +0 -0
  92. package/dist/cli/commands/quotas/increase.d.ts +0 -0
  93. package/dist/cli/commands/quotas/increase.js +0 -0
  94. package/dist/cli/commands/quotas/index.d.ts +0 -0
  95. package/dist/cli/commands/quotas/index.js +0 -0
  96. package/dist/cli/commands/quotas/list.d.ts +0 -0
  97. package/dist/cli/commands/quotas/list.js +0 -0
  98. package/dist/cli/commands/regions.d.ts +0 -0
  99. package/dist/cli/commands/regions.js +5 -1
  100. package/dist/cli/commands/render/progress.d.ts +11 -7
  101. package/dist/cli/commands/render/progress.js +68 -43
  102. package/dist/cli/commands/render/render.d.ts +1 -1
  103. package/dist/cli/commands/render/render.js +72 -25
  104. package/dist/cli/commands/sites/create.d.ts +1 -1
  105. package/dist/cli/commands/sites/create.js +21 -9
  106. package/dist/cli/commands/sites/index.d.ts +1 -1
  107. package/dist/cli/commands/sites/index.js +2 -2
  108. package/dist/cli/commands/sites/ls.d.ts +0 -0
  109. package/dist/cli/commands/sites/ls.js +1 -2
  110. package/dist/cli/commands/sites/rm.d.ts +0 -0
  111. package/dist/cli/commands/sites/rm.js +2 -3
  112. package/dist/cli/commands/sites/rmall.d.ts +0 -0
  113. package/dist/cli/commands/sites/rmall.js +2 -3
  114. package/dist/cli/commands/still.d.ts +1 -1
  115. package/dist/cli/commands/still.js +34 -27
  116. package/dist/cli/get-aws-region.d.ts +1 -1
  117. package/dist/cli/get-aws-region.js +2 -1
  118. package/dist/cli/help.d.ts +0 -0
  119. package/dist/cli/help.js +0 -0
  120. package/dist/cli/helpers/confirm.d.ts +0 -0
  121. package/dist/cli/helpers/confirm.js +0 -0
  122. package/dist/cli/helpers/date-string.d.ts +0 -0
  123. package/dist/cli/helpers/date-string.js +0 -0
  124. package/dist/cli/helpers/find-function-name.d.ts +0 -0
  125. package/dist/cli/helpers/find-function-name.js +3 -2
  126. package/dist/cli/helpers/progress-bar.d.ts +9 -3
  127. package/dist/cli/helpers/progress-bar.js +20 -5
  128. package/dist/cli/helpers/quit.d.ts +0 -0
  129. package/dist/cli/helpers/quit.js +0 -0
  130. package/dist/cli/helpers/yes-or-no.d.ts +0 -0
  131. package/dist/cli/helpers/yes-or-no.js +0 -0
  132. package/dist/cli/index.d.ts +1 -1
  133. package/dist/cli/index.js +20 -9
  134. package/dist/cli/is-cli.d.ts +0 -0
  135. package/dist/cli/is-cli.js +0 -0
  136. package/dist/cli/log.d.ts +0 -0
  137. package/dist/cli/log.js +0 -0
  138. package/dist/client.d.ts +5 -2
  139. package/dist/client.js +5 -1
  140. package/dist/defaults.d.ts +0 -0
  141. package/dist/defaults.js +0 -0
  142. package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +2 -6
  143. package/dist/functions/chunk-optimization/plan-frame-ranges.js +7 -19
  144. package/dist/functions/chunk-optimization/types.d.ts +0 -11
  145. package/dist/functions/chunk-optimization/types.js +0 -0
  146. package/dist/functions/compositions.d.ts +8 -0
  147. package/dist/functions/compositions.js +57 -0
  148. package/dist/functions/helpers/best-frames-per-lambda-param.d.ts +0 -0
  149. package/dist/functions/helpers/best-frames-per-lambda-param.js +0 -0
  150. package/dist/functions/helpers/calculate-chunk-times.d.ts +1 -1
  151. package/dist/functions/helpers/calculate-chunk-times.js +0 -0
  152. package/dist/functions/helpers/calculate-price-from-bucket.d.ts +4 -4
  153. package/dist/functions/helpers/calculate-price-from-bucket.js +0 -0
  154. package/dist/functions/helpers/check-if-render-exists.d.ts +3 -0
  155. package/dist/functions/helpers/check-if-render-exists.js +14 -0
  156. package/dist/functions/helpers/clean-tmpdir.d.ts +0 -0
  157. package/dist/functions/helpers/clean-tmpdir.js +1 -1
  158. package/dist/functions/helpers/concat-videos.d.ts +17 -7
  159. package/dist/functions/helpers/concat-videos.js +34 -32
  160. package/dist/functions/helpers/create-post-render-data.d.ts +6 -6
  161. package/dist/functions/helpers/create-post-render-data.js +5 -12
  162. package/dist/functions/helpers/delete-chunks.d.ts +3 -3
  163. package/dist/functions/helpers/delete-chunks.js +0 -0
  164. package/dist/functions/helpers/expected-out-name.d.ts +4 -2
  165. package/dist/functions/helpers/expected-out-name.js +27 -6
  166. package/dist/functions/helpers/find-output-file-in-bucket.d.ts +5 -3
  167. package/dist/functions/helpers/find-output-file-in-bucket.js +17 -9
  168. package/dist/functions/helpers/format-costs-info.d.ts +1 -1
  169. package/dist/functions/helpers/format-costs-info.js +0 -0
  170. package/dist/functions/helpers/get-browser-instance.d.ts +2 -1
  171. package/dist/functions/helpers/get-browser-instance.js +1 -1
  172. package/dist/functions/helpers/get-chromium-executable-path.d.ts +0 -0
  173. package/dist/functions/helpers/get-chromium-executable-path.js +2 -1
  174. package/dist/functions/helpers/get-cleanup-progress.d.ts +2 -2
  175. package/dist/functions/helpers/get-cleanup-progress.js +0 -0
  176. package/dist/functions/helpers/get-current-architecture.d.ts +1 -1
  177. package/dist/functions/helpers/get-current-architecture.js +0 -0
  178. package/dist/functions/helpers/get-current-region.d.ts +1 -1
  179. package/dist/functions/helpers/get-current-region.js +0 -0
  180. package/dist/functions/helpers/get-custom-out-name.d.ts +6 -0
  181. package/dist/functions/helpers/get-custom-out-name.js +31 -0
  182. package/dist/functions/helpers/get-encoding-metadata.d.ts +5 -9
  183. package/dist/functions/helpers/get-encoding-metadata.js +4 -18
  184. package/dist/functions/helpers/get-files-in-folder.d.ts +0 -0
  185. package/dist/functions/helpers/get-files-in-folder.js +0 -0
  186. package/dist/functions/helpers/get-files-to-delete.d.ts +0 -0
  187. package/dist/functions/helpers/get-files-to-delete.js +1 -1
  188. package/dist/functions/helpers/get-final-encoding-status.d.ts +3 -5
  189. package/dist/functions/helpers/get-final-encoding-status.js +1 -4
  190. package/dist/functions/helpers/get-folder-size.d.ts +0 -0
  191. package/dist/functions/helpers/get-folder-size.js +0 -0
  192. package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +5 -4
  193. package/dist/functions/helpers/get-lambdas-invoked-stats.js +2 -10
  194. package/dist/functions/helpers/get-output-url-from-metadata.d.ts +3 -2
  195. package/dist/functions/helpers/get-output-url-from-metadata.js +2 -2
  196. package/dist/functions/helpers/get-overall-progress.d.ts +2 -1
  197. package/dist/functions/helpers/get-overall-progress.js +7 -5
  198. package/dist/functions/helpers/get-post-render-data.d.ts +2 -2
  199. package/dist/functions/helpers/get-post-render-data.js +0 -0
  200. package/dist/functions/helpers/get-progress.d.ts +6 -4
  201. package/dist/functions/helpers/get-progress.js +63 -34
  202. package/dist/functions/helpers/get-render-metadata.d.ts +2 -2
  203. package/dist/functions/helpers/get-render-metadata.js +0 -0
  204. package/dist/functions/helpers/get-rendered-frames-progress.d.ts +8 -0
  205. package/dist/functions/helpers/get-rendered-frames-progress.js +37 -0
  206. package/dist/functions/helpers/get-retry-stats.d.ts +1 -1
  207. package/dist/functions/helpers/get-retry-stats.js +1 -1
  208. package/dist/functions/helpers/get-time-to-finish.d.ts +1 -1
  209. package/dist/functions/helpers/get-time-to-finish.js +0 -0
  210. package/dist/functions/helpers/inspect-errors.d.ts +3 -3
  211. package/dist/functions/helpers/inspect-errors.js +0 -0
  212. package/dist/functions/helpers/io.d.ts +24 -6
  213. package/dist/functions/helpers/io.js +31 -8
  214. package/dist/functions/helpers/is-enosp-err.d.ts +0 -0
  215. package/dist/functions/helpers/is-enosp-err.js +0 -0
  216. package/dist/functions/helpers/is-warm.d.ts +0 -0
  217. package/dist/functions/helpers/is-warm.js +0 -0
  218. package/dist/functions/helpers/min-max.d.ts +1 -1
  219. package/dist/functions/helpers/min-max.js +1 -1
  220. package/dist/functions/helpers/print-cloudwatch-helper.d.ts +2 -2
  221. package/dist/functions/helpers/print-cloudwatch-helper.js +0 -0
  222. package/dist/functions/helpers/print-concurrency-curve.d.ts +0 -0
  223. package/dist/functions/helpers/print-concurrency-curve.js +0 -0
  224. package/dist/functions/helpers/read-with-progress.d.ts +6 -3
  225. package/dist/functions/helpers/read-with-progress.js +16 -4
  226. package/dist/functions/helpers/timer.d.ts +0 -0
  227. package/dist/functions/helpers/timer.js +0 -0
  228. package/dist/functions/helpers/validate-composition.d.ts +7 -4
  229. package/dist/functions/helpers/validate-composition.js +7 -2
  230. package/dist/functions/helpers/write-lambda-error.d.ts +2 -2
  231. package/dist/functions/helpers/write-lambda-error.js +2 -0
  232. package/dist/functions/helpers/write-post-render-data.d.ts +2 -2
  233. package/dist/functions/helpers/write-post-render-data.js +2 -0
  234. package/dist/functions/index.d.ts +3 -2
  235. package/dist/functions/index.js +29 -10
  236. package/dist/functions/info.d.ts +2 -2
  237. package/dist/functions/info.js +2 -1
  238. package/dist/functions/launch.d.ts +2 -1
  239. package/dist/functions/launch.js +343 -123
  240. package/dist/functions/progress.d.ts +2 -2
  241. package/dist/functions/progress.js +10 -1
  242. package/dist/functions/renderer.d.ts +1 -1
  243. package/dist/functions/renderer.js +126 -77
  244. package/dist/functions/start.d.ts +6 -2
  245. package/dist/functions/start.js +40 -4
  246. package/dist/functions/still.d.ts +1 -1
  247. package/dist/functions/still.js +63 -17
  248. package/dist/index.d.ts +50 -20
  249. package/dist/index.js +17 -3
  250. package/dist/internals.d.ts +1 -1
  251. package/dist/internals.js +0 -0
  252. package/dist/pricing/aws-regions.d.ts +2 -1
  253. package/dist/pricing/aws-regions.js +31 -1
  254. package/dist/pricing/price-per-1-s.d.ts +1 -1
  255. package/dist/pricing/price-per-1-s.js +413 -39
  256. package/dist/regions.d.ts +0 -0
  257. package/dist/regions.js +0 -0
  258. package/dist/shared/await.d.ts +0 -0
  259. package/dist/shared/await.js +0 -0
  260. package/dist/shared/aws-clients.d.ts +17 -3
  261. package/dist/shared/aws-clients.js +118 -26
  262. package/dist/shared/bundle-site.d.ts +2 -6
  263. package/dist/shared/bundle-site.js +0 -0
  264. package/dist/shared/call-lambda.d.ts +3 -3
  265. package/dist/shared/call-lambda.js +0 -0
  266. package/dist/shared/check-credentials.d.ts +0 -0
  267. package/dist/shared/check-credentials.js +5 -2
  268. package/dist/shared/chunk-progress.d.ts +9 -0
  269. package/dist/shared/chunk-progress.js +2034 -0
  270. package/dist/shared/cleanup-serialized-input-props.d.ts +7 -0
  271. package/dist/shared/cleanup-serialized-input-props.js +19 -0
  272. package/dist/shared/constants.d.ts +107 -37
  273. package/dist/shared/constants.js +20 -10
  274. package/dist/shared/content-disposition-header.d.ts +7 -0
  275. package/dist/shared/content-disposition-header.js +19 -0
  276. package/dist/shared/convert-to-serve-url.d.ts +6 -2
  277. package/dist/shared/convert-to-serve-url.js +1 -5
  278. package/dist/shared/deserialize-input-props.d.ts +8 -0
  279. package/dist/shared/deserialize-input-props.js +26 -0
  280. package/dist/shared/docs-url.d.ts +0 -0
  281. package/dist/shared/docs-url.js +0 -0
  282. package/dist/shared/function-zip-path.d.ts +2 -1
  283. package/dist/shared/function-zip-path.js +3 -2
  284. package/dist/shared/get-account-id.d.ts +1 -1
  285. package/dist/shared/get-account-id.js +4 -6
  286. package/dist/shared/get-aws-urls.d.ts +13 -0
  287. package/dist/{cli/helpers/get-cloudwatch-stream-url.js → shared/get-aws-urls.js} +5 -1
  288. package/dist/shared/get-etag.d.ts +1 -0
  289. package/dist/shared/get-etag.js +24 -0
  290. package/dist/shared/get-function-version.d.ts +2 -3
  291. package/dist/shared/get-function-version.js +0 -0
  292. package/dist/shared/get-most-expensive-chunks.d.ts +8 -0
  293. package/dist/shared/get-most-expensive-chunks.js +25 -0
  294. package/dist/shared/get-s3-operations.d.ts +10 -0
  295. package/dist/shared/get-s3-operations.js +36 -0
  296. package/dist/shared/hosted-layers.d.ts +2 -2
  297. package/dist/shared/hosted-layers.js +368 -60
  298. package/dist/shared/invoke-webhook.d.ts +46 -0
  299. package/dist/shared/invoke-webhook.js +89 -0
  300. package/dist/shared/is-in-lambda.d.ts +0 -0
  301. package/dist/shared/is-in-lambda.js +5 -1
  302. package/dist/shared/lambda-version-string.d.ts +1 -0
  303. package/dist/shared/lambda-version-string.js +7 -0
  304. package/dist/shared/make-s3-key.d.ts +0 -0
  305. package/dist/shared/make-s3-key.js +0 -0
  306. package/dist/shared/make-s3-url.d.ts +1 -1
  307. package/dist/shared/make-s3-url.js +0 -0
  308. package/dist/shared/p-limit.d.ts +0 -0
  309. package/dist/shared/p-limit.js +0 -0
  310. package/dist/shared/parse-chunk-key.d.ts +4 -0
  311. package/dist/shared/parse-chunk-key.js +14 -0
  312. package/dist/shared/parse-lambda-initialized-key.d.ts +0 -0
  313. package/dist/shared/parse-lambda-initialized-key.js +0 -0
  314. package/dist/shared/parse-lambda-timings-key.d.ts +0 -0
  315. package/dist/shared/parse-lambda-timings-key.js +0 -0
  316. package/dist/shared/random-hash.d.ts +0 -0
  317. package/dist/shared/random-hash.js +0 -0
  318. package/dist/shared/read-dir.d.ts +9 -0
  319. package/dist/shared/read-dir.js +57 -0
  320. package/dist/shared/return-values.d.ts +9 -7
  321. package/dist/shared/return-values.js +0 -1
  322. package/dist/shared/serialize-input-props.d.ts +7 -0
  323. package/dist/shared/serialize-input-props.js +42 -0
  324. package/dist/shared/sleep.d.ts +0 -0
  325. package/dist/shared/sleep.js +0 -0
  326. package/dist/shared/stream-to-string.d.ts +1 -1
  327. package/dist/shared/stream-to-string.js +0 -0
  328. package/dist/shared/truthy.d.ts +3 -0
  329. package/dist/shared/truthy.js +7 -0
  330. package/dist/shared/validate-architecture.d.ts +0 -0
  331. package/dist/shared/validate-architecture.js +0 -0
  332. package/dist/shared/validate-aws-region.d.ts +1 -1
  333. package/dist/shared/validate-aws-region.js +0 -0
  334. package/dist/shared/validate-bucketname.d.ts +5 -0
  335. package/dist/shared/validate-bucketname.js +19 -1
  336. package/dist/shared/validate-custom-role-arn.d.ts +0 -0
  337. package/dist/shared/validate-custom-role-arn.js +0 -0
  338. package/dist/shared/validate-disk-size-in-mb.d.ts +0 -0
  339. package/dist/shared/validate-disk-size-in-mb.js +0 -0
  340. package/dist/shared/validate-download-behavior.d.ts +1 -0
  341. package/dist/shared/validate-download-behavior.js +21 -0
  342. package/dist/shared/validate-frames-per-lambda.d.ts +4 -1
  343. package/dist/shared/validate-frames-per-lambda.js +4 -3
  344. package/dist/shared/validate-lambda-codec.d.ts +4 -0
  345. package/dist/shared/validate-lambda-codec.js +29 -0
  346. package/dist/shared/validate-memory-size.d.ts +0 -0
  347. package/dist/shared/validate-memory-size.js +0 -0
  348. package/dist/shared/validate-outname.d.ts +3 -2
  349. package/dist/shared/validate-outname.js +5 -1
  350. package/dist/shared/validate-presign-expiration.d.ts +0 -2
  351. package/dist/shared/validate-presign-expiration.js +7 -7
  352. package/dist/shared/validate-privacy.d.ts +1 -1
  353. package/dist/shared/validate-privacy.js +2 -2
  354. package/dist/shared/validate-retention-period.d.ts +0 -0
  355. package/dist/shared/validate-retention-period.js +0 -0
  356. package/dist/shared/validate-retries.d.ts +0 -0
  357. package/dist/shared/validate-retries.js +0 -0
  358. package/dist/shared/validate-serveurl.d.ts +0 -0
  359. package/dist/shared/validate-serveurl.js +0 -0
  360. package/dist/shared/validate-site-name.d.ts +0 -0
  361. package/dist/shared/validate-site-name.js +0 -0
  362. package/dist/shared/validate-timeout.d.ts +0 -0
  363. package/dist/shared/validate-timeout.js +0 -0
  364. package/package.json +25 -26
  365. package/remotionlambda-arm64.zip +0 -0
  366. package/remotionlambda-x64.zip +0 -0
  367. package/remotionlambda.zip +0 -0
  368. package/.prettierrc.js +0 -14
  369. package/dist/api/enable-s3-website.d.ts +0 -5
  370. package/dist/api/enable-s3-website.js +0 -16
  371. package/dist/cli/helpers/format-bytes.d.ts +0 -6
  372. package/dist/cli/helpers/format-bytes.js +0 -103
  373. package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +0 -8
  374. package/dist/functions/chunk-optimization/can-use-optimization.d.ts +0 -6
  375. package/dist/functions/chunk-optimization/can-use-optimization.js +0 -23
  376. package/dist/functions/chunk-optimization/collect-data.d.ts +0 -9
  377. package/dist/functions/chunk-optimization/collect-data.js +0 -27
  378. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +0 -3
  379. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.js +0 -11
  380. package/dist/functions/chunk-optimization/get-profile-duration.d.ts +0 -3
  381. package/dist/functions/chunk-optimization/get-profile-duration.js +0 -18
  382. package/dist/functions/chunk-optimization/is-valid-profile.d.ts +0 -2
  383. package/dist/functions/chunk-optimization/is-valid-profile.js +0 -12
  384. package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +0 -2
  385. package/dist/functions/chunk-optimization/optimize-invocation-order.js +0 -19
  386. package/dist/functions/chunk-optimization/optimize-profile.d.ts +0 -9
  387. package/dist/functions/chunk-optimization/optimize-profile.js +0 -74
  388. package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +0 -17
  389. package/dist/functions/chunk-optimization/s3-optimization-file.js +0 -45
  390. package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +0 -7
  391. package/dist/functions/chunk-optimization/simulate-frame-ranges.js +0 -47
  392. package/dist/functions/chunk-optimization/sort-by-duration.d.ts +0 -2
  393. package/dist/functions/chunk-optimization/sort-by-duration.js +0 -25
  394. package/dist/shared/chunk.d.ts +0 -1
  395. package/dist/shared/chunk.js +0 -11
  396. package/tsconfig.json +0 -16
@@ -1,37 +1,55 @@
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 fs_1 = __importStar(require("fs"));
30
+ const path_1 = require("path");
10
31
  const remotion_1 = require("remotion");
32
+ const version_1 = require("remotion/version");
11
33
  const aws_clients_1 = require("../shared/aws-clients");
34
+ const cleanup_serialized_input_props_1 = require("../shared/cleanup-serialized-input-props");
12
35
  const constants_1 = require("../shared/constants");
36
+ const deserialize_input_props_1 = require("../shared/deserialize-input-props");
13
37
  const docs_url_1 = require("../shared/docs-url");
38
+ const invoke_webhook_1 = require("../shared/invoke-webhook");
14
39
  const make_s3_url_1 = require("../shared/make-s3-url");
15
40
  const validate_frames_per_lambda_1 = require("../shared/validate-frames-per-lambda");
16
41
  const validate_outname_1 = require("../shared/validate-outname");
17
42
  const validate_privacy_1 = require("../shared/validate-privacy");
18
- const collect_data_1 = require("./chunk-optimization/collect-data");
19
- const get_frame_ranges_from_profile_1 = require("./chunk-optimization/get-frame-ranges-from-profile");
20
- const get_profile_duration_1 = require("./chunk-optimization/get-profile-duration");
21
- const is_valid_profile_1 = require("./chunk-optimization/is-valid-profile");
22
- const optimize_invocation_order_1 = require("./chunk-optimization/optimize-invocation-order");
23
- const optimize_profile_1 = require("./chunk-optimization/optimize-profile");
24
43
  const plan_frame_ranges_1 = require("./chunk-optimization/plan-frame-ranges");
25
- const s3_optimization_file_1 = require("./chunk-optimization/s3-optimization-file");
26
44
  const best_frames_per_lambda_param_1 = require("./helpers/best-frames-per-lambda-param");
27
45
  const concat_videos_1 = require("./helpers/concat-videos");
28
46
  const create_post_render_data_1 = require("./helpers/create-post-render-data");
29
47
  const delete_chunks_1 = require("./helpers/delete-chunks");
30
48
  const expected_out_name_1 = require("./helpers/expected-out-name");
49
+ const find_output_file_in_bucket_1 = require("./helpers/find-output-file-in-bucket");
31
50
  const get_browser_instance_1 = require("./helpers/get-browser-instance");
32
51
  const get_current_region_1 = require("./helpers/get-current-region");
33
52
  const get_files_to_delete_1 = require("./helpers/get-files-to-delete");
34
- const get_lambdas_invoked_stats_1 = require("./helpers/get-lambdas-invoked-stats");
35
53
  const get_output_url_from_metadata_1 = require("./helpers/get-output-url-from-metadata");
36
54
  const inspect_errors_1 = require("./helpers/inspect-errors");
37
55
  const io_1 = require("./helpers/io");
@@ -39,56 +57,126 @@ const timer_1 = require("./helpers/timer");
39
57
  const validate_composition_1 = require("./helpers/validate-composition");
40
58
  const write_lambda_error_1 = require("./helpers/write-lambda-error");
41
59
  const write_post_render_data_1 = require("./helpers/write-post-render-data");
60
+ const callFunctionWithRetry = async (payload, retries = 0) => {
61
+ try {
62
+ await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
63
+ FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
64
+ // @ts-expect-error
65
+ Payload: JSON.stringify(payload),
66
+ InvocationType: 'Event',
67
+ }), {});
68
+ }
69
+ catch (err) {
70
+ if (err.name === 'ResourceConflictException') {
71
+ if (retries > 10) {
72
+ throw err;
73
+ }
74
+ await new Promise((resolve) => {
75
+ setTimeout(resolve, 1000);
76
+ });
77
+ return callFunctionWithRetry(payload, retries + 1);
78
+ }
79
+ }
80
+ };
42
81
  const innerLaunchHandler = async (params, options) => {
43
- var _a, _b;
82
+ var _a, _b, _c, _d;
44
83
  if (params.type !== constants_1.LambdaRoutines.launch) {
45
84
  throw new Error('Expected launch type');
46
85
  }
47
86
  const startedDate = Date.now();
48
- const [browserInstance, optimization] = await Promise.all([
49
- (0, get_browser_instance_1.getBrowserInstance)(remotion_1.Internals.Logging.isEqualOrBelowLogLevel(remotion_1.Internals.Logging.getLogLevel(), 'verbose'), params.chromiumOptions),
50
- (0, s3_optimization_file_1.getOptimization)({
51
- bucketName: params.bucketName,
52
- siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
53
- compositionId: params.composition,
54
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
55
- expectedBucketOwner: options.expectedBucketOwner,
56
- }),
57
- ]);
87
+ let webhookInvoked = false;
88
+ console.log(`Function has ${Math.max(options.getRemainingTimeInMillis() - 1000, 1000)} before it times out`);
89
+ const verbose = renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose');
90
+ const webhookDueToTimeout = setTimeout(async () => {
91
+ if (params.webhook && !webhookInvoked) {
92
+ try {
93
+ await (0, invoke_webhook_1.invokeWebhook)({
94
+ url: params.webhook.url,
95
+ secret: params.webhook.secret,
96
+ payload: {
97
+ type: 'timeout',
98
+ renderId: params.renderId,
99
+ expectedBucketOwner: options.expectedBucketOwner,
100
+ bucketName: params.bucketName,
101
+ },
102
+ });
103
+ webhookInvoked = true;
104
+ }
105
+ catch (err) {
106
+ if (process.env.NODE_ENV === 'test') {
107
+ throw err;
108
+ }
109
+ await (0, write_lambda_error_1.writeLambdaError)({
110
+ bucketName: params.bucketName,
111
+ errorInfo: {
112
+ type: 'webhook',
113
+ message: err.message,
114
+ name: err.name,
115
+ stack: err.stack,
116
+ tmpDir: null,
117
+ frame: 0,
118
+ chunk: 0,
119
+ isFatal: false,
120
+ attempt: 1,
121
+ willRetry: false,
122
+ totalAttempts: 1,
123
+ },
124
+ renderId: params.renderId,
125
+ expectedBucketOwner: options.expectedBucketOwner,
126
+ });
127
+ console.log('Failed to invoke webhook:');
128
+ console.log(err);
129
+ }
130
+ }
131
+ }, Math.max(options.getRemainingTimeInMillis() - 1000, 1000));
132
+ const browserInstance = await (0, get_browser_instance_1.getBrowserInstance)(verbose, params.chromiumOptions);
133
+ const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
134
+ const inputPropsPromise = (0, deserialize_input_props_1.deserializeInputProps)({
135
+ bucketName: params.bucketName,
136
+ expectedBucketOwner: options.expectedBucketOwner,
137
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
138
+ serialized: params.inputProps,
139
+ });
58
140
  const comp = await (0, validate_composition_1.validateComposition)({
59
141
  serveUrl: params.serveUrl,
60
142
  composition: params.composition,
61
143
  browserInstance,
62
- inputProps: params.inputProps,
144
+ inputProps: await inputPropsPromise,
63
145
  envVariables: params.envVariables,
64
146
  ffmpegExecutable: null,
65
147
  ffprobeExecutable: null,
66
148
  timeoutInMilliseconds: params.timeoutInMilliseconds,
67
149
  chromiumOptions: params.chromiumOptions,
68
150
  port: null,
151
+ downloadMap,
152
+ forceHeight: params.forceHeight,
153
+ forceWidth: params.forceWidth,
69
154
  });
70
- remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, 'passed to <Component />');
71
- remotion_1.Internals.validateFps(comp.fps, 'passed to <Component />');
72
- remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to <Component />');
73
- remotion_1.Internals.validateDimension(comp.width, 'width', 'passed to <Component />');
155
+ remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, 'passed to a Lambda render');
156
+ remotion_1.Internals.validateFps(comp.fps, 'passed to a Lambda render', false);
157
+ remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to a Lambda render');
158
+ remotion_1.Internals.validateDimension(comp.width, 'width', 'passed to a Lambda render');
159
+ renderer_1.RenderInternals.validateBitrate(params.audioBitrate, 'audioBitrate');
160
+ renderer_1.RenderInternals.validateBitrate(params.videoBitrate, 'videoBitrate');
161
+ renderer_1.RenderInternals.validateConcurrency(params.concurrencyPerLambda, 'concurrencyPerLambda');
74
162
  const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(comp.durationInFrames, params.frameRange);
75
- const frameCount = renderer_1.RenderInternals.getDurationFromFrameRange(realFrameRange, 0);
76
- const framesPerLambda = (_a = params.framesPerLambda) !== null && _a !== void 0 ? _a : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount);
77
- (0, validate_frames_per_lambda_1.validateFramesPerLambda)(framesPerLambda);
78
- const chunkCount = Math.ceil(frameCount / framesPerLambda);
163
+ const frameCount = renderer_1.RenderInternals.getFramesToRender(realFrameRange, params.everyNthFrame);
164
+ const framesPerLambda = (_a = params.framesPerLambda) !== null && _a !== void 0 ? _a : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount.length);
165
+ (0, validate_frames_per_lambda_1.validateFramesPerLambda)({
166
+ framesPerLambda,
167
+ durationInFrames: frameCount.length,
168
+ });
169
+ const chunkCount = Math.ceil(frameCount.length / framesPerLambda);
79
170
  if (chunkCount > constants_1.MAX_FUNCTIONS_PER_RENDER) {
80
- 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.`);
171
+ 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.`);
81
172
  }
82
- (0, validate_outname_1.validateOutname)(params.outName);
173
+ (0, validate_outname_1.validateOutname)(params.outName, params.codec);
83
174
  (0, validate_privacy_1.validatePrivacy)(params.privacy);
84
175
  renderer_1.RenderInternals.validatePuppeteerTimeout(params.timeoutInMilliseconds);
85
- const { chunks, didUseOptimization } = (0, plan_frame_ranges_1.planFrameRanges)({
86
- chunkCount,
176
+ const { chunks } = (0, plan_frame_ranges_1.planFrameRanges)({
87
177
  framesPerLambda,
88
- optimization,
89
- // TODO: Re-enable chunk optimization later
90
- shouldUseOptimization: false,
91
178
  frameRange: realFrameRange,
179
+ everyNthFrame: params.everyNthFrame,
92
180
  });
93
181
  const sortedChunks = chunks.slice().sort((a, b) => a[0] - b[0]);
94
182
  const invokers = Math.round(Math.sqrt(chunks.length));
@@ -117,11 +205,16 @@ const innerLaunchHandler = async (params, options) => {
117
205
  proResProfile: params.proResProfile,
118
206
  quality: params.quality,
119
207
  privacy: params.privacy,
120
- logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : remotion_1.Internals.Logging.DEFAULT_LOG_LEVEL,
208
+ logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : 'info',
121
209
  attempt: 1,
122
210
  timeoutInMilliseconds: params.timeoutInMilliseconds,
123
211
  chromiumOptions: params.chromiumOptions,
124
212
  scale: params.scale,
213
+ everyNthFrame: params.everyNthFrame,
214
+ concurrencyPerLambda: params.concurrencyPerLambda,
215
+ muted: params.muted,
216
+ audioBitrate: params.audioBitrate,
217
+ videoBitrate: params.videoBitrate,
125
218
  };
126
219
  return payload;
127
220
  });
@@ -140,17 +233,42 @@ const innerLaunchHandler = async (params, options) => {
140
233
  compositionId: comp.id,
141
234
  siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
142
235
  codec: params.codec,
143
- usesOptimizationProfile: didUseOptimization,
144
236
  type: 'video',
145
237
  imageFormat: params.imageFormat,
146
238
  inputProps: params.inputProps,
147
- lambdaVersion: constants_1.CURRENT_VERSION,
239
+ lambdaVersion: version_1.VERSION,
148
240
  framesPerLambda,
149
241
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
150
242
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
151
243
  renderId: params.renderId,
152
244
  outName: (_b = params.outName) !== null && _b !== void 0 ? _b : undefined,
245
+ privacy: params.privacy,
246
+ everyNthFrame: params.everyNthFrame,
247
+ frameRange: realFrameRange,
153
248
  };
249
+ const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName, typeof params.outName === 'string' || typeof params.outName === 'undefined'
250
+ ? null
251
+ : (_d = (_c = params.outName) === null || _c === void 0 ? void 0 : _c.s3OutputProvider) !== null && _d !== void 0 ? _d : null);
252
+ const output = await (0, find_output_file_in_bucket_1.findOutputFileInBucket)({
253
+ bucketName: params.bucketName,
254
+ customCredentials,
255
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
256
+ renderMetadata,
257
+ });
258
+ if (output) {
259
+ if (params.overwrite) {
260
+ console.info('Deleting', { bucketName: renderBucketName, key }, 'because it already existed and will be overwritten');
261
+ await (0, io_1.lambdaDeleteFile)({
262
+ bucketName: renderBucketName,
263
+ customCredentials,
264
+ key,
265
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
266
+ });
267
+ }
268
+ else {
269
+ throw new TypeError(`Output file "${key}" in bucket "${renderBucketName}" in region "${(0, get_current_region_1.getCurrentRegionInFunction)()}" already exists. Delete it before re-rendering, or use the overwrite option to delete it before render."`);
270
+ }
271
+ }
154
272
  await (0, io_1.lambdaWriteFile)({
155
273
  bucketName: params.bucketName,
156
274
  key: (0, constants_1.renderMetadataKey)(params.renderId),
@@ -158,43 +276,32 @@ const innerLaunchHandler = async (params, options) => {
158
276
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
159
277
  privacy: 'private',
160
278
  expectedBucketOwner: options.expectedBucketOwner,
279
+ downloadBehavior: null,
280
+ customCredentials: null,
161
281
  });
162
282
  await Promise.all(lambdaPayloads.map(async (payload, index) => {
163
283
  const callingLambdaTimer = (0, timer_1.timer)('Calling chunk ' + index);
164
- await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
165
- FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
166
- // @ts-expect-error
167
- Payload: JSON.stringify(payload),
168
- InvocationType: 'Event',
169
- }), {});
284
+ await callFunctionWithRetry(payload);
170
285
  callingLambdaTimer.end();
171
286
  }));
172
287
  reqSend.end();
173
288
  let lastProgressUploaded = 0;
174
- let encodingStop = null;
175
- const onProgress = (framesEncoded, start) => {
176
- const relativeProgress = framesEncoded / frameCount;
289
+ const onProgress = (framesEncoded) => {
290
+ const relativeProgress = framesEncoded / frameCount.length;
177
291
  const deltaSinceLastProgressUploaded = relativeProgress - lastProgressUploaded;
178
- if (relativeProgress === 1) {
179
- encodingStop = Date.now();
180
- }
181
292
  if (deltaSinceLastProgressUploaded < 0.1) {
182
293
  return;
183
294
  }
184
295
  lastProgressUploaded = relativeProgress;
185
- const encodingProgress = {
186
- framesEncoded,
187
- totalFrames: frameCount,
188
- doneIn: encodingStop ? encodingStop - start : null,
189
- timeToInvoke: null,
190
- };
191
296
  (0, io_1.lambdaWriteFile)({
192
297
  bucketName: params.bucketName,
193
298
  key: (0, constants_1.encodingProgressKey)(params.renderId),
194
- body: JSON.stringify(encodingProgress),
299
+ body: String(framesEncoded),
195
300
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
196
301
  privacy: 'private',
197
302
  expectedBucketOwner: options.expectedBucketOwner,
303
+ downloadBehavior: null,
304
+ customCredentials: null,
198
305
  }).catch((err) => {
199
306
  (0, write_lambda_error_1.writeLambdaError)({
200
307
  bucketName: params.bucketName,
@@ -216,21 +323,62 @@ const innerLaunchHandler = async (params, options) => {
216
323
  });
217
324
  });
218
325
  };
219
- const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
326
+ const onErrors = async (errors) => {
327
+ var _a;
328
+ console.log('Found Errors', errors);
329
+ if (params.webhook) {
330
+ console.log('Sending webhook with errors');
331
+ await (0, invoke_webhook_1.invokeWebhook)({
332
+ url: params.webhook.url,
333
+ secret: (_a = params.webhook.secret) !== null && _a !== void 0 ? _a : null,
334
+ payload: {
335
+ type: 'error',
336
+ renderId: params.renderId,
337
+ expectedBucketOwner: options.expectedBucketOwner,
338
+ bucketName: params.bucketName,
339
+ errors: errors.slice(0, 5).map((e) => ({
340
+ message: e.message,
341
+ name: e.name,
342
+ stack: e.stack,
343
+ })),
344
+ },
345
+ });
346
+ }
347
+ else {
348
+ console.log('No webhook specified');
349
+ }
350
+ throw new Error('Stopping Lambda function because error occurred: ' + errors[0].stack);
351
+ };
352
+ const fps = comp.fps / params.everyNthFrame;
353
+ const outdir = (0, path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.CONCAT_FOLDER_TOKEN), 'bucket');
354
+ if ((0, fs_1.existsSync)(outdir)) {
355
+ (fs_1.rmSync !== null && fs_1.rmSync !== void 0 ? fs_1.rmSync : fs_1.rmdirSync)(outdir, {
356
+ recursive: true,
357
+ });
358
+ }
359
+ (0, fs_1.mkdirSync)(outdir);
360
+ const files = await (0, concat_videos_1.getAllFilesS3)({
220
361
  bucket: params.bucketName,
221
362
  expectedFiles: chunkCount,
222
- onProgress,
223
- numberOfFrames: frameCount,
363
+ outdir,
224
364
  renderId: params.renderId,
225
365
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
226
- codec: params.codec,
227
366
  expectedBucketOwner: options.expectedBucketOwner,
228
- fps: comp.fps,
367
+ onErrors,
229
368
  });
230
- if (!encodingStop) {
231
- encodingStop = Date.now();
232
- }
233
- const { key, renderBucketName } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName);
369
+ const encodingStart = Date.now();
370
+ const { outfile, cleanupChunksProm } = await (0, concat_videos_1.concatVideosS3)({
371
+ onProgress,
372
+ numberOfFrames: frameCount.length,
373
+ codec: params.codec,
374
+ fps,
375
+ numberOfGifLoops: params.numberOfGifLoops,
376
+ ffmpegExecutable: null,
377
+ remotionRoot: process.cwd(),
378
+ files,
379
+ outdir,
380
+ });
381
+ const encodingStop = Date.now();
234
382
  const outputSize = fs_1.default.statSync(outfile);
235
383
  await (0, io_1.lambdaWriteFile)({
236
384
  bucketName: renderBucketName,
@@ -239,60 +387,24 @@ const innerLaunchHandler = async (params, options) => {
239
387
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
240
388
  privacy: params.privacy,
241
389
  expectedBucketOwner: options.expectedBucketOwner,
390
+ downloadBehavior: params.downloadBehavior,
391
+ customCredentials,
392
+ });
393
+ const contents = await (0, io_1.lambdaLs)({
394
+ bucketName: params.bucketName,
395
+ prefix: (0, constants_1.rendersPrefix)(params.renderId),
396
+ expectedBucketOwner: options.expectedBucketOwner,
397
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
242
398
  });
243
- let chunkProm = Promise.resolve();
244
- // TODO: Enable in a later release
245
- const enableChunkOptimization = false;
246
- if (enableChunkOptimization) {
247
- const chunkData = await (0, collect_data_1.collectChunkInformation)({
248
- bucketName: params.bucketName,
249
- renderId: params.renderId,
250
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
251
- expectedBucketOwner: options.expectedBucketOwner,
252
- });
253
- const optimizedProfile = (0, optimize_invocation_order_1.optimizeInvocationOrder)((0, optimize_profile_1.optimizeProfileRecursively)(chunkData, 400));
254
- const optimizedFrameRange = (0, get_frame_ranges_from_profile_1.getFrameRangesFromProfile)(optimizedProfile);
255
- chunkProm = (0, is_valid_profile_1.isValidOptimizationProfile)(optimizedProfile)
256
- ? (0, s3_optimization_file_1.writeOptimization)({
257
- bucketName: params.bucketName,
258
- optimization: {
259
- ranges: optimizedFrameRange,
260
- oldTiming: (0, get_profile_duration_1.getProfileDuration)(chunkData),
261
- newTiming: (0, get_profile_duration_1.getProfileDuration)(optimizedProfile),
262
- createdFromRenderId: params.renderId,
263
- framesPerLambda,
264
- lambdaVersion: constants_1.CURRENT_VERSION,
265
- frameRange: realFrameRange,
266
- },
267
- expectedBucketOwner: options.expectedBucketOwner,
268
- compositionId: params.composition,
269
- siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
270
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
271
- })
272
- : Promise.resolve();
273
- }
274
- const [, contents] = await Promise.all([
275
- chunkProm,
276
- (0, io_1.lambdaLs)({
277
- bucketName: params.bucketName,
278
- prefix: (0, constants_1.rendersPrefix)(params.renderId),
279
- expectedBucketOwner: options.expectedBucketOwner,
280
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
281
- }),
282
- ]);
283
- const finalEncodingProgress = {
284
- framesEncoded: frameCount,
285
- totalFrames: frameCount,
286
- doneIn: encodingStop ? encodingStop - encodingStart : null,
287
- timeToInvoke: (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)(contents, params.renderId, renderMetadata.estimatedRenderLambdaInvokations, renderMetadata.startedDate).timeToInvokeLambdas,
288
- };
289
399
  const finalEncodingProgressProm = (0, io_1.lambdaWriteFile)({
290
400
  bucketName: params.bucketName,
291
401
  key: (0, constants_1.encodingProgressKey)(params.renderId),
292
- body: JSON.stringify(finalEncodingProgress),
402
+ body: String(frameCount.length),
293
403
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
294
404
  privacy: 'private',
295
405
  expectedBucketOwner: options.expectedBucketOwner,
406
+ downloadBehavior: null,
407
+ customCredentials: null,
296
408
  });
297
409
  const errorExplanationsProm = (0, inspect_errors_1.inspectErrors)({
298
410
  contents,
@@ -305,13 +417,21 @@ const innerLaunchHandler = async (params, options) => {
305
417
  chunkCount,
306
418
  renderId: params.renderId,
307
419
  });
308
- const deletProm = (0, delete_chunks_1.cleanupFiles)({
420
+ const deletProm = verbose
421
+ ? Promise.resolve(0)
422
+ : (0, delete_chunks_1.cleanupFiles)({
423
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
424
+ bucket: params.bucketName,
425
+ contents,
426
+ jobs,
427
+ });
428
+ const cleanupSerializedInputPropsProm = (0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
429
+ bucketName: params.bucketName,
309
430
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
310
- bucket: params.bucketName,
311
- contents,
312
- jobs,
431
+ serialized: params.inputProps,
313
432
  });
314
- const postRenderData = await (0, create_post_render_data_1.createPostRenderData)({
433
+ const outputUrl = (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName, customCredentials);
434
+ const postRenderData = (0, create_post_render_data_1.createPostRenderData)({
315
435
  expectedBucketOwner: options.expectedBucketOwner,
316
436
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
317
437
  renderId: params.renderId,
@@ -320,11 +440,11 @@ const innerLaunchHandler = async (params, options) => {
320
440
  contents,
321
441
  errorExplanations: await errorExplanationsProm,
322
442
  timeToEncode: encodingStop - encodingStart,
323
- timeToDelete: await deletProm,
443
+ timeToDelete: (await Promise.all([deletProm, cleanupSerializedInputPropsProm])).reduce((a, b) => a + b, 0),
324
444
  outputFile: {
325
445
  lastModified: Date.now(),
326
446
  size: outputSize.size,
327
- url: (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName),
447
+ url: outputUrl,
328
448
  },
329
449
  });
330
450
  await finalEncodingProgressProm;
@@ -335,9 +455,62 @@ const innerLaunchHandler = async (params, options) => {
335
455
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
336
456
  renderId: params.renderId,
337
457
  });
458
+ await (0, io_1.lambdaDeleteFile)({
459
+ bucketName: params.bucketName,
460
+ key: (0, constants_1.initalizedMetadataKey)(params.renderId),
461
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
462
+ customCredentials: null,
463
+ });
338
464
  await Promise.all([cleanupChunksProm, fs_1.default.promises.rm(outfile)]);
465
+ clearTimeout(webhookDueToTimeout);
466
+ if (params.webhook && !webhookInvoked) {
467
+ try {
468
+ await (0, invoke_webhook_1.invokeWebhook)({
469
+ url: params.webhook.url,
470
+ secret: params.webhook.secret,
471
+ payload: {
472
+ type: 'success',
473
+ renderId: params.renderId,
474
+ expectedBucketOwner: options.expectedBucketOwner,
475
+ bucketName: params.bucketName,
476
+ outputUrl,
477
+ lambdaErrors: postRenderData.errors,
478
+ outputFile: postRenderData.outputFile,
479
+ timeToFinish: postRenderData.timeToFinish,
480
+ costs: postRenderData.cost,
481
+ },
482
+ });
483
+ webhookInvoked = true;
484
+ }
485
+ catch (err) {
486
+ if (process.env.NODE_ENV === 'test') {
487
+ throw err;
488
+ }
489
+ await (0, write_lambda_error_1.writeLambdaError)({
490
+ bucketName: params.bucketName,
491
+ errorInfo: {
492
+ type: 'webhook',
493
+ message: err.message,
494
+ name: err.name,
495
+ stack: err.stack,
496
+ tmpDir: null,
497
+ frame: 0,
498
+ chunk: 0,
499
+ isFatal: false,
500
+ attempt: 1,
501
+ willRetry: false,
502
+ totalAttempts: 1,
503
+ },
504
+ renderId: params.renderId,
505
+ expectedBucketOwner: options.expectedBucketOwner,
506
+ });
507
+ console.log('Failed to invoke webhook:');
508
+ console.log(err);
509
+ }
510
+ }
339
511
  };
340
512
  const launchHandler = async (params, options) => {
513
+ var _a, _b;
341
514
  if (params.type !== constants_1.LambdaRoutines.launch) {
342
515
  throw new Error('Expected launch type');
343
516
  }
@@ -345,6 +518,9 @@ const launchHandler = async (params, options) => {
345
518
  await innerLaunchHandler(params, options);
346
519
  }
347
520
  catch (err) {
521
+ if (process.env.NODE_ENV === 'test') {
522
+ throw err;
523
+ }
348
524
  console.log('Error occurred', err);
349
525
  await (0, write_lambda_error_1.writeLambdaError)({
350
526
  bucketName: params.bucketName,
@@ -364,6 +540,50 @@ const launchHandler = async (params, options) => {
364
540
  expectedBucketOwner: options.expectedBucketOwner,
365
541
  renderId: params.renderId,
366
542
  });
543
+ if ((_a = params.webhook) === null || _a === void 0 ? void 0 : _a.url) {
544
+ try {
545
+ await (0, invoke_webhook_1.invokeWebhook)({
546
+ url: params.webhook.url,
547
+ secret: (_b = params.webhook.secret) !== null && _b !== void 0 ? _b : null,
548
+ payload: {
549
+ type: 'error',
550
+ renderId: params.renderId,
551
+ expectedBucketOwner: options.expectedBucketOwner,
552
+ bucketName: params.bucketName,
553
+ errors: [err].map((e) => ({
554
+ message: e.message,
555
+ name: e.name,
556
+ stack: e.stack,
557
+ })),
558
+ },
559
+ });
560
+ }
561
+ catch (error) {
562
+ if (process.env.NODE_ENV === 'test') {
563
+ throw error;
564
+ }
565
+ await (0, write_lambda_error_1.writeLambdaError)({
566
+ bucketName: params.bucketName,
567
+ errorInfo: {
568
+ type: 'webhook',
569
+ message: err.message,
570
+ name: err.name,
571
+ stack: err.stack,
572
+ tmpDir: null,
573
+ frame: 0,
574
+ chunk: 0,
575
+ isFatal: false,
576
+ attempt: 1,
577
+ willRetry: false,
578
+ totalAttempts: 1,
579
+ },
580
+ renderId: params.renderId,
581
+ expectedBucketOwner: options.expectedBucketOwner,
582
+ });
583
+ console.log('Failed to invoke webhook:');
584
+ console.log(error);
585
+ }
586
+ }
367
587
  }
368
588
  };
369
589
  exports.launchHandler = launchHandler;
@@ -1,7 +1,7 @@
1
- import { LambdaPayload, RenderProgress } from '../shared/constants';
1
+ import type { LambdaPayload, RenderProgress } from '../shared/constants';
2
2
  declare type Options = {
3
3
  expectedBucketOwner: string;
4
- timeoutInMiliseconds: number;
4
+ timeoutInMilliseconds: number;
5
5
  };
6
6
  export declare const progressHandler: (lambdaParams: LambdaPayload, options: Options) => Promise<RenderProgress>;
7
7
  export {};