@remotion/lambda 4.0.495 → 4.0.497

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.
@@ -8604,7 +8604,7 @@ var require_package = __commonJS((exports, module) => {
8604
8604
  url: "https://github.com/remotion-dev/remotion/tree/main/packages/lambda"
8605
8605
  },
8606
8606
  name: "@remotion/lambda",
8607
- version: "4.0.495",
8607
+ version: "4.0.497",
8608
8608
  description: "Render Remotion videos on AWS Lambda",
8609
8609
  main: "dist/index.js",
8610
8610
  scripts: {
@@ -9688,6 +9688,9 @@ var makeS3Key = (folder, dir, filePath) => {
9688
9688
  return `${folder}/${path.relative(dir, filePath).split(path.sep).join("/")}`;
9689
9689
  };
9690
9690
 
9691
+ // src/shared/multipart-upload-part-size.ts
9692
+ var multipartUploadPartSize = 40 * 1024 * 1024;
9693
+
9691
9694
  // src/api/upload-dir.ts
9692
9695
  async function getFiles(directory, originalDirectory, toUpload) {
9693
9696
  const dirents = await fs.readdir(directory, { withFileTypes: true });
@@ -9745,7 +9748,7 @@ var uploadDir = async ({
9745
9748
  const parallelUploadsS3 = new Upload({
9746
9749
  client,
9747
9750
  queueSize: 2,
9748
- partSize: 40 * 1024 * 1024,
9751
+ partSize: multipartUploadPartSize,
9749
9752
  params: {
9750
9753
  Key,
9751
9754
  Bucket: bucket,
@@ -9798,20 +9801,19 @@ import * as path3 from "node:path";
9798
9801
  // src/shared/get-etag.ts
9799
9802
  import crypto from "node:crypto";
9800
9803
  import fs2 from "node:fs";
9801
- var chunk = 1024 * 1024 * 5;
9802
9804
  var md5 = (data) => crypto.createHash("md5").update(data).digest("hex");
9803
9805
  var getEtagOfFile = (filePath, onProgress) => {
9804
9806
  const calc = async () => {
9805
9807
  const size = await fs2.promises.stat(filePath).then((s) => s.size);
9806
- if (size <= chunk) {
9808
+ if (size <= multipartUploadPartSize) {
9807
9809
  const buffer = await fs2.promises.readFile(filePath);
9808
9810
  return `"${md5(buffer)}"`;
9809
9811
  }
9810
9812
  const stream = fs2.createReadStream(filePath, {
9811
- highWaterMark: chunk
9813
+ highWaterMark: multipartUploadPartSize
9812
9814
  });
9813
9815
  const md5Chunks = [];
9814
- const chunksNumber = Math.ceil(size / chunk);
9816
+ const chunksNumber = Math.ceil(size / multipartUploadPartSize);
9815
9817
  return new Promise((resolve, reject) => {
9816
9818
  stream.on("data", (c) => {
9817
9819
  md5Chunks.push(md5(c));
@@ -10030,12 +10032,16 @@ var deployFunction = ({
10030
10032
 
10031
10033
  // src/api/deploy-site.ts
10032
10034
  import fs4 from "node:fs";
10035
+ import { LambdaClientInternals as LambdaClientInternals7 } from "@remotion/lambda-client";
10036
+ import { getSitesKey as getSitesKey3 } from "@remotion/lambda-client/constants";
10037
+ import { wrapWithErrorHandling as wrapWithErrorHandling2 } from "@remotion/renderer/error-handling";
10038
+
10039
+ // src/shared/deploy-site-with-bundle.ts
10033
10040
  import { LambdaClientInternals as LambdaClientInternals6 } from "@remotion/lambda-client";
10034
10041
  import {
10035
10042
  getSitesKey as getSitesKey2,
10036
10043
  REMOTION_BUCKET_PREFIX as REMOTION_BUCKET_PREFIX3
10037
10044
  } from "@remotion/lambda-client/constants";
10038
- import { wrapWithErrorHandling as wrapWithErrorHandling2 } from "@remotion/renderer/error-handling";
10039
10045
  import { validateBucketName, validatePrivacy } from "@remotion/serverless";
10040
10046
 
10041
10047
  // src/shared/get-s3-operations.ts
@@ -10095,39 +10101,43 @@ var getS3DiffOperations = async ({
10095
10101
  };
10096
10102
 
10097
10103
  // src/shared/validate-site-name.ts
10104
+ var VALID_SITE_NAME_RE = /^[-0-9a-zA-Z!_.*'()]+$/;
10098
10105
  var validateSiteName = (siteName) => {
10099
10106
  if (typeof siteName === "undefined") {
10100
10107
  return;
10101
10108
  }
10102
10109
  if (typeof siteName !== "string") {
10103
- throw new TypeError(`The 'projectName' argument must be a string if provided, but is ${JSON.stringify(siteName)}`);
10110
+ throw new TypeError(`The 'siteName' argument must be a string if provided, but is ${JSON.stringify(siteName)}`);
10104
10111
  }
10105
- if (!siteName.match(/([0-9a-zA-Z-!_.*'()]+)/g)) {
10106
- throw new Error("The `siteName` must match the RegExp `/([0-9a-zA-Z-!_.*'()]+)/g`. You passed: " + siteName + ". Check for invalid characters.");
10112
+ if (siteName === "." || siteName === "..") {
10113
+ throw new Error("The `siteName` must not be `.` or `..`. You passed: " + siteName + ".");
10114
+ }
10115
+ if (!VALID_SITE_NAME_RE.test(siteName)) {
10116
+ throw new Error("The `siteName` must match the RegExp `/" + VALID_SITE_NAME_RE.source + "/`. You passed: " + siteName + ". Check for invalid characters.");
10107
10117
  }
10108
10118
  };
10109
10119
 
10110
- // src/api/deploy-site.ts
10111
- var mandatoryDeploySite = async ({
10120
+ // src/shared/deploy-site-with-bundle.ts
10121
+ var deleteConcurrency = 10;
10122
+ var deploySiteWithBundle = async ({
10112
10123
  bucketName,
10113
- entryPoint,
10124
+ region,
10114
10125
  siteName,
10115
10126
  options,
10116
- region,
10117
10127
  privacy,
10118
- gitSource,
10119
10128
  throwIfSiteExists,
10120
10129
  providerSpecifics,
10121
10130
  forcePathStyle,
10122
10131
  fullClientSpecifics,
10123
- requestHandler
10132
+ requestHandler,
10133
+ getBundle
10124
10134
  }) => {
10125
10135
  LambdaClientInternals6.validateAwsRegion(region);
10126
10136
  validateBucketName({
10127
10137
  bucketName,
10128
10138
  bucketNamePrefix: REMOTION_BUCKET_PREFIX3,
10129
10139
  options: {
10130
- mustStartWithRemotion: !options?.bypassBucketNameValidation
10140
+ mustStartWithRemotion: !options.bypassBucketNameValidation
10131
10141
  }
10132
10142
  });
10133
10143
  validateSiteName(siteName);
@@ -10144,7 +10154,7 @@ var mandatoryDeploySite = async ({
10144
10154
  throw new Error(`No bucket with the name ${bucketName} exists`);
10145
10155
  }
10146
10156
  const subFolder = getSitesKey2(siteName);
10147
- const [files, bundled] = await Promise.all([
10157
+ const [files, bundleDir] = await Promise.all([
10148
10158
  providerSpecifics.listObjects({
10149
10159
  bucketName,
10150
10160
  expectedBucketOwner: accountId,
@@ -10153,38 +10163,7 @@ var mandatoryDeploySite = async ({
10153
10163
  forcePathStyle,
10154
10164
  requestHandler
10155
10165
  }),
10156
- fullClientSpecifics.bundleSite({
10157
- publicPath: `/${subFolder}/`,
10158
- webpackOverride: options?.webpackOverride ?? ((f) => f),
10159
- enableCaching: options?.enableCaching ?? true,
10160
- publicDir: options?.publicDir ?? null,
10161
- rootDir: options?.rootDir ?? null,
10162
- ignoreRegisterRootWarning: options?.ignoreRegisterRootWarning ?? false,
10163
- onProgress: options?.onBundleProgress ?? (() => {
10164
- return;
10165
- }),
10166
- entryPoint,
10167
- gitSource,
10168
- bufferStateDelayInMilliseconds: null,
10169
- maxTimelineTracks: null,
10170
- onDirectoryCreated: () => {
10171
- return;
10172
- },
10173
- onPublicDirCopyProgress: () => {
10174
- return;
10175
- },
10176
- onSymlinkDetected: () => {
10177
- return;
10178
- },
10179
- outDir: null,
10180
- askAIEnabled: options?.askAIEnabled ?? true,
10181
- interactivityEnabled: options?.interactivityEnabled ?? true,
10182
- audioLatencyHint: null,
10183
- keyboardShortcutsEnabled: options?.keyboardShortcutsEnabled ?? true,
10184
- renderDefaults: null,
10185
- rspack: options?.rspack ?? false,
10186
- symlinkPublicDir: false
10187
- })
10166
+ getBundle()
10188
10167
  ]);
10189
10168
  if (throwIfSiteExists && files.length > 0) {
10190
10169
  throw new Error("`throwIfSiteExists` was passed as true, but there are already files in this folder: " + files.slice(0, 5).map((f) => f.Key).join(", "));
@@ -10193,7 +10172,7 @@ var mandatoryDeploySite = async ({
10193
10172
  let totalBytes = 0;
10194
10173
  const { toDelete, toUpload, existingCount } = await getS3DiffOperations({
10195
10174
  objects: files,
10196
- bundle: bundled,
10175
+ bundle: bundleDir,
10197
10176
  prefix: subFolder,
10198
10177
  onProgress: (bytes) => {
10199
10178
  totalBytes = bytes;
@@ -10202,21 +10181,32 @@ var mandatoryDeploySite = async ({
10202
10181
  fullClientSpecifics
10203
10182
  });
10204
10183
  options.onDiffingProgress?.(totalBytes, true);
10205
- await Promise.all([
10206
- fullClientSpecifics.uploadDir({
10184
+ const indexHtml = "index.html";
10185
+ const assetsToUpload = toUpload.filter((file) => file !== indexHtml);
10186
+ const indexHtmlToUpload = toUpload.filter((file) => file === indexHtml);
10187
+ const upload = (filesToUpload) => {
10188
+ if (filesToUpload.length === 0) {
10189
+ return Promise.resolve();
10190
+ }
10191
+ return fullClientSpecifics.uploadDir({
10207
10192
  bucket: bucketName,
10208
10193
  region,
10209
- localDir: bundled,
10210
- onProgress: options?.onUploadProgress ?? (() => {
10194
+ localDir: bundleDir,
10195
+ onProgress: options.onUploadProgress ?? (() => {
10211
10196
  return;
10212
10197
  }),
10213
10198
  keyPrefix: subFolder,
10214
- privacy: privacy ?? "public",
10215
- toUpload,
10199
+ privacy,
10200
+ toUpload: filesToUpload,
10216
10201
  forcePathStyle,
10217
10202
  requestHandler
10218
- }),
10219
- Promise.all(toDelete.map((d) => {
10203
+ });
10204
+ };
10205
+ await upload(assetsToUpload);
10206
+ await upload(indexHtmlToUpload);
10207
+ const limit2 = LambdaClientInternals6.pLimit(deleteConcurrency);
10208
+ await Promise.all(toDelete.map((d) => {
10209
+ return limit2(() => {
10220
10210
  return providerSpecifics.deleteFile({
10221
10211
  bucketName,
10222
10212
  customCredentials: null,
@@ -10225,13 +10215,8 @@ var mandatoryDeploySite = async ({
10225
10215
  forcePathStyle,
10226
10216
  requestHandler
10227
10217
  });
10228
- }))
10229
- ]);
10230
- if (fs4.existsSync(bundled)) {
10231
- fs4.rmSync(bundled, {
10232
- recursive: true
10233
10218
  });
10234
- }
10219
+ }));
10235
10220
  return {
10236
10221
  serveUrl: LambdaClientInternals6.makeS3ServeUrl({
10237
10222
  bucketName,
@@ -10246,6 +10231,77 @@ var mandatoryDeploySite = async ({
10246
10231
  }
10247
10232
  };
10248
10233
  };
10234
+
10235
+ // src/api/deploy-site.ts
10236
+ var mandatoryDeploySite = async ({
10237
+ bucketName,
10238
+ entryPoint,
10239
+ siteName,
10240
+ options,
10241
+ region,
10242
+ privacy,
10243
+ gitSource,
10244
+ throwIfSiteExists,
10245
+ providerSpecifics,
10246
+ forcePathStyle,
10247
+ fullClientSpecifics,
10248
+ requestHandler
10249
+ }) => {
10250
+ let generatedBundleDir = null;
10251
+ const result = await deploySiteWithBundle({
10252
+ bucketName,
10253
+ region,
10254
+ siteName,
10255
+ options,
10256
+ privacy,
10257
+ throwIfSiteExists,
10258
+ providerSpecifics,
10259
+ forcePathStyle,
10260
+ fullClientSpecifics,
10261
+ requestHandler,
10262
+ getBundle: async () => {
10263
+ generatedBundleDir = await fullClientSpecifics.bundleSite({
10264
+ publicPath: `/${getSitesKey3(siteName)}/`,
10265
+ webpackOverride: options.webpackOverride ?? ((f) => f),
10266
+ enableCaching: options.enableCaching ?? true,
10267
+ publicDir: options.publicDir ?? null,
10268
+ rootDir: options.rootDir ?? null,
10269
+ ignoreRegisterRootWarning: options.ignoreRegisterRootWarning ?? false,
10270
+ onProgress: options.onBundleProgress ?? (() => {
10271
+ return;
10272
+ }),
10273
+ entryPoint,
10274
+ gitSource,
10275
+ bufferStateDelayInMilliseconds: null,
10276
+ maxTimelineTracks: null,
10277
+ onDirectoryCreated: () => {
10278
+ return;
10279
+ },
10280
+ onPublicDirCopyProgress: () => {
10281
+ return;
10282
+ },
10283
+ onSymlinkDetected: () => {
10284
+ return;
10285
+ },
10286
+ outDir: null,
10287
+ askAIEnabled: options.askAIEnabled ?? true,
10288
+ interactivityEnabled: options.interactivityEnabled ?? true,
10289
+ audioLatencyHint: null,
10290
+ keyboardShortcutsEnabled: options.keyboardShortcutsEnabled ?? true,
10291
+ renderDefaults: null,
10292
+ rspack: options.rspack ?? false,
10293
+ symlinkPublicDir: false
10294
+ });
10295
+ return generatedBundleDir;
10296
+ }
10297
+ });
10298
+ if (generatedBundleDir && fs4.existsSync(generatedBundleDir)) {
10299
+ fs4.rmSync(generatedBundleDir, {
10300
+ recursive: true
10301
+ });
10302
+ }
10303
+ return result;
10304
+ };
10249
10305
  var internalDeploySite = wrapWithErrorHandling2(mandatoryDeploySite);
10250
10306
  var deploySite = (args) => {
10251
10307
  return internalDeploySite({
@@ -10255,20 +10311,128 @@ var deploySite = (args) => {
10255
10311
  gitSource: args.gitSource ?? null,
10256
10312
  options: args.options ?? {},
10257
10313
  privacy: args.privacy ?? "public",
10258
- siteName: args.siteName ?? LambdaClientInternals6.awsImplementation.randomHash(),
10314
+ siteName: args.siteName ?? LambdaClientInternals7.awsImplementation.randomHash(),
10259
10315
  indent: false,
10260
10316
  logLevel: "info",
10261
10317
  throwIfSiteExists: args.throwIfSiteExists ?? false,
10262
- providerSpecifics: LambdaClientInternals6.awsImplementation,
10318
+ providerSpecifics: LambdaClientInternals7.awsImplementation,
10263
10319
  forcePathStyle: args.forcePathStyle ?? false,
10264
10320
  fullClientSpecifics: awsFullClientSpecifics,
10265
10321
  requestHandler: args.requestHandler ?? null
10266
10322
  });
10267
10323
  };
10268
10324
 
10269
- // src/api/download-media.ts
10270
- import path5 from "node:path";
10325
+ // src/api/deploy-site-from-bundle.ts
10271
10326
  import { LambdaClientInternals as LambdaClientInternals8 } from "@remotion/lambda-client";
10327
+ import { wrapWithErrorHandling as wrapWithErrorHandling3 } from "@remotion/renderer/error-handling";
10328
+
10329
+ // src/shared/validate-bundle-dir.ts
10330
+ import fs5 from "node:fs";
10331
+ import path5 from "node:path";
10332
+ var getPublicPath = (indexHtml) => {
10333
+ const match = indexHtml.match(/window\.remotion_publicPath\s*=\s*("(?:[^"\\]|\\.)*")\s*;/);
10334
+ if (!match) {
10335
+ return null;
10336
+ }
10337
+ try {
10338
+ return JSON.parse(match[1]);
10339
+ } catch (error) {
10340
+ throw new Error("Could not parse `window.remotion_publicPath` in the bundle index.html.", { cause: error });
10341
+ }
10342
+ };
10343
+ var validateNoDirectorySymlinks = (directory, bundleDir) => {
10344
+ for (const entry of fs5.readdirSync(directory, { withFileTypes: true })) {
10345
+ const entryPath = path5.join(directory, entry.name);
10346
+ if (entry.isSymbolicLink()) {
10347
+ if (fs5.statSync(entryPath).isDirectory()) {
10348
+ throw new Error(`The bundle directory ${bundleDir} contains a symbolic link to a directory at ${path5.relative(bundleDir, entryPath)}. Directory symbolic links are not supported by \`deploySiteFromBundle()\`.`);
10349
+ }
10350
+ continue;
10351
+ }
10352
+ if (entry.isDirectory()) {
10353
+ validateNoDirectorySymlinks(entryPath, bundleDir);
10354
+ }
10355
+ }
10356
+ };
10357
+ var validateBundleDir = (bundleDir) => {
10358
+ if (typeof bundleDir !== "string") {
10359
+ throw new TypeError(`The \`bundleDir\` must be a string, but received ${JSON.stringify(bundleDir)}.`);
10360
+ }
10361
+ const resolvedBundleDir = path5.resolve(bundleDir);
10362
+ if (!fs5.existsSync(resolvedBundleDir)) {
10363
+ throw new Error(`The bundle directory ${resolvedBundleDir} does not exist. Run \`npx remotion bundle\` or pass a valid \`bundleDir\`.`);
10364
+ }
10365
+ if (!fs5.statSync(resolvedBundleDir).isDirectory()) {
10366
+ throw new Error(`The bundle path ${resolvedBundleDir} is not a directory. Pass the directory returned by \`bundle()\` or created by \`npx remotion bundle\`.`);
10367
+ }
10368
+ const indexHtmlPath = path5.join(resolvedBundleDir, "index.html");
10369
+ if (!fs5.existsSync(indexHtmlPath) || !fs5.statSync(indexHtmlPath).isFile()) {
10370
+ throw new Error(`The bundle directory ${resolvedBundleDir} does not contain an index.html file at its root.`);
10371
+ }
10372
+ const bundleScriptPath = path5.join(resolvedBundleDir, "bundle.js");
10373
+ if (!fs5.existsSync(bundleScriptPath) || !fs5.statSync(bundleScriptPath).isFile()) {
10374
+ throw new Error(`The bundle directory ${resolvedBundleDir} does not contain a bundle.js file at its root.`);
10375
+ }
10376
+ const indexHtml = fs5.readFileSync(indexHtmlPath, "utf8");
10377
+ const publicPath = getPublicPath(indexHtml);
10378
+ if (publicPath !== "./") {
10379
+ throw new Error(`The bundle at ${resolvedBundleDir} is not relocatable. Rebuild it using Remotion v4.0.497 or newer.`);
10380
+ }
10381
+ validateNoDirectorySymlinks(resolvedBundleDir, resolvedBundleDir);
10382
+ return resolvedBundleDir;
10383
+ };
10384
+
10385
+ // src/api/deploy-site-from-bundle.ts
10386
+ var mandatoryDeploySiteFromBundle = ({
10387
+ bucketName,
10388
+ bundleDir,
10389
+ region,
10390
+ siteName,
10391
+ options,
10392
+ privacy,
10393
+ throwIfSiteExists,
10394
+ providerSpecifics,
10395
+ forcePathStyle,
10396
+ fullClientSpecifics,
10397
+ requestHandler
10398
+ }) => {
10399
+ const resolvedBundleDir = validateBundleDir(bundleDir);
10400
+ return deploySiteWithBundle({
10401
+ bucketName,
10402
+ region,
10403
+ siteName,
10404
+ options,
10405
+ privacy,
10406
+ throwIfSiteExists,
10407
+ providerSpecifics,
10408
+ forcePathStyle,
10409
+ fullClientSpecifics,
10410
+ requestHandler,
10411
+ getBundle: () => Promise.resolve(resolvedBundleDir)
10412
+ });
10413
+ };
10414
+ var internalDeploySiteFromBundle = wrapWithErrorHandling3(mandatoryDeploySiteFromBundle);
10415
+ var deploySiteFromBundle = (args) => {
10416
+ return internalDeploySiteFromBundle({
10417
+ bucketName: args.bucketName,
10418
+ bundleDir: args.bundleDir,
10419
+ region: args.region,
10420
+ options: args.options ?? {},
10421
+ privacy: args.privacy ?? "public",
10422
+ siteName: args.siteName ?? LambdaClientInternals8.awsImplementation.randomHash(),
10423
+ indent: false,
10424
+ logLevel: args.logLevel ?? "info",
10425
+ throwIfSiteExists: args.throwIfSiteExists ?? false,
10426
+ providerSpecifics: LambdaClientInternals8.awsImplementation,
10427
+ forcePathStyle: args.forcePathStyle ?? false,
10428
+ fullClientSpecifics: awsFullClientSpecifics,
10429
+ requestHandler: args.requestHandler ?? null
10430
+ });
10431
+ };
10432
+
10433
+ // src/api/download-media.ts
10434
+ import path6 from "node:path";
10435
+ import { LambdaClientInternals as LambdaClientInternals10 } from "@remotion/lambda-client";
10272
10436
  import { REMOTION_BUCKET_PREFIX as REMOTION_BUCKET_PREFIX4 } from "@remotion/lambda-client/constants";
10273
10437
  import { RenderInternals as RenderInternals3 } from "@remotion/renderer";
10274
10438
  import {
@@ -10279,7 +10443,7 @@ import {
10279
10443
  // src/functions/helpers/read-with-progress.ts
10280
10444
  import { GetObjectCommand } from "@aws-sdk/client-s3";
10281
10445
  import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
10282
- import { LambdaClientInternals as LambdaClientInternals7 } from "@remotion/lambda-client";
10446
+ import { LambdaClientInternals as LambdaClientInternals9 } from "@remotion/lambda-client";
10283
10447
  import { RenderInternals as RenderInternals2 } from "@remotion/renderer";
10284
10448
  var lambdaDownloadFileWithProgress = async ({
10285
10449
  bucketName,
@@ -10294,7 +10458,7 @@ var lambdaDownloadFileWithProgress = async ({
10294
10458
  requestHandler,
10295
10459
  abortSignal
10296
10460
  }) => {
10297
- const client = LambdaClientInternals7.getS3Client({
10461
+ const client = LambdaClientInternals9.getS3Client({
10298
10462
  region,
10299
10463
  customCredentials,
10300
10464
  forcePathStyle,
@@ -10340,7 +10504,7 @@ var internalDownloadMedia = async (input) => {
10340
10504
  if (!overallProgress.renderMetadata) {
10341
10505
  throw new Error("Render did not finish yet");
10342
10506
  }
10343
- const outputPath = path5.resolve(process.cwd(), input.outPath);
10507
+ const outputPath = path6.resolve(process.cwd(), input.outPath);
10344
10508
  RenderInternals3.ensureOutputDirectory(outputPath);
10345
10509
  const { key, renderBucketName, customCredentials } = getExpectedOutName({
10346
10510
  renderMetadata: overallProgress.renderMetadata,
@@ -10371,7 +10535,7 @@ var internalDownloadMedia = async (input) => {
10371
10535
  var downloadMedia = (input) => {
10372
10536
  return internalDownloadMedia({
10373
10537
  ...input,
10374
- providerSpecifics: LambdaClientInternals8.awsImplementation,
10538
+ providerSpecifics: LambdaClientInternals10.awsImplementation,
10375
10539
  forcePathStyle: false,
10376
10540
  onProgress: input.onProgress ?? (() => {
10377
10541
  return;
@@ -10387,7 +10551,7 @@ var downloadMedia = (input) => {
10387
10551
  import { GetFunctionCommand as GetFunctionCommand2 } from "@aws-sdk/client-lambda";
10388
10552
  import {
10389
10553
  getFunctionVersion,
10390
- LambdaClientInternals as LambdaClientInternals9
10554
+ LambdaClientInternals as LambdaClientInternals11
10391
10555
  } from "@remotion/lambda-client";
10392
10556
  import { DEFAULT_EPHEMERAL_STORAGE_IN_MB as DEFAULT_EPHEMERAL_STORAGE_IN_MB2 } from "@remotion/lambda-client/constants";
10393
10557
  var getFunctionInfo = async ({
@@ -10396,9 +10560,9 @@ var getFunctionInfo = async ({
10396
10560
  logLevel,
10397
10561
  requestHandler
10398
10562
  }) => {
10399
- LambdaClientInternals9.validateAwsRegion(region);
10563
+ LambdaClientInternals11.validateAwsRegion(region);
10400
10564
  const [functionInfo, version] = await Promise.all([
10401
- LambdaClientInternals9.getLambdaClient(region, undefined, requestHandler).send(new GetFunctionCommand2({
10565
+ LambdaClientInternals11.getLambdaClient(region, undefined, requestHandler).send(new GetFunctionCommand2({
10402
10566
  FunctionName: functionName
10403
10567
  })),
10404
10568
  getFunctionVersion({
@@ -10418,14 +10582,14 @@ var getFunctionInfo = async ({
10418
10582
  };
10419
10583
 
10420
10584
  // src/api/get-or-create-bucket.ts
10421
- import { LambdaClientInternals as LambdaClientInternals10 } from "@remotion/lambda-client";
10585
+ import { LambdaClientInternals as LambdaClientInternals12 } from "@remotion/lambda-client";
10422
10586
  import { internalGetOrCreateBucket } from "@remotion/serverless";
10423
10587
  var getOrCreateBucket = (options) => {
10424
10588
  return internalGetOrCreateBucket({
10425
10589
  region: options.region,
10426
10590
  enableFolderExpiry: options.enableFolderExpiry ?? null,
10427
10591
  customCredentials: options.customCredentials ?? null,
10428
- providerSpecifics: LambdaClientInternals10.awsImplementation,
10592
+ providerSpecifics: LambdaClientInternals12.awsImplementation,
10429
10593
  forcePathStyle: false,
10430
10594
  skipPutAcl: false,
10431
10595
  requestHandler: options.requestHandler ?? null,
@@ -10445,14 +10609,14 @@ var getRegions = (options) => {
10445
10609
 
10446
10610
  // src/api/iam-validation/simulate.ts
10447
10611
  import { GetCallerIdentityCommand } from "@aws-sdk/client-sts";
10448
- import { LambdaClientInternals as LambdaClientInternals12 } from "@remotion/lambda-client";
10612
+ import { LambdaClientInternals as LambdaClientInternals14 } from "@remotion/lambda-client";
10449
10613
 
10450
10614
  // src/api/iam-validation/simulate-rule.ts
10451
10615
  import { SimulatePrincipalPolicyCommand } from "@aws-sdk/client-iam";
10452
- import { LambdaClientInternals as LambdaClientInternals11 } from "@remotion/lambda-client";
10616
+ import { LambdaClientInternals as LambdaClientInternals13 } from "@remotion/lambda-client";
10453
10617
  var simulateRule = async (options) => {
10454
10618
  try {
10455
- const res = await LambdaClientInternals11.getIamClient(options.region, options.requestHandler).send(new SimulatePrincipalPolicyCommand({
10619
+ const res = await LambdaClientInternals13.getIamClient(options.region, options.requestHandler).send(new SimulatePrincipalPolicyCommand({
10456
10620
  ActionNames: options.actionNames,
10457
10621
  PolicySourceArn: options.arn,
10458
10622
  ResourceArns: options.resource
@@ -10487,7 +10651,7 @@ var logPermissionOutput = (output) => {
10487
10651
  return [getEmojiForStatus(output.decision), output.name].join(" ");
10488
10652
  };
10489
10653
  var simulatePermissions = async (options) => {
10490
- const callerIdentity = await LambdaClientInternals12.getStsClient(options.region, options.requestHandler).send(new GetCallerIdentityCommand({}));
10654
+ const callerIdentity = await LambdaClientInternals14.getStsClient(options.region, options.requestHandler).send(new GetCallerIdentityCommand({}));
10491
10655
  if (!callerIdentity?.Arn) {
10492
10656
  throw new Error("No valid AWS Caller Identity detected");
10493
10657
  }
@@ -10528,7 +10692,7 @@ var simulatePermissions = async (options) => {
10528
10692
 
10529
10693
  // src/cli/index.ts
10530
10694
  import { CliInternals as CliInternals23 } from "@remotion/cli";
10531
- import { LambdaClientInternals as LambdaClientInternals22 } from "@remotion/lambda-client";
10695
+ import { LambdaClientInternals as LambdaClientInternals24 } from "@remotion/lambda-client";
10532
10696
  import { BINARY_NAME as BINARY_NAME14 } from "@remotion/lambda-client/constants";
10533
10697
  import { RenderInternals as RenderInternals7 } from "@remotion/renderer";
10534
10698
  import {
@@ -10559,29 +10723,29 @@ var forceFlagProvided = parsedLambdaCli.f || parsedLambdaCli.force || parsedLamb
10559
10723
  import { CliInternals as CliInternals8 } from "@remotion/cli";
10560
10724
  import {
10561
10725
  getCompositionsOnLambda,
10562
- LambdaClientInternals as LambdaClientInternals16
10726
+ LambdaClientInternals as LambdaClientInternals18
10563
10727
  } from "@remotion/lambda-client";
10564
10728
  import { BINARY_NAME as BINARY_NAME4 } from "@remotion/lambda-client/constants";
10565
10729
  import { BrowserSafeApis } from "@remotion/renderer/client";
10566
10730
 
10567
10731
  // src/cli/get-aws-region.ts
10568
- import { LambdaClientInternals as LambdaClientInternals13 } from "@remotion/lambda-client";
10732
+ import { LambdaClientInternals as LambdaClientInternals15 } from "@remotion/lambda-client";
10569
10733
  import { DEFAULT_REGION } from "@remotion/lambda-client/constants";
10570
10734
  var getAwsRegion = () => {
10571
10735
  if (parsedLambdaCli.region) {
10572
- LambdaClientInternals13.validateAwsRegion(parsedLambdaCli.region);
10736
+ LambdaClientInternals15.validateAwsRegion(parsedLambdaCli.region);
10573
10737
  return parsedLambdaCli.region;
10574
10738
  }
10575
- const envVariable = LambdaClientInternals13.getEnvVariable("REMOTION_AWS_REGION") ?? LambdaClientInternals13.getEnvVariable("AWS_REGION");
10739
+ const envVariable = LambdaClientInternals15.getEnvVariable("REMOTION_AWS_REGION") ?? LambdaClientInternals15.getEnvVariable("AWS_REGION");
10576
10740
  if (envVariable) {
10577
- LambdaClientInternals13.validateAwsRegion(envVariable);
10741
+ LambdaClientInternals15.validateAwsRegion(envVariable);
10578
10742
  return envVariable;
10579
10743
  }
10580
10744
  return DEFAULT_REGION;
10581
10745
  };
10582
10746
 
10583
10747
  // src/cli/helpers/find-function-name.ts
10584
- import { LambdaClientInternals as LambdaClientInternals15 } from "@remotion/lambda-client";
10748
+ import { LambdaClientInternals as LambdaClientInternals17 } from "@remotion/lambda-client";
10585
10749
  import { BINARY_NAME as BINARY_NAME3 } from "@remotion/lambda-client/constants";
10586
10750
  import { VERSION as VERSION4 } from "remotion/version";
10587
10751
 
@@ -10596,7 +10760,7 @@ var quit = (exitCode) => {
10596
10760
 
10597
10761
  // src/cli/commands/functions/deploy.ts
10598
10762
  import { CliInternals as CliInternals3 } from "@remotion/cli";
10599
- import { LambdaClientInternals as LambdaClientInternals14 } from "@remotion/lambda-client";
10763
+ import { LambdaClientInternals as LambdaClientInternals16 } from "@remotion/lambda-client";
10600
10764
  import {
10601
10765
  DEFAULT_CLOUDWATCH_RETENTION_PERIOD,
10602
10766
  DEFAULT_EPHEMERAL_STORAGE_IN_MB as DEFAULT_EPHEMERAL_STORAGE_IN_MB3,
@@ -10663,9 +10827,9 @@ var functionsDeploySubcommand = async ({
10663
10827
  const vpcSubnetIds = parsedLambdaCli["vpc-subnet-ids"] ?? undefined;
10664
10828
  const vpcSecurityGroupIds = parsedLambdaCli["vpc-security-group-ids"] ?? undefined;
10665
10829
  const runtimePreference = parsedLambdaCli["runtime-preference"] ?? "default";
10666
- LambdaClientInternals14.validateMemorySize(memorySizeInMb);
10830
+ LambdaClientInternals16.validateMemorySize(memorySizeInMb);
10667
10831
  validateTimeout(timeoutInSeconds);
10668
- LambdaClientInternals14.validateDiskSizeInMb(diskSizeInMb);
10832
+ LambdaClientInternals16.validateDiskSizeInMb(diskSizeInMb);
10669
10833
  validateCustomRoleArn(customRoleArn);
10670
10834
  validateVpcSubnetIds(vpcSubnetIds);
10671
10835
  validateVpcSecurityGroupIds(vpcSecurityGroupIds);
@@ -11021,7 +11185,7 @@ var findFunctionName = async ({
11021
11185
  if (cliFlag) {
11022
11186
  const compatibleFunctionExists = lambdasWithMatchingVersion.find((l) => l.functionName === cliFlag);
11023
11187
  if (!compatibleFunctionExists) {
11024
- Log.warn({ indent: false, logLevel }, `The name passed to --function-name "${cliFlag}" does not match the naming convention this version of the CLI expects: ${LambdaClientInternals15.innerSpeculateFunctionName({ diskSizeInMb: "[disk]", memorySizeInMb: "[memory]", timeoutInSeconds: "[timeout]" })}.`);
11188
+ Log.warn({ indent: false, logLevel }, `The name passed to --function-name "${cliFlag}" does not match the naming convention this version of the CLI expects: ${LambdaClientInternals17.innerSpeculateFunctionName({ diskSizeInMb: "[disk]", memorySizeInMb: "[memory]", timeoutInSeconds: "[timeout]" })}.`);
11025
11189
  Log.warn({ indent: false, logLevel }, "Remotion relies on the naming to determine function information. This is an unsupported workflow.");
11026
11190
  if (lambdasWithMatchingVersion.length > 0) {
11027
11191
  Log.info(logOptions, "The following functions were found:");
@@ -11123,7 +11287,7 @@ var compositionsCommand = async ({
11123
11287
  darkMode
11124
11288
  };
11125
11289
  const region = getAwsRegion();
11126
- LambdaClientInternals16.validateServeUrl(serveUrl);
11290
+ LambdaClientInternals18.validateServeUrl(serveUrl);
11127
11291
  const functionName = await findFunctionName({ logLevel, providerSpecifics });
11128
11292
  const comps = await getCompositionsOnLambda({
11129
11293
  functionName,
@@ -11219,7 +11383,7 @@ import {
11219
11383
  RequestServiceQuotaIncreaseCommand
11220
11384
  } from "@aws-sdk/client-service-quotas";
11221
11385
  import {
11222
- LambdaClientInternals as LambdaClientInternals17
11386
+ LambdaClientInternals as LambdaClientInternals19
11223
11387
  } from "@remotion/lambda-client";
11224
11388
  import {
11225
11389
  BINARY_NAME as BINARY_NAME6,
@@ -11235,15 +11399,15 @@ var makeQuotaUrl = ({
11235
11399
  async function quotasIncreaseCommand(logLevel, requestHandler) {
11236
11400
  const region = getAwsRegion();
11237
11401
  const [concurrencyLimit, defaultConcurrencyLimit, changes] = await Promise.all([
11238
- LambdaClientInternals17.getServiceQuotasClient(region, requestHandler).send(new GetServiceQuotaCommand({
11402
+ LambdaClientInternals19.getServiceQuotasClient(region, requestHandler).send(new GetServiceQuotaCommand({
11239
11403
  QuotaCode: LAMBDA_CONCURRENCY_LIMIT_QUOTA,
11240
11404
  ServiceCode: "lambda"
11241
11405
  })),
11242
- LambdaClientInternals17.getServiceQuotasClient(region, requestHandler).send(new GetAWSDefaultServiceQuotaCommand({
11406
+ LambdaClientInternals19.getServiceQuotasClient(region, requestHandler).send(new GetAWSDefaultServiceQuotaCommand({
11243
11407
  QuotaCode: LAMBDA_CONCURRENCY_LIMIT_QUOTA,
11244
11408
  ServiceCode: "lambda"
11245
11409
  })),
11246
- LambdaClientInternals17.getServiceQuotasClient(region, requestHandler).send(new ListRequestedServiceQuotaChangeHistoryByQuotaCommand({
11410
+ LambdaClientInternals19.getServiceQuotasClient(region, requestHandler).send(new ListRequestedServiceQuotaChangeHistoryByQuotaCommand({
11247
11411
  QuotaCode: LAMBDA_CONCURRENCY_LIMIT_QUOTA,
11248
11412
  ServiceCode: "lambda"
11249
11413
  }))
@@ -11277,7 +11441,7 @@ async function quotasIncreaseCommand(logLevel, requestHandler) {
11277
11441
  quit(1);
11278
11442
  }
11279
11443
  try {
11280
- await LambdaClientInternals17.getServiceQuotasClient(region, requestHandler).send(new RequestServiceQuotaIncreaseCommand({
11444
+ await LambdaClientInternals19.getServiceQuotasClient(region, requestHandler).send(new RequestServiceQuotaIncreaseCommand({
11281
11445
  QuotaCode: LAMBDA_CONCURRENCY_LIMIT_QUOTA,
11282
11446
  DesiredValue: newLimit,
11283
11447
  ServiceCode: "lambda"
@@ -11303,7 +11467,7 @@ import {
11303
11467
  ListRequestedServiceQuotaChangeHistoryByQuotaCommand as ListRequestedServiceQuotaChangeHistoryByQuotaCommand2
11304
11468
  } from "@aws-sdk/client-service-quotas";
11305
11469
  import { CliInternals as CliInternals10 } from "@remotion/cli";
11306
- import { LambdaClientInternals as LambdaClientInternals18 } from "@remotion/lambda-client";
11470
+ import { LambdaClientInternals as LambdaClientInternals20 } from "@remotion/lambda-client";
11307
11471
  import {
11308
11472
  BINARY_NAME as BINARY_NAME7,
11309
11473
  LAMBDA_CONCURRENCY_LIMIT_QUOTA as LAMBDA_CONCURRENCY_LIMIT_QUOTA2
@@ -11313,15 +11477,15 @@ var quotasListCommand = async (logLevel) => {
11313
11477
  Log.info({ indent: false, logLevel }, CliInternals10.chalk.gray(`Region = ${region}`));
11314
11478
  Log.info({ indent: false, logLevel });
11315
11479
  const [concurrencyLimit, defaultConcurrencyLimit, changes] = await Promise.all([
11316
- LambdaClientInternals18.getServiceQuotasClient(region, null).send(new GetServiceQuotaCommand2({
11480
+ LambdaClientInternals20.getServiceQuotasClient(region, null).send(new GetServiceQuotaCommand2({
11317
11481
  QuotaCode: LAMBDA_CONCURRENCY_LIMIT_QUOTA2,
11318
11482
  ServiceCode: "lambda"
11319
11483
  })),
11320
- LambdaClientInternals18.getServiceQuotasClient(region, null).send(new GetAWSDefaultServiceQuotaCommand2({
11484
+ LambdaClientInternals20.getServiceQuotasClient(region, null).send(new GetAWSDefaultServiceQuotaCommand2({
11321
11485
  QuotaCode: LAMBDA_CONCURRENCY_LIMIT_QUOTA2,
11322
11486
  ServiceCode: "lambda"
11323
11487
  })),
11324
- LambdaClientInternals18.getServiceQuotasClient(region, null).send(new ListRequestedServiceQuotaChangeHistoryByQuotaCommand2({
11488
+ LambdaClientInternals20.getServiceQuotasClient(region, null).send(new ListRequestedServiceQuotaChangeHistoryByQuotaCommand2({
11325
11489
  QuotaCode: LAMBDA_CONCURRENCY_LIMIT_QUOTA2,
11326
11490
  ServiceCode: "lambda"
11327
11491
  }))
@@ -11377,12 +11541,12 @@ var regionsCommand = (logLevel) => {
11377
11541
  };
11378
11542
 
11379
11543
  // src/cli/commands/render/render.ts
11380
- import path7 from "path";
11544
+ import path8 from "path";
11381
11545
  import { CliInternals as CliInternals14 } from "@remotion/cli";
11382
11546
  import { ConfigInternals } from "@remotion/cli/config";
11383
11547
  import {
11384
11548
  getRenderProgress,
11385
- LambdaClientInternals as LambdaClientInternals20
11549
+ LambdaClientInternals as LambdaClientInternals22
11386
11550
  } from "@remotion/lambda-client";
11387
11551
  import {
11388
11552
  BINARY_NAME as BINARY_NAME9,
@@ -11421,7 +11585,7 @@ function validateMaxRetries(maxRetries) {
11421
11585
  }
11422
11586
 
11423
11587
  // src/cli/helpers/get-s3-output-provider-from-cli.ts
11424
- import { LambdaClientInternals as LambdaClientInternals19 } from "@remotion/lambda-client";
11588
+ import { LambdaClientInternals as LambdaClientInternals21 } from "@remotion/lambda-client";
11425
11589
  var S3_OUTPUT_PROVIDER_ACCESS_KEY_ID_ENV_NAME = "REMOTION_S3_OUTPUT_PROVIDER_ACCESS_KEY_ID";
11426
11590
  var S3_OUTPUT_PROVIDER_SECRET_ACCESS_KEY_ENV_NAME = "REMOTION_S3_OUTPUT_PROVIDER_SECRET_ACCESS_KEY";
11427
11591
  var getS3OutputProviderFromCli = ({
@@ -11438,8 +11602,8 @@ var getS3OutputProviderFromCli = ({
11438
11602
  }
11439
11603
  return {
11440
11604
  endpoint,
11441
- accessKeyId: LambdaClientInternals19.getEnvVariable(S3_OUTPUT_PROVIDER_ACCESS_KEY_ID_ENV_NAME) ?? null,
11442
- secretAccessKey: LambdaClientInternals19.getEnvVariable(S3_OUTPUT_PROVIDER_SECRET_ACCESS_KEY_ENV_NAME) ?? null,
11605
+ accessKeyId: LambdaClientInternals21.getEnvVariable(S3_OUTPUT_PROVIDER_ACCESS_KEY_ID_ENV_NAME) ?? null,
11606
+ secretAccessKey: LambdaClientInternals21.getEnvVariable(S3_OUTPUT_PROVIDER_SECRET_ACCESS_KEY_ENV_NAME) ?? null,
11443
11607
  region,
11444
11608
  forcePathStyle
11445
11609
  };
@@ -11466,9 +11630,9 @@ var makeOutNameWithCustomCredentials = ({
11466
11630
  };
11467
11631
 
11468
11632
  // src/cli/helpers/get-webhook-custom-data.ts
11469
- import fs5 from "node:fs";
11633
+ import fs6 from "node:fs";
11470
11634
  import os from "node:os";
11471
- import path6 from "node:path";
11635
+ import path7 from "node:path";
11472
11636
  import { BrowserSafeApis as BrowserSafeApis2 } from "@remotion/renderer/client";
11473
11637
  var getWebhookCustomData = (logLevel) => {
11474
11638
  const flagName = BrowserSafeApis2.options.webhookCustomDataOption.cliFlag;
@@ -11476,10 +11640,10 @@ var getWebhookCustomData = (logLevel) => {
11476
11640
  if (!webhookFlag) {
11477
11641
  return null;
11478
11642
  }
11479
- const jsonFile = path6.resolve(process.cwd(), webhookFlag);
11643
+ const jsonFile = path7.resolve(process.cwd(), webhookFlag);
11480
11644
  try {
11481
- if (fs5.existsSync(jsonFile)) {
11482
- const rawJsonData = fs5.readFileSync(jsonFile, "utf-8");
11645
+ if (fs6.existsSync(jsonFile)) {
11646
+ const rawJsonData = fs6.readFileSync(jsonFile, "utf-8");
11483
11647
  return JSON.parse(rawJsonData);
11484
11648
  }
11485
11649
  return JSON.parse(webhookFlag);
@@ -11832,7 +11996,7 @@ var renderCommand = async ({
11832
11996
  let composition = args[1];
11833
11997
  if (!composition) {
11834
11998
  Log.info({ indent: false, logLevel }, "No compositions passed. Fetching compositions...");
11835
- LambdaClientInternals20.validateServeUrl(serveUrl);
11999
+ LambdaClientInternals22.validateServeUrl(serveUrl);
11836
12000
  if (!serveUrl.startsWith("https://") && !serveUrl.startsWith("http://")) {
11837
12001
  throw Error(`Passing the shorthand serve URL without composition name is currently not supported.
11838
12002
  Make sure to pass a composition name after the shorthand serve URL or pass the complete serveURL without composition name to get to choose between all compositions.`);
@@ -11928,7 +12092,7 @@ var renderCommand = async ({
11928
12092
  const concurrency = parsedLambdaCli["concurrency"] ?? undefined;
11929
12093
  const concurrencyPerLambda = parsedLambdaCli["concurrency-per-lambda"] ?? 1;
11930
12094
  const webhookCustomData = getWebhookCustomData(logLevel);
11931
- const res = await LambdaClientInternals20.internalRenderMediaOnLambdaRaw({
12095
+ const res = await LambdaClientInternals22.internalRenderMediaOnLambdaRaw({
11932
12096
  functionName,
11933
12097
  serveUrl,
11934
12098
  inputProps,
@@ -12036,7 +12200,7 @@ var renderCommand = async ({
12036
12200
  fallback: `Render folder: ${res.folderInS3Console}`
12037
12201
  }));
12038
12202
  }
12039
- const adheresToFunctionNameConvention = LambdaClientInternals20.parseFunctionName(functionName);
12203
+ const adheresToFunctionNameConvention = LambdaClientInternals22.parseFunctionName(functionName);
12040
12204
  const status = await getRenderProgress({
12041
12205
  functionName,
12042
12206
  bucketName: res.bucketName,
@@ -12107,7 +12271,7 @@ var renderCommand = async ({
12107
12271
  url: newStatus.outputFile
12108
12272
  })), CliInternals14.chalk.gray(CliInternals14.formatBytes(newStatus.outputSizeInBytes)));
12109
12273
  if (downloadOrNothing) {
12110
- const relativeOutputPath = path7.relative(process.cwd(), downloadOrNothing.outputPath);
12274
+ const relativeOutputPath = path8.relative(process.cwd(), downloadOrNothing.outputPath);
12111
12275
  Log.info({ indent: false, logLevel }, CliInternals14.chalk.blue("↓".padEnd(CliInternals14.LABEL_WIDTH)), CliInternals14.chalk.blue(CliInternals14.makeHyperlink({
12112
12276
  url: `file://${downloadOrNothing.outputPath}`,
12113
12277
  text: relativeOutputPath,
@@ -12608,10 +12772,10 @@ var sitesCommand = (args, remotionRoot, logLevel, providerSpecifics) => {
12608
12772
  };
12609
12773
 
12610
12774
  // src/cli/commands/still.ts
12611
- import path8 from "path";
12775
+ import path9 from "path";
12612
12776
  import { CliInternals as CliInternals21 } from "@remotion/cli";
12613
12777
  import { ConfigInternals as ConfigInternals3 } from "@remotion/cli/config";
12614
- import { LambdaClientInternals as LambdaClientInternals21 } from "@remotion/lambda-client";
12778
+ import { LambdaClientInternals as LambdaClientInternals23 } from "@remotion/lambda-client";
12615
12779
  import {
12616
12780
  BINARY_NAME as BINARY_NAME12,
12617
12781
  DEFAULT_MAX_RETRIES as DEFAULT_MAX_RETRIES2,
@@ -12725,7 +12889,7 @@ var stillCommand = async ({
12725
12889
  }).value;
12726
12890
  if (!composition) {
12727
12891
  Log.info({ indent: false, logLevel }, "No compositions passed. Fetching compositions...");
12728
- LambdaClientInternals21.validateServeUrl(serveUrl);
12892
+ LambdaClientInternals23.validateServeUrl(serveUrl);
12729
12893
  if (!serveUrl.startsWith("https://") && !serveUrl.startsWith("http://")) {
12730
12894
  throw Error(`Passing the shorthand serve URL without composition name is currently not supported.
12731
12895
  Make sure to pass a composition name after the shorthand serve URL or pass the complete serveURL without composition name to get to choose between all compositions.`);
@@ -12817,7 +12981,7 @@ var stillCommand = async ({
12817
12981
  const jpegQuality = jpegQualityOption2.getValue({
12818
12982
  commandLine: parsedCli
12819
12983
  }).value;
12820
- const res = await LambdaClientInternals21.internalRenderStillOnLambda({
12984
+ const res = await LambdaClientInternals23.internalRenderStillOnLambda({
12821
12985
  functionName,
12822
12986
  serveUrl,
12823
12987
  inputProps,
@@ -12863,7 +13027,7 @@ var stillCommand = async ({
12863
13027
  mediaCacheSizeInBytes,
12864
13028
  isProduction: parsedLambdaCli[BrowserSafeApis5.options.isProductionOption.cliFlag] ?? true
12865
13029
  });
12866
- Log.info({ indent: false, logLevel }, CliInternals21.chalk.gray(`Render ID: ${CliInternals21.makeHyperlink({ text: res.renderId, fallback: res.renderId, url: LambdaClientInternals21.getS3RenderUrl({ bucketName: res.bucketName, renderId: res.renderId, region: getAwsRegion() }) })}`));
13030
+ Log.info({ indent: false, logLevel }, CliInternals21.chalk.gray(`Render ID: ${CliInternals21.makeHyperlink({ text: res.renderId, fallback: res.renderId, url: LambdaClientInternals23.getS3RenderUrl({ bucketName: res.bucketName, renderId: res.renderId, region: getAwsRegion() }) })}`));
12867
13031
  Log.info({ indent: false, logLevel }, CliInternals21.chalk.gray(`Bucket: ${CliInternals21.makeHyperlink({ text: res.bucketName, fallback: res.bucketName, url: `https://${getAwsRegion()}.console.aws.amazon.com/s3/buckets/${res.bucketName}/?region=${getAwsRegion()}` })}`));
12868
13032
  const artifactProgress = makeArtifactProgress(res.artifacts);
12869
13033
  if (artifactProgress) {
@@ -12893,7 +13057,7 @@ var stillCommand = async ({
12893
13057
  },
12894
13058
  requestHandler: null
12895
13059
  });
12896
- const relativePath = path8.relative(process.cwd(), outputPath);
13060
+ const relativePath = path9.relative(process.cwd(), outputPath);
12897
13061
  Log.info({ indent: false, logLevel }, chalk.blue("↓".padEnd(CliInternals21.LABEL_WIDTH)), chalk.blue(CliInternals21.makeHyperlink({
12898
13062
  url: "file://" + outputPath,
12899
13063
  text: relativePath,
@@ -13037,7 +13201,7 @@ var matchCommand = ({
13037
13201
  };
13038
13202
  var executeCommand = async (args, remotionRoot, logLevel, _providerSpecifics, fullClientSpecifics) => {
13039
13203
  try {
13040
- const providerSpecifics = _providerSpecifics ?? LambdaClientInternals22.awsImplementation;
13204
+ const providerSpecifics = _providerSpecifics ?? LambdaClientInternals24.awsImplementation;
13041
13205
  await matchCommand({
13042
13206
  args,
13043
13207
  remotionRoot,
@@ -13081,8 +13245,8 @@ AWS returned an "ConcurrentInvocationLimitExceeded" error message which could me
13081
13245
  `.trim());
13082
13246
  }
13083
13247
  if (error.stack?.includes("The security token included in the request is invalid")) {
13084
- const keyButDoesntStartWithAki = LambdaClientInternals22.getEnvVariable("REMOTION_AWS_ACCESS_KEY_ID") && !LambdaClientInternals22.getEnvVariable("REMOTION_AWS_ACCESS_KEY_ID").startsWith("AKI");
13085
- const pureKeyButDoesntStartWithAki = LambdaClientInternals22.getEnvVariable("AWS_ACCESS_KEY_ID") && !LambdaClientInternals22.getEnvVariable("AWS_ACCESS_KEY_ID").startsWith("AKI");
13248
+ const keyButDoesntStartWithAki = LambdaClientInternals24.getEnvVariable("REMOTION_AWS_ACCESS_KEY_ID") && !LambdaClientInternals24.getEnvVariable("REMOTION_AWS_ACCESS_KEY_ID").startsWith("AKI");
13249
+ const pureKeyButDoesntStartWithAki = LambdaClientInternals24.getEnvVariable("AWS_ACCESS_KEY_ID") && !LambdaClientInternals24.getEnvVariable("AWS_ACCESS_KEY_ID").startsWith("AKI");
13086
13250
  if (keyButDoesntStartWithAki || pureKeyButDoesntStartWithAki) {
13087
13251
  Log.error({ indent: false, logLevel }, `
13088
13252
  AWS returned an error message "The security token included in the request is invalid". A possible reason is that your AWS Access key ID is set but doesn't start with "AKI", which it usually should. The original message is:
@@ -13154,6 +13318,7 @@ export {
13154
13318
  getAwsClient,
13155
13319
  estimatePrice,
13156
13320
  downloadMedia,
13321
+ deploySiteFromBundle,
13157
13322
  deploySite,
13158
13323
  deployFunction,
13159
13324
  deleteSite,