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