@remotion/lambda 4.0.0-forcepublish.7 → 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 (397) 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 +20 -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 +27 -5
  8. package/dist/api/bucket-exists.d.ts +0 -0
  9. package/dist/api/bucket-exists.js +1 -1
  10. package/dist/api/clean-items.d.ts +0 -0
  11. package/dist/api/clean-items.js +1 -1
  12. package/dist/api/create-bucket.d.ts +0 -0
  13. package/dist/api/create-bucket.js +1 -1
  14. package/dist/api/create-function.d.ts +0 -0
  15. package/dist/api/create-function.js +24 -2
  16. package/dist/api/delete-function.d.ts +1 -1
  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 +1 -1
  21. package/dist/api/delete-site.js +1 -6
  22. package/dist/api/deploy-function.d.ts +1 -1
  23. package/dist/api/deploy-function.js +8 -4
  24. package/dist/api/deploy-site.d.ts +11 -2
  25. package/dist/api/deploy-site.js +50 -21
  26. package/dist/api/download-media.d.ts +13 -0
  27. package/dist/api/download-media.js +15 -3
  28. package/dist/api/estimate-price.d.ts +1 -1
  29. package/dist/api/estimate-price.js +1 -1
  30. package/dist/api/get-aws-client.d.ts +7 -3
  31. package/dist/api/get-aws-client.js +10 -3
  32. package/dist/api/get-buckets.d.ts +0 -0
  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 +2 -3
  37. package/dist/api/get-function-info.js +1 -1
  38. package/dist/api/get-functions.d.ts +1 -3
  39. package/dist/api/get-functions.js +3 -4
  40. package/dist/api/get-or-create-bucket.d.ts +1 -1
  41. package/dist/api/get-or-create-bucket.js +4 -9
  42. package/dist/api/get-regions.d.ts +6 -2
  43. package/dist/api/get-regions.js +6 -3
  44. package/dist/api/get-render-progress.d.ts +5 -2
  45. package/dist/api/get-render-progress.js +6 -2
  46. package/dist/api/get-sites.d.ts +2 -2
  47. package/dist/api/get-sites.js +1 -2
  48. package/dist/api/iam-validation/role-permissions.d.ts +0 -0
  49. package/dist/api/iam-validation/role-permissions.js +0 -0
  50. package/dist/api/iam-validation/simulate-rule.d.ts +0 -0
  51. package/dist/api/iam-validation/simulate-rule.js +0 -22
  52. package/dist/api/iam-validation/simulate.d.ts +1 -1
  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 +4 -5
  59. package/dist/api/mock-functions.js +0 -0
  60. package/dist/api/presign-url.d.ts +4 -5
  61. package/dist/api/presign-url.js +4 -4
  62. package/dist/api/render-media-on-lambda.d.ts +27 -12
  63. package/dist/api/render-media-on-lambda.js +47 -14
  64. package/dist/api/render-still-on-lambda.d.ts +5 -1
  65. package/dist/api/render-still-on-lambda.js +23 -5
  66. package/dist/api/upload-dir.d.ts +4 -3
  67. package/dist/api/upload-dir.js +52 -49
  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 +8 -2
  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 +4 -4
  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 +7 -3
  101. package/dist/cli/commands/render/progress.js +55 -45
  102. package/dist/cli/commands/render/render.d.ts +1 -1
  103. package/dist/cli/commands/render/render.js +67 -23
  104. package/dist/cli/commands/sites/create.d.ts +1 -1
  105. package/dist/cli/commands/sites/create.js +25 -25
  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 +9 -10
  110. package/dist/cli/commands/sites/rm.d.ts +0 -0
  111. package/dist/cli/commands/sites/rm.js +6 -16
  112. package/dist/cli/commands/sites/rmall.d.ts +0 -0
  113. package/dist/cli/commands/sites/rmall.js +5 -16
  114. package/dist/cli/commands/still.d.ts +1 -1
  115. package/dist/cli/commands/still.js +33 -25
  116. package/dist/cli/get-aws-region.d.ts +0 -0
  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 +19 -6
  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 +8 -2
  139. package/dist/client.js +9 -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 +1 -5
  143. package/dist/functions/chunk-optimization/plan-frame-ranges.js +1 -14
  144. package/dist/functions/chunk-optimization/types.d.ts +0 -12
  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 +0 -0
  151. package/dist/functions/helpers/calculate-chunk-times.js +0 -0
  152. package/dist/functions/helpers/calculate-price-from-bucket.d.ts +0 -0
  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 +15 -5
  159. package/dist/functions/helpers/concat-videos.js +34 -32
  160. package/dist/functions/helpers/create-post-render-data.d.ts +0 -0
  161. package/dist/functions/helpers/create-post-render-data.js +1 -13
  162. package/dist/functions/helpers/delete-chunks.d.ts +0 -0
  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 +3 -1
  167. package/dist/functions/helpers/find-output-file-in-bucket.js +12 -10
  168. package/dist/functions/helpers/format-costs-info.d.ts +0 -0
  169. package/dist/functions/helpers/format-costs-info.js +0 -0
  170. package/dist/functions/helpers/get-browser-instance.d.ts +0 -0
  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 +0 -0
  175. package/dist/functions/helpers/get-cleanup-progress.js +0 -0
  176. package/dist/functions/helpers/get-current-architecture.d.ts +0 -0
  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 -8
  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 +1 -1
  188. package/dist/functions/helpers/get-final-encoding-status.d.ts +2 -4
  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 +1 -5
  193. package/dist/functions/helpers/get-lambdas-invoked-stats.js +2 -10
  194. package/dist/functions/helpers/get-output-url-from-metadata.d.ts +2 -1
  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 +0 -0
  199. package/dist/functions/helpers/get-post-render-data.js +0 -0
  200. package/dist/functions/helpers/get-progress.d.ts +4 -2
  201. package/dist/functions/helpers/get-progress.js +54 -44
  202. package/dist/functions/helpers/get-render-metadata.d.ts +0 -0
  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 +0 -0
  207. package/dist/functions/helpers/get-retry-stats.js +1 -1
  208. package/dist/functions/helpers/get-time-to-finish.d.ts +0 -0
  209. package/dist/functions/helpers/get-time-to-finish.js +0 -0
  210. package/dist/functions/helpers/inspect-errors.d.ts +0 -0
  211. package/dist/functions/helpers/inspect-errors.js +0 -0
  212. package/dist/functions/helpers/io.d.ts +17 -1
  213. package/dist/functions/helpers/io.js +24 -7
  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 +0 -0
  221. package/dist/functions/helpers/min-max.js +0 -0
  222. package/dist/functions/helpers/print-cloudwatch-helper.d.ts +0 -0
  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 +3 -1
  227. package/dist/functions/helpers/read-with-progress.js +3 -3
  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 +3 -1
  231. package/dist/functions/helpers/validate-composition.js +8 -2
  232. package/dist/functions/helpers/write-lambda-error.d.ts +1 -1
  233. package/dist/functions/helpers/write-lambda-error.js +1 -0
  234. package/dist/functions/helpers/write-post-render-data.d.ts +0 -0
  235. package/dist/functions/helpers/write-post-render-data.js +1 -0
  236. package/dist/functions/index.d.ts +0 -0
  237. package/dist/functions/index.js +17 -5
  238. package/dist/functions/info.d.ts +2 -2
  239. package/dist/functions/info.js +2 -1
  240. package/dist/functions/launch.d.ts +1 -0
  241. package/dist/functions/launch.js +315 -119
  242. package/dist/functions/progress.d.ts +1 -1
  243. package/dist/functions/progress.js +10 -1
  244. package/dist/functions/renderer.d.ts +0 -0
  245. package/dist/functions/renderer.js +83 -29
  246. package/dist/functions/start.d.ts +5 -1
  247. package/dist/functions/start.js +39 -5
  248. package/dist/functions/still.d.ts +0 -0
  249. package/dist/functions/still.js +66 -21
  250. package/dist/index.d.ts +27 -6
  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 +0 -0
  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 +16 -2
  263. package/dist/shared/aws-clients.js +118 -26
  264. package/dist/shared/bundle-site.d.ts +2 -1
  265. package/dist/shared/bundle-site.js +0 -0
  266. package/dist/shared/call-lambda.d.ts +0 -0
  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 +3 -0
  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 +90 -27
  275. package/dist/shared/constants.js +20 -9
  276. package/dist/shared/content-disposition-header.d.ts +0 -0
  277. package/dist/shared/content-disposition-header.js +0 -0
  278. package/dist/shared/convert-to-serve-url.d.ts +5 -1
  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 +0 -0
  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 +1 -2
  293. package/dist/shared/get-function-version.js +0 -0
  294. package/dist/shared/get-most-expensive-chunks.d.ts +1 -1
  295. package/dist/shared/get-most-expensive-chunks.js +3 -2
  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 +87 -1
  299. package/dist/shared/hosted-layers.js +443 -134
  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 +0 -0
  307. package/dist/shared/make-s3-key.js +0 -0
  308. package/dist/shared/make-s3-url.d.ts +0 -0
  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 +0 -0
  319. package/dist/shared/random-hash.js +0 -0
  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 +2 -0
  323. package/dist/shared/return-values.js +0 -0
  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 +0 -0
  329. package/dist/shared/stream-to-string.js +0 -0
  330. package/dist/shared/truthy.d.ts +0 -0
  331. package/dist/shared/truthy.js +0 -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 +0 -0
  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 +0 -0
  339. package/dist/shared/validate-custom-role-arn.js +0 -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 +0 -0
  343. package/dist/shared/validate-download-behavior.js +0 -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 +1 -1
  347. package/dist/shared/validate-lambda-codec.js +1 -1
  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 -0
  353. package/dist/shared/validate-presign-expiration.js +0 -0
  354. package/dist/shared/validate-privacy.d.ts +0 -0
  355. package/dist/shared/validate-privacy.js +0 -0
  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 +52 -27
  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/get-cloudwatch-stream-url.d.ts +0 -8
  376. package/dist/cli/helpers/get-cloudwatch-stream-url.js +0 -7
  377. package/dist/functions/chunk-optimization/can-use-optimization.d.ts +0 -6
  378. package/dist/functions/chunk-optimization/can-use-optimization.js +0 -23
  379. package/dist/functions/chunk-optimization/collect-data.d.ts +0 -9
  380. package/dist/functions/chunk-optimization/collect-data.js +0 -27
  381. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +0 -3
  382. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.js +0 -11
  383. package/dist/functions/chunk-optimization/get-profile-duration.d.ts +0 -3
  384. package/dist/functions/chunk-optimization/get-profile-duration.js +0 -18
  385. package/dist/functions/chunk-optimization/is-valid-profile.d.ts +0 -2
  386. package/dist/functions/chunk-optimization/is-valid-profile.js +0 -12
  387. package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +0 -2
  388. package/dist/functions/chunk-optimization/optimize-invocation-order.js +0 -19
  389. package/dist/functions/chunk-optimization/optimize-profile.d.ts +0 -9
  390. package/dist/functions/chunk-optimization/optimize-profile.js +0 -74
  391. package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +0 -17
  392. package/dist/functions/chunk-optimization/s3-optimization-file.js +0 -46
  393. package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +0 -7
  394. package/dist/functions/chunk-optimization/simulate-frame-ranges.js +0 -47
  395. package/dist/functions/chunk-optimization/sort-by-duration.d.ts +0 -2
  396. package/dist/functions/chunk-optimization/sort-by-duration.js +0 -25
  397. 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,10 +57,10 @@ 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");
42
- const callFunctionWithRetry = async (payload, retries = 0) => {
60
+ const callFunctionWithRetry = async ({ payload, retries, functionName, }) => {
43
61
  try {
44
62
  await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
45
- FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
63
+ FunctionName: functionName,
46
64
  // @ts-expect-error
47
65
  Payload: JSON.stringify(payload),
48
66
  InvocationType: 'Event',
@@ -56,32 +74,79 @@ const callFunctionWithRetry = async (payload, retries = 0) => {
56
74
  await new Promise((resolve) => {
57
75
  setTimeout(resolve, 1000);
58
76
  });
59
- return callFunctionWithRetry(payload, retries + 1);
77
+ return callFunctionWithRetry({
78
+ payload,
79
+ retries: retries + 1,
80
+ functionName,
81
+ });
60
82
  }
61
83
  }
62
84
  };
63
85
  const innerLaunchHandler = async (params, options) => {
64
- var _a, _b;
86
+ var _a, _b, _c, _d, _e;
65
87
  if (params.type !== constants_1.LambdaRoutines.launch) {
66
88
  throw new Error('Expected launch type');
67
89
  }
90
+ const functionName = (_a = params.rendererFunctionName) !== null && _a !== void 0 ? _a : process.env.AWS_LAMBDA_FUNCTION_NAME;
68
91
  const startedDate = Date.now();
69
- const [browserInstance, optimization] = await Promise.all([
70
- (0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'), params.chromiumOptions),
71
- (0, s3_optimization_file_1.getOptimization)({
72
- bucketName: params.bucketName,
73
- siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
74
- compositionId: params.composition,
75
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
76
- expectedBucketOwner: options.expectedBucketOwner,
77
- }),
78
- ]);
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);
79
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
+ });
80
145
  const comp = await (0, validate_composition_1.validateComposition)({
81
146
  serveUrl: params.serveUrl,
82
147
  composition: params.composition,
83
148
  browserInstance,
84
- inputProps: params.inputProps,
149
+ inputProps: await inputPropsPromise,
85
150
  envVariables: params.envVariables,
86
151
  ffmpegExecutable: null,
87
152
  ffprobeExecutable: null,
@@ -89,28 +154,32 @@ const innerLaunchHandler = async (params, options) => {
89
154
  chromiumOptions: params.chromiumOptions,
90
155
  port: null,
91
156
  downloadMap,
157
+ forceHeight: params.forceHeight,
158
+ forceWidth: params.forceWidth,
92
159
  });
93
160
  remotion_1.Internals.validateDurationInFrames(comp.durationInFrames, 'passed to a Lambda render');
94
161
  remotion_1.Internals.validateFps(comp.fps, 'passed to a Lambda render', false);
95
162
  remotion_1.Internals.validateDimension(comp.height, 'height', 'passed to a Lambda render');
96
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');
97
166
  renderer_1.RenderInternals.validateConcurrency(params.concurrencyPerLambda, 'concurrencyPerLambda');
98
167
  const realFrameRange = renderer_1.RenderInternals.getRealFrameRange(comp.durationInFrames, params.frameRange);
99
168
  const frameCount = renderer_1.RenderInternals.getFramesToRender(realFrameRange, params.everyNthFrame);
100
- const framesPerLambda = (_a = params.framesPerLambda) !== null && _a !== void 0 ? _a : (0, best_frames_per_lambda_param_1.bestFramesPerLambdaParam)(frameCount.length);
101
- (0, validate_frames_per_lambda_1.validateFramesPerLambda)(framesPerLambda);
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
+ });
102
174
  const chunkCount = Math.ceil(frameCount.length / framesPerLambda);
103
175
  if (chunkCount > constants_1.MAX_FUNCTIONS_PER_RENDER) {
104
- 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.`);
105
177
  }
106
- (0, validate_outname_1.validateOutname)(params.outName);
178
+ (0, validate_outname_1.validateOutname)(params.outName, params.codec, params.audioCodec);
107
179
  (0, validate_privacy_1.validatePrivacy)(params.privacy);
108
180
  renderer_1.RenderInternals.validatePuppeteerTimeout(params.timeoutInMilliseconds);
109
- const { chunks, didUseOptimization } = (0, plan_frame_ranges_1.planFrameRanges)({
181
+ const { chunks } = (0, plan_frame_ranges_1.planFrameRanges)({
110
182
  framesPerLambda,
111
- optimization,
112
- // TODO: Re-enable chunk optimization later
113
- shouldUseOptimization: false,
114
183
  frameRange: realFrameRange,
115
184
  everyNthFrame: params.everyNthFrame,
116
185
  });
@@ -134,7 +203,7 @@ const innerLaunchHandler = async (params, options) => {
134
203
  inputProps: params.inputProps,
135
204
  renderId: params.renderId,
136
205
  imageFormat: params.imageFormat,
137
- codec: params.codec === 'h264' ? 'h264-mkv' : params.codec,
206
+ codec: params.codec,
138
207
  crf: params.crf,
139
208
  envVariables: params.envVariables,
140
209
  pixelFormat: params.pixelFormat,
@@ -149,6 +218,11 @@ const innerLaunchHandler = async (params, options) => {
149
218
  everyNthFrame: params.everyNthFrame,
150
219
  concurrencyPerLambda: params.concurrencyPerLambda,
151
220
  muted: params.muted,
221
+ audioBitrate: params.audioBitrate,
222
+ videoBitrate: params.videoBitrate,
223
+ launchFunctionConfig: {
224
+ version: version_1.VERSION,
225
+ },
152
226
  };
153
227
  return payload;
154
228
  });
@@ -167,17 +241,43 @@ const innerLaunchHandler = async (params, options) => {
167
241
  compositionId: comp.id,
168
242
  siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
169
243
  codec: params.codec,
170
- usesOptimizationProfile: didUseOptimization,
171
244
  type: 'video',
172
245
  imageFormat: params.imageFormat,
173
246
  inputProps: params.inputProps,
174
- lambdaVersion: constants_1.CURRENT_VERSION,
247
+ lambdaVersion: version_1.VERSION,
175
248
  framesPerLambda,
176
249
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
177
250
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
178
251
  renderId: params.renderId,
179
- 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,
180
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
+ }
181
281
  await (0, io_1.lambdaWriteFile)({
182
282
  bucketName: params.bucketName,
183
283
  key: (0, constants_1.renderMetadataKey)(params.renderId),
@@ -186,39 +286,31 @@ const innerLaunchHandler = async (params, options) => {
186
286
  privacy: 'private',
187
287
  expectedBucketOwner: options.expectedBucketOwner,
188
288
  downloadBehavior: null,
289
+ customCredentials: null,
189
290
  });
190
291
  await Promise.all(lambdaPayloads.map(async (payload, index) => {
191
292
  const callingLambdaTimer = (0, timer_1.timer)('Calling chunk ' + index);
192
- await callFunctionWithRetry(payload);
293
+ await callFunctionWithRetry({ payload, retries: 0, functionName });
193
294
  callingLambdaTimer.end();
194
295
  }));
195
296
  reqSend.end();
196
297
  let lastProgressUploaded = 0;
197
- let encodingStop = null;
198
- const onProgress = (framesEncoded, start) => {
298
+ const onProgress = (framesEncoded) => {
199
299
  const relativeProgress = framesEncoded / frameCount.length;
200
300
  const deltaSinceLastProgressUploaded = relativeProgress - lastProgressUploaded;
201
- if (relativeProgress === 1) {
202
- encodingStop = Date.now();
203
- }
204
301
  if (deltaSinceLastProgressUploaded < 0.1) {
205
302
  return;
206
303
  }
207
304
  lastProgressUploaded = relativeProgress;
208
- const encodingProgress = {
209
- framesEncoded,
210
- totalFrames: frameCount.length,
211
- doneIn: encodingStop ? encodingStop - start : null,
212
- timeToInvoke: null,
213
- };
214
305
  (0, io_1.lambdaWriteFile)({
215
306
  bucketName: params.bucketName,
216
307
  key: (0, constants_1.encodingProgressKey)(params.renderId),
217
- body: JSON.stringify(encodingProgress),
308
+ body: String(Math.round(framesEncoded / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
218
309
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
219
310
  privacy: 'private',
220
311
  expectedBucketOwner: options.expectedBucketOwner,
221
312
  downloadBehavior: null,
313
+ customCredentials: null,
222
314
  }).catch((err) => {
223
315
  (0, write_lambda_error_1.writeLambdaError)({
224
316
  bucketName: params.bucketName,
@@ -240,23 +332,63 @@ const innerLaunchHandler = async (params, options) => {
240
332
  });
241
333
  });
242
334
  };
335
+ const onErrors = async (errors) => {
336
+ var _a;
337
+ console.log('Found Errors', errors);
338
+ if (params.webhook) {
339
+ console.log('Sending webhook with errors');
340
+ await (0, invoke_webhook_1.invokeWebhook)({
341
+ url: params.webhook.url,
342
+ secret: (_a = params.webhook.secret) !== null && _a !== void 0 ? _a : null,
343
+ payload: {
344
+ type: 'error',
345
+ renderId: params.renderId,
346
+ expectedBucketOwner: options.expectedBucketOwner,
347
+ bucketName: params.bucketName,
348
+ errors: errors.slice(0, 5).map((e) => ({
349
+ message: e.message,
350
+ name: e.name,
351
+ stack: e.stack,
352
+ })),
353
+ },
354
+ });
355
+ }
356
+ else {
357
+ console.log('No webhook specified');
358
+ }
359
+ throw new Error('Stopping Lambda function because error occurred: ' + errors[0].stack);
360
+ };
243
361
  const fps = comp.fps / params.everyNthFrame;
244
- const { outfile, cleanupChunksProm, encodingStart } = await (0, concat_videos_1.concatVideosS3)({
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)({
245
370
  bucket: params.bucketName,
246
371
  expectedFiles: chunkCount,
247
- onProgress,
248
- numberOfFrames: frameCount.length,
372
+ outdir,
249
373
  renderId: params.renderId,
250
374
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
251
- codec: params.codec,
252
375
  expectedBucketOwner: options.expectedBucketOwner,
376
+ onErrors,
377
+ });
378
+ const encodingStart = Date.now();
379
+ const { outfile, cleanupChunksProm } = await (0, concat_videos_1.concatVideosS3)({
380
+ onProgress,
381
+ numberOfFrames: frameCount.length,
382
+ codec: params.codec,
253
383
  fps,
254
384
  numberOfGifLoops: params.numberOfGifLoops,
385
+ ffmpegExecutable: null,
386
+ remotionRoot: process.cwd(),
387
+ files,
388
+ outdir,
389
+ audioCodec: params.audioCodec,
255
390
  });
256
- if (!encodingStop) {
257
- encodingStop = Date.now();
258
- }
259
- const { key, renderBucketName } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName);
391
+ const encodingStop = Date.now();
260
392
  const outputSize = fs_1.default.statSync(outfile);
261
393
  await (0, io_1.lambdaWriteFile)({
262
394
  bucketName: renderBucketName,
@@ -266,68 +398,23 @@ const innerLaunchHandler = async (params, options) => {
266
398
  privacy: params.privacy,
267
399
  expectedBucketOwner: options.expectedBucketOwner,
268
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)(),
269
408
  });
270
- let chunkProm = Promise.resolve();
271
- // TODO: Enable in a later release
272
- const enableChunkOptimization = false;
273
- if (enableChunkOptimization) {
274
- const chunkData = await (0, collect_data_1.collectChunkInformation)({
275
- bucketName: params.bucketName,
276
- renderId: params.renderId,
277
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
278
- expectedBucketOwner: options.expectedBucketOwner,
279
- });
280
- const optimizedProfile = (0, optimize_invocation_order_1.optimizeInvocationOrder)((0, optimize_profile_1.optimizeProfileRecursively)(chunkData, 400));
281
- const optimizedFrameRange = (0, get_frame_ranges_from_profile_1.getFrameRangesFromProfile)(optimizedProfile);
282
- chunkProm = (0, is_valid_profile_1.isValidOptimizationProfile)(optimizedProfile)
283
- ? (0, s3_optimization_file_1.writeOptimization)({
284
- bucketName: params.bucketName,
285
- optimization: {
286
- ranges: optimizedFrameRange,
287
- oldTiming: (0, get_profile_duration_1.getProfileDuration)(chunkData),
288
- newTiming: (0, get_profile_duration_1.getProfileDuration)(optimizedProfile),
289
- createdFromRenderId: params.renderId,
290
- framesPerLambda,
291
- lambdaVersion: constants_1.CURRENT_VERSION,
292
- frameRange: realFrameRange,
293
- everyNthFrame: params.everyNthFrame,
294
- },
295
- expectedBucketOwner: options.expectedBucketOwner,
296
- compositionId: params.composition,
297
- siteId: (0, make_s3_url_1.getServeUrlHash)(params.serveUrl),
298
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
299
- })
300
- : Promise.resolve();
301
- }
302
- const [, contents] = await Promise.all([
303
- chunkProm,
304
- (0, io_1.lambdaLs)({
305
- bucketName: params.bucketName,
306
- prefix: (0, constants_1.rendersPrefix)(params.renderId),
307
- expectedBucketOwner: options.expectedBucketOwner,
308
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
309
- }),
310
- ]);
311
- const finalEncodingProgress = {
312
- framesEncoded: frameCount.length,
313
- totalFrames: frameCount.length,
314
- doneIn: encodingStop ? encodingStop - encodingStart : null,
315
- timeToInvoke: (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)({
316
- contents,
317
- renderId: params.renderId,
318
- estimatedRenderLambdaInvokations: renderMetadata.estimatedRenderLambdaInvokations,
319
- checkIfAllLambdasWereInvoked: false,
320
- startDate: renderMetadata.startedDate,
321
- }).timeToInvokeLambdas,
322
- };
323
409
  const finalEncodingProgressProm = (0, io_1.lambdaWriteFile)({
324
410
  bucketName: params.bucketName,
325
411
  key: (0, constants_1.encodingProgressKey)(params.renderId),
326
- body: JSON.stringify(finalEncodingProgress),
412
+ body: String(Math.ceil(frameCount.length / constants_1.ENCODING_PROGRESS_STEP_SIZE)),
327
413
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
328
414
  privacy: 'private',
329
415
  expectedBucketOwner: options.expectedBucketOwner,
330
416
  downloadBehavior: null,
417
+ customCredentials: null,
331
418
  });
332
419
  const errorExplanationsProm = (0, inspect_errors_1.inspectErrors)({
333
420
  contents,
@@ -340,12 +427,20 @@ const innerLaunchHandler = async (params, options) => {
340
427
  chunkCount,
341
428
  renderId: params.renderId,
342
429
  });
343
- 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,
344
440
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
345
- bucket: params.bucketName,
346
- contents,
347
- jobs,
441
+ serialized: params.inputProps,
348
442
  });
443
+ const outputUrl = (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName, customCredentials);
349
444
  const postRenderData = (0, create_post_render_data_1.createPostRenderData)({
350
445
  expectedBucketOwner: options.expectedBucketOwner,
351
446
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
@@ -355,11 +450,11 @@ const innerLaunchHandler = async (params, options) => {
355
450
  contents,
356
451
  errorExplanations: await errorExplanationsProm,
357
452
  timeToEncode: encodingStop - encodingStart,
358
- timeToDelete: await deletProm,
453
+ timeToDelete: (await Promise.all([deletProm, cleanupSerializedInputPropsProm])).reduce((a, b) => a + b, 0),
359
454
  outputFile: {
360
455
  lastModified: Date.now(),
361
456
  size: outputSize.size,
362
- url: (0, get_output_url_from_metadata_1.getOutputUrlFromMetadata)(renderMetadata, params.bucketName),
457
+ url: outputUrl,
363
458
  },
364
459
  });
365
460
  await finalEncodingProgressProm;
@@ -370,9 +465,63 @@ const innerLaunchHandler = async (params, options) => {
370
465
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
371
466
  renderId: params.renderId,
372
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);
373
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
+ }
374
522
  };
375
523
  const launchHandler = async (params, options) => {
524
+ var _a, _b;
376
525
  if (params.type !== constants_1.LambdaRoutines.launch) {
377
526
  throw new Error('Expected launch type');
378
527
  }
@@ -380,6 +529,9 @@ const launchHandler = async (params, options) => {
380
529
  await innerLaunchHandler(params, options);
381
530
  }
382
531
  catch (err) {
532
+ if (process.env.NODE_ENV === 'test') {
533
+ throw err;
534
+ }
383
535
  console.log('Error occurred', err);
384
536
  await (0, write_lambda_error_1.writeLambdaError)({
385
537
  bucketName: params.bucketName,
@@ -399,6 +551,50 @@ const launchHandler = async (params, options) => {
399
551
  expectedBucketOwner: options.expectedBucketOwner,
400
552
  renderId: params.renderId,
401
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
+ }
402
598
  }
403
599
  };
404
600
  exports.launchHandler = launchHandler;
@@ -1,7 +1,7 @@
1
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 {};