@remotion/lambda 4.0.0-preload.17 → 4.0.0-publish.10

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 (128) hide show
  1. package/dist/admin/make-layer-public.js +3 -3
  2. package/dist/api/bucket-exists.d.ts +1 -1
  3. package/dist/api/clean-items.d.ts +1 -1
  4. package/dist/api/create-bucket.d.ts +1 -1
  5. package/dist/api/create-function.d.ts +4 -3
  6. package/dist/api/create-function.js +3 -2
  7. package/dist/api/delete-function.d.ts +1 -1
  8. package/dist/api/delete-site.d.ts +1 -1
  9. package/dist/api/deploy-function.d.ts +3 -2
  10. package/dist/api/deploy-function.js +3 -0
  11. package/dist/api/deploy-site.d.ts +3 -3
  12. package/dist/api/download-media.d.ts +2 -2
  13. package/dist/api/enable-s3-website.d.ts +1 -1
  14. package/dist/api/estimate-price.d.ts +2 -2
  15. package/dist/api/get-aws-client.d.ts +2 -2
  16. package/dist/api/get-aws-client.js +5 -1
  17. package/dist/api/get-buckets.d.ts +1 -1
  18. package/dist/api/get-function-info.d.ts +2 -2
  19. package/dist/api/get-functions.d.ts +2 -2
  20. package/dist/api/get-or-create-bucket.d.ts +1 -1
  21. package/dist/api/get-regions.d.ts +1 -1
  22. package/dist/api/get-render-progress.d.ts +2 -2
  23. package/dist/api/get-sites.d.ts +2 -2
  24. package/dist/api/iam-validation/role-permissions.d.ts +2 -1
  25. package/dist/api/iam-validation/simulate-rule.d.ts +1 -1
  26. package/dist/api/iam-validation/simulate.d.ts +2 -2
  27. package/dist/api/mock-functions.d.ts +3 -3
  28. package/dist/api/presign-url.d.ts +1 -1
  29. package/dist/api/render-media-on-lambda.d.ts +3 -3
  30. package/dist/api/render-still-on-lambda.d.ts +4 -4
  31. package/dist/api/upload-dir.d.ts +2 -2
  32. package/dist/api/upload-dir.js +2 -1
  33. package/dist/cli/args.d.ts +4 -3
  34. package/dist/cli/commands/functions/deploy.js +6 -2
  35. package/dist/cli/commands/render/progress.d.ts +3 -3
  36. package/dist/cli/commands/render/progress.js +11 -3
  37. package/dist/cli/commands/render/render.js +9 -2
  38. package/dist/cli/commands/sites/ls.js +1 -2
  39. package/dist/cli/commands/sites/rm.js +2 -3
  40. package/dist/cli/commands/sites/rmall.js +2 -3
  41. package/dist/cli/commands/still.js +1 -2
  42. package/dist/cli/get-aws-region.d.ts +1 -1
  43. package/dist/cli/helpers/get-cloudwatch-stream-url.d.ts +2 -2
  44. package/dist/cli/helpers/progress-bar.js +1 -2
  45. package/dist/cli/index.js +10 -0
  46. package/dist/defaults.js +5 -1
  47. package/dist/functions/chunk-optimization/can-use-optimization.d.ts +1 -1
  48. package/dist/functions/chunk-optimization/collect-data.d.ts +1 -1
  49. package/dist/functions/chunk-optimization/get-frame-ranges-from-profile.d.ts +1 -1
  50. package/dist/functions/chunk-optimization/get-profile-duration.d.ts +1 -1
  51. package/dist/functions/chunk-optimization/is-valid-profile.d.ts +1 -1
  52. package/dist/functions/chunk-optimization/optimize-invocation-order.d.ts +1 -1
  53. package/dist/functions/chunk-optimization/optimize-profile.d.ts +1 -1
  54. package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +1 -1
  55. package/dist/functions/chunk-optimization/s3-optimization-file.d.ts +2 -2
  56. package/dist/functions/chunk-optimization/simulate-frame-ranges.d.ts +1 -1
  57. package/dist/functions/chunk-optimization/sort-by-duration.d.ts +1 -1
  58. package/dist/functions/chunk-optimization/types.d.ts +1 -1
  59. package/dist/functions/helpers/calculate-chunk-times.d.ts +1 -1
  60. package/dist/functions/helpers/calculate-price-from-bucket.d.ts +4 -4
  61. package/dist/functions/helpers/concat-videos.d.ts +4 -3
  62. package/dist/functions/helpers/concat-videos.js +7 -2
  63. package/dist/functions/helpers/create-post-render-data.d.ts +6 -6
  64. package/dist/functions/helpers/create-post-render-data.js +5 -5
  65. package/dist/functions/helpers/delete-chunks.d.ts +3 -3
  66. package/dist/functions/helpers/expected-out-name.d.ts +1 -1
  67. package/dist/functions/helpers/find-output-file-in-bucket.d.ts +2 -2
  68. package/dist/functions/helpers/format-costs-info.d.ts +1 -1
  69. package/dist/functions/helpers/get-browser-instance.d.ts +2 -1
  70. package/dist/functions/helpers/get-cleanup-progress.d.ts +2 -2
  71. package/dist/functions/helpers/get-current-architecture.d.ts +1 -1
  72. package/dist/functions/helpers/get-encoding-metadata.d.ts +2 -2
  73. package/dist/functions/helpers/get-files-to-delete.js +2 -2
  74. package/dist/functions/helpers/get-final-encoding-status.d.ts +2 -2
  75. package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +1 -1
  76. package/dist/functions/helpers/get-output-url-from-metadata.d.ts +1 -1
  77. package/dist/functions/helpers/get-post-render-data.d.ts +2 -2
  78. package/dist/functions/helpers/get-progress.d.ts +2 -2
  79. package/dist/functions/helpers/get-progress.js +12 -10
  80. package/dist/functions/helpers/get-render-metadata.d.ts +2 -2
  81. package/dist/functions/helpers/get-retry-stats.d.ts +1 -1
  82. package/dist/functions/helpers/get-time-to-finish.d.ts +1 -1
  83. package/dist/functions/helpers/inspect-errors.d.ts +3 -3
  84. package/dist/functions/helpers/io.d.ts +5 -5
  85. package/dist/functions/helpers/print-cloudwatch-helper.d.ts +1 -1
  86. package/dist/functions/helpers/read-with-progress.d.ts +4 -3
  87. package/dist/functions/helpers/read-with-progress.js +6 -1
  88. package/dist/functions/helpers/validate-composition.d.ts +5 -4
  89. package/dist/functions/helpers/validate-composition.js +2 -1
  90. package/dist/functions/helpers/write-lambda-error.d.ts +1 -1
  91. package/dist/functions/helpers/write-post-render-data.d.ts +2 -2
  92. package/dist/functions/index.d.ts +3 -2
  93. package/dist/functions/info.d.ts +1 -1
  94. package/dist/functions/launch.d.ts +1 -1
  95. package/dist/functions/launch.js +2 -0
  96. package/dist/functions/progress.d.ts +1 -1
  97. package/dist/functions/renderer.d.ts +1 -1
  98. package/dist/functions/start.d.ts +1 -1
  99. package/dist/functions/still.d.ts +1 -1
  100. package/dist/functions/still.js +1 -0
  101. package/dist/index.d.ts +33 -18
  102. package/dist/pricing/price-per-1-s.d.ts +1 -1
  103. package/dist/shared/aws-clients.d.ts +1 -1
  104. package/dist/shared/call-lambda.d.ts +3 -3
  105. package/dist/shared/constants.d.ts +10 -7
  106. package/dist/shared/constants.js +1 -1
  107. package/dist/shared/convert-to-serve-url.d.ts +1 -1
  108. package/dist/shared/get-account-id.d.ts +1 -1
  109. package/dist/shared/get-function-version.d.ts +2 -2
  110. package/dist/shared/get-most-expensive-chunks.d.ts +8 -0
  111. package/dist/shared/get-most-expensive-chunks.js +25 -0
  112. package/dist/shared/hosted-layers.d.ts +2 -2
  113. package/dist/shared/hosted-layers.js +80 -80
  114. package/dist/shared/make-s3-key.d.ts +1 -0
  115. package/dist/shared/make-s3-key.js +11 -0
  116. package/dist/shared/make-s3-url.d.ts +1 -1
  117. package/dist/shared/random-hash.d.ts +2 -2
  118. package/dist/shared/random-hash.js +1 -1
  119. package/dist/shared/return-values.d.ts +7 -7
  120. package/dist/shared/return-values.js +0 -1
  121. package/dist/shared/stream-to-string.d.ts +2 -1
  122. package/dist/shared/validate-aws-region.d.ts +1 -1
  123. package/dist/shared/validate-custom-role-arn.d.ts +1 -0
  124. package/dist/shared/validate-custom-role-arn.js +11 -0
  125. package/dist/shared/validate-outname.d.ts +1 -1
  126. package/dist/shared/validate-privacy.d.ts +1 -1
  127. package/package.json +9 -12
  128. package/remotionlambda.zip +0 -0
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeDeployProgressBar = exports.makeBucketProgress = exports.makeBundleProgress = void 0;
4
4
  const cli_1 = require("@remotion/cli");
5
5
  const remotion_1 = require("remotion");
6
- const format_bytes_1 = require("./format-bytes");
7
6
  const makeBundleProgress = ({ progress, doneIn }) => {
8
7
  return [
9
8
  '📦',
@@ -40,7 +39,7 @@ const makeDeployProgressBar = ({ sizeUploaded, totalSize, doneIn, }) => {
40
39
  `${doneIn === null ? 'Uploading' : 'Uploaded'} to S3`,
41
40
  doneIn === null
42
41
  ? typeof totalSize === 'number'
43
- ? `${(0, format_bytes_1.formatBytes)(sizeUploaded)}/${(0, format_bytes_1.formatBytes)(totalSize)}`
42
+ ? `${cli_1.CliInternals.formatBytes(sizeUploaded)}/${cli_1.CliInternals.formatBytes(totalSize)}`
44
43
  : ''
45
44
  : cli_1.CliInternals.chalk.gray(`${doneIn}ms`),
46
45
  ]
package/dist/cli/index.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cli = exports.executeCommand = void 0;
4
4
  const cli_1 = require("@remotion/cli");
5
5
  const suggested_policy_1 = require("../api/iam-validation/suggested-policy");
6
+ const defaults_1 = require("../defaults");
6
7
  const check_credentials_1 = require("../shared/check-credentials");
7
8
  const docs_url_1 = require("../shared/docs-url");
8
9
  const args_1 = require("./args");
@@ -99,6 +100,15 @@ const executeCommand = async (args) => {
99
100
  catch (err) {
100
101
  const error = err;
101
102
  if (error.message.includes('The role defined for the function cannot be assumed by Lambda')) {
103
+ if (args_1.parsedLambdaCli['custom-role-arn']) {
104
+ log_1.Log.error(`
105
+ The role "${args_1.parsedLambdaCli['custom-role-arn']}" does not exist or has the wrong policy assigned to it. Do either:
106
+ - Remove the "--custom-role-arn" parameter and set up Remotion Lambda according to the setup guide
107
+ - Make sure the role has the same policy assigned as the one returned by "npx ${defaults_1.BINARY_NAME} ${policies_1.POLICIES_COMMAND} ${role_1.ROLE_SUBCOMMAND}"
108
+
109
+ Revisit ${docs_url_1.DOCS_URL}/docs/lambda/setup and make sure you set up the role and role policy correctly. Also see the troubleshooting page: ${docs_url_1.DOCS_URL}/docs/lambda/troubleshooting/permissions. The original error message is:
110
+ `.trim());
111
+ }
102
112
  log_1.Log.error(`
103
113
  The role "${suggested_policy_1.ROLE_NAME}" does not exist in your AWS account or has the wrong policy assigned to it. Common reasons:
104
114
  - The name of the role is not "${suggested_policy_1.ROLE_NAME}"
package/dist/defaults.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,4 +1,4 @@
1
- import { OptimizationProfile } from './types';
1
+ import type { OptimizationProfile } from './types';
2
2
  export declare const canUseOptimization: ({ optimization, framesPerLambda, frameRange, }: {
3
3
  optimization: OptimizationProfile | null;
4
4
  framesPerLambda: number;
@@ -1,4 +1,4 @@
1
- import { AwsRegion } from '../../pricing/aws-regions';
1
+ import type { AwsRegion } from '../../pricing/aws-regions';
2
2
  export declare const collectChunkInformation: ({ bucketName, renderId, region, expectedBucketOwner, }: {
3
3
  bucketName: string;
4
4
  renderId: string;
@@ -1,3 +1,3 @@
1
- import { TimingProfile } from './types';
1
+ import type { TimingProfile } from './types';
2
2
  export declare const getFrameRangesFromProfile: (profile: TimingProfile) => [number, number][];
3
3
  export declare const sortProfileByFrameRanges: (profile: TimingProfile) => import("./types").ChunkTimingData[];
@@ -1,3 +1,3 @@
1
- import { ChunkTimingData, TimingProfile } from './types';
1
+ import type { ChunkTimingData, TimingProfile } from './types';
2
2
  export declare const getTimingEndTimestamps: (chunk: ChunkTimingData) => number[];
3
3
  export declare const getProfileDuration: (chunks: TimingProfile) => number;
@@ -1,2 +1,2 @@
1
- import { TimingProfile } from './types';
1
+ import type { TimingProfile } from './types';
2
2
  export declare const isValidOptimizationProfile: (profile: TimingProfile) => boolean;
@@ -1,2 +1,2 @@
1
- import { TimingProfile } from './types';
1
+ import type { TimingProfile } from './types';
2
2
  export declare const optimizeInvocationOrder: (profile: TimingProfile) => TimingProfile;
@@ -1,4 +1,4 @@
1
- import { TimingProfile } from './types';
1
+ import type { TimingProfile } from './types';
2
2
  export declare const assignFrameToOther: ({ frameRanges, fromChunk, toChunk, framesToShift, }: {
3
3
  frameRanges: [number, number][];
4
4
  fromChunk: number;
@@ -1,4 +1,4 @@
1
- import { OptimizationProfile } from './types';
1
+ import type { OptimizationProfile } from './types';
2
2
  export declare const planFrameRanges: ({ chunkCount, framesPerLambda, optimization, shouldUseOptimization, frameRange, }: {
3
3
  chunkCount: number;
4
4
  framesPerLambda: number;
@@ -1,5 +1,5 @@
1
- import { AwsRegion } from '../../pricing/aws-regions';
2
- import { OptimizationProfile } from './types';
1
+ import type { AwsRegion } from '../../pricing/aws-regions';
2
+ import type { OptimizationProfile } from './types';
3
3
  export declare const writeOptimization: ({ bucketName, optimization, compositionId, siteId, region, expectedBucketOwner, }: {
4
4
  bucketName: string;
5
5
  optimization: OptimizationProfile;
@@ -1,4 +1,4 @@
1
- import { ChunkTimingData, TimingProfile } from './types';
1
+ import type { ChunkTimingData, TimingProfile } from './types';
2
2
  export declare const getTimingForFrame: (profile: TimingProfile, frame: number) => number;
3
3
  export declare const getSimulatedTimingForFrameRange: (profile: TimingProfile, frameRange: [number, number]) => ChunkTimingData['timings'];
4
4
  export declare const simulateFrameRanges: ({ profile, newFrameRanges, }: {
@@ -1,2 +1,2 @@
1
- import { ChunkTimingData, TimingProfile } from './types';
1
+ import type { ChunkTimingData, TimingProfile } from './types';
2
2
  export declare const sortProfileByDuration: (profile: TimingProfile) => ChunkTimingData[];
@@ -1,4 +1,4 @@
1
- import { LambdaVersions } from '../../shared/constants';
1
+ import type { LambdaVersions } from '../../shared/constants';
2
2
  export declare type ObjectChunkTimingData = {
3
3
  chunk: number;
4
4
  frameRange: [number, number];
@@ -1,4 +1,4 @@
1
- import { _Object } from '@aws-sdk/client-s3';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
2
  export declare const calculateChunkTimes: ({ contents, renderId, type, }: {
3
3
  contents: _Object[];
4
4
  renderId: string;
@@ -1,7 +1,7 @@
1
- import { _Object } from '@aws-sdk/client-s3';
2
- import { RenderMetadata } from '../../shared/constants';
3
- import { LambdaArchitecture } from '../../shared/validate-architecture';
4
- import { OutputFileMetadata } from './find-output-file-in-bucket';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ import type { RenderMetadata } from '../../shared/constants';
3
+ import type { LambdaArchitecture } from '../../shared/validate-architecture';
4
+ import type { OutputFileMetadata } from './find-output-file-in-bucket';
5
5
  export declare const estimatePriceFromBucket: ({ contents, renderMetadata, memorySizeInMb, outputFileMetadata, architecture, diskSizeInMb, lambdasInvoked, }: {
6
6
  contents: _Object[];
7
7
  renderMetadata: RenderMetadata | null;
@@ -1,6 +1,6 @@
1
- import { Codec } from 'remotion';
2
- import { AwsRegion } from '../../pricing/aws-regions';
3
- export declare const concatVideosS3: ({ bucket, expectedFiles, onProgress, numberOfFrames, renderId, region, codec, expectedBucketOwner, }: {
1
+ import type { Codec } from 'remotion';
2
+ import type { AwsRegion } from '../../pricing/aws-regions';
3
+ export declare const concatVideosS3: ({ bucket, expectedFiles, onProgress, numberOfFrames, renderId, region, codec, expectedBucketOwner, fps, }: {
4
4
  bucket: string;
5
5
  expectedFiles: number;
6
6
  onProgress: (frames: number, encodingStart: number) => void;
@@ -9,6 +9,7 @@ export declare const concatVideosS3: ({ bucket, expectedFiles, onProgress, numbe
9
9
  region: AwsRegion;
10
10
  codec: Codec;
11
11
  expectedBucketOwner: string;
12
+ fps: number;
12
13
  }) => Promise<{
13
14
  outfile: string;
14
15
  cleanupChunksProm: Promise<void>;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -108,7 +112,7 @@ const getAllFilesS3 = ({ bucket, expectedFiles, outdir, renderId, region, expect
108
112
  loop();
109
113
  });
110
114
  };
111
- const concatVideosS3 = async ({ bucket, expectedFiles, onProgress, numberOfFrames, renderId, region, codec, expectedBucketOwner, }) => {
115
+ const concatVideosS3 = async ({ bucket, expectedFiles, onProgress, numberOfFrames, renderId, region, codec, expectedBucketOwner, fps, }) => {
112
116
  var _a;
113
117
  const outdir = (0, path_1.join)(renderer_1.RenderInternals.tmpDir(constants_1.CONCAT_FOLDER_TOKEN), 'bucket');
114
118
  if ((0, fs_1.existsSync)(outdir)) {
@@ -137,6 +141,7 @@ const concatVideosS3 = async ({ bucket, expectedFiles, onProgress, numberOfFrame
137
141
  onProgress: (p) => onProgress(p, encodingStart),
138
142
  numberOfFrames,
139
143
  codec: codecForCombining,
144
+ fps,
140
145
  });
141
146
  combine.end();
142
147
  const cleanupChunksProm = ((_a = fs_1.default.promises.rm) !== null && _a !== void 0 ? _a : fs_1.default.promises.rmdir)(outdir, {
@@ -1,8 +1,8 @@
1
- import { _Object } from '@aws-sdk/client-s3';
2
- import { AwsRegion } from '../../pricing/aws-regions';
3
- import { PostRenderData, RenderMetadata } from '../../shared/constants';
4
- import { OutputFileMetadata } from './find-output-file-in-bucket';
5
- import { EnhancedErrorInfo } from './write-lambda-error';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ import type { AwsRegion } from '../../pricing/aws-regions';
3
+ import type { PostRenderData, RenderMetadata } from '../../shared/constants';
4
+ import type { OutputFileMetadata } from './find-output-file-in-bucket';
5
+ import type { EnhancedErrorInfo } from './write-lambda-error';
6
6
  export declare const createPostRenderData: ({ renderId, region, memorySizeInMb, renderMetadata, contents, timeToEncode, errorExplanations, timeToDelete, outputFile, }: {
7
7
  renderId: string;
8
8
  expectedBucketOwner: string;
@@ -14,4 +14,4 @@ export declare const createPostRenderData: ({ renderId, region, memorySizeInMb,
14
14
  timeToDelete: number;
15
15
  errorExplanations: EnhancedErrorInfo[];
16
16
  outputFile: OutputFileMetadata;
17
- }) => Promise<PostRenderData>;
17
+ }) => PostRenderData;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPostRenderData = void 0;
4
4
  const estimate_price_1 = require("../../api/estimate-price");
5
5
  const constants_1 = require("../../shared/constants");
6
+ const get_most_expensive_chunks_1 = require("../../shared/get-most-expensive-chunks");
6
7
  const parse_lambda_timings_key_1 = require("../../shared/parse-lambda-timings-key");
7
8
  const calculate_chunk_times_1 = require("./calculate-chunk-times");
8
9
  const get_current_architecture_1 = require("./get-current-architecture");
@@ -10,13 +11,12 @@ const get_files_to_delete_1 = require("./get-files-to-delete");
10
11
  const get_lambdas_invoked_stats_1 = require("./get-lambdas-invoked-stats");
11
12
  const get_retry_stats_1 = require("./get-retry-stats");
12
13
  const get_time_to_finish_1 = require("./get-time-to-finish");
13
- const OVERHEAD_TIME_PER_LAMBDA = 100;
14
- const createPostRenderData = async ({ renderId, region, memorySizeInMb, renderMetadata, contents, timeToEncode, errorExplanations, timeToDelete, outputFile, }) => {
14
+ const createPostRenderData = ({ renderId, region, memorySizeInMb, renderMetadata, contents, timeToEncode, errorExplanations, timeToDelete, outputFile, }) => {
15
15
  var _a;
16
16
  const initializedKeys = contents.filter((c) => { var _a; return (_a = c.Key) === null || _a === void 0 ? void 0 : _a.startsWith((0, constants_1.lambdaTimingsPrefix)(renderId)); });
17
17
  const parsedTimings = initializedKeys.map(({ Key }) => (0, parse_lambda_timings_key_1.parseLambdaTimingsKey)(Key));
18
18
  const times = parsedTimings
19
- .map((p) => p.rendered - p.start + OVERHEAD_TIME_PER_LAMBDA)
19
+ .map((p) => p.rendered - p.start + get_most_expensive_chunks_1.OVERHEAD_TIME_PER_LAMBDA)
20
20
  .reduce((a, b) => a + b);
21
21
  const cost = (0, estimate_price_1.estimatePrice)({
22
22
  durationInMiliseconds: times,
@@ -47,7 +47,7 @@ const createPostRenderData = async ({ renderId, region, memorySizeInMb, renderMe
47
47
  if (timeToInvokeLambdas === null) {
48
48
  throw new Error('should have timing for all lambdas');
49
49
  }
50
- const data = {
50
+ return {
51
51
  cost: {
52
52
  currency: 'USD',
53
53
  disclaimer: 'Estimated cost for lambda invocations only. Does not include cost for S3 storage and data transfer.',
@@ -78,7 +78,7 @@ const createPostRenderData = async ({ renderId, region, memorySizeInMb, renderMe
78
78
  }),
79
79
  timeToInvokeLambdas,
80
80
  retriesInfo,
81
+ mostExpensiveFrameRanges: (0, get_most_expensive_chunks_1.getMostExpensiveChunks)(parsedTimings, renderMetadata.framesPerLambda),
81
82
  };
82
- return data;
83
83
  };
84
84
  exports.createPostRenderData = createPostRenderData;
@@ -1,6 +1,6 @@
1
- import { _Object } from '@aws-sdk/client-s3';
2
- import { AwsRegion } from '../../pricing/aws-regions';
3
- import { CleanupJob } from './get-files-to-delete';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ import type { AwsRegion } from '../../pricing/aws-regions';
3
+ import type { CleanupJob } from './get-files-to-delete';
4
4
  export declare const cleanupFiles: ({ bucket, region, contents, jobs, }: {
5
5
  bucket: string;
6
6
  region: AwsRegion;
@@ -1,2 +1,2 @@
1
- import { OutNameOutput, RenderMetadata } from '../../defaults';
1
+ import type { OutNameOutput, RenderMetadata } from '../../defaults';
2
2
  export declare const getExpectedOutName: (renderMetadata: RenderMetadata, bucketName: string) => OutNameOutput;
@@ -1,5 +1,5 @@
1
- import { AwsRegion } from '../..';
2
- import { RenderMetadata } from '../../shared/constants';
1
+ import type { AwsRegion } from '../..';
2
+ import type { RenderMetadata } from '../../shared/constants';
3
3
  export declare type OutputFileMetadata = {
4
4
  url: string;
5
5
  size: number;
@@ -1,2 +1,2 @@
1
- import { CostsInfo } from '../../shared/constants';
1
+ import type { CostsInfo } from '../../shared/constants';
2
2
  export declare const formatCostsInfo: (accrued: number) => CostsInfo;
@@ -1,2 +1,3 @@
1
- import { ChromiumOptions, openBrowser } from '@remotion/renderer';
1
+ import type { ChromiumOptions } from '@remotion/renderer';
2
+ import { openBrowser } from '@remotion/renderer';
2
3
  export declare const getBrowserInstance: (shouldDumpIo: boolean, chromiumOptions: ChromiumOptions) => ReturnType<typeof openBrowser>;
@@ -1,5 +1,5 @@
1
- import { _Object } from '@aws-sdk/client-s3';
2
- import { CleanupInfo } from '../../shared/constants';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ import type { CleanupInfo } from '../../shared/constants';
3
3
  export declare const getCleanupProgress: ({ contents, output, chunkCount, renderId, }: {
4
4
  contents: _Object[];
5
5
  output: string | null;
@@ -1,2 +1,2 @@
1
- import { LambdaArchitecture } from '../../shared/validate-architecture';
1
+ import type { LambdaArchitecture } from '../../shared/validate-architecture';
2
2
  export declare const getCurrentArchitecture: () => LambdaArchitecture;
@@ -1,5 +1,5 @@
1
- import { EncodingProgress } from '../../defaults';
2
- import { AwsRegion } from '../../pricing/aws-regions';
1
+ import type { EncodingProgress } from '../../defaults';
2
+ import type { AwsRegion } from '../../pricing/aws-regions';
3
3
  export declare const getEncodingMetadata: ({ exists, bucketName, renderId, region, expectedBucketOwner, }: {
4
4
  exists: boolean;
5
5
  bucketName: string;
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFilesToDelete = void 0;
4
4
  const constants_1 = require("../../shared/constants");
5
5
  const getFilesToDelete = ({ chunkCount, renderId, }) => {
6
- const chunks = new Array(chunkCount).fill(true).map((x, i) => (0, constants_1.chunkKeyForIndex)({
6
+ const chunks = new Array(chunkCount).fill(true).map((_x, i) => (0, constants_1.chunkKeyForIndex)({
7
7
  index: i,
8
8
  renderId,
9
9
  }));
10
10
  const lambdaTimings = new Array(chunkCount)
11
11
  .fill(true)
12
- .map((x, i) => (0, constants_1.lambdaTimingsPrefixForChunk)(renderId, i));
12
+ .map((_x, i) => (0, constants_1.lambdaTimingsPrefixForChunk)(renderId, i));
13
13
  return [
14
14
  {
15
15
  name: (0, constants_1.lambdaInitializedPrefix)(renderId),
@@ -1,5 +1,5 @@
1
- import { EncodingProgress, RenderMetadata } from '../../shared/constants';
2
- import { LambdaInvokeStats } from './get-lambdas-invoked-stats';
1
+ import type { EncodingProgress, RenderMetadata } from '../../shared/constants';
2
+ import type { LambdaInvokeStats } from './get-lambdas-invoked-stats';
3
3
  export declare const getFinalEncodingStatus: ({ encodingStatus: encodingProgress, renderMetadata, outputFileExists, lambdaInvokeStatus, }: {
4
4
  encodingStatus: EncodingProgress | null;
5
5
  renderMetadata: RenderMetadata | null;
@@ -1,4 +1,4 @@
1
- import { _Object } from '@aws-sdk/client-s3';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
2
  export declare type LambdaInvokeStats = {
3
3
  timeToInvokeLambdas: number | null;
4
4
  allLambdasInvoked: boolean;
@@ -1,2 +1,2 @@
1
- import { RenderMetadata } from '../../defaults';
1
+ import type { RenderMetadata } from '../../defaults';
2
2
  export declare const getOutputUrlFromMetadata: (renderMetadata: RenderMetadata, bucketName: string) => string;
@@ -1,5 +1,5 @@
1
- import { AwsRegion } from '../../pricing/aws-regions';
2
- import { PostRenderData } from '../../shared/constants';
1
+ import type { AwsRegion } from '../../pricing/aws-regions';
2
+ import type { PostRenderData } from '../../shared/constants';
3
3
  export declare const getPostRenderData: ({ bucketName, renderId, region, expectedBucketOwner, }: {
4
4
  bucketName: string;
5
5
  renderId: string;
@@ -1,5 +1,5 @@
1
- import { AwsRegion } from '../../pricing/aws-regions';
2
- import { RenderProgress } from '../../shared/constants';
1
+ import type { AwsRegion } from '../../pricing/aws-regions';
2
+ import type { RenderProgress } from '../../shared/constants';
3
3
  export declare const getProgress: ({ bucketName, renderId, expectedBucketOwner, region, memorySizeInMb, timeoutInMiliseconds, }: {
4
4
  bucketName: string;
5
5
  renderId: string;
@@ -23,7 +23,7 @@ const get_time_to_finish_1 = require("./get-time-to-finish");
23
23
  const inspect_errors_1 = require("./inspect-errors");
24
24
  const io_1 = require("./io");
25
25
  const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region, memorySizeInMb, timeoutInMiliseconds, }) => {
26
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
26
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
27
27
  const postRenderData = await (0, get_post_render_data_1.getPostRenderData)({
28
28
  bucketName,
29
29
  region,
@@ -68,6 +68,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
68
68
  retriesInfo: postRenderData.retriesInfo,
69
69
  outKey: outData.key,
70
70
  outBucket: outData.renderBucketName,
71
+ mostExpensiveFrameRanges: (_a = postRenderData.mostExpensiveFrameRanges) !== null && _a !== void 0 ? _a : null,
71
72
  };
72
73
  }
73
74
  const contents = await (0, io_1.lambdaLs)({
@@ -114,27 +115,27 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
114
115
  memorySizeInMb,
115
116
  outputFileMetadata: outputFile,
116
117
  architecture: (0, get_current_architecture_1.getCurrentArchitecture)(),
117
- lambdasInvoked: (_a = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _a !== void 0 ? _a : 0,
118
+ lambdasInvoked: (_b = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _b !== void 0 ? _b : 0,
118
119
  // We cannot determine the ephemeral storage size, so we
119
120
  // overestimate the price, but will only have a miniscule effect (~0.2%)
120
121
  diskSizeInMb: constants_1.MAX_EPHEMERAL_STORAGE_IN_MB,
121
122
  }));
122
123
  const cleanup = (0, get_cleanup_progress_1.getCleanupProgress)({
123
- chunkCount: (_b = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _b !== void 0 ? _b : 0,
124
+ chunkCount: (_c = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _c !== void 0 ? _c : 0,
124
125
  contents,
125
- output: (_c = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _c !== void 0 ? _c : null,
126
+ output: (_d = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _d !== void 0 ? _d : null,
126
127
  renderId,
127
128
  });
128
129
  const timeToFinish = (0, get_time_to_finish_1.getTimeToFinish)({
129
- lastModified: (_d = outputFile === null || outputFile === void 0 ? void 0 : outputFile.lastModified) !== null && _d !== void 0 ? _d : null,
130
+ lastModified: (_e = outputFile === null || outputFile === void 0 ? void 0 : outputFile.lastModified) !== null && _e !== void 0 ? _e : null,
130
131
  renderMetadata,
131
132
  });
132
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)); });
133
- const allChunks = chunks.length === ((_e = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _e !== void 0 ? _e : Infinity);
134
+ const allChunks = chunks.length === ((_f = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _f !== void 0 ? _f : Infinity);
134
135
  const renderSize = contents
135
136
  .map((c) => { var _a; return (_a = c.Size) !== null && _a !== void 0 ? _a : 0; })
136
137
  .reduce((a, b) => a + b, 0);
137
- const lambdasInvokedStats = (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)(contents, renderId, (_f = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _f !== void 0 ? _f : null, (_g = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.startedDate) !== null && _g !== void 0 ? _g : null);
138
+ const lambdasInvokedStats = (0, get_lambdas_invoked_stats_1.getLambdasInvokedStats)(contents, renderId, (_g = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.estimatedRenderLambdaInvokations) !== null && _g !== void 0 ? _g : null, (_h = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.startedDate) !== null && _h !== void 0 ? _h : null);
138
139
  const retriesInfo = (0, get_retry_stats_1.getRetryStats)({
139
140
  contents,
140
141
  renderId,
@@ -146,7 +147,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
146
147
  lambdaInvokeStatus: lambdasInvokedStats,
147
148
  });
148
149
  const chunkCount = outputFile
149
- ? (_h = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _h !== void 0 ? _h : 0
150
+ ? (_j = renderMetadata === null || renderMetadata === void 0 ? void 0 : renderMetadata.totalChunks) !== null && _j !== void 0 ? _j : 0
150
151
  : chunks.length;
151
152
  // 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
152
153
  const isBeyondTimeout = renderMetadata &&
@@ -177,7 +178,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
177
178
  renderId,
178
179
  renderMetadata,
179
180
  bucket: bucketName,
180
- outputFile: (_j = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _j !== void 0 ? _j : null,
181
+ outputFile: (_k = outputFile === null || outputFile === void 0 ? void 0 : outputFile.url) !== null && _k !== void 0 ? _k : null,
181
182
  timeToFinish,
182
183
  errors: allErrors,
183
184
  fatalErrorEncountered: allErrors.some((f) => f.isFatal && !f.willRetry),
@@ -192,7 +193,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
192
193
  type: 'absolute-time',
193
194
  })
194
195
  : null,
195
- timeToInvokeLambdas: (_k = encodingStatus === null || encodingStatus === void 0 ? void 0 : encodingStatus.timeToInvoke) !== null && _k !== void 0 ? _k : lambdasInvokedStats.timeToInvokeLambdas,
196
+ timeToInvokeLambdas: (_l = encodingStatus === null || encodingStatus === void 0 ? void 0 : encodingStatus.timeToInvoke) !== null && _l !== void 0 ? _l : lambdasInvokedStats.timeToInvokeLambdas,
196
197
  overallProgress: (0, get_overall_progress_1.getOverallProgress)({
197
198
  cleanup: cleanup ? cleanup.filesDeleted / cleanup.minFilesToDelete : 0,
198
199
  encoding: finalEncodingStatus && renderMetadata
@@ -212,6 +213,7 @@ const getProgress = async ({ bucketName, renderId, expectedBucketOwner, region,
212
213
  outBucket: outputFile && renderMetadata
213
214
  ? (0, expected_out_name_1.getExpectedOutName)(renderMetadata, bucketName).renderBucketName
214
215
  : null,
216
+ mostExpensiveFrameRanges: null,
215
217
  };
216
218
  };
217
219
  exports.getProgress = getProgress;
@@ -1,5 +1,5 @@
1
- import { AwsRegion } from '../../pricing/aws-regions';
2
- import { RenderMetadata } from '../../shared/constants';
1
+ import type { AwsRegion } from '../../pricing/aws-regions';
2
+ import type { RenderMetadata } from '../../shared/constants';
3
3
  export declare const getRenderMetadata: ({ bucketName, renderId, region, expectedBucketOwner, }: {
4
4
  bucketName: string;
5
5
  renderId: string;
@@ -1,4 +1,4 @@
1
- import { _Object } from '@aws-sdk/client-s3';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
2
  export declare type ChunkRetry = {
3
3
  chunk: number;
4
4
  attempt: number;
@@ -1,4 +1,4 @@
1
- import { RenderMetadata } from '../../defaults';
1
+ import type { RenderMetadata } from '../../defaults';
2
2
  export declare const getTimeToFinish: ({ renderMetadata, lastModified, }: {
3
3
  renderMetadata: RenderMetadata | null;
4
4
  lastModified: number | null;
@@ -1,6 +1,6 @@
1
- import { _Object } from '@aws-sdk/client-s3';
2
- import { AwsRegion } from '../../pricing/aws-regions';
3
- import { EnhancedErrorInfo } from './write-lambda-error';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ import type { AwsRegion } from '../../pricing/aws-regions';
3
+ import type { EnhancedErrorInfo } from './write-lambda-error';
4
4
  export declare const inspectErrors: ({ contents, bucket, region, renderId, expectedBucketOwner, }: {
5
5
  contents: _Object[];
6
6
  bucket: string;
@@ -1,8 +1,8 @@
1
- import { _Object } from '@aws-sdk/client-s3';
2
- import { ReadStream } from 'fs';
3
- import { Readable } from 'stream';
4
- import { AwsRegion } from '../../pricing/aws-regions';
5
- import { Privacy } from '../../shared/constants';
1
+ import type { _Object } from '@aws-sdk/client-s3';
2
+ import type { ReadStream } from 'fs';
3
+ import type { Readable } from 'stream';
4
+ import type { AwsRegion } from '../../pricing/aws-regions';
5
+ import type { Privacy } from '../../shared/constants';
6
6
  export declare type LambdaLSInput = {
7
7
  bucketName: string;
8
8
  prefix: string;
@@ -1,2 +1,2 @@
1
- import { LambdaRoutines } from '../../defaults';
1
+ import type { LambdaRoutines } from '../../defaults';
2
2
  export declare const printCloudwatchHelper: (type: LambdaRoutines, data: Record<string, string>) => void;
@@ -1,8 +1,8 @@
1
- import { AwsRegion } from '../../pricing/aws-regions';
1
+ import type { AwsRegion } from '../../pricing/aws-regions';
2
2
  export declare type LambdaReadFileProgress = (progress: {
3
- totalSize: number;
3
+ totalSize: number | null;
4
4
  downloaded: number;
5
- progress: number;
5
+ percent: number | null;
6
6
  }) => unknown;
7
7
  export declare const lambdaDownloadFileWithProgress: ({ bucketName, key, region, expectedBucketOwner, outputPath, onProgress, }: {
8
8
  bucketName: string;
@@ -13,4 +13,5 @@ export declare const lambdaDownloadFileWithProgress: ({ bucketName, key, region,
13
13
  onProgress: LambdaReadFileProgress;
14
14
  }) => Promise<{
15
15
  sizeInBytes: number;
16
+ to: string;
16
17
  }>;
@@ -13,6 +13,11 @@ const lambdaDownloadFileWithProgress = async ({ bucketName, key, region, expecte
13
13
  Key: key,
14
14
  });
15
15
  const presigned = await (0, s3_request_presigner_1.getSignedUrl)(client, command);
16
- return renderer_1.RenderInternals.downloadFile(presigned, outputPath, onProgress);
16
+ const { to, sizeInBytes } = await renderer_1.RenderInternals.downloadFile({
17
+ url: presigned,
18
+ onProgress,
19
+ to: () => outputPath,
20
+ });
21
+ return { sizeInBytes, to };
17
22
  };
18
23
  exports.lambdaDownloadFileWithProgress = lambdaDownloadFileWithProgress;
@@ -1,6 +1,6 @@
1
- import { ChromiumOptions, openBrowser } from '@remotion/renderer';
2
- import { FfmpegExecutable, TCompMetadata } from 'remotion';
3
- import { Await } from '../../shared/await';
1
+ import type { ChromiumOptions, openBrowser } from '@remotion/renderer';
2
+ import type { FfmpegExecutable, TCompMetadata } from 'remotion';
3
+ import type { Await } from '../../shared/await';
4
4
  declare type ValidateCompositionOptions = {
5
5
  serveUrl: string;
6
6
  composition: string;
@@ -8,9 +8,10 @@ declare type ValidateCompositionOptions = {
8
8
  inputProps: unknown;
9
9
  envVariables: Record<string, string> | undefined;
10
10
  ffmpegExecutable: FfmpegExecutable;
11
+ ffprobeExecutable: FfmpegExecutable;
11
12
  timeoutInMilliseconds: number;
12
13
  chromiumOptions: ChromiumOptions;
13
14
  port: number | null;
14
15
  };
15
- export declare const validateComposition: ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, chromiumOptions, port, }: ValidateCompositionOptions) => Promise<TCompMetadata>;
16
+ export declare const validateComposition: ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, ffprobeExecutable, chromiumOptions, port, }: ValidateCompositionOptions) => Promise<TCompMetadata>;
16
17
  export {};
@@ -2,12 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateComposition = void 0;
4
4
  const renderer_1 = require("@remotion/renderer");
5
- const validateComposition = async ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, chromiumOptions, port, }) => {
5
+ const validateComposition = async ({ serveUrl, composition, browserInstance, inputProps, envVariables, timeoutInMilliseconds, ffmpegExecutable, ffprobeExecutable, chromiumOptions, port, }) => {
6
6
  const compositions = await (0, renderer_1.getCompositions)(serveUrl, {
7
7
  puppeteerInstance: browserInstance,
8
8
  inputProps: inputProps,
9
9
  envVariables,
10
10
  ffmpegExecutable,
11
+ ffprobeExecutable,
11
12
  timeoutInMilliseconds,
12
13
  chromiumOptions,
13
14
  port,
@@ -1,4 +1,4 @@
1
- import { FileNameAndSize } from './get-files-in-folder';
1
+ import type { FileNameAndSize } from './get-files-in-folder';
2
2
  export declare type LambdaErrorInfo = {
3
3
  type: 'renderer' | 'browser' | 'stitcher';
4
4
  message: string;