@remotion/lambda 4.0.0-imgloading.2 → 4.0.0-jshmr2.1

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