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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/LICENSE.md +8 -8
  2. package/dist/admin/bundle-lambda.d.ts +0 -0
  3. package/dist/admin/bundle-lambda.js +24 -13
  4. package/dist/admin/generate-etag-list.d.ts +1 -0
  5. package/dist/admin/generate-etag-list.js +14 -0
  6. package/dist/admin/make-layer-public.d.ts +0 -0
  7. package/dist/admin/make-layer-public.js +59 -65
  8. package/dist/api/bucket-exists.d.ts +0 -0
  9. package/dist/api/bucket-exists.js +0 -0
  10. package/dist/api/clean-items.d.ts +0 -0
  11. package/dist/api/clean-items.js +1 -1
  12. package/dist/api/create-bucket.d.ts +0 -0
  13. package/dist/api/create-bucket.js +34 -1
  14. package/dist/api/create-function.d.ts +1 -3
  15. package/dist/api/create-function.js +27 -6
  16. package/dist/api/delete-function.d.ts +4 -4
  17. package/dist/api/delete-function.js +3 -3
  18. package/dist/api/delete-render.d.ts +2 -2
  19. package/dist/api/delete-render.js +1 -1
  20. package/dist/api/delete-site.d.ts +7 -7
  21. package/dist/api/delete-site.js +9 -7
  22. package/dist/api/deploy-function.d.ts +11 -13
  23. package/dist/api/deploy-function.js +28 -31
  24. package/dist/api/deploy-site.d.ts +13 -5
  25. package/dist/api/deploy-site.js +61 -25
  26. package/dist/api/download-media.d.ts +4 -8
  27. package/dist/api/download-media.js +5 -9
  28. package/dist/api/estimate-price.d.ts +3 -5
  29. package/dist/api/estimate-price.js +4 -10
  30. package/dist/api/get-aws-client.d.ts +6 -4
  31. package/dist/api/get-aws-client.js +3 -1
  32. package/dist/api/get-buckets.d.ts +2 -2
  33. package/dist/api/get-buckets.js +35 -12
  34. package/dist/api/get-compositions-on-lambda.d.ts +33 -0
  35. package/dist/api/get-compositions-on-lambda.js +57 -0
  36. package/dist/api/get-function-info.d.ts +3 -3
  37. package/dist/api/get-function-info.js +1 -1
  38. package/dist/api/get-functions.d.ts +5 -7
  39. package/dist/api/get-functions.js +8 -10
  40. package/dist/api/get-or-create-bucket.d.ts +6 -6
  41. package/dist/api/get-or-create-bucket.js +10 -18
  42. package/dist/api/get-regions.d.ts +6 -2
  43. package/dist/api/get-regions.js +6 -3
  44. package/dist/api/get-render-progress.d.ts +3 -3
  45. package/dist/api/get-render-progress.js +6 -11
  46. package/dist/api/get-sites.d.ts +6 -6
  47. package/dist/api/get-sites.js +5 -4
  48. package/dist/api/iam-validation/role-permissions.d.ts +0 -0
  49. package/dist/api/iam-validation/role-permissions.js +0 -0
  50. package/dist/api/iam-validation/simulate-rule.d.ts +2 -2
  51. package/dist/api/iam-validation/simulate-rule.js +0 -22
  52. package/dist/api/iam-validation/simulate.d.ts +3 -3
  53. package/dist/api/iam-validation/simulate.js +27 -6
  54. package/dist/api/iam-validation/suggested-policy.d.ts +0 -0
  55. package/dist/api/iam-validation/suggested-policy.js +0 -0
  56. package/dist/api/iam-validation/user-permissions.d.ts +1 -1
  57. package/dist/api/iam-validation/user-permissions.js +3 -8
  58. package/dist/api/make-lambda-payload.d.ts +5 -0
  59. package/dist/api/make-lambda-payload.js +79 -0
  60. package/dist/api/mock-functions.d.ts +0 -0
  61. package/dist/api/mock-functions.js +0 -0
  62. package/dist/api/presign-url.d.ts +4 -5
  63. package/dist/api/presign-url.js +3 -3
  64. package/dist/api/render-media-on-lambda.d.ts +27 -11
  65. package/dist/api/render-media-on-lambda.js +15 -49
  66. package/dist/api/render-still-on-lambda.d.ts +17 -6
  67. package/dist/api/render-still-on-lambda.js +25 -10
  68. package/dist/api/speculate-function-name.d.ts +14 -0
  69. package/dist/api/speculate-function-name.js +22 -0
  70. package/dist/api/upload-dir.d.ts +6 -5
  71. package/dist/api/upload-dir.js +54 -51
  72. package/dist/api/validate-webhook-signature.d.ts +2 -2
  73. package/dist/api/validate-webhook-signature.js +1 -1
  74. package/dist/cli/args.d.ts +7 -5
  75. package/dist/cli/args.js +1 -5
  76. package/dist/cli/commands/compositions/index.d.ts +2 -0
  77. package/dist/cli/commands/compositions/index.js +44 -0
  78. package/dist/cli/commands/functions/deploy.d.ts +0 -0
  79. package/dist/cli/commands/functions/deploy.js +15 -15
  80. package/dist/cli/commands/functions/index.d.ts +0 -0
  81. package/dist/cli/commands/functions/index.js +16 -17
  82. package/dist/cli/commands/functions/ls.d.ts +0 -0
  83. package/dist/cli/commands/functions/ls.js +17 -10
  84. package/dist/cli/commands/functions/rm.d.ts +0 -0
  85. package/dist/cli/commands/functions/rm.js +20 -7
  86. package/dist/cli/commands/functions/rmall.d.ts +0 -0
  87. package/dist/cli/commands/functions/rmall.js +20 -8
  88. package/dist/cli/commands/policies/policies.d.ts +0 -0
  89. package/dist/cli/commands/policies/policies.js +0 -0
  90. package/dist/cli/commands/policies/role.d.ts +0 -0
  91. package/dist/cli/commands/policies/role.js +0 -0
  92. package/dist/cli/commands/policies/user.d.ts +0 -0
  93. package/dist/cli/commands/policies/user.js +0 -0
  94. package/dist/cli/commands/policies/validate.d.ts +0 -0
  95. package/dist/cli/commands/policies/validate.js +0 -0
  96. package/dist/cli/commands/quotas/increase.d.ts +0 -0
  97. package/dist/cli/commands/quotas/increase.js +30 -10
  98. package/dist/cli/commands/quotas/index.d.ts +0 -0
  99. package/dist/cli/commands/quotas/index.js +8 -9
  100. package/dist/cli/commands/quotas/list.d.ts +0 -0
  101. package/dist/cli/commands/quotas/list.js +0 -0
  102. package/dist/cli/commands/regions.d.ts +0 -0
  103. package/dist/cli/commands/regions.js +6 -2
  104. package/dist/cli/commands/render/progress.d.ts +11 -7
  105. package/dist/cli/commands/render/progress.js +55 -45
  106. package/dist/cli/commands/render/render.d.ts +1 -1
  107. package/dist/cli/commands/render/render.js +99 -27
  108. package/dist/cli/commands/sites/create.d.ts +1 -1
  109. package/dist/cli/commands/sites/create.js +37 -33
  110. package/dist/cli/commands/sites/index.d.ts +1 -1
  111. package/dist/cli/commands/sites/index.js +18 -16
  112. package/dist/cli/commands/sites/ls.d.ts +0 -0
  113. package/dist/cli/commands/sites/ls.js +9 -10
  114. package/dist/cli/commands/sites/rm.d.ts +0 -0
  115. package/dist/cli/commands/sites/rm.js +7 -16
  116. package/dist/cli/commands/sites/rmall.d.ts +0 -0
  117. package/dist/cli/commands/sites/rmall.js +5 -16
  118. package/dist/cli/commands/still.d.ts +1 -1
  119. package/dist/cli/commands/still.js +49 -20
  120. package/dist/cli/get-aws-region.d.ts +0 -0
  121. package/dist/cli/get-aws-region.js +0 -0
  122. package/dist/cli/help.d.ts +0 -0
  123. package/dist/cli/help.js +4 -0
  124. package/dist/cli/helpers/confirm.d.ts +0 -0
  125. package/dist/cli/helpers/confirm.js +0 -0
  126. package/dist/cli/helpers/date-string.d.ts +0 -0
  127. package/dist/cli/helpers/date-string.js +0 -0
  128. package/dist/cli/helpers/find-function-name.d.ts +0 -0
  129. package/dist/cli/helpers/find-function-name.js +35 -6
  130. package/dist/cli/helpers/progress-bar.d.ts +12 -7
  131. package/dist/cli/helpers/progress-bar.js +20 -11
  132. package/dist/cli/helpers/quit.d.ts +0 -0
  133. package/dist/cli/helpers/quit.js +0 -0
  134. package/dist/cli/helpers/yes-or-no.d.ts +0 -0
  135. package/dist/cli/helpers/yes-or-no.js +0 -0
  136. package/dist/cli/index.d.ts +1 -1
  137. package/dist/cli/index.js +23 -12
  138. package/dist/cli/is-cli.d.ts +0 -0
  139. package/dist/cli/is-cli.js +0 -0
  140. package/dist/cli/log.d.ts +14 -0
  141. package/dist/cli/log.js +0 -0
  142. package/dist/client.d.ts +8 -2
  143. package/dist/client.js +9 -1
  144. package/dist/defaults.d.ts +0 -0
  145. package/dist/defaults.js +0 -0
  146. package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +1 -5
  147. package/dist/functions/chunk-optimization/plan-frame-ranges.js +2 -15
  148. package/dist/functions/chunk-optimization/types.d.ts +2 -13
  149. package/dist/functions/chunk-optimization/types.js +0 -0
  150. package/dist/functions/compositions.d.ts +8 -0
  151. package/dist/functions/compositions.js +59 -0
  152. package/dist/functions/helpers/best-frames-per-lambda-param.d.ts +0 -0
  153. package/dist/functions/helpers/best-frames-per-lambda-param.js +0 -0
  154. package/dist/functions/helpers/calculate-chunk-times.d.ts +0 -0
  155. package/dist/functions/helpers/calculate-chunk-times.js +0 -0
  156. package/dist/functions/helpers/calculate-price-from-bucket.d.ts +1 -3
  157. package/dist/functions/helpers/calculate-price-from-bucket.js +1 -2
  158. package/dist/functions/helpers/check-if-render-exists.d.ts +0 -0
  159. package/dist/functions/helpers/check-if-render-exists.js +0 -0
  160. package/dist/functions/helpers/clean-tmpdir.d.ts +0 -0
  161. package/dist/functions/helpers/clean-tmpdir.js +8 -8
  162. package/dist/functions/helpers/concat-videos.d.ts +13 -5
  163. package/dist/functions/helpers/concat-videos.js +38 -39
  164. package/dist/functions/helpers/create-post-render-data.d.ts +0 -0
  165. package/dist/functions/helpers/create-post-render-data.js +1 -15
  166. package/dist/functions/helpers/delete-chunks.d.ts +0 -0
  167. package/dist/functions/helpers/delete-chunks.js +0 -0
  168. package/dist/functions/helpers/expected-out-name.d.ts +0 -0
  169. package/dist/functions/helpers/expected-out-name.js +2 -2
  170. package/dist/functions/helpers/find-output-file-in-bucket.d.ts +1 -1
  171. package/dist/functions/helpers/find-output-file-in-bucket.js +0 -0
  172. package/dist/functions/helpers/format-costs-info.d.ts +0 -0
  173. package/dist/functions/helpers/format-costs-info.js +0 -0
  174. package/dist/functions/helpers/get-browser-instance.d.ts +2 -3
  175. package/dist/functions/helpers/get-browser-instance.js +9 -5
  176. package/dist/functions/helpers/get-chromium-executable-path.d.ts +1 -1
  177. package/dist/functions/helpers/get-chromium-executable-path.js +8 -6
  178. package/dist/functions/helpers/get-cleanup-progress.d.ts +0 -0
  179. package/dist/functions/helpers/get-cleanup-progress.js +0 -0
  180. package/dist/functions/helpers/get-current-region.d.ts +1 -1
  181. package/dist/functions/helpers/get-current-region.js +0 -0
  182. package/dist/functions/helpers/get-custom-out-name.d.ts +0 -0
  183. package/dist/functions/helpers/get-custom-out-name.js +1 -1
  184. package/dist/functions/helpers/get-encoding-metadata.d.ts +5 -8
  185. package/dist/functions/helpers/get-encoding-metadata.js +7 -17
  186. package/dist/functions/helpers/get-files-in-folder.d.ts +1 -1
  187. package/dist/functions/helpers/get-files-in-folder.js +5 -5
  188. package/dist/functions/helpers/get-files-to-delete.d.ts +1 -1
  189. package/dist/functions/helpers/get-files-to-delete.js +0 -0
  190. package/dist/functions/helpers/get-final-encoding-status.d.ts +2 -4
  191. package/dist/functions/helpers/get-final-encoding-status.js +1 -4
  192. package/dist/functions/helpers/get-folder-size.d.ts +0 -0
  193. package/dist/functions/helpers/get-folder-size.js +0 -0
  194. package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +2 -6
  195. package/dist/functions/helpers/get-lambdas-invoked-stats.js +1 -9
  196. package/dist/functions/helpers/get-output-url-from-metadata.d.ts +0 -0
  197. package/dist/functions/helpers/get-output-url-from-metadata.js +0 -0
  198. package/dist/functions/helpers/get-overall-progress.d.ts +2 -1
  199. package/dist/functions/helpers/get-overall-progress.js +7 -5
  200. package/dist/functions/helpers/get-post-render-data.d.ts +0 -0
  201. package/dist/functions/helpers/get-post-render-data.js +0 -0
  202. package/dist/functions/helpers/get-progress.d.ts +0 -0
  203. package/dist/functions/helpers/get-progress.js +43 -42
  204. package/dist/functions/helpers/get-render-metadata.d.ts +0 -0
  205. package/dist/functions/helpers/get-render-metadata.js +0 -0
  206. package/dist/functions/helpers/get-rendered-frames-progress.d.ts +8 -0
  207. package/dist/functions/helpers/get-rendered-frames-progress.js +37 -0
  208. package/dist/functions/helpers/get-retry-stats.d.ts +1 -1
  209. package/dist/functions/helpers/get-retry-stats.js +0 -0
  210. package/dist/functions/helpers/get-time-to-finish.d.ts +0 -0
  211. package/dist/functions/helpers/get-time-to-finish.js +0 -0
  212. package/dist/functions/helpers/inspect-errors.d.ts +0 -0
  213. package/dist/functions/helpers/inspect-errors.js +0 -0
  214. package/dist/functions/helpers/io.d.ts +10 -4
  215. package/dist/functions/helpers/io.js +25 -3
  216. package/dist/functions/helpers/is-enosp-err.d.ts +0 -0
  217. package/dist/functions/helpers/is-enosp-err.js +1 -1
  218. package/dist/functions/helpers/is-warm.d.ts +0 -0
  219. package/dist/functions/helpers/is-warm.js +0 -0
  220. package/dist/functions/helpers/make-timeout-error.d.ts +8 -0
  221. package/dist/functions/helpers/make-timeout-error.js +35 -0
  222. package/dist/functions/helpers/make-timeout-message.d.ts +6 -0
  223. package/dist/functions/helpers/make-timeout-message.js +31 -0
  224. package/dist/functions/helpers/min-max.d.ts +0 -0
  225. package/dist/functions/helpers/min-max.js +0 -0
  226. package/dist/functions/helpers/print-cloudwatch-helper.d.ts +0 -0
  227. package/dist/functions/helpers/print-cloudwatch-helper.js +0 -0
  228. package/dist/functions/helpers/print-concurrency-curve.d.ts +0 -0
  229. package/dist/functions/helpers/print-concurrency-curve.js +0 -0
  230. package/dist/functions/helpers/read-with-progress.d.ts +1 -1
  231. package/dist/functions/helpers/read-with-progress.js +1 -1
  232. package/dist/functions/helpers/streamify-response.d.ts +16 -0
  233. package/dist/functions/helpers/streamify-response.js +67 -0
  234. package/dist/functions/helpers/timer.d.ts +0 -0
  235. package/dist/functions/helpers/timer.js +0 -0
  236. package/dist/functions/helpers/validate-composition.d.ts +10 -9
  237. package/dist/functions/helpers/validate-composition.js +16 -13
  238. package/dist/functions/helpers/write-lambda-error.d.ts +2 -2
  239. package/dist/functions/helpers/write-lambda-error.js +0 -0
  240. package/dist/functions/helpers/write-post-render-data.d.ts +0 -0
  241. package/dist/functions/helpers/write-post-render-data.js +0 -0
  242. package/dist/functions/index.d.ts +1 -7
  243. package/dist/functions/index.js +43 -10
  244. package/dist/functions/info.d.ts +0 -0
  245. package/dist/functions/info.js +0 -0
  246. package/dist/functions/launch.d.ts +2 -1
  247. package/dist/functions/launch.js +151 -134
  248. package/dist/functions/progress.d.ts +1 -1
  249. package/dist/functions/progress.js +2 -2
  250. package/dist/functions/renderer.d.ts +1 -1
  251. package/dist/functions/renderer.js +73 -44
  252. package/dist/functions/start.d.ts +1 -1
  253. package/dist/functions/start.js +21 -8
  254. package/dist/functions/still.d.ts +1 -1
  255. package/dist/functions/still.js +78 -37
  256. package/dist/index.d.ts +24 -8
  257. package/dist/index.js +23 -6
  258. package/dist/internals.d.ts +3 -1
  259. package/dist/internals.js +3 -0
  260. package/dist/pricing/aws-regions.d.ts +3 -2
  261. package/dist/pricing/aws-regions.js +31 -1
  262. package/dist/pricing/price-per-1-s.d.ts +0 -0
  263. package/dist/pricing/price-per-1-s.js +413 -39
  264. package/dist/regions.d.ts +0 -0
  265. package/dist/regions.js +0 -0
  266. package/dist/shared/await.d.ts +1 -1
  267. package/dist/shared/await.js +0 -0
  268. package/dist/shared/aws-clients.d.ts +6 -3
  269. package/dist/shared/aws-clients.js +75 -13
  270. package/dist/shared/bundle-site.d.ts +0 -0
  271. package/dist/shared/bundle-site.js +0 -0
  272. package/dist/shared/call-lambda.d.ts +0 -0
  273. package/dist/shared/call-lambda.js +27 -2
  274. package/dist/shared/check-credentials.d.ts +0 -0
  275. package/dist/shared/check-credentials.js +3 -0
  276. package/dist/shared/chunk-progress.d.ts +9 -0
  277. package/dist/shared/chunk-progress.js +2034 -0
  278. package/dist/shared/cleanup-serialized-input-props.d.ts +7 -0
  279. package/dist/shared/cleanup-serialized-input-props.js +19 -0
  280. package/dist/shared/constants.d.ts +135 -89
  281. package/dist/shared/constants.js +7 -4
  282. package/dist/shared/content-disposition-header.d.ts +1 -1
  283. package/dist/shared/content-disposition-header.js +0 -0
  284. package/dist/shared/convert-to-serve-url.d.ts +5 -1
  285. package/dist/shared/convert-to-serve-url.js +1 -5
  286. package/dist/shared/deserialize-input-props.d.ts +8 -0
  287. package/dist/shared/deserialize-input-props.js +26 -0
  288. package/dist/shared/docs-url.d.ts +0 -0
  289. package/dist/shared/docs-url.js +0 -0
  290. package/dist/shared/function-zip-path.d.ts +1 -1
  291. package/dist/shared/function-zip-path.js +3 -3
  292. package/dist/shared/get-account-id.d.ts +0 -0
  293. package/dist/shared/get-account-id.js +4 -6
  294. package/dist/shared/{get-cloudwatch-stream-url.d.ts → get-aws-urls.d.ts} +7 -1
  295. package/dist/shared/get-aws-urls.js +12 -0
  296. package/dist/shared/get-etag.d.ts +1 -0
  297. package/dist/shared/get-etag.js +24 -0
  298. package/dist/shared/get-function-version.d.ts +0 -0
  299. package/dist/shared/get-function-version.js +0 -0
  300. package/dist/shared/get-most-expensive-chunks.d.ts +2 -2
  301. package/dist/shared/get-most-expensive-chunks.js +3 -2
  302. package/dist/shared/get-s3-operations.d.ts +10 -0
  303. package/dist/shared/get-s3-operations.js +36 -0
  304. package/dist/shared/hosted-layers.d.ts +5 -8
  305. package/dist/shared/hosted-layers.js +210 -284
  306. package/dist/shared/invoke-webhook.d.ts +5 -18
  307. package/dist/shared/invoke-webhook.js +4 -19
  308. package/dist/shared/is-in-lambda.d.ts +0 -0
  309. package/dist/shared/is-in-lambda.js +0 -0
  310. package/dist/shared/lambda-version-string.d.ts +0 -0
  311. package/dist/shared/lambda-version-string.js +0 -0
  312. package/dist/shared/make-s3-key.d.ts +0 -0
  313. package/dist/shared/make-s3-key.js +2 -2
  314. package/dist/shared/make-s3-url.d.ts +0 -0
  315. package/dist/shared/make-s3-url.js +2 -2
  316. package/dist/shared/p-limit.d.ts +0 -0
  317. package/dist/shared/p-limit.js +0 -0
  318. package/dist/shared/parse-chunk-key.d.ts +4 -0
  319. package/dist/shared/parse-chunk-key.js +14 -0
  320. package/dist/shared/parse-lambda-initialized-key.d.ts +0 -0
  321. package/dist/shared/parse-lambda-initialized-key.js +0 -0
  322. package/dist/shared/parse-lambda-timings-key.d.ts +1 -1
  323. package/dist/shared/parse-lambda-timings-key.js +0 -0
  324. package/dist/shared/random-hash.d.ts +0 -0
  325. package/dist/shared/random-hash.js +0 -0
  326. package/dist/shared/read-dir.d.ts +9 -0
  327. package/dist/shared/read-dir.js +57 -0
  328. package/dist/shared/return-values.d.ts +7 -0
  329. package/dist/shared/return-values.js +0 -0
  330. package/dist/shared/serialize-input-props.d.ts +8 -0
  331. package/dist/shared/serialize-input-props.js +42 -0
  332. package/dist/shared/sleep.d.ts +0 -0
  333. package/dist/shared/sleep.js +0 -0
  334. package/dist/shared/stream-to-string.d.ts +0 -0
  335. package/dist/shared/stream-to-string.js +0 -0
  336. package/dist/shared/truthy.d.ts +1 -1
  337. package/dist/shared/truthy.js +0 -0
  338. package/dist/shared/validate-aws-region.d.ts +0 -0
  339. package/dist/shared/validate-aws-region.js +0 -0
  340. package/dist/shared/validate-bucketname.d.ts +5 -0
  341. package/dist/shared/validate-bucketname.js +19 -1
  342. package/dist/shared/validate-custom-role-arn.d.ts +0 -0
  343. package/dist/shared/validate-custom-role-arn.js +0 -0
  344. package/dist/shared/validate-disk-size-in-mb.d.ts +0 -0
  345. package/dist/shared/validate-disk-size-in-mb.js +0 -0
  346. package/dist/shared/validate-download-behavior.d.ts +0 -0
  347. package/dist/shared/validate-download-behavior.js +0 -0
  348. package/dist/shared/validate-frames-per-lambda.d.ts +0 -0
  349. package/dist/shared/validate-frames-per-lambda.js +0 -0
  350. package/dist/shared/validate-lambda-codec.d.ts +2 -2
  351. package/dist/shared/validate-lambda-codec.js +1 -1
  352. package/dist/shared/validate-memory-size.d.ts +0 -0
  353. package/dist/shared/validate-memory-size.js +0 -0
  354. package/dist/shared/validate-outname.d.ts +2 -2
  355. package/dist/shared/validate-outname.js +16 -10
  356. package/dist/shared/validate-presign-expiration.d.ts +0 -0
  357. package/dist/shared/validate-presign-expiration.js +0 -0
  358. package/dist/shared/validate-privacy.d.ts +1 -1
  359. package/dist/shared/validate-privacy.js +5 -2
  360. package/dist/shared/validate-retention-period.d.ts +0 -0
  361. package/dist/shared/validate-retention-period.js +0 -0
  362. package/dist/shared/validate-retries.d.ts +0 -0
  363. package/dist/shared/validate-retries.js +0 -0
  364. package/dist/shared/validate-serveurl.d.ts +0 -0
  365. package/dist/shared/validate-serveurl.js +0 -0
  366. package/dist/shared/validate-site-name.d.ts +0 -0
  367. package/dist/shared/validate-site-name.js +0 -0
  368. package/dist/shared/validate-timeout.d.ts +0 -0
  369. package/dist/shared/validate-timeout.js +0 -0
  370. package/package.json +89 -65
  371. package/remotionlambda-arm64.zip +0 -0
  372. package/.prettierrc.js +0 -14
  373. package/client.d.ts +0 -1
  374. package/client.js +0 -1
  375. package/dist/api/enable-s3-website.d.ts +0 -5
  376. package/dist/api/enable-s3-website.js +0 -16
  377. package/dist/cli/helpers/determine-image-format.d.ts +0 -10
  378. package/dist/cli/helpers/determine-image-format.js +0 -47
  379. package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +0 -8
  380. package/dist/cli/helpers/get-cloudwatch-stream-url.js +0 -7
  381. package/dist/cli/helpers/webhook-types.d.ts +0 -6
  382. package/dist/cli/helpers/webhook-types.js +0 -2
  383. package/dist/functions/chunk-optimization/can-use-optimization.d.ts +0 -6
  384. package/dist/functions/chunk-optimization/can-use-optimization.js +0 -23
  385. package/dist/functions/chunk-optimization/collect-data.d.ts +0 -9
  386. package/dist/functions/chunk-optimization/collect-data.js +0 -27
  387. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +0 -3
  388. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.js +0 -11
  389. package/dist/functions/chunk-optimization/get-profile-duration.d.ts +0 -3
  390. package/dist/functions/chunk-optimization/get-profile-duration.js +0 -18
  391. package/dist/functions/chunk-optimization/is-valid-profile.d.ts +0 -2
  392. package/dist/functions/chunk-optimization/is-valid-profile.js +0 -12
  393. package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +0 -2
  394. package/dist/functions/chunk-optimization/optimize-invocation-order.js +0 -19
  395. package/dist/functions/chunk-optimization/optimize-profile.d.ts +0 -9
  396. package/dist/functions/chunk-optimization/optimize-profile.js +0 -74
  397. package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +0 -17
  398. package/dist/functions/chunk-optimization/s3-optimization-file.js +0 -47
  399. package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +0 -7
  400. package/dist/functions/chunk-optimization/simulate-frame-ranges.js +0 -47
  401. package/dist/functions/chunk-optimization/sort-by-duration.d.ts +0 -2
  402. package/dist/functions/chunk-optimization/sort-by-duration.js +0 -25
  403. package/dist/functions/helpers/get-current-architecture.d.ts +0 -2
  404. package/dist/functions/helpers/get-current-architecture.js +0 -11
  405. package/dist/shared/get-cloudwatch-stream-url.js +0 -7
  406. package/dist/shared/validate-architecture.d.ts +0 -4
  407. package/dist/shared/validate-architecture.js +0 -14
  408. package/remotionlambda.zip +0 -0
  409. package/tsconfig.json +0 -16
@@ -6,15 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.rendererHandler = void 0;
7
7
  const client_lambda_1 = require("@aws-sdk/client-lambda");
8
8
  const renderer_1 = require("@remotion/renderer");
9
- const fs_1 = __importDefault(require("fs"));
10
- const path_1 = __importDefault(require("path"));
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const version_1 = require("remotion/version");
11
12
  const aws_clients_1 = require("../shared/aws-clients");
13
+ const chunk_progress_1 = require("../shared/chunk-progress");
12
14
  const constants_1 = require("../shared/constants");
13
- const clean_tmpdir_1 = require("./helpers/clean-tmpdir");
15
+ const deserialize_input_props_1 = require("../shared/deserialize-input-props");
14
16
  const get_browser_instance_1 = require("./helpers/get-browser-instance");
17
+ const get_chromium_executable_path_1 = require("./helpers/get-chromium-executable-path");
15
18
  const get_current_region_1 = require("./helpers/get-current-region");
16
- const get_files_in_folder_1 = require("./helpers/get-files-in-folder");
17
- const get_folder_size_1 = require("./helpers/get-folder-size");
18
19
  const io_1 = require("./helpers/io");
19
20
  const write_lambda_error_1 = require("./helpers/write-lambda-error");
20
21
  const renderHandler = async (params, options, logs) => {
@@ -22,7 +23,16 @@ const renderHandler = async (params, options, logs) => {
22
23
  if (params.type !== constants_1.LambdaRoutines.renderer) {
23
24
  throw new Error('Params must be renderer');
24
25
  }
25
- const browserInstance = await (0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'), (_a = params.chromiumOptions) !== null && _a !== void 0 ? _a : {});
26
+ if (params.launchFunctionConfig.version !== version_1.VERSION) {
27
+ throw new Error(`The version of the function that was specified as "rendererFunctionName" is ${version_1.VERSION} but the version of the function that invoked the render is ${params.launchFunctionConfig.version}. Please make sure that the version of the function that is specified as "rendererFunctionName" is the same as the version of the function that is invoked.`);
28
+ }
29
+ const inputPropsPromise = (0, deserialize_input_props_1.deserializeInputProps)({
30
+ bucketName: params.bucketName,
31
+ expectedBucketOwner: options.expectedBucketOwner,
32
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
33
+ serialized: params.inputProps,
34
+ });
35
+ const browserInstance = await (0, get_browser_instance_1.getBrowserInstance)(params.logLevel, false, (_a = params.chromiumOptions) !== null && _a !== void 0 ? _a : {});
26
36
  const outputPath = renderer_1.RenderInternals.tmpDir('remotion-render-');
27
37
  if (typeof params.chunk !== 'number') {
28
38
  throw new Error('must pass chunk');
@@ -38,13 +48,18 @@ const renderHandler = async (params, options, logs) => {
38
48
  startDate: start,
39
49
  };
40
50
  const outdir = renderer_1.RenderInternals.tmpDir(constants_1.RENDERER_PATH_TOKEN);
41
- const outputLocation = path_1.default.join(outdir, `localchunk-${String(params.chunk).padStart(8, '0')}.${renderer_1.RenderInternals.getFileExtensionFromCodec(params.codec, 'chunk')}`);
42
- const chunkCodec = params.codec === 'gif' ? 'h264-mkv' : params.codec;
43
- const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
51
+ const chunkCodec = params.codec === 'gif' || params.codec === 'h264'
52
+ ? 'h264-mkv'
53
+ : params.codec;
54
+ const outputLocation = node_path_1.default.join(outdir, `localchunk-${String(params.chunk).padStart(8, '0')}.${renderer_1.RenderInternals.getFileExtensionFromCodec(chunkCodec, renderer_1.RenderInternals.getDefaultAudioCodec({
55
+ codec: params.codec,
56
+ preferLossless: true,
57
+ }))}`);
44
58
  const downloads = {};
59
+ const inputProps = await inputPropsPromise;
45
60
  await new Promise((resolve, reject) => {
46
- var _a;
47
- (0, renderer_1.renderMedia)({
61
+ var _a, _b, _c, _d;
62
+ renderer_1.RenderInternals.internalRenderMedia({
48
63
  composition: {
49
64
  id: params.composition,
50
65
  durationInFrames: params.durationInFrames,
@@ -53,12 +68,20 @@ const renderHandler = async (params, options, logs) => {
53
68
  width: params.width,
54
69
  },
55
70
  imageFormat: params.imageFormat,
56
- inputProps: params.inputProps,
71
+ inputProps,
57
72
  frameRange: params.frameRange,
58
73
  onProgress: ({ renderedFrames, encodedFrames, stitchStage }) => {
59
- if (renderedFrames % 10 === 0 &&
74
+ if (renderedFrames % 5 === 0 &&
60
75
  renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose')) {
61
76
  console.log(`Rendered ${renderedFrames} frames, encoded ${encodedFrames} frames, stage = ${stitchStage}`);
77
+ (0, chunk_progress_1.writeLambdaInitializedFile)({
78
+ attempt: params.attempt,
79
+ bucketName: params.bucketName,
80
+ chunk: params.chunk,
81
+ expectedBucketOwner: options.expectedBucketOwner,
82
+ framesRendered: renderedFrames,
83
+ renderId: params.renderId,
84
+ }).catch((err) => reject(err));
62
85
  }
63
86
  const allFrames = renderer_1.RenderInternals.getFramesToRender(params.frameRange, params.everyNthFrame);
64
87
  if (renderedFrames === allFrames.length) {
@@ -68,42 +91,27 @@ const renderHandler = async (params, options, logs) => {
68
91
  },
69
92
  concurrency: params.concurrencyPerLambda,
70
93
  onStart: () => {
71
- (0, io_1.lambdaWriteFile)({
72
- privacy: 'private',
94
+ (0, chunk_progress_1.writeLambdaInitializedFile)({
95
+ attempt: params.attempt,
73
96
  bucketName: params.bucketName,
74
- body: JSON.stringify({
75
- filesCleaned: clean_tmpdir_1.deletedFilesSize,
76
- filesInTmp: fs_1.default.readdirSync('/tmp'),
77
- isWarm: options.isWarm,
78
- deletedFiles: clean_tmpdir_1.deletedFiles,
79
- tmpSize: (0, get_folder_size_1.getFolderSizeRecursively)('/tmp'),
80
- tmpDirFiles: (0, get_files_in_folder_1.getFolderFiles)('/tmp'),
81
- }),
82
- key: (0, constants_1.lambdaChunkInitializedKey)({
83
- renderId: params.renderId,
84
- chunk: params.chunk,
85
- attempt: params.attempt,
86
- }),
87
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
97
+ chunk: params.chunk,
88
98
  expectedBucketOwner: options.expectedBucketOwner,
89
- downloadBehavior: null,
90
- customCredentials: null,
99
+ framesRendered: 0,
100
+ renderId: params.renderId,
91
101
  }).catch((err) => reject(err));
92
102
  },
93
103
  puppeteerInstance: browserInstance,
94
104
  serveUrl: params.serveUrl,
95
- quality: params.quality,
96
- envVariables: params.envVariables,
97
- dumpBrowserLogs: renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
98
- verbose: renderer_1.RenderInternals.isEqualOrBelowLogLevel(params.logLevel, 'verbose'),
105
+ jpegQuality: (_a = params.jpegQuality) !== null && _a !== void 0 ? _a : renderer_1.RenderInternals.DEFAULT_JPEG_QUALITY,
106
+ envVariables: (_b = params.envVariables) !== null && _b !== void 0 ? _b : {},
107
+ logLevel: params.logLevel,
99
108
  onBrowserLog: (log) => {
100
109
  logs.push(log);
101
110
  },
102
111
  outputLocation,
103
112
  codec: chunkCodec,
104
- crf: (_a = params.crf) !== null && _a !== void 0 ? _a : undefined,
105
- ffmpegExecutable: process.env.NODE_ENV === 'test' ? null : '/opt/bin/ffmpeg',
106
- pixelFormat: params.pixelFormat,
113
+ crf: (_c = params.crf) !== null && _c !== void 0 ? _c : null,
114
+ pixelFormat: (_d = params.pixelFormat) !== null && _d !== void 0 ? _d : renderer_1.RenderInternals.DEFAULT_PIXEL_FORMAT,
107
115
  proResProfile: params.proResProfile,
108
116
  onDownload: (src) => {
109
117
  console.log('Downloading', src);
@@ -133,11 +141,30 @@ const renderHandler = async (params, options, logs) => {
133
141
  port: null,
134
142
  everyNthFrame: params.everyNthFrame,
135
143
  numberOfGifLoops: null,
136
- downloadMap,
137
144
  muted: params.muted,
138
145
  enforceAudioTrack: true,
146
+ audioBitrate: params.audioBitrate,
147
+ videoBitrate: params.videoBitrate,
148
+ // Lossless flag takes priority over audio codec
149
+ // https://github.com/remotion-dev/remotion/issues/1647
150
+ // Special flag only in Lambda renderer which improves the audio quality
151
+ audioCodec: null,
152
+ preferLossless: true,
153
+ browserExecutable: (0, get_chromium_executable_path_1.executablePath)(),
154
+ cancelSignal: undefined,
155
+ disallowParallelEncoding: false,
156
+ ffmpegOverride: ({ args }) => args,
157
+ indent: false,
158
+ onCtrlCExit: () => undefined,
159
+ server: undefined,
160
+ })
161
+ .then(({ slowestFrames }) => {
162
+ console.log(`Slowest frames:`);
163
+ slowestFrames.forEach(({ frame, time }) => {
164
+ console.log(` Frame ${frame} (${time.toFixed(3)}ms)`);
165
+ });
166
+ resolve();
139
167
  })
140
- .then(() => resolve())
141
168
  .catch((err) => reject(err));
142
169
  });
143
170
  const endRendered = Date.now();
@@ -151,7 +178,7 @@ const renderHandler = async (params, options, logs) => {
151
178
  renderId: params.renderId,
152
179
  index: params.chunk,
153
180
  }),
154
- body: fs_1.default.createReadStream(outputLocation),
181
+ body: node_fs_1.default.createReadStream(outputLocation),
155
182
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
156
183
  privacy: params.privacy,
157
184
  expectedBucketOwner: options.expectedBucketOwner,
@@ -159,8 +186,8 @@ const renderHandler = async (params, options, logs) => {
159
186
  customCredentials: null,
160
187
  });
161
188
  await Promise.all([
162
- fs_1.default.promises.rm(outputLocation, { recursive: true }),
163
- fs_1.default.promises.rm(outputPath, { recursive: true }),
189
+ node_fs_1.default.promises.rm(outputLocation, { recursive: true }),
190
+ node_fs_1.default.promises.rm(outputPath, { recursive: true }),
164
191
  (0, io_1.lambdaWriteFile)({
165
192
  bucketName: params.bucketName,
166
193
  body: JSON.stringify(condensedTimingData, null, 2),
@@ -188,13 +215,15 @@ const rendererHandler = async (params, options) => {
188
215
  }
189
216
  catch (err) {
190
217
  if (process.env.NODE_ENV === 'test') {
218
+ console.log({ err });
191
219
  throw err;
192
220
  }
193
221
  // If this error is encountered, we can just retry as it
194
222
  // is a very rare error to occur
195
223
  const isBrowserError = err.message.includes('FATAL:zygote_communication_linux.cc') ||
196
224
  err.message.includes('error while loading shared libraries: libnss3.so');
197
- const willRetry = isBrowserError || params.retriesLeft > 0;
225
+ const shouldNotRetry = err.name === 'CancelledError';
226
+ const willRetry = (isBrowserError || params.retriesLeft > 0) && !shouldNotRetry;
198
227
  console.log('Error occurred');
199
228
  console.log(err);
200
229
  await (0, write_lambda_error_1.writeLambdaError)({
@@ -1,5 +1,5 @@
1
1
  import type { LambdaPayload } from '../shared/constants';
2
- declare type Options = {
2
+ type Options = {
3
3
  expectedBucketOwner: string;
4
4
  };
5
5
  export declare const startHandler: (params: LambdaPayload, options: Options) => Promise<{
@@ -6,28 +6,35 @@ const version_1 = require("remotion/version");
6
6
  const get_or_create_bucket_1 = require("../api/get-or-create-bucket");
7
7
  const aws_clients_1 = require("../shared/aws-clients");
8
8
  const constants_1 = require("../shared/constants");
9
+ const convert_to_serve_url_1 = require("../shared/convert-to-serve-url");
9
10
  const random_hash_1 = require("../shared/random-hash");
10
11
  const get_current_region_1 = require("./helpers/get-current-region");
11
12
  const io_1 = require("./helpers/io");
12
13
  const startHandler = async (params, options) => {
13
- var _a;
14
+ var _a, _b;
14
15
  if (params.type !== constants_1.LambdaRoutines.start) {
15
16
  throw new TypeError('Expected type start');
16
17
  }
17
18
  if (params.version !== version_1.VERSION) {
18
19
  if (!params.version) {
19
- throw new Error(`Version mismatch: When calling renderMediaOnLambda(), the deployed Lambda function had version ${version_1.VERSION} but the @remotion/lambda package is an older version. Align the versions.`);
20
+ throw new Error(`Version mismatch: When calling renderMediaOnLambda(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call renderMediaOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
20
21
  }
21
- throw new Error(`Version mismatch: When calling renderMediaOnLambda(), get deployed Lambda function had version ${version_1.VERSION} and the @remotion/lambda package has version ${params.version}. Align the versions.`);
22
+ throw new Error(`Version mismatch: When calling renderMediaOnLambda(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${params.version}. Deploy a new function and use it to call renderMediaOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
22
23
  }
23
- const { bucketName } = await (0, get_or_create_bucket_1.getOrCreateBucket)({
24
+ const region = (0, get_current_region_1.getCurrentRegionInFunction)();
25
+ const bucketName = (_a = params.bucketName) !== null && _a !== void 0 ? _a : (await (0, get_or_create_bucket_1.getOrCreateBucket)({
24
26
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
27
+ })).bucketName;
28
+ const realServeUrl = (0, convert_to_serve_url_1.convertToServeUrl)({
29
+ urlOrId: params.serveUrl,
30
+ region,
31
+ bucketName,
25
32
  });
26
33
  const renderId = (0, random_hash_1.randomHash)({ randomInTests: true });
27
34
  const initialFile = (0, io_1.lambdaWriteFile)({
28
35
  bucketName,
29
36
  downloadBehavior: null,
30
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
37
+ region,
31
38
  body: 'Render was initialized',
32
39
  expectedBucketOwner: options.expectedBucketOwner,
33
40
  key: (0, constants_1.initalizedMetadataKey)(renderId),
@@ -38,7 +45,7 @@ const startHandler = async (params, options) => {
38
45
  type: constants_1.LambdaRoutines.launch,
39
46
  framesPerLambda: params.framesPerLambda,
40
47
  composition: params.composition,
41
- serveUrl: params.serveUrl,
48
+ serveUrl: realServeUrl,
42
49
  inputProps: params.inputProps,
43
50
  bucketName,
44
51
  renderId,
@@ -48,10 +55,10 @@ const startHandler = async (params, options) => {
48
55
  envVariables: params.envVariables,
49
56
  pixelFormat: params.pixelFormat,
50
57
  proResProfile: params.proResProfile,
51
- quality: params.quality,
58
+ jpegQuality: params.jpegQuality,
52
59
  maxRetries: params.maxRetries,
53
60
  privacy: params.privacy,
54
- logLevel: (_a = params.logLevel) !== null && _a !== void 0 ? _a : 'info',
61
+ logLevel: (_b = params.logLevel) !== null && _b !== void 0 ? _b : 'info',
55
62
  frameRange: params.frameRange,
56
63
  outName: params.outName,
57
64
  timeoutInMilliseconds: params.timeoutInMilliseconds,
@@ -64,6 +71,12 @@ const startHandler = async (params, options) => {
64
71
  muted: params.muted,
65
72
  overwrite: params.overwrite,
66
73
  webhook: params.webhook,
74
+ audioBitrate: params.audioBitrate,
75
+ videoBitrate: params.videoBitrate,
76
+ forceHeight: params.forceHeight,
77
+ forceWidth: params.forceWidth,
78
+ rendererFunctionName: params.rendererFunctionName,
79
+ audioCodec: params.audioCodec,
67
80
  };
68
81
  await (0, aws_clients_1.getLambdaClient)((0, get_current_region_1.getCurrentRegionInFunction)()).send(new client_lambda_1.InvokeCommand({
69
82
  FunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME,
@@ -1,5 +1,5 @@
1
1
  import type { LambdaPayload } from '../shared/constants';
2
- declare type Options = {
2
+ type Options = {
3
3
  expectedBucketOwner: string;
4
4
  };
5
5
  declare const innerStillHandler: (lambdaParams: LambdaPayload, renderId: string, options: Options) => Promise<{
@@ -6,13 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.stillHandler = void 0;
7
7
  const client_lambda_1 = require("@aws-sdk/client-lambda");
8
8
  const renderer_1 = require("@remotion/renderer");
9
- const fs_1 = __importDefault(require("fs"));
10
- const path_1 = __importDefault(require("path"));
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
11
  const version_1 = require("remotion/version");
12
12
  const estimate_price_1 = require("../api/estimate-price");
13
13
  const get_or_create_bucket_1 = require("../api/get-or-create-bucket");
14
14
  const aws_clients_1 = require("../shared/aws-clients");
15
+ const cleanup_serialized_input_props_1 = require("../shared/cleanup-serialized-input-props");
15
16
  const constants_1 = require("../shared/constants");
17
+ const convert_to_serve_url_1 = require("../shared/convert-to-serve-url");
18
+ const deserialize_input_props_1 = require("../shared/deserialize-input-props");
16
19
  const make_s3_url_1 = require("../shared/make-s3-url");
17
20
  const random_hash_1 = require("../shared/random-hash");
18
21
  const validate_download_behavior_1 = require("../shared/validate-download-behavior");
@@ -21,48 +24,68 @@ const validate_privacy_1 = require("../shared/validate-privacy");
21
24
  const expected_out_name_1 = require("./helpers/expected-out-name");
22
25
  const format_costs_info_1 = require("./helpers/format-costs-info");
23
26
  const get_browser_instance_1 = require("./helpers/get-browser-instance");
24
- const get_current_architecture_1 = require("./helpers/get-current-architecture");
27
+ const get_chromium_executable_path_1 = require("./helpers/get-chromium-executable-path");
25
28
  const get_current_region_1 = require("./helpers/get-current-region");
26
29
  const get_output_url_from_metadata_1 = require("./helpers/get-output-url-from-metadata");
27
30
  const io_1 = require("./helpers/io");
28
31
  const validate_composition_1 = require("./helpers/validate-composition");
29
32
  const write_lambda_error_1 = require("./helpers/write-lambda-error");
30
33
  const innerStillHandler = async (lambdaParams, renderId, options) => {
31
- var _a, _b;
34
+ var _a, _b, _c, _d, _e, _f;
32
35
  if (lambdaParams.type !== constants_1.LambdaRoutines.still) {
33
36
  throw new TypeError('Expected still type');
34
37
  }
35
38
  if (lambdaParams.version !== version_1.VERSION) {
36
39
  if (!lambdaParams.version) {
37
- throw new Error(`Version mismatch: When calling renderStillOnLambda(), the deployed Lambda function had version ${version_1.VERSION} but the @remotion/lambda package is an older version. Align the versions.`);
40
+ throw new Error(`Version mismatch: When calling renderStillOnLambda(), you called the function ${process.env.AWS_LAMBDA_FUNCTION_NAME} which has the version ${version_1.VERSION} but the @remotion/lambda package is an older version. Deploy a new function and use it to call renderStillOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
38
41
  }
39
- throw new Error(`Version mismatch: When calling renderStillOnLambda(), get deployed Lambda function had version ${version_1.VERSION} and the @remotion/lambda package has version ${lambdaParams.version}. Align the versions.`);
42
+ throw new Error(`Version mismatch: When calling renderStillOnLambda(), you passed ${process.env.AWS_LAMBDA_FUNCTION_NAME} as the function, which has the version ${version_1.VERSION}, but the @remotion/lambda package you used to invoke the function has version ${lambdaParams.version}. Deploy a new function and use it to call renderStillOnLambda(). See: https://www.remotion.dev/docs/lambda/upgrading`);
40
43
  }
41
44
  (0, validate_download_behavior_1.validateDownloadBehavior)(lambdaParams.downloadBehavior);
42
- (0, validate_privacy_1.validatePrivacy)(lambdaParams.privacy);
43
- (0, validate_outname_1.validateOutname)(lambdaParams.outName);
45
+ (0, validate_privacy_1.validatePrivacy)(lambdaParams.privacy, true);
46
+ (0, validate_outname_1.validateOutname)(lambdaParams.outName, null, null);
44
47
  const start = Date.now();
45
- const [{ bucketName }, browserInstance] = await Promise.all([
46
- (0, get_or_create_bucket_1.getOrCreateBucket)({
48
+ const [bucketName, browserInstance] = await Promise.all([
49
+ (_a = lambdaParams.bucketName) !== null && _a !== void 0 ? _a : (0, get_or_create_bucket_1.getOrCreateBucket)({
47
50
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
48
- }),
49
- (0, get_browser_instance_1.getBrowserInstance)(renderer_1.RenderInternals.isEqualOrBelowLogLevel(lambdaParams.logLevel, 'verbose'), (_a = lambdaParams.chromiumOptions) !== null && _a !== void 0 ? _a : {}),
51
+ }).then((b) => b.bucketName),
52
+ (0, get_browser_instance_1.getBrowserInstance)(lambdaParams.logLevel, false, (_b = lambdaParams.chromiumOptions) !== null && _b !== void 0 ? _b : {}),
50
53
  ]);
51
54
  const outputDir = renderer_1.RenderInternals.tmpDir('remotion-render-');
52
- const outputPath = path_1.default.join(outputDir, 'output');
53
- const downloadMap = renderer_1.RenderInternals.makeDownloadMap();
55
+ const outputPath = node_path_1.default.join(outputDir, 'output');
56
+ const region = (0, get_current_region_1.getCurrentRegionInFunction)();
57
+ const inputProps = await (0, deserialize_input_props_1.deserializeInputProps)({
58
+ bucketName,
59
+ expectedBucketOwner: options.expectedBucketOwner,
60
+ region,
61
+ serialized: lambdaParams.inputProps,
62
+ });
63
+ const serveUrl = (0, convert_to_serve_url_1.convertToServeUrl)({
64
+ urlOrId: lambdaParams.serveUrl,
65
+ region,
66
+ bucketName,
67
+ });
68
+ const server = await renderer_1.RenderInternals.prepareServer({
69
+ concurrency: 1,
70
+ indent: false,
71
+ port: null,
72
+ remotionRoot: process.cwd(),
73
+ logLevel: lambdaParams.logLevel,
74
+ webpackConfigOrServeUrl: serveUrl,
75
+ });
54
76
  const composition = await (0, validate_composition_1.validateComposition)({
55
- serveUrl: lambdaParams.serveUrl,
77
+ serveUrl,
56
78
  browserInstance,
57
79
  composition: lambdaParams.composition,
58
- inputProps: lambdaParams.inputProps,
59
- envVariables: lambdaParams.envVariables,
60
- ffmpegExecutable: null,
61
- ffprobeExecutable: null,
80
+ inputProps,
81
+ envVariables: (_c = lambdaParams.envVariables) !== null && _c !== void 0 ? _c : {},
62
82
  chromiumOptions: lambdaParams.chromiumOptions,
63
83
  timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
64
84
  port: null,
65
- downloadMap,
85
+ forceHeight: lambdaParams.forceHeight,
86
+ forceWidth: lambdaParams.forceWidth,
87
+ logLevel: lambdaParams.logLevel,
88
+ server,
66
89
  });
67
90
  const renderMetadata = {
68
91
  startedDate: Date.now(),
@@ -71,10 +94,9 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
71
94
  compositionId: lambdaParams.composition,
72
95
  estimatedTotalLambdaInvokations: 1,
73
96
  estimatedRenderLambdaInvokations: 1,
74
- siteId: (0, make_s3_url_1.getServeUrlHash)(lambdaParams.serveUrl),
97
+ siteId: (0, make_s3_url_1.getServeUrlHash)(serveUrl),
75
98
  totalChunks: 1,
76
99
  type: 'still',
77
- usesOptimizationProfile: false,
78
100
  imageFormat: lambdaParams.imageFormat,
79
101
  inputProps: lambdaParams.inputProps,
80
102
  lambdaVersion: version_1.VERSION,
@@ -82,8 +104,11 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
82
104
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
83
105
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
84
106
  renderId,
85
- outName: (_b = lambdaParams.outName) !== null && _b !== void 0 ? _b : undefined,
107
+ outName: (_d = lambdaParams.outName) !== null && _d !== void 0 ? _d : undefined,
86
108
  privacy: lambdaParams.privacy,
109
+ everyNthFrame: 1,
110
+ frameRange: [lambdaParams.frame, lambdaParams.frame],
111
+ audioCodec: null,
87
112
  };
88
113
  await (0, io_1.lambdaWriteFile)({
89
114
  bucketName,
@@ -95,45 +120,58 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
95
120
  downloadBehavior: null,
96
121
  customCredentials: null,
97
122
  });
98
- await (0, renderer_1.renderStill)({
123
+ await renderer_1.RenderInternals.internalRenderStill({
99
124
  composition,
100
125
  output: outputPath,
101
- serveUrl: lambdaParams.serveUrl,
102
- dumpBrowserLogs: false,
103
- envVariables: lambdaParams.envVariables,
126
+ serveUrl,
127
+ envVariables: (_e = lambdaParams.envVariables) !== null && _e !== void 0 ? _e : {},
104
128
  frame: renderer_1.RenderInternals.convertToPositiveFrameIndex({
105
129
  frame: lambdaParams.frame,
106
130
  durationInFrames: composition.durationInFrames,
107
131
  }),
108
132
  imageFormat: lambdaParams.imageFormat,
109
- inputProps: lambdaParams.inputProps,
133
+ inputProps,
110
134
  overwrite: false,
111
135
  puppeteerInstance: browserInstance,
112
- quality: lambdaParams.quality,
136
+ jpegQuality: (_f = lambdaParams.jpegQuality) !== null && _f !== void 0 ? _f : renderer_1.RenderInternals.DEFAULT_JPEG_QUALITY,
113
137
  chromiumOptions: lambdaParams.chromiumOptions,
114
138
  scale: lambdaParams.scale,
115
139
  timeoutInMilliseconds: lambdaParams.timeoutInMilliseconds,
116
- downloadMap,
140
+ browserExecutable: (0, get_chromium_executable_path_1.executablePath)(),
141
+ cancelSignal: null,
142
+ indent: false,
143
+ onBrowserLog: null,
144
+ onDownload: null,
145
+ port: null,
146
+ server,
147
+ logLevel: lambdaParams.logLevel,
117
148
  });
118
149
  const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, bucketName, (0, expected_out_name_1.getCredentialsFromOutName)(lambdaParams.outName));
119
- const { size } = await fs_1.default.promises.stat(outputPath);
150
+ const { size } = await node_fs_1.default.promises.stat(outputPath);
120
151
  await (0, io_1.lambdaWriteFile)({
121
152
  bucketName: renderBucketName,
122
153
  key,
123
154
  privacy: lambdaParams.privacy,
124
- body: fs_1.default.createReadStream(outputPath),
155
+ body: node_fs_1.default.createReadStream(outputPath),
125
156
  expectedBucketOwner: options.expectedBucketOwner,
126
157
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
127
158
  downloadBehavior: lambdaParams.downloadBehavior,
128
159
  customCredentials,
129
160
  });
130
- await fs_1.default.promises.rm(outputPath, { recursive: true });
161
+ await Promise.all([
162
+ node_fs_1.default.promises.rm(outputPath, { recursive: true }),
163
+ (0, cleanup_serialized_input_props_1.cleanupSerializedInputProps)({
164
+ bucketName,
165
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
166
+ serialized: lambdaParams.inputProps,
167
+ }),
168
+ server.closeServer(true),
169
+ ]);
131
170
  const estimatedPrice = (0, estimate_price_1.estimatePrice)({
132
171
  durationInMiliseconds: Date.now() - start + 100,
133
172
  memorySizeInMb: Number(process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE),
134
173
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
135
174
  lambdasInvoked: 1,
136
- architecture: (0, get_current_architecture_1.getCurrentArchitecture)(),
137
175
  // We cannot determine the ephemeral storage size, so we
138
176
  // overestimate the price, but will only have a miniscule effect (~0.2%)
139
177
  diskSizeInMb: constants_1.MAX_EPHEMERAL_STORAGE_IN_MB,
@@ -147,6 +185,7 @@ const innerStillHandler = async (lambdaParams, renderId, options) => {
147
185
  };
148
186
  };
149
187
  const stillHandler = async (params, options) => {
188
+ var _a;
150
189
  if (params.type !== constants_1.LambdaRoutines.still) {
151
190
  throw new Error('Params must be renderer');
152
191
  }
@@ -171,10 +210,12 @@ const stillHandler = async (params, options) => {
171
210
  // @ts-expect-error
172
211
  Payload: JSON.stringify(retryPayload),
173
212
  }));
174
- const { bucketName } = await (0, get_or_create_bucket_1.getOrCreateBucket)({
213
+ const bucketName = (_a = params.bucketName) !== null && _a !== void 0 ? _a : (await (0, get_or_create_bucket_1.getOrCreateBucket)({
175
214
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
176
- });
177
- (0, write_lambda_error_1.writeLambdaError)({
215
+ })).bucketName;
216
+ // `await` elided on purpose here; using `void` to mark it as intentional
217
+ // eslint-disable-next-line no-void
218
+ void (0, write_lambda_error_1.writeLambdaError)({
178
219
  bucketName,
179
220
  errorInfo: {
180
221
  chunk: null,
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { DeleteFunctionInput } from './api/delete-function';
2
2
  import { deleteFunction } from './api/delete-function';
3
+ import type { DeleteRenderInput } from './api/delete-render';
3
4
  import { deleteRender } from './api/delete-render';
4
5
  import type { DeleteSiteInput, DeleteSiteOutput } from './api/delete-site';
5
6
  import { deleteSite } from './api/delete-site';
@@ -8,11 +9,13 @@ import { deployFunction } from './api/deploy-function';
8
9
  import type { DeploySiteInput, DeploySiteOutput } from './api/deploy-site';
9
10
  import { deploySite } from './api/deploy-site';
10
11
  import type { DownloadMediaInput, DownloadMediaOutput } from './api/download-media';
11
- import { downloadMedia, downloadVideo } from './api/download-media';
12
+ import { downloadMedia } from './api/download-media';
12
13
  import type { EstimatePriceInput } from './api/estimate-price';
13
14
  import { estimatePrice } from './api/estimate-price';
14
15
  import type { GetAwsClientInput, GetAwsClientOutput } from './api/get-aws-client';
15
16
  import { getAwsClient } from './api/get-aws-client';
17
+ import type { GetCompositionsOnLambdaInput, GetCompositionsOnLambdaOutput } from './api/get-compositions-on-lambda';
18
+ import { getCompositionsOnLambda } from './api/get-compositions-on-lambda';
16
19
  import type { FunctionInfo, GetFunctionInfoInput } from './api/get-function-info';
17
20
  import { getFunctionInfo } from './api/get-function-info';
18
21
  import type { GetFunctionsInput } from './api/get-functions';
@@ -23,22 +26,35 @@ import { getRegions } from './api/get-regions';
23
26
  import type { GetRenderInput } from './api/get-render-progress';
24
27
  import { getRenderProgress } from './api/get-render-progress';
25
28
  import type { GetSitesInput, GetSitesOutput } from './api/get-sites';
26
- import { getSites } from './api/get-sites';
27
29
  import type { SimulatePermissionsInput, SimulatePermissionsOutput } from './api/iam-validation/simulate';
28
30
  import { simulatePermissions } from './api/iam-validation/simulate';
29
31
  import { getRolePolicy, getUserPolicy } from './api/iam-validation/suggested-policy';
30
- import { presignUrl } from './api/presign-url';
31
32
  import type { RenderMediaOnLambdaInput, RenderMediaOnLambdaOutput } from './api/render-media-on-lambda';
32
- import { renderMediaOnLambda, renderVideoOnLambda } from './api/render-media-on-lambda';
33
+ import { renderVideoOnLambda } from './api/render-media-on-lambda';
33
34
  import type { RenderStillOnLambdaInput, RenderStillOnLambdaOutput } from './api/render-still-on-lambda';
34
- import { renderStillOnLambda } from './api/render-still-on-lambda';
35
35
  import { validateWebhookSignature } from './api/validate-webhook-signature';
36
36
  import type { LambdaLSInput, LambdaLsReturnType } from './functions/helpers/io';
37
+ import type { EnhancedErrorInfo, LambdaErrorInfo } from './functions/helpers/write-lambda-error';
37
38
  import { LambdaInternals } from './internals';
38
39
  import type { AwsRegion } from './pricing/aws-regions';
39
40
  import type { CustomCredentials } from './shared/aws-clients';
40
41
  import type { RenderProgress } from './shared/constants';
41
42
  import type { WebhookPayload } from './shared/invoke-webhook';
42
- import type { LambdaArchitecture } from './shared/validate-architecture';
43
- export { deleteSite, deployFunction, deploySite, downloadMedia, downloadVideo, getFunctions, getUserPolicy, getRolePolicy, getSites, getOrCreateBucket, getRenderProgress, renderVideoOnLambda, renderMediaOnLambda, simulatePermissions, deleteFunction, getFunctionInfo, estimatePrice, LambdaInternals, renderStillOnLambda, getRegions, getAwsClient, presignUrl, deleteRender, validateWebhookSignature, };
44
- export type { AwsRegion, RenderProgress, DeploySiteInput, DeploySiteOutput, LambdaLsReturnType, LambdaLSInput, DeleteSiteInput, DeleteSiteOutput, EstimatePriceInput, DeployFunctionInput, DeployFunctionOutput, DeleteFunctionInput, GetFunctionInfoInput, FunctionInfo, GetFunctionsInput, GetSitesInput, GetSitesOutput, DownloadMediaInput, DownloadMediaOutput, GetOrCreateBucketInput, GetOrCreateBucketOutput, GetRenderInput, RenderMediaOnLambdaInput, RenderMediaOnLambdaOutput, RenderStillOnLambdaInput, RenderStillOnLambdaOutput, SimulatePermissionsInput, SimulatePermissionsOutput, GetAwsClientInput, GetAwsClientOutput, LambdaArchitecture, CustomCredentials, WebhookPayload, };
43
+ /**
44
+ * @deprecated Import this from `@remotion/lambda/client` instead
45
+ */
46
+ declare const renderMediaOnLambda: (input: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
47
+ /**
48
+ * @deprecated Import this from `@remotion/lambda/client` instead
49
+ */
50
+ declare const renderStillOnLambda: ({ functionName, serveUrl, inputProps, imageFormat, envVariables, quality, jpegQuality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, dumpBrowserLogs, }: RenderStillOnLambdaInput) => Promise<RenderStillOnLambdaOutput>;
51
+ /**
52
+ * @deprecated Import this from `@remotion/lambda/client` instead
53
+ */
54
+ declare const presignUrl: <CheckIfObjectExists extends boolean = false>({ region, bucketName, objectKey, checkIfObjectExists, expiresInSeconds, }: import("./api/presign-url").PresignUrlInput<CheckIfObjectExists>) => Promise<CheckIfObjectExists extends true ? string | null : string>;
55
+ /**
56
+ * @deprecated Import this from `@remotion/lambda/client` instead
57
+ */
58
+ declare const getSites: ({ region, forceBucketName, }: GetSitesInput) => Promise<GetSitesOutput>;
59
+ export { deleteSite, deployFunction, deploySite, downloadMedia, getFunctions, getUserPolicy, getRolePolicy, getSites, getOrCreateBucket, getRenderProgress, renderVideoOnLambda, renderMediaOnLambda, simulatePermissions, deleteFunction, getFunctionInfo, estimatePrice, LambdaInternals, renderStillOnLambda, getRegions, getAwsClient, presignUrl, deleteRender, validateWebhookSignature, getCompositionsOnLambda, };
60
+ export type { AwsRegion, RenderProgress, DeploySiteInput, DeploySiteOutput, LambdaLsReturnType, LambdaLSInput, DeleteSiteInput, DeleteSiteOutput, EstimatePriceInput, DeployFunctionInput, DeployFunctionOutput, DeleteFunctionInput, GetFunctionInfoInput, FunctionInfo, GetFunctionsInput, GetSitesInput, GetSitesOutput, DownloadMediaInput, DownloadMediaOutput, GetOrCreateBucketInput, GetOrCreateBucketOutput, GetRenderInput, RenderMediaOnLambdaInput, RenderMediaOnLambdaOutput, RenderStillOnLambdaInput, RenderStillOnLambdaOutput, SimulatePermissionsInput, SimulatePermissionsOutput, GetAwsClientInput, GetAwsClientOutput, CustomCredentials, WebhookPayload, LambdaErrorInfo, EnhancedErrorInfo, DeleteRenderInput, GetCompositionsOnLambdaOutput, GetCompositionsOnLambdaInput, };