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

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