@remotion/lambda 4.0.0-webhook.26 → 4.1.0-alpha2

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 +1 -1
  33. package/dist/api/get-buckets.js +26 -9
  34. package/dist/api/get-compositions-on-lambda.d.ts +31 -0
  35. package/dist/api/get-compositions-on-lambda.js +56 -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 +4 -5
  47. package/dist/api/get-sites.js +1 -2
  48. package/dist/api/iam-validation/role-permissions.d.ts +0 -0
  49. package/dist/api/iam-validation/role-permissions.js +0 -0
  50. package/dist/api/iam-validation/simulate-rule.d.ts +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 +77 -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 +25 -11
  65. package/dist/api/render-media-on-lambda.js +16 -49
  66. package/dist/api/render-still-on-lambda.d.ts +15 -6
  67. package/dist/api/render-still-on-lambda.js +23 -9
  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 +36 -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 +6 -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 +15 -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 +60 -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 +1 -2
  175. package/dist/functions/helpers/get-browser-instance.js +7 -3
  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 +152 -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 -42
  252. package/dist/functions/start.d.ts +1 -1
  253. package/dist/functions/start.js +22 -8
  254. package/dist/functions/still.d.ts +1 -1
  255. package/dist/functions/still.js +80 -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 +140 -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 +5 -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
@@ -1,9 +1,6 @@
1
+ import type { _Object } from '@aws-sdk/client-s3';
1
2
  import type { EncodingProgress } from '../../defaults';
2
- import type { AwsRegion } from '../../pricing/aws-regions';
3
- export declare const getEncodingMetadata: ({ exists, bucketName, renderId, region, expectedBucketOwner, }: {
4
- exists: boolean;
5
- bucketName: string;
6
- renderId: string;
7
- region: AwsRegion;
8
- expectedBucketOwner: string;
9
- }) => Promise<EncodingProgress | null>;
3
+ export declare const getEncodingMetadata: ({ exists, frameCount, }: {
4
+ exists: _Object | undefined;
5
+ frameCount: number;
6
+ }) => EncodingProgress | null;
@@ -2,25 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getEncodingMetadata = void 0;
4
4
  const defaults_1 = require("../../defaults");
5
- const stream_to_string_1 = require("../../shared/stream-to-string");
6
- const io_1 = require("./io");
7
- const getEncodingMetadata = async ({ exists, bucketName, renderId, region, expectedBucketOwner, }) => {
5
+ const chunk_progress_1 = require("../../shared/chunk-progress");
6
+ const getEncodingMetadata = ({ exists, frameCount, }) => {
8
7
  if (!exists) {
9
8
  return null;
10
9
  }
11
- try {
12
- const Body = await (0, io_1.lambdaReadFile)({
13
- bucketName,
14
- key: (0, defaults_1.encodingProgressKey)(renderId),
15
- region,
16
- expectedBucketOwner,
17
- });
18
- const encodingProgress = JSON.parse(await (0, stream_to_string_1.streamToString)(Body));
19
- return encodingProgress;
20
- }
21
- catch (err) {
22
- // The file may not yet have been fully written or already have been cleaned up again
23
- return null;
24
- }
10
+ const framesEncoded = (0, chunk_progress_1.getProgressOfChunk)(exists.ETag);
11
+ // We only report every 100 frames encoded so that we are able to report up to 2000 * 100 ETags => 200000 frames
12
+ return {
13
+ framesEncoded: Math.min(frameCount, framesEncoded * defaults_1.ENCODING_PROGRESS_STEP_SIZE),
14
+ };
25
15
  };
26
16
  exports.getEncodingMetadata = getEncodingMetadata;
@@ -1,4 +1,4 @@
1
- export declare type FileNameAndSize = {
1
+ export type FileNameAndSize = {
2
2
  filename: string;
3
3
  size: number;
4
4
  };
@@ -4,15 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getFolderFiles = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
9
  function getFolderFiles(folder) {
10
- const files = fs_1.default.readdirSync(folder);
10
+ const files = node_fs_1.default.readdirSync(folder);
11
11
  const paths = [];
12
12
  files.forEach((file) => {
13
- const full = path_1.default.join(folder, file);
13
+ const full = node_path_1.default.join(folder, file);
14
14
  try {
15
- const stat = fs_1.default.statSync(full);
15
+ const stat = node_fs_1.default.statSync(full);
16
16
  if (stat.isDirectory()) {
17
17
  paths.push(...getFolderFiles(full));
18
18
  }
@@ -1,4 +1,4 @@
1
- export declare type CleanupJob = {
1
+ export type CleanupJob = {
2
2
  name: string;
3
3
  type: 'exact' | 'prefix';
4
4
  };
File without changes
@@ -1,8 +1,6 @@
1
1
  import type { EncodingProgress, RenderMetadata } from '../../shared/constants';
2
- import type { LambdaInvokeStats } from './get-lambdas-invoked-stats';
3
- export declare const getFinalEncodingStatus: ({ encodingStatus: encodingProgress, renderMetadata, outputFileExists, lambdaInvokeStatus, }: {
4
- encodingStatus: EncodingProgress | null;
2
+ export declare const getFinalEncodingStatus: ({ encodingProgress, renderMetadata, outputFileExists, }: {
3
+ encodingProgress: EncodingProgress | null;
5
4
  renderMetadata: RenderMetadata | null;
6
5
  outputFileExists: boolean;
7
- lambdaInvokeStatus: LambdaInvokeStats;
8
6
  }) => EncodingProgress | null;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFinalEncodingStatus = void 0;
4
- const getFinalEncodingStatus = ({ encodingStatus: encodingProgress, renderMetadata, outputFileExists, lambdaInvokeStatus, }) => {
4
+ const getFinalEncodingStatus = ({ encodingProgress, renderMetadata, outputFileExists, }) => {
5
5
  if (!renderMetadata) {
6
6
  return null;
7
7
  }
@@ -11,9 +11,6 @@ const getFinalEncodingStatus = ({ encodingStatus: encodingProgress, renderMetada
11
11
  if (outputFileExists) {
12
12
  return {
13
13
  framesEncoded: renderMetadata.videoConfig.durationInFrames,
14
- totalFrames: renderMetadata.videoConfig.durationInFrames,
15
- doneIn: null,
16
- timeToInvoke: lambdaInvokeStatus.timeToInvokeLambdas,
17
14
  };
18
15
  }
19
16
  return null;
File without changes
File without changes
@@ -1,12 +1,8 @@
1
1
  import type { _Object } from '@aws-sdk/client-s3';
2
- export declare type LambdaInvokeStats = {
3
- timeToInvokeLambdas: number | null;
2
+ export type LambdaInvokeStats = {
4
3
  lambdasInvoked: number;
5
4
  };
6
- export declare const getLambdasInvokedStats: ({ contents, renderId, estimatedRenderLambdaInvokations, startDate, checkIfAllLambdasWereInvoked, }: {
5
+ export declare const getLambdasInvokedStats: ({ contents, renderId, }: {
7
6
  contents: _Object[];
8
7
  renderId: string;
9
- estimatedRenderLambdaInvokations: number | null;
10
- startDate: number | null;
11
- checkIfAllLambdasWereInvoked: boolean;
12
8
  }) => LambdaInvokeStats;
@@ -3,19 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getLambdasInvokedStats = void 0;
4
4
  const constants_1 = require("../../shared/constants");
5
5
  const parse_lambda_initialized_key_1 = require("../../shared/parse-lambda-initialized-key");
6
- const min_max_1 = require("./min-max");
7
- const getLambdasInvokedStats = ({ contents, renderId, estimatedRenderLambdaInvokations, startDate, checkIfAllLambdasWereInvoked, }) => {
8
- var _a;
6
+ const getLambdasInvokedStats = ({ contents, renderId, }) => {
9
7
  const lambdasInvoked = contents
10
8
  .filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.lambdaChunkInitializedPrefix)(renderId)); })
11
9
  .filter((c) => (0, parse_lambda_initialized_key_1.parseLambdaInitializedKey)(c.Key).attempt === 1);
12
- const allLambdasInvoked = !checkIfAllLambdasWereInvoked ||
13
- lambdasInvoked.length === estimatedRenderLambdaInvokations;
14
- const timeToInvokeLambdas = !allLambdasInvoked || startDate === null
15
- ? null
16
- : ((_a = (0, min_max_1.max)(lambdasInvoked.map((l) => { var _a; return (_a = l.LastModified) === null || _a === void 0 ? void 0 : _a.getTime(); }))) !== null && _a !== void 0 ? _a : 0) - startDate;
17
10
  return {
18
- timeToInvokeLambdas,
19
11
  lambdasInvoked: lambdasInvoked.length,
20
12
  };
21
13
  };
@@ -1,6 +1,7 @@
1
- export declare const getOverallProgress: ({ cleanup, encoding, rendering, invoking, }: {
1
+ export declare const getOverallProgress: ({ cleanup, encoding, rendering, invoking, frames, }: {
2
2
  cleanup: number;
3
3
  encoding: number;
4
4
  rendering: number;
5
5
  invoking: number;
6
+ frames: number;
6
7
  }) => number;
@@ -3,14 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getOverallProgress = void 0;
4
4
  const weights = {
5
5
  cleanup: 0.1,
6
- encoding: 0.3,
7
- rendering: 0.3,
8
- invoking: 0.3,
6
+ encoding: 0.225,
7
+ rendering: 0.225,
8
+ frames: 0.225,
9
+ invoking: 0.225,
9
10
  };
10
- const getOverallProgress = ({ cleanup, encoding, rendering, invoking, }) => {
11
+ const getOverallProgress = ({ cleanup, encoding, rendering, invoking, frames, }) => {
11
12
  return (cleanup * weights.cleanup +
12
13
  encoding * weights.encoding +
13
14
  rendering * weights.rendering +
14
- invoking * weights.invoking);
15
+ invoking * weights.invoking +
16
+ frames * weights.frames);
15
17
  };
16
18
  exports.getOverallProgress = getOverallProgress;
File without changes
File without changes
File without changes
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getProgress = void 0;
4
+ const renderer_1 = require("@remotion/renderer");
4
5
  const remotion_1 = require("remotion");
6
+ const chunk_progress_1 = require("../../shared/chunk-progress");
5
7
  const constants_1 = require("../../shared/constants");
6
- const docs_url_1 = require("../../shared/docs-url");
7
8
  const calculate_chunk_times_1 = require("./calculate-chunk-times");
8
9
  const calculate_price_from_bucket_1 = require("./calculate-price-from-bucket");
9
10
  const check_if_render_exists_1 = require("./check-if-render-exists");
@@ -11,7 +12,6 @@ const expected_out_name_1 = require("./expected-out-name");
11
12
  const find_output_file_in_bucket_1 = require("./find-output-file-in-bucket");
12
13
  const format_costs_info_1 = require("./format-costs-info");
13
14
  const get_cleanup_progress_1 = require("./get-cleanup-progress");
14
- const get_current_architecture_1 = require("./get-current-architecture");
15
15
  const get_current_region_1 = require("./get-current-region");
16
16
  const get_encoding_metadata_1 = require("./get-encoding-metadata");
17
17
  const get_final_encoding_status_1 = require("./get-final-encoding-status");
@@ -19,12 +19,14 @@ const get_lambdas_invoked_stats_1 = require("./get-lambdas-invoked-stats");
19
19
  const get_overall_progress_1 = require("./get-overall-progress");
20
20
  const get_post_render_data_1 = require("./get-post-render-data");
21
21
  const get_render_metadata_1 = require("./get-render-metadata");
22
+ const get_rendered_frames_progress_1 = require("./get-rendered-frames-progress");
22
23
  const get_retry_stats_1 = require("./get-retry-stats");
23
24
  const get_time_to_finish_1 = require("./get-time-to-finish");
24
25
  const inspect_errors_1 = require("./inspect-errors");
25
26
  const io_1 = require("./io");
27
+ const make_timeout_error_1 = require("./make-timeout-error");
26
28
  const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region, memorySizeInMb, timeoutInMilliseconds, customCredentials, }) => {
27
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
29
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
28
30
  const postRenderData = await (0, get_post_render_data_1.getPostRenderData)({
29
31
  bucketName,
30
32
  region,
@@ -33,7 +35,9 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
33
35
  });
34
36
  if (postRenderData) {
35
37
  const outData = (0, expected_out_name_1.getExpectedOutName)(postRenderData.renderMetadata, bucketName, customCredentials);
38
+ const totalFrameCount = renderer_1.RenderInternals.getFramesToRender(postRenderData.renderMetadata.frameRange, postRenderData.renderMetadata.everyNthFrame).length;
36
39
  return {
40
+ framesRendered: totalFrameCount,
37
41
  bucket: bucketName,
38
42
  renderSize: postRenderData.renderSize,
39
43
  chunks: postRenderData.renderMetadata.totalChunks,
@@ -51,10 +55,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
51
55
  currentTime: Date.now(),
52
56
  done: true,
53
57
  encodingStatus: {
54
- framesEncoded: postRenderData.renderMetadata.videoConfig.durationInFrames,
55
- totalFrames: postRenderData.renderMetadata.videoConfig.durationInFrames,
56
- doneIn: postRenderData.timeToEncode,
57
- timeToInvoke: postRenderData.timeToInvokeLambdas,
58
+ framesEncoded: totalFrameCount,
58
59
  },
59
60
  errors: postRenderData.errors,
60
61
  fatalErrorEncountered: false,
@@ -64,12 +65,13 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
64
65
  renderMetadata: postRenderData.renderMetadata,
65
66
  timeToFinish: postRenderData.timeToFinish,
66
67
  timeToFinishChunks: postRenderData.timeToRenderChunks,
67
- timeToInvokeLambdas: postRenderData.timeToInvokeLambdas,
68
68
  overallProgress: 1,
69
69
  retriesInfo: postRenderData.retriesInfo,
70
70
  outKey: outData.key,
71
71
  outBucket: outData.renderBucketName,
72
72
  mostExpensiveFrameRanges: (_a = postRenderData.mostExpensiveFrameRanges) !== null && _a !== void 0 ? _a : null,
73
+ timeToEncode: postRenderData.timeToEncode,
74
+ outputSizeInBytes: postRenderData.outputSize,
73
75
  };
74
76
  }
75
77
  const contents = await (0, io_1.lambdaLs)({
@@ -78,16 +80,8 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
78
80
  region: (0, get_current_region_1.getCurrentRegionInFunction)(),
79
81
  expectedBucketOwner,
80
82
  });
81
- (0, check_if_render_exists_1.checkIfRenderExists)(contents, renderId, bucketName, (0, get_current_region_1.getCurrentRegionInFunction)());
82
83
  const renderMetadataExists = Boolean(contents.find((c) => c.Key === (0, constants_1.renderMetadataKey)(renderId)));
83
- const [encodingStatus, renderMetadata, errorExplanations] = await Promise.all([
84
- (0, get_encoding_metadata_1.getEncodingMetadata)({
85
- exists: Boolean(contents.find((c) => c.Key === (0, constants_1.encodingProgressKey)(renderId))),
86
- bucketName,
87
- renderId,
88
- region: (0, get_current_region_1.getCurrentRegionInFunction)(),
89
- expectedBucketOwner,
90
- }),
84
+ const [renderMetadata, errorExplanations] = await Promise.all([
91
85
  renderMetadataExists
92
86
  ? (0, get_render_metadata_1.getRenderMetadata)({
93
87
  bucketName,
@@ -107,6 +101,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
107
101
  if ((renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.type) === 'still') {
108
102
  throw new Error("You don't need to call getRenderProgress() on a still render. Once you have obtained the `renderId`, the render is already done! 😉");
109
103
  }
104
+ (0, check_if_render_exists_1.checkIfRenderExists)(contents, renderId, bucketName, (0, get_current_region_1.getCurrentRegionInFunction)());
110
105
  const outputFile = renderMetadata
111
106
  ? await (0, find_output_file_in_bucket_1.findOutputFileInBucket)({
112
107
  bucketName,
@@ -120,7 +115,6 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
120
115
  renderMetadata,
121
116
  memorySizeInMb,
122
117
  outputFileMetadata: outputFile,
123
- architecture: (0, get_current_architecture_1.getCurrentArchitecture)(),
124
118
  lambdasInvoked: (_b = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _b !== void 0 ? _b : 0,
125
119
  // We cannot determine the ephemeral storage size, so we
126
120
  // overestimate the price, but will only have a miniscule effect (~0.2%)
@@ -137,6 +131,20 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
137
131
  renderMetadata,
138
132
  });
139
133
  const chunks = contents.filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.chunkKey)(renderId)); });
134
+ const framesRendered = renderMetadata
135
+ ? (0, get_rendered_frames_progress_1.getRenderedFramesProgress)({
136
+ contents,
137
+ everyNthFrame: renderMetadata.everyNthFrame,
138
+ frameRange: renderMetadata.frameRange,
139
+ framesPerLambda: renderMetadata.framesPerLambda,
140
+ renderId,
141
+ })
142
+ : 0;
143
+ console.log('etags', contents
144
+ .filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.lambdaChunkInitializedPrefix)(renderId)); })
145
+ .map((c) => {
146
+ return (0, chunk_progress_1.getProgressOfChunk)(c.ETag);
147
+ }));
140
148
  const allChunks = chunks.length === ((_f = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _f !== void 0 ? _f : Infinity);
141
149
  const renderSize = contents
142
150
  .map((c) => { var _a; return (_a = c.Size) !== null && _a !== void 0 ? _a : 0; })
@@ -144,45 +152,37 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
144
152
  const lambdasInvokedStats = (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)({
145
153
  contents,
146
154
  renderId,
147
- estimatedRenderLambdaInvokations: (_g = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _g !== void 0 ? _g : null,
148
- startDate: (_h = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.startedDate) !== null && _h !== void 0 ? _h : null,
149
- checkIfAllLambdasWereInvoked: true,
150
155
  });
151
156
  const retriesInfo = (0, get_retry_stats_1.getRetryStats)({
152
157
  contents,
153
158
  renderId,
154
159
  });
160
+ const frameCount = renderMetadata
161
+ ? renderer_1.RenderInternals.getFramesToRender(renderMetadata.frameRange, renderMetadata.everyNthFrame).length
162
+ : null;
163
+ const encodingStatus = (0, get_encoding_metadata_1.getEncodingMetadata)({
164
+ exists: contents.find((c) => c.Key === (0, constants_1.encodingProgressKey)(renderId)),
165
+ frameCount: frameCount === null ? 0 : frameCount,
166
+ });
155
167
  const finalEncodingStatus = (0, get_final_encoding_status_1.getFinalEncodingStatus)({
156
- encodingStatus,
168
+ encodingProgress: encodingStatus,
157
169
  outputFileExists: Boolean(outputFile),
158
170
  renderMetadata,
159
- lambdaInvokeStatus: lambdasInvokedStats,
160
171
  });
161
172
  const chunkCount = outputFile
162
- ? (_j = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _j !== void 0 ? _j : 0
173
+ ? (_g = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _g !== void 0 ? _g : 0
163
174
  : chunks.length;
164
175
  // We add a 20 second buffer for it, since AWS timeshifts can be quite a lot. Once it's 20sec over the limit, we consider it timed out
165
176
  const isBeyondTimeout = renderMetadata &&
166
177
  Date.now() > renderMetadata.startedDate + timeoutInMilliseconds + 20000;
167
178
  const allErrors = [
168
179
  isBeyondTimeout
169
- ? {
170
- attempt: 1,
171
- chunk: null,
172
- explanation: `The main function timed out after ${timeoutInMilliseconds}ms. Consider increasing the timeout of your function. You can use the "--timeout" parameter when deploying a function via CLI, or the "timeoutInSeconds" parameter when using the deployFunction API. ${docs_url_1.DOCS_URL}/docs/lambda/cli/functions#deploy`,
173
- frame: null,
174
- isFatal: true,
175
- s3Location: '',
176
- stack: new Error().stack,
177
- tmpDir: null,
178
- totalAttempts: 1,
179
- type: 'stitcher',
180
- willRetry: false,
181
- }
180
+ ? (0, make_timeout_error_1.makeTimeoutError)({ timeoutInMilliseconds, renderMetadata, chunks })
182
181
  : null,
183
182
  ...errorExplanations,
184
183
  ].filter(remotion_1.Internals.truthy);
185
184
  return {
185
+ framesRendered,
186
186
  chunks: chunkCount,
187
187
  done: false,
188
188
  encodingStatus,
@@ -190,7 +190,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
190
190
  renderId,
191
191
  renderMetadata,
192
192
  bucket: bucketName,
193
- outputFile: (_k = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _k !== void 0 ? _k : null,
193
+ outputFile: (_h = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _h !== void 0 ? _h : null,
194
194
  timeToFinish,
195
195
  errors: allErrors,
196
196
  fatalErrorEncountered: allErrors.some((f) => f.isFatal && !f.willRetry),
@@ -205,18 +205,17 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
205
205
  type: 'absolute-time',
206
206
  })
207
207
  : null,
208
- timeToInvokeLambdas: (_l = encodingStatus === null || encodingStatus === void 0 ? void 0 : encodingStatus.timeToInvoke) !== null && _l !== void 0 ? _l : lambdasInvokedStats.timeToInvokeLambdas,
209
208
  overallProgress: (0, get_overall_progress_1.getOverallProgress)({
210
209
  cleanup: cleanup ? cleanup.filesDeleted / cleanup.minFilesToDelete : 0,
211
- encoding: finalEncodingStatus && renderMetadata
212
- ? finalEncodingStatus.framesEncoded /
213
- renderMetadata.videoConfig.durationInFrames
210
+ encoding: finalEncodingStatus && renderMetadata && frameCount
211
+ ? finalEncodingStatus.framesEncoded / frameCount
214
212
  : 0,
215
213
  invoking: renderMetadata
216
214
  ? lambdasInvokedStats.lambdasInvoked /
217
215
  renderMetadata.estimatedRenderLambdaInvokations
218
216
  : 0,
219
217
  rendering: renderMetadata ? chunkCount / renderMetadata.totalChunks : 0,
218
+ frames: frameCount === null ? 0 : framesRendered / frameCount,
220
219
  }),
221
220
  retriesInfo,
222
221
  outKey: outputFile && renderMetadata
@@ -227,6 +226,8 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
227
226
  .renderBucketName
228
227
  : null,
229
228
  mostExpensiveFrameRanges: null,
229
+ timeToEncode: null,
230
+ outputSizeInBytes: (_j = outputFile === null || outputFile === void 0 ? void 0 : outputFile.size) !== null && _j !== void 0 ? _j : null,
230
231
  };
231
232
  };
232
233
  exports.getProgress = getProgress;
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ export declare const getRenderedFramesProgress: ({ contents, renderId, framesPerLambda, everyNthFrame, frameRange, }: {
3
+ contents: _Object[];
4
+ renderId: string;
5
+ framesPerLambda: number;
6
+ frameRange: [number, number];
7
+ everyNthFrame: number;
8
+ }) => number;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRenderedFramesProgress = void 0;
4
+ const chunk_progress_1 = require("../../shared/chunk-progress");
5
+ const constants_1 = require("../../shared/constants");
6
+ const parse_chunk_key_1 = require("../../shared/parse-chunk-key");
7
+ const parse_lambda_initialized_key_1 = require("../../shared/parse-lambda-initialized-key");
8
+ const plan_frame_ranges_1 = require("../chunk-optimization/plan-frame-ranges");
9
+ const getRenderedFramesProgress = ({ contents, renderId, framesPerLambda, everyNthFrame, frameRange, }) => {
10
+ const chunkProgress = {};
11
+ const { chunks } = (0, plan_frame_ranges_1.planFrameRanges)({
12
+ everyNthFrame,
13
+ frameRange,
14
+ framesPerLambda,
15
+ });
16
+ // Sort, so only the latest attempt is used
17
+ const sortedChunks = contents
18
+ .filter((c) => {
19
+ return c.Key.startsWith((0, constants_1.lambdaChunkInitializedPrefix)(renderId));
20
+ })
21
+ .sort((a, b) => {
22
+ return a.Key.localeCompare(b.Key);
23
+ });
24
+ for (const chunk of sortedChunks) {
25
+ const key = (0, parse_lambda_initialized_key_1.parseLambdaInitializedKey)(chunk.Key);
26
+ chunkProgress[key.chunk] = (0, chunk_progress_1.getProgressOfChunk)(chunk.ETag);
27
+ }
28
+ for (const chunk of contents.filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.chunkKey)(renderId)); })) {
29
+ const parsed = (0, parse_chunk_key_1.parseLambdaChunkKey)(chunk.Key);
30
+ const frameRangeInChunk = chunks[parsed.chunk];
31
+ chunkProgress[parsed.chunk] =
32
+ frameRangeInChunk[1] - frameRangeInChunk[0] + 1;
33
+ }
34
+ const framesRendered = Object.values(chunkProgress).reduce((a, b) => a + b, 0);
35
+ return framesRendered;
36
+ };
37
+ exports.getRenderedFramesProgress = getRenderedFramesProgress;
@@ -1,5 +1,5 @@
1
1
  import type { _Object } from '@aws-sdk/client-s3';
2
- export declare type ChunkRetry = {
2
+ export type ChunkRetry = {
3
3
  chunk: number;
4
4
  attempt: number;
5
5
  time: number;
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,18 +1,19 @@
1
+ /// <reference types="node" />
1
2
  import type { _Object } from '@aws-sdk/client-s3';
2
- import type { ReadStream } from 'fs';
3
+ import type { ReadStream } from 'node:fs';
3
4
  import type { Readable } from 'stream';
4
5
  import type { AwsRegion } from '../../pricing/aws-regions';
5
6
  import type { CustomCredentials } from '../../shared/aws-clients';
6
7
  import type { Privacy } from '../../shared/constants';
7
8
  import type { DownloadBehavior } from '../../shared/content-disposition-header';
8
- export declare type LambdaLSInput = {
9
+ export type LambdaLSInput = {
9
10
  bucketName: string;
10
11
  prefix: string;
11
12
  region: AwsRegion;
12
13
  expectedBucketOwner: string | null;
13
14
  continuationToken?: string;
14
15
  };
15
- export declare type LambdaLsReturnType = Promise<_Object[]>;
16
+ export type LambdaLsReturnType = Promise<_Object[]>;
16
17
  export declare const lambdaLs: ({ bucketName, prefix, region, expectedBucketOwner, continuationToken, }: LambdaLSInput) => LambdaLsReturnType;
17
18
  export declare const lambdaDeleteFile: ({ bucketName, key, region, customCredentials, }: {
18
19
  region: AwsRegion;
@@ -20,7 +21,7 @@ export declare const lambdaDeleteFile: ({ bucketName, key, region, customCredent
20
21
  key: string;
21
22
  customCredentials: CustomCredentials | null;
22
23
  }) => Promise<void>;
23
- export declare const lambdaWriteFile: ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, customCredentials, }: {
24
+ type LambdaWriteFileInput = {
24
25
  bucketName: string;
25
26
  key: string;
26
27
  body: ReadStream | string;
@@ -29,6 +30,10 @@ export declare const lambdaWriteFile: ({ bucketName, key, body, region, privacy,
29
30
  expectedBucketOwner: string | null;
30
31
  downloadBehavior: DownloadBehavior | null;
31
32
  customCredentials: CustomCredentials | null;
33
+ };
34
+ export declare const tryLambdaWriteFile: ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, customCredentials, }: LambdaWriteFileInput) => Promise<void>;
35
+ export declare const lambdaWriteFile: (params: LambdaWriteFileInput & {
36
+ retries?: number;
32
37
  }) => Promise<void>;
33
38
  export declare const lambdaReadFile: ({ bucketName, key, region, expectedBucketOwner, }: {
34
39
  bucketName: string;
@@ -44,3 +49,4 @@ export declare const lambdaHeadCommand: ({ bucketName, key, region, }: {
44
49
  LastModified?: Date | undefined;
45
50
  ContentLength?: number | undefined;
46
51
  }>;
52
+ export {};
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.lambdaHeadCommand = exports.lambdaReadFile = exports.lambdaWriteFile = exports.lambdaDeleteFile = exports.lambdaLs = void 0;
6
+ exports.lambdaHeadCommand = exports.lambdaReadFile = exports.lambdaWriteFile = exports.tryLambdaWriteFile = exports.lambdaDeleteFile = exports.lambdaLs = void 0;
7
7
  const client_s3_1 = require("@aws-sdk/client-s3");
8
8
  const mime_types_1 = __importDefault(require("mime-types"));
9
9
  const aws_clients_1 = require("../../shared/aws-clients");
@@ -54,7 +54,7 @@ const lambdaDeleteFile = async ({ bucketName, key, region, customCredentials, })
54
54
  }));
55
55
  };
56
56
  exports.lambdaDeleteFile = lambdaDeleteFile;
57
- const lambdaWriteFile = async ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, customCredentials, }) => {
57
+ const tryLambdaWriteFile = async ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, customCredentials, }) => {
58
58
  await (0, aws_clients_1.getS3Client)(region, customCredentials).send(new client_s3_1.PutObjectCommand({
59
59
  Bucket: bucketName,
60
60
  Key: key,
@@ -64,11 +64,33 @@ const lambdaWriteFile = async ({ bucketName, key, body, region, privacy, expecte
64
64
  : privacy === 'private'
65
65
  ? 'private'
66
66
  : 'public-read',
67
- ExpectedBucketOwner: expectedBucketOwner !== null && expectedBucketOwner !== void 0 ? expectedBucketOwner : undefined,
67
+ ExpectedBucketOwner: customCredentials
68
+ ? undefined
69
+ : expectedBucketOwner !== null && expectedBucketOwner !== void 0 ? expectedBucketOwner : undefined,
68
70
  ContentType: mime_types_1.default.lookup(key) || 'application/octet-stream',
69
71
  ContentDisposition: (0, content_disposition_header_1.getContentDispositionHeader)(downloadBehavior),
70
72
  }));
71
73
  };
74
+ exports.tryLambdaWriteFile = tryLambdaWriteFile;
75
+ const lambdaWriteFile = async (params) => {
76
+ var _a;
77
+ const remainingRetries = (_a = params.retries) !== null && _a !== void 0 ? _a : 2;
78
+ try {
79
+ await (0, exports.tryLambdaWriteFile)(params);
80
+ }
81
+ catch (err) {
82
+ if (remainingRetries === 0) {
83
+ throw err;
84
+ }
85
+ console.warn('Failed to write file to Lambda:');
86
+ console.warn(err);
87
+ console.warn(`Retrying (${remainingRetries} retries remaining)...`);
88
+ return (0, exports.lambdaWriteFile)({
89
+ ...params,
90
+ retries: (remainingRetries !== null && remainingRetries !== void 0 ? remainingRetries : 0) - 1,
91
+ });
92
+ }
93
+ };
72
94
  exports.lambdaWriteFile = lambdaWriteFile;
73
95
  const lambdaReadFile = async ({ bucketName, key, region, expectedBucketOwner, }) => {
74
96
  const { Body } = await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.GetObjectCommand({
File without changes
@@ -11,6 +11,6 @@ const isErrInsufficientResourcesErr = (err) => {
11
11
  };
12
12
  exports.isErrInsufficientResourcesErr = isErrInsufficientResourcesErr;
13
13
  const isBrowserCrashedError = (err) => {
14
- return err.includes('Target closed.');
14
+ return err.includes('Target closed.') || err.includes('Session closed');
15
15
  };
16
16
  exports.isBrowserCrashedError = isBrowserCrashedError;
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ import type { RenderMetadata } from '../../defaults';
3
+ import type { EnhancedErrorInfo } from './write-lambda-error';
4
+ export declare const makeTimeoutError: ({ timeoutInMilliseconds, chunks, renderMetadata, }: {
5
+ timeoutInMilliseconds: number;
6
+ chunks: _Object[];
7
+ renderMetadata: RenderMetadata;
8
+ }) => EnhancedErrorInfo;