@remotion/lambda 4.0.200 → 4.0.202

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 (142) hide show
  1. package/dist/api/bucket-exists.js +6 -2
  2. package/dist/api/clean-items.d.ts +2 -1
  3. package/dist/api/clean-items.js +2 -1
  4. package/dist/api/create-bucket.js +5 -5
  5. package/dist/api/delete-render.d.ts +2 -0
  6. package/dist/api/delete-render.js +6 -0
  7. package/dist/api/delete-site.d.ts +11 -5
  8. package/dist/api/delete-site.js +7 -1
  9. package/dist/api/deploy-site.d.ts +7 -3
  10. package/dist/api/deploy-site.js +17 -4
  11. package/dist/api/download-media.d.ts +2 -0
  12. package/dist/api/download-media.js +4 -1
  13. package/dist/api/get-aws-client.d.ts +2 -1
  14. package/dist/api/get-aws-client.js +2 -1
  15. package/dist/api/get-buckets.js +11 -3
  16. package/dist/api/get-compositions-on-lambda.d.ts +2 -1
  17. package/dist/api/get-compositions-on-lambda.js +3 -1
  18. package/dist/api/get-or-create-bucket.js +1 -0
  19. package/dist/api/get-render-progress.d.ts +1 -0
  20. package/dist/api/get-sites.d.ts +9 -4
  21. package/dist/api/get-sites.js +15 -5
  22. package/dist/api/make-lambda-payload.d.ts +4 -3
  23. package/dist/api/make-lambda-payload.js +9 -4
  24. package/dist/api/presign-url.d.ts +8 -3
  25. package/dist/api/presign-url.js +26 -12
  26. package/dist/api/render-media-on-lambda.d.ts +1 -0
  27. package/dist/api/render-media-on-lambda.js +2 -1
  28. package/dist/api/render-still-on-lambda.d.ts +1 -0
  29. package/dist/api/render-still-on-lambda.js +2 -1
  30. package/dist/api/upload-dir.d.ts +2 -1
  31. package/dist/api/upload-dir.js +2 -2
  32. package/dist/cli/args.d.ts +1 -0
  33. package/dist/cli/commands/render/render.js +3 -1
  34. package/dist/cli/commands/sites/create.js +22 -2
  35. package/dist/cli/commands/sites/rm.js +1 -0
  36. package/dist/cli/commands/sites/rmall.js +1 -0
  37. package/dist/cli/commands/still.d.ts +6 -1
  38. package/dist/cli/commands/still.js +2 -1
  39. package/dist/cli/helpers/progress-bar.d.ts +5 -0
  40. package/dist/cli/helpers/progress-bar.js +19 -1
  41. package/dist/cli/index.js +6 -1
  42. package/dist/functions/chunk-optimization/plan-frame-ranges.d.ts +1 -4
  43. package/dist/functions/helpers/check-if-render-exists.d.ts +3 -0
  44. package/dist/functions/helpers/check-if-render-exists.js +15 -0
  45. package/dist/functions/helpers/cleanup-props.d.ts +6 -2
  46. package/dist/functions/helpers/cleanup-props.js +3 -1
  47. package/dist/functions/helpers/delete-chunks.d.ts +9 -0
  48. package/dist/functions/helpers/delete-chunks.js +25 -0
  49. package/dist/functions/helpers/expected-out-name.d.ts +1 -1
  50. package/dist/functions/helpers/find-output-file-in-bucket.d.ts +2 -1
  51. package/dist/functions/helpers/find-output-file-in-bucket.js +2 -1
  52. package/dist/functions/helpers/get-browser-instance.d.ts +2 -3
  53. package/dist/functions/helpers/get-browser-instance.js +4 -3
  54. package/dist/functions/helpers/get-cleanup-progress.d.ts +10 -0
  55. package/dist/functions/helpers/get-cleanup-progress.js +35 -0
  56. package/dist/functions/helpers/get-current-region.d.ts +1 -1
  57. package/dist/functions/helpers/get-custom-out-name.d.ts +1 -1
  58. package/dist/functions/helpers/get-encoding-metadata.d.ts +7 -0
  59. package/dist/functions/helpers/get-encoding-metadata.js +15 -0
  60. package/dist/functions/helpers/get-encoding-progress-step-size.d.ts +1 -0
  61. package/dist/functions/helpers/get-encoding-progress-step-size.js +7 -0
  62. package/dist/functions/helpers/get-files-to-delete.d.ts +10 -0
  63. package/dist/functions/helpers/get-files-to-delete.js +52 -0
  64. package/dist/functions/helpers/get-final-encoding-status.d.ts +6 -0
  65. package/dist/functions/helpers/get-final-encoding-status.js +18 -0
  66. package/dist/functions/helpers/get-folder-size.d.ts +1 -0
  67. package/dist/functions/helpers/get-folder-size.js +8 -0
  68. package/dist/functions/helpers/get-lambdas-invoked-stats.d.ts +8 -0
  69. package/dist/functions/helpers/get-lambdas-invoked-stats.js +14 -0
  70. package/dist/functions/helpers/get-overall-progress-s3.d.ts +2 -1
  71. package/dist/functions/helpers/get-overall-progress-s3.js +2 -1
  72. package/dist/functions/helpers/get-post-render-data.d.ts +8 -0
  73. package/dist/functions/helpers/get-post-render-data.js +22 -0
  74. package/dist/functions/helpers/get-progress.d.ts +2 -1
  75. package/dist/functions/helpers/get-progress.js +2 -1
  76. package/dist/functions/helpers/get-render-metadata.d.ts +8 -0
  77. package/dist/functions/helpers/get-render-metadata.js +17 -0
  78. package/dist/functions/helpers/get-rendered-frames-progress.d.ts +8 -0
  79. package/dist/functions/helpers/get-rendered-frames-progress.js +37 -0
  80. package/dist/functions/helpers/get-time-to-finish.d.ts +5 -0
  81. package/dist/functions/helpers/get-time-to-finish.js +13 -0
  82. package/dist/functions/helpers/io.d.ts +33 -3
  83. package/dist/functions/helpers/io.js +104 -3
  84. package/dist/functions/helpers/merge-chunks.d.ts +1 -0
  85. package/dist/functions/helpers/merge-chunks.js +2 -0
  86. package/dist/functions/helpers/overall-render-progress.d.ts +2 -1
  87. package/dist/functions/helpers/overall-render-progress.js +2 -1
  88. package/dist/functions/helpers/print-cloudwatch-helper.d.ts +1 -1
  89. package/dist/functions/helpers/print-cloudwatch-helper.js +3 -3
  90. package/dist/functions/helpers/read-with-progress.d.ts +2 -1
  91. package/dist/functions/helpers/read-with-progress.js +2 -2
  92. package/dist/functions/helpers/streaming-payloads.d.ts +19 -0
  93. package/dist/functions/helpers/streaming-payloads.js +25 -0
  94. package/dist/functions/helpers/write-lambda-error.d.ts +3 -2
  95. package/dist/functions/helpers/write-lambda-error.js +2 -3
  96. package/dist/functions/helpers/write-post-render-data.d.ts +9 -0
  97. package/dist/functions/helpers/write-post-render-data.js +18 -0
  98. package/dist/functions/launch.js +8 -0
  99. package/dist/functions/merge.d.ts +9 -0
  100. package/dist/functions/merge.js +61 -0
  101. package/dist/functions/progress.js +1 -0
  102. package/dist/functions/renderer.js +2 -0
  103. package/dist/functions/start.js +3 -0
  104. package/dist/functions/still.js +6 -0
  105. package/dist/index.d.ts +2 -2
  106. package/dist/internals.d.ts +12 -9
  107. package/dist/io/delete-file.js +2 -2
  108. package/dist/io/head-file.js +6 -2
  109. package/dist/io/list-objects.js +12 -3
  110. package/dist/io/read-file.d.ts +2 -1
  111. package/dist/io/read-file.js +6 -2
  112. package/dist/io/write-file.js +6 -2
  113. package/dist/shared/__mocks__/read-dir.js +2 -2
  114. package/dist/shared/aws-clients.js +15 -2
  115. package/dist/shared/chunk-progress.d.ts +9 -0
  116. package/dist/shared/chunk-progress.js +2034 -0
  117. package/dist/shared/cleanup-serialized-input-props.d.ts +4 -2
  118. package/dist/shared/cleanup-serialized-input-props.js +4 -2
  119. package/dist/shared/compress-props.d.ts +6 -8
  120. package/dist/shared/compress-props.js +14 -11
  121. package/dist/shared/get-etag.d.ts +1 -1
  122. package/dist/shared/get-etag.js +33 -12
  123. package/dist/shared/get-s3-client.d.ts +5 -1
  124. package/dist/shared/get-s3-client.js +2 -1
  125. package/dist/shared/get-s3-operations.d.ts +2 -1
  126. package/dist/shared/get-s3-operations.js +38 -20
  127. package/dist/shared/get-service-client.d.ts +2 -1
  128. package/dist/shared/get-service-client.js +4 -2
  129. package/dist/shared/lifecycle-rules.d.ts +2 -1
  130. package/dist/shared/lifecycle-rules.js +17 -7
  131. package/dist/shared/parse-chunk-key.d.ts +5 -0
  132. package/dist/shared/parse-chunk-key.js +15 -0
  133. package/dist/shared/parse-lambda-initialized-key.d.ts +5 -0
  134. package/dist/shared/parse-lambda-initialized-key.js +15 -0
  135. package/dist/shared/read-dir.d.ts +6 -5
  136. package/dist/shared/read-dir.js +9 -6
  137. package/dist/shared/serialize-props.d.ts +14 -0
  138. package/dist/shared/serialize-props.js +36 -0
  139. package/package.json +11 -11
  140. package/remotionlambda-arm64.zip +0 -0
  141. package/dist/functions/provider-implementation.d.ts +0 -0
  142. package/dist/functions/provider-implementation.js +0 -1
@@ -26,7 +26,7 @@ const makeInitialOverallRenderProgress = (timeoutTimestamp) => {
26
26
  };
27
27
  };
28
28
  exports.makeInitialOverallRenderProgress = makeInitialOverallRenderProgress;
29
- const makeOverallRenderProgress = ({ renderId, bucketName, expectedBucketOwner, region, timeoutTimestamp, logLevel, providerSpecifics, }) => {
29
+ const makeOverallRenderProgress = ({ renderId, bucketName, expectedBucketOwner, region, timeoutTimestamp, logLevel, providerSpecifics, forcePathStyle, }) => {
30
30
  let framesRendered = [];
31
31
  let framesEncoded = [];
32
32
  let lambdasInvoked = [];
@@ -58,6 +58,7 @@ const makeOverallRenderProgress = ({ renderId, bucketName, expectedBucketOwner,
58
58
  key: (0, client_1.overallProgressKey)(renderId),
59
59
  privacy: 'private',
60
60
  region,
61
+ forcePathStyle,
61
62
  })
62
63
  .then(() => {
63
64
  // By default, upload is way too fast (~20 requests per second)
@@ -1,3 +1,3 @@
1
1
  import type { LogLevel } from '@remotion/renderer';
2
2
  import type { ServerlessRoutines } from '@remotion/serverless/client';
3
- export declare const printCloudwatchHelper: (type: ServerlessRoutines, data: Record<string, string | boolean>, logLevel: LogLevel) => void;
3
+ export declare const printLoggingGrepHelper: (type: ServerlessRoutines, data: Record<string, string | boolean>, logLevel: LogLevel) => void;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printCloudwatchHelper = void 0;
3
+ exports.printLoggingGrepHelper = void 0;
4
4
  const renderer_1 = require("@remotion/renderer");
5
- const printCloudwatchHelper = (type, data, logLevel) => {
5
+ const printLoggingGrepHelper = (type, data, logLevel) => {
6
6
  const d = Object.keys(data).reduce((a, b) => {
7
7
  return [...a, `${b}=${data[b]}`];
8
8
  }, []);
9
9
  const msg = [`method=${type}`, ...d].join(',');
10
10
  renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, msg);
11
11
  };
12
- exports.printCloudwatchHelper = printCloudwatchHelper;
12
+ exports.printLoggingGrepHelper = printLoggingGrepHelper;
@@ -7,7 +7,7 @@ export type LambdaReadFileProgress = (progress: {
7
7
  downloaded: number;
8
8
  percent: number;
9
9
  }) => unknown;
10
- export declare const lambdaDownloadFileWithProgress: ({ bucketName, key, region, expectedBucketOwner, outputPath, onProgress, customCredentials, logLevel, }: {
10
+ export declare const lambdaDownloadFileWithProgress: ({ bucketName, key, region, expectedBucketOwner, outputPath, onProgress, customCredentials, logLevel, forcePathStyle, }: {
11
11
  bucketName: string;
12
12
  key: string;
13
13
  region: AwsRegion;
@@ -16,6 +16,7 @@ export declare const lambdaDownloadFileWithProgress: ({ bucketName, key, region,
16
16
  onProgress: LambdaReadFileProgress;
17
17
  customCredentials: CustomCredentials<AwsProvider> | null;
18
18
  logLevel: LogLevel;
19
+ forcePathStyle: boolean;
19
20
  }) => Promise<{
20
21
  sizeInBytes: number;
21
22
  to: string;
@@ -5,8 +5,8 @@ const client_s3_1 = require("@aws-sdk/client-s3");
5
5
  const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
6
6
  const renderer_1 = require("@remotion/renderer");
7
7
  const get_s3_client_1 = require("../../shared/get-s3-client");
8
- const lambdaDownloadFileWithProgress = async ({ bucketName, key, region, expectedBucketOwner, outputPath, onProgress, customCredentials, logLevel, }) => {
9
- const client = (0, get_s3_client_1.getS3Client)(region, customCredentials);
8
+ const lambdaDownloadFileWithProgress = async ({ bucketName, key, region, expectedBucketOwner, outputPath, onProgress, customCredentials, logLevel, forcePathStyle, }) => {
9
+ const client = (0, get_s3_client_1.getS3Client)({ region, customCredentials, forcePathStyle });
10
10
  const command = new client_s3_1.GetObjectCommand({
11
11
  Bucket: bucketName,
12
12
  ExpectedBucketOwner: customCredentials ? undefined : expectedBucketOwner,
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ import type { ResponseStream } from './streamify-response';
3
+ declare const streamingPayloadSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
4
+ type: z.ZodLiteral<"render-id-determined">;
5
+ renderId: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ type: "render-id-determined";
8
+ renderId: string;
9
+ }, {
10
+ type: "render-id-determined";
11
+ renderId: string;
12
+ }>]>;
13
+ export type StreamingPayloads = z.infer<typeof streamingPayloadSchema>;
14
+ export declare const isStreamingPayload: (str: string) => false | {
15
+ type: "render-id-determined";
16
+ renderId: string;
17
+ };
18
+ export declare const sendProgressEvent: (responseStream: ResponseStream, payload: StreamingPayloads) => void;
19
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendProgressEvent = exports.isStreamingPayload = void 0;
4
+ const zod_1 = require("zod");
5
+ const streamingPayloadSchema = zod_1.z.discriminatedUnion('type', [
6
+ zod_1.z.object({
7
+ type: zod_1.z.literal('render-id-determined'),
8
+ renderId: zod_1.z.string(),
9
+ }),
10
+ ]);
11
+ const isStreamingPayload = (str) => {
12
+ try {
13
+ const parsed = JSON.parse(str);
14
+ return streamingPayloadSchema.parse(parsed);
15
+ }
16
+ catch (_a) {
17
+ return false;
18
+ }
19
+ };
20
+ exports.isStreamingPayload = isStreamingPayload;
21
+ const sendProgressEvent = (responseStream, payload) => {
22
+ const stringified = JSON.stringify(payload);
23
+ responseStream.write(stringified);
24
+ };
25
+ exports.sendProgressEvent = sendProgressEvent;
@@ -1,4 +1,5 @@
1
- import type { FileNameAndSize } from './get-files-in-folder';
1
+ import type { ProviderSpecifics } from '@remotion/serverless';
2
+ import type { FileNameAndSize } from '@remotion/serverless/client';
2
3
  export type LambdaErrorInfo = {
3
4
  type: 'renderer' | 'browser' | 'stitcher' | 'webhook' | 'artifact';
4
5
  message: string;
@@ -15,7 +16,7 @@ export type LambdaErrorInfo = {
15
16
  total: number;
16
17
  } | null;
17
18
  };
18
- export declare const getTmpDirStateIfENoSp: (err: string) => LambdaErrorInfo['tmpDir'];
19
+ export declare const getTmpDirStateIfENoSp: <Region extends string>(err: string, providerSpecifics: ProviderSpecifics<Region>) => LambdaErrorInfo['tmpDir'];
19
20
  export type EnhancedErrorInfo = LambdaErrorInfo & {
20
21
  /**
21
22
  * @deprecated Will always be an empty string.
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTmpDirStateIfENoSp = void 0;
4
- const get_files_in_folder_1 = require("./get-files-in-folder");
5
4
  const is_enosp_err_1 = require("./is-enosp-err");
6
- const getTmpDirStateIfENoSp = (err) => {
5
+ const getTmpDirStateIfENoSp = (err, providerSpecifics) => {
7
6
  if (!(0, is_enosp_err_1.errorIsOutOfSpaceError)(err)) {
8
7
  return null;
9
8
  }
10
- const files = (0, get_files_in_folder_1.getFolderFiles)('/tmp');
9
+ const files = providerSpecifics.getFolderFiles('/tmp');
11
10
  return {
12
11
  files: files
13
12
  .slice(0)
@@ -0,0 +1,9 @@
1
+ import type { AwsRegion } from '../../pricing/aws-regions';
2
+ import type { PostRenderData } from '../../shared/constants';
3
+ export declare const writePostRenderData: ({ bucketName, renderId, postRenderData, expectedBucketOwner, region, }: {
4
+ bucketName: string;
5
+ renderId: string;
6
+ postRenderData: PostRenderData;
7
+ expectedBucketOwner: string;
8
+ region: AwsRegion;
9
+ }) => Promise<void>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writePostRenderData = void 0;
4
+ const constants_1 = require("../../shared/constants");
5
+ const io_1 = require("./io");
6
+ const writePostRenderData = async ({ bucketName, renderId, postRenderData, expectedBucketOwner, region, }) => {
7
+ await (0, io_1.lambdaWriteFile)({
8
+ bucketName,
9
+ key: (0, constants_1.postRenderDataKey)(renderId),
10
+ privacy: 'private',
11
+ body: JSON.stringify(postRenderData),
12
+ expectedBucketOwner,
13
+ region,
14
+ downloadBehavior: null,
15
+ customCredentials: null,
16
+ });
17
+ };
18
+ exports.writePostRenderData = writePostRenderData;
@@ -40,6 +40,7 @@ const innerLaunchHandler = async ({ functionName, params, options, overallProgre
40
40
  serialized: params.inputProps,
41
41
  propsType: 'input-props',
42
42
  providerSpecifics,
43
+ forcePathStyle: params.forcePathStyle,
43
44
  });
44
45
  const logOptions = {
45
46
  indent: false,
@@ -128,12 +129,14 @@ const innerLaunchHandler = async ({ functionName, params, options, overallProgre
128
129
  userSpecifiedBucketName: params.bucketName,
129
130
  needsToUpload,
130
131
  providerSpecifics,
132
+ forcePathStyle: params.forcePathStyle,
131
133
  });
132
134
  registerCleanupTask(() => {
133
135
  return (0, cleanup_props_1.cleanupProps)({
134
136
  serializedResolvedProps,
135
137
  inputProps: params.inputProps,
136
138
  providerSpecifics,
139
+ forcePathStyle: params.forcePathStyle,
137
140
  });
138
141
  });
139
142
  const fps = comp.fps / params.everyNthFrame;
@@ -188,6 +191,7 @@ const innerLaunchHandler = async ({ functionName, params, options, overallProgre
188
191
  compositionStart: realFrameRange[0],
189
192
  framesPerLambda,
190
193
  progressEveryNthFrame,
194
+ forcePathStyle: params.forcePathStyle,
191
195
  };
192
196
  return payload;
193
197
  });
@@ -237,6 +241,7 @@ const innerLaunchHandler = async ({ functionName, params, options, overallProgre
237
241
  region: providerSpecifics.getCurrentRegionInFunction(),
238
242
  currentRegion: providerSpecifics.getCurrentRegionInFunction(),
239
243
  providerSpecifics,
244
+ forcePathStyle: params.forcePathStyle,
240
245
  });
241
246
  if (output) {
242
247
  throw new TypeError(`Output file "${key}" in bucket "${renderBucketName}" in region "${providerSpecifics.getCurrentRegionInFunction()}" already exists. Delete it before re-rendering, or set the 'overwrite' option in renderMediaOnLambda() to overwrite it."`);
@@ -272,6 +277,7 @@ const innerLaunchHandler = async ({ functionName, params, options, overallProgre
272
277
  expectedBucketOwner: options.expectedBucketOwner,
273
278
  downloadBehavior: params.downloadBehavior,
274
279
  customCredentials,
280
+ forcePathStyle: params.forcePathStyle,
275
281
  })
276
282
  .then(() => {
277
283
  renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, `Wrote artifact to S3 in ${Date.now() - start}ms`);
@@ -342,6 +348,7 @@ const innerLaunchHandler = async ({ functionName, params, options, overallProgre
342
348
  overallProgress,
343
349
  startTime,
344
350
  providerSpecifics,
351
+ forcePathStyle: params.forcePathStyle,
345
352
  });
346
353
  return postRenderData;
347
354
  };
@@ -445,6 +452,7 @@ const launchHandler = async (params, options, providerSpecifics) => {
445
452
  timeoutTimestamp: options.getRemainingTimeInMillis() + Date.now(),
446
453
  logLevel: params.logLevel,
447
454
  providerSpecifics,
455
+ forcePathStyle: params.forcePathStyle,
448
456
  });
449
457
  try {
450
458
  const postRenderData = await innerLaunchHandler({
@@ -0,0 +1,9 @@
1
+ import type { LambdaPayload, PostRenderData } from '../defaults';
2
+ type Options = {
3
+ expectedBucketOwner: string;
4
+ };
5
+ export declare const mergeHandler: (params: LambdaPayload, options: Options) => Promise<{
6
+ type: 'success';
7
+ postRenderData: PostRenderData;
8
+ }>;
9
+ export {};
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeHandler = void 0;
4
+ const renderer_1 = require("@remotion/renderer");
5
+ const defaults_1 = require("../defaults");
6
+ const expected_out_name_1 = require("./helpers/expected-out-name");
7
+ const get_current_region_1 = require("./helpers/get-current-region");
8
+ const get_render_metadata_1 = require("./helpers/get-render-metadata");
9
+ const merge_chunks_1 = require("./helpers/merge-chunks");
10
+ const mergeHandler = async (params, options) => {
11
+ var _a, _b;
12
+ if (params.type !== defaults_1.LambdaRoutines.merge) {
13
+ throw new Error('Expected launch type');
14
+ }
15
+ renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'This function has been started because the previous main function has timed out while merging together the chunks.');
16
+ renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'The merging of chunks will now restart.');
17
+ const renderMetadata = await (0, get_render_metadata_1.getRenderMetadata)({
18
+ bucketName: params.bucketName,
19
+ expectedBucketOwner: options.expectedBucketOwner,
20
+ region: (0, get_current_region_1.getCurrentRegionInFunction)(),
21
+ renderId: params.renderId,
22
+ });
23
+ if (!renderMetadata.codec) {
24
+ throw new Error('expected codec');
25
+ }
26
+ const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, params.bucketName, typeof params.outName === 'string' || typeof params.outName === 'undefined'
27
+ ? null
28
+ : (_b = (_a = params.outName) === null || _a === void 0 ? void 0 : _a.s3OutputProvider) !== null && _b !== void 0 ? _b : null);
29
+ const frameCount = renderer_1.RenderInternals.getFramesToRender(renderMetadata.frameRange, renderMetadata.everyNthFrame);
30
+ const fps = renderMetadata.videoConfig.fps / renderMetadata.everyNthFrame;
31
+ const postRenderData = await (0, merge_chunks_1.mergeChunksAndFinishRender)({
32
+ audioCodec: renderMetadata.audioCodec,
33
+ bucketName: params.bucketName,
34
+ chunkCount: renderMetadata.totalChunks,
35
+ codec: renderMetadata.codec,
36
+ customCredentials,
37
+ downloadBehavior: renderMetadata.downloadBehavior,
38
+ expectedBucketOwner: options.expectedBucketOwner,
39
+ fps,
40
+ numberOfFrames: frameCount.length,
41
+ inputProps: params.inputProps,
42
+ key,
43
+ numberOfGifLoops: renderMetadata.numberOfGifLoops,
44
+ privacy: renderMetadata.privacy,
45
+ renderBucketName,
46
+ renderId: params.renderId,
47
+ renderMetadata,
48
+ serializedResolvedProps: params.serializedResolvedProps,
49
+ onAllChunks: () => {
50
+ renderer_1.RenderInternals.Log.info({ indent: false, logLevel: params.logLevel }, 'All chunks have been downloaded now.');
51
+ },
52
+ audioBitrate: renderMetadata.audioBitrate,
53
+ logLevel: params.logLevel,
54
+ framesPerLambda: params.framesPerLambda,
55
+ binariesDirectory: null,
56
+ preferLossless: params.preferLossless,
57
+ compositionStart: params.compositionStart,
58
+ });
59
+ return { type: 'success', postRenderData };
60
+ };
61
+ exports.mergeHandler = mergeHandler;
@@ -25,6 +25,7 @@ const progressHandler = async (lambdaParams, options) => {
25
25
  timeoutInMilliseconds: options.timeoutInMilliseconds,
26
26
  customCredentials: (_a = lambdaParams.s3OutputProvider) !== null && _a !== void 0 ? _a : null,
27
27
  providerSpecifics: options.providerSpecifics,
28
+ forcePathStyle: lambdaParams.forcePathStyle,
28
29
  });
29
30
  return progress;
30
31
  }
@@ -31,6 +31,7 @@ const renderHandler = async ({ params, options, logs, onStream, providerSpecific
31
31
  serialized: params.inputProps,
32
32
  propsType: 'input-props',
33
33
  providerSpecifics,
34
+ forcePathStyle: params.forcePathStyle,
34
35
  });
35
36
  const resolvedPropsPromise = (0, client_1.decompressInputProps)({
36
37
  bucketName: params.bucketName,
@@ -39,6 +40,7 @@ const renderHandler = async ({ params, options, logs, onStream, providerSpecific
39
40
  serialized: params.resolvedProps,
40
41
  propsType: 'resolved-props',
41
42
  providerSpecifics,
43
+ forcePathStyle: params.forcePathStyle,
42
44
  });
43
45
  const browserInstance = await (0, serverless_1.getBrowserInstance)({
44
46
  logLevel: params.logLevel,
@@ -24,6 +24,7 @@ const startHandler = async (params, options, providerSpecifics) => {
24
24
  enableFolderExpiry: null,
25
25
  customCredentials: null,
26
26
  providerSpecifics,
27
+ forcePathStyle: params.forcePathStyle,
27
28
  })).bucketName;
28
29
  const realServeUrl = providerSpecifics.convertToServeUrl({
29
30
  urlOrId: params.serveUrl,
@@ -40,6 +41,7 @@ const startHandler = async (params, options, providerSpecifics) => {
40
41
  key: (0, client_1.overallProgressKey)(options.renderId),
41
42
  privacy: 'private',
42
43
  customCredentials: null,
44
+ forcePathStyle: params.forcePathStyle,
43
45
  });
44
46
  const payload = {
45
47
  type: client_1.ServerlessRoutines.launch,
@@ -84,6 +86,7 @@ const startHandler = async (params, options, providerSpecifics) => {
84
86
  deleteAfter: params.deleteAfter,
85
87
  colorSpace: params.colorSpace,
86
88
  preferLossless: params.preferLossless,
89
+ forcePathStyle: params.forcePathStyle,
87
90
  };
88
91
  const stringifiedPayload = JSON.stringify(payload);
89
92
  if (stringifiedPayload.length > 256 * 1024) {
@@ -52,6 +52,7 @@ const innerStillHandler = async ({ params: lambdaParams, expectedBucketOwner, re
52
52
  enableFolderExpiry: null,
53
53
  customCredentials: null,
54
54
  providerSpecifics,
55
+ forcePathStyle: lambdaParams.forcePathStyle,
55
56
  }).then((b) => b.bucketName);
56
57
  const outputDir = renderer_1.RenderInternals.tmpDir('remotion-render-');
57
58
  const outputPath = node_path_1.default.join(outputDir, 'output');
@@ -64,6 +65,7 @@ const innerStillHandler = async ({ params: lambdaParams, expectedBucketOwner, re
64
65
  serialized: lambdaParams.inputProps,
65
66
  propsType: 'input-props',
66
67
  providerSpecifics,
68
+ forcePathStyle: lambdaParams.forcePathStyle,
67
69
  });
68
70
  const serveUrl = providerSpecifics.convertToServeUrl({
69
71
  urlOrId: lambdaParams.serveUrl,
@@ -138,6 +140,7 @@ const innerStillHandler = async ({ params: lambdaParams, expectedBucketOwner, re
138
140
  expectedBucketOwner,
139
141
  downloadBehavior: null,
140
142
  customCredentials: null,
143
+ forcePathStyle: lambdaParams.forcePathStyle,
141
144
  });
142
145
  const onBrowserDownload = () => {
143
146
  throw new Error('Should not download a browser in Lambda');
@@ -167,6 +170,7 @@ const innerStillHandler = async ({ params: lambdaParams, expectedBucketOwner, re
167
170
  expectedBucketOwner,
168
171
  downloadBehavior: lambdaParams.downloadBehavior,
169
172
  customCredentials,
173
+ forcePathStyle: lambdaParams.forcePathStyle,
170
174
  })
171
175
  .then(() => {
172
176
  renderer_1.RenderInternals.Log.info({ indent: false, logLevel: lambdaParams.logLevel }, `Wrote artifact to S3 in ${Date.now() - startTime}ms`);
@@ -221,6 +225,7 @@ const innerStillHandler = async ({ params: lambdaParams, expectedBucketOwner, re
221
225
  region: providerSpecifics.getCurrentRegionInFunction(),
222
226
  downloadBehavior: lambdaParams.downloadBehavior,
223
227
  customCredentials,
228
+ forcePathStyle: lambdaParams.forcePathStyle,
224
229
  });
225
230
  await Promise.all([
226
231
  node_fs_1.default.promises.rm(outputPath, { recursive: true }),
@@ -228,6 +233,7 @@ const innerStillHandler = async ({ params: lambdaParams, expectedBucketOwner, re
228
233
  region: providerSpecifics.getCurrentRegionInFunction(),
229
234
  serialized: lambdaParams.inputProps,
230
235
  providerSpecifics,
236
+ forcePathStyle: lambdaParams.forcePathStyle,
231
237
  }),
232
238
  server.closeServer(true),
233
239
  ]);
package/dist/index.d.ts CHANGED
@@ -49,11 +49,11 @@ declare const renderStillOnLambda: (input: RenderStillOnLambdaInput) => Promise<
49
49
  /**
50
50
  * @deprecated Import this from `@remotion/lambda/client` instead
51
51
  */
52
- declare const presignUrl: <CheckIfObjectExists extends boolean = false>({ region, bucketName, objectKey, checkIfObjectExists, expiresInSeconds, }: import("./api/presign-url").PresignUrlInput<CheckIfObjectExists>) => Promise<CheckIfObjectExists extends true ? string | null : string>;
52
+ declare const presignUrl: <CheckIfObjectExists extends boolean = false>({ region, bucketName, objectKey, checkIfObjectExists, expiresInSeconds, forcePathStyle, }: import("./api/presign-url").PresignUrlInput<CheckIfObjectExists>) => Promise<CheckIfObjectExists extends true ? string | null : string>;
53
53
  /**
54
54
  * @deprecated Import this from `@remotion/lambda/client` instead
55
55
  */
56
- declare const getSites: ({ region, forceBucketName, }: GetSitesInput) => Promise<GetSitesOutput>;
56
+ declare const getSites: ({ region, forceBucketName, forcePathStyle, }: GetSitesInput) => Promise<GetSitesOutput>;
57
57
  export { LambdaInternals, deleteFunction, deleteRender, deleteSite, deployFunction, deploySite, downloadMedia, estimatePrice, getAwsClient, getCompositionsOnLambda, getFunctionInfo, getFunctions, getOrCreateBucket, getRegions, getRenderProgress, getRolePolicy, getSites, getUserPolicy, presignUrl, renderMediaOnLambda, renderStillOnLambda, renderVideoOnLambda, simulatePermissions, validateWebhookSignature, };
58
58
  export type { AwsRegion, CustomCredentials, DeleteFunctionInput, DeleteRenderInput, DeleteSiteInput, DeleteSiteOutput, DeployFunctionInput, DeployFunctionOutput, DeploySiteInput, DeploySiteOutput, DownloadMediaInput, DownloadMediaOutput, EnhancedErrorInfo, EstimatePriceInput, FunctionInfo, GetAwsClientInput, GetAwsClientOutput, GetCompositionsOnLambdaInput, GetCompositionsOnLambdaOutput, GetFunctionInfoInput, GetFunctionsInput, GetOrCreateBucketInput, GetOrCreateBucketOutput, GetRenderProgressInput, GetSitesInput, GetSitesOutput, LambdaErrorInfo, RenderMediaOnLambdaInput, RenderMediaOnLambdaOutput, RenderProgress, RenderStillOnLambdaInput, RenderStillOnLambdaOutput, SimulatePermissionsInput, SimulatePermissionsOutput, WebhookPayload, };
59
59
  export { _InternalAwsProvider, _InternalOverallRenderProgress };
@@ -1,8 +1,8 @@
1
1
  export declare const LambdaInternals: {
2
- executeCommand: (args: string[], remotionRoot: string, logLevel: "verbose" | "info" | "warn" | "error", implementation: import("@remotion/serverless").ProviderSpecifics<import("./functions/aws-implementation").AwsProvider> | null) => Promise<void>;
3
- makeLambdaRenderMediaPayload: ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, x264Preset, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, encodingMaxRate, encodingBufferSize, downloadBehavior, muted, overwrite, jpegQuality, offthreadVideoCacheSizeInBytes, deleteAfter, colorSpace, preferLossless, }: import("./api/make-lambda-payload").InnerRenderMediaOnLambdaInput) => Promise<import("@remotion/serverless/client").ServerlessStartPayload<import("./functions/aws-implementation").AwsProvider>>;
4
- getRenderProgressPayload: ({ bucketName, renderId, s3OutputProvider, logLevel, }: import("./client").GetRenderProgressInput) => import("@remotion/serverless/client").ServerlessStatusPayload<import("./functions/aws-implementation").AwsProvider>;
5
- makeLambdaRenderStillPayload: ({ serveUrl, inputProps, imageFormat, envVariables, quality, jpegQuality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, offthreadVideoCacheSizeInBytes, deleteAfter, }: import("./api/render-still-on-lambda").RenderStillOnLambdaNonNullInput) => Promise<{
2
+ executeCommand: (args: string[], remotionRoot: string, logLevel: "error" | "verbose" | "info" | "warn", implementation: import("@remotion/serverless").ProviderSpecifics<import("./functions/aws-implementation").AwsProvider> | null) => Promise<void>;
3
+ makeLambdaRenderMediaPayload: ({ rendererFunctionName, frameRange, framesPerLambda, forceBucketName: bucketName, codec, composition, serveUrl, imageFormat, inputProps, region, crf, envVariables, pixelFormat, proResProfile, x264Preset, maxRetries, privacy, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, everyNthFrame, numberOfGifLoops, audioBitrate, concurrencyPerLambda, audioCodec, forceHeight, forceWidth, webhook, videoBitrate, encodingMaxRate, encodingBufferSize, downloadBehavior, muted, overwrite, jpegQuality, offthreadVideoCacheSizeInBytes, deleteAfter, colorSpace, preferLossless, forcePathStyle, }: import("./api/make-lambda-payload").InnerRenderMediaOnLambdaInput) => Promise<import("@remotion/serverless/client").ServerlessStartPayload<import("./functions/aws-implementation").AwsProvider>>;
4
+ getRenderProgressPayload: ({ bucketName, renderId, s3OutputProvider, logLevel, forcePathStyle, }: import("./client").GetRenderProgressInput) => import("@remotion/serverless/client").ServerlessStatusPayload<import("./functions/aws-implementation").AwsProvider>;
5
+ makeLambdaRenderStillPayload: ({ serveUrl, inputProps, imageFormat, envVariables, quality, jpegQuality, region, maxRetries, composition, privacy, frame, logLevel, outName, timeoutInMilliseconds, chromiumOptions, scale, downloadBehavior, forceHeight, forceWidth, forceBucketName, offthreadVideoCacheSizeInBytes, deleteAfter, forcePathStyle, }: import("./api/render-still-on-lambda").RenderStillOnLambdaNonNullInput) => Promise<{
6
6
  type: import("@remotion/serverless/client").ServerlessRoutines.still;
7
7
  serveUrl: string;
8
8
  composition: string;
@@ -14,7 +14,7 @@ export declare const LambdaInternals: {
14
14
  maxRetries: number;
15
15
  frame: number;
16
16
  privacy: import("@remotion/serverless/client").Privacy;
17
- logLevel: "verbose" | "info" | "warn" | "error";
17
+ logLevel: "error" | "verbose" | "info" | "warn";
18
18
  outName: import("@remotion/serverless/client").OutNameInput<import("./functions/aws-implementation").AwsProvider> | null;
19
19
  timeoutInMilliseconds: number;
20
20
  chromiumOptions: import("@remotion/renderer").ChromiumOptions;
@@ -27,16 +27,18 @@ export declare const LambdaInternals: {
27
27
  offthreadVideoCacheSizeInBytes: number | null;
28
28
  deleteAfter: "1-day" | "3-days" | "7-days" | "30-days" | null;
29
29
  streamed: boolean;
30
+ forcePathStyle: boolean;
30
31
  }>;
31
32
  internalDeploySite: (args_0: {
32
33
  entryPoint: string;
33
34
  bucketName: string;
34
- region: "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-south-1" | "eu-north-1" | "us-east-1" | "us-east-2" | "us-west-1" | "us-west-2" | "af-south-1" | "ap-south-1" | "ap-east-1" | "ap-southeast-1" | "ap-southeast-2" | "ap-northeast-1" | "ap-northeast-2" | "ap-northeast-3" | "ca-central-1" | "me-south-1" | "sa-east-1";
35
+ region: "us-east-1" | "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-south-1" | "eu-north-1" | "us-east-2" | "us-west-1" | "us-west-2" | "af-south-1" | "ap-south-1" | "ap-east-1" | "ap-southeast-1" | "ap-southeast-2" | "ap-northeast-1" | "ap-northeast-2" | "ap-northeast-3" | "ca-central-1" | "me-south-1" | "sa-east-1";
35
36
  } & {
36
37
  siteName: string;
37
38
  options: {
38
39
  onBundleProgress?: ((progress: number) => void) | undefined;
39
40
  onUploadProgress?: ((upload: import("./api/upload-dir").UploadDirProgress) => void) | undefined;
41
+ onDiffingProgress?: ((bytes: number, done: boolean) => void) | undefined;
40
42
  webpackOverride?: import("@remotion/bundler").WebpackOverrideFn | undefined;
41
43
  ignoreRegisterRootWarning?: boolean | undefined;
42
44
  enableCaching?: boolean | undefined;
@@ -47,6 +49,7 @@ export declare const LambdaInternals: {
47
49
  privacy: "public" | "no-acl";
48
50
  gitSource: import("@remotion/bundler").GitSource | null;
49
51
  indent: boolean;
52
+ forcePathStyle: boolean;
50
53
  } & import("@remotion/renderer").ToOptions<{
51
54
  readonly logLevel: {
52
55
  cliFlag: "log";
@@ -57,11 +60,11 @@ export declare const LambdaInternals: {
57
60
  getValue: ({ commandLine }: {
58
61
  commandLine: Record<string, unknown>;
59
62
  }) => {
60
- value: "verbose" | "info" | "warn" | "error";
63
+ value: "error" | "verbose" | "info" | "warn";
61
64
  source: string;
62
65
  };
63
- setConfig: (newLogLevel: "verbose" | "info" | "warn" | "error") => void;
64
- type: "verbose" | "info" | "warn" | "error";
66
+ setConfig: (newLogLevel: "error" | "verbose" | "info" | "warn") => void;
67
+ type: "error" | "verbose" | "info" | "warn";
65
68
  };
66
69
  readonly throwIfSiteExists: {
67
70
  cliFlag: string;
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lambdaDeleteFileImplementation = void 0;
4
4
  const client_s3_1 = require("@aws-sdk/client-s3");
5
5
  const get_s3_client_1 = require("../shared/get-s3-client");
6
- const lambdaDeleteFileImplementation = async ({ bucketName, key, region, customCredentials, }) => {
7
- await (0, get_s3_client_1.getS3Client)(region, customCredentials).send(new client_s3_1.DeleteObjectCommand({
6
+ const lambdaDeleteFileImplementation = async ({ bucketName, key, region, customCredentials, forcePathStyle, }) => {
7
+ await (0, get_s3_client_1.getS3Client)({ region, customCredentials, forcePathStyle }).send(new client_s3_1.DeleteObjectCommand({
8
8
  Bucket: bucketName,
9
9
  Key: key,
10
10
  }));
@@ -3,8 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lambdaHeadFileImplementation = void 0;
4
4
  const client_s3_1 = require("@aws-sdk/client-s3");
5
5
  const get_s3_client_1 = require("../shared/get-s3-client");
6
- const lambdaHeadFileImplementation = async ({ bucketName, key, region, customCredentials, }) => {
7
- const head = await (0, get_s3_client_1.getS3Client)(region, customCredentials).send(new client_s3_1.HeadObjectCommand({
6
+ const lambdaHeadFileImplementation = async ({ bucketName, key, region, customCredentials, forcePathStyle, }) => {
7
+ const head = await (0, get_s3_client_1.getS3Client)({
8
+ region,
9
+ customCredentials,
10
+ forcePathStyle,
11
+ }).send(new client_s3_1.HeadObjectCommand({
8
12
  Bucket: bucketName,
9
13
  Key: key,
10
14
  }));
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lambdaLsImplementation = void 0;
4
4
  const client_s3_1 = require("@aws-sdk/client-s3");
5
5
  const get_s3_client_1 = require("../shared/get-s3-client");
6
- const lambdaLsImplementation = async ({ bucketName, prefix, region, expectedBucketOwner, continuationToken, }) => {
6
+ const lambdaLsImplementation = async ({ bucketName, prefix, region, expectedBucketOwner, continuationToken, forcePathStyle, }) => {
7
7
  var _a, _b, _c, _d;
8
8
  try {
9
- const list = await (0, get_s3_client_1.getS3Client)(region, null).send(new client_s3_1.ListObjectsV2Command({
9
+ const list = await (0, get_s3_client_1.getS3Client)({
10
+ region,
11
+ customCredentials: null,
12
+ forcePathStyle,
13
+ }).send(new client_s3_1.ListObjectsV2Command({
10
14
  Bucket: bucketName,
11
15
  Prefix: prefix,
12
16
  ExpectedBucketOwner: expectedBucketOwner !== null && expectedBucketOwner !== void 0 ? expectedBucketOwner : undefined,
@@ -28,6 +32,7 @@ const lambdaLsImplementation = async ({ bucketName, prefix, region, expectedBuck
28
32
  expectedBucketOwner,
29
33
  region,
30
34
  continuationToken: list.NextContinuationToken,
35
+ forcePathStyle,
31
36
  })),
32
37
  ];
33
38
  }
@@ -46,7 +51,11 @@ const lambdaLsImplementation = async ({ bucketName, prefix, region, expectedBuck
46
51
  }
47
52
  // Prevent from accessing a foreign bucket, retry without ExpectedBucketOwner and see if it works. If it works then it's an owner mismatch.
48
53
  if ((_d = err.stack) === null || _d === void 0 ? void 0 : _d.includes('AccessDenied')) {
49
- await (0, get_s3_client_1.getS3Client)(region, null).send(new client_s3_1.ListObjectsV2Command({
54
+ await (0, get_s3_client_1.getS3Client)({
55
+ region,
56
+ customCredentials: null,
57
+ forcePathStyle,
58
+ }).send(new client_s3_1.ListObjectsV2Command({
50
59
  Bucket: bucketName,
51
60
  Prefix: prefix,
52
61
  }));
@@ -1,9 +1,10 @@
1
1
  /// <reference types="node" />
2
2
  import type { Readable } from 'stream';
3
3
  import type { AwsRegion } from '../regions';
4
- export declare const lambdaReadFileImplementation: ({ bucketName, key, region, expectedBucketOwner, }: {
4
+ export declare const lambdaReadFileImplementation: ({ bucketName, key, region, expectedBucketOwner, forcePathStyle, }: {
5
5
  bucketName: string;
6
6
  key: string;
7
7
  region: AwsRegion;
8
8
  expectedBucketOwner: string;
9
+ forcePathStyle: boolean;
9
10
  }) => Promise<Readable>;
@@ -3,8 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lambdaReadFileImplementation = void 0;
4
4
  const client_s3_1 = require("@aws-sdk/client-s3");
5
5
  const get_s3_client_1 = require("../shared/get-s3-client");
6
- const lambdaReadFileImplementation = async ({ bucketName, key, region, expectedBucketOwner, }) => {
7
- const { Body } = await (0, get_s3_client_1.getS3Client)(region, null).send(new client_s3_1.GetObjectCommand({
6
+ const lambdaReadFileImplementation = async ({ bucketName, key, region, expectedBucketOwner, forcePathStyle, }) => {
7
+ const { Body } = await (0, get_s3_client_1.getS3Client)({
8
+ region,
9
+ customCredentials: null,
10
+ forcePathStyle,
11
+ }).send(new client_s3_1.GetObjectCommand({
8
12
  Bucket: bucketName,
9
13
  Key: key,
10
14
  ExpectedBucketOwner: expectedBucketOwner,
@@ -8,8 +8,12 @@ const client_s3_1 = require("@aws-sdk/client-s3");
8
8
  const mime_types_1 = __importDefault(require("mime-types"));
9
9
  const content_disposition_header_1 = require("../shared/content-disposition-header");
10
10
  const get_s3_client_1 = require("../shared/get-s3-client");
11
- const tryLambdaWriteFile = async ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, customCredentials, }) => {
12
- await (0, get_s3_client_1.getS3Client)(region, customCredentials).send(new client_s3_1.PutObjectCommand({
11
+ const tryLambdaWriteFile = async ({ bucketName, key, body, region, privacy, expectedBucketOwner, downloadBehavior, customCredentials, forcePathStyle, }) => {
12
+ await (0, get_s3_client_1.getS3Client)({
13
+ region,
14
+ customCredentials: customCredentials,
15
+ forcePathStyle,
16
+ }).send(new client_s3_1.PutObjectCommand({
13
17
  Bucket: bucketName,
14
18
  Key: key,
15
19
  Body: body,
@@ -6,8 +6,8 @@ const readDirectory = ({ dir }) => {
6
6
  const files = (0, upload_dir_1.getDirFiles)(dir);
7
7
  const obj = {};
8
8
  for (const file of files) {
9
- obj[file.name] = 'etag';
9
+ obj[file.name] = () => Promise.resolve('etag');
10
10
  }
11
- return Promise.resolve(obj);
11
+ return obj;
12
12
  };
13
13
  exports.readDirectory = readDirectory;